@mionjs/router 0.8.8 → 0.13.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 (771) hide show
  1. package/.dist/cjs/.mion/types/A0Qb_D32xQCR.cjs +16 -0
  2. package/.dist/cjs/.mion/types/A0Qb_D32xQCR.cjs.map +1 -0
  3. package/.dist/cjs/.mion/types/A0Qb_D5PMNNO.cjs +17 -0
  4. package/.dist/cjs/.mion/types/A0Qb_D5PMNNO.cjs.map +1 -0
  5. package/.dist/cjs/.mion/types/A0Qb_E1CjDEA.cjs +36 -0
  6. package/.dist/cjs/.mion/types/A0Qb_E1CjDEA.cjs.map +1 -0
  7. package/.dist/cjs/.mion/types/A0Qb_EYEglde.cjs +16 -0
  8. package/.dist/cjs/.mion/types/A0Qb_EYEglde.cjs.map +1 -0
  9. package/.dist/cjs/.mion/types/A0Qb_EyHLuYw.cjs +16 -0
  10. package/.dist/cjs/.mion/types/A0Qb_EyHLuYw.cjs.map +1 -0
  11. package/.dist/cjs/.mion/types/A0Qb_G42dZdW.cjs +16 -0
  12. package/.dist/cjs/.mion/types/A0Qb_G42dZdW.cjs.map +1 -0
  13. package/.dist/cjs/.mion/types/A0Qb_HSE8icr.cjs +16 -0
  14. package/.dist/cjs/.mion/types/A0Qb_HSE8icr.cjs.map +1 -0
  15. package/.dist/cjs/.mion/types/A0Qb_HXAy3Lx.cjs +13 -0
  16. package/.dist/cjs/.mion/types/A0Qb_HXAy3Lx.cjs.map +1 -0
  17. package/.dist/cjs/.mion/types/A0Qb_JJrCj9i.cjs +13 -0
  18. package/.dist/cjs/.mion/types/A0Qb_JJrCj9i.cjs.map +1 -0
  19. package/.dist/cjs/.mion/types/A0Qb_KDyf2Fa.cjs +16 -0
  20. package/.dist/cjs/.mion/types/A0Qb_KDyf2Fa.cjs.map +1 -0
  21. package/.dist/cjs/.mion/types/A0Qb_L3mQkaR.cjs +13 -0
  22. package/.dist/cjs/.mion/types/A0Qb_L3mQkaR.cjs.map +1 -0
  23. package/.dist/cjs/.mion/types/A0Qb_RAudOr2.cjs +13 -0
  24. package/.dist/cjs/.mion/types/A0Qb_RAudOr2.cjs.map +1 -0
  25. package/.dist/cjs/.mion/types/A0Qb_TRnIbow.cjs +17 -0
  26. package/.dist/cjs/.mion/types/A0Qb_TRnIbow.cjs.map +1 -0
  27. package/.dist/cjs/.mion/types/A0Qb_UOI3bXq.cjs +17 -0
  28. package/.dist/cjs/.mion/types/A0Qb_UOI3bXq.cjs.map +1 -0
  29. package/.dist/cjs/.mion/types/A0Qb_VsWxRKn.cjs +13 -0
  30. package/.dist/cjs/.mion/types/A0Qb_VsWxRKn.cjs.map +1 -0
  31. package/.dist/cjs/.mion/types/A0Qb_ZTKzxQG.cjs +16 -0
  32. package/.dist/cjs/.mion/types/A0Qb_ZTKzxQG.cjs.map +1 -0
  33. package/.dist/cjs/.mion/types/A0Qb_b4tYK8X.cjs +16 -0
  34. package/.dist/cjs/.mion/types/A0Qb_b4tYK8X.cjs.map +1 -0
  35. package/.dist/cjs/.mion/types/A0Qb_deFq9zY.cjs +26 -0
  36. package/.dist/cjs/.mion/types/A0Qb_deFq9zY.cjs.map +1 -0
  37. package/.dist/cjs/.mion/types/A0Qb_fMIJ1JT.cjs +14 -0
  38. package/.dist/cjs/.mion/types/A0Qb_fMIJ1JT.cjs.map +1 -0
  39. package/.dist/cjs/.mion/types/A0Qb_g17turq.cjs +13 -0
  40. package/.dist/cjs/.mion/types/A0Qb_g17turq.cjs.map +1 -0
  41. package/.dist/cjs/.mion/types/A0Qb_hqa3Nzs.cjs +14 -0
  42. package/.dist/cjs/.mion/types/A0Qb_hqa3Nzs.cjs.map +1 -0
  43. package/.dist/cjs/.mion/types/A0Qb_iKPrxW9.cjs +16 -0
  44. package/.dist/cjs/.mion/types/A0Qb_iKPrxW9.cjs.map +1 -0
  45. package/.dist/cjs/.mion/types/A0Qb_jLtJ5Kv.cjs +16 -0
  46. package/.dist/cjs/.mion/types/A0Qb_jLtJ5Kv.cjs.map +1 -0
  47. package/.dist/cjs/.mion/types/A0Qb_kibOHkN.cjs +14 -0
  48. package/.dist/cjs/.mion/types/A0Qb_kibOHkN.cjs.map +1 -0
  49. package/.dist/cjs/.mion/types/A0Qb_kz5ne4c.cjs +16 -0
  50. package/.dist/cjs/.mion/types/A0Qb_kz5ne4c.cjs.map +1 -0
  51. package/.dist/cjs/.mion/types/A0Qb_pzBRrJb.cjs +16 -0
  52. package/.dist/cjs/.mion/types/A0Qb_pzBRrJb.cjs.map +1 -0
  53. package/.dist/cjs/.mion/types/Eq2V_EYEglde.cjs +16 -0
  54. package/.dist/cjs/.mion/types/Eq2V_EYEglde.cjs.map +1 -0
  55. package/.dist/cjs/.mion/types/Eq2V_EyHLuYw.cjs +16 -0
  56. package/.dist/cjs/.mion/types/Eq2V_EyHLuYw.cjs.map +1 -0
  57. package/.dist/cjs/.mion/types/Eq2V_HSE8icr.cjs +16 -0
  58. package/.dist/cjs/.mion/types/Eq2V_HSE8icr.cjs.map +1 -0
  59. package/.dist/cjs/.mion/types/Eq2V_HXAy3Lx.cjs +13 -0
  60. package/.dist/cjs/.mion/types/Eq2V_HXAy3Lx.cjs.map +1 -0
  61. package/.dist/cjs/.mion/types/Eq2V_JJrCj9i.cjs +13 -0
  62. package/.dist/cjs/.mion/types/Eq2V_JJrCj9i.cjs.map +1 -0
  63. package/.dist/cjs/.mion/types/Eq2V_KDyf2Fa.cjs +16 -0
  64. package/.dist/cjs/.mion/types/Eq2V_KDyf2Fa.cjs.map +1 -0
  65. package/.dist/cjs/.mion/types/Eq2V_L3mQkaR.cjs +13 -0
  66. package/.dist/cjs/.mion/types/Eq2V_L3mQkaR.cjs.map +1 -0
  67. package/.dist/cjs/.mion/types/Eq2V_RAudOr2.cjs +13 -0
  68. package/.dist/cjs/.mion/types/Eq2V_RAudOr2.cjs.map +1 -0
  69. package/.dist/cjs/.mion/types/Eq2V_TRnIbow.cjs +17 -0
  70. package/.dist/cjs/.mion/types/Eq2V_TRnIbow.cjs.map +1 -0
  71. package/.dist/cjs/.mion/types/Eq2V_UOI3bXq.cjs +17 -0
  72. package/.dist/cjs/.mion/types/Eq2V_UOI3bXq.cjs.map +1 -0
  73. package/.dist/cjs/.mion/types/Eq2V_VsWxRKn.cjs +13 -0
  74. package/.dist/cjs/.mion/types/Eq2V_VsWxRKn.cjs.map +1 -0
  75. package/.dist/cjs/.mion/types/Eq2V_ZTKzxQG.cjs +16 -0
  76. package/.dist/cjs/.mion/types/Eq2V_ZTKzxQG.cjs.map +1 -0
  77. package/.dist/cjs/.mion/types/Eq2V_b4tYK8X.cjs +16 -0
  78. package/.dist/cjs/.mion/types/Eq2V_b4tYK8X.cjs.map +1 -0
  79. package/.dist/cjs/.mion/types/Eq2V_deFq9zY.cjs +26 -0
  80. package/.dist/cjs/.mion/types/Eq2V_deFq9zY.cjs.map +1 -0
  81. package/.dist/cjs/.mion/types/Eq2V_g17turq.cjs +13 -0
  82. package/.dist/cjs/.mion/types/Eq2V_g17turq.cjs.map +1 -0
  83. package/.dist/cjs/.mion/types/Eq2V_iKPrxW9.cjs +16 -0
  84. package/.dist/cjs/.mion/types/Eq2V_iKPrxW9.cjs.map +1 -0
  85. package/.dist/cjs/.mion/types/Eq2V_jLtJ5Kv.cjs +16 -0
  86. package/.dist/cjs/.mion/types/Eq2V_jLtJ5Kv.cjs.map +1 -0
  87. package/.dist/cjs/.mion/types/Eq2V_kz5ne4c.cjs +16 -0
  88. package/.dist/cjs/.mion/types/Eq2V_kz5ne4c.cjs.map +1 -0
  89. package/.dist/cjs/.mion/types/Eq2V_pzBRrJb.cjs +16 -0
  90. package/.dist/cjs/.mion/types/Eq2V_pzBRrJb.cjs.map +1 -0
  91. package/.dist/cjs/.mion/types/Ky89_D32xQCR.cjs +16 -0
  92. package/.dist/cjs/.mion/types/Ky89_D32xQCR.cjs.map +1 -0
  93. package/.dist/cjs/.mion/types/Ky89_D5PMNNO.cjs +16 -0
  94. package/.dist/cjs/.mion/types/Ky89_D5PMNNO.cjs.map +1 -0
  95. package/.dist/cjs/.mion/types/Ky89_E1CjDEA.cjs +32 -0
  96. package/.dist/cjs/.mion/types/Ky89_E1CjDEA.cjs.map +1 -0
  97. package/.dist/cjs/.mion/types/Ky89_EYEglde.cjs +16 -0
  98. package/.dist/cjs/.mion/types/Ky89_EYEglde.cjs.map +1 -0
  99. package/.dist/cjs/.mion/types/Ky89_EyHLuYw.cjs +16 -0
  100. package/.dist/cjs/.mion/types/Ky89_EyHLuYw.cjs.map +1 -0
  101. package/.dist/cjs/.mion/types/Ky89_G42dZdW.cjs +16 -0
  102. package/.dist/cjs/.mion/types/Ky89_G42dZdW.cjs.map +1 -0
  103. package/.dist/cjs/.mion/types/Ky89_HSE8icr.cjs +16 -0
  104. package/.dist/cjs/.mion/types/Ky89_HSE8icr.cjs.map +1 -0
  105. package/.dist/cjs/.mion/types/Ky89_JJrCj9i.cjs +13 -0
  106. package/.dist/cjs/.mion/types/Ky89_JJrCj9i.cjs.map +1 -0
  107. package/.dist/cjs/.mion/types/Ky89_KDyf2Fa.cjs +16 -0
  108. package/.dist/cjs/.mion/types/Ky89_KDyf2Fa.cjs.map +1 -0
  109. package/.dist/cjs/.mion/types/Ky89_L3mQkaR.cjs +13 -0
  110. package/.dist/cjs/.mion/types/Ky89_L3mQkaR.cjs.map +1 -0
  111. package/.dist/cjs/.mion/types/Ky89_RAudOr2.cjs +13 -0
  112. package/.dist/cjs/.mion/types/Ky89_RAudOr2.cjs.map +1 -0
  113. package/.dist/cjs/.mion/types/Ky89_TRnIbow.cjs +13 -0
  114. package/.dist/cjs/.mion/types/Ky89_TRnIbow.cjs.map +1 -0
  115. package/.dist/cjs/.mion/types/Ky89_UOI3bXq.cjs +17 -0
  116. package/.dist/cjs/.mion/types/Ky89_UOI3bXq.cjs.map +1 -0
  117. package/.dist/cjs/.mion/types/Ky89_ZTKzxQG.cjs +16 -0
  118. package/.dist/cjs/.mion/types/Ky89_ZTKzxQG.cjs.map +1 -0
  119. package/.dist/cjs/.mion/types/Ky89_b4tYK8X.cjs +16 -0
  120. package/.dist/cjs/.mion/types/Ky89_b4tYK8X.cjs.map +1 -0
  121. package/.dist/cjs/.mion/types/Ky89_deFq9zY.cjs +26 -0
  122. package/.dist/cjs/.mion/types/Ky89_deFq9zY.cjs.map +1 -0
  123. package/.dist/cjs/.mion/types/Ky89_fMIJ1JT.cjs +13 -0
  124. package/.dist/cjs/.mion/types/Ky89_fMIJ1JT.cjs.map +1 -0
  125. package/.dist/cjs/.mion/types/Ky89_g17turq.cjs +13 -0
  126. package/.dist/cjs/.mion/types/Ky89_g17turq.cjs.map +1 -0
  127. package/.dist/cjs/.mion/types/Ky89_hqa3Nzs.cjs +14 -0
  128. package/.dist/cjs/.mion/types/Ky89_hqa3Nzs.cjs.map +1 -0
  129. package/.dist/cjs/.mion/types/Ky89_iKPrxW9.cjs +16 -0
  130. package/.dist/cjs/.mion/types/Ky89_iKPrxW9.cjs.map +1 -0
  131. package/.dist/cjs/.mion/types/Ky89_jLtJ5Kv.cjs +16 -0
  132. package/.dist/cjs/.mion/types/Ky89_jLtJ5Kv.cjs.map +1 -0
  133. package/.dist/cjs/.mion/types/Ky89_kibOHkN.cjs +13 -0
  134. package/.dist/cjs/.mion/types/Ky89_kibOHkN.cjs.map +1 -0
  135. package/.dist/cjs/.mion/types/Ky89_kz5ne4c.cjs +16 -0
  136. package/.dist/cjs/.mion/types/Ky89_kz5ne4c.cjs.map +1 -0
  137. package/.dist/cjs/.mion/types/Ky89_pzBRrJb.cjs +16 -0
  138. package/.dist/cjs/.mion/types/Ky89_pzBRrJb.cjs.map +1 -0
  139. package/.dist/cjs/.mion/types/OBOg_D32xQCR.cjs +23 -0
  140. package/.dist/cjs/.mion/types/OBOg_D32xQCR.cjs.map +1 -0
  141. package/.dist/cjs/.mion/types/OBOg_D5PMNNO.cjs +18 -0
  142. package/.dist/cjs/.mion/types/OBOg_D5PMNNO.cjs.map +1 -0
  143. package/.dist/cjs/.mion/types/OBOg_E1CjDEA.cjs +18 -0
  144. package/.dist/cjs/.mion/types/OBOg_E1CjDEA.cjs.map +1 -0
  145. package/.dist/cjs/.mion/types/OBOg_G42dZdW.cjs +18 -0
  146. package/.dist/cjs/.mion/types/OBOg_G42dZdW.cjs.map +1 -0
  147. package/.dist/cjs/.mion/types/OBOg_LKYfhxm.cjs +18 -0
  148. package/.dist/cjs/.mion/types/OBOg_LKYfhxm.cjs.map +1 -0
  149. package/.dist/cjs/.mion/types/OBOg_fMIJ1JT.cjs +18 -0
  150. package/.dist/cjs/.mion/types/OBOg_fMIJ1JT.cjs.map +1 -0
  151. package/.dist/cjs/.mion/types/OBOg_g17turq.cjs +17 -0
  152. package/.dist/cjs/.mion/types/OBOg_g17turq.cjs.map +1 -0
  153. package/.dist/cjs/.mion/types/OBOg_hqa3Nzs.cjs +17 -0
  154. package/.dist/cjs/.mion/types/OBOg_hqa3Nzs.cjs.map +1 -0
  155. package/.dist/cjs/.mion/types/OBOg_kibOHkN.cjs +17 -0
  156. package/.dist/cjs/.mion/types/OBOg_kibOHkN.cjs.map +1 -0
  157. package/.dist/cjs/.mion/types/Xhuv_D32xQCR.cjs +16 -0
  158. package/.dist/cjs/.mion/types/Xhuv_D32xQCR.cjs.map +1 -0
  159. package/.dist/cjs/.mion/types/Xhuv_D5PMNNO.cjs +16 -0
  160. package/.dist/cjs/.mion/types/Xhuv_D5PMNNO.cjs.map +1 -0
  161. package/.dist/cjs/.mion/types/Xhuv_E1CjDEA.cjs +29 -0
  162. package/.dist/cjs/.mion/types/Xhuv_E1CjDEA.cjs.map +1 -0
  163. package/.dist/cjs/.mion/types/Xhuv_EYEglde.cjs +16 -0
  164. package/.dist/cjs/.mion/types/Xhuv_EYEglde.cjs.map +1 -0
  165. package/.dist/cjs/.mion/types/Xhuv_EyHLuYw.cjs +16 -0
  166. package/.dist/cjs/.mion/types/Xhuv_EyHLuYw.cjs.map +1 -0
  167. package/.dist/cjs/.mion/types/Xhuv_G42dZdW.cjs +16 -0
  168. package/.dist/cjs/.mion/types/Xhuv_G42dZdW.cjs.map +1 -0
  169. package/.dist/cjs/.mion/types/Xhuv_HSE8icr.cjs +16 -0
  170. package/.dist/cjs/.mion/types/Xhuv_HSE8icr.cjs.map +1 -0
  171. package/.dist/cjs/.mion/types/Xhuv_HXAy3Lx.cjs +13 -0
  172. package/.dist/cjs/.mion/types/Xhuv_HXAy3Lx.cjs.map +1 -0
  173. package/.dist/cjs/.mion/types/Xhuv_JJrCj9i.cjs +13 -0
  174. package/.dist/cjs/.mion/types/Xhuv_JJrCj9i.cjs.map +1 -0
  175. package/.dist/cjs/.mion/types/Xhuv_KDyf2Fa.cjs +16 -0
  176. package/.dist/cjs/.mion/types/Xhuv_KDyf2Fa.cjs.map +1 -0
  177. package/.dist/cjs/.mion/types/Xhuv_L3mQkaR.cjs +13 -0
  178. package/.dist/cjs/.mion/types/Xhuv_L3mQkaR.cjs.map +1 -0
  179. package/.dist/cjs/.mion/types/Xhuv_LKYfhxm.cjs +13 -0
  180. package/.dist/cjs/.mion/types/Xhuv_LKYfhxm.cjs.map +1 -0
  181. package/.dist/cjs/.mion/types/Xhuv_RAudOr2.cjs +13 -0
  182. package/.dist/cjs/.mion/types/Xhuv_RAudOr2.cjs.map +1 -0
  183. package/.dist/cjs/.mion/types/Xhuv_TRnIbow.cjs +17 -0
  184. package/.dist/cjs/.mion/types/Xhuv_TRnIbow.cjs.map +1 -0
  185. package/.dist/cjs/.mion/types/Xhuv_UOI3bXq.cjs +17 -0
  186. package/.dist/cjs/.mion/types/Xhuv_UOI3bXq.cjs.map +1 -0
  187. package/.dist/cjs/.mion/types/Xhuv_VsWxRKn.cjs +13 -0
  188. package/.dist/cjs/.mion/types/Xhuv_VsWxRKn.cjs.map +1 -0
  189. package/.dist/cjs/.mion/types/Xhuv_ZTKzxQG.cjs +16 -0
  190. package/.dist/cjs/.mion/types/Xhuv_ZTKzxQG.cjs.map +1 -0
  191. package/.dist/cjs/.mion/types/Xhuv_ZgsWs6s.cjs +13 -0
  192. package/.dist/cjs/.mion/types/Xhuv_ZgsWs6s.cjs.map +1 -0
  193. package/.dist/cjs/.mion/types/Xhuv_b4tYK8X.cjs +16 -0
  194. package/.dist/cjs/.mion/types/Xhuv_b4tYK8X.cjs.map +1 -0
  195. package/.dist/cjs/.mion/types/Xhuv_deFq9zY.cjs +26 -0
  196. package/.dist/cjs/.mion/types/Xhuv_deFq9zY.cjs.map +1 -0
  197. package/.dist/cjs/.mion/types/Xhuv_fMIJ1JT.cjs +16 -0
  198. package/.dist/cjs/.mion/types/Xhuv_fMIJ1JT.cjs.map +1 -0
  199. package/.dist/cjs/.mion/types/Xhuv_g17turq.cjs +13 -0
  200. package/.dist/cjs/.mion/types/Xhuv_g17turq.cjs.map +1 -0
  201. package/.dist/cjs/.mion/types/Xhuv_hqa3Nzs.cjs +13 -0
  202. package/.dist/cjs/.mion/types/Xhuv_hqa3Nzs.cjs.map +1 -0
  203. package/.dist/cjs/.mion/types/Xhuv_iKPrxW9.cjs +16 -0
  204. package/.dist/cjs/.mion/types/Xhuv_iKPrxW9.cjs.map +1 -0
  205. package/.dist/cjs/.mion/types/Xhuv_jLtJ5Kv.cjs +16 -0
  206. package/.dist/cjs/.mion/types/Xhuv_jLtJ5Kv.cjs.map +1 -0
  207. package/.dist/cjs/.mion/types/Xhuv_kibOHkN.cjs +13 -0
  208. package/.dist/cjs/.mion/types/Xhuv_kibOHkN.cjs.map +1 -0
  209. package/.dist/cjs/.mion/types/Xhuv_kz5ne4c.cjs +16 -0
  210. package/.dist/cjs/.mion/types/Xhuv_kz5ne4c.cjs.map +1 -0
  211. package/.dist/cjs/.mion/types/Xhuv_pzBRrJb.cjs +16 -0
  212. package/.dist/cjs/.mion/types/Xhuv_pzBRrJb.cjs.map +1 -0
  213. package/.dist/cjs/.mion/types/mzca_fMIJ1JT.cjs +14 -0
  214. package/.dist/cjs/.mion/types/mzca_fMIJ1JT.cjs.map +1 -0
  215. package/.dist/cjs/.mion/types/mzca_hqa3Nzs.cjs +14 -0
  216. package/.dist/cjs/.mion/types/mzca_hqa3Nzs.cjs.map +1 -0
  217. package/.dist/cjs/.mion/types/mzca_kibOHkN.cjs +14 -0
  218. package/.dist/cjs/.mion/types/mzca_kibOHkN.cjs.map +1 -0
  219. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.cjs +14 -0
  220. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.cjs.map +1 -0
  221. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.cjs +14 -0
  222. package/.dist/cjs/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.cjs.map +1 -0
  223. package/.dist/cjs/.mion/types/rt/C7ezVBCtGn.cjs +498 -0
  224. package/.dist/cjs/.mion/types/rt/C7ezVBCtGn.cjs.map +1 -0
  225. package/.dist/cjs/.mion/types/rt/VIdAjpHu1X.cjs +526 -0
  226. package/.dist/cjs/.mion/types/rt/VIdAjpHu1X.cjs.map +1 -0
  227. package/.dist/cjs/.mion/types/rt/eF4wQzU6Fd.cjs +876 -0
  228. package/.dist/cjs/.mion/types/rt/eF4wQzU6Fd.cjs.map +1 -0
  229. package/.dist/cjs/.mion/types/rt/shared/JQEexHbHMp.cjs +467 -0
  230. package/.dist/cjs/.mion/types/rt/shared/JQEexHbHMp.cjs.map +1 -0
  231. package/.dist/cjs/.mion/types/rt/shared/connsmWgsp.cjs +1475 -0
  232. package/.dist/cjs/.mion/types/rt/shared/connsmWgsp.cjs.map +1 -0
  233. package/.dist/cjs/index.cjs +115 -153
  234. package/.dist/cjs/index.d.ts +5 -4
  235. package/.dist/cjs/middlewares.cjs +5 -0
  236. package/.dist/cjs/middlewares.d.ts +3 -0
  237. package/.dist/cjs/src/batches.cjs +332 -0
  238. package/.dist/cjs/src/batches.cjs.map +1 -0
  239. package/.dist/cjs/src/batches.d.ts +22 -0
  240. package/.dist/cjs/src/callContext.cjs +72 -116
  241. package/.dist/cjs/src/callContext.cjs.map +1 -1
  242. package/.dist/cjs/src/callContext.d.ts +5 -8
  243. package/.dist/cjs/src/constants.cjs +22 -41
  244. package/.dist/cjs/src/constants.cjs.map +1 -1
  245. package/.dist/cjs/src/constants.d.ts +1 -7
  246. package/.dist/cjs/src/dispatch.cjs +227 -129
  247. package/.dist/cjs/src/dispatch.cjs.map +1 -1
  248. package/.dist/cjs/src/dispatch.d.ts +8 -2
  249. package/.dist/cjs/src/lib/bodyLimit.cjs +37 -0
  250. package/.dist/cjs/src/lib/bodyLimit.cjs.map +1 -0
  251. package/.dist/cjs/src/lib/bodyLimit.d.ts +5 -0
  252. package/.dist/cjs/src/lib/bodyReader.cjs +79 -0
  253. package/.dist/cjs/src/lib/bodyReader.cjs.map +1 -0
  254. package/.dist/cjs/src/lib/bodyReader.d.ts +10 -0
  255. package/.dist/cjs/src/lib/dispatchError.cjs +77 -34
  256. package/.dist/cjs/src/lib/dispatchError.cjs.map +1 -1
  257. package/.dist/cjs/src/lib/dispatchError.d.ts +6 -2
  258. package/.dist/cjs/src/lib/handlers.cjs +91 -44
  259. package/.dist/cjs/src/lib/handlers.cjs.map +1 -1
  260. package/.dist/cjs/src/lib/handlers.d.ts +14 -9
  261. package/.dist/cjs/src/lib/headers.cjs +172 -55
  262. package/.dist/cjs/src/lib/headers.cjs.map +1 -1
  263. package/.dist/cjs/src/lib/headers.d.ts +40 -1
  264. package/.dist/cjs/src/lib/queryBody.cjs +25 -29
  265. package/.dist/cjs/src/lib/queryBody.cjs.map +1 -1
  266. package/.dist/cjs/src/lib/queryBody.d.ts +0 -1
  267. package/.dist/cjs/src/lib/reflection.cjs +78 -371
  268. package/.dist/cjs/src/lib/reflection.cjs.map +1 -1
  269. package/.dist/cjs/src/lib/reflection.d.ts +12 -9
  270. package/.dist/cjs/src/lib/remoteMethods.cjs +104 -104
  271. package/.dist/cjs/src/lib/remoteMethods.cjs.map +1 -1
  272. package/.dist/cjs/src/lib/remoteMethods.d.ts +4 -4
  273. package/.dist/cjs/src/lib/urlQuery.cjs +24 -0
  274. package/.dist/cjs/src/lib/urlQuery.cjs.map +1 -0
  275. package/.dist/cjs/src/lib/urlQuery.d.ts +2 -0
  276. package/.dist/cjs/src/middlewares/fetchMetadata.cjs +99 -0
  277. package/.dist/cjs/src/middlewares/fetchMetadata.cjs.map +1 -0
  278. package/.dist/cjs/src/middlewares/fetchMetadata.d.ts +15 -0
  279. package/.dist/cjs/src/middlewares/syncRoutes.cjs +67 -0
  280. package/.dist/cjs/src/middlewares/syncRoutes.cjs.map +1 -0
  281. package/.dist/cjs/src/middlewares/syncRoutes.d.ts +12 -0
  282. package/.dist/cjs/src/router.cjs +506 -432
  283. package/.dist/cjs/src/router.cjs.map +1 -1
  284. package/.dist/cjs/src/router.d.ts +27 -19
  285. package/.dist/cjs/src/routes/errors.routes.cjs +81 -46
  286. package/.dist/cjs/src/routes/errors.routes.cjs.map +1 -1
  287. package/.dist/cjs/src/routes/errors.routes.d.ts +14 -3
  288. package/.dist/cjs/src/routes/serializer.routes.cjs +107 -176
  289. package/.dist/cjs/src/routes/serializer.routes.cjs.map +1 -1
  290. package/.dist/cjs/src/routes/serializer.routes.d.ts +3 -3
  291. package/.dist/cjs/src/types/context.cjs +0 -31
  292. package/.dist/cjs/src/types/context.d.ts +13 -21
  293. package/.dist/cjs/src/types/definitions.cjs +0 -15
  294. package/.dist/cjs/src/types/definitions.d.ts +32 -20
  295. package/.dist/cjs/src/types/general.cjs +0 -14
  296. package/.dist/cjs/src/types/general.d.ts +15 -15
  297. package/.dist/cjs/src/types/guards.cjs +31 -38
  298. package/.dist/cjs/src/types/guards.cjs.map +1 -1
  299. package/.dist/cjs/src/types/guards.d.ts +7 -7
  300. package/.dist/cjs/src/types/handlers.cjs +0 -13
  301. package/.dist/cjs/src/types/handlers.d.ts +8 -5
  302. package/.dist/cjs/src/types/mionRouter.cjs +0 -0
  303. package/.dist/cjs/src/types/mionRouter.d.ts +44 -0
  304. package/.dist/cjs/src/types/parser.cjs +0 -0
  305. package/.dist/cjs/src/types/parser.d.ts +43 -0
  306. package/.dist/cjs/src/types/publicMethods.cjs +0 -24
  307. package/.dist/cjs/src/types/publicMethods.d.ts +65 -25
  308. package/.dist/cjs/src/types/remoteMethods.cjs +0 -25
  309. package/.dist/cjs/src/types/remoteMethods.d.ts +49 -29
  310. package/.dist/cjs/src/types/resolvedOptions.cjs +0 -0
  311. package/.dist/cjs/src/types/resolvedOptions.d.ts +28 -0
  312. package/.dist/esm/.mion/types/A0Qb_D32xQCR.js +16 -0
  313. package/.dist/esm/.mion/types/A0Qb_D32xQCR.js.map +1 -0
  314. package/.dist/esm/.mion/types/A0Qb_D5PMNNO.js +17 -0
  315. package/.dist/esm/.mion/types/A0Qb_D5PMNNO.js.map +1 -0
  316. package/.dist/esm/.mion/types/A0Qb_E1CjDEA.js +36 -0
  317. package/.dist/esm/.mion/types/A0Qb_E1CjDEA.js.map +1 -0
  318. package/.dist/esm/.mion/types/A0Qb_EYEglde.js +16 -0
  319. package/.dist/esm/.mion/types/A0Qb_EYEglde.js.map +1 -0
  320. package/.dist/esm/.mion/types/A0Qb_EyHLuYw.js +16 -0
  321. package/.dist/esm/.mion/types/A0Qb_EyHLuYw.js.map +1 -0
  322. package/.dist/esm/.mion/types/A0Qb_G42dZdW.js +16 -0
  323. package/.dist/esm/.mion/types/A0Qb_G42dZdW.js.map +1 -0
  324. package/.dist/esm/.mion/types/A0Qb_HSE8icr.js +16 -0
  325. package/.dist/esm/.mion/types/A0Qb_HSE8icr.js.map +1 -0
  326. package/.dist/esm/.mion/types/A0Qb_HXAy3Lx.js +13 -0
  327. package/.dist/esm/.mion/types/A0Qb_HXAy3Lx.js.map +1 -0
  328. package/.dist/esm/.mion/types/A0Qb_JJrCj9i.js +13 -0
  329. package/.dist/esm/.mion/types/A0Qb_JJrCj9i.js.map +1 -0
  330. package/.dist/esm/.mion/types/A0Qb_KDyf2Fa.js +16 -0
  331. package/.dist/esm/.mion/types/A0Qb_KDyf2Fa.js.map +1 -0
  332. package/.dist/esm/.mion/types/A0Qb_L3mQkaR.js +13 -0
  333. package/.dist/esm/.mion/types/A0Qb_L3mQkaR.js.map +1 -0
  334. package/.dist/esm/.mion/types/A0Qb_RAudOr2.js +13 -0
  335. package/.dist/esm/.mion/types/A0Qb_RAudOr2.js.map +1 -0
  336. package/.dist/esm/.mion/types/A0Qb_TRnIbow.js +17 -0
  337. package/.dist/esm/.mion/types/A0Qb_TRnIbow.js.map +1 -0
  338. package/.dist/esm/.mion/types/A0Qb_UOI3bXq.js +17 -0
  339. package/.dist/esm/.mion/types/A0Qb_UOI3bXq.js.map +1 -0
  340. package/.dist/esm/.mion/types/A0Qb_VsWxRKn.js +13 -0
  341. package/.dist/esm/.mion/types/A0Qb_VsWxRKn.js.map +1 -0
  342. package/.dist/esm/.mion/types/A0Qb_ZTKzxQG.js +16 -0
  343. package/.dist/esm/.mion/types/A0Qb_ZTKzxQG.js.map +1 -0
  344. package/.dist/esm/.mion/types/A0Qb_b4tYK8X.js +16 -0
  345. package/.dist/esm/.mion/types/A0Qb_b4tYK8X.js.map +1 -0
  346. package/.dist/esm/.mion/types/A0Qb_deFq9zY.js +26 -0
  347. package/.dist/esm/.mion/types/A0Qb_deFq9zY.js.map +1 -0
  348. package/.dist/esm/.mion/types/A0Qb_fMIJ1JT.js +14 -0
  349. package/.dist/esm/.mion/types/A0Qb_fMIJ1JT.js.map +1 -0
  350. package/.dist/esm/.mion/types/A0Qb_g17turq.js +13 -0
  351. package/.dist/esm/.mion/types/A0Qb_g17turq.js.map +1 -0
  352. package/.dist/esm/.mion/types/A0Qb_hqa3Nzs.js +14 -0
  353. package/.dist/esm/.mion/types/A0Qb_hqa3Nzs.js.map +1 -0
  354. package/.dist/esm/.mion/types/A0Qb_iKPrxW9.js +16 -0
  355. package/.dist/esm/.mion/types/A0Qb_iKPrxW9.js.map +1 -0
  356. package/.dist/esm/.mion/types/A0Qb_jLtJ5Kv.js +16 -0
  357. package/.dist/esm/.mion/types/A0Qb_jLtJ5Kv.js.map +1 -0
  358. package/.dist/esm/.mion/types/A0Qb_kibOHkN.js +14 -0
  359. package/.dist/esm/.mion/types/A0Qb_kibOHkN.js.map +1 -0
  360. package/.dist/esm/.mion/types/A0Qb_kz5ne4c.js +16 -0
  361. package/.dist/esm/.mion/types/A0Qb_kz5ne4c.js.map +1 -0
  362. package/.dist/esm/.mion/types/A0Qb_pzBRrJb.js +16 -0
  363. package/.dist/esm/.mion/types/A0Qb_pzBRrJb.js.map +1 -0
  364. package/.dist/esm/.mion/types/Eq2V_EYEglde.js +16 -0
  365. package/.dist/esm/.mion/types/Eq2V_EYEglde.js.map +1 -0
  366. package/.dist/esm/.mion/types/Eq2V_EyHLuYw.js +16 -0
  367. package/.dist/esm/.mion/types/Eq2V_EyHLuYw.js.map +1 -0
  368. package/.dist/esm/.mion/types/Eq2V_HSE8icr.js +16 -0
  369. package/.dist/esm/.mion/types/Eq2V_HSE8icr.js.map +1 -0
  370. package/.dist/esm/.mion/types/Eq2V_HXAy3Lx.js +13 -0
  371. package/.dist/esm/.mion/types/Eq2V_HXAy3Lx.js.map +1 -0
  372. package/.dist/esm/.mion/types/Eq2V_JJrCj9i.js +13 -0
  373. package/.dist/esm/.mion/types/Eq2V_JJrCj9i.js.map +1 -0
  374. package/.dist/esm/.mion/types/Eq2V_KDyf2Fa.js +16 -0
  375. package/.dist/esm/.mion/types/Eq2V_KDyf2Fa.js.map +1 -0
  376. package/.dist/esm/.mion/types/Eq2V_L3mQkaR.js +13 -0
  377. package/.dist/esm/.mion/types/Eq2V_L3mQkaR.js.map +1 -0
  378. package/.dist/esm/.mion/types/Eq2V_RAudOr2.js +13 -0
  379. package/.dist/esm/.mion/types/Eq2V_RAudOr2.js.map +1 -0
  380. package/.dist/esm/.mion/types/Eq2V_TRnIbow.js +17 -0
  381. package/.dist/esm/.mion/types/Eq2V_TRnIbow.js.map +1 -0
  382. package/.dist/esm/.mion/types/Eq2V_UOI3bXq.js +17 -0
  383. package/.dist/esm/.mion/types/Eq2V_UOI3bXq.js.map +1 -0
  384. package/.dist/esm/.mion/types/Eq2V_VsWxRKn.js +13 -0
  385. package/.dist/esm/.mion/types/Eq2V_VsWxRKn.js.map +1 -0
  386. package/.dist/esm/.mion/types/Eq2V_ZTKzxQG.js +16 -0
  387. package/.dist/esm/.mion/types/Eq2V_ZTKzxQG.js.map +1 -0
  388. package/.dist/esm/.mion/types/Eq2V_b4tYK8X.js +16 -0
  389. package/.dist/esm/.mion/types/Eq2V_b4tYK8X.js.map +1 -0
  390. package/.dist/esm/.mion/types/Eq2V_deFq9zY.js +26 -0
  391. package/.dist/esm/.mion/types/Eq2V_deFq9zY.js.map +1 -0
  392. package/.dist/esm/.mion/types/Eq2V_g17turq.js +13 -0
  393. package/.dist/esm/.mion/types/Eq2V_g17turq.js.map +1 -0
  394. package/.dist/esm/.mion/types/Eq2V_iKPrxW9.js +16 -0
  395. package/.dist/esm/.mion/types/Eq2V_iKPrxW9.js.map +1 -0
  396. package/.dist/esm/.mion/types/Eq2V_jLtJ5Kv.js +16 -0
  397. package/.dist/esm/.mion/types/Eq2V_jLtJ5Kv.js.map +1 -0
  398. package/.dist/esm/.mion/types/Eq2V_kz5ne4c.js +16 -0
  399. package/.dist/esm/.mion/types/Eq2V_kz5ne4c.js.map +1 -0
  400. package/.dist/esm/.mion/types/Eq2V_pzBRrJb.js +16 -0
  401. package/.dist/esm/.mion/types/Eq2V_pzBRrJb.js.map +1 -0
  402. package/.dist/esm/.mion/types/Ky89_D32xQCR.js +16 -0
  403. package/.dist/esm/.mion/types/Ky89_D32xQCR.js.map +1 -0
  404. package/.dist/esm/.mion/types/Ky89_D5PMNNO.js +16 -0
  405. package/.dist/esm/.mion/types/Ky89_D5PMNNO.js.map +1 -0
  406. package/.dist/esm/.mion/types/Ky89_E1CjDEA.js +32 -0
  407. package/.dist/esm/.mion/types/Ky89_E1CjDEA.js.map +1 -0
  408. package/.dist/esm/.mion/types/Ky89_EYEglde.js +16 -0
  409. package/.dist/esm/.mion/types/Ky89_EYEglde.js.map +1 -0
  410. package/.dist/esm/.mion/types/Ky89_EyHLuYw.js +16 -0
  411. package/.dist/esm/.mion/types/Ky89_EyHLuYw.js.map +1 -0
  412. package/.dist/esm/.mion/types/Ky89_G42dZdW.js +16 -0
  413. package/.dist/esm/.mion/types/Ky89_G42dZdW.js.map +1 -0
  414. package/.dist/esm/.mion/types/Ky89_HSE8icr.js +16 -0
  415. package/.dist/esm/.mion/types/Ky89_HSE8icr.js.map +1 -0
  416. package/.dist/esm/.mion/types/Ky89_JJrCj9i.js +13 -0
  417. package/.dist/esm/.mion/types/Ky89_JJrCj9i.js.map +1 -0
  418. package/.dist/esm/.mion/types/Ky89_KDyf2Fa.js +16 -0
  419. package/.dist/esm/.mion/types/Ky89_KDyf2Fa.js.map +1 -0
  420. package/.dist/esm/.mion/types/Ky89_L3mQkaR.js +13 -0
  421. package/.dist/esm/.mion/types/Ky89_L3mQkaR.js.map +1 -0
  422. package/.dist/esm/.mion/types/Ky89_RAudOr2.js +13 -0
  423. package/.dist/esm/.mion/types/Ky89_RAudOr2.js.map +1 -0
  424. package/.dist/esm/.mion/types/Ky89_TRnIbow.js +13 -0
  425. package/.dist/esm/.mion/types/Ky89_TRnIbow.js.map +1 -0
  426. package/.dist/esm/.mion/types/Ky89_UOI3bXq.js +17 -0
  427. package/.dist/esm/.mion/types/Ky89_UOI3bXq.js.map +1 -0
  428. package/.dist/esm/.mion/types/Ky89_ZTKzxQG.js +16 -0
  429. package/.dist/esm/.mion/types/Ky89_ZTKzxQG.js.map +1 -0
  430. package/.dist/esm/.mion/types/Ky89_b4tYK8X.js +16 -0
  431. package/.dist/esm/.mion/types/Ky89_b4tYK8X.js.map +1 -0
  432. package/.dist/esm/.mion/types/Ky89_deFq9zY.js +26 -0
  433. package/.dist/esm/.mion/types/Ky89_deFq9zY.js.map +1 -0
  434. package/.dist/esm/.mion/types/Ky89_fMIJ1JT.js +13 -0
  435. package/.dist/esm/.mion/types/Ky89_fMIJ1JT.js.map +1 -0
  436. package/.dist/esm/.mion/types/Ky89_g17turq.js +13 -0
  437. package/.dist/esm/.mion/types/Ky89_g17turq.js.map +1 -0
  438. package/.dist/esm/.mion/types/Ky89_hqa3Nzs.js +14 -0
  439. package/.dist/esm/.mion/types/Ky89_hqa3Nzs.js.map +1 -0
  440. package/.dist/esm/.mion/types/Ky89_iKPrxW9.js +16 -0
  441. package/.dist/esm/.mion/types/Ky89_iKPrxW9.js.map +1 -0
  442. package/.dist/esm/.mion/types/Ky89_jLtJ5Kv.js +16 -0
  443. package/.dist/esm/.mion/types/Ky89_jLtJ5Kv.js.map +1 -0
  444. package/.dist/esm/.mion/types/Ky89_kibOHkN.js +13 -0
  445. package/.dist/esm/.mion/types/Ky89_kibOHkN.js.map +1 -0
  446. package/.dist/esm/.mion/types/Ky89_kz5ne4c.js +16 -0
  447. package/.dist/esm/.mion/types/Ky89_kz5ne4c.js.map +1 -0
  448. package/.dist/esm/.mion/types/Ky89_pzBRrJb.js +16 -0
  449. package/.dist/esm/.mion/types/Ky89_pzBRrJb.js.map +1 -0
  450. package/.dist/esm/.mion/types/OBOg_D32xQCR.js +23 -0
  451. package/.dist/esm/.mion/types/OBOg_D32xQCR.js.map +1 -0
  452. package/.dist/esm/.mion/types/OBOg_D5PMNNO.js +18 -0
  453. package/.dist/esm/.mion/types/OBOg_D5PMNNO.js.map +1 -0
  454. package/.dist/esm/.mion/types/OBOg_E1CjDEA.js +18 -0
  455. package/.dist/esm/.mion/types/OBOg_E1CjDEA.js.map +1 -0
  456. package/.dist/esm/.mion/types/OBOg_G42dZdW.js +18 -0
  457. package/.dist/esm/.mion/types/OBOg_G42dZdW.js.map +1 -0
  458. package/.dist/esm/.mion/types/OBOg_LKYfhxm.js +18 -0
  459. package/.dist/esm/.mion/types/OBOg_LKYfhxm.js.map +1 -0
  460. package/.dist/esm/.mion/types/OBOg_fMIJ1JT.js +18 -0
  461. package/.dist/esm/.mion/types/OBOg_fMIJ1JT.js.map +1 -0
  462. package/.dist/esm/.mion/types/OBOg_g17turq.js +17 -0
  463. package/.dist/esm/.mion/types/OBOg_g17turq.js.map +1 -0
  464. package/.dist/esm/.mion/types/OBOg_hqa3Nzs.js +17 -0
  465. package/.dist/esm/.mion/types/OBOg_hqa3Nzs.js.map +1 -0
  466. package/.dist/esm/.mion/types/OBOg_kibOHkN.js +17 -0
  467. package/.dist/esm/.mion/types/OBOg_kibOHkN.js.map +1 -0
  468. package/.dist/esm/.mion/types/Xhuv_D32xQCR.js +16 -0
  469. package/.dist/esm/.mion/types/Xhuv_D32xQCR.js.map +1 -0
  470. package/.dist/esm/.mion/types/Xhuv_D5PMNNO.js +16 -0
  471. package/.dist/esm/.mion/types/Xhuv_D5PMNNO.js.map +1 -0
  472. package/.dist/esm/.mion/types/Xhuv_E1CjDEA.js +29 -0
  473. package/.dist/esm/.mion/types/Xhuv_E1CjDEA.js.map +1 -0
  474. package/.dist/esm/.mion/types/Xhuv_EYEglde.js +16 -0
  475. package/.dist/esm/.mion/types/Xhuv_EYEglde.js.map +1 -0
  476. package/.dist/esm/.mion/types/Xhuv_EyHLuYw.js +16 -0
  477. package/.dist/esm/.mion/types/Xhuv_EyHLuYw.js.map +1 -0
  478. package/.dist/esm/.mion/types/Xhuv_G42dZdW.js +16 -0
  479. package/.dist/esm/.mion/types/Xhuv_G42dZdW.js.map +1 -0
  480. package/.dist/esm/.mion/types/Xhuv_HSE8icr.js +16 -0
  481. package/.dist/esm/.mion/types/Xhuv_HSE8icr.js.map +1 -0
  482. package/.dist/esm/.mion/types/Xhuv_HXAy3Lx.js +13 -0
  483. package/.dist/esm/.mion/types/Xhuv_HXAy3Lx.js.map +1 -0
  484. package/.dist/esm/.mion/types/Xhuv_JJrCj9i.js +13 -0
  485. package/.dist/esm/.mion/types/Xhuv_JJrCj9i.js.map +1 -0
  486. package/.dist/esm/.mion/types/Xhuv_KDyf2Fa.js +16 -0
  487. package/.dist/esm/.mion/types/Xhuv_KDyf2Fa.js.map +1 -0
  488. package/.dist/esm/.mion/types/Xhuv_L3mQkaR.js +13 -0
  489. package/.dist/esm/.mion/types/Xhuv_L3mQkaR.js.map +1 -0
  490. package/.dist/esm/.mion/types/Xhuv_LKYfhxm.js +13 -0
  491. package/.dist/esm/.mion/types/Xhuv_LKYfhxm.js.map +1 -0
  492. package/.dist/esm/.mion/types/Xhuv_RAudOr2.js +13 -0
  493. package/.dist/esm/.mion/types/Xhuv_RAudOr2.js.map +1 -0
  494. package/.dist/esm/.mion/types/Xhuv_TRnIbow.js +17 -0
  495. package/.dist/esm/.mion/types/Xhuv_TRnIbow.js.map +1 -0
  496. package/.dist/esm/.mion/types/Xhuv_UOI3bXq.js +17 -0
  497. package/.dist/esm/.mion/types/Xhuv_UOI3bXq.js.map +1 -0
  498. package/.dist/esm/.mion/types/Xhuv_VsWxRKn.js +13 -0
  499. package/.dist/esm/.mion/types/Xhuv_VsWxRKn.js.map +1 -0
  500. package/.dist/esm/.mion/types/Xhuv_ZTKzxQG.js +16 -0
  501. package/.dist/esm/.mion/types/Xhuv_ZTKzxQG.js.map +1 -0
  502. package/.dist/esm/.mion/types/Xhuv_ZgsWs6s.js +13 -0
  503. package/.dist/esm/.mion/types/Xhuv_ZgsWs6s.js.map +1 -0
  504. package/.dist/esm/.mion/types/Xhuv_b4tYK8X.js +16 -0
  505. package/.dist/esm/.mion/types/Xhuv_b4tYK8X.js.map +1 -0
  506. package/.dist/esm/.mion/types/Xhuv_deFq9zY.js +26 -0
  507. package/.dist/esm/.mion/types/Xhuv_deFq9zY.js.map +1 -0
  508. package/.dist/esm/.mion/types/Xhuv_fMIJ1JT.js +16 -0
  509. package/.dist/esm/.mion/types/Xhuv_fMIJ1JT.js.map +1 -0
  510. package/.dist/esm/.mion/types/Xhuv_g17turq.js +13 -0
  511. package/.dist/esm/.mion/types/Xhuv_g17turq.js.map +1 -0
  512. package/.dist/esm/.mion/types/Xhuv_hqa3Nzs.js +13 -0
  513. package/.dist/esm/.mion/types/Xhuv_hqa3Nzs.js.map +1 -0
  514. package/.dist/esm/.mion/types/Xhuv_iKPrxW9.js +16 -0
  515. package/.dist/esm/.mion/types/Xhuv_iKPrxW9.js.map +1 -0
  516. package/.dist/esm/.mion/types/Xhuv_jLtJ5Kv.js +16 -0
  517. package/.dist/esm/.mion/types/Xhuv_jLtJ5Kv.js.map +1 -0
  518. package/.dist/esm/.mion/types/Xhuv_kibOHkN.js +13 -0
  519. package/.dist/esm/.mion/types/Xhuv_kibOHkN.js.map +1 -0
  520. package/.dist/esm/.mion/types/Xhuv_kz5ne4c.js +16 -0
  521. package/.dist/esm/.mion/types/Xhuv_kz5ne4c.js.map +1 -0
  522. package/.dist/esm/.mion/types/Xhuv_pzBRrJb.js +16 -0
  523. package/.dist/esm/.mion/types/Xhuv_pzBRrJb.js.map +1 -0
  524. package/.dist/esm/.mion/types/mzca_fMIJ1JT.js +14 -0
  525. package/.dist/esm/.mion/types/mzca_fMIJ1JT.js.map +1 -0
  526. package/.dist/esm/.mion/types/mzca_hqa3Nzs.js +14 -0
  527. package/.dist/esm/.mion/types/mzca_hqa3Nzs.js.map +1 -0
  528. package/.dist/esm/.mion/types/mzca_kibOHkN.js +14 -0
  529. package/.dist/esm/.mion/types/mzca_kibOHkN.js.map +1 -0
  530. package/.dist/esm/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.js +14 -0
  531. package/.dist/esm/.mion/types/pf/@mionjs/run-types/rXVwGkGDX08BsQ.js.map +1 -0
  532. package/.dist/esm/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.js +14 -0
  533. package/.dist/esm/.mion/types/pf/@mionjs/run-types/tfRjnFZVF8lqI_.js.map +1 -0
  534. package/.dist/esm/.mion/types/rt/C7ezVBCtGn.js +495 -0
  535. package/.dist/esm/.mion/types/rt/C7ezVBCtGn.js.map +1 -0
  536. package/.dist/esm/.mion/types/rt/VIdAjpHu1X.js +521 -0
  537. package/.dist/esm/.mion/types/rt/VIdAjpHu1X.js.map +1 -0
  538. package/.dist/esm/.mion/types/rt/eF4wQzU6Fd.js +873 -0
  539. package/.dist/esm/.mion/types/rt/eF4wQzU6Fd.js.map +1 -0
  540. package/.dist/esm/.mion/types/rt/shared/JQEexHbHMp.js +467 -0
  541. package/.dist/esm/.mion/types/rt/shared/JQEexHbHMp.js.map +1 -0
  542. package/.dist/esm/.mion/types/rt/shared/connsmWgsp.js +1475 -0
  543. package/.dist/esm/.mion/types/rt/shared/connsmWgsp.js.map +1 -0
  544. package/.dist/esm/index.d.ts +5 -4
  545. package/.dist/esm/index.js +11 -145
  546. package/.dist/esm/middlewares.d.ts +3 -0
  547. package/.dist/esm/middlewares.js +3 -0
  548. package/.dist/esm/src/batches.d.ts +22 -0
  549. package/.dist/esm/src/batches.js +321 -0
  550. package/.dist/esm/src/batches.js.map +1 -0
  551. package/.dist/esm/src/callContext.d.ts +5 -8
  552. package/.dist/esm/src/callContext.js +70 -118
  553. package/.dist/esm/src/callContext.js.map +1 -1
  554. package/.dist/esm/src/constants.d.ts +1 -7
  555. package/.dist/esm/src/constants.js +22 -44
  556. package/.dist/esm/src/constants.js.map +1 -1
  557. package/.dist/esm/src/dispatch.d.ts +8 -2
  558. package/.dist/esm/src/dispatch.js +223 -131
  559. package/.dist/esm/src/dispatch.js.map +1 -1
  560. package/.dist/esm/src/lib/bodyLimit.d.ts +5 -0
  561. package/.dist/esm/src/lib/bodyLimit.js +35 -0
  562. package/.dist/esm/src/lib/bodyLimit.js.map +1 -0
  563. package/.dist/esm/src/lib/bodyReader.d.ts +10 -0
  564. package/.dist/esm/src/lib/bodyReader.js +76 -0
  565. package/.dist/esm/src/lib/bodyReader.js.map +1 -0
  566. package/.dist/esm/src/lib/dispatchError.d.ts +6 -2
  567. package/.dist/esm/src/lib/dispatchError.js +72 -36
  568. package/.dist/esm/src/lib/dispatchError.js.map +1 -1
  569. package/.dist/esm/src/lib/handlers.d.ts +14 -9
  570. package/.dist/esm/src/lib/handlers.js +85 -48
  571. package/.dist/esm/src/lib/handlers.js.map +1 -1
  572. package/.dist/esm/src/lib/headers.d.ts +40 -1
  573. package/.dist/esm/src/lib/headers.js +167 -57
  574. package/.dist/esm/src/lib/headers.js.map +1 -1
  575. package/.dist/esm/src/lib/queryBody.d.ts +0 -1
  576. package/.dist/esm/src/lib/queryBody.js +26 -31
  577. package/.dist/esm/src/lib/queryBody.js.map +1 -1
  578. package/.dist/esm/src/lib/reflection.d.ts +12 -9
  579. package/.dist/esm/src/lib/reflection.js +75 -351
  580. package/.dist/esm/src/lib/reflection.js.map +1 -1
  581. package/.dist/esm/src/lib/remoteMethods.d.ts +4 -4
  582. package/.dist/esm/src/lib/remoteMethods.js +105 -111
  583. package/.dist/esm/src/lib/remoteMethods.js.map +1 -1
  584. package/.dist/esm/src/lib/urlQuery.d.ts +2 -0
  585. package/.dist/esm/src/lib/urlQuery.js +23 -0
  586. package/.dist/esm/src/lib/urlQuery.js.map +1 -0
  587. package/.dist/esm/src/middlewares/fetchMetadata.d.ts +15 -0
  588. package/.dist/esm/src/middlewares/fetchMetadata.js +97 -0
  589. package/.dist/esm/src/middlewares/fetchMetadata.js.map +1 -0
  590. package/.dist/esm/src/middlewares/syncRoutes.d.ts +12 -0
  591. package/.dist/esm/src/middlewares/syncRoutes.js +66 -0
  592. package/.dist/esm/src/middlewares/syncRoutes.js.map +1 -0
  593. package/.dist/esm/src/router.d.ts +27 -19
  594. package/.dist/esm/src/router.js +477 -449
  595. package/.dist/esm/src/router.js.map +1 -1
  596. package/.dist/esm/src/routes/errors.routes.d.ts +14 -3
  597. package/.dist/esm/src/routes/errors.routes.js +80 -48
  598. package/.dist/esm/src/routes/errors.routes.js.map +1 -1
  599. package/.dist/esm/src/routes/serializer.routes.d.ts +3 -3
  600. package/.dist/esm/src/routes/serializer.routes.js +107 -179
  601. package/.dist/esm/src/routes/serializer.routes.js.map +1 -1
  602. package/.dist/esm/src/types/context.d.ts +13 -21
  603. package/.dist/esm/src/types/context.js +0 -31
  604. package/.dist/esm/src/types/definitions.d.ts +32 -20
  605. package/.dist/esm/src/types/definitions.js +0 -15
  606. package/.dist/esm/src/types/general.d.ts +15 -15
  607. package/.dist/esm/src/types/general.js +0 -14
  608. package/.dist/esm/src/types/guards.d.ts +7 -7
  609. package/.dist/esm/src/types/guards.js +27 -46
  610. package/.dist/esm/src/types/guards.js.map +1 -1
  611. package/.dist/esm/src/types/handlers.d.ts +8 -5
  612. package/.dist/esm/src/types/handlers.js +0 -13
  613. package/.dist/esm/src/types/mionRouter.d.ts +44 -0
  614. package/.dist/esm/src/types/mionRouter.js +0 -0
  615. package/.dist/esm/src/types/parser.d.ts +43 -0
  616. package/.dist/esm/src/types/parser.js +0 -0
  617. package/.dist/esm/src/types/publicMethods.d.ts +65 -25
  618. package/.dist/esm/src/types/publicMethods.js +0 -24
  619. package/.dist/esm/src/types/remoteMethods.d.ts +49 -29
  620. package/.dist/esm/src/types/remoteMethods.js +0 -25
  621. package/.dist/esm/src/types/resolvedOptions.d.ts +28 -0
  622. package/.dist/esm/src/types/resolvedOptions.js +0 -0
  623. package/LICENSE +1 -1
  624. package/README.md +6 -6
  625. package/package.json +21 -24
  626. package/.dist/cjs/index.cjs.map +0 -1
  627. package/.dist/cjs/index.d.ts.map +0 -1
  628. package/.dist/cjs/src/aot/aotCacheLoader.cjs +0 -11
  629. package/.dist/cjs/src/aot/aotCacheLoader.cjs.map +0 -1
  630. package/.dist/cjs/src/aot/aotCacheLoader.d.ts +0 -2
  631. package/.dist/cjs/src/aot/aotCacheLoader.d.ts.map +0 -1
  632. package/.dist/cjs/src/callContext.d.ts.map +0 -1
  633. package/.dist/cjs/src/constants.d.ts.map +0 -1
  634. package/.dist/cjs/src/defaultRoutes.cjs +0 -16
  635. package/.dist/cjs/src/defaultRoutes.cjs.map +0 -1
  636. package/.dist/cjs/src/defaultRoutes.d.ts +0 -4
  637. package/.dist/cjs/src/defaultRoutes.d.ts.map +0 -1
  638. package/.dist/cjs/src/dispatch.d.ts.map +0 -1
  639. package/.dist/cjs/src/lib/aotEmitter.cjs +0 -74
  640. package/.dist/cjs/src/lib/aotEmitter.cjs.map +0 -1
  641. package/.dist/cjs/src/lib/aotEmitter.d.ts +0 -24
  642. package/.dist/cjs/src/lib/aotEmitter.d.ts.map +0 -1
  643. package/.dist/cjs/src/lib/dispatchError.d.ts.map +0 -1
  644. package/.dist/cjs/src/lib/handlers.d.ts.map +0 -1
  645. package/.dist/cjs/src/lib/headers.d.ts.map +0 -1
  646. package/.dist/cjs/src/lib/methodsCache.cjs +0 -55
  647. package/.dist/cjs/src/lib/methodsCache.cjs.map +0 -1
  648. package/.dist/cjs/src/lib/methodsCache.d.ts +0 -12
  649. package/.dist/cjs/src/lib/methodsCache.d.ts.map +0 -1
  650. package/.dist/cjs/src/lib/queryBody.d.ts.map +0 -1
  651. package/.dist/cjs/src/lib/reflection.d.ts.map +0 -1
  652. package/.dist/cjs/src/lib/remoteMethods.d.ts.map +0 -1
  653. package/.dist/cjs/src/lib/test/aotEmitter-test-router.cjs +0 -24
  654. package/.dist/cjs/src/lib/test/aotEmitter-test-router.cjs.map +0 -1
  655. package/.dist/cjs/src/lib/test/aotEmitter-test-router.d.ts +0 -5
  656. package/.dist/cjs/src/lib/test/aotEmitter-test-router.d.ts.map +0 -1
  657. package/.dist/cjs/src/router.d.ts.map +0 -1
  658. package/.dist/cjs/src/routes/client.routes.cjs +0 -76
  659. package/.dist/cjs/src/routes/client.routes.cjs.map +0 -1
  660. package/.dist/cjs/src/routes/client.routes.d.ts +0 -20
  661. package/.dist/cjs/src/routes/client.routes.d.ts.map +0 -1
  662. package/.dist/cjs/src/routes/errors.routes.d.ts.map +0 -1
  663. package/.dist/cjs/src/routes/mion.routes.cjs +0 -13
  664. package/.dist/cjs/src/routes/mion.routes.cjs.map +0 -1
  665. package/.dist/cjs/src/routes/mion.routes.d.ts +0 -10
  666. package/.dist/cjs/src/routes/mion.routes.d.ts.map +0 -1
  667. package/.dist/cjs/src/routes/serializer.routes.d.ts.map +0 -1
  668. package/.dist/cjs/src/routesFlow.cjs +0 -227
  669. package/.dist/cjs/src/routesFlow.cjs.map +0 -1
  670. package/.dist/cjs/src/routesFlow.d.ts +0 -8
  671. package/.dist/cjs/src/routesFlow.d.ts.map +0 -1
  672. package/.dist/cjs/src/types/context.cjs.map +0 -1
  673. package/.dist/cjs/src/types/context.d.ts.map +0 -1
  674. package/.dist/cjs/src/types/definitions.cjs.map +0 -1
  675. package/.dist/cjs/src/types/definitions.d.ts.map +0 -1
  676. package/.dist/cjs/src/types/general.cjs.map +0 -1
  677. package/.dist/cjs/src/types/general.d.ts.map +0 -1
  678. package/.dist/cjs/src/types/guards.d.ts.map +0 -1
  679. package/.dist/cjs/src/types/handlers.cjs.map +0 -1
  680. package/.dist/cjs/src/types/handlers.d.ts.map +0 -1
  681. package/.dist/cjs/src/types/publicMethods.cjs.map +0 -1
  682. package/.dist/cjs/src/types/publicMethods.d.ts.map +0 -1
  683. package/.dist/cjs/src/types/remoteMethods.cjs.map +0 -1
  684. package/.dist/cjs/src/types/remoteMethods.d.ts.map +0 -1
  685. package/.dist/esm/index.d.ts.map +0 -1
  686. package/.dist/esm/index.js.map +0 -1
  687. package/.dist/esm/src/aot/aotCacheLoader.d.ts +0 -2
  688. package/.dist/esm/src/aot/aotCacheLoader.d.ts.map +0 -1
  689. package/.dist/esm/src/aot/aotCacheLoader.js +0 -11
  690. package/.dist/esm/src/aot/aotCacheLoader.js.map +0 -1
  691. package/.dist/esm/src/callContext.d.ts.map +0 -1
  692. package/.dist/esm/src/constants.d.ts.map +0 -1
  693. package/.dist/esm/src/defaultRoutes.d.ts +0 -4
  694. package/.dist/esm/src/defaultRoutes.d.ts.map +0 -1
  695. package/.dist/esm/src/defaultRoutes.js +0 -16
  696. package/.dist/esm/src/defaultRoutes.js.map +0 -1
  697. package/.dist/esm/src/dispatch.d.ts.map +0 -1
  698. package/.dist/esm/src/lib/aotEmitter.d.ts +0 -24
  699. package/.dist/esm/src/lib/aotEmitter.d.ts.map +0 -1
  700. package/.dist/esm/src/lib/aotEmitter.js +0 -74
  701. package/.dist/esm/src/lib/aotEmitter.js.map +0 -1
  702. package/.dist/esm/src/lib/dispatchError.d.ts.map +0 -1
  703. package/.dist/esm/src/lib/handlers.d.ts.map +0 -1
  704. package/.dist/esm/src/lib/headers.d.ts.map +0 -1
  705. package/.dist/esm/src/lib/methodsCache.d.ts +0 -12
  706. package/.dist/esm/src/lib/methodsCache.d.ts.map +0 -1
  707. package/.dist/esm/src/lib/methodsCache.js +0 -56
  708. package/.dist/esm/src/lib/methodsCache.js.map +0 -1
  709. package/.dist/esm/src/lib/queryBody.d.ts.map +0 -1
  710. package/.dist/esm/src/lib/reflection.d.ts.map +0 -1
  711. package/.dist/esm/src/lib/remoteMethods.d.ts.map +0 -1
  712. package/.dist/esm/src/lib/test/aotEmitter-test-router.d.ts +0 -5
  713. package/.dist/esm/src/lib/test/aotEmitter-test-router.d.ts.map +0 -1
  714. package/.dist/esm/src/lib/test/aotEmitter-test-router.js +0 -24
  715. package/.dist/esm/src/lib/test/aotEmitter-test-router.js.map +0 -1
  716. package/.dist/esm/src/router.d.ts.map +0 -1
  717. package/.dist/esm/src/routes/client.routes.d.ts +0 -20
  718. package/.dist/esm/src/routes/client.routes.d.ts.map +0 -1
  719. package/.dist/esm/src/routes/client.routes.js +0 -76
  720. package/.dist/esm/src/routes/client.routes.js.map +0 -1
  721. package/.dist/esm/src/routes/errors.routes.d.ts.map +0 -1
  722. package/.dist/esm/src/routes/mion.routes.d.ts +0 -10
  723. package/.dist/esm/src/routes/mion.routes.d.ts.map +0 -1
  724. package/.dist/esm/src/routes/mion.routes.js +0 -13
  725. package/.dist/esm/src/routes/mion.routes.js.map +0 -1
  726. package/.dist/esm/src/routes/serializer.routes.d.ts.map +0 -1
  727. package/.dist/esm/src/routesFlow.d.ts +0 -8
  728. package/.dist/esm/src/routesFlow.d.ts.map +0 -1
  729. package/.dist/esm/src/routesFlow.js +0 -227
  730. package/.dist/esm/src/routesFlow.js.map +0 -1
  731. package/.dist/esm/src/types/context.d.ts.map +0 -1
  732. package/.dist/esm/src/types/context.js.map +0 -1
  733. package/.dist/esm/src/types/definitions.d.ts.map +0 -1
  734. package/.dist/esm/src/types/definitions.js.map +0 -1
  735. package/.dist/esm/src/types/general.d.ts.map +0 -1
  736. package/.dist/esm/src/types/general.js.map +0 -1
  737. package/.dist/esm/src/types/guards.d.ts.map +0 -1
  738. package/.dist/esm/src/types/handlers.d.ts.map +0 -1
  739. package/.dist/esm/src/types/handlers.js.map +0 -1
  740. package/.dist/esm/src/types/publicMethods.d.ts.map +0 -1
  741. package/.dist/esm/src/types/publicMethods.js.map +0 -1
  742. package/.dist/esm/src/types/remoteMethods.d.ts.map +0 -1
  743. package/.dist/esm/src/types/remoteMethods.js.map +0 -1
  744. package/index.ts +0 -29
  745. package/src/aot/aotCacheLoader.ts +0 -15
  746. package/src/callContext.ts +0 -193
  747. package/src/constants.ts +0 -45
  748. package/src/defaultRoutes.ts +0 -37
  749. package/src/dispatch.ts +0 -204
  750. package/src/lib/aotEmitter.ts +0 -140
  751. package/src/lib/dispatchError.ts +0 -60
  752. package/src/lib/handlers.ts +0 -75
  753. package/src/lib/headers.ts +0 -102
  754. package/src/lib/methodsCache.ts +0 -72
  755. package/src/lib/queryBody.ts +0 -40
  756. package/src/lib/reflection.ts +0 -517
  757. package/src/lib/remoteMethods.ts +0 -180
  758. package/src/lib/test/aotEmitter-test-router.ts +0 -40
  759. package/src/router.ts +0 -656
  760. package/src/routes/client.routes.ts +0 -108
  761. package/src/routes/errors.routes.ts +0 -51
  762. package/src/routes/mion.routes.ts +0 -11
  763. package/src/routes/serializer.routes.ts +0 -225
  764. package/src/routesFlow.ts +0 -320
  765. package/src/types/context.ts +0 -119
  766. package/src/types/definitions.ts +0 -53
  767. package/src/types/general.ts +0 -84
  768. package/src/types/guards.ts +0 -71
  769. package/src/types/handlers.ts +0 -49
  770. package/src/types/publicMethods.ts +0 -83
  771. package/src/types/remoteMethods.ts +0 -54
@@ -1 +1 @@
1
- {"version":3,"file":"reflection.js","sources":["../../../../src/lib/reflection.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MethodWithJitFns, AnyFn, JitCompiledFunctions, MethodMetadata} from '@mionjs/core';\n// Type-only imports from run-types - these don't load the module at runtime\nimport type {FunctionRunType, BaseRunType, MemberRunType, RunTypeOptions, JitFnCompiler} from '@mionjs/run-types';\nimport {Handler} from '../types/handlers.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {DEFAULT_ROUTE_OPTIONS, HEADER_HOOK_DEFAULT_PARAMS, ROUTE_DEFAULT_PARAMS} from '../constants.ts';\nimport {EMPTY_HASH, HeadersSubset, getJitFunctionsFromHash, getNoopJitFns, HandlerType} from '@mionjs/core';\nimport {getPersistedMethodMetadata} from './methodsCache.ts';\nimport {RouteOptions, MiddleFnOptions, HeadersMiddleFnOptions, MiddleFnMethod, HeadersMethod} from '../types/remoteMethods.ts';\n\n// ############ This file is the only one importing '@mionjs/run-types' within the router ########\n// In AOT mode, run-types is NOT loaded - all reflection data comes from the AOT cache\n\ntype MethodReflect = Omit<MethodWithJitFns, 'id' | 'type' | 'nestLevel' | 'pointer' | 'options'>;\n\n// ############ AOT Cache Error ############\n\n/**\n * Error thrown when AOT mode is enabled but required data is missing from the AOT cache.\n * This indicates that the AOT caches need to be regenerated using 'mion-build-aot' command.\n */\nexport class AOTCacheError extends Error {\n constructor(routeId: string, type: 'route' | 'middleFn' | 'rawMiddleFn' = 'route') {\n const typeLabel = type === 'rawMiddleFn' ? 'Raw middleFn' : type === 'middleFn' ? 'MiddleFn' : 'Route/middleFn';\n super(`${typeLabel} \"${routeId}\" not found in AOT cache.\\n` + `Regenerate AOT caches using 'mion-build-aot' command.`);\n this.name = 'AOTCacheError';\n }\n}\n\n// ############ Run-Types Module Loading ############\ntype RunTypesModule = typeof import('@mionjs/run-types');\n// Type definition for the dynamically imported run-types module\ninterface RunTypesFunctions {\n JitFunctions: RunTypesModule['JitFunctions'];\n reflectFunction: RunTypesModule['reflectFunction'];\n isUnionRunType: RunTypesModule['isUnionRunType'];\n isClassRunType: RunTypesModule['isClassRunType'];\n isLiteralRunType: RunTypesModule['isLiteralRunType'];\n isNeverRunType: RunTypesModule['isNeverRunType'];\n}\n\n// Cached run-types module - loaded once and reused\nlet runTypesModule: RunTypesFunctions | null = null;\nlet runTypesLoadPromise: Promise<RunTypesFunctions> | null = null;\n\n/** Dynamically loads the @mionjs/run-types module. The module is cached after first load. */\nasync function loadRunTypesModule(): Promise<RunTypesFunctions> {\n // Return cached module if already loaded\n if (runTypesModule) return runTypesModule;\n\n // Return existing promise if load is in progress\n if (runTypesLoadPromise) return runTypesLoadPromise;\n\n // Start loading the module\n runTypesLoadPromise = import('@mionjs/run-types').then((module) => {\n runTypesModule = {\n JitFunctions: module.JitFunctions,\n reflectFunction: module.reflectFunction,\n isUnionRunType: module.isUnionRunType,\n isClassRunType: module.isClassRunType,\n isLiteralRunType: module.isLiteralRunType,\n isNeverRunType: module.isNeverRunType,\n };\n return runTypesModule;\n });\n\n return runTypesLoadPromise;\n}\n\n/** Resets the run-types module cache. Useful for testing purposes only. */\nexport function resetRunTypesCache(): void {\n runTypesModule = null;\n runTypesLoadPromise = null;\n}\n\n/** Resets all reflection caches. Useful for testing purposes only. */\nexport function resetReflectionCaches(): void {\n rawMiddleFnReflectionCache.clear();\n // Note: functionRunTypeCache uses WeakMap so it doesn't need explicit clearing\n // Note: _cachedReflection on MethodMetadata objects will be cleared when persistedMethods is reset\n}\n\n// ############ Raw MiddleFn Reflection Helper ############\n\n// Cache for common raw middleFn reflections\nconst rawMiddleFnReflectionCache = new Map<string, MethodReflect>();\n\n/**\n * Creates a MethodReflect for raw middleFns.\n * Raw middleFns don't need JIT functions - they always use NoopJitFns.\n * Results are cached to avoid creating duplicate objects.\n */\nfunction createRawMiddleFnReflection(isAsync: boolean, hasReturnData: boolean = false, paramNames: string[] = []): MethodReflect {\n // Create cache key from parameters\n const cacheKey = `${isAsync}_${hasReturnData}_${paramNames.join(',')}`;\n\n const cached = rawMiddleFnReflectionCache.get(cacheKey);\n if (cached) return cached;\n\n const reflection: MethodReflect = {\n paramNames,\n paramsJitFns: getNoopJitFns(),\n returnJitFns: getNoopJitFns(),\n paramsJitHash: EMPTY_HASH,\n returnJitHash: EMPTY_HASH,\n hasReturnData,\n isAsync,\n };\n\n rawMiddleFnReflectionCache.set(cacheKey, reflection);\n return reflection;\n}\n\n// ############ AOT Cache Extraction ############\n\n// Extend MethodMetadata type to include cached reflection\ntype CachedMethodMetadata = MethodMetadata & {\n _cachedReflection?: MethodReflect;\n};\n\n/**\n * Extracts reflection data from a cached method.\n * Used in AOT mode to restore method reflection without loading run-types.\n * Results are cached on the metadata object to avoid creating duplicate objects.\n */\nfunction extractReflectionFromCached(cached: CachedMethodMetadata): MethodReflect {\n // Return cached reflection if available\n if (cached._cachedReflection) return cached._cachedReflection;\n\n const reflectionItems: MethodReflect = {\n paramNames: cached.paramNames || [],\n paramsJitFns: getJitFunctionsFromHash(cached.paramsJitHash),\n returnJitFns: getJitFunctionsFromHash(cached.returnJitHash),\n paramsJitHash: cached.paramsJitHash,\n returnJitHash: cached.returnJitHash,\n hasReturnData: cached.hasReturnData,\n isAsync: cached.isAsync,\n };\n\n // Restore headers param if present\n if (cached.headersParam) {\n reflectionItems.headersParam = {\n headerNames: cached.headersParam.headerNames,\n jitFns: getJitFunctionsFromHash(cached.headersParam.jitHash) as Pick<JitCompiledFunctions, 'isType' | 'typeErrors'>,\n jitHash: cached.headersParam.jitHash,\n };\n }\n\n // Restore headers return if present\n if (cached.headersReturn) {\n reflectionItems.headersReturn = {\n headerNames: cached.headersReturn.headerNames,\n jitFns: getJitFunctionsFromHash(cached.headersReturn.jitHash) as Pick<JitCompiledFunctions, 'isType' | 'typeErrors'>,\n jitHash: cached.headersReturn.jitHash,\n };\n }\n\n // Cache for future calls\n cached._cachedReflection = reflectionItems;\n return reflectionItems;\n}\n\n// ############ Main Reflection Functions ############\n\n/**\n * Gets reflection data for a handler (route or middleFn).\n * In AOT mode, returns cached data without loading run-types.\n * In non-AOT mode, dynamically loads run-types and generates reflection.\n * Throws AOTCacheError if AOT mode is enabled and route is not in cache.\n */\nexport async function getHandlerReflection(\n handler: Handler,\n routeId: string,\n routerOptions: RouterOptions,\n handlerOptions: RouteOptions | MiddleFnOptions | HeadersMiddleFnOptions = {},\n isHeadersMiddleFn: boolean = false,\n methodStrictTypes?: boolean\n): Promise<MethodReflect> {\n // Check AOT cache first\n const cached = getPersistedMethodMetadata(routeId);\n if (cached) return extractReflectionFromCached(cached);\n if (routerOptions.aot) throw new AOTCacheError(routeId, isHeadersMiddleFn ? 'middleFn' : 'route');\n // Non-AOT mode: dynamically load run-types and generate reflection\n const rt = await loadRunTypesModule();\n return generateHandlerReflection(handler, routeId, routerOptions, handlerOptions, isHeadersMiddleFn, rt, methodStrictTypes);\n}\n\n/**\n * Gets reflection data for a raw middleFn.\n * Raw middleFns don't use full reflection - they don't need JIT functions.\n * Raw middleFns don't NEED to be in the AOT cache, but if they are, we can use\n * the cached data (especially the isAsync flag).\n * In AOT mode, this function does NOT load run-types.\n */\nexport async function getRawMethodReflection(\n handler: Handler,\n routeId: string,\n routerOptions: RouterOptions\n): Promise<MethodReflect> {\n // Check if raw middleFn is in cache - if so, use cached data (especially isAsync)\n const cached = getPersistedMethodMetadata(routeId);\n if (cached) return createRawMiddleFnReflection(cached.isAsync, cached.hasReturnData, cached.paramNames || []);\n // Raw middleFns don't need JIT functions, so we don't need to load run-types in AOT mode\n if (routerOptions.aot) return createRawMiddleFnReflection(true);\n // Non-AOT mode: dynamically load run-types to properly detect if handler is async\n const rt = await loadRunTypesModule();\n return generateRawMethodReflection(handler, routeId, rt);\n}\n\n// ############ Reflection Generation (requires run-types) ############\n\n/**\n * Generates reflection data for a handler using run-types.\n * This function is only called in non-AOT mode.\n */\nfunction generateHandlerReflection(\n handler: Handler,\n routeId: string,\n routerOptions: RouterOptions,\n handlerOptions: RouteOptions | MiddleFnOptions | HeadersMiddleFnOptions,\n isHeadersMiddleFn: boolean,\n rt: RunTypesFunctions,\n methodStrictTypes?: boolean\n): MethodReflect {\n const reflectionItems: Partial<MethodReflect> = {};\n let handlerRunType: FunctionRunType;\n const needsBinary = ((handlerOptions as RouteOptions)?.serializer ?? routerOptions.serializer) === 'binary';\n const effectiveStrictTypes = methodStrictTypes ?? routerOptions.strictTypes;\n const runTypeOptions: RunTypeOptions = {\n ...(routerOptions?.runTypeOptions || DEFAULT_ROUTE_OPTIONS.runTypeOptions),\n ...(effectiveStrictTypes !== undefined ? {strictTypes: effectiveStrictTypes} : {}),\n };\n try {\n handlerRunType = rt.reflectFunction(handler);\n } catch (error: any) {\n throw new Error(`Can not get RunType of handler for route/middleFn \"${routeId}.\" Error: ${error?.message}`);\n }\n const paramsSlice = isHeadersMiddleFn ? {start: HEADER_HOOK_DEFAULT_PARAMS.length} : {start: ROUTE_DEFAULT_PARAMS.length};\n const paramsOpts: RunTypeOptions = {...runTypeOptions, paramsSlice};\n\n try {\n reflectionItems.paramNames = handlerRunType.getParameterNames(paramsOpts);\n // Skip JIT generation if handler has no params (optimization for AOT cache size)\n if (reflectionItems.paramNames.length === 0) {\n reflectionItems.paramsJitHash = EMPTY_HASH;\n reflectionItems.paramsJitFns = getNoopJitFns();\n } else {\n reflectionItems.paramsJitFns = getFunctionJitFns(handler, paramsOpts, rt, false, needsBinary);\n reflectionItems.paramsJitHash = handlerRunType.getParameters().getJitHash(paramsOpts);\n }\n } catch (error: any) {\n throw new Error(`Can not compile Jit Functions for Parameters of route/middleFn \"${routeId}.\" Error: ${error?.message}`);\n }\n\n if (isHeadersMiddleFn) {\n const headersRunType = getParamsHeadersRunType(handlerRunType, routeId, routerOptions, rt);\n const headerNames: string[] = getHeaderNames(headersRunType, routeId, rt);\n\n try {\n const opts: RunTypeOptions = {\n ...runTypeOptions,\n paramsSlice: undefined,\n };\n\n const jitFns: JitCompiledFunctions = getTypeJitFunctions(headersRunType, opts, rt, false);\n const jitHash = headersRunType.getJitHash(opts);\n reflectionItems.headersParam = {headerNames, jitFns, jitHash};\n } catch (error: any) {\n throw new Error(\n `Can not compile Jit Functions for Headers of Headers MiddleFn \"${routeId}.\" Error: ${error?.message}`\n );\n }\n }\n\n const returnHeadersRunType = getReturnHeadersRunType(handlerRunType, rt);\n if (returnHeadersRunType) {\n const opts: RunTypeOptions = {};\n const headerNames: string[] = getHeaderNames(returnHeadersRunType, routeId, rt);\n const jitFns: JitCompiledFunctions = getFunctionJitFns(handler, opts, rt, true, false);\n const jitHash: string = returnHeadersRunType.getJitHash(opts);\n reflectionItems.headersReturn = {headerNames, jitFns, jitHash};\n }\n\n const returnOpts: RunTypeOptions = runTypeOptions;\n // If the return type is HeadersSubset or if it's a headersFn with array return, don't treat it as return data\n reflectionItems.hasReturnData = handlerRunType.hasReturnData();\n\n try {\n // Skip JIT generation if handler has void return (optimization for AOT cache size)\n if (!reflectionItems.hasReturnData) {\n reflectionItems.returnJitFns = getNoopJitFns();\n reflectionItems.returnJitHash = EMPTY_HASH;\n } else {\n // returnJitFns contains all run type functionality for the return value, it compiles when the property is first accessed\n reflectionItems.returnJitFns = getFunctionJitFns(handler, returnOpts, rt, true, needsBinary);\n reflectionItems.returnJitHash = handlerRunType.getResolvedReturnType().getJitHash(returnOpts);\n }\n } catch (error: any) {\n throw new Error(`Can not get Jit Functions for Return of route/middleFn \"${routeId}.\" Error: ${error?.message}`);\n }\n\n reflectionItems.isAsync = handlerRunType.isAsync();\n\n return reflectionItems as MethodReflect;\n}\n\n/**\n * Generates reflection data for a raw middleFn using run-types.\n * This function is only called in non-AOT mode.\n */\nfunction generateRawMethodReflection(handler: Handler, routeId: string, rt: RunTypesFunctions): MethodReflect {\n let handlerRunType: FunctionRunType;\n try {\n handlerRunType = rt.reflectFunction(handler);\n } catch (error: any) {\n throw new Error(`Can not get RunType of handler for route/middleFn \"${routeId}.\" Error: ${error?.message}`);\n }\n const isAsync = handlerRunType?.isAsync() || true;\n return createRawMiddleFnReflection(isAsync);\n}\n\n// ############ Helper Functions (require run-types module) ############\n\nfunction getParamsHeadersRunType(\n handlerRunType: FunctionRunType,\n routeId: string,\n routerOptions: RouterOptions,\n rt: RunTypesFunctions\n): BaseRunType {\n const paramRunTypes = handlerRunType.getParameters().getParamRunTypes(getFakeCompiler(routerOptions));\n const headersSubset = (paramRunTypes[1] as MemberRunType<any>)?.getMemberType?.(); // HeadersSubset is always index 1 after context\n\n if (!isHeaderSubSetRunType(headersSubset, rt)) {\n throw new Error(`Headers MiddleFn '${routeId}' second parameter must be a HeadersSubset.`);\n }\n return headersSubset;\n}\n\nfunction getReturnHeadersRunType(handlerRunType: FunctionRunType, rt: RunTypesFunctions): BaseRunType | undefined {\n const returnRunType = handlerRunType.getReturnType();\n if (rt.isUnionRunType(returnRunType)) {\n const headersSubset = returnRunType.getChildRunTypes().find((child) => isHeaderSubSetRunType(child, rt));\n if (!headersSubset) return undefined;\n return headersSubset;\n }\n if (!isHeaderSubSetRunType(returnRunType, rt)) return undefined;\n return returnRunType;\n}\n\nfunction isHeaderSubSetRunType(runType: BaseRunType | undefined, rt: RunTypesFunctions): runType is BaseRunType {\n if (!runType) return false;\n return rt.isClassRunType(runType, HeadersSubset);\n}\n\nfunction getHeaderNames(runType: BaseRunType, routeId: string, rt: RunTypesFunctions): string[] {\n // HeadersSubset is a generic class: HeadersSubset<Required, Optional>\n // We need to extract the literal string values from the Required and Optional type arguments\n // Use 'typeArguments' (not 'arguments') to get both Required and Optional with their defaults\n const typeArguments = (runType.src as any).typeArguments;\n if (!typeArguments || typeArguments.length === 0) {\n throw new Error(`HeadersSubset must have type arguments in route/middleFn ${routeId}`);\n }\n const headerNames: string[] = [];\n // Extract header names from Required type argument (first argument)\n const requiredArg = typeArguments[0];\n if (requiredArg) {\n const requiredNames = extractLiteralStringsFromType(requiredArg._rt, rt);\n headerNames.push(...requiredNames);\n }\n // Extract header names from Optional type argument (second argument, if present)\n if (typeArguments.length > 1) {\n const optionalArg = typeArguments[1];\n if (optionalArg) {\n const optionalNames = extractLiteralStringsFromType(optionalArg._rt, rt);\n headerNames.push(...optionalNames);\n }\n }\n if (headerNames.length === 0) throw new Error(`Header names array cannot be empty in route/middleFn ${routeId}`);\n return headerNames;\n}\n\n/**\n * Internal recursive function to extract literal string values from a type.\n * Handles single literal strings and union types (including nested unions).\n */\nfunction extractLiteralStringsFromTypeRecursive(runType: BaseRunType, rt: RunTypesFunctions): string[] {\n // Handle single literal string\n if (rt.isLiteralRunType(runType)) {\n const literal = (runType as any).getLiteralValue();\n if (typeof literal === 'string') {\n return [literal];\n }\n return [];\n }\n\n // Handle union of literal strings (recursively for nested unions)\n if (rt.isUnionRunType(runType)) {\n const children = runType.getChildRunTypes();\n const literals: string[] = [];\n for (const child of children) {\n // Recursively extract from each child (handles nested unions)\n const childLiterals = extractLiteralStringsFromTypeRecursive(child, rt);\n literals.push(...childLiterals);\n }\n return literals;\n }\n\n return [];\n}\n\n/**\n * Extracts literal string values from a type.\n * Handles 'never' type only at the root level, then delegates to recursive extraction.\n */\nfunction extractLiteralStringsFromType(runType: BaseRunType, rt: RunTypesFunctions): string[] {\n // Handle 'never' type at root level only (no headers)\n if (rt.isNeverRunType(runType)) return [];\n return extractLiteralStringsFromTypeRecursive(runType, rt);\n}\n\n// Create a fake compiler object with just the opts property needed by getParamRunTypes.\n// getParamRunTypes() requires a JitFnCompiler but we only need the opts property to slice parameters.\n// This is a workaround to avoid updating getParamRunTypes() signature\nfunction getFakeCompiler(routerOptions: RouterOptions): JitFnCompiler {\n return {opts: routerOptions} as any as JitFnCompiler;\n}\n\nfunction getTypeJitFunctions(\n runType: BaseRunType,\n opts: RunTypeOptions | undefined,\n rtModule: RunTypesFunctions,\n needsBinary: boolean = false\n): JitCompiledFunctions {\n const jitFns: JitCompiledFunctions = {\n isType: runType.createJitCompiledFunction(rtModule.JitFunctions.isType.id, undefined, opts),\n typeErrors: runType.createJitCompiledFunction(rtModule.JitFunctions.typeErrors.id, undefined, opts),\n prepareForJson: runType.createJitCompiledFunction(rtModule.JitFunctions.prepareForJson.id, undefined, opts),\n restoreFromJson: runType.createJitCompiledFunction(rtModule.JitFunctions.restoreFromJson.id, undefined, opts),\n stringifyJson: runType.createJitCompiledFunction(rtModule.JitFunctions.stringifyJson.id, undefined, opts),\n ...(needsBinary\n ? {\n toBinary: runType.createJitCompiledFunction(rtModule.JitFunctions.toBinary.id, undefined, opts),\n fromBinary: runType.createJitCompiledFunction(rtModule.JitFunctions.fromBinary.id, undefined, opts),\n }\n : {}),\n };\n return jitFns;\n}\n\n// Cache for function RunTypes to avoid duplicate reflectFunction calls\nconst functionRunTypeCache = new WeakMap<AnyFn, FunctionRunType>();\n\nfunction getFunctionJitFns<Fn extends AnyFn>(\n fn: Fn,\n opts: RunTypeOptions | undefined,\n rtModule: RunTypesFunctions,\n isReturn: boolean,\n needsBinary: boolean = false\n): JitCompiledFunctions {\n // Check cache first\n let runType = functionRunTypeCache.get(fn);\n if (!runType) {\n runType = rtModule.reflectFunction(fn);\n functionRunTypeCache.set(fn, runType);\n }\n\n const createFn = isReturn\n ? runType.createJitCompiledReturnFunction.bind(runType)\n : runType.createJitCompiledParamsFunction.bind(runType);\n const jitFunctions: JitCompiledFunctions = {\n isType: createFn(rtModule.JitFunctions.isType, opts),\n typeErrors: createFn(rtModule.JitFunctions.typeErrors, opts),\n prepareForJson: createFn(rtModule.JitFunctions.prepareForJson, opts),\n restoreFromJson: createFn(rtModule.JitFunctions.restoreFromJson, opts),\n stringifyJson: createFn(rtModule.JitFunctions.stringifyJson, opts),\n ...(needsBinary\n ? {\n toBinary: createFn(rtModule.JitFunctions.toBinary, opts),\n fromBinary: createFn(rtModule.JitFunctions.fromBinary, opts),\n }\n : {}),\n };\n return jitFunctions;\n}\n\n// ############ Retroactive Binary JIT Compilation ############\n\n/** Compiles toBinary/fromBinary JIT functions for middleware that was initially compiled without binary support */\nexport async function ensureBinaryJitFns(method: MiddleFnMethod | HeadersMethod): Promise<void> {\n if (method.paramsJitFns.toBinary && method.returnJitFns.toBinary) return;\n const rt = await loadRunTypesModule();\n const isHeader = method.type === HandlerType.headersMiddleFn;\n const paramsSlice = isHeader ? {start: HEADER_HOOK_DEFAULT_PARAMS.length} : {start: ROUTE_DEFAULT_PARAMS.length};\n const opts: RunTypeOptions = {paramsSlice};\n\n if (!method.paramsJitFns.toBinary && method.paramsJitHash !== EMPTY_HASH) {\n const runType = rt.reflectFunction(method.handler);\n const createFn = runType.createJitCompiledParamsFunction.bind(runType);\n method.paramsJitFns.toBinary = createFn(rt.JitFunctions.toBinary, opts);\n method.paramsJitFns.fromBinary = createFn(rt.JitFunctions.fromBinary, opts);\n }\n if (!method.returnJitFns.toBinary && method.returnJitHash !== EMPTY_HASH && method.hasReturnData) {\n const runType = rt.reflectFunction(method.handler);\n const createFn = runType.createJitCompiledReturnFunction.bind(runType);\n method.returnJitFns.toBinary = createFn(rt.JitFunctions.toBinary);\n method.returnJitFns.fromBinary = createFn(rt.JitFunctions.fromBinary);\n }\n}\n\n// ############ Null JIT Functions ############\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reflection.js","names":[],"sources":["../../../../src/lib/reflection.ts"],"sourcesContent":["/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport type {MethodWithJitFns} from '@mionjs/core';\nimport {EMPTY_HASH, getNoopJitFns, getOrCreateGlobal, type ResolvedParser} from '@mionjs/core';\nimport {getHeadersReflectionFromMarkers, getReflectionFromMarkers, isAsyncHandler} from '@mionjs/core';\nimport {Handler} from '../types/handlers.ts';\nimport {RouterOptions} from '../types/general.ts';\nimport {RouteOptions, MiddlewareOptions} from '../types/remoteMethods.ts';\nimport {AnyHandlerDef, RawMiddlewareDef} from '../types/definitions.ts';\n\n// ############ This file is the only one consuming type reflection within the router ########\n// All type information is injected AT BUILD TIME into the route()/middleware() call sites (lib/handlers.ts)\n// and this module only adapts those payloads into the MethodReflect shape the router consumes. No runtime\n// reflection, no JIT compilation, no AOT cache: the modules the mion vite plugin emits ARE the artifacts.\n\ntype MethodReflect = Omit<MethodWithJitFns, 'id' | 'type' | 'nestLevel' | 'pointer' | 'options'>;\n\n/** The definition carries no injected type information: it was built or run without the mion plugin active. */\nexport class MissingRtFnsError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" has no build-time type information.\\n` +\n `Declare it through route()/middleware() and make sure mionVitePlugin (@mionjs/devtools) is active in the build.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'MissingRtFnsError';\n }\n}\n\n/** The injected type information IS present but the host forbids building functions from strings (workerd,\n * Vercel's EdgeVM, a CSP without 'unsafe-eval'). A BUILD-CONFIG problem, not a missing-plugin one. */\nexport class RuntimeCodeGenBlockedError extends Error {\n constructor(routeId: string, cause?: string) {\n super(\n `Route/middleware \"${routeId}\" carries build-time type information, but this runtime forbids ` +\n `compiling functions from strings.\\n` +\n `Build with \\`mionVitePlugin({runTypes: {emitMode: 'both'}})\\`: the default 'code' ships each ` +\n `compiled fn as a source string that is turned into a function on first use, which edge ` +\n `runtimes (Cloudflare Workers / workerd, Vercel Edge) refuse. 'both' also emits the live ` +\n `factory, so nothing is compiled at runtime.` +\n (cause ? `\\nCause: ${cause}` : '')\n );\n this.name = 'RuntimeCodeGenBlockedError';\n }\n}\n\n// workerd: \"Code generation from strings disallowed for this context\"; V8/EdgeVM with a CSP:\n// \"Code generation from strings disallowed\"/\"unsafe-eval\". Matched on the shared stem so both land.\nconst CODE_GEN_BLOCKED = /code generation from strings|unsafe-eval/i;\n\n/** True when an error from the mion runtime is a blocked `new Function`, not a missing payload. */\nfunction isCodeGenBlocked(message?: string): boolean {\n return !!message && CODE_GEN_BLOCKED.test(message);\n}\n\n// ############ Raw Middleware Reflection ############\n\nconst rawMiddlewareReflectionCache = getOrCreateGlobal(\n 'mion.reflection.rawMiddlewareReflectionCache',\n () => new Map<string, MethodReflect>()\n);\n\n/** Creates a MethodReflect for raw middlewares: no type info, NoopJitFns. */\nfunction createRawMiddlewareReflection(isAsync: boolean, hasReturnData: boolean = false, paramsCount: number = 0): MethodReflect {\n const cacheKey = `${isAsync}_${hasReturnData}_${paramsCount}`;\n const cached = rawMiddlewareReflectionCache.get(cacheKey);\n if (cached) return cached;\n\n const reflection: MethodReflect = {\n paramsCount,\n paramsJitFns: getNoopJitFns(),\n returnJitFns: getNoopJitFns(),\n paramsJitHash: EMPTY_HASH,\n returnJitHash: EMPTY_HASH,\n hasReturnData,\n isAsync,\n };\n\n rawMiddlewareReflectionCache.set(cacheKey, reflection);\n return reflection;\n}\n\n// ############ Main Reflection Functions ############\n\n/** Definitions that carry an injected `rtFns` payload. RawMiddlewareDef is excluded: a raw\n * middleware declares no extra params, so it has no reflection and goes through\n * getRawMethodReflection instead. */\ntype ReflectableDef = Exclude<AnyHandlerDef, RawMiddlewareDef>;\n\n/** All data derives from the mion marker payload the factory stashed on the definition (`def.rtFns`);\n * registration fails loudly when that payload is missing (plugin not active). */\nexport function getHandlerReflection(\n def: ReflectableDef,\n routeId: string,\n routerOptions: RouterOptions,\n // handlerOptions stays unused here: what a route compiles is decided at build time by its parser strategy.\n handlerOptions: RouteOptions | MiddlewareOptions = {}, // eslint-disable-line @typescript-eslint/no-unused-vars\n isHeadersMiddleware: boolean = false\n): MethodReflect {\n try {\n return isHeadersMiddleware\n ? getHeadersReflectionFromMarkers(def.rtFns, def.handler, routeId)\n : getReflectionFromMarkers(def.rtFns, def.handler, routeId);\n } catch (error: any) {\n if (isCodeGenBlocked(error?.message)) throw new RuntimeCodeGenBlockedError(routeId, error.message);\n throw new MissingRtFnsError(routeId, error?.message);\n }\n}\n\n/** Raw middlewares parse the raw request / response themselves, so they carry no type info. */\nexport function getRawMethodReflection(\n handler: Handler,\n routeId: string, // eslint-disable-line @typescript-eslint/no-unused-vars\n routerOptions: RouterOptions // eslint-disable-line @typescript-eslint/no-unused-vars\n): MethodReflect {\n return createRawMiddlewareReflection(isAsyncHandler(handler));\n}\n\n/** Checks each direction's compiled strategy against the resolved one: they differ only when the\n * build saw a different literal than the runtime value. */\nexport function assertCompiledParser(methodId: string, parser: ResolvedParser, reflection: MethodReflect): void {\n const sides = [\n ['params', reflection.paramsJitHash, reflection.paramsJitFns],\n ['return', reflection.returnJitHash, reflection.returnJitFns],\n ] as const;\n for (const [direction, hash, fns] of sides) {\n if (hash === EMPTY_HASH) continue;\n const wanted = parser[direction];\n if (fns.json.strategy !== wanted)\n throw new Error(\n `mion: ${direction} parser of \"${methodId}\" is '${wanted}' at runtime but the build compiled ` +\n `'${fns.json.strategy}'. Write the parser option inline on the route (or as an \\`as const\\` preset) and the ` +\n `router-wide default as a literal on createMionRouter, so the build sees the same value the runtime reads.`\n );\n }\n}\n"],"mappings":";;;AAuBA,IAAa,oBAAb,cAAuC,MAAM;CAC3C,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,2JAE1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;;;AAIA,IAAa,6BAAb,cAAgD,MAAM;CACpD,YAAY,SAAiB,OAAgB;EAC3C,MACE,qBAAqB,QAAQ,+ZAM1B,QAAQ,YAAY,UAAU,GACnC;EACA,KAAK,OAAO;CACd;AACF;AAIA,IAAM,mBAAmB;;AAGzB,SAAS,iBAAiB,SAA2B;CACnD,OAAO,CAAC,CAAC,WAAW,iBAAiB,KAAK,OAAO;AACnD;AAIA,IAAM,+BAA+B,kBACnC,sEACM,IAAI,IAA2B,CACvC;;AAGA,SAAS,8BAA8B,SAAkB,gBAAyB,OAAO,cAAsB,GAAkB;CAC/H,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG;CAChD,MAAM,SAAS,6BAA6B,IAAI,QAAQ;CACxD,IAAI,QAAQ,OAAO;CAEnB,MAAM,aAA4B;EAChC;EACA,cAAc,cAAc;EAC5B,cAAc,cAAc;EAC5B,eAAe;EACf,eAAe;EACf;EACA;CACF;CAEA,6BAA6B,IAAI,UAAU,UAAU;CACrD,OAAO;AACT;;;AAWA,SAAgB,qBACd,KACA,SACA,eAEA,iBAAmD,CAAC,GACpD,sBAA+B,OAChB;CACf,IAAI;EACF,OAAO,sBACH,gCAAgC,IAAI,OAAO,IAAI,SAAS,OAAO,IAC/D,yBAAyB,IAAI,OAAO,IAAI,SAAS,OAAO;CAC9D,SAAS,OAAY;EACnB,IAAI,iBAAiB,OAAO,OAAO,GAAG,MAAM,IAAI,2BAA2B,SAAS,MAAM,OAAO;EACjG,MAAM,IAAI,kBAAkB,SAAS,OAAO,OAAO;CACrD;AACF;;AAGA,SAAgB,uBACd,SACA,SACA,eACe;CACf,OAAO,8BAA8B,eAAe,OAAO,CAAC;AAC9D;;;AAIA,SAAgB,qBAAqB,UAAkB,QAAwB,YAAiC;CAC9G,MAAM,QAAQ,CACZ;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,GAC5D;EAAC;EAAU,WAAW;EAAe,WAAW;CAAY,CAC9D;CACA,KAAK,MAAM,CAAC,WAAW,MAAM,QAAQ,OAAO;EAC1C,IAAI,SAAS,YAAY;EACzB,MAAM,SAAS,OAAO;EACtB,IAAI,IAAI,KAAK,aAAa,QACxB,MAAM,IAAI,MACR,SAAS,UAAU,cAAc,SAAS,QAAQ,OAAO,uCACnD,IAAI,KAAK,SAAS,gMAE1B;CACJ;AACF"}
@@ -1,11 +1,11 @@
1
1
  import { Routes } from '../types/general.ts';
2
2
  import { RemoteMethod } from '../types/remoteMethods.ts';
3
3
  import { PublicApi } from '../types/publicMethods.ts';
4
- import { JitCompiledFnData, MethodWithOptions, PureFnsDataCache } from '@mionjs/core';
4
+ import { CompiledFnData, MethodWithOptions, PureFnsDataCache } from '@mionjs/core';
5
5
  export declare function resetRemoteMethodsMetadata(): void;
6
6
  export declare function getPublicApi<R extends Routes>(routes: R): PublicApi<R>;
7
7
  export declare function getSerializableMethod(executable: RemoteMethod): MethodWithOptions;
8
- export declare function serializePureDeps(namespacedDepHash: string, purFnDeps: PureFnsDataCache, depth?: number): void;
9
- export declare function serializeJitFn(jitFnHash: string, deps: Record<string, JitCompiledFnData>, purFnDeps: PureFnsDataCache, depth?: number): void;
10
- export declare function serializeMethodDeps(method: MethodWithOptions, deps: Record<string, JitCompiledFnData>, purFnDeps: PureFnsDataCache): void;
8
+ export declare function serializePureDeps(id: string, purFnDeps: PureFnsDataCache, depth?: number): void;
9
+ export declare function serializeJitFn(rtFnHash: string, deps: Record<string, CompiledFnData>, purFnDeps: PureFnsDataCache, depth?: number): void;
10
+ export declare function serializeMethodDeps(method: MethodWithOptions, deps: Record<string, CompiledFnData>, purFnDeps: PureFnsDataCache): void;
11
11
  //# sourceMappingURL=remoteMethods.d.ts.map
@@ -1,125 +1,119 @@
1
- import { isMiddleFnDef, isHeadersMiddleFnDef, isRoute } from "../types/guards.js";
2
- import { isPrivateDefinition, getMiddleFnExecutable, getRouteExecutable } from "../router.js";
3
- import { MAX_STACK_DEPTH, getJitUtils, EMPTY_HASH, getJitFnHashes, getRouterItemId } from "@mionjs/core";
4
- const publicMethods = /* @__PURE__ */ new Map();
1
+ import { isHeadersMiddlewareDef, isMiddlewareDef, isRoute } from "../types/guards.js";
2
+ import { getMiddlewareExecutable, getPlatformMaxBodySize, getRouteExecutable, isPrivateDefinition } from "../router.js";
3
+ import { DEFAULT_PARSER, EMPTY_HASH, HandlerType, MAX_STACK_DEPTH, getJitFnHashes, getOrCreateGlobal, getRouterItemId, resolveCompiledPureFn } from "@mionjs/core";
4
+ import { RUN_TYPES_PURE_FN_ID_PREFIX, getRTUtils } from "@mionjs/run-types/runtime";
5
+ //#region src/lib/remoteMethods.ts
6
+ var publicMethods = getOrCreateGlobal("mion.remoteMethods.publicMethods", () => /* @__PURE__ */ new Map());
5
7
  function resetRemoteMethodsMetadata() {
6
- publicMethods.clear();
8
+ publicMethods.clear();
7
9
  }
10
+ /** All the public information and types of the routes, what a router client is generated from. */
8
11
  function getPublicApi(routes) {
9
- return recursiveGetSerializableRoutes(routes);
12
+ return recursiveGetSerializableRoutes(routes);
10
13
  }
11
14
  function recursiveGetSerializableRoutes(routes, currentPointer = [], publicData = {}) {
12
- const entries = Object.entries(routes);
13
- entries.forEach(([key, item]) => {
14
- const itemPointer = [...currentPointer, key];
15
- const id = getRouterItemId(itemPointer);
16
- if (isPrivateDefinition(item, id)) {
17
- publicData[key] = null;
18
- } else if (isMiddleFnDef(item) || isHeadersMiddleFnDef(item) || isRoute(item)) {
19
- const executable = getMiddleFnExecutable(id) || getRouteExecutable(id);
20
- if (!executable)
21
- throw new Error(`Route or MiddleFn ${id} not found. Please check you have called router.registerRoutes first.`);
22
- publicData[key] = getSerializableMethod(executable);
23
- } else {
24
- const subRoutes = routes[key];
25
- publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);
26
- }
27
- });
28
- return publicData;
15
+ Object.entries(routes).forEach(([key, item]) => {
16
+ const itemPointer = [...currentPointer, key];
17
+ const id = getRouterItemId(itemPointer);
18
+ if (isPrivateDefinition(item, id)) publicData[key] = null;
19
+ else if (isMiddlewareDef(item) || isHeadersMiddlewareDef(item) || isRoute(item)) {
20
+ const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);
21
+ if (!executable) throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);
22
+ publicData[key] = getSerializableMethod(executable);
23
+ } else {
24
+ const subRoutes = routes[key];
25
+ publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);
26
+ }
27
+ });
28
+ return publicData;
29
29
  }
30
30
  function getSerializableMethod(executable) {
31
- const existing = publicMethods.get(executable.id);
32
- if (existing) return existing;
33
- const newRemoteMethod = {
34
- type: executable.type,
35
- id: executable.id,
36
- nestLevel: executable.nestLevel,
37
- isAsync: executable.isAsync,
38
- hasReturnData: executable.hasReturnData,
39
- paramsJitHash: executable.paramsJitHash,
40
- returnJitHash: executable.returnJitHash,
41
- pointer: executable.pointer,
42
- ...executable.paramNames ? { paramNames: executable.paramNames } : {},
43
- options: executable.options
44
- };
45
- if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;
46
- if (executable.middleFnIds) newRemoteMethod.middleFnIds = executable.middleFnIds;
47
- publicMethods.set(executable.id, newRemoteMethod);
48
- return newRemoteMethod;
31
+ const existing = publicMethods.get(executable.id);
32
+ if (existing) return existing;
33
+ const newRemoteMethod = {
34
+ type: executable.type,
35
+ id: executable.id,
36
+ nestLevel: executable.nestLevel,
37
+ isAsync: executable.isAsync,
38
+ hasReturnData: executable.hasReturnData,
39
+ paramsJitHash: executable.paramsJitHash,
40
+ returnJitHash: executable.returnJitHash,
41
+ pointer: executable.pointer,
42
+ paramsCount: executable.paramsCount ?? 0,
43
+ paramNames: executable.paramNames,
44
+ options: executable.type === HandlerType.route && executable.options.maxBodySize === void 0 ? {
45
+ ...executable.options,
46
+ maxBodySize: getPlatformMaxBodySize()
47
+ } : executable.options
48
+ };
49
+ if (executable.syncId) newRemoteMethod.syncId = executable.syncId;
50
+ if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;
51
+ if (executable.headersReturn) newRemoteMethod.headersReturn = {
52
+ headerNames: executable.headersReturn.headerNames,
53
+ jitHash: executable.headersReturn.jitHash
54
+ };
55
+ if (executable.middlewareIds) newRemoteMethod.middlewareIds = executable.middlewareIds;
56
+ publicMethods.set(executable.id, newRemoteMethod);
57
+ return newRemoteMethod;
49
58
  }
50
- function serializePureDeps(namespacedDepHash, purFnDeps, depth = 0) {
51
- if (depth >= MAX_STACK_DEPTH)
52
- throw new Error(`Max depth reached serializing pure function dependencies, for: ${namespacedDepHash}`);
53
- const parts = namespacedDepHash.split("::");
54
- if (parts.length !== 2)
55
- throw new Error(`Invalid pure function dependency format: ${namespacedDepHash}, expected "namespace::fnHash"`);
56
- const [namespace, fnHash] = parts;
57
- if (!purFnDeps[namespace]) purFnDeps[namespace] = {};
58
- if (purFnDeps[namespace][fnHash]) return;
59
- const pureDep = getJitUtils().getCompiledPureFn(namespace, fnHash);
60
- if (!pureDep) throw new Error(`Pure function ${fnHash} not found in namespace ${namespace}`);
61
- const serializedPureDep = {
62
- ...pureDep,
63
- pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : void 0
64
- };
65
- purFnDeps[namespace][fnHash] = serializedPureDep;
66
- pureDep.pureFnDependencies?.forEach((depFnHash) => serializePureDeps(`${namespace}::${depFnHash}`, purFnDeps, depth + 1));
59
+ /** Serializes a pure function and everything it reaches into the wire cache, keyed by id. */
60
+ function serializePureDeps(id, purFnDeps, depth = 0) {
61
+ if (depth >= MAX_STACK_DEPTH) throw new Error(`Max depth reached serializing pure function dependencies, for: ${id}`);
62
+ if (id.startsWith(RUN_TYPES_PURE_FN_ID_PREFIX)) return;
63
+ if (purFnDeps[id]) return;
64
+ const pureDep = resolveCompiledPureFn(id);
65
+ if (!pureDep) throw new Error(`Pure function ${id} not found`);
66
+ if (!pureDep.code) throw new Error(`Pure function ${id} has no code payload and cannot be serialized to the client. Runtime-registered pure fns are server-only; the client can rebuild only build-extracted ones.`);
67
+ purFnDeps[id] = {
68
+ ...pureDep,
69
+ code: pureDep.code,
70
+ pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : void 0
71
+ };
72
+ pureDep.pureFnDependencies?.forEach((depId) => serializePureDeps(depId, purFnDeps, depth + 1));
67
73
  }
68
- function serializeJitFn(jitFnHash, deps, purFnDeps, depth = 0) {
69
- if (depth >= MAX_STACK_DEPTH)
70
- throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${jitFnHash}`);
71
- const jitFn = getJitUtils().getJIT(jitFnHash);
72
- if (!jitFn) throw new Error(`Jit function ${jitFnHash} not found`);
73
- if (deps[jitFnHash]) return;
74
- const serializedJitFn = getSerializableJitCompiler(jitFn);
75
- deps[jitFnHash] = serializedJitFn;
76
- jitFn.jitDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));
77
- jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));
74
+ function serializeJitFn(rtFnHash, deps, purFnDeps, depth = 0) {
75
+ if (depth >= MAX_STACK_DEPTH) throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${rtFnHash}`);
76
+ const jitFn = getRTUtils().getRT(rtFnHash);
77
+ if (!jitFn) throw new Error(`Jit function ${rtFnHash} not found`);
78
+ if (deps[rtFnHash]) return;
79
+ deps[rtFnHash] = getSerializableJitCompiler(jitFn);
80
+ jitFn.rtDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));
81
+ jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));
78
82
  }
79
83
  function serializeMethodDeps(method, deps, purFnDeps) {
80
- const { paramsJitHash, returnJitHash } = method;
81
- if (paramsJitHash !== EMPTY_HASH) {
82
- const paramsJitHashes = getJitFnHashes(paramsJitHash, true);
83
- for (const k in paramsJitHashes) {
84
- if (getJitUtils().getJIT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);
85
- }
86
- }
87
- if (returnJitHash !== EMPTY_HASH) {
88
- const returnJitHashes = getJitFnHashes(returnJitHash, true);
89
- let foundAny = false;
90
- for (const k in returnJitHashes) {
91
- if (getJitUtils().getJIT(returnJitHashes[k])) {
92
- serializeJitFn(returnJitHashes[k], deps, purFnDeps);
93
- foundAny = true;
94
- }
95
- }
96
- if (!foundAny) {
97
- throw new Error(
98
- `Method "${method.id}" declares returnJitHash="${returnJitHash}" but no JIT functions are registered under that hash. This usually means a Promise/Function return type was not unwrapped before computing the hash.`
99
- );
100
- }
101
- }
84
+ const { paramsJitHash, returnJitHash } = method;
85
+ const utl = getRTUtils();
86
+ const parser = method.options.parser ?? DEFAULT_PARSER;
87
+ if (paramsJitHash !== EMPTY_HASH) {
88
+ const paramsJitHashes = getJitFnHashes(paramsJitHash, parser.params);
89
+ for (const k in paramsJitHashes) if (utl.getRT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);
90
+ }
91
+ if (returnJitHash !== EMPTY_HASH) {
92
+ const returnJitHashes = getJitFnHashes(returnJitHash, parser.return);
93
+ let foundAny = false;
94
+ for (const k in returnJitHashes) if (utl.getRT(returnJitHashes[k])) {
95
+ serializeJitFn(returnJitHashes[k], deps, purFnDeps);
96
+ foundAny = true;
97
+ }
98
+ if (!foundAny) throw new Error(`Method "${method.id}" declares returnJitHash="${returnJitHash}" but no JIT functions are registered under that hash. This usually means a Promise/Function return type was not unwrapped before computing the hash.`);
99
+ }
102
100
  }
103
101
  function getSerializableJitCompiler(comp) {
104
- return {
105
- typeName: comp.typeName,
106
- fnID: comp.fnID,
107
- jitFnHash: comp.jitFnHash,
108
- args: structuredClone(comp.args),
109
- isNoop: comp.isNoop,
110
- defaultParamValues: structuredClone(comp.defaultParamValues),
111
- code: comp.code,
112
- jitDependencies: comp.jitDependencies ? [...comp.jitDependencies] : void 0,
113
- pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : void 0,
114
- ...comp.paramNames ? { paramNames: [...comp.paramNames] } : {}
115
- };
102
+ return {
103
+ typeName: comp.typeName,
104
+ fnID: comp.fnID,
105
+ familyTag: comp.familyTag,
106
+ rtFnHash: comp.rtFnHash,
107
+ args: { ...comp.args },
108
+ isNoop: comp.isNoop,
109
+ defaultParamValues: { ...comp.defaultParamValues },
110
+ code: comp.code,
111
+ rtDependencies: comp.rtDependencies ? [...comp.rtDependencies] : void 0,
112
+ pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : void 0,
113
+ alwaysThrowMessage: comp.alwaysThrowMessage
114
+ };
116
115
  }
117
- export {
118
- getPublicApi,
119
- getSerializableMethod,
120
- resetRemoteMethodsMetadata,
121
- serializeJitFn,
122
- serializeMethodDeps,
123
- serializePureDeps
124
- };
125
- //# sourceMappingURL=remoteMethods.js.map
116
+ //#endregion
117
+ export { getPublicApi, getSerializableMethod, resetRemoteMethodsMetadata, serializeJitFn, serializeMethodDeps, serializePureDeps };
118
+
119
+ //# sourceMappingURL=remoteMethods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remoteMethods.js","sources":["../../../../src/lib/remoteMethods.ts"],"sourcesContent":["/* ########\n * 2023 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {type RouterEntry, type Routes} from '../types/general.ts';\nimport {type RemoteMethod} from '../types/remoteMethods.ts';\nimport type {PublicApi} from '../types/publicMethods.ts';\nimport type {\n AnyObject,\n JitCompiledFn,\n JitCompiledFnData,\n PureFunctionData,\n MethodWithOptions,\n PureFnsDataCache,\n} from '@mionjs/core';\nimport {isRoute, isHeadersMiddleFnDef, isMiddleFnDef} from '../types/guards.ts';\nimport {getMiddleFnExecutable, getRouteExecutable, isPrivateDefinition} from '../router.ts';\nimport {getRouterItemId, MAX_STACK_DEPTH, getJitFnHashes, getJitUtils, EMPTY_HASH} from '@mionjs/core';\n\n// ############# PRIVATE STATE #############\nconst publicMethods: Map<string, MethodWithOptions> = new Map();\n\n// ############# PUBLIC METHODS #############\nexport function resetRemoteMethodsMetadata() {\n publicMethods.clear();\n}\n\n/**\n * Returns a data structure containing all public information and types of the routes.\n * This data and types can be used to generate router clients, etc...\n */\nexport function getPublicApi<R extends Routes>(routes: R): PublicApi<R> {\n return recursiveGetSerializableRoutes(routes) as PublicApi<R>;\n}\n\n// ############# PRIVATE METHODS #############\n\nfunction recursiveGetSerializableRoutes<R extends Routes>(\n routes: R,\n currentPointer: string[] = [],\n publicData: AnyObject = {}\n): AnyObject {\n const entries = Object.entries(routes);\n entries.forEach(([key, item]: [string, RouterEntry]) => {\n const itemPointer = [...currentPointer, key];\n const id = getRouterItemId(itemPointer);\n\n if (isPrivateDefinition(item, id)) {\n publicData[key] = null; // middleFns that don't receive or return data are not public\n } else if (isMiddleFnDef(item) || isHeadersMiddleFnDef(item) || isRoute(item)) {\n const executable = getMiddleFnExecutable(id) || getRouteExecutable(id);\n if (!executable)\n throw new Error(`Route or MiddleFn ${id} not found. Please check you have called router.registerRoutes first.`);\n publicData[key] = getSerializableMethod(executable as RemoteMethod);\n } else {\n const subRoutes: Routes = routes[key] as Routes;\n publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);\n }\n });\n\n return publicData;\n}\n\nexport function getSerializableMethod(executable: RemoteMethod): MethodWithOptions {\n const existing = publicMethods.get(executable.id);\n if (existing) return existing as MethodWithOptions;\n\n const newRemoteMethod: MethodWithOptions = {\n type: executable.type,\n id: executable.id,\n nestLevel: executable.nestLevel,\n isAsync: executable.isAsync,\n hasReturnData: executable.hasReturnData,\n paramsJitHash: executable.paramsJitHash,\n returnJitHash: executable.returnJitHash,\n pointer: executable.pointer,\n ...(executable.paramNames ? {paramNames: executable.paramNames} : {}),\n options: executable.options,\n };\n if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;\n if (executable.middleFnIds) newRemoteMethod.middleFnIds = executable.middleFnIds;\n publicMethods.set(executable.id, newRemoteMethod);\n return newRemoteMethod as MethodWithOptions;\n}\n\n/** Serializes pure function dependencies into a namespaced cache structure.\n * @param namespacedDepHash - Pure function dependency in format \"namespace::fnHash\"\n * @param purFnDeps - Namespaced cache to store serialized pure functions\n * @param depth - Current recursion depth for stack overflow protection\n */\nexport function serializePureDeps(namespacedDepHash: string, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH)\n throw new Error(`Max depth reached serializing pure function dependencies, for: ${namespacedDepHash}`);\n // Parse \"namespace::fnHash\" format\n const parts = namespacedDepHash.split('::');\n if (parts.length !== 2)\n throw new Error(`Invalid pure function dependency format: ${namespacedDepHash}, expected \"namespace::fnHash\"`);\n const [namespace, fnHash] = parts;\n // Ensure namespace exists in the cache\n if (!purFnDeps[namespace]) purFnDeps[namespace] = {};\n // Check if already serialized (prevent infinite recursion on circular dependencies)\n if (purFnDeps[namespace][fnHash]) return;\n const pureDep = getJitUtils().getCompiledPureFn(namespace, fnHash);\n if (!pureDep) throw new Error(`Pure function ${fnHash} not found in namespace ${namespace}`);\n const serializedPureDep: PureFunctionData = {\n ...pureDep,\n pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : undefined,\n };\n purFnDeps[namespace][fnHash] = serializedPureDep;\n // Dependencies within the same namespace are stored as just fnHash, not namespaced\n pureDep.pureFnDependencies?.forEach((depFnHash) => serializePureDeps(`${namespace}::${depFnHash}`, purFnDeps, depth + 1));\n}\n\nexport function serializeJitFn(\n jitFnHash: string,\n deps: Record<string, JitCompiledFnData>,\n purFnDeps: PureFnsDataCache,\n depth = 0\n) {\n if (depth >= MAX_STACK_DEPTH)\n throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${jitFnHash}`);\n const jitFn = getJitUtils().getJIT(jitFnHash);\n if (!jitFn) throw new Error(`Jit function ${jitFnHash} not found`);\n if (deps[jitFnHash]) return; // already serialized and prevent infinite recursion on circular dependencies\n const serializedJitFn = getSerializableJitCompiler(jitFn);\n deps[jitFnHash] = serializedJitFn;\n jitFn.jitDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));\n jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));\n}\n\nexport function serializeMethodDeps(\n method: MethodWithOptions,\n deps: Record<string, JitCompiledFnData>,\n purFnDeps: PureFnsDataCache\n) {\n const {paramsJitHash, returnJitHash} = method;\n // Skip serialization for empty hashes (no params or void return)\n // Always request binary hashes so they are included when available (e.g. middleware in binary routes).\n // serializeJitFn is only called when the JIT function exists in the store, so non-binary methods are unaffected.\n if (paramsJitHash !== EMPTY_HASH) {\n const paramsJitHashes = getJitFnHashes(paramsJitHash, true);\n for (const k in paramsJitHashes) {\n if (getJitUtils().getJIT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);\n }\n }\n if (returnJitHash !== EMPTY_HASH) {\n const returnJitHashes = getJitFnHashes(returnJitHash, true);\n let foundAny = false;\n for (const k in returnJitHashes) {\n if (getJitUtils().getJIT(returnJitHashes[k])) {\n serializeJitFn(returnJitHashes[k], deps, purFnDeps);\n foundAny = true;\n }\n }\n if (!foundAny) {\n throw new Error(\n `Method \"${method.id}\" declares returnJitHash=\"${returnJitHash}\" but no JIT functions are registered under that hash. ` +\n `This usually means a Promise/Function return type was not unwrapped before computing the hash.`\n );\n }\n }\n}\n\nfunction getSerializableJitCompiler(comp: JitCompiledFn): JitCompiledFnData {\n return {\n typeName: comp.typeName,\n fnID: comp.fnID,\n jitFnHash: comp.jitFnHash,\n args: structuredClone(comp.args),\n isNoop: comp.isNoop,\n defaultParamValues: structuredClone(comp.defaultParamValues),\n code: comp.code,\n jitDependencies: comp.jitDependencies ? [...comp.jitDependencies] : undefined,\n pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : undefined,\n ...(comp.paramNames ? {paramNames: [...comp.paramNames]} : {}),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remoteMethods.js","names":[],"sources":["../../../../src/lib/remoteMethods.ts"],"sourcesContent":["/* ########\n * 2023 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {type RouterEntry, type Routes} from '../types/general.ts';\nimport {type RemoteMethod} from '../types/remoteMethods.ts';\nimport type {PublicApi} from '../types/publicMethods.ts';\nimport type {AnyObject, CompiledTypeFn, CompiledFnData, MethodWithOptions, PureFnsDataCache} from '@mionjs/core';\nimport {isRoute, isHeadersMiddlewareDef, isMiddlewareDef} from '../types/guards.ts';\nimport {getMiddlewareExecutable, getRouteExecutable, isPrivateDefinition, getPlatformMaxBodySize} from '../router.ts';\nimport {\n getRouterItemId,\n MAX_STACK_DEPTH,\n getJitFnHashes,\n DEFAULT_PARSER,\n resolveCompiledPureFn,\n EMPTY_HASH,\n getOrCreateGlobal,\n HandlerType,\n} from '@mionjs/core';\nimport {getRTUtils, RUN_TYPES_PURE_FN_ID_PREFIX} from '@mionjs/run-types/runtime';\n\n// ############# PRIVATE STATE #############\nconst publicMethods = getOrCreateGlobal('mion.remoteMethods.publicMethods', () => new Map<string, MethodWithOptions>());\n\n// ############# PUBLIC METHODS #############\nexport function resetRemoteMethodsMetadata() {\n publicMethods.clear();\n}\n\n/** All the public information and types of the routes, what a router client is generated from. */\nexport function getPublicApi<R extends Routes>(routes: R): PublicApi<R> {\n return recursiveGetSerializableRoutes(routes) as PublicApi<R>;\n}\n\n// ############# PRIVATE METHODS #############\n\nfunction recursiveGetSerializableRoutes<R extends Routes>(\n routes: R,\n currentPointer: string[] = [],\n publicData: AnyObject = {}\n): AnyObject {\n const entries = Object.entries(routes);\n entries.forEach(([key, item]: [string, RouterEntry]) => {\n const itemPointer = [...currentPointer, key];\n const id = getRouterItemId(itemPointer);\n\n if (isPrivateDefinition(item, id)) {\n publicData[key] = null; // middlewares that don't receive or return data are not public\n } else if (isMiddlewareDef(item) || isHeadersMiddlewareDef(item) || isRoute(item)) {\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable)\n throw new Error(`Route or Middleware ${id} not found. Please check you have called mion.initRoutes first.`);\n publicData[key] = getSerializableMethod(executable as RemoteMethod);\n } else {\n const subRoutes: Routes = routes[key] as Routes;\n publicData[key] = recursiveGetSerializableRoutes(subRoutes, itemPointer);\n }\n });\n\n return publicData;\n}\n\nexport function getSerializableMethod(executable: RemoteMethod): MethodWithOptions {\n const existing = publicMethods.get(executable.id);\n if (existing) return existing as MethodWithOptions;\n\n const newRemoteMethod: MethodWithOptions = {\n type: executable.type,\n id: executable.id,\n nestLevel: executable.nestLevel,\n isAsync: executable.isAsync,\n hasReturnData: executable.hasReturnData,\n paramsJitHash: executable.paramsJitHash,\n returnJitHash: executable.returnJitHash,\n pointer: executable.pointer,\n paramsCount: executable.paramsCount ?? 0,\n paramNames: executable.paramNames,\n // a route whose types could not say takes the platform's number: filled in here, once, so the\n // client sees the limit the server really applies (the adapter has published it by now)\n options:\n executable.type === HandlerType.route && executable.options.maxBodySize === undefined\n ? {...executable.options, maxBodySize: getPlatformMaxBodySize()}\n : executable.options,\n };\n if (executable.syncId) newRemoteMethod.syncId = executable.syncId;\n if (executable.headersParam) newRemoteMethod.headersParam = executable.headersParam;\n // the client rebuilds a returned HeadersSubset from these names, so they must ride the wire\n if (executable.headersReturn) {\n newRemoteMethod.headersReturn = {\n headerNames: executable.headersReturn.headerNames,\n jitHash: executable.headersReturn.jitHash,\n };\n }\n if (executable.middlewareIds) newRemoteMethod.middlewareIds = executable.middlewareIds;\n publicMethods.set(executable.id, newRemoteMethod);\n return newRemoteMethod as MethodWithOptions;\n}\n\n/** Serializes a pure function and everything it reaches into the wire cache, keyed by id. */\nexport function serializePureDeps(id: string, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH) throw new Error(`Max depth reached serializing pure function dependencies, for: ${id}`);\n // Run-types' own pure fns never ride the wire: their bodies are hollowed in the dist build and served by\n // the compiler, so each is already registered wherever `@mionjs/run-types` is loaded, guaranteed on the\n // client since @mionjs/core value-imports it. addSerializedJitCaches skipped them on restore anyway.\n if (id.startsWith(RUN_TYPES_PURE_FN_ID_PREFIX)) return;\n // prevents infinite recursion on circular dependencies\n if (purFnDeps[id]) return;\n const pureDep = resolveCompiledPureFn(id);\n if (!pureDep) throw new Error(`Pure function ${id} not found`);\n // The client rebuilds a pure fn as `new Function(...paramNames, code)` and nothing else, so an entry with\n // no code is unrecoverable there: fail here instead of shipping a payload that breaks on first use. With\n // built-ins filtered out above, only a fn registered at runtime with no body reaches this: server-only.\n if (!pureDep.code)\n throw new Error(\n `Pure function ${id} has no code payload and cannot be serialized to the client. ` +\n `Runtime-registered pure fns are server-only; the client can rebuild only build-extracted ones.`\n );\n purFnDeps[id] = {\n ...pureDep,\n code: pureDep.code,\n pureFnDependencies: pureDep.pureFnDependencies ? [...pureDep.pureFnDependencies] : undefined,\n };\n pureDep.pureFnDependencies?.forEach((depId) => serializePureDeps(depId, purFnDeps, depth + 1));\n}\n\nexport function serializeJitFn(rtFnHash: string, deps: Record<string, CompiledFnData>, purFnDeps: PureFnsDataCache, depth = 0) {\n if (depth >= MAX_STACK_DEPTH)\n throw new Error(`Max depth reached serializing jit function dependencies for jitHash: ${rtFnHash}`);\n const jitFn = getRTUtils().getRT(rtFnHash);\n if (!jitFn) throw new Error(`Jit function ${rtFnHash} not found`);\n if (deps[rtFnHash]) return; // already serialized and prevent infinite recursion on circular dependencies\n const serializedJitFn = getSerializableJitCompiler(jitFn);\n deps[rtFnHash] = serializedJitFn;\n jitFn.rtDependencies?.forEach((h) => serializeJitFn(h, deps, purFnDeps, depth + 1));\n jitFn.pureFnDependencies?.forEach((h) => serializePureDeps(h, purFnDeps));\n}\n\nexport function serializeMethodDeps(\n method: MethodWithOptions,\n deps: Record<string, CompiledFnData>,\n purFnDeps: PureFnsDataCache\n) {\n const {paramsJitHash, returnJitHash} = method;\n // an empty hash means no params, or a void return\n const utl = getRTUtils();\n const parser = method.options.parser ?? DEFAULT_PARSER;\n if (paramsJitHash !== EMPTY_HASH) {\n const paramsJitHashes = getJitFnHashes(paramsJitHash, parser.params);\n for (const k in paramsJitHashes) {\n if (utl.getRT(paramsJitHashes[k])) serializeJitFn(paramsJitHashes[k], deps, purFnDeps);\n }\n }\n if (returnJitHash !== EMPTY_HASH) {\n const returnJitHashes = getJitFnHashes(returnJitHash, parser.return);\n let foundAny = false;\n for (const k in returnJitHashes) {\n if (utl.getRT(returnJitHashes[k])) {\n serializeJitFn(returnJitHashes[k], deps, purFnDeps);\n foundAny = true;\n }\n }\n if (!foundAny) {\n throw new Error(\n `Method \"${method.id}\" declares returnJitHash=\"${returnJitHash}\" but no JIT functions are registered under that hash. ` +\n `This usually means a Promise/Function return type was not unwrapped before computing the hash.`\n );\n }\n }\n}\n\nfunction getSerializableJitCompiler(comp: CompiledTypeFn): CompiledFnData {\n return {\n typeName: comp.typeName,\n fnID: comp.fnID,\n // the exact emitting family — upstream's findRTForType gates on it, and unlike fnID it is\n // not composited, so the client cannot recover it from anything else on the wire\n familyTag: comp.familyTag,\n rtFnHash: comp.rtFnHash,\n args: {...comp.args},\n isNoop: comp.isNoop,\n defaultParamValues: {...comp.defaultParamValues},\n code: comp.code,\n rtDependencies: comp.rtDependencies ? [...comp.rtDependencies] : undefined,\n pureFnDependencies: comp.pureFnDependencies ? [...comp.pureFnDependencies] : undefined,\n // an alwaysThrow entry has no code, only this message; without it the client cannot rebuild\n // the throwing factory and surfaces a bare TypeError instead of the build-time diagnostic\n alwaysThrowMessage: comp.alwaysThrowMessage,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function findMionQueryParam(urlQuery: string | undefined, name: string): string | undefined;
2
+ //# sourceMappingURL=urlQuery.d.ts.map
@@ -0,0 +1,23 @@
1
+ //#region src/lib/urlQuery.ts
2
+ /** The ONE reader of the url query string, `id=` for a batch and `data=` for a query body, so there is
3
+ * one set of rules for how a query splits. Router-internal: nothing outside this package reads it.
4
+ * Values come back RAW, no percent-decoding and no `+` turned into a space; a caller needing a decoded
5
+ * value calls `decodeURIComponent` itself, which lets the batch id decode while a query body must not. */
6
+ function findMionQueryParam(urlQuery, name) {
7
+ if (!urlQuery || !name) return void 0;
8
+ const queryLength = urlQuery.length;
9
+ const nameLength = name.length;
10
+ let start = 0;
11
+ while (start < queryLength) {
12
+ let end = urlQuery.indexOf("&", start);
13
+ if (end === -1) end = queryLength;
14
+ let nameEnd = urlQuery.indexOf("=", start);
15
+ if (nameEnd === -1 || nameEnd > end) nameEnd = end;
16
+ if (nameEnd - start === nameLength && urlQuery.startsWith(name, start)) return nameEnd === end ? "" : urlQuery.slice(nameEnd + 1, end);
17
+ start = end + 1;
18
+ }
19
+ }
20
+ //#endregion
21
+ export { findMionQueryParam };
22
+
23
+ //# sourceMappingURL=urlQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlQuery.js","names":[],"sources":["../../../../src/lib/urlQuery.ts"],"sourcesContent":["/* ########\n * 2026 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\n/** The ONE reader of the url query string, `id=` for a batch and `data=` for a query body, so there is\n * one set of rules for how a query splits. Router-internal: nothing outside this package reads it.\n * Values come back RAW, no percent-decoding and no `+` turned into a space; a caller needing a decoded\n * value calls `decodeURIComponent` itself, which lets the batch id decode while a query body must not. */\nexport function findMionQueryParam(urlQuery: string | undefined, name: string): string | undefined {\n // an empty name is not a parameter: without this, a hostile `?=x` would answer a lookup for ''\n if (!urlQuery || !name) return undefined;\n const queryLength = urlQuery.length;\n const nameLength = name.length;\n let start = 0;\n while (start < queryLength) {\n let end = urlQuery.indexOf('&', start);\n if (end === -1) end = queryLength;\n // the name runs to the first `=` of this parameter, or to its end when it carries no value\n let nameEnd = urlQuery.indexOf('=', start);\n if (nameEnd === -1 || nameEnd > end) nameEnd = end;\n // compare the length first, so a name that merely starts with the wanted one is not a match\n if (nameEnd - start === nameLength && urlQuery.startsWith(name, start)) {\n // `?flag` and `?flag=` both read as present with an empty value\n return nameEnd === end ? '' : urlQuery.slice(nameEnd + 1, end);\n }\n start = end + 1;\n }\n return undefined;\n}\n"],"mappings":";;;;;AAWA,SAAgB,mBAAmB,UAA8B,MAAkC;CAEjG,IAAI,CAAC,YAAY,CAAC,MAAM,OAAO,KAAA;CAC/B,MAAM,cAAc,SAAS;CAC7B,MAAM,aAAa,KAAK;CACxB,IAAI,QAAQ;CACZ,OAAO,QAAQ,aAAa;EAC1B,IAAI,MAAM,SAAS,QAAQ,KAAK,KAAK;EACrC,IAAI,QAAQ,IAAI,MAAM;EAEtB,IAAI,UAAU,SAAS,QAAQ,KAAK,KAAK;EACzC,IAAI,YAAY,MAAM,UAAU,KAAK,UAAU;EAE/C,IAAI,UAAU,UAAU,cAAc,SAAS,WAAW,MAAM,KAAK,GAEnE,OAAO,YAAY,MAAM,KAAK,SAAS,MAAM,UAAU,GAAG,GAAG;EAE/D,QAAQ,MAAM;CAChB;AAEF"}
@@ -0,0 +1,15 @@
1
+ import { SerializableMethodsData } from '@mionjs/core';
2
+ import { FetchMetadataHandler, FetchMetadataMode } from '@mionjs/core/middlewares';
3
+ import { CallContext } from '../types/context.ts';
4
+ declare function fetchMetadata(ctx: CallContext, methodsIds?: string[], mode?: FetchMetadataMode): ReturnType<FetchMetadataHandler>;
5
+ export declare function getMethodsDataFor(ids: string[]): SerializableMethodsData;
6
+ export declare const mionFetchMetadata: import('../types/definitions.ts').MiddlewareDef<typeof fetchMetadata, {
7
+ readonly alwaysRun: true;
8
+ readonly parser: {
9
+ readonly params: "clone";
10
+ readonly return: "clone";
11
+ };
12
+ readonly maxBodySize: 4096;
13
+ }, Partial<import('../types/general.ts').RouterOptions<any, any>>>;
14
+ export {};
15
+ //# sourceMappingURL=fetchMetadata.d.ts.map
@@ -0,0 +1,97 @@
1
+ import { isPublicExecutable } from "../types/guards.js";
2
+ import { getBatchIds } from "../batches.js";
3
+ import { markOnDemand, middleware, mionInternalRouteIds } from "../lib/handlers.js";
4
+ import { getSerializableMethod, serializeMethodDeps } from "../lib/remoteMethods.js";
5
+ import { getAllExecutablesIds, getAnyExecutable, getBuildVersion, getMiddlewareExecutable, getRouteExecutable, getRouterOptions, getTotalExecutables } from "../router.js";
6
+ import { __rt_A0Qb_E1CjDEA } from "../../.mion/types/A0Qb_E1CjDEA.js";
7
+ import { __rt_A0Qb_fMIJ1JT } from "../../.mion/types/A0Qb_fMIJ1JT.js";
8
+ import { __rt_Ky89_E1CjDEA } from "../../.mion/types/Ky89_E1CjDEA.js";
9
+ import { __rt_Ky89_fMIJ1JT } from "../../.mion/types/Ky89_fMIJ1JT.js";
10
+ import { __rt_Xhuv_E1CjDEA } from "../../.mion/types/Xhuv_E1CjDEA.js";
11
+ import { __rt_OBOg_E1CjDEA } from "../../.mion/types/OBOg_E1CjDEA.js";
12
+ import { __rt_OBOg_fMIJ1JT } from "../../.mion/types/OBOg_fMIJ1JT.js";
13
+ import { __rt_Xhuv_fMIJ1JT } from "../../.mion/types/Xhuv_fMIJ1JT.js";
14
+ import { __rt_mzca_fMIJ1JT } from "../../.mion/types/mzca_fMIJ1JT.js";
15
+ import { __rt_E1CjDEA, __rt_HmqctzF, __rt_fMIJ1JT, __rt_w6KmCD1 } from "../../.mion/types/rt/eF4wQzU6Fd.js";
16
+ import { BUILD_VERSION_HEADER, FatalError, RpcError, StatusCodes } from "@mionjs/core";
17
+ //#region src/middlewares/fetchMetadata.ts
18
+ /** Rows alongside the call; with a mode, rows alone and the call stopped before its route runs. */
19
+ function fetchMetadata(ctx, methodsIds, mode) {
20
+ if (mode) return new FatalError({
21
+ type: "metadata-only",
22
+ publicMessage: "Route metadata only: the call was stopped before its route.",
23
+ errorData: rowsFor(methodsIds ?? [], mode === "all"),
24
+ statusCode: StatusCodes.OK
25
+ });
26
+ if (!methodsIds || methodsIds.length === 0) return;
27
+ const { metadata, notFound } = rowsFor(methodsIds, false);
28
+ if (notFound) return new RpcError({
29
+ type: "rpc-metadata-not-found",
30
+ publicMessage: "Errors getting Remote Methods Metadata",
31
+ errorData: notFound
32
+ });
33
+ return metadata;
34
+ }
35
+ /** With `all`, every public method instead of the given ids, plus the batch ids. */
36
+ function rowsFor(methodsIds, all) {
37
+ const metadata = {
38
+ methods: {},
39
+ deps: {},
40
+ purFnDeps: {}
41
+ };
42
+ const notFound = {};
43
+ const shouldReturnAll = all && getTotalExecutables() <= getRouterOptions().getAllRemoteMethodsMaxNumber;
44
+ (shouldReturnAll ? getAllExecutablesIds().filter((id) => !mionInternalRouteIds.has(id) && isPublicExecutable(getAnyExecutable(id))) : methodsIds).forEach((id) => addRequiredRemoteMethodsToResponse(id, metadata, notFound));
45
+ if (shouldReturnAll) metadata.batches = getBatchIds();
46
+ const answer = { metadata };
47
+ if (Object.keys(notFound).length) answer.notFound = notFound;
48
+ if (all && !shouldReturnAll) answer.truncated = true;
49
+ return answer;
50
+ }
51
+ /** The rows of the given methods and of their chains; an unknown id is left out. */
52
+ function getMethodsDataFor(ids) {
53
+ return rowsFor(ids, false).metadata;
54
+ }
55
+ function addRequiredRemoteMethodsToResponse(id, resp, errorData) {
56
+ const { methods, deps, purFnDeps } = resp;
57
+ if (methods[id]) return;
58
+ if (mionInternalRouteIds.has(id)) return;
59
+ const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);
60
+ if (!executable) {
61
+ errorData[id] = `Remote Method ${id} not found`;
62
+ return;
63
+ }
64
+ if (!isPublicExecutable(executable)) return;
65
+ const method = getSerializableMethod(executable);
66
+ methods[id] = method;
67
+ method.middlewareIds?.forEach((middlewareId) => addRequiredRemoteMethodsToResponse(middlewareId, resp, errorData));
68
+ serializeMethodDeps(method, deps, purFnDeps);
69
+ }
70
+ /** Sent on every call so a stale client can recover; set, not returned, so the middleware's answer stays the rows. */
71
+ function setBuildVersionHeader(ctx) {
72
+ const version = getBuildVersion();
73
+ if (version) ctx.response.headers.set(BUILD_VERSION_HEADER, version);
74
+ }
75
+ var mionFetchMetadata = markOnDemand(middleware(fetchMetadata, {
76
+ alwaysRun: true,
77
+ parser: {
78
+ params: "clone",
79
+ return: "clone"
80
+ },
81
+ maxBodySize: 4096
82
+ }, [
83
+ __rt_Xhuv_fMIJ1JT,
84
+ __rt_OBOg_fMIJ1JT,
85
+ __rt_mzca_fMIJ1JT,
86
+ __rt_A0Qb_fMIJ1JT,
87
+ __rt_Ky89_fMIJ1JT
88
+ ], [
89
+ __rt_Xhuv_E1CjDEA,
90
+ __rt_OBOg_E1CjDEA,
91
+ __rt_A0Qb_E1CjDEA,
92
+ __rt_Ky89_E1CjDEA
93
+ ], __rt_fMIJ1JT, __rt_E1CjDEA, __rt_w6KmCD1, __rt_HmqctzF), setBuildVersionHeader);
94
+ //#endregion
95
+ export { getMethodsDataFor, mionFetchMetadata };
96
+
97
+ //# sourceMappingURL=fetchMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchMetadata.js","names":[],"sources":["../../../../src/middlewares/fetchMetadata.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 {BUILD_VERSION_HEADER, FatalError, RpcError, SerializableMethodsData, StatusCodes} from '@mionjs/core';\nimport type {FetchMetadataHandler, FetchMetadataMode, FetchMetadataOnlyData} from '@mionjs/core/middlewares';\nimport {\n getMiddlewareExecutable,\n getRouteExecutable,\n getRouterOptions,\n getTotalExecutables,\n getAllExecutablesIds,\n getAnyExecutable,\n getBuildVersion,\n} from '../router.ts';\nimport {markOnDemand, middleware, mionInternalRouteIds} from '../lib/handlers.ts';\nimport {isPublicExecutable} from '../types/guards.ts';\nimport {getBatchIds} from '../batches.ts';\nimport {getSerializableMethod, serializeMethodDeps} from '../lib/remoteMethods.ts';\nimport {RemoteMethod} from '../types/remoteMethods.ts';\nimport {CallContext} from '../types/context.ts';\n\n/** Rows alongside the call; with a mode, rows alone and the call stopped before its route runs. */\nfunction fetchMetadata(ctx: CallContext, methodsIds?: string[], mode?: FetchMetadataMode): ReturnType<FetchMetadataHandler> {\n if (mode) {\n return new FatalError<'metadata-only', FetchMetadataOnlyData>({\n type: 'metadata-only',\n publicMessage: 'Route metadata only: the call was stopped before its route.',\n errorData: rowsFor(methodsIds ?? [], mode === 'all'),\n // an answer, not a failure: access logs and monitoring count it as a success\n statusCode: StatusCodes.OK,\n });\n }\n if (!methodsIds || methodsIds.length === 0) return;\n const {metadata, notFound} = rowsFor(methodsIds, false);\n if (notFound)\n return new RpcError({\n type: 'rpc-metadata-not-found',\n publicMessage: 'Errors getting Remote Methods Metadata',\n errorData: notFound,\n });\n return metadata;\n}\n\n/** With `all`, every public method instead of the given ids, plus the batch ids. */\nfunction rowsFor(methodsIds: string[], all: boolean): FetchMetadataOnlyData {\n const metadata: SerializableMethodsData = {methods: {}, deps: {}, purFnDeps: {}};\n const notFound: Record<string, string> = {};\n const shouldReturnAll = all && getTotalExecutables() <= getRouterOptions().getAllRemoteMethodsMaxNumber;\n const idsToReturn = shouldReturnAll\n ? getAllExecutablesIds().filter(\n (id) => !mionInternalRouteIds.has(id) && isPublicExecutable(getAnyExecutable(id) as RemoteMethod)\n )\n : methodsIds;\n idsToReturn.forEach((id) => addRequiredRemoteMethodsToResponse(id, metadata, notFound));\n // A hand-written client can only send ids the build compiled in, so list them alongside the methods\n if (shouldReturnAll) metadata.batches = getBatchIds();\n const answer: FetchMetadataOnlyData = {metadata};\n if (Object.keys(notFound).length) answer.notFound = notFound;\n if (all && !shouldReturnAll) answer.truncated = true;\n return answer;\n}\n\n/** The rows of the given methods and of their chains; an unknown id is left out. */\nexport function getMethodsDataFor(ids: string[]): SerializableMethodsData {\n return rowsFor(ids, false).metadata;\n}\n\nfunction addRequiredRemoteMethodsToResponse(id: string, resp: SerializableMethodsData, errorData: Record<string, string>): void {\n const {methods, deps, purFnDeps} = resp;\n if (methods[id]) return;\n if (mionInternalRouteIds.has(id)) return;\n const executable = getMiddlewareExecutable(id) || getRouteExecutable(id);\n if (!executable) {\n errorData[id] = `Remote Method ${id} not found`;\n return;\n }\n if (!isPublicExecutable(executable)) return;\n const method = getSerializableMethod(executable as RemoteMethod);\n methods[id] = method;\n method.middlewareIds?.forEach((middlewareId) => addRequiredRemoteMethodsToResponse(middlewareId, resp, errorData));\n serializeMethodDeps(method, deps, purFnDeps);\n}\n\n/** Sent on every call so a stale client can recover; set, not returned, so the middleware's answer stays the rows. */\nfunction setBuildVersionHeader(ctx: CallContext): void {\n const version = getBuildVersion();\n if (version) ctx.response.headers.set(BUILD_VERSION_HEADER, version);\n}\n\n// Place it at the root, before any route: its `only` and `all` modes must stop the chain before the route.\n// Pins the built-in parser: a client asks before it knows any strategy.\n// In every chain with an unbounded `string[]`, so maxBodySize is a fixed share of each limit: room for a first call's ids.\nexport const mionFetchMetadata = markOnDemand(\n middleware(fetchMetadata satisfies FetchMetadataHandler, {\n alwaysRun: true,\n parser: {params: 'clone', return: 'clone'},\n maxBodySize: 4096,\n }),\n setBuildVersionHeader\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AA0BA,SAAS,cAAc,KAAkB,YAAuB,MAA4D;CAC1H,IAAI,MACF,OAAO,IAAI,WAAmD;EAC5D,MAAM;EACN,eAAe;EACf,WAAW,QAAQ,cAAc,CAAC,GAAG,SAAS,KAAK;EAEnD,YAAY,YAAY;CAC1B,CAAC;CAEH,IAAI,CAAC,cAAc,WAAW,WAAW,GAAG;CAC5C,MAAM,EAAC,UAAU,aAAY,QAAQ,YAAY,KAAK;CACtD,IAAI,UACF,OAAO,IAAI,SAAS;EAClB,MAAM;EACN,eAAe;EACf,WAAW;CACb,CAAC;CACH,OAAO;AACT;;AAGA,SAAS,QAAQ,YAAsB,KAAqC;CAC1E,MAAM,WAAoC;EAAC,SAAS,CAAC;EAAG,MAAM,CAAC;EAAG,WAAW,CAAC;CAAC;CAC/E,MAAM,WAAmC,CAAC;CAC1C,MAAM,kBAAkB,OAAO,oBAAoB,KAAK,iBAAiB,EAAE;CAM3E,CALoB,kBAChB,qBAAqB,EAAE,QACpB,OAAO,CAAC,qBAAqB,IAAI,EAAE,KAAK,mBAAmB,iBAAiB,EAAE,CAAiB,CAClG,IACA,YACQ,SAAS,OAAO,mCAAmC,IAAI,UAAU,QAAQ,CAAC;CAEtF,IAAI,iBAAiB,SAAS,UAAU,YAAY;CACpD,MAAM,SAAgC,EAAC,SAAQ;CAC/C,IAAI,OAAO,KAAK,QAAQ,EAAE,QAAQ,OAAO,WAAW;CACpD,IAAI,OAAO,CAAC,iBAAiB,OAAO,YAAY;CAChD,OAAO;AACT;;AAGA,SAAgB,kBAAkB,KAAwC;CACxE,OAAO,QAAQ,KAAK,KAAK,EAAE;AAC7B;AAEA,SAAS,mCAAmC,IAAY,MAA+B,WAAyC;CAC9H,MAAM,EAAC,SAAS,MAAM,cAAa;CACnC,IAAI,QAAQ,KAAK;CACjB,IAAI,qBAAqB,IAAI,EAAE,GAAG;CAClC,MAAM,aAAa,wBAAwB,EAAE,KAAK,mBAAmB,EAAE;CACvE,IAAI,CAAC,YAAY;EACf,UAAU,MAAM,iBAAiB,GAAG;EACpC;CACF;CACA,IAAI,CAAC,mBAAmB,UAAU,GAAG;CACrC,MAAM,SAAS,sBAAsB,UAA0B;CAC/D,QAAQ,MAAM;CACd,OAAO,eAAe,SAAS,iBAAiB,mCAAmC,cAAc,MAAM,SAAS,CAAC;CACjH,oBAAoB,QAAQ,MAAM,SAAS;AAC7C;;AAGA,SAAS,sBAAsB,KAAwB;CACrD,MAAM,UAAU,gBAAgB;CAChC,IAAI,SAAS,IAAI,SAAS,QAAQ,IAAI,sBAAsB,OAAO;AACrE;AAKA,IAAa,oBAAoB,aAC/B,WAAW,eAA8C;CACvD,WAAW;CACX,QAAQ;EAAC,QAAQ;EAAS,QAAQ;CAAO;CACzC,aAAa;AACf,GAAA;CAAA;CAAA;CAAA;CAAA;CAAA;AAAA,GAAA;CAAA;CAAA;CAAA;CAAA;AAAA,GAAA,cAAA,cAAA,cAAA,YAAC,GACD,qBACF"}
@@ -0,0 +1,12 @@
1
+ import { RouteSyncError } from '@mionjs/core/middlewares';
2
+ import { CallContext } from '../types/context.ts';
3
+ declare function syncRoutes(ctx: CallContext, routeSyncIds?: string[]): RouteSyncError | void;
4
+ export declare const mionSyncRoutes: import('../types/definitions.ts').MiddlewareDef<typeof syncRoutes, {
5
+ readonly parser: {
6
+ readonly params: "clone";
7
+ readonly return: "clone";
8
+ };
9
+ readonly maxBodySize: 1024;
10
+ }, Partial<import('../types/general.ts').RouterOptions<any, any>>>;
11
+ export {};
12
+ //# sourceMappingURL=syncRoutes.d.ts.map