@farm.js/core 0.1.49 → 0.1.51-beta.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 (363) hide show
  1. package/README.md +163 -3
  2. package/dist/{agent-mcp-Bb8hnnqd.d.ts → agent-mcp-BBMfNpsC.d.ts} +1 -1
  3. package/dist/{agent-mcp-ir3v4fHf.d.mts → agent-mcp-D44ip11f.d.mts} +1 -1
  4. package/dist/agent-runtime.cjs +3 -3
  5. package/dist/agent-runtime.d.mts +6 -6
  6. package/dist/agent-runtime.d.ts +6 -6
  7. package/dist/agent-runtime.mjs +2 -2
  8. package/dist/analyzer-HOUCQR3K.mjs +1066 -0
  9. package/dist/analyzer-VKUDHNDF.cjs +1066 -0
  10. package/dist/api/client.d.mts +0 -1
  11. package/dist/api/client.d.ts +0 -1
  12. package/dist/api/route-manager.cjs +8 -8
  13. package/dist/api/route-manager.d.mts +10 -10
  14. package/dist/api/route-manager.d.ts +10 -10
  15. package/dist/api/route-manager.mjs +7 -7
  16. package/dist/api/runtime.cjs +3 -3
  17. package/dist/api/runtime.d.mts +7 -7
  18. package/dist/api/runtime.d.ts +7 -7
  19. package/dist/api/runtime.mjs +2 -2
  20. package/dist/api.cjs +9 -9
  21. package/dist/api.d.mts +10 -10
  22. package/dist/api.d.ts +10 -10
  23. package/dist/api.mjs +8 -8
  24. package/dist/{app-y649szYm.d.ts → app-CourU3rQ.d.ts} +7 -7
  25. package/dist/{app-DLzz02du.d.mts → app-aeD4s_mg.d.mts} +7 -7
  26. package/dist/{app-manifest-Crn8Qd3U.d.mts → app-manifest-BC6mFn5A.d.mts} +1 -1
  27. package/dist/{app-manifest-DNeTKMRL.d.ts → app-manifest-LzjoNPeq.d.ts} +1 -1
  28. package/dist/app-markdown.d.mts +7 -7
  29. package/dist/app-markdown.d.ts +7 -7
  30. package/dist/base-path-BOUV5ozD.d.mts +10 -0
  31. package/dist/base-path-BOUV5ozD.d.ts +10 -0
  32. package/dist/cache.d.mts +4 -3
  33. package/dist/cache.d.ts +4 -3
  34. package/dist/{chunk-YQGZLCT4.cjs → chunk-2IAPKPEB.cjs} +6 -6
  35. package/dist/chunk-2KVDHNQS.mjs +224 -0
  36. package/dist/{chunk-QFQDRJKJ.mjs → chunk-3HA7PP72.mjs} +2 -2
  37. package/dist/{chunk-6LH33DLL.cjs → chunk-3OWVWZ6R.cjs} +28 -2
  38. package/dist/{chunk-GXSMF7UR.mjs → chunk-4GJJ65RB.mjs} +10 -2
  39. package/dist/{chunk-GERUXONA.cjs → chunk-5A77OEIG.cjs} +4 -1
  40. package/dist/{chunk-4HBKBHVP.mjs → chunk-5ENW27SL.mjs} +1 -1
  41. package/dist/{chunk-MTB57GOK.mjs → chunk-724WT3NI.mjs} +4 -2
  42. package/dist/{chunk-XLYXG73A.mjs → chunk-75WWOZ5C.mjs} +22 -0
  43. package/dist/{chunk-VCKGOXFI.cjs → chunk-76GHW3WI.cjs} +7 -1
  44. package/dist/{chunk-ZIBIE7AH.mjs → chunk-7UPCJDB5.mjs} +7 -1
  45. package/dist/{chunk-4IICUBQX.cjs → chunk-A5BJKSZE.cjs} +2 -2
  46. package/dist/{chunk-UYQOIPXE.mjs → chunk-AER5I65K.mjs} +1 -1
  47. package/dist/{chunk-WB6XES4V.mjs → chunk-ALEUMLJN.mjs} +34 -5
  48. package/dist/{chunk-Z4LTSH7D.mjs → chunk-AMRK3P6W.mjs} +175 -71
  49. package/dist/{chunk-TTYXOAB7.mjs → chunk-ANHZ6SUL.mjs} +1 -1
  50. package/dist/{chunk-ZBS3GOQZ.cjs → chunk-AQLHD6HZ.cjs} +35 -61
  51. package/dist/{chunk-L6QDME5Z.cjs → chunk-B3GZAQSC.cjs} +3 -3
  52. package/dist/chunk-CKPTIEDX.cjs +12 -0
  53. package/dist/{chunk-JPAVNDZH.cjs → chunk-CY7H5KS4.cjs} +25 -25
  54. package/dist/{chunk-4S7M63WX.cjs → chunk-DGOLAZLV.cjs} +22 -1
  55. package/dist/{chunk-4HM5B5RR.cjs → chunk-DWW3AMJX.cjs} +343 -308
  56. package/dist/{chunk-EQMTJBB7.cjs → chunk-DZZHTMWM.cjs} +35 -6
  57. package/dist/chunk-E36C43IX.cjs +224 -0
  58. package/dist/{chunk-J2ZEVDEK.cjs → chunk-EHB77D5U.cjs} +3 -3
  59. package/dist/{chunk-WQGRD5BJ.cjs → chunk-EX6ZSN5P.cjs} +1 -16
  60. package/dist/{chunk-C5S457CK.cjs → chunk-F42U3R4F.cjs} +214 -193
  61. package/dist/{chunk-FGJQS4EC.cjs → chunk-FK25QSVC.cjs} +4 -3
  62. package/dist/{chunk-JOHXK4BB.mjs → chunk-FSQMN2MQ.mjs} +2 -1
  63. package/dist/{chunk-2H3FJYY6.mjs → chunk-FSXSQQTV.mjs} +3 -2
  64. package/dist/chunk-G2KTRMWA.mjs +40 -0
  65. package/dist/{chunk-C6U66WWF.mjs → chunk-GFT5AHAT.mjs} +13 -0
  66. package/dist/chunk-GNZIAJGB.mjs +358 -0
  67. package/dist/{chunk-TXK4D46O.mjs → chunk-H3ASZDT7.mjs} +21 -1
  68. package/dist/{chunk-AXRNEVCS.cjs → chunk-HASX6DC7.cjs} +8 -8
  69. package/dist/{chunk-NW2BKDVT.mjs → chunk-HHFMECFO.mjs} +1 -1
  70. package/dist/{chunk-HELQXYVI.cjs → chunk-I2DQGS56.cjs} +11 -9
  71. package/dist/{chunk-IVHPRF4W.mjs → chunk-I2ZA5SXS.mjs} +81 -46
  72. package/dist/{chunk-EVCQX243.cjs → chunk-IOUOGRDX.cjs} +13 -5
  73. package/dist/{chunk-CBJKDB6F.mjs → chunk-IRSS4HS4.mjs} +1 -1
  74. package/dist/{chunk-NPPT4RWF.cjs → chunk-J22JD5YJ.cjs} +7 -7
  75. package/dist/{chunk-VJXLUTBM.mjs → chunk-JF5CNHHF.mjs} +9 -9
  76. package/dist/{chunk-VR4SEDEM.mjs → chunk-JWI5PUO2.mjs} +6 -2
  77. package/dist/{chunk-6XFGJBYX.cjs → chunk-JYNNIGQO.cjs} +16 -7
  78. package/dist/{chunk-EXHEPWFJ.cjs → chunk-KHXAJ2KA.cjs} +16 -16
  79. package/dist/{chunk-ALD2WMLA.mjs → chunk-KY32FWK7.mjs} +4 -4
  80. package/dist/{chunk-BR5FSKZ5.cjs → chunk-LEIXUFJN.cjs} +6 -2
  81. package/dist/{chunk-5566GNEG.cjs → chunk-LIFUPCXW.cjs} +13 -0
  82. package/dist/{chunk-I2SWKWO7.mjs → chunk-LJDIFIJ2.mjs} +1 -1
  83. package/dist/chunk-LMFJCXDD.mjs +55 -0
  84. package/dist/{chunk-IXSMFKZ2.cjs → chunk-LNM57D3H.cjs} +4 -4
  85. package/dist/{chunk-ATHPRVP2.mjs → chunk-LZ4SB57H.mjs} +3 -3
  86. package/dist/{chunk-73XBJRZW.cjs → chunk-MMEEXMUQ.cjs} +2 -2
  87. package/dist/chunk-N4AQNEXR.cjs +17 -0
  88. package/dist/{chunk-JZMZKABS.cjs → chunk-NWUHS6GV.cjs} +3 -2
  89. package/dist/{chunk-KZT2VHRQ.cjs → chunk-O3MMJPC2.cjs} +19 -19
  90. package/dist/{chunk-JWP56HCP.mjs → chunk-OD6WM3I7.mjs} +2 -2
  91. package/dist/{chunk-R2SEZEBC.cjs → chunk-OYNNA4DD.cjs} +4 -4
  92. package/dist/{chunk-GBPDSUFE.mjs → chunk-OZK2DS44.mjs} +1 -1
  93. package/dist/{chunk-A7DK663W.cjs → chunk-PDJSL7PL.cjs} +50 -39
  94. package/dist/{chunk-XLLVWLWO.mjs → chunk-PIHKO25G.mjs} +1 -1
  95. package/dist/chunk-PIUTGRDI.cjs +358 -0
  96. package/dist/{chunk-XO6WL6NL.mjs → chunk-PPDHCRTC.mjs} +1 -1
  97. package/dist/{chunk-LZBM35DH.mjs → chunk-QI5AQMEE.mjs} +20 -9
  98. package/dist/{chunk-FR4HJDI6.cjs → chunk-QK3HBOTG.cjs} +27 -30
  99. package/dist/{chunk-Q3UU2KXC.mjs → chunk-QMDU6QHN.mjs} +4 -1
  100. package/dist/chunk-QXJADAQB.cjs +40 -0
  101. package/dist/{chunk-DGVVVYKD.mjs → chunk-R5P4KFPM.mjs} +2 -2
  102. package/dist/{chunk-3HBFI373.cjs → chunk-S5AQ7CAC.cjs} +14 -14
  103. package/dist/{chunk-Z3BXMMFF.mjs → chunk-S5ZA2T2W.mjs} +63 -42
  104. package/dist/{chunk-PXEXOQ5R.mjs → chunk-SHS6KXOZ.mjs} +1 -1
  105. package/dist/{chunk-ETF5C6HR.cjs → chunk-SJ23LJ3N.cjs} +3 -3
  106. package/dist/{chunk-LL7TDMOM.mjs → chunk-SMUW7UST.mjs} +33 -59
  107. package/dist/{chunk-VCFBQFOV.mjs → chunk-SN5VSO3Q.mjs} +9 -7
  108. package/dist/{chunk-AIHD6VME.cjs → chunk-SO3T6T4I.cjs} +482 -378
  109. package/dist/{chunk-JHXJBNLY.cjs → chunk-SUCDVKUB.cjs} +21 -1
  110. package/dist/{chunk-DM3TFCC2.cjs → chunk-SUV6YO4Q.cjs} +5 -5
  111. package/dist/{chunk-NG44F7AH.mjs → chunk-T4EW7AAD.mjs} +2 -2
  112. package/dist/{chunk-JUMPFVMK.mjs → chunk-TUOO6IK3.mjs} +9 -0
  113. package/dist/chunk-UB7RVEMX.mjs +73 -0
  114. package/dist/{chunk-CDTIXBKN.mjs → chunk-UN6N623E.mjs} +2 -2
  115. package/dist/{chunk-BEXYFR2R.cjs → chunk-USL2ANCB.cjs} +10 -10
  116. package/dist/{chunk-HAH4FBTA.mjs → chunk-VAHBCI6X.mjs} +1 -1
  117. package/dist/{chunk-QNQEK3OF.cjs → chunk-VIFPE5RG.cjs} +14 -14
  118. package/dist/{chunk-HTLCLOXQ.cjs → chunk-VO6NLTV4.cjs} +3 -3
  119. package/dist/{chunk-XN2MB4QZ.cjs → chunk-VQJYGZNX.cjs} +4 -4
  120. package/dist/{chunk-N25RPPO5.cjs → chunk-WAPQWAE6.cjs} +10 -10
  121. package/dist/{chunk-5PKDHKQP.cjs → chunk-WFVSAT7Y.cjs} +6 -4
  122. package/dist/{chunk-EA5PMJDU.mjs → chunk-WSY2JD7O.mjs} +7 -7
  123. package/dist/{chunk-HNAUK3SC.mjs → chunk-WVX3BUNJ.mjs} +40 -199
  124. package/dist/chunk-X3EFRVXY.mjs +12 -0
  125. package/dist/{chunk-UCQ52TJY.mjs → chunk-X3JNB2TB.mjs} +1 -1
  126. package/dist/{chunk-J5VCA45K.cjs → chunk-X5BCMLGP.cjs} +1 -1
  127. package/dist/{chunk-SSNN55Q6.cjs → chunk-XB24LZWI.cjs} +10 -10
  128. package/dist/{chunk-XXB37YET.cjs → chunk-XLRLSTJ6.cjs} +7 -7
  129. package/dist/{chunk-BNMHXVLL.mjs → chunk-XMHERKSE.mjs} +0 -15
  130. package/dist/chunk-XPMC4E2G.cjs +55 -0
  131. package/dist/{chunk-J27BZO67.mjs → chunk-XWC5NAHV.mjs} +23 -26
  132. package/dist/{chunk-DRFADSKY.mjs → chunk-XXXRRVY6.mjs} +4 -4
  133. package/dist/{chunk-C7425KDG.cjs → chunk-XYL4HSVC.cjs} +2 -2
  134. package/dist/{chunk-2SVJGOAX.mjs → chunk-Y3N5BFRJ.mjs} +3 -3
  135. package/dist/{chunk-ZSIGEHSE.cjs → chunk-Y7TLL65B.cjs} +21 -180
  136. package/dist/{chunk-PEHL3IZL.cjs → chunk-YB44NKC2.cjs} +2 -2
  137. package/dist/chunk-YKHRCY4T.cjs +73 -0
  138. package/dist/{chunk-RYDDUCNJ.mjs → chunk-YLNBWUVS.mjs} +1 -1
  139. package/dist/chunk-Z5A6CNV2.mjs +60 -0
  140. package/dist/chunk-Z64V4WZI.mjs +17 -0
  141. package/dist/{chunk-ACI52TCN.mjs → chunk-ZF3GX4O7.mjs} +1 -1
  142. package/dist/client/lifecycle.d.mts +1 -1
  143. package/dist/client/lifecycle.d.ts +1 -1
  144. package/dist/{client-plugins-DFDQUI9Q.d.ts → client-plugins-CFBEfVPO.d.ts} +34 -10
  145. package/dist/{client-plugins-BNBeyLMi.d.mts → client-plugins-cqy_dQd0.d.mts} +34 -10
  146. package/dist/client-plugins.d.mts +6 -6
  147. package/dist/client-plugins.d.ts +6 -6
  148. package/dist/client.cjs +13 -9
  149. package/dist/client.d.mts +11 -10
  150. package/dist/client.d.ts +11 -10
  151. package/dist/client.mjs +15 -11
  152. package/dist/client.react-server.mjs +1 -1
  153. package/dist/config-CnhyvvmT.d.mts +188 -0
  154. package/dist/config-CnhyvvmT.d.ts +188 -0
  155. package/dist/config.d.mts +6 -6
  156. package/dist/config.d.ts +6 -6
  157. package/dist/cron.cjs +4 -4
  158. package/dist/cron.mjs +3 -3
  159. package/dist/desktop.d.mts +7 -7
  160. package/dist/desktop.d.ts +7 -7
  161. package/dist/{dev-guard-YO6KPIOQ.mjs → dev-guard-4PFQNXQX.mjs} +2 -1
  162. package/dist/{dev-guard-PLHL6OTJ.cjs → dev-guard-YLO5DE3H.cjs} +4 -3
  163. package/dist/{devtools-BLKHPY3C.mjs → devtools-4MLL3RAL.mjs} +10 -10
  164. package/dist/{devtools-A37WWJZL.cjs → devtools-4ZLMD454.cjs} +12 -12
  165. package/dist/docs.cjs +14 -14
  166. package/dist/docs.d.mts +7 -7
  167. package/dist/docs.d.ts +7 -7
  168. package/dist/docs.mjs +13 -13
  169. package/dist/environment/vite.d.mts +1 -1
  170. package/dist/environment/vite.d.ts +1 -1
  171. package/dist/generate-route-types-DQP0cUzk.d.ts +33 -0
  172. package/dist/generate-route-types-TF5Wwtvz.d.mts +33 -0
  173. package/dist/i18n/client.d.mts +2 -2
  174. package/dist/i18n/client.d.ts +2 -2
  175. package/dist/i18n/index.d.mts +3 -3
  176. package/dist/i18n/index.d.ts +3 -3
  177. package/dist/i18n/server.d.mts +5 -5
  178. package/dist/i18n/server.d.ts +5 -5
  179. package/dist/image/server.cjs +3 -3
  180. package/dist/image/server.mjs +2 -2
  181. package/dist/image/sharp.cjs +10 -10
  182. package/dist/image/sharp.mjs +2 -2
  183. package/dist/{index-DBdiTkNc.d.ts → index-BYkNbeQV.d.mts} +2 -2
  184. package/dist/{index-CeJ9_s9p.d.mts → index-BxjN_UDZ.d.ts} +2 -2
  185. package/dist/{index-MocnSP3a.d.ts → index-D3l4tREW.d.ts} +2 -2
  186. package/dist/{index-Cl3akY5U.d.mts → index-DPUAPho_.d.mts} +2 -2
  187. package/dist/index.cjs +88 -79
  188. package/dist/index.d.mts +29 -45
  189. package/dist/index.d.ts +29 -45
  190. package/dist/index.mjs +92 -83
  191. package/dist/integrations.cjs +3 -3
  192. package/dist/integrations.d.mts +6 -6
  193. package/dist/integrations.d.ts +6 -6
  194. package/dist/integrations.mjs +2 -2
  195. package/dist/internal/app-markdown-runtime.d.mts +7 -7
  196. package/dist/internal/app-markdown-runtime.d.ts +7 -7
  197. package/dist/internal/build-runtime.cjs +47 -43
  198. package/dist/internal/build-runtime.d.mts +9 -9
  199. package/dist/internal/build-runtime.d.ts +9 -9
  200. package/dist/internal/build-runtime.mjs +46 -42
  201. package/dist/internal/cli-runtime.cjs +24 -23
  202. package/dist/internal/cli-runtime.mjs +24 -23
  203. package/dist/internal/client-error-overlay.cjs +4 -4
  204. package/dist/internal/client-error-overlay.mjs +1 -1
  205. package/dist/internal/client-runtime.cjs +22 -3
  206. package/dist/internal/client-runtime.d.mts +46 -4
  207. package/dist/internal/client-runtime.d.ts +46 -4
  208. package/dist/internal/client-runtime.mjs +22 -3
  209. package/dist/internal/compression-runtime.d.mts +6 -6
  210. package/dist/internal/compression-runtime.d.ts +6 -6
  211. package/dist/internal/config-runtime.cjs +20 -13
  212. package/dist/internal/config-runtime.d.mts +259 -18
  213. package/dist/internal/config-runtime.d.ts +259 -18
  214. package/dist/internal/config-runtime.mjs +18 -11
  215. package/dist/internal/form-actions.cjs +5 -4
  216. package/dist/internal/form-actions.mjs +4 -3
  217. package/dist/internal/infra-analytics-runtime.cjs +6 -6
  218. package/dist/internal/infra-analytics-runtime.mjs +4 -4
  219. package/dist/internal/islands-runtime.cjs +56 -0
  220. package/dist/internal/islands-runtime.mjs +57 -1
  221. package/dist/internal/metadata-image-runtime.cjs +3 -3
  222. package/dist/internal/metadata-image-runtime.mjs +2 -2
  223. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  224. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  225. package/dist/internal/production-runtime.cjs +18 -15
  226. package/dist/internal/production-runtime.d.mts +33 -20
  227. package/dist/internal/production-runtime.d.ts +33 -20
  228. package/dist/internal/production-runtime.mjs +20 -17
  229. package/dist/internal/server-fn-transform.cjs +13 -0
  230. package/dist/internal/server-fn-transform.d.mts +24 -0
  231. package/dist/internal/server-fn-transform.d.ts +24 -0
  232. package/dist/internal/server-fn-transform.mjs +13 -0
  233. package/dist/{layers-D9fbe-rz.d.ts → layers-CcS42OGR.d.mts} +1 -1
  234. package/dist/{layers-D9fbe-rz.d.mts → layers-CcS42OGR.d.ts} +1 -1
  235. package/dist/{lifecycle-DK06VuKP.d.ts → lifecycle-C2aLBOwu.d.mts} +1 -1
  236. package/dist/{lifecycle-DK06VuKP.d.mts → lifecycle-C2aLBOwu.d.ts} +1 -1
  237. package/dist/markdown.d.mts +6 -6
  238. package/dist/markdown.d.ts +6 -6
  239. package/dist/middleware.cjs +11 -11
  240. package/dist/middleware.d.mts +8 -8
  241. package/dist/middleware.d.ts +8 -8
  242. package/dist/middleware.mjs +10 -10
  243. package/dist/mobile.cjs +9 -0
  244. package/dist/mobile.d.mts +94 -0
  245. package/dist/mobile.d.ts +94 -0
  246. package/dist/mobile.mjs +9 -0
  247. package/dist/navigation-delegate-BU4xqdnw.d.ts +29 -0
  248. package/dist/navigation-delegate-DLhbfEN4.d.mts +29 -0
  249. package/dist/navigation.cjs +5 -5
  250. package/dist/navigation.d.mts +9 -9
  251. package/dist/navigation.d.ts +9 -9
  252. package/dist/navigation.mjs +4 -4
  253. package/dist/{nitro-BIXIKJZS.cjs → nitro-CK7M4RMY.cjs} +12 -12
  254. package/dist/{nitro-UT2J5A5D.mjs → nitro-R444AF3O.mjs} +8 -8
  255. package/dist/platform.cjs +2 -1
  256. package/dist/platform.d.mts +4 -3
  257. package/dist/platform.d.ts +4 -3
  258. package/dist/platform.mjs +2 -1
  259. package/dist/{plugin-4KYXV7BB.mjs → plugin-53SY5YBS.mjs} +1 -1
  260. package/dist/{plugin-WBANOZQM.cjs → plugin-HZIBL3DW.cjs} +2 -2
  261. package/dist/plugin.cjs +40 -36
  262. package/dist/plugin.d.mts +13 -8
  263. package/dist/plugin.d.ts +13 -8
  264. package/dist/plugin.mjs +39 -35
  265. package/dist/{production-runtime-B3qFFtKF.d.ts → production-runtime-C78A8YgK.d.ts} +3 -3
  266. package/dist/{production-runtime-DcD-GRAv.d.mts → production-runtime-DLA4J5WG.d.mts} +3 -3
  267. package/dist/production-vite-BQFAlG7n.d.mts +13 -0
  268. package/dist/production-vite-BQFAlG7n.d.ts +13 -0
  269. package/dist/{programmatic-routes-client-fD9f4XqU.d.ts → programmatic-routes-client-CBqkNhBy.d.ts} +2 -2
  270. package/dist/{programmatic-routes-client-DzbYGiZQ.d.mts → programmatic-routes-client-NpqGBn-i.d.mts} +2 -2
  271. package/dist/query/client.cjs +6 -6
  272. package/dist/query/client.mjs +2 -2
  273. package/dist/{render-plan-DqJ51ufr.d.mts → render-plan-C9sWvDTv.d.mts} +1 -1
  274. package/dist/{render-plan-B6cfssrr.d.ts → render-plan-CrqcBbnV.d.ts} +1 -1
  275. package/dist/renderer-client.cjs +17 -12
  276. package/dist/renderer-client.d.mts +9 -8
  277. package/dist/renderer-client.d.ts +9 -8
  278. package/dist/renderer-client.mjs +10 -5
  279. package/dist/{request-jhvUMXRx.d.ts → request-BizeuqD7.d.ts} +1 -1
  280. package/dist/{request-UuAxHn8h.d.mts → request-WwB1-Uim.d.mts} +1 -1
  281. package/dist/request.d.mts +7 -7
  282. package/dist/request.d.ts +7 -7
  283. package/dist/{resolver-DC57A4vz.d.ts → resolver-CJ-D9nP-.d.ts} +1 -1
  284. package/dist/{resolver-C2G-3Tm6.d.mts → resolver-TDyZKgKI.d.mts} +1 -1
  285. package/dist/{route-rendering-Sn50cYZf.d.ts → route-rendering-BGhJN64l.d.ts} +1 -1
  286. package/dist/{route-rendering-Cou00t1X.d.mts → route-rendering-S6NFjnx4.d.mts} +1 -1
  287. package/dist/{router-0X9DCTcm.d.mts → router-BIheIy9G.d.mts} +1 -1
  288. package/dist/{router-xwLvi48p.d.ts → router-BUD_j2EL.d.ts} +1 -1
  289. package/dist/routes-8PT9cl60.d.ts +121 -0
  290. package/dist/routes-kEUsXHx3.d.mts +121 -0
  291. package/dist/routes.cjs +3 -2
  292. package/dist/routes.d.mts +7 -7
  293. package/dist/routes.d.ts +7 -7
  294. package/dist/routes.mjs +2 -1
  295. package/dist/{rsc-pipeline-VKHMABDJ.cjs → rsc-pipeline-JRGUZBYM.cjs} +18 -16
  296. package/dist/{rsc-pipeline-F6ZPH5MU.mjs → rsc-pipeline-OLAVIKI3.mjs} +17 -15
  297. package/dist/{runtime-B9HmxiZc.d.ts → runtime-C4CmlOOh.d.ts} +2 -2
  298. package/dist/{runtime-tkSXZiqO.d.ts → runtime-CWP-21hP.d.ts} +1 -1
  299. package/dist/{runtime-CMrsyChI.d.mts → runtime-CgJwe6H_.d.mts} +1 -1
  300. package/dist/{runtime-CCxTmGuf.d.mts → runtime-CihDZ2Rn.d.mts} +2 -2
  301. package/dist/runtime-G23RSLEK.cjs +1005 -0
  302. package/dist/runtime-OGCHDACZ.mjs +1005 -0
  303. package/dist/{schema-dev-notice-O3I5HLXK.mjs → schema-dev-notice-F6QYSOAI.mjs} +4 -4
  304. package/dist/{schema-dev-notice-Z73J3NJ6.cjs → schema-dev-notice-UU7DMZEU.cjs} +7 -7
  305. package/dist/{search-client-BTXL5XWD.mjs → search-client-OXH6GBNO.mjs} +5 -3
  306. package/dist/search-client-ZZLKVO5R.cjs +15 -0
  307. package/dist/server-action-security.cjs +3 -3
  308. package/dist/server-action-security.mjs +2 -2
  309. package/dist/server-fn-client.d.mts +0 -1
  310. package/dist/server-fn-client.d.ts +0 -1
  311. package/dist/server-fn.cjs +4 -4
  312. package/dist/server-fn.d.mts +0 -1
  313. package/dist/server-fn.d.ts +0 -1
  314. package/dist/server-fn.mjs +3 -3
  315. package/dist/server-plugins.cjs +1 -1
  316. package/dist/server-plugins.d.mts +7 -7
  317. package/dist/server-plugins.d.ts +7 -7
  318. package/dist/server-plugins.mjs +1 -1
  319. package/dist/server-query-client.cjs +4 -3
  320. package/dist/server-query-client.d.mts +0 -1
  321. package/dist/server-query-client.d.ts +0 -1
  322. package/dist/server-query-client.mjs +3 -2
  323. package/dist/server-query.cjs +5 -5
  324. package/dist/server-query.d.mts +0 -1
  325. package/dist/server-query.d.ts +0 -1
  326. package/dist/server-query.mjs +4 -4
  327. package/dist/server.cjs +104 -79
  328. package/dist/server.d.mts +22 -17
  329. package/dist/server.d.ts +22 -17
  330. package/dist/server.mjs +73 -48
  331. package/dist/{spa-router-B48EjsS1.d.mts → spa-router-CVOL0Vrq.d.mts} +4 -4
  332. package/dist/{spa-router-B06APnGK.d.ts → spa-router-Kytv4jSB.d.ts} +4 -4
  333. package/dist/testing.cjs +16 -15
  334. package/dist/testing.d.mts +6 -6
  335. package/dist/testing.d.ts +6 -6
  336. package/dist/testing.mjs +12 -11
  337. package/dist/{types--Wh02r5_.d.mts → types-C41ePjvP.d.mts} +1 -1
  338. package/dist/{types--Wh02r5_.d.ts → types-C41ePjvP.d.ts} +1 -1
  339. package/dist/{utils-C5fyK2tE.d.ts → utils-DbyXlzaj.d.ts} +1 -1
  340. package/dist/{utils-hyAwmcN6.d.mts → utils-Dsa1HZ7X.d.mts} +1 -1
  341. package/dist/version.cjs +2 -2
  342. package/dist/version.mjs +1 -1
  343. package/dist/vite.cjs +40 -36
  344. package/dist/vite.d.mts +9 -9
  345. package/dist/vite.d.ts +9 -9
  346. package/dist/vite.mjs +39 -35
  347. package/dist/{workflows-Df1C_7OG.d.mts → workflows-CRMzQZ3k.d.mts} +2 -1
  348. package/dist/{workflows-Df1C_7OG.d.ts → workflows-CRMzQZ3k.d.ts} +2 -1
  349. package/dist/workflows.cjs +5 -5
  350. package/dist/workflows.d.mts +1 -1
  351. package/dist/workflows.d.ts +1 -1
  352. package/dist/workflows.mjs +4 -4
  353. package/package.json +16 -3
  354. package/dist/base-path-leyrqXbX.d.mts +0 -19
  355. package/dist/base-path-leyrqXbX.d.ts +0 -19
  356. package/dist/cache-invalidation-BD0z_lfu.d.mts +0 -4
  357. package/dist/cache-invalidation-BD0z_lfu.d.ts +0 -4
  358. package/dist/chunk-45EUIICW.mjs +0 -15
  359. package/dist/chunk-MJ6IC4K2.mjs +0 -34
  360. package/dist/chunk-V7KTQR4C.cjs +0 -15
  361. package/dist/search-client-QCYAL6AY.cjs +0 -13
  362. package/dist/{chunk-5OJVKXFV.cjs → chunk-N7JQXQAV.cjs} +2 -2
  363. package/dist/{chunk-72KABRWN.mjs → chunk-WSDKXV4E.mjs} +4 -4
@@ -1,11 +1,10 @@
1
- import { g as FarmMdxComponents, h as FarmMdxResolvedConfig, i as RouteModule } from './client-plugins-DFDQUI9Q.js';
2
- export { j as FARM_MARKDOWN_CONTENT_TYPE, m as FarmMdxComponent, n as FarmMdxUserConfig, k as createFarmMarkdownErrorBody, l as farmRequestWantsMarkdown, r as resolveFarmMdxComponentsModulePath, o as resolveMdxConfig } from './client-plugins-DFDQUI9Q.js';
1
+ import { g as FarmMdxComponents, h as FarmMdxResolvedConfig, i as RouteModule } from './client-plugins-CFBEfVPO.js';
2
+ export { j as FARM_MARKDOWN_CONTENT_TYPE, m as FarmMdxComponent, n as FarmMdxUserConfig, k as createFarmMarkdownErrorBody, l as farmRequestWantsMarkdown, r as resolveFarmMdxComponentsModulePath, o as resolveMdxConfig } from './client-plugins-CFBEfVPO.js';
3
3
  export { FARM_MARKDOWN_ANONYMOUS_CLIENT_ADDRESS, FarmMarkdownPageModuleInput, FarmMarkdownPageSource, createFarmMarkdownRouteModule, createFarmMarkdownSourceResponse, createMarkdownMetadata, isFarmMarkdownPageFile, isFarmMarkdownPublicSourceResponse, normalizeFarmMarkdownRoutePath, parseMarkdownFrontmatter, titleFromMarkdown } from './internal/app-markdown-runtime.js';
4
- import './lifecycle-DK06VuKP.js';
4
+ import './lifecycle-C2aLBOwu.js';
5
5
  import './route-DFhZj6jN.js';
6
6
  import './endpoint-BgHn0lhl.js';
7
7
  import './cache.js';
8
- import './cache-invalidation-BD0z_lfu.js';
9
8
  import './renderer.js';
10
9
  import './deployment.js';
11
10
  import 'http';
@@ -22,15 +21,16 @@ import '@farming-labs/docs';
22
21
  import './observability-B2363jB6.js';
23
22
  import '@opentelemetry/api';
24
23
  import 'vite';
25
- import './workflows-Df1C_7OG.js';
24
+ import './workflows-CRMzQZ3k.js';
26
25
  import './cron.js';
27
26
  import './env.js';
28
27
  import './server-action-security.js';
29
- import './layers-D9fbe-rz.js';
28
+ import './layers-CcS42OGR.js';
30
29
  import 'rolldown/utils';
31
30
  import 'rolldown';
32
31
  import './image-config-CeDgNyX4.js';
33
- import './types--Wh02r5_.js';
32
+ import './types-C41ePjvP.js';
33
+ import './config-CnhyvvmT.js';
34
34
  import './types-DQnyD3VD.js';
35
35
  import './font.js';
36
36
 
@@ -0,0 +1,10 @@
1
+ /** @internal Configure the app-wide URL preference for framework link rendering. */
2
+ declare function setFarmTrailingSlashPreference(enabled: boolean | undefined): void;
3
+ declare function resolveFarmTrailingSlashRedirect(url: URL, enabled: boolean): string | null;
4
+
5
+ /** @internal Configure the app-wide base path for framework link rendering. */
6
+ declare function setFarmBasePath(basePath: string | undefined): void;
7
+ declare function applyFarmBasePath(href: string, basePath?: string): string;
8
+ declare function stripFarmBasePath(pathname: string, basePath?: string): string;
9
+
10
+ export { setFarmTrailingSlashPreference as a, stripFarmBasePath as b, applyFarmBasePath as c, resolveFarmTrailingSlashRedirect as r, setFarmBasePath as s };
@@ -0,0 +1,10 @@
1
+ /** @internal Configure the app-wide URL preference for framework link rendering. */
2
+ declare function setFarmTrailingSlashPreference(enabled: boolean | undefined): void;
3
+ declare function resolveFarmTrailingSlashRedirect(url: URL, enabled: boolean): string | null;
4
+
5
+ /** @internal Configure the app-wide base path for framework link rendering. */
6
+ declare function setFarmBasePath(basePath: string | undefined): void;
7
+ declare function applyFarmBasePath(href: string, basePath?: string): string;
8
+ declare function stripFarmBasePath(pathname: string, basePath?: string): string;
9
+
10
+ export { setFarmTrailingSlashPreference as a, stripFarmBasePath as b, applyFarmBasePath as c, resolveFarmTrailingSlashRedirect as r, setFarmBasePath as s };
package/dist/cache.d.mts CHANGED
@@ -1,5 +1,3 @@
1
- export { a as applyFarmCacheInvalidations } from './cache-invalidation-BD0z_lfu.mjs';
2
-
3
1
  /**
4
2
  * Cache key serialization, kept free of server imports: browser code such as
5
3
  * the client data cache builds the same keys, and importing `./cache` would
@@ -9,6 +7,9 @@ type RouteDataCacheKey = string | readonly unknown[];
9
7
  declare function createRouteDataCacheKey(key: RouteDataCacheKey): string;
10
8
  declare function createFarmCacheKey(parts: readonly unknown[]): string;
11
9
 
10
+ type FarmCacheInvalidationSource = "local" | "broadcast" | "live";
11
+ declare function applyFarmCacheInvalidations(keys: unknown, source?: FarmCacheInvalidationSource): void;
12
+
12
13
  interface FarmCacheInvalidationStreamOptions {
13
14
  /** Stop the stream when the owning request is aborted. */
14
15
  signal?: AbortSignal;
@@ -329,4 +330,4 @@ declare function createPathCacheTag(routePath: string): string;
329
330
  declare function createRouteDataCacheTag(key: RouteDataCacheKey): string;
330
331
  declare function normalizeRevalidatePath(routePath: string): string;
331
332
 
332
- export { type CacheKeyFactory, type DefinedCacheKey, type FarmCacheAdapter, type FarmCacheEntry, type FarmCacheInvalidationStreamOptions, type FarmCacheInvalidationTarget, type FarmCacheOptions, type FarmCacheSetOptions, type FarmCacheStorage, type FarmCacheUserConfig, type FarmClientCacheUserConfig, FarmDataCache, type GetFarmCacheEntryOptions, type InferCacheKeyData, PPR_SHELL_ADAPTER_TTL_SECONDS, type RevalidateTagProfile, type RouteDataCacheKey, type StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, configureFarmCache, createFarmCacheInvalidationStream, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag };
333
+ export { type CacheKeyFactory, type DefinedCacheKey, type FarmCacheAdapter, type FarmCacheEntry, type FarmCacheInvalidationStreamOptions, type FarmCacheInvalidationTarget, type FarmCacheOptions, type FarmCacheSetOptions, type FarmCacheStorage, type FarmCacheUserConfig, type FarmClientCacheUserConfig, FarmDataCache, type GetFarmCacheEntryOptions, type InferCacheKeyData, PPR_SHELL_ADAPTER_TTL_SECONDS, type RevalidateTagProfile, type RouteDataCacheKey, type StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheInvalidationStream, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag };
package/dist/cache.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- export { a as applyFarmCacheInvalidations } from './cache-invalidation-BD0z_lfu.js';
2
-
3
1
  /**
4
2
  * Cache key serialization, kept free of server imports: browser code such as
5
3
  * the client data cache builds the same keys, and importing `./cache` would
@@ -9,6 +7,9 @@ type RouteDataCacheKey = string | readonly unknown[];
9
7
  declare function createRouteDataCacheKey(key: RouteDataCacheKey): string;
10
8
  declare function createFarmCacheKey(parts: readonly unknown[]): string;
11
9
 
10
+ type FarmCacheInvalidationSource = "local" | "broadcast" | "live";
11
+ declare function applyFarmCacheInvalidations(keys: unknown, source?: FarmCacheInvalidationSource): void;
12
+
12
13
  interface FarmCacheInvalidationStreamOptions {
13
14
  /** Stop the stream when the owning request is aborted. */
14
15
  signal?: AbortSignal;
@@ -329,4 +330,4 @@ declare function createPathCacheTag(routePath: string): string;
329
330
  declare function createRouteDataCacheTag(key: RouteDataCacheKey): string;
330
331
  declare function normalizeRevalidatePath(routePath: string): string;
331
332
 
332
- export { type CacheKeyFactory, type DefinedCacheKey, type FarmCacheAdapter, type FarmCacheEntry, type FarmCacheInvalidationStreamOptions, type FarmCacheInvalidationTarget, type FarmCacheOptions, type FarmCacheSetOptions, type FarmCacheStorage, type FarmCacheUserConfig, type FarmClientCacheUserConfig, FarmDataCache, type GetFarmCacheEntryOptions, type InferCacheKeyData, PPR_SHELL_ADAPTER_TTL_SECONDS, type RevalidateTagProfile, type RouteDataCacheKey, type StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, configureFarmCache, createFarmCacheInvalidationStream, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag };
333
+ export { type CacheKeyFactory, type DefinedCacheKey, type FarmCacheAdapter, type FarmCacheEntry, type FarmCacheInvalidationStreamOptions, type FarmCacheInvalidationTarget, type FarmCacheOptions, type FarmCacheSetOptions, type FarmCacheStorage, type FarmCacheUserConfig, type FarmClientCacheUserConfig, FarmDataCache, type GetFarmCacheEntryOptions, type InferCacheKeyData, PPR_SHELL_ADAPTER_TTL_SECONDS, type RevalidateTagProfile, type RouteDataCacheKey, type StorageFarmCacheAdapterOptions, applyFarmCacheInvalidationTargets, applyFarmCacheInvalidations, configureFarmCache, createFarmCacheInvalidationStream, createFarmCacheKey, createPathCacheTag, createRouteDataCacheKey, createRouteDataCacheTag, defineCacheKey, getFarmDataCache, invalidate, invalidateRouteData, normalizeRevalidatePath, revalidatePath, revalidateTag, storageCacheAdapter, unstable_cache, updateTag };
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkFGJQS4ECcjs = require('./chunk-FGJQS4EC.cjs');
7
+ var _chunkFK25QSVCcjs = require('./chunk-FK25QSVC.cjs');
8
8
 
9
9
 
10
10
  var _chunkDMAP4RNDcjs = require('./chunk-DMAP4RND.cjs');
@@ -61,13 +61,13 @@ async function _invokeServerFunction(value, input, request) {
61
61
  throw new TypeError("Expected a function created with createServerFn or createServerQuery");
62
62
  }
63
63
  try {
64
- const data = await _chunkFGJQS4ECcjs.runWithServerActionRequest.call(void 0, request, () => runner.run(input));
64
+ const data = await _chunkFK25QSVCcjs.runWithServerActionRequest.call(void 0, request, () => runner.run(input));
65
65
  return { ok: true, data };
66
66
  } catch (error) {
67
67
  if (error instanceof ServerFnInputError) {
68
68
  return { ok: false, reason: "input", error: error.cause };
69
69
  }
70
- if (_chunkFGJQS4ECcjs.isServerFnFailure.call(void 0, error)) return { ok: false, reason: "failure", failure: error };
70
+ if (_chunkFK25QSVCcjs.isServerFnFailure.call(void 0, error)) return { ok: false, reason: "failure", failure: error };
71
71
  const redirect = _chunk7JUIK547cjs.getFarmRedirectError.call(void 0, error);
72
72
  if (redirect) {
73
73
  return { ok: false, reason: "redirect", url: redirect.url, status: redirect.status };
@@ -106,9 +106,9 @@ function createServerFn(options) {
106
106
  } catch (cause) {
107
107
  throw labelInputErrors && isSchemaValidationFailure(cause) ? new ServerFnInputError(cause) : cause;
108
108
  }
109
- const executionContext = _chunkFGJQS4ECcjs.getServerActionExecutionContext.call(void 0, );
109
+ const executionContext = _chunkFK25QSVCcjs.getServerActionExecutionContext.call(void 0, );
110
110
  const request = executionContext ? _chunk3BIASUGRcjs._toAppRequestView.call(void 0, executionContext.request) : _chunk3BIASUGRcjs._resolveCurrentRequestForApp.call(void 0, );
111
- const signal = _nullishCoalesce(_nullishCoalesce(_optionalChain([executionContext, 'optionalAccess', _ => _.signal]), () => ( _optionalChain([request, 'optionalAccess', _2 => _2.signal]))), () => ( _chunkFGJQS4ECcjs.getServerActionSignal.call(void 0, )));
111
+ const signal = _nullishCoalesce(_nullishCoalesce(_optionalChain([executionContext, 'optionalAccess', _ => _.signal]), () => ( _optionalChain([request, 'optionalAccess', _2 => _2.signal]))), () => ( _chunkFK25QSVCcjs.getServerActionSignal.call(void 0, )));
112
112
  const handlerContext = {
113
113
  input,
114
114
  rawInput,
@@ -231,7 +231,7 @@ function createServerFnErrorHandler(definitions) {
231
231
  throw new TypeError(`Server function error "${code}" is not declared`);
232
232
  }
233
233
  const parsed = parseServerFnFailureData(code, definition.data, data);
234
- throw new (0, _chunkFGJQS4ECcjs.ServerFnFailure)(code, parsed, {
234
+ throw new (0, _chunkFK25QSVCcjs.ServerFnFailure)(code, parsed, {
235
235
  status: definition.status,
236
236
  message: _nullishCoalesce(definition.message, () => ( "Server function failed"))
237
237
  });
@@ -0,0 +1,224 @@
1
+ import {
2
+ writeFileIfChanged
3
+ } from "./chunk-Q5B4LNON.mjs";
4
+ import {
5
+ resolveFarmComponentExtensions
6
+ } from "./chunk-ES2LD2YD.mjs";
7
+ import {
8
+ parseRouteSlotFile
9
+ } from "./chunk-IRSS4HS4.mjs";
10
+ import {
11
+ discoverProgrammaticRoutePaths
12
+ } from "./chunk-FSXSQQTV.mjs";
13
+ import {
14
+ parseRoutePath
15
+ } from "./chunk-Y3N5BFRJ.mjs";
16
+
17
+ // src/routing/generate-route-types.ts
18
+ import * as path from "path";
19
+ import * as fs from "fs";
20
+ function routeSegmentsToTsTypeLiteral(segments) {
21
+ if (segments.length === 0) return '"/"';
22
+ const hasDynamic = segments.some((s) => s.startsWith("["));
23
+ if (!hasDynamic) return JSON.stringify("/" + segments.join("/"));
24
+ const parts = segments.map((s) => {
25
+ if (s.startsWith("[[...") || s.startsWith("[...")) return "${string}";
26
+ if (s.startsWith("[")) return "${string}";
27
+ return s;
28
+ });
29
+ return "`/" + parts.join("/") + "`";
30
+ }
31
+ function routePatternToTsTypeLiterals(pattern) {
32
+ if (pattern === "/") return ['"/"'];
33
+ let variants = [[]];
34
+ for (const segment of pattern.slice(1).split("/").filter(Boolean)) {
35
+ if (segment.startsWith("[[...") && segment.endsWith("]]")) {
36
+ variants = variants.flatMap((parts) => [parts, [...parts, segment]]);
37
+ } else {
38
+ variants = variants.map((parts) => [...parts, segment]);
39
+ }
40
+ }
41
+ return variants.map(routeSegmentsToTsTypeLiteral);
42
+ }
43
+ function routePatternToRouteLiteral(pattern) {
44
+ return JSON.stringify(pattern);
45
+ }
46
+ function renderTypeUnion(values) {
47
+ return values.length <= 1 ? values[0] || "never" : `
48
+ | ${values.join("\n | ")}`;
49
+ }
50
+ function renderTypeAlias(name, value) {
51
+ return `export type ${name} =${value.startsWith("\n") ? "" : " "}${value};`;
52
+ }
53
+ function createRoutePattern(route) {
54
+ if (route.segments.length === 0) return "/";
55
+ return "/" + route.segments.map((seg) => {
56
+ if (!seg.isDynamic) return seg.segment;
57
+ if (seg.isCatchAll) return seg.isOptional ? `[[...${seg.segment}]]` : `[...${seg.segment}]`;
58
+ return `[${seg.segment}]`;
59
+ }).join("/");
60
+ }
61
+ var DEFAULT_OUT_FILE = "farm-routes.d.ts";
62
+ async function generateRouteTypes(options) {
63
+ const root = path.resolve(options.root);
64
+ const srcDir = options.srcDir || "src";
65
+ const outFile = options.outFile || DEFAULT_OUT_FILE;
66
+ const outPath = path.isAbsolute(outFile) ? outFile : path.join(root, srcDir, outFile);
67
+ const content = await createRouteTypeDeclarations(options, outPath);
68
+ fs.mkdirSync(path.dirname(outPath), { recursive: true });
69
+ writeFileIfChanged(outPath, content);
70
+ return outPath;
71
+ }
72
+ async function createRouteTypeDeclarations(options, outPath) {
73
+ const { extraRoutes = [], suppressLintOnLink = false } = options;
74
+ const { pages: patterns, modules: routeModulePatterns } = await scanRoutePatterns(options);
75
+ for (const route of extraRoutes) {
76
+ if (route.startsWith("/")) {
77
+ patterns.add(route);
78
+ routeModulePatterns.add(route);
79
+ }
80
+ }
81
+ const sortedPatterns = Array.from(patterns).sort();
82
+ const typeLiterals = Array.from(new Set(sortedPatterns.flatMap(routePatternToTsTypeLiterals)));
83
+ const patternLiterals = sortedPatterns.map(routePatternToRouteLiteral);
84
+ const routeModulePatternLiterals = Array.from(routeModulePatterns).sort().map(routePatternToRouteLiteral);
85
+ const routePathType = suppressLintOnLink ? "string" : renderTypeUnion(typeLiterals);
86
+ const routePatternType = suppressLintOnLink ? "string" : renderTypeUnion(patternLiterals);
87
+ const routeModulePatternType = renderTypeUnion(routeModulePatternLiterals);
88
+ const routeTypesImportPath = `./${path.basename(outPath).replace(/\.d\.ts$/, "")}`;
89
+ const linkAugmentationBlock = suppressLintOnLink ? "" : `
90
+ declare module "@farm.js/core/client" {
91
+ interface LinkDefaultRoute {
92
+ _: import(${JSON.stringify(routeTypesImportPath)}).RoutePath;
93
+ pattern: import(${JSON.stringify(routeTypesImportPath)}).RoutePattern;
94
+ }
95
+ }
96
+
97
+ declare module "@farm.js/core" {
98
+ interface LinkDefaultRoute {
99
+ _: import(${JSON.stringify(routeTypesImportPath)}).RoutePath;
100
+ pattern: import(${JSON.stringify(routeTypesImportPath)}).RoutePattern;
101
+ }
102
+ // Ensure root import ("@farm.js/core") uses the same typed Link signature as client entry.
103
+ const Link: typeof import("@farm.js/core/client").Link;
104
+ }
105
+
106
+ // Internal declaration path used by @farm.js/core root type re-exports.
107
+ declare module "@farm.js/core/dist/client.js" {
108
+ interface LinkDefaultRoute {
109
+ _: import(${JSON.stringify(routeTypesImportPath)}).RoutePath;
110
+ pattern: import(${JSON.stringify(routeTypesImportPath)}).RoutePattern;
111
+ }
112
+ }
113
+ `;
114
+ const routeModuleAugmentationBlock = `
115
+ declare global {
116
+ namespace FarmJS {
117
+ interface RouteRegistry {
118
+ pattern: import(${JSON.stringify(routeTypesImportPath)}).RouteModulePattern;
119
+ }
120
+ }
121
+ }
122
+ `;
123
+ const content = `/**
124
+ * Auto-generated route types from src/app.
125
+ * Link href and route component props are typed automatically from generated declarations.
126
+ * Regenerated on dev start and when routes change.
127
+ * Set suppressLintOnLink: true in farm.config.ts to accept any string on Link href.
128
+ */
129
+ ${renderTypeAlias("RoutePath", routePathType)}
130
+ ${renderTypeAlias("RoutePattern", routePatternType)}
131
+ ${renderTypeAlias("RouteModulePattern", routeModulePatternType)}${linkAugmentationBlock}${routeModuleAugmentationBlock}
132
+ `;
133
+ return content;
134
+ }
135
+ var PLATFORM_FILE = /^(?:(page|layout)\.(native|ios|android)\.(?:tsx|ts|jsx|js)|page\.(kt|swift))$/;
136
+ async function scanRoutePatterns(options) {
137
+ const { root, srcDir = "src" } = options;
138
+ const sourceRoots = options.sourceRoots ?? [{ name: "project", root, srcDir, layer: false }];
139
+ const componentExtensions = resolveFarmComponentExtensions(options.componentExtensions).map(
140
+ (extension) => extension.slice(1)
141
+ );
142
+ const pages = /* @__PURE__ */ new Set();
143
+ const modules = /* @__PURE__ */ new Set();
144
+ const pageFiles = /* @__PURE__ */ new Map();
145
+ const nativePages = /* @__PURE__ */ new Map();
146
+ const nativeLayouts = /* @__PURE__ */ new Map();
147
+ const { glob } = await import("tinyglobby");
148
+ for (const source of sourceRoots) {
149
+ const appDir = path.join(source.root, source.srcDir, "app");
150
+ if (fs.existsSync(appDir)) {
151
+ const routeModuleFiles = await glob(
152
+ `**/{page,layout,loading,error}.{${componentExtensions.join(",")},md,mdx}`,
153
+ { cwd: appDir, expandDirectories: false }
154
+ );
155
+ for (const file of routeModuleFiles) {
156
+ if (parseRouteSlotFile(file)) continue;
157
+ const route = parseRoutePath(file);
158
+ const pattern = createRoutePattern(route);
159
+ modules.add(pattern);
160
+ if (route.type === "page") {
161
+ pages.add(pattern);
162
+ if (options.platformFiles) pageFiles.set(pattern, path.join(appDir, file));
163
+ }
164
+ }
165
+ if (options.platformFiles) {
166
+ scanPlatformRouteFiles(
167
+ appDir,
168
+ await glob(
169
+ ["**/{page,layout}.{native,ios,android}.{tsx,ts,jsx,js}", "**/page.{kt,swift}"],
170
+ { cwd: appDir, expandDirectories: false }
171
+ ),
172
+ nativePages,
173
+ nativeLayouts
174
+ );
175
+ }
176
+ }
177
+ for (const route of await discoverProgrammaticRoutePaths(source.root, source.srcDir)) {
178
+ pages.add(route);
179
+ modules.add(route);
180
+ }
181
+ }
182
+ if (!options.platformFiles) return { pages, modules };
183
+ for (const [pattern, files] of nativePages) {
184
+ if (!pages.has(pattern)) {
185
+ const file = path.relative(root, Object.values(files)[0]);
186
+ throw new Error(
187
+ `${file.replace(/\\/g, "/")} has no web page next to it. Add ${path.join(path.dirname(file), "page.tsx").replace(/\\/g, "/")}: it is the route's web screen and the fallback on every platform.`
188
+ );
189
+ }
190
+ }
191
+ return { pages, modules, pageFiles, nativePages, nativeLayouts };
192
+ }
193
+ function scanPlatformRouteFiles(appDir, files, nativePages, nativeLayouts) {
194
+ const seen = /* @__PURE__ */ new Map();
195
+ for (const file of [...files].sort()) {
196
+ const normalized = file.replace(/\\/g, "/");
197
+ const match = PLATFORM_FILE.exec(path.posix.basename(normalized));
198
+ if (!match) continue;
199
+ const kind = match[1] ?? "page";
200
+ const platform = match[2] ?? match[3];
201
+ const twin = path.posix.join(path.posix.dirname(normalized), `${kind}.tsx`);
202
+ if (kind === "page" && parseRouteSlotFile(twin)) continue;
203
+ const dir = path.posix.dirname(normalized);
204
+ const pattern = kind === "page" ? createRoutePattern(parseRoutePath(twin)) : dir === "." ? "/" : `/${dir}`;
205
+ const key = `${kind}\0${pattern}\0${platform}`;
206
+ const previous = seen.get(key);
207
+ if (previous) {
208
+ throw new Error(
209
+ `Duplicate ${platform} ${kind} for "${pattern}": found ${previous} and ${normalized} in ${appDir}. Keep one.`
210
+ );
211
+ }
212
+ seen.set(key, normalized);
213
+ const target = kind === "page" ? nativePages : nativeLayouts;
214
+ const entry = { ...target.get(pattern) };
215
+ entry[platform] = path.join(appDir, normalized);
216
+ target.set(pattern, entry);
217
+ }
218
+ }
219
+
220
+ export {
221
+ generateRouteTypes,
222
+ createRouteTypeDeclarations,
223
+ scanRoutePatterns
224
+ };
@@ -4,14 +4,14 @@ import {
4
4
  loadFarmDocsPage,
5
5
  resolveFarmDocsContentDir,
6
6
  toFarmDocsMarkdownPage
7
- } from "./chunk-GXSMF7UR.mjs";
7
+ } from "./chunk-4GJJ65RB.mjs";
8
8
  import {
9
9
  docsEngine,
10
10
  loadFarmDocsEngine
11
11
  } from "./chunk-VE3FWJBO.mjs";
12
12
  import {
13
13
  resolveDocsConfig
14
- } from "./chunk-VJXLUTBM.mjs";
14
+ } from "./chunk-JF5CNHHF.mjs";
15
15
  import {
16
16
  getFarmDocsAdapterConfigModule,
17
17
  isSecretDocsConfigKey
@@ -1,6 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkFGJQS4ECcjs = require('./chunk-FGJQS4EC.cjs');
3
+ var _chunkCKPTIEDXcjs = require('./chunk-CKPTIEDX.cjs');
4
+
5
+
6
+
7
+
8
+
9
+ var _chunkFK25QSVCcjs = require('./chunk-FK25QSVC.cjs');
4
10
 
5
11
 
6
12
 
@@ -16,7 +22,8 @@ function handleFarmFormActionRequest(request, config) {
16
22
  return _server.handleAction.call(void 0, request, {
17
23
  allowedOrigins: config.allowedOrigins,
18
24
  bodySizeLimit: config.bodySizeLimit,
19
- run: (actionRequest, action) => _chunkFGJQS4ECcjs.runWithServerActionRequest.call(void 0, actionRequest, action),
25
+ // The result islx sends is the envelope, not the action's own type.
26
+ run: (actionRequest, action) => runFarmFormAction(actionRequest, action),
20
27
  mapError(error) {
21
28
  const redirect = _chunk7JUIK547cjs.getFarmRedirectError.call(void 0, error);
22
29
  if (redirect) return { redirect: redirect.url };
@@ -26,6 +33,25 @@ function handleFarmFormActionRequest(request, config) {
26
33
  onError: (error) => console.error("[Farm.js] Server action failed:", error)
27
34
  });
28
35
  }
36
+ async function runFarmFormAction(request, action) {
37
+ if (!request.headers.has(FARM_FORM_ACTION_HEADER)) {
38
+ return _chunkFK25QSVCcjs.runWithServerActionRequest.call(void 0, request, action);
39
+ }
40
+ try {
41
+ return await _chunkFK25QSVCcjs.runWithServerActionRequest.call(void 0, request, async () => {
42
+ const value = await action();
43
+ return {
44
+ [_chunkCKPTIEDXcjs.FARM_ACTION_RESULT_KEY]: { invalidations: [..._chunkFK25QSVCcjs.getServerActionInvalidations.call(void 0, )] },
45
+ value
46
+ };
47
+ });
48
+ } catch (error) {
49
+ if (!_chunkFK25QSVCcjs.serializeServerFnFailure.call(void 0, error)) throw error;
50
+ return {
51
+ [_chunkCKPTIEDXcjs.FARM_ACTION_RESULT_KEY]: { invalidations: [], error: _chunkFK25QSVCcjs.sanitizeServerActionError.call(void 0, error) }
52
+ };
53
+ }
54
+ }
29
55
 
30
56
 
31
57
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateFarmDocsSearchBootstrapRuntime,
3
3
  isFarmDocsSearchEnabled
4
- } from "./chunk-WB6XES4V.mjs";
4
+ } from "./chunk-ALEUMLJN.mjs";
5
5
  import {
6
6
  FARM_NAVIGATION_HEAD_SELECTOR
7
7
  } from "./chunk-WYL4ODZ4.mjs";
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-N77JBPLC.mjs";
22
22
  import {
23
23
  matchesFarmIfNoneMatch
24
- } from "./chunk-C6U66WWF.mjs";
24
+ } from "./chunk-GFT5AHAT.mjs";
25
25
 
26
26
  // src/docs/handler.ts
27
27
  import {
@@ -1307,6 +1307,13 @@ function highlightCodeBlock(code) {
1307
1307
  function renderCodeCopyButton(className = "code-copy") {
1308
1308
  return `<button class="${className}" type="button" data-code-copy data-copied="false" aria-label="Copy code" title="Copy code"><svg class="code-copy-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg><svg class="code-copy-check" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M20 6 9 17l-5-5"></path></svg></button>`;
1309
1309
  }
1310
+ var SCRIPT_URL_SCHEME = /^(?:javascript|vbscript|data):/i;
1311
+ function isScriptUrl(href) {
1312
+ const url = href.replace(/[\t\n\r]/g, "");
1313
+ let start = 0;
1314
+ while (start < url.length && url.charCodeAt(start) <= 32) start++;
1315
+ return SCRIPT_URL_SCHEME.test(url.slice(start));
1316
+ }
1310
1317
  function renderMarkdownDocument(body, depth) {
1311
1318
  const slug = createSlugger();
1312
1319
  const renderer = new Renderer();
@@ -1342,6 +1349,7 @@ function renderMarkdownDocument(body, depth) {
1342
1349
  `;
1343
1350
  renderer.codespan = (code) => `<code>${escapeHtml(code)}</code>`;
1344
1351
  renderer.link = (href, title, text) => {
1352
+ if (href && isScriptUrl(href)) return text;
1345
1353
  const safeHref = href || "";
1346
1354
  const titleAttribute = title ? ` title="${escapeAttribute(title)}"` : "";
1347
1355
  return `<a href="${escapeAttribute(safeHref)}"${titleAttribute}>${text}</a>`;
@@ -17,6 +17,9 @@ var _chunkOYZXVBZPcjs = require('./chunk-OYZXVBZP.cjs');
17
17
  var _chunkDMAP4RNDcjs = require('./chunk-DMAP4RND.cjs');
18
18
 
19
19
 
20
+ var _chunkSUCDVKUBcjs = require('./chunk-SUCDVKUB.cjs');
21
+
22
+
20
23
  var _chunkDXUXQP2Tcjs = require('./chunk-DXUXQP2T.cjs');
21
24
 
22
25
  // src/routes.ts
@@ -535,7 +538,7 @@ async function resolveProgrammaticRouteProps(route, props) {
535
538
  ...props,
536
539
  params,
537
540
  search,
538
- searchParams: Promise.resolve(search)
541
+ searchParams: _chunkSUCDVKUBcjs.createFarmSearchParams.call(void 0, search)
539
542
  };
540
543
  const routeContextProps = {
541
544
  ...baseProps,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isRouteSlotSegment,
3
3
  parseInterceptionMarker
4
- } from "./chunk-CBJKDB6F.mjs";
4
+ } from "./chunk-IRSS4HS4.mjs";
5
5
 
6
6
  // src/middleware/path.ts
7
7
  function appendMiddlewareRoutePath(routePath, directoryName) {
@@ -1,8 +1,10 @@
1
1
  import {
2
- attachRevalidationListeners,
2
+ attachRevalidationListeners
3
+ } from "./chunk-Z64V4WZI.mjs";
4
+ import {
3
5
  createServerQueryCallKey,
4
6
  fetchServerQuery
5
- } from "./chunk-BNMHXVLL.mjs";
7
+ } from "./chunk-XMHERKSE.mjs";
6
8
  import {
7
9
  getFarmClientDataCache
8
10
  } from "./chunk-C64XOPBZ.mjs";
@@ -1,3 +1,24 @@
1
+ import {
2
+ resolveFarmPlatform
3
+ } from "./chunk-SMUW7UST.mjs";
4
+
5
+ // src/desktop/dev-guard-plugin.ts
6
+ function farmDesktopDevGuardPlugin(basePath) {
7
+ return {
8
+ name: "farm:desktop-dev-guard",
9
+ enforce: "pre",
10
+ apply: "serve",
11
+ configureServer: {
12
+ order: "pre",
13
+ async handler(server) {
14
+ if (resolveFarmPlatform() !== "desktop") return;
15
+ const { createFarmDesktopDevGuard } = await import("./dev-guard-4PFQNXQX.mjs");
16
+ server.middlewares.use(createFarmDesktopDevGuard(server, { basePath: basePath || "" }));
17
+ }
18
+ }
19
+ };
20
+ }
21
+
1
22
  // src/react-refresh.ts
2
23
  import { createRequire } from "module";
3
24
  import { pathToFileURL } from "url";
@@ -81,6 +102,7 @@ async function createFarmReactRefreshPlugins() {
81
102
  }
82
103
 
83
104
  export {
105
+ farmDesktopDevGuardPlugin,
84
106
  isFarmReactRefreshActive,
85
107
  loadFarmReactPlugin,
86
108
  createFarmReactRefreshPlugins
@@ -396,7 +396,13 @@ function configMiddlewareMayHandlePath(config, pathname) {
396
396
  });
397
397
  }
398
398
  function appMiddlewareMayHandlePath(middlewareRoutes, pathname) {
399
- return middlewareRoutes.some((route) => _chunk5DX3O6TTcjs.matchesMiddlewareRoute.call(void 0, pathname, route).matched);
399
+ return middlewareRoutes.some((route) => {
400
+ if (!_chunk5DX3O6TTcjs.matchesMiddlewareRoute.call(void 0, pathname, route).matched) return false;
401
+ if (!route.config || route.config === "unknown") return true;
402
+ if (!route.config.matcher && !route.config.exclude) return true;
403
+ const compiled = _chunk5DX3O6TTcjs.compileMiddlewareConfig.call(void 0, route.config);
404
+ return _chunk5DX3O6TTcjs.matchesCompiledMiddlewareConfig.call(void 0, pathname, compiled, {}).matched;
405
+ });
400
406
  }
401
407
  var CATCH_ALL_PROBE = "/__farm-listing-probe__/0";
402
408
  function isPathSpecificMatcher(matcher) {
@@ -396,7 +396,13 @@ function configMiddlewareMayHandlePath(config, pathname) {
396
396
  });
397
397
  }
398
398
  function appMiddlewareMayHandlePath(middlewareRoutes, pathname) {
399
- return middlewareRoutes.some((route) => matchesMiddlewareRoute(pathname, route).matched);
399
+ return middlewareRoutes.some((route) => {
400
+ if (!matchesMiddlewareRoute(pathname, route).matched) return false;
401
+ if (!route.config || route.config === "unknown") return true;
402
+ if (!route.config.matcher && !route.config.exclude) return true;
403
+ const compiled = compileMiddlewareConfig(route.config);
404
+ return matchesCompiledMiddlewareConfig(pathname, compiled, {}).matched;
405
+ });
400
406
  }
401
407
  var CATCH_ALL_PROBE = "/__farm-listing-probe__/0";
402
408
  function isPathSpecificMatcher(matcher) {
@@ -3,7 +3,7 @@
3
3
  var _chunkUNJZGVPUcjs = require('./chunk-UNJZGVPU.cjs');
4
4
 
5
5
 
6
- var _chunk5566GNEGcjs = require('./chunk-5566GNEG.cjs');
6
+ var _chunkLIFUPCXWcjs = require('./chunk-LIFUPCXW.cjs');
7
7
 
8
8
  // src/image-pattern.ts
9
9
  var compiledPatterns = /* @__PURE__ */ new WeakMap();
@@ -582,7 +582,7 @@ function createOptimizedImageResponse(request, image) {
582
582
  // document, it still cannot run script or load anything.
583
583
  "content-security-policy": "default-src 'none'; sandbox"
584
584
  });
585
- if (_chunk5566GNEGcjs.matchesFarmIfNoneMatch.call(void 0, request.headers.get("if-none-match"), image.etag)) {
585
+ if (_chunkLIFUPCXWcjs.matchesFarmIfNoneMatch.call(void 0, request.headers.get("if-none-match"), image.etag)) {
586
586
  headers.delete("content-length");
587
587
  return new Response(null, { status: 304, headers });
588
588
  }
@@ -4,7 +4,7 @@ import {
4
4
  getServerActionSignal,
5
5
  isServerFnFailure,
6
6
  runWithServerActionRequest
7
- } from "./chunk-JOHXK4BB.mjs";
7
+ } from "./chunk-FSQMN2MQ.mjs";
8
8
  import {
9
9
  applyFarmCacheInvalidationTargets
10
10
  } from "./chunk-RLEALQEN.mjs";