@farm.js/core 0.1.42 → 0.1.44

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 (243) hide show
  1. package/dist/{agent-mcp-ssVy_tea.d.mts → agent-mcp-CWI-awqd.d.mts} +1 -1
  2. package/dist/{agent-mcp-SSD6L3VZ.d.ts → agent-mcp-EnzWYv_X.d.ts} +1 -1
  3. package/dist/agent-runtime.cjs +3 -2
  4. package/dist/agent-runtime.d.mts +1 -1
  5. package/dist/agent-runtime.d.ts +1 -1
  6. package/dist/agent-runtime.mjs +2 -1
  7. package/dist/api/route-manager.d.mts +3 -3
  8. package/dist/api/route-manager.d.ts +3 -3
  9. package/dist/api/runtime.d.mts +2 -2
  10. package/dist/api/runtime.d.ts +2 -2
  11. package/dist/api.cjs +2 -2
  12. package/dist/api.d.mts +8 -3
  13. package/dist/api.d.ts +8 -3
  14. package/dist/api.mjs +1 -1
  15. package/dist/{app-KjFzdCqy.d.ts → app-CAN_2Cqo.d.ts} +8 -4
  16. package/dist/{app-1h3lVT4a.d.mts → app-DG3dE8v5.d.mts} +8 -4
  17. package/dist/{app-manifest-D3RkVNuS.d.mts → app-manifest-8x5VjZ0L.d.mts} +1 -1
  18. package/dist/{app-manifest-DaW8-tvX.d.ts → app-manifest-DazjgQya.d.ts} +1 -1
  19. package/dist/app-markdown.d.mts +2 -2
  20. package/dist/app-markdown.d.ts +2 -2
  21. package/dist/{chunk-ECKF2BAM.cjs → chunk-2GVF3C2F.cjs} +255 -42
  22. package/dist/{chunk-TUL355PH.mjs → chunk-2MKTHHEU.mjs} +136 -161
  23. package/dist/chunk-2NXO5SBY.mjs +57 -0
  24. package/dist/{chunk-AX7S67YV.mjs → chunk-37VKVISD.mjs} +9 -173
  25. package/dist/chunk-3BROEWFY.cjs +39 -0
  26. package/dist/chunk-3SAWHWDH.cjs +186 -0
  27. package/dist/{chunk-AHFRQMRX.cjs → chunk-3YJMBQ27.cjs} +1 -1
  28. package/dist/{chunk-6PKXK4TY.mjs → chunk-53ZV6K65.mjs} +1 -1
  29. package/dist/{chunk-JG3MEQUH.cjs → chunk-5GBL2LKD.cjs} +430 -217
  30. package/dist/{chunk-LYIZHJTK.cjs → chunk-5LPHJZSI.cjs} +14 -14
  31. package/dist/chunk-5NIWBWDD.mjs +97 -0
  32. package/dist/{chunk-NRDBW4MP.mjs → chunk-7IQQIPRZ.mjs} +10 -0
  33. package/dist/{chunk-TCJ4A4A2.cjs → chunk-AI3WVJNP.cjs} +324 -350
  34. package/dist/chunk-APDGOKKE.cjs +148 -0
  35. package/dist/chunk-AZBSVLRM.cjs +132 -0
  36. package/dist/{chunk-RHGK2JEN.cjs → chunk-B6XAA7V6.cjs} +18 -182
  37. package/dist/chunk-CEDPEDNW.cjs +98 -0
  38. package/dist/{chunk-WSOBCAYO.cjs → chunk-CW6SNEN2.cjs} +25 -25
  39. package/dist/chunk-D5RFPV2H.mjs +148 -0
  40. package/dist/chunk-E22SWCXB.cjs +144 -0
  41. package/dist/{chunk-375K2ZVU.mjs → chunk-ERA5RP3L.mjs} +263 -50
  42. package/dist/{chunk-724JLMS4.mjs → chunk-F646BZ4Y.mjs} +4 -2
  43. package/dist/{chunk-C5KVWHIH.cjs → chunk-G2Z5DGMS.cjs} +5 -3
  44. package/dist/{chunk-ZATTDMBW.cjs → chunk-GA6JM4L6.cjs} +279 -376
  45. package/dist/chunk-GZWHCWLB.mjs +186 -0
  46. package/dist/{chunk-24SP5TGU.mjs → chunk-H4LXPWI2.mjs} +2 -2
  47. package/dist/chunk-H7BLEEAE.cjs +57 -0
  48. package/dist/chunk-IOMVXBLZ.mjs +144 -0
  49. package/dist/{chunk-BD3D7EZV.cjs → chunk-IXFOBGLQ.cjs} +9 -3
  50. package/dist/{chunk-JIYYX7WU.mjs → chunk-JVXW76I7.mjs} +2 -2
  51. package/dist/{chunk-MHN4UR5U.cjs → chunk-KFZZFZ7J.cjs} +7 -7
  52. package/dist/{chunk-BXJ5HJTJ.cjs → chunk-LPE3ED4R.cjs} +17 -13
  53. package/dist/chunk-LRJRXXQZ.cjs +109 -0
  54. package/dist/{chunk-HCSVR4YZ.mjs → chunk-M3BXTWJM.mjs} +18 -0
  55. package/dist/{chunk-2JZHQDUY.mjs → chunk-OYZGFRPA.mjs} +1 -1
  56. package/dist/{chunk-JR4QCLJY.cjs → chunk-PDU4P2IC.cjs} +19 -1
  57. package/dist/chunk-PJEHUSHA.mjs +229 -0
  58. package/dist/{chunk-QTEJGB5A.mjs → chunk-QGFKXYC7.mjs} +80 -177
  59. package/dist/chunk-QGH2RQVF.mjs +132 -0
  60. package/dist/{chunk-YWMZUGIS.mjs → chunk-R3ZFQJEF.mjs} +247 -34
  61. package/dist/{chunk-U2UC7UGP.mjs → chunk-R4J2UOV4.mjs} +1 -1
  62. package/dist/chunk-S34OBRMZ.mjs +109 -0
  63. package/dist/{chunk-TS4JHGUJ.mjs → chunk-S3ZEMCE6.mjs} +9 -3
  64. package/dist/{chunk-WWFTAUFG.cjs → chunk-SBH2JLLF.cjs} +12 -2
  65. package/dist/{chunk-YSLWRWWP.cjs → chunk-SKK6UF5P.cjs} +200 -46
  66. package/dist/{chunk-ZS6HDNOM.cjs → chunk-T44ECMEP.cjs} +6 -6
  67. package/dist/{chunk-OFZUJMCU.mjs → chunk-WPJQN64R.mjs} +195 -41
  68. package/dist/{chunk-NU25TRIO.mjs → chunk-WWYXIECF.mjs} +12 -8
  69. package/dist/{chunk-7YHSD3Z6.cjs → chunk-XPSGGECF.cjs} +85 -31
  70. package/dist/chunk-XUGFRFD2.mjs +39 -0
  71. package/dist/{chunk-IVQY6UTY.mjs → chunk-XUHIRBXY.mjs} +1 -1
  72. package/dist/{chunk-PIZXONIS.mjs → chunk-YFLBG2W3.mjs} +56 -2
  73. package/dist/chunk-YKUEJ3MG.cjs +229 -0
  74. package/dist/{chunk-QKZMB7LY.cjs → chunk-YN2QEMMO.cjs} +2 -2
  75. package/dist/{client-plugins-DIem0I0W.d.ts → client-plugins-BGS0wqzc.d.ts} +36 -16
  76. package/dist/{client-plugins-C9Py_50W.d.mts → client-plugins-nQ0tYt4l.d.mts} +36 -16
  77. package/dist/client-plugins.d.mts +1 -1
  78. package/dist/client-plugins.d.ts +1 -1
  79. package/dist/client.cjs +4 -3
  80. package/dist/client.d.mts +5 -5
  81. package/dist/client.d.ts +5 -5
  82. package/dist/client.mjs +3 -2
  83. package/dist/config.d.mts +1 -1
  84. package/dist/config.d.ts +1 -1
  85. package/dist/{devtools-2RY3EKHL.cjs → devtools-5Q7VRKVH.cjs} +6 -5
  86. package/dist/{devtools-Q3LBNUJ7.mjs → devtools-LJ4IGYGW.mjs} +5 -4
  87. package/dist/docs.cjs +7 -6
  88. package/dist/docs.d.mts +2 -2
  89. package/dist/docs.d.ts +2 -2
  90. package/dist/docs.mjs +6 -5
  91. package/dist/index-Cy26isrh.d.ts +48 -0
  92. package/dist/index-y1jgR74U.d.mts +48 -0
  93. package/dist/index.cjs +44 -25
  94. package/dist/index.d.mts +15 -15
  95. package/dist/index.d.ts +15 -15
  96. package/dist/index.mjs +51 -32
  97. package/dist/integrations.cjs +5 -3
  98. package/dist/integrations.d.mts +1 -1
  99. package/dist/integrations.d.ts +1 -1
  100. package/dist/integrations.mjs +6 -4
  101. package/dist/internal/app-markdown-runtime.d.mts +2 -2
  102. package/dist/internal/app-markdown-runtime.d.ts +2 -2
  103. package/dist/internal/build-runtime.cjs +30 -15
  104. package/dist/internal/build-runtime.d.mts +12 -16
  105. package/dist/internal/build-runtime.d.ts +12 -16
  106. package/dist/internal/build-runtime.mjs +29 -14
  107. package/dist/internal/cli-runtime.cjs +24 -11
  108. package/dist/internal/cli-runtime.mjs +24 -11
  109. package/dist/internal/client-error-overlay.cjs +4 -4
  110. package/dist/internal/client-error-overlay.mjs +1 -1
  111. package/dist/internal/client-runtime.cjs +5 -1
  112. package/dist/internal/client-runtime.d.mts +1 -0
  113. package/dist/internal/client-runtime.d.ts +1 -0
  114. package/dist/internal/client-runtime.mjs +4 -0
  115. package/dist/internal/compression-runtime.d.mts +1 -1
  116. package/dist/internal/compression-runtime.d.ts +1 -1
  117. package/dist/internal/config-runtime.cjs +6 -5
  118. package/dist/internal/config-runtime.d.mts +2 -2
  119. package/dist/internal/config-runtime.d.ts +2 -2
  120. package/dist/internal/config-runtime.mjs +5 -4
  121. package/dist/internal/form-actions-client.cjs +18 -0
  122. package/dist/internal/form-actions-client.d.mts +5 -0
  123. package/dist/internal/form-actions-client.d.ts +5 -0
  124. package/dist/internal/form-actions-client.mjs +18 -0
  125. package/dist/internal/form-actions.cjs +18 -0
  126. package/dist/internal/form-actions.d.mts +14 -0
  127. package/dist/internal/form-actions.d.ts +14 -0
  128. package/dist/internal/form-actions.mjs +18 -0
  129. package/dist/internal/island-codec.cjs +22 -0
  130. package/dist/internal/island-codec.d.mts +29 -0
  131. package/dist/internal/island-codec.d.ts +29 -0
  132. package/dist/internal/island-codec.mjs +22 -0
  133. package/dist/internal/island-value-store.cjs +13 -0
  134. package/dist/internal/island-value-store.d.mts +6 -0
  135. package/dist/internal/island-value-store.d.ts +6 -0
  136. package/dist/internal/island-value-store.mjs +13 -0
  137. package/dist/internal/islands-runtime.cjs +77 -0
  138. package/dist/internal/islands-runtime.d.mts +57 -0
  139. package/dist/internal/islands-runtime.d.ts +57 -0
  140. package/dist/internal/islands-runtime.mjs +77 -0
  141. package/dist/internal/islands-server.cjs +19 -0
  142. package/dist/internal/islands-server.d.mts +3 -0
  143. package/dist/internal/islands-server.d.ts +3 -0
  144. package/dist/internal/islands-server.mjs +19 -0
  145. package/dist/internal/islx-client.cjs +5 -0
  146. package/dist/internal/islx-client.d.mts +2 -0
  147. package/dist/internal/islx-client.d.ts +2 -0
  148. package/dist/internal/islx-client.mjs +3 -0
  149. package/dist/internal/islx-react.cjs +4 -0
  150. package/dist/internal/islx-react.d.mts +1 -0
  151. package/dist/internal/islx-react.d.ts +1 -0
  152. package/dist/internal/islx-react.mjs +2 -0
  153. package/dist/internal/islx-server.cjs +5 -0
  154. package/dist/internal/islx-server.d.mts +2 -0
  155. package/dist/internal/islx-server.d.ts +2 -0
  156. package/dist/internal/islx-server.mjs +3 -0
  157. package/dist/internal/isolated-boundary.cjs +4 -3
  158. package/dist/internal/isolated-boundary.d.mts +13 -1
  159. package/dist/internal/isolated-boundary.d.ts +13 -1
  160. package/dist/internal/isolated-boundary.mjs +3 -2
  161. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  162. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  163. package/dist/internal/production-runtime.cjs +24 -13
  164. package/dist/internal/production-runtime.d.mts +20 -10
  165. package/dist/internal/production-runtime.d.ts +20 -10
  166. package/dist/internal/production-runtime.mjs +24 -13
  167. package/dist/internal/server-tree.cjs +6 -3
  168. package/dist/internal/server-tree.d.mts +25 -2
  169. package/dist/internal/server-tree.d.ts +25 -2
  170. package/dist/internal/server-tree.mjs +7 -4
  171. package/dist/island-value-protocol-BRayRghM.d.mts +12 -0
  172. package/dist/island-value-protocol-BRayRghM.d.ts +12 -0
  173. package/dist/markdown.d.mts +1 -1
  174. package/dist/markdown.d.ts +1 -1
  175. package/dist/middleware.d.mts +3 -3
  176. package/dist/middleware.d.ts +3 -3
  177. package/dist/navigation.cjs +5 -4
  178. package/dist/navigation.d.mts +4 -4
  179. package/dist/navigation.d.ts +4 -4
  180. package/dist/navigation.mjs +4 -3
  181. package/dist/og.d.mts +5 -0
  182. package/dist/og.d.ts +5 -0
  183. package/dist/plugin.cjs +19 -12
  184. package/dist/plugin.d.mts +3 -3
  185. package/dist/plugin.d.ts +3 -3
  186. package/dist/plugin.mjs +18 -11
  187. package/dist/{production-runtime-bjjWq-DA.d.ts → production-runtime-BVMDgHrA.d.ts} +1 -1
  188. package/dist/{production-runtime-CHFKIgpW.d.mts → production-runtime-ClFA_1KQ.d.mts} +1 -1
  189. package/dist/query/client.cjs +6 -5
  190. package/dist/query/client.mjs +2 -1
  191. package/dist/{render-plan-DOHg6wdO.d.mts → render-plan-CoSovy_O.d.mts} +4 -2
  192. package/dist/{render-plan-B2UndB4x.d.ts → render-plan-y2DefWf8.d.ts} +4 -2
  193. package/dist/renderer/react/server.cjs +7 -6
  194. package/dist/renderer/react/server.d.mts +3 -1
  195. package/dist/renderer/react/server.d.ts +3 -1
  196. package/dist/renderer/react/server.mjs +5 -4
  197. package/dist/renderer-client.cjs +5 -4
  198. package/dist/renderer-client.d.mts +3 -3
  199. package/dist/renderer-client.d.ts +3 -3
  200. package/dist/renderer-client.mjs +2 -1
  201. package/dist/renderer.d.mts +3 -1
  202. package/dist/renderer.d.ts +3 -1
  203. package/dist/{request-DVNXRQrI.d.ts → request-aG5Wovm5.d.ts} +1 -1
  204. package/dist/{request-DQcGfdgQ.d.mts → request-cNM09Q7e.d.mts} +1 -1
  205. package/dist/request.d.mts +2 -2
  206. package/dist/request.d.ts +2 -2
  207. package/dist/{route-rendering-B_6fj-GG.d.ts → route-rendering-B3uQmCWX.d.ts} +1 -1
  208. package/dist/{route-rendering-CEX4mFn-.d.mts → route-rendering-EyInfsjI.d.mts} +1 -1
  209. package/dist/{router-CHEMHm1P.d.ts → router-DNUf-Bg1.d.ts} +1 -1
  210. package/dist/{router-CKHPBKXX.d.mts → router-Devibh4r.d.mts} +1 -1
  211. package/dist/routes.d.mts +1 -1
  212. package/dist/routes.d.ts +1 -1
  213. package/dist/rsc-pipeline-4ZJ6GUVQ.cjs +78 -0
  214. package/dist/rsc-pipeline-KK6GFDET.mjs +78 -0
  215. package/dist/{runtime-jj8TKNsy.d.mts → runtime-9KZb8AI5.d.mts} +1 -1
  216. package/dist/{runtime-Br2ZDTAv.d.ts → runtime-CLr9P5kn.d.ts} +1 -1
  217. package/dist/{schema-dev-notice-5JPE67AI.cjs → schema-dev-notice-77ZL23PL.cjs} +4 -4
  218. package/dist/{schema-dev-notice-WLPZ6WKU.mjs → schema-dev-notice-BLXOS6U2.mjs} +2 -2
  219. package/dist/server-plugins.d.mts +2 -2
  220. package/dist/server-plugins.d.ts +2 -2
  221. package/dist/server.cjs +57 -38
  222. package/dist/server.d.mts +15 -10
  223. package/dist/server.d.ts +15 -10
  224. package/dist/server.mjs +37 -18
  225. package/dist/{spa-router-BEvS9Erj.d.mts → spa-router-BIxh4IY-.d.mts} +8 -3
  226. package/dist/{spa-router-DmCuH5B7.d.ts → spa-router-Ds6R_oe-.d.ts} +8 -3
  227. package/dist/{ssg-57v6cZcW.d.mts → ssg-ByrOVYdM.d.mts} +2 -2
  228. package/dist/{ssg-gT093ETk.d.ts → ssg-XnMHCyEc.d.ts} +2 -2
  229. package/dist/testing.d.mts +1 -1
  230. package/dist/testing.d.ts +1 -1
  231. package/dist/{utils-CCTKvR-P.d.ts → utils-BN70ueSN.d.ts} +1 -1
  232. package/dist/{utils-raHHQVyL.d.mts → utils-BrjR5xRs.d.mts} +1 -1
  233. package/dist/version.cjs +2 -2
  234. package/dist/version.mjs +1 -1
  235. package/dist/vite.cjs +19 -12
  236. package/dist/vite.d.mts +6 -4
  237. package/dist/vite.d.ts +6 -4
  238. package/dist/vite.mjs +18 -11
  239. package/package.json +53 -1
  240. package/dist/{chunk-35WS7P2V.mjs → chunk-26CXZR6L.mjs} +3 -3
  241. package/dist/{chunk-QEILRWVV.cjs → chunk-3XEMGDBF.cjs} +2 -2
  242. package/dist/{chunk-BPOTSHDO.cjs → chunk-IOAUK4OI.cjs} +2 -2
  243. package/dist/{chunk-BYR3RQPB.mjs → chunk-T76H22WI.mjs} +4 -4
@@ -0,0 +1,186 @@
1
+ import {
2
+ compileMiddlewareConfig,
3
+ matchesCompiledMiddlewareConfig
4
+ } from "./chunk-HKFBMHCD.mjs";
5
+ import {
6
+ createFarmAPIMiddlewarePathnames,
7
+ resolveFarmAPIServerBasePath
8
+ } from "./chunk-BTHHUD7Q.mjs";
9
+ import {
10
+ canonicalizeRequestPathSegments,
11
+ canonicalizeRequestPathname
12
+ } from "./chunk-CQ6OSQ3K.mjs";
13
+ import {
14
+ resolveFarmLocalePath
15
+ } from "./chunk-L3KT7IXV.mjs";
16
+ import {
17
+ stripFarmBasePath
18
+ } from "./chunk-4RB44K6Z.mjs";
19
+ import {
20
+ __name
21
+ } from "./chunk-LPEX4YW6.mjs";
22
+
23
+ // src/integration-middleware-matcher.ts
24
+ function isFarmIntegration(value) {
25
+ return !!value && typeof value === "object" && value.kind === "farm-integration";
26
+ }
27
+ __name(isFarmIntegration, "isFarmIntegration");
28
+ var compiledIntegrationGuards = /* @__PURE__ */ new WeakMap();
29
+ var noMiddlewareContext = {};
30
+ function resolveIntegrationMiddlewareParams(entry, pathname, config) {
31
+ const params = resolveMatcherParams(entry.matcher, pathname);
32
+ if (params || !entry.matcher) return params;
33
+ const routePathname = resolveIntegrationRoutePathname(pathname, config);
34
+ const candidates = [.../* @__PURE__ */ new Set([pathname, ...getIntegrationAPIPathnames(config)(routePathname)])];
35
+ for (const candidate of candidates) {
36
+ if (candidate === pathname) continue;
37
+ const routeParams = resolveMatcherParams(entry.matcher, candidate);
38
+ if (routeParams) return routeParams;
39
+ }
40
+ let compiled = compiledIntegrationGuards.get(entry);
41
+ if (!compiled) {
42
+ compiled = compileMiddlewareConfig({
43
+ matcher: typeof entry.matcher === "string" ? entry.matcher : [...entry.matcher]
44
+ });
45
+ compiledIntegrationGuards.set(entry, compiled);
46
+ }
47
+ for (const candidate of candidates) {
48
+ const result = matchesCompiledMiddlewareConfig(candidate, compiled, noMiddlewareContext);
49
+ if (result.matched) return result.params ?? {};
50
+ }
51
+ return null;
52
+ }
53
+ __name(resolveIntegrationMiddlewareParams, "resolveIntegrationMiddlewareParams");
54
+ function integrationMiddlewareMayHandlePath(integrations, pathname, catchAllProbe) {
55
+ if (!integrations) return false;
56
+ const covers = /* @__PURE__ */ __name((entry) => resolveIntegrationMiddlewareParams(entry, pathname, void 0) !== null, "covers");
57
+ return Object.values(integrations).some(
58
+ (integration) => isFarmIntegration(integration) && (integration.middleware || []).some((entry) => {
59
+ if (catchAllProbe === void 0) return covers(entry);
60
+ if (!entry.matcher) return false;
61
+ const specific = (Array.isArray(entry.matcher) ? entry.matcher : [entry.matcher]).filter(
62
+ (matcher) => resolveIntegrationMiddlewareParams({ matcher }, catchAllProbe, void 0) === null
63
+ );
64
+ return specific.length > 0 && covers({ matcher: specific });
65
+ })
66
+ );
67
+ }
68
+ __name(integrationMiddlewareMayHandlePath, "integrationMiddlewareMayHandlePath");
69
+ var FARM_INTEGRATION_API_BASE_PATH_KEY = "__farmAPIServerBasePath";
70
+ var integrationAPIPathnames = /* @__PURE__ */ new WeakMap();
71
+ function getIntegrationAPIPathnames(config) {
72
+ if (!config) return (pathname) => [pathname];
73
+ let toPathnames = integrationAPIPathnames.get(config);
74
+ if (!toPathnames) {
75
+ const recorded = config[FARM_INTEGRATION_API_BASE_PATH_KEY];
76
+ const api = config.api;
77
+ const serverBasePath = typeof recorded === "string" ? recorded : typeof api?.baseURL === "string" && typeof api.basePath === "string" ? resolveFarmAPIServerBasePath(api) : void 0;
78
+ toPathnames = createFarmAPIMiddlewarePathnames(serverBasePath);
79
+ integrationAPIPathnames.set(config, toPathnames);
80
+ }
81
+ return toPathnames;
82
+ }
83
+ __name(getIntegrationAPIPathnames, "getIntegrationAPIPathnames");
84
+ function resolveIntegrationRoutePathname(pathname, config) {
85
+ const basePath = typeof config?.basePath === "string" ? config.basePath : void 0;
86
+ let routePathname = basePath ? stripFarmBasePath(pathname, basePath) : pathname;
87
+ const i18n = config?.i18n;
88
+ if (i18n && Array.isArray(i18n.locales) && i18n.locales.length > 0) {
89
+ routePathname = resolveFarmLocalePath(routePathname, {
90
+ locales: i18n.locales,
91
+ defaultLocale: i18n.defaultLocale,
92
+ routing: i18n.routing || "prefix-except-default"
93
+ }).pathname;
94
+ }
95
+ return routePathname;
96
+ }
97
+ __name(resolveIntegrationRoutePathname, "resolveIntegrationRoutePathname");
98
+ function resolveMatcherParams(matcher, pathname) {
99
+ if (!matcher) {
100
+ return {};
101
+ }
102
+ const list = Array.isArray(matcher) ? matcher : [matcher];
103
+ let canonicalPathname;
104
+ let canonicalSegments;
105
+ for (const item of list) {
106
+ if (item === "/(.*)" || item === "*") {
107
+ return {};
108
+ }
109
+ if (item.endsWith("(.*)")) {
110
+ canonicalPathname ?? (canonicalPathname = canonicalizeRequestPathname(pathname));
111
+ const prefix = item.slice(0, -4);
112
+ if (canonicalPathname === prefix || canonicalPathname.startsWith(`${prefix}/`)) {
113
+ return {};
114
+ }
115
+ continue;
116
+ }
117
+ canonicalSegments ?? (canonicalSegments = canonicalizeRequestPathSegments(pathname));
118
+ const params = matchPathSegments(splitPath(item), canonicalSegments);
119
+ if (params) {
120
+ return params;
121
+ }
122
+ }
123
+ return null;
124
+ }
125
+ __name(resolveMatcherParams, "resolveMatcherParams");
126
+ function matchPathSegments(routeSegments, pathSegments) {
127
+ const params = {};
128
+ let routeIndex = 0;
129
+ let pathIndex = 0;
130
+ while (routeIndex < routeSegments.length && pathIndex < pathSegments.length) {
131
+ const routeSegment = routeSegments[routeIndex];
132
+ const pathSegment = pathSegments[pathIndex];
133
+ if (isCatchAllSegment(routeSegment)) {
134
+ params[getSegmentParamName(routeSegment)] = pathSegments.slice(pathIndex);
135
+ return params;
136
+ }
137
+ if (isDynamicSegment(routeSegment)) {
138
+ params[getSegmentParamName(routeSegment)] = pathSegment;
139
+ routeIndex += 1;
140
+ pathIndex += 1;
141
+ continue;
142
+ }
143
+ if (routeSegment !== pathSegment) {
144
+ return null;
145
+ }
146
+ routeIndex += 1;
147
+ pathIndex += 1;
148
+ }
149
+ if (routeIndex === routeSegments.length && pathIndex === pathSegments.length) {
150
+ return params;
151
+ }
152
+ if (routeIndex === routeSegments.length - 1 && isCatchAllSegment(routeSegments[routeIndex])) {
153
+ params[getSegmentParamName(routeSegments[routeIndex])] = [];
154
+ return params;
155
+ }
156
+ return null;
157
+ }
158
+ __name(matchPathSegments, "matchPathSegments");
159
+ function splitPath(value) {
160
+ return value.split("/").filter(Boolean);
161
+ }
162
+ __name(splitPath, "splitPath");
163
+ function isDynamicSegment(segment) {
164
+ return segment.startsWith("[") && segment.endsWith("]");
165
+ }
166
+ __name(isDynamicSegment, "isDynamicSegment");
167
+ function isCatchAllSegment(segment) {
168
+ return segment.startsWith("[...") && segment.endsWith("]");
169
+ }
170
+ __name(isCatchAllSegment, "isCatchAllSegment");
171
+ function getSegmentParamName(segment) {
172
+ if (isCatchAllSegment(segment)) {
173
+ return segment.slice(4, -1);
174
+ }
175
+ return segment.slice(1, -1);
176
+ }
177
+ __name(getSegmentParamName, "getSegmentParamName");
178
+
179
+ export {
180
+ isFarmIntegration,
181
+ resolveIntegrationMiddlewareParams,
182
+ integrationMiddlewareMayHandlePath,
183
+ FARM_INTEGRATION_API_BASE_PATH_KEY,
184
+ matchPathSegments,
185
+ splitPath
186
+ };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useRouter
3
- } from "./chunk-6PKXK4TY.mjs";
3
+ } from "./chunk-53ZV6K65.mjs";
4
4
  import {
5
5
  getRouter
6
- } from "./chunk-TS4JHGUJ.mjs";
6
+ } from "./chunk-S3ZEMCE6.mjs";
7
7
  import {
8
8
  applyFarmBasePath
9
9
  } from "./chunk-4RB44K6Z.mjs";
@@ -0,0 +1,57 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/client/island-value-protocol.ts
6
+ var FARM_ISLAND_ELEMENT = "f-island";
7
+ var FARM_PROPS_SCRIPT_TYPE = "f/props";
8
+ var FARM_VALUE_SCRIPT_TYPE = "f/value";
9
+ var FARM_SLOT_ELEMENT = "f-slot";
10
+ var FARM_TAG = "$";
11
+ var FARM_TAG_VALUE = "v";
12
+ var FARM_REFERENCE_TAG = "r";
13
+ var FARM_SLOT_TAG = "s";
14
+ var FARM_ACTION_TAG = "a";
15
+ var FARM_OBJECT_TAG = "o";
16
+ var FARM_VALUES_HEADER = "F-Values";
17
+ function getFarmTag(value) {
18
+ if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
19
+ const tag = value[FARM_TAG];
20
+ if (typeof tag !== "string") return void 0;
21
+ const keys = Object.keys(value);
22
+ return keys.length === 1 || keys.length === 2 && FARM_TAG_VALUE in value ? tag : void 0;
23
+ }
24
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmTag, "getFarmTag");
25
+ var FARM_VALUE_KEY_PATTERN = /^[0-9a-z]{14}$/;
26
+ var FARM_MAX_HELD_VALUES = 128;
27
+ var FARM_ISLAND_VALUE_STORE_KEY = /* @__PURE__ */ Symbol.for("islx.values");
28
+ var ISLAND_VALUES_SERVER_KEY = /* @__PURE__ */ Symbol.for("farm.island-values.server");
29
+ function getFarmIslandValuesServer() {
30
+ return globalThis[ISLAND_VALUES_SERVER_KEY];
31
+ }
32
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmIslandValuesServer, "getFarmIslandValuesServer");
33
+ function getFarmIslandValueHeaders() {
34
+ const scope = globalThis;
35
+ const held = _optionalChain([scope, 'access', _ => _[FARM_ISLAND_VALUE_STORE_KEY], 'optionalAccess', _2 => _2.heldHeader, 'call', _3 => _3()]);
36
+ return held ? { [FARM_VALUES_HEADER]: held } : {};
37
+ }
38
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmIslandValueHeaders, "getFarmIslandValueHeaders");
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ exports.FARM_ISLAND_ELEMENT = FARM_ISLAND_ELEMENT; exports.FARM_PROPS_SCRIPT_TYPE = FARM_PROPS_SCRIPT_TYPE; exports.FARM_VALUE_SCRIPT_TYPE = FARM_VALUE_SCRIPT_TYPE; exports.FARM_SLOT_ELEMENT = FARM_SLOT_ELEMENT; exports.FARM_TAG = FARM_TAG; exports.FARM_TAG_VALUE = FARM_TAG_VALUE; exports.FARM_REFERENCE_TAG = FARM_REFERENCE_TAG; exports.FARM_SLOT_TAG = FARM_SLOT_TAG; exports.FARM_ACTION_TAG = FARM_ACTION_TAG; exports.FARM_OBJECT_TAG = FARM_OBJECT_TAG; exports.FARM_VALUES_HEADER = FARM_VALUES_HEADER; exports.getFarmTag = getFarmTag; exports.FARM_VALUE_KEY_PATTERN = FARM_VALUE_KEY_PATTERN; exports.FARM_MAX_HELD_VALUES = FARM_MAX_HELD_VALUES; exports.getFarmIslandValuesServer = getFarmIslandValuesServer; exports.getFarmIslandValueHeaders = getFarmIslandValueHeaders;
@@ -0,0 +1,144 @@
1
+ import {
2
+ FARM_RSC_INSTALL_HINT,
3
+ findFarmAppPackageDir
4
+ } from "./chunk-QGH2RQVF.mjs";
5
+ import {
6
+ resolveDeployOutputPath
7
+ } from "./chunk-WWYXIECF.mjs";
8
+ import {
9
+ loadFarmReactPlugin
10
+ } from "./chunk-5NIWBWDD.mjs";
11
+ import {
12
+ loadTailwindVitePlugin
13
+ } from "./chunk-S34OBRMZ.mjs";
14
+ import {
15
+ __name
16
+ } from "./chunk-LPEX4YW6.mjs";
17
+
18
+ // src/rsc-pipeline.ts
19
+ import { readFileSync } from "fs";
20
+ import path from "path";
21
+ import { pathToFileURL } from "url";
22
+ var FARM_RSC_ENTRIES = {
23
+ rsc: "./.farm/rsc-entries/entry.rsc.tsx",
24
+ ssr: "./.farm/rsc-entries/entry.ssr.tsx",
25
+ client: "./.farm/rsc-entries/entry.browser.tsx"
26
+ };
27
+ var FARM_RSC_CONFIG_KEYS = [
28
+ "srcDir",
29
+ "extends",
30
+ "basePath",
31
+ "api",
32
+ "server",
33
+ "middleware",
34
+ "images",
35
+ "serverActions",
36
+ "deploymentId",
37
+ "generateBuildId",
38
+ "md",
39
+ "agent",
40
+ "mcp"
41
+ ];
42
+ var FARM_RSC_PASSTHROUGH_KEYS = ["i18n", "cache"];
43
+ function pickImportTarget(entry) {
44
+ if (typeof entry === "string") return entry;
45
+ if (!entry || typeof entry !== "object") return void 0;
46
+ for (const condition of ["import", "node", "default"]) {
47
+ const target = pickImportTarget(entry[condition]);
48
+ if (target) return target;
49
+ }
50
+ return void 0;
51
+ }
52
+ __name(pickImportTarget, "pickImportTarget");
53
+ async function importFromApp(root, packageName, subpath = ".") {
54
+ const packageDir = findFarmAppPackageDir(root, packageName);
55
+ if (!packageDir) return void 0;
56
+ const manifest = JSON.parse(readFileSync(path.join(packageDir, "package.json"), "utf8"));
57
+ const exportsMap = manifest.exports;
58
+ const entry = exportsMap && typeof exportsMap === "object" && !Array.isArray(exportsMap) && subpath in exportsMap ? exportsMap[subpath] : subpath === "." ? exportsMap ?? manifest.module ?? manifest.main ?? "index.js" : void 0;
59
+ const target = pickImportTarget(entry);
60
+ if (!target) return void 0;
61
+ return import(pathToFileURL(path.join(packageDir, target)).href);
62
+ }
63
+ __name(importFromApp, "importFromApp");
64
+ function hasPluginNamed(plugins, prefix) {
65
+ if (Array.isArray(plugins)) return plugins.some((plugin) => hasPluginNamed(plugin, prefix));
66
+ const name = plugins?.name;
67
+ return typeof name === "string" && name.startsWith(prefix);
68
+ }
69
+ __name(hasPluginNamed, "hasPluginNamed");
70
+ async function createFarmRscViteConfig(userConfig, options) {
71
+ const root = path.resolve(options.root);
72
+ const renderer = userConfig.renderer;
73
+ if (renderer && typeof renderer === "object" && renderer.name && renderer.name !== "react") {
74
+ throw new Error(
75
+ `[Farm.js] experimental.serverComponents needs the React renderer; this app uses "${renderer.name}".`
76
+ );
77
+ }
78
+ const [pluginRsc, viteRsc, viteReact] = await Promise.all([
79
+ importFromApp(root, "@farm.js/plugin", "./rsc"),
80
+ importFromApp(root, "@vitejs/plugin-rsc"),
81
+ importFromApp(root, "@vitejs/plugin-react")
82
+ ]);
83
+ if (!pluginRsc || !viteRsc || !findFarmAppPackageDir(root, "react-server-dom-webpack")) {
84
+ throw new Error(
85
+ `[Farm.js] experimental.serverComponents runs on @farm.js/plugin and the official @vitejs/plugin-rsc. Install them: ${FARM_RSC_INSTALL_HINT}`
86
+ );
87
+ }
88
+ const { plugins: vitePlugins = [], ...viteOptions } = userConfig.vite ?? {};
89
+ const rscConfig = {};
90
+ for (const key of FARM_RSC_CONFIG_KEYS) {
91
+ if (userConfig[key] !== void 0) rscConfig[key] = userConfig[key];
92
+ }
93
+ const createReactPlugin = hasPluginNamed(vitePlugins, "vite:react") ? void 0 : viteReact?.default ?? (options.command === "serve" ? (await loadFarmReactPlugin()).default : void 0);
94
+ const tailwind = hasPluginNamed(vitePlugins, "@tailwindcss/vite") ? void 0 : await loadTailwindVitePlugin();
95
+ const farmConfig = pluginRsc.defineConfig({
96
+ ...rscConfig,
97
+ experimental: { ...userConfig.experimental, serverComponents: true },
98
+ port: options.port ?? userConfig.server?.port,
99
+ plugins: [
100
+ ...tailwind ? [tailwind] : [],
101
+ ...vitePlugins,
102
+ viteRsc.default({ serverHandler: false, entries: FARM_RSC_ENTRIES }),
103
+ ...typeof createReactPlugin === "function" ? [createReactPlugin()] : [],
104
+ pluginRsc.nitro({
105
+ server: { environmentName: "rsc" },
106
+ config: {
107
+ preset: options.preset,
108
+ outputDir: options.outputDir && resolveDeployOutputPath(root, options.outputDir)
109
+ }
110
+ })
111
+ ]
112
+ });
113
+ for (const key of FARM_RSC_PASSTHROUGH_KEYS) {
114
+ if (userConfig[key] !== void 0) farmConfig[key] = userConfig[key];
115
+ }
116
+ const { mergeConfig } = await import("vite");
117
+ return {
118
+ ...mergeConfig(farmConfig, viteOptions),
119
+ root,
120
+ // The Farm config is the app's config; a stray vite.config must not add a second pipeline.
121
+ configFile: false,
122
+ mode: options.command === "build" ? "production" : "development"
123
+ };
124
+ }
125
+ __name(createFarmRscViteConfig, "createFarmRscViteConfig");
126
+ async function createFarmRscDevServer(userConfig, options) {
127
+ const { createServer } = await import("vite");
128
+ return createServer(await createFarmRscViteConfig(userConfig, { ...options, command: "serve" }));
129
+ }
130
+ __name(createFarmRscDevServer, "createFarmRscDevServer");
131
+ async function buildFarmRsc(userConfig, options) {
132
+ const { createBuilder } = await import("vite");
133
+ const builder = await createBuilder(
134
+ await createFarmRscViteConfig(userConfig, { ...options, command: "build" })
135
+ );
136
+ await builder.buildApp();
137
+ }
138
+ __name(buildFarmRsc, "buildFarmRsc");
139
+
140
+ export {
141
+ createFarmRscViteConfig,
142
+ createFarmRscDevServer,
143
+ buildFarmRsc
144
+ };
@@ -20,6 +20,9 @@ var _chunkJ7FSKED3cjs = require('./chunk-J7FSKED3.cjs');
20
20
  var _chunkLZESP4IRcjs = require('./chunk-LZESP4IR.cjs');
21
21
 
22
22
 
23
+ var _chunkH7BLEEAEcjs = require('./chunk-H7BLEEAE.cjs');
24
+
25
+
23
26
 
24
27
 
25
28
  var _chunkC5GUTBZKcjs = require('./chunk-C5GUTBZK.cjs');
@@ -300,7 +303,8 @@ var _SPARouter = class _SPARouter {
300
303
  replace,
301
304
  scroll,
302
305
  state,
303
- url
306
+ url,
307
+ refresh
304
308
  }) : Promise.resolve()
305
309
  );
306
310
  if (!this.isCurrentNavigation(navigation, clientNavigation)) return;
@@ -527,7 +531,7 @@ var _SPARouter = class _SPARouter {
527
531
  this.updateDocumentMetadata(options.pageData.metadata);
528
532
  _chunkS6FJO323cjs._hydrateFarmI18n.call(void 0, options.pageData.i18n);
529
533
  if (this.onNavigate) {
530
- await this.onNavigate(options.pageData);
534
+ await this.onNavigate(options.pageData, { refresh: options.refresh === true });
531
535
  }
532
536
  if (options.scroll) {
533
537
  if (options.url.hash) {
@@ -629,7 +633,9 @@ var _SPARouter = class _SPARouter {
629
633
  Accept: "application/x-farm-deferred+json, application/json",
630
634
  "X-Farm-SPA": "1",
631
635
  ...activeLayoutChain ? { "X-Farm-Layout-Chain": activeLayoutChain } : {},
632
- ...interceptFrom ? { "X-Farm-Intercept-From": interceptFrom } : {}
636
+ ...interceptFrom ? { "X-Farm-Intercept-From": interceptFrom } : {},
637
+ // Islands mode: the server leaves out island values this browser holds.
638
+ ..._chunkH7BLEEAEcjs.getFarmIslandValueHeaders.call(void 0, )
633
639
  })
634
640
  });
635
641
  if (_chunkC5GUTBZKcjs.isFarmDeploymentMismatchResponse.call(void 0, response, this.options.deploymentId)) {
@@ -17,7 +17,7 @@ import {
17
17
  planSchemaMigration,
18
18
  readSchemaState,
19
19
  withoutRenameTargets
20
- } from "./chunk-BYR3RQPB.mjs";
20
+ } from "./chunk-T76H22WI.mjs";
21
21
  import {
22
22
  collectSchemaExtensions,
23
23
  describeSchemaExtensionApproval,
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-WDMIW6Q6.mjs";
30
30
  import {
31
31
  getIntegrationSchemas
32
- } from "./chunk-AX7S67YV.mjs";
32
+ } from "./chunk-37VKVISD.mjs";
33
33
  import {
34
34
  __name
35
35
  } from "./chunk-LPEX4YW6.mjs";
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkLYIZHJTKcjs = require('./chunk-LYIZHJTK.cjs');
3
+ var _chunk5LPHJZSIcjs = require('./chunk-5LPHJZSI.cjs');
4
4
 
5
5
 
6
- var _chunkBD3D7EZVcjs = require('./chunk-BD3D7EZV.cjs');
6
+ var _chunkIXFOBGLQcjs = require('./chunk-IXFOBGLQ.cjs');
7
7
 
8
8
 
9
9
  var _chunkI57LW5VZcjs = require('./chunk-I57LW5VZ.cjs');
@@ -13,7 +13,7 @@ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
13
13
 
14
14
  // src/navigation.ts
15
15
  function useRouter2() {
16
- const router = _chunkLYIZHJTKcjs.useRouter.call(void 0, );
16
+ const router = _chunk5LPHJZSIcjs.useRouter.call(void 0, );
17
17
  return {
18
18
  push: router.push,
19
19
  replace: router.replace,
@@ -21,21 +21,21 @@ function useRouter2() {
21
21
  forward: router.forward,
22
22
  refresh() {
23
23
  if (typeof window === "undefined") return Promise.resolve();
24
- return _chunkBD3D7EZVcjs.getRouter.call(void 0, ).refresh();
24
+ return _chunkIXFOBGLQcjs.getRouter.call(void 0, ).refresh();
25
25
  },
26
26
  prefetch(href) {
27
27
  if (typeof window === "undefined") return Promise.resolve();
28
- return _chunkBD3D7EZVcjs.getRouter.call(void 0, ).prefetch(_chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, href));
28
+ return _chunkIXFOBGLQcjs.getRouter.call(void 0, ).prefetch(_chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, href));
29
29
  }
30
30
  };
31
31
  }
32
32
  _chunkS3JO3N4Hcjs.__name.call(void 0, useRouter2, "useRouter");
33
33
  function usePathname() {
34
- return _chunkLYIZHJTKcjs.useRouter.call(void 0, ).pathname;
34
+ return _chunk5LPHJZSIcjs.useRouter.call(void 0, ).pathname;
35
35
  }
36
36
  _chunkS3JO3N4Hcjs.__name.call(void 0, usePathname, "usePathname");
37
37
  function useSearchParams() {
38
- return _chunkLYIZHJTKcjs.useRouter.call(void 0, ).searchParams;
38
+ return _chunk5LPHJZSIcjs.useRouter.call(void 0, ).searchParams;
39
39
  }
40
40
  _chunkS3JO3N4Hcjs.__name.call(void 0, useSearchParams, "useSearchParams");
41
41
 
@@ -3,18 +3,19 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkJR4QCLJYcjs = require('./chunk-JR4QCLJY.cjs');
7
6
 
7
+ var _chunkPDU4P2ICcjs = require('./chunk-PDU4P2IC.cjs');
8
8
 
9
9
 
10
+ var _chunkFVPXT2JRcjs = require('./chunk-FVPXT2JR.cjs');
10
11
 
11
- var _chunkQ5B3KJBPcjs = require('./chunk-Q5B3KJBP.cjs');
12
12
 
13
+ var _chunkYJRZR7VUcjs = require('./chunk-YJRZR7VU.cjs');
13
14
 
14
- var _chunkFVPXT2JRcjs = require('./chunk-FVPXT2JR.cjs');
15
15
 
16
16
 
17
- var _chunkYJRZR7VUcjs = require('./chunk-YJRZR7VU.cjs');
17
+
18
+ var _chunkQ5B3KJBPcjs = require('./chunk-Q5B3KJBP.cjs');
18
19
 
19
20
 
20
21
 
@@ -68,7 +69,7 @@ var _chunkJEIG3EWEcjs = require('./chunk-JEIG3EWE.cjs');
68
69
  var _chunkOI6CMLWXcjs = require('./chunk-OI6CMLWX.cjs');
69
70
 
70
71
 
71
- var _chunkRHGK2JENcjs = require('./chunk-RHGK2JEN.cjs');
72
+ var _chunkB6XAA7V6cjs = require('./chunk-B6XAA7V6.cjs');
72
73
 
73
74
 
74
75
  var _chunkALPWLT27cjs = require('./chunk-ALPWLT27.cjs');
@@ -680,6 +681,7 @@ function validateConfigRouteSources(routes, field) {
680
681
  }
681
682
  _chunkS3JO3N4Hcjs.__name.call(void 0, validateConfigRouteSources, "validateConfigRouteSources");
682
683
  async function resolveConfig(userConfig, mode) {
684
+ _chunkPDU4P2ICcjs.resolveFarmServerComponentsMode.call(void 0, _optionalChain([userConfig, 'access', _27 => _27.experimental, 'optionalAccess', _28 => _28.serverComponents]));
683
685
  const projectRoot = userConfig.root || process.cwd();
684
686
  const layerResolution = await _chunkWBKEZXWEcjs.resolveFarmLayers.call(void 0, userConfig, {
685
687
  root: projectRoot,
@@ -722,26 +724,26 @@ async function resolveConfig(userConfig, mode) {
722
724
  const deploy = resolveDeployConfig(userConfig);
723
725
  const root = userConfig.root || process.cwd();
724
726
  const srcDir = userConfig.srcDir || "src";
725
- _chunkJR4QCLJYcjs.setFarmProjectSourceDir.call(void 0, root, srcDir);
727
+ _chunkPDU4P2ICcjs.setFarmProjectSourceDir.call(void 0, root, srcDir);
726
728
  const docs = await resolveDocsConfig(userConfig.docs, { root, srcDir });
727
729
  const md = _chunkD4ROBNTKcjs.resolveMarkdownConfig.call(void 0, userConfig.md);
728
730
  const mdx = _chunkOHY2ZWUGcjs.resolveMdxConfig.call(void 0, userConfig.mdx);
729
731
  const env = _chunkVEKFLAQMcjs.resolveEnv.call(void 0, userConfig.env, process.env);
730
732
  _chunkVEKFLAQMcjs.setEnv.call(void 0, env);
731
733
  const api = await _chunkS3A45T7Fcjs.resolveFarmAPIConfig.call(void 0, userConfig.api, { root, mode, env });
732
- const auth = _chunkJR4QCLJYcjs.resolveFarmAuthConfig.call(void 0, userConfig.auth);
734
+ const auth = _chunkPDU4P2ICcjs.resolveFarmAuthConfig.call(void 0, userConfig.auth);
733
735
  const mcp = resolveFarmMCPConfig(userConfig.mcp);
734
- if (auth.enabled && _optionalChain([userConfig, 'access', _27 => _27.integrations, 'optionalAccess', _28 => _28.auth])) {
736
+ if (auth.enabled && _optionalChain([userConfig, 'access', _29 => _29.integrations, 'optionalAccess', _30 => _30.auth])) {
735
737
  throw new Error(
736
738
  "Choose either the top-level `auth` config or `integrations.auth`; they cannot both own the auth route."
737
739
  );
738
740
  }
739
- const nativeAuthIntegration = await _chunkJR4QCLJYcjs.resolveFarmAuthIntegration.call(void 0, auth, {
741
+ const nativeAuthIntegration = await _chunkPDU4P2ICcjs.resolveFarmAuthIntegration.call(void 0, auth, {
740
742
  root,
741
743
  mode
742
744
  });
743
745
  const nativeMCPPlugin = await resolveFarmMCPPlugin(mcp, { root });
744
- if (nativeMCPPlugin && _optionalChain([userConfig, 'access', _29 => _29.plugins, 'optionalAccess', _30 => _30.some, 'call', _31 => _31((plugin) => _optionalChain([plugin, 'optionalAccess', _32 => _32.name]) === "farm:api-mcp")])) {
746
+ if (nativeMCPPlugin && _optionalChain([userConfig, 'access', _31 => _31.plugins, 'optionalAccess', _32 => _32.some, 'call', _33 => _33((plugin) => _optionalChain([plugin, 'optionalAccess', _34 => _34.name]) === "farm:api-mcp")])) {
745
747
  throw new Error(
746
748
  "Choose either the top-level `mcp` config or `apiMcp()` in `plugins`; they configure the same MCP transport."
747
749
  );
@@ -794,13 +796,15 @@ async function resolveConfig(userConfig, mode) {
794
796
  experimental: {
795
797
  serverComponents: false,
796
798
  serverActions: false,
797
- isolatedClientHydration: "off",
799
+ // Islands mode hydrates client components as islands (RFC 0003); an app can still pick
800
+ // isolatedClientHydration itself.
801
+ isolatedClientHydration: _chunkPDU4P2ICcjs.resolveFarmServerComponentsMode.call(void 0, _optionalChain([userConfig, 'access', _35 => _35.experimental, 'optionalAccess', _36 => _36.serverComponents])) === "islands" ? "enabled" : "off",
798
802
  ppr: false,
799
803
  ...userConfig.experimental
800
804
  },
801
805
  agent: resolveFarmAgentConfig(userConfig.agent, { docs: docs.enabled }),
802
806
  plugins: [
803
- ..._chunkRHGK2JENcjs.resolveIntegrationPlugins.call(void 0, integrations),
807
+ ..._chunkB6XAA7V6cjs.resolveIntegrationPlugins.call(void 0, integrations),
804
808
  ...nativeMCPPlugin ? [nativeMCPPlugin] : [],
805
809
  ...userConfig.plugins || []
806
810
  ],
@@ -830,7 +834,7 @@ async function resolveConfig(userConfig, mode) {
830
834
  distDir: userConfig.distDir || ".farm",
831
835
  generateBuildId,
832
836
  compress: _nullishCoalesce(userConfig.compress, () => ( true)),
833
- devIndicators: _chunkJR4QCLJYcjs.resolveFarmDevIndicatorsConfig.call(void 0, userConfig.devIndicators, mode),
837
+ devIndicators: _chunkPDU4P2ICcjs.resolveFarmDevIndicatorsConfig.call(void 0, userConfig.devIndicators, mode),
834
838
  serverRuntimeConfig: userConfig.serverRuntimeConfig || {},
835
839
  publicRuntimeConfig: userConfig.publicRuntimeConfig || {},
836
840
  env,