@farm.js/core 0.1.30 → 0.1.34

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 (286) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-runtime.cjs +69 -14
  3. package/dist/agent-runtime.d.mts +1 -1
  4. package/dist/agent-runtime.d.ts +1 -1
  5. package/dist/agent-runtime.mjs +58 -3
  6. package/dist/api/route-manager.cjs +16 -13
  7. package/dist/api/route-manager.d.mts +1 -1
  8. package/dist/api/route-manager.d.ts +1 -1
  9. package/dist/api/route-manager.mjs +15 -12
  10. package/dist/api/runtime.cjs +9 -7
  11. package/dist/api/runtime.d.mts +1 -1
  12. package/dist/api/runtime.d.ts +1 -1
  13. package/dist/api/runtime.mjs +8 -6
  14. package/dist/api.cjs +19 -16
  15. package/dist/api.d.mts +2 -2
  16. package/dist/api.d.ts +2 -2
  17. package/dist/api.mjs +18 -15
  18. package/dist/{app-sUJ3jnTZ.d.ts → app-DgotYGbq.d.ts} +3 -3
  19. package/dist/app-markdown.cjs +8 -6
  20. package/dist/app-markdown.d.mts +3 -3
  21. package/dist/app-markdown.d.ts +3 -3
  22. package/dist/app-markdown.mjs +7 -5
  23. package/dist/{app-DAuUTIZf.d.mts → app-q4rmZlXK.d.mts} +3 -3
  24. package/dist/cache.cjs +2 -2
  25. package/dist/cache.d.mts +10 -1
  26. package/dist/cache.d.ts +10 -1
  27. package/dist/cache.mjs +1 -1
  28. package/dist/{chunk-YZTASLPQ.cjs → chunk-27ZWSI3W.cjs} +2 -2
  29. package/dist/{chunk-WBIH66JK.mjs → chunk-2ELDTQRN.mjs} +5 -2
  30. package/dist/{chunk-K7CELQLK.cjs → chunk-2F2ER724.cjs} +54 -29
  31. package/dist/{chunk-NRVGEI5I.mjs → chunk-2NNMOPDN.mjs} +4 -210
  32. package/dist/chunk-2NQQ5H5G.cjs +86 -0
  33. package/dist/{chunk-HPQC2LHF.cjs → chunk-36MK5YCW.cjs} +342 -163
  34. package/dist/chunk-3BU22U3M.cjs +237 -0
  35. package/dist/{chunk-MM5D6VLP.mjs → chunk-3KZS4SUS.mjs} +33 -14
  36. package/dist/chunk-3SDFA7UF.cjs +701 -0
  37. package/dist/{chunk-4IEPYMHF.mjs → chunk-3UEVPCGW.mjs} +1 -1
  38. package/dist/{chunk-6G3ZZ2IE.mjs → chunk-3VSKDFAT.mjs} +1 -1
  39. package/dist/{chunk-5HGR3W6O.mjs → chunk-5SJWVY6R.mjs} +8 -0
  40. package/dist/{chunk-X7WVQMIB.mjs → chunk-657WJNRY.mjs} +10 -4
  41. package/dist/{chunk-MKMBQSNQ.mjs → chunk-6VVL3MHY.mjs} +3 -3
  42. package/dist/{chunk-QZRVZSPN.cjs → chunk-77GNHH2Z.cjs} +3 -3
  43. package/dist/{chunk-KZLND3D2.cjs → chunk-7BT4H4P7.cjs} +7 -5
  44. package/dist/{chunk-A777V5WU.cjs → chunk-7M52YUMY.cjs} +2 -2
  45. package/dist/{chunk-VUMAE7NC.mjs → chunk-7Y6ZNFPX.mjs} +81 -30
  46. package/dist/{chunk-ZDILFMWN.cjs → chunk-A5FGU2WU.cjs} +74 -23
  47. package/dist/{chunk-BZ3CHOFX.mjs → chunk-AGC75XAE.mjs} +37 -1
  48. package/dist/{chunk-4ZQQL4IU.mjs → chunk-AHGECQEW.mjs} +1 -1
  49. package/dist/{chunk-RG3ZOTG5.cjs → chunk-AI7QMY7O.cjs} +10 -3
  50. package/dist/{chunk-O3DTUAX2.mjs → chunk-AQZFOP7S.mjs} +6 -77
  51. package/dist/{chunk-WNLBF77X.cjs → chunk-ATK2R4CH.cjs} +14 -12
  52. package/dist/{chunk-SORB3MAR.cjs → chunk-AWC4VUZL.cjs} +17 -17
  53. package/dist/{chunk-YMCXWPWK.mjs → chunk-BCMSYSN2.mjs} +4 -1
  54. package/dist/{chunk-BZAGKCKB.cjs → chunk-BTAG7LI7.cjs} +2 -2
  55. package/dist/{chunk-I6XDAKWQ.mjs → chunk-BTHHUD7Q.mjs} +14 -0
  56. package/dist/chunk-C4SPBWFM.cjs +26 -0
  57. package/dist/{chunk-JATSG2ZO.mjs → chunk-CLJYVZAD.mjs} +4 -2
  58. package/dist/{chunk-J3LOGE4T.cjs → chunk-DQQOKWYA.cjs} +5 -5
  59. package/dist/{chunk-JLRDISQL.cjs → chunk-DZ4DTRJ5.cjs} +7 -7
  60. package/dist/chunk-E5GNDG5F.mjs +701 -0
  61. package/dist/{chunk-E76XC6ZG.mjs → chunk-EZDQRNQ7.mjs} +2 -2
  62. package/dist/{chunk-TOVMYGYW.mjs → chunk-F2SE2VDO.mjs} +1 -1
  63. package/dist/{chunk-BSPQVJ4A.mjs → chunk-FDR64H6B.mjs} +13 -0
  64. package/dist/{chunk-5OVTOKGH.cjs → chunk-FFFW3OQ7.cjs} +2 -2
  65. package/dist/{chunk-D4JE5NNV.cjs → chunk-FNO7A7CM.cjs} +5 -5
  66. package/dist/chunk-FZ6YYU2W.mjs +65 -0
  67. package/dist/{chunk-PZNCMPJF.cjs → chunk-G26MUMKL.cjs} +14 -8
  68. package/dist/{chunk-IXUY2F5U.mjs → chunk-GCXWJJKH.mjs} +4 -7
  69. package/dist/{chunk-JLCQGPXE.mjs → chunk-GNSDTTWZ.mjs} +50 -61
  70. package/dist/{chunk-D234YWNA.mjs → chunk-GOABMOX3.mjs} +151 -3
  71. package/dist/{chunk-HBTUGXHS.cjs → chunk-HLJ6MBUZ.cjs} +7 -4
  72. package/dist/{chunk-GZYH4OER.mjs → chunk-HR5KPHC2.mjs} +1 -1
  73. package/dist/{chunk-ZCU4NZ3M.cjs → chunk-IE7XCHH3.cjs} +4 -4
  74. package/dist/{chunk-I26CZYPV.cjs → chunk-IHNIDL6H.cjs} +50 -7
  75. package/dist/{chunk-2FQHH5SC.mjs → chunk-IHNMMXHV.mjs} +49 -24
  76. package/dist/{chunk-VHJGDMCG.cjs → chunk-IWZKTWHZ.cjs} +2 -2
  77. package/dist/{chunk-DGXN3L4D.mjs → chunk-JDPAKVS4.mjs} +4 -4
  78. package/dist/chunk-JG6DJF5A.mjs +238 -0
  79. package/dist/{chunk-5TISYEQF.mjs → chunk-JM5XPKWH.mjs} +10 -3
  80. package/dist/{chunk-BJJATPEC.mjs → chunk-KN7K4VQN.mjs} +1 -1
  81. package/dist/{chunk-WPYFSQKK.cjs → chunk-KNBBQHO2.cjs} +15 -1
  82. package/dist/{chunk-XWAWFQFS.cjs → chunk-KXWRO25S.cjs} +7 -4
  83. package/dist/{chunk-QG5HNS7P.mjs → chunk-LHODW25H.mjs} +2 -2
  84. package/dist/{chunk-BXFWA23T.mjs → chunk-LMJ7VRHZ.mjs} +3 -3
  85. package/dist/{chunk-IVLUJUT4.mjs → chunk-LR5QSC2P.mjs} +388 -209
  86. package/dist/chunk-LSKZMJMP.cjs +65 -0
  87. package/dist/{chunk-2N5PX3LS.mjs → chunk-LYV44OIR.mjs} +7 -1
  88. package/dist/{chunk-5MKEDGLD.cjs → chunk-M64YUMA4.cjs} +11 -6
  89. package/dist/{chunk-EXLKRR4U.cjs → chunk-MIDIZJZC.cjs} +12 -12
  90. package/dist/{chunk-ES4B2IXW.cjs → chunk-MOKLYNHV.cjs} +2 -2
  91. package/dist/{chunk-IV6CQY7O.mjs → chunk-MSSFIQGM.mjs} +63 -13
  92. package/dist/{chunk-KH7BN726.cjs → chunk-N4UOK6ZI.cjs} +8 -2
  93. package/dist/{chunk-YMUE7L3D.mjs → chunk-NGVORZVZ.mjs} +1 -1
  94. package/dist/{chunk-JNGIWIY6.mjs → chunk-NPC7VWJE.mjs} +2 -2
  95. package/dist/{chunk-ILWLPEVO.mjs → chunk-NRSN7G7E.mjs} +2 -2
  96. package/dist/{chunk-PQD2AI3B.mjs → chunk-O27L4YAA.mjs} +1 -1
  97. package/dist/{chunk-X5TXZFMN.cjs → chunk-ODBZYBAB.cjs} +1 -1
  98. package/dist/{chunk-NPPL5YDT.cjs → chunk-P64MIF5B.cjs} +154 -6
  99. package/dist/{chunk-JFHKNFEO.cjs → chunk-PQDFUSXD.cjs} +14 -14
  100. package/dist/{chunk-F6XEGFHO.mjs → chunk-PXKIEXZD.mjs} +10 -0
  101. package/dist/{chunk-S5GDHOE4.mjs → chunk-PZNL3WEG.mjs} +48 -5
  102. package/dist/{chunk-FV45CKBC.mjs → chunk-QCFBDFRS.mjs} +1 -1
  103. package/dist/{chunk-75BRBIFP.cjs → chunk-QCVE2OCI.cjs} +5 -8
  104. package/dist/{chunk-6ZCMSZ5U.mjs → chunk-QE6VAKLT.mjs} +1 -1
  105. package/dist/{chunk-75DYEVXI.cjs → chunk-QGYRXFU2.cjs} +9 -9
  106. package/dist/{chunk-CTV2TTNP.cjs → chunk-QJ3J6MZT.cjs} +16 -87
  107. package/dist/{chunk-O6XNAMBV.mjs → chunk-QLQ32WC4.mjs} +8 -3
  108. package/dist/{chunk-GIWC4CFJ.cjs → chunk-SJVKK4JE.cjs} +839 -420
  109. package/dist/{chunk-3FCFQP5V.cjs → chunk-TA5G2HWD.cjs} +21 -21
  110. package/dist/{chunk-Z5HIWVDP.cjs → chunk-TDFPACVX.cjs} +62 -73
  111. package/dist/{chunk-ND224OE2.cjs → chunk-TKSCR644.cjs} +34 -15
  112. package/dist/{chunk-2UABTL3Y.mjs → chunk-U4PTAHW3.mjs} +64 -13
  113. package/dist/{chunk-ZHVYQL3H.cjs → chunk-U74I55WB.cjs} +86 -35
  114. package/dist/chunk-UBO4SGH4.mjs +86 -0
  115. package/dist/{chunk-IQXFRNY2.cjs → chunk-UFDAAQFX.cjs} +2 -2
  116. package/dist/{chunk-NXG66MR7.cjs → chunk-UX5S4JEO.cjs} +40 -4
  117. package/dist/{chunk-5ZSWG4UX.cjs → chunk-UXFQ3UDA.cjs} +14 -1
  118. package/dist/{chunk-L4DVIHOC.mjs → chunk-VCCUOMQN.mjs} +1 -1
  119. package/dist/{chunk-4V7GIE2U.mjs → chunk-VHANUNEG.mjs} +2 -2
  120. package/dist/{chunk-FXUUWYAX.cjs → chunk-VKNHTSAP.cjs} +10 -0
  121. package/dist/{chunk-2AKFKCHA.mjs → chunk-W7LF2J2S.mjs} +1 -1
  122. package/dist/{chunk-MNUGPHLN.mjs → chunk-WNNYOOIB.mjs} +5 -3
  123. package/dist/{chunk-K6V52QMI.mjs → chunk-X242HVD5.mjs} +1 -1
  124. package/dist/{chunk-UJ2C4ICS.cjs → chunk-XJXBIP67.cjs} +4 -4
  125. package/dist/{chunk-S4K74WI4.mjs → chunk-XV5DJTBX.mjs} +539 -121
  126. package/dist/{chunk-6CNX6Q3K.cjs → chunk-XXJU7FCC.cjs} +9 -5
  127. package/dist/{chunk-DYEJQTDN.cjs → chunk-YSCV4SJF.cjs} +4 -4
  128. package/dist/{chunk-2SDO73HK.cjs → chunk-YWN746US.cjs} +64 -14
  129. package/dist/chunk-Z2HLU4IX.cjs +238 -0
  130. package/dist/{chunk-Q5JFU33Q.cjs → chunk-Z2YLTERK.cjs} +4 -4
  131. package/dist/{chunk-XLTV4VOG.cjs → chunk-ZHPHJPQP.cjs} +4 -4
  132. package/dist/{chunk-7CXKSRKL.mjs → chunk-ZKP7C2B6.mjs} +4 -4
  133. package/dist/{chunk-ATXI6LGT.mjs → chunk-ZUSJDQ2Q.mjs} +8 -4
  134. package/dist/{client-plugins-BX2ptm4H.d.mts → client-plugins-CLObcuCq.d.mts} +26 -2
  135. package/dist/{client-plugins-BmxM5KW_.d.ts → client-plugins-DZjHC4Mi.d.ts} +26 -2
  136. package/dist/client-plugins.d.mts +1 -1
  137. package/dist/client-plugins.d.ts +1 -1
  138. package/dist/client.cjs +8 -8
  139. package/dist/client.d.mts +5 -5
  140. package/dist/client.d.ts +5 -5
  141. package/dist/client.mjs +7 -7
  142. package/dist/config.d.mts +1 -1
  143. package/dist/config.d.ts +1 -1
  144. package/dist/{devtools-GGVPZHJX.cjs → devtools-HU6Y2MNV.cjs} +11 -9
  145. package/dist/{devtools-THVNPI2M.mjs → devtools-RNXCTS4R.mjs} +10 -8
  146. package/dist/docs.cjs +13 -11
  147. package/dist/docs.d.mts +5 -0
  148. package/dist/docs.d.ts +5 -0
  149. package/dist/docs.mjs +12 -10
  150. package/dist/environment/vite.cjs +2 -2
  151. package/dist/environment/vite.mjs +1 -1
  152. package/dist/headers.cjs +4 -4
  153. package/dist/headers.mjs +3 -3
  154. package/dist/i18n/client.cjs +14 -13
  155. package/dist/i18n/client.mjs +5 -4
  156. package/dist/i18n/index.cjs +3 -2
  157. package/dist/i18n/index.mjs +2 -1
  158. package/dist/i18n/server.cjs +6 -5
  159. package/dist/i18n/server.mjs +5 -4
  160. package/dist/image/server.cjs +2 -2
  161. package/dist/image/server.mjs +1 -1
  162. package/dist/image/sharp.cjs +9 -9
  163. package/dist/image/sharp.mjs +1 -1
  164. package/dist/index.cjs +67 -55
  165. package/dist/index.d.mts +14 -14
  166. package/dist/index.d.ts +14 -14
  167. package/dist/index.mjs +70 -58
  168. package/dist/integrations.cjs +6 -3
  169. package/dist/integrations.d.mts +1 -1
  170. package/dist/integrations.d.ts +1 -1
  171. package/dist/integrations.mjs +7 -4
  172. package/dist/internal/app-markdown-runtime.cjs +7 -5
  173. package/dist/internal/app-markdown-runtime.d.mts +14 -3
  174. package/dist/internal/app-markdown-runtime.d.ts +14 -3
  175. package/dist/internal/app-markdown-runtime.mjs +6 -4
  176. package/dist/internal/build-runtime.cjs +38 -35
  177. package/dist/internal/build-runtime.d.mts +3 -3
  178. package/dist/internal/build-runtime.d.ts +3 -3
  179. package/dist/internal/build-runtime.mjs +37 -34
  180. package/dist/internal/cli-runtime.cjs +20 -17
  181. package/dist/internal/cli-runtime.mjs +19 -16
  182. package/dist/internal/client-error-overlay.cjs +4 -4
  183. package/dist/internal/client-error-overlay.mjs +1 -1
  184. package/dist/internal/client-runtime.cjs +4 -2
  185. package/dist/internal/client-runtime.d.mts +9 -1
  186. package/dist/internal/client-runtime.d.ts +9 -1
  187. package/dist/internal/client-runtime.mjs +3 -1
  188. package/dist/internal/compression-runtime.d.mts +1 -1
  189. package/dist/internal/compression-runtime.d.ts +1 -1
  190. package/dist/internal/config-runtime.cjs +11 -9
  191. package/dist/internal/config-runtime.d.mts +2 -2
  192. package/dist/internal/config-runtime.d.ts +2 -2
  193. package/dist/internal/config-runtime.mjs +10 -8
  194. package/dist/internal/infra-analytics-runtime.cjs +4 -4
  195. package/dist/internal/infra-analytics-runtime.mjs +2 -2
  196. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  197. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  198. package/dist/internal/production-runtime.cjs +20 -14
  199. package/dist/internal/production-runtime.d.mts +115 -8
  200. package/dist/internal/production-runtime.d.ts +115 -8
  201. package/dist/internal/production-runtime.mjs +19 -13
  202. package/dist/internal/request-cookies.cjs +4 -2
  203. package/dist/internal/request-cookies.d.mts +9 -1
  204. package/dist/internal/request-cookies.d.ts +9 -1
  205. package/dist/internal/request-cookies.mjs +3 -1
  206. package/dist/markdown.cjs +4 -4
  207. package/dist/markdown.d.mts +1 -1
  208. package/dist/markdown.d.ts +1 -1
  209. package/dist/markdown.mjs +3 -3
  210. package/dist/{metadata-DsEaK7mQ.d.mts → metadata-2HSU2i_w.d.mts} +1 -1
  211. package/dist/{metadata-fwZ3gfG6.d.ts → metadata-Cjs8JMRM.d.ts} +1 -1
  212. package/dist/middleware.cjs +18 -8
  213. package/dist/middleware.d.mts +24 -5
  214. package/dist/middleware.d.ts +24 -5
  215. package/dist/middleware.mjs +18 -8
  216. package/dist/navigation.cjs +6 -6
  217. package/dist/navigation.d.mts +4 -4
  218. package/dist/navigation.d.ts +4 -4
  219. package/dist/navigation.mjs +5 -5
  220. package/dist/{nitro-NAKCRVHX.mjs → nitro-4XGPNIK4.mjs} +3 -3
  221. package/dist/{nitro-VYDZGYFY.cjs → nitro-HSAQFXSS.cjs} +4 -4
  222. package/dist/plugin.cjs +33 -30
  223. package/dist/plugin.d.mts +1 -1
  224. package/dist/plugin.d.ts +1 -1
  225. package/dist/plugin.mjs +32 -29
  226. package/dist/{production-runtime-DNkpFnmg.d.ts → production-runtime-BU5ETAK9.d.ts} +8 -1
  227. package/dist/{production-runtime-Baqgwtvc.d.mts → production-runtime-CysZl3EV.d.mts} +8 -1
  228. package/dist/query/client.cjs +7 -7
  229. package/dist/query/client.mjs +3 -3
  230. package/dist/{render-plan-DhwQnmmX.d.mts → render-plan-CKr4ltOd.d.mts} +1 -1
  231. package/dist/{render-plan-rkIK9wd9.d.ts → render-plan-D72O1qm4.d.ts} +1 -1
  232. package/dist/renderer-client.cjs +39 -19
  233. package/dist/renderer-client.d.mts +3 -3
  234. package/dist/renderer-client.d.ts +3 -3
  235. package/dist/renderer-client.mjs +28 -8
  236. package/dist/{request-CFy1BltJ.d.mts → request-Be83WafN.d.mts} +7 -2
  237. package/dist/{request-BcY4RYPC.d.ts → request-DbyOYI2j.d.ts} +7 -2
  238. package/dist/request.cjs +2 -2
  239. package/dist/request.d.mts +2 -2
  240. package/dist/request.d.ts +2 -2
  241. package/dist/request.mjs +1 -1
  242. package/dist/{route-rendering-BkS0TBlB.d.mts → route-rendering-BG56SzvJ.d.mts} +1 -1
  243. package/dist/{route-rendering-D4XpMjam.d.ts → route-rendering-CtVMpV-k.d.ts} +1 -1
  244. package/dist/{router-C4zPlC3V.d.mts → router-ALUvm8gC.d.mts} +1 -1
  245. package/dist/{router-Cq7BcZxg.d.ts → router-D94-SDlW.d.ts} +1 -1
  246. package/dist/routes.cjs +3 -3
  247. package/dist/routes.d.mts +1 -1
  248. package/dist/routes.d.ts +1 -1
  249. package/dist/routes.mjs +2 -2
  250. package/dist/server-fn.cjs +3 -3
  251. package/dist/server-fn.mjs +2 -2
  252. package/dist/server-plugins.cjs +4 -4
  253. package/dist/server-plugins.d.mts +2 -2
  254. package/dist/server-plugins.d.ts +2 -2
  255. package/dist/server-plugins.mjs +3 -3
  256. package/dist/server-query-client.cjs +3 -3
  257. package/dist/server-query-client.mjs +2 -2
  258. package/dist/server-query.cjs +4 -4
  259. package/dist/server-query.mjs +3 -3
  260. package/dist/server.cjs +60 -57
  261. package/dist/server.d.mts +7 -7
  262. package/dist/server.d.ts +7 -7
  263. package/dist/server.mjs +37 -34
  264. package/dist/{spa-router-B1HI3X9k.d.ts → spa-router-CxK3USIz.d.ts} +2 -2
  265. package/dist/{spa-router-DzPZH-AO.d.mts → spa-router-DbxNRKOB.d.mts} +2 -2
  266. package/dist/testing.cjs +19 -17
  267. package/dist/testing.d.mts +1 -1
  268. package/dist/testing.d.ts +1 -1
  269. package/dist/testing.mjs +16 -14
  270. package/dist/theme/server.cjs +4 -3
  271. package/dist/theme/server.mjs +3 -2
  272. package/dist/{utils-DMD1Hzta.d.ts → utils-311Y8eoK.d.ts} +1 -1
  273. package/dist/{utils-CEBktlBG.d.mts → utils-4wVRcpOw.d.mts} +1 -1
  274. package/dist/version.cjs +2 -2
  275. package/dist/version.mjs +1 -1
  276. package/dist/vite.cjs +33 -30
  277. package/dist/vite.d.mts +1 -1
  278. package/dist/vite.d.ts +1 -1
  279. package/dist/vite.mjs +32 -29
  280. package/package.json +2 -2
  281. package/dist/chunk-22GUSVNJ.cjs +0 -351
  282. package/dist/chunk-SWN467MP.cjs +0 -18
  283. package/dist/chunk-XGC343EY.cjs +0 -443
  284. package/dist/chunk-ZSH2Y4LN.mjs +0 -351
  285. /package/dist/{chunk-SUIBNSNO.cjs → chunk-SJNMVDDF.cjs} +0 -0
  286. /package/dist/{chunk-LNZ7JZUS.mjs → chunk-UDNPLXW7.mjs} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  applyFarmCacheInvalidationTargets
3
- } from "./chunk-IV6CQY7O.mjs";
3
+ } from "./chunk-MSSFIQGM.mjs";
4
4
  import {
5
5
  isMultipartSchema
6
6
  } from "./chunk-EMLAPBEM.mjs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createFarmMarkdownRouteModule
3
- } from "./chunk-BZ3CHOFX.mjs";
3
+ } from "./chunk-AGC75XAE.mjs";
4
4
  import {
5
5
  __name
6
6
  } from "./chunk-LPEX4YW6.mjs";
@@ -3,6 +3,13 @@ import {
3
3
  } from "./chunk-LPEX4YW6.mjs";
4
4
 
5
5
  // src/client/navigation-url.ts
6
+ var FARM_NAVIGATION_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:", "mailto:", "tel:"]);
7
+ function isFarmBlockedNavigationURL(url) {
8
+ if (FARM_NAVIGATION_PROTOCOLS.has(url.protocol)) return false;
9
+ console.error(`[Farm.js] Blocked navigation to a ${url.protocol} URL as a security precaution.`);
10
+ return true;
11
+ }
12
+ __name(isFarmBlockedNavigationURL, "isFarmBlockedNavigationURL");
6
13
  function isFarmExternalNavigationURL(url, currentOrigin) {
7
14
  return url.protocol !== "http:" && url.protocol !== "https:" || url.origin !== currentOrigin;
8
15
  }
@@ -13,6 +20,7 @@ function resolveFarmNavigationURL(href, documentUrl) {
13
20
  __name(resolveFarmNavigationURL, "resolveFarmNavigationURL");
14
21
 
15
22
  export {
23
+ isFarmBlockedNavigationURL,
16
24
  isFarmExternalNavigationURL,
17
25
  resolveFarmNavigationURL
18
26
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isEndpointFailure,
3
3
  resolvePluginRoutes
4
- } from "./chunk-4IEPYMHF.mjs";
4
+ } from "./chunk-3UEVPCGW.mjs";
5
5
  import {
6
6
  registerAPIRouteShape
7
7
  } from "./chunk-W3B4PKAW.mjs";
@@ -9,13 +9,16 @@ import {
9
9
  omitFarmResponseBody
10
10
  } from "./chunk-5WI2S4CO.mjs";
11
11
  import {
12
- resolveFarmAPICanonicalPathname
13
- } from "./chunk-I6XDAKWQ.mjs";
12
+ validateIntegrationRequestOrigin
13
+ } from "./chunk-FZ6YYU2W.mjs";
14
14
  import {
15
15
  DEFAULT_FARM_SERVER_BODY_SIZE_LIMIT,
16
16
  bufferFarmRequestBody,
17
17
  createFarmRequestBodyErrorResponse
18
18
  } from "./chunk-XF7Q24PF.mjs";
19
+ import {
20
+ resolveFarmAPICanonicalPathname
21
+ } from "./chunk-BTHHUD7Q.mjs";
19
22
  import {
20
23
  createStaticAPIRouteMatcher,
21
24
  matchAPIRoute
@@ -31,7 +34,7 @@ import {
31
34
  } from "./chunk-4SIYUGRY.mjs";
32
35
  import {
33
36
  _runWithCurrentRequest
34
- } from "./chunk-BSPQVJ4A.mjs";
37
+ } from "./chunk-FDR64H6B.mjs";
35
38
  import {
36
39
  __name
37
40
  } from "./chunk-LPEX4YW6.mjs";
@@ -388,6 +391,9 @@ async function readRequestBody(request) {
388
391
  }
389
392
  if (!text) return { body: void 0 };
390
393
  if (contentType === void 0) {
394
+ if (!validateIntegrationRequestOrigin(request, { requireOriginMetadata: false }).ok) {
395
+ return { body: void 0 };
396
+ }
391
397
  try {
392
398
  return { body: JSON.parse(text) };
393
399
  } catch {
@@ -7,10 +7,10 @@ import {
7
7
  notifyHistoryChange,
8
8
  readPageState,
9
9
  subscribeHistoryChange
10
- } from "./chunk-JATSG2ZO.mjs";
10
+ } from "./chunk-CLJYVZAD.mjs";
11
11
  import {
12
12
  getFarmI18nClientState
13
- } from "./chunk-TOVMYGYW.mjs";
13
+ } from "./chunk-F2SE2VDO.mjs";
14
14
  import {
15
15
  _resolveCurrentRequest
16
16
  } from "./chunk-IZY3V5XW.mjs";
@@ -196,7 +196,7 @@ function readRouterState(basePath, routeMatcher) {
196
196
  }
197
197
  const pathname = normalizeClientPathname(url.pathname, basePath);
198
198
  const i18n = getFarmI18nClientState();
199
- const routePathname = i18n ? stripFarmLocaleFromPathname(pathname, i18n) : pathname;
199
+ const routePathname = i18n ? stripFarmLocaleFromPathname(pathname, { ...i18n, basePath: "/" }) : pathname;
200
200
  return {
201
201
  pathname,
202
202
  searchParams: url.searchParams,
@@ -12,7 +12,7 @@ var _chunkDVM4FKZLcjs = require('./chunk-DVM4FKZL.cjs');
12
12
  var _chunkOX6O6WVAcjs = require('./chunk-OX6O6WVA.cjs');
13
13
 
14
14
 
15
- var _chunk5ZSWG4UXcjs = require('./chunk-5ZSWG4UX.cjs');
15
+ var _chunkUXFQ3UDAcjs = require('./chunk-UXFQ3UDA.cjs');
16
16
 
17
17
 
18
18
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -41,7 +41,7 @@ function createRedirectsPlugin(redirects, {
41
41
  if (overrideBeforeRequest) {
42
42
  await overrideBeforeRequest(req, res, context);
43
43
  }
44
- const url = _chunk5ZSWG4UXcjs.resolveFarmRequestURL.call(void 0, req);
44
+ const url = _chunkUXFQ3UDAcjs.resolveFarmRequestURL.call(void 0, req);
45
45
  const routePath = _chunkDVM4FKZLcjs.resolveConfigRoutePathname.call(void 0, url.pathname, i18n);
46
46
  const pathname = routePath.pathname;
47
47
  for (const { redirect, pattern } of compiledRedirects) {
@@ -153,7 +153,7 @@ function createHeadersPlugin(headers, {
153
153
  if (overrideBeforeRequest) {
154
154
  await overrideBeforeRequest(req, res, context);
155
155
  }
156
- const url = _chunk5ZSWG4UXcjs.resolveFarmRequestURL.call(void 0, req);
156
+ const url = _chunkUXFQ3UDAcjs.resolveFarmRequestURL.call(void 0, req);
157
157
  const pathname = _chunkDVM4FKZLcjs.resolveConfigRoutePathname.call(void 0, url.pathname, i18n).pathname;
158
158
  const matchedHeaders = compiledHeaders.filter(({ pattern }) => pattern.regex.test(pathname)).map(({ config }) => config.headers);
159
159
  applyResponseHeaders(res, matchedHeaders);
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunkZHVYQL3Hcjs = require('./chunk-ZHVYQL3H.cjs');
3
+ var _chunkU74I55WBcjs = require('./chunk-U74I55WB.cjs');
4
4
 
5
5
 
6
- var _chunkHBTUGXHScjs = require('./chunk-HBTUGXHS.cjs');
6
+ var _chunkHLJ6MBUZcjs = require('./chunk-HLJ6MBUZ.cjs');
7
7
 
8
8
 
9
9
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -410,16 +410,18 @@ function farmMiddlewarePlugin(options = {}) {
410
410
  let discoveryComplete = false;
411
411
  let discoveryPromise = null;
412
412
  const discover = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async (server) => {
413
- const i18n = _chunkHBTUGXHScjs.resolveFarmI18nConfig.call(void 0, false, {
413
+ const i18n = _chunkHLJ6MBUZcjs.resolveFarmI18nConfig.call(void 0, false, {
414
414
  root: server.config.root,
415
415
  mode: server.config.mode === "production" ? "production" : "development",
416
416
  basePath: _nullishCoalesce(options.basePath, () => ( "/"))
417
417
  });
418
- manager = new (0, _chunkZHVYQL3Hcjs.MiddlewareManager)(
418
+ manager = new (0, _chunkU74I55WBcjs.MiddlewareManager)(
419
419
  getMiddlewareAppDirectory(server.config.root, srcDir),
420
420
  server,
421
+ options.middleware,
422
+ i18n,
421
423
  void 0,
422
- i18n
424
+ options.apiBasePath
423
425
  );
424
426
  await manager.discover();
425
427
  discoveryComplete = true;
@@ -27,7 +27,7 @@ var _chunkE2ROOWQCcjs = require('./chunk-E2ROOWQC.cjs');
27
27
  var _chunkJSROZYYOcjs = require('./chunk-JSROZYYO.cjs');
28
28
 
29
29
 
30
- var _chunkZ5HIWVDPcjs = require('./chunk-Z5HIWVDP.cjs');
30
+ var _chunkTDFPACVXcjs = require('./chunk-TDFPACVX.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 = _chunkZ5HIWVDPcjs.getIntegrationSchemas.call(void 0, config.integrations);
122
+ const integrationSchemas = _chunkTDFPACVXcjs.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,13 +1,18 @@
1
1
  import {
2
- compileMiddlewareConfig,
3
- compileMiddlewareRoute,
4
- matchesMiddlewareConfig,
5
- matchesMiddlewareRoute,
2
+ isRouteSlotSegment
3
+ } from "./chunk-UBO4SGH4.mjs";
4
+ import {
6
5
  normalizeMiddlewareModule,
7
6
  parseMiddlewareCookieHeader,
8
7
  serializeMiddlewareCookie,
9
8
  serializeMiddlewareCookieDeletion
10
- } from "./chunk-NRVGEI5I.mjs";
9
+ } from "./chunk-2NNMOPDN.mjs";
10
+ import {
11
+ compileMiddlewareConfig,
12
+ compileMiddlewareRoute,
13
+ matchesMiddlewareConfigAt,
14
+ matchesMiddlewareRouteAt
15
+ } from "./chunk-JG6DJF5A.mjs";
11
16
  import {
12
17
  createCliColors
13
18
  } from "./chunk-I2BHUNBU.mjs";
@@ -18,6 +23,9 @@ import {
18
23
  import {
19
24
  logger
20
25
  } from "./chunk-KI3MESHB.mjs";
26
+ import {
27
+ createFarmAPIMiddlewarePathnames
28
+ } from "./chunk-BTHHUD7Q.mjs";
21
29
  import {
22
30
  emitFarmEvent
23
31
  } from "./chunk-FUZEBRP3.mjs";
@@ -31,7 +39,7 @@ import {
31
39
  } from "./chunk-CBBLJMR5.mjs";
32
40
  import {
33
41
  resolveFarmRequestURL
34
- } from "./chunk-BSPQVJ4A.mjs";
42
+ } from "./chunk-FDR64H6B.mjs";
35
43
  import {
36
44
  stripFarmLocaleFromPathname
37
45
  } from "./chunk-L3KT7IXV.mjs";
@@ -185,12 +193,24 @@ import * as path from "path";
185
193
 
186
194
  // src/middleware/path.ts
187
195
  function appendMiddlewareRoutePath(routePath, directoryName) {
188
- if (directoryName.startsWith("(") && directoryName.endsWith(")")) {
196
+ if (directoryName.startsWith("(") && directoryName.endsWith(")") || isRouteSlotSegment(directoryName)) {
189
197
  return routePath;
190
198
  }
191
199
  return routePath === "/" ? `/${directoryName}` : `${routePath}/${directoryName}`;
192
200
  }
193
201
  __name(appendMiddlewareRoutePath, "appendMiddlewareRoutePath");
202
+ function appendMiddlewareDirectory(directory, directoryName) {
203
+ return directory === "" ? directoryName : `${directory}/${directoryName}`;
204
+ }
205
+ __name(appendMiddlewareDirectory, "appendMiddlewareDirectory");
206
+ function countSegments(value) {
207
+ return value.split("/").filter(Boolean).length;
208
+ }
209
+ __name(countSegments, "countSegments");
210
+ function compareMiddlewareRouteLocations(left, right) {
211
+ return countSegments(left.path) - countSegments(right.path) || left.path.localeCompare(right.path) || countSegments(left.directory) - countSegments(right.directory) || left.directory.localeCompare(right.directory);
212
+ }
213
+ __name(compareMiddlewareRouteLocations, "compareMiddlewareRouteLocations");
194
214
 
195
215
  // src/middleware/manager.ts
196
216
  function isMiddlewareResponse(value) {
@@ -198,13 +218,14 @@ function isMiddlewareResponse(value) {
198
218
  }
199
219
  __name(isMiddlewareResponse, "isMiddlewareResponse");
200
220
  var _MiddlewareManager = class _MiddlewareManager {
201
- constructor(appDir, viteServer, config, i18n, server) {
221
+ constructor(appDir, viteServer, config, i18n, server, apiBasePath) {
202
222
  this.middleware = [];
203
223
  this.configMiddleware = [];
204
224
  this.appDirs = Array.isArray(appDir) ? [...appDir] : [appDir];
205
225
  this.viteServer = viteServer;
206
226
  this.i18n = i18n;
207
227
  this.server = server;
228
+ this.toMiddlewarePathnames = createFarmAPIMiddlewarePathnames(apiBasePath);
208
229
  this.configure(config);
209
230
  }
210
231
  configure(config) {
@@ -233,21 +254,16 @@ var _MiddlewareManager = class _MiddlewareManager {
233
254
  * Discover all middleware.ts files
234
255
  */
235
256
  async discover() {
236
- const middlewareByPath = /* @__PURE__ */ new Map();
257
+ const middlewareByDirectory = /* @__PURE__ */ new Map();
237
258
  for (const appDir of this.appDirs) {
238
259
  const discovered = [];
239
- await this.discoverInDirectory(appDir, "/", discovered);
240
- for (const middleware of discovered) {
241
- compileMiddlewareRoute(middleware);
242
- middlewareByPath.set(middleware.path, middleware);
260
+ await this.discoverInDirectory(appDir, "/", "", discovered);
261
+ for (const entry of discovered) {
262
+ compileMiddlewareRoute(entry.middleware);
263
+ middlewareByDirectory.set(entry.location.directory, entry);
243
264
  }
244
265
  }
245
- this.middleware = Array.from(middlewareByPath.values());
246
- this.middleware.sort((a, b) => {
247
- const depthA = a.path.split("/").filter(Boolean).length;
248
- const depthB = b.path.split("/").filter(Boolean).length;
249
- return depthA - depthB;
250
- });
266
+ this.middleware = Array.from(middlewareByDirectory.values()).sort((left, right) => compareMiddlewareRouteLocations(left.location, right.location)).map((entry) => entry.middleware);
251
267
  if (process.env.FARM_VERBOSE && this.middleware.length > 0) {
252
268
  logger.success(`Discovered ${this.middleware.length} middleware files`);
253
269
  for (const mw of this.middleware) {
@@ -258,7 +274,7 @@ var _MiddlewareManager = class _MiddlewareManager {
258
274
  /**
259
275
  * Recursively discover middleware files
260
276
  */
261
- async discoverInDirectory(dir, routePath, discovered) {
277
+ async discoverInDirectory(dir, routePath, directory, discovered) {
262
278
  if (!fs.existsSync(dir)) {
263
279
  return;
264
280
  }
@@ -266,15 +282,18 @@ var _MiddlewareManager = class _MiddlewareManager {
266
282
  if (middlewareFile) {
267
283
  const middleware = await this.loadMiddleware(middlewareFile, routePath);
268
284
  if (middleware) {
269
- discovered.push(middleware);
285
+ discovered.push({ location: { path: routePath, directory }, middleware });
270
286
  }
271
287
  }
272
288
  const entries = fs.readdirSync(dir, { withFileTypes: true });
273
289
  for (const entry of entries) {
274
290
  if (entry.isDirectory() && !entry.name.startsWith(".") && !entry.name.startsWith("_")) {
275
- const subPath = path.join(dir, entry.name);
276
- const subRoutePath = appendMiddlewareRoutePath(routePath, entry.name);
277
- await this.discoverInDirectory(subPath, subRoutePath, discovered);
291
+ await this.discoverInDirectory(
292
+ path.join(dir, entry.name),
293
+ appendMiddlewareRoutePath(routePath, entry.name),
294
+ appendMiddlewareDirectory(directory, entry.name),
295
+ discovered
296
+ );
278
297
  }
279
298
  }
280
299
  }
@@ -329,7 +348,9 @@ var _MiddlewareManager = class _MiddlewareManager {
329
348
  async execute(req, res) {
330
349
  const url = resolveFarmRequestURL(req, { trustProxy: this.server?.trustProxy });
331
350
  const pathname = url.pathname;
332
- const routePathname = this.i18n?.enabled ? stripFarmLocaleFromPathname(pathname, this.i18n) : stripFarmBasePath(pathname, this.i18n?.basePath ?? "/");
351
+ const toRoutePathname = /* @__PURE__ */ __name((value) => this.i18n?.enabled ? stripFarmLocaleFromPathname(value, this.i18n) : stripFarmBasePath(value, this.i18n?.basePath ?? "/"), "toRoutePathname");
352
+ const routePathname = toRoutePathname(pathname);
353
+ const toMiddlewarePathnames = this.toMiddlewarePathnames;
333
354
  const method = req.method || "GET";
334
355
  const startTime = Date.now();
335
356
  let parentData;
@@ -345,7 +366,10 @@ var _MiddlewareManager = class _MiddlewareManager {
345
366
  }
346
367
  const applicable = [
347
368
  ...this.configMiddleware.map((mw) => ({ mw, routeMatch: { matched: true } })),
348
- ...this.middleware.map((mw) => ({ mw, routeMatch: matchesMiddlewareRoute(routePathname, mw) })).filter((entry) => entry.routeMatch.matched)
369
+ ...this.middleware.map((mw) => ({
370
+ mw,
371
+ routeMatch: matchesMiddlewareRouteAt(toMiddlewarePathnames(routePathname), mw)
372
+ })).filter((entry) => entry.routeMatch.matched)
349
373
  ];
350
374
  if (applicable.length === 0) {
351
375
  return false;
@@ -360,12 +384,37 @@ var _MiddlewareManager = class _MiddlewareManager {
360
384
  pc.dim(` (${(Date.now() - startTime).toFixed(2)}ms)`)
361
385
  ].join(" ");
362
386
  console.log(log);
363
- for (const entry of applicable) {
364
- const { mw, routeMatch } = entry;
365
- const configMatch = mw.config ? this.matchesConfig(routePathname, mw.config, ctx) : { matched: true };
387
+ const ran = /* @__PURE__ */ new Set();
388
+ const allMiddleware = [...this.configMiddleware, ...this.middleware];
389
+ const globalConfig = this.globalConfig;
390
+ const trustProxy = this.server?.trustProxy;
391
+ function* applicableMiddleware() {
392
+ let passPathname = routePathname;
393
+ let pass = applicable;
394
+ for (; ; ) {
395
+ for (const entry of pass) yield { ...entry, pathname: passPathname };
396
+ const rewrittenPathname = toRoutePathname(
397
+ resolveFarmRequestURL(req, { trustProxy }).pathname
398
+ );
399
+ if (rewrittenPathname === passPathname) return;
400
+ passPathname = rewrittenPathname;
401
+ const passPathnames = toMiddlewarePathnames(passPathname);
402
+ if (globalConfig && !matchesMiddlewareConfigAt(passPathnames, globalConfig, ctx).matched) {
403
+ return;
404
+ }
405
+ pass = allMiddleware.filter((mw) => !ran.has(mw)).map((mw) => ({
406
+ mw,
407
+ routeMatch: mw.source === "config" ? { matched: true } : matchesMiddlewareRouteAt(passPathnames, mw)
408
+ })).filter((entry) => entry.routeMatch.matched);
409
+ }
410
+ }
411
+ __name(applicableMiddleware, "applicableMiddleware");
412
+ for (const { mw, routeMatch, pathname: passPathname } of applicableMiddleware()) {
413
+ const configMatch = mw.config ? this.matchesConfig(passPathname, mw.config, ctx) : { matched: true };
366
414
  if (!configMatch.matched) {
367
415
  continue;
368
416
  }
417
+ ran.add(mw);
369
418
  if (routeMatch.params) {
370
419
  ctx.params = { ...ctx.params, ...routeMatch.params };
371
420
  }
@@ -466,7 +515,7 @@ var _MiddlewareManager = class _MiddlewareManager {
466
515
  * Check if pathname matches middleware config
467
516
  */
468
517
  matchesConfig(pathname, config, ctx) {
469
- return matchesMiddlewareConfig(pathname, config, ctx);
518
+ return matchesMiddlewareConfigAt(this.toMiddlewarePathnames(pathname), config, ctx);
470
519
  }
471
520
  /**
472
521
  * Reload middleware (for HMR)
@@ -501,5 +550,7 @@ var MiddlewareManager = _MiddlewareManager;
501
550
  export {
502
551
  createContext,
503
552
  appendMiddlewareRoutePath,
553
+ appendMiddlewareDirectory,
554
+ compareMiddlewareRouteLocations,
504
555
  MiddlewareManager
505
556
  };
@@ -3,14 +3,14 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkQ5JFU33Qcjs = require('./chunk-Q5JFU33Q.cjs');
6
+ var _chunkZ2YLTERKcjs = require('./chunk-Z2YLTERK.cjs');
7
7
 
8
8
 
9
9
 
10
10
  var _chunkIK6LVLKCcjs = require('./chunk-IK6LVLKC.cjs');
11
11
 
12
12
 
13
- var _chunkJFHKNFEOcjs = require('./chunk-JFHKNFEO.cjs');
13
+ var _chunkPQDFUSXDcjs = require('./chunk-PQDFUSXD.cjs');
14
14
 
15
15
 
16
16
  var _chunk75WGQVQAcjs = require('./chunk-75WGQVQA.cjs');
@@ -39,7 +39,7 @@ function createFarmDocsAdapterRuntimeConfig(docs, options, moduleConfig) {
39
39
  ...moduleConfig ? { ...moduleConfig, ...docs.configOverrides } : _nullishCoalesce(docs.runtimeConfig, () => ( docs.config)),
40
40
  entry: docs.config.entry || docs.entry.replace(/^\/+|\/+$/g, "") || "docs",
41
41
  docsPath: docs.entry,
42
- contentDir: _chunkQ5JFU33Qcjs.resolveFarmDocsContentDir.call(void 0, docs, options)
42
+ contentDir: _chunkZ2YLTERKcjs.resolveFarmDocsContentDir.call(void 0, docs, options)
43
43
  };
44
44
  }
45
45
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmDocsAdapterRuntimeConfig, "createFarmDocsAdapterRuntimeConfig");
@@ -124,6 +124,7 @@ async function createFarmDocsAdapterHandler(docs, options) {
124
124
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmDocsAdapterHandler, "createFarmDocsAdapterHandler");
125
125
 
126
126
  // src/docs/api.ts
127
+
127
128
  function isRecord(value) {
128
129
  return typeof value === "object" && value !== null && !Array.isArray(value);
129
130
  }
@@ -274,25 +275,25 @@ function getDocsDescription(docs) {
274
275
  }
275
276
  _chunkS3JO3N4Hcjs.__name.call(void 0, getDocsDescription, "getDocsDescription");
276
277
  function getLoadedDocsPages(context) {
277
- return _chunkQ5JFU33Qcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs).map((page) => _chunkQ5JFU33Qcjs.loadFarmDocsPage.call(void 0, context.contentDir, context.docs, page.slug)).filter((page) => Boolean(page));
278
+ return _chunkZ2YLTERKcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs).map((page) => _chunkZ2YLTERKcjs.loadFarmDocsPage.call(void 0, context.contentDir, context.docs, page.slug)).filter((page) => Boolean(page));
278
279
  }
279
280
  _chunkS3JO3N4Hcjs.__name.call(void 0, getLoadedDocsPages, "getLoadedDocsPages");
280
281
  function toDocsSourcePage(page) {
281
282
  return {
282
- ..._chunkQ5JFU33Qcjs.toFarmDocsMarkdownPage.call(void 0, page),
283
+ ..._chunkZ2YLTERKcjs.toFarmDocsMarkdownPage.call(void 0, page),
283
284
  sourcePath: page.sourcePath
284
285
  };
285
286
  }
286
287
  _chunkS3JO3N4Hcjs.__name.call(void 0, toDocsSourcePage, "toDocsSourcePage");
287
288
  function toDocsSitemapPage(page) {
288
289
  return {
289
- ..._chunkQ5JFU33Qcjs.toFarmDocsMarkdownPage.call(void 0, page),
290
+ ..._chunkZ2YLTERKcjs.toFarmDocsMarkdownPage.call(void 0, page),
290
291
  sourcePath: page.sourcePath
291
292
  };
292
293
  }
293
294
  _chunkS3JO3N4Hcjs.__name.call(void 0, toDocsSitemapPage, "toDocsSitemapPage");
294
295
  function toDocsLlmsPage(page) {
295
- return _chunkQ5JFU33Qcjs.toFarmDocsMarkdownPage.call(void 0, page);
296
+ return _chunkZ2YLTERKcjs.toFarmDocsMarkdownPage.call(void 0, page);
296
297
  }
297
298
  _chunkS3JO3N4Hcjs.__name.call(void 0, toDocsLlmsPage, "toDocsLlmsPage");
298
299
  function getDocsLlmsOptions(context, request) {
@@ -386,7 +387,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, renderAgentsDocument, "renderAgentsDocumen
386
387
  function buildAgentSpec(context, request) {
387
388
  const url = new URL(request.url);
388
389
  const origin = url.origin;
389
- const pages = _chunkQ5JFU33Qcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs);
390
+ const pages = _chunkZ2YLTERKcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs);
390
391
  const spec = _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).buildDocsAgentDiscoverySpec(getDocsDiscoveryOptions(context, request));
391
392
  const title = getDocsTitle(context.docs);
392
393
  return {
@@ -423,12 +424,66 @@ function buildAgentSpec(context, request) {
423
424
  robots: spec.capabilities.robots,
424
425
  post: false
425
426
  },
426
- pages
427
+ // Same root-relative source paths the precompiled runtime serves.
428
+ pages: pages.map(({ sourcePath, ...page }) => {
429
+ const publicSourcePath = toPublicDocsPath(sourcePath, context.root);
430
+ return publicSourcePath ? { ...page, sourcePath: `./${publicSourcePath}` } : page;
431
+ })
427
432
  };
428
433
  }
429
434
  _chunkS3JO3N4Hcjs.__name.call(void 0, buildAgentSpec, "buildAgentSpec");
435
+ var REDACTED_DOCS_CONFIG_VALUE = "[redacted]";
436
+ function isSecretDocsConfigKey(key) {
437
+ const normalized = key.replace(/[-_]/g, "").toLowerCase();
438
+ if (!normalized || normalized.endsWith("env")) return false;
439
+ return /apikey|token|secret|password|authorization|credential/.test(normalized);
440
+ }
441
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isSecretDocsConfigKey, "isSecretDocsConfigKey");
442
+ function redactDocsConfigValue(value, key, inHeaders) {
443
+ if (Array.isArray(value)) {
444
+ return value.map((entry) => redactDocsConfigValue(entry, key, inHeaders));
445
+ }
446
+ if (isRecord(value) && !(value instanceof Date) && !(value instanceof URL)) {
447
+ const headers = inHeaders || key.toLowerCase() === "headers";
448
+ return Object.fromEntries(
449
+ Object.entries(value).map(([childKey, child]) => [
450
+ childKey,
451
+ redactDocsConfigValue(child, childKey, headers)
452
+ ])
453
+ );
454
+ }
455
+ if (value === null || value === void 0 || typeof value === "function") return value;
456
+ return inHeaders || isSecretDocsConfigKey(key) ? REDACTED_DOCS_CONFIG_VALUE : value;
457
+ }
458
+ _chunkS3JO3N4Hcjs.__name.call(void 0, redactDocsConfigValue, "redactDocsConfigValue");
459
+ function toPublicDocsPath(value, root) {
460
+ if (typeof value !== "string" || !value) return void 0;
461
+ if (!_path2.default.isAbsolute(value)) return value;
462
+ const relative = _path2.default.relative(root, value);
463
+ if (_path2.default.isAbsolute(relative) || relative === ".." || relative.startsWith(`..${_path2.default.sep}`)) {
464
+ return void 0;
465
+ }
466
+ return relative.split(_path2.default.sep).join("/") || ".";
467
+ }
468
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toPublicDocsPath, "toPublicDocsPath");
469
+ function buildPublicConfig(context) {
470
+ const redacted = redactDocsConfigValue(context.docs.config, "", false);
471
+ const contentDir = toPublicDocsPath(redacted.contentDir, context.root);
472
+ const publicInput = { ...redacted, contentDir };
473
+ const map = _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).buildDocsConfigMap(publicInput, {
474
+ file: toPublicDocsPath(context.docs.configPath, context.root) || "farm.config.ts"
475
+ });
476
+ const config = Object.fromEntries(Object.keys(map.values).map((key) => [key, publicInput[key]]));
477
+ return {
478
+ entry: context.docs.entry,
479
+ contentDir: toPublicDocsPath(context.docs.contentDir, context.root) || contentDir || null,
480
+ config,
481
+ map
482
+ };
483
+ }
484
+ _chunkS3JO3N4Hcjs.__name.call(void 0, buildPublicConfig, "buildPublicConfig");
430
485
  function buildDiagnostics(context) {
431
- const pages = _chunkQ5JFU33Qcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs);
486
+ const pages = _chunkZ2YLTERKcjs.discoverFarmDocsPages.call(void 0, context.contentDir, context.docs);
432
487
  const diagnostics = _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).buildDocsDiagnostics(context.docs.config, {
433
488
  entry: context.docs.entry,
434
489
  mcp: {
@@ -500,12 +555,13 @@ async function resolveAPIContext(options) {
500
555
  config: options.config,
501
556
  configPath: options.configPath
502
557
  }));
503
- const docs = isResolvedDocsConfig(docsInput) ? docsInput : await _chunkJFHKNFEOcjs.resolveDocsConfig.call(void 0, docsInput, { root, srcDir });
558
+ const docs = isResolvedDocsConfig(docsInput) ? docsInput : await _chunkPQDFUSXDcjs.resolveDocsConfig.call(void 0, docsInput, { root, srcDir });
504
559
  return {
505
560
  root,
506
561
  srcDir,
507
562
  docs,
508
- contentDir: _chunkQ5JFU33Qcjs.resolveFarmDocsContentDir.call(void 0, docs, { root, srcDir })
563
+ contentDir: _chunkZ2YLTERKcjs.resolveFarmDocsContentDir.call(void 0, docs, { root, srcDir }),
564
+ diagnostics: options.diagnostics === true
509
565
  };
510
566
  }
511
567
  _chunkS3JO3N4Hcjs.__name.call(void 0, resolveAPIContext, "resolveAPIContext");
@@ -517,21 +573,16 @@ async function handleDocsAPIGet(request, context) {
517
573
  const format = getDocsAPIFormat(request);
518
574
  const pathTarget = getDocsAPIPathTarget(request);
519
575
  if (format === "config" || format === "docs-config") {
520
- return json({
521
- entry: context.docs.entry,
522
- contentDir: context.docs.contentDir || context.docs.config.contentDir || null,
523
- config: context.docs.config,
524
- map: _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).buildDocsConfigMap(context.docs.config, {
525
- file: context.docs.configPath || "farm.config.ts"
526
- })
527
- });
576
+ return json(buildPublicConfig(context));
528
577
  }
529
578
  if (format === "skill")
530
579
  return text(renderSkillDocument(context, request), "text/markdown; charset=utf-8");
531
580
  if (format === "agents")
532
581
  return text(renderAgentsDocument(context, request), "text/markdown; charset=utf-8");
533
582
  if (format === "agent" || format === "agent-spec") return json(buildAgentSpec(context, request));
534
- if (format === "diagnostics") return json(buildDiagnostics(context));
583
+ if (format === "diagnostics") {
584
+ return context.diagnostics ? json(buildDiagnostics(context)) : json({ error: "Docs diagnostics are only available in development" }, { status: 404 });
585
+ }
535
586
  if (format === "llms")
536
587
  return text(renderLlmsTxt(context, request, false), "text/plain; charset=utf-8");
537
588
  if (format === "llms-full")
@@ -568,10 +619,10 @@ async function handleDocsAPIGet(request, context) {
568
619
  if (format === "markdown" || url.pathname.endsWith(".md")) {
569
620
  const pathParam = url.searchParams.get("path") || url.searchParams.get("slug");
570
621
  const slug = normalizeDocsApiSlug(_nullishCoalesce(_nullishCoalesce(pathParam, () => ( pathTarget.slug)), () => ( "")), context.docs);
571
- const page = _chunkQ5JFU33Qcjs.loadFarmDocsPage.call(void 0, context.contentDir, context.docs, slug);
622
+ const page = _chunkZ2YLTERKcjs.loadFarmDocsPage.call(void 0, context.contentDir, context.docs, slug);
572
623
  if (!page) return text("Docs page not found\n", "text/plain; charset=utf-8", { status: 404 });
573
624
  return text(
574
- _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).renderDocsMarkdownDocument(_chunkQ5JFU33Qcjs.toFarmDocsMarkdownPage.call(void 0, page), {
625
+ _chunkIK6LVLKCcjs.docsEngine.call(void 0, ).renderDocsMarkdownDocument(_chunkZ2YLTERKcjs.toFarmDocsMarkdownPage.call(void 0, page), {
575
626
  origin: new URL(request.url).origin,
576
627
  llms: getDocsLlmsOptions(context, request),
577
628
  sitemap: context.docs.config.sitemap