@farm.js/core 0.1.34 → 0.1.35

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 (261) hide show
  1. package/dist/agent-runtime.cjs +3 -3
  2. package/dist/agent-runtime.d.mts +4 -5
  3. package/dist/agent-runtime.d.ts +4 -5
  4. package/dist/agent-runtime.mjs +2 -2
  5. package/dist/api/route-manager.cjs +5 -5
  6. package/dist/api/route-manager.d.mts +6 -7
  7. package/dist/api/route-manager.d.ts +6 -7
  8. package/dist/api/route-manager.mjs +4 -4
  9. package/dist/api/runtime.cjs +6 -4
  10. package/dist/api/runtime.d.mts +4 -5
  11. package/dist/api/runtime.d.ts +4 -5
  12. package/dist/api/runtime.mjs +6 -4
  13. package/dist/api.cjs +6 -6
  14. package/dist/api.d.mts +7 -8
  15. package/dist/api.d.ts +7 -8
  16. package/dist/api.mjs +5 -5
  17. package/dist/{app-DgotYGbq.d.ts → app-BXB3JZYc.d.ts} +38 -12
  18. package/dist/{app-q4rmZlXK.d.mts → app-D_j9AAVL.d.mts} +38 -12
  19. package/dist/app-markdown.cjs +5 -5
  20. package/dist/app-markdown.d.mts +5 -6
  21. package/dist/app-markdown.d.ts +5 -6
  22. package/dist/app-markdown.mjs +4 -4
  23. package/dist/{chunk-LMJ7VRHZ.mjs → chunk-22LTEMGQ.mjs} +1 -1
  24. package/dist/{chunk-AQZFOP7S.mjs → chunk-2G2NNLE2.mjs} +1 -1
  25. package/dist/{chunk-QJ3J6MZT.cjs → chunk-3BHT4WMP.cjs} +2 -2
  26. package/dist/{chunk-X242HVD5.mjs → chunk-3PXS2MHU.mjs} +1 -1
  27. package/dist/{chunk-A5FGU2WU.cjs → chunk-3UH7MRCP.cjs} +19 -23
  28. package/dist/{chunk-AGC75XAE.mjs → chunk-4JHOT46A.mjs} +1 -1
  29. package/dist/{chunk-XV5DJTBX.mjs → chunk-4KU5Q7C2.mjs} +424 -230
  30. package/dist/{chunk-TA5G2HWD.cjs → chunk-4MMGO7YW.cjs} +21 -21
  31. package/dist/{chunk-7BT4H4P7.cjs → chunk-62XKI4Z3.cjs} +2 -2
  32. package/dist/{chunk-ZKP7C2B6.mjs → chunk-6DU6UFUE.mjs} +12 -11
  33. package/dist/{chunk-GOABMOX3.mjs → chunk-6ETPZTJI.mjs} +366 -4
  34. package/dist/{chunk-7Y6ZNFPX.mjs → chunk-6TJOML4E.mjs} +13 -3
  35. package/dist/{chunk-3ATMYLLJ.mjs → chunk-6WCPV6G2.mjs} +1 -1
  36. package/dist/{chunk-BTAG7LI7.cjs → chunk-73MC7ZL6.cjs} +2 -2
  37. package/dist/chunk-75RZHGLS.cjs +135 -0
  38. package/dist/{chunk-VKNHTSAP.cjs → chunk-7GLPRTTF.cjs} +2 -2
  39. package/dist/{chunk-7M52YUMY.cjs → chunk-7L5V3KQO.cjs} +2 -2
  40. package/dist/{chunk-LI2LMOLR.mjs → chunk-C35ZBVRD.mjs} +12 -3
  41. package/dist/{chunk-YQVSHTMR.mjs → chunk-CP6X4AEU.mjs} +1 -1
  42. package/dist/{chunk-QZCT2CQ4.mjs → chunk-CXEN47J3.mjs} +64 -2
  43. package/dist/{chunk-ATK2R4CH.cjs → chunk-D227TIEN.cjs} +14 -4
  44. package/dist/{chunk-ROUTX2E5.cjs → chunk-DBNKI4NF.cjs} +12 -3
  45. package/dist/{chunk-UX5S4JEO.cjs → chunk-EFCQPQMG.cjs} +3 -3
  46. package/dist/{chunk-K3F2E6GS.cjs → chunk-EJQT6KZN.cjs} +2 -2
  47. package/dist/{chunk-3LUF2PE2.cjs → chunk-EK4QAEFZ.cjs} +67 -5
  48. package/dist/{chunk-VVBO3QH7.mjs → chunk-ENLZ4R3Y.mjs} +10 -1
  49. package/dist/{chunk-XXJU7FCC.cjs → chunk-EUV4YR3V.cjs} +2 -2
  50. package/dist/{chunk-WNNYOOIB.mjs → chunk-F6Z3Y5KL.mjs} +1 -1
  51. package/dist/{chunk-PQDFUSXD.cjs → chunk-F7JZENPF.cjs} +33 -32
  52. package/dist/{chunk-TDFPACVX.cjs → chunk-FTFYRMQQ.cjs} +18 -18
  53. package/dist/{chunk-657WJNRY.mjs → chunk-G5RT7EXW.mjs} +1 -1
  54. package/dist/{chunk-MOKLYNHV.cjs → chunk-GFHLGIYC.cjs} +6 -6
  55. package/dist/{chunk-AWC4VUZL.cjs → chunk-GQ3Z3IZI.cjs} +14 -14
  56. package/dist/{chunk-75WGQVQA.cjs → chunk-HITLGIAO.cjs} +10 -1
  57. package/dist/{chunk-GNSDTTWZ.mjs → chunk-HMIJDL7S.mjs} +1 -1
  58. package/dist/{chunk-PXKIEXZD.mjs → chunk-HUMR6LSU.mjs} +1 -1
  59. package/dist/{chunk-SJVKK4JE.cjs → chunk-ICUQICNC.cjs} +912 -718
  60. package/dist/{chunk-P64MIF5B.cjs → chunk-IPXLADVO.cjs} +387 -25
  61. package/dist/{chunk-KROWKCUH.cjs → chunk-JGLC4TO3.cjs} +8 -1
  62. package/dist/{chunk-2NQQ5H5G.cjs → chunk-M7MKQXAF.cjs} +2 -1
  63. package/dist/chunk-NRDBW4MP.mjs +45 -0
  64. package/dist/chunk-OFZUJMCU.mjs +601 -0
  65. package/dist/{chunk-VCCUOMQN.mjs → chunk-OKZUAXHF.mjs} +1 -1
  66. package/dist/{chunk-EM6SBQKM.cjs → chunk-OMVAU7NT.cjs} +27 -2
  67. package/dist/{chunk-O27L4YAA.mjs → chunk-PDOCJ6RY.mjs} +2 -2
  68. package/dist/{chunk-36MK5YCW.cjs → chunk-PFQKNERH.cjs} +346 -206
  69. package/dist/{chunk-HR5KPHC2.mjs → chunk-Q3VLETLE.mjs} +1 -1
  70. package/dist/{chunk-LR5QSC2P.mjs → chunk-QAU5JD57.mjs} +211 -71
  71. package/dist/{chunk-LHODW25H.mjs → chunk-QORUJDIV.mjs} +2 -2
  72. package/dist/{chunk-UBO4SGH4.mjs → chunk-RHAZ22ZN.mjs} +2 -1
  73. package/dist/{chunk-ZHPHJPQP.cjs → chunk-RU3M2FIK.cjs} +18 -14
  74. package/dist/{chunk-JDPAKVS4.mjs → chunk-SAZVVAJH.mjs} +3 -3
  75. package/dist/{chunk-6VVL3MHY.mjs → chunk-SC2WYWPF.mjs} +1 -1
  76. package/dist/{chunk-QCFFHV5H.mjs → chunk-SMHH4VDG.mjs} +1 -1
  77. package/dist/{chunk-U4PTAHW3.mjs → chunk-SOMHP6GF.mjs} +7 -11
  78. package/dist/{chunk-VHANUNEG.mjs → chunk-UAORZ7QA.mjs} +2 -2
  79. package/dist/{chunk-NGVORZVZ.mjs → chunk-UJD4PHYB.mjs} +15 -11
  80. package/dist/{chunk-U74I55WB.cjs → chunk-ULAWS2PA.cjs} +13 -3
  81. package/dist/{chunk-MPEYMSCF.cjs → chunk-VFQT3LAO.cjs} +5 -5
  82. package/dist/{chunk-Z2YLTERK.cjs → chunk-VZJR7UTG.cjs} +6 -6
  83. package/dist/chunk-WWFTAUFG.cjs +45 -0
  84. package/dist/{chunk-ZUSJDQ2Q.mjs → chunk-WWIKMBRN.mjs} +1 -1
  85. package/dist/{chunk-QGYRXFU2.cjs → chunk-X6W5FFH6.cjs} +8 -8
  86. package/dist/{chunk-MIDIZJZC.cjs → chunk-XBML5KMG.cjs} +8 -8
  87. package/dist/{chunk-G26MUMKL.cjs → chunk-XCACDAZZ.cjs} +4 -4
  88. package/dist/{chunk-CLJYVZAD.mjs → chunk-XCMCS4DA.mjs} +11 -1
  89. package/dist/{chunk-XF7Q24PF.mjs → chunk-Y7RKTKYI.mjs} +25 -0
  90. package/dist/{chunk-ODBZYBAB.cjs → chunk-YC6V7PWE.cjs} +1 -1
  91. package/dist/{chunk-F6OHXPWR.mjs → chunk-YFILVET3.mjs} +8 -1
  92. package/dist/{chunk-DZ4DTRJ5.cjs → chunk-YKX5BK66.cjs} +7 -7
  93. package/dist/chunk-YSLWRWWP.cjs +601 -0
  94. package/dist/{chunk-3VSKDFAT.mjs → chunk-YULD7ICZ.mjs} +1 -1
  95. package/dist/chunk-ZLAT2CWY.mjs +135 -0
  96. package/dist/{chunk-T5CERMEH.cjs → chunk-ZXGAFZDO.cjs} +2 -2
  97. package/dist/{client-plugins-CLObcuCq.d.mts → client-plugins-CvIslxWi.d.mts} +207 -7
  98. package/dist/{client-plugins-DZjHC4Mi.d.ts → client-plugins-HIyulDym.d.ts} +207 -7
  99. package/dist/client-plugins.d.mts +4 -5
  100. package/dist/client-plugins.d.ts +4 -5
  101. package/dist/client.cjs +5 -5
  102. package/dist/client.d.mts +8 -9
  103. package/dist/client.d.ts +8 -9
  104. package/dist/client.mjs +4 -4
  105. package/dist/config.d.mts +4 -5
  106. package/dist/config.d.ts +4 -5
  107. package/dist/{devtools-HU6Y2MNV.cjs → devtools-EAUY43BS.cjs} +9 -9
  108. package/dist/{devtools-RNXCTS4R.mjs → devtools-EE5RIBTH.mjs} +8 -8
  109. package/dist/docs.cjs +12 -12
  110. package/dist/docs.d.mts +41 -4
  111. package/dist/docs.d.ts +41 -4
  112. package/dist/docs.mjs +11 -11
  113. package/dist/i18n/client.d.mts +2 -2
  114. package/dist/i18n/client.d.ts +2 -2
  115. package/dist/i18n/index.d.mts +3 -3
  116. package/dist/i18n/index.d.ts +3 -3
  117. package/dist/i18n/server.d.mts +5 -5
  118. package/dist/i18n/server.d.ts +5 -5
  119. package/dist/image/server.cjs +3 -3
  120. package/dist/image/server.mjs +2 -2
  121. package/dist/image/sharp.cjs +10 -10
  122. package/dist/image/sharp.mjs +2 -2
  123. package/dist/{index-a-8Z5kZU.d.mts → index-BJJfLxJo.d.mts} +2 -2
  124. package/dist/{index-BWVfxIsO.d.ts → index-CwoOP-MW.d.ts} +2 -2
  125. package/dist/index.cjs +38 -35
  126. package/dist/index.d.mts +19 -20
  127. package/dist/index.d.ts +19 -20
  128. package/dist/index.mjs +37 -34
  129. package/dist/integrations.cjs +3 -3
  130. package/dist/integrations.d.mts +4 -5
  131. package/dist/integrations.d.ts +4 -5
  132. package/dist/integrations.mjs +2 -2
  133. package/dist/internal/app-markdown-runtime.cjs +4 -4
  134. package/dist/internal/app-markdown-runtime.d.mts +5 -6
  135. package/dist/internal/app-markdown-runtime.d.ts +5 -6
  136. package/dist/internal/app-markdown-runtime.mjs +3 -3
  137. package/dist/internal/build-runtime.cjs +26 -26
  138. package/dist/internal/build-runtime.d.mts +6 -7
  139. package/dist/internal/build-runtime.d.ts +6 -7
  140. package/dist/internal/build-runtime.mjs +25 -25
  141. package/dist/internal/cli-runtime.cjs +13 -13
  142. package/dist/internal/cli-runtime.mjs +12 -12
  143. package/dist/internal/client-error-overlay.cjs +6 -6
  144. package/dist/internal/client-error-overlay.mjs +2 -2
  145. package/dist/internal/client-runtime.cjs +2 -2
  146. package/dist/internal/client-runtime.mjs +1 -1
  147. package/dist/internal/compression-runtime.d.mts +4 -5
  148. package/dist/internal/compression-runtime.d.ts +4 -5
  149. package/dist/internal/config-runtime.cjs +9 -9
  150. package/dist/internal/config-runtime.d.mts +5 -6
  151. package/dist/internal/config-runtime.d.ts +5 -6
  152. package/dist/internal/config-runtime.mjs +8 -8
  153. package/dist/internal/isolated-boundary.cjs +3 -2
  154. package/dist/internal/isolated-boundary.d.mts +1 -0
  155. package/dist/internal/isolated-boundary.d.ts +1 -0
  156. package/dist/internal/isolated-boundary.mjs +2 -1
  157. package/dist/internal/metadata-image-runtime.cjs +3 -3
  158. package/dist/internal/metadata-image-runtime.mjs +2 -2
  159. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  160. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  161. package/dist/internal/production-runtime.cjs +47 -23
  162. package/dist/internal/production-runtime.d.mts +58 -18
  163. package/dist/internal/production-runtime.d.ts +58 -18
  164. package/dist/internal/production-runtime.mjs +43 -19
  165. package/dist/internal/server-tree.cjs +12 -0
  166. package/dist/internal/server-tree.d.mts +27 -0
  167. package/dist/internal/server-tree.d.ts +27 -0
  168. package/dist/internal/server-tree.mjs +12 -0
  169. package/dist/markdown.cjs +3 -3
  170. package/dist/markdown.d.mts +4 -5
  171. package/dist/markdown.d.ts +4 -5
  172. package/dist/markdown.mjs +2 -2
  173. package/dist/{metadata-Cjs8JMRM.d.ts → metadata-BnLDsUOS.d.ts} +16 -2
  174. package/dist/{metadata-2HSU2i_w.d.mts → metadata-WGpBYcGn.d.mts} +16 -2
  175. package/dist/middleware.cjs +4 -4
  176. package/dist/middleware.d.mts +6 -7
  177. package/dist/middleware.d.ts +6 -7
  178. package/dist/middleware.mjs +3 -3
  179. package/dist/navigation.cjs +5 -5
  180. package/dist/navigation.d.mts +7 -8
  181. package/dist/navigation.d.ts +7 -8
  182. package/dist/navigation.mjs +4 -4
  183. package/dist/{nitro-4XGPNIK4.mjs → nitro-MXRDCXWZ.mjs} +2 -2
  184. package/dist/{nitro-HSAQFXSS.cjs → nitro-OVPLKPE2.cjs} +3 -3
  185. package/dist/{observability-BupkiN0m.d.mts → observability-CoXunYhS.d.mts} +4 -3
  186. package/dist/{observability-BupkiN0m.d.ts → observability-CoXunYhS.d.ts} +4 -3
  187. package/dist/observability.d.mts +1 -1
  188. package/dist/observability.d.ts +1 -1
  189. package/dist/plugin.cjs +22 -22
  190. package/dist/plugin.d.mts +4 -5
  191. package/dist/plugin.d.ts +4 -5
  192. package/dist/plugin.mjs +21 -21
  193. package/dist/{production-runtime-CysZl3EV.d.mts → production-runtime-0sRnuYc-.d.mts} +4 -4
  194. package/dist/{production-runtime-BU5ETAK9.d.ts → production-runtime-Crq6CJ-2.d.ts} +4 -4
  195. package/dist/query/client.cjs +6 -6
  196. package/dist/query/client.mjs +2 -2
  197. package/dist/{render-plan-D72O1qm4.d.ts → render-plan-8ozZh2Qv.d.ts} +1 -1
  198. package/dist/{render-plan-CKr4ltOd.d.mts → render-plan-gs9GGPzw.d.mts} +1 -1
  199. package/dist/renderer/react/server.cjs +10 -4
  200. package/dist/renderer/react/server.d.mts +2 -1
  201. package/dist/renderer/react/server.d.ts +2 -1
  202. package/dist/renderer/react/server.mjs +7 -1
  203. package/dist/renderer-client.cjs +5 -5
  204. package/dist/renderer-client.d.mts +6 -7
  205. package/dist/renderer-client.d.ts +6 -7
  206. package/dist/renderer-client.mjs +2 -2
  207. package/dist/renderer.d.mts +2 -0
  208. package/dist/renderer.d.ts +2 -0
  209. package/dist/{request-DbyOYI2j.d.ts → request-B5G8rLBH.d.ts} +1 -1
  210. package/dist/{request-Be83WafN.d.mts → request-fkhiynXe.d.mts} +1 -1
  211. package/dist/request.d.mts +5 -6
  212. package/dist/request.d.ts +5 -6
  213. package/dist/{resolver-PPEeiJ6M.d.ts → resolver-DadfRL6F.d.ts} +1 -1
  214. package/dist/{resolver-DhW0CqZN.d.mts → resolver-khasx3fU.d.mts} +1 -1
  215. package/dist/{route-rendering-BG56SzvJ.d.mts → route-rendering-CLnS7AZj.d.mts} +1 -1
  216. package/dist/{route-rendering-CtVMpV-k.d.ts → route-rendering-lS5nUMua.d.ts} +1 -1
  217. package/dist/{router-D94-SDlW.d.ts → router-4iuiYnOW.d.ts} +1 -1
  218. package/dist/{router-ALUvm8gC.d.mts → router-ifU8Dui1.d.mts} +1 -1
  219. package/dist/routes.d.mts +4 -5
  220. package/dist/routes.d.ts +4 -5
  221. package/dist/{runtime-BirxPwbZ.d.ts → runtime-BgDQzBiu.d.ts} +2 -2
  222. package/dist/{runtime-AOJge4vQ.d.mts → runtime-CV2UCV-5.d.mts} +2 -2
  223. package/dist/server-action-security.cjs +3 -3
  224. package/dist/server-action-security.mjs +2 -2
  225. package/dist/server-fn.cjs +4 -4
  226. package/dist/server-fn.mjs +3 -3
  227. package/dist/server-plugins.d.mts +5 -6
  228. package/dist/server-plugins.d.ts +5 -6
  229. package/dist/server-query.cjs +5 -5
  230. package/dist/server-query.mjs +4 -4
  231. package/dist/server.cjs +41 -41
  232. package/dist/server.d.mts +13 -14
  233. package/dist/server.d.ts +13 -14
  234. package/dist/server.mjs +24 -24
  235. package/dist/{spa-router-DbxNRKOB.d.mts → spa-router-Bq7VCOwx.d.mts} +3 -3
  236. package/dist/{spa-router-CxK3USIz.d.ts → spa-router-DaJk5Re4.d.ts} +3 -3
  237. package/dist/testing.cjs +7 -7
  238. package/dist/testing.d.mts +4 -5
  239. package/dist/testing.d.ts +4 -5
  240. package/dist/testing.mjs +5 -5
  241. package/dist/{types-Z0aotQ8w.d.mts → types-CnH8DOqo.d.mts} +1 -1
  242. package/dist/{types-Z0aotQ8w.d.ts → types-CnH8DOqo.d.ts} +1 -1
  243. package/dist/{utils-311Y8eoK.d.ts → utils-BXLmFsVR.d.ts} +1 -1
  244. package/dist/{utils-4wVRcpOw.d.mts → utils-XJn0c9bj.d.mts} +1 -1
  245. package/dist/version.cjs +2 -2
  246. package/dist/version.mjs +1 -1
  247. package/dist/vite.cjs +22 -22
  248. package/dist/vite.d.mts +4 -5
  249. package/dist/vite.d.ts +4 -5
  250. package/dist/vite.mjs +21 -21
  251. package/dist/{workflows-CR9ex-gz.d.ts → workflows-jZ4BcdoZ.d.mts} +1 -1
  252. package/dist/{workflows-CR9ex-gz.d.mts → workflows-jZ4BcdoZ.d.ts} +1 -1
  253. package/dist/workflows.cjs +3 -3
  254. package/dist/workflows.d.mts +1 -1
  255. package/dist/workflows.d.ts +1 -1
  256. package/dist/workflows.mjs +2 -2
  257. package/package.json +9 -1
  258. package/dist/chunk-M64YUMA4.cjs +0 -58
  259. package/dist/chunk-QLQ32WC4.mjs +0 -58
  260. package/dist/types-DFbjpjXX.d.mts +0 -105
  261. package/dist/types-DFbjpjXX.d.ts +0 -105
@@ -1,6 +1,7 @@
1
1
  import {
2
- isRouteSlotSegment
3
- } from "./chunk-UBO4SGH4.mjs";
2
+ isRouteSlotSegment,
3
+ parseInterceptionMarker
4
+ } from "./chunk-RHAZ22ZN.mjs";
4
5
  import {
5
6
  normalizeMiddlewareModule,
6
7
  parseMiddlewareCookieHeader,
@@ -193,6 +194,15 @@ import * as path from "path";
193
194
 
194
195
  // src/middleware/path.ts
195
196
  function appendMiddlewareRoutePath(routePath, directoryName) {
197
+ const marker = parseInterceptionMarker(directoryName);
198
+ if (marker) {
199
+ const owner = routePath.split("/").filter(Boolean);
200
+ const parts = [
201
+ ...marker.root ? [] : owner.slice(0, Math.max(0, owner.length - marker.up)),
202
+ ...marker.remainder ? [marker.remainder] : []
203
+ ];
204
+ return `/${parts.join("/")}`;
205
+ }
196
206
  if (directoryName.startsWith("(") && directoryName.endsWith(")") || isRouteSlotSegment(directoryName)) {
197
207
  return routePath;
198
208
  }
@@ -287,7 +297,7 @@ var _MiddlewareManager = class _MiddlewareManager {
287
297
  }
288
298
  const entries = fs.readdirSync(dir, { withFileTypes: true });
289
299
  for (const entry of entries) {
290
- if (entry.isDirectory() && !entry.name.startsWith(".") && !entry.name.startsWith("_")) {
300
+ if (entry.isDirectory() && !entry.name.startsWith(".")) {
291
301
  await this.discoverInDirectory(
292
302
  path.join(dir, entry.name),
293
303
  appendMiddlewareRoutePath(routePath, entry.name),
@@ -9,7 +9,7 @@ import {
9
9
  createFarmRequestBodyErrorResponse,
10
10
  readFarmRequestBody,
11
11
  resolveFarmServerConfig
12
- } from "./chunk-XF7Q24PF.mjs";
12
+ } from "./chunk-Y7RKTKYI.mjs";
13
13
  import {
14
14
  toPosixPath
15
15
  } from "./chunk-KI3MESHB.mjs";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkUX5S4JEOcjs = require('./chunk-UX5S4JEO.cjs');
3
+ var _chunkEFCQPQMGcjs = require('./chunk-EFCQPQMG.cjs');
4
4
 
5
5
 
6
6
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -11,7 +11,7 @@ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
11
11
  var _url = require('url');
12
12
  async function createFarmMarkdownRouteModuleFromFile(filePath, options = {}) {
13
13
  const source = await _promises.readFile.call(void 0, filePath, "utf8");
14
- return _chunkUX5S4JEOcjs.createFarmMarkdownRouteModule.call(void 0, {
14
+ return _chunkEFCQPQMGcjs.createFarmMarkdownRouteModule.call(void 0, {
15
15
  source,
16
16
  filePath,
17
17
  components: options.components,
@@ -0,0 +1,135 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+ var _chunkKNBBQHO2cjs = require('./chunk-KNBBQHO2.cjs');
5
+
6
+
7
+ var _chunkG7HXGLECcjs = require('./chunk-G7HXGLEC.cjs');
8
+
9
+
10
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
11
+
12
+ // src/mcp-catalog.ts
13
+ var CATALOGS = /* @__PURE__ */ Symbol.for("farm.mcp.catalogs");
14
+ function catalogs() {
15
+ const state = globalThis;
16
+ return _nullishCoalesce(state[CATALOGS], () => ( (state[CATALOGS] = /* @__PURE__ */ new Map())));
17
+ }
18
+ _chunkS3JO3N4Hcjs.__name.call(void 0, catalogs, "catalogs");
19
+ function _listFarmMCPCatalogs() {
20
+ return [...catalogs().values()];
21
+ }
22
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _listFarmMCPCatalogs, "_listFarmMCPCatalogs");
23
+ function _publishFarmMCPCatalog(server, tools, details) {
24
+ const entry = { server, tools, ...details ? { details } : {} };
25
+ catalogs().set(server.path, entry);
26
+ return () => {
27
+ if (catalogs().get(server.path) === entry) catalogs().delete(server.path);
28
+ };
29
+ }
30
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _publishFarmMCPCatalog, "_publishFarmMCPCatalog");
31
+ var SERVERS = /* @__PURE__ */ Symbol.for("farm.mcp.servers");
32
+ function registeredServers() {
33
+ const state = globalThis;
34
+ return _nullishCoalesce(state[SERVERS], () => ( (state[SERVERS] = /* @__PURE__ */ new Map())));
35
+ }
36
+ _chunkS3JO3N4Hcjs.__name.call(void 0, registeredServers, "registeredServers");
37
+ function _listFarmRegisteredMCPServers() {
38
+ return [...registeredServers().values()];
39
+ }
40
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _listFarmRegisteredMCPServers, "_listFarmRegisteredMCPServers");
41
+ function registerFarmMCPServer(server) {
42
+ const entry = validateFarmMCPServerRegistration(server);
43
+ const key = _nullishCoalesce(entry.path, () => ( entry.url));
44
+ registeredServers().set(key, entry);
45
+ return () => {
46
+ if (registeredServers().get(key) === entry) registeredServers().delete(key);
47
+ };
48
+ }
49
+ _chunkS3JO3N4Hcjs.__name.call(void 0, registerFarmMCPServer, "registerFarmMCPServer");
50
+ function validateFarmMCPServerRegistration(server) {
51
+ if (!server || typeof server !== "object") {
52
+ throw new TypeError("registerFarmMCPServer expects a server object.");
53
+ }
54
+ const text = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (key, required) => {
55
+ const value = server[key];
56
+ if (value === void 0 && !required) return void 0;
57
+ if (typeof value !== "string" || !value.trim()) {
58
+ throw new TypeError(`registerFarmMCPServer ${key} must be a non-empty string.`);
59
+ }
60
+ return value.trim();
61
+ }, "text");
62
+ const name = text("name", true);
63
+ const version = text("version", true);
64
+ const title = text("title", false);
65
+ const description = text("description", false);
66
+ const { path, url } = server;
67
+ if (path === void 0 === (url === void 0)) {
68
+ throw new TypeError("registerFarmMCPServer takes exactly one of path and url.");
69
+ }
70
+ let endpoint;
71
+ if (path !== void 0) {
72
+ if (typeof path !== "string" || !/^\/(?!\/)[^?#\\\s]*$/.test(path) || path.split("/").some((segment) => segment === "." || segment === "..")) {
73
+ throw new TypeError(
74
+ "registerFarmMCPServer path must be an absolute app path without a query, hash, or dot segments."
75
+ );
76
+ }
77
+ endpoint = { path: path.length > 1 ? path.replace(/\/+$/, "") : path };
78
+ } else {
79
+ let parsed;
80
+ try {
81
+ parsed = typeof url === "string" ? new URL(url) : void 0;
82
+ } catch (e) {
83
+ parsed = void 0;
84
+ }
85
+ if (!parsed || parsed.protocol !== "https:" && parsed.protocol !== "http:" || parsed.username || parsed.password || parsed.search || parsed.hash) {
86
+ throw new TypeError(
87
+ "registerFarmMCPServer url must be an absolute http(s) URL without credentials, a query, or a hash."
88
+ );
89
+ }
90
+ endpoint = { url: `${parsed.origin}${parsed.pathname.replace(/\/+$/, "")}` };
91
+ }
92
+ const { protocolVersions } = server;
93
+ if (protocolVersions !== void 0 && (!Array.isArray(protocolVersions) || protocolVersions.some((version2) => typeof version2 !== "string" || !version2.trim()))) {
94
+ throw new TypeError("registerFarmMCPServer protocolVersions must be non-empty strings.");
95
+ }
96
+ return Object.freeze({
97
+ name,
98
+ version,
99
+ ...title ? { title } : {},
100
+ ...description ? { description } : {},
101
+ ..._optionalChain([protocolVersions, 'optionalAccess', _ => _.length]) ? { protocolVersions: Object.freeze([...protocolVersions]) } : {},
102
+ ...endpoint
103
+ });
104
+ }
105
+ _chunkS3JO3N4Hcjs.__name.call(void 0, validateFarmMCPServerRegistration, "validateFarmMCPServerRegistration");
106
+ function _findFarmMCPEndpointTool(method, pathname, serverBasePath) {
107
+ const upperMethod = method.toUpperCase();
108
+ for (const { server, tools } of catalogs().values()) {
109
+ const routes = /* @__PURE__ */ new Map();
110
+ for (const tool of tools) {
111
+ if (tool.kind === "endpoint" && tool.method === upperMethod) {
112
+ routes.set(tool.path, { path: tool.path, name: tool.name });
113
+ }
114
+ }
115
+ if (routes.size === 0) continue;
116
+ const canonical = serverBasePath ? _chunkKNBBQHO2cjs.resolveFarmAPICanonicalPathname.call(void 0, pathname, serverBasePath) : pathname;
117
+ const match = _chunkG7HXGLECcjs.matchAPIRoute.call(void 0, routes, canonical);
118
+ if (match) {
119
+ return {
120
+ name: match.route.name,
121
+ endpoint: _chunkKNBBQHO2cjs.resolveFarmAPIServerRoutePath.call(void 0, server.path, serverBasePath)
122
+ };
123
+ }
124
+ }
125
+ return void 0;
126
+ }
127
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _findFarmMCPEndpointTool, "_findFarmMCPEndpointTool");
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+ exports._listFarmMCPCatalogs = _listFarmMCPCatalogs; exports._publishFarmMCPCatalog = _publishFarmMCPCatalog; exports._listFarmRegisteredMCPServers = _listFarmRegisteredMCPServers; exports.registerFarmMCPServer = registerFarmMCPServer; exports._findFarmMCPEndpointTool = _findFarmMCPEndpointTool;
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkEM6SBQKMcjs = require('./chunk-EM6SBQKM.cjs');
3
+ var _chunkOMVAU7NTcjs = require('./chunk-OMVAU7NT.cjs');
4
4
 
5
5
 
6
6
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -583,7 +583,7 @@ function createOptimizedImageResponse(request, image, config) {
583
583
  if (image.contentType === "image/svg+xml" && config.dangerouslyAllowSVG) {
584
584
  headers.set("content-security-policy", "default-src 'none'; sandbox");
585
585
  }
586
- if (_chunkEM6SBQKMcjs.matchesFarmIfNoneMatch.call(void 0, request.headers.get("if-none-match"), image.etag)) {
586
+ if (_chunkOMVAU7NTcjs.matchesFarmIfNoneMatch.call(void 0, request.headers.get("if-none-match"), image.etag)) {
587
587
  headers.delete("content-length");
588
588
  return new Response(null, { status: 304, headers });
589
589
  }
@@ -27,7 +27,7 @@ var _chunkE2ROOWQCcjs = require('./chunk-E2ROOWQC.cjs');
27
27
  var _chunkJSROZYYOcjs = require('./chunk-JSROZYYO.cjs');
28
28
 
29
29
 
30
- var _chunkTDFPACVXcjs = require('./chunk-TDFPACVX.cjs');
30
+ var _chunkFTFYRMQQcjs = require('./chunk-FTFYRMQQ.cjs');
31
31
 
32
32
 
33
33
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -119,7 +119,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, withTimeout, "withTimeout");
119
119
  var formatSeconds = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (ms) => ms < 1e3 ? `${ms}ms` : `${Number((ms / 1e3).toFixed(1))}s`, "formatSeconds");
120
120
  function collectSchemaOwners(config) {
121
121
  const owners = [];
122
- const integrationSchemas = _chunkTDFPACVXcjs.getIntegrationSchemas.call(void 0, config.integrations);
122
+ const integrationSchemas = _chunkFTFYRMQQcjs.getIntegrationSchemas.call(void 0, config.integrations);
123
123
  let integrationClient;
124
124
  for (const [name, schema] of Object.entries(integrationSchemas)) {
125
125
  owners.push({
@@ -1,3 +1,7 @@
1
+ import {
2
+ markFarmClientReference,
3
+ updateFarmServerTreeModule
4
+ } from "./chunk-NRDBW4MP.mjs";
1
5
  import {
2
6
  __name
3
7
  } from "./chunk-LPEX4YW6.mjs";
@@ -109,6 +113,11 @@ function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReferen
109
113
  }
110
114
  __name(FarmIsolatedClientBoundary, "FarmIsolatedClientBoundary");
111
115
  FarmIsolatedClientBoundary.displayName = `FarmIsolated(${Component.displayName || Component.name || exportName})`;
116
+ markFarmClientReference(FarmIsolatedClientBoundary, {
117
+ reference: moduleReference,
118
+ exportName,
119
+ Component
120
+ });
112
121
  return FarmIsolatedClientBoundary;
113
122
  }
114
123
  __name(createFarmIsolatedClientBoundary, "createFarmIsolatedClientBoundary");
@@ -300,7 +309,7 @@ function createFarmIsolatedHydrationRuntime(options) {
300
309
  __name(hydrate, "hydrate");
301
310
  function updateModule(reference, module) {
302
311
  const originals = module.__farm_client_boundary_originals__;
303
- let updated = 0;
312
+ let updated = updateFarmServerTreeModule(reference, module);
304
313
  for (const [container, record] of roots) {
305
314
  if (record.reference !== reference) continue;
306
315
  const Component = originals?.[record.exportName];
@@ -355,7 +364,7 @@ function createFarmIsolatedHydrationRuntime(options) {
355
364
  }
356
365
  __name(createFarmIsolatedHydrationRuntime, "createFarmIsolatedHydrationRuntime");
357
366
  function createFarmServerPageBoundary(ReactRuntime, runtime) {
358
- return /* @__PURE__ */ __name(function FarmServerPage(props) {
367
+ return /* @__PURE__ */ __name(function FarmServerPage({ as = "div", ...props }) {
359
368
  const ref = ReactRuntime.useRef(null);
360
369
  const html = props.dangerouslySetInnerHTML.__html;
361
370
  ReactRuntime.useLayoutEffect(() => {
@@ -376,7 +385,7 @@ function createFarmServerPageBoundary(ReactRuntime, runtime) {
376
385
  });
377
386
  };
378
387
  }, [html]);
379
- return ReactRuntime.createElement("div", { ...props, ref });
388
+ return ReactRuntime.createElement(as, { ...props, ref });
380
389
  }, "FarmServerPage");
381
390
  }
382
391
  __name(createFarmServerPageBoundary, "createFarmServerPageBoundary");
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-5WI2S4CO.mjs";
9
9
  import {
10
10
  matchesFarmIfNoneMatch
11
- } from "./chunk-XF7Q24PF.mjs";
11
+ } from "./chunk-Y7RKTKYI.mjs";
12
12
  import {
13
13
  __name
14
14
  } from "./chunk-LPEX4YW6.mjs";
@@ -17,6 +17,7 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
17
17
  if (typeof layout.generateMetadata === "function") {
18
18
  metadata = mergeMetadata(metadata, await layout.generateMetadata({ params: {} }));
19
19
  }
20
+ metadata = await mergeModuleViewport(metadata, layout, { params: {} });
20
21
  }
21
22
  let own = {};
22
23
  let latestTitle;
@@ -28,6 +29,7 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
28
29
  own = mergeMetadata(own, generated);
29
30
  if (generated?.title !== void 0) latestTitle = generated.title;
30
31
  }
32
+ own = await mergeModuleViewport(own, notFoundModule, { params: {}, searchParams: {} });
31
33
  }
32
34
  const title = isRecord(latestTitle) && normalizeContent(latestTitle.absolute) ? latestTitle : own.title;
33
35
  return mergeMetadata(metadata, { ...own, title: title ?? FARM_NOT_FOUND_TITLE });
@@ -46,10 +48,67 @@ function mergeMetadata(base, next) {
46
48
  twitter: mergeNestedMetadata(base.twitter, next.twitter),
47
49
  alternates: mergeNestedMetadata(base.alternates, next.alternates),
48
50
  icons: mergeNestedMetadata(base.icons, next.icons),
49
- verification: mergeNestedMetadata(base.verification, next.verification)
51
+ verification: mergeNestedMetadata(base.verification, next.verification),
52
+ viewport: mergeNestedMetadata(base.viewport, next.viewport)
50
53
  };
51
54
  }
52
55
  __name(mergeMetadata, "mergeMetadata");
56
+ async function mergeModuleViewport(metadata, module, props) {
57
+ let merged = metadata;
58
+ if (isRecord(module?.viewport)) {
59
+ merged = mergeMetadata(merged, { viewport: module.viewport });
60
+ }
61
+ if (typeof module?.generateViewport === "function") {
62
+ const generated = await module.generateViewport(props);
63
+ if (isRecord(generated)) merged = mergeMetadata(merged, { viewport: generated });
64
+ }
65
+ return merged;
66
+ }
67
+ __name(mergeModuleViewport, "mergeModuleViewport");
68
+ var DEFAULT_VIEWPORT = { width: "device-width", initialScale: 1 };
69
+ var VIEWPORT_CONTENT_KEYS = [
70
+ ["width", "width"],
71
+ ["height", "height"],
72
+ ["initialScale", "initial-scale"],
73
+ ["minimumScale", "minimum-scale"],
74
+ ["maximumScale", "maximum-scale"],
75
+ ["userScalable", "user-scalable"],
76
+ ["viewportFit", "viewport-fit"],
77
+ ["interactiveWidget", "interactive-widget"]
78
+ ];
79
+ function renderViewportHead(viewport) {
80
+ const marker = ` ${FARM_METADATA_ATTRIBUTE}`;
81
+ if (typeof viewport === "string") {
82
+ return `<meta name="viewport" content="${escapeAttribute(viewport)}"${marker}>`;
83
+ }
84
+ const resolved = {
85
+ ...DEFAULT_VIEWPORT,
86
+ ...isRecord(viewport) ? viewport : {}
87
+ };
88
+ const content = VIEWPORT_CONTENT_KEYS.flatMap(([key, name]) => {
89
+ const value = resolved[key];
90
+ if (value === void 0 || value === null || value === "") return [];
91
+ if (typeof value === "boolean") return [`${name}=${value ? "yes" : "no"}`];
92
+ return [`${name}=${String(value)}`];
93
+ }).join(", ");
94
+ const tags = content ? [`<meta name="viewport" content="${escapeAttribute(content)}"${marker}>`] : [];
95
+ const themeColors = Array.isArray(resolved.themeColor) ? resolved.themeColor : resolved.themeColor === void 0 ? [] : [resolved.themeColor];
96
+ for (const entry of themeColors) {
97
+ const color = typeof entry === "string" ? entry : isRecord(entry) ? entry.color : void 0;
98
+ const content2 = normalizeContent(color);
99
+ if (!content2) continue;
100
+ const media = isRecord(entry) ? normalizeContent(entry.media) : void 0;
101
+ tags.push(
102
+ `<meta name="theme-color" content="${escapeAttribute(content2)}"${media ? ` media="${escapeAttribute(media)}"` : ""}${marker}>`
103
+ );
104
+ }
105
+ const colorScheme = normalizeContent(resolved.colorScheme);
106
+ if (colorScheme) {
107
+ tags.push(`<meta name="color-scheme" content="${escapeAttribute(colorScheme)}"${marker}>`);
108
+ }
109
+ return tags.join("\n ");
110
+ }
111
+ __name(renderViewportHead, "renderViewportHead");
53
112
  function mergeMetadataTitle(base, next) {
54
113
  if (next === void 0) return base;
55
114
  const parentTemplate = isRecord(base) ? normalizeContent(base.template) : void 0;
@@ -209,7 +268,8 @@ function renderMetadataHead(metadata, options = {}) {
209
268
  tags: tags.length > 0 ? `
210
269
  ${tags.join("\n ")}` : "",
211
270
  hasFavicon,
212
- hasExplicitTitle: Boolean(explicitTitle)
271
+ hasExplicitTitle: Boolean(explicitTitle),
272
+ viewport: renderViewportHead(resolvedMetadata.viewport)
213
273
  };
214
274
  }
215
275
  __name(renderMetadataHead, "renderMetadataHead");
@@ -481,6 +541,8 @@ export {
481
541
  FARM_METADATA_ATTRIBUTE,
482
542
  resolveFarmNotFoundMetadata,
483
543
  mergeMetadata,
544
+ mergeModuleViewport,
545
+ renderViewportHead,
484
546
  addMetadataImageReference,
485
547
  addMetadataMarkdownAlternate,
486
548
  renderMetadataHead,
@@ -17,7 +17,7 @@ var _chunkJ7FSKED3cjs = require('./chunk-J7FSKED3.cjs');
17
17
 
18
18
 
19
19
 
20
- var _chunk3LUF2PE2cjs = require('./chunk-3LUF2PE2.cjs');
20
+ var _chunkEK4QAEFZcjs = require('./chunk-EK4QAEFZ.cjs');
21
21
 
22
22
 
23
23
 
@@ -31,7 +31,7 @@ var _chunkQBK2AA4Ucjs = require('./chunk-QBK2AA4U.cjs');
31
31
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
32
32
 
33
33
  // src/client/metadata-reconciler.ts
34
- var MANAGED_ATTRIBUTE = _chunk3LUF2PE2cjs.FARM_METADATA_ATTRIBUTE;
34
+ var MANAGED_ATTRIBUTE = _chunkEK4QAEFZcjs.FARM_METADATA_ATTRIBUTE;
35
35
  var OWNED_SELECTORS = [
36
36
  'meta[name="description"]',
37
37
  'meta[name="keywords"]',
@@ -66,11 +66,21 @@ function removeAll(selector) {
66
66
  }
67
67
  _chunkS3JO3N4Hcjs.__name.call(void 0, removeAll, "removeAll");
68
68
  function applyFarmMetadataToDocument(metadata, pathname) {
69
- document.title = _chunk3LUF2PE2cjs.resolveMetadataTitle.call(void 0, _optionalChain([metadata, 'optionalAccess', _ => _.title])) || "Farm.js App";
70
- const rendered = _chunk3LUF2PE2cjs.renderMetadataHead.call(void 0, metadata, { pathname });
69
+ document.title = _chunkEK4QAEFZcjs.resolveMetadataTitle.call(void 0, _optionalChain([metadata, 'optionalAccess', _ => _.title])) || "Farm.js App";
70
+ const rendered = _chunkEK4QAEFZcjs.renderMetadataHead.call(void 0, metadata, { pathname });
71
71
  const template = document.createElement("template");
72
72
  template.innerHTML = rendered.tags;
73
+ const viewport = document.createElement("template");
74
+ viewport.innerHTML = rendered.viewport;
73
75
  removeAll(OWNED_SELECTORS);
76
+ const charset = document.head.querySelector("meta[charset]");
77
+ for (const element of Array.from(viewport.content.children).reverse()) {
78
+ const name = element.getAttribute("name");
79
+ if (name && document.head.querySelector(`meta[name="${name}"]:not([${MANAGED_ATTRIBUTE}])`)) {
80
+ continue;
81
+ }
82
+ document.head.insertBefore(element, charset ? charset.nextSibling : document.head.firstChild);
83
+ }
74
84
  removeAll(PAGE_JSON_LD_SELECTOR);
75
85
  if (_optionalChain([metadata, 'optionalAccess', _2 => _2.icons])) removeAll(ICON_SELECTORS);
76
86
  if (_optionalChain([metadata, 'optionalAccess', _3 => _3.manifest])) removeAll(MANIFEST_SELECTOR);
@@ -1,5 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
+
4
+ var _chunkWWFTAUFGcjs = require('./chunk-WWFTAUFG.cjs');
5
+
6
+
3
7
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
8
 
5
9
  // src/client/isolated-boundary.ts
@@ -109,6 +113,11 @@ function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReferen
109
113
  }
110
114
  _chunkS3JO3N4Hcjs.__name.call(void 0, FarmIsolatedClientBoundary, "FarmIsolatedClientBoundary");
111
115
  FarmIsolatedClientBoundary.displayName = `FarmIsolated(${Component.displayName || Component.name || exportName})`;
116
+ _chunkWWFTAUFGcjs.markFarmClientReference.call(void 0, FarmIsolatedClientBoundary, {
117
+ reference: moduleReference,
118
+ exportName,
119
+ Component
120
+ });
112
121
  return FarmIsolatedClientBoundary;
113
122
  }
114
123
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmIsolatedClientBoundary, "createFarmIsolatedClientBoundary");
@@ -300,7 +309,7 @@ function createFarmIsolatedHydrationRuntime(options) {
300
309
  _chunkS3JO3N4Hcjs.__name.call(void 0, hydrate, "hydrate");
301
310
  function updateModule(reference, module) {
302
311
  const originals = module.__farm_client_boundary_originals__;
303
- let updated = 0;
312
+ let updated = _chunkWWFTAUFGcjs.updateFarmServerTreeModule.call(void 0, reference, module);
304
313
  for (const [container, record] of roots) {
305
314
  if (record.reference !== reference) continue;
306
315
  const Component = _optionalChain([originals, 'optionalAccess', _15 => _15[record.exportName]]);
@@ -355,7 +364,7 @@ function createFarmIsolatedHydrationRuntime(options) {
355
364
  }
356
365
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmIsolatedHydrationRuntime, "createFarmIsolatedHydrationRuntime");
357
366
  function createFarmServerPageBoundary(ReactRuntime, runtime) {
358
- return /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, function FarmServerPage(props) {
367
+ return /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, function FarmServerPage({ as = "div", ...props }) {
359
368
  const ref = ReactRuntime.useRef(null);
360
369
  const html = props.dangerouslySetInnerHTML.__html;
361
370
  ReactRuntime.useLayoutEffect(() => {
@@ -376,7 +385,7 @@ function createFarmServerPageBoundary(ReactRuntime, runtime) {
376
385
  });
377
386
  };
378
387
  }, [html]);
379
- return ReactRuntime.createElement("div", { ...props, ref });
388
+ return ReactRuntime.createElement(as, { ...props, ref });
380
389
  }, "FarmServerPage");
381
390
  }
382
391
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmServerPageBoundary, "createFarmServerPageBoundary");
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkXXJU7FCCcjs = require('./chunk-XXJU7FCC.cjs');
4
+ var _chunkEUV4YR3Vcjs = require('./chunk-EUV4YR3V.cjs');
5
5
 
6
6
 
7
7
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -121,7 +121,7 @@ async function createFarmMarkdownSourceResponse(options) {
121
121
  }
122
122
  const url = new URL(options.request.url);
123
123
  const hasMarkdownExtension = url.pathname.toLowerCase().endsWith(".md");
124
- if (!hasMarkdownExtension && !_chunkXXJU7FCCcjs.requestAcceptsMarkdown.call(void 0, options.request.headers.get("accept"))) {
124
+ if (!hasMarkdownExtension && !_chunkEUV4YR3Vcjs.requestAcceptsMarkdown.call(void 0, options.request.headers.get("accept"))) {
125
125
  return null;
126
126
  }
127
127
  const targetPathname = normalizeFarmMarkdownRoutePath(url.pathname);
@@ -169,7 +169,7 @@ async function createFarmMarkdownSourceResponse(options) {
169
169
  if (!hasMarkdownExtension) {
170
170
  headers.set("Vary", "Accept");
171
171
  }
172
- return _chunkXXJU7FCCcjs.createFarmMarkdownViewResponse.call(void 0, {
172
+ return _chunkEUV4YR3Vcjs.createFarmMarkdownViewResponse.call(void 0, {
173
173
  request: options.request,
174
174
  requestUrl: url,
175
175
  markdown: source.source,
@@ -8,7 +8,7 @@ var _chunkLYLEZIG3cjs = require('./chunk-LYLEZIG3.cjs');
8
8
  var _chunkTKJZFIMLcjs = require('./chunk-TKJZFIML.cjs');
9
9
 
10
10
 
11
- var _chunkEM6SBQKMcjs = require('./chunk-EM6SBQKM.cjs');
11
+ var _chunkOMVAU7NTcjs = require('./chunk-OMVAU7NT.cjs');
12
12
 
13
13
 
14
14
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -137,7 +137,7 @@ async function finalizeMetadataImageResponse(body, headers, options) {
137
137
  responseHeaders.set("ETag", etag);
138
138
  responseHeaders.set("Content-Length", String(body.byteLength));
139
139
  responseHeaders.set("X-Content-Type-Options", "nosniff");
140
- if (_chunkEM6SBQKMcjs.matchesFarmIfNoneMatch.call(void 0, options.ifNoneMatch, etag)) {
140
+ if (_chunkOMVAU7NTcjs.matchesFarmIfNoneMatch.call(void 0, options.ifNoneMatch, etag)) {
141
141
  return new Response(null, { status: 304, headers: responseHeaders });
142
142
  }
143
143
  return new Response(_optionalChain([options, 'access', _4 => _4.method, 'optionalAccess', _5 => _5.toUpperCase, 'call', _6 => _6()]) === "HEAD" ? null : body, {
@@ -17,6 +17,7 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
17
17
  if (typeof layout.generateMetadata === "function") {
18
18
  metadata = mergeMetadata(metadata, await layout.generateMetadata({ params: {} }));
19
19
  }
20
+ metadata = await mergeModuleViewport(metadata, layout, { params: {} });
20
21
  }
21
22
  let own = {};
22
23
  let latestTitle;
@@ -28,6 +29,7 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
28
29
  own = mergeMetadata(own, generated);
29
30
  if (_optionalChain([generated, 'optionalAccess', _3 => _3.title]) !== void 0) latestTitle = generated.title;
30
31
  }
32
+ own = await mergeModuleViewport(own, notFoundModule, { params: {}, searchParams: {} });
31
33
  }
32
34
  const title = isRecord(latestTitle) && normalizeContent(latestTitle.absolute) ? latestTitle : own.title;
33
35
  return mergeMetadata(metadata, { ...own, title: _nullishCoalesce(title, () => ( FARM_NOT_FOUND_TITLE)) });
@@ -46,10 +48,67 @@ function mergeMetadata(base, next) {
46
48
  twitter: mergeNestedMetadata(base.twitter, next.twitter),
47
49
  alternates: mergeNestedMetadata(base.alternates, next.alternates),
48
50
  icons: mergeNestedMetadata(base.icons, next.icons),
49
- verification: mergeNestedMetadata(base.verification, next.verification)
51
+ verification: mergeNestedMetadata(base.verification, next.verification),
52
+ viewport: mergeNestedMetadata(base.viewport, next.viewport)
50
53
  };
51
54
  }
52
55
  _chunkS3JO3N4Hcjs.__name.call(void 0, mergeMetadata, "mergeMetadata");
56
+ async function mergeModuleViewport(metadata, module, props) {
57
+ let merged = metadata;
58
+ if (isRecord(_optionalChain([module, 'optionalAccess', _4 => _4.viewport]))) {
59
+ merged = mergeMetadata(merged, { viewport: module.viewport });
60
+ }
61
+ if (typeof _optionalChain([module, 'optionalAccess', _5 => _5.generateViewport]) === "function") {
62
+ const generated = await module.generateViewport(props);
63
+ if (isRecord(generated)) merged = mergeMetadata(merged, { viewport: generated });
64
+ }
65
+ return merged;
66
+ }
67
+ _chunkS3JO3N4Hcjs.__name.call(void 0, mergeModuleViewport, "mergeModuleViewport");
68
+ var DEFAULT_VIEWPORT = { width: "device-width", initialScale: 1 };
69
+ var VIEWPORT_CONTENT_KEYS = [
70
+ ["width", "width"],
71
+ ["height", "height"],
72
+ ["initialScale", "initial-scale"],
73
+ ["minimumScale", "minimum-scale"],
74
+ ["maximumScale", "maximum-scale"],
75
+ ["userScalable", "user-scalable"],
76
+ ["viewportFit", "viewport-fit"],
77
+ ["interactiveWidget", "interactive-widget"]
78
+ ];
79
+ function renderViewportHead(viewport) {
80
+ const marker = ` ${FARM_METADATA_ATTRIBUTE}`;
81
+ if (typeof viewport === "string") {
82
+ return `<meta name="viewport" content="${escapeAttribute(viewport)}"${marker}>`;
83
+ }
84
+ const resolved = {
85
+ ...DEFAULT_VIEWPORT,
86
+ ...isRecord(viewport) ? viewport : {}
87
+ };
88
+ const content = VIEWPORT_CONTENT_KEYS.flatMap(([key, name]) => {
89
+ const value = resolved[key];
90
+ if (value === void 0 || value === null || value === "") return [];
91
+ if (typeof value === "boolean") return [`${name}=${value ? "yes" : "no"}`];
92
+ return [`${name}=${String(value)}`];
93
+ }).join(", ");
94
+ const tags = content ? [`<meta name="viewport" content="${escapeAttribute(content)}"${marker}>`] : [];
95
+ const themeColors = Array.isArray(resolved.themeColor) ? resolved.themeColor : resolved.themeColor === void 0 ? [] : [resolved.themeColor];
96
+ for (const entry of themeColors) {
97
+ const color = typeof entry === "string" ? entry : isRecord(entry) ? entry.color : void 0;
98
+ const content2 = normalizeContent(color);
99
+ if (!content2) continue;
100
+ const media = isRecord(entry) ? normalizeContent(entry.media) : void 0;
101
+ tags.push(
102
+ `<meta name="theme-color" content="${escapeAttribute(content2)}"${media ? ` media="${escapeAttribute(media)}"` : ""}${marker}>`
103
+ );
104
+ }
105
+ const colorScheme = normalizeContent(resolved.colorScheme);
106
+ if (colorScheme) {
107
+ tags.push(`<meta name="color-scheme" content="${escapeAttribute(colorScheme)}"${marker}>`);
108
+ }
109
+ return tags.join("\n ");
110
+ }
111
+ _chunkS3JO3N4Hcjs.__name.call(void 0, renderViewportHead, "renderViewportHead");
53
112
  function mergeMetadataTitle(base, next) {
54
113
  if (next === void 0) return base;
55
114
  const parentTemplate = isRecord(base) ? normalizeContent(base.template) : void 0;
@@ -137,8 +196,8 @@ function renderMetadataHead(metadata, options = {}) {
137
196
  appendMetaName(tags, "author", resolvedMetadata.author);
138
197
  if (Array.isArray(resolvedMetadata.authors)) {
139
198
  for (const author of resolvedMetadata.authors) {
140
- appendMetaName(tags, "author", _optionalChain([author, 'optionalAccess', _4 => _4.name]));
141
- if (_optionalChain([author, 'optionalAccess', _5 => _5.url])) {
199
+ appendMetaName(tags, "author", _optionalChain([author, 'optionalAccess', _6 => _6.name]));
200
+ if (_optionalChain([author, 'optionalAccess', _7 => _7.url])) {
142
201
  appendLink(tags, "author", resolveMetadataUrl(author.url, metadataBase));
143
202
  }
144
203
  }
@@ -209,7 +268,8 @@ function renderMetadataHead(metadata, options = {}) {
209
268
  tags: tags.length > 0 ? `
210
269
  ${tags.join("\n ")}` : "",
211
270
  hasFavicon,
212
- hasExplicitTitle: Boolean(explicitTitle)
271
+ hasExplicitTitle: Boolean(explicitTitle),
272
+ viewport: renderViewportHead(resolvedMetadata.viewport)
213
273
  };
214
274
  }
215
275
  _chunkS3JO3N4Hcjs.__name.call(void 0, renderMetadataHead, "renderMetadataHead");
@@ -485,4 +545,6 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, escapeAttribute, "escapeAttribute");
485
545
 
486
546
 
487
547
 
488
- exports.FARM_METADATA_ATTRIBUTE = FARM_METADATA_ATTRIBUTE; exports.resolveFarmNotFoundMetadata = resolveFarmNotFoundMetadata; exports.mergeMetadata = mergeMetadata; exports.addMetadataImageReference = addMetadataImageReference; exports.addMetadataMarkdownAlternate = addMetadataMarkdownAlternate; exports.renderMetadataHead = renderMetadataHead; exports.resolveMetadataTitle = resolveMetadataTitle;
548
+
549
+
550
+ exports.FARM_METADATA_ATTRIBUTE = FARM_METADATA_ATTRIBUTE; exports.resolveFarmNotFoundMetadata = resolveFarmNotFoundMetadata; exports.mergeMetadata = mergeMetadata; exports.mergeModuleViewport = mergeModuleViewport; exports.renderViewportHead = renderViewportHead; exports.addMetadataImageReference = addMetadataImageReference; exports.addMetadataMarkdownAlternate = addMetadataMarkdownAlternate; exports.renderMetadataHead = renderMetadataHead; exports.resolveMetadataTitle = resolveMetadataTitle;