@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
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","names":[],"sources":["../../../src/router.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 {HostRequestHandler, Route, RouterOptions, Routes, RouterEntry} from './types/general.ts';\nimport type {\n RemoteMethod,\n MethodsExecutionChain,\n RawMethod,\n HeadersMethod,\n MiddlewareMethod,\n RouteMethod,\n} from './types/remoteMethods.ts';\nimport type {PublicApi, PrivateDef, MiddlewaresCollection} from './types/publicMethods.ts';\nimport type {HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef} from './types/definitions.ts';\nimport type {ResponseDefaults} from './types/context.ts';\nimport {DEFAULT_ROUTE_OPTIONS, JSON_CONTENT_TYPE, MAX_ROUTE_NESTING} from './constants.ts';\nimport {\n isRawMiddlewareDef,\n isHeadersMiddlewareDef,\n isExecutable,\n isMiddlewareDef,\n isRoute,\n isRoutes,\n isAnyMiddlewareDef,\n isPublicExecutable,\n} from './types/guards.ts';\nimport {\n BUILD_VERSION_HEADER,\n HandlerType,\n isTestEnv,\n resetRoutesCache,\n getOrCreateGlobal,\n resolveParser,\n DEFAULT_MAX_BODY_SIZE,\n} from '@mionjs/core';\nimport {getRawMethodReflection, getHandlerReflection, assertCompiledParser} from './lib/reflection.ts';\nimport {resolveChainMaxBodySize} from './lib/bodyLimit.ts';\nimport {callerForType} from './dispatch.ts';\nimport {serializerMiddlewares} from './routes/serializer.routes.ts';\nimport {\n getRouterItemId,\n getRoutePath,\n getENV,\n MION_ROUTES,\n MION_BATCH_KEY,\n routesCache,\n isUnsafePropertyName,\n} from '@mionjs/core';\nimport {setErrorOptions} from '@mionjs/core';\nimport {getPublicApi, resetRemoteMethodsMetadata} from './lib/remoteMethods.ts';\nimport {mionErrorsRoutes, notFoundMiddleware, batchNotFoundMiddleware} from './routes/errors.routes.ts';\nimport {capBatchBodySizes, clearBatches, getMaxBatchBodySize, refreshBatchChainBodyLimits} from './batches.ts';\nimport {\n headersMiddleware,\n isOnDemandMiddleware,\n getOnEveryCall,\n middleware,\n mionInternalRouteIds,\n mutation,\n query,\n rawMiddleware,\n route,\n} from './lib/handlers.ts';\nimport type {CallContext} from './types/context.ts';\nimport type {\n HeadersMiddlewareHelper,\n MiddlewareHelper,\n MionRouter,\n RawMiddlewareHelper,\n RouteHelper,\n RouterOptionsInput,\n RouterOptionsArg,\n} from './types/mionRouter.ts';\n\ntype RouterKeyEntryList = [string, RouterEntry][];\ntype RoutesWithId = {\n pathPointer: string[];\n routes: Routes;\n};\n\n// ############# PRIVATE STATE #############\n\nconst flatRouter = getOrCreateGlobal('mion.router.flatRouter', () => new Map<string, MethodsExecutionChain>()); // Main Router\n/** mion's two not-found chains (an unknown path, an unknown batch id) are NOT routes and not in the\n * router above: each is the global middleware behind a first member that throws, and is rebuilt on\n * every registration because that middleware is. */\nconst notFoundChains = getOrCreateGlobal('mion.router.notFoundChains', () => new Map<string, MethodsExecutionChain>());\nconst middlewaresById = getOrCreateGlobal(\n 'mion.router.middlewaresById',\n () => new Map<string, MiddlewareMethod | HeadersMethod | RawMethod>()\n);\nconst routesById = getOrCreateGlobal('mion.router.routesById', () => new Map<string, RouteMethod>());\nconst rawMiddlewaresById = getOrCreateGlobal('mion.router.rawMiddlewaresById', () => new Map<string, RawMethod>());\nconst middlewareNames = getOrCreateGlobal('mion.router.middlewareNames', () => new Set<string>());\nconst routeNames = getOrCreateGlobal('mion.router.routeNames', () => new Set<string>());\nlet complexity = 0;\nlet routerOptions: RouterOptions = {...DEFAULT_ROUTE_OPTIONS};\nlet isRouterInitialized = false;\nlet isRouterCreated = false;\nlet allExecutablesIds: string[] | undefined;\nlet platformConfig: Record<string, unknown> | undefined;\n/** Merged by initRouter, read per request. */\nlet responseDefaults: ResponseDefaults = mergeResponseDefaults({});\n/** Sent by mionFetchMetadata; unset with `apiVersionCheck` off, a pinned header or no build version. */\nlet buildVersion: string | undefined;\n/** The adapter's `maxBodySize` under its `maxBodySizeCap`, settled by setPlatformConfig (the default with no adapter). */\nlet platformMaxBodySize = DEFAULT_MAX_BODY_SIZE;\n\n/** Run before and after every middleware or route set through `mion.initRoutes` */\nconst defaultStartMiddlewares = {\n mionDeserializeRequest: serializerMiddlewares.mionDeserializeRequest,\n};\nconst defaultEndMiddlewares = {\n mionSerializeResponse: serializerMiddlewares.mionSerializeResponse,\n};\nlet startMiddlewaresDef: MiddlewaresCollection = {...defaultStartMiddlewares};\nlet endMiddlewaresDef: MiddlewaresCollection = {...defaultEndMiddlewares};\nexport let startMiddlewares: RemoteMethod[] = [];\nexport let endMiddlewares: RemoteMethod[] = [];\n\n// ############# PUBLIC METHODS #############\n\nexport const getRouteExecutionChain = (path: string) => flatRouter.get(path);\n/** The chain that answers an unknown path or an unknown batch id, by its `MION_ROUTES` id. */\nexport const getNotFoundExecutionChain = (id: string) => notFoundChains.get(id);\nexport const getRouteEntries = () => flatRouter.entries();\nexport const geRoutesSize = () => flatRouter.size;\nexport const getRouteExecutable = (id: string) => routesById.get(id);\nexport const getMiddlewareExecutable = (id: string) => middlewaresById.get(id);\nexport const getMiddlewaresSize = () => middlewaresById.size;\nexport const getComplexity = () => complexity;\nexport const getRouterOptions = <Opts extends RouterOptions>(): Readonly<Opts> => routerOptions as Opts;\n/** The version mionFetchMetadata sends in `x-build-version`. */\nexport const getBuildVersion = (): string | undefined => buildVersion;\n/** The headers every response starts with: every adapter reads it per request. */\nexport const getResponseDefaults = (): ResponseDefaults => responseDefaults;\n\nexport const getAnyExecutable = (id: string) => routesById.get(id) || middlewaresById.get(id) || rawMiddlewaresById.get(id);\n\n/** Called automatically by platform adapters: the adapter's `maxBodySize` and `maxBodySizeCap` are\n * settled here, once, so no request reads the config. */\nexport function setPlatformConfig(config: Record<string, unknown>): void {\n platformConfig = config;\n const published = config.maxBodySize;\n platformMaxBodySize = Math.min(\n typeof published === 'number' ? published : DEFAULT_MAX_BODY_SIZE,\n readMaxBodySizeCap(config) ?? Infinity\n );\n if (isRouterInitialized) applyMaxBodySizeCap();\n // Unconditional, and NOT inside applyMaxBodySizeCap: that returns early when the adapter published no\n // cap, while platformMaxBodySize still changed under every chain that declared nothing of its own.\n refreshChainBodyLimits();\n}\n\nexport const getPlatformConfig = (): Readonly<Record<string, unknown>> | undefined => platformConfig;\n\n// Survives resetRouter on purpose: a dev host reloads the entry after a reset and still owns the socket.\nconst devHost = getOrCreateGlobal('mion.router.devHost', () => ({\n ownsSocket: false,\n handler: undefined as HostRequestHandler | undefined,\n}));\n\n/** Set by a dev host that owns the socket (the mion vite plugin) BEFORE it loads the server entry, so whatever\n * platform adapter the entry starts registers its routes and hands over its handler instead of listening. */\nexport function setHostOwnsSocket(ownsSocket: boolean): void {\n devHost.ownsSocket = ownsSocket;\n if (!ownsSocket) devHost.handler = undefined;\n}\n\nexport const hostOwnsSocket = (): boolean => devHost.ownsSocket;\n\n/** Every platform adapter calls it on start; true means a dev host owns the socket and the adapter must not listen. */\nexport function handOverToHost(handler: HostRequestHandler): boolean {\n if (devHost.ownsSocket) devHost.handler = handler;\n return devHost.ownsSocket;\n}\n\nexport const getHostRequestHandler = (): HostRequestHandler | undefined => devHost.handler;\n\nexport const resetRouter = () => {\n flatRouter.clear();\n notFoundChains.clear();\n middlewaresById.clear();\n routesById.clear();\n rawMiddlewaresById.clear();\n middlewareNames.clear();\n routeNames.clear();\n complexity = 0;\n routerOptions = {...DEFAULT_ROUTE_OPTIONS};\n startMiddlewaresDef = {...defaultStartMiddlewares};\n endMiddlewaresDef = {...defaultEndMiddlewares};\n startMiddlewares = [];\n endMiddlewares = [];\n isRouterInitialized = false;\n isRouterCreated = false;\n allExecutablesIds = undefined;\n platformConfig = undefined;\n responseDefaults = mergeResponseDefaults({});\n buildVersion = undefined;\n platformMaxBodySize = DEFAULT_MAX_BODY_SIZE;\n resetRemoteMethodsMetadata();\n resetRoutesCache();\n clearBatches();\n // resetJitFnCaches() is deliberately NOT called: the JIT caches are global, and the\n // serializableClassRegistry it clears is needed to (de)serialize classes like RpcError.\n // Only a test of AOT cache loading calls it.\n};\n\n/** The ONE way to initialize the router and to declare routes and middlewares: the options are written once\n * and carried BY TYPE into every helper the factory returns, so a handler's `ctx.shared` is typed from\n * `contextDataFactory` and router-wide defaults can be read at build time. The helpers are plain closures\n * (no `this`), so destructuring them is fine. Create the router once per app: a second call throws until\n * `resetRouter()` (tests) clears it. */\nexport function createMionRouter<const O extends RouterOptionsInput = RouterOptionsInput>(\n opts?: RouterOptionsArg<O>\n): MionRouter<O> {\n if (isRouterCreated)\n throw new Error(\n 'createMionRouter has already been called: create the router once per app (resetRouter() clears it in tests)'\n );\n isRouterCreated = true;\n const options = Object.freeze({...opts}) as Readonly<O>;\n return {\n options,\n route: route as RouteHelper<O>,\n query: query as RouteHelper<O, false>,\n mutation: mutation as RouteHelper<O, true>,\n middleware: middleware as MiddlewareHelper<O>,\n headersMiddleware: headersMiddleware as HeadersMiddlewareHelper<O>,\n rawMiddleware: rawMiddleware as RawMiddlewareHelper<O>,\n // Typed by MionRouter, the one place its signature is written.\n initRoutes(routes, buildVersion) {\n initRouter(options, buildVersion);\n const api = registerRoutes(routes);\n if (platformConfig) applyMaxBodySizeCap();\n refreshChainBodyLimits();\n return api;\n },\n };\n}\n\n/** Once per app; `resetRouter()` clears it. */\nfunction initRouter(opts: RouterOptionsInput, version?: string): void {\n if (isRouterInitialized) throw new Error('Router has already been initialized');\n routerOptions = {...routerOptions, ...opts};\n // a pinned version already rides every response, so the middleware adds none\n responseDefaults = mergeResponseDefaults(routerOptions.responseHeaders);\n const isPinned = responseDefaults[BUILD_VERSION_HEADER] !== undefined;\n buildVersion = (routerOptions.apiVersionCheck && !isPinned && version) || undefined;\n validateSharedDataFactory(routerOptions);\n Object.freeze(routerOptions);\n setErrorOptions(routerOptions);\n isRouterInitialized = true;\n registerRoutes({...mionErrorsRoutes});\n if (!isTestEnv()) console.log('mion router initialized', {routerOptions});\n}\n\nfunction registerRoutes<R extends Routes>(routes: R): PublicApi<R> {\n if (!isRouterInitialized) throw new Error('the router must be initialized first');\n startMiddlewares = getExecutablesFromMiddlewaresCollection(startMiddlewaresDef);\n endMiddlewares = getExecutablesFromMiddlewaresCollection(endMiddlewaresDef);\n recursiveFlatRoutes(routes, [], [], [], 0);\n buildNotFoundChains();\n allExecutablesIds = undefined; // the memoized id list must see the routes registered by this call\n if (shouldFullGenerateSpec()) {\n return getPublicApi(routes);\n }\n return {} as PublicApi<R>;\n}\n\n/** Adds middlewares at the start of the ExecutionChain, before the existing start middlewares by default */\nexport function addStartMiddlewares(middlewaresDef: MiddlewaresCollection, appendBeforeExisting = true) {\n if (isRouterInitialized) throw new Error('Can not add start middlewares after the router has been initialized');\n if (appendBeforeExisting) {\n startMiddlewaresDef = {...middlewaresDef, ...startMiddlewaresDef};\n return;\n }\n startMiddlewaresDef = {...startMiddlewaresDef, ...middlewaresDef};\n}\n\n/** Adds middlewares at the end of the ExecutionChain, after the existing end middlewares by default */\nexport function addEndMiddlewares(middlewaresDef: MiddlewaresCollection, prependAfterExisting = true) {\n if (isRouterInitialized) throw new Error('Can not add end middlewares after the router has been initialized');\n if (prependAfterExisting) {\n endMiddlewaresDef = {...endMiddlewaresDef, ...middlewaresDef};\n return;\n }\n endMiddlewaresDef = {...middlewaresDef, ...endMiddlewaresDef};\n}\n\nexport function isPrivateDefinition(entry: RouterEntry, id: string): entry is PrivateDef {\n if (isRoute(entry)) return false;\n if (isRawMiddlewareDef(entry)) return true;\n try {\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable) throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);\n return !isPublicExecutable(executable);\n } catch {\n // a Routes object has no handler, so no executable is found\n return false;\n }\n}\n\nexport function getTotalExecutables(): number {\n return routesById.size + middlewaresById.size + rawMiddlewaresById.size;\n}\n\nexport function getAllExecutablesIds(): string[] {\n if (allExecutablesIds) return allExecutablesIds;\n allExecutablesIds = [...routesById.keys(), ...middlewaresById.keys(), ...rawMiddlewaresById.keys()];\n return allExecutablesIds;\n}\n\n// used by codegen\nexport function shouldFullGenerateSpec(): boolean {\n return routerOptions.getPublicRoutesData || getENV('GENERATE_ROUTER_SPEC') === 'true';\n}\n\n// ############# PRIVATE METHODS #############\n\n/** Flattens the routes object into a list of Executable objects. `currentPointer` is the position in that\n * object (i.e. ['users', 'get']); `preMiddlewares` / `postMiddlewares` are the middlewares one level up, before\n * and after that position. */\nfunction recursiveFlatRoutes(\n routes: Routes,\n currentPointer: string[] = [],\n preMiddlewares: RemoteMethod[] = [],\n postMiddlewares: RemoteMethod[] = [],\n nestLevel = 0\n) {\n if (nestLevel > MAX_ROUTE_NESTING)\n throw new Error('Too many nested routes, you can only nest routes ${MAX_ROUTE_NESTING} levels');\n\n const entries = Object.entries(routes);\n if (entries.length === 0)\n throw new Error(`Invalid route: ${currentPointer.length ? joinPath(...currentPointer) : '*'}. Can Not define empty routes`);\n\n let minus1Props: ReturnType<typeof getRouteEntryProperties> | null = null;\n for (let index = 0; index < entries.length; index++) {\n const [key, item] = entries[index];\n const newPointer = [...currentPointer, key];\n let routeEntry: RemoteMethod | RoutesWithId;\n if (typeof key !== 'string' || !isNaN(key as any))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Numeric route names are not allowed`);\n if (key.includes(',')) throw new Error(`Invalid route: ${joinPath(...newPointer)}. Route names cannot contain commas.`);\n // a route id is used as an object key on both ends of the wire, so a prototype name can never be one\n if (isUnsafePropertyName(key))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. '${key}' is not a valid route name.`);\n if (key === MION_BATCH_KEY)\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. '${MION_BATCH_KEY}' is a reserved mion route name.`);\n\n if (isAnyMiddlewareDef(item)) {\n // a start or end middleware already owns this id, and would otherwise be silently reused in its place\n if (nestLevel === 0 && (Object.hasOwn(startMiddlewaresDef, key) || Object.hasOwn(endMiddlewaresDef, key)))\n throw new Error(`Invalid middleware: ${joinPath(...newPointer)}. '${key}' is a reserved mion middleware name.`);\n // it can stop a call before its route, so every route must come after it\n if (\n isOnDemandMiddleware(item) &&\n (nestLevel !== 0 || entries.slice(0, index).some(([, entry]) => !isAnyMiddlewareDef(entry)))\n )\n throw new Error(\n `Invalid middleware: ${joinPath(...newPointer)}. Place '${key}' at the root of your routes, before any route or group.`\n );\n routeEntry = getExecutableFromAnyMiddleware(item, newPointer, nestLevel);\n if (middlewareNames.has(routeEntry.id))\n throw new Error(`Invalid middleware: ${joinPath(...newPointer)}. Naming collision, duplicated middleware.`);\n middlewareNames.add(routeEntry.id);\n } else if (isRoute(item)) {\n routeEntry = getExecutableFromRoute(item, newPointer, nestLevel);\n if (routeNames.has(routeEntry.id))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Naming collision, duplicated route`);\n routeNames.add(routeEntry.id);\n } else if (isRoutes(item)) {\n routeEntry = {\n pathPointer: newPointer,\n routes: item,\n };\n } else {\n const itemType = typeof item;\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Type <${itemType}> is not a valid route.`);\n }\n\n minus1Props = recursiveCreateExecutionChain(\n routeEntry,\n newPointer,\n preMiddlewares,\n postMiddlewares,\n nestLevel,\n index,\n entries,\n minus1Props\n );\n\n complexity++;\n }\n}\n\nfunction recursiveCreateExecutionChain(\n routeEntry: RemoteMethod | RoutesWithId,\n currentPointer: string[],\n preMiddlewares: RemoteMethod[],\n postMiddlewares: RemoteMethod[],\n nestLevel: number,\n index: number,\n routeKeyedEntries: RouterKeyEntryList,\n minus1Props: ReturnType<typeof getRouteEntryProperties> | null\n) {\n const minus1 = getEntry(index - 1, routeKeyedEntries);\n const plus1 = getEntry(index + 1, routeKeyedEntries);\n const props = getRouteEntryProperties(minus1, routeEntry, plus1);\n\n if (props.isBetweenRoutes && minus1Props) {\n props.preLevelMiddlewares = minus1Props.preLevelMiddlewares;\n props.postLevelMiddlewares = minus1Props.postLevelMiddlewares;\n } else {\n for (let i = 0; i < routeKeyedEntries.length; i++) {\n const [k, entry] = routeKeyedEntries[i];\n complexity++;\n if (!isAnyMiddlewareDef(entry)) continue;\n const newPointer = [...currentPointer.slice(0, -1), k];\n const executable = getExecutableFromAnyMiddleware(entry, newPointer, nestLevel);\n if (i < index) props.preLevelMiddlewares.push(executable);\n if (i > index) props.postLevelMiddlewares.push(executable);\n }\n }\n const isExec = isExecutable(routeEntry);\n\n if (isExec && props.isRoute) {\n const path = getRoutePath(routeEntry.pointer, routerOptions);\n const routeMethod = routeEntry as RouteMethod;\n const levelMethods = [\n ...preMiddlewares,\n ...props.preLevelMiddlewares,\n routeEntry,\n ...props.postLevelMiddlewares,\n ...postMiddlewares,\n ];\n const methods = [...startMiddlewares, ...levelMethods, ...endMiddlewares];\n // internal error routes are never client-called: platform's size, not their no-params tuple's tiny one\n const maxBodySize = mionInternalRouteIds.has(routeMethod.id)\n ? routeMethod.options.maxBodySize\n : resolveChainMaxBodySize(methods, routeMethod, routerOptions);\n // published in the metadata; undefined means the platform's, filled in when the metadata is read\n if (maxBodySize !== undefined) routeMethod.options.maxBodySize = maxBodySize;\n const executionChain: MethodsExecutionChain = {\n routeIndex: startMiddlewares.length + preMiddlewares.length + props.preLevelMiddlewares.length,\n methods,\n path,\n declaredBodySize: maxBodySize,\n maxBodySize: maxBodySize ?? platformMaxBodySize,\n readsBody: true,\n };\n // route-level only: a global start/end middleware is not in the API type, so a built client never lists it\n const middlewareIds = getPublicMiddlewareIds(levelMethods);\n // add middleware deps, so can be serialized with the router\n if (middlewareIds.length) routeMethod.middlewareIds = middlewareIds;\n flatRouter.set(path, executionChain);\n } else if (!isExec) {\n recursiveFlatRoutes(\n routeEntry.routes,\n routeEntry.pathPointer,\n [...preMiddlewares, ...props.preLevelMiddlewares],\n [...props.postLevelMiddlewares, ...postMiddlewares],\n nestLevel + 1\n );\n }\n\n return props;\n}\n\n/** The thrower goes first so the dispatcher skips every later non-`alwaysRun` member; body size is the platform's. */\nfunction buildNotFoundChains(): void {\n notFoundChains.clear();\n const throwers = [\n [MION_ROUTES.notFound, notFoundMiddleware],\n [MION_ROUTES.batchNotFound, batchNotFoundMiddleware],\n ] as const;\n for (const [id, middlewareDef] of throwers) {\n const methods = [getExecutableFromRawMiddleware(middlewareDef, [id], 0), ...startMiddlewares, ...endMiddlewares];\n notFoundChains.set(id, {\n routeIndex: -1, // there is no route in this chain\n methods,\n // a shared chain answers for many paths, so the request brings its own\n path: undefined,\n declaredBodySize: undefined,\n maxBodySize: platformMaxBodySize,\n readsBody: false,\n });\n }\n}\n\nfunction getExecutableFromAnyMiddleware(\n middleware: MiddlewareDef | HeadersMiddlewareDef | RawMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n) {\n if (isRawMiddlewareDef(middleware)) return getExecutableFromRawMiddleware(middleware, middlewarePointer, nestLevel);\n return getExecutableFromMiddleware(middleware, middlewarePointer, nestLevel);\n}\n\nexport function getExecutableFromMiddleware(\n middleware: MiddlewareDef | HeadersMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n): MiddlewareMethod | HeadersMethod {\n const isHeader = isHeadersMiddlewareDef(middleware);\n // todo fix header id should be same as any other one and then maybe map from id to header name\n const middlewareId = getRouterItemId(middlewarePointer);\n const existing = middlewaresById.get(middlewareId);\n if (existing) return existing as MiddlewareMethod;\n\n type MixedMiddleware = (Omit<MiddlewareMethod, 'type'> | Omit<HeadersMethod, 'type'>) & {\n type: typeof HandlerType.middleware | typeof HandlerType.headersMiddleware;\n };\n\n let executable: MixedMiddleware;\n {\n const parser = resolveParser(middleware.options?.parser, routerOptions.parser, middlewareId);\n const reflectionData = getHandlerReflection(middleware, middlewareId, routerOptions, middleware.options ?? {}, isHeader);\n assertCompiledParser(middlewareId, parser, reflectionData);\n const middlewareType = isHeader ? HandlerType.headersMiddleware : HandlerType.middleware;\n executable = {\n id: middlewareId,\n type: middlewareType,\n nestLevel,\n handler: middleware.handler,\n pointer: middlewarePointer,\n // resolved here so the dispatch loop reads a field instead of deriving them per request\n methodCaller: isOnDemandMiddleware(middleware)\n ? onDemandCaller(callerForType(middlewareType), getOnEveryCall(middleware))\n : callerForType(middlewareType),\n alwaysRun: !!middleware.options?.alwaysRun,\n quotedId: JSON.stringify(middlewareId),\n ...reflectionData,\n options: {\n alwaysRun: !!middleware.options?.alwaysRun,\n description: middleware.options?.description,\n parser,\n sanitizeParams: middleware.options?.sanitizeParams ?? routerOptions.sanitizeParams,\n },\n };\n // a middleware's maxBodySize is its OWN contribution to every chain it sits in, never resolved;\n // written only when set, so the metadata a client receives carries no `undefined` key\n if (middleware.options?.maxBodySize !== undefined) executable.options.maxBodySize = middleware.options.maxBodySize;\n }\n\n middlewaresById.set(middlewareId, executable as any);\n routesCache.setMethodJitFns(middlewareId, executable as any);\n return executable as any;\n}\n\n/** An absent slot skips the params pipeline; the answer is the same only because such a middleware's params are optional. */\nfunction onDemandCaller(\n caller: RemoteMethod['methodCaller'],\n onEveryCall?: ReturnType<typeof getOnEveryCall>\n): RemoteMethod['methodCaller'] {\n return (context: CallContext, executable: RemoteMethod, request: {body: Record<string, unknown>}, ...rest: unknown[]) => {\n onEveryCall?.(context);\n return request.body[executable.id] === undefined ? undefined : caller(context, executable, request, ...rest);\n };\n}\n\nexport function getExecutableFromRawMiddleware(\n middleware: RawMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n): RawMethod {\n const middlewareId = getRouterItemId(middlewarePointer);\n const existing = rawMiddlewaresById.get(middlewareId);\n if (existing) return existing as RawMethod;\n const reflectionData = getRawMethodReflection(middleware.handler, middlewareId, routerOptions);\n const executable: RawMethod = {\n id: middlewareId,\n type: HandlerType.rawMiddleware,\n nestLevel,\n handler: middleware.handler,\n pointer: middlewarePointer,\n methodCaller: callerForType(HandlerType.rawMiddleware),\n alwaysRun: !!middleware.options?.alwaysRun,\n quotedId: JSON.stringify(middlewareId),\n ...reflectionData,\n options: {\n alwaysRun: !!middleware.options?.alwaysRun,\n description: middleware.options?.description,\n },\n };\n rawMiddlewaresById.set(middlewareId, executable);\n routesCache.setMethodJitFns(middlewareId, executable as any);\n return executable;\n}\n\nexport function getExecutableFromRoute(route: Route, routePointer: string[], nestLevel: number): RouteMethod {\n const routeId = getRouterItemId(routePointer);\n const existing = routesById.get(routeId);\n if (existing) return existing as RouteMethod;\n\n let executable: RouteMethod;\n {\n const parser = resolveParser(route.options?.parser, routerOptions.parser, routeId);\n const reflectionData = getHandlerReflection(route, routeId, routerOptions, route.options ?? {}, false);\n assertCompiledParser(routeId, parser, reflectionData);\n executable = {\n id: routeId,\n type: HandlerType.route,\n nestLevel,\n handler: route.handler,\n pointer: routePointer,\n methodCaller: callerForType(HandlerType.route),\n alwaysRun: false,\n quotedId: JSON.stringify(routeId),\n ...reflectionData,\n options: {\n alwaysRun: false,\n description: route.options?.description,\n parser,\n isMutation: route.options?.isMutation,\n sanitizeParams: route.options?.sanitizeParams ?? routerOptions.sanitizeParams,\n },\n };\n // the route option as written; the chain resolution overwrites it with the resolved number\n if (route.options?.maxBodySize !== undefined) executable.options.maxBodySize = route.options.maxBodySize;\n }\n routesById.set(routeId, executable);\n routesCache.setMethodJitFns(routeId, executable as any);\n return executable;\n}\n\nfunction getPublicMiddlewareIds(methods: RemoteMethod[]): string[] {\n const ids = methods\n .filter((exec) => isPublicExecutable(exec))\n .map((exec) => getRouterItemId(exec.pointer))\n .filter((mfId) => {\n if (mionInternalRouteIds.has(mfId)) return false;\n const exec = getMiddlewareExecutable(mfId);\n return exec && isPublicExecutable(exec);\n });\n return ids;\n}\n\nfunction getEntry(index: number, keyEntryList: RouterKeyEntryList) {\n return keyEntryList[index]?.[1];\n}\n\nfunction getRouteEntryProperties(\n minus1: RouterEntry | undefined,\n zero: RemoteMethod | RoutesWithId,\n plus1: RouterEntry | undefined\n) {\n const minus1IsRoute = minus1 && isRoute(minus1);\n const zeroIsRoute = (zero as RemoteMethod).type === HandlerType.route;\n const plus1IsRoute = plus1 && isRoute(plus1);\n\n const isExec = !!(zero as RemoteMethod).handler;\n\n return {\n isBetweenRoutes: minus1IsRoute && zeroIsRoute && plus1IsRoute,\n isExecutable: isExec,\n isRoute: zeroIsRoute,\n preLevelMiddlewares: [] as RemoteMethod[],\n postLevelMiddlewares: [] as RemoteMethod[],\n };\n}\n\nfunction getExecutablesFromMiddlewaresCollection(\n middlewaresDef: MiddlewaresCollection\n): (RawMethod | MiddlewareMethod | HeadersMethod)[] {\n const results: (RawMethod | MiddlewareMethod | HeadersMethod)[] = [];\n for (const [key, middleware] of Object.entries(middlewaresDef)) {\n if (isRawMiddlewareDef(middleware)) {\n results.push(getExecutableFromRawMiddleware(middleware, [key], 0));\n } else if (isHeadersMiddlewareDef(middleware) || isMiddlewareDef(middleware)) {\n results.push(getExecutableFromMiddleware(middleware, [key], 0));\n } else {\n throw new Error(`Invalid middleware: ${key}. Invalid middleware definition`);\n }\n }\n return results;\n}\n\nfunction validateSharedDataFactory(opts?: Partial<RouterOptions>): void {\n if (!opts?.contextDataFactory) return;\n const testSharedData = opts.contextDataFactory();\n if (\n typeof testSharedData !== 'object' ||\n Array.isArray(testSharedData) ||\n testSharedData === null ||\n Object.keys(testSharedData).length === 0\n ) {\n throw new Error('contextDataFactory must return a plain object with at least one property');\n }\n}\n\n/** Hand-rolled: Node's 'path' module is not available in edge runtimes. */\nfunction joinPath(...parts: string[]): string {\n return parts.filter(Boolean).join('/');\n}\n\n// ############# PLATFORM SIZE LIMITS #############\n\n/** What a route takes when its own option is unset and its types cannot say: the adapter's `maxBodySize`,\n * published with its config at start, else the shared default (a router driven with no adapter, as in tests). */\nexport const getPlatformMaxBodySize = (): number => platformMaxBodySize;\n\n/** The platform's own request ceiling, when the adapter published one. */\nexport const getPlatformRequestCap = (): number | undefined => readMaxBodySizeCap(platformConfig);\n\n/** The largest limit any registered route or batch resolves to: what a platform with ONE native,\n * server-wide read limit (bun) starts with, so it never refuses a body a route allows. */\nexport function getMaxRouteBodySize(): number {\n let largest = getPlatformMaxBodySize();\n for (const chain of flatRouter.values()) largest = Math.max(largest, chain.maxBodySize);\n return Math.max(largest, getMaxBatchBodySize());\n}\n\n/** The platform's own request ceiling the adapter published, in bytes; undefined means none. */\nfunction readMaxBodySizeCap(config: Record<string, unknown> | undefined): number | undefined {\n const cap = config?.maxBodySizeCap;\n return typeof cap === 'number' ? cap : undefined;\n}\n\n/** A limit above the platform's ceiling would promise a size the platform refuses before mion ever runs,\n * so it is brought down. Applied once, when the adapter has published its config AND the routes are\n * registered, whichever comes last. */\nfunction applyMaxBodySizeCap(): void {\n const cap = readMaxBodySizeCap(platformConfig);\n if (cap === undefined) return;\n for (const chain of flatRouter.values()) {\n if (chain.declaredBodySize === undefined || chain.declaredBodySize <= cap) continue;\n chain.declaredBodySize = cap;\n const route = chain.methods[chain.routeIndex];\n if (route.options.maxBodySize !== undefined) route.options.maxBodySize = cap;\n }\n capBatchBodySizes(cap);\n}\n\n/** `maxBodySize` caches two inputs that both move after a chain is built: the cap above lowers what a\n * chain declared, and `setPlatformConfig` replaces the fallback the chains that declared nothing read.\n * Missing a refresh refuses bodies a route allows, or allows bodies past the platform's ceiling. */\nfunction refreshChainBodyLimits(): void {\n for (const chain of flatRouter.values()) chain.maxBodySize = chain.declaredBodySize ?? platformMaxBodySize;\n for (const chain of notFoundChains.values()) chain.maxBodySize = chain.declaredBodySize ?? platformMaxBodySize;\n refreshBatchChainBodyLimits(platformMaxBodySize);\n}\n\n/** `server` first so the option can replace it, `content-type` last so it cannot; lowercased, or `Headers` would\n * append a name repeated in another case. */\nfunction mergeResponseDefaults(responseHeaders: Record<string, string>): ResponseDefaults {\n const merged: Record<string, string> = {server: 'mionjs'};\n for (const name in responseHeaders) merged[name.toLowerCase()] = responseHeaders[name];\n merged['content-type'] = JSON_CONTENT_TYPE;\n return merged;\n}\n"],"mappings":";;;;;;;;;;;;AAsFA,IAAM,aAAa,kBAAkB,gDAAgC,IAAI,IAAmC,CAAC;;;;AAI7G,IAAM,iBAAiB,kBAAkB,oDAAoC,IAAI,IAAmC,CAAC;AACrH,IAAM,kBAAkB,kBACtB,qDACM,IAAI,IAA0D,CACtE;AACA,IAAM,aAAa,kBAAkB,gDAAgC,IAAI,IAAyB,CAAC;AACnG,IAAM,qBAAqB,kBAAkB,wDAAwC,IAAI,IAAuB,CAAC;AACjH,IAAM,kBAAkB,kBAAkB,qDAAqC,IAAI,IAAY,CAAC;AAChG,IAAM,aAAa,kBAAkB,gDAAgC,IAAI,IAAY,CAAC;AACtF,IAAI,aAAa;AACjB,IAAI,gBAA+B,EAAC,GAAG,sBAAqB;AAC5D,IAAI,sBAAsB;AAC1B,IAAI,kBAAkB;AACtB,IAAI;AACJ,IAAI;;AAEJ,IAAI,mBAAqC,sBAAsB,CAAC,CAAC;;AAEjE,IAAI;;AAEJ,IAAI,sBAAsB;;AAG1B,IAAM,0BAA0B,EAC9B,wBAAwB,sBAAsB,uBAChD;AACA,IAAM,wBAAwB,EAC5B,uBAAuB,sBAAsB,sBAC/C;AACA,IAAI,sBAA6C,EAAC,GAAG,wBAAuB;AAC5E,IAAI,oBAA2C,EAAC,GAAG,sBAAqB;AACxE,IAAW,mBAAmC,CAAC;AAC/C,IAAW,iBAAiC,CAAC;AAI7C,IAAa,0BAA0B,SAAiB,WAAW,IAAI,IAAI;;AAE3E,IAAa,6BAA6B,OAAe,eAAe,IAAI,EAAE;AAC9E,IAAa,wBAAwB,WAAW,QAAQ;AACxD,IAAa,qBAAqB,WAAW;AAC7C,IAAa,sBAAsB,OAAe,WAAW,IAAI,EAAE;AACnE,IAAa,2BAA2B,OAAe,gBAAgB,IAAI,EAAE;AAC7E,IAAa,2BAA2B,gBAAgB;AACxD,IAAa,sBAAsB;AACnC,IAAa,yBAAqE;;AAElF,IAAa,wBAA4C;;AAEzD,IAAa,4BAA8C;AAE3D,IAAa,oBAAoB,OAAe,WAAW,IAAI,EAAE,KAAK,gBAAgB,IAAI,EAAE,KAAK,mBAAmB,IAAI,EAAE;;;AAI1H,SAAgB,kBAAkB,QAAuC;CACvE,iBAAiB;CACjB,MAAM,YAAY,OAAO;CACzB,sBAAsB,KAAK,IACzB,OAAO,cAAc,WAAW,YAAY,uBAC5C,mBAAmB,MAAM,KAAK,QAChC;CACA,IAAI,qBAAqB,oBAAoB;CAG7C,uBAAuB;AACzB;AAEA,IAAa,0BAAyE;AAGtF,IAAM,UAAU,kBAAkB,8BAA8B;CAC9D,YAAY;CACZ,SAAS,KAAA;AACX,EAAE;;;AAIF,SAAgB,kBAAkB,YAA2B;CAC3D,QAAQ,aAAa;CACrB,IAAI,CAAC,YAAY,QAAQ,UAAU,KAAA;AACrC;AAEA,IAAa,uBAAgC,QAAQ;;AAGrD,SAAgB,eAAe,SAAsC;CACnE,IAAI,QAAQ,YAAY,QAAQ,UAAU;CAC1C,OAAO,QAAQ;AACjB;AAEA,IAAa,8BAA8D,QAAQ;AAEnF,IAAa,oBAAoB;CAC/B,WAAW,MAAM;CACjB,eAAe,MAAM;CACrB,gBAAgB,MAAM;CACtB,WAAW,MAAM;CACjB,mBAAmB,MAAM;CACzB,gBAAgB,MAAM;CACtB,WAAW,MAAM;CACjB,aAAa;CACb,gBAAgB,EAAC,GAAG,sBAAqB;CACzC,sBAAsB,EAAC,GAAG,wBAAuB;CACjD,oBAAoB,EAAC,GAAG,sBAAqB;CAC7C,mBAAmB,CAAC;CACpB,iBAAiB,CAAC;CAClB,sBAAsB;CACtB,kBAAkB;CAClB,oBAAoB,KAAA;CACpB,iBAAiB,KAAA;CACjB,mBAAmB,sBAAsB,CAAC,CAAC;CAC3C,eAAe,KAAA;CACf,sBAAsB;CACtB,2BAA2B;CAC3B,iBAAiB;CACjB,aAAa;AAIf;;;;;;AAOA,SAAgB,iBACd,MACe;CACf,IAAI,iBACF,MAAM,IAAI,MACR,6GACF;CACF,kBAAkB;CAClB,MAAM,UAAU,OAAO,OAAO,EAAC,GAAG,KAAI,CAAC;CACvC,OAAO;EACL;EACO;EACA;EACG;EACE;EACO;EACJ;EAEf,WAAW,QAAQ,cAAc;GAC/B,WAAW,SAAS,YAAY;GAChC,MAAM,MAAM,eAAe,MAAM;GACjC,IAAI,gBAAgB,oBAAoB;GACxC,uBAAuB;GACvB,OAAO;EACT;CACF;AACF;;AAGA,SAAS,WAAW,MAA0B,SAAwB;CACpE,IAAI,qBAAqB,MAAM,IAAI,MAAM,qCAAqC;CAC9E,gBAAgB;EAAC,GAAG;EAAe,GAAG;CAAI;CAE1C,mBAAmB,sBAAsB,cAAc,eAAe;CACtE,MAAM,WAAW,iBAAiB,0BAA0B,KAAA;CAC5D,eAAgB,cAAc,mBAAmB,CAAC,YAAY,WAAY,KAAA;CAC1E,0BAA0B,aAAa;CACvC,OAAO,OAAO,aAAa;CAC3B,gBAAgB,aAAa;CAC7B,sBAAsB;CACtB,eAAe,EAAC,GAAG,iBAAgB,CAAC;CACpC,IAAI,CAAC,UAAU,GAAG,QAAQ,IAAI,2BAA2B,EAAC,cAAa,CAAC;AAC1E;AAEA,SAAS,eAAiC,QAAyB;CACjE,IAAI,CAAC,qBAAqB,MAAM,IAAI,MAAM,sCAAsC;CAChF,mBAAmB,wCAAwC,mBAAmB;CAC9E,iBAAiB,wCAAwC,iBAAiB;CAC1E,oBAAoB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;CACzC,oBAAoB;CACpB,oBAAoB,KAAA;CACpB,IAAI,uBAAuB,GACzB,OAAO,aAAa,MAAM;CAE5B,OAAO,CAAC;AACV;;AAGA,SAAgB,oBAAoB,gBAAuC,uBAAuB,MAAM;CACtG,IAAI,qBAAqB,MAAM,IAAI,MAAM,qEAAqE;CAC9G,IAAI,sBAAsB;EACxB,sBAAsB;GAAC,GAAG;GAAgB,GAAG;EAAmB;EAChE;CACF;CACA,sBAAsB;EAAC,GAAG;EAAqB,GAAG;CAAc;AAClE;;AAGA,SAAgB,kBAAkB,gBAAuC,uBAAuB,MAAM;CACpG,IAAI,qBAAqB,MAAM,IAAI,MAAM,mEAAmE;CAC5G,IAAI,sBAAsB;EACxB,oBAAoB;GAAC,GAAG;GAAmB,GAAG;EAAc;EAC5D;CACF;CACA,oBAAoB;EAAC,GAAG;EAAgB,GAAG;CAAiB;AAC9D;AAEA,SAAgB,oBAAoB,OAAoB,IAAiC;CACvF,IAAI,QAAQ,KAAK,GAAG,OAAO;CAC3B,IAAI,mBAAmB,KAAK,GAAG,OAAO;CACtC,IAAI;EACF,MAAM,aAAa,wBAAwB,EAAE,KAAK,mBAAmB,EAAE;EACvE,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,uBAAuB,GAAG,gEAAgE;EAC3H,OAAO,CAAC,mBAAmB,UAAU;CACvC,QAAQ;EAEN,OAAO;CACT;AACF;AAEA,SAAgB,sBAA8B;CAC5C,OAAO,WAAW,OAAO,gBAAgB,OAAO,mBAAmB;AACrE;AAEA,SAAgB,uBAAiC;CAC/C,IAAI,mBAAmB,OAAO;CAC9B,oBAAoB;EAAC,GAAG,WAAW,KAAK;EAAG,GAAG,gBAAgB,KAAK;EAAG,GAAG,mBAAmB,KAAK;CAAC;CAClG,OAAO;AACT;AAGA,SAAgB,yBAAkC;CAChD,OAAO,cAAc,uBAAuB,OAAO,sBAAsB,MAAM;AACjF;;;;AAOA,SAAS,oBACP,QACA,iBAA2B,CAAC,GAC5B,iBAAiC,CAAC,GAClC,kBAAkC,CAAC,GACnC,YAAY,GACZ;CACA,IAAI,YAAA,IACF,MAAM,IAAI,MAAM,8EAA8E;CAEhG,MAAM,UAAU,OAAO,QAAQ,MAAM;CACrC,IAAI,QAAQ,WAAW,GACrB,MAAM,IAAI,MAAM,kBAAkB,eAAe,SAAS,SAAS,GAAG,cAAc,IAAI,IAAI,8BAA8B;CAE5H,IAAI,cAAiE;CACrE,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS;EACnD,MAAM,CAAC,KAAK,QAAQ,QAAQ;EAC5B,MAAM,aAAa,CAAC,GAAG,gBAAgB,GAAG;EAC1C,IAAI;EACJ,IAAI,OAAO,QAAQ,YAAY,CAAC,MAAM,GAAU,GAC9C,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,sCAAsC;EAClG,IAAI,IAAI,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,qCAAqC;EAEtH,IAAI,qBAAqB,GAAG,GAC1B,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,KAAK,IAAI,6BAA6B;EAClG,IAAI,QAAQ,gBACV,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,KAAK,eAAe,iCAAiC;EAEjH,IAAI,mBAAmB,IAAI,GAAG;GAE5B,IAAI,cAAc,MAAM,OAAO,OAAO,qBAAqB,GAAG,KAAK,OAAO,OAAO,mBAAmB,GAAG,IACrG,MAAM,IAAI,MAAM,uBAAuB,SAAS,GAAG,UAAU,EAAE,KAAK,IAAI,sCAAsC;GAEhH,IACE,qBAAqB,IAAI,MACxB,cAAc,KAAK,QAAQ,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,mBAAmB,KAAK,CAAC,IAE1F,MAAM,IAAI,MACR,uBAAuB,SAAS,GAAG,UAAU,EAAE,WAAW,IAAI,yDAChE;GACF,aAAa,+BAA+B,MAAM,YAAY,SAAS;GACvE,IAAI,gBAAgB,IAAI,WAAW,EAAE,GACnC,MAAM,IAAI,MAAM,uBAAuB,SAAS,GAAG,UAAU,EAAE,2CAA2C;GAC5G,gBAAgB,IAAI,WAAW,EAAE;EACnC,OAAO,IAAI,QAAQ,IAAI,GAAG;GACxB,aAAa,uBAAuB,MAAM,YAAY,SAAS;GAC/D,IAAI,WAAW,IAAI,WAAW,EAAE,GAC9B,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,qCAAqC;GACjG,WAAW,IAAI,WAAW,EAAE;EAC9B,OAAO,IAAI,SAAS,IAAI,GACtB,aAAa;GACX,aAAa;GACb,QAAQ;EACV;OACK;GACL,MAAM,WAAW,OAAO;GACxB,MAAM,IAAI,MAAM,kBAAkB,SAAS,GAAG,UAAU,EAAE,UAAU,SAAS,wBAAwB;EACvG;EAEA,cAAc,8BACZ,YACA,YACA,gBACA,iBACA,WACA,OACA,SACA,WACF;EAEA;CACF;AACF;AAEA,SAAS,8BACP,YACA,gBACA,gBACA,iBACA,WACA,OACA,mBACA,aACA;CAGA,MAAM,QAAQ,wBAFC,SAAS,QAAQ,GAAG,iBAEG,GAAQ,YADhC,SAAS,QAAQ,GAAG,iBACwB,CAAK;CAE/D,IAAI,MAAM,mBAAmB,aAAa;EACxC,MAAM,sBAAsB,YAAY;EACxC,MAAM,uBAAuB,YAAY;CAC3C,OACE,KAAK,IAAI,IAAI,GAAG,IAAI,kBAAkB,QAAQ,KAAK;EACjD,MAAM,CAAC,GAAG,SAAS,kBAAkB;EACrC;EACA,IAAI,CAAC,mBAAmB,KAAK,GAAG;EAEhC,MAAM,aAAa,+BAA+B,OAAO,CADrC,GAAG,eAAe,MAAM,GAAG,EAAE,GAAG,CACK,GAAY,SAAS;EAC9E,IAAI,IAAI,OAAO,MAAM,oBAAoB,KAAK,UAAU;EACxD,IAAI,IAAI,OAAO,MAAM,qBAAqB,KAAK,UAAU;CAC3D;CAEF,MAAM,SAAS,aAAa,UAAU;CAEtC,IAAI,UAAU,MAAM,SAAS;EAC3B,MAAM,OAAO,aAAa,WAAW,SAAS,aAAa;EAC3D,MAAM,cAAc;EACpB,MAAM,eAAe;GACnB,GAAG;GACH,GAAG,MAAM;GACT;GACA,GAAG,MAAM;GACT,GAAG;EACL;EACA,MAAM,UAAU;GAAC,GAAG;GAAkB,GAAG;GAAc,GAAG;EAAc;EAExE,MAAM,cAAc,qBAAqB,IAAI,YAAY,EAAE,IACvD,YAAY,QAAQ,cACpB,wBAAwB,SAAS,aAAa,aAAa;EAE/D,IAAI,gBAAgB,KAAA,GAAW,YAAY,QAAQ,cAAc;EACjE,MAAM,iBAAwC;GAC5C,YAAY,iBAAiB,SAAS,eAAe,SAAS,MAAM,oBAAoB;GACxF;GACA;GACA,kBAAkB;GAClB,aAAa,eAAe;GAC5B,WAAW;EACb;EAEA,MAAM,gBAAgB,uBAAuB,YAAY;EAEzD,IAAI,cAAc,QAAQ,YAAY,gBAAgB;EACtD,WAAW,IAAI,MAAM,cAAc;CACrC,OAAO,IAAI,CAAC,QACV,oBACE,WAAW,QACX,WAAW,aACX,CAAC,GAAG,gBAAgB,GAAG,MAAM,mBAAmB,GAChD,CAAC,GAAG,MAAM,sBAAsB,GAAG,eAAe,GAClD,YAAY,CACd;CAGF,OAAO;AACT;;AAGA,SAAS,sBAA4B;CACnC,eAAe,MAAM;CACrB,MAAM,WAAW,CACf,CAAC,YAAY,UAAU,kBAAkB,GACzC,CAAC,YAAY,eAAe,uBAAuB,CACrD;CACA,KAAK,MAAM,CAAC,IAAI,kBAAkB,UAAU;EAC1C,MAAM,UAAU;GAAC,+BAA+B,eAAe,CAAC,EAAE,GAAG,CAAC;GAAG,GAAG;GAAkB,GAAG;EAAc;EAC/G,eAAe,IAAI,IAAI;GACrB,YAAY;GACZ;GAEA,MAAM,KAAA;GACN,kBAAkB,KAAA;GAClB,aAAa;GACb,WAAW;EACb,CAAC;CACH;AACF;AAEA,SAAS,+BACP,YACA,mBACA,WACA;CACA,IAAI,mBAAmB,UAAU,GAAG,OAAO,+BAA+B,YAAY,mBAAmB,SAAS;CAClH,OAAO,4BAA4B,YAAY,mBAAmB,SAAS;AAC7E;AAEA,SAAgB,4BACd,YACA,mBACA,WACkC;CAClC,MAAM,WAAW,uBAAuB,UAAU;CAElD,MAAM,eAAe,gBAAgB,iBAAiB;CACtD,MAAM,WAAW,gBAAgB,IAAI,YAAY;CACjD,IAAI,UAAU,OAAO;CAMrB,IAAI;CACJ;EACE,MAAM,SAAS,cAAc,WAAW,SAAS,QAAQ,cAAc,QAAQ,YAAY;EAC3F,MAAM,iBAAiB,qBAAqB,YAAY,cAAc,eAAe,WAAW,WAAW,CAAC,GAAG,QAAQ;EACvH,qBAAqB,cAAc,QAAQ,cAAc;EACzD,MAAM,iBAAiB,WAAW,YAAY,oBAAoB,YAAY;EAC9E,aAAa;GACX,IAAI;GACJ,MAAM;GACN;GACA,SAAS,WAAW;GACpB,SAAS;GAET,cAAc,qBAAqB,UAAU,IACzC,eAAe,cAAc,cAAc,GAAG,eAAe,UAAU,CAAC,IACxE,cAAc,cAAc;GAChC,WAAW,CAAC,CAAC,WAAW,SAAS;GACjC,UAAU,KAAK,UAAU,YAAY;GACrC,GAAG;GACH,SAAS;IACP,WAAW,CAAC,CAAC,WAAW,SAAS;IACjC,aAAa,WAAW,SAAS;IACjC;IACA,gBAAgB,WAAW,SAAS,kBAAkB,cAAc;GACtE;EACF;EAGA,IAAI,WAAW,SAAS,gBAAgB,KAAA,GAAW,WAAW,QAAQ,cAAc,WAAW,QAAQ;CACzG;CAEA,gBAAgB,IAAI,cAAc,UAAiB;CACnD,YAAY,gBAAgB,cAAc,UAAiB;CAC3D,OAAO;AACT;;AAGA,SAAS,eACP,QACA,aAC8B;CAC9B,QAAQ,SAAsB,YAA0B,SAA0C,GAAG,SAAoB;EACvH,cAAc,OAAO;EACrB,OAAO,QAAQ,KAAK,WAAW,QAAQ,KAAA,IAAY,KAAA,IAAY,OAAO,SAAS,YAAY,SAAS,GAAG,IAAI;CAC7G;AACF;AAEA,SAAgB,+BACd,YACA,mBACA,WACW;CACX,MAAM,eAAe,gBAAgB,iBAAiB;CACtD,MAAM,WAAW,mBAAmB,IAAI,YAAY;CACpD,IAAI,UAAU,OAAO;CACrB,MAAM,iBAAiB,uBAAuB,WAAW,SAAS,cAAc,aAAa;CAC7F,MAAM,aAAwB;EAC5B,IAAI;EACJ,MAAM,YAAY;EAClB;EACA,SAAS,WAAW;EACpB,SAAS;EACT,cAAc,cAAc,YAAY,aAAa;EACrD,WAAW,CAAC,CAAC,WAAW,SAAS;EACjC,UAAU,KAAK,UAAU,YAAY;EACrC,GAAG;EACH,SAAS;GACP,WAAW,CAAC,CAAC,WAAW,SAAS;GACjC,aAAa,WAAW,SAAS;EACnC;CACF;CACA,mBAAmB,IAAI,cAAc,UAAU;CAC/C,YAAY,gBAAgB,cAAc,UAAiB;CAC3D,OAAO;AACT;AAEA,SAAgB,uBAAuB,OAAc,cAAwB,WAAgC;CAC3G,MAAM,UAAU,gBAAgB,YAAY;CAC5C,MAAM,WAAW,WAAW,IAAI,OAAO;CACvC,IAAI,UAAU,OAAO;CAErB,IAAI;CACJ;EACE,MAAM,SAAS,cAAc,MAAM,SAAS,QAAQ,cAAc,QAAQ,OAAO;EACjF,MAAM,iBAAiB,qBAAqB,OAAO,SAAS,eAAe,MAAM,WAAW,CAAC,GAAG,KAAK;EACrG,qBAAqB,SAAS,QAAQ,cAAc;EACpD,aAAa;GACX,IAAI;GACJ,MAAM,YAAY;GAClB;GACA,SAAS,MAAM;GACf,SAAS;GACT,cAAc,cAAc,YAAY,KAAK;GAC7C,WAAW;GACX,UAAU,KAAK,UAAU,OAAO;GAChC,GAAG;GACH,SAAS;IACP,WAAW;IACX,aAAa,MAAM,SAAS;IAC5B;IACA,YAAY,MAAM,SAAS;IAC3B,gBAAgB,MAAM,SAAS,kBAAkB,cAAc;GACjE;EACF;EAEA,IAAI,MAAM,SAAS,gBAAgB,KAAA,GAAW,WAAW,QAAQ,cAAc,MAAM,QAAQ;CAC/F;CACA,WAAW,IAAI,SAAS,UAAU;CAClC,YAAY,gBAAgB,SAAS,UAAiB;CACtD,OAAO;AACT;AAEA,SAAS,uBAAuB,SAAmC;CASjE,OARY,QACT,QAAQ,SAAS,mBAAmB,IAAI,CAAC,EACzC,KAAK,SAAS,gBAAgB,KAAK,OAAO,CAAC,EAC3C,QAAQ,SAAS;EAChB,IAAI,qBAAqB,IAAI,IAAI,GAAG,OAAO;EAC3C,MAAM,OAAO,wBAAwB,IAAI;EACzC,OAAO,QAAQ,mBAAmB,IAAI;CACxC,CACK;AACT;AAEA,SAAS,SAAS,OAAe,cAAkC;CACjE,OAAO,aAAa,SAAS;AAC/B;AAEA,SAAS,wBACP,QACA,MACA,OACA;CACA,MAAM,gBAAgB,UAAU,QAAQ,MAAM;CAC9C,MAAM,cAAe,KAAsB,SAAS,YAAY;CAChE,MAAM,eAAe,SAAS,QAAQ,KAAK;CAE3C,MAAM,SAAS,CAAC,CAAE,KAAsB;CAExC,OAAO;EACL,iBAAiB,iBAAiB,eAAe;EACjD,cAAc;EACd,SAAS;EACT,qBAAqB,CAAC;EACtB,sBAAsB,CAAC;CACzB;AACF;AAEA,SAAS,wCACP,gBACkD;CAClD,MAAM,UAA4D,CAAC;CACnE,KAAK,MAAM,CAAC,KAAK,eAAe,OAAO,QAAQ,cAAc,GAC3D,IAAI,mBAAmB,UAAU,GAC/B,QAAQ,KAAK,+BAA+B,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;MAC5D,IAAI,uBAAuB,UAAU,KAAK,gBAAgB,UAAU,GACzE,QAAQ,KAAK,4BAA4B,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;MAE9D,MAAM,IAAI,MAAM,uBAAuB,IAAI,gCAAgC;CAG/E,OAAO;AACT;AAEA,SAAS,0BAA0B,MAAqC;CACtE,IAAI,CAAC,MAAM,oBAAoB;CAC/B,MAAM,iBAAiB,KAAK,mBAAmB;CAC/C,IACE,OAAO,mBAAmB,YAC1B,MAAM,QAAQ,cAAc,KAC5B,mBAAmB,QACnB,OAAO,KAAK,cAAc,EAAE,WAAW,GAEvC,MAAM,IAAI,MAAM,0EAA0E;AAE9F;;AAGA,SAAS,SAAS,GAAG,OAAyB;CAC5C,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AACvC;;;AAMA,IAAa,+BAAuC;;AAGpD,IAAa,8BAAkD,mBAAmB,cAAc;;;AAIhG,SAAgB,sBAA8B;CAC5C,IAAI,UAAU,uBAAuB;CACrC,KAAK,MAAM,SAAS,WAAW,OAAO,GAAG,UAAU,KAAK,IAAI,SAAS,MAAM,WAAW;CACtF,OAAO,KAAK,IAAI,SAAS,oBAAoB,CAAC;AAChD;;AAGA,SAAS,mBAAmB,QAAiE;CAC3F,MAAM,MAAM,QAAQ;CACpB,OAAO,OAAO,QAAQ,WAAW,MAAM,KAAA;AACzC;;;;AAKA,SAAS,sBAA4B;CACnC,MAAM,MAAM,mBAAmB,cAAc;CAC7C,IAAI,QAAQ,KAAA,GAAW;CACvB,KAAK,MAAM,SAAS,WAAW,OAAO,GAAG;EACvC,IAAI,MAAM,qBAAqB,KAAA,KAAa,MAAM,oBAAoB,KAAK;EAC3E,MAAM,mBAAmB;EACzB,MAAM,QAAQ,MAAM,QAAQ,MAAM;EAClC,IAAI,MAAM,QAAQ,gBAAgB,KAAA,GAAW,MAAM,QAAQ,cAAc;CAC3E;CACA,kBAAkB,GAAG;AACvB;;;;AAKA,SAAS,yBAA+B;CACtC,KAAK,MAAM,SAAS,WAAW,OAAO,GAAG,MAAM,cAAc,MAAM,oBAAoB;CACvF,KAAK,MAAM,SAAS,eAAe,OAAO,GAAG,MAAM,cAAc,MAAM,oBAAoB;CAC3F,4BAA4B,mBAAmB;AACjD;;;AAIA,SAAS,sBAAsB,iBAA2D;CACxF,MAAM,SAAiC,EAAC,QAAQ,SAAQ;CACxD,KAAK,MAAM,QAAQ,iBAAiB,OAAO,KAAK,YAAY,KAAK,gBAAgB;CACjF,OAAO,kBAAkB;CACzB,OAAO;AACT"}
1
+ {"version":3,"file":"router.js","names":[],"sources":["../../../src/router.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 {HostRequestHandler, Route, RouterOptions, Routes, RouterEntry} from './types/general.ts';\nimport {assertHeaderSafe} from './lib/headers.ts';\nimport type {\n RemoteMethod,\n MethodsExecutionChain,\n RawMethod,\n HeadersMethod,\n MiddlewareMethod,\n RouteMethod,\n} from './types/remoteMethods.ts';\nimport type {PublicApi, PrivateDef, MiddlewaresCollection} from './types/publicMethods.ts';\nimport type {HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef} from './types/definitions.ts';\nimport type {ResponseDefaults} from './types/context.ts';\nimport {DEFAULT_ROUTE_OPTIONS, JSON_CONTENT_TYPE, MAX_ROUTE_NESTING, MION_SERVER_NAME} from './constants.ts';\nimport {\n isRawMiddlewareDef,\n isHeadersMiddlewareDef,\n isExecutable,\n isMiddlewareDef,\n isRoute,\n isRoutes,\n isAnyMiddlewareDef,\n isPublicExecutable,\n} from './types/guards.ts';\nimport {BUILD_VERSION_HEADER, HandlerType, resetRoutesCache, resolveParser, DEFAULT_MAX_BODY_SIZE} from '@mionjs/core';\nimport {getRawMethodReflection, getHandlerReflection, assertCompiledParser} from './lib/reflection.ts';\nimport {resolveChainMaxBodySize} from './lib/bodyLimit.ts';\nimport {callerForType} from './dispatch.ts';\nimport {serializerMiddlewares} from './routes/serializer.routes.ts';\nimport {\n getRouterItemId,\n getRoutePath,\n getENV,\n MION_ROUTES,\n MION_BATCH_KEY,\n routesCache,\n isUnsafePropertyName,\n} from '@mionjs/core';\nimport {setErrorOptions} from '@mionjs/core';\nimport {getPublicApi, resetRemoteMethodsMetadata} from './lib/remoteMethods.ts';\nimport {mionErrorsRoutes, notFoundMiddleware, batchNotFoundMiddleware} from './routes/errors.routes.ts';\nimport {capBatchBodySizes, clearBatches, getMaxBatchBodySize, refreshBatchChainBodyLimits} from './batches.ts';\nimport {\n headersMiddleware,\n isOnDemandMiddleware,\n getOnEveryCall,\n middleware,\n mionInternalRouteIds,\n mutation,\n query,\n rawMiddleware,\n route,\n} from './lib/handlers.ts';\nimport type {CallContext} from './types/context.ts';\nimport type {\n HeadersMiddlewareHelper,\n CheckedRouterTypes,\n KnownKeysOf,\n MiddlewareHelper,\n MionRouter,\n RawMiddlewareHelper,\n RouteHelper,\n RouterOptionsInput,\n RouterOptionsArg,\n RouterTypes,\n TypedRouterFactory,\n WithShared,\n} from './types/mionRouter.ts';\n\ntype RouterKeyEntryList = [string, RouterEntry][];\ntype RoutesWithId = {\n pathPointer: string[];\n routes: Routes;\n};\n\n// ############# PRIVATE STATE #############\n\nconst flatRouter = new Map<string, MethodsExecutionChain>(); // Main Router\n/** mion's two not-found chains (an unknown path, an unknown batch id) are NOT routes and not in the\n * router above: each is the global middleware behind a first member that throws, and is rebuilt on\n * every registration because that middleware is. */\nconst notFoundChains = new Map<string, MethodsExecutionChain>();\nconst middlewaresById = new Map<string, MiddlewareMethod | HeadersMethod | RawMethod>();\nconst routesById = new Map<string, RouteMethod>();\nconst rawMiddlewaresById = new Map<string, RawMethod>();\nconst middlewareNames = new Set<string>();\nconst routeNames = new Set<string>();\nlet complexity = 0;\nlet routerOptions: RouterOptions = {...DEFAULT_ROUTE_OPTIONS};\nlet isRouterInitialized = false;\nlet isRouterCreated = false;\nlet allExecutablesIds: string[] | undefined;\nlet platformConfig: Record<string, unknown> | undefined;\n/** Merged by initRouter, read per request. */\nlet responseDefaults: ResponseDefaults = mergeResponseDefaults({});\n/** Sent by mionFetchMetadata; unset with `apiVersionCheck` off, a pinned header or no build version. */\nlet buildVersion: string | undefined;\n/** The adapter's `maxBodySize` under its `maxBodySizeCap`, settled by setPlatformConfig (the default with no adapter). */\nlet platformMaxBodySize = DEFAULT_MAX_BODY_SIZE;\n\n/** Run before and after every middleware or route set through `mion.initRoutes` */\nconst defaultStartMiddlewares = {\n mionDeserializeRequest: serializerMiddlewares.mionDeserializeRequest,\n};\nconst defaultEndMiddlewares = {\n mionSerializeResponse: serializerMiddlewares.mionSerializeResponse,\n};\nlet startMiddlewaresDef: MiddlewaresCollection = {...defaultStartMiddlewares};\nlet endMiddlewaresDef: MiddlewaresCollection = {...defaultEndMiddlewares};\nexport let startMiddlewares: RemoteMethod[] = [];\nexport let endMiddlewares: RemoteMethod[] = [];\n\n// ############# PUBLIC METHODS #############\n\nexport const getRouteExecutionChain = (path: string) => flatRouter.get(path);\n/** The chain that answers an unknown path or an unknown batch id, by its `MION_ROUTES` id. */\nexport const getNotFoundExecutionChain = (id: string) => notFoundChains.get(id);\nexport const getRoutesSize = () => flatRouter.size;\nexport const getRouteExecutable = (id: string) => routesById.get(id);\nexport const getMiddlewareExecutable = (id: string) => middlewaresById.get(id);\nexport const getMiddlewaresSize = () => middlewaresById.size;\nexport const getComplexity = () => complexity;\nexport const getRouterOptions = <Opts extends RouterOptions>(): Readonly<Opts> => routerOptions as Opts;\n/** The version mionFetchMetadata sends in `x-build-version`. */\nexport const getBuildVersion = (): string | undefined => buildVersion;\n/** The headers every response starts with: every adapter reads it per request. */\nexport const getResponseDefaults = (): ResponseDefaults => responseDefaults;\n\nexport const getAnyExecutable = (id: string) => routesById.get(id) || middlewaresById.get(id) || rawMiddlewaresById.get(id);\n\n/** Called automatically by platform adapters: the adapter's `maxBodySize` and `maxBodySizeCap` are\n * settled here, once, so no request reads the config. */\nexport function setPlatformConfig(config: Record<string, unknown>): void {\n platformConfig = config;\n const published = config.maxBodySize;\n platformMaxBodySize = Math.min(\n typeof published === 'number' ? published : DEFAULT_MAX_BODY_SIZE,\n readMaxBodySizeCap(config) ?? Infinity\n );\n if (isRouterInitialized) applyMaxBodySizeCap();\n // Unconditional, and NOT inside applyMaxBodySizeCap: that returns early when the adapter published no\n // cap, while platformMaxBodySize still changed under every chain that declared nothing of its own.\n refreshChainBodyLimits();\n}\n\nexport const getPlatformConfig = (): Readonly<Record<string, unknown>> | undefined => platformConfig;\n\n// resetRouter leaves it alone: the dev host sets it before the entry loads, not the routes.\nconst devHost = {\n ownsSocket: false,\n handler: undefined as HostRequestHandler | undefined,\n};\n\n/** Set by a dev host that owns the socket (the mion vite plugin) BEFORE it loads the server entry, so whatever\n * platform adapter the entry starts registers its routes and hands over its handler instead of listening. */\nexport function setHostOwnsSocket(ownsSocket: boolean): void {\n devHost.ownsSocket = ownsSocket;\n if (!ownsSocket) devHost.handler = undefined;\n}\n\nexport const hostOwnsSocket = (): boolean => devHost.ownsSocket;\n\n/** Every platform adapter calls it on start; true means a dev host owns the socket and the adapter must not listen. */\nexport function handOverToHost(handler: HostRequestHandler): boolean {\n if (devHost.ownsSocket) devHost.handler = handler;\n return devHost.ownsSocket;\n}\n\nexport const getHostRequestHandler = (): HostRequestHandler | undefined => devHost.handler;\n\nexport const resetRouter = () => {\n flatRouter.clear();\n notFoundChains.clear();\n middlewaresById.clear();\n routesById.clear();\n rawMiddlewaresById.clear();\n middlewareNames.clear();\n routeNames.clear();\n complexity = 0;\n routerOptions = {...DEFAULT_ROUTE_OPTIONS};\n startMiddlewaresDef = {...defaultStartMiddlewares};\n endMiddlewaresDef = {...defaultEndMiddlewares};\n startMiddlewares = [];\n endMiddlewares = [];\n isRouterInitialized = false;\n isRouterCreated = false;\n allExecutablesIds = undefined;\n platformConfig = undefined;\n responseDefaults = mergeResponseDefaults({});\n buildVersion = undefined;\n platformMaxBodySize = DEFAULT_MAX_BODY_SIZE;\n resetRemoteMethodsMetadata();\n resetRoutesCache();\n clearBatches();\n // No resetJitFnCaches(): it lives in @mionjs/core/testing, which a shipped router must not import.\n};\n\n/** Options ride BY TYPE into every helper, so router-wide defaults are read at build time and `ctx.shared` is typed from\n * `sharedDataFactory`'s written return type. The helpers are plain closures (no `this`), safe to destructure. */\nexport function createMionRouter<const O extends RouterOptionsInput & KnownKeysOf<O, object> = Record<never, never>>(\n opts?: RouterOptionsArg<O>\n): MionRouter<O, WithShared<O, object>> {\n if (isRouterCreated)\n throw new Error(\n 'createMionRouter has already been called: create the router once per app (resetRouter() clears it in tests)'\n );\n isRouterCreated = true;\n const options = Object.freeze({...opts}) as Readonly<O>;\n return {\n options,\n route: route as RouteHelper<O, WithShared<O, object>>,\n query: query as RouteHelper<O, WithShared<O, object>, false>,\n mutation: mutation as RouteHelper<O, WithShared<O, object>, true>,\n middleware: middleware as MiddlewareHelper<O, WithShared<O, object>>,\n headersMiddleware: headersMiddleware as HeadersMiddlewareHelper<O, WithShared<O, object>>,\n rawMiddleware: rawMiddleware as RawMiddlewareHelper<WithShared<O, object>>,\n // Typed by MionRouter, the one place its signature is written.\n initRoutes(routes, buildVersion) {\n initRouter(options, buildVersion);\n const api = registerRoutes(routes);\n if (platformConfig) applyMaxBodySizeCap();\n refreshChainBodyLimits();\n return api;\n },\n };\n}\n\n/** Declares the keys a router adds (see `RouterTypes`) and returns `createMionRouter` typed by them. Types only: a type\n * argument on `createMionRouter` itself would stop the options literal from being inferred.\n * @example\n * ```ts\n * const mion = createMionRouter.withTypes<{handler: MionSecurityHandlerOptions}>()({basePath: 'api'});\n * mion.route(handler, {cors: false});\n * ``` */\ncreateMionRouter.withTypes = function withTypes<T extends RouterTypes & CheckedRouterTypes<T> = object>(): TypedRouterFactory<T> {\n return createMionRouter as unknown as TypedRouterFactory<T>;\n};\n\n/** Once per app; `resetRouter()` clears it. */\nfunction initRouter(opts: RouterOptionsInput, version?: string): void {\n if (isRouterInitialized) throw new Error('Router has already been initialized');\n routerOptions = {...routerOptions, ...opts};\n // a pinned version already rides every response, so the middleware adds none\n responseDefaults = mergeResponseDefaults(routerOptions.responseHeaders);\n const isPinned = responseDefaults[BUILD_VERSION_HEADER] !== undefined;\n buildVersion = (routerOptions.apiVersionCheck && !isPinned && version) || undefined;\n validateSharedDataFactory(routerOptions);\n Object.freeze(routerOptions);\n setErrorOptions(routerOptions);\n isRouterInitialized = true;\n registerRoutes({...mionErrorsRoutes});\n}\n\nfunction registerRoutes<R extends Routes>(routes: R): PublicApi<R> {\n if (!isRouterInitialized) throw new Error('the router must be initialized first');\n startMiddlewares = getExecutablesFromMiddlewaresCollection(startMiddlewaresDef);\n endMiddlewares = getExecutablesFromMiddlewaresCollection(endMiddlewaresDef);\n recursiveFlatRoutes(routes, [], [], [], 0);\n buildNotFoundChains();\n allExecutablesIds = undefined; // the memoized id list must see the routes registered by this call\n if (shouldFullGenerateSpec()) {\n return getPublicApi(routes);\n }\n return {} as PublicApi<R>;\n}\n\n/** Adds middlewares at the start of the ExecutionChain, before the existing start middlewares by default */\nexport function addStartMiddlewares(middlewaresDef: MiddlewaresCollection, appendBeforeExisting = true) {\n if (isRouterInitialized) throw new Error('Can not add start middlewares after the router has been initialized');\n if (appendBeforeExisting) {\n startMiddlewaresDef = {...middlewaresDef, ...startMiddlewaresDef};\n return;\n }\n startMiddlewaresDef = {...startMiddlewaresDef, ...middlewaresDef};\n}\n\n/** Adds middlewares at the end of the ExecutionChain, after the existing end middlewares by default */\nexport function addEndMiddlewares(middlewaresDef: MiddlewaresCollection, prependAfterExisting = true) {\n if (isRouterInitialized) throw new Error('Can not add end middlewares after the router has been initialized');\n if (prependAfterExisting) {\n endMiddlewaresDef = {...endMiddlewaresDef, ...middlewaresDef};\n return;\n }\n endMiddlewaresDef = {...middlewaresDef, ...endMiddlewaresDef};\n}\n\nexport function isPrivateDefinition(entry: RouterEntry, id: string): entry is PrivateDef {\n if (isRoute(entry)) return false;\n if (isRawMiddlewareDef(entry)) return true;\n try {\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable) throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);\n return !isPublicExecutable(executable);\n } catch {\n // a Routes object has no handler, so no executable is found\n return false;\n }\n}\n\nexport function getTotalExecutables(): number {\n return routesById.size + middlewaresById.size + rawMiddlewaresById.size;\n}\n\nexport function getAllExecutablesIds(): string[] {\n if (allExecutablesIds) return allExecutablesIds;\n allExecutablesIds = [...routesById.keys(), ...middlewaresById.keys(), ...rawMiddlewaresById.keys()];\n return allExecutablesIds;\n}\n\n// used by codegen\nexport function shouldFullGenerateSpec(): boolean {\n return routerOptions.getPublicRoutesData || getENV('GENERATE_ROUTER_SPEC') === 'true';\n}\n\n// ############# PRIVATE METHODS #############\n\n/** `currentPointer` is the position in `routes` (e.g. ['users', 'get']); the middlewares come from one level up. */\nfunction recursiveFlatRoutes(\n routes: Routes,\n currentPointer: string[] = [],\n preMiddlewares: RemoteMethod[] = [],\n postMiddlewares: RemoteMethod[] = [],\n nestLevel = 0\n) {\n if (nestLevel > MAX_ROUTE_NESTING)\n throw new Error(`Too many nested routes, you can only nest routes ${MAX_ROUTE_NESTING} levels`);\n\n const entries = Object.entries(routes);\n if (entries.length === 0)\n throw new Error(`Invalid route: ${currentPointer.length ? joinPath(...currentPointer) : '*'}. Can Not define empty routes`);\n\n let minus1Props: ReturnType<typeof getRouteEntryProperties> | null = null;\n for (let index = 0; index < entries.length; index++) {\n const [key, item] = entries[index];\n const newPointer = [...currentPointer, key];\n let routeEntry: RemoteMethod | RoutesWithId;\n if (typeof key !== 'string' || !isNaN(key as any))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Numeric route names are not allowed`);\n if (key.includes(',')) throw new Error(`Invalid route: ${joinPath(...newPointer)}. Route names cannot contain commas.`);\n // a route id is used as an object key on both ends of the wire, so a prototype name can never be one\n if (isUnsafePropertyName(key))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. '${key}' is not a valid route name.`);\n if (key === MION_BATCH_KEY)\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. '${MION_BATCH_KEY}' is a reserved mion route name.`);\n // the client proxy answers no `then`, so `await routes` settles; such a route could never be called\n if (key === 'then') throw new Error(`Invalid route: ${joinPath(...newPointer)}. 'then' is a reserved mion route name.`);\n\n if (isAnyMiddlewareDef(item)) {\n // a start or end middleware already owns this id, and would otherwise be silently reused in its place\n if (nestLevel === 0 && (Object.hasOwn(startMiddlewaresDef, key) || Object.hasOwn(endMiddlewaresDef, key)))\n throw new Error(`Invalid middleware: ${joinPath(...newPointer)}. '${key}' is a reserved mion middleware name.`);\n // it can stop a call before its route, so every route must come after it\n if (\n isOnDemandMiddleware(item) &&\n (nestLevel !== 0 || entries.slice(0, index).some(([, entry]) => !isAnyMiddlewareDef(entry)))\n )\n throw new Error(\n `Invalid middleware: ${joinPath(...newPointer)}. Place '${key}' at the root of your routes, before any route or group.`\n );\n routeEntry = getExecutableFromAnyMiddleware(item, newPointer, nestLevel);\n if (middlewareNames.has(routeEntry.id))\n throw new Error(`Invalid middleware: ${joinPath(...newPointer)}. Naming collision, duplicated middleware.`);\n middlewareNames.add(routeEntry.id);\n } else if (isRoute(item)) {\n routeEntry = getExecutableFromRoute(item, newPointer, nestLevel);\n if (routeNames.has(routeEntry.id))\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Naming collision, duplicated route`);\n routeNames.add(routeEntry.id);\n } else if (isRoutes(item)) {\n routeEntry = {\n pathPointer: newPointer,\n routes: item,\n };\n } else {\n const itemType = typeof item;\n throw new Error(`Invalid route: ${joinPath(...newPointer)}. Type <${itemType}> is not a valid route.`);\n }\n\n minus1Props = recursiveCreateExecutionChain(\n routeEntry,\n newPointer,\n preMiddlewares,\n postMiddlewares,\n nestLevel,\n index,\n entries,\n minus1Props\n );\n\n complexity++;\n }\n}\n\nfunction recursiveCreateExecutionChain(\n routeEntry: RemoteMethod | RoutesWithId,\n currentPointer: string[],\n preMiddlewares: RemoteMethod[],\n postMiddlewares: RemoteMethod[],\n nestLevel: number,\n index: number,\n routeKeyedEntries: RouterKeyEntryList,\n minus1Props: ReturnType<typeof getRouteEntryProperties> | null\n) {\n const minus1 = getEntry(index - 1, routeKeyedEntries);\n const plus1 = getEntry(index + 1, routeKeyedEntries);\n const props = getRouteEntryProperties(minus1, routeEntry, plus1);\n\n if (props.isBetweenRoutes && minus1Props) {\n props.preLevelMiddlewares = minus1Props.preLevelMiddlewares;\n props.postLevelMiddlewares = minus1Props.postLevelMiddlewares;\n } else {\n for (let i = 0; i < routeKeyedEntries.length; i++) {\n const [k, entry] = routeKeyedEntries[i];\n complexity++;\n if (!isAnyMiddlewareDef(entry)) continue;\n const newPointer = [...currentPointer.slice(0, -1), k];\n const executable = getExecutableFromAnyMiddleware(entry, newPointer, nestLevel);\n if (i < index) props.preLevelMiddlewares.push(executable);\n if (i > index) props.postLevelMiddlewares.push(executable);\n }\n }\n const isExec = isExecutable(routeEntry);\n\n if (isExec && props.isRoute) {\n const path = getRoutePath(routeEntry.pointer, routerOptions);\n const routeMethod = routeEntry as RouteMethod;\n const levelMethods = [\n ...preMiddlewares,\n ...props.preLevelMiddlewares,\n routeEntry,\n ...props.postLevelMiddlewares,\n ...postMiddlewares,\n ];\n const methods = [...startMiddlewares, ...levelMethods, ...endMiddlewares];\n // internal error routes are never client-called: platform's size, not their no-params tuple's tiny one\n const maxBodySize = mionInternalRouteIds.has(routeMethod.id)\n ? routeMethod.options.maxBodySize\n : resolveChainMaxBodySize(methods, routeMethod, routerOptions);\n // published in the metadata; undefined means the platform's, filled in when the metadata is read\n if (maxBodySize !== undefined) routeMethod.options.maxBodySize = maxBodySize;\n const executionChain: MethodsExecutionChain = {\n routeIndex: startMiddlewares.length + preMiddlewares.length + props.preLevelMiddlewares.length,\n methods,\n path,\n declaredBodySize: maxBodySize,\n maxBodySize: maxBodySize ?? platformMaxBodySize,\n readsBody: true,\n };\n // route-level only: a global start/end middleware is not in the API type, so a built client never lists it\n const middlewareIds = getPublicMiddlewareIds(levelMethods);\n // add middleware deps, so can be serialized with the router\n if (middlewareIds.length) routeMethod.middlewareIds = middlewareIds;\n flatRouter.set(path, executionChain);\n } else if (!isExec) {\n recursiveFlatRoutes(\n routeEntry.routes,\n routeEntry.pathPointer,\n [...preMiddlewares, ...props.preLevelMiddlewares],\n [...props.postLevelMiddlewares, ...postMiddlewares],\n nestLevel + 1\n );\n }\n\n return props;\n}\n\n/** The thrower goes first so the dispatcher skips every later non-`alwaysRun` member; body size is the platform's. */\nfunction buildNotFoundChains(): void {\n notFoundChains.clear();\n const throwers = [\n [MION_ROUTES.notFound, notFoundMiddleware],\n [MION_ROUTES.batchNotFound, batchNotFoundMiddleware],\n ] as const;\n for (const [id, middlewareDef] of throwers) {\n const methods = [getExecutableFromRawMiddleware(middlewareDef, [id], 0), ...startMiddlewares, ...endMiddlewares];\n notFoundChains.set(id, {\n routeIndex: -1, // there is no route in this chain\n methods,\n // a shared chain answers for many paths, so the request brings its own\n path: undefined,\n declaredBodySize: undefined,\n maxBodySize: platformMaxBodySize,\n readsBody: false,\n });\n }\n}\n\nfunction getExecutableFromAnyMiddleware(\n middleware: MiddlewareDef | HeadersMiddlewareDef | RawMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n) {\n if (isRawMiddlewareDef(middleware)) return getExecutableFromRawMiddleware(middleware, middlewarePointer, nestLevel);\n return getExecutableFromMiddleware(middleware, middlewarePointer, nestLevel);\n}\n\nexport function getExecutableFromMiddleware(\n middleware: MiddlewareDef | HeadersMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n): MiddlewareMethod | HeadersMethod {\n const isHeader = isHeadersMiddlewareDef(middleware);\n // todo fix header id should be same as any other one and then maybe map from id to header name\n const middlewareId = getRouterItemId(middlewarePointer);\n const existing = middlewaresById.get(middlewareId);\n if (existing) return existing as MiddlewareMethod;\n\n type MixedMiddleware = (Omit<MiddlewareMethod, 'type'> | Omit<HeadersMethod, 'type'>) & {\n type: typeof HandlerType.middleware | typeof HandlerType.headersMiddleware;\n };\n\n let executable: MixedMiddleware;\n {\n const parser = resolveParser(middleware.options?.parser, routerOptions.parser, middlewareId);\n const reflectionData = getHandlerReflection(middleware, middlewareId, routerOptions, middleware.options ?? {}, isHeader);\n assertCompiledParser(middlewareId, parser, reflectionData);\n const middlewareType = isHeader ? HandlerType.headersMiddleware : HandlerType.middleware;\n executable = {\n id: middlewareId,\n type: middlewareType,\n nestLevel,\n handler: middleware.handler,\n pointer: middlewarePointer,\n // resolved here so the dispatch loop reads a field instead of deriving them per request\n methodCaller: isOnDemandMiddleware(middleware)\n ? onDemandCaller(callerForType(middlewareType), getOnEveryCall(middleware))\n : callerForType(middlewareType),\n alwaysRun: !!middleware.options?.alwaysRun,\n quotedId: JSON.stringify(middlewareId),\n ...reflectionData,\n // added keys first, so mion's own always win\n options: {\n ...middleware.options,\n alwaysRun: !!middleware.options?.alwaysRun,\n description: middleware.options?.description,\n parser,\n sanitizeParams: middleware.options?.sanitizeParams ?? routerOptions.sanitizeParams,\n },\n };\n // a middleware's maxBodySize is its OWN contribution to every chain it sits in, never resolved;\n // written only when set, so the metadata a client receives carries no `undefined` key\n if (middleware.options?.maxBodySize !== undefined) executable.options.maxBodySize = middleware.options.maxBodySize;\n }\n\n middlewaresById.set(middlewareId, executable as any);\n routesCache.setMethodJitFns(middlewareId, executable as any);\n return executable as any;\n}\n\n/** An absent slot skips the params pipeline; the answer is the same only because such a middleware's params are optional. */\nfunction onDemandCaller(\n caller: RemoteMethod['methodCaller'],\n onEveryCall?: ReturnType<typeof getOnEveryCall>\n): RemoteMethod['methodCaller'] {\n return (context: CallContext, executable: RemoteMethod, request: {body: Record<string, unknown>}, ...rest: unknown[]) => {\n onEveryCall?.(context);\n return request.body[executable.id] === undefined ? undefined : caller(context, executable, request, ...rest);\n };\n}\n\nexport function getExecutableFromRawMiddleware(\n middleware: RawMiddlewareDef,\n middlewarePointer: string[],\n nestLevel: number\n): RawMethod {\n const middlewareId = getRouterItemId(middlewarePointer);\n const existing = rawMiddlewaresById.get(middlewareId);\n if (existing) return existing as RawMethod;\n const reflectionData = getRawMethodReflection(middleware.handler, middlewareId, routerOptions);\n const executable: RawMethod = {\n id: middlewareId,\n type: HandlerType.rawMiddleware,\n nestLevel,\n handler: middleware.handler,\n pointer: middlewarePointer,\n methodCaller: callerForType(HandlerType.rawMiddleware),\n alwaysRun: !!middleware.options?.alwaysRun,\n quotedId: JSON.stringify(middlewareId),\n ...reflectionData,\n options: {\n ...middleware.options,\n alwaysRun: !!middleware.options?.alwaysRun,\n description: middleware.options?.description,\n },\n };\n rawMiddlewaresById.set(middlewareId, executable);\n routesCache.setMethodJitFns(middlewareId, executable as any);\n return executable;\n}\n\nexport function getExecutableFromRoute(route: Route, routePointer: string[], nestLevel: number): RouteMethod {\n const routeId = getRouterItemId(routePointer);\n const existing = routesById.get(routeId);\n if (existing) return existing as RouteMethod;\n\n let executable: RouteMethod;\n {\n const parser = resolveParser(route.options?.parser, routerOptions.parser, routeId);\n const reflectionData = getHandlerReflection(route, routeId, routerOptions, route.options ?? {}, false);\n assertCompiledParser(routeId, parser, reflectionData);\n executable = {\n id: routeId,\n type: HandlerType.route,\n nestLevel,\n handler: route.handler,\n pointer: routePointer,\n methodCaller: callerForType(HandlerType.route),\n alwaysRun: false,\n quotedId: JSON.stringify(routeId),\n ...reflectionData,\n options: {\n ...route.options,\n alwaysRun: false,\n description: route.options?.description,\n parser,\n isMutation: route.options?.isMutation,\n sanitizeParams: route.options?.sanitizeParams ?? routerOptions.sanitizeParams,\n },\n };\n // the route option as written; the chain resolution overwrites it with the resolved number\n if (route.options?.maxBodySize !== undefined) executable.options.maxBodySize = route.options.maxBodySize;\n }\n routesById.set(routeId, executable);\n routesCache.setMethodJitFns(routeId, executable as any);\n return executable;\n}\n\nfunction getPublicMiddlewareIds(methods: RemoteMethod[]): string[] {\n const ids = methods\n .filter((exec) => isPublicExecutable(exec))\n .map((exec) => getRouterItemId(exec.pointer))\n .filter((mfId) => {\n if (mionInternalRouteIds.has(mfId)) return false;\n const exec = getMiddlewareExecutable(mfId);\n return exec && isPublicExecutable(exec);\n });\n return ids;\n}\n\nfunction getEntry(index: number, keyEntryList: RouterKeyEntryList) {\n return keyEntryList[index]?.[1];\n}\n\nfunction getRouteEntryProperties(\n minus1: RouterEntry | undefined,\n zero: RemoteMethod | RoutesWithId,\n plus1: RouterEntry | undefined\n) {\n const minus1IsRoute = minus1 && isRoute(minus1);\n const zeroIsRoute = (zero as RemoteMethod).type === HandlerType.route;\n const plus1IsRoute = plus1 && isRoute(plus1);\n\n const isExec = !!(zero as RemoteMethod).handler;\n\n return {\n isBetweenRoutes: minus1IsRoute && zeroIsRoute && plus1IsRoute,\n isExecutable: isExec,\n isRoute: zeroIsRoute,\n preLevelMiddlewares: [] as RemoteMethod[],\n postLevelMiddlewares: [] as RemoteMethod[],\n };\n}\n\nfunction getExecutablesFromMiddlewaresCollection(\n middlewaresDef: MiddlewaresCollection\n): (RawMethod | MiddlewareMethod | HeadersMethod)[] {\n const results: (RawMethod | MiddlewareMethod | HeadersMethod)[] = [];\n for (const [key, middleware] of Object.entries(middlewaresDef)) {\n if (isRawMiddlewareDef(middleware)) {\n results.push(getExecutableFromRawMiddleware(middleware, [key], 0));\n } else if (isHeadersMiddlewareDef(middleware) || isMiddlewareDef(middleware)) {\n results.push(getExecutableFromMiddleware(middleware, [key], 0));\n } else {\n throw new Error(`Invalid middleware: ${key}. Invalid middleware definition`);\n }\n }\n return results;\n}\n\nfunction validateSharedDataFactory(opts?: Partial<RouterOptions>): void {\n if (!opts?.sharedDataFactory) return;\n const testSharedData = opts.sharedDataFactory();\n if (\n typeof testSharedData !== 'object' ||\n Array.isArray(testSharedData) ||\n testSharedData === null ||\n Object.keys(testSharedData).length === 0\n ) {\n throw new Error('sharedDataFactory must return a plain object with at least one property');\n }\n}\n\n/** Hand-rolled: Node's 'path' module is not available in edge runtimes. */\nfunction joinPath(...parts: string[]): string {\n return parts.filter(Boolean).join('/');\n}\n\n// ############# PLATFORM SIZE LIMITS #############\n\n/** What a route takes when its own option is unset and its types cannot say: the adapter's `maxBodySize`,\n * published with its config at start, else the shared default (a router driven with no adapter, as in tests). */\nexport const getPlatformMaxBodySize = (): number => platformMaxBodySize;\n\n/** The platform's own request ceiling, when the adapter published one. */\nexport const getPlatformRequestCap = (): number | undefined => readMaxBodySizeCap(platformConfig);\n\n/** The largest limit any registered route or batch resolves to: what a platform with ONE native,\n * server-wide read limit (bun) starts with, so it never refuses a body a route allows. */\nexport function getMaxRouteBodySize(): number {\n let largest = getPlatformMaxBodySize();\n for (const chain of flatRouter.values()) largest = Math.max(largest, chain.maxBodySize);\n return Math.max(largest, getMaxBatchBodySize());\n}\n\n/** The platform's own request ceiling the adapter published, in bytes; undefined means none. */\nfunction readMaxBodySizeCap(config: Record<string, unknown> | undefined): number | undefined {\n const cap = config?.maxBodySizeCap;\n return typeof cap === 'number' ? cap : undefined;\n}\n\n/** A limit above the platform's ceiling would promise a size the platform refuses before mion ever runs,\n * so it is brought down. Applied once, when the adapter has published its config AND the routes are\n * registered, whichever comes last. */\nfunction applyMaxBodySizeCap(): void {\n const cap = readMaxBodySizeCap(platformConfig);\n if (cap === undefined) return;\n for (const chain of flatRouter.values()) {\n if (chain.declaredBodySize === undefined || chain.declaredBodySize <= cap) continue;\n chain.declaredBodySize = cap;\n const route = chain.methods[chain.routeIndex];\n if (route.options.maxBodySize !== undefined) route.options.maxBodySize = cap;\n }\n capBatchBodySizes(cap);\n}\n\n/** `maxBodySize` caches two inputs that both move after a chain is built: the cap above lowers what a\n * chain declared, and `setPlatformConfig` replaces the fallback the chains that declared nothing read.\n * Missing a refresh refuses bodies a route allows, or allows bodies past the platform's ceiling. */\nfunction refreshChainBodyLimits(): void {\n for (const chain of flatRouter.values()) chain.maxBodySize = chain.declaredBodySize ?? platformMaxBodySize;\n for (const chain of notFoundChains.values()) chain.maxBodySize = chain.declaredBodySize ?? platformMaxBodySize;\n refreshBatchChainBodyLimits(platformMaxBodySize);\n}\n\n/** `server` first so the option can replace it, `content-type` last so it cannot; lowercased, or `Headers` would\n * append a name repeated in another case. */\nfunction mergeResponseDefaults(responseHeaders: Record<string, string>): ResponseDefaults {\n const merged: Record<string, string> = {server: MION_SERVER_NAME};\n for (const name in responseHeaders) {\n // refused at startup, so no adapter ever writes a bad default\n assertHeaderSafe(name, responseHeaders[name]);\n merged[name.toLowerCase()] = responseHeaders[name];\n }\n merged['content-type'] = JSON_CONTENT_TYPE;\n return merged;\n}\n"],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  import { rawMiddleware, route } from "../lib/handlers.js";
2
- import { __rt_A0Qb_D32xQCR } from "../../.mion/types/A0Qb_D32xQCR.js";
3
- import { __rt_A0Qb_G42dZdW } from "../../.mion/types/A0Qb_G42dZdW.js";
4
- import { __rt_A0Qb_hqa3Nzs } from "../../.mion/types/A0Qb_hqa3Nzs.js";
5
- import { __rt_Ky89_D32xQCR } from "../../.mion/types/Ky89_D32xQCR.js";
6
- import { __rt_Ky89_G42dZdW } from "../../.mion/types/Ky89_G42dZdW.js";
7
- import { __rt_Ky89_hqa3Nzs } from "../../.mion/types/Ky89_hqa3Nzs.js";
8
- import { __rt_OBOg_D32xQCR } from "../../.mion/types/OBOg_D32xQCR.js";
9
- import { __rt_OBOg_G42dZdW } from "../../.mion/types/OBOg_G42dZdW.js";
10
- import { __rt_OBOg_hqa3Nzs } from "../../.mion/types/OBOg_hqa3Nzs.js";
11
- import { __rt_Xhuv_D32xQCR } from "../../.mion/types/Xhuv_D32xQCR.js";
12
- import { __rt_Xhuv_G42dZdW } from "../../.mion/types/Xhuv_G42dZdW.js";
13
- import { __rt_Xhuv_hqa3Nzs } from "../../.mion/types/Xhuv_hqa3Nzs.js";
14
- import { __rt_mzca_hqa3Nzs } from "../../.mion/types/mzca_hqa3Nzs.js";
15
- import { __rt_D32xQCR, __rt_G42dZdW, __rt_JWRNzuD, __rt_hqa3Nzs, __rt_jzOWBBT, __rt_w6KmCD1 } from "../../.mion/types/rt/VIdAjpHu1X.js";
2
+ import { __rt_A0Qb_CXFfAul } from "../../.mion/types/A0Qb_CXFfAul.js";
3
+ import { __rt_A0Qb_Ju6MvJU } from "../../.mion/types/A0Qb_Ju6MvJU.js";
4
+ import { __rt_A0Qb_ujMZYNY } from "../../.mion/types/A0Qb_ujMZYNY.js";
5
+ import { __rt_Ky89_CXFfAul } from "../../.mion/types/Ky89_CXFfAul.js";
6
+ import { __rt_Ky89_Ju6MvJU } from "../../.mion/types/Ky89_Ju6MvJU.js";
7
+ import { __rt_Ky89_ujMZYNY } from "../../.mion/types/Ky89_ujMZYNY.js";
8
+ import { __rt_OBOg_CXFfAul } from "../../.mion/types/OBOg_CXFfAul.js";
9
+ import { __rt_OBOg_Ju6MvJU } from "../../.mion/types/OBOg_Ju6MvJU.js";
10
+ import { __rt_OBOg_ujMZYNY } from "../../.mion/types/OBOg_ujMZYNY.js";
11
+ import { __rt_Xhuv_CXFfAul } from "../../.mion/types/Xhuv_CXFfAul.js";
12
+ import { __rt_Xhuv_Ju6MvJU } from "../../.mion/types/Xhuv_Ju6MvJU.js";
13
+ import { __rt_Xhuv_ujMZYNY } from "../../.mion/types/Xhuv_ujMZYNY.js";
14
+ import { __rt_mzca_Ju6MvJU } from "../../.mion/types/mzca_Ju6MvJU.js";
15
+ import { __rt_A0akS8u, __rt_A7jnlIr, __rt_CXFfAul, __rt_Ju6MvJU, __rt_o1EosWH, __rt_ujMZYNY } from "../../.mion/types/rt/VIdAjpHu1X.js";
16
16
  import { FatalError, MION_ROUTES, RpcError, StatusCodes } from "@mionjs/core";
17
17
  //#region src/routes/errors.routes.ts
18
18
  var DEFAULT_WIRE = { parser: {
@@ -24,17 +24,17 @@ var mionErrorsRoutes = {
24
24
  [MION_ROUTES.thrownErrors]: route((ctx) => {
25
25
  return ctx.request.thrownErrors || {};
26
26
  }, DEFAULT_WIRE, [
27
- __rt_Xhuv_hqa3Nzs,
28
- __rt_OBOg_hqa3Nzs,
29
- __rt_mzca_hqa3Nzs,
30
- __rt_A0Qb_hqa3Nzs,
31
- __rt_Ky89_hqa3Nzs
27
+ __rt_Xhuv_Ju6MvJU,
28
+ __rt_OBOg_Ju6MvJU,
29
+ __rt_mzca_Ju6MvJU,
30
+ __rt_A0Qb_Ju6MvJU,
31
+ __rt_Ky89_Ju6MvJU
32
32
  ], [
33
- __rt_Xhuv_G42dZdW,
34
- __rt_OBOg_G42dZdW,
35
- __rt_A0Qb_G42dZdW,
36
- __rt_Ky89_G42dZdW
37
- ], __rt_hqa3Nzs, __rt_G42dZdW, __rt_w6KmCD1, __rt_JWRNzuD),
33
+ __rt_Xhuv_ujMZYNY,
34
+ __rt_OBOg_ujMZYNY,
35
+ __rt_A0Qb_ujMZYNY,
36
+ __rt_Ky89_ujMZYNY
37
+ ], __rt_Ju6MvJU, __rt_ujMZYNY, __rt_A7jnlIr, __rt_o1EosWH),
38
38
  /** Strongly types the errors an adapter raises rather than a handler: before the router sees the request
39
39
  * (an HTTP server error, a connection issue), or after the route resolved (a body the adapter refused,
40
40
  * which then runs the chain's alwaysRun members). Registering it also stops a user route taking the name. */
@@ -44,17 +44,17 @@ var mionErrorsRoutes = {
44
44
  type: "platform-error"
45
45
  });
46
46
  }, DEFAULT_WIRE, [
47
- __rt_Xhuv_hqa3Nzs,
48
- __rt_OBOg_hqa3Nzs,
49
- __rt_mzca_hqa3Nzs,
50
- __rt_A0Qb_hqa3Nzs,
51
- __rt_Ky89_hqa3Nzs
47
+ __rt_Xhuv_Ju6MvJU,
48
+ __rt_OBOg_Ju6MvJU,
49
+ __rt_mzca_Ju6MvJU,
50
+ __rt_A0Qb_Ju6MvJU,
51
+ __rt_Ky89_Ju6MvJU
52
52
  ], [
53
- __rt_Xhuv_D32xQCR,
54
- __rt_OBOg_D32xQCR,
55
- __rt_A0Qb_D32xQCR,
56
- __rt_Ky89_D32xQCR
57
- ], __rt_hqa3Nzs, __rt_D32xQCR, __rt_w6KmCD1, __rt_jzOWBBT)
53
+ __rt_Xhuv_CXFfAul,
54
+ __rt_OBOg_CXFfAul,
55
+ __rt_A0Qb_CXFfAul,
56
+ __rt_Ky89_CXFfAul
57
+ ], __rt_Ju6MvJU, __rt_CXFfAul, __rt_A7jnlIr, __rt_A0akS8u)
58
58
  };
59
59
  /** The first member of each of mion's two not-found chains. It throws, so the dispatcher skips every later
60
60
  * member that does not declare `alwaysRun`: a failed request never reaches a session loader or an auth step.
@@ -1,6 +1,7 @@
1
1
  import { JSON_CONTENT_TYPE } from "../constants.js";
2
2
  import { recordUndeclaredError } from "../lib/dispatchError.js";
3
3
  import { rawMiddleware } from "../lib/handlers.js";
4
+ import { decodeQueryBody } from "../lib/queryBody.js";
4
5
  import { getRouteExecutable, getRouterOptions } from "../router.js";
5
6
  import { FatalError, MION_ROUTES, SerializerModes, StatusCodes, isRpcError } from "@mionjs/core";
6
7
  //#region src/routes/serializer.routes.ts
@@ -9,7 +10,8 @@ import { FatalError, MION_ROUTES, SerializerModes, StatusCodes, isRpcError } fro
9
10
  * @mion:rawMiddleware
10
11
  */
11
12
  function deserializeRequestBody(context) {
12
- if (!context.readsBody || context.response.hasErrors || !context.request.rawBody) return;
13
+ if (!context.readsBody || context.response.stopped) return;
14
+ if (!context.request.rawBody && !readQueryBody(context)) return;
13
15
  rejectOversizedBody(context.request.rawBody, context.maxBodySize);
14
16
  let parsedBody;
15
17
  switch (context.request.bodyType) {
@@ -42,6 +44,15 @@ function deserializeRequestBody(context) {
42
44
  context.request.body = parsedBody;
43
45
  if (getRouterOptions().releaseRawBody) context.request.rawBody = "";
44
46
  }
47
+ /** A body-less request may carry its body in `?data=`; every platform hands the query over as it came */
48
+ function readQueryBody(context) {
49
+ const rawBody = decodeQueryBody(context.urlQuery);
50
+ if (rawBody === void 0) return false;
51
+ const request = context.request;
52
+ request.rawBody = rawBody;
53
+ request.bodyType = SerializerModes.stringifyJson;
54
+ return true;
55
+ }
45
56
  /** The router-level check of the limit the context carries (the chain's number, capped by the platform's).
46
57
  * The node / uws adapters stopped the read at the same number; this is what holds on a platform that hands
47
58
  * the body over whole. A string is measured in UTF-16 code units, never more than its byte length, so the
@@ -97,7 +108,7 @@ function onPrepareForJsonExecutableError(context, method, e) {
97
108
  const err = new FatalError({
98
109
  statusCode: StatusCodes.UNEXPECTED_ERROR,
99
110
  type: "prepare-for-json-response-error",
100
- publicMessage: `Failed to prepare return value for JSON for handler ${method.id}, expected response type: ${method.returnJitFns.json.encode.typeName}`,
111
+ publicMessage: `Failed to prepare the return value of ${method.id} for JSON.`,
101
112
  originalError: e,
102
113
  errorData: { methodId: method.id }
103
114
  });
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.routes.js","names":[],"sources":["../../../../src/routes/serializer.routes.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 {MionResponse, MionRequest, CallContext, ResponseBody, RawRequestBody} from '../types/context.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {MiddlewaresCollection, MayReturnError} from '../types/publicMethods.ts';\nimport {AnyObject, Mutable, MION_ROUTES, StatusCodes, SerializerModes} from '@mionjs/core';\nimport {rawMiddleware} from '../lib/handlers.ts';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport {getRouteExecutable, getRouterOptions} from '../router.ts';\nimport {FatalError, isRpcError} from '@mionjs/core';\nimport {RemoteMethod} from '../types/remoteMethods.ts';\nimport {recordUndeclaredError} from '../lib/dispatchError.ts';\n\n// ############# PUBLIC METHODS #############\n\n/** Runs before any other middleware or route handler. Registered through `rawMiddleware`: it runs before the\n * response contract exists, so it throws rather than answering with a declared error.\n * @mion:rawMiddleware\n */\nexport function deserializeRequestBody(context: CallContext): MayReturnError {\n // a request that already failed never parses: a not-found chain has no route to feed and the adapter\n // skipped the read; a caller that handed a body anyway (aws, gcloud, dispatchRoute) gets the same answer\n if (!context.readsBody || context.response.hasErrors || !context.request.rawBody) return;\n rejectOversizedBody(context.request.rawBody, context.maxBodySize);\n let parsedBody: any;\n switch (context.request.bodyType) {\n case SerializerModes.stringifyJson: // jit stringify json\n try {\n parsedBody = JSON.parse(context.request.rawBody as string);\n } catch (err: any) {\n // Fixed text: the engine's parse message (which quotes the offending input) stays on originalError\n throw new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'parsing-json-request-error',\n publicMessage: 'Invalid json request body.',\n originalError: err,\n });\n }\n break;\n case SerializerModes.json: // Object (pre-parsed body from platforms like Google Cloud Functions where Express auto-parses JSON)\n parsedBody = context.request.rawBody;\n break;\n default:\n throw new Error(`Invalid body type ${String(context.request.bodyType)}`);\n }\n if (Array.isArray(parsedBody)) {\n // an array body is a single route call, rebuilt as a body: /route1 [p1, p2] => {route1: [p1, p2]}\n // the chain already knows which member is the route, so this costs no second router lookup\n const {methods, routeIndex} = context.executionChain;\n parsedBody = {[methods[routeIndex].id]: parsedBody};\n }\n // `null`, `0`, `false` and `\"\"` are valid JSON documents but not a request body\n if (parsedBody === null || typeof parsedBody !== 'object')\n throw new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'invalid-request-body',\n publicMessage: 'Wrong request body. Expecting a body containing the route name and parameters.',\n });\n (context.request as Mutable<MionRequest>).body = parsedBody;\n // Nothing reads the raw body after this. An empty string rather than undefined, because `rawBody` is a\n // non-optional public field: it frees the body without making every consumer's read a maybe.\n if (getRouterOptions().releaseRawBody) (context.request as Mutable<MionRequest>).rawBody = '';\n}\n\n/** The router-level check of the limit the context carries (the chain's number, capped by the platform's).\n * The node / uws adapters stopped the read at the same number; this is what holds on a platform that hands\n * the body over whole. A string is measured in UTF-16 code units, never more than its byte length, so the\n * byte-exact adapter limit always fires first. */\nfunction rejectOversizedBody(rawBody: RawRequestBody, maxBodySize: number): void {\n // A pre-parsed object body has no wire size here and is never refused for being unmeasurable:\n // `dispatchRoute`, a batch and a test all pass bodies that never crossed a wire. The adapter handing a\n // parsed body over still has the wire size, so it owns the check (gcloud measures content-length first).\n if (typeof rawBody !== 'string' || rawBody.length <= maxBodySize) return;\n throw new FatalError({\n statusCode: StatusCodes.PAYLOAD_TOO_LARGE,\n type: 'request-payload-too-large',\n publicMessage: 'Payload Too Large',\n });\n}\n\n/** Runs after any other middleware or route handler. Registered through `rawMiddleware`: it IS the layer that\n * writes the answer, so it has no declared error to return and throws instead.\n * @mion:rawMiddleware\n */\nexport function serializeResponseBody(context: CallContext, opts: RouterOptions): MayReturnError {\n const response = context.response as Mutable<MionResponse>;\n const respBody: AnyObject = response.body;\n // prepareBodyForJson mutates in place; the adapter stringifies the body\n response.contentType = JSON_CONTENT_TYPE;\n prepareBodyForJson(context, context.executionChain.methods, respBody);\n}\n\n/** A mistyped handler's undeclared error stays raw JSON: the success encoder would mangle it, the client reads its brand. */\nfunction isUndeclaredError(method: RemoteMethod, value: unknown): boolean {\n return isRpcError(value) && !method.returnJitFns.isType.fn(value);\n}\n\nfunction prepareBodyForJson(context: CallContext, executionChain: RemoteMethod[], respBody: ResponseBody): void {\n for (let i = 0; i < executionChain.length; i++) {\n const method = executionChain[i];\n // own key only: a skipped member named like `toString` would otherwise encode Object.prototype's function\n if (!method.hasReturnData || !Object.hasOwn(respBody, method.id)) continue;\n const returnValue = respBody[method.id];\n if (typeof returnValue === 'undefined') continue;\n try {\n const preparedValue = prepareHandlerReturnValue(method, returnValue);\n if (preparedValue !== undefined) (respBody as Mutable<ResponseBody>)[method.id] = preparedValue;\n } catch (e: any) {\n onPrepareForJsonExecutableError(context, method, e);\n }\n }\n // read off the request after the loop: a failure inside it creates the map when it is the first error\n const thrownErrors = context.request.thrownErrors;\n if (thrownErrors) {\n (respBody as Mutable<ResponseBody>)['@thrownErrors'] = thrownErrors;\n const method = getRouteExecutable(MION_ROUTES.thrownErrors)!;\n try {\n const preparedValue = prepareHandlerReturnValue(method, thrownErrors);\n if (preparedValue !== undefined) (respBody as Mutable<ResponseBody>)[method.id] = preparedValue;\n } catch (e: any) {\n onPrepareForJsonExecutableError(context, method, e);\n }\n }\n}\n\nfunction onPrepareForJsonExecutableError(context: CallContext, method: RemoteMethod, e: any) {\n const err = new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'prepare-for-json-response-error',\n publicMessage: `Failed to prepare return value for JSON for handler ${method.id}, expected response type: ${method.returnJitFns.json.encode.typeName}`,\n originalError: e,\n errorData: {methodId: method.id},\n });\n recordUndeclaredError(context, method.id, err);\n}\n\nfunction prepareHandlerReturnValue(method: RemoteMethod, returnValue: any): any {\n if (!method.hasReturnData) return undefined;\n const {json} = method.returnJitFns;\n // an undeclared error is left as it is: the platform's JSON.stringify writes its own fields\n if (json.encode.isNoop || isUndeclaredError(method, returnValue)) return returnValue;\n return json.encode.fn(returnValue);\n}\n\nconst SERIALIZE_RESPONSE_ID = 'mionSerializeResponse';\n\nexport const serializerMiddlewares = {\n mionDeserializeRequest: rawMiddleware(deserializeRequestBody, {alwaysRun: true}),\n [SERIALIZE_RESPONSE_ID]: rawMiddleware(serializeResponseBody, {alwaysRun: true}),\n} satisfies MiddlewaresCollection;\n"],"mappings":"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"}
1
+ {"version":3,"file":"serializer.routes.js","names":[],"sources":["../../../../src/routes/serializer.routes.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 {MionResponse, MionRequest, CallContext, ResponseBody, RawRequestBody} from '../types/context.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {MiddlewaresCollection, MayReturnError} from '../types/publicMethods.ts';\nimport {AnyObject, Mutable, MION_ROUTES, StatusCodes, SerializerModes} from '@mionjs/core';\nimport {rawMiddleware} from '../lib/handlers.ts';\nimport {JSON_CONTENT_TYPE} from '../constants.ts';\nimport {getRouteExecutable, getRouterOptions} from '../router.ts';\nimport {FatalError, isRpcError} from '@mionjs/core';\nimport {RemoteMethod} from '../types/remoteMethods.ts';\nimport {recordUndeclaredError} from '../lib/dispatchError.ts';\nimport {decodeQueryBody} from '../lib/queryBody.ts';\n\n// ############# PUBLIC METHODS #############\n\n/** Runs before any other middleware or route handler. Registered through `rawMiddleware`: it runs before the\n * response contract exists, so it throws rather than answering with a declared error.\n * @mion:rawMiddleware\n */\nexport function deserializeRequestBody(context: CallContext): MayReturnError {\n // a request that already failed or ended never parses: a not-found chain has no route to feed and the adapter\n // skipped the read; a caller that handed a body anyway (aws, gcloud, dispatchRoute) gets the same answer\n if (!context.readsBody || context.response.stopped) return;\n if (!context.request.rawBody && !readQueryBody(context)) return;\n rejectOversizedBody(context.request.rawBody, context.maxBodySize);\n let parsedBody: any;\n switch (context.request.bodyType) {\n case SerializerModes.stringifyJson: // jit stringify json\n try {\n parsedBody = JSON.parse(context.request.rawBody as string);\n } catch (err: any) {\n // Fixed text: the engine's parse message (which quotes the offending input) stays on originalError\n throw new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'parsing-json-request-error',\n publicMessage: 'Invalid json request body.',\n originalError: err,\n });\n }\n break;\n case SerializerModes.json: // Object (pre-parsed body from platforms like Google Cloud Functions where Express auto-parses JSON)\n parsedBody = context.request.rawBody;\n break;\n default:\n throw new Error(`Invalid body type ${String(context.request.bodyType)}`);\n }\n if (Array.isArray(parsedBody)) {\n // an array body is a single route call, rebuilt as a body: /route1 [p1, p2] => {route1: [p1, p2]}\n // the chain already knows which member is the route, so this costs no second router lookup\n const {methods, routeIndex} = context.executionChain;\n parsedBody = {[methods[routeIndex].id]: parsedBody};\n }\n // `null`, `0`, `false` and `\"\"` are valid JSON documents but not a request body\n if (parsedBody === null || typeof parsedBody !== 'object')\n throw new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'invalid-request-body',\n publicMessage: 'Wrong request body. Expecting a body containing the route name and parameters.',\n });\n (context.request as Mutable<MionRequest>).body = parsedBody;\n // Nothing reads the raw body after this. An empty string rather than undefined, because `rawBody` is a\n // non-optional public field: it frees the body without making every consumer's read a maybe.\n if (getRouterOptions().releaseRawBody) (context.request as Mutable<MionRequest>).rawBody = '';\n}\n\n/** A body-less request may carry its body in `?data=`; every platform hands the query over as it came */\nfunction readQueryBody(context: CallContext): boolean {\n const rawBody = decodeQueryBody(context.urlQuery);\n if (rawBody === undefined) return false;\n const request = context.request as Mutable<MionRequest>;\n request.rawBody = rawBody;\n request.bodyType = SerializerModes.stringifyJson;\n return true;\n}\n\n/** The router-level check of the limit the context carries (the chain's number, capped by the platform's).\n * The node / uws adapters stopped the read at the same number; this is what holds on a platform that hands\n * the body over whole. A string is measured in UTF-16 code units, never more than its byte length, so the\n * byte-exact adapter limit always fires first. */\nfunction rejectOversizedBody(rawBody: RawRequestBody, maxBodySize: number): void {\n // A pre-parsed object body has no wire size here and is never refused for being unmeasurable:\n // `dispatchRoute`, a batch and a test all pass bodies that never crossed a wire. The adapter handing a\n // parsed body over still has the wire size, so it owns the check (gcloud measures content-length first).\n if (typeof rawBody !== 'string' || rawBody.length <= maxBodySize) return;\n throw new FatalError({\n statusCode: StatusCodes.PAYLOAD_TOO_LARGE,\n type: 'request-payload-too-large',\n publicMessage: 'Payload Too Large',\n });\n}\n\n/** Runs after any other middleware or route handler. Registered through `rawMiddleware`: it IS the layer that\n * writes the answer, so it has no declared error to return and throws instead.\n * @mion:rawMiddleware\n */\nexport function serializeResponseBody(context: CallContext, opts: RouterOptions): MayReturnError {\n const response = context.response as Mutable<MionResponse>;\n const respBody: AnyObject = response.body;\n // prepareBodyForJson mutates in place; the adapter stringifies the body\n response.contentType = JSON_CONTENT_TYPE;\n prepareBodyForJson(context, context.executionChain.methods, respBody);\n}\n\n/** A mistyped handler's undeclared error stays raw JSON: the success encoder would mangle it, the client reads its brand. */\nfunction isUndeclaredError(method: RemoteMethod, value: unknown): boolean {\n return isRpcError(value) && !method.returnJitFns.isType.fn(value);\n}\n\nfunction prepareBodyForJson(context: CallContext, executionChain: RemoteMethod[], respBody: ResponseBody): void {\n for (let i = 0; i < executionChain.length; i++) {\n const method = executionChain[i];\n // own key only: a skipped member named like `toString` would otherwise encode Object.prototype's function\n if (!method.hasReturnData || !Object.hasOwn(respBody, method.id)) continue;\n const returnValue = respBody[method.id];\n if (typeof returnValue === 'undefined') continue;\n try {\n const preparedValue = prepareHandlerReturnValue(method, returnValue);\n if (preparedValue !== undefined) (respBody as Mutable<ResponseBody>)[method.id] = preparedValue;\n } catch (e: any) {\n onPrepareForJsonExecutableError(context, method, e);\n }\n }\n // read off the request after the loop: a failure inside it creates the map when it is the first error\n const thrownErrors = context.request.thrownErrors;\n if (thrownErrors) {\n (respBody as Mutable<ResponseBody>)['@thrownErrors'] = thrownErrors;\n const method = getRouteExecutable(MION_ROUTES.thrownErrors)!;\n try {\n const preparedValue = prepareHandlerReturnValue(method, thrownErrors);\n if (preparedValue !== undefined) (respBody as Mutable<ResponseBody>)[method.id] = preparedValue;\n } catch (e: any) {\n onPrepareForJsonExecutableError(context, method, e);\n }\n }\n}\n\nfunction onPrepareForJsonExecutableError(context: CallContext, method: RemoteMethod, e: any) {\n const err = new FatalError({\n statusCode: StatusCodes.UNEXPECTED_ERROR,\n type: 'prepare-for-json-response-error',\n // the return type's name is the server's own: it stays off the wire\n publicMessage: `Failed to prepare the return value of ${method.id} for JSON.`,\n originalError: e,\n errorData: {methodId: method.id},\n });\n recordUndeclaredError(context, method.id, err);\n}\n\nfunction prepareHandlerReturnValue(method: RemoteMethod, returnValue: any): any {\n if (!method.hasReturnData) return undefined;\n const {json} = method.returnJitFns;\n // an undeclared error is left as it is: the platform's JSON.stringify writes its own fields\n if (json.encode.isNoop || isUndeclaredError(method, returnValue)) return returnValue;\n return json.encode.fn(returnValue);\n}\n\nconst SERIALIZE_RESPONSE_ID = 'mionSerializeResponse';\n\nexport const serializerMiddlewares = {\n mionDeserializeRequest: rawMiddleware(deserializeRequestBody, {alwaysRun: true}),\n [SERIALIZE_RESPONSE_ID]: rawMiddleware(serializeResponseBody, {alwaysRun: true}),\n} satisfies MiddlewaresCollection;\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { AnyObject, SerializerCode, RpcError } from '@mionjs/core';
2
2
  import { MethodsExecutionChain } from './remoteMethods.ts';
3
- export interface CallContext<ContextData extends Record<string, any> = any> {
3
+ export interface CallContext<SharedData extends Record<string, any> = any> {
4
4
  readonly path: string;
5
5
  readonly request: MionRequest;
6
6
  readonly response: MionResponse;
7
- shared: ContextData;
7
+ shared: SharedData;
8
8
  readonly executionChain: MethodsExecutionChain;
9
9
  readonly maxBodySize: number;
10
10
  readonly readsBody: boolean;
@@ -13,7 +13,9 @@ export interface CallContext<ContextData extends Record<string, any> = any> {
13
13
  readonly batchRouteIds?: string[];
14
14
  }
15
15
  export type RawRequestBody = string | AnyObject;
16
+ export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH' | 'QUERY' | 'OTHER';
16
17
  export interface MionRequest {
18
+ readonly method: HttpMethod;
17
19
  readonly headers: Readonly<Omit<MionHeaders, 'append' | 'set' | 'delete'>>;
18
20
  readonly rawBody: RawRequestBody;
19
21
  readonly bodyType: SerializerCode;
@@ -26,6 +28,7 @@ export interface MionResponse {
26
28
  readonly headers: Readonly<MionHeaders>;
27
29
  readonly body: Readonly<ResponseBody>;
28
30
  readonly hasErrors: boolean;
31
+ readonly stopped: boolean;
29
32
  readonly fatalError?: RpcError<string>;
30
33
  }
31
34
  export type ResponseDefaults = Readonly<Record<string, string>>;
@@ -43,7 +46,7 @@ export interface MionHeaders {
43
46
  keys(): IterableIterator<string>;
44
47
  values(): IterableIterator<string>;
45
48
  }
46
- export type ContextDataFactory<ContextData extends Record<string, any>> = () => ContextData;
49
+ export type SharedDataFactory<SharedData extends Record<string, any>> = () => SharedData;
47
50
  export interface ResponseBody extends Record<string, any> {
48
51
  '@thrownErrors'?: Record<string, RpcError<string>>;
49
52
  }
@@ -3,21 +3,21 @@ import { HandlerType, RtMarkerPayload } from '@mionjs/core';
3
3
  import { HeadersMiddlewareOptions, MiddlewareOptions, RawMiddlewareOptions, RouteOptions } from './remoteMethods.ts';
4
4
  import { RouterOptions } from './general.ts';
5
5
  export type DeclaredRouterOptions = Partial<RouterOptions>;
6
- export interface RouteDef<H extends Handler = any, RO extends RouteOptions = RouteOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
6
+ export interface RouteDef<H extends Handler = any, RO extends object = RouteOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
7
7
  type: typeof HandlerType.route;
8
8
  handler: H;
9
9
  options?: RO;
10
10
  rtFns?: RtMarkerPayload;
11
11
  readonly routerOptions?: O;
12
12
  }
13
- export interface MiddlewareDef<H extends Handler = any, RO extends MiddlewareOptions = MiddlewareOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
13
+ export interface MiddlewareDef<H extends Handler = any, RO extends object = MiddlewareOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
14
14
  type: typeof HandlerType.middleware;
15
15
  handler: H;
16
16
  options?: RO;
17
17
  rtFns?: RtMarkerPayload;
18
18
  readonly routerOptions?: O;
19
19
  }
20
- export interface HeadersMiddlewareDef<H extends HeaderHandler = any, RO extends HeadersMiddlewareOptions = HeadersMiddlewareOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
20
+ export interface HeadersMiddlewareDef<H extends HeaderHandler = any, RO extends object = HeadersMiddlewareOptions, O extends DeclaredRouterOptions = DeclaredRouterOptions> {
21
21
  type: typeof HandlerType.headersMiddleware;
22
22
  handler: H;
23
23
  options?: RO;
@@ -30,4 +30,6 @@ export interface RawMiddlewareDef<H extends RawMiddlewareHandler = any> {
30
30
  options?: RawMiddlewareOptions;
31
31
  }
32
32
  export type AnyHandlerDef = RouteDef | MiddlewareDef | HeadersMiddlewareDef | RawMiddlewareDef;
33
+ export type AnyMiddlewareDef = MiddlewareDef<any, object>;
34
+ export type AnyHeadersMiddlewareDef = HeadersMiddlewareDef<any, object>;
33
35
  //# sourceMappingURL=definitions.d.ts.map
@@ -1,16 +1,16 @@
1
1
  import { CoreRouterOptions, ParserOption } from '@mionjs/core';
2
- import { ContextDataFactory } from './context.ts';
3
- import { HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef, RouteDef } from './definitions.ts';
2
+ import { CallContext, SharedDataFactory } from './context.ts';
3
+ import { AnyHeadersMiddlewareDef, AnyMiddlewareDef, RawMiddlewareDef, RouteDef } from './definitions.ts';
4
4
  export type Route = RouteDef;
5
- export type RouterEntry = Routes | MiddlewareDef | RouteDef | RawMiddlewareDef | HeadersMiddlewareDef;
5
+ export type RouterEntry = Routes | AnyMiddlewareDef | RouteDef<any, object> | RawMiddlewareDef | AnyHeadersMiddlewareDef;
6
6
  export interface Routes {
7
7
  [key: string]: RouterEntry;
8
8
  }
9
- export interface RouterOptions<Req = any, ContextData extends Record<string, any> = any> extends CoreRouterOptions {
9
+ export interface RouterOptions<Req = any, SharedData extends Record<string, any> = any> extends CoreRouterOptions {
10
10
  basePath: string;
11
11
  suffix: string;
12
12
  pathTransform?: (request: Req, path: string) => string;
13
- contextDataFactory?: ContextDataFactory<ContextData>;
13
+ sharedDataFactory?: SharedDataFactory<SharedData>;
14
14
  parser?: ParserOption;
15
15
  sanitizeParams?: boolean;
16
16
  getPublicRoutesData: boolean;
@@ -26,4 +26,23 @@ export interface HostRequestHandler {
26
26
  node?(req: unknown, res: unknown): void;
27
27
  fetch?(req: Request): Response | Promise<Response>;
28
28
  }
29
+ export interface MionSecurityOptions {
30
+ origins?: readonly string[] | '*' | ((ctx: CallContext, origin: string) => boolean | Promise<boolean>);
31
+ cors?: false | MionCorsSettings;
32
+ csrf?: false | MionCsrfSettings;
33
+ }
34
+ export interface MionSecurityHandlerOptions {
35
+ cors?: false;
36
+ }
37
+ export interface MionCorsSettings {
38
+ credentials?: boolean;
39
+ maxAge?: number;
40
+ allowHeaders?: string[];
41
+ exposeHeaders?: string[];
42
+ excludeHeaders?: string[];
43
+ }
44
+ export interface MionCsrfSettings {
45
+ crossOrigin?: boolean;
46
+ methodByIntent?: boolean;
47
+ }
29
48
  //# sourceMappingURL=general.d.ts.map
@@ -1,7 +1,6 @@
1
- import { HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef, RouteDef } from './definitions.ts';
1
+ import { HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef } from './definitions.ts';
2
2
  import { Route, RouterEntry, Routes } from './general.ts';
3
- import { RawMethod, HeadersMethod, RouteMethod, RemoteMethod } from './remoteMethods.ts';
4
- export declare function isRouteDef(entry: RouterEntry): entry is RouteDef;
3
+ import { RemoteMethod } from './remoteMethods.ts';
5
4
  export declare function isMiddlewareDef(entry: RouterEntry): entry is MiddlewareDef;
6
5
  export declare function isRawMiddlewareDef(entry: RouterEntry): entry is RawMiddlewareDef;
7
6
  export declare function isHeadersMiddlewareDef(entry: RouterEntry): entry is HeadersMiddlewareDef;
@@ -11,8 +10,5 @@ export declare function isRoutes(entry: RouterEntry | Routes): entry is Routes;
11
10
  export declare function isExecutable(entry: RemoteMethod | {
12
11
  pathPointer: string[];
13
12
  }): entry is RemoteMethod;
14
- export declare function isRawExecutable(entry: RemoteMethod): entry is RawMethod;
15
13
  export declare function isPublicExecutable(executable: RemoteMethod): boolean;
16
- export declare function isHeaderExecutable(entry: RemoteMethod): entry is HeadersMethod;
17
- export declare function isRouteExecutable(entry: RemoteMethod): entry is RouteMethod;
18
14
  //# sourceMappingURL=guards.d.ts.map
@@ -1,8 +1,5 @@
1
1
  import { HandlerType } from "@mionjs/core";
2
2
  //#region src/types/guards.ts
3
- function isRouteDef(entry) {
4
- return entry.type === HandlerType.route;
5
- }
6
3
  function isMiddlewareDef(entry) {
7
4
  return entry.type === HandlerType.middleware;
8
5
  }
@@ -24,9 +21,6 @@ function isRoutes(entry) {
24
21
  function isExecutable(entry) {
25
22
  return typeof entry?.id === "string" && typeof entry.handler === "function";
26
23
  }
27
- function isRawExecutable(entry) {
28
- return entry.type === HandlerType.rawMiddleware;
29
- }
30
24
  /** What the metadata route exposes: whatever the client must encode or decode. NOT access control. */
31
25
  function isPublicExecutable(executable) {
32
26
  if (executable.type === HandlerType.rawMiddleware) return false;
@@ -35,13 +29,7 @@ function isPublicExecutable(executable) {
35
29
  const hasHeaderParams = !!executable.headersParam?.headerNames?.length;
36
30
  return hasPublicParams || hasHeaderParams || executable.hasReturnData;
37
31
  }
38
- function isHeaderExecutable(entry) {
39
- return entry.type === HandlerType.headersMiddleware;
40
- }
41
- function isRouteExecutable(entry) {
42
- return entry.type === HandlerType.route;
43
- }
44
32
  //#endregion
45
- export { isAnyMiddlewareDef, isExecutable, isHeaderExecutable, isHeadersMiddlewareDef, isMiddlewareDef, isPublicExecutable, isRawExecutable, isRawMiddlewareDef, isRoute, isRouteDef, isRouteExecutable, isRoutes };
33
+ export { isAnyMiddlewareDef, isExecutable, isHeadersMiddlewareDef, isMiddlewareDef, isPublicExecutable, isRawMiddlewareDef, isRoute, isRoutes };
46
34
 
47
35
  //# sourceMappingURL=guards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","names":[],"sources":["../../../../src/types/guards.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 {HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef, RouteDef} from './definitions.ts';\nimport {Route, RouterEntry, Routes} from './general.ts';\nimport {RawMethod} from './remoteMethods.ts';\nimport {HeadersMethod} from './remoteMethods.ts';\nimport {RouteMethod} from './remoteMethods.ts';\nimport {RemoteMethod} from './remoteMethods.ts';\nimport {HandlerType} from '@mionjs/core';\n\n// ####### type guards #######\n\nexport function isRouteDef(entry: RouterEntry): entry is RouteDef {\n return entry.type === HandlerType.route;\n}\n\nexport function isMiddlewareDef(entry: RouterEntry): entry is MiddlewareDef {\n return entry.type === HandlerType.middleware;\n}\n\nexport function isRawMiddlewareDef(entry: RouterEntry): entry is RawMiddlewareDef {\n return entry.type === HandlerType.rawMiddleware;\n}\n\nexport function isHeadersMiddlewareDef(entry: RouterEntry): entry is HeadersMiddlewareDef {\n return entry.type === HandlerType.headersMiddleware;\n}\n\nexport function isAnyMiddlewareDef(entry: RouterEntry): entry is HeadersMiddlewareDef | MiddlewareDef | RawMiddlewareDef {\n return isMiddlewareDef(entry) || isRawMiddlewareDef(entry) || isHeadersMiddlewareDef(entry);\n}\n\nexport function isRoute(entry: RouterEntry): entry is Route {\n return entry.type === HandlerType.route;\n}\n\nexport function isRoutes(entry: RouterEntry | Routes): entry is Routes {\n return typeof entry === 'object';\n}\n\nexport function isExecutable(entry: RemoteMethod | {pathPointer: string[]}): entry is RemoteMethod {\n return typeof (entry as RemoteMethod)?.id === 'string' && typeof (entry as RemoteMethod).handler === 'function';\n}\nexport function isRawExecutable(entry: RemoteMethod): entry is RawMethod {\n return entry.type === HandlerType.rawMiddleware;\n}\n\n/** What the metadata route exposes: whatever the client must encode or decode. NOT access control. */\nexport function isPublicExecutable(executable: RemoteMethod): boolean {\n if (executable.type === HandlerType.rawMiddleware) return false;\n if (executable.type === HandlerType.route) return true;\n const hasPublicParams = !!executable.paramsCount;\n const hasHeaderParams = !!(executable as HeadersMethod).headersParam?.headerNames?.length;\n return hasPublicParams || hasHeaderParams || executable.hasReturnData;\n}\n\nexport function isHeaderExecutable(entry: RemoteMethod): entry is HeadersMethod {\n return entry.type === HandlerType.headersMiddleware;\n}\n\nexport function isRouteExecutable(entry: RemoteMethod): entry is RouteMethod {\n return entry.type === HandlerType.route;\n}\n"],"mappings":";;AAiBA,SAAgB,WAAW,OAAuC;CAChE,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,gBAAgB,OAA4C;CAC1E,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,mBAAmB,OAA+C;CAChF,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,uBAAuB,OAAmD;CACxF,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,mBAAmB,OAAsF;CACvH,OAAO,gBAAgB,KAAK,KAAK,mBAAmB,KAAK,KAAK,uBAAuB,KAAK;AAC5F;AAEA,SAAgB,QAAQ,OAAoC;CAC1D,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,SAAS,OAA8C;CACrE,OAAO,OAAO,UAAU;AAC1B;AAEA,SAAgB,aAAa,OAAsE;CACjG,OAAO,OAAQ,OAAwB,OAAO,YAAY,OAAQ,MAAuB,YAAY;AACvG;AACA,SAAgB,gBAAgB,OAAyC;CACvE,OAAO,MAAM,SAAS,YAAY;AACpC;;AAGA,SAAgB,mBAAmB,YAAmC;CACpE,IAAI,WAAW,SAAS,YAAY,eAAe,OAAO;CAC1D,IAAI,WAAW,SAAS,YAAY,OAAO,OAAO;CAClD,MAAM,kBAAkB,CAAC,CAAC,WAAW;CACrC,MAAM,kBAAkB,CAAC,CAAE,WAA6B,cAAc,aAAa;CACnF,OAAO,mBAAmB,mBAAmB,WAAW;AAC1D;AAEA,SAAgB,mBAAmB,OAA6C;CAC9E,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,kBAAkB,OAA2C;CAC3E,OAAO,MAAM,SAAS,YAAY;AACpC"}
1
+ {"version":3,"file":"guards.js","names":[],"sources":["../../../../src/types/guards.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 {HeadersMiddlewareDef, MiddlewareDef, RawMiddlewareDef} from './definitions.ts';\nimport {Route, RouterEntry, Routes} from './general.ts';\nimport {HeadersMethod} from './remoteMethods.ts';\nimport {RemoteMethod} from './remoteMethods.ts';\nimport {HandlerType} from '@mionjs/core';\n\n// ####### type guards #######\n\nexport function isMiddlewareDef(entry: RouterEntry): entry is MiddlewareDef {\n return entry.type === HandlerType.middleware;\n}\n\nexport function isRawMiddlewareDef(entry: RouterEntry): entry is RawMiddlewareDef {\n return entry.type === HandlerType.rawMiddleware;\n}\n\nexport function isHeadersMiddlewareDef(entry: RouterEntry): entry is HeadersMiddlewareDef {\n return entry.type === HandlerType.headersMiddleware;\n}\n\nexport function isAnyMiddlewareDef(entry: RouterEntry): entry is HeadersMiddlewareDef | MiddlewareDef | RawMiddlewareDef {\n return isMiddlewareDef(entry) || isRawMiddlewareDef(entry) || isHeadersMiddlewareDef(entry);\n}\n\nexport function isRoute(entry: RouterEntry): entry is Route {\n return entry.type === HandlerType.route;\n}\n\nexport function isRoutes(entry: RouterEntry | Routes): entry is Routes {\n return typeof entry === 'object';\n}\n\nexport function isExecutable(entry: RemoteMethod | {pathPointer: string[]}): entry is RemoteMethod {\n return typeof (entry as RemoteMethod)?.id === 'string' && typeof (entry as RemoteMethod).handler === 'function';\n}\n/** What the metadata route exposes: whatever the client must encode or decode. NOT access control. */\nexport function isPublicExecutable(executable: RemoteMethod): boolean {\n if (executable.type === HandlerType.rawMiddleware) return false;\n if (executable.type === HandlerType.route) return true;\n const hasPublicParams = !!executable.paramsCount;\n const hasHeaderParams = !!(executable as HeadersMethod).headersParam?.headerNames?.length;\n return hasPublicParams || hasHeaderParams || executable.hasReturnData;\n}\n"],"mappings":";;AAeA,SAAgB,gBAAgB,OAA4C;CAC1E,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,mBAAmB,OAA+C;CAChF,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,uBAAuB,OAAmD;CACxF,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,mBAAmB,OAAsF;CACvH,OAAO,gBAAgB,KAAK,KAAK,mBAAmB,KAAK,KAAK,uBAAuB,KAAK;AAC5F;AAEA,SAAgB,QAAQ,OAAoC;CAC1D,OAAO,MAAM,SAAS,YAAY;AACpC;AAEA,SAAgB,SAAS,OAA8C;CACrE,OAAO,OAAO,UAAU;AAC1B;AAEA,SAAgB,aAAa,OAAsE;CACjG,OAAO,OAAQ,OAAwB,OAAO,YAAY,OAAQ,MAAuB,YAAY;AACvG;;AAEA,SAAgB,mBAAmB,YAAmC;CACpE,IAAI,WAAW,SAAS,YAAY,eAAe,OAAO;CAC1D,IAAI,WAAW,SAAS,YAAY,OAAO,OAAO;CAClD,MAAM,kBAAkB,CAAC,CAAC,WAAW;CACrC,MAAM,kBAAkB,CAAC,CAAE,WAA6B,cAAc,aAAa;CACnF,OAAO,mBAAmB,mBAAmB,WAAW;AAC1D"}