@farm.js/core 0.1.16 → 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 +3 -3
  2. package/dist/agent-runtime.d.ts +3 -3
  3. package/dist/api/client.cjs +62 -28
  4. package/dist/api/client.d.mts +3 -3
  5. package/dist/api/client.d.ts +3 -3
  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 +3 -3
  9. package/dist/api/route-manager.d.ts +3 -3
  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 -3
  13. package/dist/api/runtime.d.ts +3 -3
  14. package/dist/api/runtime.mjs +6 -3
  15. package/dist/{api-client-B-n3pm_Q.d.mts → api-client-Cx54IR5g.d.mts} +2 -2
  16. package/dist/{api-client-C0_NZEBl.d.ts → api-client-DykpaKcY.d.ts} +2 -2
  17. package/dist/api.cjs +106 -33
  18. package/dist/api.d.mts +5 -5
  19. package/dist/api.d.ts +5 -5
  20. package/dist/api.mjs +8 -8
  21. package/dist/{app-AyjEsCBq.d.ts → app-BHY_10Lm.d.ts} +3 -3
  22. package/dist/{app-CYPHeOo_.d.mts → app-BMk0do23.d.mts} +3 -3
  23. package/dist/app-markdown.d.mts +4 -4
  24. package/dist/app-markdown.d.ts +4 -4
  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-7HDZYYS4.mjs → chunk-4OOBRCJX.mjs} +27 -5
  31. package/dist/{chunk-NHHKW2T6.mjs → chunk-56DAX2BE.mjs} +170 -52
  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-TYVVIQ5M.mjs → chunk-MVIWBEJF.mjs} +32 -25
  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-IXTEENRS.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-NUD6XBMO.mjs → chunk-UTBVHYS3.mjs} +2 -2
  53. package/dist/{chunk-76MNRHTS.mjs → chunk-UUYF3CHN.mjs} +2 -2
  54. package/dist/{chunk-VVTREAG5.mjs → chunk-WD4YXVLV.mjs} +11 -3
  55. package/dist/{chunk-UQZPTIML.mjs → chunk-WD5PNSOB.mjs} +2 -2
  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-IL5RWYK7.mjs → chunk-YD4J4XCI.mjs} +1 -1
  59. package/dist/{chunk-Q3MDL7TM.mjs → chunk-ZCNJKLA2.mjs} +30 -11
  60. package/dist/{client-plugins-CqVtZi5X.d.ts → client-plugins-C089bQhN.d.ts} +2 -2
  61. package/dist/{client-plugins-CIPRtSsW.d.mts → client-plugins-JXXmZliS.d.mts} +2 -2
  62. package/dist/client-plugins.d.mts +3 -3
  63. package/dist/client-plugins.d.ts +3 -3
  64. package/dist/client.cjs +62 -28
  65. package/dist/client.d.mts +8 -8
  66. package/dist/client.d.ts +8 -8
  67. package/dist/client.mjs +6 -6
  68. package/dist/config.d.mts +3 -3
  69. package/dist/config.d.ts +3 -3
  70. package/dist/cron.mjs +2 -2
  71. package/dist/{devtools-IU7LKZOH.mjs → devtools-UFVTMQX5.mjs} +7 -7
  72. package/dist/docs.cjs +18 -10
  73. package/dist/docs.mjs +9 -9
  74. package/dist/{endpoint-kSAxE52R.d.ts → endpoint-1zA994xL.d.ts} +1 -1
  75. package/dist/{endpoint-Bu3XgeMK.d.mts → endpoint-DAc96i93.d.mts} +1 -1
  76. package/dist/env.cjs +39 -5
  77. package/dist/env.d.mts +5 -3
  78. package/dist/env.d.ts +5 -3
  79. package/dist/env.mjs +2 -1
  80. package/dist/index.cjs +311 -93
  81. package/dist/index.d.mts +14 -14
  82. package/dist/index.d.ts +14 -14
  83. package/dist/index.mjs +34 -34
  84. package/dist/integrations.d.mts +3 -3
  85. package/dist/integrations.d.ts +3 -3
  86. package/dist/internal/app-markdown-runtime.d.mts +3 -3
  87. package/dist/internal/app-markdown-runtime.d.ts +3 -3
  88. package/dist/internal/app-markdown-runtime.mjs +2 -2
  89. package/dist/internal/build-runtime.cjs +342 -121
  90. package/dist/internal/build-runtime.d.mts +5 -5
  91. package/dist/internal/build-runtime.d.ts +5 -5
  92. package/dist/internal/build-runtime.mjs +23 -23
  93. package/dist/internal/cli-runtime.cjs +77 -31
  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 +3 -3
  98. package/dist/internal/compression-runtime.d.ts +3 -3
  99. package/dist/internal/config-runtime.cjs +14 -2
  100. package/dist/internal/config-runtime.d.mts +4 -4
  101. package/dist/internal/config-runtime.d.ts +4 -4
  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 +9 -9
  107. package/dist/internal/production-runtime.d.ts +9 -9
  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-8g__AMPM.d.ts → metadata-BcNJP4fq.d.ts} +1 -1
  112. package/dist/{metadata-OMX6wFNf.d.mts → metadata-C1Z9vLbb.d.mts} +1 -1
  113. package/dist/middleware.cjs +10 -3
  114. package/dist/middleware.d.mts +5 -5
  115. package/dist/middleware.d.ts +5 -5
  116. package/dist/middleware.mjs +4 -4
  117. package/dist/{nitro-3N4ZXRYM.mjs → nitro-CVZ36JM5.mjs} +4 -4
  118. package/dist/plugin.cjs +256 -105
  119. package/dist/plugin.d.mts +3 -3
  120. package/dist/plugin.d.ts +3 -3
  121. package/dist/plugin.mjs +19 -19
  122. package/dist/{production-runtime-W3M0eNDV.d.mts → production-runtime-jcrTlRTb.d.mts} +1 -1
  123. package/dist/{production-runtime-BJh7o6Cr.d.ts → production-runtime-oKmC0WU-.d.ts} +1 -1
  124. package/dist/{render-plan-io7pvDNc.d.mts → render-plan-BLIfc4jt.d.mts} +1 -1
  125. package/dist/{render-plan-Be4ZGTJP.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 -5
  128. package/dist/renderer-client.d.ts +5 -5
  129. package/dist/renderer-client.mjs +3 -3
  130. package/dist/{request-DZkHYQ89.d.mts → request-Cr53NRHr.d.mts} +1 -1
  131. package/dist/{request-G8JhKr4F.d.ts → request-Dt2gNuQD.d.ts} +1 -1
  132. package/dist/request.d.mts +4 -4
  133. package/dist/request.d.ts +4 -4
  134. package/dist/{route-C_eLaFTZ.d.mts → route-B0XrsrFk.d.mts} +1 -1
  135. package/dist/{route-BxNJT447.d.ts → route-DOEpbyWZ.d.ts} +1 -1
  136. package/dist/{route-rendering-BcLLPJgN.d.ts → route-rendering-CWYd8Mv1.d.ts} +1 -1
  137. package/dist/{route-rendering-CbAKr1TY.d.mts → route-rendering-CeFBEAoZ.d.mts} +1 -1
  138. package/dist/routes.cjs +68 -31
  139. package/dist/routes.d.mts +4 -4
  140. package/dist/routes.d.ts +4 -4
  141. package/dist/routes.mjs +2 -2
  142. package/dist/server-fn-client.d.mts +3 -3
  143. package/dist/server-fn-client.d.ts +3 -3
  144. package/dist/server-fn.cjs +72 -30
  145. package/dist/server-fn.d.mts +1 -1
  146. package/dist/server-fn.d.ts +1 -1
  147. package/dist/server-fn.mjs +2 -2
  148. package/dist/server-plugins.d.mts +4 -4
  149. package/dist/server-plugins.d.ts +4 -4
  150. package/dist/server-query-client.cjs +62 -28
  151. package/dist/server-query-client.d.mts +1 -1
  152. package/dist/server-query-client.d.ts +1 -1
  153. package/dist/server-query-client.mjs +4 -4
  154. package/dist/server-query.cjs +72 -30
  155. package/dist/server-query.d.mts +1 -1
  156. package/dist/server-query.d.ts +1 -1
  157. package/dist/server-query.mjs +3 -3
  158. package/dist/server.cjs +239 -80
  159. package/dist/server.d.mts +9 -9
  160. package/dist/server.d.ts +9 -9
  161. package/dist/server.mjs +22 -22
  162. package/dist/{spa-router-BcS_4nqm.d.mts → spa-router-CQWiYGxS.d.mts} +2 -2
  163. package/dist/{spa-router-BzFBUJkn.d.ts → spa-router-Wjiw-8hB.d.ts} +2 -2
  164. package/dist/testing.cjs +73 -32
  165. package/dist/testing.d.mts +3 -3
  166. package/dist/testing.d.ts +3 -3
  167. package/dist/testing.mjs +11 -7
  168. package/dist/{utils-C4yrAhNc.d.ts → utils-B0XJmG_b.d.ts} +1 -1
  169. package/dist/{utils-5kQP1mFR.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 +260 -109
  173. package/dist/vite.d.mts +3 -3
  174. package/dist/vite.d.ts +3 -3
  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,30 +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
114
  createBundledEnv,
115
115
  getResolvedEnv
116
- } from "./chunk-7HDZYYS4.mjs";
116
+ } from "./chunk-4OOBRCJX.mjs";
117
117
  import {
118
118
  createFarmMarkdownRouteModuleFromFile,
119
119
  loadFarmMdxComponents
120
- } from "./chunk-KATQ6I56.mjs";
120
+ } from "./chunk-XWAYMDLB.mjs";
121
121
  import {
122
122
  createFarmMarkdownSourceResponse,
123
123
  isFarmMarkdownPageFile,
124
124
  normalizeFarmMarkdownRoutePath
125
- } from "./chunk-LUC2FAGW.mjs";
125
+ } from "./chunk-6VQIKZZO.mjs";
126
126
  import {
127
127
  resolveFarmMdxComponentsModulePath,
128
128
  resolveMdxConfig
@@ -136,10 +136,10 @@ import {
136
136
  getFarmMarkdownMirrorPath,
137
137
  resolveMarkdownConfig,
138
138
  resolveMarkdownMirrorTarget
139
- } from "./chunk-6SCB2MXB.mjs";
139
+ } from "./chunk-SXHV42UQ.mjs";
140
140
  import {
141
141
  resolveWorkflowsConfig
142
- } from "./chunk-MUUZJLCI.mjs";
142
+ } from "./chunk-EGJDUF4Q.mjs";
143
143
  import {
144
144
  initStorage
145
145
  } from "./chunk-UWPLULNK.mjs";
@@ -162,13 +162,13 @@ import {
162
162
  } from "./chunk-JLCQGPXE.mjs";
163
163
  import {
164
164
  MiddlewareManager
165
- } from "./chunk-B76DT5Y6.mjs";
165
+ } from "./chunk-57J3Y7Y3.mjs";
166
166
  import {
167
167
  _clearCurrentMiddlewareContext,
168
168
  _clearCurrentMiddlewareData,
169
169
  _runWithMiddlewareContext,
170
170
  _runWithMiddlewareData
171
- } from "./chunk-NDD2YVGU.mjs";
171
+ } from "./chunk-NRVGEI5I.mjs";
172
172
  import {
173
173
  _runWithAPIRequestRuntime
174
174
  } from "./chunk-R3DS7A2T.mjs";
@@ -177,11 +177,11 @@ import {
177
177
  } from "./chunk-IOEH4VWN.mjs";
178
178
  import {
179
179
  APIRouteManager
180
- } from "./chunk-ZHOIQC6U.mjs";
180
+ } from "./chunk-ATERBVHQ.mjs";
181
181
  import {
182
182
  findProgrammaticRouteFiles,
183
183
  loadProgrammaticRouteManifests
184
- } from "./chunk-VO5SCWF5.mjs";
184
+ } from "./chunk-BNGS6KJ6.mjs";
185
185
  import {
186
186
  _runWithFarmI18nRequest,
187
187
  _setDefaultFarmI18nRuntime,
@@ -190,7 +190,7 @@ import {
190
190
  } from "./chunk-JNGIWIY6.mjs";
191
191
  import {
192
192
  isFarmAPIPathname
193
- } from "./chunk-DPZUDPVJ.mjs";
193
+ } from "./chunk-XP777LRD.mjs";
194
194
  import {
195
195
  resolveFarmAPIServerBasePath
196
196
  } from "./chunk-I6XDAKWQ.mjs";
@@ -258,7 +258,7 @@ import {
258
258
  } from "./chunk-Z2RZJZIZ.mjs";
259
259
  import {
260
260
  FARM_VERSION
261
- } from "./chunk-IL5RWYK7.mjs";
261
+ } from "./chunk-YD4J4XCI.mjs";
262
262
  import {
263
263
  resolveFarmTrailingSlashRedirect,
264
264
  setFarmTrailingSlashPreference
@@ -294,7 +294,7 @@ import {
294
294
  createFarmCacheKey,
295
295
  getFarmDataCache,
296
296
  normalizeRevalidatePath
297
- } from "./chunk-IGO2HEV7.mjs";
297
+ } from "./chunk-F6SJAKFJ.mjs";
298
298
  import {
299
299
  configureFarmObservability,
300
300
  emitFarmEvent,
@@ -1432,7 +1432,7 @@ function resolveImportedModule(importerPath, specifier, root) {
1432
1432
  return { path: resolveImportedModuleSourcePath(importerPath, specifier, root), local: true };
1433
1433
  }
1434
1434
  const aliased = resolveProjectAliasSourcePath(specifier, root);
1435
- if (aliased !== void 0) return { path: aliased, local: true };
1435
+ if (aliased) return { path: aliased, local: true };
1436
1436
  return { path: resolvePackageModuleSourcePath(importerPath, specifier, root), local: false };
1437
1437
  }
1438
1438
  __name(resolveImportedModule, "resolveImportedModule");
@@ -1448,11 +1448,12 @@ function resolveProjectAliasSourcePath(specifier, root) {
1448
1448
  if (!match || alias.prefix.length > match.alias.prefix.length) match = { alias, captured };
1449
1449
  }
1450
1450
  if (!match) return void 0;
1451
- return resolveSourceCandidate(
1451
+ const resolved = resolveSourceCandidate(
1452
1452
  match.alias.targets.map(
1453
1453
  (target) => path.normalize(match.alias.wildcard ? target.replace("*", match.captured) : target)
1454
1454
  )
1455
1455
  );
1456
+ return resolved && /\.d\.[cm]?ts$/.test(resolved) ? null : resolved;
1456
1457
  }
1457
1458
  __name(resolveProjectAliasSourcePath, "resolveProjectAliasSourcePath");
1458
1459
  function matchProjectImportAlias(alias, specifier) {
@@ -2841,7 +2842,7 @@ var _RouteManager = class _RouteManager {
2841
2842
  }
2842
2843
  toRoutePathname(pathname) {
2843
2844
  const i18n = this.getI18nConfig();
2844
- return i18n ? stripFarmLocaleFromPathname(pathname, i18n) : pathname;
2845
+ return i18n ? stripFarmLocaleFromPathname(pathname, i18n) : stripFarmBasePath(pathname, this.config.basePath);
2845
2846
  }
2846
2847
  localizeRedirectDestination(destination, locale) {
2847
2848
  if (!locale || !destination.startsWith("/") || destination.startsWith("//")) {
@@ -4653,7 +4654,7 @@ function createPPRRefreshScript() {
4653
4654
  __name(createPPRRefreshScript, "createPPRRefreshScript");
4654
4655
  function createPreHydrationClickQueueScript() {
4655
4656
  const selector = JSON.stringify(FARM_ISLAND_REPLAYABLE_SELECTOR);
4656
- 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>`;
4657
4658
  }
4658
4659
  __name(createPreHydrationClickQueueScript, "createPreHydrationClickQueueScript");
4659
4660
  function createDocumentFooter(options) {
@@ -9115,6 +9116,68 @@ function mergeFarmViteConfig(farmConfig, userConfig = {}) {
9115
9116
  };
9116
9117
  }
9117
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");
9118
9181
 
9119
9182
  // src/docs/adapter-client.ts
9120
9183
  function generateFarmDocsAdapterClientRuntime(reactModule) {
@@ -9261,7 +9324,7 @@ function loadFarmWorkflowsDevRuntime() {
9261
9324
  }
9262
9325
  __name(loadFarmWorkflowsDevRuntime, "loadFarmWorkflowsDevRuntime");
9263
9326
  function loadFarmDevtoolsSnapshotRuntime() {
9264
- return import("./devtools-IU7LKZOH.mjs");
9327
+ return import("./devtools-UFVTMQX5.mjs");
9265
9328
  }
9266
9329
  __name(loadFarmDevtoolsSnapshotRuntime, "loadFarmDevtoolsSnapshotRuntime");
9267
9330
  function loadFarmDevtoolsUIRuntime() {
@@ -9910,8 +9973,8 @@ function farmPlugin(options = {}, initialPluginManager) {
9910
9973
  }, "emitPluginError");
9911
9974
  farmApp = new FarmApp(
9912
9975
  {
9913
- root: server.config.root,
9914
- ...options
9976
+ ...options,
9977
+ root: resolveDevelopmentRoot(options.root, server.config.root)
9915
9978
  },
9916
9979
  server
9917
9980
  );
@@ -10498,7 +10561,8 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10498
10561
  () => middlewareManager.execute(req, res)
10499
10562
  );
10500
10563
  }, "runAppMiddlewareForContentRoute");
10501
- 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) {
10502
10566
  if (await runAppMiddlewareForContentRoute()) return;
10503
10567
  if (requestMethod !== "GET" && requestMethod !== "HEAD") {
10504
10568
  res.statusCode = 405;
@@ -10515,7 +10579,7 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10515
10579
  res.end(requestMethod === "HEAD" ? void 0 : body);
10516
10580
  return;
10517
10581
  }
10518
- if (openAPIManager && requestPathname === options.openapi?.route) {
10582
+ if (openAPIManager && openAPIRequestPathname === options.openapi?.route) {
10519
10583
  if (await runAppMiddlewareForContentRoute()) return;
10520
10584
  const docsHandler = openAPIManager.getDocsRouteHandler(parsedRequestUrl.origin);
10521
10585
  return docsHandler(req, res);
@@ -10993,6 +11057,21 @@ window.__FARM_MANIFEST__ = ${inlineValue({
10993
11057
  headers: request2.headers,
10994
11058
  signal: request2.signal
10995
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
+ }
10996
11075
  await farmApp.getServerRenderer().runWithRequestContext(targetRequest, async () => {
10997
11076
  const routeManager3 = farmApp.getRouteManager();
10998
11077
  if (pm) {
@@ -11066,7 +11145,8 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11066
11145
  {
11067
11146
  params,
11068
11147
  searchParams: Promise.resolve(searchParams),
11069
- path: targetUrl.pathname
11148
+ path: targetUrl.pathname,
11149
+ middleware: middlewareMap.size > 0 ? { data: middlewareMap } : void 0
11070
11150
  },
11071
11151
  routeContext
11072
11152
  ),
@@ -11154,27 +11234,34 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11154
11234
  parseFarmLayoutChainHeader(request2.headers.get("x-farm-layout-chain")),
11155
11235
  destinationLayoutPatterns
11156
11236
  );
11157
- const fragmentHtml = await farmApp.getServerRenderer().renderNavigationFragment({
11158
- PageComponent: routeModule.default,
11159
- LoadingComponent: loadingModule?.default,
11160
- pageProps: routeProps,
11161
- params,
11162
- layouts: layouts.map((layout, index) => ({
11163
- pattern: layout.pattern,
11164
- module: layoutModules[index]
11165
- })),
11166
- layoutStartIndex,
11167
- slots: routeSlots.map((slot) => ({
11168
- name: slot.name,
11169
- ownerPattern: slot.ownerPattern,
11170
- containerId: slot.containerId,
11171
- module: slot.renderModule,
11172
- props: slot.props
11173
- })),
11174
- pageShouldHydrate: shouldHydrate,
11175
- layoutShouldHydrate: shouldHydrateLayout,
11176
- islandStrategy: hydrationIslandStrategy
11177
- });
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
+ );
11178
11265
  const pageData = {
11179
11266
  props: {
11180
11267
  params: routeProps.params,
@@ -11184,7 +11271,9 @@ window.__FARM_MANIFEST__ = ${inlineValue({
11184
11271
  ...routeProps.__farmCanonicalPath ? {
11185
11272
  __farmCanonicalPath: routeProps.__farmCanonicalPath
11186
11273
  } : {},
11187
- ...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) } } : {}
11188
11277
  },
11189
11278
  canonicalPath: routeProps.__farmCanonicalPath,
11190
11279
  modulePath: toUrlPath(route.modulePath),
@@ -11934,6 +12023,26 @@ function runFarmMiddlewareWithNavigation(renderer, middlewareRequest, req, res,
11934
12023
  });
11935
12024
  }
11936
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");
11937
12046
  function isFarmClientVirtualId(id) {
11938
12047
  const pathname = id.split("?", 1)[0];
11939
12048
  return pathname === "/@farm/client" || pathname === "/@farm/client.js";
@@ -11949,16 +12058,18 @@ function generateProgrammaticRouteModule(moduleId, root, renderer = REACT_RENDER
11949
12058
  return generateProgrammaticApiRouteModule(parsed.routePath, routeFile);
11950
12059
  }
11951
12060
  return `
11952
- import {
11953
- createElement as __farmCreateElement,
11954
- Suspense as __farmSuspense,
11955
- } from ${JSON.stringify(renderer.server)};
12061
+ import * as __farmRendererRuntime from ${JSON.stringify(renderer.server)};
11956
12062
  import {
11957
12063
  createLayoutModuleFromProgrammaticLayout as __farmCreateLayoutRouteModule,
11958
12064
  createRouteModuleFromProgrammaticPage as __farmCreatePageRouteModule,
11959
12065
  } from "@farm.js/core/routes";
11960
12066
  import * as __farmRoutesModule from ${JSON.stringify(routeFile)};
11961
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
+
11962
12073
  const __farmIsRouteDefinition = (value) => (
11963
12074
  value &&
11964
12075
  typeof value === "object" &&
@@ -12012,6 +12123,7 @@ const __farmRouteModule = __farmRoute.kind === "layout"
12012
12123
  : __farmCreatePageRouteModule(__farmRoute, {
12013
12124
  createElement: __farmCreateElement,
12014
12125
  Suspense: __farmSuspense,
12126
+ markFunctionComponent: __farmMarkFunctionComponent,
12015
12127
  });
12016
12128
 
12017
12129
  export const metadata = __farmRouteModule.metadata;
@@ -13621,6 +13733,11 @@ async function hydrate() {
13621
13733
  pendingPageHydrationController = hydrationController;
13622
13734
  await hydrateFarmIsolatedClientBoundaries(rootContainer, hydrationController.signal);
13623
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();
13624
13741
  return;
13625
13742
  }` : ""}
13626
13743
  if (!shouldHydrate) {
@@ -14079,6 +14196,7 @@ export {
14079
14196
  createFarmClientOptimizeDepsConfig,
14080
14197
  createFarmSourceAlias,
14081
14198
  mergeFarmViteConfig,
14199
+ mergeFarmProductionViteConfig,
14082
14200
  generateFarmDocsAdapterClientRuntime,
14083
14201
  createFarmThemeCssPlugin,
14084
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";