@farm.js/core 0.1.16 → 0.1.18

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 (390) hide show
  1. package/dist/after.cjs +12 -225
  2. package/dist/agent-runtime.cjs +83 -2800
  3. package/dist/agent-runtime.d.mts +3 -3
  4. package/dist/agent-runtime.d.ts +3 -3
  5. package/dist/api/client.cjs +17 -4026
  6. package/dist/api/client.d.mts +3 -3
  7. package/dist/api/client.d.ts +3 -3
  8. package/dist/api/client.mjs +3 -3
  9. package/dist/api/route-manager.cjs +34 -4317
  10. package/dist/api/route-manager.d.mts +3 -3
  11. package/dist/api/route-manager.d.ts +3 -3
  12. package/dist/api/route-manager.mjs +5 -5
  13. package/dist/api/runtime.cjs +29 -2660
  14. package/dist/api/runtime.d.mts +3 -3
  15. package/dist/api/runtime.d.ts +3 -3
  16. package/dist/api/runtime.mjs +6 -3
  17. package/dist/{api-client-B-n3pm_Q.d.mts → api-client-Cx54IR5g.d.mts} +2 -2
  18. package/dist/{api-client-C0_NZEBl.d.ts → api-client-DykpaKcY.d.ts} +2 -2
  19. package/dist/api.cjs +88 -8361
  20. package/dist/api.d.mts +5 -5
  21. package/dist/api.d.ts +5 -5
  22. package/dist/api.mjs +8 -8
  23. package/dist/{app-AyjEsCBq.d.ts → app-BHY_10Lm.d.ts} +3 -3
  24. package/dist/{app-CYPHeOo_.d.mts → app-BMk0do23.d.mts} +3 -3
  25. package/dist/app-markdown.cjs +39 -280
  26. package/dist/app-markdown.d.mts +4 -4
  27. package/dist/app-markdown.d.ts +4 -4
  28. package/dist/app-markdown.mjs +3 -3
  29. package/dist/cache.cjs +38 -1526
  30. package/dist/cache.d.mts +11 -1
  31. package/dist/cache.d.ts +11 -1
  32. package/dist/cache.mjs +1 -1
  33. package/dist/chunk-22GUSVNJ.cjs +351 -0
  34. package/dist/chunk-2CQ74SP6.cjs +13 -0
  35. package/dist/chunk-2SJ4RQ6P.cjs +57 -0
  36. package/dist/chunk-3376ZTRC.cjs +1 -0
  37. package/dist/{chunk-IL5RWYK7.mjs → chunk-3XG26Z3J.mjs} +1 -1
  38. package/dist/{chunk-7HDZYYS4.mjs → chunk-4OOBRCJX.mjs} +27 -5
  39. package/dist/chunk-4PNUXIVU.cjs +472 -0
  40. package/dist/chunk-4PPEPOZZ.cjs +21 -0
  41. package/dist/chunk-4ZFL5GFN.cjs +520 -0
  42. package/dist/{chunk-B76DT5Y6.mjs → chunk-57J3Y7Y3.mjs} +1 -1
  43. package/dist/chunk-5OVTOKGH.cjs +65 -0
  44. package/dist/chunk-5QIKR7RR.cjs +224 -0
  45. package/dist/{chunk-MOQNHLTS.mjs → chunk-5QOEPUYE.mjs} +5 -2
  46. package/dist/{chunk-HKLRP3BN.mjs → chunk-5SPPCN5J.mjs} +1 -1
  47. package/dist/chunk-5ZSWG4UX.cjs +127 -0
  48. package/dist/chunk-62YJ2IEB.cjs +238 -0
  49. package/dist/chunk-6EODJYCX.cjs +183 -0
  50. package/dist/chunk-6EXBPJ24.cjs +434 -0
  51. package/dist/chunk-6QQDAAAZ.cjs +38 -0
  52. package/dist/chunk-6V4TDWEC.cjs +455 -0
  53. package/dist/{chunk-LUC2FAGW.mjs → chunk-6VQIKZZO.mjs} +1 -1
  54. package/dist/chunk-72ADZ6GQ.cjs +19 -0
  55. package/dist/chunk-75BRBIFP.cjs +172 -0
  56. package/dist/{chunk-7ZWL7XOU.mjs → chunk-76DG3LF3.mjs} +1 -1
  57. package/dist/chunk-7W3CPVXS.cjs +24 -0
  58. package/dist/chunk-A6WIQH5Z.cjs +31 -0
  59. package/dist/{chunk-EWDK36MM.mjs → chunk-A72YEUZ3.mjs} +1 -1
  60. package/dist/chunk-AFOD3LYZ.cjs +377 -0
  61. package/dist/chunk-AMDMVWMI.cjs +39 -0
  62. package/dist/chunk-AORPIPNB.cjs +552 -0
  63. package/dist/chunk-ARJWXNQL.cjs +256 -0
  64. package/dist/{chunk-ZHOIQC6U.mjs → chunk-ATERBVHQ.mjs} +2 -2
  65. package/dist/chunk-AWRISO2H.cjs +2199 -0
  66. package/dist/chunk-AYJR42WX.cjs +711 -0
  67. package/dist/chunk-B4CH33IG.cjs +644 -0
  68. package/dist/chunk-BIDYX3SL.cjs +91 -0
  69. package/dist/chunk-BSTRERPP.cjs +40 -0
  70. package/dist/chunk-BYODCJD6.cjs +663 -0
  71. package/dist/chunk-C3VRMB6H.cjs +85 -0
  72. package/dist/chunk-C5GUTBZK.cjs +173 -0
  73. package/dist/chunk-CIAGU2X4.cjs +337 -0
  74. package/dist/chunk-CMGMGHUZ.cjs +27 -0
  75. package/dist/chunk-CXP5U3RW.cjs +54 -0
  76. package/dist/chunk-D2ULAULS.cjs +166 -0
  77. package/dist/chunk-D7JTOLFK.cjs +285 -0
  78. package/dist/chunk-DVM4FKZL.cjs +169 -0
  79. package/dist/chunk-DYEJQTDN.cjs +49 -0
  80. package/dist/chunk-E2BMSZ2W.cjs +151 -0
  81. package/dist/chunk-E3UK5IIB.cjs +593 -0
  82. package/dist/chunk-EM6SBQKM.cjs +470 -0
  83. package/dist/{chunk-27JNCYEK.mjs → chunk-EN7WTEAY.mjs} +2 -2
  84. package/dist/{chunk-IGO2HEV7.mjs → chunk-F6SJAKFJ.mjs} +62 -28
  85. package/dist/{chunk-GSDIZACQ.mjs → chunk-FG5H2VCJ.mjs} +2 -2
  86. package/dist/chunk-FJSWYIR7.cjs +482 -0
  87. package/dist/chunk-FK6GO24V.cjs +54 -0
  88. package/dist/chunk-FXUUWYAX.cjs +654 -0
  89. package/dist/chunk-G3HRIVEY.cjs +395 -0
  90. package/dist/chunk-G643DQCH.cjs +13 -0
  91. package/dist/chunk-G7HXGLEC.cjs +175 -0
  92. package/dist/chunk-GDSHDTJ4.cjs +152 -0
  93. package/dist/chunk-GNEO2XOF.cjs +2040 -0
  94. package/dist/{chunk-NHHKW2T6.mjs → chunk-GYKJCFTS.mjs} +170 -52
  95. package/dist/chunk-H6G5INWM.cjs +1094 -0
  96. package/dist/chunk-HBTUGXHS.cjs +180 -0
  97. package/dist/chunk-HREOKQWT.cjs +45 -0
  98. package/dist/chunk-I4J452B7.cjs +435 -0
  99. package/dist/chunk-I57LW5VZ.cjs +94 -0
  100. package/dist/chunk-I7PUUDGY.cjs +389 -0
  101. package/dist/chunk-IAMRBF3Z.cjs +86 -0
  102. package/dist/chunk-IKNRN4VS.cjs +14214 -0
  103. package/dist/chunk-IQXFRNY2.cjs +169 -0
  104. package/dist/chunk-IXTFU4PL.cjs +2355 -0
  105. package/dist/chunk-J2OP5GG3.cjs +725 -0
  106. package/dist/chunk-J3LOGE4T.cjs +42 -0
  107. package/dist/chunk-J7FSKED3.cjs +93 -0
  108. package/dist/chunk-JDNHKPTD.cjs +22 -0
  109. package/dist/chunk-JSROZYYO.cjs +164 -0
  110. package/dist/chunk-K6FNHVDR.cjs +696 -0
  111. package/dist/chunk-KGZIORNL.cjs +43 -0
  112. package/dist/{chunk-LZK5CXDW.mjs → chunk-KLSSO6YD.mjs} +2 -2
  113. package/dist/{chunk-TYVVIQ5M.mjs → chunk-KPNVGRBL.mjs} +32 -25
  114. package/dist/chunk-KR6CKSXT.cjs +15 -0
  115. package/dist/chunk-KROWKCUH.cjs +185 -0
  116. package/dist/chunk-KVFPGF2M.cjs +46 -0
  117. package/dist/{chunk-KUO3GBPK.mjs → chunk-L6V3P73N.mjs} +1 -1
  118. package/dist/chunk-LCCBO7PJ.cjs +46 -0
  119. package/dist/chunk-LIUGYUX3.cjs +22 -0
  120. package/dist/chunk-LTNGXMQ6.cjs +55 -0
  121. package/dist/chunk-M2L4MYDQ.cjs +14 -0
  122. package/dist/chunk-MCJLA63J.cjs +1 -0
  123. package/dist/chunk-MKB2EGIR.cjs +148 -0
  124. package/dist/chunk-MQ3H6LT5.cjs +202 -0
  125. package/dist/chunk-MT763TDW.cjs +43 -0
  126. package/dist/chunk-MWSK6C4J.cjs +18 -0
  127. package/dist/chunk-MWWVKDW3.cjs +169 -0
  128. package/dist/{chunk-KTGFMHET.mjs → chunk-N6UROPT7.mjs} +1 -1
  129. package/dist/chunk-NO3WWW3N.cjs +192 -0
  130. package/dist/{chunk-NDD2YVGU.mjs → chunk-NRVGEI5I.mjs} +10 -3
  131. package/dist/chunk-NV3A5DXM.cjs +862 -0
  132. package/dist/chunk-NWOD6NIT.cjs +9 -0
  133. package/dist/chunk-NZKJGRB3.cjs +230 -0
  134. package/dist/chunk-OAVTUMJP.cjs +1496 -0
  135. package/dist/chunk-OHY2ZWUG.cjs +25 -0
  136. package/dist/chunk-OI6CMLWX.cjs +47 -0
  137. package/dist/chunk-OIEOCXKG.cjs +453 -0
  138. package/dist/chunk-OWOUTKIJ.cjs +558 -0
  139. package/dist/chunk-OX6O6WVA.cjs +74 -0
  140. package/dist/chunk-OXSIH4D6.cjs +476 -0
  141. package/dist/chunk-OYEUREB6.cjs +35 -0
  142. package/dist/chunk-PCOTGFSM.cjs +139 -0
  143. package/dist/chunk-PZYCPSCC.cjs +35 -0
  144. package/dist/chunk-QBK2AA4U.cjs +445 -0
  145. package/dist/chunk-QBPXNZGV.cjs +487 -0
  146. package/dist/{chunk-IXTEENRS.mjs → chunk-QGVJVSNX.mjs} +5 -5
  147. package/dist/chunk-QNPEUFHQ.cjs +27 -0
  148. package/dist/chunk-QZRVZSPN.cjs +236 -0
  149. package/dist/chunk-R5A5KNVX.cjs +20 -0
  150. package/dist/chunk-R5JIFR6B.cjs +42 -0
  151. package/dist/chunk-R6AIILII.cjs +193 -0
  152. package/dist/chunk-RG3ZOTG5.cjs +34 -0
  153. package/dist/chunk-ROUTX2E5.cjs +390 -0
  154. package/dist/chunk-RTHIVJ2G.cjs +54 -0
  155. package/dist/chunk-S3A45T7F.cjs +166 -0
  156. package/dist/chunk-S3JO3N4H.cjs +17 -0
  157. package/dist/chunk-SK35NQKK.cjs +27 -0
  158. package/dist/chunk-SU7MH53P.cjs +180 -0
  159. package/dist/chunk-SVRTJOUF.cjs +113 -0
  160. package/dist/chunk-SWN467MP.cjs +18 -0
  161. package/dist/{chunk-6SCB2MXB.mjs → chunk-SXHV42UQ.mjs} +16 -1
  162. package/dist/{chunk-OWTIOHON.mjs → chunk-SYGGPS4A.mjs} +2 -2
  163. package/dist/chunk-SYQ3MOWW.cjs +73 -0
  164. package/dist/chunk-T5CERMEH.cjs +417 -0
  165. package/dist/chunk-TFAXUHWX.cjs +206 -0
  166. package/dist/chunk-TIWHTW3Q.cjs +24 -0
  167. package/dist/chunk-TKJZFIML.cjs +20 -0
  168. package/dist/chunk-TKNSDBBN.cjs +193 -0
  169. package/dist/{chunk-NC333MFA.mjs → chunk-TSWW5BVH.mjs} +7 -4
  170. package/dist/chunk-TWGMSEHX.cjs +525 -0
  171. package/dist/chunk-TYQUSXUG.cjs +1357 -0
  172. package/dist/chunk-U4KT7QP3.cjs +23 -0
  173. package/dist/{chunk-LK6FGAQR.mjs → chunk-UDBJCUPA.mjs} +7 -4
  174. package/dist/chunk-UJ2C4ICS.cjs +277 -0
  175. package/dist/chunk-UN5GHC5V.cjs +10244 -0
  176. package/dist/chunk-UQZ4AYTH.cjs +168 -0
  177. package/dist/chunk-US2QVW3E.cjs +36 -0
  178. package/dist/{chunk-NUD6XBMO.mjs → chunk-UTBVHYS3.mjs} +2 -2
  179. package/dist/{chunk-76MNRHTS.mjs → chunk-UUYF3CHN.mjs} +2 -2
  180. package/dist/chunk-VB6UCX3V.cjs +421 -0
  181. package/dist/chunk-VEKFLAQM.cjs +300 -0
  182. package/dist/chunk-VQDBNVOO.cjs +14 -0
  183. package/dist/chunk-W4E7WMXE.cjs +71 -0
  184. package/dist/{chunk-VVTREAG5.mjs → chunk-WD4YXVLV.mjs} +11 -3
  185. package/dist/{chunk-UQZPTIML.mjs → chunk-WD5PNSOB.mjs} +2 -2
  186. package/dist/chunk-WJ3HK3LJ.cjs +1102 -0
  187. package/dist/chunk-WMAPPDMM.cjs +28 -0
  188. package/dist/chunk-WMOGFOUJ.cjs +223 -0
  189. package/dist/chunk-WPYFSQKK.cjs +37 -0
  190. package/dist/chunk-WZMNW2IW.cjs +1415 -0
  191. package/dist/chunk-XGC343EY.cjs +443 -0
  192. package/dist/{chunk-DPZUDPVJ.mjs → chunk-XP777LRD.mjs} +1 -1
  193. package/dist/chunk-XSKZORAS.cjs +727 -0
  194. package/dist/chunk-XWAWFQFS.cjs +82 -0
  195. package/dist/{chunk-KATQ6I56.mjs → chunk-XWAYMDLB.mjs} +1 -1
  196. package/dist/chunk-Y4YMF2NQ.cjs +460 -0
  197. package/dist/chunk-Y4YWHNKU.cjs +250 -0
  198. package/dist/chunk-Y53ZSFN6.cjs +504 -0
  199. package/dist/chunk-YA6LLTIJ.cjs +411 -0
  200. package/dist/chunk-YFPGHF5F.cjs +202 -0
  201. package/dist/chunk-YJRZR7VU.cjs +28 -0
  202. package/dist/chunk-YTAABQEV.cjs +1 -0
  203. package/dist/chunk-YX3DBN4M.cjs +18 -0
  204. package/dist/chunk-YZTASLPQ.cjs +64 -0
  205. package/dist/chunk-Z5HIWVDP.cjs +2173 -0
  206. package/dist/{chunk-Q3MDL7TM.mjs → chunk-ZCNJKLA2.mjs} +30 -11
  207. package/dist/chunk-ZEG3OPIB.cjs +93 -0
  208. package/dist/chunk-ZMN3H73H.cjs +155 -0
  209. package/dist/client/lifecycle.cjs +6 -35
  210. package/dist/{client-plugins-CqVtZi5X.d.ts → client-plugins-C089bQhN.d.ts} +2 -2
  211. package/dist/{client-plugins-CIPRtSsW.d.mts → client-plugins-JXXmZliS.d.mts} +2 -2
  212. package/dist/client-plugins.cjs +7 -448
  213. package/dist/client-plugins.d.mts +3 -3
  214. package/dist/client-plugins.d.ts +3 -3
  215. package/dist/client.cjs +171 -9774
  216. package/dist/client.d.mts +8 -8
  217. package/dist/client.d.ts +8 -8
  218. package/dist/client.mjs +6 -6
  219. package/dist/config.cjs +8 -36
  220. package/dist/config.d.mts +3 -3
  221. package/dist/config.d.ts +3 -3
  222. package/dist/cron.cjs +24 -491
  223. package/dist/cron.mjs +2 -2
  224. package/dist/deferred.cjs +26 -475
  225. package/dist/deployment.cjs +39 -210
  226. package/dist/devtools-OUIPHVV6.cjs +388 -0
  227. package/dist/{devtools-IU7LKZOH.mjs → devtools-UFVTMQX5.mjs} +7 -7
  228. package/dist/devtools-client-4WAPJY5L.cjs +254 -0
  229. package/dist/devtools-ui-5GBDIGMK.cjs +1296 -0
  230. package/dist/docs.cjs +46 -5649
  231. package/dist/docs.mjs +9 -9
  232. package/dist/{endpoint-kSAxE52R.d.ts → endpoint-1zA994xL.d.ts} +1 -1
  233. package/dist/{endpoint-Bu3XgeMK.d.mts → endpoint-DAc96i93.d.mts} +1 -1
  234. package/dist/env-types.cjs +5 -226
  235. package/dist/env.cjs +23 -306
  236. package/dist/env.d.mts +5 -3
  237. package/dist/env.d.ts +5 -3
  238. package/dist/env.mjs +2 -1
  239. package/dist/environment/vite.cjs +8 -372
  240. package/dist/environment.cjs +12 -94
  241. package/dist/font.cjs +13 -63
  242. package/dist/headers.cjs +7 -123
  243. package/dist/i18n/client.cjs +55 -294
  244. package/dist/i18n/index.cjs +22 -209
  245. package/dist/i18n/server.cjs +22 -745
  246. package/dist/image/server.cjs +13 -729
  247. package/dist/image/sharp.cjs +33 -171
  248. package/dist/image.cjs +41 -85
  249. package/dist/index.cjs +1151 -67862
  250. package/dist/index.d.mts +14 -14
  251. package/dist/index.d.ts +14 -14
  252. package/dist/index.mjs +34 -34
  253. package/dist/instrumentation.cjs +12 -138
  254. package/dist/integration-orm-55F7CII5.cjs +13 -0
  255. package/dist/integrations.cjs +55 -4090
  256. package/dist/integrations.d.mts +3 -3
  257. package/dist/integrations.d.ts +3 -3
  258. package/dist/internal/app-markdown-runtime.cjs +27 -224
  259. package/dist/internal/app-markdown-runtime.d.mts +3 -3
  260. package/dist/internal/app-markdown-runtime.d.ts +3 -3
  261. package/dist/internal/app-markdown-runtime.mjs +2 -2
  262. package/dist/internal/build-runtime.cjs +120 -52038
  263. package/dist/internal/build-runtime.d.mts +5 -5
  264. package/dist/internal/build-runtime.d.ts +5 -5
  265. package/dist/internal/build-runtime.mjs +23 -23
  266. package/dist/internal/cli-runtime.cjs +67 -13765
  267. package/dist/internal/cli-runtime.mjs +13 -13
  268. package/dist/internal/client-error-overlay.cjs +80 -733
  269. package/dist/internal/client-error-overlay.mjs +1 -1
  270. package/dist/internal/client-runtime.cjs +81 -913
  271. package/dist/internal/compression-runtime.cjs +8 -214
  272. package/dist/internal/compression-runtime.d.mts +3 -3
  273. package/dist/internal/compression-runtime.d.ts +3 -3
  274. package/dist/internal/config-runtime.cjs +42 -6535
  275. package/dist/internal/config-runtime.d.mts +4 -4
  276. package/dist/internal/config-runtime.d.ts +4 -4
  277. package/dist/internal/config-runtime.mjs +7 -7
  278. package/dist/internal/docs-precompiled-runtime.cjs +26 -46
  279. package/dist/internal/infra-analytics-runtime.cjs +10 -536
  280. package/dist/internal/isolated-boundary.cjs +14 -414
  281. package/dist/internal/metadata-image-runtime.cjs +7 -285
  282. package/dist/internal/product-telemetry-runtime.cjs +42 -97
  283. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  284. package/dist/internal/production-node-env.cjs +6 -63
  285. package/dist/internal/production-runtime.cjs +418 -7073
  286. package/dist/internal/production-runtime.d.mts +9 -9
  287. package/dist/internal/production-runtime.d.ts +9 -9
  288. package/dist/internal/production-runtime.mjs +6 -6
  289. package/dist/internal/request-cookies.cjs +6 -54
  290. package/dist/json-ld.cjs +24 -50
  291. package/dist/layers-E4WPJNY5.cjs +17 -0
  292. package/dist/manager-G4B2IPYE.cjs +14 -0
  293. package/dist/markdown.cjs +21 -532
  294. package/dist/markdown.mjs +1 -1
  295. package/dist/{metadata-8g__AMPM.d.ts → metadata-BcNJP4fq.d.ts} +1 -1
  296. package/dist/{metadata-OMX6wFNf.d.mts → metadata-C1Z9vLbb.d.mts} +1 -1
  297. package/dist/middleware.cjs +36 -2988
  298. package/dist/middleware.d.mts +5 -5
  299. package/dist/middleware.d.ts +5 -5
  300. package/dist/middleware.mjs +4 -4
  301. package/dist/navigation.cjs +22 -2588
  302. package/dist/nitro-4I2MYLY2.cjs +652 -0
  303. package/dist/{nitro-3N4ZXRYM.mjs → nitro-CVZ36JM5.mjs} +4 -4
  304. package/dist/observability.cjs +22 -614
  305. package/dist/og.cjs +5 -28
  306. package/dist/plugin.cjs +106 -37291
  307. package/dist/plugin.d.mts +3 -3
  308. package/dist/plugin.d.ts +3 -3
  309. package/dist/plugin.mjs +19 -19
  310. package/dist/{production-runtime-W3M0eNDV.d.mts → production-runtime-jcrTlRTb.d.mts} +1 -1
  311. package/dist/{production-runtime-BJh7o6Cr.d.ts → production-runtime-oKmC0WU-.d.ts} +1 -1
  312. package/dist/query/client.cjs +113 -449
  313. package/dist/query/index.cjs +26 -288
  314. package/dist/query/parsers.cjs +23 -247
  315. package/dist/query/server.cjs +36 -298
  316. package/dist/{render-plan-io7pvDNc.d.mts → render-plan-BLIfc4jt.d.mts} +1 -1
  317. package/dist/{render-plan-Be4ZGTJP.d.ts → render-plan-DOB9cV-h.d.ts} +1 -1
  318. package/dist/renderer/react/client.cjs +9 -43
  319. package/dist/renderer/react/server.cjs +40 -103
  320. package/dist/renderer/react/vite.cjs +7 -29
  321. package/dist/renderer-client.cjs +126 -4261
  322. package/dist/renderer-client.d.mts +5 -5
  323. package/dist/renderer-client.d.ts +5 -5
  324. package/dist/renderer-client.mjs +3 -3
  325. package/dist/renderer.cjs +31 -249
  326. package/dist/{request-DZkHYQ89.d.mts → request-Cr53NRHr.d.mts} +1 -1
  327. package/dist/{request-G8JhKr4F.d.ts → request-Dt2gNuQD.d.ts} +1 -1
  328. package/dist/request.cjs +5 -68
  329. package/dist/request.d.mts +4 -4
  330. package/dist/request.d.ts +4 -4
  331. package/dist/{route-C_eLaFTZ.d.mts → route-B0XrsrFk.d.mts} +1 -1
  332. package/dist/{route-BxNJT447.d.ts → route-DOEpbyWZ.d.ts} +1 -1
  333. package/dist/{route-rendering-BcLLPJgN.d.ts → route-rendering-CWYd8Mv1.d.ts} +1 -1
  334. package/dist/{route-rendering-CbAKr1TY.d.mts → route-rendering-CeFBEAoZ.d.mts} +1 -1
  335. package/dist/router.cjs +11 -474
  336. package/dist/routes.cjs +42 -2424
  337. package/dist/routes.d.mts +4 -4
  338. package/dist/routes.d.ts +4 -4
  339. package/dist/routes.mjs +2 -2
  340. package/dist/schema-dev-notice-MXSZMVDG.cjs +56 -0
  341. package/dist/schema.cjs +6 -33
  342. package/dist/search-client-G3RICOFU.cjs +13 -0
  343. package/dist/server-action-security.cjs +25 -541
  344. package/dist/server-fn-client.cjs +6 -337
  345. package/dist/server-fn-client.d.mts +3 -3
  346. package/dist/server-fn-client.d.ts +3 -3
  347. package/dist/server-fn.cjs +32 -1799
  348. package/dist/server-fn.d.mts +1 -1
  349. package/dist/server-fn.d.ts +1 -1
  350. package/dist/server-fn.mjs +2 -2
  351. package/dist/server-plugins.cjs +15 -884
  352. package/dist/server-plugins.d.mts +4 -4
  353. package/dist/server-plugins.d.ts +4 -4
  354. package/dist/server-query-client.cjs +15 -1849
  355. package/dist/server-query-client.d.mts +1 -1
  356. package/dist/server-query-client.d.ts +1 -1
  357. package/dist/server-query-client.mjs +4 -4
  358. package/dist/server-query.cjs +16 -1796
  359. package/dist/server-query.d.mts +1 -1
  360. package/dist/server-query.d.ts +1 -1
  361. package/dist/server-query.mjs +3 -3
  362. package/dist/server.cjs +296 -44522
  363. package/dist/server.d.mts +9 -9
  364. package/dist/server.d.ts +9 -9
  365. package/dist/server.mjs +22 -22
  366. package/dist/{spa-router-BcS_4nqm.d.mts → spa-router-CQWiYGxS.d.mts} +2 -2
  367. package/dist/{spa-router-BzFBUJkn.d.ts → spa-router-Wjiw-8hB.d.ts} +2 -2
  368. package/dist/storage.cjs +57 -576
  369. package/dist/testing.cjs +92 -3148
  370. package/dist/testing.d.mts +3 -3
  371. package/dist/testing.d.ts +3 -3
  372. package/dist/testing.mjs +11 -7
  373. package/dist/theme/client.cjs +13 -108
  374. package/dist/theme/index.cjs +6 -68
  375. package/dist/theme/runtime.cjs +13 -78
  376. package/dist/theme/server.cjs +10 -179
  377. package/dist/{utils-C4yrAhNc.d.ts → utils-B0XJmG_b.d.ts} +1 -1
  378. package/dist/{utils-5kQP1mFR.d.mts → utils-uUxF0K0P.d.mts} +1 -1
  379. package/dist/version.cjs +4 -32
  380. package/dist/version.mjs +1 -1
  381. package/dist/vite.cjs +119 -37622
  382. package/dist/vite.d.mts +3 -3
  383. package/dist/vite.d.ts +3 -3
  384. package/dist/vite.mjs +19 -19
  385. package/dist/workflows.cjs +19 -1040
  386. package/dist/workflows.mjs +2 -2
  387. package/package.json +2 -2
  388. package/dist/{chunk-VO5SCWF5.mjs → chunk-BNGS6KJ6.mjs} +0 -0
  389. package/dist/{chunk-MUUZJLCI.mjs → chunk-EGJDUF4Q.mjs} +3 -3
  390. package/dist/{chunk-4L7SZOHZ.mjs → chunk-YHOCRI4H.mjs} +3 -3
@@ -0,0 +1,652 @@
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 }; }
2
+
3
+ var _chunkGDSHDTJ4cjs = require('./chunk-GDSHDTJ4.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunk6EXBPJ24cjs = require('./chunk-6EXBPJ24.cjs');
9
+
10
+
11
+ var _chunkVEKFLAQMcjs = require('./chunk-VEKFLAQM.cjs');
12
+
13
+
14
+ var _chunkK6FNHVDRcjs = require('./chunk-K6FNHVDR.cjs');
15
+ require('./chunk-JDNHKPTD.cjs');
16
+ require('./chunk-CMGMGHUZ.cjs');
17
+
18
+
19
+ var _chunkWPYFSQKKcjs = require('./chunk-WPYFSQKK.cjs');
20
+ require('./chunk-MKB2EGIR.cjs');
21
+ require('./chunk-EM6SBQKM.cjs');
22
+ require('./chunk-5QIKR7RR.cjs');
23
+ require('./chunk-QNPEUFHQ.cjs');
24
+ require('./chunk-S3A45T7F.cjs');
25
+ require('./chunk-DVM4FKZL.cjs');
26
+ require('./chunk-OX6O6WVA.cjs');
27
+ require('./chunk-US2QVW3E.cjs');
28
+ require('./chunk-BIDYX3SL.cjs');
29
+ require('./chunk-I57LW5VZ.cjs');
30
+ require('./chunk-NO3WWW3N.cjs');
31
+
32
+
33
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
34
+
35
+ // src/nitro/index.ts
36
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
37
+ async function createNitroConfig(config, routeManager, apiRouteManager, serverRenderer, preset = "node-server") {
38
+ const root = config.root || process.cwd();
39
+ const apiBasePath = _chunkWPYFSQKKcjs.resolveFarmAPIServerBasePath.call(void 0, config.api);
40
+ const srcDir = config.srcDir || "src";
41
+ const distDir = ".farm";
42
+ const nitroBuildDir = _path2.default.join(root, distDir, ".nitro");
43
+ const outputDir = _path2.default.join(root, distDir, ".output");
44
+ const serverDir = _path2.default.join(nitroBuildDir, "server");
45
+ const { mkdir, writeFile } = await import("fs/promises");
46
+ await mkdir(serverDir, { recursive: true });
47
+ await mkdir(_path2.default.join(serverDir, "api"), { recursive: true });
48
+ await mkdir(_path2.default.join(serverDir, "routes"), { recursive: true });
49
+ const farmWorkflows = await _chunkK6FNHVDRcjs.prepareFarmWorkflowsForNitro.call(void 0, {
50
+ ...config,
51
+ distDir
52
+ });
53
+ const farmCron = await _chunk6EXBPJ24cjs.prepareFarmCronForNitro.call(void 0, {
54
+ ...config,
55
+ distDir
56
+ });
57
+ const scheduledTasks = _chunk6EXBPJ24cjs.mergeScheduledTasks.call(void 0, farmWorkflows.scheduledTasks, farmCron.scheduledTasks);
58
+ const cloudflareCronConfig = _chunk6EXBPJ24cjs.createFarmCronCloudflareConfig.call(void 0, farmCron.jobs);
59
+ const registryFile = _path2.default.join(serverDir, "farm-registry.ts");
60
+ const routePaths = {};
61
+ for (const [pattern, entry] of routeManager.getRoutes()) {
62
+ const bundledPath = entry.modulePath.replace(/.*\/src\/app\//, "").replace(/\.(tsx?|jsx?)$/, ".js");
63
+ routePaths[pattern] = bundledPath;
64
+ }
65
+ const clientManifestPath = _path2.default.join(root, distDir, "client", "farm-client-manifest.json");
66
+ await writeFile(
67
+ registryFile,
68
+ `
69
+ // Auto-generated by Farm.js
70
+ // Runtime registry for route managers and renderers
71
+ export const farmRegistry: {
72
+ apiRouteManager?: any;
73
+ routeManager?: any;
74
+ serverRenderer?: any;
75
+ env?: any;
76
+ deploymentId?: string;
77
+ basePath?: string;
78
+ apiBasePath?: string;
79
+ clientManifest?: any;
80
+ routePaths?: Record<string, string>;
81
+ } = {
82
+ env: ${JSON.stringify(_chunkVEKFLAQMcjs.createBundledEnv.call(void 0, config.env), null, 2)},
83
+ deploymentId: ${JSON.stringify(config.deploymentId)},
84
+ basePath: ${JSON.stringify(config.basePath)},
85
+ apiBasePath: ${JSON.stringify(apiBasePath)},
86
+ routePaths: ${JSON.stringify(routePaths, null, 2)},
87
+ };
88
+ `,
89
+ "utf-8"
90
+ );
91
+ const apiHandlerFile = _path2.default.join(serverDir, "api", "[...].ts");
92
+ await mkdir(_path2.default.dirname(apiHandlerFile), { recursive: true });
93
+ await writeFile(
94
+ apiHandlerFile,
95
+ `
96
+ // Auto-generated by Farm.js
97
+ // This handler intercepts all /api/* requests
98
+ import { defineEventHandler, getHeaders, readRawBody, sendWebResponse, setResponseStatus, getRequestURL } from 'h3';
99
+ import type { H3Event } from 'h3';
100
+ import { farmRegistry } from '../farm-registry';
101
+ import { createFarmLegacyRequest } from '@farm.js/core/internal/production-runtime';
102
+
103
+ export default defineEventHandler(async (event: H3Event) => {
104
+ // Get URL using H3's abstraction (works in all environments)
105
+ const url = getRequestURL(event);
106
+ const urlPath = url.pathname;
107
+ const apiBasePath = farmRegistry.apiBasePath || '/api';
108
+ const isAPIPath = apiBasePath !== '/' &&
109
+ (urlPath === apiBasePath || urlPath.startsWith(apiBasePath + '/'));
110
+
111
+ // Only handle API routes - for Vercel, Nitro routes /api/* to this handler
112
+ // According to https://nitro.build/deploy/providers/vercel
113
+ // This handler should process all /api/* routes
114
+ if (!isAPIPath) {
115
+ // Return undefined to let Nitro's routing system handle non-API routes
116
+ return undefined;
117
+ }
118
+
119
+ // Ensure registry is populated (lazy initialization)
120
+ // In serverless environments, the registry needs to be initialized at runtime
121
+ if (!farmRegistry.apiRouteManager) {
122
+ // Try to initialize from global if available (set during build)
123
+ if (typeof globalThis !== 'undefined' && (globalThis as any).__FARM_REGISTRY__) {
124
+ Object.assign(farmRegistry, (globalThis as any).__FARM_REGISTRY__);
125
+ }
126
+ // If still not available, try the init function (if it exists)
127
+ if (!farmRegistry.apiRouteManager && (farmRegistry as any).__INIT__) {
128
+ (farmRegistry as any).__INIT__();
129
+ }
130
+ }
131
+
132
+ const apiRouteManager = farmRegistry.apiRouteManager;
133
+ if (!apiRouteManager) {
134
+ console.error('API route manager not initialized. Registry keys:', Object.keys(farmRegistry));
135
+ setResponseStatus(event, 500);
136
+ return { error: 'API route manager not initialized. Please check server logs.' };
137
+ }
138
+
139
+ const startTime = Date.now();
140
+ const method = event.method || 'GET';
141
+ const host = url.host || 'localhost';
142
+
143
+ // Log API request (only in development)
144
+ if (process.env.NODE_ENV === 'development' || !process.env.NODE_ENV) {
145
+ try {
146
+ const pc = await import('picocolors');
147
+ const log = [
148
+ pc.default.dim('[') + pc.default.bold(pc.default.blue('FARM')) + pc.default.dim(']'),
149
+ pc.default.dim('[') + pc.default.bold(pc.default.white(method.padEnd(3))) + pc.default.dim(']'),
150
+ pc.default.cyan('[API]'),
151
+ pc.default.gray(\`\${url.protocol}//\${host}\${urlPath}\`),
152
+ ].join(' ');
153
+ console.log(log);
154
+ } catch {
155
+ // picocolors not available, use simple log
156
+ console.log(\`[FARM] [\${method}] [API] \${urlPath}\`);
157
+ }
158
+ }
159
+
160
+ try {
161
+ // Convert H3 event to Web Request using H3 abstractions
162
+ const protocol = url.protocol.replace(':', '') || 'http';
163
+ const host = url.host || 'localhost';
164
+ const fullUrl = url.toString();
165
+
166
+ const headers = new Headers();
167
+ const h3Headers = getHeaders(event);
168
+
169
+ for (const [key, value] of Object.entries(h3Headers)) {
170
+ if (value) {
171
+ headers.set(key, Array.isArray(value) ? value.join(', ') : String(value));
172
+ }
173
+ }
174
+
175
+ const request = await createFarmLegacyRequest(event, fullUrl, headers, readRawBody);
176
+
177
+ // Call better-call handler
178
+ const betterCallHandler = apiRouteManager.getHandler();
179
+ if (!betterCallHandler) {
180
+ setResponseStatus(event, 404);
181
+ return { error: 'API handler not found' };
182
+ }
183
+
184
+ const response = await betterCallHandler(request);
185
+
186
+ // Log API response (only in development)
187
+ if (process.env.NODE_ENV === 'development' || !process.env.NODE_ENV) {
188
+ const duration = Date.now() - startTime;
189
+ const status = response.status;
190
+ try {
191
+ const pc = await import('picocolors');
192
+ let statusColor = pc.default.green;
193
+ if (status >= 500) statusColor = pc.default.red;
194
+ else if (status >= 400) statusColor = pc.default.yellow;
195
+ else if (status >= 300) statusColor = pc.default.cyan;
196
+
197
+ const log = [
198
+ pc.default.dim('[') + pc.default.bold(pc.default.blue('FARM')) + pc.default.dim(']'),
199
+ status >= 400 ? pc.default.red('\u2717') : pc.default.green('\u2713'),
200
+ pc.default.cyan('[API]'),
201
+ pc.default.gray(urlPath),
202
+ pc.default.dim('-'),
203
+ statusColor(status.toString()),
204
+ pc.default.dim(\`(\${duration}ms)\`),
205
+ ].join(' ');
206
+ console.log(log);
207
+ } catch {
208
+ // picocolors not available, use simple log
209
+ console.log(\`[FARM] [\${method}] [API] \${urlPath} - \${response.status} (\${duration}ms)\`);
210
+ }
211
+ }
212
+
213
+ return sendWebResponse(response);
214
+ } catch (error: any) {
215
+ console.error('API handler error:', error);
216
+ setResponseStatus(event, 500);
217
+ return {
218
+ error: error.message || 'Internal Server Error',
219
+ };
220
+ }
221
+ });
222
+ `,
223
+ "utf-8"
224
+ );
225
+ const ssrHandlerFile = _path2.default.join(serverDir, "routes", "[...].ts");
226
+ await mkdir(_path2.default.dirname(ssrHandlerFile), { recursive: true });
227
+ await writeFile(
228
+ ssrHandlerFile,
229
+ `
230
+ // Auto-generated by Farm.js
231
+ // This handler handles all page routes (SSR)
232
+ import { defineEventHandler, setResponseStatus, getRequestURL, setHeader, getHeaders, readRawBody, sendWebResponse, setCookie } from 'h3';
233
+ import type { H3Event } from 'h3';
234
+ import { farmRegistry } from '../farm-registry';
235
+ import React from 'react';
236
+ import { renderToString } from 'react-dom/server';
237
+ import { searchParamsToObject } from '@farm.js/core/internal/production-runtime';
238
+ import { createFarmLegacyRequest, renderFarmLegacyErrorHtml, renderFarmLegacyHtml } from '@farm.js/core/internal/production-runtime';
239
+
240
+ export default defineEventHandler(async (event: H3Event) => {
241
+ try {
242
+ // Ensure registry is populated (lazy initialization)
243
+ // In serverless environments, the registry needs to be initialized at runtime
244
+ if (!farmRegistry.routeManager || !farmRegistry.serverRenderer) {
245
+ // Try to initialize from global if available (set during build)
246
+ if (typeof globalThis !== 'undefined' && (globalThis as any).__FARM_REGISTRY__) {
247
+ Object.assign(farmRegistry, (globalThis as any).__FARM_REGISTRY__);
248
+ }
249
+ // If still not available, try the init function (if it exists)
250
+ if ((!farmRegistry.routeManager || !farmRegistry.serverRenderer) && (farmRegistry as any).__INIT__) {
251
+ (farmRegistry as any).__INIT__();
252
+ }
253
+ }
254
+
255
+ const routeManager = farmRegistry.routeManager;
256
+ const serverRenderer = farmRegistry.serverRenderer;
257
+
258
+ if (!routeManager || !serverRenderer) {
259
+ console.error('Route manager or renderer not initialized. Registry keys:', Object.keys(farmRegistry));
260
+ setResponseStatus(event, 500);
261
+ setHeader(event, 'Content-Type', 'text/html; charset=utf-8');
262
+ return '<!DOCTYPE html><html><head><title>Error</title></head><body><h1>500 Internal Server Error</h1><p>Route manager or renderer not initialized. Please check server logs.</p></body></html>';
263
+ }
264
+
265
+ // Get URL from H3 event
266
+ const url = getRequestURL(event);
267
+ const pathname = url.pathname;
268
+ const apiBasePath = farmRegistry.apiBasePath || '/api';
269
+ const isAPIPath = apiBasePath !== '/' &&
270
+ (pathname === apiBasePath || pathname.startsWith(apiBasePath + '/'));
271
+ const redirectMatch = routeManager.matchRedirect(pathname, url.search);
272
+ if (redirectMatch) {
273
+ setResponseStatus(event, redirectMatch.statusCode);
274
+ setHeader(event, 'Location', redirectMatch.destination);
275
+ return \`Redirecting to \${redirectMatch.destination}\`;
276
+ }
277
+ const apiRouteManager = farmRegistry.apiRouteManager;
278
+
279
+ if (apiRouteManager?.matchRoute(pathname)) {
280
+ const handler = apiRouteManager.getHandler();
281
+ if (!handler) {
282
+ setResponseStatus(event, 404);
283
+ return { error: 'API handler not found' };
284
+ }
285
+
286
+ const headers = new Headers();
287
+ const h3Headers = getHeaders(event);
288
+ for (const [key, value] of Object.entries(h3Headers)) {
289
+ if (value) {
290
+ headers.set(key, Array.isArray(value) ? value.join(', ') : String(value));
291
+ }
292
+ }
293
+
294
+ const request = await createFarmLegacyRequest(event, url, headers, readRawBody);
295
+ const response = await handler(request);
296
+
297
+ return sendWebResponse(response);
298
+ }
299
+
300
+ // Skip API routes - let the API handler process them
301
+ if (isAPIPath) {
302
+ // Return undefined to let Nitro's API handler process
303
+ return undefined;
304
+ }
305
+
306
+ // Skip static assets - let Nitro serve them
307
+ // Only skip if it's clearly a static file (has extension and not in root)
308
+ if (pathname.startsWith('/assets/') || (pathname.includes('.') && !isAPIPath)) {
309
+ // Check if it's a static file by extension
310
+ const staticExtensions = ['.js', '.css', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.ico', '.woff', '.woff2', '.ttf', '.eot'];
311
+ const hasStaticExtension = staticExtensions.some(ext => pathname.toLowerCase().endsWith(ext));
312
+ if (hasStaticExtension) {
313
+ return; // Let Nitro's static file handler process
314
+ }
315
+ }
316
+
317
+ // Try to use Node.js req/res if available (for node-server preset)
318
+ if (event.node && event.node.req && event.node.res) {
319
+ await serverRenderer.renderPage(event.node.req as any, event.node.res as any);
320
+ return undefined; // Response already sent
321
+ }
322
+
323
+ if (farmRegistry.deploymentId) {
324
+ setHeader(event, 'x-farm-deployment-id', farmRegistry.deploymentId);
325
+ setCookie(event, '__farm_deployment', farmRegistry.deploymentId, {
326
+ httpOnly: true,
327
+ sameSite: 'lax',
328
+ secure: url.protocol === 'https:',
329
+ path: farmRegistry.basePath || '/',
330
+ });
331
+ }
332
+
333
+ // For serverless (Vercel), render to string and send HTML
334
+ try {
335
+ // Match route
336
+ const { route, params, layouts } = routeManager.matchRoute(pathname);
337
+
338
+ if (!route) {
339
+ setResponseStatus(event, 404);
340
+ setHeader(event, 'Content-Type', 'text/html; charset=utf-8');
341
+ return '<!DOCTYPE html><html><head><title>404 Not Found</title></head><body><h1>404 Not Found</h1></body></html>';
342
+ }
343
+
344
+ // Get search params
345
+ const searchParamsObject = searchParamsToObject(url.searchParams);
346
+
347
+ // Load route module - in production, use bundled SSR output
348
+ // Get bundled path from registry or construct it
349
+ let routeModule;
350
+ const routePaths = farmRegistry.routePaths || {};
351
+ const bundledPath = routePaths[pathname] || route.modulePath
352
+ .replace(/.*\\/src\\/app\\//, '')
353
+ .replace(/\\.(tsx?|jsx?)$/, '.js');
354
+
355
+ try {
356
+ // Try to load from bundled SSR output (copied to Nitro's server/farm directory)
357
+ // Nitro bundles everything, so we need to use the correct import path
358
+ routeModule = await import('./farm/' + bundledPath);
359
+ } catch (importError) {
360
+ // Fallback: try route manager's load method (for node-server preset)
361
+ try {
362
+ routeModule = await routeManager.loadRouteModule(route.modulePath);
363
+ } catch (loadError) {
364
+ // Last resort: try just the filename
365
+ const bundledName = bundledPath.split('/').pop() || 'page.js';
366
+ try {
367
+ routeModule = await import('./farm/' + bundledName);
368
+ } catch {
369
+ throw new Error(\`Failed to load route module: \${route.modulePath}. Tried: ./farm/\${bundledPath}, ./farm/\${bundledName}\`);
370
+ }
371
+ }
372
+ }
373
+
374
+ if (!routeModule.default) {
375
+ throw new Error(\`Route module \${route.modulePath} does not export a default component\`);
376
+ }
377
+
378
+ // Load layout modules
379
+ const layoutModules = await Promise.all(
380
+ layouts.map(async (layout) => {
381
+ const bundledPath = layout.modulePath
382
+ .replace(/.*\\/src\\/app\\//, '')
383
+ .replace(/\\.(tsx?|jsx?)$/, '.js');
384
+
385
+ try {
386
+ // Try to load from bundled SSR output
387
+ return await import('./farm/' + bundledPath);
388
+ } catch {
389
+ // Fallback to route manager's load method
390
+ try {
391
+ return await routeManager.loadLayoutModule(layout.modulePath);
392
+ } catch {
393
+ // Last resort: try just the filename
394
+ const bundledName = bundledPath.split('/').pop() || 'layout.js';
395
+ try {
396
+ return await import('./farm/' + bundledName);
397
+ } catch {
398
+ // Return a dummy layout if all fails
399
+ return { default: ({ children }: any) => children };
400
+ }
401
+ }
402
+ }
403
+ })
404
+ );
405
+
406
+ // Create page props
407
+ const rawPageProps = {
408
+ params,
409
+ searchParams: Promise.resolve(searchParamsObject),
410
+ path: pathname,
411
+ };
412
+ const pageProps = routeModule.__farmResolveRouteProps
413
+ ? await routeModule.__farmResolveRouteProps(rawPageProps)
414
+ : (() => {
415
+ const routeSchemas = routeModule.__farmRouteParsesProps
416
+ ? {}
417
+ : routeModule.__farmRouteSchemas || {};
418
+ const parsedParams = routeSchemas.params?.parse
419
+ ? routeSchemas.params.parse(params)
420
+ : params;
421
+ const parsedSearch = routeSchemas.search?.parse
422
+ ? routeSchemas.search.parse(searchParamsObject)
423
+ : searchParamsObject;
424
+ return {
425
+ ...rawPageProps,
426
+ params: parsedParams,
427
+ search: parsedSearch,
428
+ searchParams: Promise.resolve(parsedSearch),
429
+ };
430
+ })();
431
+
432
+ // Create page element
433
+ const PageComponent = routeModule.default;
434
+ let pageElement;
435
+ if (typeof PageComponent === "function" && PageComponent.constructor.name === "AsyncFunction") {
436
+ pageElement = await PageComponent(pageProps);
437
+ } else {
438
+ pageElement = React.createElement(PageComponent, pageProps);
439
+ }
440
+
441
+ // Wrap with layouts
442
+ for (let i = layoutModules.length - 1; i >= 0; i--) {
443
+ const layoutModule = layoutModules[i];
444
+ const LayoutComponent = layoutModule.default;
445
+ pageElement = React.createElement(LayoutComponent, {
446
+ children: pageElement,
447
+ params,
448
+ } as any);
449
+ }
450
+
451
+ // Render to string
452
+ const html = renderToString(pageElement);
453
+
454
+ // Get client script path from manifest
455
+ const clientManifest = farmRegistry.clientManifest || {};
456
+ // Find the client script for this route - check manifest structure
457
+ let clientScript = '/assets/page-wbYjx1yQ.js'; // Default fallback
458
+ if (clientManifest && typeof clientManifest === 'object') {
459
+ // Manifest structure: { "assets/page-xxx.js": { ... } }
460
+ const manifestEntry = Object.values(clientManifest).find((entry: any) =>
461
+ entry && entry.name === 'page'
462
+ ) as any;
463
+ if (manifestEntry && manifestEntry.chunks && manifestEntry.chunks[0]) {
464
+ clientScript = '/' + manifestEntry.chunks[0];
465
+ } else if (Object.keys(clientManifest).length > 0) {
466
+ // Fallback to first asset in manifest
467
+ clientScript = '/' + Object.keys(clientManifest)[0];
468
+ }
469
+ }
470
+
471
+ // Build full HTML
472
+ const fullHtml = renderFarmLegacyHtml({
473
+ deploymentId: farmRegistry.deploymentId || '',
474
+ pageProps,
475
+ pathname,
476
+ html,
477
+ clientScript,
478
+ });
479
+
480
+ setHeader(event, 'Content-Type', 'text/html; charset=utf-8');
481
+ return fullHtml;
482
+
483
+ } catch (renderError: any) {
484
+ console.error('SSR render error:', renderError);
485
+ setResponseStatus(event, 500);
486
+ setHeader(event, 'Content-Type', 'text/html; charset=utf-8');
487
+ return renderFarmLegacyErrorHtml();
488
+ }
489
+ } catch (error: any) {
490
+ console.error('SSR handler error:', error);
491
+ setResponseStatus(event, 500);
492
+ setHeader(event, 'Content-Type', 'text/html; charset=utf-8');
493
+ return renderFarmLegacyErrorHtml();
494
+ }
495
+ });
496
+ `,
497
+ "utf-8"
498
+ );
499
+ const nitroConfig = {
500
+ preset,
501
+ // rootDir must be the project root for Nitro to correctly resolve paths
502
+ rootDir: root,
503
+ // serverDir should point to where source files are (for scanning)
504
+ // But we're using scanDirs to point to our server directory
505
+ serverDir: root,
506
+ // buildDir is where Nitro builds (temporary working directory)
507
+ buildDir: nitroBuildDir,
508
+ // output.dir is where the final deployable output goes
509
+ // This ensures everything ends up in .farm/.output
510
+ compatibilityDate: "2024-12-01",
511
+ // Tell Nitro to scan the server directory we created
512
+ // This ensures our handlers are discovered by Nitro
513
+ scanDirs: [serverDir],
514
+ tasks: {
515
+ ...farmWorkflows.tasks,
516
+ ...farmCron.tasks
517
+ },
518
+ scheduledTasks,
519
+ ...preset === "cloudflare-module" && cloudflareCronConfig ? {
520
+ cloudflare: cloudflareCronConfig
521
+ } : {},
522
+ handlers: farmWorkflows.handlerPath ? [
523
+ {
524
+ route: `${config.workflows.route}/**`,
525
+ handler: farmWorkflows.handlerPath
526
+ }
527
+ ] : [],
528
+ // Route rules for Vercel
529
+ routeRules: {
530
+ "/**": {
531
+ prerender: false
532
+ },
533
+ ..._chunkGDSHDTJ4cjs.routeRulesToNitroRouteRules.call(void 0, config.routeRules)
534
+ },
535
+ // // Exclude certain directories from scanning
536
+ // scanDirsExclude: [
537
+ // '**/node_modules/**',
538
+ // '**/.git/**',
539
+ // '**/.output/**',
540
+ // '**/.nitro/**',
541
+ // ],
542
+ output: {
543
+ // CRITICAL: All output MUST go to .farm/.output (NOT .nitro/.output)
544
+ // This ensures consistency and that deployment always uses .farm/.output
545
+ // By explicitly setting dir, serverDir, and publicDir, we prevent Nitro
546
+ // from creating its own .output directory inside .nitro
547
+ dir: outputDir,
548
+ // .farm/.output
549
+ serverDir: _path2.default.join(outputDir, "server"),
550
+ // .farm/.output/server
551
+ publicDir: _path2.default.join(outputDir, "public")
552
+ // .farm/.output/public
553
+ },
554
+ // Use Nitro hooks to populate the runtime registry
555
+ // This allows us to pass complex objects (route managers, renderers) at runtime
556
+ hooks: {
557
+ "build:before": /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async (nitro) => {
558
+ const registryPath = _path2.default.join(serverDir, "farm-registry.ts");
559
+ const { farmRegistry } = await import(
560
+ /* @vite-ignore */
561
+ registryPath
562
+ );
563
+ const routePaths2 = {};
564
+ for (const [pattern, entry] of routeManager.getRoutes()) {
565
+ const bundledPath = entry.modulePath.replace(/.*\/src\/app\//, "").replace(/\.(tsx?|jsx?)$/, ".js");
566
+ routePaths2[pattern] = bundledPath;
567
+ }
568
+ farmRegistry.routePaths = routePaths2;
569
+ try {
570
+ const clientManifestPath2 = _path2.default.join(
571
+ root,
572
+ distDir,
573
+ "client",
574
+ "farm-client-manifest.json"
575
+ );
576
+ const { readFile } = await import("fs/promises");
577
+ const manifestContent = await readFile(clientManifestPath2, "utf-8");
578
+ farmRegistry.clientManifest = JSON.parse(manifestContent);
579
+ } catch (error) {
580
+ farmRegistry.clientManifest = {};
581
+ }
582
+ farmRegistry.__INIT__ = () => {
583
+ farmRegistry.apiRouteManager = apiRouteManager;
584
+ farmRegistry.routeManager = routeManager;
585
+ farmRegistry.serverRenderer = serverRenderer;
586
+ farmRegistry.env = _chunkVEKFLAQMcjs.createBundledEnv.call(void 0, config.env);
587
+ farmRegistry.deploymentId = config.deploymentId;
588
+ farmRegistry.basePath = config.basePath;
589
+ };
590
+ if (typeof globalThis !== "undefined") {
591
+ globalThis.__FARM_REGISTRY__ = {
592
+ apiRouteManager,
593
+ routeManager,
594
+ serverRenderer,
595
+ env: farmRegistry.env,
596
+ deploymentId: farmRegistry.deploymentId,
597
+ basePath: farmRegistry.basePath,
598
+ clientManifest: farmRegistry.clientManifest,
599
+ routePaths: farmRegistry.routePaths
600
+ };
601
+ }
602
+ }, "build:before")
603
+ },
604
+ // API base URL (default is /api)
605
+ apiBaseURL: "/api",
606
+ // Include public directory and client build
607
+ publicAssets: [
608
+ {
609
+ baseURL: "/",
610
+ dir: _path2.default.join(root, "public")
611
+ },
612
+ // Include client build assets
613
+ {
614
+ baseURL: "/",
615
+ dir: _path2.default.join(root, distDir, "client")
616
+ }
617
+ ],
618
+ // Build configuration
619
+ minify: process.env.NODE_ENV === "production",
620
+ sourcemap: true,
621
+ // Bundle all dependencies to avoid workspace issues on Vercel
622
+ // This ensures all farm package code is bundled into the serverless function
623
+ // so it doesn't need to resolve workspace dependencies at runtime
624
+ // This is similar to how Next.js and Nuxt bundle their core packages
625
+ // bundle: true,
626
+ // External dependencies that should NOT be bundled (provided by runtime)
627
+ // We exclude React/ReactDOM to reduce bundle size (they're in node_modules)
628
+ rollupConfig: {
629
+ external: ["react", "react-dom"]
630
+ },
631
+ // Runtime config
632
+ runtimeConfig: {
633
+ public: {}
634
+ },
635
+ // Experimental features
636
+ experimental: {
637
+ tasks: farmWorkflows.workflows.length > 0 || farmCron.jobs.length > 0
638
+ },
639
+ wasm: false
640
+ // Disable for now to avoid issues
641
+ };
642
+ return nitroConfig;
643
+ }
644
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createNitroConfig, "createNitroConfig");
645
+ function getNitroPreset(preset) {
646
+ return preset || "node-server";
647
+ }
648
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getNitroPreset, "getNitroPreset");
649
+
650
+
651
+
652
+ exports.createNitroConfig = createNitroConfig; exports.getNitroPreset = getNitroPreset;
@@ -5,15 +5,15 @@ import {
5
5
  createFarmCronCloudflareConfig,
6
6
  mergeScheduledTasks,
7
7
  prepareFarmCronForNitro
8
- } from "./chunk-4L7SZOHZ.mjs";
8
+ } from "./chunk-YHOCRI4H.mjs";
9
9
  import {
10
10
  createBundledEnv
11
- } from "./chunk-7HDZYYS4.mjs";
11
+ } from "./chunk-4OOBRCJX.mjs";
12
12
  import {
13
13
  prepareFarmWorkflowsForNitro
14
- } from "./chunk-MUUZJLCI.mjs";
15
- import "./chunk-ONUEYC6N.mjs";
14
+ } from "./chunk-EGJDUF4Q.mjs";
16
15
  import "./chunk-2UC36WAC.mjs";
16
+ import "./chunk-ONUEYC6N.mjs";
17
17
  import {
18
18
  resolveFarmAPIServerBasePath
19
19
  } from "./chunk-I6XDAKWQ.mjs";