@farm.js/core 0.1.42 → 0.1.43

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 (235) hide show
  1. package/dist/{agent-mcp-ssVy_tea.d.mts → agent-mcp-3KDz4hr9.d.mts} +1 -1
  2. package/dist/{agent-mcp-SSD6L3VZ.d.ts → agent-mcp-6yRebHk7.d.ts} +1 -1
  3. package/dist/agent-runtime.d.mts +1 -1
  4. package/dist/agent-runtime.d.ts +1 -1
  5. package/dist/api/route-manager.d.mts +3 -3
  6. package/dist/api/route-manager.d.ts +3 -3
  7. package/dist/api/runtime.d.mts +2 -2
  8. package/dist/api/runtime.d.ts +2 -2
  9. package/dist/api.cjs +2 -2
  10. package/dist/api.d.mts +8 -3
  11. package/dist/api.d.ts +8 -3
  12. package/dist/api.mjs +1 -1
  13. package/dist/{app-KjFzdCqy.d.ts → app-8Db1zR-2.d.ts} +8 -4
  14. package/dist/{app-1h3lVT4a.d.mts → app-DlTWv4cn.d.mts} +8 -4
  15. package/dist/{app-manifest-D3RkVNuS.d.mts → app-manifest-TRzS7ZZ9.d.mts} +1 -1
  16. package/dist/{app-manifest-DaW8-tvX.d.ts → app-manifest-cO2jkG1F.d.ts} +1 -1
  17. package/dist/app-markdown.d.mts +2 -2
  18. package/dist/app-markdown.d.ts +2 -2
  19. package/dist/{chunk-ECKF2BAM.cjs → chunk-2GVF3C2F.cjs} +255 -42
  20. package/dist/chunk-2NXO5SBY.mjs +57 -0
  21. package/dist/chunk-3BROEWFY.cjs +39 -0
  22. package/dist/{chunk-NU25TRIO.mjs → chunk-4MRQ5OKQ.mjs} +11 -7
  23. package/dist/{chunk-375K2ZVU.mjs → chunk-4OCEMK72.mjs} +259 -48
  24. package/dist/{chunk-6PKXK4TY.mjs → chunk-53ZV6K65.mjs} +1 -1
  25. package/dist/{chunk-LYIZHJTK.cjs → chunk-5LPHJZSI.cjs} +14 -14
  26. package/dist/chunk-5NIWBWDD.mjs +97 -0
  27. package/dist/{chunk-NRDBW4MP.mjs → chunk-7IQQIPRZ.mjs} +10 -0
  28. package/dist/{chunk-QTEJGB5A.mjs → chunk-7SCCY6SI.mjs} +79 -176
  29. package/dist/chunk-APDGOKKE.cjs +148 -0
  30. package/dist/chunk-AZBSVLRM.cjs +132 -0
  31. package/dist/{chunk-ZS6HDNOM.cjs → chunk-BKPXWRTT.cjs} +6 -6
  32. package/dist/chunk-CEDPEDNW.cjs +98 -0
  33. package/dist/chunk-D5RFPV2H.mjs +148 -0
  34. package/dist/{chunk-724JLMS4.mjs → chunk-F646BZ4Y.mjs} +4 -2
  35. package/dist/{chunk-C5KVWHIH.cjs → chunk-G2Z5DGMS.cjs} +5 -3
  36. package/dist/{chunk-7YHSD3Z6.cjs → chunk-GVNCWSQV.cjs} +83 -29
  37. package/dist/{chunk-24SP5TGU.mjs → chunk-H4LXPWI2.mjs} +2 -2
  38. package/dist/chunk-H7BLEEAE.cjs +57 -0
  39. package/dist/{chunk-QKZMB7LY.cjs → chunk-HUMEHX24.cjs} +2 -2
  40. package/dist/{chunk-BD3D7EZV.cjs → chunk-IXFOBGLQ.cjs} +9 -3
  41. package/dist/{chunk-JG3MEQUH.cjs → chunk-JDJAPCR2.cjs} +420 -209
  42. package/dist/{chunk-MHN4UR5U.cjs → chunk-KFZZFZ7J.cjs} +7 -7
  43. package/dist/chunk-LRJRXXQZ.cjs +109 -0
  44. package/dist/{chunk-BXJ5HJTJ.cjs → chunk-LVABUXLA.cjs} +15 -11
  45. package/dist/{chunk-HCSVR4YZ.mjs → chunk-M3BXTWJM.mjs} +18 -0
  46. package/dist/{chunk-2JZHQDUY.mjs → chunk-NXO75WY4.mjs} +1 -1
  47. package/dist/{chunk-TUL355PH.mjs → chunk-OYSGGV6O.mjs} +135 -160
  48. package/dist/{chunk-JR4QCLJY.cjs → chunk-PDU4P2IC.cjs} +19 -1
  49. package/dist/chunk-PJEHUSHA.mjs +229 -0
  50. package/dist/chunk-QGH2RQVF.mjs +132 -0
  51. package/dist/{chunk-YWMZUGIS.mjs → chunk-R3ZFQJEF.mjs} +247 -34
  52. package/dist/{chunk-ZATTDMBW.cjs → chunk-RACQTC7K.cjs} +270 -367
  53. package/dist/{chunk-WSOBCAYO.cjs → chunk-RQYTOFQM.cjs} +23 -23
  54. package/dist/chunk-S34OBRMZ.mjs +109 -0
  55. package/dist/{chunk-TS4JHGUJ.mjs → chunk-S3ZEMCE6.mjs} +9 -3
  56. package/dist/{chunk-WWFTAUFG.cjs → chunk-SBH2JLLF.cjs} +12 -2
  57. package/dist/{chunk-YSLWRWWP.cjs → chunk-SKK6UF5P.cjs} +200 -46
  58. package/dist/chunk-T7J7E63D.cjs +144 -0
  59. package/dist/{chunk-PIZXONIS.mjs → chunk-TESO7EFU.mjs} +55 -1
  60. package/dist/{chunk-TCJ4A4A2.cjs → chunk-VIVQERJ5.cjs} +318 -344
  61. package/dist/{chunk-JIYYX7WU.mjs → chunk-VLXNGUKO.mjs} +1 -1
  62. package/dist/{chunk-OFZUJMCU.mjs → chunk-WPJQN64R.mjs} +195 -41
  63. package/dist/chunk-XARSG2TG.mjs +144 -0
  64. package/dist/chunk-XUGFRFD2.mjs +39 -0
  65. package/dist/{chunk-AHFRQMRX.cjs → chunk-YBDSTNMH.cjs} +1 -1
  66. package/dist/{chunk-U2UC7UGP.mjs → chunk-YGZH4T2X.mjs} +1 -1
  67. package/dist/chunk-YKUEJ3MG.cjs +229 -0
  68. package/dist/{chunk-IVQY6UTY.mjs → chunk-ZYWJIPKQ.mjs} +1 -1
  69. package/dist/{client-plugins-C9Py_50W.d.mts → client-plugins-Cv0OJtnM.d.mts} +21 -2
  70. package/dist/{client-plugins-DIem0I0W.d.ts → client-plugins-kwQuZcWq.d.ts} +21 -2
  71. package/dist/client-plugins.d.mts +1 -1
  72. package/dist/client-plugins.d.ts +1 -1
  73. package/dist/client.cjs +4 -3
  74. package/dist/client.d.mts +5 -5
  75. package/dist/client.d.ts +5 -5
  76. package/dist/client.mjs +3 -2
  77. package/dist/config.d.mts +1 -1
  78. package/dist/config.d.ts +1 -1
  79. package/dist/{devtools-Q3LBNUJ7.mjs → devtools-M22FEFPK.mjs} +3 -3
  80. package/dist/{devtools-2RY3EKHL.cjs → devtools-MLB3JJMC.cjs} +4 -4
  81. package/dist/docs.cjs +5 -5
  82. package/dist/docs.d.mts +2 -2
  83. package/dist/docs.d.ts +2 -2
  84. package/dist/docs.mjs +4 -4
  85. package/dist/index-CQOp8EmB.d.mts +48 -0
  86. package/dist/index-DAl0QTZS.d.ts +48 -0
  87. package/dist/index.cjs +40 -23
  88. package/dist/index.d.mts +15 -15
  89. package/dist/index.d.ts +15 -15
  90. package/dist/index.mjs +45 -28
  91. package/dist/integrations.d.mts +1 -1
  92. package/dist/integrations.d.ts +1 -1
  93. package/dist/internal/app-markdown-runtime.d.mts +2 -2
  94. package/dist/internal/app-markdown-runtime.d.ts +2 -2
  95. package/dist/internal/build-runtime.cjs +28 -14
  96. package/dist/internal/build-runtime.d.mts +12 -16
  97. package/dist/internal/build-runtime.d.ts +12 -16
  98. package/dist/internal/build-runtime.mjs +27 -13
  99. package/dist/internal/cli-runtime.cjs +22 -10
  100. package/dist/internal/cli-runtime.mjs +22 -10
  101. package/dist/internal/client-error-overlay.cjs +4 -4
  102. package/dist/internal/client-error-overlay.mjs +1 -1
  103. package/dist/internal/client-runtime.cjs +5 -1
  104. package/dist/internal/client-runtime.d.mts +1 -0
  105. package/dist/internal/client-runtime.d.ts +1 -0
  106. package/dist/internal/client-runtime.mjs +4 -0
  107. package/dist/internal/compression-runtime.d.mts +1 -1
  108. package/dist/internal/compression-runtime.d.ts +1 -1
  109. package/dist/internal/config-runtime.cjs +4 -4
  110. package/dist/internal/config-runtime.d.mts +2 -2
  111. package/dist/internal/config-runtime.d.ts +2 -2
  112. package/dist/internal/config-runtime.mjs +3 -3
  113. package/dist/internal/form-actions-client.cjs +18 -0
  114. package/dist/internal/form-actions-client.d.mts +5 -0
  115. package/dist/internal/form-actions-client.d.ts +5 -0
  116. package/dist/internal/form-actions-client.mjs +18 -0
  117. package/dist/internal/form-actions.cjs +18 -0
  118. package/dist/internal/form-actions.d.mts +14 -0
  119. package/dist/internal/form-actions.d.ts +14 -0
  120. package/dist/internal/form-actions.mjs +18 -0
  121. package/dist/internal/island-codec.cjs +22 -0
  122. package/dist/internal/island-codec.d.mts +29 -0
  123. package/dist/internal/island-codec.d.ts +29 -0
  124. package/dist/internal/island-codec.mjs +22 -0
  125. package/dist/internal/island-value-store.cjs +13 -0
  126. package/dist/internal/island-value-store.d.mts +6 -0
  127. package/dist/internal/island-value-store.d.ts +6 -0
  128. package/dist/internal/island-value-store.mjs +13 -0
  129. package/dist/internal/islands-runtime.cjs +77 -0
  130. package/dist/internal/islands-runtime.d.mts +57 -0
  131. package/dist/internal/islands-runtime.d.ts +57 -0
  132. package/dist/internal/islands-runtime.mjs +77 -0
  133. package/dist/internal/islands-server.cjs +19 -0
  134. package/dist/internal/islands-server.d.mts +3 -0
  135. package/dist/internal/islands-server.d.ts +3 -0
  136. package/dist/internal/islands-server.mjs +19 -0
  137. package/dist/internal/islx-client.cjs +5 -0
  138. package/dist/internal/islx-client.d.mts +2 -0
  139. package/dist/internal/islx-client.d.ts +2 -0
  140. package/dist/internal/islx-client.mjs +3 -0
  141. package/dist/internal/islx-react.cjs +4 -0
  142. package/dist/internal/islx-react.d.mts +1 -0
  143. package/dist/internal/islx-react.d.ts +1 -0
  144. package/dist/internal/islx-react.mjs +2 -0
  145. package/dist/internal/islx-server.cjs +5 -0
  146. package/dist/internal/islx-server.d.mts +2 -0
  147. package/dist/internal/islx-server.d.ts +2 -0
  148. package/dist/internal/islx-server.mjs +3 -0
  149. package/dist/internal/isolated-boundary.cjs +4 -3
  150. package/dist/internal/isolated-boundary.d.mts +13 -1
  151. package/dist/internal/isolated-boundary.d.ts +13 -1
  152. package/dist/internal/isolated-boundary.mjs +3 -2
  153. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  154. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  155. package/dist/internal/production-runtime.cjs +23 -6
  156. package/dist/internal/production-runtime.d.mts +20 -10
  157. package/dist/internal/production-runtime.d.ts +20 -10
  158. package/dist/internal/production-runtime.mjs +23 -6
  159. package/dist/internal/server-tree.cjs +6 -3
  160. package/dist/internal/server-tree.d.mts +25 -2
  161. package/dist/internal/server-tree.d.ts +25 -2
  162. package/dist/internal/server-tree.mjs +7 -4
  163. package/dist/island-value-protocol-BRayRghM.d.mts +12 -0
  164. package/dist/island-value-protocol-BRayRghM.d.ts +12 -0
  165. package/dist/markdown.d.mts +1 -1
  166. package/dist/markdown.d.ts +1 -1
  167. package/dist/middleware.d.mts +3 -3
  168. package/dist/middleware.d.ts +3 -3
  169. package/dist/navigation.cjs +5 -4
  170. package/dist/navigation.d.mts +4 -4
  171. package/dist/navigation.d.ts +4 -4
  172. package/dist/navigation.mjs +4 -3
  173. package/dist/og.d.mts +5 -0
  174. package/dist/og.d.ts +5 -0
  175. package/dist/plugin.cjs +17 -11
  176. package/dist/plugin.d.mts +3 -3
  177. package/dist/plugin.d.ts +3 -3
  178. package/dist/plugin.mjs +16 -10
  179. package/dist/{production-runtime-bjjWq-DA.d.ts → production-runtime-5nArjFpn.d.ts} +1 -1
  180. package/dist/{production-runtime-CHFKIgpW.d.mts → production-runtime-BzsF2z5F.d.mts} +1 -1
  181. package/dist/query/client.cjs +6 -5
  182. package/dist/query/client.mjs +2 -1
  183. package/dist/{render-plan-DOHg6wdO.d.mts → render-plan-B9yQorV4.d.mts} +4 -2
  184. package/dist/{render-plan-B2UndB4x.d.ts → render-plan-fg6E_HvL.d.ts} +4 -2
  185. package/dist/renderer/react/server.cjs +7 -6
  186. package/dist/renderer/react/server.d.mts +3 -1
  187. package/dist/renderer/react/server.d.ts +3 -1
  188. package/dist/renderer/react/server.mjs +5 -4
  189. package/dist/renderer-client.cjs +5 -4
  190. package/dist/renderer-client.d.mts +3 -3
  191. package/dist/renderer-client.d.ts +3 -3
  192. package/dist/renderer-client.mjs +2 -1
  193. package/dist/renderer.d.mts +3 -1
  194. package/dist/renderer.d.ts +3 -1
  195. package/dist/{request-DQcGfdgQ.d.mts → request-C4j_g-BH.d.mts} +1 -1
  196. package/dist/{request-DVNXRQrI.d.ts → request-gz8vFK0n.d.ts} +1 -1
  197. package/dist/request.d.mts +2 -2
  198. package/dist/request.d.ts +2 -2
  199. package/dist/{route-rendering-B_6fj-GG.d.ts → route-rendering-DamyKVi3.d.ts} +1 -1
  200. package/dist/{route-rendering-CEX4mFn-.d.mts → route-rendering-iTTOwz1f.d.mts} +1 -1
  201. package/dist/{router-CKHPBKXX.d.mts → router-EoSzHlos.d.mts} +1 -1
  202. package/dist/{router-CHEMHm1P.d.ts → router-OVjDqVo8.d.ts} +1 -1
  203. package/dist/routes.d.mts +1 -1
  204. package/dist/routes.d.ts +1 -1
  205. package/dist/rsc-pipeline-LK4K5JFK.mjs +77 -0
  206. package/dist/rsc-pipeline-YCDRJME4.cjs +77 -0
  207. package/dist/{runtime-Br2ZDTAv.d.ts → runtime-CwiuozLd.d.ts} +1 -1
  208. package/dist/{runtime-jj8TKNsy.d.mts → runtime-DDH4tiuF.d.mts} +1 -1
  209. package/dist/{schema-dev-notice-5JPE67AI.cjs → schema-dev-notice-77ZL23PL.cjs} +4 -4
  210. package/dist/{schema-dev-notice-WLPZ6WKU.mjs → schema-dev-notice-BLXOS6U2.mjs} +2 -2
  211. package/dist/server-plugins.d.mts +2 -2
  212. package/dist/server-plugins.d.ts +2 -2
  213. package/dist/server.cjs +55 -37
  214. package/dist/server.d.mts +15 -10
  215. package/dist/server.d.ts +15 -10
  216. package/dist/server.mjs +35 -17
  217. package/dist/{spa-router-BEvS9Erj.d.mts → spa-router-Br4qFCWf.d.mts} +8 -3
  218. package/dist/{spa-router-DmCuH5B7.d.ts → spa-router-BsWUKH73.d.ts} +8 -3
  219. package/dist/{ssg-gT093ETk.d.ts → ssg-Csy2vwpi.d.ts} +2 -2
  220. package/dist/{ssg-57v6cZcW.d.mts → ssg-Donyfcxy.d.mts} +2 -2
  221. package/dist/testing.d.mts +1 -1
  222. package/dist/testing.d.ts +1 -1
  223. package/dist/{utils-CCTKvR-P.d.ts → utils-Luk72LXC.d.ts} +1 -1
  224. package/dist/{utils-raHHQVyL.d.mts → utils-d_k1ZZw0.d.mts} +1 -1
  225. package/dist/version.cjs +2 -2
  226. package/dist/version.mjs +1 -1
  227. package/dist/vite.cjs +17 -11
  228. package/dist/vite.d.mts +6 -4
  229. package/dist/vite.d.ts +6 -4
  230. package/dist/vite.mjs +16 -10
  231. package/package.json +53 -1
  232. package/dist/{chunk-35WS7P2V.mjs → chunk-26CXZR6L.mjs} +3 -3
  233. package/dist/{chunk-QEILRWVV.cjs → chunk-3XEMGDBF.cjs} +2 -2
  234. package/dist/{chunk-BPOTSHDO.cjs → chunk-IOAUK4OI.cjs} +2 -2
  235. package/dist/{chunk-BYR3RQPB.mjs → chunk-T76H22WI.mjs} +4 -4
@@ -7,7 +7,7 @@ import {
7
7
  notifyHistoryChange,
8
8
  readPageState,
9
9
  subscribeHistoryChange
10
- } from "./chunk-TS4JHGUJ.mjs";
10
+ } from "./chunk-S3ZEMCE6.mjs";
11
11
  import {
12
12
  getFarmI18nClientState
13
13
  } from "./chunk-IHQIOZLC.mjs";
@@ -7,7 +7,7 @@ var _chunkSU7MH53Pcjs = require('./chunk-SU7MH53P.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkBD3D7EZVcjs = require('./chunk-BD3D7EZV.cjs');
10
+ var _chunkIXFOBGLQcjs = require('./chunk-IXFOBGLQ.cjs');
11
11
 
12
12
 
13
13
  var _chunkS6FJO323cjs = require('./chunk-S6FJO323.cjs');
@@ -52,7 +52,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, shouldBlockUnload, "shouldBlockUnload");
52
52
  function navigateViaRouter(href, basePath, replace, options = {}) {
53
53
  if (typeof window === "undefined") return;
54
54
  const url = _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, href, basePath);
55
- const spaRouter = _chunkBD3D7EZVcjs.getInstalledFarmSPARouter.call(void 0, );
55
+ const spaRouter = _chunkIXFOBGLQcjs.getInstalledFarmSPARouter.call(void 0, );
56
56
  if (spaRouter) {
57
57
  void spaRouter.navigate(url, {
58
58
  replace,
@@ -65,7 +65,7 @@ function navigateViaRouter(href, basePath, replace, options = {}) {
65
65
  } else {
66
66
  window.history.pushState(null, "", url);
67
67
  }
68
- _chunkBD3D7EZVcjs.notifyHistoryChange.call(void 0, "url-search");
68
+ _chunkIXFOBGLQcjs.notifyHistoryChange.call(void 0, "url-search");
69
69
  }
70
70
  _chunkS3JO3N4Hcjs.__name.call(void 0, navigateViaRouter, "navigateViaRouter");
71
71
  function useRouter(options = {}) {
@@ -85,7 +85,7 @@ function useRouter(options = {}) {
85
85
  setState(readRouterState(basePath, routeMatcher));
86
86
  }, "handlePopState");
87
87
  handlePopState();
88
- const unsubscribe = _chunkBD3D7EZVcjs.subscribeHistoryChange.call(void 0, handlePopState);
88
+ const unsubscribe = _chunkIXFOBGLQcjs.subscribeHistoryChange.call(void 0, handlePopState);
89
89
  return unsubscribe;
90
90
  }, [basePath, routeMatcher]);
91
91
  const push = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (href, navigateOptions) => {
@@ -96,11 +96,11 @@ function useRouter(options = {}) {
96
96
  }, "replace");
97
97
  const pushState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (pageState, href) => {
98
98
  if (typeof window === "undefined") return;
99
- _chunkBD3D7EZVcjs.getRouter.call(void 0, ).pushState(pageState, resolveClientHref(href, basePath));
99
+ _chunkIXFOBGLQcjs.getRouter.call(void 0, ).pushState(pageState, resolveClientHref(href, basePath));
100
100
  }, "pushState");
101
101
  const replaceState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (pageState, href) => {
102
102
  if (typeof window === "undefined") return;
103
- _chunkBD3D7EZVcjs.getRouter.call(void 0, ).replaceState(pageState, resolveClientHref(href, basePath));
103
+ _chunkIXFOBGLQcjs.getRouter.call(void 0, ).replaceState(pageState, resolveClientHref(href, basePath));
104
104
  }, "replaceState");
105
105
  const back = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
106
106
  if (typeof window !== "undefined") {
@@ -124,25 +124,25 @@ function useRouter(options = {}) {
124
124
  }
125
125
  _chunkS3JO3N4Hcjs.__name.call(void 0, useRouter, "useRouter");
126
126
  function usePageState() {
127
- const [state, setState] = _react.useState.call(void 0, () => _chunkBD3D7EZVcjs.readPageState.call(void 0, ));
127
+ const [state, setState] = _react.useState.call(void 0, () => _chunkIXFOBGLQcjs.readPageState.call(void 0, ));
128
128
  _react.useEffect.call(void 0, () => {
129
129
  if (typeof window === "undefined") return;
130
130
  const handlePopState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
131
- setState(_chunkBD3D7EZVcjs.readPageState.call(void 0, ));
131
+ setState(_chunkIXFOBGLQcjs.readPageState.call(void 0, ));
132
132
  }, "handlePopState");
133
133
  handlePopState();
134
- return _chunkBD3D7EZVcjs.subscribeHistoryChange.call(void 0, handlePopState);
134
+ return _chunkIXFOBGLQcjs.subscribeHistoryChange.call(void 0, handlePopState);
135
135
  }, []);
136
136
  return state;
137
137
  }
138
138
  _chunkS3JO3N4Hcjs.__name.call(void 0, usePageState, "usePageState");
139
139
  function useNavigation() {
140
140
  const [state, setState] = _react.useState.call(void 0,
141
- () => _chunkBD3D7EZVcjs.getRouter.call(void 0, ).getNavigationState()
141
+ () => _chunkIXFOBGLQcjs.getRouter.call(void 0, ).getNavigationState()
142
142
  );
143
143
  _react.useEffect.call(void 0, () => {
144
144
  if (typeof window === "undefined") return;
145
- return _chunkBD3D7EZVcjs.getRouter.call(void 0, ).subscribeNavigation(setState);
145
+ return _chunkIXFOBGLQcjs.getRouter.call(void 0, ).subscribeNavigation(setState);
146
146
  }, []);
147
147
  return state;
148
148
  }
@@ -155,7 +155,7 @@ function useBlocker(options) {
155
155
  if (typeof window === "undefined" || !active) {
156
156
  return;
157
157
  }
158
- return _chunkBD3D7EZVcjs.getRouter.call(void 0, ).addBlocker(
158
+ return _chunkIXFOBGLQcjs.getRouter.call(void 0, ).addBlocker(
159
159
  async (context) => {
160
160
  const current = optionsRef.current;
161
161
  const when = typeof current.when === "function" ? current.when(context) : current.when;
@@ -179,7 +179,7 @@ function useScrollRestoration(key) {
179
179
  _react.useEffect.call(void 0, () => {
180
180
  const element = ref.current;
181
181
  if (!element) return;
182
- return _chunkBD3D7EZVcjs.getRouter.call(void 0, ).registerScrollElement(key, element);
182
+ return _chunkIXFOBGLQcjs.getRouter.call(void 0, ).registerScrollElement(key, element);
183
183
  }, [key]);
184
184
  return ref;
185
185
  }
@@ -201,7 +201,7 @@ function readRouterState(basePath, routeMatcher) {
201
201
  pathname,
202
202
  searchParams: url.searchParams,
203
203
  params: _optionalChain([routeMatcher, 'optionalAccess', _5 => _5.match, 'call', _6 => _6(routePathname), 'optionalAccess', _7 => _7.params]) || {},
204
- pageState: typeof window === "undefined" ? null : _chunkBD3D7EZVcjs.readPageState.call(void 0, )
204
+ pageState: typeof window === "undefined" ? null : _chunkIXFOBGLQcjs.readPageState.call(void 0, )
205
205
  };
206
206
  }
207
207
  _chunkS3JO3N4Hcjs.__name.call(void 0, readRouterState, "readRouterState");
@@ -0,0 +1,97 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-LPEX4YW6.mjs";
4
+
5
+ // src/react-refresh.ts
6
+ import { createRequire } from "module";
7
+ import { pathToFileURL } from "url";
8
+ var REACT_REFRESH_PLUGIN = "vite:react-refresh";
9
+ var FARM_REACT_REFRESH_PREAMBLE_ID = "/@farm/react-refresh-preamble";
10
+ var FARM_OWNED = /* @__PURE__ */ Symbol.for("farm.react-refresh.owned");
11
+ function isFarmReactRefreshActive(config) {
12
+ return config.command === "serve" && !config.isProduction && config.server.hmr !== false && config.plugins.some((plugin) => plugin.name === REACT_REFRESH_PLUGIN);
13
+ }
14
+ __name(isFarmReactRefreshActive, "isFarmReactRefreshActive");
15
+ function isFarmClientEntryId(id) {
16
+ const pathname = id.split("?", 1)[0];
17
+ return pathname === "/@farm/client" || pathname === "/@farm/client.js";
18
+ }
19
+ __name(isFarmClientEntryId, "isFarmClientEntryId");
20
+ function hasAppReactPlugin(plugins) {
21
+ const pending = [...plugins ?? []];
22
+ while (pending.length > 0) {
23
+ const entry = pending.pop();
24
+ if (Array.isArray(entry)) {
25
+ pending.push(...entry);
26
+ continue;
27
+ }
28
+ if (!entry || typeof entry !== "object" || "then" in entry) continue;
29
+ if (entry.name === REACT_REFRESH_PLUGIN && !(FARM_OWNED in entry)) return true;
30
+ }
31
+ return false;
32
+ }
33
+ __name(hasAppReactPlugin, "hasAppReactPlugin");
34
+ function createFarmReactRefreshPreamblePlugin() {
35
+ let active = false;
36
+ return {
37
+ name: "farm:react-refresh-preamble",
38
+ apply: "serve",
39
+ configResolved(config) {
40
+ active = isFarmReactRefreshActive(config);
41
+ },
42
+ resolveId(id) {
43
+ if (id === FARM_REACT_REFRESH_PREAMBLE_ID) return id;
44
+ },
45
+ load(id) {
46
+ if (id !== FARM_REACT_REFRESH_PREAMBLE_ID) return;
47
+ if (!active) return "";
48
+ return `import RefreshRuntime from "/@react-refresh";
49
+ RefreshRuntime.injectIntoGlobalHook(window);
50
+ window.$RefreshReg$ = () => {};
51
+ window.$RefreshSig$ = () => (type) => type;
52
+ window.__vite_plugin_react_preamble_installed__ = true;
53
+ `;
54
+ },
55
+ transform(code, id) {
56
+ if (!active || this.environment?.config.consumer !== "client" || !isFarmClientEntryId(id)) {
57
+ return;
58
+ }
59
+ return {
60
+ code: `import ${JSON.stringify(FARM_REACT_REFRESH_PREAMBLE_ID)};
61
+ ${code}`,
62
+ map: null
63
+ };
64
+ }
65
+ };
66
+ }
67
+ __name(createFarmReactRefreshPreamblePlugin, "createFarmReactRefreshPreamblePlugin");
68
+ async function loadFarmReactPlugin() {
69
+ const entry = createRequire(
70
+ typeof __filename === "string" ? __filename : import.meta.url
71
+ ).resolve("@vitejs/plugin-react");
72
+ return await import(
73
+ /* @vite-ignore */
74
+ pathToFileURL(entry).href
75
+ );
76
+ }
77
+ __name(loadFarmReactPlugin, "loadFarmReactPlugin");
78
+ async function createFarmReactRefreshPlugins() {
79
+ const { default: react } = await loadFarmReactPlugin();
80
+ const plugins = react().map(
81
+ (plugin) => Object.assign(
82
+ {
83
+ ...plugin,
84
+ apply: /* @__PURE__ */ __name((config, env) => env.command === "serve" && !hasAppReactPlugin(config.plugins), "apply")
85
+ },
86
+ { [FARM_OWNED]: true }
87
+ )
88
+ );
89
+ return [...plugins, createFarmReactRefreshPreamblePlugin()];
90
+ }
91
+ __name(createFarmReactRefreshPlugins, "createFarmReactRefreshPlugins");
92
+
93
+ export {
94
+ isFarmReactRefreshActive,
95
+ loadFarmReactPlugin,
96
+ createFarmReactRefreshPlugins
97
+ };
@@ -2,6 +2,15 @@ import {
2
2
  __name
3
3
  } from "./chunk-LPEX4YW6.mjs";
4
4
 
5
+ // src/client/action-reference.ts
6
+ var ACTION_IDS_KEY = /* @__PURE__ */ Symbol.for("farm.form-actions.ids");
7
+ function getFarmActionId(value) {
8
+ if (typeof value !== "function") return void 0;
9
+ const scope = globalThis;
10
+ return scope[ACTION_IDS_KEY]?.get(value);
11
+ }
12
+ __name(getFarmActionId, "getFarmActionId");
13
+
5
14
  // src/client/client-reference.ts
6
15
  var CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("farm.isolated-hydration.client-reference");
7
16
  function markFarmClientReference(boundary, reference) {
@@ -38,6 +47,7 @@ function updateFarmServerTreeModule(reference, module) {
38
47
  __name(updateFarmServerTreeModule, "updateFarmServerTreeModule");
39
48
 
40
49
  export {
50
+ getFarmActionId,
41
51
  markFarmClientReference,
42
52
  getFarmClientReference,
43
53
  subscribeFarmServerTreeUpdates,
@@ -2,12 +2,13 @@ import {
2
2
  collectSSGPages,
3
3
  matchSSGPage,
4
4
  resolveRouteRenderingConfigFromFile
5
- } from "./chunk-35WS7P2V.mjs";
5
+ } from "./chunk-26CXZR6L.mjs";
6
6
  import {
7
7
  classifyFarmDocumentPrefix,
8
8
  composeFarmFullDocument,
9
9
  createDefaultErrorMarkup,
10
10
  createFarmMetadataRouteResponse,
11
+ createFarmRouteRenderPlan,
11
12
  createFarmThemeDocumentParts,
12
13
  createLateNotFoundRecovery,
13
14
  createLateRedirectRecovery,
@@ -24,7 +25,7 @@ import {
24
25
  renderFarmLocaleAlternateLinks,
25
26
  resolveDefaultErrorStatus,
26
27
  routeBoundaryCoversDirectory
27
- } from "./chunk-PIZXONIS.mjs";
28
+ } from "./chunk-TESO7EFU.mjs";
28
29
  import {
29
30
  FARM_DEFAULT_MCP_PATH,
30
31
  collectFarmDefaultMCPPages,
@@ -33,9 +34,15 @@ import {
33
34
  isFarmDefaultMCPPathname,
34
35
  resolveFarmDefaultMCPServer
35
36
  } from "./chunk-4ZZNPK25.mjs";
37
+ import {
38
+ handleFarmFormActionRequest
39
+ } from "./chunk-XUGFRFD2.mjs";
36
40
  import {
37
41
  createFarmMetadataImageResponse
38
42
  } from "./chunk-OJ7JP7RJ.mjs";
43
+ import {
44
+ installFarmIslandValues
45
+ } from "./chunk-D5RFPV2H.mjs";
39
46
  import {
40
47
  FARM_ISLAND_REPLAYABLE_SELECTOR,
41
48
  isFarmIslandStrategy
@@ -55,14 +62,15 @@ import {
55
62
  import {
56
63
  getFarmProjectSourceDir,
57
64
  resolveFarmAuthConfig,
58
- resolveFarmDevIndicatorsConfig
59
- } from "./chunk-HCSVR4YZ.mjs";
60
- import {
61
- normalizeRouteRules
62
- } from "./chunk-GHFS7RUB.mjs";
65
+ resolveFarmDevIndicatorsConfig,
66
+ resolveFarmServerComponentsMode
67
+ } from "./chunk-M3BXTWJM.mjs";
63
68
  import {
64
69
  resolveFarmDevtoolsConfig
65
70
  } from "./chunk-JBSVKMC5.mjs";
71
+ import {
72
+ normalizeRouteRules
73
+ } from "./chunk-GHFS7RUB.mjs";
66
74
  import {
67
75
  assertFarmRendererStreamingRuntime,
68
76
  getFarmRendererCapabilities,
@@ -170,7 +178,6 @@ import {
170
178
  } from "./chunk-NPC7VWJE.mjs";
171
179
  import {
172
180
  formatOptionalPeerInstallHint,
173
- isMissingPackageError,
174
181
  isOptionalPeerInstalled
175
182
  } from "./chunk-YOZYCI6Z.mjs";
176
183
  import {
@@ -237,7 +244,7 @@ import {
237
244
  } from "./chunk-P7XDC7UJ.mjs";
238
245
  import {
239
246
  FARM_VERSION
240
- } from "./chunk-U2UC7UGP.mjs";
247
+ } from "./chunk-YGZH4T2X.mjs";
241
248
  import {
242
249
  resolveFarmTrailingSlashRedirect,
243
250
  setFarmTrailingSlashPreference
@@ -731,7 +738,7 @@ function getClientModuleHydrationPlan(modulePath, root, mode = "off", options =
731
738
  ...costGuardExceeded ? { costGuardExceeded: true } : {},
732
739
  ...fallbackReason ? { fallbackReason } : {}
733
740
  }), "emptyPlan");
734
- const asyncOwner = metadata.suppressedAsyncHydration === true && options.asyncOwnerIslands === true;
741
+ const asyncOwner = (metadata.suppressedAsyncHydration === true || options.serverOwners === true) && options.asyncOwnerIslands === true;
735
742
  if (mode === "off" && !asyncOwner) return emptyPlan();
736
743
  const resolvedPath = resolveOwnerSourcePath(resolveModuleSourcePath(modulePath, root), root);
737
744
  const content = readIfExists(resolvedPath ?? "");
@@ -1745,56 +1752,6 @@ function resolveSourceCandidate(candidates) {
1745
1752
  }
1746
1753
  __name(resolveSourceCandidate, "resolveSourceCandidate");
1747
1754
 
1748
- // src/navigation/render-plan.ts
1749
- function createFarmRouteRenderPlan(input = {}) {
1750
- const pageShouldHydrate = input.pageShouldHydrate === true;
1751
- const layoutShouldHydrate = input.layoutShouldHydrate === true;
1752
- const hydration = pageShouldHydrate ? layoutShouldHydrate ? "route-and-layout-islands" : "route-island" : layoutShouldHydrate ? "layout-island" : "none";
1753
- const rendering = input.rendering;
1754
- const cache2 = rendering?.ssg ? typeof rendering.revalidate === "number" && rendering.revalidate > 0 ? { mode: "revalidate", revalidate: rendering.revalidate } : { mode: "static" } : { mode: "dynamic" };
1755
- return {
1756
- version: 1,
1757
- output: "html",
1758
- navigation: "html-fragment",
1759
- hydration,
1760
- islandStrategy: hydration === "none" ? null : input.islandStrategy ?? "load",
1761
- cache: cache2
1762
- };
1763
- }
1764
- __name(createFarmRouteRenderPlan, "createFarmRouteRenderPlan");
1765
- function getFarmFragmentCacheControl(plan) {
1766
- if (plan.cache.mode === "static") {
1767
- return "public, max-age=0, s-maxage=31536000, immutable";
1768
- }
1769
- if (plan.cache.mode === "revalidate") {
1770
- const seconds = Math.max(1, plan.cache.revalidate ?? 1);
1771
- return `public, max-age=0, s-maxage=${seconds}, stale-while-revalidate=${seconds}`;
1772
- }
1773
- return "private, max-age=0";
1774
- }
1775
- __name(getFarmFragmentCacheControl, "getFarmFragmentCacheControl");
1776
- function parseFarmLayoutChainHeader(value) {
1777
- if (!value || value.length > 8192) return [];
1778
- try {
1779
- const parsed = JSON.parse(value);
1780
- if (!Array.isArray(parsed) || parsed.length > 64) return [];
1781
- return parsed.filter(
1782
- (pattern) => typeof pattern === "string" && pattern.startsWith("/") && pattern.length <= 512
1783
- );
1784
- } catch {
1785
- return [];
1786
- }
1787
- }
1788
- __name(parseFarmLayoutChainHeader, "parseFarmLayoutChainHeader");
1789
- function getSharedLayoutPrefixLength(current, next) {
1790
- let index = 0;
1791
- while (index < current.length && index < next.length && current[index] === next[index]) {
1792
- index++;
1793
- }
1794
- return index;
1795
- }
1796
- __name(getSharedLayoutPrefixLength, "getSharedLayoutPrefixLength");
1797
-
1798
1755
  // src/routing/route-manager.ts
1799
1756
  import { realpathSync } from "fs";
1800
1757
  import path3 from "path";
@@ -2204,7 +2161,7 @@ var _RouteManager = class _RouteManager {
2204
2161
  const unsupportedIntegrationProvider = integrationProviders.find(
2205
2162
  (provider) => provider.supportsIsolatedHydration !== true
2206
2163
  );
2207
- if (this.config.experimental?.isolatedClientHydration === "enabled" && this.config.experimental?.serverComponents !== true && unsupportedIntegrationProvider) {
2164
+ if (this.config.experimental?.isolatedClientHydration === "enabled" && resolveFarmServerComponentsMode(this.config.experimental?.serverComponents) !== "rsc" && unsupportedIntegrationProvider) {
2208
2165
  logger.warn(
2209
2166
  `[Farm.js] isolated hydration kept route-wide because integration provider "${unsupportedIntegrationProvider.name}" does not declare supportsIsolatedHydration: true.`
2210
2167
  );
@@ -2212,7 +2169,7 @@ var _RouteManager = class _RouteManager {
2212
2169
  const isolatedMode = resolveFarmIsolatedClientHydrationMode(
2213
2170
  this.config.experimental?.isolatedClientHydration,
2214
2171
  {
2215
- serverComponents: this.config.experimental?.serverComponents === true,
2172
+ serverComponents: resolveFarmServerComponentsMode(this.config.experimental?.serverComponents) === "rsc",
2216
2173
  hasUnsupportedIntegrationProvider: Boolean(unsupportedIntegrationProvider)
2217
2174
  }
2218
2175
  );
@@ -2237,12 +2194,10 @@ var _RouteManager = class _RouteManager {
2237
2194
  );
2238
2195
  const routeEntries = Array.from(this.routes.values()).map((entry) => ({
2239
2196
  entry,
2240
- metadata: isFarmMarkdownPageFile(entry.modulePath) ? markdownPagePlan() : getClientModuleHydrationPlan(
2241
- entry.modulePath,
2242
- normalizedProjectRoot,
2243
- isolatedMode,
2244
- planOptions
2245
- )
2197
+ metadata: isFarmMarkdownPageFile(entry.modulePath) ? markdownPagePlan() : getClientModuleHydrationPlan(entry.modulePath, normalizedProjectRoot, isolatedMode, {
2198
+ ...planOptions,
2199
+ serverOwners: resolveFarmServerComponentsMode(this.config.experimental?.serverComponents) === "islands"
2200
+ })
2246
2201
  }));
2247
2202
  const markdownFallback = routeEntries.find(
2248
2203
  ({ entry, metadata }) => isFarmMarkdownPageFile(entry.modulePath) && metadata.fallbackReason
@@ -4530,6 +4485,8 @@ function createDefaultErrorDiagnostics(error, root) {
4530
4485
  __name(createDefaultErrorDiagnostics, "createDefaultErrorDiagnostics");
4531
4486
 
4532
4487
  // src/server/renderer.ts
4488
+ installFarmIslandValues();
4489
+ var islands;
4533
4490
  var cachedClerkProvider = null;
4534
4491
  var importRuntimeModule = new Function("specifier", "return import(specifier);");
4535
4492
  function shouldServePrerenderedPage(nodeEnv, method) {
@@ -4789,6 +4746,10 @@ var _ServerRenderer = class _ServerRenderer {
4789
4746
  }
4790
4747
  async initialize() {
4791
4748
  if (this.rendererRuntime) return;
4749
+ if (this.islandValues()) {
4750
+ (await import("./internal/islands-server.mjs")).installFarmIslandsServer();
4751
+ islands ?? (islands = await import("./internal/islands-runtime.mjs"));
4752
+ }
4792
4753
  if (this.config.notFound?.component?.trim()) {
4793
4754
  resolveFarmNotFoundComponentPath(this.config, getFarmAppDirectories(this.config));
4794
4755
  }
@@ -4899,8 +4860,20 @@ var _ServerRenderer = class _ServerRenderer {
4899
4860
  if (!this.rendererRuntime.wrapClientGraph || typeof getIsolatedClientBoundaryModules !== "function" || getIsolatedClientBoundaryModules.call(this.routeManager, this.config.root).size === 0) {
4900
4861
  return element;
4901
4862
  }
4863
+ if (islands && this.islandValues())
4864
+ return islands.wrapFarmIsolatedClientGraph(void 0, element);
4902
4865
  return this.rendererRuntime.wrapClientGraph(element);
4903
4866
  }
4867
+ /** The page a hydrating layout keeps as server HTML: islands again, or a server tree. */
4868
+ async isolateServerPage(element, serverTree) {
4869
+ if (islands && this.islandValues()) {
4870
+ const runtime = islands;
4871
+ return serverTree ? runtime.renderFarmServerTreePage(void 0, element, {
4872
+ isolate: /* @__PURE__ */ __name((node) => runtime.isolateFarmServerPageGraph(void 0, node), "isolate")
4873
+ }) : runtime.isolateFarmServerPageGraph(void 0, element);
4874
+ }
4875
+ return serverTree && this.rendererRuntime.renderServerTreePage ? this.rendererRuntime.renderServerTreePage(element, { values: false }) : this.rendererRuntime.isolateServerPageGraph(element);
4876
+ }
4904
4877
  async renderElementToCompleteHTML(element, options = {}) {
4905
4878
  const streaming = getFarmRendererStreamingCapabilitiesForRuntime(this.config.renderer, "node");
4906
4879
  const renderToPipeableStream = streaming.node ? this.rendererRuntime.renderToPipeableStream : void 0;
@@ -4961,6 +4934,10 @@ var _ServerRenderer = class _ServerRenderer {
4961
4934
  }
4962
4935
  return { html: await this.renderElementToCompleteHTML(element, options), head: "" };
4963
4936
  }
4937
+ /** Islands mode sends large prop values once, keyed by content (RFC 0003). */
4938
+ islandValues() {
4939
+ return resolveFarmServerComponentsMode(this.config.experimental?.serverComponents) === "islands";
4940
+ }
4964
4941
  /**
4965
4942
  * Render the route tree used by client navigation without producing a second
4966
4943
  * document response. Layout markers let the browser preserve the longest
@@ -4987,7 +4964,7 @@ var _ServerRenderer = class _ServerRenderer {
4987
4964
  if (input.pageShouldHydrate && !input.layoutShouldHydrate) {
4988
4965
  element = this.wrapClientGraph(element);
4989
4966
  } else if (input.layoutShouldHydrate && !input.pageShouldHydrate && this.rendererRuntime.isolateServerPageGraph) {
4990
- element = input.serverTree && this.rendererRuntime.renderServerTreePage ? await this.rendererRuntime.renderServerTreePage(element) : this.rendererRuntime.isolateServerPageGraph(element);
4967
+ element = await this.isolateServerPage(element, input.serverTree === true);
4991
4968
  }
4992
4969
  element = this.createPageBoundary(element, {
4993
4970
  pageShouldHydrate: input.pageShouldHydrate,
@@ -5434,6 +5411,25 @@ var _ServerRenderer = class _ServerRenderer {
5434
5411
  route: route.pattern,
5435
5412
  params
5436
5413
  });
5414
+ let actionRequest;
5415
+ if (req.method === "POST" && resolveFarmServerComponentsMode(this.config.experimental?.serverComponents) === "islands") {
5416
+ await Promise.all([
5417
+ this.routeManager.loadRouteModule(route.modulePath),
5418
+ ...layouts.map((layout) => this.routeManager.loadLayoutModule(layout.modulePath))
5419
+ ]);
5420
+ actionRequest = createWebRequestFromFarmRequest(req, {
5421
+ trustProxy: this.config.server?.trustProxy
5422
+ });
5423
+ const actionResponse = await handleFarmFormActionRequest(
5424
+ actionRequest,
5425
+ resolveServerActionsConfig(this.config.serverActions)
5426
+ );
5427
+ if (actionResponse) {
5428
+ await sendWebResponse(res, actionResponse);
5429
+ completeRender(actionResponse.status, route.pattern);
5430
+ return;
5431
+ }
5432
+ }
5437
5433
  const loadingBoundaryEntry = this.routeManager.getMatchingLoading(pathname, route);
5438
5434
  errorBoundaryEntry = this.routeManager.getMatchingError(pathname, route);
5439
5435
  middlewareMap = toMiddlewareMap(req.__FARM_MIDDLEWARE_DATA__);
@@ -5441,7 +5437,7 @@ var _ServerRenderer = class _ServerRenderer {
5441
5437
  pluginExposedContext = getRequestContextSnapshot(req, {
5442
5438
  exposedOnly: true
5443
5439
  });
5444
- const currentRequest = createWebRequestFromFarmRequest(req, {
5440
+ const currentRequest = actionRequest ?? createWebRequestFromFarmRequest(req, {
5445
5441
  trustProxy: this.config.server?.trustProxy
5446
5442
  });
5447
5443
  const routeContext = await this.resolveRouteContext({
@@ -5762,7 +5758,10 @@ var _ServerRenderer = class _ServerRenderer {
5762
5758
  if ((isClientComponent || shouldHydrate) && !shouldHydrateLayout) {
5763
5759
  pageElement = this.wrapClientGraph(pageElement);
5764
5760
  } else if (shouldHydrateLayout && !(isClientComponent || shouldHydrate) && this.rendererRuntime.isolateServerPageGraph) {
5765
- pageElement = routeManifestEntry?.serverTree === true && this.rendererRuntime.renderServerTreePage ? await this.rendererRuntime.renderServerTreePage(pageElement) : this.rendererRuntime.isolateServerPageGraph(pageElement);
5761
+ pageElement = await this.isolateServerPage(
5762
+ pageElement,
5763
+ routeManifestEntry?.serverTree === true
5764
+ );
5766
5765
  }
5767
5766
  pageElement = this.createPageBoundary(pageElement, {
5768
5767
  pageShouldHydrate: isClientComponent || shouldHydrate,
@@ -8366,103 +8365,8 @@ function farmDocsClientConfigPlugin(configModule) {
8366
8365
  }
8367
8366
  __name(farmDocsClientConfigPlugin, "farmDocsClientConfigPlugin");
8368
8367
 
8369
- // src/build/tailwind.ts
8370
- import path16 from "path";
8371
-
8372
- // src/build/vite-plugin-compat.ts
8373
- function adaptTailwindVitePlugin(pluginOption, builder) {
8374
- if (builder !== "rolldown") return pluginOption;
8375
- return adaptPluginOption(pluginOption);
8376
- }
8377
- __name(adaptTailwindVitePlugin, "adaptTailwindVitePlugin");
8378
- function adaptPluginOption(pluginOption) {
8379
- if (Array.isArray(pluginOption)) return pluginOption.map(adaptPluginOption);
8380
- if (!pluginOption || typeof pluginOption !== "object") return pluginOption;
8381
- const plugin = pluginOption;
8382
- if (!plugin.name?.startsWith("@tailwindcss/vite:generate:")) return pluginOption;
8383
- if (isVitePluginHook(plugin.transform)) {
8384
- return {
8385
- ...plugin,
8386
- transform: withVite5TransformContext(plugin.transform)
8387
- };
8388
- }
8389
- if (plugin.transform && typeof plugin.transform === "object" && "handler" in plugin.transform && isVitePluginHook(plugin.transform.handler)) {
8390
- return {
8391
- ...plugin,
8392
- transform: {
8393
- ...plugin.transform,
8394
- handler: withVite5TransformContext(plugin.transform.handler)
8395
- }
8396
- };
8397
- }
8398
- return pluginOption;
8399
- }
8400
- __name(adaptPluginOption, "adaptPluginOption");
8401
- function isVitePluginHook(value) {
8402
- return typeof value === "function";
8403
- }
8404
- __name(isVitePluginHook, "isVitePluginHook");
8405
- function withVite5TransformContext(handler) {
8406
- return function(...args) {
8407
- const context = new Proxy(this, {
8408
- get(target, property2, receiver) {
8409
- if (property2 === "environment") return void 0;
8410
- return Reflect.get(target, property2, receiver);
8411
- }
8412
- });
8413
- return handler.apply(context, args);
8414
- };
8415
- }
8416
- __name(withVite5TransformContext, "withVite5TransformContext");
8417
-
8418
- // src/build/tailwind.ts
8419
- var TAILWIND_CSS_IMPORT = /@import\s+["']tailwindcss["']/;
8420
- var TAILWIND_VITE_INSTALL_HINT = formatOptionalPeerInstallHint(
8421
- "@tailwindcss/vite",
8422
- "enable built-in Tailwind CSS support",
8423
- { dev: true }
8424
- );
8425
- var warnedMissingTailwind = false;
8426
- async function loadTailwindVitePlugin(options = {}, importTailwind = () => import("@tailwindcss/vite")) {
8427
- try {
8428
- const tailwindVite = (await importTailwind()).default;
8429
- const plugin = options.builder ? adaptTailwindVitePlugin(tailwindVite(), options.builder) : tailwindVite();
8430
- if (options.announce) logger.info("\u{1F4E6} Enabled built-in Tailwind support (@tailwindcss/vite)");
8431
- return plugin;
8432
- } catch (error) {
8433
- if (isMissingPackageError(error, "@tailwindcss/vite")) return createMissingTailwindPlugin();
8434
- logger.warn(
8435
- `Tailwind plugin auto-enable failed${options.label ? ` ${options.label}` : ""}; continuing without it: ${error.message}`
8436
- );
8437
- return void 0;
8438
- }
8439
- }
8440
- __name(loadTailwindVitePlugin, "loadTailwindVitePlugin");
8441
- function createMissingTailwindPlugin() {
8442
- let root = process.cwd();
8443
- return {
8444
- name: "farm:tailwind-missing",
8445
- enforce: "pre",
8446
- configResolved(config) {
8447
- root = config.root;
8448
- },
8449
- transform(code, id) {
8450
- if (warnedMissingTailwind || !/\.css(?:\?.*)?$/.test(id) || !TAILWIND_CSS_IMPORT.test(code)) {
8451
- return null;
8452
- }
8453
- warnedMissingTailwind = true;
8454
- const file = path16.relative(root, id.split("?", 1)[0]).replace(/\\/g, "/");
8455
- logger.warn(
8456
- `${file} imports Tailwind CSS, but @tailwindcss/vite is not installed; continuing without Tailwind. ${TAILWIND_VITE_INSTALL_HINT}`
8457
- );
8458
- return null;
8459
- }
8460
- };
8461
- }
8462
- __name(createMissingTailwindPlugin, "createMissingTailwindPlugin");
8463
-
8464
8368
  // src/server/vite-config.ts
8465
- import path17 from "path";
8369
+ import path16 from "path";
8466
8370
  var FARM_CLIENT_ENTRY_PATTERN = "**/{page,layout,loading,error,not-found,default}.{js,jsx,ts,tsx}";
8467
8371
  var FARM_CLIENT_OPTIMIZE_DEPS_INCLUDE = [
8468
8372
  "react",
@@ -8477,7 +8381,11 @@ var FARM_CLIENT_OPTIMIZE_DEPS_INCLUDE = [
8477
8381
  "@farm.js/core/i18n/client",
8478
8382
  "@farm.js/core/query/client",
8479
8383
  "@farm.js/core/server-fn/client",
8480
- "@farm.js/core/server-query/client"
8384
+ "@farm.js/core/server-query/client",
8385
+ // Islands mode's browser runtime: Farm imports islx, which the app reaches only through Farm.
8386
+ "@farm.js/core > @farm.js/islx/client",
8387
+ "@farm.js/core > @farm.js/islx/react",
8388
+ "@farm.js/core > @farm.js/islx/react/client"
8481
8389
  ];
8482
8390
  function getFarmClientOptimizeDepsInclude(renderer) {
8483
8391
  return Array.from(
@@ -8486,9 +8394,9 @@ function getFarmClientOptimizeDepsInclude(renderer) {
8486
8394
  }
8487
8395
  __name(getFarmClientOptimizeDepsInclude, "getFarmClientOptimizeDepsInclude");
8488
8396
  function createFarmClientOptimizeDepsEntries(projectRoot, appDirectories) {
8489
- const resolvedProjectRoot = path17.resolve(projectRoot);
8397
+ const resolvedProjectRoot = path16.resolve(projectRoot);
8490
8398
  return appDirectories.map((appDirectory) => {
8491
- const relativeAppDirectory = path17.relative(resolvedProjectRoot, path17.resolve(appDirectory)).replace(/\\/g, "/");
8399
+ const relativeAppDirectory = path16.relative(resolvedProjectRoot, path16.resolve(appDirectory)).replace(/\\/g, "/");
8492
8400
  const prefix = relativeAppDirectory || ".";
8493
8401
  return `${prefix}/${FARM_CLIENT_ENTRY_PATTERN}`;
8494
8402
  });
@@ -8512,7 +8420,7 @@ function createFarmClientOptimizeDepsConfig(entries, renderer) {
8512
8420
  __name(createFarmClientOptimizeDepsConfig, "createFarmClientOptimizeDepsConfig");
8513
8421
  function createFarmSourceAlias(projectRoot, srcDir = "src") {
8514
8422
  return {
8515
- "@": path17.resolve(projectRoot, srcDir)
8423
+ "@": path16.resolve(projectRoot, srcDir)
8516
8424
  };
8517
8425
  }
8518
8426
  __name(createFarmSourceAlias, "createFarmSourceAlias");
@@ -8680,10 +8588,6 @@ export {
8680
8588
  createMarkdownPageHydrationPlanner,
8681
8589
  enforceFarmIsolatedHydrationRouteBudget,
8682
8590
  isIsolatableClientBoundarySource,
8683
- createFarmRouteRenderPlan,
8684
- getFarmFragmentCacheControl,
8685
- parseFarmLayoutChainHeader,
8686
- getSharedLayoutPrefixLength,
8687
8591
  RouteManager,
8688
8592
  resolveDevGlobalStylesheetHref,
8689
8593
  resolveFarmNotFoundComponentPath,
@@ -8707,7 +8611,6 @@ export {
8707
8611
  redactFarmDocsClientConfig,
8708
8612
  isFarmDocsClientConfigModule,
8709
8613
  farmDocsClientConfigPlugin,
8710
- loadTailwindVitePlugin,
8711
8614
  createFarmClientOptimizeDepsEntries,
8712
8615
  createFarmClientOptimizeDepsConfig,
8713
8616
  createFarmSourceAlias,