@farm.js/core 0.1.15 → 0.1.17

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 (180) hide show
  1. package/dist/agent-runtime.d.mts +5 -2
  2. package/dist/agent-runtime.d.ts +5 -2
  3. package/dist/api/client.cjs +62 -28
  4. package/dist/api/client.d.mts +3 -2
  5. package/dist/api/client.d.ts +3 -2
  6. package/dist/api/client.mjs +3 -3
  7. package/dist/api/route-manager.cjs +69 -32
  8. package/dist/api/route-manager.d.mts +5 -2
  9. package/dist/api/route-manager.d.ts +5 -2
  10. package/dist/api/route-manager.mjs +5 -5
  11. package/dist/api/runtime.cjs +65 -29
  12. package/dist/api/runtime.d.mts +3 -2
  13. package/dist/api/runtime.d.ts +3 -2
  14. package/dist/api/runtime.mjs +6 -3
  15. package/dist/{api-client-C8d7BZNp.d.mts → api-client-Cx54IR5g.d.mts} +2 -1
  16. package/dist/{api-client-BWrEbxfO.d.ts → api-client-DykpaKcY.d.ts} +2 -1
  17. package/dist/api.cjs +106 -33
  18. package/dist/api.d.mts +7 -4
  19. package/dist/api.d.ts +7 -4
  20. package/dist/api.mjs +8 -8
  21. package/dist/{app-wIYse61b.d.ts → app-BHY_10Lm.d.ts} +3 -3
  22. package/dist/{app-B3nVSjen.d.mts → app-BMk0do23.d.mts} +3 -3
  23. package/dist/app-markdown.d.mts +6 -3
  24. package/dist/app-markdown.d.ts +6 -3
  25. package/dist/app-markdown.mjs +3 -3
  26. package/dist/cache.cjs +62 -28
  27. package/dist/cache.d.mts +11 -1
  28. package/dist/cache.d.ts +11 -1
  29. package/dist/cache.mjs +1 -1
  30. package/dist/{chunk-FOGLGRDS.mjs → chunk-4OOBRCJX.mjs} +122 -8
  31. package/dist/{chunk-JRF3C33L.mjs → chunk-56DAX2BE.mjs} +172 -53
  32. package/dist/{chunk-B76DT5Y6.mjs → chunk-57J3Y7Y3.mjs} +1 -1
  33. package/dist/{chunk-MOQNHLTS.mjs → chunk-5QOEPUYE.mjs} +5 -2
  34. package/dist/{chunk-HKLRP3BN.mjs → chunk-5SPPCN5J.mjs} +1 -1
  35. package/dist/{chunk-LUC2FAGW.mjs → chunk-6VQIKZZO.mjs} +1 -1
  36. package/dist/{chunk-7ZWL7XOU.mjs → chunk-76DG3LF3.mjs} +1 -1
  37. package/dist/{chunk-EWDK36MM.mjs → chunk-A72YEUZ3.mjs} +1 -1
  38. package/dist/{chunk-ZHOIQC6U.mjs → chunk-ATERBVHQ.mjs} +2 -2
  39. package/dist/{chunk-27JNCYEK.mjs → chunk-EN7WTEAY.mjs} +2 -2
  40. package/dist/{chunk-IGO2HEV7.mjs → chunk-F6SJAKFJ.mjs} +62 -28
  41. package/dist/{chunk-GSDIZACQ.mjs → chunk-FG5H2VCJ.mjs} +2 -2
  42. package/dist/{chunk-LZK5CXDW.mjs → chunk-KLSSO6YD.mjs} +2 -2
  43. package/dist/{chunk-KUO3GBPK.mjs → chunk-L6V3P73N.mjs} +1 -1
  44. package/dist/{chunk-FBHGHMOA.mjs → chunk-MVIWBEJF.mjs} +37 -27
  45. package/dist/{chunk-KTGFMHET.mjs → chunk-N6UROPT7.mjs} +1 -1
  46. package/dist/{chunk-NDD2YVGU.mjs → chunk-NRVGEI5I.mjs} +10 -3
  47. package/dist/{chunk-GNTPTTLA.mjs → chunk-QGVJVSNX.mjs} +5 -5
  48. package/dist/{chunk-6SCB2MXB.mjs → chunk-SXHV42UQ.mjs} +16 -1
  49. package/dist/{chunk-OWTIOHON.mjs → chunk-SYGGPS4A.mjs} +2 -2
  50. package/dist/{chunk-NC333MFA.mjs → chunk-TSWW5BVH.mjs} +7 -4
  51. package/dist/{chunk-LK6FGAQR.mjs → chunk-UDBJCUPA.mjs} +7 -4
  52. package/dist/{chunk-NJ47VORC.mjs → chunk-UTBVHYS3.mjs} +2 -2
  53. package/dist/{chunk-76MNRHTS.mjs → chunk-UUYF3CHN.mjs} +2 -2
  54. package/dist/{chunk-S3QW3BIS.mjs → chunk-WD4YXVLV.mjs} +99 -6
  55. package/dist/{chunk-W7IVHTOP.mjs → chunk-WD5PNSOB.mjs} +16 -3
  56. package/dist/{chunk-DPZUDPVJ.mjs → chunk-XP777LRD.mjs} +1 -1
  57. package/dist/{chunk-KATQ6I56.mjs → chunk-XWAYMDLB.mjs} +1 -1
  58. package/dist/{chunk-UE75PB52.mjs → chunk-YD4J4XCI.mjs} +1 -1
  59. package/dist/{chunk-Q3MDL7TM.mjs → chunk-ZCNJKLA2.mjs} +30 -11
  60. package/dist/{client-plugins-CslwYp3E.d.ts → client-plugins-C089bQhN.d.ts} +16 -4
  61. package/dist/{client-plugins-C1EgdoJM.d.mts → client-plugins-JXXmZliS.d.mts} +16 -4
  62. package/dist/client-plugins.d.mts +5 -2
  63. package/dist/client-plugins.d.ts +5 -2
  64. package/dist/client.cjs +62 -28
  65. package/dist/client.d.mts +8 -7
  66. package/dist/client.d.ts +8 -7
  67. package/dist/client.mjs +6 -6
  68. package/dist/config.d.mts +5 -2
  69. package/dist/config.d.ts +5 -2
  70. package/dist/cron.mjs +2 -2
  71. package/dist/{devtools-PCGEBRSC.mjs → devtools-UFVTMQX5.mjs} +7 -7
  72. package/dist/docs.cjs +83 -4
  73. package/dist/docs.mjs +9 -9
  74. package/dist/{route-CHBaW55F.d.ts → endpoint-1zA994xL.d.ts} +3 -128
  75. package/dist/{route-C6UClI1z.d.mts → endpoint-DAc96i93.d.mts} +3 -128
  76. package/dist/env.cjs +135 -8
  77. package/dist/env.d.mts +22 -2
  78. package/dist/env.d.ts +22 -2
  79. package/dist/env.mjs +4 -1
  80. package/dist/index.cjs +516 -105
  81. package/dist/index.d.mts +16 -15
  82. package/dist/index.d.ts +16 -15
  83. package/dist/index.mjs +46 -34
  84. package/dist/integrations.d.mts +5 -2
  85. package/dist/integrations.d.ts +5 -2
  86. package/dist/internal/app-markdown-runtime.d.mts +5 -2
  87. package/dist/internal/app-markdown-runtime.d.ts +5 -2
  88. package/dist/internal/app-markdown-runtime.mjs +2 -2
  89. package/dist/internal/build-runtime.cjs +600 -284
  90. package/dist/internal/build-runtime.d.mts +7 -4
  91. package/dist/internal/build-runtime.d.ts +7 -4
  92. package/dist/internal/build-runtime.mjs +23 -23
  93. package/dist/internal/cli-runtime.cjs +143 -33
  94. package/dist/internal/cli-runtime.mjs +13 -13
  95. package/dist/internal/client-error-overlay.cjs +1 -1
  96. package/dist/internal/client-error-overlay.mjs +1 -1
  97. package/dist/internal/compression-runtime.d.mts +5 -2
  98. package/dist/internal/compression-runtime.d.ts +5 -2
  99. package/dist/internal/config-runtime.cjs +80 -4
  100. package/dist/internal/config-runtime.d.mts +6 -3
  101. package/dist/internal/config-runtime.d.ts +6 -3
  102. package/dist/internal/config-runtime.mjs +7 -7
  103. package/dist/internal/product-telemetry-runtime.cjs +1 -1
  104. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  105. package/dist/internal/production-runtime.cjs +101 -41
  106. package/dist/internal/production-runtime.d.mts +11 -8
  107. package/dist/internal/production-runtime.d.ts +11 -8
  108. package/dist/internal/production-runtime.mjs +6 -6
  109. package/dist/markdown.cjs +16 -1
  110. package/dist/markdown.mjs +1 -1
  111. package/dist/{metadata-BsUcOEXg.d.ts → metadata-BcNJP4fq.d.ts} +1 -1
  112. package/dist/{metadata-B1bxCPUY.d.mts → metadata-C1Z9vLbb.d.mts} +1 -1
  113. package/dist/middleware.cjs +10 -3
  114. package/dist/middleware.d.mts +7 -4
  115. package/dist/middleware.d.ts +7 -4
  116. package/dist/middleware.mjs +4 -4
  117. package/dist/{nitro-ICBP5APY.mjs → nitro-CVZ36JM5.mjs} +8 -5
  118. package/dist/plugin.cjs +358 -106
  119. package/dist/plugin.d.mts +5 -2
  120. package/dist/plugin.d.ts +5 -2
  121. package/dist/plugin.mjs +19 -19
  122. package/dist/{production-runtime-BDllolVh.d.mts → production-runtime-jcrTlRTb.d.mts} +1 -1
  123. package/dist/{production-runtime-CsNn2-zx.d.ts → production-runtime-oKmC0WU-.d.ts} +1 -1
  124. package/dist/{render-plan-CNUlzylR.d.mts → render-plan-BLIfc4jt.d.mts} +1 -1
  125. package/dist/{render-plan-EG4hNFjy.d.ts → render-plan-DOB9cV-h.d.ts} +1 -1
  126. package/dist/renderer-client.cjs +62 -28
  127. package/dist/renderer-client.d.mts +5 -4
  128. package/dist/renderer-client.d.ts +5 -4
  129. package/dist/renderer-client.mjs +3 -3
  130. package/dist/{request-Blh_f7Z3.d.mts → request-Cr53NRHr.d.mts} +1 -1
  131. package/dist/{request-DsVSQVfD.d.ts → request-Dt2gNuQD.d.ts} +1 -1
  132. package/dist/request.d.mts +6 -3
  133. package/dist/request.d.ts +6 -3
  134. package/dist/route-B0XrsrFk.d.mts +128 -0
  135. package/dist/route-DOEpbyWZ.d.ts +128 -0
  136. package/dist/{route-rendering-hUETRCbM.d.ts → route-rendering-CWYd8Mv1.d.ts} +1 -1
  137. package/dist/{route-rendering-LT4XSoQK.d.mts → route-rendering-CeFBEAoZ.d.mts} +1 -1
  138. package/dist/routes.cjs +68 -31
  139. package/dist/routes.d.mts +5 -3
  140. package/dist/routes.d.ts +5 -3
  141. package/dist/routes.mjs +2 -2
  142. package/dist/server-fn-client.d.mts +3 -2
  143. package/dist/server-fn-client.d.ts +3 -2
  144. package/dist/server-fn.cjs +212 -32
  145. package/dist/server-fn.d.mts +72 -1
  146. package/dist/server-fn.d.ts +72 -1
  147. package/dist/server-fn.mjs +13 -2
  148. package/dist/server-plugins.d.mts +6 -3
  149. package/dist/server-plugins.d.ts +6 -3
  150. package/dist/server-query-client.cjs +62 -28
  151. package/dist/server-query-client.d.mts +1 -0
  152. package/dist/server-query-client.d.ts +1 -0
  153. package/dist/server-query-client.mjs +4 -4
  154. package/dist/server-query.cjs +131 -32
  155. package/dist/server-query.d.mts +6 -1
  156. package/dist/server-query.d.ts +6 -1
  157. package/dist/server-query.mjs +4 -3
  158. package/dist/server.cjs +393 -84
  159. package/dist/server.d.mts +9 -8
  160. package/dist/server.d.ts +9 -8
  161. package/dist/server.mjs +22 -22
  162. package/dist/{spa-router-csKR9Ebj.d.mts → spa-router-CQWiYGxS.d.mts} +2 -2
  163. package/dist/{spa-router-Y_2FSJQK.d.ts → spa-router-Wjiw-8hB.d.ts} +2 -2
  164. package/dist/testing.cjs +73 -32
  165. package/dist/testing.d.mts +5 -3
  166. package/dist/testing.d.ts +5 -3
  167. package/dist/testing.mjs +11 -7
  168. package/dist/{utils-jISOE9SD.d.ts → utils-B0XJmG_b.d.ts} +1 -1
  169. package/dist/{utils-DR2wfZAn.d.mts → utils-uUxF0K0P.d.mts} +1 -1
  170. package/dist/version.cjs +1 -1
  171. package/dist/version.mjs +1 -1
  172. package/dist/vite.cjs +500 -252
  173. package/dist/vite.d.mts +5 -2
  174. package/dist/vite.d.ts +5 -2
  175. package/dist/vite.mjs +19 -19
  176. package/dist/workflows.mjs +2 -2
  177. package/package.json +2 -2
  178. package/dist/{chunk-VO5SCWF5.mjs → chunk-BNGS6KJ6.mjs} +0 -0
  179. package/dist/{chunk-MUUZJLCI.mjs → chunk-EGJDUF4Q.mjs} +3 -3
  180. package/dist/{chunk-4L7SZOHZ.mjs → chunk-YHOCRI4H.mjs} +3 -3
@@ -6,7 +6,7 @@ import {
6
6
  parseRouteSlotFile,
7
7
  resolveRouteRenderingConfig,
8
8
  resolveRouteRenderingConfigFromFile
9
- } from "./chunk-27JNCYEK.mjs";
9
+ } from "./chunk-EN7WTEAY.mjs";
10
10
  import {
11
11
  collectSchemaExtensions,
12
12
  declareSchemaTables,
@@ -24,7 +24,7 @@ import {
24
24
  getDefaultErrorStatusText,
25
25
  renderFarmLocaleAlternateLinks,
26
26
  resolveDefaultErrorStatus
27
- } from "./chunk-7ZWL7XOU.mjs";
27
+ } from "./chunk-76DG3LF3.mjs";
28
28
  import {
29
29
  isFarmPreviewDeploymentEnvironment
30
30
  } from "./chunk-BOYNDCZL.mjs";
@@ -99,29 +99,30 @@ import {
99
99
  resolveFarmLlmsTxtConfig,
100
100
  resolveFarmPerformanceConfig,
101
101
  resolveFarmSecurityConfig
102
- } from "./chunk-Q3MDL7TM.mjs";
102
+ } from "./chunk-ZCNJKLA2.mjs";
103
103
  import {
104
104
  getPublicFarmImageConfig,
105
105
  resolveFarmImageConfig
106
106
  } from "./chunk-G2KY33I6.mjs";
107
107
  import {
108
108
  resolveCronConfig
109
- } from "./chunk-4L7SZOHZ.mjs";
109
+ } from "./chunk-YHOCRI4H.mjs";
110
110
  import {
111
111
  resolveServerActionsConfig
112
112
  } from "./chunk-QCFFHV5H.mjs";
113
113
  import {
114
+ createBundledEnv,
114
115
  getResolvedEnv
115
- } from "./chunk-FOGLGRDS.mjs";
116
+ } from "./chunk-4OOBRCJX.mjs";
116
117
  import {
117
118
  createFarmMarkdownRouteModuleFromFile,
118
119
  loadFarmMdxComponents
119
- } from "./chunk-KATQ6I56.mjs";
120
+ } from "./chunk-XWAYMDLB.mjs";
120
121
  import {
121
122
  createFarmMarkdownSourceResponse,
122
123
  isFarmMarkdownPageFile,
123
124
  normalizeFarmMarkdownRoutePath
124
- } from "./chunk-LUC2FAGW.mjs";
125
+ } from "./chunk-6VQIKZZO.mjs";
125
126
  import {
126
127
  resolveFarmMdxComponentsModulePath,
127
128
  resolveMdxConfig
@@ -135,10 +136,10 @@ import {
135
136
  getFarmMarkdownMirrorPath,
136
137
  resolveMarkdownConfig,
137
138
  resolveMarkdownMirrorTarget
138
- } from "./chunk-6SCB2MXB.mjs";
139
+ } from "./chunk-SXHV42UQ.mjs";
139
140
  import {
140
141
  resolveWorkflowsConfig
141
- } from "./chunk-MUUZJLCI.mjs";
142
+ } from "./chunk-EGJDUF4Q.mjs";
142
143
  import {
143
144
  initStorage
144
145
  } from "./chunk-UWPLULNK.mjs";
@@ -161,13 +162,13 @@ import {
161
162
  } from "./chunk-JLCQGPXE.mjs";
162
163
  import {
163
164
  MiddlewareManager
164
- } from "./chunk-B76DT5Y6.mjs";
165
+ } from "./chunk-57J3Y7Y3.mjs";
165
166
  import {
166
167
  _clearCurrentMiddlewareContext,
167
168
  _clearCurrentMiddlewareData,
168
169
  _runWithMiddlewareContext,
169
170
  _runWithMiddlewareData
170
- } from "./chunk-NDD2YVGU.mjs";
171
+ } from "./chunk-NRVGEI5I.mjs";
171
172
  import {
172
173
  _runWithAPIRequestRuntime
173
174
  } from "./chunk-R3DS7A2T.mjs";
@@ -176,11 +177,11 @@ import {
176
177
  } from "./chunk-IOEH4VWN.mjs";
177
178
  import {
178
179
  APIRouteManager
179
- } from "./chunk-ZHOIQC6U.mjs";
180
+ } from "./chunk-ATERBVHQ.mjs";
180
181
  import {
181
182
  findProgrammaticRouteFiles,
182
183
  loadProgrammaticRouteManifests
183
- } from "./chunk-VO5SCWF5.mjs";
184
+ } from "./chunk-BNGS6KJ6.mjs";
184
185
  import {
185
186
  _runWithFarmI18nRequest,
186
187
  _setDefaultFarmI18nRuntime,
@@ -189,7 +190,7 @@ import {
189
190
  } from "./chunk-JNGIWIY6.mjs";
190
191
  import {
191
192
  isFarmAPIPathname
192
- } from "./chunk-DPZUDPVJ.mjs";
193
+ } from "./chunk-XP777LRD.mjs";
193
194
  import {
194
195
  resolveFarmAPIServerBasePath
195
196
  } from "./chunk-I6XDAKWQ.mjs";
@@ -257,7 +258,7 @@ import {
257
258
  } from "./chunk-Z2RZJZIZ.mjs";
258
259
  import {
259
260
  FARM_VERSION
260
- } from "./chunk-UE75PB52.mjs";
261
+ } from "./chunk-YD4J4XCI.mjs";
261
262
  import {
262
263
  resolveFarmTrailingSlashRedirect,
263
264
  setFarmTrailingSlashPreference
@@ -293,7 +294,7 @@ import {
293
294
  createFarmCacheKey,
294
295
  getFarmDataCache,
295
296
  normalizeRevalidatePath
296
- } from "./chunk-IGO2HEV7.mjs";
297
+ } from "./chunk-F6SJAKFJ.mjs";
297
298
  import {
298
299
  configureFarmObservability,
299
300
  emitFarmEvent,
@@ -1431,7 +1432,7 @@ function resolveImportedModule(importerPath, specifier, root) {
1431
1432
  return { path: resolveImportedModuleSourcePath(importerPath, specifier, root), local: true };
1432
1433
  }
1433
1434
  const aliased = resolveProjectAliasSourcePath(specifier, root);
1434
- if (aliased !== void 0) return { path: aliased, local: true };
1435
+ if (aliased) return { path: aliased, local: true };
1435
1436
  return { path: resolvePackageModuleSourcePath(importerPath, specifier, root), local: false };
1436
1437
  }
1437
1438
  __name(resolveImportedModule, "resolveImportedModule");
@@ -1447,11 +1448,12 @@ function resolveProjectAliasSourcePath(specifier, root) {
1447
1448
  if (!match || alias.prefix.length > match.alias.prefix.length) match = { alias, captured };
1448
1449
  }
1449
1450
  if (!match) return void 0;
1450
- return resolveSourceCandidate(
1451
+ const resolved = resolveSourceCandidate(
1451
1452
  match.alias.targets.map(
1452
1453
  (target) => path.normalize(match.alias.wildcard ? target.replace("*", match.captured) : target)
1453
1454
  )
1454
1455
  );
1456
+ return resolved && /\.d\.[cm]?ts$/.test(resolved) ? null : resolved;
1455
1457
  }
1456
1458
  __name(resolveProjectAliasSourcePath, "resolveProjectAliasSourcePath");
1457
1459
  function matchProjectImportAlias(alias, specifier) {
@@ -2840,7 +2842,7 @@ var _RouteManager = class _RouteManager {
2840
2842
  }
2841
2843
  toRoutePathname(pathname) {
2842
2844
  const i18n = this.getI18nConfig();
2843
- return i18n ? stripFarmLocaleFromPathname(pathname, i18n) : pathname;
2845
+ return i18n ? stripFarmLocaleFromPathname(pathname, i18n) : stripFarmBasePath(pathname, this.config.basePath);
2844
2846
  }
2845
2847
  localizeRedirectDestination(destination, locale) {
2846
2848
  if (!locale || !destination.startsWith("/") || destination.startsWith("//")) {
@@ -4652,7 +4654,7 @@ function createPPRRefreshScript() {
4652
4654
  __name(createPPRRefreshScript, "createPPRRefreshScript");
4653
4655
  function createPreHydrationClickQueueScript() {
4654
4656
  const selector = JSON.stringify(FARM_ISLAND_REPLAYABLE_SELECTOR);
4655
- return `<script>(function(){if(window.__FARM_PREHYDRATION_CLICK_QUEUE__)return;var queue=[];window.__FARM_PREHYDRATION_CLICK_QUEUE__=queue;window.__FARM_HYDRATED__=false;document.documentElement.dataset.farmHydrated="false";function isModified(event){return !!(event.metaKey||event.altKey||event.ctrlKey||event.shiftKey)}function inHydrated(node){return !!(node&&node.closest&&node.closest('[data-farm-island-hydrated="true"]'))}function closestQueuedTarget(target){while(target&&target!==document.documentElement){if(target.matches&&target.matches(${selector}))return target;target=target.parentElement}return null}function announce(target,kind){document.dispatchEvent(new CustomEvent("farm:island-interaction",{detail:{target:target,kind:kind||null}}))}function hold(event,target,kind){if(queue.some(function(item){return item.target===target}))return;queue.push({target:target,kind:kind,createdAt:Date.now()});announce(target,kind);event.preventDefault();event.stopImmediatePropagation()}document.addEventListener("click",function(event){if(window.__FARM_HYDRATED__)return;if(event.defaultPrevented||event.button!==0||isModified(event))return;var target=closestQueuedTarget(event.target);if(!target||target.closest&&target.closest("a[href]")||inHydrated(target))return;hold(event,target,"click")},true);document.addEventListener("submit",function(event){if(window.__FARM_HYDRATED__)return;if(event.defaultPrevented)return;var form=event.target;if(!form||form.nodeName!=="FORM"||inHydrated(form))return;hold(event,form,"submit")},true);function observe(event){if(window.__FARM_HYDRATED__)return;var target=event.target;if(!(target&&target.closest)||inHydrated(target))return;announce(target,null)}document.addEventListener("pointerdown",observe,true);document.addEventListener("focusin",observe,true);})();</script>`;
4657
+ return `<script>(function(){if(window.__FARM_PREHYDRATION_CLICK_QUEUE__)return;var queue=[];window.__FARM_PREHYDRATION_CLICK_QUEUE__=queue;window.__FARM_HYDRATED__=false;document.documentElement.dataset.farmHydrated="false";function isModified(event){return !!(event.metaKey||event.altKey||event.ctrlKey||event.shiftKey)}function inHydrated(node){return !!(node&&node.closest&&node.closest('[data-farm-island-hydrated="true"]'))}function closestQueuedTarget(target){while(target&&target!==document.documentElement){if(target.matches&&target.matches(${selector}))return target;target=target.parentElement}return null}function announce(target,kind){document.dispatchEvent(new CustomEvent("farm:island-interaction",{detail:{target:target,kind:kind||null}}))}function hold(event,target,kind){if(!queue.some(function(item){return item.target===target})){queue.push({target:target,kind:kind,createdAt:Date.now()});announce(target,kind)}event.preventDefault();event.stopImmediatePropagation()}document.addEventListener("click",function(event){if(window.__FARM_HYDRATED__)return;if(event.defaultPrevented||event.button!==0||isModified(event))return;var target=closestQueuedTarget(event.target);if(!target||target.closest&&target.closest("a[href]")||inHydrated(target))return;hold(event,target,"click")},true);document.addEventListener("submit",function(event){if(window.__FARM_HYDRATED__)return;if(event.defaultPrevented)return;var form=event.target;if(!form||form.nodeName!=="FORM"||inHydrated(form))return;hold(event,form,"submit")},true);function observe(event){if(window.__FARM_HYDRATED__)return;var target=event.target;if(!(target&&target.closest)||inHydrated(target))return;announce(target,null)}document.addEventListener("pointerdown",observe,true);document.addEventListener("focusin",observe,true);})();</script>`;
4656
4658
  }
4657
4659
  __name(createPreHydrationClickQueueScript, "createPreHydrationClickQueueScript");
4658
4660
  function createDocumentFooter(options) {
@@ -9114,6 +9116,68 @@ function mergeFarmViteConfig(farmConfig, userConfig = {}) {
9114
9116
  };
9115
9117
  }
9116
9118
  __name(mergeFarmViteConfig, "mergeFarmViteConfig");
9119
+ function mergeExternal(farmValue, userValue) {
9120
+ if (farmValue === void 0) return userValue;
9121
+ if (userValue === void 0) return farmValue;
9122
+ if (farmValue === true || userValue === true) return true;
9123
+ return Array.from(/* @__PURE__ */ new Set([...farmValue, ...userValue]));
9124
+ }
9125
+ __name(mergeExternal, "mergeExternal");
9126
+ function mergeFarmProductionViteConfig(farmConfig, userConfig = {}) {
9127
+ const {
9128
+ plugins: _plugins,
9129
+ root: _root,
9130
+ base: _base,
9131
+ mode: _mode,
9132
+ appType: _appType,
9133
+ publicDir: _publicDir,
9134
+ build: userBuild = {},
9135
+ css: userCss,
9136
+ define: userDefine,
9137
+ esbuild: userEsbuild,
9138
+ ...shared
9139
+ } = userConfig;
9140
+ const {
9141
+ outDir: _outDir,
9142
+ emptyOutDir: _emptyOutDir,
9143
+ ssr: _ssr,
9144
+ ssrEmitAssets: _ssrEmitAssets,
9145
+ write: _write,
9146
+ lib: _lib,
9147
+ watch: _watch,
9148
+ rollupOptions: userRollupOptions,
9149
+ rolldownOptions: userRolldownOptions,
9150
+ ...userBuildOptions
9151
+ } = userBuild;
9152
+ const {
9153
+ input: _input,
9154
+ output: _output,
9155
+ ...userBundlerOptions
9156
+ } = {
9157
+ ...userRollupOptions,
9158
+ ...userRolldownOptions
9159
+ };
9160
+ const merged = mergeFarmViteConfig(farmConfig, shared);
9161
+ return {
9162
+ ...merged,
9163
+ build: {
9164
+ ...userBuildOptions,
9165
+ ...farmConfig.build,
9166
+ rollupOptions: {
9167
+ ...userBundlerOptions,
9168
+ ...farmConfig.build?.rollupOptions
9169
+ }
9170
+ },
9171
+ css: farmConfig.css || userCss ? { ...farmConfig.css, ...userCss } : void 0,
9172
+ define: farmConfig.define || userDefine ? { ...userDefine, ...farmConfig.define } : void 0,
9173
+ esbuild: typeof userEsbuild === "object" && farmConfig.esbuild !== false ? { ...userEsbuild, ...farmConfig.esbuild } : farmConfig.esbuild ?? userEsbuild,
9174
+ ssr: {
9175
+ ...merged.ssr,
9176
+ external: mergeExternal(farmConfig.ssr?.external, userConfig.ssr?.external)
9177
+ }
9178
+ };
9179
+ }
9180
+ __name(mergeFarmProductionViteConfig, "mergeFarmProductionViteConfig");
9117
9181
 
9118
9182
  // src/docs/adapter-client.ts
9119
9183
  function generateFarmDocsAdapterClientRuntime(reactModule) {
@@ -9260,7 +9324,7 @@ function loadFarmWorkflowsDevRuntime() {
9260
9324
  }
9261
9325
  __name(loadFarmWorkflowsDevRuntime, "loadFarmWorkflowsDevRuntime");
9262
9326
  function loadFarmDevtoolsSnapshotRuntime() {
9263
- return import("./devtools-PCGEBRSC.mjs");
9327
+ return import("./devtools-UFVTMQX5.mjs");
9264
9328
  }
9265
9329
  __name(loadFarmDevtoolsSnapshotRuntime, "loadFarmDevtoolsSnapshotRuntime");
9266
9330
  function loadFarmDevtoolsUIRuntime() {
@@ -9632,7 +9696,7 @@ function getEnvDefines(config, configEnv) {
9632
9696
  )
9633
9697
  };
9634
9698
  if (configEnv?.isSsrBuild) {
9635
- defines.__FARM_ENV__ = JSON.stringify(getFullEnvDefine(config));
9699
+ defines.__FARM_ENV__ = JSON.stringify(createBundledEnv(getFullEnvDefine(config)));
9636
9700
  }
9637
9701
  return defines;
9638
9702
  }
@@ -9909,8 +9973,8 @@ function farmPlugin(options = {}, initialPluginManager) {
9909
9973
  }, "emitPluginError");
9910
9974
  farmApp = new FarmApp(
9911
9975
  {
9912
- root: server.config.root,
9913
- ...options
9976
+ ...options,
9977
+ root: resolveDevelopmentRoot(options.root, server.config.root)
9914
9978
  },
9915
9979
  server
9916
9980
  );
@@ -10497,7 +10561,8 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10497
10561
  () => middlewareManager.execute(req, res)
10498
10562
  );
10499
10563
  }, "runAppMiddlewareForContentRoute");
10500
- if (openAPIManager && options.openapi?.specRoute && requestPathname === options.openapi.specRoute) {
10564
+ const openAPIRequestPathname = openAPIManager ? stripFarmBasePath(requestPathname, farmConfig.basePath) : requestPathname;
10565
+ if (openAPIManager && options.openapi?.specRoute && openAPIRequestPathname === options.openapi.specRoute) {
10501
10566
  if (await runAppMiddlewareForContentRoute()) return;
10502
10567
  if (requestMethod !== "GET" && requestMethod !== "HEAD") {
10503
10568
  res.statusCode = 405;
@@ -10514,7 +10579,7 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10514
10579
  res.end(requestMethod === "HEAD" ? void 0 : body);
10515
10580
  return;
10516
10581
  }
10517
- if (openAPIManager && requestPathname === options.openapi?.route) {
10582
+ if (openAPIManager && openAPIRequestPathname === options.openapi?.route) {
10518
10583
  if (await runAppMiddlewareForContentRoute()) return;
10519
10584
  const docsHandler = openAPIManager.getDocsRouteHandler(parsedRequestUrl.origin);
10520
10585
  return docsHandler(req, res);
@@ -10992,6 +11057,21 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10992
11057
  headers: request2.headers,
10993
11058
  signal: request2.signal
10994
11059
  });
11060
+ let middlewareMap = /* @__PURE__ */ new Map();
11061
+ let middlewareContext = /* @__PURE__ */ new Map();
11062
+ if (middlewareManager?.hasMiddleware()) {
11063
+ const targetNodeRequest = createPageDataMiddlewareRequest(req, targetRequestUrl);
11064
+ const handled = await runFarmMiddlewareWithNavigation(
11065
+ farmApp.getServerRenderer(),
11066
+ targetRequest,
11067
+ targetNodeRequest,
11068
+ res,
11069
+ () => middlewareManager.execute(targetNodeRequest, res)
11070
+ );
11071
+ if (handled) return;
11072
+ middlewareMap = targetNodeRequest.__FARM_MIDDLEWARE_DATA__ ?? middlewareMap;
11073
+ middlewareContext = targetNodeRequest.__FARM_MIDDLEWARE_CONTEXT__ ?? middlewareContext;
11074
+ }
10995
11075
  await farmApp.getServerRenderer().runWithRequestContext(targetRequest, async () => {
10996
11076
  const routeManager3 = farmApp.getRouteManager();
10997
11077
  if (pm) {
@@ -11065,7 +11145,8 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11065
11145
  {
11066
11146
  params,
11067
11147
  searchParams: Promise.resolve(searchParams),
11068
- path: targetUrl.pathname
11148
+ path: targetUrl.pathname,
11149
+ middleware: middlewareMap.size > 0 ? { data: middlewareMap } : void 0
11069
11150
  },
11070
11151
  routeContext
11071
11152
  ),
@@ -11153,27 +11234,34 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11153
11234
  parseFarmLayoutChainHeader(request2.headers.get("x-farm-layout-chain")),
11154
11235
  destinationLayoutPatterns
11155
11236
  );
11156
- const fragmentHtml = await farmApp.getServerRenderer().renderNavigationFragment({
11157
- PageComponent: routeModule.default,
11158
- LoadingComponent: loadingModule?.default,
11159
- pageProps: routeProps,
11160
- params,
11161
- layouts: layouts.map((layout, index) => ({
11162
- pattern: layout.pattern,
11163
- module: layoutModules[index]
11164
- })),
11165
- layoutStartIndex,
11166
- slots: routeSlots.map((slot) => ({
11167
- name: slot.name,
11168
- ownerPattern: slot.ownerPattern,
11169
- containerId: slot.containerId,
11170
- module: slot.renderModule,
11171
- props: slot.props
11172
- })),
11173
- pageShouldHydrate: shouldHydrate,
11174
- layoutShouldHydrate: shouldHydrateLayout,
11175
- islandStrategy: hydrationIslandStrategy
11176
- });
11237
+ const renderer = farmApp.getServerRenderer();
11238
+ const fragmentHtml = await _runWithMiddlewareData(
11239
+ middlewareMap,
11240
+ () => _runWithMiddlewareContext(
11241
+ middlewareContext,
11242
+ () => renderer.renderNavigationFragment({
11243
+ PageComponent: routeModule.default,
11244
+ LoadingComponent: loadingModule?.default,
11245
+ pageProps: routeProps,
11246
+ params,
11247
+ layouts: layouts.map((layout, index) => ({
11248
+ pattern: layout.pattern,
11249
+ module: layoutModules[index]
11250
+ })),
11251
+ layoutStartIndex,
11252
+ slots: routeSlots.map((slot) => ({
11253
+ name: slot.name,
11254
+ ownerPattern: slot.ownerPattern,
11255
+ containerId: slot.containerId,
11256
+ module: slot.renderModule,
11257
+ props: slot.props
11258
+ })),
11259
+ pageShouldHydrate: shouldHydrate,
11260
+ layoutShouldHydrate: shouldHydrateLayout,
11261
+ islandStrategy: hydrationIslandStrategy
11262
+ })
11263
+ )
11264
+ );
11177
11265
  const pageData = {
11178
11266
  props: {
11179
11267
  params: routeProps.params,
@@ -11183,7 +11271,9 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11183
11271
  ...routeProps.__farmCanonicalPath ? {
11184
11272
  __farmCanonicalPath: routeProps.__farmCanonicalPath
11185
11273
  } : {},
11186
- ...routeProps.__farmRoutePropsResolved ? { __farmRoutePropsResolved: true } : {}
11274
+ ...routeProps.__farmRoutePropsResolved ? { __farmRoutePropsResolved: true } : {},
11275
+ // The same serialized shape a full load embeds in __FARM_PROPS__.
11276
+ ...middlewareMap.size > 0 ? { middleware: { data: Object.fromEntries(middlewareMap) } } : {}
11187
11277
  },
11188
11278
  canonicalPath: routeProps.__farmCanonicalPath,
11189
11279
  modulePath: toUrlPath(route.modulePath),
@@ -11933,6 +12023,26 @@ function runFarmMiddlewareWithNavigation(renderer, middlewareRequest, req, res,
11933
12023
  });
11934
12024
  }
11935
12025
  __name(runFarmMiddlewareWithNavigation, "runFarmMiddlewareWithNavigation");
12026
+ function createPageDataMiddlewareRequest(req, target) {
12027
+ const targetNodeRequest = Object.create(req);
12028
+ targetNodeRequest.url = `${target.pathname}${target.search}`;
12029
+ targetNodeRequest.originalUrl = targetNodeRequest.url;
12030
+ targetNodeRequest.method = "GET";
12031
+ return targetNodeRequest;
12032
+ }
12033
+ __name(createPageDataMiddlewareRequest, "createPageDataMiddlewareRequest");
12034
+ function resolveDevelopmentRoot(farmRoot, viteRoot) {
12035
+ if (!farmRoot) return viteRoot;
12036
+ if (path16.resolve(farmRoot) === path16.resolve(viteRoot)) return farmRoot;
12037
+ try {
12038
+ if (fs9.realpathSync(farmRoot) === fs9.realpathSync(viteRoot)) {
12039
+ return path16.resolve(viteRoot);
12040
+ }
12041
+ } catch {
12042
+ }
12043
+ return farmRoot;
12044
+ }
12045
+ __name(resolveDevelopmentRoot, "resolveDevelopmentRoot");
11936
12046
  function isFarmClientVirtualId(id) {
11937
12047
  const pathname = id.split("?", 1)[0];
11938
12048
  return pathname === "/@farm/client" || pathname === "/@farm/client.js";
@@ -11948,16 +12058,18 @@ function generateProgrammaticRouteModule(moduleId, root, renderer = REACT_RENDER
11948
12058
  return generateProgrammaticApiRouteModule(parsed.routePath, routeFile);
11949
12059
  }
11950
12060
  return `
11951
- import {
11952
- createElement as __farmCreateElement,
11953
- Suspense as __farmSuspense,
11954
- } from ${JSON.stringify(renderer.server)};
12061
+ import * as __farmRendererRuntime from ${JSON.stringify(renderer.server)};
11955
12062
  import {
11956
12063
  createLayoutModuleFromProgrammaticLayout as __farmCreateLayoutRouteModule,
11957
12064
  createRouteModuleFromProgrammaticPage as __farmCreatePageRouteModule,
11958
12065
  } from "@farm.js/core/routes";
11959
12066
  import * as __farmRoutesModule from ${JSON.stringify(routeFile)};
11960
12067
 
12068
+ const __farmCreateElement = __farmRendererRuntime.createElement;
12069
+ const __farmSuspense = __farmRendererRuntime.Suspense;
12070
+ // Optional hook: only renderers that need it export markFunctionComponent.
12071
+ const __farmMarkFunctionComponent = Reflect.get(__farmRendererRuntime, "markFunctionComponent");
12072
+
11961
12073
  const __farmIsRouteDefinition = (value) => (
11962
12074
  value &&
11963
12075
  typeof value === "object" &&
@@ -12011,6 +12123,7 @@ const __farmRouteModule = __farmRoute.kind === "layout"
12011
12123
  : __farmCreatePageRouteModule(__farmRoute, {
12012
12124
  createElement: __farmCreateElement,
12013
12125
  Suspense: __farmSuspense,
12126
+ markFunctionComponent: __farmMarkFunctionComponent,
12014
12127
  });
12015
12128
 
12016
12129
  export const metadata = __farmRouteModule.metadata;
@@ -13620,6 +13733,11 @@ async function hydrate() {
13620
13733
  pendingPageHydrationController = hydrationController;
13621
13734
  await hydrateFarmIsolatedClientBoundaries(rootContainer, hydrationController.signal);
13622
13735
  if (hydrationController.signal.aborted) return;
13736
+ // The rest of the document is static server HTML with nothing to hydrate, so
13737
+ // stop holding its clicks and submits once the load-strategy islands are live.
13738
+ // Deferred islands capture their own interactions, and held targets outside an
13739
+ // island are not replayed into DOM no client code owns.
13740
+ markFarmHydrated();
13623
13741
  return;
13624
13742
  }` : ""}
13625
13743
  if (!shouldHydrate) {
@@ -14078,6 +14196,7 @@ export {
14078
14196
  createFarmClientOptimizeDepsConfig,
14079
14197
  createFarmSourceAlias,
14080
14198
  mergeFarmViteConfig,
14199
+ mergeFarmProductionViteConfig,
14081
14200
  generateFarmDocsAdapterClientRuntime,
14082
14201
  createFarmThemeCssPlugin,
14083
14202
  farmI18nClientBridgePlugin,
@@ -7,7 +7,7 @@ import {
7
7
  parseMiddlewareCookieHeader,
8
8
  serializeMiddlewareCookie,
9
9
  serializeMiddlewareCookieDeletion
10
- } from "./chunk-NDD2YVGU.mjs";
10
+ } from "./chunk-NRVGEI5I.mjs";
11
11
  import {
12
12
  createCliColors
13
13
  } from "./chunk-I2BHUNBU.mjs";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-TVGP4BBZ.mjs";
12
12
  import {
13
13
  farmAcceptQuality
14
- } from "./chunk-6SCB2MXB.mjs";
14
+ } from "./chunk-SXHV42UQ.mjs";
15
15
  import {
16
16
  matchesFarmIfNoneMatch
17
17
  } from "./chunk-XF7Q24PF.mjs";
@@ -1970,6 +1970,7 @@ function createFarmDocsHandler(docs, options) {
1970
1970
  if (!isFarmDocsRequest(docs, request)) return null;
1971
1971
  const page = loadPage(contentDir, docs, request);
1972
1972
  if (!page) return null;
1973
+ const negotiatesAccept = !requestUrl.pathname.endsWith(".md");
1973
1974
  if (shouldReturnMarkdown(request)) {
1974
1975
  const origin = new URL(request.url).origin;
1975
1976
  return omitFarmDocsHeadBody(
@@ -1984,7 +1985,8 @@ function createFarmDocsHandler(docs, options) {
1984
1985
  status: 200,
1985
1986
  headers: {
1986
1987
  "Content-Type": "text/markdown; charset=utf-8",
1987
- "Cache-Control": "public, max-age=60"
1988
+ "Cache-Control": "public, max-age=60",
1989
+ ...negotiatesAccept ? { Vary: "Accept" } : {}
1988
1990
  }
1989
1991
  }
1990
1992
  )
@@ -2014,6 +2016,7 @@ function createFarmDocsHandler(docs, options) {
2014
2016
  headers: {
2015
2017
  "Content-Type": "text/html; charset=utf-8",
2016
2018
  "Cache-Control": "public, s-maxage=60, stale-while-revalidate=300",
2019
+ Vary: "Accept",
2017
2020
  ...fontPreloadHeader ? { Link: fontPreloadHeader } : {}
2018
2021
  }
2019
2022
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createRouteDataCacheKey
3
- } from "./chunk-IGO2HEV7.mjs";
3
+ } from "./chunk-F6SJAKFJ.mjs";
4
4
  import {
5
5
  subscribeFarmCacheInvalidation
6
6
  } from "./chunk-4SIYUGRY.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requestAcceptsMarkdown
3
- } from "./chunk-6SCB2MXB.mjs";
3
+ } from "./chunk-SXHV42UQ.mjs";
4
4
  import {
5
5
  __name
6
6
  } from "./chunk-LPEX4YW6.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-XAXTTBUT.mjs";
4
4
  import {
5
5
  serializeFarmLlmsTxt
6
- } from "./chunk-Q3MDL7TM.mjs";
6
+ } from "./chunk-ZCNJKLA2.mjs";
7
7
  import {
8
8
  resolveFarmThemeConfig
9
9
  } from "./chunk-AELACLOB.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MiddlewareManager
3
- } from "./chunk-B76DT5Y6.mjs";
3
+ } from "./chunk-57J3Y7Y3.mjs";
4
4
  import {
5
5
  resolveFarmI18nConfig
6
6
  } from "./chunk-YMCXWPWK.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  findProgrammaticRouteFilesInDir
3
- } from "./chunk-VO5SCWF5.mjs";
3
+ } from "./chunk-BNGS6KJ6.mjs";
4
4
  import {
5
5
  isFarmAPIRouteFileName
6
6
  } from "./chunk-CU625VAY.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  matchAPIRouteAtBasePath,
15
15
  mergePluginAPIRoutes,
16
16
  resolveAPIRouteEndpoint
17
- } from "./chunk-DPZUDPVJ.mjs";
17
+ } from "./chunk-XP777LRD.mjs";
18
18
  import {
19
19
  registerAPIRouteShape
20
20
  } from "./chunk-W3B4PKAW.mjs";
@@ -26,13 +26,13 @@ import {
26
26
  } from "./chunk-OLYK7EAK.mjs";
27
27
  import {
28
28
  discoverProgrammaticRoutePaths
29
- } from "./chunk-VO5SCWF5.mjs";
29
+ } from "./chunk-BNGS6KJ6.mjs";
30
30
  import {
31
31
  readFarmI18nCatalogs
32
32
  } from "./chunk-FV45CKBC.mjs";
33
33
  import {
34
34
  resolvePluginRoutes
35
- } from "./chunk-OWTIOHON.mjs";
35
+ } from "./chunk-SYGGPS4A.mjs";
36
36
  import {
37
37
  parseRoutePath
38
38
  } from "./chunk-KI3MESHB.mjs";