@mionjs/router 0.13.0 → 0.14.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 (866) hide show
  1. package/.dist/esm/.mion/types/A0Qb_CXFfAul.js +43 -0
  2. package/.dist/esm/.mion/types/A0Qb_CXFfAul.js.map +1 -0
  3. package/.dist/esm/.mion/types/A0Qb_EkYSHqf.js +29 -0
  4. package/.dist/esm/.mion/types/A0Qb_EkYSHqf.js.map +1 -0
  5. package/.dist/esm/.mion/types/A0Qb_GVXB1Wo.js +22 -0
  6. package/.dist/esm/.mion/types/A0Qb_GVXB1Wo.js.map +1 -0
  7. package/.dist/esm/.mion/types/A0Qb_HvnlLnd.js +38 -0
  8. package/.dist/esm/.mion/types/A0Qb_HvnlLnd.js.map +1 -0
  9. package/.dist/esm/.mion/types/A0Qb_JTXvy7Y.js +43 -0
  10. package/.dist/esm/.mion/types/A0Qb_JTXvy7Y.js.map +1 -0
  11. package/.dist/esm/.mion/types/A0Qb_JkwVz03.js +36 -0
  12. package/.dist/esm/.mion/types/A0Qb_JkwVz03.js.map +1 -0
  13. package/.dist/esm/.mion/types/A0Qb_Ju6MvJU.js +14 -0
  14. package/.dist/esm/.mion/types/A0Qb_Ju6MvJU.js.map +1 -0
  15. package/.dist/esm/.mion/types/A0Qb_KYXJdoi.js +42 -0
  16. package/.dist/esm/.mion/types/A0Qb_KYXJdoi.js.map +1 -0
  17. package/.dist/esm/.mion/types/A0Qb_L7TAwqn.js +44 -0
  18. package/.dist/esm/.mion/types/A0Qb_L7TAwqn.js.map +1 -0
  19. package/.dist/esm/.mion/types/A0Qb_NXjo9wB.js +82 -0
  20. package/.dist/esm/.mion/types/A0Qb_NXjo9wB.js.map +1 -0
  21. package/.dist/esm/.mion/types/A0Qb_P05N010.js +35 -0
  22. package/.dist/esm/.mion/types/A0Qb_P05N010.js.map +1 -0
  23. package/.dist/esm/.mion/types/A0Qb_R2waGIJ.js +43 -0
  24. package/.dist/esm/.mion/types/A0Qb_R2waGIJ.js.map +1 -0
  25. package/.dist/esm/.mion/types/A0Qb_UE6lPE3.js +14 -0
  26. package/.dist/esm/.mion/types/A0Qb_UE6lPE3.js.map +1 -0
  27. package/.dist/esm/.mion/types/A0Qb_UGPHsHZ.js +29 -0
  28. package/.dist/esm/.mion/types/A0Qb_UGPHsHZ.js.map +1 -0
  29. package/.dist/esm/.mion/types/A0Qb_VMxJugF.js +29 -0
  30. package/.dist/esm/.mion/types/A0Qb_VMxJugF.js.map +1 -0
  31. package/.dist/esm/.mion/types/A0Qb_VuzVN13.js +43 -0
  32. package/.dist/esm/.mion/types/A0Qb_VuzVN13.js.map +1 -0
  33. package/.dist/esm/.mion/types/A0Qb_WaXzp6u.js +29 -0
  34. package/.dist/esm/.mion/types/A0Qb_WaXzp6u.js.map +1 -0
  35. package/.dist/esm/.mion/types/A0Qb_b8JOgtl.js +35 -0
  36. package/.dist/esm/.mion/types/A0Qb_b8JOgtl.js.map +1 -0
  37. package/.dist/esm/.mion/types/A0Qb_bWgCH09.js +14 -0
  38. package/.dist/esm/.mion/types/A0Qb_bWgCH09.js.map +1 -0
  39. package/.dist/esm/.mion/types/A0Qb_cIwQaiK.js +43 -0
  40. package/.dist/esm/.mion/types/A0Qb_cIwQaiK.js.map +1 -0
  41. package/.dist/esm/.mion/types/A0Qb_ddv0QYt.js +27 -0
  42. package/.dist/esm/.mion/types/A0Qb_ddv0QYt.js.map +1 -0
  43. package/.dist/esm/.mion/types/A0Qb_fjaxPpO.js +28 -0
  44. package/.dist/esm/.mion/types/A0Qb_fjaxPpO.js.map +1 -0
  45. package/.dist/esm/.mion/types/A0Qb_hnO6xA5.js +43 -0
  46. package/.dist/esm/.mion/types/A0Qb_hnO6xA5.js.map +1 -0
  47. package/.dist/esm/.mion/types/A0Qb_jMcsHAh.js +76 -0
  48. package/.dist/esm/.mion/types/A0Qb_jMcsHAh.js.map +1 -0
  49. package/.dist/esm/.mion/types/A0Qb_pJ9XvFm.js +43 -0
  50. package/.dist/esm/.mion/types/A0Qb_pJ9XvFm.js.map +1 -0
  51. package/.dist/esm/.mion/types/A0Qb_pWBRJYE.js +22 -0
  52. package/.dist/esm/.mion/types/A0Qb_pWBRJYE.js.map +1 -0
  53. package/.dist/esm/.mion/types/A0Qb_qatpo1O.js +27 -0
  54. package/.dist/esm/.mion/types/A0Qb_qatpo1O.js.map +1 -0
  55. package/.dist/esm/.mion/types/A0Qb_qxw8aWP.js +43 -0
  56. package/.dist/esm/.mion/types/A0Qb_qxw8aWP.js.map +1 -0
  57. package/.dist/esm/.mion/types/A0Qb_ujMZYNY.js +29 -0
  58. package/.dist/esm/.mion/types/A0Qb_ujMZYNY.js.map +1 -0
  59. package/.dist/esm/.mion/types/A0Qb_vIbt7K7.js +25 -0
  60. package/.dist/esm/.mion/types/A0Qb_vIbt7K7.js.map +1 -0
  61. package/.dist/esm/.mion/types/A0Qb_vMVZ77w.js +29 -0
  62. package/.dist/esm/.mion/types/A0Qb_vMVZ77w.js.map +1 -0
  63. package/.dist/esm/.mion/types/Eq2V_EkYSHqf.js +31 -0
  64. package/.dist/esm/.mion/types/Eq2V_EkYSHqf.js.map +1 -0
  65. package/.dist/esm/.mion/types/Eq2V_GVXB1Wo.js +22 -0
  66. package/.dist/esm/.mion/types/Eq2V_GVXB1Wo.js.map +1 -0
  67. package/.dist/esm/.mion/types/Eq2V_HvnlLnd.js +39 -0
  68. package/.dist/esm/.mion/types/Eq2V_HvnlLnd.js.map +1 -0
  69. package/.dist/esm/.mion/types/Eq2V_JTXvy7Y.js +24 -0
  70. package/.dist/esm/.mion/types/Eq2V_JTXvy7Y.js.map +1 -0
  71. package/.dist/esm/.mion/types/Eq2V_JkwVz03.js +39 -0
  72. package/.dist/esm/.mion/types/Eq2V_JkwVz03.js.map +1 -0
  73. package/.dist/esm/.mion/types/Eq2V_KYXJdoi.js +41 -0
  74. package/.dist/esm/.mion/types/Eq2V_KYXJdoi.js.map +1 -0
  75. package/.dist/esm/.mion/types/Eq2V_L7TAwqn.js +41 -0
  76. package/.dist/esm/.mion/types/Eq2V_L7TAwqn.js.map +1 -0
  77. package/.dist/esm/.mion/types/Eq2V_P05N010.js +31 -0
  78. package/.dist/esm/.mion/types/Eq2V_P05N010.js.map +1 -0
  79. package/.dist/esm/.mion/types/Eq2V_R2waGIJ.js +24 -0
  80. package/.dist/esm/.mion/types/Eq2V_R2waGIJ.js.map +1 -0
  81. package/.dist/esm/.mion/types/Eq2V_UGPHsHZ.js +26 -0
  82. package/.dist/esm/.mion/types/Eq2V_UGPHsHZ.js.map +1 -0
  83. package/.dist/esm/.mion/types/Eq2V_VMxJugF.js +31 -0
  84. package/.dist/esm/.mion/types/Eq2V_VMxJugF.js.map +1 -0
  85. package/.dist/esm/.mion/types/Eq2V_VuzVN13.js +24 -0
  86. package/.dist/esm/.mion/types/Eq2V_VuzVN13.js.map +1 -0
  87. package/.dist/esm/.mion/types/Eq2V_WaXzp6u.js +31 -0
  88. package/.dist/esm/.mion/types/Eq2V_WaXzp6u.js.map +1 -0
  89. package/.dist/esm/.mion/types/Eq2V_cIwQaiK.js +24 -0
  90. package/.dist/esm/.mion/types/Eq2V_cIwQaiK.js.map +1 -0
  91. package/.dist/esm/.mion/types/Eq2V_ddv0QYt.js +26 -0
  92. package/.dist/esm/.mion/types/Eq2V_ddv0QYt.js.map +1 -0
  93. package/.dist/esm/.mion/types/Eq2V_fjaxPpO.js +32 -0
  94. package/.dist/esm/.mion/types/Eq2V_fjaxPpO.js.map +1 -0
  95. package/.dist/esm/.mion/types/Eq2V_hnO6xA5.js +24 -0
  96. package/.dist/esm/.mion/types/Eq2V_hnO6xA5.js.map +1 -0
  97. package/.dist/esm/.mion/types/Eq2V_pJ9XvFm.js +24 -0
  98. package/.dist/esm/.mion/types/Eq2V_pJ9XvFm.js.map +1 -0
  99. package/.dist/esm/.mion/types/Eq2V_pWBRJYE.js +22 -0
  100. package/.dist/esm/.mion/types/Eq2V_pWBRJYE.js.map +1 -0
  101. package/.dist/esm/.mion/types/Eq2V_qatpo1O.js +29 -0
  102. package/.dist/esm/.mion/types/Eq2V_qatpo1O.js.map +1 -0
  103. package/.dist/esm/.mion/types/Eq2V_qxw8aWP.js +24 -0
  104. package/.dist/esm/.mion/types/Eq2V_qxw8aWP.js.map +1 -0
  105. package/.dist/esm/.mion/types/Eq2V_vIbt7K7.js +27 -0
  106. package/.dist/esm/.mion/types/Eq2V_vIbt7K7.js.map +1 -0
  107. package/.dist/esm/.mion/types/Eq2V_vMVZ77w.js +31 -0
  108. package/.dist/esm/.mion/types/Eq2V_vMVZ77w.js.map +1 -0
  109. package/.dist/esm/.mion/types/Ky89_CXFfAul.js +64 -0
  110. package/.dist/esm/.mion/types/Ky89_CXFfAul.js.map +1 -0
  111. package/.dist/esm/.mion/types/Ky89_EkYSHqf.js +28 -0
  112. package/.dist/esm/.mion/types/Ky89_EkYSHqf.js.map +1 -0
  113. package/.dist/esm/.mion/types/Ky89_HvnlLnd.js +42 -0
  114. package/.dist/esm/.mion/types/Ky89_HvnlLnd.js.map +1 -0
  115. package/.dist/esm/.mion/types/Ky89_JTXvy7Y.js +64 -0
  116. package/.dist/esm/.mion/types/Ky89_JTXvy7Y.js.map +1 -0
  117. package/.dist/esm/.mion/types/Ky89_JkwVz03.js +37 -0
  118. package/.dist/esm/.mion/types/Ky89_JkwVz03.js.map +1 -0
  119. package/.dist/esm/.mion/types/Ky89_Ju6MvJU.js +14 -0
  120. package/.dist/esm/.mion/types/Ky89_Ju6MvJU.js.map +1 -0
  121. package/.dist/esm/.mion/types/Ky89_KYXJdoi.js +47 -0
  122. package/.dist/esm/.mion/types/Ky89_KYXJdoi.js.map +1 -0
  123. package/.dist/esm/.mion/types/Ky89_L7TAwqn.js +53 -0
  124. package/.dist/esm/.mion/types/Ky89_L7TAwqn.js.map +1 -0
  125. package/.dist/esm/.mion/types/Ky89_NXjo9wB.js +51 -0
  126. package/.dist/esm/.mion/types/Ky89_NXjo9wB.js.map +1 -0
  127. package/.dist/esm/.mion/types/Ky89_P05N010.js +35 -0
  128. package/.dist/esm/.mion/types/Ky89_P05N010.js.map +1 -0
  129. package/.dist/esm/.mion/types/Ky89_R2waGIJ.js +64 -0
  130. package/.dist/esm/.mion/types/Ky89_R2waGIJ.js.map +1 -0
  131. package/.dist/esm/.mion/types/Ky89_UE6lPE3.js +25 -0
  132. package/.dist/esm/.mion/types/Ky89_UE6lPE3.js.map +1 -0
  133. package/.dist/esm/.mion/types/Ky89_UGPHsHZ.js +28 -0
  134. package/.dist/esm/.mion/types/Ky89_UGPHsHZ.js.map +1 -0
  135. package/.dist/esm/.mion/types/Ky89_VMxJugF.js +28 -0
  136. package/.dist/esm/.mion/types/Ky89_VMxJugF.js.map +1 -0
  137. package/.dist/esm/.mion/types/Ky89_VuzVN13.js +64 -0
  138. package/.dist/esm/.mion/types/Ky89_VuzVN13.js.map +1 -0
  139. package/.dist/esm/.mion/types/Ky89_WaXzp6u.js +27 -0
  140. package/.dist/esm/.mion/types/Ky89_WaXzp6u.js.map +1 -0
  141. package/.dist/esm/.mion/types/Ky89_b8JOgtl.js +32 -0
  142. package/.dist/esm/.mion/types/Ky89_b8JOgtl.js.map +1 -0
  143. package/.dist/esm/.mion/types/Ky89_bWgCH09.js +26 -0
  144. package/.dist/esm/.mion/types/Ky89_bWgCH09.js.map +1 -0
  145. package/.dist/esm/.mion/types/Ky89_cIwQaiK.js +64 -0
  146. package/.dist/esm/.mion/types/Ky89_cIwQaiK.js.map +1 -0
  147. package/.dist/esm/.mion/types/Ky89_ddv0QYt.js +23 -0
  148. package/.dist/esm/.mion/types/Ky89_ddv0QYt.js.map +1 -0
  149. package/.dist/esm/.mion/types/Ky89_fjaxPpO.js +30 -0
  150. package/.dist/esm/.mion/types/Ky89_fjaxPpO.js.map +1 -0
  151. package/.dist/esm/.mion/types/Ky89_hnO6xA5.js +64 -0
  152. package/.dist/esm/.mion/types/Ky89_hnO6xA5.js.map +1 -0
  153. package/.dist/esm/.mion/types/Ky89_jMcsHAh.js +63 -0
  154. package/.dist/esm/.mion/types/Ky89_jMcsHAh.js.map +1 -0
  155. package/.dist/esm/.mion/types/Ky89_pJ9XvFm.js +64 -0
  156. package/.dist/esm/.mion/types/Ky89_pJ9XvFm.js.map +1 -0
  157. package/.dist/esm/.mion/types/Ky89_qatpo1O.js +33 -0
  158. package/.dist/esm/.mion/types/Ky89_qatpo1O.js.map +1 -0
  159. package/.dist/esm/.mion/types/Ky89_qxw8aWP.js +64 -0
  160. package/.dist/esm/.mion/types/Ky89_qxw8aWP.js.map +1 -0
  161. package/.dist/esm/.mion/types/Ky89_ujMZYNY.js +28 -0
  162. package/.dist/esm/.mion/types/Ky89_ujMZYNY.js.map +1 -0
  163. package/.dist/esm/.mion/types/Ky89_vIbt7K7.js +28 -0
  164. package/.dist/esm/.mion/types/Ky89_vIbt7K7.js.map +1 -0
  165. package/.dist/esm/.mion/types/Ky89_vMVZ77w.js +28 -0
  166. package/.dist/esm/.mion/types/Ky89_vMVZ77w.js.map +1 -0
  167. package/.dist/esm/.mion/types/OBOg_CXFfAul.js +57 -0
  168. package/.dist/esm/.mion/types/OBOg_CXFfAul.js.map +1 -0
  169. package/.dist/esm/.mion/types/OBOg_Ju6MvJU.js +25 -0
  170. package/.dist/esm/.mion/types/OBOg_Ju6MvJU.js.map +1 -0
  171. package/.dist/esm/.mion/types/OBOg_K9zElfi.js +27 -0
  172. package/.dist/esm/.mion/types/OBOg_K9zElfi.js.map +1 -0
  173. package/.dist/esm/.mion/types/OBOg_NXjo9wB.js +27 -0
  174. package/.dist/esm/.mion/types/OBOg_NXjo9wB.js.map +1 -0
  175. package/.dist/esm/.mion/types/OBOg_UE6lPE3.js +29 -0
  176. package/.dist/esm/.mion/types/OBOg_UE6lPE3.js.map +1 -0
  177. package/.dist/esm/.mion/types/OBOg_b8JOgtl.js +27 -0
  178. package/.dist/esm/.mion/types/OBOg_b8JOgtl.js.map +1 -0
  179. package/.dist/esm/.mion/types/OBOg_bWgCH09.js +34 -0
  180. package/.dist/esm/.mion/types/OBOg_bWgCH09.js.map +1 -0
  181. package/.dist/esm/.mion/types/OBOg_ddv0QYt.js +25 -0
  182. package/.dist/esm/.mion/types/OBOg_ddv0QYt.js.map +1 -0
  183. package/.dist/esm/.mion/types/OBOg_jMcsHAh.js +27 -0
  184. package/.dist/esm/.mion/types/OBOg_jMcsHAh.js.map +1 -0
  185. package/.dist/esm/.mion/types/OBOg_ujMZYNY.js +34 -0
  186. package/.dist/esm/.mion/types/OBOg_ujMZYNY.js.map +1 -0
  187. package/.dist/esm/.mion/types/Xhuv_CXFfAul.js +24 -0
  188. package/.dist/esm/.mion/types/Xhuv_CXFfAul.js.map +1 -0
  189. package/.dist/esm/.mion/types/Xhuv_EkYSHqf.js +31 -0
  190. package/.dist/esm/.mion/types/Xhuv_EkYSHqf.js.map +1 -0
  191. package/.dist/esm/.mion/types/Xhuv_GVXB1Wo.js +22 -0
  192. package/.dist/esm/.mion/types/Xhuv_GVXB1Wo.js.map +1 -0
  193. package/.dist/esm/.mion/types/Xhuv_HvnlLnd.js +39 -0
  194. package/.dist/esm/.mion/types/Xhuv_HvnlLnd.js.map +1 -0
  195. package/.dist/esm/.mion/types/Xhuv_JTXvy7Y.js +24 -0
  196. package/.dist/esm/.mion/types/Xhuv_JTXvy7Y.js.map +1 -0
  197. package/.dist/esm/.mion/types/Xhuv_JkwVz03.js +39 -0
  198. package/.dist/esm/.mion/types/Xhuv_JkwVz03.js.map +1 -0
  199. package/.dist/esm/.mion/types/Xhuv_Ju6MvJU.js +22 -0
  200. package/.dist/esm/.mion/types/Xhuv_Ju6MvJU.js.map +1 -0
  201. package/.dist/esm/.mion/types/Xhuv_K9zElfi.js +22 -0
  202. package/.dist/esm/.mion/types/Xhuv_K9zElfi.js.map +1 -0
  203. package/.dist/esm/.mion/types/Xhuv_KYXJdoi.js +41 -0
  204. package/.dist/esm/.mion/types/Xhuv_KYXJdoi.js.map +1 -0
  205. package/.dist/esm/.mion/types/Xhuv_L7TAwqn.js +41 -0
  206. package/.dist/esm/.mion/types/Xhuv_L7TAwqn.js.map +1 -0
  207. package/.dist/esm/.mion/types/Xhuv_NXjo9wB.js +95 -0
  208. package/.dist/esm/.mion/types/Xhuv_NXjo9wB.js.map +1 -0
  209. package/.dist/esm/.mion/types/Xhuv_P05N010.js +31 -0
  210. package/.dist/esm/.mion/types/Xhuv_P05N010.js.map +1 -0
  211. package/.dist/esm/.mion/types/Xhuv_R2waGIJ.js +24 -0
  212. package/.dist/esm/.mion/types/Xhuv_R2waGIJ.js.map +1 -0
  213. package/.dist/esm/.mion/types/Xhuv_UE6lPE3.js +30 -0
  214. package/.dist/esm/.mion/types/Xhuv_UE6lPE3.js.map +1 -0
  215. package/.dist/esm/.mion/types/Xhuv_UGPHsHZ.js +26 -0
  216. package/.dist/esm/.mion/types/Xhuv_UGPHsHZ.js.map +1 -0
  217. package/.dist/esm/.mion/types/Xhuv_VMxJugF.js +31 -0
  218. package/.dist/esm/.mion/types/Xhuv_VMxJugF.js.map +1 -0
  219. package/.dist/esm/.mion/types/Xhuv_VuzVN13.js +24 -0
  220. package/.dist/esm/.mion/types/Xhuv_VuzVN13.js.map +1 -0
  221. package/.dist/esm/.mion/types/Xhuv_WaXzp6u.js +31 -0
  222. package/.dist/esm/.mion/types/Xhuv_WaXzp6u.js.map +1 -0
  223. package/.dist/esm/.mion/types/Xhuv_b0EmsPZ.js +22 -0
  224. package/.dist/esm/.mion/types/Xhuv_b0EmsPZ.js.map +1 -0
  225. package/.dist/esm/.mion/types/Xhuv_b8JOgtl.js +24 -0
  226. package/.dist/esm/.mion/types/Xhuv_b8JOgtl.js.map +1 -0
  227. package/.dist/esm/.mion/types/Xhuv_bWgCH09.js +33 -0
  228. package/.dist/esm/.mion/types/Xhuv_bWgCH09.js.map +1 -0
  229. package/.dist/esm/.mion/types/Xhuv_cIwQaiK.js +24 -0
  230. package/.dist/esm/.mion/types/Xhuv_cIwQaiK.js.map +1 -0
  231. package/.dist/esm/.mion/types/Xhuv_ddv0QYt.js +26 -0
  232. package/.dist/esm/.mion/types/Xhuv_ddv0QYt.js.map +1 -0
  233. package/.dist/esm/.mion/types/Xhuv_fjaxPpO.js +32 -0
  234. package/.dist/esm/.mion/types/Xhuv_fjaxPpO.js.map +1 -0
  235. package/.dist/esm/.mion/types/Xhuv_hnO6xA5.js +24 -0
  236. package/.dist/esm/.mion/types/Xhuv_hnO6xA5.js.map +1 -0
  237. package/.dist/esm/.mion/types/Xhuv_jMcsHAh.js +71 -0
  238. package/.dist/esm/.mion/types/Xhuv_jMcsHAh.js.map +1 -0
  239. package/.dist/esm/.mion/types/Xhuv_pJ9XvFm.js +24 -0
  240. package/.dist/esm/.mion/types/Xhuv_pJ9XvFm.js.map +1 -0
  241. package/.dist/esm/.mion/types/Xhuv_pWBRJYE.js +22 -0
  242. package/.dist/esm/.mion/types/Xhuv_pWBRJYE.js.map +1 -0
  243. package/.dist/esm/.mion/types/Xhuv_qatpo1O.js +29 -0
  244. package/.dist/esm/.mion/types/Xhuv_qatpo1O.js.map +1 -0
  245. package/.dist/esm/.mion/types/Xhuv_qxw8aWP.js +24 -0
  246. package/.dist/esm/.mion/types/Xhuv_qxw8aWP.js.map +1 -0
  247. package/.dist/esm/.mion/types/Xhuv_ujMZYNY.js +31 -0
  248. package/.dist/esm/.mion/types/Xhuv_ujMZYNY.js.map +1 -0
  249. package/.dist/esm/.mion/types/Xhuv_vIbt7K7.js +27 -0
  250. package/.dist/esm/.mion/types/Xhuv_vIbt7K7.js.map +1 -0
  251. package/.dist/esm/.mion/types/Xhuv_vMVZ77w.js +31 -0
  252. package/.dist/esm/.mion/types/Xhuv_vMVZ77w.js.map +1 -0
  253. package/.dist/esm/.mion/types/mzca_Ju6MvJU.js +14 -0
  254. package/.dist/esm/.mion/types/mzca_Ju6MvJU.js.map +1 -0
  255. package/.dist/esm/.mion/types/mzca_UE6lPE3.js +14 -0
  256. package/.dist/esm/.mion/types/mzca_UE6lPE3.js.map +1 -0
  257. package/.dist/esm/.mion/types/mzca_bWgCH09.js +14 -0
  258. package/.dist/esm/.mion/types/mzca_bWgCH09.js.map +1 -0
  259. package/.dist/esm/.mion/types/pf/_rt/_abcB3do2M.js +23 -0
  260. package/.dist/esm/.mion/types/pf/_rt/_abcB3do2M.js.map +1 -0
  261. package/.dist/esm/.mion/types/pf/_rt/tfRjnFZVF8.js +27 -0
  262. package/.dist/esm/.mion/types/pf/_rt/tfRjnFZVF8.js.map +1 -0
  263. package/.dist/esm/.mion/types/rt/C7ezVBCtGn.js +200 -195
  264. package/.dist/esm/.mion/types/rt/C7ezVBCtGn.js.map +1 -1
  265. package/.dist/esm/.mion/types/rt/KjC1OsUQp4.js +1207 -0
  266. package/.dist/esm/.mion/types/rt/KjC1OsUQp4.js.map +1 -0
  267. package/.dist/esm/.mion/types/rt/VIdAjpHu1X.js +178 -179
  268. package/.dist/esm/.mion/types/rt/VIdAjpHu1X.js.map +1 -1
  269. package/.dist/esm/.mion/types/rt/eF4wQzU6Fd.js +335 -330
  270. package/.dist/esm/.mion/types/rt/eF4wQzU6Fd.js.map +1 -1
  271. package/.dist/{cjs/.mion/types/rt/shared/JQEexHbHMp.cjs → esm/.mion/types/rt/shared/EjfwjaotqB.js} +171 -155
  272. package/.dist/esm/.mion/types/rt/shared/EjfwjaotqB.js.map +1 -0
  273. package/.dist/esm/.mion/types/rt/shared/lhgmFrJdOO.js +278 -0
  274. package/.dist/esm/.mion/types/rt/shared/lhgmFrJdOO.js.map +1 -0
  275. package/.dist/esm/.mion/types/rt/shared/{connsmWgsp.js → nJOmbxLb37.js} +476 -612
  276. package/.dist/esm/.mion/types/rt/shared/nJOmbxLb37.js.map +1 -0
  277. package/.dist/esm/index.d.ts +1 -1
  278. package/.dist/esm/index.js +7 -7
  279. package/.dist/esm/middlewares.d.ts +1 -0
  280. package/.dist/esm/middlewares.js +2 -1
  281. package/.dist/esm/src/batches.js +3 -3
  282. package/.dist/esm/src/batches.js.map +1 -1
  283. package/.dist/esm/src/callContext.d.ts +3 -3
  284. package/.dist/esm/src/callContext.js +7 -5
  285. package/.dist/esm/src/callContext.js.map +1 -1
  286. package/.dist/esm/src/constants.d.ts +1 -0
  287. package/.dist/esm/src/constants.js +5 -3
  288. package/.dist/esm/src/constants.js.map +1 -1
  289. package/.dist/esm/src/dispatch.d.ts +3 -3
  290. package/.dist/esm/src/dispatch.js +10 -8
  291. package/.dist/esm/src/dispatch.js.map +1 -1
  292. package/.dist/esm/src/lib/dispatchError.d.ts +2 -1
  293. package/.dist/esm/src/lib/dispatchError.js +11 -2
  294. package/.dist/esm/src/lib/dispatchError.js.map +1 -1
  295. package/.dist/esm/src/lib/handlers.d.ts +3 -3
  296. package/.dist/esm/src/lib/handlers.js.map +1 -1
  297. package/.dist/esm/src/lib/headers.d.ts +2 -0
  298. package/.dist/esm/src/lib/headers.js +19 -1
  299. package/.dist/esm/src/lib/headers.js.map +1 -1
  300. package/.dist/esm/src/lib/httpMethod.d.ts +3 -0
  301. package/.dist/esm/src/lib/httpMethod.js +21 -0
  302. package/.dist/esm/src/lib/httpMethod.js.map +1 -0
  303. package/.dist/esm/src/lib/queryBody.d.ts +1 -6
  304. package/.dist/esm/src/lib/queryBody.js +4 -7
  305. package/.dist/esm/src/lib/queryBody.js.map +1 -1
  306. package/.dist/esm/src/lib/reflection.js +4 -4
  307. package/.dist/esm/src/lib/reflection.js.map +1 -1
  308. package/.dist/esm/src/lib/remoteMethods.js +2 -2
  309. package/.dist/esm/src/lib/remoteMethods.js.map +1 -1
  310. package/.dist/esm/src/middlewares/fetchMetadata.js +20 -20
  311. package/.dist/esm/src/middlewares/security.d.ts +9 -0
  312. package/.dist/esm/src/middlewares/security.js +213 -0
  313. package/.dist/esm/src/middlewares/security.js.map +1 -0
  314. package/.dist/esm/src/middlewares/syncRoutes.js +20 -20
  315. package/.dist/esm/src/router.d.ts +8 -6
  316. package/.dist/esm/src/router.js +40 -29
  317. package/.dist/esm/src/router.js.map +1 -1
  318. package/.dist/esm/src/routes/errors.routes.js +34 -34
  319. package/.dist/esm/src/routes/serializer.routes.js +13 -2
  320. package/.dist/esm/src/routes/serializer.routes.js.map +1 -1
  321. package/.dist/esm/src/types/context.d.ts +6 -3
  322. package/.dist/esm/src/types/definitions.d.ts +5 -3
  323. package/.dist/esm/src/types/general.d.ts +24 -5
  324. package/.dist/esm/src/types/guards.d.ts +2 -6
  325. package/.dist/esm/src/types/guards.js +1 -13
  326. package/.dist/esm/src/types/guards.js.map +1 -1
  327. package/.dist/esm/src/types/mionRouter.d.ts +67 -22
  328. package/.dist/esm/src/types/publicMethods.d.ts +4 -5
  329. package/.dist/esm/src/types/resolvedOptions.d.ts +11 -2
  330. package/package.json +6 -6
  331. package/.dist/cjs/.mion/types/A0Qb_D32xQCR.cjs +0 -16
  332. package/.dist/cjs/.mion/types/A0Qb_D32xQCR.cjs.map +0 -1
  333. package/.dist/cjs/.mion/types/A0Qb_D5PMNNO.cjs +0 -17
  334. package/.dist/cjs/.mion/types/A0Qb_D5PMNNO.cjs.map +0 -1
  335. package/.dist/cjs/.mion/types/A0Qb_E1CjDEA.cjs +0 -36
  336. package/.dist/cjs/.mion/types/A0Qb_E1CjDEA.cjs.map +0 -1
  337. package/.dist/cjs/.mion/types/A0Qb_EYEglde.cjs +0 -16
  338. package/.dist/cjs/.mion/types/A0Qb_EYEglde.cjs.map +0 -1
  339. package/.dist/cjs/.mion/types/A0Qb_EyHLuYw.cjs +0 -16
  340. package/.dist/cjs/.mion/types/A0Qb_EyHLuYw.cjs.map +0 -1
  341. package/.dist/cjs/.mion/types/A0Qb_G42dZdW.cjs +0 -16
  342. package/.dist/cjs/.mion/types/A0Qb_G42dZdW.cjs.map +0 -1
  343. package/.dist/cjs/.mion/types/A0Qb_HSE8icr.cjs +0 -16
  344. package/.dist/cjs/.mion/types/A0Qb_HSE8icr.cjs.map +0 -1
  345. package/.dist/cjs/.mion/types/A0Qb_HXAy3Lx.cjs +0 -13
  346. package/.dist/cjs/.mion/types/A0Qb_HXAy3Lx.cjs.map +0 -1
  347. package/.dist/cjs/.mion/types/A0Qb_JJrCj9i.cjs +0 -13
  348. package/.dist/cjs/.mion/types/A0Qb_JJrCj9i.cjs.map +0 -1
  349. package/.dist/cjs/.mion/types/A0Qb_KDyf2Fa.cjs +0 -16
  350. package/.dist/cjs/.mion/types/A0Qb_KDyf2Fa.cjs.map +0 -1
  351. package/.dist/cjs/.mion/types/A0Qb_L3mQkaR.cjs +0 -13
  352. package/.dist/cjs/.mion/types/A0Qb_L3mQkaR.cjs.map +0 -1
  353. package/.dist/cjs/.mion/types/A0Qb_RAudOr2.cjs +0 -13
  354. package/.dist/cjs/.mion/types/A0Qb_RAudOr2.cjs.map +0 -1
  355. package/.dist/cjs/.mion/types/A0Qb_TRnIbow.cjs +0 -17
  356. package/.dist/cjs/.mion/types/A0Qb_TRnIbow.cjs.map +0 -1
  357. package/.dist/cjs/.mion/types/A0Qb_UOI3bXq.cjs +0 -17
  358. package/.dist/cjs/.mion/types/A0Qb_UOI3bXq.cjs.map +0 -1
  359. package/.dist/cjs/.mion/types/A0Qb_VsWxRKn.cjs +0 -13
  360. package/.dist/cjs/.mion/types/A0Qb_VsWxRKn.cjs.map +0 -1
  361. package/.dist/cjs/.mion/types/A0Qb_ZTKzxQG.cjs +0 -16
  362. package/.dist/cjs/.mion/types/A0Qb_ZTKzxQG.cjs.map +0 -1
  363. package/.dist/cjs/.mion/types/A0Qb_b4tYK8X.cjs +0 -16
  364. package/.dist/cjs/.mion/types/A0Qb_b4tYK8X.cjs.map +0 -1
  365. package/.dist/cjs/.mion/types/A0Qb_deFq9zY.cjs +0 -26
  366. package/.dist/cjs/.mion/types/A0Qb_deFq9zY.cjs.map +0 -1
  367. package/.dist/cjs/.mion/types/A0Qb_fMIJ1JT.cjs +0 -14
  368. package/.dist/cjs/.mion/types/A0Qb_fMIJ1JT.cjs.map +0 -1
  369. package/.dist/cjs/.mion/types/A0Qb_g17turq.cjs +0 -13
  370. package/.dist/cjs/.mion/types/A0Qb_g17turq.cjs.map +0 -1
  371. package/.dist/cjs/.mion/types/A0Qb_hqa3Nzs.cjs +0 -14
  372. package/.dist/cjs/.mion/types/A0Qb_hqa3Nzs.cjs.map +0 -1
  373. package/.dist/cjs/.mion/types/A0Qb_iKPrxW9.cjs +0 -16
  374. package/.dist/cjs/.mion/types/A0Qb_iKPrxW9.cjs.map +0 -1
  375. package/.dist/cjs/.mion/types/A0Qb_jLtJ5Kv.cjs +0 -16
  376. package/.dist/cjs/.mion/types/A0Qb_jLtJ5Kv.cjs.map +0 -1
  377. package/.dist/cjs/.mion/types/A0Qb_kibOHkN.cjs +0 -14
  378. package/.dist/cjs/.mion/types/A0Qb_kibOHkN.cjs.map +0 -1
  379. package/.dist/cjs/.mion/types/A0Qb_kz5ne4c.cjs +0 -16
  380. package/.dist/cjs/.mion/types/A0Qb_kz5ne4c.cjs.map +0 -1
  381. package/.dist/cjs/.mion/types/A0Qb_pzBRrJb.cjs +0 -16
  382. package/.dist/cjs/.mion/types/A0Qb_pzBRrJb.cjs.map +0 -1
  383. package/.dist/cjs/.mion/types/Eq2V_EYEglde.cjs +0 -16
  384. package/.dist/cjs/.mion/types/Eq2V_EYEglde.cjs.map +0 -1
  385. package/.dist/cjs/.mion/types/Eq2V_EyHLuYw.cjs +0 -16
  386. package/.dist/cjs/.mion/types/Eq2V_EyHLuYw.cjs.map +0 -1
  387. package/.dist/cjs/.mion/types/Eq2V_HSE8icr.cjs +0 -16
  388. package/.dist/cjs/.mion/types/Eq2V_HSE8icr.cjs.map +0 -1
  389. package/.dist/cjs/.mion/types/Eq2V_HXAy3Lx.cjs +0 -13
  390. package/.dist/cjs/.mion/types/Eq2V_HXAy3Lx.cjs.map +0 -1
  391. package/.dist/cjs/.mion/types/Eq2V_JJrCj9i.cjs +0 -13
  392. package/.dist/cjs/.mion/types/Eq2V_JJrCj9i.cjs.map +0 -1
  393. package/.dist/cjs/.mion/types/Eq2V_KDyf2Fa.cjs +0 -16
  394. package/.dist/cjs/.mion/types/Eq2V_KDyf2Fa.cjs.map +0 -1
  395. package/.dist/cjs/.mion/types/Eq2V_L3mQkaR.cjs +0 -13
  396. package/.dist/cjs/.mion/types/Eq2V_L3mQkaR.cjs.map +0 -1
  397. package/.dist/cjs/.mion/types/Eq2V_RAudOr2.cjs +0 -13
  398. package/.dist/cjs/.mion/types/Eq2V_RAudOr2.cjs.map +0 -1
  399. package/.dist/cjs/.mion/types/Eq2V_TRnIbow.cjs +0 -17
  400. package/.dist/cjs/.mion/types/Eq2V_TRnIbow.cjs.map +0 -1
  401. package/.dist/cjs/.mion/types/Eq2V_UOI3bXq.cjs +0 -17
  402. package/.dist/cjs/.mion/types/Eq2V_UOI3bXq.cjs.map +0 -1
  403. package/.dist/cjs/.mion/types/Eq2V_VsWxRKn.cjs +0 -13
  404. package/.dist/cjs/.mion/types/Eq2V_VsWxRKn.cjs.map +0 -1
  405. package/.dist/cjs/.mion/types/Eq2V_ZTKzxQG.cjs +0 -16
  406. package/.dist/cjs/.mion/types/Eq2V_ZTKzxQG.cjs.map +0 -1
  407. package/.dist/cjs/.mion/types/Eq2V_b4tYK8X.cjs +0 -16
  408. package/.dist/cjs/.mion/types/Eq2V_b4tYK8X.cjs.map +0 -1
  409. package/.dist/cjs/.mion/types/Eq2V_deFq9zY.cjs +0 -26
  410. package/.dist/cjs/.mion/types/Eq2V_deFq9zY.cjs.map +0 -1
  411. package/.dist/cjs/.mion/types/Eq2V_g17turq.cjs +0 -13
  412. package/.dist/cjs/.mion/types/Eq2V_g17turq.cjs.map +0 -1
  413. package/.dist/cjs/.mion/types/Eq2V_iKPrxW9.cjs +0 -16
  414. package/.dist/cjs/.mion/types/Eq2V_iKPrxW9.cjs.map +0 -1
  415. package/.dist/cjs/.mion/types/Eq2V_jLtJ5Kv.cjs +0 -16
  416. package/.dist/cjs/.mion/types/Eq2V_jLtJ5Kv.cjs.map +0 -1
  417. package/.dist/cjs/.mion/types/Eq2V_kz5ne4c.cjs +0 -16
  418. package/.dist/cjs/.mion/types/Eq2V_kz5ne4c.cjs.map +0 -1
  419. package/.dist/cjs/.mion/types/Eq2V_pzBRrJb.cjs +0 -16
  420. package/.dist/cjs/.mion/types/Eq2V_pzBRrJb.cjs.map +0 -1
  421. package/.dist/cjs/.mion/types/Ky89_D32xQCR.cjs +0 -16
  422. package/.dist/cjs/.mion/types/Ky89_D32xQCR.cjs.map +0 -1
  423. package/.dist/cjs/.mion/types/Ky89_D5PMNNO.cjs +0 -16
  424. package/.dist/cjs/.mion/types/Ky89_D5PMNNO.cjs.map +0 -1
  425. package/.dist/cjs/.mion/types/Ky89_E1CjDEA.cjs +0 -32
  426. package/.dist/cjs/.mion/types/Ky89_E1CjDEA.cjs.map +0 -1
  427. package/.dist/cjs/.mion/types/Ky89_EYEglde.cjs +0 -16
  428. package/.dist/cjs/.mion/types/Ky89_EYEglde.cjs.map +0 -1
  429. package/.dist/cjs/.mion/types/Ky89_EyHLuYw.cjs +0 -16
  430. package/.dist/cjs/.mion/types/Ky89_EyHLuYw.cjs.map +0 -1
  431. package/.dist/cjs/.mion/types/Ky89_G42dZdW.cjs +0 -16
  432. package/.dist/cjs/.mion/types/Ky89_G42dZdW.cjs.map +0 -1
  433. package/.dist/cjs/.mion/types/Ky89_HSE8icr.cjs +0 -16
  434. package/.dist/cjs/.mion/types/Ky89_HSE8icr.cjs.map +0 -1
  435. package/.dist/cjs/.mion/types/Ky89_JJrCj9i.cjs +0 -13
  436. package/.dist/cjs/.mion/types/Ky89_JJrCj9i.cjs.map +0 -1
  437. package/.dist/cjs/.mion/types/Ky89_KDyf2Fa.cjs +0 -16
  438. package/.dist/cjs/.mion/types/Ky89_KDyf2Fa.cjs.map +0 -1
  439. package/.dist/cjs/.mion/types/Ky89_L3mQkaR.cjs +0 -13
  440. package/.dist/cjs/.mion/types/Ky89_L3mQkaR.cjs.map +0 -1
  441. package/.dist/cjs/.mion/types/Ky89_RAudOr2.cjs +0 -13
  442. package/.dist/cjs/.mion/types/Ky89_RAudOr2.cjs.map +0 -1
  443. package/.dist/cjs/.mion/types/Ky89_TRnIbow.cjs +0 -13
  444. package/.dist/cjs/.mion/types/Ky89_TRnIbow.cjs.map +0 -1
  445. package/.dist/cjs/.mion/types/Ky89_UOI3bXq.cjs +0 -17
  446. package/.dist/cjs/.mion/types/Ky89_UOI3bXq.cjs.map +0 -1
  447. package/.dist/cjs/.mion/types/Ky89_ZTKzxQG.cjs +0 -16
  448. package/.dist/cjs/.mion/types/Ky89_ZTKzxQG.cjs.map +0 -1
  449. package/.dist/cjs/.mion/types/Ky89_b4tYK8X.cjs +0 -16
  450. package/.dist/cjs/.mion/types/Ky89_b4tYK8X.cjs.map +0 -1
  451. package/.dist/cjs/.mion/types/Ky89_deFq9zY.cjs +0 -26
  452. package/.dist/cjs/.mion/types/Ky89_deFq9zY.cjs.map +0 -1
  453. package/.dist/cjs/.mion/types/Ky89_fMIJ1JT.cjs +0 -13
  454. package/.dist/cjs/.mion/types/Ky89_fMIJ1JT.cjs.map +0 -1
  455. package/.dist/cjs/.mion/types/Ky89_g17turq.cjs +0 -13
  456. package/.dist/cjs/.mion/types/Ky89_g17turq.cjs.map +0 -1
  457. package/.dist/cjs/.mion/types/Ky89_hqa3Nzs.cjs +0 -14
  458. package/.dist/cjs/.mion/types/Ky89_hqa3Nzs.cjs.map +0 -1
  459. package/.dist/cjs/.mion/types/Ky89_iKPrxW9.cjs +0 -16
  460. package/.dist/cjs/.mion/types/Ky89_iKPrxW9.cjs.map +0 -1
  461. package/.dist/cjs/.mion/types/Ky89_jLtJ5Kv.cjs +0 -16
  462. package/.dist/cjs/.mion/types/Ky89_jLtJ5Kv.cjs.map +0 -1
  463. package/.dist/cjs/.mion/types/Ky89_kibOHkN.cjs +0 -13
  464. package/.dist/cjs/.mion/types/Ky89_kibOHkN.cjs.map +0 -1
  465. package/.dist/cjs/.mion/types/Ky89_kz5ne4c.cjs +0 -16
  466. package/.dist/cjs/.mion/types/Ky89_kz5ne4c.cjs.map +0 -1
  467. package/.dist/cjs/.mion/types/Ky89_pzBRrJb.cjs +0 -16
  468. package/.dist/cjs/.mion/types/Ky89_pzBRrJb.cjs.map +0 -1
  469. package/.dist/cjs/.mion/types/OBOg_D32xQCR.cjs +0 -23
  470. package/.dist/cjs/.mion/types/OBOg_D32xQCR.cjs.map +0 -1
  471. package/.dist/cjs/.mion/types/OBOg_D5PMNNO.cjs +0 -18
  472. package/.dist/cjs/.mion/types/OBOg_D5PMNNO.cjs.map +0 -1
  473. package/.dist/cjs/.mion/types/OBOg_E1CjDEA.cjs +0 -18
  474. package/.dist/cjs/.mion/types/OBOg_E1CjDEA.cjs.map +0 -1
  475. package/.dist/cjs/.mion/types/OBOg_G42dZdW.cjs +0 -18
  476. package/.dist/cjs/.mion/types/OBOg_G42dZdW.cjs.map +0 -1
  477. package/.dist/cjs/.mion/types/OBOg_LKYfhxm.cjs +0 -18
  478. package/.dist/cjs/.mion/types/OBOg_LKYfhxm.cjs.map +0 -1
  479. package/.dist/cjs/.mion/types/OBOg_fMIJ1JT.cjs +0 -18
  480. package/.dist/cjs/.mion/types/OBOg_fMIJ1JT.cjs.map +0 -1
  481. package/.dist/cjs/.mion/types/OBOg_g17turq.cjs +0 -17
  482. package/.dist/cjs/.mion/types/OBOg_g17turq.cjs.map +0 -1
  483. package/.dist/cjs/.mion/types/OBOg_hqa3Nzs.cjs +0 -17
  484. package/.dist/cjs/.mion/types/OBOg_hqa3Nzs.cjs.map +0 -1
  485. package/.dist/cjs/.mion/types/OBOg_kibOHkN.cjs +0 -17
  486. package/.dist/cjs/.mion/types/OBOg_kibOHkN.cjs.map +0 -1
  487. package/.dist/cjs/.mion/types/Xhuv_D32xQCR.cjs +0 -16
  488. package/.dist/cjs/.mion/types/Xhuv_D32xQCR.cjs.map +0 -1
  489. package/.dist/cjs/.mion/types/Xhuv_D5PMNNO.cjs +0 -16
  490. package/.dist/cjs/.mion/types/Xhuv_D5PMNNO.cjs.map +0 -1
  491. package/.dist/cjs/.mion/types/Xhuv_E1CjDEA.cjs +0 -29
  492. package/.dist/cjs/.mion/types/Xhuv_E1CjDEA.cjs.map +0 -1
  493. package/.dist/cjs/.mion/types/Xhuv_EYEglde.cjs +0 -16
  494. package/.dist/cjs/.mion/types/Xhuv_EYEglde.cjs.map +0 -1
  495. package/.dist/cjs/.mion/types/Xhuv_EyHLuYw.cjs +0 -16
  496. package/.dist/cjs/.mion/types/Xhuv_EyHLuYw.cjs.map +0 -1
  497. package/.dist/cjs/.mion/types/Xhuv_G42dZdW.cjs +0 -16
  498. package/.dist/cjs/.mion/types/Xhuv_G42dZdW.cjs.map +0 -1
  499. package/.dist/cjs/.mion/types/Xhuv_HSE8icr.cjs +0 -16
  500. package/.dist/cjs/.mion/types/Xhuv_HSE8icr.cjs.map +0 -1
  501. package/.dist/cjs/.mion/types/Xhuv_HXAy3Lx.cjs +0 -13
  502. package/.dist/cjs/.mion/types/Xhuv_HXAy3Lx.cjs.map +0 -1
  503. package/.dist/cjs/.mion/types/Xhuv_JJrCj9i.cjs +0 -13
  504. package/.dist/cjs/.mion/types/Xhuv_JJrCj9i.cjs.map +0 -1
  505. package/.dist/cjs/.mion/types/Xhuv_KDyf2Fa.cjs +0 -16
  506. package/.dist/cjs/.mion/types/Xhuv_KDyf2Fa.cjs.map +0 -1
  507. package/.dist/cjs/.mion/types/Xhuv_L3mQkaR.cjs +0 -13
  508. package/.dist/cjs/.mion/types/Xhuv_L3mQkaR.cjs.map +0 -1
  509. package/.dist/cjs/.mion/types/Xhuv_LKYfhxm.cjs +0 -13
  510. package/.dist/cjs/.mion/types/Xhuv_LKYfhxm.cjs.map +0 -1
  511. package/.dist/cjs/.mion/types/Xhuv_RAudOr2.cjs +0 -13
  512. package/.dist/cjs/.mion/types/Xhuv_RAudOr2.cjs.map +0 -1
  513. package/.dist/cjs/.mion/types/Xhuv_TRnIbow.cjs +0 -17
  514. package/.dist/cjs/.mion/types/Xhuv_TRnIbow.cjs.map +0 -1
  515. package/.dist/cjs/.mion/types/Xhuv_UOI3bXq.cjs +0 -17
  516. package/.dist/cjs/.mion/types/Xhuv_UOI3bXq.cjs.map +0 -1
  517. package/.dist/cjs/.mion/types/Xhuv_VsWxRKn.cjs +0 -13
  518. package/.dist/cjs/.mion/types/Xhuv_VsWxRKn.cjs.map +0 -1
  519. package/.dist/cjs/.mion/types/Xhuv_ZTKzxQG.cjs +0 -16
  520. package/.dist/cjs/.mion/types/Xhuv_ZTKzxQG.cjs.map +0 -1
  521. package/.dist/cjs/.mion/types/Xhuv_ZgsWs6s.cjs +0 -13
  522. package/.dist/cjs/.mion/types/Xhuv_ZgsWs6s.cjs.map +0 -1
  523. package/.dist/cjs/.mion/types/Xhuv_b4tYK8X.cjs +0 -16
  524. package/.dist/cjs/.mion/types/Xhuv_b4tYK8X.cjs.map +0 -1
  525. package/.dist/cjs/.mion/types/Xhuv_deFq9zY.cjs +0 -26
  526. package/.dist/cjs/.mion/types/Xhuv_deFq9zY.cjs.map +0 -1
  527. package/.dist/cjs/.mion/types/Xhuv_fMIJ1JT.cjs +0 -16
  528. package/.dist/cjs/.mion/types/Xhuv_fMIJ1JT.cjs.map +0 -1
  529. package/.dist/cjs/.mion/types/Xhuv_g17turq.cjs +0 -13
  530. package/.dist/cjs/.mion/types/Xhuv_g17turq.cjs.map +0 -1
  531. package/.dist/cjs/.mion/types/Xhuv_hqa3Nzs.cjs +0 -13
  532. package/.dist/cjs/.mion/types/Xhuv_hqa3Nzs.cjs.map +0 -1
  533. package/.dist/cjs/.mion/types/Xhuv_iKPrxW9.cjs +0 -16
  534. package/.dist/cjs/.mion/types/Xhuv_iKPrxW9.cjs.map +0 -1
  535. package/.dist/cjs/.mion/types/Xhuv_jLtJ5Kv.cjs +0 -16
  536. package/.dist/cjs/.mion/types/Xhuv_jLtJ5Kv.cjs.map +0 -1
  537. package/.dist/cjs/.mion/types/Xhuv_kibOHkN.cjs +0 -13
  538. package/.dist/cjs/.mion/types/Xhuv_kibOHkN.cjs.map +0 -1
  539. package/.dist/cjs/.mion/types/Xhuv_kz5ne4c.cjs +0 -16
  540. package/.dist/cjs/.mion/types/Xhuv_kz5ne4c.cjs.map +0 -1
  541. package/.dist/cjs/.mion/types/Xhuv_pzBRrJb.cjs +0 -16
  542. package/.dist/cjs/.mion/types/Xhuv_pzBRrJb.cjs.map +0 -1
  543. package/.dist/cjs/.mion/types/mzca_fMIJ1JT.cjs +0 -14
  544. package/.dist/cjs/.mion/types/mzca_fMIJ1JT.cjs.map +0 -1
  545. package/.dist/cjs/.mion/types/mzca_hqa3Nzs.cjs +0 -14
  546. package/.dist/cjs/.mion/types/mzca_hqa3Nzs.cjs.map +0 -1
  547. package/.dist/cjs/.mion/types/mzca_kibOHkN.cjs +0 -14
  548. package/.dist/cjs/.mion/types/mzca_kibOHkN.cjs.map +0 -1
  549. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.cjs +0 -14
  550. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.cjs.map +0 -1
  551. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.cjs +0 -14
  552. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.cjs.map +0 -1
  553. package/.dist/cjs/.mion/types/rt/C7ezVBCtGn.cjs +0 -498
  554. package/.dist/cjs/.mion/types/rt/C7ezVBCtGn.cjs.map +0 -1
  555. package/.dist/cjs/.mion/types/rt/VIdAjpHu1X.cjs +0 -526
  556. package/.dist/cjs/.mion/types/rt/VIdAjpHu1X.cjs.map +0 -1
  557. package/.dist/cjs/.mion/types/rt/eF4wQzU6Fd.cjs +0 -876
  558. package/.dist/cjs/.mion/types/rt/eF4wQzU6Fd.cjs.map +0 -1
  559. package/.dist/cjs/.mion/types/rt/shared/JQEexHbHMp.cjs.map +0 -1
  560. package/.dist/cjs/.mion/types/rt/shared/connsmWgsp.cjs +0 -1475
  561. package/.dist/cjs/.mion/types/rt/shared/connsmWgsp.cjs.map +0 -1
  562. package/.dist/cjs/index.cjs +0 -118
  563. package/.dist/cjs/index.d.ts +0 -21
  564. package/.dist/cjs/middlewares.cjs +0 -5
  565. package/.dist/cjs/middlewares.d.ts +0 -3
  566. package/.dist/cjs/package.json +0 -1
  567. package/.dist/cjs/src/batches.cjs +0 -332
  568. package/.dist/cjs/src/batches.cjs.map +0 -1
  569. package/.dist/cjs/src/batches.d.ts +0 -22
  570. package/.dist/cjs/src/callContext.cjs +0 -81
  571. package/.dist/cjs/src/callContext.cjs.map +0 -1
  572. package/.dist/cjs/src/callContext.d.ts +0 -8
  573. package/.dist/cjs/src/constants.cjs +0 -26
  574. package/.dist/cjs/src/constants.cjs.map +0 -1
  575. package/.dist/cjs/src/constants.d.ts +0 -5
  576. package/.dist/cjs/src/dispatch.cjs +0 -239
  577. package/.dist/cjs/src/dispatch.cjs.map +0 -1
  578. package/.dist/cjs/src/dispatch.d.ts +0 -10
  579. package/.dist/cjs/src/lib/bodyLimit.cjs +0 -37
  580. package/.dist/cjs/src/lib/bodyLimit.cjs.map +0 -1
  581. package/.dist/cjs/src/lib/bodyLimit.d.ts +0 -5
  582. package/.dist/cjs/src/lib/bodyReader.cjs +0 -79
  583. package/.dist/cjs/src/lib/bodyReader.cjs.map +0 -1
  584. package/.dist/cjs/src/lib/bodyReader.d.ts +0 -10
  585. package/.dist/cjs/src/lib/dispatchError.cjs +0 -82
  586. package/.dist/cjs/src/lib/dispatchError.cjs.map +0 -1
  587. package/.dist/cjs/src/lib/dispatchError.d.ts +0 -10
  588. package/.dist/cjs/src/lib/handlers.cjs +0 -99
  589. package/.dist/cjs/src/lib/handlers.cjs.map +0 -1
  590. package/.dist/cjs/src/lib/handlers.d.ts +0 -15
  591. package/.dist/cjs/src/lib/headers.cjs +0 -181
  592. package/.dist/cjs/src/lib/headers.cjs.map +0 -1
  593. package/.dist/cjs/src/lib/headers.d.ts +0 -42
  594. package/.dist/cjs/src/lib/queryBody.cjs +0 -30
  595. package/.dist/cjs/src/lib/queryBody.cjs.map +0 -1
  596. package/.dist/cjs/src/lib/queryBody.d.ts +0 -7
  597. package/.dist/cjs/src/lib/reflection.cjs +0 -81
  598. package/.dist/cjs/src/lib/reflection.cjs.map +0 -1
  599. package/.dist/cjs/src/lib/reflection.d.ts +0 -18
  600. package/.dist/cjs/src/lib/remoteMethods.cjs +0 -125
  601. package/.dist/cjs/src/lib/remoteMethods.cjs.map +0 -1
  602. package/.dist/cjs/src/lib/remoteMethods.d.ts +0 -11
  603. package/.dist/cjs/src/lib/urlQuery.cjs +0 -24
  604. package/.dist/cjs/src/lib/urlQuery.cjs.map +0 -1
  605. package/.dist/cjs/src/lib/urlQuery.d.ts +0 -2
  606. package/.dist/cjs/src/middlewares/fetchMetadata.cjs +0 -99
  607. package/.dist/cjs/src/middlewares/fetchMetadata.cjs.map +0 -1
  608. package/.dist/cjs/src/middlewares/fetchMetadata.d.ts +0 -15
  609. package/.dist/cjs/src/middlewares/syncRoutes.cjs +0 -67
  610. package/.dist/cjs/src/middlewares/syncRoutes.cjs.map +0 -1
  611. package/.dist/cjs/src/middlewares/syncRoutes.d.ts +0 -12
  612. package/.dist/cjs/src/router.cjs +0 -556
  613. package/.dist/cjs/src/router.cjs.map +0 -1
  614. package/.dist/cjs/src/router.d.ts +0 -41
  615. package/.dist/cjs/src/routes/errors.routes.cjs +0 -84
  616. package/.dist/cjs/src/routes/errors.routes.cjs.map +0 -1
  617. package/.dist/cjs/src/routes/errors.routes.d.ts +0 -19
  618. package/.dist/cjs/src/routes/serializer.routes.cjs +0 -122
  619. package/.dist/cjs/src/routes/serializer.routes.cjs.map +0 -1
  620. package/.dist/cjs/src/routes/serializer.routes.d.ts +0 -10
  621. package/.dist/cjs/src/types/context.cjs +0 -0
  622. package/.dist/cjs/src/types/context.d.ts +0 -50
  623. package/.dist/cjs/src/types/definitions.cjs +0 -0
  624. package/.dist/cjs/src/types/definitions.d.ts +0 -33
  625. package/.dist/cjs/src/types/general.cjs +0 -0
  626. package/.dist/cjs/src/types/general.d.ts +0 -29
  627. package/.dist/cjs/src/types/guards.cjs +0 -59
  628. package/.dist/cjs/src/types/guards.cjs.map +0 -1
  629. package/.dist/cjs/src/types/guards.d.ts +0 -18
  630. package/.dist/cjs/src/types/handlers.cjs +0 -0
  631. package/.dist/cjs/src/types/handlers.d.ts +0 -16
  632. package/.dist/cjs/src/types/mionRouter.cjs +0 -0
  633. package/.dist/cjs/src/types/mionRouter.d.ts +0 -44
  634. package/.dist/cjs/src/types/parser.cjs +0 -0
  635. package/.dist/cjs/src/types/parser.d.ts +0 -43
  636. package/.dist/cjs/src/types/publicMethods.cjs +0 -0
  637. package/.dist/cjs/src/types/publicMethods.d.ts +0 -86
  638. package/.dist/cjs/src/types/remoteMethods.cjs +0 -0
  639. package/.dist/cjs/src/types/remoteMethods.d.ts +0 -65
  640. package/.dist/cjs/src/types/resolvedOptions.cjs +0 -0
  641. package/.dist/cjs/src/types/resolvedOptions.d.ts +0 -28
  642. package/.dist/esm/.mion/types/A0Qb_D32xQCR.js +0 -16
  643. package/.dist/esm/.mion/types/A0Qb_D32xQCR.js.map +0 -1
  644. package/.dist/esm/.mion/types/A0Qb_D5PMNNO.js +0 -17
  645. package/.dist/esm/.mion/types/A0Qb_D5PMNNO.js.map +0 -1
  646. package/.dist/esm/.mion/types/A0Qb_E1CjDEA.js +0 -36
  647. package/.dist/esm/.mion/types/A0Qb_E1CjDEA.js.map +0 -1
  648. package/.dist/esm/.mion/types/A0Qb_EYEglde.js +0 -16
  649. package/.dist/esm/.mion/types/A0Qb_EYEglde.js.map +0 -1
  650. package/.dist/esm/.mion/types/A0Qb_EyHLuYw.js +0 -16
  651. package/.dist/esm/.mion/types/A0Qb_EyHLuYw.js.map +0 -1
  652. package/.dist/esm/.mion/types/A0Qb_G42dZdW.js +0 -16
  653. package/.dist/esm/.mion/types/A0Qb_G42dZdW.js.map +0 -1
  654. package/.dist/esm/.mion/types/A0Qb_HSE8icr.js +0 -16
  655. package/.dist/esm/.mion/types/A0Qb_HSE8icr.js.map +0 -1
  656. package/.dist/esm/.mion/types/A0Qb_HXAy3Lx.js +0 -13
  657. package/.dist/esm/.mion/types/A0Qb_HXAy3Lx.js.map +0 -1
  658. package/.dist/esm/.mion/types/A0Qb_JJrCj9i.js +0 -13
  659. package/.dist/esm/.mion/types/A0Qb_JJrCj9i.js.map +0 -1
  660. package/.dist/esm/.mion/types/A0Qb_KDyf2Fa.js +0 -16
  661. package/.dist/esm/.mion/types/A0Qb_KDyf2Fa.js.map +0 -1
  662. package/.dist/esm/.mion/types/A0Qb_L3mQkaR.js +0 -13
  663. package/.dist/esm/.mion/types/A0Qb_L3mQkaR.js.map +0 -1
  664. package/.dist/esm/.mion/types/A0Qb_RAudOr2.js +0 -13
  665. package/.dist/esm/.mion/types/A0Qb_RAudOr2.js.map +0 -1
  666. package/.dist/esm/.mion/types/A0Qb_TRnIbow.js +0 -17
  667. package/.dist/esm/.mion/types/A0Qb_TRnIbow.js.map +0 -1
  668. package/.dist/esm/.mion/types/A0Qb_UOI3bXq.js +0 -17
  669. package/.dist/esm/.mion/types/A0Qb_UOI3bXq.js.map +0 -1
  670. package/.dist/esm/.mion/types/A0Qb_VsWxRKn.js +0 -13
  671. package/.dist/esm/.mion/types/A0Qb_VsWxRKn.js.map +0 -1
  672. package/.dist/esm/.mion/types/A0Qb_ZTKzxQG.js +0 -16
  673. package/.dist/esm/.mion/types/A0Qb_ZTKzxQG.js.map +0 -1
  674. package/.dist/esm/.mion/types/A0Qb_b4tYK8X.js +0 -16
  675. package/.dist/esm/.mion/types/A0Qb_b4tYK8X.js.map +0 -1
  676. package/.dist/esm/.mion/types/A0Qb_deFq9zY.js +0 -26
  677. package/.dist/esm/.mion/types/A0Qb_deFq9zY.js.map +0 -1
  678. package/.dist/esm/.mion/types/A0Qb_fMIJ1JT.js +0 -14
  679. package/.dist/esm/.mion/types/A0Qb_fMIJ1JT.js.map +0 -1
  680. package/.dist/esm/.mion/types/A0Qb_g17turq.js +0 -13
  681. package/.dist/esm/.mion/types/A0Qb_g17turq.js.map +0 -1
  682. package/.dist/esm/.mion/types/A0Qb_hqa3Nzs.js +0 -14
  683. package/.dist/esm/.mion/types/A0Qb_hqa3Nzs.js.map +0 -1
  684. package/.dist/esm/.mion/types/A0Qb_iKPrxW9.js +0 -16
  685. package/.dist/esm/.mion/types/A0Qb_iKPrxW9.js.map +0 -1
  686. package/.dist/esm/.mion/types/A0Qb_jLtJ5Kv.js +0 -16
  687. package/.dist/esm/.mion/types/A0Qb_jLtJ5Kv.js.map +0 -1
  688. package/.dist/esm/.mion/types/A0Qb_kibOHkN.js +0 -14
  689. package/.dist/esm/.mion/types/A0Qb_kibOHkN.js.map +0 -1
  690. package/.dist/esm/.mion/types/A0Qb_kz5ne4c.js +0 -16
  691. package/.dist/esm/.mion/types/A0Qb_kz5ne4c.js.map +0 -1
  692. package/.dist/esm/.mion/types/A0Qb_pzBRrJb.js +0 -16
  693. package/.dist/esm/.mion/types/A0Qb_pzBRrJb.js.map +0 -1
  694. package/.dist/esm/.mion/types/Eq2V_EYEglde.js +0 -16
  695. package/.dist/esm/.mion/types/Eq2V_EYEglde.js.map +0 -1
  696. package/.dist/esm/.mion/types/Eq2V_EyHLuYw.js +0 -16
  697. package/.dist/esm/.mion/types/Eq2V_EyHLuYw.js.map +0 -1
  698. package/.dist/esm/.mion/types/Eq2V_HSE8icr.js +0 -16
  699. package/.dist/esm/.mion/types/Eq2V_HSE8icr.js.map +0 -1
  700. package/.dist/esm/.mion/types/Eq2V_HXAy3Lx.js +0 -13
  701. package/.dist/esm/.mion/types/Eq2V_HXAy3Lx.js.map +0 -1
  702. package/.dist/esm/.mion/types/Eq2V_JJrCj9i.js +0 -13
  703. package/.dist/esm/.mion/types/Eq2V_JJrCj9i.js.map +0 -1
  704. package/.dist/esm/.mion/types/Eq2V_KDyf2Fa.js +0 -16
  705. package/.dist/esm/.mion/types/Eq2V_KDyf2Fa.js.map +0 -1
  706. package/.dist/esm/.mion/types/Eq2V_L3mQkaR.js +0 -13
  707. package/.dist/esm/.mion/types/Eq2V_L3mQkaR.js.map +0 -1
  708. package/.dist/esm/.mion/types/Eq2V_RAudOr2.js +0 -13
  709. package/.dist/esm/.mion/types/Eq2V_RAudOr2.js.map +0 -1
  710. package/.dist/esm/.mion/types/Eq2V_TRnIbow.js +0 -17
  711. package/.dist/esm/.mion/types/Eq2V_TRnIbow.js.map +0 -1
  712. package/.dist/esm/.mion/types/Eq2V_UOI3bXq.js +0 -17
  713. package/.dist/esm/.mion/types/Eq2V_UOI3bXq.js.map +0 -1
  714. package/.dist/esm/.mion/types/Eq2V_VsWxRKn.js +0 -13
  715. package/.dist/esm/.mion/types/Eq2V_VsWxRKn.js.map +0 -1
  716. package/.dist/esm/.mion/types/Eq2V_ZTKzxQG.js +0 -16
  717. package/.dist/esm/.mion/types/Eq2V_ZTKzxQG.js.map +0 -1
  718. package/.dist/esm/.mion/types/Eq2V_b4tYK8X.js +0 -16
  719. package/.dist/esm/.mion/types/Eq2V_b4tYK8X.js.map +0 -1
  720. package/.dist/esm/.mion/types/Eq2V_deFq9zY.js +0 -26
  721. package/.dist/esm/.mion/types/Eq2V_deFq9zY.js.map +0 -1
  722. package/.dist/esm/.mion/types/Eq2V_g17turq.js +0 -13
  723. package/.dist/esm/.mion/types/Eq2V_g17turq.js.map +0 -1
  724. package/.dist/esm/.mion/types/Eq2V_iKPrxW9.js +0 -16
  725. package/.dist/esm/.mion/types/Eq2V_iKPrxW9.js.map +0 -1
  726. package/.dist/esm/.mion/types/Eq2V_jLtJ5Kv.js +0 -16
  727. package/.dist/esm/.mion/types/Eq2V_jLtJ5Kv.js.map +0 -1
  728. package/.dist/esm/.mion/types/Eq2V_kz5ne4c.js +0 -16
  729. package/.dist/esm/.mion/types/Eq2V_kz5ne4c.js.map +0 -1
  730. package/.dist/esm/.mion/types/Eq2V_pzBRrJb.js +0 -16
  731. package/.dist/esm/.mion/types/Eq2V_pzBRrJb.js.map +0 -1
  732. package/.dist/esm/.mion/types/Ky89_D32xQCR.js +0 -16
  733. package/.dist/esm/.mion/types/Ky89_D32xQCR.js.map +0 -1
  734. package/.dist/esm/.mion/types/Ky89_D5PMNNO.js +0 -16
  735. package/.dist/esm/.mion/types/Ky89_D5PMNNO.js.map +0 -1
  736. package/.dist/esm/.mion/types/Ky89_E1CjDEA.js +0 -32
  737. package/.dist/esm/.mion/types/Ky89_E1CjDEA.js.map +0 -1
  738. package/.dist/esm/.mion/types/Ky89_EYEglde.js +0 -16
  739. package/.dist/esm/.mion/types/Ky89_EYEglde.js.map +0 -1
  740. package/.dist/esm/.mion/types/Ky89_EyHLuYw.js +0 -16
  741. package/.dist/esm/.mion/types/Ky89_EyHLuYw.js.map +0 -1
  742. package/.dist/esm/.mion/types/Ky89_G42dZdW.js +0 -16
  743. package/.dist/esm/.mion/types/Ky89_G42dZdW.js.map +0 -1
  744. package/.dist/esm/.mion/types/Ky89_HSE8icr.js +0 -16
  745. package/.dist/esm/.mion/types/Ky89_HSE8icr.js.map +0 -1
  746. package/.dist/esm/.mion/types/Ky89_JJrCj9i.js +0 -13
  747. package/.dist/esm/.mion/types/Ky89_JJrCj9i.js.map +0 -1
  748. package/.dist/esm/.mion/types/Ky89_KDyf2Fa.js +0 -16
  749. package/.dist/esm/.mion/types/Ky89_KDyf2Fa.js.map +0 -1
  750. package/.dist/esm/.mion/types/Ky89_L3mQkaR.js +0 -13
  751. package/.dist/esm/.mion/types/Ky89_L3mQkaR.js.map +0 -1
  752. package/.dist/esm/.mion/types/Ky89_RAudOr2.js +0 -13
  753. package/.dist/esm/.mion/types/Ky89_RAudOr2.js.map +0 -1
  754. package/.dist/esm/.mion/types/Ky89_TRnIbow.js +0 -13
  755. package/.dist/esm/.mion/types/Ky89_TRnIbow.js.map +0 -1
  756. package/.dist/esm/.mion/types/Ky89_UOI3bXq.js +0 -17
  757. package/.dist/esm/.mion/types/Ky89_UOI3bXq.js.map +0 -1
  758. package/.dist/esm/.mion/types/Ky89_ZTKzxQG.js +0 -16
  759. package/.dist/esm/.mion/types/Ky89_ZTKzxQG.js.map +0 -1
  760. package/.dist/esm/.mion/types/Ky89_b4tYK8X.js +0 -16
  761. package/.dist/esm/.mion/types/Ky89_b4tYK8X.js.map +0 -1
  762. package/.dist/esm/.mion/types/Ky89_deFq9zY.js +0 -26
  763. package/.dist/esm/.mion/types/Ky89_deFq9zY.js.map +0 -1
  764. package/.dist/esm/.mion/types/Ky89_fMIJ1JT.js +0 -13
  765. package/.dist/esm/.mion/types/Ky89_fMIJ1JT.js.map +0 -1
  766. package/.dist/esm/.mion/types/Ky89_g17turq.js +0 -13
  767. package/.dist/esm/.mion/types/Ky89_g17turq.js.map +0 -1
  768. package/.dist/esm/.mion/types/Ky89_hqa3Nzs.js +0 -14
  769. package/.dist/esm/.mion/types/Ky89_hqa3Nzs.js.map +0 -1
  770. package/.dist/esm/.mion/types/Ky89_iKPrxW9.js +0 -16
  771. package/.dist/esm/.mion/types/Ky89_iKPrxW9.js.map +0 -1
  772. package/.dist/esm/.mion/types/Ky89_jLtJ5Kv.js +0 -16
  773. package/.dist/esm/.mion/types/Ky89_jLtJ5Kv.js.map +0 -1
  774. package/.dist/esm/.mion/types/Ky89_kibOHkN.js +0 -13
  775. package/.dist/esm/.mion/types/Ky89_kibOHkN.js.map +0 -1
  776. package/.dist/esm/.mion/types/Ky89_kz5ne4c.js +0 -16
  777. package/.dist/esm/.mion/types/Ky89_kz5ne4c.js.map +0 -1
  778. package/.dist/esm/.mion/types/Ky89_pzBRrJb.js +0 -16
  779. package/.dist/esm/.mion/types/Ky89_pzBRrJb.js.map +0 -1
  780. package/.dist/esm/.mion/types/OBOg_D32xQCR.js +0 -23
  781. package/.dist/esm/.mion/types/OBOg_D32xQCR.js.map +0 -1
  782. package/.dist/esm/.mion/types/OBOg_D5PMNNO.js +0 -18
  783. package/.dist/esm/.mion/types/OBOg_D5PMNNO.js.map +0 -1
  784. package/.dist/esm/.mion/types/OBOg_E1CjDEA.js +0 -18
  785. package/.dist/esm/.mion/types/OBOg_E1CjDEA.js.map +0 -1
  786. package/.dist/esm/.mion/types/OBOg_G42dZdW.js +0 -18
  787. package/.dist/esm/.mion/types/OBOg_G42dZdW.js.map +0 -1
  788. package/.dist/esm/.mion/types/OBOg_LKYfhxm.js +0 -18
  789. package/.dist/esm/.mion/types/OBOg_LKYfhxm.js.map +0 -1
  790. package/.dist/esm/.mion/types/OBOg_fMIJ1JT.js +0 -18
  791. package/.dist/esm/.mion/types/OBOg_fMIJ1JT.js.map +0 -1
  792. package/.dist/esm/.mion/types/OBOg_g17turq.js +0 -17
  793. package/.dist/esm/.mion/types/OBOg_g17turq.js.map +0 -1
  794. package/.dist/esm/.mion/types/OBOg_hqa3Nzs.js +0 -17
  795. package/.dist/esm/.mion/types/OBOg_hqa3Nzs.js.map +0 -1
  796. package/.dist/esm/.mion/types/OBOg_kibOHkN.js +0 -17
  797. package/.dist/esm/.mion/types/OBOg_kibOHkN.js.map +0 -1
  798. package/.dist/esm/.mion/types/Xhuv_D32xQCR.js +0 -16
  799. package/.dist/esm/.mion/types/Xhuv_D32xQCR.js.map +0 -1
  800. package/.dist/esm/.mion/types/Xhuv_D5PMNNO.js +0 -16
  801. package/.dist/esm/.mion/types/Xhuv_D5PMNNO.js.map +0 -1
  802. package/.dist/esm/.mion/types/Xhuv_E1CjDEA.js +0 -29
  803. package/.dist/esm/.mion/types/Xhuv_E1CjDEA.js.map +0 -1
  804. package/.dist/esm/.mion/types/Xhuv_EYEglde.js +0 -16
  805. package/.dist/esm/.mion/types/Xhuv_EYEglde.js.map +0 -1
  806. package/.dist/esm/.mion/types/Xhuv_EyHLuYw.js +0 -16
  807. package/.dist/esm/.mion/types/Xhuv_EyHLuYw.js.map +0 -1
  808. package/.dist/esm/.mion/types/Xhuv_G42dZdW.js +0 -16
  809. package/.dist/esm/.mion/types/Xhuv_G42dZdW.js.map +0 -1
  810. package/.dist/esm/.mion/types/Xhuv_HSE8icr.js +0 -16
  811. package/.dist/esm/.mion/types/Xhuv_HSE8icr.js.map +0 -1
  812. package/.dist/esm/.mion/types/Xhuv_HXAy3Lx.js +0 -13
  813. package/.dist/esm/.mion/types/Xhuv_HXAy3Lx.js.map +0 -1
  814. package/.dist/esm/.mion/types/Xhuv_JJrCj9i.js +0 -13
  815. package/.dist/esm/.mion/types/Xhuv_JJrCj9i.js.map +0 -1
  816. package/.dist/esm/.mion/types/Xhuv_KDyf2Fa.js +0 -16
  817. package/.dist/esm/.mion/types/Xhuv_KDyf2Fa.js.map +0 -1
  818. package/.dist/esm/.mion/types/Xhuv_L3mQkaR.js +0 -13
  819. package/.dist/esm/.mion/types/Xhuv_L3mQkaR.js.map +0 -1
  820. package/.dist/esm/.mion/types/Xhuv_LKYfhxm.js +0 -13
  821. package/.dist/esm/.mion/types/Xhuv_LKYfhxm.js.map +0 -1
  822. package/.dist/esm/.mion/types/Xhuv_RAudOr2.js +0 -13
  823. package/.dist/esm/.mion/types/Xhuv_RAudOr2.js.map +0 -1
  824. package/.dist/esm/.mion/types/Xhuv_TRnIbow.js +0 -17
  825. package/.dist/esm/.mion/types/Xhuv_TRnIbow.js.map +0 -1
  826. package/.dist/esm/.mion/types/Xhuv_UOI3bXq.js +0 -17
  827. package/.dist/esm/.mion/types/Xhuv_UOI3bXq.js.map +0 -1
  828. package/.dist/esm/.mion/types/Xhuv_VsWxRKn.js +0 -13
  829. package/.dist/esm/.mion/types/Xhuv_VsWxRKn.js.map +0 -1
  830. package/.dist/esm/.mion/types/Xhuv_ZTKzxQG.js +0 -16
  831. package/.dist/esm/.mion/types/Xhuv_ZTKzxQG.js.map +0 -1
  832. package/.dist/esm/.mion/types/Xhuv_ZgsWs6s.js +0 -13
  833. package/.dist/esm/.mion/types/Xhuv_ZgsWs6s.js.map +0 -1
  834. package/.dist/esm/.mion/types/Xhuv_b4tYK8X.js +0 -16
  835. package/.dist/esm/.mion/types/Xhuv_b4tYK8X.js.map +0 -1
  836. package/.dist/esm/.mion/types/Xhuv_deFq9zY.js +0 -26
  837. package/.dist/esm/.mion/types/Xhuv_deFq9zY.js.map +0 -1
  838. package/.dist/esm/.mion/types/Xhuv_fMIJ1JT.js +0 -16
  839. package/.dist/esm/.mion/types/Xhuv_fMIJ1JT.js.map +0 -1
  840. package/.dist/esm/.mion/types/Xhuv_g17turq.js +0 -13
  841. package/.dist/esm/.mion/types/Xhuv_g17turq.js.map +0 -1
  842. package/.dist/esm/.mion/types/Xhuv_hqa3Nzs.js +0 -13
  843. package/.dist/esm/.mion/types/Xhuv_hqa3Nzs.js.map +0 -1
  844. package/.dist/esm/.mion/types/Xhuv_iKPrxW9.js +0 -16
  845. package/.dist/esm/.mion/types/Xhuv_iKPrxW9.js.map +0 -1
  846. package/.dist/esm/.mion/types/Xhuv_jLtJ5Kv.js +0 -16
  847. package/.dist/esm/.mion/types/Xhuv_jLtJ5Kv.js.map +0 -1
  848. package/.dist/esm/.mion/types/Xhuv_kibOHkN.js +0 -13
  849. package/.dist/esm/.mion/types/Xhuv_kibOHkN.js.map +0 -1
  850. package/.dist/esm/.mion/types/Xhuv_kz5ne4c.js +0 -16
  851. package/.dist/esm/.mion/types/Xhuv_kz5ne4c.js.map +0 -1
  852. package/.dist/esm/.mion/types/Xhuv_pzBRrJb.js +0 -16
  853. package/.dist/esm/.mion/types/Xhuv_pzBRrJb.js.map +0 -1
  854. package/.dist/esm/.mion/types/mzca_fMIJ1JT.js +0 -14
  855. package/.dist/esm/.mion/types/mzca_fMIJ1JT.js.map +0 -1
  856. package/.dist/esm/.mion/types/mzca_hqa3Nzs.js +0 -14
  857. package/.dist/esm/.mion/types/mzca_hqa3Nzs.js.map +0 -1
  858. package/.dist/esm/.mion/types/mzca_kibOHkN.js +0 -14
  859. package/.dist/esm/.mion/types/mzca_kibOHkN.js.map +0 -1
  860. package/.dist/esm/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.js +0 -14
  861. package/.dist/esm/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.js.map +0 -1
  862. package/.dist/esm/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.js +0 -14
  863. package/.dist/esm/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.js.map +0 -1
  864. package/.dist/esm/.mion/types/rt/shared/JQEexHbHMp.js +0 -467
  865. package/.dist/esm/.mion/types/rt/shared/JQEexHbHMp.js.map +0 -1
  866. package/.dist/esm/.mion/types/rt/shared/connsmWgsp.js.map +0 -1
@@ -10,6 +10,7 @@ function getRouterFatalErrorResponse(returnErr, respHeaders) {
10
10
  statusCode: returnErr.statusCode || StatusCodes.SERVER_ERROR,
11
11
  contentType: JSON_CONTENT_TYPE,
12
12
  hasErrors: true,
13
+ stopped: true,
13
14
  fatalError: returnErr,
14
15
  headers: respHeaders,
15
16
  body
@@ -23,7 +24,7 @@ function errorHeaderValue(type) {
23
24
  return HEADER_SAFE_TYPE.test(type) ? type : "unknown-error";
24
25
  }
25
26
  /** Marks the response as ended by `rpcError`: the error header (first error only), the status code,
26
- * `hasErrors` (what the dispatcher's skip rule reads) and `fatalError` (first one wins). Shared by the
27
+ * `hasErrors`, `stopped` (what the dispatcher's skip rule reads) and `fatalError` (first one wins). Shared by the
27
28
  * thrown path and a returned FatalError; where the error itself lands is the caller's decision.
28
29
  * `fallbackStatus` answers when the error carries no statusCode: a thrown one is unexpected (422), a
29
30
  * returned FatalError a declared application error (400). */
@@ -35,6 +36,14 @@ function markResponseFailed(context, rpcError, fallbackStatus) {
35
36
  }
36
37
  response.statusCode = rpcError.statusCode ?? fallbackStatus;
37
38
  response.hasErrors = true;
39
+ response.stopped = true;
40
+ }
41
+ /** Later members are skipped except `alwaysRun` ones, as after an error, but `hasErrors` stays false. */
42
+ function endChain(context, statusCode = StatusCodes.OK) {
43
+ const response = context.response;
44
+ if (response.stopped) return;
45
+ response.statusCode = statusCode;
46
+ response.stopped = true;
38
47
  }
39
48
  /** Whatever an adapter caught, as the mion error the wire carries. */
40
49
  function toRpcError(err) {
@@ -70,6 +79,6 @@ function hasThrownError(context, key) {
70
79
  return !!thrownErrors && Object.hasOwn(thrownErrors, key);
71
80
  }
72
81
  //#endregion
73
- export { addThrownError, errorHeaderValue, getRouterFatalErrorResponse, hasThrownError, markResponseFailed, recordUndeclaredError, toRpcError };
82
+ export { addThrownError, endChain, errorHeaderValue, getRouterFatalErrorResponse, hasThrownError, markResponseFailed, recordUndeclaredError, toRpcError };
74
83
 
75
84
  //# sourceMappingURL=dispatchError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatchError.js","names":[],"sources":["../../../../src/lib/dispatchError.ts"],"sourcesContent":["import {RpcError, FatalError, MION_ROUTES, Mutable, StatusCodes, markFatal} from '@mionjs/core';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport type {CallContext, MionHeaders, MionRequest, MionResponse, ResponseBody} from '../types/context.ts';\n\n/** The response for an error raised outside the router by any adapter; it goes in `@thrownErrors` like a route error. */\n\nexport function getRouterFatalErrorResponse(returnErr: RpcError<string>, respHeaders: MionHeaders): MionResponse {\n // a platform error ends the request before any handler runs, so it is fatal by definition\n markFatal(returnErr);\n const body: ResponseBody = {\n '@thrownErrors': {[MION_ROUTES.platformError]: returnErr},\n };\n respHeaders.set('x-rpc-error', errorHeaderValue(returnErr.type));\n const response: Mutable<MionResponse> = {\n statusCode: returnErr.statusCode || StatusCodes.SERVER_ERROR, // Global errors are always unexpected\n contentType: JSON_CONTENT_TYPE,\n hasErrors: true,\n fatalError: returnErr,\n headers: respHeaders,\n body,\n };\n return response;\n}\n\n/** An app-thrown RpcError may carry any string as its `type`, and a CR or LF there is header injection on\n * adapters that write headers unchecked (or an ERR_INVALID_CHAR throw on node). Anything outside the token\n * alphabet reports as `unknown-error` on the header; the body still carries the full type. */\nconst HEADER_SAFE_TYPE = /^[A-Za-z0-9_.:@-]{1,128}$/;\nexport function errorHeaderValue(type: string): string {\n return HEADER_SAFE_TYPE.test(type) ? type : 'unknown-error';\n}\n\n/** Marks the response as ended by `rpcError`: the error header (first error only), the status code,\n * `hasErrors` (what the dispatcher's skip rule reads) and `fatalError` (first one wins). Shared by the\n * thrown path and a returned FatalError; where the error itself lands is the caller's decision.\n * `fallbackStatus` answers when the error carries no statusCode: a thrown one is unexpected (422), a\n * returned FatalError a declared application error (400). */\nexport function markResponseFailed(context: CallContext, rpcError: RpcError<string>, fallbackStatus: number) {\n const response = context.response as Mutable<MionResponse>;\n if (!response.hasErrors) {\n response.headers.set('x-rpc-error', errorHeaderValue(rpcError.type));\n response.fatalError = rpcError;\n }\n response.statusCode = rpcError.statusCode ?? fallbackStatus;\n response.hasErrors = true;\n}\n\n/** Whatever an adapter caught, as the mion error the wire carries. */\nexport function toRpcError(err: unknown): RpcError<string> {\n return err instanceof RpcError\n ? err\n : new FatalError({publicMessage: 'Unknown Error', type: 'unknown-error', originalError: err as Error});\n}\n\n/** Records an undeclared error under `key` and ends the request: it lands in `@thrownErrors` untyped, sets\n * the status and the error header, and stops every later member that does not declare `alwaysRun`.\n * Undeclared means thrown, or returned by a raw middleware, which cannot declare a return type; a declared\n * error is returned from a handler and goes straight into `response.body`. The key is normally the member\n * that failed; an adapter passes its own (`mion@platformError`) for a request no member could run. */\nexport function recordUndeclaredError(context: CallContext, key: string, err: any) {\n const rpcError: RpcError<string> = markFatal(\n err instanceof RpcError\n ? err\n : new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n publicMessage: `Unknown error in handler \"${key}\" of route ExecutionChain.`,\n originalError: err,\n type: 'unknown-error',\n })\n );\n markResponseFailed(context, rpcError, StatusCodes.UNEXPECTED_ERROR);\n addThrownError(context, key, rpcError);\n}\n\n/** Unlike recordUndeclaredError, does not end the request. */\nexport function addThrownError(context: CallContext, key: string, rpcError: RpcError<string>) {\n // tsgo types `readonly || mutable` as readonly, so casting only the `{}` fallback still forbids the write.\n const thrownErrors = (context.request.thrownErrors || {}) as Record<string, RpcError<string>>;\n thrownErrors[key] = rpcError;\n (context.request as Mutable<MionRequest>).thrownErrors = thrownErrors;\n}\n\nexport function hasThrownError(context: CallContext, key: string): boolean {\n const thrownErrors = context.request.thrownErrors;\n return !!thrownErrors && Object.hasOwn(thrownErrors, key);\n}\n"],"mappings":";;;;AAMA,SAAgB,4BAA4B,WAA6B,aAAwC;CAE/G,UAAU,SAAS;CACnB,MAAM,OAAqB,EACzB,iBAAiB,GAAE,YAAY,gBAAgB,UAAS,EAC1D;CACA,YAAY,IAAI,eAAe,iBAAiB,UAAU,IAAI,CAAC;CAS/D,OAAO;EAPL,YAAY,UAAU,cAAc,YAAY;EAChD,aAAa;EACb,WAAW;EACX,YAAY;EACZ,SAAS;EACT;CAEK;AACT;;;;AAKA,IAAM,mBAAmB;AACzB,SAAgB,iBAAiB,MAAsB;CACrD,OAAO,iBAAiB,KAAK,IAAI,IAAI,OAAO;AAC9C;;;;;;AAOA,SAAgB,mBAAmB,SAAsB,UAA4B,gBAAwB;CAC3G,MAAM,WAAW,QAAQ;CACzB,IAAI,CAAC,SAAS,WAAW;EACvB,SAAS,QAAQ,IAAI,eAAe,iBAAiB,SAAS,IAAI,CAAC;EACnE,SAAS,aAAa;CACxB;CACA,SAAS,aAAa,SAAS,cAAc;CAC7C,SAAS,YAAY;AACvB;;AAGA,SAAgB,WAAW,KAAgC;CACzD,OAAO,eAAe,WAClB,MACA,IAAI,WAAW;EAAC,eAAe;EAAiB,MAAM;EAAiB,eAAe;CAAY,CAAC;AACzG;;;;;;AAOA,SAAgB,sBAAsB,SAAsB,KAAa,KAAU;CACjF,MAAM,WAA6B,UACjC,eAAe,WACX,MACA,IAAI,WAAW;EACb,YAAY,YAAY;EACxB,eAAe,6BAA6B,IAAI;EAChD,eAAe;EACf,MAAM;CACR,CAAC,CACP;CACA,mBAAmB,SAAS,UAAU,YAAY,gBAAgB;CAClE,eAAe,SAAS,KAAK,QAAQ;AACvC;;AAGA,SAAgB,eAAe,SAAsB,KAAa,UAA4B;CAE5F,MAAM,eAAgB,QAAQ,QAAQ,gBAAgB,CAAC;CACvD,aAAa,OAAO;CACpB,QAAS,QAAiC,eAAe;AAC3D;AAEA,SAAgB,eAAe,SAAsB,KAAsB;CACzE,MAAM,eAAe,QAAQ,QAAQ;CACrC,OAAO,CAAC,CAAC,gBAAgB,OAAO,OAAO,cAAc,GAAG;AAC1D"}
1
+ {"version":3,"file":"dispatchError.js","names":[],"sources":["../../../../src/lib/dispatchError.ts"],"sourcesContent":["import {RpcError, FatalError, MION_ROUTES, Mutable, StatusCodes, markFatal} from '@mionjs/core';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport type {CallContext, MionResponse, MionHeaders, MionRequest, ResponseBody} from '../types/context.ts';\n\n/** The response for an error raised outside the router by any adapter; it goes in `@thrownErrors` like a route error. */\n\nexport function getRouterFatalErrorResponse(returnErr: RpcError<string>, respHeaders: MionHeaders): MionResponse {\n // a platform error ends the request before any handler runs, so it is fatal by definition\n markFatal(returnErr);\n const body: ResponseBody = {\n '@thrownErrors': {[MION_ROUTES.platformError]: returnErr},\n };\n respHeaders.set('x-rpc-error', errorHeaderValue(returnErr.type));\n const response: Mutable<MionResponse> = {\n statusCode: returnErr.statusCode || StatusCodes.SERVER_ERROR, // Global errors are always unexpected\n contentType: JSON_CONTENT_TYPE,\n hasErrors: true,\n stopped: true,\n fatalError: returnErr,\n headers: respHeaders,\n body,\n };\n return response;\n}\n\n/** An app-thrown RpcError may carry any string as its `type`, and a CR or LF there is header injection on\n * adapters that write headers unchecked (or an ERR_INVALID_CHAR throw on node). Anything outside the token\n * alphabet reports as `unknown-error` on the header; the body still carries the full type. */\nconst HEADER_SAFE_TYPE = /^[A-Za-z0-9_.:@-]{1,128}$/;\nexport function errorHeaderValue(type: string): string {\n return HEADER_SAFE_TYPE.test(type) ? type : 'unknown-error';\n}\n\n/** Marks the response as ended by `rpcError`: the error header (first error only), the status code,\n * `hasErrors`, `stopped` (what the dispatcher's skip rule reads) and `fatalError` (first one wins). Shared by the\n * thrown path and a returned FatalError; where the error itself lands is the caller's decision.\n * `fallbackStatus` answers when the error carries no statusCode: a thrown one is unexpected (422), a\n * returned FatalError a declared application error (400). */\nexport function markResponseFailed(context: CallContext, rpcError: RpcError<string>, fallbackStatus: number) {\n const response = context.response as Mutable<MionResponse>;\n if (!response.hasErrors) {\n response.headers.set('x-rpc-error', errorHeaderValue(rpcError.type));\n response.fatalError = rpcError;\n }\n response.statusCode = rpcError.statusCode ?? fallbackStatus;\n response.hasErrors = true;\n response.stopped = true;\n}\n\n/** Later members are skipped except `alwaysRun` ones, as after an error, but `hasErrors` stays false. */\nexport function endChain(context: CallContext, statusCode: number = StatusCodes.OK): void {\n const response = context.response as Mutable<MionResponse>;\n if (response.stopped) return;\n response.statusCode = statusCode;\n response.stopped = true;\n}\n\n/** Whatever an adapter caught, as the mion error the wire carries. */\nexport function toRpcError(err: unknown): RpcError<string> {\n return err instanceof RpcError\n ? err\n : new FatalError({publicMessage: 'Unknown Error', type: 'unknown-error', originalError: err as Error});\n}\n\n/** Records an undeclared error under `key` and ends the request: it lands in `@thrownErrors` untyped, sets\n * the status and the error header, and stops every later member that does not declare `alwaysRun`.\n * Undeclared means thrown, or returned by a raw middleware, which cannot declare a return type; a declared\n * error is returned from a handler and goes straight into `response.body`. The key is normally the member\n * that failed; an adapter passes its own (`mion@platformError`) for a request no member could run. */\nexport function recordUndeclaredError(context: CallContext, key: string, err: any) {\n const rpcError: RpcError<string> = markFatal(\n err instanceof RpcError\n ? err\n : new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n publicMessage: `Unknown error in handler \"${key}\" of route ExecutionChain.`,\n originalError: err,\n type: 'unknown-error',\n })\n );\n markResponseFailed(context, rpcError, StatusCodes.UNEXPECTED_ERROR);\n addThrownError(context, key, rpcError);\n}\n\n/** Unlike recordUndeclaredError, does not end the request. */\nexport function addThrownError(context: CallContext, key: string, rpcError: RpcError<string>) {\n // tsgo types `readonly || mutable` as readonly, so casting only the `{}` fallback still forbids the write.\n const thrownErrors = (context.request.thrownErrors || {}) as Record<string, RpcError<string>>;\n thrownErrors[key] = rpcError;\n (context.request as Mutable<MionRequest>).thrownErrors = thrownErrors;\n}\n\nexport function hasThrownError(context: CallContext, key: string): boolean {\n const thrownErrors = context.request.thrownErrors;\n return !!thrownErrors && Object.hasOwn(thrownErrors, key);\n}\n"],"mappings":";;;;AAMA,SAAgB,4BAA4B,WAA6B,aAAwC;CAE/G,UAAU,SAAS;CACnB,MAAM,OAAqB,EACzB,iBAAiB,GAAE,YAAY,gBAAgB,UAAS,EAC1D;CACA,YAAY,IAAI,eAAe,iBAAiB,UAAU,IAAI,CAAC;CAU/D,OAAO;EARL,YAAY,UAAU,cAAc,YAAY;EAChD,aAAa;EACb,WAAW;EACX,SAAS;EACT,YAAY;EACZ,SAAS;EACT;CAEK;AACT;;;;AAKA,IAAM,mBAAmB;AACzB,SAAgB,iBAAiB,MAAsB;CACrD,OAAO,iBAAiB,KAAK,IAAI,IAAI,OAAO;AAC9C;;;;;;AAOA,SAAgB,mBAAmB,SAAsB,UAA4B,gBAAwB;CAC3G,MAAM,WAAW,QAAQ;CACzB,IAAI,CAAC,SAAS,WAAW;EACvB,SAAS,QAAQ,IAAI,eAAe,iBAAiB,SAAS,IAAI,CAAC;EACnE,SAAS,aAAa;CACxB;CACA,SAAS,aAAa,SAAS,cAAc;CAC7C,SAAS,YAAY;CACrB,SAAS,UAAU;AACrB;;AAGA,SAAgB,SAAS,SAAsB,aAAqB,YAAY,IAAU;CACxF,MAAM,WAAW,QAAQ;CACzB,IAAI,SAAS,SAAS;CACtB,SAAS,aAAa;CACtB,SAAS,UAAU;AACrB;;AAGA,SAAgB,WAAW,KAAgC;CACzD,OAAO,eAAe,WAClB,MACA,IAAI,WAAW;EAAC,eAAe;EAAiB,MAAM;EAAiB,eAAe;CAAY,CAAC;AACzG;;;;;;AAOA,SAAgB,sBAAsB,SAAsB,KAAa,KAAU;CACjF,MAAM,WAA6B,UACjC,eAAe,WACX,MACA,IAAI,WAAW;EACb,YAAY,YAAY;EACxB,eAAe,6BAA6B,IAAI;EAChD,eAAe;EACf,MAAM;CACR,CAAC,CACP;CACA,mBAAmB,SAAS,UAAU,YAAY,gBAAgB;CAClE,eAAe,SAAS,KAAK,QAAQ;AACvC;;AAGA,SAAgB,eAAe,SAAsB,KAAa,UAA4B;CAE5F,MAAM,eAAgB,QAAQ,QAAQ,gBAAgB,CAAC;CACvD,aAAa,OAAO;CACpB,QAAS,QAAiC,eAAe;AAC3D;AAEA,SAAgB,eAAe,SAAsB,KAAsB;CACzE,MAAM,eAAe,QAAQ,QAAQ;CACrC,OAAO,CAAC,CAAC,gBAAgB,OAAO,OAAO,cAAc,GAAG;AAC1D"}
@@ -1,11 +1,11 @@
1
1
  import { HeadersMiddlewareHelper, MiddlewareHelper, RawMiddlewareHelper, RouteHelper, RouterOptionsInput } from '../types/mionRouter.ts';
2
2
  import { CallContext } from '../types/context.ts';
3
3
  export declare const route: RouteHelper<RouterOptionsInput>;
4
- export declare const query: RouteHelper<Partial<import('../types/general.ts').RouterOptions<any, any>>, false>;
5
- export declare const mutation: RouteHelper<Partial<import('../types/general.ts').RouterOptions<any, any>>, true>;
4
+ export declare const query: RouteHelper<Partial<import('../types/general.ts').RouterOptions<any, any>>, object, false>;
5
+ export declare const mutation: RouteHelper<Partial<import('../types/general.ts').RouterOptions<any, any>>, object, true>;
6
6
  export declare const middleware: MiddlewareHelper<RouterOptionsInput>;
7
7
  export declare const headersMiddleware: HeadersMiddlewareHelper<RouterOptionsInput>;
8
- export declare const rawMiddleware: RawMiddlewareHelper<RouterOptionsInput>;
8
+ export declare const rawMiddleware: RawMiddlewareHelper;
9
9
  type OnEveryCall = (ctx: CallContext) => void;
10
10
  export declare function markOnDemand<Def extends object>(def: Def, onEveryCall?: OnEveryCall): Def;
11
11
  export declare function isOnDemandMiddleware(def: object): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","names":[],"sources":["../../../../src/lib/handlers.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {HandlerType, MION_ROUTES} from '@mionjs/core';\nimport type {\n HeadersMiddlewareHelper,\n MiddlewareHelper,\n PinnedMutation,\n RawMiddlewareHelper,\n RouteHelper,\n RouterOptionsInput,\n} from '../types/mionRouter.ts';\nimport type {CallContext} from '../types/context.ts';\n\n// ############# Route & Middlewares initialization (INTERNAL) #############\n// These bodies initialize the definition objects AND are the mion injection points: the trailing marker\n// params are filled at BUILD TIME by @mionjs/devtools. Not exported from the package, consumers reach\n// them as the closures `createMionRouter()` returns; only mion's own middlewares and its error / serializer routes\n// call them directly, each pinning its own `encoder`.\n// ⚠️ There is NO signature here on purpose: each body is TYPED BY its helper interface in\n// types/mionRouter.ts, the one place a helper signature is written, so there is no second surface to keep\n// in step. `RouterOptionsInput` is the widest options shape; `createMionRouter` narrows each helper to\n// its own `O` so a declaration reads the factory's options.\n\nexport const route: RouteHelper<RouterOptionsInput> = (\n handler,\n opts,\n paramsFns,\n returnFns,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.route,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n});\n\n/** Typed as the same helper as `route()`, so both keep the marker signature the scanner reads at the call site. */\nfunction routeWithMutation<M extends boolean>(isMutation: M): RouteHelper<RouterOptionsInput, M> {\n return (handler, opts, paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId) => ({\n type: HandlerType.route,\n handler,\n options: {...opts, isMutation} as PinnedMutation<typeof opts & object, M>,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n });\n}\n\n/** Route handler for read-only queries. Uses GET with ?data=base64url on the client when payload fits. */\nexport const query = routeWithMutation(false);\n\nexport const mutation = routeWithMutation(true);\n\nexport const middleware: MiddlewareHelper<RouterOptionsInput> = (\n handler,\n opts,\n paramsFns,\n returnFns,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.middleware,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n});\n\nexport const headersMiddleware: HeadersMiddlewareHelper<RouterOptionsInput> = (\n handler,\n opts,\n headersFns,\n paramsFns,\n returnFns,\n headersId,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.headersMiddleware,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId, headersFns, headersId},\n});\n\nexport const rawMiddleware: RawMiddlewareHelper<RouterOptionsInput> = (handler, opts) => ({\n type: HandlerType.rawMiddleware,\n handler,\n options: opts,\n});\n\n/** Each on-demand middleware, with what it does on every call even without its slot. */\nconst onDemandMiddlewares = new WeakMap<object, OnEveryCall | undefined>();\ntype OnEveryCall = (ctx: CallContext) => void;\n\n/** Internal: the middleware runs only when the request body carries its slot, so an absent slot costs nothing */\nexport function markOnDemand<Def extends object>(def: Def, onEveryCall?: OnEveryCall): Def {\n onDemandMiddlewares.set(def, onEveryCall);\n return def;\n}\n\nexport function isOnDemandMiddleware(def: object): boolean {\n return onDemandMiddlewares.has(def);\n}\n\nexport function getOnEveryCall(def: object): OnEveryCall | undefined {\n return onDemandMiddlewares.get(def);\n}\n\n/** mion's own ids, never exposed to clients */\nexport const mionInternalRouteIds: ReadonlySet<string> = new Set(Object.values(MION_ROUTES));\n"],"mappings":";;AA4BA,IAAa,SACX,SACA,MACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;CAAM;AACrE;;AAGA,SAAS,kBAAqC,YAAmD;CAC/F,QAAQ,SAAS,MAAM,WAAW,WAAW,UAAU,UAAU,WAAW,YAAY;EACtF,MAAM,YAAY;EAClB;EACA,SAAS;GAAC,GAAG;GAAM;EAAU;EAC7B,OAAO;GAAC;GAAW;GAAW;GAAU;GAAU;GAAW;EAAM;CACrE;AACF;;AAGA,IAAa,QAAQ,kBAAkB,KAAK;AAE5C,IAAa,WAAW,kBAAkB,IAAI;AAE9C,IAAa,cACX,SACA,MACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;CAAM;AACrE;AAEA,IAAa,qBACX,SACA,MACA,YACA,WACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;EAAQ;EAAY;CAAS;AAC5F;AAEA,IAAa,iBAA0D,SAAS,UAAU;CACxF,MAAM,YAAY;CAClB;CACA,SAAS;AACX;;AAGA,IAAM,sCAAsB,IAAI,QAAyC;;AAIzE,SAAgB,aAAiC,KAAU,aAAgC;CACzF,oBAAoB,IAAI,KAAK,WAAW;CACxC,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAsB;CACzD,OAAO,oBAAoB,IAAI,GAAG;AACpC;AAEA,SAAgB,eAAe,KAAsC;CACnE,OAAO,oBAAoB,IAAI,GAAG;AACpC;;AAGA,IAAa,uBAA4C,IAAI,IAAI,OAAO,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"handlers.js","names":[],"sources":["../../../../src/lib/handlers.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {HandlerType, MION_ROUTES} from '@mionjs/core';\nimport type {\n HeadersMiddlewareHelper,\n MiddlewareHelper,\n PinnedMutation,\n RawMiddlewareHelper,\n RouteHelper,\n RouterOptionsInput,\n} from '../types/mionRouter.ts';\n\nimport type {CallContext} from '../types/context.ts';\n\n// ############# Route & Middlewares initialization (INTERNAL) #############\n// These bodies initialize the definition objects AND are the mion injection points: the trailing marker\n// params are filled at BUILD TIME by @mionjs/devtools. Not exported from the package, consumers reach\n// them as the closures `createMionRouter()` returns; only mion's own middlewares and its error / serializer routes\n// call them directly, each pinning its own `encoder`.\n// ⚠️ There is NO signature here on purpose: each body is TYPED BY its helper interface in\n// types/mionRouter.ts, the one place a helper signature is written, so there is no second surface to keep\n// in step. The router factory narrows each `RouterOptionsInput` helper to its own `O` and `T`.\n\nexport const route: RouteHelper<RouterOptionsInput> = (\n handler,\n opts,\n paramsFns,\n returnFns,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.route,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n});\n\n/** Typed as the same helper as `route()`, so both keep the marker signature the scanner reads at the call site. */\nfunction routeWithMutation<M extends boolean>(isMutation: M): RouteHelper<RouterOptionsInput, object, M> {\n return (handler, opts, paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId) => ({\n type: HandlerType.route,\n handler,\n options: {...opts, isMutation} as PinnedMutation<typeof opts & object, M>,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n });\n}\n\n/** Route handler for read-only queries. Uses GET with ?data=base64url on the client when payload fits. */\nexport const query = routeWithMutation(false);\n\nexport const mutation = routeWithMutation(true);\n\nexport const middleware: MiddlewareHelper<RouterOptionsInput> = (\n handler,\n opts,\n paramsFns,\n returnFns,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.middleware,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId},\n});\n\nexport const headersMiddleware: HeadersMiddlewareHelper<RouterOptionsInput> = (\n handler,\n opts,\n headersFns,\n paramsFns,\n returnFns,\n headersId,\n paramsId,\n returnId,\n isAsyncId,\n syncId\n) => ({\n type: HandlerType.headersMiddleware,\n handler,\n options: opts,\n rtFns: {paramsFns, returnFns, paramsId, returnId, isAsyncId, syncId, headersFns, headersId},\n});\n\nexport const rawMiddleware: RawMiddlewareHelper = (handler, opts) => ({\n type: HandlerType.rawMiddleware,\n handler,\n options: opts,\n});\n\n/** Each on-demand middleware, with what it does on every call even without its slot. */\nconst onDemandMiddlewares = new WeakMap<object, OnEveryCall | undefined>();\ntype OnEveryCall = (ctx: CallContext) => void;\n\n/** Internal: the middleware runs only when the request body carries its slot, so an absent slot costs nothing */\nexport function markOnDemand<Def extends object>(def: Def, onEveryCall?: OnEveryCall): Def {\n onDemandMiddlewares.set(def, onEveryCall);\n return def;\n}\n\nexport function isOnDemandMiddleware(def: object): boolean {\n return onDemandMiddlewares.has(def);\n}\n\nexport function getOnEveryCall(def: object): OnEveryCall | undefined {\n return onDemandMiddlewares.get(def);\n}\n\n/** mion's own ids, never exposed to clients */\nexport const mionInternalRouteIds: ReadonlySet<string> = new Set(Object.values(MION_ROUTES));\n"],"mappings":";;AA4BA,IAAa,SACX,SACA,MACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;CAAM;AACrE;;AAGA,SAAS,kBAAqC,YAA2D;CACvG,QAAQ,SAAS,MAAM,WAAW,WAAW,UAAU,UAAU,WAAW,YAAY;EACtF,MAAM,YAAY;EAClB;EACA,SAAS;GAAC,GAAG;GAAM;EAAU;EAC7B,OAAO;GAAC;GAAW;GAAW;GAAU;GAAU;GAAW;EAAM;CACrE;AACF;;AAGA,IAAa,QAAQ,kBAAkB,KAAK;AAE5C,IAAa,WAAW,kBAAkB,IAAI;AAE9C,IAAa,cACX,SACA,MACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;CAAM;AACrE;AAEA,IAAa,qBACX,SACA,MACA,YACA,WACA,WACA,WACA,UACA,UACA,WACA,YACI;CACJ,MAAM,YAAY;CAClB;CACA,SAAS;CACT,OAAO;EAAC;EAAW;EAAW;EAAU;EAAU;EAAW;EAAQ;EAAY;CAAS;AAC5F;AAEA,IAAa,iBAAsC,SAAS,UAAU;CACpE,MAAM,YAAY;CAClB;CACA,SAAS;AACX;;AAGA,IAAM,sCAAsB,IAAI,QAAyC;;AAIzE,SAAgB,aAAiC,KAAU,aAAgC;CACzF,oBAAoB,IAAI,KAAK,WAAW;CACxC,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAsB;CACzD,OAAO,oBAAoB,IAAI,GAAG;AACpC;AAEA,SAAgB,eAAe,KAAsC;CACnE,OAAO,oBAAoB,IAAI,GAAG;AACpC;;AAGA,IAAa,uBAA4C,IAAI,IAAI,OAAO,OAAO,WAAW,CAAC"}
@@ -16,9 +16,11 @@ declare class MionHeadersImpl implements MionHeaders {
16
16
  export declare class RecordResponseHeaders extends MionHeadersImpl implements PooledHeaders {
17
17
  readonly defaults: ResponseDefaults;
18
18
  constructor(defaults: ResponseDefaults);
19
+ set(name: string, value: string): void;
19
20
  append(name: string, value: string): void;
20
21
  forEach(visit: (name: string, value: string | string[]) => void): void;
21
22
  }
23
+ export declare function assertHeaderSafe(name: string, value: string): void;
22
24
  export declare class FetchResponseHeaders implements PooledHeaders {
23
25
  readonly defaults: ResponseDefaults;
24
26
  readonly native: import('undici-types').Headers;
@@ -53,8 +53,14 @@ var RecordResponseHeaders = class extends MionHeadersImpl {
53
53
  super({ ...defaults });
54
54
  this.defaults = defaults;
55
55
  }
56
+ /** Refuses what fetch `Headers` refuses: uws and aws write a header record as it is, unchecked. */
57
+ set(name, value) {
58
+ assertHeaderSafe(name, value);
59
+ super.set(name, value);
60
+ }
56
61
  /** Keeps a repeated name's values apart, never joined: the adapter writes them its own way. */
57
62
  append(name, value) {
63
+ assertHeaderSafe(name, value);
58
64
  this.unused = false;
59
65
  const key = name.toLowerCase();
60
66
  if (key === PROTO_KEY) return;
@@ -68,6 +74,18 @@ var RecordResponseHeaders = class extends MionHeadersImpl {
68
74
  for (const name in this.headers) visit(name, this.headers[name]);
69
75
  }
70
76
  };
77
+ /** CR or LF splits the response (header injection); NUL ends it early on some hosts.
78
+ * The value stays out of the error: it may be what an attacker sent. */
79
+ function assertHeaderSafe(name, value) {
80
+ if (hasControlBreak(name) || hasControlBreak(value)) throw new TypeError(`Invalid header ${JSON.stringify(name.slice(0, 64))}: CR, LF or NUL`);
81
+ }
82
+ function hasControlBreak(text) {
83
+ for (let i = 0; i < text.length; i++) {
84
+ const code = text.charCodeAt(i);
85
+ if (code === 13 || code === 10 || code === 0) return true;
86
+ }
87
+ return false;
88
+ }
71
89
  /** The response headers of the fetch adapters (bun, cloudflare, vercel). */
72
90
  var FetchResponseHeaders = class {
73
91
  defaults;
@@ -169,6 +187,6 @@ function parseHeaders(headersObj, skipToLower = false) {
169
187
  return headers;
170
188
  }
171
189
  //#endregion
172
- export { FetchResponseHeaders, RecordResponseHeaders, getDefaultFetchHeaders, getDefaultHeaders, headersFromRecord, releaseHeaders, replyFetch };
190
+ export { FetchResponseHeaders, RecordResponseHeaders, assertHeaderSafe, getDefaultFetchHeaders, getDefaultHeaders, headersFromRecord, releaseHeaders, replyFetch };
173
191
 
174
192
  //# sourceMappingURL=headers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","names":[],"sources":["../../../../src/lib/headers.ts"],"sourcesContent":["/* ########\n * 2022 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MionHeaders, MionResponse, PooledHeaders, ResponseDefaults} from '../types/context.ts';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport {getResponseDefaults} from '../router.ts';\n\n// ############# PUBLIC METHODS #############\n\n// an array for a name appended twice on response headers (node's request record may hold one too)\ntype HeadersRecord = Record<string, string | string[]>;\n\nconst PROTO_KEY = '__proto__';\n\n/** Case-insensitive HTTP headers, like the fetch Headers API but optimized for performance.\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers */\nclass MionHeadersImpl implements MionHeaders {\n // The record may be a plain object handed over by the platform (node's IncomingMessage.headers is one),\n // where `constructor` or `toString` would be \"found\" on the prototype chain. A prototype hit is never a\n // string, so a read checks the VALUE's type: cheaper than an own-key check per read (14 vs 23 ns).\n // `__proto__` is never written: on a plain object that assignment swaps the prototype.\n /** Read by the response headers pool only; request headers ignore it. */\n unused = true;\n\n constructor(protected headers: HeadersRecord) {}\n\n append(name: string, value: string): void {\n this.unused = false;\n const nl = name.toLowerCase();\n if (nl === PROTO_KEY) return;\n const existing = readHeader(this.headers, nl);\n const headerValue = toSingleHeader(value);\n if (existing) {\n this.headers[nl] = `${existing}, ${headerValue}`;\n } else {\n this.headers[nl] = headerValue;\n }\n }\n\n delete(name: string): void {\n this.unused = false;\n delete this.headers[name.toLowerCase()];\n }\n\n get(name: string): string | undefined | null {\n return readHeader(this.headers, name.toLowerCase());\n }\n\n set(name: string, value: string): void {\n this.unused = false;\n const ln = name.toLowerCase();\n if (ln === PROTO_KEY) return;\n this.headers[ln] = value as string;\n }\n\n has(name: string): boolean {\n return !!readHeader(this.headers, name.toLowerCase());\n }\n\n entries(): IterableIterator<[string, string]> {\n return Object.entries(this.headers)\n .map(([name, value]): [string, string] => [name, joined(value)])\n .values();\n }\n\n keys(): IterableIterator<string> {\n return new Map(Object.entries(this.headers)).keys();\n }\n\n values(): IterableIterator<string> {\n return Object.values(this.headers).map(joined).values();\n }\n}\n\n/** Response headers over a copy of the defaults, for an adapter that answers from a header record (uws, aws). */\nexport class RecordResponseHeaders extends MionHeadersImpl implements PooledHeaders {\n constructor(readonly defaults: ResponseDefaults) {\n super({...defaults});\n }\n\n /** Keeps a repeated name's values apart, never joined: the adapter writes them its own way. */\n append(name: string, value: string): void {\n this.unused = false;\n const key = name.toLowerCase();\n if (key === PROTO_KEY) return;\n const current = this.headers[key] as unknown;\n // an empty earlier value counts as absent, and so does a prototype hit such as `constructor`\n if (Array.isArray(current)) current.push(value);\n else if (typeof current === 'string' && current) this.headers[key] = [current, value];\n else this.headers[key] = value;\n }\n\n /** Walks the headers with no pair array per header; a repeated name gives its values apart. */\n forEach(visit: (name: string, value: string | string[]) => void): void {\n for (const name in this.headers) visit(name, this.headers[name]);\n }\n}\n\n/** The response headers of the fetch adapters (bun, cloudflare, vercel). */\nexport class FetchResponseHeaders implements PooledHeaders {\n /** What the reply hands to `Response`, which copies it. */\n readonly native = new Headers();\n unused = true;\n\n constructor(readonly defaults: ResponseDefaults) {\n // one set per name beats building from a record\n for (const name in defaults) this.native.set(name, defaults[name]);\n }\n\n set(name: string, value: string): void {\n this.unused = false;\n this.native.set(name, value);\n }\n append(name: string, value: string): void {\n this.unused = false;\n this.native.append(name, value);\n }\n delete(name: string): void {\n this.unused = false;\n this.native.delete(name);\n }\n get(name: string): string | null {\n return this.native.get(name);\n }\n has(name: string): boolean {\n return this.native.has(name);\n }\n entries(): IterableIterator<[string, string]> {\n return this.native.entries();\n }\n keys(): IterableIterator<string> {\n return this.native.keys();\n }\n values(): IterableIterator<string> {\n return this.native.values();\n }\n}\n\n// Pools of unwritten response headers: one serves exactly one request and comes back only if still unused.\nconst MAX_UNUSED_HEADERS = 256;\nconst unusedRecordHeaders: RecordResponseHeaders[] = [];\nconst unusedFetchHeaders: FetchResponseHeaders[] = [];\nconst newRecordHeaders = (defaults: ResponseDefaults) => new RecordResponseHeaders(defaults);\nconst newFetchHeaders = (defaults: ResponseDefaults) => new FetchResponseHeaders(defaults);\n\n/** Response headers holding the defaults and nothing else, from the pool or new. */\nexport const getDefaultHeaders = (): RecordResponseHeaders => takeUnused(unusedRecordHeaders, newRecordHeaders);\n\n/** Like `getDefaultHeaders`, over a native `Headers` for the fetch adapters. */\nexport const getDefaultFetchHeaders = (): FetchResponseHeaders => takeUnused(unusedFetchHeaders, newFetchHeaders);\n\n/** Gives headers back once the reply is sent; written ones are dropped. */\nexport const releaseHeaders = (headers: RecordResponseHeaders): void => giveBackUnused(unusedRecordHeaders, headers);\n\nfunction takeUnused<Pooled extends PooledHeaders>(pool: Pooled[], create: (defaults: ResponseDefaults) => Pooled): Pooled {\n const defaults = getResponseDefaults();\n const headers = pool.pop();\n if (headers?.defaults === defaults) return headers;\n // the router restarted: pooled headers carry the old defaults\n pool.length = 0;\n return create(defaults);\n}\n\nfunction giveBackUnused<Pooled extends PooledHeaders>(pool: Pooled[], headers: Pooled): void {\n if (headers.unused && pool.length < MAX_UNUSED_HEADERS) pool.push(headers);\n}\n\nexport function replyFetch(mionResp: MionResponse, headers: FetchResponseHeaders): Response {\n // last, so a handler never replaces it; unused headers already hold the JSON one\n if (!headers.unused || mionResp.contentType !== JSON_CONTENT_TYPE) headers.set('content-type', mionResp.contentType);\n // Response copies its headers, so unused ones serve the next request\n const response = Response.json(mionResp.body, {status: mionResp.statusCode, headers: headers.native});\n giveBackUnused(unusedFetchHeaders, headers);\n return response;\n}\n\n/** A fetch-like (not identical) Headers object over a header record, for an incoming request carrying its\n * headers as an object: IncomingMessage.headers, ApiGatewayEvent.headers.\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers */\nexport function headersFromRecord(headersObj: Record<string, string>, skipToLower = false): MionHeaders {\n const headers = parseHeaders(headersObj, skipToLower);\n return new MionHeadersImpl(headers);\n}\n\n/** A header value, or undefined for a name the record does not carry as an own string (a prototype\n * hit is a function or an object). A platform record may hold an array (node's `set-cookie`). */\nfunction readHeader(headers: HeadersRecord, lowerName: string): string | undefined {\n const value = headers[lowerName] as unknown;\n if (typeof value === 'string') return value;\n return Array.isArray(value) ? value.join(', ') : undefined;\n}\n\nfunction joined(value: string | string[]): string {\n return Array.isArray(value) ? value.join(', ') : value;\n}\n\nfunction toSingleHeader(value: string | number): string {\n if (Array.isArray(value)) return value.join(', ');\n return value as string;\n}\n\nfunction parseHeaders(headersObj: Record<string, string>, skipToLower = false): HeadersRecord {\n if (skipToLower) return headersObj;\n const entries = Object.entries(headersObj);\n // null-prototype: header names come off the wire\n const headers: HeadersRecord = Object.create(null);\n for (let i = 0; i < entries.length; i++) {\n const [name, value] = entries[i];\n if (!value) continue;\n const ln = name.toLowerCase();\n headers[ln] = toSingleHeader(value);\n }\n return headers;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"headers.js","names":[],"sources":["../../../../src/lib/headers.ts"],"sourcesContent":["/* ########\n * 2022 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MionHeaders, MionResponse, PooledHeaders, ResponseDefaults} from '../types/context.ts';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport {getResponseDefaults} from '../router.ts';\n\n// ############# PUBLIC METHODS #############\n\n// an array for a name appended twice on response headers (node's request record may hold one too)\ntype HeadersRecord = Record<string, string | string[]>;\n\nconst PROTO_KEY = '__proto__';\n\n/** Case-insensitive HTTP headers, like the fetch Headers API but optimized for performance.\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers */\nclass MionHeadersImpl implements MionHeaders {\n // The record may be a plain object handed over by the platform (node's IncomingMessage.headers is one),\n // where `constructor` or `toString` would be \"found\" on the prototype chain. A prototype hit is never a\n // string, so a read checks the VALUE's type: cheaper than an own-key check per read (14 vs 23 ns).\n // `__proto__` is never written: on a plain object that assignment swaps the prototype.\n /** Read by the response headers pool only; request headers ignore it. */\n unused = true;\n\n constructor(protected headers: HeadersRecord) {}\n\n append(name: string, value: string): void {\n this.unused = false;\n const nl = name.toLowerCase();\n if (nl === PROTO_KEY) return;\n const existing = readHeader(this.headers, nl);\n const headerValue = toSingleHeader(value);\n if (existing) {\n this.headers[nl] = `${existing}, ${headerValue}`;\n } else {\n this.headers[nl] = headerValue;\n }\n }\n\n delete(name: string): void {\n this.unused = false;\n delete this.headers[name.toLowerCase()];\n }\n\n get(name: string): string | undefined | null {\n return readHeader(this.headers, name.toLowerCase());\n }\n\n set(name: string, value: string): void {\n this.unused = false;\n const ln = name.toLowerCase();\n if (ln === PROTO_KEY) return;\n this.headers[ln] = value as string;\n }\n\n has(name: string): boolean {\n return !!readHeader(this.headers, name.toLowerCase());\n }\n\n entries(): IterableIterator<[string, string]> {\n return Object.entries(this.headers)\n .map(([name, value]): [string, string] => [name, joined(value)])\n .values();\n }\n\n keys(): IterableIterator<string> {\n return new Map(Object.entries(this.headers)).keys();\n }\n\n values(): IterableIterator<string> {\n return Object.values(this.headers).map(joined).values();\n }\n}\n\n/** Response headers over a copy of the defaults, for an adapter that answers from a header record (uws, aws). */\nexport class RecordResponseHeaders extends MionHeadersImpl implements PooledHeaders {\n constructor(readonly defaults: ResponseDefaults) {\n super({...defaults});\n }\n\n /** Refuses what fetch `Headers` refuses: uws and aws write a header record as it is, unchecked. */\n set(name: string, value: string): void {\n assertHeaderSafe(name, value);\n super.set(name, value);\n }\n\n /** Keeps a repeated name's values apart, never joined: the adapter writes them its own way. */\n append(name: string, value: string): void {\n assertHeaderSafe(name, value);\n this.unused = false;\n const key = name.toLowerCase();\n if (key === PROTO_KEY) return;\n const current = this.headers[key] as unknown;\n // an empty earlier value counts as absent, and so does a prototype hit such as `constructor`\n if (Array.isArray(current)) current.push(value);\n else if (typeof current === 'string' && current) this.headers[key] = [current, value];\n else this.headers[key] = value;\n }\n\n /** Walks the headers with no pair array per header; a repeated name gives its values apart. */\n forEach(visit: (name: string, value: string | string[]) => void): void {\n for (const name in this.headers) visit(name, this.headers[name]);\n }\n}\n\n/** CR or LF splits the response (header injection); NUL ends it early on some hosts.\n * The value stays out of the error: it may be what an attacker sent. */\nexport function assertHeaderSafe(name: string, value: string): void {\n if (hasControlBreak(name) || hasControlBreak(value))\n throw new TypeError(`Invalid header ${JSON.stringify(name.slice(0, 64))}: CR, LF or NUL`);\n}\n\nfunction hasControlBreak(text: string): boolean {\n // one pass, no allocation\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code === 13 || code === 10 || code === 0) return true;\n }\n return false;\n}\n\n/** The response headers of the fetch adapters (bun, cloudflare, vercel). */\nexport class FetchResponseHeaders implements PooledHeaders {\n /** What the reply hands to `Response`, which copies it. */\n readonly native = new Headers();\n unused = true;\n\n constructor(readonly defaults: ResponseDefaults) {\n // one set per name beats building from a record\n for (const name in defaults) this.native.set(name, defaults[name]);\n }\n\n set(name: string, value: string): void {\n this.unused = false;\n this.native.set(name, value);\n }\n append(name: string, value: string): void {\n this.unused = false;\n this.native.append(name, value);\n }\n delete(name: string): void {\n this.unused = false;\n this.native.delete(name);\n }\n get(name: string): string | null {\n return this.native.get(name);\n }\n has(name: string): boolean {\n return this.native.has(name);\n }\n entries(): IterableIterator<[string, string]> {\n return this.native.entries();\n }\n keys(): IterableIterator<string> {\n return this.native.keys();\n }\n values(): IterableIterator<string> {\n return this.native.values();\n }\n}\n\n// Pools of unwritten response headers: one serves exactly one request and comes back only if still unused.\nconst MAX_UNUSED_HEADERS = 256;\nconst unusedRecordHeaders: RecordResponseHeaders[] = [];\nconst unusedFetchHeaders: FetchResponseHeaders[] = [];\nconst newRecordHeaders = (defaults: ResponseDefaults) => new RecordResponseHeaders(defaults);\nconst newFetchHeaders = (defaults: ResponseDefaults) => new FetchResponseHeaders(defaults);\n\n/** Response headers holding the defaults and nothing else, from the pool or new. */\nexport const getDefaultHeaders = (): RecordResponseHeaders => takeUnused(unusedRecordHeaders, newRecordHeaders);\n\n/** Like `getDefaultHeaders`, over a native `Headers` for the fetch adapters. */\nexport const getDefaultFetchHeaders = (): FetchResponseHeaders => takeUnused(unusedFetchHeaders, newFetchHeaders);\n\n/** Gives headers back once the reply is sent; written ones are dropped. */\nexport const releaseHeaders = (headers: RecordResponseHeaders): void => giveBackUnused(unusedRecordHeaders, headers);\n\nfunction takeUnused<Pooled extends PooledHeaders>(pool: Pooled[], create: (defaults: ResponseDefaults) => Pooled): Pooled {\n const defaults = getResponseDefaults();\n const headers = pool.pop();\n if (headers?.defaults === defaults) return headers;\n // the router restarted: pooled headers carry the old defaults\n pool.length = 0;\n return create(defaults);\n}\n\nfunction giveBackUnused<Pooled extends PooledHeaders>(pool: Pooled[], headers: Pooled): void {\n if (headers.unused && pool.length < MAX_UNUSED_HEADERS) pool.push(headers);\n}\n\nexport function replyFetch(mionResp: MionResponse, headers: FetchResponseHeaders): Response {\n // last, so a handler never replaces it; unused headers already hold the JSON one\n if (!headers.unused || mionResp.contentType !== JSON_CONTENT_TYPE) headers.set('content-type', mionResp.contentType);\n // Response copies its headers, so unused ones serve the next request\n const response = Response.json(mionResp.body, {status: mionResp.statusCode, headers: headers.native});\n giveBackUnused(unusedFetchHeaders, headers);\n return response;\n}\n\n/** A fetch-like (not identical) Headers object over a header record, for an incoming request carrying its\n * headers as an object: IncomingMessage.headers, ApiGatewayEvent.headers.\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers */\nexport function headersFromRecord(headersObj: Record<string, string>, skipToLower = false): MionHeaders {\n const headers = parseHeaders(headersObj, skipToLower);\n return new MionHeadersImpl(headers);\n}\n\n/** A header value, or undefined for a name the record does not carry as an own string (a prototype\n * hit is a function or an object). A platform record may hold an array (node's `set-cookie`). */\nfunction readHeader(headers: HeadersRecord, lowerName: string): string | undefined {\n const value = headers[lowerName] as unknown;\n if (typeof value === 'string') return value;\n return Array.isArray(value) ? value.join(', ') : undefined;\n}\n\nfunction joined(value: string | string[]): string {\n return Array.isArray(value) ? value.join(', ') : value;\n}\n\nfunction toSingleHeader(value: string | number): string {\n if (Array.isArray(value)) return value.join(', ');\n return value as string;\n}\n\nfunction parseHeaders(headersObj: Record<string, string>, skipToLower = false): HeadersRecord {\n if (skipToLower) return headersObj;\n const entries = Object.entries(headersObj);\n // null-prototype: header names come off the wire\n const headers: HeadersRecord = Object.create(null);\n for (let i = 0; i < entries.length; i++) {\n const [name, value] = entries[i];\n if (!value) continue;\n const ln = name.toLowerCase();\n headers[ln] = toSingleHeader(value);\n }\n return headers;\n}\n"],"mappings":";;;AAgBA,IAAM,YAAY;;;AAIlB,IAAM,kBAAN,MAA6C;CAQrB;;CAFtB,SAAS;CAET,YAAY,SAAkC;EAAxB,KAAA,UAAA;CAAyB;CAE/C,OAAO,MAAc,OAAqB;EACxC,KAAK,SAAS;EACd,MAAM,KAAK,KAAK,YAAY;EAC5B,IAAI,OAAO,WAAW;EACtB,MAAM,WAAW,WAAW,KAAK,SAAS,EAAE;EAC5C,MAAM,cAAc,eAAe,KAAK;EACxC,IAAI,UACF,KAAK,QAAQ,MAAM,GAAG,SAAS,IAAI;OAEnC,KAAK,QAAQ,MAAM;CAEvB;CAEA,OAAO,MAAoB;EACzB,KAAK,SAAS;EACd,OAAO,KAAK,QAAQ,KAAK,YAAY;CACvC;CAEA,IAAI,MAAyC;EAC3C,OAAO,WAAW,KAAK,SAAS,KAAK,YAAY,CAAC;CACpD;CAEA,IAAI,MAAc,OAAqB;EACrC,KAAK,SAAS;EACd,MAAM,KAAK,KAAK,YAAY;EAC5B,IAAI,OAAO,WAAW;EACtB,KAAK,QAAQ,MAAM;CACrB;CAEA,IAAI,MAAuB;EACzB,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,KAAK,YAAY,CAAC;CACtD;CAEA,UAA8C;EAC5C,OAAO,OAAO,QAAQ,KAAK,OAAO,EAC/B,KAAK,CAAC,MAAM,WAA6B,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC,EAC9D,OAAO;CACZ;CAEA,OAAiC;EAC/B,OAAO,IAAI,IAAI,OAAO,QAAQ,KAAK,OAAO,CAAC,EAAE,KAAK;CACpD;CAEA,SAAmC;EACjC,OAAO,OAAO,OAAO,KAAK,OAAO,EAAE,IAAI,MAAM,EAAE,OAAO;CACxD;AACF;;AAGA,IAAa,wBAAb,cAA2C,gBAAyC;CAC7D;CAArB,YAAY,UAAqC;EAC/C,MAAM,EAAC,GAAG,SAAQ,CAAC;EADA,KAAA,WAAA;CAErB;;CAGA,IAAI,MAAc,OAAqB;EACrC,iBAAiB,MAAM,KAAK;EAC5B,MAAM,IAAI,MAAM,KAAK;CACvB;;CAGA,OAAO,MAAc,OAAqB;EACxC,iBAAiB,MAAM,KAAK;EAC5B,KAAK,SAAS;EACd,MAAM,MAAM,KAAK,YAAY;EAC7B,IAAI,QAAQ,WAAW;EACvB,MAAM,UAAU,KAAK,QAAQ;EAE7B,IAAI,MAAM,QAAQ,OAAO,GAAG,QAAQ,KAAK,KAAK;OACzC,IAAI,OAAO,YAAY,YAAY,SAAS,KAAK,QAAQ,OAAO,CAAC,SAAS,KAAK;OAC/E,KAAK,QAAQ,OAAO;CAC3B;;CAGA,QAAQ,OAA+D;EACrE,KAAK,MAAM,QAAQ,KAAK,SAAS,MAAM,MAAM,KAAK,QAAQ,KAAK;CACjE;AACF;;;AAIA,SAAgB,iBAAiB,MAAc,OAAqB;CAClE,IAAI,gBAAgB,IAAI,KAAK,gBAAgB,KAAK,GAChD,MAAM,IAAI,UAAU,kBAAkB,KAAK,UAAU,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,gBAAgB;AAC5F;AAEA,SAAS,gBAAgB,MAAuB;CAE9C,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,OAAO,KAAK,WAAW,CAAC;EAC9B,IAAI,SAAS,MAAM,SAAS,MAAM,SAAS,GAAG,OAAO;CACvD;CACA,OAAO;AACT;;AAGA,IAAa,uBAAb,MAA2D;CAKpC;;CAHrB,SAAkB,IAAI,QAAQ;CAC9B,SAAS;CAET,YAAY,UAAqC;EAA5B,KAAA,WAAA;EAEnB,KAAK,MAAM,QAAQ,UAAU,KAAK,OAAO,IAAI,MAAM,SAAS,KAAK;CACnE;CAEA,IAAI,MAAc,OAAqB;EACrC,KAAK,SAAS;EACd,KAAK,OAAO,IAAI,MAAM,KAAK;CAC7B;CACA,OAAO,MAAc,OAAqB;EACxC,KAAK,SAAS;EACd,KAAK,OAAO,OAAO,MAAM,KAAK;CAChC;CACA,OAAO,MAAoB;EACzB,KAAK,SAAS;EACd,KAAK,OAAO,OAAO,IAAI;CACzB;CACA,IAAI,MAA6B;EAC/B,OAAO,KAAK,OAAO,IAAI,IAAI;CAC7B;CACA,IAAI,MAAuB;EACzB,OAAO,KAAK,OAAO,IAAI,IAAI;CAC7B;CACA,UAA8C;EAC5C,OAAO,KAAK,OAAO,QAAQ;CAC7B;CACA,OAAiC;EAC/B,OAAO,KAAK,OAAO,KAAK;CAC1B;CACA,SAAmC;EACjC,OAAO,KAAK,OAAO,OAAO;CAC5B;AACF;AAGA,IAAM,qBAAqB;AAC3B,IAAM,sBAA+C,CAAC;AACtD,IAAM,qBAA6C,CAAC;AACpD,IAAM,oBAAoB,aAA+B,IAAI,sBAAsB,QAAQ;AAC3F,IAAM,mBAAmB,aAA+B,IAAI,qBAAqB,QAAQ;;AAGzF,IAAa,0BAAiD,WAAW,qBAAqB,gBAAgB;;AAG9G,IAAa,+BAAqD,WAAW,oBAAoB,eAAe;;AAGhH,IAAa,kBAAkB,YAAyC,eAAe,qBAAqB,OAAO;AAEnH,SAAS,WAAyC,MAAgB,QAAwD;CACxH,MAAM,WAAW,oBAAoB;CACrC,MAAM,UAAU,KAAK,IAAI;CACzB,IAAI,SAAS,aAAa,UAAU,OAAO;CAE3C,KAAK,SAAS;CACd,OAAO,OAAO,QAAQ;AACxB;AAEA,SAAS,eAA6C,MAAgB,SAAuB;CAC3F,IAAI,QAAQ,UAAU,KAAK,SAAS,oBAAoB,KAAK,KAAK,OAAO;AAC3E;AAEA,SAAgB,WAAW,UAAwB,SAAyC;CAE1F,IAAI,CAAC,QAAQ,UAAU,SAAS,gBAAA,mCAAmC,QAAQ,IAAI,gBAAgB,SAAS,WAAW;CAEnH,MAAM,WAAW,SAAS,KAAK,SAAS,MAAM;EAAC,QAAQ,SAAS;EAAY,SAAS,QAAQ;CAAM,CAAC;CACpG,eAAe,oBAAoB,OAAO;CAC1C,OAAO;AACT;;;;AAKA,SAAgB,kBAAkB,YAAoC,cAAc,OAAoB;CAEtG,OAAO,IAAI,gBADK,aAAa,YAAY,WACd,CAAO;AACpC;;;AAIA,SAAS,WAAW,SAAwB,WAAuC;CACjF,MAAM,QAAQ,QAAQ;CACtB,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,KAAA;AACnD;AAEA,SAAS,OAAO,OAAkC;CAChD,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI;AACnD;AAEA,SAAS,eAAe,OAAgC;CACtD,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,KAAK,IAAI;CAChD,OAAO;AACT;AAEA,SAAS,aAAa,YAAoC,cAAc,OAAsB;CAC5F,IAAI,aAAa,OAAO;CACxB,MAAM,UAAU,OAAO,QAAQ,UAAU;CAEzC,MAAM,UAAyB,OAAO,OAAO,IAAI;CACjD,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;EACvC,MAAM,CAAC,MAAM,SAAS,QAAQ;EAC9B,IAAI,CAAC,OAAO;EACZ,MAAM,KAAK,KAAK,YAAY;EAC5B,QAAQ,MAAM,eAAe,KAAK;CACpC;CACA,OAAO;AACT"}
@@ -0,0 +1,3 @@
1
+ import { HttpMethod } from '../types/context.ts';
2
+ export declare function toHttpMethod(method: string | undefined): HttpMethod;
3
+ //# sourceMappingURL=httpMethod.d.ts.map
@@ -0,0 +1,21 @@
1
+ //#region src/lib/httpMethod.ts
2
+ var HTTP_METHODS = Object.assign(Object.create(null), {
3
+ GET: "GET",
4
+ HEAD: "HEAD",
5
+ POST: "POST",
6
+ PUT: "PUT",
7
+ DELETE: "DELETE",
8
+ CONNECT: "CONNECT",
9
+ OPTIONS: "OPTIONS",
10
+ TRACE: "TRACE",
11
+ PATCH: "PATCH",
12
+ QUERY: "QUERY"
13
+ });
14
+ /** HTTP methods are case sensitive, so `get` is `OTHER`. */
15
+ function toHttpMethod(method) {
16
+ return method && HTTP_METHODS[method] || "OTHER";
17
+ }
18
+ //#endregion
19
+ export { toHttpMethod };
20
+
21
+ //# sourceMappingURL=httpMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpMethod.js","names":[],"sources":["../../../../src/lib/httpMethod.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {HttpMethod} from '../types/context.ts';\n\n// null prototype: a `constructor` method off the wire must not read Object.prototype\nconst HTTP_METHODS: Readonly<Record<string, HttpMethod>> = Object.assign(Object.create(null), {\n GET: 'GET',\n HEAD: 'HEAD',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n CONNECT: 'CONNECT',\n OPTIONS: 'OPTIONS',\n TRACE: 'TRACE',\n PATCH: 'PATCH',\n QUERY: 'QUERY',\n});\n\n/** HTTP methods are case sensitive, so `get` is `OTHER`. */\nexport function toHttpMethod(method: string | undefined): HttpMethod {\n return (method && HTTP_METHODS[method]) || 'OTHER';\n}\n"],"mappings":";AAUA,IAAM,eAAqD,OAAO,OAAO,OAAO,OAAO,IAAI,GAAG;CAC5F,KAAK;CACL,MAAM;CACN,MAAM;CACN,KAAK;CACL,QAAQ;CACR,SAAS;CACT,SAAS;CACT,OAAO;CACP,OAAO;CACP,OAAO;AACT,CAAC;;AAGD,SAAgB,aAAa,QAAwC;CACnE,OAAQ,UAAU,aAAa,WAAY;AAC7C"}
@@ -1,7 +1,2 @@
1
- import { SerializerCode } from '@mionjs/core';
2
- export interface QueryBodyResult {
3
- rawBody: string;
4
- bodyType: SerializerCode;
5
- }
6
- export declare function decodeQueryBody(urlQuery: string | undefined, rawBody: unknown): QueryBodyResult | undefined;
1
+ export declare function decodeQueryBody(urlQuery: string | undefined): string | undefined;
7
2
  //# sourceMappingURL=queryBody.d.ts.map
@@ -1,16 +1,13 @@
1
1
  import { findMionQueryParam } from "./urlQuery.js";
2
- import { FatalError, SerializerModes, StatusCodes, fromBase64Url } from "@mionjs/core";
2
+ import { FatalError, StatusCodes, fromBase64Url } from "@mionjs/core";
3
3
  //#region src/lib/queryBody.ts
4
- function decodeQueryBody(urlQuery, rawBody) {
5
- if (rawBody) return void 0;
4
+ /** The JSON body a GET carries in `?data=` */
5
+ function decodeQueryBody(urlQuery) {
6
6
  if (!urlQuery) return void 0;
7
7
  const dataValue = findMionQueryParam(urlQuery, "data");
8
8
  if (!dataValue) return void 0;
9
9
  try {
10
- return {
11
- rawBody: fromBase64Url(dataValue),
12
- bodyType: SerializerModes.stringifyJson
13
- };
10
+ return fromBase64Url(dataValue);
14
11
  } catch (err) {
15
12
  throw invalidQueryBody(err);
16
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queryBody.js","names":[],"sources":["../../../../src/lib/queryBody.ts"],"sourcesContent":["/* ########\n * 2025 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {fromBase64Url, FatalError, RpcError, SerializerModes, StatusCodes} from '@mionjs/core';\nimport type {SerializerCode} from '@mionjs/core';\nimport {findMionQueryParam} from './urlQuery.ts';\n\n// `atob` throws a raw InvalidCharacterError on anything that is not base64, and one `GET /route?data=!`\n// used to take the node and uws processes down with an unhandled rejection. No pre-check: a regex over\n// the value doubled the cost of every query-body request (85 to 170 ns) to refuse what `atob` refuses.\n\nexport interface QueryBodyResult {\n rawBody: string;\n bodyType: SerializerCode;\n}\n\nexport function decodeQueryBody(urlQuery: string | undefined, rawBody: unknown): QueryBodyResult | undefined {\n if (rawBody) return undefined;\n if (!urlQuery) return undefined;\n const dataValue = findMionQueryParam(urlQuery, 'data');\n if (!dataValue) return undefined;\n try {\n return {rawBody: fromBase64Url(dataValue), bodyType: SerializerModes.stringifyJson};\n } catch (err) {\n throw invalidQueryBody(err);\n }\n}\n\nfunction invalidQueryBody(originalError?: unknown): RpcError<'invalid-query-body'> {\n return new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'invalid-query-body',\n publicMessage: 'Invalid query body: the data parameter is not base64url encoded.',\n originalError: originalError as Error | undefined,\n });\n}\n"],"mappings":";;;AAoBA,SAAgB,gBAAgB,UAA8B,SAA+C;CAC3G,IAAI,SAAS,OAAO,KAAA;CACpB,IAAI,CAAC,UAAU,OAAO,KAAA;CACtB,MAAM,YAAY,mBAAmB,UAAU,MAAM;CACrD,IAAI,CAAC,WAAW,OAAO,KAAA;CACvB,IAAI;EACF,OAAO;GAAC,SAAS,cAAc,SAAS;GAAG,UAAU,gBAAgB;EAAa;CACpF,SAAS,KAAK;EACZ,MAAM,iBAAiB,GAAG;CAC5B;AACF;AAEA,SAAS,iBAAiB,eAAyD;CACjF,OAAO,IAAI,WAAW;EACpB,YAAY,YAAY;EACxB,MAAM;EACN,eAAe;EACA;CACjB,CAAC;AACH"}
1
+ {"version":3,"file":"queryBody.js","names":[],"sources":["../../../../src/lib/queryBody.ts"],"sourcesContent":["/* ########\n * 2025 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {fromBase64Url, FatalError, RpcError, StatusCodes} from '@mionjs/core';\nimport {findMionQueryParam} from './urlQuery.ts';\n\n// `atob` throws a raw InvalidCharacterError on anything that is not base64, and one `GET /route?data=!`\n// used to take the node and uws processes down with an unhandled rejection. No pre-check: a regex over\n// the value doubled the cost of every query-body request (85 to 170 ns) to refuse what `atob` refuses.\n\n/** The JSON body a GET carries in `?data=` */\nexport function decodeQueryBody(urlQuery: string | undefined): string | undefined {\n if (!urlQuery) return undefined;\n const dataValue = findMionQueryParam(urlQuery, 'data');\n if (!dataValue) return undefined;\n try {\n return fromBase64Url(dataValue);\n } catch (err) {\n throw invalidQueryBody(err);\n }\n}\n\nfunction invalidQueryBody(originalError?: unknown): RpcError<'invalid-query-body'> {\n return new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'invalid-query-body',\n publicMessage: 'Invalid query body: the data parameter is not base64url encoded.',\n originalError: originalError as Error | undefined,\n });\n}\n"],"mappings":";;;;AAeA,SAAgB,gBAAgB,UAAkD;CAChF,IAAI,CAAC,UAAU,OAAO,KAAA;CACtB,MAAM,YAAY,mBAAmB,UAAU,MAAM;CACrD,IAAI,CAAC,WAAW,OAAO,KAAA;CACvB,IAAI;EACF,OAAO,cAAc,SAAS;CAChC,SAAS,KAAK;EACZ,MAAM,iBAAiB,GAAG;CAC5B;AACF;AAEA,SAAS,iBAAiB,eAAyD;CACjF,OAAO,IAAI,WAAW;EACpB,YAAY,YAAY;EACxB,MAAM;EACN,eAAe;EACA;CACjB,CAAC;AACH"}
@@ -1,4 +1,4 @@
1
- import { EMPTY_HASH, getHeadersReflectionFromMarkers, getNoopJitFns, getOrCreateGlobal, getReflectionFromMarkers, isAsyncHandler } from "@mionjs/core";
1
+ import { EMPTY_HASH, getHeadersReflectionFromMarkers, getNoopJitFns, getReflectionFromMarkers, isAsyncHandler } from "@mionjs/core";
2
2
  //#region src/lib/reflection.ts
3
3
  /** The definition carries no injected type information: it was built or run without the mion plugin active. */
4
4
  var MissingRtFnsError = class extends Error {
@@ -11,7 +11,7 @@ var MissingRtFnsError = class extends Error {
11
11
  * Vercel's EdgeVM, a CSP without 'unsafe-eval'). A BUILD-CONFIG problem, not a missing-plugin one. */
12
12
  var RuntimeCodeGenBlockedError = class extends Error {
13
13
  constructor(routeId, cause) {
14
- super(`Route/middleware "${routeId}" carries build-time type information, but this runtime forbids compiling functions from strings.\nBuild with \`mionVitePlugin({runTypes: {emitMode: 'both'}})\`: the default 'code' ships each compiled fn as a source string that is turned into a function on first use, which edge runtimes (Cloudflare Workers / workerd, Vercel Edge) refuse. 'both' also emits the live factory, so nothing is compiled at runtime.` + (cause ? `\nCause: ${cause}` : ""));
14
+ super(`Route/middleware "${routeId}" carries build-time type information, but this runtime forbids compiling functions from strings.\nBuild with \`mionVitePlugin({runTypes: {emitMode: 'both'}})\`: the default 'code' ships each compiled fn as a source string that is turned into a function on first use, which edge runtimes (Cloudflare Workers / workerd, Vercel Edge) refuse. 'both' also emits the live factory, so nothing is compiled at runtime. Already on 'both'? Then the entry named below comes from a dependency built in 'code' mode: rebuild that dependency with 'both'.` + (cause ? `\nCause: ${cause}` : ""));
15
15
  this.name = "RuntimeCodeGenBlockedError";
16
16
  }
17
17
  };
@@ -20,7 +20,7 @@ var CODE_GEN_BLOCKED = /code generation from strings|unsafe-eval/i;
20
20
  function isCodeGenBlocked(message) {
21
21
  return !!message && CODE_GEN_BLOCKED.test(message);
22
22
  }
23
- var rawMiddlewareReflectionCache = getOrCreateGlobal("mion.reflection.rawMiddlewareReflectionCache", () => /* @__PURE__ */ new Map());
23
+ var rawMiddlewareReflectionCache = /* @__PURE__ */ new Map();
24
24
  /** Creates a MethodReflect for raw middlewares: no type info, NoopJitFns. */
25
25
  function createRawMiddlewareReflection(isAsync, hasReturnData = false, paramsCount = 0) {
26
26
  const cacheKey = `${isAsync}_${hasReturnData}_${paramsCount}`;
@@ -67,7 +67,7 @@ function assertCompiledParser(methodId, parser, reflection) {
67
67
  for (const [direction, hash, fns] of sides) {
68
68
  if (hash === EMPTY_HASH) continue;
69
69
  const wanted = parser[direction];
70
- if (fns.json.strategy !== wanted) throw new Error(`mion: ${direction} parser of "${methodId}" is '${wanted}' at runtime but the build compiled '${fns.json.strategy}'. Write the parser option inline on the route (or as an \`as const\` preset) and the router-wide default as a literal on createMionRouter, so the build sees the same value the runtime reads.`);
70
+ if (fns.json.strategy !== wanted) throw new Error(`mion: ${direction} parser of "${methodId}" is '${wanted}' at runtime but the build compiled '${fns.json.strategy}'. Write the parser option inline on the route (or as an \`as const\` preset) and the router-wide default as a literal on the router factory, so the build sees the same value the runtime reads.`);
71
71
  }
72
72
  }
73
73
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"reflection.js","names":[],"sources":["../../../../src/lib/reflection.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MethodWithJitFns} from '@mionjs/core';\nimport {EMPTY_HASH, getNoopJitFns, getOrCreateGlobal, type ResolvedParser} from '@mionjs/core';\nimport {getHeadersReflectionFromMarkers, getReflectionFromMarkers, isAsyncHandler} from '@mionjs/core';\nimport {Handler} from '../types/handlers.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {RouteOptions, MiddlewareOptions} from '../types/remoteMethods.ts';\nimport {AnyHandlerDef, RawMiddlewareDef} from '../types/definitions.ts';\n\n// ############ This file is the only one consuming type reflection within the router ########\n// All type information is injected AT BUILD TIME into the route()/middleware() call sites (lib/handlers.ts)\n// and this module only adapts those payloads into the MethodReflect shape the router consumes. No runtime\n// reflection, no JIT compilation, no AOT cache: the modules the mion vite plugin emits ARE the artifacts.\n\ntype MethodReflect = Omit<MethodWithJitFns, 'id' | 'type' | 'nestLevel' | 'pointer' | 'options'>;\n\n/** The definition carries no injected type information: it was built or run without the mion plugin active. */\nexport class MissingRtFnsError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" has no build-time type information.\\n` +\n `Declare it through route()/middleware() and make sure mionVitePlugin (@mionjs/devtools) is active in the build.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'MissingRtFnsError';\n }\n}\n\n/** The injected type information IS present but the host forbids building functions from strings (workerd,\n * Vercel's EdgeVM, a CSP without 'unsafe-eval'). A BUILD-CONFIG problem, not a missing-plugin one. */\nexport class RuntimeCodeGenBlockedError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" carries build-time type information, but this runtime forbids ` +\n `compiling functions from strings.\\n` +\n `Build with \\`mionVitePlugin({runTypes: {emitMode: 'both'}})\\`: the default 'code' ships each ` +\n `compiled fn as a source string that is turned into a function on first use, which edge ` +\n `runtimes (Cloudflare Workers / workerd, Vercel Edge) refuse. 'both' also emits the live ` +\n `factory, so nothing is compiled at runtime.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'RuntimeCodeGenBlockedError';\n }\n}\n\n// workerd: \"Code generation from strings disallowed for this context\"; V8/EdgeVM with a CSP:\n// \"Code generation from strings disallowed\"/\"unsafe-eval\". Matched on the shared stem so both land.\nconst CODE_GEN_BLOCKED = /code generation from strings|unsafe-eval/i;\n\n/** True when an error from the mion runtime is a blocked `new Function`, not a missing payload. */\nfunction isCodeGenBlocked(message?: string): boolean {\n return !!message && CODE_GEN_BLOCKED.test(message);\n}\n\n// ############ Raw Middleware Reflection ############\n\nconst rawMiddlewareReflectionCache = getOrCreateGlobal(\n 'mion.reflection.rawMiddlewareReflectionCache',\n () => new Map<string, MethodReflect>()\n);\n\n/** Creates a MethodReflect for raw middlewares: no type info, NoopJitFns. */\nfunction createRawMiddlewareReflection(isAsync: boolean, hasReturnData: boolean = false, paramsCount: number = 0): MethodReflect {\n const cacheKey = `${isAsync}_${hasReturnData}_${paramsCount}`;\n const cached = rawMiddlewareReflectionCache.get(cacheKey);\n if (cached) return cached;\n\n const reflection: MethodReflect = {\n paramsCount,\n paramsJitFns: getNoopJitFns(),\n returnJitFns: getNoopJitFns(),\n paramsJitHash: EMPTY_HASH,\n returnJitHash: EMPTY_HASH,\n hasReturnData,\n isAsync,\n };\n\n rawMiddlewareReflectionCache.set(cacheKey, reflection);\n return reflection;\n}\n\n// ############ Main Reflection Functions ############\n\n/** Definitions that carry an injected `rtFns` payload. RawMiddlewareDef is excluded: a raw\n * middleware declares no extra params, so it has no reflection and goes through\n * getRawMethodReflection instead. */\ntype ReflectableDef = Exclude<AnyHandlerDef, RawMiddlewareDef>;\n\n/** All data derives from the mion marker payload the factory stashed on the definition (`def.rtFns`);\n * registration fails loudly when that payload is missing (plugin not active). */\nexport function getHandlerReflection(\n def: ReflectableDef,\n routeId: string,\n routerOptions: RouterOptions,\n // handlerOptions stays unused here: what a route compiles is decided at build time by its parser strategy.\n handlerOptions: RouteOptions | MiddlewareOptions = {}, // eslint-disable-line @typescript-eslint/no-unused-vars\n isHeadersMiddleware: boolean = false\n): MethodReflect {\n try {\n return isHeadersMiddleware\n ? getHeadersReflectionFromMarkers(def.rtFns, def.handler, routeId)\n : getReflectionFromMarkers(def.rtFns, def.handler, routeId);\n } catch (error: any) {\n if (isCodeGenBlocked(error?.message)) throw new RuntimeCodeGenBlockedError(routeId, error.message);\n throw new MissingRtFnsError(routeId, error?.message);\n }\n}\n\n/** Raw middlewares parse the raw request / response themselves, so they carry no type info. */\nexport function getRawMethodReflection(\n handler: Handler,\n routeId: string, // eslint-disable-line @typescript-eslint/no-unused-vars\n routerOptions: RouterOptions // eslint-disable-line @typescript-eslint/no-unused-vars\n): MethodReflect {\n return createRawMiddlewareReflection(isAsyncHandler(handler));\n}\n\n/** Checks each direction's compiled strategy against the resolved one: they differ only when the\n * build saw a different literal than the runtime value. */\nexport function assertCompiledParser(methodId: string, parser: ResolvedParser, reflection: MethodReflect): void {\n const sides = [\n ['params', reflection.paramsJitHash, reflection.paramsJitFns],\n ['return', reflection.returnJitHash, reflection.returnJitFns],\n ] as const;\n for (const [direction, hash, fns] of sides) {\n if (hash === EMPTY_HASH) continue;\n const wanted = parser[direction];\n if (fns.json.strategy !== wanted)\n throw new Error(\n `mion: ${direction} parser of \"${methodId}\" is '${wanted}' at runtime but the build compiled ` +\n `'${fns.json.strategy}'. Write the parser option inline on the route (or as an \\`as const\\` preset) and the ` +\n `router-wide default as a literal on createMionRouter, so the build sees the same value the runtime reads.`\n );\n }\n}\n"],"mappings":";;;AAuBA,IAAa,oBAAb,cAAuC,MAAM;CAC3C,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,2JAE1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;;;AAIA,IAAa,6BAAb,cAAgD,MAAM;CACpD,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,+ZAM1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;AAIA,IAAM,mBAAmB;;AAGzB,SAAS,iBAAiB,SAA2B;CACnD,OAAO,CAAC,CAAC,WAAW,iBAAiB,KAAK,OAAO;AACnD;AAIA,IAAM,+BAA+B,kBACnC,sEACM,IAAI,IAA2B,CACvC;;AAGA,SAAS,8BAA8B,SAAkB,gBAAyB,OAAO,cAAsB,GAAkB;CAC/H,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG;CAChD,MAAM,SAAS,6BAA6B,IAAI,QAAQ;CACxD,IAAI,QAAQ,OAAO;CAEnB,MAAM,aAA4B;EAChC;EACA,cAAc,cAAc;EAC5B,cAAc,cAAc;EAC5B,eAAe;EACf,eAAe;EACf;EACA;CACF;CAEA,6BAA6B,IAAI,UAAU,UAAU;CACrD,OAAO;AACT;;;AAWA,SAAgB,qBACd,KACA,SACA,eAEA,iBAAmD,CAAC,GACpD,sBAA+B,OAChB;CACf,IAAI;EACF,OAAO,sBACH,gCAAgC,IAAI,OAAO,IAAI,SAAS,OAAO,IAC/D,yBAAyB,IAAI,OAAO,IAAI,SAAS,OAAO;CAC9D,SAAS,OAAY;EACnB,IAAI,iBAAiB,OAAO,OAAO,GAAG,MAAM,IAAI,2BAA2B,SAAS,MAAM,OAAO;EACjG,MAAM,IAAI,kBAAkB,SAAS,OAAO,OAAO;CACrD;AACF;;AAGA,SAAgB,uBACd,SACA,SACA,eACe;CACf,OAAO,8BAA8B,eAAe,OAAO,CAAC;AAC9D;;;AAIA,SAAgB,qBAAqB,UAAkB,QAAwB,YAAiC;CAC9G,MAAM,QAAQ,CACZ;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,GAC5D;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,CAC9D;CACA,KAAK,MAAM,CAAC,WAAW,MAAM,QAAQ,OAAO;EAC1C,IAAI,SAAS,YAAY;EACzB,MAAM,SAAS,OAAO;EACtB,IAAI,IAAI,KAAK,aAAa,QACxB,MAAM,IAAI,MACR,SAAS,UAAU,cAAc,SAAS,QAAQ,OAAO,uCACnD,IAAI,KAAK,SAAS,gMAE1B;CACJ;AACF"}
1
+ {"version":3,"file":"reflection.js","names":[],"sources":["../../../../src/lib/reflection.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MethodWithJitFns} from '@mionjs/core';\nimport {EMPTY_HASH, getNoopJitFns, type ResolvedParser} from '@mionjs/core';\nimport {getHeadersReflectionFromMarkers, getReflectionFromMarkers, isAsyncHandler} from '@mionjs/core';\nimport {Handler} from '../types/handlers.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {RouteOptions, MiddlewareOptions} from '../types/remoteMethods.ts';\nimport {AnyHandlerDef, RawMiddlewareDef} from '../types/definitions.ts';\n\n// ############ This file is the only one consuming type reflection within the router ########\n// All type information is injected AT BUILD TIME into the route()/middleware() call sites (lib/handlers.ts)\n// and this module only adapts those payloads into the MethodReflect shape the router consumes. No runtime\n// reflection, no JIT compilation, no AOT cache: the modules the mion vite plugin emits ARE the artifacts.\n\ntype MethodReflect = Omit<MethodWithJitFns, 'id' | 'type' | 'nestLevel' | 'pointer' | 'options'>;\n\n/** The definition carries no injected type information: it was built or run without the mion plugin active. */\nexport class MissingRtFnsError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" has no build-time type information.\\n` +\n `Declare it through route()/middleware() and make sure mionVitePlugin (@mionjs/devtools) is active in the build.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'MissingRtFnsError';\n }\n}\n\n/** The injected type information IS present but the host forbids building functions from strings (workerd,\n * Vercel's EdgeVM, a CSP without 'unsafe-eval'). A BUILD-CONFIG problem, not a missing-plugin one. */\nexport class RuntimeCodeGenBlockedError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" carries build-time type information, but this runtime forbids ` +\n `compiling functions from strings.\\n` +\n `Build with \\`mionVitePlugin({runTypes: {emitMode: 'both'}})\\`: the default 'code' ships each ` +\n `compiled fn as a source string that is turned into a function on first use, which edge ` +\n `runtimes (Cloudflare Workers / workerd, Vercel Edge) refuse. 'both' also emits the live ` +\n `factory, so nothing is compiled at runtime. Already on 'both'? Then the entry named below comes from a ` +\n `dependency built in 'code' mode: rebuild that dependency with 'both'.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'RuntimeCodeGenBlockedError';\n }\n}\n\n// workerd: \"Code generation from strings disallowed for this context\"; V8/EdgeVM with a CSP:\n// \"Code generation from strings disallowed\"/\"unsafe-eval\". Matched on the shared stem so both land.\nconst CODE_GEN_BLOCKED = /code generation from strings|unsafe-eval/i;\n\n/** True when an error from the mion runtime is a blocked `new Function`, not a missing payload. */\nfunction isCodeGenBlocked(message?: string): boolean {\n return !!message && CODE_GEN_BLOCKED.test(message);\n}\n\n// ############ Raw Middleware Reflection ############\n\nconst rawMiddlewareReflectionCache = new Map<string, MethodReflect>();\n\n/** Creates a MethodReflect for raw middlewares: no type info, NoopJitFns. */\nfunction createRawMiddlewareReflection(isAsync: boolean, hasReturnData: boolean = false, paramsCount: number = 0): MethodReflect {\n const cacheKey = `${isAsync}_${hasReturnData}_${paramsCount}`;\n const cached = rawMiddlewareReflectionCache.get(cacheKey);\n if (cached) return cached;\n\n const reflection: MethodReflect = {\n paramsCount,\n paramsJitFns: getNoopJitFns(),\n returnJitFns: getNoopJitFns(),\n paramsJitHash: EMPTY_HASH,\n returnJitHash: EMPTY_HASH,\n hasReturnData,\n isAsync,\n };\n\n rawMiddlewareReflectionCache.set(cacheKey, reflection);\n return reflection;\n}\n\n// ############ Main Reflection Functions ############\n\n/** Definitions that carry an injected `rtFns` payload. RawMiddlewareDef is excluded: a raw\n * middleware declares no extra params, so it has no reflection and goes through\n * getRawMethodReflection instead. */\ntype ReflectableDef = Exclude<AnyHandlerDef, RawMiddlewareDef>;\n\n/** All data derives from the mion marker payload the factory stashed on the definition (`def.rtFns`);\n * registration fails loudly when that payload is missing (plugin not active). */\nexport function getHandlerReflection(\n def: ReflectableDef,\n routeId: string,\n routerOptions: RouterOptions,\n // handlerOptions stays unused here: what a route compiles is decided at build time by its parser strategy.\n handlerOptions: RouteOptions | MiddlewareOptions = {}, // eslint-disable-line @typescript-eslint/no-unused-vars\n isHeadersMiddleware: boolean = false\n): MethodReflect {\n try {\n return isHeadersMiddleware\n ? getHeadersReflectionFromMarkers(def.rtFns, def.handler, routeId)\n : getReflectionFromMarkers(def.rtFns, def.handler, routeId);\n } catch (error: any) {\n if (isCodeGenBlocked(error?.message)) throw new RuntimeCodeGenBlockedError(routeId, error.message);\n throw new MissingRtFnsError(routeId, error?.message);\n }\n}\n\n/** Raw middlewares parse the raw request / response themselves, so they carry no type info. */\nexport function getRawMethodReflection(\n handler: Handler,\n routeId: string, // eslint-disable-line @typescript-eslint/no-unused-vars\n routerOptions: RouterOptions // eslint-disable-line @typescript-eslint/no-unused-vars\n): MethodReflect {\n return createRawMiddlewareReflection(isAsyncHandler(handler));\n}\n\n/** Checks each direction's compiled strategy against the resolved one: they differ only when the\n * build saw a different literal than the runtime value. */\nexport function assertCompiledParser(methodId: string, parser: ResolvedParser, reflection: MethodReflect): void {\n const sides = [\n ['params', reflection.paramsJitHash, reflection.paramsJitFns],\n ['return', reflection.returnJitHash, reflection.returnJitFns],\n ] as const;\n for (const [direction, hash, fns] of sides) {\n if (hash === EMPTY_HASH) continue;\n const wanted = parser[direction];\n if (fns.json.strategy !== wanted)\n throw new Error(\n `mion: ${direction} parser of \"${methodId}\" is '${wanted}' at runtime but the build compiled ` +\n `'${fns.json.strategy}'. Write the parser option inline on the route (or as an \\`as const\\` preset) and the ` +\n `router-wide default as a literal on the router factory, so the build sees the same value the runtime reads.`\n );\n }\n}\n"],"mappings":";;;AAuBA,IAAa,oBAAb,cAAuC,MAAM;CAC3C,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,2JAE1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;;;AAIA,IAAa,6BAAb,cAAgD,MAAM;CACpD,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,giBAO1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;AAIA,IAAM,mBAAmB;;AAGzB,SAAS,iBAAiB,SAA2B;CACnD,OAAO,CAAC,CAAC,WAAW,iBAAiB,KAAK,OAAO;AACnD;AAIA,IAAM,+CAA+B,IAAI,IAA2B;;AAGpE,SAAS,8BAA8B,SAAkB,gBAAyB,OAAO,cAAsB,GAAkB;CAC/H,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG;CAChD,MAAM,SAAS,6BAA6B,IAAI,QAAQ;CACxD,IAAI,QAAQ,OAAO;CAEnB,MAAM,aAA4B;EAChC;EACA,cAAc,cAAc;EAC5B,cAAc,cAAc;EAC5B,eAAe;EACf,eAAe;EACf;EACA;CACF;CAEA,6BAA6B,IAAI,UAAU,UAAU;CACrD,OAAO;AACT;;;AAWA,SAAgB,qBACd,KACA,SACA,eAEA,iBAAmD,CAAC,GACpD,sBAA+B,OAChB;CACf,IAAI;EACF,OAAO,sBACH,gCAAgC,IAAI,OAAO,IAAI,SAAS,OAAO,IAC/D,yBAAyB,IAAI,OAAO,IAAI,SAAS,OAAO;CAC9D,SAAS,OAAY;EACnB,IAAI,iBAAiB,OAAO,OAAO,GAAG,MAAM,IAAI,2BAA2B,SAAS,MAAM,OAAO;EACjG,MAAM,IAAI,kBAAkB,SAAS,OAAO,OAAO;CACrD;AACF;;AAGA,SAAgB,uBACd,SACA,SACA,eACe;CACf,OAAO,8BAA8B,eAAe,OAAO,CAAC;AAC9D;;;AAIA,SAAgB,qBAAqB,UAAkB,QAAwB,YAAiC;CAC9G,MAAM,QAAQ,CACZ;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,GAC5D;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,CAC9D;CACA,KAAK,MAAM,CAAC,WAAW,MAAM,QAAQ,OAAO;EAC1C,IAAI,SAAS,YAAY;EACzB,MAAM,SAAS,OAAO;EACtB,IAAI,IAAI,KAAK,aAAa,QACxB,MAAM,IAAI,MACR,SAAS,UAAU,cAAc,SAAS,QAAQ,OAAO,uCACnD,IAAI,KAAK,SAAS,kMAE1B;CACJ;AACF"}
@@ -1,9 +1,9 @@
1
1
  import { isHeadersMiddlewareDef, isMiddlewareDef, isRoute } from "../types/guards.js";
2
2
  import { getMiddlewareExecutable, getPlatformMaxBodySize, getRouteExecutable, isPrivateDefinition } from "../router.js";
3
- import { DEFAULT_PARSER, EMPTY_HASH, HandlerType, MAX_STACK_DEPTH, getJitFnHashes, getOrCreateGlobal, getRouterItemId, resolveCompiledPureFn } from "@mionjs/core";
3
+ import { DEFAULT_PARSER, EMPTY_HASH, HandlerType, MAX_STACK_DEPTH, getJitFnHashes, getRouterItemId, resolveCompiledPureFn } from "@mionjs/core";
4
4
  import { RUN_TYPES_PURE_FN_ID_PREFIX, getRTUtils } from "@mionjs/run-types/runtime";
5
5
  //#region src/lib/remoteMethods.ts
6
- var publicMethods = getOrCreateGlobal("mion.remoteMethods.publicMethods", () => /* @__PURE__ */ new Map());
6
+ var publicMethods = /* @__PURE__ */ new Map();
7
7
  function resetRemoteMethodsMetadata() {
8
8
  publicMethods.clear();
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remoteMethods.js","names":[],"sources":["../../../../src/lib/remoteMethods.ts"],"sourcesContent":["/* ########\n * 2023 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {type RouterEntry, type Routes} from '../types/general.ts';\nimport {type RemoteMethod} from '../types/remoteMethods.ts';\nimport type {PublicApi} from '../types/publicMethods.ts';\nimport type {AnyObject, CompiledTypeFn, CompiledFnData, MethodWithOptions, PureFnsDataCache} from '@mionjs/core';\nimport {isRoute, isHeadersMiddlewareDef, isMiddlewareDef} from '../types/guards.ts';\nimport {getMiddlewareExecutable, getRouteExecutable, isPrivateDefinition, getPlatformMaxBodySize} from '../router.ts';\nimport {\n getRouterItemId,\n MAX_STACK_DEPTH,\n getJitFnHashes,\n DEFAULT_PARSER,\n resolveCompiledPureFn,\n EMPTY_HASH,\n getOrCreateGlobal,\n HandlerType,\n} from '@mionjs/core';\nimport {getRTUtils, RUN_TYPES_PURE_FN_ID_PREFIX} from '@mionjs/run-types/runtime';\n\n// ############# PRIVATE STATE #############\nconst publicMethods = getOrCreateGlobal('mion.remoteMethods.publicMethods', () => new Map<string, MethodWithOptions>());\n\n// ############# PUBLIC METHODS #############\nexport function resetRemoteMethodsMetadata() {\n publicMethods.clear();\n}\n\n/** All the public information and types of the routes, what a router client is generated from. */\nexport function getPublicApi<R extends Routes>(routes: R): PublicApi<R> {\n return recursiveGetSerializableRoutes(routes) as PublicApi<R>;\n}\n\n// ############# PRIVATE METHODS #############\n\nfunction recursiveGetSerializableRoutes<R extends Routes>(\n routes: R,\n currentPointer: string[] = [],\n publicData: AnyObject = {}\n): AnyObject {\n const entries = Object.entries(routes);\n entries.forEach(([key, item]: [string, RouterEntry]) => {\n const itemPointer = [...currentPointer, key];\n const id = getRouterItemId(itemPointer);\n\n if (isPrivateDefinition(item, id)) {\n publicData[key] = null; // middlewares that don't receive or return data are not public\n } else if (isMiddlewareDef(item) || isHeadersMiddlewareDef(item) || isRoute(item)) {\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable)\n throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);\n publicData[key] = getSerializableMethod(executable as RemoteMethod);\n } else {\n const subRoutes: Routes = routes[key] as Routes;\n publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);\n }\n });\n\n return publicData;\n}\n\nexport function getSerializableMethod(executable: RemoteMethod): MethodWithOptions {\n const existing = publicMethods.get(executable.id);\n if (existing) return existing as MethodWithOptions;\n\n const newRemoteMethod: MethodWithOptions = {\n type: executable.type,\n id: executable.id,\n nestLevel: executable.nestLevel,\n isAsync: executable.isAsync,\n hasReturnData: executable.hasReturnData,\n paramsJitHash: executable.paramsJitHash,\n returnJitHash: executable.returnJitHash,\n pointer: executable.pointer,\n paramsCount: executable.paramsCount ?? 0,\n paramNames: executable.paramNames,\n // a route whose types could not say takes the platform's number: filled in here, once, so the\n // client sees the limit the server really applies (the adapter has published it by now)\n options:\n executable.type === HandlerType.route && executable.options.maxBodySize === undefined\n ? {...executable.options, maxBodySize: getPlatformMaxBodySize()}\n : executable.options,\n };\n if (executable.syncId) newRemoteMethod.syncId = executable.syncId;\n if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;\n // the client rebuilds a returned HeadersSubset from these names, so they must ride the wire\n if (executable.headersReturn) {\n newRemoteMethod.headersReturn = {\n headerNames: executable.headersReturn.headerNames,\n jitHash: executable.headersReturn.jitHash,\n };\n }\n if (executable.middlewareIds) newRemoteMethod.middlewareIds = executable.middlewareIds;\n publicMethods.set(executable.id, newRemoteMethod);\n return newRemoteMethod as MethodWithOptions;\n}\n\n/** Serializes a pure function and everything it reaches into the wire cache, keyed by id. */\nexport function serializePureDeps(id: string, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH) throw new Error(`Max depth reached serializing pure function dependencies, for: ${id}`);\n // Run-types' own pure fns never ride the wire: their bodies are hollowed in the dist build and served by\n // the compiler, so each is already registered wherever `@mionjs/run-types` is loaded, guaranteed on the\n // client since @mionjs/core value-imports it. addSerializedJitCaches skipped them on restore anyway.\n if (id.startsWith(RUN_TYPES_PURE_FN_ID_PREFIX)) return;\n // prevents infinite recursion on circular dependencies\n if (purFnDeps[id]) return;\n const pureDep = resolveCompiledPureFn(id);\n if (!pureDep) throw new Error(`Pure function ${id} not found`);\n // The client rebuilds a pure fn as `new Function(...paramNames, code)` and nothing else, so an entry with\n // no code is unrecoverable there: fail here instead of shipping a payload that breaks on first use. With\n // built-ins filtered out above, only a fn registered at runtime with no body reaches this: server-only.\n if (!pureDep.code)\n throw new Error(\n `Pure function ${id} has no code payload and cannot be serialized to the client. ` +\n `Runtime-registered pure fns are server-only; the client can rebuild only build-extracted ones.`\n );\n purFnDeps[id] = {\n ...pureDep,\n code: pureDep.code,\n pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : undefined,\n };\n pureDep.pureFnDependencies?.forEach((depId) => serializePureDeps(depId, purFnDeps, depth + 1));\n}\n\nexport function serializeJitFn(rtFnHash: string, deps: Record<string, CompiledFnData>, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH)\n throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${rtFnHash}`);\n const jitFn = getRTUtils().getRT(rtFnHash);\n if (!jitFn) throw new Error(`Jit function ${rtFnHash} not found`);\n if (deps[rtFnHash]) return; // already serialized and prevent infinite recursion on circular dependencies\n const serializedJitFn = getSerializableJitCompiler(jitFn);\n deps[rtFnHash] = serializedJitFn;\n jitFn.rtDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));\n jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));\n}\n\nexport function serializeMethodDeps(\n method: MethodWithOptions,\n deps: Record<string, CompiledFnData>,\n purFnDeps: PureFnsDataCache\n) {\n const {paramsJitHash, returnJitHash} = method;\n // an empty hash means no params, or a void return\n const utl = getRTUtils();\n const parser = method.options.parser ?? DEFAULT_PARSER;\n if (paramsJitHash !== EMPTY_HASH) {\n const paramsJitHashes = getJitFnHashes(paramsJitHash, parser.params);\n for (const k in paramsJitHashes) {\n if (utl.getRT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);\n }\n }\n if (returnJitHash !== EMPTY_HASH) {\n const returnJitHashes = getJitFnHashes(returnJitHash, parser.return);\n let foundAny = false;\n for (const k in returnJitHashes) {\n if (utl.getRT(returnJitHashes[k])) {\n serializeJitFn(returnJitHashes[k], deps, purFnDeps);\n foundAny = true;\n }\n }\n if (!foundAny) {\n throw new Error(\n `Method \"${method.id}\" declares returnJitHash=\"${returnJitHash}\" but no JIT functions are registered under that hash. ` +\n `This usually means a Promise/Function return type was not unwrapped before computing the hash.`\n );\n }\n }\n}\n\nfunction getSerializableJitCompiler(comp: CompiledTypeFn): CompiledFnData {\n return {\n typeName: comp.typeName,\n fnID: comp.fnID,\n // the exact emitting family — upstream's findRTForType gates on it, and unlike fnID it is\n // not composited, so the client cannot recover it from anything else on the wire\n familyTag: comp.familyTag,\n rtFnHash: comp.rtFnHash,\n args: {...comp.args},\n isNoop: comp.isNoop,\n defaultParamValues: {...comp.defaultParamValues},\n code: comp.code,\n rtDependencies: comp.rtDependencies ? [...comp.rtDependencies] : undefined,\n pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : undefined,\n // an alwaysThrow entry has no code, only this message; without it the client cannot rebuild\n // the throwing factory and surfaces a bare TypeError instead of the build-time diagnostic\n alwaysThrowMessage: comp.alwaysThrowMessage,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"remoteMethods.js","names":[],"sources":["../../../../src/lib/remoteMethods.ts"],"sourcesContent":["/* ########\n * 2023 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {type RouterEntry, type Routes} from '../types/general.ts';\nimport {type RemoteMethod} from '../types/remoteMethods.ts';\nimport type {PublicApi} from '../types/publicMethods.ts';\nimport type {AnyObject, CompiledTypeFn, CompiledFnData, MethodWithOptions, PureFnsDataCache} from '@mionjs/core';\nimport {isRoute, isHeadersMiddlewareDef, isMiddlewareDef} from '../types/guards.ts';\nimport {getMiddlewareExecutable, getRouteExecutable, isPrivateDefinition, getPlatformMaxBodySize} from '../router.ts';\nimport {\n getRouterItemId,\n MAX_STACK_DEPTH,\n getJitFnHashes,\n DEFAULT_PARSER,\n resolveCompiledPureFn,\n EMPTY_HASH,\n HandlerType,\n} from '@mionjs/core';\nimport {getRTUtils, RUN_TYPES_PURE_FN_ID_PREFIX} from '@mionjs/run-types/runtime';\n\n// ############# PRIVATE STATE #############\nconst publicMethods = new Map<string, MethodWithOptions>();\n\n// ############# PUBLIC METHODS #############\nexport function resetRemoteMethodsMetadata() {\n publicMethods.clear();\n}\n\n/** All the public information and types of the routes, what a router client is generated from. */\nexport function getPublicApi<R extends Routes>(routes: R): PublicApi<R> {\n return recursiveGetSerializableRoutes(routes) as PublicApi<R>;\n}\n\n// ############# PRIVATE METHODS #############\n\nfunction recursiveGetSerializableRoutes<R extends Routes>(\n routes: R,\n currentPointer: string[] = [],\n publicData: AnyObject = {}\n): AnyObject {\n const entries = Object.entries(routes);\n entries.forEach(([key, item]: [string, RouterEntry]) => {\n const itemPointer = [...currentPointer, key];\n const id = getRouterItemId(itemPointer);\n\n if (isPrivateDefinition(item, id)) {\n publicData[key] = null; // middlewares that don't receive or return data are not public\n } else if (isMiddlewareDef(item) || isHeadersMiddlewareDef(item) || isRoute(item)) {\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable)\n throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);\n publicData[key] = getSerializableMethod(executable as RemoteMethod);\n } else {\n const subRoutes: Routes = routes[key] as Routes;\n publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);\n }\n });\n\n return publicData;\n}\n\nexport function getSerializableMethod(executable: RemoteMethod): MethodWithOptions {\n const existing = publicMethods.get(executable.id);\n if (existing) return existing as MethodWithOptions;\n\n const newRemoteMethod: MethodWithOptions = {\n type: executable.type,\n id: executable.id,\n nestLevel: executable.nestLevel,\n isAsync: executable.isAsync,\n hasReturnData: executable.hasReturnData,\n paramsJitHash: executable.paramsJitHash,\n returnJitHash: executable.returnJitHash,\n pointer: executable.pointer,\n paramsCount: executable.paramsCount ?? 0,\n paramNames: executable.paramNames,\n // a route with no typed maxBodySize takes the platform's, so the client sees the real limit (published by now)\n // registration copied a router's added keys onto the options: they reach the client as written\n options: (executable.type === HandlerType.route && executable.options.maxBodySize === undefined\n ? {...executable.options, maxBodySize: getPlatformMaxBodySize()}\n : executable.options) as MethodWithOptions['options'],\n };\n if (executable.syncId) newRemoteMethod.syncId = executable.syncId;\n if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;\n // the client rebuilds a returned HeadersSubset from these names, so they must ride the wire\n if (executable.headersReturn) {\n newRemoteMethod.headersReturn = {\n headerNames: executable.headersReturn.headerNames,\n jitHash: executable.headersReturn.jitHash,\n };\n }\n if (executable.middlewareIds) newRemoteMethod.middlewareIds = executable.middlewareIds;\n publicMethods.set(executable.id, newRemoteMethod);\n return newRemoteMethod as MethodWithOptions;\n}\n\n/** Serializes a pure function and everything it reaches into the wire cache, keyed by id. */\nexport function serializePureDeps(id: string, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH) throw new Error(`Max depth reached serializing pure function dependencies, for: ${id}`);\n // Run-types' own pure fns never ride the wire: their bodies are hollowed in the dist build and served by\n // the compiler, so each is already registered wherever `@mionjs/run-types` is loaded, guaranteed on the\n // client since @mionjs/core value-imports it. addSerializedJitCaches skipped them on restore anyway.\n if (id.startsWith(RUN_TYPES_PURE_FN_ID_PREFIX)) return;\n // prevents infinite recursion on circular dependencies\n if (purFnDeps[id]) return;\n const pureDep = resolveCompiledPureFn(id);\n if (!pureDep) throw new Error(`Pure function ${id} not found`);\n // The client rebuilds a pure fn as `new Function(...paramNames, code)` and nothing else, so an entry with\n // no code is unrecoverable there: fail here instead of shipping a payload that breaks on first use. With\n // built-ins filtered out above, only a fn registered at runtime with no body reaches this: server-only.\n if (!pureDep.code)\n throw new Error(\n `Pure function ${id} has no code payload and cannot be serialized to the client. ` +\n `Runtime-registered pure fns are server-only; the client can rebuild only build-extracted ones.`\n );\n purFnDeps[id] = {\n ...pureDep,\n code: pureDep.code,\n pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : undefined,\n };\n pureDep.pureFnDependencies?.forEach((depId) => serializePureDeps(depId, purFnDeps, depth + 1));\n}\n\nexport function serializeJitFn(rtFnHash: string, deps: Record<string, CompiledFnData>, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH)\n throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${rtFnHash}`);\n const jitFn = getRTUtils().getRT(rtFnHash);\n if (!jitFn) throw new Error(`Jit function ${rtFnHash} not found`);\n if (deps[rtFnHash]) return; // already serialized and prevent infinite recursion on circular dependencies\n const serializedJitFn = getSerializableJitCompiler(jitFn);\n deps[rtFnHash] = serializedJitFn;\n jitFn.rtDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));\n jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));\n}\n\nexport function serializeMethodDeps(\n method: MethodWithOptions,\n deps: Record<string, CompiledFnData>,\n purFnDeps: PureFnsDataCache\n) {\n const {paramsJitHash, returnJitHash} = method;\n // an empty hash means no params, or a void return\n const utl = getRTUtils();\n const parser = method.options.parser ?? DEFAULT_PARSER;\n if (paramsJitHash !== EMPTY_HASH) {\n const paramsJitHashes = getJitFnHashes(paramsJitHash, parser.params);\n for (const k in paramsJitHashes) {\n if (utl.getRT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);\n }\n }\n if (returnJitHash !== EMPTY_HASH) {\n const returnJitHashes = getJitFnHashes(returnJitHash, parser.return);\n let foundAny = false;\n for (const k in returnJitHashes) {\n if (utl.getRT(returnJitHashes[k])) {\n serializeJitFn(returnJitHashes[k], deps, purFnDeps);\n foundAny = true;\n }\n }\n if (!foundAny) {\n throw new Error(\n `Method \"${method.id}\" declares returnJitHash=\"${returnJitHash}\" but no JIT functions are registered under that hash. ` +\n `This usually means a Promise/Function return type was not unwrapped before computing the hash.`\n );\n }\n }\n}\n\nfunction getSerializableJitCompiler(comp: CompiledTypeFn): CompiledFnData {\n return {\n typeName: comp.typeName,\n fnID: comp.fnID,\n // the exact emitting family — upstream's findRTForType gates on it, and unlike fnID it is\n // not composited, so the client cannot recover it from anything else on the wire\n familyTag: comp.familyTag,\n rtFnHash: comp.rtFnHash,\n args: {...comp.args},\n isNoop: comp.isNoop,\n defaultParamValues: {...comp.defaultParamValues},\n code: comp.code,\n rtDependencies: comp.rtDependencies ? [...comp.rtDependencies] : undefined,\n pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : undefined,\n // an alwaysThrow entry has no code, only this message; without it the client cannot rebuild\n // the throwing factory and surfaces a bare TypeError instead of the build-time diagnostic\n alwaysThrowMessage: comp.alwaysThrowMessage,\n };\n}\n"],"mappings":"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"}
@@ -3,16 +3,16 @@ import { getBatchIds } from "../batches.js";
3
3
  import { markOnDemand, middleware, mionInternalRouteIds } from "../lib/handlers.js";
4
4
  import { getSerializableMethod, serializeMethodDeps } from "../lib/remoteMethods.js";
5
5
  import { getAllExecutablesIds, getAnyExecutable, getBuildVersion, getMiddlewareExecutable, getRouteExecutable, getRouterOptions, getTotalExecutables } from "../router.js";
6
- import { __rt_A0Qb_E1CjDEA } from "../../.mion/types/A0Qb_E1CjDEA.js";
7
- import { __rt_A0Qb_fMIJ1JT } from "../../.mion/types/A0Qb_fMIJ1JT.js";
8
- import { __rt_Ky89_E1CjDEA } from "../../.mion/types/Ky89_E1CjDEA.js";
9
- import { __rt_Ky89_fMIJ1JT } from "../../.mion/types/Ky89_fMIJ1JT.js";
10
- import { __rt_Xhuv_E1CjDEA } from "../../.mion/types/Xhuv_E1CjDEA.js";
11
- import { __rt_OBOg_E1CjDEA } from "../../.mion/types/OBOg_E1CjDEA.js";
12
- import { __rt_OBOg_fMIJ1JT } from "../../.mion/types/OBOg_fMIJ1JT.js";
13
- import { __rt_Xhuv_fMIJ1JT } from "../../.mion/types/Xhuv_fMIJ1JT.js";
14
- import { __rt_mzca_fMIJ1JT } from "../../.mion/types/mzca_fMIJ1JT.js";
15
- import { __rt_E1CjDEA, __rt_HmqctzF, __rt_fMIJ1JT, __rt_w6KmCD1 } from "../../.mion/types/rt/eF4wQzU6Fd.js";
6
+ import { __rt_A0Qb_bWgCH09 } from "../../.mion/types/A0Qb_bWgCH09.js";
7
+ import { __rt_A0Qb_jMcsHAh } from "../../.mion/types/A0Qb_jMcsHAh.js";
8
+ import { __rt_Ky89_bWgCH09 } from "../../.mion/types/Ky89_bWgCH09.js";
9
+ import { __rt_Ky89_jMcsHAh } from "../../.mion/types/Ky89_jMcsHAh.js";
10
+ import { __rt_OBOg_bWgCH09 } from "../../.mion/types/OBOg_bWgCH09.js";
11
+ import { __rt_Xhuv_jMcsHAh } from "../../.mion/types/Xhuv_jMcsHAh.js";
12
+ import { __rt_OBOg_jMcsHAh } from "../../.mion/types/OBOg_jMcsHAh.js";
13
+ import { __rt_Xhuv_bWgCH09 } from "../../.mion/types/Xhuv_bWgCH09.js";
14
+ import { __rt_mzca_bWgCH09 } from "../../.mion/types/mzca_bWgCH09.js";
15
+ import { __rt_A7jnlIr, __rt_RZVVXkq, __rt_bWgCH09, __rt_jMcsHAh } from "../../.mion/types/rt/eF4wQzU6Fd.js";
16
16
  import { BUILD_VERSION_HEADER, FatalError, RpcError, StatusCodes } from "@mionjs/core";
17
17
  //#region src/middlewares/fetchMetadata.ts
18
18
  /** Rows alongside the call; with a mode, rows alone and the call stopped before its route runs. */
@@ -80,17 +80,17 @@ var mionFetchMetadata = markOnDemand(middleware(fetchMetadata, {
80
80
  },
81
81
  maxBodySize: 4096
82
82
  }, [
83
- __rt_Xhuv_fMIJ1JT,
84
- __rt_OBOg_fMIJ1JT,
85
- __rt_mzca_fMIJ1JT,
86
- __rt_A0Qb_fMIJ1JT,
87
- __rt_Ky89_fMIJ1JT
83
+ __rt_Xhuv_bWgCH09,
84
+ __rt_OBOg_bWgCH09,
85
+ __rt_mzca_bWgCH09,
86
+ __rt_A0Qb_bWgCH09,
87
+ __rt_Ky89_bWgCH09
88
88
  ], [
89
- __rt_Xhuv_E1CjDEA,
90
- __rt_OBOg_E1CjDEA,
91
- __rt_A0Qb_E1CjDEA,
92
- __rt_Ky89_E1CjDEA
93
- ], __rt_fMIJ1JT, __rt_E1CjDEA, __rt_w6KmCD1, __rt_HmqctzF), setBuildVersionHeader);
89
+ __rt_Xhuv_jMcsHAh,
90
+ __rt_OBOg_jMcsHAh,
91
+ __rt_A0Qb_jMcsHAh,
92
+ __rt_Ky89_jMcsHAh
93
+ ], __rt_bWgCH09, __rt_jMcsHAh, __rt_A7jnlIr, __rt_RZVVXkq), setBuildVersionHeader);
94
94
  //#endregion
95
95
  export { getMethodsDataFor, mionFetchMetadata };
96
96
 
@@ -0,0 +1,9 @@
1
+ import { FatalError } from '@mionjs/core';
2
+ import { CallContext } from '../types/context.ts';
3
+ import { MionSecurityOptions } from '../types/general.ts';
4
+ export declare function mionSecurity(options?: MionSecurityOptions): import('../types/definitions.ts').MiddlewareDef<(ctx: CallContext) => Promise<ReturnType<(ctx: CallContext, origin: string | null | undefined, trusted: boolean, sameOrigin: boolean) => void | FatalError<"unclear-body-length", any> | FatalError<"method-not-allowed", any> | FatalError<"cross-origin-request-refused", any> | FatalError<"unsupported-media-type", any>>>, {
5
+ readonly alwaysRun: true;
6
+ }, Partial<import('../types/general.ts').RouterOptions<any, any>>> | import('../types/definitions.ts').MiddlewareDef<(ctx: CallContext) => ReturnType<(ctx: CallContext, origin: string | null | undefined, trusted: boolean, sameOrigin: boolean) => void | FatalError<"unclear-body-length", any> | FatalError<"method-not-allowed", any> | FatalError<"cross-origin-request-refused", any> | FatalError<"unsupported-media-type", any>>, {
7
+ readonly alwaysRun: true;
8
+ }, Partial<import('../types/general.ts').RouterOptions<any, any>>>;
9
+ //# sourceMappingURL=security.d.ts.map