@farm.js/core 0.1.50 → 0.1.51-beta.1

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 (388) hide show
  1. package/README.md +163 -3
  2. package/dist/{agent-mcp-CIMH324y.d.mts → agent-mcp.d-BPzpKBHQ.d.mts} +1 -1
  3. package/dist/{agent-mcp-9BMbRgg_.d.ts → agent-mcp.d-ZuuNgrkQ.d.ts} +1 -1
  4. package/dist/agent-runtime.cjs +3 -3
  5. package/dist/agent-runtime.d.mts +13 -13
  6. package/dist/agent-runtime.d.ts +13 -13
  7. package/dist/agent-runtime.mjs +2 -2
  8. package/dist/{analyzer-CN7C74WX.cjs → analyzer-AZULAOPL.cjs} +2 -2
  9. package/dist/{analyzer-DDW34OMC.mjs → analyzer-V74FTD2F.mjs} +1 -1
  10. package/dist/api/client.d.mts +4 -4
  11. package/dist/api/client.d.ts +4 -4
  12. package/dist/api/route-manager.cjs +5 -5
  13. package/dist/api/route-manager.d.mts +19 -19
  14. package/dist/api/route-manager.d.ts +19 -19
  15. package/dist/api/route-manager.mjs +4 -4
  16. package/dist/api/runtime.d.mts +15 -15
  17. package/dist/api/runtime.d.ts +15 -15
  18. package/dist/{api-client-CvI5oOBE.d.ts → api-client.d-BWcqZciH.d.ts} +3 -3
  19. package/dist/{api-client-CFdv-Xgh.d.mts → api-client.d-CeA6tNA6.d.mts} +3 -3
  20. package/dist/api.cjs +7 -7
  21. package/dist/api.d.mts +21 -21
  22. package/dist/api.d.ts +21 -21
  23. package/dist/api.mjs +6 -6
  24. package/dist/{app-manifest-D0kaXdwu.d.ts → app-manifest.d-BJDcZn3W.d.mts} +1 -1
  25. package/dist/{app-manifest-CQDJOKL2.d.mts → app-manifest.d-HWhqbP2X.d.ts} +1 -1
  26. package/dist/app-markdown.d.mts +14 -14
  27. package/dist/app-markdown.d.ts +14 -14
  28. package/dist/{app-BWibTHVT.d.ts → app.d-B5EWdob-.d.ts} +12 -10
  29. package/dist/{app-DVJ13FPA.d.mts → app.d-DOGW1KI8.d.mts} +12 -10
  30. package/dist/base-path.d-BOUV5ozD.d.mts +10 -0
  31. package/dist/base-path.d-BOUV5ozD.d.ts +10 -0
  32. package/dist/{chunk-B5S2JS6M.cjs → chunk-2756SHCI.cjs} +372 -305
  33. package/dist/{chunk-RWT2BTJT.cjs → chunk-2IAPKPEB.cjs} +6 -6
  34. package/dist/{chunk-2G63BIRL.mjs → chunk-2KVDHNQS.mjs} +8 -11
  35. package/dist/{chunk-NJVFPJ2Y.cjs → chunk-3OWVWZ6R.cjs} +28 -2
  36. package/dist/{chunk-WVBUXNBX.mjs → chunk-5A5GAZ75.mjs} +296 -106
  37. package/dist/{chunk-GERUXONA.cjs → chunk-5A77OEIG.cjs} +4 -1
  38. package/dist/{chunk-4HBKBHVP.mjs → chunk-5ENW27SL.mjs} +1 -1
  39. package/dist/{chunk-FACTMUPI.cjs → chunk-5IONBVJY.cjs} +33 -22
  40. package/dist/{chunk-X2EL3BLH.cjs → chunk-5N7QAGEA.cjs} +36 -9
  41. package/dist/{chunk-DGOLAZLV.cjs → chunk-65Y5SIBH.cjs} +1 -1
  42. package/dist/{chunk-MTB57GOK.mjs → chunk-724WT3NI.mjs} +4 -2
  43. package/dist/{chunk-C73RIAEF.mjs → chunk-72NBDVWQ.mjs} +18 -7
  44. package/dist/{chunk-VCKGOXFI.cjs → chunk-76GHW3WI.cjs} +7 -1
  45. package/dist/{chunk-ZIBIE7AH.mjs → chunk-7UPCJDB5.mjs} +7 -1
  46. package/dist/{chunk-CPXDDWGL.mjs → chunk-AER5I65K.mjs} +1 -1
  47. package/dist/{chunk-RHOR2J6V.cjs → chunk-AGR7VJH2.cjs} +1 -1
  48. package/dist/{chunk-WB6XES4V.mjs → chunk-ALEUMLJN.mjs} +34 -5
  49. package/dist/{chunk-OD6WM3I7.mjs → chunk-AV26KHTG.mjs} +1 -1
  50. package/dist/{chunk-L6QDME5Z.cjs → chunk-B3GZAQSC.cjs} +3 -3
  51. package/dist/{chunk-ZLOQQ2UF.mjs → chunk-BSEKNTMS.mjs} +107 -40
  52. package/dist/{chunk-WAPQWAE6.cjs → chunk-CECUDGXQ.cjs} +9 -8
  53. package/dist/chunk-CKPTIEDX.cjs +12 -0
  54. package/dist/{chunk-IUQLRTTO.mjs → chunk-CO6UYM2D.mjs} +14 -1
  55. package/dist/{chunk-SHJJM6OG.mjs → chunk-CZ35L6PL.mjs} +9 -2
  56. package/dist/{chunk-EQMTJBB7.cjs → chunk-DZZHTMWM.cjs} +35 -6
  57. package/dist/{chunk-3ATXWZPH.cjs → chunk-E36C43IX.cjs} +13 -16
  58. package/dist/{chunk-J2ZEVDEK.cjs → chunk-EHB77D5U.cjs} +3 -3
  59. package/dist/{chunk-KO2NWUKN.mjs → chunk-EIMK7D2D.mjs} +33 -6
  60. package/dist/{chunk-CY7H5KS4.cjs → chunk-EKJYE4Y7.cjs} +2 -2
  61. package/dist/{chunk-2VCC3GVC.mjs → chunk-EOSFVNXZ.mjs} +1 -1
  62. package/dist/{chunk-IWJKJDNW.mjs → chunk-EWC76P5D.mjs} +53 -32
  63. package/dist/{chunk-WQGRD5BJ.cjs → chunk-EX6ZSN5P.cjs} +1 -16
  64. package/dist/{chunk-6QA2SXVH.cjs → chunk-FK25QSVC.cjs} +2 -1
  65. package/dist/{chunk-BW6SCVYX.mjs → chunk-FSQMN2MQ.mjs} +1 -0
  66. package/dist/{chunk-2H3FJYY6.mjs → chunk-FSXSQQTV.mjs} +3 -2
  67. package/dist/chunk-GNZIAJGB.mjs +358 -0
  68. package/dist/{chunk-TXK4D46O.mjs → chunk-H3ASZDT7.mjs} +21 -1
  69. package/dist/{chunk-B6PREBN6.cjs → chunk-HASX6DC7.cjs} +8 -8
  70. package/dist/{chunk-76R5GJER.mjs → chunk-I3EFXUAR.mjs} +60 -13
  71. package/dist/{chunk-HYN3LLG7.cjs → chunk-IFBINMI4.cjs} +3 -3
  72. package/dist/{chunk-CBJKDB6F.mjs → chunk-IRSS4HS4.mjs} +1 -1
  73. package/dist/{chunk-4T25YCZ5.cjs → chunk-JVBNKWLV.cjs} +81 -34
  74. package/dist/{chunk-VOZ5DI7D.mjs → chunk-JWI5PUO2.mjs} +6 -2
  75. package/dist/{chunk-YAXOEAND.cjs → chunk-KHXAJ2KA.cjs} +6 -6
  76. package/dist/{chunk-2DEPNLXK.mjs → chunk-KMB5BMFX.mjs} +122 -12
  77. package/dist/{chunk-M7LKA632.mjs → chunk-KU7MBLDZ.mjs} +1 -1
  78. package/dist/{chunk-WXHDVXJE.mjs → chunk-KY32FWK7.mjs} +2 -2
  79. package/dist/{chunk-EQWWOQTK.cjs → chunk-LEIXUFJN.cjs} +6 -2
  80. package/dist/{chunk-2GLQSIZD.mjs → chunk-LMFJCXDD.mjs} +1 -1
  81. package/dist/{chunk-IXSMFKZ2.cjs → chunk-LNM57D3H.cjs} +4 -4
  82. package/dist/{chunk-5V4KZOZO.mjs → chunk-LZ4SB57H.mjs} +2 -2
  83. package/dist/chunk-N4AQNEXR.cjs +17 -0
  84. package/dist/{chunk-J37KTQIA.cjs → chunk-NK2VWS7P.cjs} +52 -3
  85. package/dist/{chunk-X3HOVNHI.mjs → chunk-NN3MOPSI.mjs} +7 -7
  86. package/dist/{chunk-JZMZKABS.cjs → chunk-NWUHS6GV.cjs} +3 -2
  87. package/dist/{chunk-XLLVWLWO.mjs → chunk-PIHKO25G.mjs} +1 -1
  88. package/dist/chunk-PIUTGRDI.cjs +358 -0
  89. package/dist/{chunk-JJOWY3XD.mjs → chunk-QAIAFCRZ.mjs} +8 -6
  90. package/dist/{chunk-Q3UU2KXC.mjs → chunk-QMDU6QHN.mjs} +4 -1
  91. package/dist/{chunk-75WWOZ5C.mjs → chunk-QOSDWGKT.mjs} +1 -1
  92. package/dist/{chunk-GOOK2J2W.cjs → chunk-RMPNYUGT.cjs} +9 -7
  93. package/dist/{chunk-HWCHIBJZ.mjs → chunk-SCRC5AMM.mjs} +5 -5
  94. package/dist/{chunk-PXEXOQ5R.mjs → chunk-SHS6KXOZ.mjs} +1 -1
  95. package/dist/{chunk-ETF5C6HR.cjs → chunk-SJ23LJ3N.cjs} +3 -3
  96. package/dist/{chunk-JHXJBNLY.cjs → chunk-SUCDVKUB.cjs} +21 -1
  97. package/dist/{chunk-7ONZDKVY.mjs → chunk-T4EW7AAD.mjs} +2 -2
  98. package/dist/{chunk-F5LERVY3.cjs → chunk-TT66CP3P.cjs} +13 -13
  99. package/dist/{chunk-IUBDMDZZ.cjs → chunk-UQHIWZZ6.cjs} +15 -8
  100. package/dist/{chunk-LYWAGXXW.cjs → chunk-VITZRYW3.cjs} +131 -21
  101. package/dist/{chunk-XN2MB4QZ.cjs → chunk-VQJYGZNX.cjs} +4 -4
  102. package/dist/{chunk-KGP76FSV.mjs → chunk-VS7EHLLW.mjs} +1 -1
  103. package/dist/{chunk-5PKDHKQP.cjs → chunk-WFVSAT7Y.cjs} +6 -4
  104. package/dist/{chunk-UY6HS5PF.cjs → chunk-X2AMN2WV.cjs} +10 -10
  105. package/dist/{chunk-474FO3UE.cjs → chunk-X2M4XN4V.cjs} +213 -192
  106. package/dist/chunk-X3EFRVXY.mjs +12 -0
  107. package/dist/{chunk-UCQ52TJY.mjs → chunk-X3JNB2TB.mjs} +1 -1
  108. package/dist/{chunk-IQXGHGZF.cjs → chunk-XB24LZWI.cjs} +5 -5
  109. package/dist/{chunk-BNMHXVLL.mjs → chunk-XMHERKSE.mjs} +0 -15
  110. package/dist/{chunk-CGCJ2TJU.cjs → chunk-XPMC4E2G.cjs} +3 -3
  111. package/dist/{chunk-KZH6YLND.cjs → chunk-XY4DYGSU.cjs} +603 -413
  112. package/dist/{chunk-C7425KDG.cjs → chunk-XYL4HSVC.cjs} +2 -2
  113. package/dist/{chunk-HHFMECFO.mjs → chunk-Y2G5SJFB.mjs} +2 -1
  114. package/dist/{chunk-2SVJGOAX.mjs → chunk-Y3N5BFRJ.mjs} +3 -3
  115. package/dist/{chunk-Z5MZDFX4.cjs → chunk-YIHRZBD7.cjs} +14 -1
  116. package/dist/chunk-Z5A6CNV2.mjs +60 -0
  117. package/dist/chunk-Z64V4WZI.mjs +17 -0
  118. package/dist/{chunk-E2BMCNMJ.cjs → chunk-ZOWNWHK6.cjs} +2 -2
  119. package/dist/{chunk-C5JXCUKR.mjs → chunk-ZQ5BDNKW.mjs} +51 -2
  120. package/dist/client/lifecycle.d.mts +1 -1
  121. package/dist/client/lifecycle.d.ts +1 -1
  122. package/dist/{client-plugins-BPfltM5m.d.ts → client-plugins.d-C0n8Yhh-.d.ts} +60 -14
  123. package/dist/{client-plugins-D4RO59f0.d.mts → client-plugins.d-C_3CdALC.d.mts} +60 -14
  124. package/dist/client-plugins.d.mts +13 -13
  125. package/dist/client-plugins.d.ts +13 -13
  126. package/dist/client.cjs +5 -4
  127. package/dist/client.d.mts +24 -24
  128. package/dist/client.d.ts +24 -24
  129. package/dist/client.mjs +4 -3
  130. package/dist/config.d.mts +13 -13
  131. package/dist/config.d.ts +13 -13
  132. package/dist/cron.cjs +4 -4
  133. package/dist/cron.mjs +3 -3
  134. package/dist/desktop.d.mts +14 -14
  135. package/dist/desktop.d.ts +14 -14
  136. package/dist/{dev-guard-YLO5DE3H.cjs → dev-guard-2UW2KERP.cjs} +2 -2
  137. package/dist/{dev-guard-4PFQNXQX.mjs → dev-guard-ONNMVQUN.mjs} +1 -1
  138. package/dist/{devtools-STG7HPRV.mjs → devtools-BU5IT2PD.mjs} +8 -8
  139. package/dist/{devtools-N5XTOECL.cjs → devtools-KJFUE5FO.cjs} +10 -10
  140. package/dist/docs.cjs +14 -12
  141. package/dist/docs.d.mts +23 -15
  142. package/dist/docs.d.ts +23 -15
  143. package/dist/docs.mjs +13 -11
  144. package/dist/environment/vite.cjs +2 -2
  145. package/dist/environment/vite.d.mts +1 -1
  146. package/dist/environment/vite.d.ts +1 -1
  147. package/dist/environment/vite.mjs +1 -1
  148. package/dist/{generate-route-types-TF5Wwtvz.d.mts → generate-route-types.d-BL2pq6xC.d.ts} +1 -1
  149. package/dist/{generate-route-types-DQP0cUzk.d.ts → generate-route-types.d-BoVDU8qX.d.mts} +1 -1
  150. package/dist/i18n/client.d.mts +2 -2
  151. package/dist/i18n/client.d.ts +2 -2
  152. package/dist/i18n/index.d.mts +3 -3
  153. package/dist/i18n/index.d.ts +3 -3
  154. package/dist/i18n/server.d.mts +5 -5
  155. package/dist/i18n/server.d.ts +5 -5
  156. package/dist/image/server.d.mts +1 -1
  157. package/dist/image/server.d.ts +1 -1
  158. package/dist/image/sharp.d.mts +1 -1
  159. package/dist/image/sharp.d.ts +1 -1
  160. package/dist/image.d.mts +1 -1
  161. package/dist/image.d.ts +1 -1
  162. package/dist/index.cjs +48 -44
  163. package/dist/{index-C-N3Pwg-.d.ts → index.d-B6M_8kmo.d.ts} +2 -2
  164. package/dist/{index-D3l4tREW.d.ts → index.d-BNNDpql4.d.ts} +2 -2
  165. package/dist/{index-DPUAPho_.d.mts → index.d-BqcfqJvt.d.mts} +2 -2
  166. package/dist/{index-k8o8eUOd.d.mts → index.d-CsGxS-hZ.d.mts} +2 -2
  167. package/dist/index.d.mts +42 -42
  168. package/dist/index.d.ts +42 -42
  169. package/dist/index.mjs +47 -43
  170. package/dist/instrumentation.d.mts +2 -2
  171. package/dist/instrumentation.d.ts +2 -2
  172. package/dist/integrations.cjs +3 -3
  173. package/dist/integrations.d.mts +13 -13
  174. package/dist/integrations.d.ts +13 -13
  175. package/dist/integrations.mjs +2 -2
  176. package/dist/internal/app-markdown-runtime.d.mts +14 -14
  177. package/dist/internal/app-markdown-runtime.d.ts +14 -14
  178. package/dist/internal/build-runtime.cjs +36 -35
  179. package/dist/internal/build-runtime.d.mts +16 -16
  180. package/dist/internal/build-runtime.d.ts +16 -16
  181. package/dist/internal/build-runtime.mjs +35 -34
  182. package/dist/internal/cli-runtime.cjs +18 -18
  183. package/dist/internal/cli-runtime.mjs +17 -17
  184. package/dist/internal/client-error-overlay.cjs +4 -4
  185. package/dist/internal/client-error-overlay.mjs +1 -1
  186. package/dist/internal/client-runtime.cjs +4 -2
  187. package/dist/internal/client-runtime.d.mts +21 -21
  188. package/dist/internal/client-runtime.d.ts +21 -21
  189. package/dist/internal/client-runtime.mjs +3 -1
  190. package/dist/internal/compression-runtime.d.mts +13 -13
  191. package/dist/internal/compression-runtime.d.ts +13 -13
  192. package/dist/internal/config-runtime.cjs +10 -10
  193. package/dist/internal/config-runtime.d.mts +18 -18
  194. package/dist/internal/config-runtime.d.ts +18 -18
  195. package/dist/internal/config-runtime.mjs +9 -9
  196. package/dist/internal/form-actions.cjs +4 -3
  197. package/dist/internal/form-actions.d.mts +1 -1
  198. package/dist/internal/form-actions.d.ts +1 -1
  199. package/dist/internal/form-actions.mjs +3 -2
  200. package/dist/internal/infra-analytics-runtime.cjs +5 -5
  201. package/dist/internal/infra-analytics-runtime.mjs +3 -3
  202. package/dist/internal/island-value-store.d.mts +1 -1
  203. package/dist/internal/island-value-store.d.ts +1 -1
  204. package/dist/internal/islands-runtime.cjs +56 -0
  205. package/dist/internal/islands-runtime.d.mts +1 -1
  206. package/dist/internal/islands-runtime.d.ts +1 -1
  207. package/dist/internal/islands-runtime.mjs +57 -1
  208. package/dist/internal/isolated-boundary.d.mts +2 -2
  209. package/dist/internal/isolated-boundary.d.ts +2 -2
  210. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  211. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  212. package/dist/internal/production-runtime.cjs +15 -8
  213. package/dist/internal/production-runtime.d.mts +46 -30
  214. package/dist/internal/production-runtime.d.ts +46 -30
  215. package/dist/internal/production-runtime.mjs +14 -7
  216. package/dist/internal/server-fn-transform.cjs +13 -0
  217. package/dist/internal/server-fn-transform.d.mts +24 -0
  218. package/dist/internal/server-fn-transform.d.ts +24 -0
  219. package/dist/internal/server-fn-transform.mjs +13 -0
  220. package/dist/internal/server-tree.d.mts +1 -1
  221. package/dist/internal/server-tree.d.ts +1 -1
  222. package/dist/markdown.d.mts +13 -13
  223. package/dist/markdown.d.ts +13 -13
  224. package/dist/middleware.cjs +8 -8
  225. package/dist/middleware.d.mts +15 -15
  226. package/dist/middleware.d.ts +15 -15
  227. package/dist/middleware.mjs +7 -7
  228. package/dist/mobile.d.mts +37 -10
  229. package/dist/mobile.d.ts +37 -10
  230. package/dist/{navigation-delegate-8xg3Zvp4.d.ts → navigation-delegate.d-C0BbdUgN.d.mts} +1 -1
  231. package/dist/{navigation-delegate-ji6elCKy.d.mts → navigation-delegate.d-jArRF0ZP.d.ts} +1 -1
  232. package/dist/navigation.d.mts +17 -17
  233. package/dist/navigation.d.ts +17 -17
  234. package/dist/{nitro-YPSZBYDK.cjs → nitro-CK7M4RMY.cjs} +11 -11
  235. package/dist/{nitro-2Q5NVY7L.mjs → nitro-R444AF3O.mjs} +7 -7
  236. package/dist/observability.d.mts +1 -1
  237. package/dist/observability.d.ts +1 -1
  238. package/dist/plugin.cjs +29 -27
  239. package/dist/plugin.d.mts +17 -17
  240. package/dist/plugin.d.ts +17 -17
  241. package/dist/plugin.mjs +28 -26
  242. package/dist/{production-runtime-TdKaYRj0.d.ts → production-runtime.d-DFaQ1qaV.d.mts} +3 -3
  243. package/dist/{production-runtime-DXnQQkQf.d.mts → production-runtime.d-UnXmSS_S.d.ts} +3 -3
  244. package/dist/{programmatic-routes-client-Dh1SDLSM.d.mts → programmatic-routes-client.d-BIowUXQC.d.mts} +10 -2
  245. package/dist/{programmatic-routes-client-BwiTndEC.d.ts → programmatic-routes-client.d-VZ0qcbH4.d.ts} +10 -2
  246. package/dist/query/client.d.mts +1 -1
  247. package/dist/query/client.d.ts +1 -1
  248. package/dist/query/index.d.mts +1 -1
  249. package/dist/query/index.d.ts +1 -1
  250. package/dist/query/server.d.mts +1 -1
  251. package/dist/query/server.d.ts +1 -1
  252. package/dist/{render-plan-BPbwRbuN.d.ts → render-plan.d-BB6KrYjP.d.ts} +2 -2
  253. package/dist/{render-plan-BvCGXF6K.d.mts → render-plan.d-BNeqyPyJ.d.mts} +2 -2
  254. package/dist/renderer-client.cjs +8 -6
  255. package/dist/renderer-client.d.mts +19 -19
  256. package/dist/renderer-client.d.ts +19 -19
  257. package/dist/renderer-client.mjs +4 -2
  258. package/dist/{request-C_xTkJib.d.mts → request.d-BV1munmx.d.mts} +1 -1
  259. package/dist/{request-B8PGTZNR.d.ts → request.d-Bxhghm76.d.ts} +1 -1
  260. package/dist/request.d.mts +14 -14
  261. package/dist/request.d.ts +14 -14
  262. package/dist/{resolver-CJ-D9nP-.d.ts → resolver.d-BHyZgpa7.d.ts} +1 -1
  263. package/dist/{resolver-TDyZKgKI.d.mts → resolver.d-JnZKKsc5.d.mts} +1 -1
  264. package/dist/response.d-BolW0Vx_.d.mts +10 -0
  265. package/dist/response.d-BolW0Vx_.d.ts +10 -0
  266. package/dist/{route-rendering-DlddURL1.d.mts → route-rendering.d-BIf7zE9d.d.ts} +1 -1
  267. package/dist/{route-rendering-RNtcj607.d.ts → route-rendering.d-DShqKlgK.d.mts} +1 -1
  268. package/dist/{route-DFhZj6jN.d.ts → route.d-BaVH3V0w.d.mts} +1 -1
  269. package/dist/{route-2_yXC6gv.d.mts → route.d-DBTEqifW.d.ts} +1 -1
  270. package/dist/{router-B97eB0Mq.d.mts → router.d-BE7i84fb.d.mts} +1 -1
  271. package/dist/{router-qUVaoEN8.d.ts → router.d-Bw3K3b0a.d.ts} +1 -1
  272. package/dist/routes.cjs +3 -2
  273. package/dist/{routes-8PT9cl60.d.ts → routes.d-DVZQL0-H.d.ts} +3 -3
  274. package/dist/{routes-kEUsXHx3.d.mts → routes.d-_5tBQexL.d.mts} +3 -3
  275. package/dist/routes.d.mts +14 -14
  276. package/dist/routes.d.ts +14 -14
  277. package/dist/routes.mjs +2 -1
  278. package/dist/{rsc-pipeline-T3775JUA.mjs → rsc-pipeline-FBM6NFYY.mjs} +13 -13
  279. package/dist/{rsc-pipeline-L4XOZ2TE.cjs → rsc-pipeline-IQI5XQLS.cjs} +14 -14
  280. package/dist/{runtime-HRSFC4ZC.mjs → runtime-2JYIDUON.mjs} +14 -14
  281. package/dist/{runtime-BIBGJO7V.cjs → runtime-DXEVFYLE.cjs} +16 -16
  282. package/dist/{runtime-CihDZ2Rn.d.mts → runtime.d-3iJAKptR.d.mts} +2 -2
  283. package/dist/{runtime-C4CmlOOh.d.ts → runtime.d-BtL3PCL3.d.ts} +2 -2
  284. package/dist/{runtime-C8GUnNeP.d.ts → runtime.d-CQgoYR0Q.d.mts} +4 -4
  285. package/dist/{runtime-CaDswfWi.d.mts → runtime.d-CfhaLPl-.d.ts} +4 -4
  286. package/dist/{schema-dev-notice-LZ5NXGLN.mjs → schema-dev-notice-F6QYSOAI.mjs} +2 -2
  287. package/dist/{schema-dev-notice-XV7GZ3QJ.cjs → schema-dev-notice-UU7DMZEU.cjs} +3 -3
  288. package/dist/{search-client-BTXL5XWD.mjs → search-client-OXH6GBNO.mjs} +5 -3
  289. package/dist/search-client-ZZLKVO5R.cjs +15 -0
  290. package/dist/server-action-security.cjs +2 -2
  291. package/dist/server-action-security.d.mts +1 -1
  292. package/dist/server-action-security.d.ts +1 -1
  293. package/dist/server-action-security.mjs +1 -1
  294. package/dist/server-fn-client.d.mts +5 -5
  295. package/dist/server-fn-client.d.ts +5 -5
  296. package/dist/server-fn.cjs +3 -3
  297. package/dist/server-fn.d.mts +3 -3
  298. package/dist/server-fn.d.ts +3 -3
  299. package/dist/server-fn.mjs +2 -2
  300. package/dist/server-plugins.d.mts +14 -14
  301. package/dist/server-plugins.d.ts +14 -14
  302. package/dist/server-query-client.cjs +4 -3
  303. package/dist/server-query-client.d.mts +5 -5
  304. package/dist/server-query-client.d.ts +5 -5
  305. package/dist/server-query-client.mjs +3 -2
  306. package/dist/server-query.cjs +4 -4
  307. package/dist/server-query.d.mts +2 -2
  308. package/dist/server-query.d.ts +2 -2
  309. package/dist/server-query.mjs +3 -3
  310. package/dist/server.cjs +64 -62
  311. package/dist/server.d.mts +28 -29
  312. package/dist/server.d.ts +28 -29
  313. package/dist/server.mjs +38 -36
  314. package/dist/{spa-router-Dlv5ofg0.d.mts → spa-router.d-C5opIgXg.d.ts} +5 -5
  315. package/dist/{spa-router-qapSboKz.d.ts → spa-router.d-D63jb6nX.d.mts} +5 -5
  316. package/dist/storage.d.mts +2 -2
  317. package/dist/storage.d.ts +2 -2
  318. package/dist/testing.cjs +12 -11
  319. package/dist/testing.d.mts +14 -14
  320. package/dist/testing.d.ts +14 -14
  321. package/dist/testing.mjs +9 -8
  322. package/dist/theme/client.d.mts +1 -1
  323. package/dist/theme/client.d.ts +1 -1
  324. package/dist/theme/index.d.mts +2 -2
  325. package/dist/theme/index.d.ts +2 -2
  326. package/dist/theme/runtime.d.mts +1 -1
  327. package/dist/theme/runtime.d.ts +1 -1
  328. package/dist/theme/server.d.mts +1 -1
  329. package/dist/theme/server.d.ts +1 -1
  330. package/dist/{utils-DyvlSxFk.d.mts → utils.d-CO-U4OVZ.d.mts} +1 -1
  331. package/dist/{utils-A-cYF81u.d.ts → utils.d-CkpTqTsC.d.ts} +1 -1
  332. package/dist/version.cjs +2 -2
  333. package/dist/version.mjs +1 -1
  334. package/dist/vite.cjs +29 -27
  335. package/dist/vite.d.mts +20 -19
  336. package/dist/vite.d.ts +20 -19
  337. package/dist/vite.mjs +28 -26
  338. package/dist/workflows.cjs +4 -4
  339. package/dist/workflows.d.mts +1 -1
  340. package/dist/workflows.d.ts +1 -1
  341. package/dist/workflows.mjs +3 -3
  342. package/package.json +10 -5
  343. package/dist/base-path-leyrqXbX.d.mts +0 -19
  344. package/dist/base-path-leyrqXbX.d.ts +0 -19
  345. package/dist/chunk-OTOOJIUB.mjs +0 -34
  346. package/dist/search-client-QCYAL6AY.cjs +0 -13
  347. /package/dist/{chunk-recovery-lnQFzcQP.d.mts → chunk-recovery.d-lnQFzcQP.d.mts} +0 -0
  348. /package/dist/{chunk-recovery-lnQFzcQP.d.ts → chunk-recovery.d-lnQFzcQP.d.ts} +0 -0
  349. /package/dist/{client-cache-Deoqq-nM.d.ts → client-cache.d-Deoqq-nM.d.ts} +0 -0
  350. /package/dist/{client-cache-di_Nasxa.d.mts → client-cache.d-di_Nasxa.d.mts} +0 -0
  351. /package/dist/{config-CnhyvvmT.d.mts → config.d-CnhyvvmT.d.mts} +0 -0
  352. /package/dist/{config-CnhyvvmT.d.ts → config.d-CnhyvvmT.d.ts} +0 -0
  353. /package/dist/{endpoint-BgHn0lhl.d.ts → endpoint.d-BgHn0lhl.d.ts} +0 -0
  354. /package/dist/{endpoint-BkMSCRf6.d.mts → endpoint.d-BkMSCRf6.d.mts} +0 -0
  355. /package/dist/{image-config-CeDgNyX4.d.mts → image-config.d-CeDgNyX4.d.mts} +0 -0
  356. /package/dist/{image-config-CeDgNyX4.d.ts → image-config.d-CeDgNyX4.d.ts} +0 -0
  357. /package/dist/{instrumentation-runtime-CX9Zh-16.d.mts → instrumentation-runtime.d-CX9Zh-16.d.mts} +0 -0
  358. /package/dist/{instrumentation-runtime-CX9Zh-16.d.ts → instrumentation-runtime.d-CX9Zh-16.d.ts} +0 -0
  359. /package/dist/{island-value-protocol-BRayRghM.d.mts → island-value-protocol.d-BRayRghM.d.mts} +0 -0
  360. /package/dist/{island-value-protocol-BRayRghM.d.ts → island-value-protocol.d-BRayRghM.d.ts} +0 -0
  361. /package/dist/{island-CfGru1MO.d.mts → island.d-CfGru1MO.d.mts} +0 -0
  362. /package/dist/{island-CfGru1MO.d.ts → island.d-CfGru1MO.d.ts} +0 -0
  363. /package/dist/{layers-CcS42OGR.d.mts → layers.d-CcS42OGR.d.mts} +0 -0
  364. /package/dist/{layers-CcS42OGR.d.ts → layers.d-CcS42OGR.d.ts} +0 -0
  365. /package/dist/{lifecycle-C2aLBOwu.d.mts → lifecycle.d-C2aLBOwu.d.mts} +0 -0
  366. /package/dist/{lifecycle-C2aLBOwu.d.ts → lifecycle.d-C2aLBOwu.d.ts} +0 -0
  367. /package/dist/{observability-B2363jB6.d.mts → observability.d-B2363jB6.d.mts} +0 -0
  368. /package/dist/{observability-B2363jB6.d.ts → observability.d-B2363jB6.d.ts} +0 -0
  369. /package/dist/{params-BALtrRim.d.ts → params.d-BALtrRim.d.ts} +0 -0
  370. /package/dist/{params-ry-lxqmy.d.mts → params.d-ry-lxqmy.d.mts} +0 -0
  371. /package/dist/{production-vite-BQFAlG7n.d.mts → production-vite.d-BQFAlG7n.d.mts} +0 -0
  372. /package/dist/{production-vite-BQFAlG7n.d.ts → production-vite.d-BQFAlG7n.d.ts} +0 -0
  373. /package/dist/{route-pattern-CVsVbq5n.d.mts → route-pattern.d-CVsVbq5n.d.mts} +0 -0
  374. /package/dist/{route-pattern-CVsVbq5n.d.ts → route-pattern.d-CVsVbq5n.d.ts} +0 -0
  375. /package/dist/{server-client-bridge-DKWDl5NB.d.mts → server-client-bridge.d-DKWDl5NB.d.mts} +0 -0
  376. /package/dist/{server-client-bridge-DKWDl5NB.d.ts → server-client-bridge.d-DKWDl5NB.d.ts} +0 -0
  377. /package/dist/{server-fn-error-DrcH9cc1.d.mts → server-fn-error.d-DrcH9cc1.d.mts} +0 -0
  378. /package/dist/{server-fn-error-DrcH9cc1.d.ts → server-fn-error.d-DrcH9cc1.d.ts} +0 -0
  379. /package/dist/{server-query-runtime-DXRNhX_3.d.ts → server-query-runtime.d-DXRNhX_3.d.ts} +0 -0
  380. /package/dist/{server-query-runtime-aP52iuL5.d.mts → server-query-runtime.d-aP52iuL5.d.mts} +0 -0
  381. /package/dist/{types-BnIqOn9w.d.mts → types.d-BnIqOn9w.d.mts} +0 -0
  382. /package/dist/{types-BnIqOn9w.d.ts → types.d-BnIqOn9w.d.ts} +0 -0
  383. /package/dist/{types-C41ePjvP.d.mts → types.d-C41ePjvP.d.mts} +0 -0
  384. /package/dist/{types-C41ePjvP.d.ts → types.d-C41ePjvP.d.ts} +0 -0
  385. /package/dist/{types-DQnyD3VD.d.mts → types.d-DQnyD3VD.d.mts} +0 -0
  386. /package/dist/{types-DQnyD3VD.d.ts → types.d-DQnyD3VD.d.ts} +0 -0
  387. /package/dist/{workflows-CRMzQZ3k.d.mts → workflows.d-CRMzQZ3k.d.mts} +0 -0
  388. /package/dist/{workflows-CRMzQZ3k.d.ts → workflows.d-CRMzQZ3k.d.ts} +0 -0
@@ -0,0 +1,358 @@
1
+ // src/server-fn-transform.ts
2
+ var SERVER_FUNCTION_FACTORY_IMPORT_RE = /\bimport\s+(?:type\s+)?(?:[A-Za-z_$][\w$]*\s*,\s*)?(\{[^}]*\})\s+from\s*["']@farm.js\/core(?:\/(?:server-fn|server-query))?["']\s*;?/g;
3
+ var EXPORT_SERVER_FUNCTION_FACTORY_RE = /\bexport\s+(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*([A-Za-z_$][\w$]*)\s*(?:<[^<>]*(?:<[^<>]*>[^<>]*)*>)?\s*\(/g;
4
+ var EXPORT_DEFAULT_SERVER_FUNCTION_FACTORY_RE = /\bexport\s+default\s+([A-Za-z_$][\w$]*)\s*(?:<[^<>]*(?:<[^<>]*>[^<>]*)*>)?\s*\(/g;
5
+ var SERVER_FUNCTION_DECLARATION_RE = /(?<![.\w$])([A-Za-z_$][\w$]*)\s*=\s*([A-Za-z_$][\w$]*)\s*(?:<[^<>]*(?:<[^<>]*>[^<>]*)*>)?\s*\(/g;
6
+ var LOCAL_EXPORT_CLAUSE_RE = /\bexport\s*\{([^}]*)\}/g;
7
+ var EXPORT_DEFAULT_ALIAS_RE = /\bexport\s+default\s+([A-Za-z_$][\w$]*)\s*(?:;|(?=[\r\n])|$)/g;
8
+ var EXPORT_BINDING_ALIAS_RE = /\bexport\s+(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*([A-Za-z_$][\w$]*)\s*(?:;|(?=[,\r\n])|$)/g;
9
+ var MODULE_EXT_RE = /\.[cm]?[jt]sx?$/;
10
+ var DECLARATION_RE = /(^|\n)\s*["']([^"']+)["']\s*;?/g;
11
+ var FARM_SERVER_FN_BOUNDARY_QUERY = "?farm-server-fns";
12
+ function transformFarmServerFns(code, id, options = {}) {
13
+ const analysis = analyzeServerFnModule(code, id);
14
+ if (!analysis) return null;
15
+ const { replacements } = analysis;
16
+ const exports = replacements.map((replacement) => replacement.exportName);
17
+ if (hasModuleDirective(code, "use server")) {
18
+ return { code: applyReplacements(code, replacements, "wrapper"), exports };
19
+ }
20
+ const boundaryId = JSON.stringify(serverFnBoundaryId(id));
21
+ if (options.environment !== void 0 && options.environment !== "rsc") {
22
+ return {
23
+ code: `export { ${exports.join(", ")} } from ${boundaryId};
24
+ `,
25
+ exports
26
+ };
27
+ }
28
+ const imports = replacements.map(
29
+ (replacement) => replacement.exportName === "default" ? "default as $$farm_server_fn_boundary_default" : replacement.exportName
30
+ );
31
+ const reExports = replacements.map(
32
+ (replacement) => replacement.exportName === "default" ? "$$farm_server_fn_boundary_default as default" : replacement.exportName
33
+ );
34
+ const privateNames = replacements.map((replacement) => replacement.privateName);
35
+ return {
36
+ code: applyReplacements(code, replacements, "private") + `
37
+ import { ${imports.join(", ")} } from ${boundaryId};
38
+ export { ${[...reExports, ...privateNames].join(", ")} };
39
+ `,
40
+ exports
41
+ };
42
+ }
43
+ function createFarmServerFnBoundaryModule(code, id) {
44
+ if (hasModuleDirective(code, "use server")) return null;
45
+ const analysis = analyzeServerFnModule(code, id);
46
+ if (!analysis) return null;
47
+ const sourceId = JSON.stringify(id.split("?", 1)[0].replace(/\\/g, "/"));
48
+ const privateNames = analysis.replacements.map((replacement) => replacement.privateName);
49
+ let output = `"use server";
50
+ import { ${privateNames.join(", ")} } from ${sourceId};
51
+ `;
52
+ for (const replacement of analysis.replacements) {
53
+ const declaration = replacement.exportName === "default" ? "export default async function" : "export async function";
54
+ output += `${declaration} ${replacement.wrapperName}(input) {
55
+ return ${replacement.privateName}(input);
56
+ }
57
+ ${copyServerFunctionDescriptor(replacement.wrapperName, replacement.privateName, true)}
58
+ `;
59
+ }
60
+ return output;
61
+ }
62
+ function isFarmServerFnBoundaryId(id) {
63
+ return /[?&]farm-server-fns(?:&|$)/.test(id);
64
+ }
65
+ function serverFnBoundaryId(id) {
66
+ return `${id.split("?", 1)[0].replace(/\\/g, "/")}${FARM_SERVER_FN_BOUNDARY_QUERY}`;
67
+ }
68
+ function applyReplacements(code, replacements, mode) {
69
+ let output = code;
70
+ for (const replacement of [...replacements].sort((a, b) => b.start - a.start)) {
71
+ const declaration = `const ${replacement.privateName} = ${replacement.callExpression};
72
+ `;
73
+ const wrapper = mode === "private" ? "" : `${replacement.exportName === "default" ? "export default async function" : "export async function"} ${replacement.wrapperName}(input) {
74
+ return ${replacement.privateName}(input);
75
+ }
76
+ ${copyServerFunctionDescriptor(replacement.wrapperName, replacement.privateName, false)}`;
77
+ output = output.slice(0, replacement.start) + declaration + wrapper + output.slice(replacement.end);
78
+ }
79
+ return output;
80
+ }
81
+ function analyzeServerFnModule(code, id) {
82
+ if (!isTransformableModule(id) || !code.includes("createServerFn") && !code.includes("createServerQuery")) {
83
+ return null;
84
+ }
85
+ const factoryNames = findServerFunctionFactoryImportNames(code);
86
+ if (factoryNames.size === 0) return null;
87
+ const reExport = findServerFnReExport(code, factoryNames);
88
+ if (reExport) {
89
+ const factoryName = reExport.factory === "fn" ? "createServerFn" : "createServerQuery";
90
+ const escape = reExport.form === "clause" ? "with an export clause" : reExport.form === "default" ? "as the default export" : "through another exported binding";
91
+ const inlineForm = reExport.form === "default" ? `export default ${factoryName}(...)` : `export const ${reExport.exportName} = ${factoryName}(...)`;
92
+ throw new Error(
93
+ `Server function "${reExport.localName}" cannot be re-exported ${escape}. Export it inline instead: ${inlineForm}.`
94
+ );
95
+ }
96
+ const replacements = findServerFnExportReplacements(code, factoryNames);
97
+ if (replacements.length === 0) return null;
98
+ if (hasModuleDirective(code, "use client")) {
99
+ throw new Error(
100
+ "createServerFn and createServerQuery exports must live in a server module. Move them out of the 'use client' file."
101
+ );
102
+ }
103
+ return { replacements };
104
+ }
105
+ function isTransformableModule(id) {
106
+ const cleanId = id.split("?", 1)[0];
107
+ return MODULE_EXT_RE.test(cleanId) && !/\.d\.[cm]?ts$/.test(cleanId);
108
+ }
109
+ function findServerFunctionFactoryImportNames(code) {
110
+ const names = /* @__PURE__ */ new Map();
111
+ for (const match of code.matchAll(SERVER_FUNCTION_FACTORY_IMPORT_RE)) {
112
+ const importClause = match[1] ?? "";
113
+ const namedStart = importClause.indexOf("{");
114
+ const namedEnd = importClause.lastIndexOf("}");
115
+ if (namedStart === -1 || namedEnd === -1 || namedEnd <= namedStart) continue;
116
+ const namedImports = importClause.slice(namedStart + 1, namedEnd).split(",");
117
+ for (const specifier of namedImports) {
118
+ const normalized = specifier.trim().replace(/^type\s+/, "");
119
+ const specifierMatch = normalized.match(
120
+ /^(createServerFn|createServerQuery)(?:\s+as\s+([A-Za-z_$][\w$]*))?$/
121
+ );
122
+ if (specifierMatch) {
123
+ const factory = specifierMatch[1];
124
+ names.set(specifierMatch[2] ?? factory, factory === "createServerFn" ? "fn" : "query");
125
+ }
126
+ }
127
+ }
128
+ return names;
129
+ }
130
+ function findServerFnReExport(code, factoryNames) {
131
+ const scannable = stripCommentsAndStrings(code);
132
+ const declarations = /* @__PURE__ */ new Map();
133
+ for (const match of scannable.matchAll(SERVER_FUNCTION_DECLARATION_RE)) {
134
+ const localName = match[1];
135
+ const factoryName = match[2];
136
+ const factory = factoryName ? factoryNames.get(factoryName) : void 0;
137
+ if (localName && factory) declarations.set(localName, factory);
138
+ }
139
+ if (declarations.size === 0) return null;
140
+ for (const match of scannable.matchAll(LOCAL_EXPORT_CLAUSE_RE)) {
141
+ const clause = match[1] ?? "";
142
+ const clauseEnd = (match.index ?? 0) + match[0].length;
143
+ if (scannable.slice(clauseEnd).trimStart().startsWith("from")) continue;
144
+ for (const specifier of clause.split(",")) {
145
+ const parts = specifier.trim().split(/\s+as\s+/);
146
+ const localName = parts[0]?.trim();
147
+ if (!localName || !declarations.has(localName)) continue;
148
+ return {
149
+ localName,
150
+ exportName: parts[1]?.trim() || localName,
151
+ factory: declarations.get(localName),
152
+ form: "clause"
153
+ };
154
+ }
155
+ }
156
+ for (const match of scannable.matchAll(EXPORT_DEFAULT_ALIAS_RE)) {
157
+ const localName = match[1];
158
+ if (!localName || !declarations.has(localName)) continue;
159
+ return {
160
+ localName,
161
+ exportName: "default",
162
+ factory: declarations.get(localName),
163
+ form: "default"
164
+ };
165
+ }
166
+ for (const match of scannable.matchAll(EXPORT_BINDING_ALIAS_RE)) {
167
+ const exportName = match[1];
168
+ const localName = match[2];
169
+ if (!exportName || !localName || !declarations.has(localName)) continue;
170
+ return {
171
+ localName,
172
+ exportName,
173
+ factory: declarations.get(localName),
174
+ form: "binding"
175
+ };
176
+ }
177
+ return null;
178
+ }
179
+ function stripCommentsAndStrings(code) {
180
+ const output = code.split("");
181
+ let quote = null;
182
+ let lineComment = false;
183
+ let blockComment = false;
184
+ let escaped = false;
185
+ for (let index = 0; index < code.length; index++) {
186
+ const char = code[index];
187
+ const next = code[index + 1];
188
+ if (lineComment) {
189
+ if (char === "\n" || char === "\r") lineComment = false;
190
+ else output[index] = " ";
191
+ continue;
192
+ }
193
+ if (blockComment) {
194
+ if (char === "*" && next === "/") {
195
+ blockComment = false;
196
+ output[index] = " ";
197
+ output[index + 1] = " ";
198
+ index++;
199
+ } else if (char !== "\n") {
200
+ output[index] = " ";
201
+ }
202
+ continue;
203
+ }
204
+ if (quote) {
205
+ if (escaped) {
206
+ escaped = false;
207
+ output[index] = " ";
208
+ continue;
209
+ }
210
+ if (char === "\\") {
211
+ escaped = true;
212
+ output[index] = " ";
213
+ continue;
214
+ }
215
+ if (char === quote) {
216
+ quote = null;
217
+ continue;
218
+ }
219
+ if (char !== "\n") output[index] = " ";
220
+ continue;
221
+ }
222
+ if (char === "/" && next === "/") {
223
+ lineComment = true;
224
+ output[index] = " ";
225
+ continue;
226
+ }
227
+ if (char === "/" && next === "*") {
228
+ blockComment = true;
229
+ output[index] = " ";
230
+ continue;
231
+ }
232
+ if (char === "'" || char === '"' || char === "`") {
233
+ quote = char;
234
+ }
235
+ }
236
+ return output.join("");
237
+ }
238
+ function findServerFnExportReplacements(code, factoryNames) {
239
+ const replacements = [];
240
+ for (const match of code.matchAll(EXPORT_SERVER_FUNCTION_FACTORY_RE)) {
241
+ const exportName = match[1];
242
+ const calleeName = match[2];
243
+ const factory = calleeName ? factoryNames.get(calleeName) : void 0;
244
+ if (!exportName || !calleeName || !factory) continue;
245
+ const openParenIndex = (match.index ?? 0) + match[0].length - 1;
246
+ const callEnd = findMatchingParen(code, openParenIndex);
247
+ if (callEnd === -1) continue;
248
+ let declarationEnd = callEnd + 1;
249
+ while (/\s/.test(code[declarationEnd] ?? "")) declarationEnd++;
250
+ if (code[declarationEnd] === ";") declarationEnd++;
251
+ const calleeIndex = code.indexOf(calleeName, match.index);
252
+ replacements.push({
253
+ start: match.index ?? 0,
254
+ end: declarationEnd,
255
+ exportName,
256
+ privateName: `$$farm_server_${factory}_${exportName}`,
257
+ wrapperName: exportName,
258
+ callExpression: code.slice(calleeIndex, callEnd + 1)
259
+ });
260
+ }
261
+ for (const match of code.matchAll(EXPORT_DEFAULT_SERVER_FUNCTION_FACTORY_RE)) {
262
+ const calleeName = match[1];
263
+ const factory = calleeName ? factoryNames.get(calleeName) : void 0;
264
+ if (!calleeName || !factory) continue;
265
+ const openParenIndex = (match.index ?? 0) + match[0].length - 1;
266
+ const callEnd = findMatchingParen(code, openParenIndex);
267
+ if (callEnd === -1) continue;
268
+ let declarationEnd = callEnd + 1;
269
+ while (/\s/.test(code[declarationEnd] ?? "")) declarationEnd++;
270
+ if (code[declarationEnd] === ";") declarationEnd++;
271
+ const calleeIndex = code.indexOf(calleeName, match.index);
272
+ const privateName = `$$farm_server_${factory}_default`;
273
+ replacements.push({
274
+ start: match.index ?? 0,
275
+ end: declarationEnd,
276
+ exportName: "default",
277
+ privateName,
278
+ wrapperName: `${privateName}_export`,
279
+ callExpression: code.slice(calleeIndex, callEnd + 1)
280
+ });
281
+ }
282
+ return replacements;
283
+ }
284
+ function copyServerFunctionDescriptor(target, source, lazy) {
285
+ const key = 'Symbol.for("farm.server-function.descriptor")';
286
+ return lazy ? `Object.defineProperty(${target}, ${key}, { get: () => ${source}[${key}] });` : `Object.defineProperty(${target}, ${key}, { value: ${source}[${key}] });`;
287
+ }
288
+ function hasModuleDirective(code, directive) {
289
+ for (const match of code.matchAll(DECLARATION_RE)) {
290
+ const value = match[2];
291
+ if (value === directive) return true;
292
+ if (value !== "use strict" && value !== "use client" && value !== "use server") return false;
293
+ }
294
+ return false;
295
+ }
296
+ function findMatchingParen(code, openParenIndex) {
297
+ let depth = 0;
298
+ let quote = null;
299
+ let lineComment = false;
300
+ let blockComment = false;
301
+ let escaped = false;
302
+ for (let index = openParenIndex; index < code.length; index++) {
303
+ const char = code[index];
304
+ const next = code[index + 1];
305
+ if (lineComment) {
306
+ if (char === "\n" || char === "\r") lineComment = false;
307
+ continue;
308
+ }
309
+ if (blockComment) {
310
+ if (char === "*" && next === "/") {
311
+ blockComment = false;
312
+ index++;
313
+ }
314
+ continue;
315
+ }
316
+ if (quote) {
317
+ if (escaped) {
318
+ escaped = false;
319
+ continue;
320
+ }
321
+ if (char === "\\") {
322
+ escaped = true;
323
+ continue;
324
+ }
325
+ if (char === quote) {
326
+ quote = null;
327
+ }
328
+ continue;
329
+ }
330
+ if (char === "/" && next === "/") {
331
+ lineComment = true;
332
+ index++;
333
+ continue;
334
+ }
335
+ if (char === "/" && next === "*") {
336
+ blockComment = true;
337
+ index++;
338
+ continue;
339
+ }
340
+ if (char === "'" || char === '"' || char === "`") {
341
+ quote = char;
342
+ continue;
343
+ }
344
+ if (char === "(") depth++;
345
+ if (char === ")") {
346
+ depth--;
347
+ if (depth === 0) return index;
348
+ }
349
+ }
350
+ return -1;
351
+ }
352
+
353
+ export {
354
+ FARM_SERVER_FN_BOUNDARY_QUERY,
355
+ transformFarmServerFns,
356
+ createFarmServerFnBoundaryModule,
357
+ isFarmServerFnBoundaryId
358
+ };
@@ -16,7 +16,27 @@ function searchParamsToObject(searchParams) {
16
16
  });
17
17
  return output;
18
18
  }
19
+ var RESERVED_SEARCH_KEYS = /* @__PURE__ */ new Set([
20
+ "then",
21
+ "catch",
22
+ "finally",
23
+ "__proto__",
24
+ "constructor",
25
+ "prototype"
26
+ ]);
27
+ function createFarmSearchParams(search) {
28
+ const promise = Promise.resolve(search);
29
+ for (const key of Object.keys(search)) {
30
+ if (RESERVED_SEARCH_KEYS.has(key)) continue;
31
+ Object.defineProperty(promise, key, {
32
+ value: search[key],
33
+ enumerable: true
34
+ });
35
+ }
36
+ return promise;
37
+ }
19
38
 
20
39
  export {
21
- searchParamsToObject
40
+ searchParamsToObject,
41
+ createFarmSearchParams
22
42
  };
@@ -4,13 +4,13 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkRWT2BTJTcjs = require('./chunk-RWT2BTJT.cjs');
7
+ var _chunk2IAPKPEBcjs = require('./chunk-2IAPKPEB.cjs');
8
8
 
9
9
 
10
10
  var _chunkMPU5DOXXcjs = require('./chunk-MPU5DOXX.cjs');
11
11
 
12
12
 
13
- var _chunk6QA2SXVHcjs = require('./chunk-6QA2SXVH.cjs');
13
+ var _chunkFK25QSVCcjs = require('./chunk-FK25QSVC.cjs');
14
14
 
15
15
 
16
16
 
@@ -32,7 +32,7 @@ function createServerQuery(options) {
32
32
  throw new TypeError("createServerQuery requires a key function");
33
33
  }
34
34
  const staleTime = normalizeServerQueryStaleTime(options.staleTime);
35
- const execute = _chunkRWT2BTJTcjs.createServerFn.call(void 0, {
35
+ const execute = _chunk2IAPKPEBcjs.createServerFn.call(void 0, {
36
36
  input: options.input,
37
37
  middleware: options.middleware,
38
38
  handler: async (context) => {
@@ -42,7 +42,7 @@ function createServerQuery(options) {
42
42
  const cacheKey = _chunkDXUXQP2Tcjs.createFarmCacheKey.call(void 0, ["route-data", routeKey]);
43
43
  const producer = async () => {
44
44
  const value = await options.handler(context);
45
- return _chunkRWT2BTJTcjs._parseServerFnSchema.call(void 0, options.output, value, "output", "createServerQuery");
45
+ return _chunk2IAPKPEBcjs._parseServerFnSchema.call(void 0, options.output, value, "output", "createServerQuery");
46
46
  };
47
47
  let data;
48
48
  let updatedAt;
@@ -67,7 +67,7 @@ function createServerQuery(options) {
67
67
  });
68
68
  const query = async (input) => {
69
69
  const result = await execute(input);
70
- return _chunk6QA2SXVHcjs.getServerActionExecutionContext.call(void 0, ) ? result : result.data;
70
+ return _chunkFK25QSVCcjs.getServerActionExecutionContext.call(void 0, ) ? result : result.data;
71
71
  };
72
72
  Object.defineProperties(query, {
73
73
  [FARM_SERVER_QUERY_SYMBOL]: {
@@ -87,10 +87,10 @@ function createServerQuery(options) {
87
87
  enumerable: false
88
88
  }
89
89
  });
90
- _chunkRWT2BTJTcjs._attachServerFunctionDescriptor.call(void 0,
90
+ _chunk2IAPKPEBcjs._attachServerFunctionDescriptor.call(void 0,
91
91
  query,
92
- _chunkRWT2BTJTcjs.createServerFunctionDescriptor.call(void 0, "query", options, async (value) => {
93
- const result = await _chunkRWT2BTJTcjs._runServerFunctionForCaller.call(void 0,
92
+ _chunk2IAPKPEBcjs.createServerFunctionDescriptor.call(void 0, "query", options, async (value) => {
93
+ const result = await _chunk2IAPKPEBcjs._runServerFunctionForCaller.call(void 0,
94
94
  execute,
95
95
  value
96
96
  );
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  discoverFarmDocsPages,
3
3
  getFarmDocsMarkdownPath,
4
+ getFarmDocsRoots,
4
5
  loadFarmDocsPage,
5
6
  resolveFarmDocsContentDir,
6
7
  toFarmDocsMarkdownPage
7
- } from "./chunk-KO2NWUKN.mjs";
8
+ } from "./chunk-EIMK7D2D.mjs";
8
9
  import {
9
10
  docsEngine,
10
11
  loadFarmDocsEngine
11
12
  } from "./chunk-VE3FWJBO.mjs";
12
13
  import {
13
14
  resolveDocsConfig
14
- } from "./chunk-2DEPNLXK.mjs";
15
+ } from "./chunk-KMB5BMFX.mjs";
15
16
  import {
16
17
  getFarmDocsAdapterConfigModule,
17
18
  isSecretDocsConfigKey
@@ -26,7 +27,7 @@ function hasFarmDocsRuntimeAdapter(docs) {
26
27
  }
27
28
  function assertFarmDocsAdapterServesNoGuardedPages(docs, options, isPathGuarded) {
28
29
  if (!isPathGuarded || !hasFarmDocsRuntimeAdapter(docs)) return;
29
- const guarded = discoverFarmDocsPages(resolveFarmDocsContentDir(docs, options), docs).filter((page) => isPathGuarded(page.href) || isPathGuarded(getFarmDocsMarkdownPath(page.href))).map((page) => page.href);
30
+ const guarded = getFarmDocsRoots(docs).flatMap((root) => discoverFarmDocsPages(resolveFarmDocsContentDir(root, options), root)).filter((page) => isPathGuarded(page.href) || isPathGuarded(getFarmDocsMarkdownPath(page.href))).map((page) => page.href);
30
31
  if (guarded.length === 0) return;
31
32
  throw new Error(
32
33
  `Docs pages behind a path guard (${guarded.join(", ")}) would be public: the docs adapter ${JSON.stringify(docs.adapter.id)} serves their content in llms-full.txt, search, Markdown, and MCP without running the app's guards. Move those pages out of the docs content directory, or set docs.adapter = false to use Farm's built-in docs runtime, which keeps guarded pages off anonymous surfaces.`
@@ -39,9 +40,17 @@ async function loadFarmDocsConfigModule(docs, loadModule) {
39
40
  const config = loaded?.default ?? loaded;
40
41
  return config && typeof config === "object" ? config : void 0;
41
42
  }
43
+ function getFarmDocsConfigModuleRoot(moduleConfig, entry) {
44
+ const { roots, ...shared } = moduleConfig;
45
+ const route = entry.replace(/^\/+|\/+$/g, "");
46
+ const own = Array.isArray(roots) ? roots.find(
47
+ (root) => Boolean(root) && typeof root === "object" && typeof root.entry === "string" && root.entry.replace(/^\/+|\/+$/g, "") === route
48
+ ) : void 0;
49
+ return own ? { ...shared, ...own } : shared;
50
+ }
42
51
  function createFarmDocsAdapterRuntimeConfig(docs, options, moduleConfig) {
43
52
  return {
44
- ...moduleConfig ? { ...moduleConfig, ...docs.configOverrides } : docs.runtimeConfig ?? docs.config,
53
+ ...moduleConfig ? { ...getFarmDocsConfigModuleRoot(moduleConfig, docs.entry), ...docs.configOverrides } : docs.runtimeConfig ?? docs.config,
45
54
  entry: docs.config.entry || docs.entry.replace(/^\/+|\/+$/g, "") || "docs",
46
55
  docsPath: docs.entry,
47
56
  contentDir: resolveFarmDocsContentDir(docs, options)
@@ -56,6 +65,11 @@ async function compileFarmDocsAdapterEdgeManifest(docs, options) {
56
65
  if (!hasFarmDocsRuntimeAdapter(docs)) {
57
66
  throw new Error("Farm docs adapter requires server and react runtime entrypoints.");
58
67
  }
68
+ if (docs.roots?.length) {
69
+ throw new Error(
70
+ "Several docs roots are not supported on edge deployments yet; they need a Node.js deployment target."
71
+ );
72
+ }
59
73
  const compilerEntry = docs.adapter.edgeCompiler;
60
74
  if (!compilerEntry) {
61
75
  throw new Error(
@@ -96,6 +110,27 @@ async function compileFarmDocsAdapterEdgeManifest(docs, options) {
96
110
  }
97
111
  return manifest;
98
112
  }
113
+ async function listFarmDocsAdapterPages(docs, options) {
114
+ if (!hasFarmDocsRuntimeAdapter(docs)) return null;
115
+ const requireFromApp = createRequire(path.join(options.root, "package.json"));
116
+ const serverModule = await import(
117
+ /* @vite-ignore */
118
+ pathToFileURL(requireFromApp.resolve(docs.adapter.server)).href
119
+ );
120
+ if (typeof serverModule.listFarmDocsPages !== "function") return null;
121
+ const listPages = serverModule.listFarmDocsPages;
122
+ const pages = (await Promise.all(
123
+ getFarmDocsRoots(docs).map(
124
+ (root) => listPages(createFarmDocsAdapterRuntimeConfig(root, options), { rootDir: options.root })
125
+ )
126
+ )).flat();
127
+ if (!Array.isArray(pages) || pages.some((page) => typeof page !== "string" || !page.startsWith("/"))) {
128
+ throw new Error(
129
+ `Farm docs adapter ${JSON.stringify(docs.adapter.id)} listed docs pages that are not absolute paths.`
130
+ );
131
+ }
132
+ return [...new Set(pages)];
133
+ }
99
134
  async function createFarmDocsAdapterHandler(docs, options) {
100
135
  if (!hasFarmDocsRuntimeAdapter(docs)) {
101
136
  throw new Error("Farm docs adapter requires server and react runtime entrypoints.");
@@ -104,26 +139,36 @@ async function createFarmDocsAdapterHandler(docs, options) {
104
139
  const serverModule = await options.loadModule(
105
140
  docs.adapter.server
106
141
  );
107
- if (typeof serverModule.createFarmDocsRuntimeHandler !== "function") {
142
+ const multiRoot = Boolean(docs.roots?.length);
143
+ const handlerExport = multiRoot ? "createFarmDocsMultiRuntimeHandler" : "createFarmDocsRuntimeHandler";
144
+ if (typeof serverModule[handlerExport] !== "function") {
108
145
  const adapterId = JSON.stringify(docs.adapter.id);
109
146
  const serverEntry = JSON.stringify(docs.adapter.server);
110
147
  throw new Error(
111
- `Farm docs adapter ${adapterId} does not export createFarmDocsRuntimeHandler from ${serverEntry}. Upgrade the adapter to a runtime-enabled release.`
148
+ `Farm docs adapter ${adapterId} does not export ${handlerExport} from ${serverEntry}. ` + (multiRoot ? "Upgrade the adapter to a release that serves several docs roots, or remove the roots." : "Upgrade the adapter to a runtime-enabled release.")
112
149
  );
113
150
  }
114
- const runtimeConfig = createFarmDocsAdapterRuntimeConfig(
115
- docs,
116
- options,
117
- await loadFarmDocsConfigModule(docs, options.loadModule)
118
- );
119
- return serverModule.createFarmDocsRuntimeHandler(runtimeConfig, {
151
+ const moduleConfig = await loadFarmDocsConfigModule(docs, options.loadModule);
152
+ const handlerOptions = {
120
153
  rootDir: options.root,
121
154
  clientEntry: options.clientEntry,
122
155
  stylesheets: getFarmDocsAdapterStylesheets(options),
123
156
  resolveLayoutFonts: options.resolveLayoutFonts,
124
157
  loadReactModule: () => options.loadModule(docs.adapter.react),
125
158
  ...options.registerMCPServer ? { registerMCPServer: options.registerMCPServer } : {}
126
- });
159
+ };
160
+ if (multiRoot) {
161
+ return serverModule.createFarmDocsMultiRuntimeHandler(
162
+ getFarmDocsRoots(docs).map(
163
+ (root) => createFarmDocsAdapterRuntimeConfig(root, options, moduleConfig)
164
+ ),
165
+ handlerOptions
166
+ );
167
+ }
168
+ return serverModule.createFarmDocsRuntimeHandler(
169
+ createFarmDocsAdapterRuntimeConfig(docs, options, moduleConfig),
170
+ handlerOptions
171
+ );
127
172
  }
128
173
 
129
174
  // src/docs/api.ts
@@ -658,7 +703,9 @@ function createFarmDocsAPIHandler(options = {}, cloudIntegration) {
658
703
  export {
659
704
  hasFarmDocsRuntimeAdapter,
660
705
  assertFarmDocsAdapterServesNoGuardedPages,
706
+ getFarmDocsConfigModuleRoot,
661
707
  compileFarmDocsAdapterEdgeManifest,
708
+ listFarmDocsAdapterPages,
662
709
  createFarmDocsAdapterHandler,
663
710
  isFarmDocsAPIRequest,
664
711
  createDocsAPI,
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkGOOK2J2Wcjs = require('./chunk-GOOK2J2W.cjs');
3
+ var _chunkRMPNYUGTcjs = require('./chunk-RMPNYUGT.cjs');
4
4
 
5
5
 
6
6
  var _chunkWJFFPXCVcjs = require('./chunk-WJFFPXCV.cjs');
@@ -273,7 +273,7 @@ function requestEvent(metadata, method, status, durationMs) {
273
273
  id: uuid(),
274
274
  requestId: metadata.id,
275
275
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
276
- route: routeTemplate(_chunkGOOK2J2Wcjs.getFarmRouteLabel.call(void 0, metadata.route)),
276
+ route: routeTemplate(_chunkRMPNYUGTcjs.getFarmRouteLabel.call(void 0, metadata.route)),
277
277
  agent: metadata.agent,
278
278
  kind: "request",
279
279
  method,
@@ -286,7 +286,7 @@ function toolEvent(metadata, event) {
286
286
  id: uuid(),
287
287
  requestId: metadata.id,
288
288
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
289
- route: routeTemplate(_chunkGOOK2J2Wcjs.getFarmRouteLabel.call(void 0, metadata.route)),
289
+ route: routeTemplate(_chunkRMPNYUGTcjs.getFarmRouteLabel.call(void 0, metadata.route)),
290
290
  agent: metadata.agent,
291
291
  kind: "mcp.tool",
292
292
  tool: event.tool,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseRoutePath
3
- } from "./chunk-2SVJGOAX.mjs";
3
+ } from "./chunk-Y3N5BFRJ.mjs";
4
4
 
5
5
  // src/routing/route-slots.ts
6
6
  var SLOT_SEGMENT = /^@([A-Za-z][A-Za-z0-9_-]*)$/;