@farm.js/core 0.1.0-beta.5 → 0.1.0-beta.6

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 (424) hide show
  1. package/package.json +1 -1
  2. package/dist/after.cjs +0 -227
  3. package/dist/after.cjs.map +0 -1
  4. package/dist/after.d.mts +0 -25
  5. package/dist/after.d.ts +0 -25
  6. package/dist/after.mjs +0 -14
  7. package/dist/after.mjs.map +0 -1
  8. package/dist/agent-runtime.cjs +0 -2379
  9. package/dist/agent-runtime.cjs.map +0 -1
  10. package/dist/agent-runtime.d.mts +0 -94
  11. package/dist/agent-runtime.d.ts +0 -94
  12. package/dist/agent-runtime.mjs +0 -479
  13. package/dist/agent-runtime.mjs.map +0 -1
  14. package/dist/api/route-manager.d.mts +0 -66
  15. package/dist/api/route-manager.d.ts +0 -66
  16. package/dist/api/runtime.d.mts +0 -3
  17. package/dist/api/runtime.d.ts +0 -3
  18. package/dist/api.cjs +0 -4100
  19. package/dist/api.cjs.map +0 -1
  20. package/dist/api.d.mts +0 -48
  21. package/dist/api.d.ts +0 -48
  22. package/dist/api.mjs +0 -93
  23. package/dist/api.mjs.map +0 -1
  24. package/dist/app-BjN-da13.d.ts +0 -300
  25. package/dist/app-CakAr8Be.d.mts +0 -300
  26. package/dist/app-markdown.cjs +0 -220
  27. package/dist/app-markdown.cjs.map +0 -1
  28. package/dist/app-markdown.d.mts +0 -22
  29. package/dist/app-markdown.d.ts +0 -22
  30. package/dist/app-markdown.mjs +0 -26
  31. package/dist/app-markdown.mjs.map +0 -1
  32. package/dist/cache.cjs +0 -945
  33. package/dist/cache.cjs.map +0 -1
  34. package/dist/cache.d.mts +0 -192
  35. package/dist/cache.d.ts +0 -192
  36. package/dist/cache.mjs +0 -46
  37. package/dist/cache.mjs.map +0 -1
  38. package/dist/chunk-2CUKEMVR.mjs +0 -872
  39. package/dist/chunk-2CUKEMVR.mjs.map +0 -1
  40. package/dist/chunk-2ED5Q2GH.mjs +0 -422
  41. package/dist/chunk-2ED5Q2GH.mjs.map +0 -1
  42. package/dist/chunk-2NHCNRF6.mjs +0 -6241
  43. package/dist/chunk-2NHCNRF6.mjs.map +0 -1
  44. package/dist/chunk-32W4QEJP.mjs +0 -158
  45. package/dist/chunk-32W4QEJP.mjs.map +0 -1
  46. package/dist/chunk-3XNTL3FQ.mjs +0 -452
  47. package/dist/chunk-3XNTL3FQ.mjs.map +0 -1
  48. package/dist/chunk-44ZCFSKE.mjs +0 -84
  49. package/dist/chunk-44ZCFSKE.mjs.map +0 -1
  50. package/dist/chunk-4S3ORGFA.mjs +0 -44
  51. package/dist/chunk-4S3ORGFA.mjs.map +0 -1
  52. package/dist/chunk-5BY76U2M.mjs +0 -1
  53. package/dist/chunk-5BY76U2M.mjs.map +0 -1
  54. package/dist/chunk-5ZGPRGWV.mjs +0 -136
  55. package/dist/chunk-5ZGPRGWV.mjs.map +0 -1
  56. package/dist/chunk-65A7QIKI.mjs +0 -142
  57. package/dist/chunk-65A7QIKI.mjs.map +0 -1
  58. package/dist/chunk-74YTBPTY.mjs +0 -450
  59. package/dist/chunk-74YTBPTY.mjs.map +0 -1
  60. package/dist/chunk-7HO6AEOP.mjs +0 -74
  61. package/dist/chunk-7HO6AEOP.mjs.map +0 -1
  62. package/dist/chunk-7MABZJIM.mjs +0 -29
  63. package/dist/chunk-7MABZJIM.mjs.map +0 -1
  64. package/dist/chunk-7N62DNSO.mjs +0 -41
  65. package/dist/chunk-7N62DNSO.mjs.map +0 -1
  66. package/dist/chunk-7ZY5AIJO.mjs +0 -161
  67. package/dist/chunk-7ZY5AIJO.mjs.map +0 -1
  68. package/dist/chunk-A2LUXHD2.mjs +0 -7631
  69. package/dist/chunk-A2LUXHD2.mjs.map +0 -1
  70. package/dist/chunk-ALCLXXTY.mjs +0 -187
  71. package/dist/chunk-ALCLXXTY.mjs.map +0 -1
  72. package/dist/chunk-AZ7YUVNR.mjs +0 -65
  73. package/dist/chunk-AZ7YUVNR.mjs.map +0 -1
  74. package/dist/chunk-B232I2GP.mjs +0 -163
  75. package/dist/chunk-B232I2GP.mjs.map +0 -1
  76. package/dist/chunk-BHG3LVHH.mjs +0 -176
  77. package/dist/chunk-BHG3LVHH.mjs.map +0 -1
  78. package/dist/chunk-C2ROET2V.mjs +0 -718
  79. package/dist/chunk-C2ROET2V.mjs.map +0 -1
  80. package/dist/chunk-C3DLZMBU.mjs +0 -597
  81. package/dist/chunk-C3DLZMBU.mjs.map +0 -1
  82. package/dist/chunk-CGILA3WO.mjs +0 -14
  83. package/dist/chunk-CGILA3WO.mjs.map +0 -1
  84. package/dist/chunk-E2MPIBRE.mjs +0 -149
  85. package/dist/chunk-E2MPIBRE.mjs.map +0 -1
  86. package/dist/chunk-E6EPN5BT.mjs +0 -203
  87. package/dist/chunk-E6EPN5BT.mjs.map +0 -1
  88. package/dist/chunk-EEABSBKK.mjs +0 -10
  89. package/dist/chunk-EEABSBKK.mjs.map +0 -1
  90. package/dist/chunk-EJ7T4TPB.mjs +0 -622
  91. package/dist/chunk-EJ7T4TPB.mjs.map +0 -1
  92. package/dist/chunk-FQYDHKKU.mjs +0 -128
  93. package/dist/chunk-FQYDHKKU.mjs.map +0 -1
  94. package/dist/chunk-FRPWCMMG.mjs +0 -299
  95. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  96. package/dist/chunk-GN72QAIH.mjs +0 -146
  97. package/dist/chunk-GN72QAIH.mjs.map +0 -1
  98. package/dist/chunk-GQVGIUSN.mjs +0 -149
  99. package/dist/chunk-GQVGIUSN.mjs.map +0 -1
  100. package/dist/chunk-GS6K5OCM.mjs +0 -407
  101. package/dist/chunk-GS6K5OCM.mjs.map +0 -1
  102. package/dist/chunk-GXASWWJU.mjs +0 -364
  103. package/dist/chunk-GXASWWJU.mjs.map +0 -1
  104. package/dist/chunk-GY2STC2S.mjs +0 -180
  105. package/dist/chunk-GY2STC2S.mjs.map +0 -1
  106. package/dist/chunk-H2FA2SBS.mjs +0 -51
  107. package/dist/chunk-H2FA2SBS.mjs.map +0 -1
  108. package/dist/chunk-HNIQFZKB.mjs +0 -3550
  109. package/dist/chunk-HNIQFZKB.mjs.map +0 -1
  110. package/dist/chunk-ITN462YM.mjs +0 -98
  111. package/dist/chunk-ITN462YM.mjs.map +0 -1
  112. package/dist/chunk-J23HNLFY.mjs +0 -72
  113. package/dist/chunk-J23HNLFY.mjs.map +0 -1
  114. package/dist/chunk-J4FNJ5IU.mjs +0 -179
  115. package/dist/chunk-J4FNJ5IU.mjs.map +0 -1
  116. package/dist/chunk-J5YWQVI5.mjs +0 -211
  117. package/dist/chunk-J5YWQVI5.mjs.map +0 -1
  118. package/dist/chunk-JDEOUK5V.mjs +0 -427
  119. package/dist/chunk-JDEOUK5V.mjs.map +0 -1
  120. package/dist/chunk-JK25YEN6.mjs +0 -219
  121. package/dist/chunk-JK25YEN6.mjs.map +0 -1
  122. package/dist/chunk-K4667E2Q.mjs +0 -1916
  123. package/dist/chunk-K4667E2Q.mjs.map +0 -1
  124. package/dist/chunk-LGHEOHBU.mjs +0 -218
  125. package/dist/chunk-LGHEOHBU.mjs.map +0 -1
  126. package/dist/chunk-LLC7BNXW.mjs +0 -275
  127. package/dist/chunk-LLC7BNXW.mjs.map +0 -1
  128. package/dist/chunk-LM2YNO4U.mjs +0 -24
  129. package/dist/chunk-LM2YNO4U.mjs.map +0 -1
  130. package/dist/chunk-MIUW47JX.mjs +0 -639
  131. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  132. package/dist/chunk-NM3CRAAL.mjs +0 -467
  133. package/dist/chunk-NM3CRAAL.mjs.map +0 -1
  134. package/dist/chunk-NNLCAVB6.mjs +0 -391
  135. package/dist/chunk-NNLCAVB6.mjs.map +0 -1
  136. package/dist/chunk-P7QDS5AT.mjs +0 -191
  137. package/dist/chunk-P7QDS5AT.mjs.map +0 -1
  138. package/dist/chunk-PFE6GMNE.mjs +0 -603
  139. package/dist/chunk-PFE6GMNE.mjs.map +0 -1
  140. package/dist/chunk-QGOHVJ6J.mjs +0 -63
  141. package/dist/chunk-QGOHVJ6J.mjs.map +0 -1
  142. package/dist/chunk-QGQX7SFC.mjs +0 -180
  143. package/dist/chunk-QGQX7SFC.mjs.map +0 -1
  144. package/dist/chunk-QKVUNGAH.mjs +0 -39
  145. package/dist/chunk-QKVUNGAH.mjs.map +0 -1
  146. package/dist/chunk-QM746KUO.mjs +0 -56
  147. package/dist/chunk-QM746KUO.mjs.map +0 -1
  148. package/dist/chunk-QTZZ2ISQ.mjs +0 -753
  149. package/dist/chunk-QTZZ2ISQ.mjs.map +0 -1
  150. package/dist/chunk-RBRLLZL5.mjs +0 -81
  151. package/dist/chunk-RBRLLZL5.mjs.map +0 -1
  152. package/dist/chunk-RHIFZZUI.mjs +0 -69
  153. package/dist/chunk-RHIFZZUI.mjs.map +0 -1
  154. package/dist/chunk-RSKVYESE.mjs +0 -187
  155. package/dist/chunk-RSKVYESE.mjs.map +0 -1
  156. package/dist/chunk-SCFX4UTD.mjs +0 -28
  157. package/dist/chunk-SCFX4UTD.mjs.map +0 -1
  158. package/dist/chunk-SL6HTIOK.mjs +0 -66
  159. package/dist/chunk-SL6HTIOK.mjs.map +0 -1
  160. package/dist/chunk-SPBBQLXI.mjs +0 -207
  161. package/dist/chunk-SPBBQLXI.mjs.map +0 -1
  162. package/dist/chunk-T4QJQK76.mjs +0 -459
  163. package/dist/chunk-T4QJQK76.mjs.map +0 -1
  164. package/dist/chunk-TQAEEJB4.mjs +0 -157
  165. package/dist/chunk-TQAEEJB4.mjs.map +0 -1
  166. package/dist/chunk-UB5UOSHB.mjs +0 -458
  167. package/dist/chunk-UB5UOSHB.mjs.map +0 -1
  168. package/dist/chunk-USWZZUEH.mjs +0 -25
  169. package/dist/chunk-USWZZUEH.mjs.map +0 -1
  170. package/dist/chunk-UVCIEUJC.mjs +0 -16
  171. package/dist/chunk-UVCIEUJC.mjs.map +0 -1
  172. package/dist/chunk-UXUAWNO5.mjs +0 -396
  173. package/dist/chunk-UXUAWNO5.mjs.map +0 -1
  174. package/dist/chunk-V3XURYJO.mjs +0 -756
  175. package/dist/chunk-V3XURYJO.mjs.map +0 -1
  176. package/dist/chunk-V6WE6JSZ.mjs +0 -352
  177. package/dist/chunk-V6WE6JSZ.mjs.map +0 -1
  178. package/dist/chunk-V7RBCSDJ.mjs +0 -170
  179. package/dist/chunk-V7RBCSDJ.mjs.map +0 -1
  180. package/dist/chunk-VCANOYFI.mjs +0 -588
  181. package/dist/chunk-VCANOYFI.mjs.map +0 -1
  182. package/dist/chunk-VY2UYN5R.mjs +0 -224
  183. package/dist/chunk-VY2UYN5R.mjs.map +0 -1
  184. package/dist/chunk-W2CRQFF6.mjs +0 -1352
  185. package/dist/chunk-W2CRQFF6.mjs.map +0 -1
  186. package/dist/chunk-WZ5QFROO.mjs +0 -23
  187. package/dist/chunk-WZ5QFROO.mjs.map +0 -1
  188. package/dist/chunk-XIVV5IWN.mjs +0 -541
  189. package/dist/chunk-XIVV5IWN.mjs.map +0 -1
  190. package/dist/chunk-YW7OBE6Q.mjs +0 -119
  191. package/dist/chunk-YW7OBE6Q.mjs.map +0 -1
  192. package/dist/chunk-Z5CQMP54.mjs +0 -365
  193. package/dist/chunk-Z5CQMP54.mjs.map +0 -1
  194. package/dist/chunk-ZBE6MLHL.mjs +0 -230
  195. package/dist/chunk-ZBE6MLHL.mjs.map +0 -1
  196. package/dist/chunk-ZZ57EH5Z.mjs +0 -173
  197. package/dist/chunk-ZZ57EH5Z.mjs.map +0 -1
  198. package/dist/client-BT1mFQas.d.mts +0 -447
  199. package/dist/client-Nn0q4eO4.d.ts +0 -447
  200. package/dist/client-cache-CIlyBlmx.d.ts +0 -6
  201. package/dist/client-cache-D-EZ7XVW.d.mts +0 -6
  202. package/dist/client-plugins-Cw4qUGsw.d.ts +0 -1855
  203. package/dist/client-plugins-DQQ1adXM.d.mts +0 -1855
  204. package/dist/client-plugins.cjs +0 -415
  205. package/dist/client-plugins.cjs.map +0 -1
  206. package/dist/client-plugins.d.mts +0 -22
  207. package/dist/client-plugins.d.ts +0 -22
  208. package/dist/client-plugins.mjs +0 -10
  209. package/dist/client-plugins.mjs.map +0 -1
  210. package/dist/client.cjs +0 -5402
  211. package/dist/client.cjs.map +0 -1
  212. package/dist/client.d.mts +0 -447
  213. package/dist/client.d.ts +0 -447
  214. package/dist/client.mjs +0 -110
  215. package/dist/client.mjs.map +0 -1
  216. package/dist/config.cjs +0 -38
  217. package/dist/config.cjs.map +0 -1
  218. package/dist/config.d.mts +0 -29
  219. package/dist/config.d.ts +0 -29
  220. package/dist/config.mjs +0 -10
  221. package/dist/config.mjs.map +0 -1
  222. package/dist/cron.cjs +0 -406
  223. package/dist/cron.cjs.map +0 -1
  224. package/dist/cron.d.mts +0 -78
  225. package/dist/cron.d.ts +0 -78
  226. package/dist/cron.mjs +0 -30
  227. package/dist/cron.mjs.map +0 -1
  228. package/dist/deferred.cjs +0 -438
  229. package/dist/deferred.cjs.map +0 -1
  230. package/dist/deferred.d.mts +0 -42
  231. package/dist/deferred.d.ts +0 -42
  232. package/dist/deferred.mjs +0 -28
  233. package/dist/deferred.mjs.map +0 -1
  234. package/dist/deployment.cjs +0 -199
  235. package/dist/deployment.cjs.map +0 -1
  236. package/dist/deployment.d.mts +0 -34
  237. package/dist/deployment.d.ts +0 -34
  238. package/dist/deployment.mjs +0 -38
  239. package/dist/deployment.mjs.map +0 -1
  240. package/dist/devtools-LVC3VB5P.mjs +0 -370
  241. package/dist/devtools-LVC3VB5P.mjs.map +0 -1
  242. package/dist/devtools-client-3XRTBND5.mjs +0 -216
  243. package/dist/devtools-client-3XRTBND5.mjs.map +0 -1
  244. package/dist/devtools-ui-NJKFORTG.mjs +0 -1349
  245. package/dist/devtools-ui-NJKFORTG.mjs.map +0 -1
  246. package/dist/docs.cjs +0 -5553
  247. package/dist/docs.cjs.map +0 -1
  248. package/dist/docs.d.mts +0 -69
  249. package/dist/docs.d.ts +0 -69
  250. package/dist/docs.mjs +0 -46
  251. package/dist/docs.mjs.map +0 -1
  252. package/dist/env-types.cjs +0 -223
  253. package/dist/env-types.cjs.map +0 -1
  254. package/dist/env-types.d.mts +0 -11
  255. package/dist/env-types.d.ts +0 -11
  256. package/dist/env-types.mjs +0 -9
  257. package/dist/env-types.mjs.map +0 -1
  258. package/dist/env.cjs +0 -215
  259. package/dist/env.cjs.map +0 -1
  260. package/dist/env.d.mts +0 -45
  261. package/dist/env.d.ts +0 -45
  262. package/dist/env.mjs +0 -22
  263. package/dist/env.mjs.map +0 -1
  264. package/dist/environment/vite.d.mts +0 -22
  265. package/dist/environment/vite.d.ts +0 -22
  266. package/dist/environment.cjs +0 -96
  267. package/dist/environment.cjs.map +0 -1
  268. package/dist/environment.d.mts +0 -18
  269. package/dist/environment.d.ts +0 -18
  270. package/dist/environment.mjs +0 -14
  271. package/dist/environment.mjs.map +0 -1
  272. package/dist/headers.cjs +0 -126
  273. package/dist/headers.cjs.map +0 -1
  274. package/dist/headers.d.mts +0 -22
  275. package/dist/headers.d.ts +0 -22
  276. package/dist/headers.mjs +0 -12
  277. package/dist/headers.mjs.map +0 -1
  278. package/dist/i18n/client.d.mts +0 -32
  279. package/dist/i18n/client.d.ts +0 -32
  280. package/dist/i18n/index.d.mts +0 -20
  281. package/dist/i18n/index.d.ts +0 -20
  282. package/dist/i18n/server.d.mts +0 -30
  283. package/dist/i18n/server.d.ts +0 -30
  284. package/dist/image/server.d.mts +0 -37
  285. package/dist/image/server.d.ts +0 -37
  286. package/dist/image/sharp.d.mts +0 -7
  287. package/dist/image/sharp.d.ts +0 -7
  288. package/dist/image-config-Duob7wER.d.mts +0 -50
  289. package/dist/image-config-Duob7wER.d.ts +0 -50
  290. package/dist/image.cjs +0 -209
  291. package/dist/image.cjs.map +0 -1
  292. package/dist/image.d.mts +0 -39
  293. package/dist/image.d.ts +0 -39
  294. package/dist/image.mjs +0 -165
  295. package/dist/image.mjs.map +0 -1
  296. package/dist/index.cjs +0 -41822
  297. package/dist/index.cjs.map +0 -1
  298. package/dist/index.d.mts +0 -451
  299. package/dist/index.d.ts +0 -451
  300. package/dist/index.mjs +0 -973
  301. package/dist/index.mjs.map +0 -1
  302. package/dist/integration-api-CHT2OKAf.d.mts +0 -93
  303. package/dist/integration-api-CHT2OKAf.d.ts +0 -93
  304. package/dist/integration-orm-GQLGU66X.mjs +0 -13
  305. package/dist/integration-orm-GQLGU66X.mjs.map +0 -1
  306. package/dist/integrations.cjs +0 -2820
  307. package/dist/integrations.cjs.map +0 -1
  308. package/dist/integrations.d.mts +0 -22
  309. package/dist/integrations.d.ts +0 -22
  310. package/dist/integrations.mjs +0 -51
  311. package/dist/integrations.mjs.map +0 -1
  312. package/dist/internal/build-runtime.d.mts +0 -39
  313. package/dist/internal/build-runtime.d.ts +0 -39
  314. package/dist/internal/client-runtime.d.mts +0 -2
  315. package/dist/internal/client-runtime.d.ts +0 -2
  316. package/dist/internal/config-runtime.d.mts +0 -39
  317. package/dist/internal/config-runtime.d.ts +0 -39
  318. package/dist/internal/production-node-env.d.mts +0 -12
  319. package/dist/internal/production-node-env.d.ts +0 -12
  320. package/dist/internal/production-runtime.d.mts +0 -39
  321. package/dist/internal/production-runtime.d.ts +0 -39
  322. package/dist/layers-VWVDTPUZ.mjs +0 -16
  323. package/dist/layers-VWVDTPUZ.mjs.map +0 -1
  324. package/dist/manager-THKFTOFE.mjs +0 -10
  325. package/dist/manager-THKFTOFE.mjs.map +0 -1
  326. package/dist/markdown.cjs +0 -299
  327. package/dist/markdown.cjs.map +0 -1
  328. package/dist/markdown.d.mts +0 -43
  329. package/dist/markdown.d.ts +0 -43
  330. package/dist/markdown.mjs +0 -14
  331. package/dist/markdown.mjs.map +0 -1
  332. package/dist/metadata-BAPg_Nmo.d.ts +0 -22
  333. package/dist/metadata-_6i9oFG3.d.mts +0 -22
  334. package/dist/middleware.cjs +0 -2148
  335. package/dist/middleware.cjs.map +0 -1
  336. package/dist/middleware.d.mts +0 -164
  337. package/dist/middleware.d.ts +0 -164
  338. package/dist/middleware.mjs +0 -49
  339. package/dist/middleware.mjs.map +0 -1
  340. package/dist/navigation-errors-Dvwpzaer.d.mts +0 -13
  341. package/dist/navigation-errors-Dvwpzaer.d.ts +0 -13
  342. package/dist/navigation.cjs +0 -1329
  343. package/dist/navigation.cjs.map +0 -1
  344. package/dist/navigation.d.mts +0 -14
  345. package/dist/navigation.d.ts +0 -14
  346. package/dist/navigation.mjs +0 -33
  347. package/dist/navigation.mjs.map +0 -1
  348. package/dist/nitro-QO5LV6QK.mjs +0 -689
  349. package/dist/nitro-QO5LV6QK.mjs.map +0 -1
  350. package/dist/observability.cjs +0 -186
  351. package/dist/observability.cjs.map +0 -1
  352. package/dist/observability.d.mts +0 -335
  353. package/dist/observability.d.ts +0 -335
  354. package/dist/observability.mjs +0 -16
  355. package/dist/observability.mjs.map +0 -1
  356. package/dist/params-BALtrRim.d.ts +0 -15
  357. package/dist/params-ry-lxqmy.d.mts +0 -15
  358. package/dist/plugin-BJDf43dc.d.mts +0 -165
  359. package/dist/plugin-BJDf43dc.d.ts +0 -165
  360. package/dist/plugin.cjs +0 -23225
  361. package/dist/plugin.d.mts +0 -22
  362. package/dist/plugin.d.ts +0 -22
  363. package/dist/production-runtime-BoJDc5mc.d.ts +0 -79
  364. package/dist/production-runtime-C_B79w2P.d.mts +0 -28
  365. package/dist/production-runtime-DDEM1D2q.d.ts +0 -28
  366. package/dist/production-runtime-DPfgMV9Y.d.mts +0 -79
  367. package/dist/query/client.d.mts +0 -61
  368. package/dist/query/client.d.ts +0 -61
  369. package/dist/query/index.d.mts +0 -90
  370. package/dist/query/index.d.ts +0 -90
  371. package/dist/query/parsers.d.mts +0 -25
  372. package/dist/query/parsers.d.ts +0 -25
  373. package/dist/query/server.d.mts +0 -55
  374. package/dist/query/server.d.ts +0 -55
  375. package/dist/request-BrFBuc8G.d.mts +0 -6
  376. package/dist/request-BslSZIRz.d.ts +0 -6
  377. package/dist/request.d.mts +0 -2
  378. package/dist/request.d.ts +0 -2
  379. package/dist/resolver-C6iecsDV.d.ts +0 -14
  380. package/dist/resolver-DlOPpjkB.d.mts +0 -14
  381. package/dist/route-runtime-DoOHzCAD.d.mts +0 -38
  382. package/dist/route-runtime-DoOHzCAD.d.ts +0 -38
  383. package/dist/router.d.mts +0 -36
  384. package/dist/router.d.ts +0 -36
  385. package/dist/routes.d.mts +0 -224
  386. package/dist/routes.d.ts +0 -224
  387. package/dist/runtime-9nQjVM7X.d.mts +0 -206
  388. package/dist/runtime-B6GvwDS1.d.ts +0 -27
  389. package/dist/runtime-DeAAZ6gO.d.mts +0 -27
  390. package/dist/runtime-DgeS2skB.d.ts +0 -206
  391. package/dist/server-action-security.d.mts +0 -43
  392. package/dist/server-action-security.d.ts +0 -43
  393. package/dist/server-fn-client.d.mts +0 -32
  394. package/dist/server-fn-client.d.ts +0 -32
  395. package/dist/server-fn.d.mts +0 -93
  396. package/dist/server-fn.d.ts +0 -93
  397. package/dist/server-plugins.d.mts +0 -55
  398. package/dist/server-plugins.d.ts +0 -55
  399. package/dist/server-query-client.d.mts +0 -50
  400. package/dist/server-query-client.d.ts +0 -50
  401. package/dist/server-query.d.mts +0 -36
  402. package/dist/server-query.d.ts +0 -36
  403. package/dist/server.d.mts +0 -48
  404. package/dist/server.d.ts +0 -48
  405. package/dist/storage.d.mts +0 -52
  406. package/dist/storage.d.ts +0 -52
  407. package/dist/testing.d.mts +0 -101
  408. package/dist/testing.d.ts +0 -101
  409. package/dist/transport-BmbGTXA5.d.mts +0 -49
  410. package/dist/transport-BmbGTXA5.d.ts +0 -49
  411. package/dist/types-BH1lhg5G.d.mts +0 -81
  412. package/dist/types-BH1lhg5G.d.ts +0 -81
  413. package/dist/types-C9N-nk5R.d.mts +0 -53
  414. package/dist/types-C9N-nk5R.d.ts +0 -53
  415. package/dist/types-D1A6-XvH.d.mts +0 -73
  416. package/dist/types-D1A6-XvH.d.ts +0 -73
  417. package/dist/utils-CHXlMDkg.d.mts +0 -23
  418. package/dist/utils-Drsyz1Vj.d.ts +0 -23
  419. package/dist/version.d.mts +0 -3
  420. package/dist/version.d.ts +0 -3
  421. package/dist/vite.d.mts +0 -22
  422. package/dist/vite.d.ts +0 -22
  423. package/dist/workflows.d.mts +0 -110
  424. package/dist/workflows.d.ts +0 -110
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/middleware/context.ts","../src/middleware/manager.ts"],"sourcesContent":["/**\n * Middleware Context Implementation\n */\n\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport type { ViteDevServer } from \"vite\";\nimport type { MiddlewareContext, CookieJar, CookieOptions } from \"./types\";\n\n/**\n * Parse cookies from Cookie header\n */\nfunction parseCookies(cookieHeader?: string): Record<string, string> {\n if (!cookieHeader) return {};\n\n return cookieHeader.split(\";\").reduce(\n (cookies, cookie) => {\n const [name, ...rest] = cookie.split(\"=\");\n const value = rest.join(\"=\").trim();\n if (name && value) {\n cookies[name.trim()] = decodeURIComponent(value);\n }\n return cookies;\n },\n {} as Record<string, string>,\n );\n}\n\n/**\n * Serialize a cookie\n */\nfunction serializeCookie(name: string, value: string, options: CookieOptions = {}): string {\n let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n\n if (options.maxAge) {\n cookie += `; Max-Age=${options.maxAge}`;\n }\n\n if (options.expires) {\n cookie += `; Expires=${options.expires.toUTCString()}`;\n }\n\n if (options.path) {\n cookie += `; Path=${options.path}`;\n } else {\n cookie += \"; Path=/\";\n }\n\n if (options.domain) {\n cookie += `; Domain=${options.domain}`;\n }\n\n if (options.secure) {\n cookie += \"; Secure\";\n }\n\n if (options.httpOnly) {\n cookie += \"; HttpOnly\";\n }\n\n if (options.sameSite) {\n cookie += `; SameSite=${options.sameSite.charAt(0).toUpperCase() + options.sameSite.slice(1)}`;\n }\n\n return cookie;\n}\n\n/**\n * Cookie Jar implementation\n */\nclass CookieJarImpl implements CookieJar {\n private cookies: Record<string, string>;\n private setCookies: string[] = [];\n\n constructor(\n private req: IncomingMessage,\n private res: ServerResponse,\n ) {\n this.cookies = parseCookies(req.headers.cookie);\n }\n\n get(name: string): string | undefined {\n return this.cookies[name];\n }\n\n set(name: string, value: string, options: CookieOptions = {}): void {\n this.cookies[name] = value;\n const cookieString = serializeCookie(name, value, options);\n this.setCookies.push(cookieString);\n\n // Update Set-Cookie header\n this.res.setHeader(\"Set-Cookie\", this.setCookies);\n }\n\n delete(name: string): void {\n delete this.cookies[name];\n const cookieString = serializeCookie(name, \"\", {\n maxAge: 0,\n expires: new Date(0),\n });\n this.setCookies.push(cookieString);\n this.res.setHeader(\"Set-Cookie\", this.setCookies);\n }\n\n getAll(): Record<string, string> {\n return { ...this.cookies };\n }\n}\n\n/**\n * Create a middleware context from request/response\n */\nexport function createContext(\n req: IncomingMessage,\n res: ServerResponse,\n viteServer?: ViteDevServer,\n parent?: MiddlewareContext[\"parent\"],\n): MiddlewareContext {\n const url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n const headers = new Map<string, string>();\n const data = parent?.data ? new Map(parent.data) : new Map<string, any>();\n const locals = parent?.locals ? new Map(parent.locals) : new Map<string, any>();\n const cookies = new CookieJarImpl(req, res);\n\n // Copy existing headers\n Object.entries(req.headers).forEach(([key, value]) => {\n if (typeof value === \"string\") {\n headers.set(key, value);\n } else if (Array.isArray(value)) {\n headers.set(key, value.join(\", \"));\n }\n });\n\n if (parent?.headers) {\n for (const [key, value] of Object.entries(parent.headers)) {\n headers.set(key, value);\n }\n }\n\n let handled = false;\n\n const ctx: MiddlewareContext = {\n request: req,\n response: res,\n url,\n pathname: url.pathname,\n searchParams: url.searchParams,\n method: req.method || \"GET\",\n params: {},\n route: url.pathname,\n parent,\n vite: {\n isDev: process.env.NODE_ENV !== \"production\",\n hmr: !!viteServer?.hot,\n server: viteServer,\n },\n data,\n locals,\n headers,\n cookies,\n _handled: false,\n\n redirect(redirectUrl: string, status = 307): void {\n if (handled) {\n console.warn(\"Response already sent, cannot redirect\");\n return;\n }\n\n ctx._redirectUrl = redirectUrl;\n ctx._handled = true;\n handled = true;\n\n res.writeHead(status, {\n Location: redirectUrl,\n \"Content-Type\": \"text/plain\",\n });\n res.end(`Redirecting to ${redirectUrl}`);\n },\n\n rewrite(rewriteUrl: string): void {\n ctx._rewriteUrl = rewriteUrl;\n // Update the URL for downstream middleware\n const newUrl = new URL(rewriteUrl, `http://${req.headers.host || \"localhost\"}`);\n ctx.url = newUrl;\n ctx.pathname = newUrl.pathname;\n ctx.searchParams = newUrl.searchParams;\n // Update the original request URL\n req.url = rewriteUrl;\n },\n\n json(jsonData: any, status = 200): void {\n if (handled) {\n console.warn(\"Response already sent, cannot send JSON\");\n return;\n }\n\n ctx._handled = true;\n handled = true;\n\n res.writeHead(status, {\n \"Content-Type\": \"application/json\",\n });\n res.end(JSON.stringify(jsonData));\n },\n\n text(content: string, status = 200): void {\n if (handled) {\n console.warn(\"Response already sent, cannot send text\");\n return;\n }\n\n ctx._handled = true;\n handled = true;\n\n res.writeHead(status, {\n \"Content-Type\": \"text/plain\",\n });\n res.end(content);\n },\n\n html(content: string, status = 200): void {\n if (handled) {\n console.warn(\"Response already sent, cannot send HTML\");\n return;\n }\n\n ctx._handled = true;\n handled = true;\n\n res.writeHead(status, {\n \"Content-Type\": \"text/html\",\n });\n res.end(content);\n },\n };\n\n return ctx;\n}\n","/**\n * Middleware Manager\n *\n * Discovers and executes middleware files in the file system\n */\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport type { ViteDevServer } from \"vite\";\nimport type { IncomingMessage, ServerResponse } from \"http\";\nimport type {\n FarmMiddlewareConfig,\n MiddlewareFunction,\n MiddlewareMatcher,\n MiddlewareConfig,\n MiddlewareContext,\n MiddlewareResult,\n} from \"./types\";\nimport { createContext } from \"./context\";\nimport { normalizeMiddlewareModule } from \"./module\";\nimport { logger } from \"../utils\";\nimport { sendWebResponse } from \"../server/response\";\nimport { emitFarmEvent } from \"../observability\";\nimport { stripFarmLocaleFromPathname } from \"../i18n/routing\";\nimport type { ResolvedFarmI18nConfig } from \"../i18n/types\";\n\nexport interface DiscoveredMiddleware {\n path: string;\n filePath: string;\n handlers: MiddlewareFunction[];\n config?: MiddlewareConfig;\n source?: \"config\" | \"file\";\n}\n\nfunction isMiddlewareResponse(value: unknown): value is Response {\n return value instanceof Response;\n}\n\n/**\n * Middleware Manager - discovers and executes middleware\n */\nexport class MiddlewareManager {\n private middleware: DiscoveredMiddleware[] = [];\n private configMiddleware: DiscoveredMiddleware[] = [];\n private globalConfig?: MiddlewareConfig;\n private viteServer?: ViteDevServer;\n private appDirs: string[];\n private i18n?: ResolvedFarmI18nConfig;\n\n constructor(\n appDir: string | readonly string[],\n viteServer?: ViteDevServer,\n config?: FarmMiddlewareConfig,\n i18n?: ResolvedFarmI18nConfig,\n ) {\n this.appDirs = Array.isArray(appDir) ? [...appDir] : [appDir as string];\n this.viteServer = viteServer;\n this.i18n = i18n;\n this.configure(config);\n }\n\n configure(config?: FarmMiddlewareConfig): void {\n this.configMiddleware = [];\n this.globalConfig = undefined;\n\n if (!config) return;\n\n const entries = Array.isArray(config) ? config : [config];\n\n for (const [index, entry] of entries.entries()) {\n const handlers = this.getConfigHandlers(entry);\n const middlewareConfig = this.toMiddlewareConfig(entry);\n\n if (handlers.length === 0) {\n this.globalConfig = middlewareConfig;\n continue;\n }\n\n this.configMiddleware.push({\n path: \"/\",\n filePath: `farm.config.ts#middleware-${index}`,\n handlers,\n config: middlewareConfig,\n source: \"config\",\n });\n }\n }\n\n /**\n * Discover all middleware.ts files\n */\n async discover(): Promise<void> {\n const middlewareByPath = new Map<string, DiscoveredMiddleware>();\n for (const appDir of this.appDirs) {\n const discovered: DiscoveredMiddleware[] = [];\n await this.discoverInDirectory(appDir, \"/\", discovered);\n for (const middleware of discovered) {\n middlewareByPath.set(middleware.path, middleware);\n }\n }\n this.middleware = Array.from(middlewareByPath.values());\n\n // Sort by path depth (root first, then nested)\n this.middleware.sort((a, b) => {\n const depthA = a.path.split(\"/\").length;\n const depthB = b.path.split(\"/\").length;\n return depthA - depthB;\n });\n\n if (process.env.FARM_VERBOSE && this.middleware.length > 0) {\n logger.success(`Discovered ${this.middleware.length} middleware files`);\n for (const mw of this.middleware) {\n logger.info(` ${mw.path} (${mw.handlers.length} handlers)`);\n }\n }\n }\n\n /**\n * Recursively discover middleware files\n */\n private async discoverInDirectory(\n dir: string,\n routePath: string,\n discovered: DiscoveredMiddleware[],\n ): Promise<void> {\n if (!fs.existsSync(dir)) {\n return;\n }\n\n // Check for middleware.ts in current directory\n const middlewareFile = this.findMiddlewareFile(dir);\n if (middlewareFile) {\n const middleware = await this.loadMiddleware(middlewareFile, routePath);\n if (middleware) {\n discovered.push(middleware);\n }\n }\n\n // Recursively check subdirectories\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory() && !entry.name.startsWith(\".\") && !entry.name.startsWith(\"_\")) {\n const subPath = path.join(dir, entry.name);\n const subRoutePath = path.posix.join(routePath, entry.name);\n await this.discoverInDirectory(subPath, subRoutePath, discovered);\n }\n }\n }\n\n /**\n * Find middleware file in directory\n */\n private findMiddlewareFile(dir: string): string | null {\n const extensions = [\".ts\", \".tsx\", \".js\", \".jsx\"];\n for (const ext of extensions) {\n const filePath = path.join(dir, `middleware${ext}`);\n if (fs.existsSync(filePath)) {\n return filePath;\n }\n }\n return null;\n }\n\n /**\n * Load a middleware file\n */\n private async loadMiddleware(\n filePath: string,\n routePath: string,\n ): Promise<DiscoveredMiddleware | null> {\n try {\n // Load the module\n let module: any;\n if (this.viteServer) {\n module = await this.viteServer.ssrLoadModule(filePath);\n } else {\n const fileUrl = `file://${filePath}`;\n module = await import(/* @vite-ignore */ fileUrl);\n }\n\n const normalized = normalizeMiddlewareModule(module, routePath);\n if (!normalized) {\n logger.warn(\n `Middleware file ${filePath} must export a default handler or a named middleware handler`,\n );\n return null;\n }\n\n return {\n path: routePath,\n filePath,\n handlers: normalized.handlers,\n config: normalized.config,\n source: \"file\",\n };\n } catch (error) {\n logger.error(`Failed to load middleware ${filePath}: ${error}`);\n return null;\n }\n }\n\n /**\n * Execute middleware for a request\n */\n async execute(req: IncomingMessage, res: ServerResponse): Promise<boolean> {\n const url = new URL(req.url || \"/\", `http://${req.headers.host || \"localhost\"}`);\n const pathname = url.pathname;\n const routePathname = this.i18n?.enabled\n ? stripFarmLocaleFromPathname(pathname, this.i18n)\n : pathname;\n const method = req.method || \"GET\";\n const startTime = Date.now();\n\n let parentData: MiddlewareContext[\"parent\"] | undefined;\n let ctx = createContext(req, res, this.viteServer);\n\n if (this.globalConfig) {\n const globalMatch = this.matchesConfig(routePathname, this.globalConfig, ctx);\n if (!globalMatch.matched) {\n return false;\n }\n if (globalMatch.params) {\n ctx.params = { ...ctx.params, ...globalMatch.params };\n }\n }\n\n // Find applicable middleware (config entries first, then cascading files)\n const applicable: Array<{\n mw: DiscoveredMiddleware;\n routeMatch: { matched: boolean; params?: Record<string, string> };\n }> = [\n ...this.configMiddleware.map((mw) => ({ mw, routeMatch: { matched: true } })),\n ...this.middleware\n .map((mw) => ({ mw, routeMatch: this.matchRoutePath(routePathname, mw.path) }))\n .filter((entry) => entry.routeMatch.matched),\n ];\n\n if (applicable.length === 0) {\n return false; // No middleware to run\n }\n try {\n const pc = require(\"picocolors\");\n const middlewarePaths = applicable.map(({ mw }) => mw.path).join(\", \");\n const log = [\n pc.dim(\"[\") + pc.bold(pc.blue(\"FARM\")) + pc.dim(\"]\"),\n pc.dim(\"[\") + pc.bold(pc.magenta(\"MIDDLEWARE\")) + pc.dim(\"]\"),\n pc.dim(\"[\") + pc.bold(pc.white(method.padEnd(3))) + pc.dim(\"]\"),\n pc.gray(\"Executing middleware: \"),\n pc.gray(pathname),\n pc.dim(` (${(Date.now() - startTime).toFixed(2)}ms)`),\n ].join(\" \");\n console.log(log);\n } catch {\n console.log(\n `[FARM] [MIDDLEWARE] [${method}] Executing ${pathname} (${applicable.length} middleware)`,\n );\n }\n\n // Execute middleware in cascade order\n for (const entry of applicable) {\n // Check matcher configuration\n const { mw, routeMatch } = entry;\n const configMatch = mw.config\n ? this.matchesConfig(routePathname, mw.config, ctx)\n : { matched: true };\n if (!configMatch.matched) {\n continue;\n }\n if (routeMatch.params) {\n ctx.params = { ...ctx.params, ...routeMatch.params };\n }\n if (configMatch.params) {\n ctx.params = { ...ctx.params, ...configMatch.params };\n }\n\n // Create new context with parent data\n if (parentData) {\n ctx = createContext(req, res, this.viteServer, parentData);\n if (routeMatch.params) {\n ctx.params = { ...ctx.params, ...routeMatch.params };\n }\n if (configMatch.params) {\n ctx.params = { ...ctx.params, ...configMatch.params };\n }\n }\n\n const middlewareStartTime = Date.now();\n const middlewareEvent = {\n route: mw.path,\n pathname,\n name: mw.filePath,\n };\n emitFarmEvent({ type: \"middleware.start\", ...middlewareEvent });\n\n try {\n // Execute all handlers in this middleware\n let handlerIndex = 0;\n let returnedResponse: Response | undefined;\n const executeNext = async (): Promise<MiddlewareResult> => {\n if (handlerIndex < mw.handlers.length) {\n const handler = mw.handlers[handlerIndex++];\n const result = await handler(ctx, executeNext);\n if (isMiddlewareResponse(result)) {\n returnedResponse = result;\n return result;\n }\n }\n return returnedResponse;\n };\n\n const result = await executeNext();\n const response = isMiddlewareResponse(result) ? result : returnedResponse;\n if (response) {\n if (!res.headersSent && !res.writableEnded) {\n for (const [key, value] of ctx.headers) {\n try {\n res.setHeader(key, value);\n } catch (error) {}\n }\n }\n emitFarmEvent({\n type: \"middleware.shortCircuit\",\n ...middlewareEvent,\n status: response.status,\n });\n await sendWebResponse(res, response);\n return true;\n }\n\n // Check if response has been sent or handled by middleware helpers.\n if (ctx._handled || res.headersSent || res.writableEnded) {\n emitFarmEvent({\n type: \"middleware.shortCircuit\",\n ...middlewareEvent,\n status: res.statusCode,\n });\n return true;\n }\n\n emitFarmEvent({\n type: \"middleware.complete\",\n ...middlewareEvent,\n durationMs: Date.now() - middlewareStartTime,\n });\n } catch (error) {\n emitFarmEvent({\n type: \"middleware.error\",\n ...middlewareEvent,\n error,\n });\n throw error;\n }\n\n parentData = {\n data: new Map(ctx.data),\n locals: new Map(ctx.locals),\n headers: Object.fromEntries(ctx.headers),\n };\n }\n\n if (!res.headersSent && !res.writableEnded) {\n for (const [key, value] of ctx.headers) {\n try {\n res.setHeader(key, value);\n } catch (error) {}\n }\n }\n\n (req as any).__FARM_MIDDLEWARE_DATA__ = new Map(ctx.data);\n (req as any).__FARM_MIDDLEWARE_CONTEXT__ = new Map(ctx.locals);\n\n return false; // Continue to page rendering\n }\n\n /**\n * Check if pathname matches middleware config\n */\n private matchesConfig(\n pathname: string,\n config: MiddlewareConfig,\n ctx: MiddlewareContext,\n ): { matched: boolean; params?: Record<string, string> } {\n // Check exclusions\n if (config.exclude) {\n for (const pattern of config.exclude) {\n if (this.matchPattern(pattern, pathname).matched) {\n return { matched: false };\n }\n }\n }\n\n // Check matchers\n if (config.matcher) {\n for (const matcher of this.toMatcherList(config.matcher)) {\n if (typeof matcher === \"string\" || matcher instanceof RegExp) {\n const result = this.matchPattern(matcher, pathname);\n if (result.matched) {\n return result;\n }\n } else if (typeof matcher === \"function\") {\n return { matched: matcher(ctx) };\n }\n }\n return { matched: false };\n }\n\n return { matched: true };\n }\n\n /**\n * Match a pattern against pathname\n */\n private matchPattern(\n pattern: string | RegExp,\n pathname: string,\n ): { matched: boolean; params?: Record<string, string> } {\n if (pattern instanceof RegExp) {\n pattern.lastIndex = 0;\n const match = pattern.exec(pathname);\n return {\n matched: !!match,\n params: match?.groups ? { ...match.groups } : undefined,\n };\n }\n\n if (pattern === \"*\" || pattern === \"/(.*)\") {\n return { matched: true };\n }\n\n if (pattern.endsWith(\"(.*)\")) {\n const prefix = pattern.slice(0, -4);\n return { matched: pathname === prefix || pathname.startsWith(`${prefix}/`) };\n }\n\n const { regex, params } = this.compilePathPattern(pattern);\n const match = regex.exec(pathname);\n if (!match) {\n return { matched: false };\n }\n\n const values: Record<string, string> = {};\n params.forEach((param, index) => {\n values[param] = decodeURIComponent(match[index + 1] || \"\");\n });\n\n return {\n matched: true,\n params: Object.keys(values).length > 0 ? values : undefined,\n };\n }\n\n /**\n * Reload middleware (for HMR)\n */\n async reload(): Promise<void> {\n await this.discover();\n }\n\n getMiddlewares(): DiscoveredMiddleware[] {\n return [...this.configMiddleware, ...this.middleware];\n }\n\n hasMiddleware(): boolean {\n return this.configMiddleware.length > 0 || this.middleware.length > 0;\n }\n\n private matchRoutePath(\n pathname: string,\n middlewarePath: string,\n ): { matched: boolean; params?: Record<string, string> } {\n if (middlewarePath === \"/\") return { matched: true };\n\n const exactMatch = this.matchPattern(middlewarePath, pathname);\n if (exactMatch.matched) {\n return exactMatch;\n }\n\n const nestedMatch = this.matchPattern(`${middlewarePath}/:__farmRest*`, pathname);\n if (!nestedMatch.matched) {\n return { matched: false };\n }\n\n const params = { ...nestedMatch.params };\n delete params.__farmRest;\n return {\n matched: true,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n\n private toMatcherList(matcher: MiddlewareConfig[\"matcher\"]): MiddlewareMatcher[] {\n if (!matcher) return [];\n return Array.isArray(matcher) ? matcher : [matcher];\n }\n\n private getConfigHandlers(\n entry:\n | MiddlewareConfig\n | (MiddlewareConfig & {\n handler?: MiddlewareFunction;\n handlers?: MiddlewareFunction[];\n }),\n ): MiddlewareFunction[] {\n const handlers: MiddlewareFunction[] = [];\n if (\"handler\" in entry && typeof entry.handler === \"function\") {\n handlers.push(entry.handler);\n }\n if (\"handlers\" in entry && Array.isArray(entry.handlers)) {\n handlers.push(...entry.handlers.filter((handler) => typeof handler === \"function\"));\n }\n return handlers;\n }\n\n private toMiddlewareConfig(\n entry: MiddlewareConfig & {\n handler?: MiddlewareFunction;\n handlers?: MiddlewareFunction[];\n },\n ): MiddlewareConfig {\n const { matcher, exclude, runtime } = entry;\n return { matcher, exclude, runtime };\n }\n\n private compilePathPattern(pattern: string): { regex: RegExp; params: string[] } {\n const params: string[] = [];\n const segments = pattern.split(\"/\").filter(Boolean);\n\n if (segments.length === 0) {\n return { regex: /^\\/$/, params };\n }\n\n const parts = segments.map((segment) => {\n if (segment === \"**\") {\n return \"(?:/.*)?\";\n }\n\n if (segment === \"*\") {\n return \"/[^/]+\";\n }\n\n if (segment.startsWith(\":\")) {\n const { name, modifier } = this.parseColonParam(segment);\n params.push(name);\n\n if (modifier === \"*\") {\n return \"(?:/(.*))?\";\n }\n if (modifier === \"+\") {\n return \"/(.+)\";\n }\n return \"/([^/]+)\";\n }\n\n if (segment.startsWith(\"[...\") && segment.endsWith(\"]\")) {\n params.push(segment.slice(4, -1));\n return \"(?:/(.*))?\";\n }\n\n if (segment.startsWith(\"[\") && segment.endsWith(\"]\")) {\n params.push(segment.slice(1, -1));\n return \"/([^/]+)\";\n }\n\n return `/${this.escapeRegex(segment).replace(/\\\\\\*/g, \"[^/]*\")}`;\n });\n\n return {\n regex: new RegExp(`^${parts.join(\"\")}$`),\n params,\n };\n }\n\n private parseColonParam(segment: string): { name: string; modifier?: string } {\n const raw = segment.slice(1);\n const last = raw[raw.length - 1];\n const modifier = last === \"*\" || last === \"+\" || last === \"?\" ? last : undefined;\n return {\n name: modifier ? raw.slice(0, -1) : raw,\n modifier,\n };\n }\n\n private escapeRegex(value: string): string {\n return value.replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\");\n }\n}\n"],"mappings":"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","names":["result","match"]}
@@ -1,467 +0,0 @@
1
- import {
2
- resolveEnv,
3
- setEnv
4
- } from "./chunk-RSKVYESE.mjs";
5
- import {
6
- loadFarmConfigFile,
7
- resolveFarmLayers
8
- } from "./chunk-74YTBPTY.mjs";
9
- import {
10
- resolveFarmDevtoolsConfig
11
- } from "./chunk-7MABZJIM.mjs";
12
- import {
13
- normalizeRouteRules,
14
- routeRulesToHeaders,
15
- routeRulesToRedirects
16
- } from "./chunk-YW7OBE6Q.mjs";
17
- import {
18
- resolveFarmImageConfig
19
- } from "./chunk-GY2STC2S.mjs";
20
- import {
21
- resolveServerActionsConfig
22
- } from "./chunk-UB5UOSHB.mjs";
23
- import {
24
- resolveMarkdownConfig
25
- } from "./chunk-LLC7BNXW.mjs";
26
- import {
27
- resolveMdxConfig
28
- } from "./chunk-QGQX7SFC.mjs";
29
- import {
30
- resolveWorkflowsConfig
31
- } from "./chunk-XIVV5IWN.mjs";
32
- import {
33
- resolveCronConfig
34
- } from "./chunk-GXASWWJU.mjs";
35
- import {
36
- resolveIntegrationPlugins
37
- } from "./chunk-K4667E2Q.mjs";
38
- import {
39
- resolveFarmI18nConfig
40
- } from "./chunk-FQYDHKKU.mjs";
41
- import {
42
- normalizeFarmDeploymentId
43
- } from "./chunk-B232I2GP.mjs";
44
- import {
45
- __name
46
- } from "./chunk-CGILA3WO.mjs";
47
-
48
- // src/config.ts
49
- import path from "path";
50
- var FARM_RESOLVED_CUSTOM_CONTEXT = /* @__PURE__ */ Symbol.for("farm.resolvedCustomContext");
51
- function hasCustomFarmRouteContext(config) {
52
- return config[FARM_RESOLVED_CUSTOM_CONTEXT] === true;
53
- }
54
- __name(hasCustomFarmRouteContext, "hasCustomFarmRouteContext");
55
- function normalizeDeployTarget(target) {
56
- if (!target) return void 0;
57
- if (target === "cloudflare-pages" || target === "cloudflare_pages") return "cloudflare";
58
- if (target === "node-server" || target === "nitro") return "node";
59
- return target;
60
- }
61
- __name(normalizeDeployTarget, "normalizeDeployTarget");
62
- function getPresetForDeployTarget(target) {
63
- switch (normalizeDeployTarget(target)) {
64
- case "vercel":
65
- return "vercel";
66
- case "cloudflare":
67
- return "cloudflare-pages";
68
- case "netlify":
69
- return "netlify";
70
- case "node":
71
- return "node-server";
72
- default:
73
- return void 0;
74
- }
75
- }
76
- __name(getPresetForDeployTarget, "getPresetForDeployTarget");
77
- function getDeployTargetForPreset(preset) {
78
- if (!preset) return void 0;
79
- if (preset === "vercel" || preset === "vercel-edge") return "vercel";
80
- if (preset === "cloudflare" || preset === "cloudflare-pages" || preset === "cloudflare-module") {
81
- return "cloudflare";
82
- }
83
- if (preset === "netlify" || preset === "netlify-edge") return "netlify";
84
- if (preset === "node-server") return "node";
85
- return void 0;
86
- }
87
- __name(getDeployTargetForPreset, "getDeployTargetForPreset");
88
- function getDefaultDeployOutputDir(target, preset, distDir) {
89
- const normalizedTarget = normalizeDeployTarget(target) || getDeployTargetForPreset(preset);
90
- if (normalizedTarget === "vercel") return ".vercel/output";
91
- return `${distDir}/.output`;
92
- }
93
- __name(getDefaultDeployOutputDir, "getDefaultDeployOutputDir");
94
- function resolveDeployOutputPath(root, outputDir) {
95
- return path.isAbsolute(outputDir) ? outputDir : path.join(root, outputDir);
96
- }
97
- __name(resolveDeployOutputPath, "resolveDeployOutputPath");
98
- function resolveDeployConfig(config, overrides = {}) {
99
- const deploy = config.deploy || {};
100
- const distDir = config.distDir || ".farm";
101
- const target = normalizeDeployTarget(overrides.target || deploy.target);
102
- const preset = overrides.preset || deploy.preset || config.preset || getPresetForDeployTarget(target) || "node-server";
103
- const resolvedTarget = target || getDeployTargetForPreset(preset);
104
- const platformOutput = resolvedTarget === "vercel" ? deploy.vercel?.outputDirectory : resolvedTarget === "cloudflare" ? deploy.cloudflare?.outputDir : resolvedTarget === "netlify" ? deploy.netlify?.outputDir : void 0;
105
- const outputDir = overrides.outputDir || deploy.outputDir || deploy.output || platformOutput || getDefaultDeployOutputDir(resolvedTarget, preset, distDir);
106
- return {
107
- ...deploy,
108
- target: resolvedTarget,
109
- preset,
110
- outputDir
111
- };
112
- }
113
- __name(resolveDeployConfig, "resolveDeployConfig");
114
- function resolveMigrationsConfig(migrations) {
115
- if (!migrations) return { commands: [] };
116
- if (Array.isArray(migrations)) return { commands: migrations };
117
- return { commands: migrations.commands || [] };
118
- }
119
- __name(resolveMigrationsConfig, "resolveMigrationsConfig");
120
- var DOCS_CONFIG_FILENAMES = [
121
- "docs.config.ts",
122
- "docs.config.tsx",
123
- "docs.config.mts",
124
- "docs.config.cts",
125
- "docs.config.js",
126
- "docs.config.jsx",
127
- "docs.config.mjs",
128
- "docs.config.cjs",
129
- "docs.json"
130
- ];
131
- function normalizeDocsRoute(value, fallback = "/docs") {
132
- const raw = (value || fallback).trim();
133
- if (!raw || raw === "/") return "/";
134
- const normalized = raw.replace(/\\/g, "/").replace(/\/+/g, "/").replace(/^\/?/, "/").replace(/\/+$/, "");
135
- return normalized || "/";
136
- }
137
- __name(normalizeDocsRoute, "normalizeDocsRoute");
138
- function docsRouteToEntry(route) {
139
- const entry = route.replace(/^\/+/, "").replace(/\/+$/, "");
140
- return entry || "docs";
141
- }
142
- __name(docsRouteToEntry, "docsRouteToEntry");
143
- function normalizeDocsContentDir(value) {
144
- if (!value) return void 0;
145
- const normalized = value.replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, "");
146
- return normalized || void 0;
147
- }
148
- __name(normalizeDocsContentDir, "normalizeDocsContentDir");
149
- function isRecord(value) {
150
- return !!value && typeof value === "object" && !Array.isArray(value);
151
- }
152
- __name(isRecord, "isRecord");
153
- function cloneSerializable(value, seen = /* @__PURE__ */ new WeakSet()) {
154
- if (value === null) return null;
155
- const valueType = typeof value;
156
- if (valueType === "string" || valueType === "number" || valueType === "boolean") {
157
- return value;
158
- }
159
- if (valueType === "undefined" || valueType === "function" || valueType === "symbol") {
160
- return void 0;
161
- }
162
- if (Array.isArray(value)) {
163
- return value.map((item) => cloneSerializable(item, seen)).filter((item) => item !== void 0);
164
- }
165
- if (value instanceof Date) {
166
- return value.toISOString();
167
- }
168
- if (isRecord(value)) {
169
- if (seen.has(value)) return void 0;
170
- seen.add(value);
171
- const output = {};
172
- for (const [key, nestedValue] of Object.entries(value)) {
173
- const clonedValue = cloneSerializable(nestedValue, seen);
174
- if (clonedValue !== void 0) {
175
- output[key] = clonedValue;
176
- }
177
- }
178
- return output;
179
- }
180
- return void 0;
181
- }
182
- __name(cloneSerializable, "cloneSerializable");
183
- function sanitizeDocsConfig(config) {
184
- return cloneSerializable(config) || {};
185
- }
186
- __name(sanitizeDocsConfig, "sanitizeDocsConfig");
187
- async function findDocsConfigPath(rootDir, configPath) {
188
- const { existsSync } = await import("fs");
189
- const root = path.resolve(rootDir || process.cwd());
190
- if (configPath) {
191
- const resolvedPath = path.isAbsolute(configPath) ? configPath : path.join(root, configPath);
192
- if (!existsSync(resolvedPath)) {
193
- throw new Error(`Could not find docs config at ${configPath}.`);
194
- }
195
- return path.resolve(resolvedPath);
196
- }
197
- for (const filename of DOCS_CONFIG_FILENAMES) {
198
- const resolvedPath = path.join(root, filename);
199
- if (existsSync(resolvedPath)) {
200
- return resolvedPath;
201
- }
202
- }
203
- return void 0;
204
- }
205
- __name(findDocsConfigPath, "findDocsConfigPath");
206
- async function loadDocsConfig(rootDir, configPath) {
207
- const fs = await import("fs/promises");
208
- const { pathToFileURL } = await import("url");
209
- const root = path.resolve(rootDir || process.cwd());
210
- const resolvedPath = await findDocsConfigPath(root, configPath);
211
- if (!resolvedPath) return void 0;
212
- try {
213
- if (resolvedPath.endsWith(".json")) {
214
- const content = await fs.readFile(resolvedPath, "utf8");
215
- return { config: JSON.parse(content), configPath: resolvedPath };
216
- }
217
- const { build } = await import("esbuild");
218
- const configCacheDir = path.join(root, ".farm", ".config-loader");
219
- await fs.mkdir(configCacheDir, { recursive: true });
220
- const modulePath = path.join(
221
- configCacheDir,
222
- `docs-config-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`
223
- );
224
- await build({
225
- absWorkingDir: root,
226
- entryPoints: [resolvedPath],
227
- outfile: modulePath,
228
- bundle: true,
229
- format: "esm",
230
- platform: "node",
231
- target: `node${process.versions.node.split(".")[0]}`,
232
- packages: "external",
233
- jsx: "automatic",
234
- logLevel: "silent",
235
- sourcemap: "inline"
236
- });
237
- const moduleUrl = pathToFileURL(modulePath).href + `?t=${Date.now()}`;
238
- let importedConfig;
239
- try {
240
- importedConfig = await import(
241
- /* @vite-ignore */
242
- moduleUrl
243
- );
244
- } finally {
245
- await fs.unlink(modulePath).catch(() => void 0);
246
- }
247
- return {
248
- config: importedConfig.default || importedConfig,
249
- configPath: resolvedPath
250
- };
251
- } catch (error) {
252
- const relativePath = path.relative(root, resolvedPath) || resolvedPath;
253
- const message = error instanceof Error ? error.message : String(error);
254
- throw new Error(`Failed to load docs config from ${relativePath}: ${message}`);
255
- }
256
- }
257
- __name(loadDocsConfig, "loadDocsConfig");
258
- async function resolveDocsConfig(userDocs, options = {}) {
259
- const root = options.root || process.cwd();
260
- if (userDocs === false) {
261
- return {
262
- enabled: false,
263
- entry: "/docs",
264
- config: { entry: "docs", docsPath: "/docs" }
265
- };
266
- }
267
- const docsOptions = isRecord(userDocs) ? userDocs : {};
268
- if (docsOptions.enabled === false) {
269
- return {
270
- enabled: false,
271
- entry: "/docs",
272
- config: { entry: "docs", docsPath: "/docs" }
273
- };
274
- }
275
- const loadedConfig = await loadDocsConfig(root, docsOptions.configPath);
276
- const hasExplicitDocsConfig = userDocs === true || isRecord(userDocs);
277
- if (!hasExplicitDocsConfig && !loadedConfig) {
278
- return {
279
- enabled: false,
280
- entry: "/docs",
281
- config: { entry: "docs", docsPath: "/docs" }
282
- };
283
- }
284
- const inlineDocsConfig = sanitizeDocsConfig(docsOptions.config || {});
285
- const directDocsConfig = sanitizeDocsConfig({
286
- ...docsOptions,
287
- enabled: void 0,
288
- config: void 0,
289
- configPath: void 0
290
- });
291
- const loadedDocsConfig = sanitizeDocsConfig(loadedConfig?.config || {});
292
- const mergedDocsConfig = {
293
- ...loadedDocsConfig,
294
- ...inlineDocsConfig,
295
- ...directDocsConfig
296
- };
297
- const explicitRoute = typeof docsOptions.entry === "string" ? docsOptions.entry : void 0;
298
- const configuredDocsPath = typeof mergedDocsConfig.docsPath === "string" ? mergedDocsConfig.docsPath : void 0;
299
- const configuredEntry = typeof mergedDocsConfig.entry === "string" ? mergedDocsConfig.entry : void 0;
300
- const entryRoute = normalizeDocsRoute(
301
- configuredDocsPath || explicitRoute || (configuredEntry ? `/${configuredEntry}` : void 0)
302
- );
303
- const docsEntry = explicitRoute && explicitRoute.startsWith("/") ? docsRouteToEntry(explicitRoute) : docsRouteToEntry(configuredEntry || entryRoute);
304
- const contentDir = normalizeDocsContentDir(docsOptions.contentDir || mergedDocsConfig.contentDir);
305
- return {
306
- enabled: true,
307
- entry: entryRoute,
308
- contentDir,
309
- configPath: loadedConfig?.configPath,
310
- config: {
311
- ...mergedDocsConfig,
312
- entry: docsEntry,
313
- docsPath: entryRoute,
314
- ...contentDir ? { contentDir } : {}
315
- }
316
- };
317
- }
318
- __name(resolveDocsConfig, "resolveDocsConfig");
319
- async function resolveConfig(userConfig, mode) {
320
- const projectRoot = userConfig.root || process.cwd();
321
- const layerResolution = await resolveFarmLayers(userConfig, {
322
- root: projectRoot,
323
- mode
324
- });
325
- userConfig = layerResolution.config;
326
- const redirects = typeof userConfig.redirects === "function" ? await userConfig.redirects() : userConfig.redirects || [];
327
- const rewrites = typeof userConfig.rewrites === "function" ? await userConfig.rewrites() : userConfig.rewrites || [];
328
- const headers = typeof userConfig.headers === "function" ? await userConfig.headers() : userConfig.headers || [];
329
- const routeRules = normalizeRouteRules(userConfig.routeRules);
330
- const routeRuleRedirects = routeRulesToRedirects(routeRules);
331
- const routeRuleHeaders = routeRulesToHeaders(routeRules);
332
- const deploy = resolveDeployConfig(userConfig);
333
- const root = userConfig.root || process.cwd();
334
- const srcDir = userConfig.srcDir || "src";
335
- const docs = await resolveDocsConfig(userConfig.docs, { root, srcDir });
336
- const md = resolveMarkdownConfig(userConfig.md);
337
- const mdx = resolveMdxConfig(userConfig.mdx);
338
- const env = resolveEnv(userConfig.env, process.env);
339
- setEnv(env);
340
- const generateBuildId = userConfig.generateBuildId || (() => `build-${Date.now()}`);
341
- const deploymentId = normalizeFarmDeploymentId(
342
- userConfig.deploymentId || process.env.FARM_DEPLOYMENT_ID || process.env.VERCEL_GIT_COMMIT_SHA || process.env.CF_PAGES_COMMIT_SHA || (mode === "production" ? await generateBuildId() : "development")
343
- );
344
- const resolved = {
345
- [FARM_RESOLVED_CUSTOM_CONTEXT]: typeof userConfig.context === "function",
346
- root,
347
- srcDir,
348
- extends: userConfig.extends || [],
349
- layers: layerResolution.layers,
350
- outDir: userConfig.outDir || "dist",
351
- basePath: userConfig.basePath || "/",
352
- preset: deploy.preset || "node-server",
353
- deploy,
354
- docs,
355
- md,
356
- mdx,
357
- migrations: resolveMigrationsConfig(userConfig.migrations),
358
- cron: resolveCronConfig(userConfig.cron),
359
- workflows: resolveWorkflowsConfig(userConfig.workflows),
360
- observability: userConfig.observability ?? false,
361
- devtools: resolveFarmDevtoolsConfig(userConfig.devtools, mode),
362
- storage: userConfig.storage || {},
363
- cache: userConfig.cache || {},
364
- suppressLintOnLink: userConfig.suppressLintOnLink ?? false,
365
- experimental: {
366
- serverComponents: false,
367
- serverActions: false,
368
- ...userConfig.experimental
369
- },
370
- plugins: [...resolveIntegrationPlugins(userConfig.integrations), ...userConfig.plugins || []],
371
- integrations: userConfig.integrations || {},
372
- trailingSlash: userConfig.trailingSlash ?? false,
373
- redirects: /* @__PURE__ */ __name(() => [...redirects, ...routeRuleRedirects], "redirects"),
374
- rewrites: /* @__PURE__ */ __name(() => rewrites, "rewrites"),
375
- headers: /* @__PURE__ */ __name(() => [...headers, ...routeRuleHeaders], "headers"),
376
- routeRules,
377
- images: resolveFarmImageConfig(userConfig.images),
378
- publicDir: userConfig.publicDir || "public",
379
- i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode }),
380
- openapi: {
381
- enabled: false,
382
- route: "/docs/reference",
383
- title: "API Documentation",
384
- description: "Auto-generated API documentation",
385
- version: "1.0.0",
386
- servers: [{ url: "http://localhost:3000", description: "Development server" }],
387
- ...userConfig.openapi
388
- },
389
- middleware: userConfig.middleware || {},
390
- notFound: userConfig.notFound || {},
391
- context: userConfig.context || (() => void 0),
392
- serverActions: resolveServerActionsConfig(userConfig.serverActions),
393
- deploymentId,
394
- output: userConfig.output || "standalone",
395
- distDir: userConfig.distDir || ".farm",
396
- generateBuildId,
397
- compress: userConfig.compress ?? true,
398
- devIndicators: {
399
- buildActivity: true,
400
- buildActivityPosition: "bottom-right",
401
- ...userConfig.devIndicators
402
- },
403
- serverRuntimeConfig: userConfig.serverRuntimeConfig || {},
404
- publicRuntimeConfig: userConfig.publicRuntimeConfig || {},
405
- env,
406
- typescript: {
407
- tsconfigPath: "tsconfig.json",
408
- ignoreBuildErrors: false,
409
- ...userConfig.typescript
410
- },
411
- vite: typeof userConfig.vite === "function" ? userConfig.vite({}) : userConfig.vite || {}
412
- };
413
- return resolved;
414
- }
415
- __name(resolveConfig, "resolveConfig");
416
- async function loadConfig(rootDir, configPath, mode = process.env.NODE_ENV === "production" ? "production" : "development", loadEnvironment) {
417
- const { existsSync } = await import("fs");
418
- const loadEnv = loadEnvironment || (await import("vite")).loadEnv;
419
- const root = rootDir || process.cwd();
420
- const loadedEnv = loadEnv(mode, root, "");
421
- for (const [key, value] of Object.entries(loadedEnv)) {
422
- if (process.env[key] === void 0) {
423
- process.env[key] = value;
424
- }
425
- }
426
- const searchPaths = [
427
- configPath,
428
- "farm.config.ts",
429
- "farm.config.mts",
430
- "farm.config.js",
431
- "farm.config.mjs",
432
- "config.ts",
433
- "config.mts",
434
- "config.js",
435
- "config.mjs"
436
- ].filter(Boolean);
437
- for (const relativePath of searchPaths) {
438
- try {
439
- const absolutePath = relativePath.startsWith("/") ? relativePath : path.join(root, relativePath);
440
- const normalizedPath = path.resolve(absolutePath);
441
- if (!existsSync(normalizedPath)) {
442
- continue;
443
- }
444
- const loadedConfig = await loadFarmConfigFile(normalizedPath, { root });
445
- return loadedConfig.root === void 0 ? { ...loadedConfig, root } : loadedConfig;
446
- } catch (error) {
447
- const message = error instanceof Error ? error.message : String(error);
448
- throw new Error(`Failed to load config from ${relativePath}: ${message}`);
449
- }
450
- }
451
- return void 0;
452
- }
453
- __name(loadConfig, "loadConfig");
454
-
455
- export {
456
- hasCustomFarmRouteContext,
457
- normalizeDeployTarget,
458
- getPresetForDeployTarget,
459
- getDeployTargetForPreset,
460
- resolveDeployOutputPath,
461
- resolveDeployConfig,
462
- resolveMigrationsConfig,
463
- resolveDocsConfig,
464
- resolveConfig,
465
- loadConfig
466
- };
467
- //# sourceMappingURL=chunk-NM3CRAAL.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config.ts"],"sourcesContent":["import type {\n FarmConfig as BaseFarmConfig,\n FarmMigrationCommand,\n FarmMigrationsConfig,\n FarmMigrationsUserConfig,\n ResolvedFarmMigrationsConfig,\n} from \"./types\";\nimport type { DocsConfig } from \"@farming-labs/docs\";\nimport type { FarmDocsResolvedConfig, FarmDocsUserConfig } from \"./docs/types\";\nimport type { FarmIntegrationsUserConfig } from \"./integrations\";\nimport type { FarmMarkdownResolvedConfig, FarmMarkdownUserConfig } from \"./markdown\";\nimport type { FarmObservabilityUserConfig } from \"./observability\";\nimport type { FarmMiddlewareConfig } from \"./middleware/types\";\nimport type { FarmPlugin } from \"./plugin\";\nimport type { FarmWorkflowsResolvedConfig, FarmWorkflowsUserConfig } from \"./workflows\";\nimport type { FarmCronResolvedConfig, FarmCronUserConfig } from \"./cron\";\nimport type { FarmEnvConfig, ResolvedFarmEnv } from \"./env\";\nimport type { UserConfig as ViteUserConfig } from \"vite\";\nimport { resolveIntegrationPlugins } from \"./integrations\";\nimport { resolveMarkdownConfig } from \"./markdown\";\nimport { resolveWorkflowsConfig } from \"./workflows\";\nimport { resolveCronConfig } from \"./cron\";\nimport { resolveEnv, setEnv } from \"./env\";\nimport {\n resolveMdxConfig,\n type FarmMdxResolvedConfig,\n type FarmMdxUserConfig,\n} from \"./app-markdown\";\nimport {\n normalizeRouteRules,\n routeRulesToHeaders,\n routeRulesToRedirects,\n type FarmRouteRules,\n} from \"./route-rules\";\nimport {\n resolveServerActionsConfig,\n type FarmServerActionsConfig,\n type ResolvedFarmServerActionsConfig,\n} from \"./server-action-security\";\nimport {\n loadFarmConfigFile,\n resolveFarmLayers,\n type FarmLayerEntry,\n type ResolvedFarmLayer,\n} from \"./layers\";\nimport path from \"path\";\nimport { normalizeFarmDeploymentId } from \"./deployment\";\nimport { resolveFarmDevtoolsConfig, type ResolvedFarmDevtoolsConfig } from \"./devtools-config\";\nimport {\n resolveFarmImageConfig,\n type FarmImageConfig,\n type ResolvedFarmImageConfig,\n} from \"./image-config\";\nimport { resolveFarmI18nConfig } from \"./i18n/config\";\nimport type { FarmI18nUserConfig, ResolvedFarmI18nConfig } from \"./i18n/types\";\nimport type { FarmCacheUserConfig } from \"./cache\";\n\nconst FARM_RESOLVED_CUSTOM_CONTEXT = Symbol.for(\"farm.resolvedCustomContext\");\n\nexport type {\n FarmDocsConfigInput,\n FarmDocsNavigationConfig,\n FarmDocsResolvedConfig,\n FarmDocsSidebarItem,\n FarmDocsUserConfig,\n} from \"./docs/types\";\nexport type {\n FarmMarkdownResolvedConfig,\n FarmMarkdownRouteInput,\n FarmMarkdownUserConfig,\n} from \"./markdown\";\nexport type { FarmMdxComponents, FarmMdxResolvedConfig, FarmMdxUserConfig } from \"./app-markdown\";\nexport type {\n FarmMigrationCommand,\n FarmMigrationsConfig,\n FarmMigrationsUserConfig,\n ResolvedFarmMigrationsConfig,\n} from \"./types\";\nexport type { FarmWorkflowsResolvedConfig, FarmWorkflowsUserConfig } from \"./workflows\";\nexport type { FarmCronJobConfig, FarmCronResolvedConfig, FarmCronUserConfig } from \"./cron\";\nexport type {\n FarmRouteRule,\n FarmRouteRuleCors,\n FarmRouteRuleRedirect,\n FarmRouteRuleRenderMode,\n FarmRouteRules,\n} from \"./route-rules\";\nexport type {\n FarmServerActionsConfig,\n ResolvedFarmServerActionsConfig,\n} from \"./server-action-security\";\nexport type { FarmLayerEntry, ResolvedFarmLayer } from \"./layers\";\nexport type {\n FarmDevtoolsConfig,\n FarmDevtoolsUserConfig,\n ResolvedFarmDevtoolsConfig,\n} from \"./devtools-config\";\nexport type {\n FarmImageConfig,\n FarmImageFormat,\n FarmImageLocalPattern,\n FarmImageProvider,\n FarmImageRemotePattern,\n ResolvedFarmImageConfig,\n} from \"./image-config\";\nexport type {\n FarmI18nCookieConfig,\n FarmI18nDetectionSignal,\n FarmI18nDirection,\n FarmI18nRouting,\n FarmI18nUserConfig,\n ResolvedFarmI18nConfig,\n} from \"./i18n/types\";\n\nexport interface RedirectConfig {\n source: string;\n destination: string;\n permanent?: boolean;\n statusCode?: number;\n}\n\nexport interface HeaderConfig {\n source: string;\n headers: Array<{\n key: string;\n value: string;\n }>;\n}\n\nexport interface RewriteConfig {\n source: string;\n destination: string;\n}\n\n/** @deprecated Use FarmImageConfig. */\nexport type ImageConfig = FarmImageConfig;\n\n/** @deprecated Use FarmI18nUserConfig. */\nexport type I18nConfig = FarmI18nUserConfig;\n\nexport interface OpenAPIConfig {\n enabled?: boolean;\n route?: string;\n title?: string;\n description?: string;\n version?: string;\n servers?: Array<{\n url: string;\n description?: string;\n }>;\n contact?: {\n name?: string;\n email?: string;\n url?: string;\n };\n license?: {\n name: string;\n url?: string;\n };\n}\n\nexport type MiddlewareConfig = FarmMiddlewareConfig;\n\nexport interface NotFoundConfig {\n /** Path to a custom 404 page component (e.g., \"./src/app/not-found.tsx\") */\n component?: string;\n}\n\nexport type FarmDeployTarget = \"vercel\" | \"cloudflare\" | \"netlify\" | \"node\" | string;\n\nexport interface FarmDeployConfig {\n /**\n * Deployment platform. When present, Farm picks the matching Nitro preset and\n * output directory unless explicitly overridden.\n */\n target?: FarmDeployTarget;\n /** Nitro preset override. Usually inferred from target. */\n preset?: BaseFarmConfig[\"preset\"];\n /** Deployable output directory, relative to project root unless absolute. */\n outputDir?: string;\n /** Alias for outputDir for terser config. */\n output?: string;\n /** Cloudflare Pages project name used by `farm deploy --cloudflare`. */\n projectName?: string;\n vercel?: {\n outputDirectory?: string;\n buildCommand?: string;\n installCommand?: string;\n framework?: string | null;\n };\n cloudflare?: {\n outputDir?: string;\n projectName?: string;\n };\n netlify?: {\n outputDir?: string;\n site?: string;\n };\n}\n\nexport interface ResolvedFarmDeployConfig extends Omit<FarmDeployConfig, \"output\"> {\n target?: FarmDeployTarget;\n preset: BaseFarmConfig[\"preset\"];\n outputDir: string;\n}\n\nexport interface FarmUserConfig extends Omit<BaseFarmConfig, \"vite\" | \"docs\" | \"env\" | \"layers\"> {\n /** Reusable Farm directories or installed packages, applied from left to right. */\n extends?: readonly FarmLayerEntry[];\n plugins?: FarmPlugin[];\n integrations?: FarmIntegrationsUserConfig;\n /** Shared application data, route, ISR, and PPR cache. */\n cache?: FarmCacheUserConfig;\n migrations?: FarmMigrationsUserConfig;\n /** Map portable cron schedules to ordinary GET API routes. */\n cron?: FarmCronUserConfig | FarmCronResolvedConfig | false;\n workflows?: FarmWorkflowsUserConfig | boolean;\n preset?: BaseFarmConfig[\"preset\"];\n deploy?: FarmDeployConfig;\n docs?: FarmDocsUserConfig;\n md?: FarmMarkdownUserConfig | boolean;\n mdx?: FarmMdxUserConfig;\n observability?: FarmObservabilityUserConfig;\n\n trailingSlash?: boolean;\n redirects?: () => Promise<RedirectConfig[]> | RedirectConfig[];\n rewrites?: () => Promise<RewriteConfig[]> | RewriteConfig[];\n headers?: () => Promise<HeaderConfig[]> | HeaderConfig[];\n\n images?: ImageConfig;\n publicDir?: string;\n\n i18n?: FarmI18nUserConfig | false;\n openapi?: OpenAPIConfig;\n\n middleware?: FarmMiddlewareConfig;\n routeRules?: FarmRouteRules;\n context?: BaseFarmConfig[\"context\"];\n serverActions?: FarmServerActionsConfig;\n /** Build identifier used to detect and recover from deployment version skew. */\n deploymentId?: string;\n\n notFound?: NotFoundConfig;\n\n output?: \"standalone\" | \"static\" | \"export\";\n distDir?: string;\n generateBuildId?: () => string | Promise<string>;\n compress?: boolean;\n\n devIndicators?: {\n buildActivity?: boolean;\n buildActivityPosition?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n };\n\n serverRuntimeConfig?: Record<string, any>;\n publicRuntimeConfig?: Record<string, any>;\n\n env?: FarmEnvConfig<any, any>;\n\n typescript?: {\n tsconfigPath?: string;\n ignoreBuildErrors?: boolean;\n };\n\n vite?: ViteUserConfig | ((config: ViteUserConfig) => ViteUserConfig);\n\n [key: string]: any;\n}\n\nexport interface ResolvedFarmConfig extends Required<\n Omit<\n FarmUserConfig,\n | \"extends\"\n | \"plugins\"\n | \"vite\"\n | \"deploy\"\n | \"docs\"\n | \"md\"\n | \"mdx\"\n | \"migrations\"\n | \"cron\"\n | \"workflows\"\n | \"env\"\n | \"serverActions\"\n | \"devtools\"\n | \"images\"\n | \"i18n\"\n >\n> {\n /** @internal Tracks whether `context` came from user/layer config instead of the default noop. */\n [FARM_RESOLVED_CUSTOM_CONTEXT]?: boolean;\n extends: readonly FarmLayerEntry[];\n layers: ResolvedFarmLayer[];\n plugins: FarmPlugin[];\n vite: ViteUserConfig;\n deploy: ResolvedFarmDeployConfig;\n docs: FarmDocsResolvedConfig;\n md: FarmMarkdownResolvedConfig;\n mdx: FarmMdxResolvedConfig;\n migrations: ResolvedFarmMigrationsConfig;\n cron: FarmCronResolvedConfig;\n workflows: FarmWorkflowsResolvedConfig;\n env: ResolvedFarmEnv;\n serverActions: ResolvedFarmServerActionsConfig;\n devtools: ResolvedFarmDevtoolsConfig;\n images: ResolvedFarmImageConfig;\n i18n: ResolvedFarmI18nConfig;\n routeRules: FarmRouteRules;\n}\n\nexport function hasCustomFarmRouteContext(config: ResolvedFarmConfig): boolean {\n return config[FARM_RESOLVED_CUSTOM_CONTEXT] === true;\n}\n\nexport type FarmLayerConfig = Omit<\n FarmUserConfig,\n | \"root\"\n | \"outDir\"\n | \"distDir\"\n | \"deploy\"\n | \"output\"\n | \"preset\"\n | \"publicDir\"\n | \"generateBuildId\"\n | \"deploymentId\"\n>;\n\nexport { defineConfig, defineFarmConfig } from \"./config-entry\";\n\nexport function normalizeDeployTarget(target?: FarmDeployTarget): FarmDeployTarget | undefined {\n if (!target) return undefined;\n if (target === \"cloudflare-pages\" || target === \"cloudflare_pages\") return \"cloudflare\";\n if (target === \"node-server\" || target === \"nitro\") return \"node\";\n return target;\n}\n\nexport function getPresetForDeployTarget(\n target?: FarmDeployTarget,\n): BaseFarmConfig[\"preset\"] | undefined {\n switch (normalizeDeployTarget(target)) {\n case \"vercel\":\n return \"vercel\";\n case \"cloudflare\":\n return \"cloudflare-pages\";\n case \"netlify\":\n return \"netlify\";\n case \"node\":\n return \"node-server\";\n default:\n return undefined;\n }\n}\n\nexport function getDeployTargetForPreset(preset?: string): FarmDeployTarget | undefined {\n if (!preset) return undefined;\n if (preset === \"vercel\" || preset === \"vercel-edge\") return \"vercel\";\n if (preset === \"cloudflare\" || preset === \"cloudflare-pages\" || preset === \"cloudflare-module\") {\n return \"cloudflare\";\n }\n if (preset === \"netlify\" || preset === \"netlify-edge\") return \"netlify\";\n if (preset === \"node-server\") return \"node\";\n return undefined;\n}\n\nexport function getDefaultDeployOutputDir(\n target: FarmDeployTarget | undefined,\n preset: string | undefined,\n distDir: string,\n): string {\n const normalizedTarget = normalizeDeployTarget(target) || getDeployTargetForPreset(preset);\n if (normalizedTarget === \"vercel\") return \".vercel/output\";\n return `${distDir}/.output`;\n}\n\nexport function resolveDeployOutputPath(root: string, outputDir: string): string {\n return path.isAbsolute(outputDir) ? outputDir : path.join(root, outputDir);\n}\n\nexport function resolveDeployConfig(\n config: Pick<FarmUserConfig, \"deploy\" | \"preset\" | \"distDir\">,\n overrides: {\n target?: FarmDeployTarget;\n preset?: BaseFarmConfig[\"preset\"];\n outputDir?: string;\n } = {},\n): ResolvedFarmDeployConfig {\n const deploy = config.deploy || {};\n const distDir = config.distDir || \".farm\";\n const target = normalizeDeployTarget(overrides.target || deploy.target);\n const preset =\n overrides.preset ||\n deploy.preset ||\n config.preset ||\n getPresetForDeployTarget(target) ||\n \"node-server\";\n const resolvedTarget = target || getDeployTargetForPreset(preset);\n const platformOutput =\n resolvedTarget === \"vercel\"\n ? deploy.vercel?.outputDirectory\n : resolvedTarget === \"cloudflare\"\n ? deploy.cloudflare?.outputDir\n : resolvedTarget === \"netlify\"\n ? deploy.netlify?.outputDir\n : undefined;\n const outputDir =\n overrides.outputDir ||\n deploy.outputDir ||\n deploy.output ||\n platformOutput ||\n getDefaultDeployOutputDir(resolvedTarget, preset, distDir);\n\n return {\n ...deploy,\n target: resolvedTarget,\n preset,\n outputDir,\n };\n}\n\nexport function resolveMigrationsConfig(\n migrations: FarmMigrationsUserConfig | undefined,\n): ResolvedFarmMigrationsConfig {\n if (!migrations) return { commands: [] };\n if (Array.isArray(migrations)) return { commands: migrations };\n return { commands: migrations.commands || [] };\n}\n\nexport const DOCS_CONFIG_FILENAMES = [\n \"docs.config.ts\",\n \"docs.config.tsx\",\n \"docs.config.mts\",\n \"docs.config.cts\",\n \"docs.config.js\",\n \"docs.config.jsx\",\n \"docs.config.mjs\",\n \"docs.config.cjs\",\n \"docs.json\",\n];\n\nfunction normalizeDocsRoute(value: string | undefined, fallback = \"/docs\"): string {\n const raw = (value || fallback).trim();\n if (!raw || raw === \"/\") return \"/\";\n const normalized = raw\n .replace(/\\\\/g, \"/\")\n .replace(/\\/+/g, \"/\")\n .replace(/^\\/?/, \"/\")\n .replace(/\\/+$/, \"\");\n return normalized || \"/\";\n}\n\nfunction docsRouteToEntry(route: string): string {\n const entry = route.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n return entry || \"docs\";\n}\n\nfunction normalizeDocsContentDir(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const normalized = value.replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n return normalized || undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, any> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction cloneSerializable(value: unknown, seen = new WeakSet<object>()): any {\n if (value === null) return null;\n\n const valueType = typeof value;\n if (valueType === \"string\" || valueType === \"number\" || valueType === \"boolean\") {\n return value;\n }\n if (valueType === \"undefined\" || valueType === \"function\" || valueType === \"symbol\") {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((item) => cloneSerializable(item, seen)).filter((item) => item !== undefined);\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (isRecord(value)) {\n if (seen.has(value)) return undefined;\n seen.add(value);\n\n const output: Record<string, any> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n const clonedValue = cloneSerializable(nestedValue, seen);\n if (clonedValue !== undefined) {\n output[key] = clonedValue;\n }\n }\n return output;\n }\n\n return undefined;\n}\n\nfunction sanitizeDocsConfig(config: Partial<DocsConfig>): Partial<DocsConfig> {\n return cloneSerializable(config) || {};\n}\n\nexport async function findDocsConfigPath(\n rootDir: string,\n configPath?: string,\n): Promise<string | undefined> {\n const { existsSync } = await import(\"fs\");\n const root = path.resolve(rootDir || process.cwd());\n\n if (configPath) {\n const resolvedPath = path.isAbsolute(configPath) ? configPath : path.join(root, configPath);\n if (!existsSync(resolvedPath)) {\n throw new Error(`Could not find docs config at ${configPath}.`);\n }\n return path.resolve(resolvedPath);\n }\n\n for (const filename of DOCS_CONFIG_FILENAMES) {\n const resolvedPath = path.join(root, filename);\n if (existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n return undefined;\n}\n\nexport async function loadDocsConfig(\n rootDir: string,\n configPath?: string,\n): Promise<{ config: Partial<DocsConfig>; configPath: string } | undefined> {\n const fs = await import(\"fs/promises\");\n const { pathToFileURL } = await import(\"url\");\n const root = path.resolve(rootDir || process.cwd());\n const resolvedPath = await findDocsConfigPath(root, configPath);\n\n if (!resolvedPath) return undefined;\n\n try {\n if (resolvedPath.endsWith(\".json\")) {\n const content = await fs.readFile(resolvedPath, \"utf8\");\n return { config: JSON.parse(content), configPath: resolvedPath };\n }\n\n const { build } = await import(\"esbuild\");\n const configCacheDir = path.join(root, \".farm\", \".config-loader\");\n await fs.mkdir(configCacheDir, { recursive: true });\n const modulePath = path.join(\n configCacheDir,\n `docs-config-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`,\n );\n\n await build({\n absWorkingDir: root,\n entryPoints: [resolvedPath],\n outfile: modulePath,\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: `node${process.versions.node.split(\".\")[0]}`,\n packages: \"external\",\n jsx: \"automatic\",\n logLevel: \"silent\",\n sourcemap: \"inline\",\n });\n\n const moduleUrl = pathToFileURL(modulePath).href + `?t=${Date.now()}`;\n let importedConfig: any;\n\n try {\n importedConfig = await import(/* @vite-ignore */ moduleUrl);\n } finally {\n await fs.unlink(modulePath).catch(() => undefined);\n }\n\n return {\n config: importedConfig.default || importedConfig,\n configPath: resolvedPath,\n };\n } catch (error: any) {\n const relativePath = path.relative(root, resolvedPath) || resolvedPath;\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to load docs config from ${relativePath}: ${message}`);\n }\n}\n\nexport async function resolveDocsConfig(\n userDocs: FarmDocsUserConfig | undefined,\n options: {\n root?: string;\n srcDir?: string;\n } = {},\n): Promise<FarmDocsResolvedConfig> {\n const root = options.root || process.cwd();\n\n if (userDocs === false) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const docsOptions = isRecord(userDocs) ? userDocs : {};\n if (docsOptions.enabled === false) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const loadedConfig = await loadDocsConfig(root, docsOptions.configPath);\n const hasExplicitDocsConfig = userDocs === true || isRecord(userDocs);\n\n if (!hasExplicitDocsConfig && !loadedConfig) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const inlineDocsConfig = sanitizeDocsConfig(docsOptions.config || {});\n const directDocsConfig = sanitizeDocsConfig({\n ...docsOptions,\n enabled: undefined,\n config: undefined,\n configPath: undefined,\n } as Partial<DocsConfig>);\n const loadedDocsConfig = sanitizeDocsConfig(loadedConfig?.config || {});\n const mergedDocsConfig: Partial<DocsConfig> = {\n ...loadedDocsConfig,\n ...inlineDocsConfig,\n ...directDocsConfig,\n };\n\n const explicitRoute = typeof docsOptions.entry === \"string\" ? docsOptions.entry : undefined;\n const configuredDocsPath =\n typeof mergedDocsConfig.docsPath === \"string\" ? mergedDocsConfig.docsPath : undefined;\n const configuredEntry =\n typeof mergedDocsConfig.entry === \"string\" ? mergedDocsConfig.entry : undefined;\n const entryRoute = normalizeDocsRoute(\n configuredDocsPath || explicitRoute || (configuredEntry ? `/${configuredEntry}` : undefined),\n );\n const docsEntry =\n explicitRoute && explicitRoute.startsWith(\"/\")\n ? docsRouteToEntry(explicitRoute)\n : docsRouteToEntry(configuredEntry || entryRoute);\n const contentDir = normalizeDocsContentDir(docsOptions.contentDir || mergedDocsConfig.contentDir);\n\n return {\n enabled: true,\n entry: entryRoute,\n contentDir,\n configPath: loadedConfig?.configPath,\n config: {\n ...mergedDocsConfig,\n entry: docsEntry,\n docsPath: entryRoute,\n ...(contentDir ? { contentDir } : {}),\n },\n };\n}\n\nexport async function resolveConfig(\n userConfig: FarmUserConfig,\n mode: \"development\" | \"production\",\n): Promise<ResolvedFarmConfig> {\n const projectRoot = userConfig.root || process.cwd();\n const layerResolution = await resolveFarmLayers(userConfig, {\n root: projectRoot,\n mode,\n });\n userConfig = layerResolution.config;\n\n const redirects =\n typeof userConfig.redirects === \"function\"\n ? await userConfig.redirects()\n : userConfig.redirects || [];\n\n const rewrites =\n typeof userConfig.rewrites === \"function\"\n ? await userConfig.rewrites()\n : userConfig.rewrites || [];\n\n const headers =\n typeof userConfig.headers === \"function\"\n ? await userConfig.headers()\n : userConfig.headers || [];\n const routeRules = normalizeRouteRules(userConfig.routeRules);\n const routeRuleRedirects = routeRulesToRedirects(routeRules);\n const routeRuleHeaders = routeRulesToHeaders(routeRules);\n\n const deploy = resolveDeployConfig(userConfig);\n const root = userConfig.root || process.cwd();\n const srcDir = userConfig.srcDir || \"src\";\n const docs = await resolveDocsConfig(userConfig.docs, { root, srcDir });\n const md = resolveMarkdownConfig(userConfig.md);\n const mdx = resolveMdxConfig(userConfig.mdx);\n const env = resolveEnv(userConfig.env, process.env);\n setEnv(env);\n const generateBuildId = userConfig.generateBuildId || (() => `build-${Date.now()}`);\n const deploymentId = normalizeFarmDeploymentId(\n userConfig.deploymentId ||\n process.env.FARM_DEPLOYMENT_ID ||\n process.env.VERCEL_GIT_COMMIT_SHA ||\n process.env.CF_PAGES_COMMIT_SHA ||\n (mode === \"production\" ? await generateBuildId() : \"development\"),\n );\n\n const resolved: ResolvedFarmConfig = {\n [FARM_RESOLVED_CUSTOM_CONTEXT]: typeof userConfig.context === \"function\",\n root,\n srcDir,\n extends: userConfig.extends || [],\n layers: layerResolution.layers,\n outDir: userConfig.outDir || \"dist\",\n basePath: userConfig.basePath || \"/\",\n preset: deploy.preset || \"node-server\",\n deploy,\n docs,\n md,\n mdx,\n migrations: resolveMigrationsConfig(userConfig.migrations),\n cron: resolveCronConfig(userConfig.cron),\n workflows: resolveWorkflowsConfig(userConfig.workflows),\n observability: userConfig.observability ?? false,\n devtools: resolveFarmDevtoolsConfig(userConfig.devtools, mode),\n storage: userConfig.storage || {},\n cache: userConfig.cache || {},\n suppressLintOnLink: userConfig.suppressLintOnLink ?? false,\n experimental: {\n serverComponents: false,\n serverActions: false,\n ...userConfig.experimental,\n },\n plugins: [...resolveIntegrationPlugins(userConfig.integrations), ...(userConfig.plugins || [])],\n integrations: userConfig.integrations || {},\n trailingSlash: userConfig.trailingSlash ?? false,\n redirects: () => [...redirects, ...routeRuleRedirects],\n rewrites: () => rewrites,\n headers: () => [...headers, ...routeRuleHeaders],\n routeRules,\n images: resolveFarmImageConfig(userConfig.images),\n publicDir: userConfig.publicDir || \"public\",\n i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode }),\n openapi: {\n enabled: false,\n route: \"/docs/reference\",\n title: \"API Documentation\",\n description: \"Auto-generated API documentation\",\n version: \"1.0.0\",\n servers: [{ url: \"http://localhost:3000\", description: \"Development server\" }],\n ...userConfig.openapi,\n },\n middleware: userConfig.middleware || {},\n notFound: userConfig.notFound || {},\n context: userConfig.context || (() => undefined),\n serverActions: resolveServerActionsConfig(userConfig.serverActions),\n deploymentId,\n output: userConfig.output || \"standalone\",\n distDir: userConfig.distDir || \".farm\",\n generateBuildId,\n compress: userConfig.compress ?? true,\n devIndicators: {\n buildActivity: true,\n buildActivityPosition: \"bottom-right\",\n ...userConfig.devIndicators,\n },\n serverRuntimeConfig: userConfig.serverRuntimeConfig || {},\n publicRuntimeConfig: userConfig.publicRuntimeConfig || {},\n env,\n typescript: {\n tsconfigPath: \"tsconfig.json\",\n ignoreBuildErrors: false,\n ...userConfig.typescript,\n },\n vite: typeof userConfig.vite === \"function\" ? userConfig.vite({}) : userConfig.vite || {},\n };\n\n return resolved;\n}\n\nexport async function loadConfig(\n rootDir?: string,\n configPath?: string,\n mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\",\n loadEnvironment?: (typeof import(\"vite\"))[\"loadEnv\"],\n): Promise<FarmUserConfig | undefined> {\n const { existsSync } = await import(\"fs\");\n const loadEnv = loadEnvironment || (await import(\"vite\")).loadEnv;\n\n const root = rootDir || process.cwd();\n const loadedEnv = loadEnv(mode, root, \"\");\n for (const [key, value] of Object.entries(loadedEnv)) {\n if (process.env[key] === undefined) {\n process.env[key] = value;\n }\n }\n const searchPaths = [\n configPath,\n \"farm.config.ts\",\n \"farm.config.mts\",\n \"farm.config.js\",\n \"farm.config.mjs\",\n \"config.ts\",\n \"config.mts\",\n \"config.js\",\n \"config.mjs\",\n ].filter(Boolean) as string[];\n\n for (const relativePath of searchPaths) {\n try {\n // Use path.join for proper path construction\n const absolutePath = relativePath.startsWith(\"/\")\n ? relativePath\n : path.join(root, relativePath);\n\n // Normalize the path to handle any issues\n const normalizedPath = path.resolve(absolutePath);\n\n // Check if file exists before trying to import\n if (!existsSync(normalizedPath)) {\n continue;\n }\n\n const loadedConfig = await loadFarmConfigFile<FarmUserConfig>(normalizedPath, { root });\n return loadedConfig.root === undefined ? { ...loadedConfig, root } : loadedConfig;\n } catch (error: any) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to load config from ${relativePath}: ${message}`);\n }\n }\n return undefined;\n}\n"],"mappings":"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","names":[]}