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

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 (447) hide show
  1. package/dist/after.cjs +227 -0
  2. package/dist/after.cjs.map +1 -0
  3. package/dist/after.d.mts +25 -0
  4. package/dist/after.d.ts +25 -0
  5. package/dist/after.mjs +14 -0
  6. package/dist/after.mjs.map +1 -0
  7. package/dist/agent-runtime.cjs +2379 -0
  8. package/dist/agent-runtime.cjs.map +1 -0
  9. package/dist/agent-runtime.d.mts +94 -0
  10. package/dist/agent-runtime.d.ts +94 -0
  11. package/dist/agent-runtime.mjs +479 -0
  12. package/dist/agent-runtime.mjs.map +1 -0
  13. package/dist/api/route-manager.d.mts +66 -0
  14. package/dist/api/route-manager.d.ts +66 -0
  15. package/dist/api/runtime.d.mts +3 -0
  16. package/dist/api/runtime.d.ts +3 -0
  17. package/dist/api.cjs +4100 -0
  18. package/dist/api.cjs.map +1 -0
  19. package/dist/api.d.mts +48 -0
  20. package/dist/api.d.ts +48 -0
  21. package/dist/api.mjs +93 -0
  22. package/dist/api.mjs.map +1 -0
  23. package/dist/app-BWtqQu3R.d.mts +302 -0
  24. package/dist/app-markdown.cjs +244 -0
  25. package/dist/app-markdown.cjs.map +1 -0
  26. package/dist/app-markdown.d.mts +22 -0
  27. package/dist/app-markdown.d.ts +22 -0
  28. package/dist/app-markdown.mjs +27 -0
  29. package/dist/app-markdown.mjs.map +1 -0
  30. package/dist/app-xltejvLY.d.ts +302 -0
  31. package/dist/cache.cjs +945 -0
  32. package/dist/cache.cjs.map +1 -0
  33. package/dist/cache.d.mts +192 -0
  34. package/dist/cache.d.ts +192 -0
  35. package/dist/cache.mjs +46 -0
  36. package/dist/cache.mjs.map +1 -0
  37. package/dist/chunk-2ED5Q2GH.mjs +422 -0
  38. package/dist/chunk-2ED5Q2GH.mjs.map +1 -0
  39. package/dist/chunk-32W4QEJP.mjs +158 -0
  40. package/dist/chunk-32W4QEJP.mjs.map +1 -0
  41. package/dist/chunk-3XNTL3FQ.mjs +452 -0
  42. package/dist/chunk-3XNTL3FQ.mjs.map +1 -0
  43. package/dist/chunk-44ZCFSKE.mjs +84 -0
  44. package/dist/chunk-44ZCFSKE.mjs.map +1 -0
  45. package/dist/chunk-4MGVSBRP.mjs +7787 -0
  46. package/dist/chunk-4MGVSBRP.mjs.map +1 -0
  47. package/dist/chunk-4S3ORGFA.mjs +44 -0
  48. package/dist/chunk-4S3ORGFA.mjs.map +1 -0
  49. package/dist/chunk-5BY76U2M.mjs +1 -0
  50. package/dist/chunk-5BY76U2M.mjs.map +1 -0
  51. package/dist/chunk-5ZGPRGWV.mjs +136 -0
  52. package/dist/chunk-5ZGPRGWV.mjs.map +1 -0
  53. package/dist/chunk-65A7QIKI.mjs +142 -0
  54. package/dist/chunk-65A7QIKI.mjs.map +1 -0
  55. package/dist/chunk-74YTBPTY.mjs +450 -0
  56. package/dist/chunk-74YTBPTY.mjs.map +1 -0
  57. package/dist/chunk-7FBJLMQH.mjs +338 -0
  58. package/dist/chunk-7FBJLMQH.mjs.map +1 -0
  59. package/dist/chunk-7HO6AEOP.mjs +74 -0
  60. package/dist/chunk-7HO6AEOP.mjs.map +1 -0
  61. package/dist/chunk-7MABZJIM.mjs +29 -0
  62. package/dist/chunk-7MABZJIM.mjs.map +1 -0
  63. package/dist/chunk-7N62DNSO.mjs +41 -0
  64. package/dist/chunk-7N62DNSO.mjs.map +1 -0
  65. package/dist/chunk-7ZY5AIJO.mjs +161 -0
  66. package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
  67. package/dist/chunk-ALCLXXTY.mjs +187 -0
  68. package/dist/chunk-ALCLXXTY.mjs.map +1 -0
  69. package/dist/chunk-AZ7YUVNR.mjs +65 -0
  70. package/dist/chunk-AZ7YUVNR.mjs.map +1 -0
  71. package/dist/chunk-B232I2GP.mjs +163 -0
  72. package/dist/chunk-B232I2GP.mjs.map +1 -0
  73. package/dist/chunk-B4W3BNTL.mjs +483 -0
  74. package/dist/chunk-B4W3BNTL.mjs.map +1 -0
  75. package/dist/chunk-C2ROET2V.mjs +718 -0
  76. package/dist/chunk-C2ROET2V.mjs.map +1 -0
  77. package/dist/chunk-CGILA3WO.mjs +14 -0
  78. package/dist/chunk-CGILA3WO.mjs.map +1 -0
  79. package/dist/chunk-CGIXMLSY.mjs +184 -0
  80. package/dist/chunk-CGIXMLSY.mjs.map +1 -0
  81. package/dist/chunk-DJSGLHCN.mjs +597 -0
  82. package/dist/chunk-DJSGLHCN.mjs.map +1 -0
  83. package/dist/chunk-E2MPIBRE.mjs +149 -0
  84. package/dist/chunk-E2MPIBRE.mjs.map +1 -0
  85. package/dist/chunk-E6EPN5BT.mjs +203 -0
  86. package/dist/chunk-E6EPN5BT.mjs.map +1 -0
  87. package/dist/chunk-EI43C4RA.mjs +6277 -0
  88. package/dist/chunk-EI43C4RA.mjs.map +1 -0
  89. package/dist/chunk-EJ7T4TPB.mjs +622 -0
  90. package/dist/chunk-EJ7T4TPB.mjs.map +1 -0
  91. package/dist/chunk-FQYDHKKU.mjs +128 -0
  92. package/dist/chunk-FQYDHKKU.mjs.map +1 -0
  93. package/dist/chunk-FRPWCMMG.mjs +299 -0
  94. package/dist/chunk-FRPWCMMG.mjs.map +1 -0
  95. package/dist/chunk-GN72QAIH.mjs +146 -0
  96. package/dist/chunk-GN72QAIH.mjs.map +1 -0
  97. package/dist/chunk-GQVGIUSN.mjs +149 -0
  98. package/dist/chunk-GQVGIUSN.mjs.map +1 -0
  99. package/dist/chunk-GS6K5OCM.mjs +407 -0
  100. package/dist/chunk-GS6K5OCM.mjs.map +1 -0
  101. package/dist/chunk-GXASWWJU.mjs +364 -0
  102. package/dist/chunk-GXASWWJU.mjs.map +1 -0
  103. package/dist/chunk-GY2STC2S.mjs +180 -0
  104. package/dist/chunk-GY2STC2S.mjs.map +1 -0
  105. package/dist/chunk-H2FA2SBS.mjs +51 -0
  106. package/dist/chunk-H2FA2SBS.mjs.map +1 -0
  107. package/dist/chunk-I4CUBGVF.mjs +93 -0
  108. package/dist/chunk-I4CUBGVF.mjs.map +1 -0
  109. package/dist/chunk-ITN462YM.mjs +98 -0
  110. package/dist/chunk-ITN462YM.mjs.map +1 -0
  111. package/dist/chunk-J23HNLFY.mjs +72 -0
  112. package/dist/chunk-J23HNLFY.mjs.map +1 -0
  113. package/dist/chunk-J4FNJ5IU.mjs +179 -0
  114. package/dist/chunk-J4FNJ5IU.mjs.map +1 -0
  115. package/dist/chunk-J5YWQVI5.mjs +211 -0
  116. package/dist/chunk-J5YWQVI5.mjs.map +1 -0
  117. package/dist/chunk-JDEOUK5V.mjs +427 -0
  118. package/dist/chunk-JDEOUK5V.mjs.map +1 -0
  119. package/dist/chunk-JK25YEN6.mjs +219 -0
  120. package/dist/chunk-JK25YEN6.mjs.map +1 -0
  121. package/dist/chunk-K4667E2Q.mjs +1916 -0
  122. package/dist/chunk-K4667E2Q.mjs.map +1 -0
  123. package/dist/chunk-LGHEOHBU.mjs +218 -0
  124. package/dist/chunk-LGHEOHBU.mjs.map +1 -0
  125. package/dist/chunk-LM2YNO4U.mjs +24 -0
  126. package/dist/chunk-LM2YNO4U.mjs.map +1 -0
  127. package/dist/chunk-ME4MO2RJ.mjs +3540 -0
  128. package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
  129. package/dist/chunk-MIUW47JX.mjs +639 -0
  130. package/dist/chunk-MIUW47JX.mjs.map +1 -0
  131. package/dist/chunk-NNLCAVB6.mjs +391 -0
  132. package/dist/chunk-NNLCAVB6.mjs.map +1 -0
  133. package/dist/chunk-P7QDS5AT.mjs +191 -0
  134. package/dist/chunk-P7QDS5AT.mjs.map +1 -0
  135. package/dist/chunk-PFE6GMNE.mjs +603 -0
  136. package/dist/chunk-PFE6GMNE.mjs.map +1 -0
  137. package/dist/chunk-QGOHVJ6J.mjs +63 -0
  138. package/dist/chunk-QGOHVJ6J.mjs.map +1 -0
  139. package/dist/chunk-QKVUNGAH.mjs +39 -0
  140. package/dist/chunk-QKVUNGAH.mjs.map +1 -0
  141. package/dist/chunk-QM746KUO.mjs +56 -0
  142. package/dist/chunk-QM746KUO.mjs.map +1 -0
  143. package/dist/chunk-QTZZ2ISQ.mjs +753 -0
  144. package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
  145. package/dist/chunk-RBRLLZL5.mjs +81 -0
  146. package/dist/chunk-RBRLLZL5.mjs.map +1 -0
  147. package/dist/chunk-RHIFZZUI.mjs +69 -0
  148. package/dist/chunk-RHIFZZUI.mjs.map +1 -0
  149. package/dist/chunk-RQ633A5I.mjs +187 -0
  150. package/dist/chunk-RQ633A5I.mjs.map +1 -0
  151. package/dist/chunk-SCFX4UTD.mjs +28 -0
  152. package/dist/chunk-SCFX4UTD.mjs.map +1 -0
  153. package/dist/chunk-SL6HTIOK.mjs +66 -0
  154. package/dist/chunk-SL6HTIOK.mjs.map +1 -0
  155. package/dist/chunk-SPBBQLXI.mjs +207 -0
  156. package/dist/chunk-SPBBQLXI.mjs.map +1 -0
  157. package/dist/chunk-SSA7THPX.mjs +10 -0
  158. package/dist/chunk-SSA7THPX.mjs.map +1 -0
  159. package/dist/chunk-T4QJQK76.mjs +459 -0
  160. package/dist/chunk-T4QJQK76.mjs.map +1 -0
  161. package/dist/chunk-TQAEEJB4.mjs +157 -0
  162. package/dist/chunk-TQAEEJB4.mjs.map +1 -0
  163. package/dist/chunk-UB5UOSHB.mjs +458 -0
  164. package/dist/chunk-UB5UOSHB.mjs.map +1 -0
  165. package/dist/chunk-USWZZUEH.mjs +25 -0
  166. package/dist/chunk-USWZZUEH.mjs.map +1 -0
  167. package/dist/chunk-UVCIEUJC.mjs +16 -0
  168. package/dist/chunk-UVCIEUJC.mjs.map +1 -0
  169. package/dist/chunk-UXUAWNO5.mjs +396 -0
  170. package/dist/chunk-UXUAWNO5.mjs.map +1 -0
  171. package/dist/chunk-V3XURYJO.mjs +756 -0
  172. package/dist/chunk-V3XURYJO.mjs.map +1 -0
  173. package/dist/chunk-V6WE6JSZ.mjs +352 -0
  174. package/dist/chunk-V6WE6JSZ.mjs.map +1 -0
  175. package/dist/chunk-V7RBCSDJ.mjs +170 -0
  176. package/dist/chunk-V7RBCSDJ.mjs.map +1 -0
  177. package/dist/chunk-VCANOYFI.mjs +588 -0
  178. package/dist/chunk-VCANOYFI.mjs.map +1 -0
  179. package/dist/chunk-VY2UYN5R.mjs +224 -0
  180. package/dist/chunk-VY2UYN5R.mjs.map +1 -0
  181. package/dist/chunk-W2CRQFF6.mjs +1352 -0
  182. package/dist/chunk-W2CRQFF6.mjs.map +1 -0
  183. package/dist/chunk-WDU6QXNK.mjs +872 -0
  184. package/dist/chunk-WDU6QXNK.mjs.map +1 -0
  185. package/dist/chunk-WZ5QFROO.mjs +23 -0
  186. package/dist/chunk-WZ5QFROO.mjs.map +1 -0
  187. package/dist/chunk-XIVV5IWN.mjs +541 -0
  188. package/dist/chunk-XIVV5IWN.mjs.map +1 -0
  189. package/dist/chunk-YW7OBE6Q.mjs +119 -0
  190. package/dist/chunk-YW7OBE6Q.mjs.map +1 -0
  191. package/dist/chunk-Z5CQMP54.mjs +365 -0
  192. package/dist/chunk-Z5CQMP54.mjs.map +1 -0
  193. package/dist/chunk-ZBE6MLHL.mjs +230 -0
  194. package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
  195. package/dist/chunk-ZVWA4ZQ3.mjs +189 -0
  196. package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
  197. package/dist/chunk-ZZ57EH5Z.mjs +173 -0
  198. package/dist/chunk-ZZ57EH5Z.mjs.map +1 -0
  199. package/dist/client-BT1mFQas.d.mts +447 -0
  200. package/dist/client-Nn0q4eO4.d.ts +447 -0
  201. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  202. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  203. package/dist/client-plugins-BI2R6Eae.d.mts +1926 -0
  204. package/dist/client-plugins-DU9oMspX.d.ts +1926 -0
  205. package/dist/client-plugins.cjs +415 -0
  206. package/dist/client-plugins.cjs.map +1 -0
  207. package/dist/client-plugins.d.mts +22 -0
  208. package/dist/client-plugins.d.ts +22 -0
  209. package/dist/client-plugins.mjs +10 -0
  210. package/dist/client-plugins.mjs.map +1 -0
  211. package/dist/client.cjs +5402 -0
  212. package/dist/client.cjs.map +1 -0
  213. package/dist/client.d.mts +447 -0
  214. package/dist/client.d.ts +447 -0
  215. package/dist/client.mjs +110 -0
  216. package/dist/client.mjs.map +1 -0
  217. package/dist/config.cjs +38 -0
  218. package/dist/config.cjs.map +1 -0
  219. package/dist/config.d.mts +29 -0
  220. package/dist/config.d.ts +29 -0
  221. package/dist/config.mjs +10 -0
  222. package/dist/config.mjs.map +1 -0
  223. package/dist/cron.cjs +406 -0
  224. package/dist/cron.cjs.map +1 -0
  225. package/dist/cron.d.mts +78 -0
  226. package/dist/cron.d.ts +78 -0
  227. package/dist/cron.mjs +30 -0
  228. package/dist/cron.mjs.map +1 -0
  229. package/dist/deferred.cjs +438 -0
  230. package/dist/deferred.cjs.map +1 -0
  231. package/dist/deferred.d.mts +42 -0
  232. package/dist/deferred.d.ts +42 -0
  233. package/dist/deferred.mjs +28 -0
  234. package/dist/deferred.mjs.map +1 -0
  235. package/dist/deployment.cjs +199 -0
  236. package/dist/deployment.cjs.map +1 -0
  237. package/dist/deployment.d.mts +34 -0
  238. package/dist/deployment.d.ts +34 -0
  239. package/dist/deployment.mjs +38 -0
  240. package/dist/deployment.mjs.map +1 -0
  241. package/dist/devtools-REQTS3I7.mjs +371 -0
  242. package/dist/devtools-REQTS3I7.mjs.map +1 -0
  243. package/dist/devtools-client-3XRTBND5.mjs +216 -0
  244. package/dist/devtools-client-3XRTBND5.mjs.map +1 -0
  245. package/dist/devtools-ui-NJKFORTG.mjs +1349 -0
  246. package/dist/devtools-ui-NJKFORTG.mjs.map +1 -0
  247. package/dist/docs.cjs +5548 -0
  248. package/dist/docs.cjs.map +1 -0
  249. package/dist/docs.d.mts +69 -0
  250. package/dist/docs.d.ts +69 -0
  251. package/dist/docs.mjs +47 -0
  252. package/dist/docs.mjs.map +1 -0
  253. package/dist/env-types.cjs +232 -0
  254. package/dist/env-types.cjs.map +1 -0
  255. package/dist/env-types.d.mts +12 -0
  256. package/dist/env-types.d.ts +12 -0
  257. package/dist/env-types.mjs +11 -0
  258. package/dist/env-types.mjs.map +1 -0
  259. package/dist/env.cjs +215 -0
  260. package/dist/env.cjs.map +1 -0
  261. package/dist/env.d.mts +45 -0
  262. package/dist/env.d.ts +45 -0
  263. package/dist/env.mjs +22 -0
  264. package/dist/env.mjs.map +1 -0
  265. package/dist/environment/vite.d.mts +22 -0
  266. package/dist/environment/vite.d.ts +22 -0
  267. package/dist/environment.cjs +96 -0
  268. package/dist/environment.cjs.map +1 -0
  269. package/dist/environment.d.mts +18 -0
  270. package/dist/environment.d.ts +18 -0
  271. package/dist/environment.mjs +14 -0
  272. package/dist/environment.mjs.map +1 -0
  273. package/dist/headers.cjs +126 -0
  274. package/dist/headers.cjs.map +1 -0
  275. package/dist/headers.d.mts +22 -0
  276. package/dist/headers.d.ts +22 -0
  277. package/dist/headers.mjs +12 -0
  278. package/dist/headers.mjs.map +1 -0
  279. package/dist/i18n/client.d.mts +32 -0
  280. package/dist/i18n/client.d.ts +32 -0
  281. package/dist/i18n/index.d.mts +20 -0
  282. package/dist/i18n/index.d.ts +20 -0
  283. package/dist/i18n/server.d.mts +30 -0
  284. package/dist/i18n/server.d.ts +30 -0
  285. package/dist/image/server.d.mts +37 -0
  286. package/dist/image/server.d.ts +37 -0
  287. package/dist/image/sharp.d.mts +7 -0
  288. package/dist/image/sharp.d.ts +7 -0
  289. package/dist/image-config-Duob7wER.d.mts +50 -0
  290. package/dist/image-config-Duob7wER.d.ts +50 -0
  291. package/dist/image.cjs +209 -0
  292. package/dist/image.cjs.map +1 -0
  293. package/dist/image.d.mts +39 -0
  294. package/dist/image.d.ts +39 -0
  295. package/dist/image.mjs +165 -0
  296. package/dist/image.mjs.map +1 -0
  297. package/dist/index.cjs +42186 -0
  298. package/dist/index.cjs.map +1 -0
  299. package/dist/index.d.mts +454 -0
  300. package/dist/index.d.ts +454 -0
  301. package/dist/index.mjs +980 -0
  302. package/dist/index.mjs.map +1 -0
  303. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  304. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  305. package/dist/integration-orm-GQLGU66X.mjs +13 -0
  306. package/dist/integration-orm-GQLGU66X.mjs.map +1 -0
  307. package/dist/integrations.cjs +2820 -0
  308. package/dist/integrations.cjs.map +1 -0
  309. package/dist/integrations.d.mts +22 -0
  310. package/dist/integrations.d.ts +22 -0
  311. package/dist/integrations.mjs +51 -0
  312. package/dist/integrations.mjs.map +1 -0
  313. package/dist/internal/build-runtime.cjs +643 -322
  314. package/dist/internal/build-runtime.cjs.map +1 -1
  315. package/dist/internal/build-runtime.d.mts +39 -0
  316. package/dist/internal/build-runtime.d.ts +39 -0
  317. package/dist/internal/build-runtime.mjs +11 -10
  318. package/dist/internal/client-runtime.d.mts +2 -0
  319. package/dist/internal/client-runtime.d.ts +2 -0
  320. package/dist/internal/config-runtime.cjs +135 -39
  321. package/dist/internal/config-runtime.cjs.map +1 -1
  322. package/dist/internal/config-runtime.d.mts +39 -0
  323. package/dist/internal/config-runtime.d.ts +39 -0
  324. package/dist/internal/config-runtime.mjs +5 -4
  325. package/dist/internal/production-node-env.d.mts +12 -0
  326. package/dist/internal/production-node-env.d.ts +12 -0
  327. package/dist/internal/production-runtime.d.mts +39 -0
  328. package/dist/internal/production-runtime.d.ts +39 -0
  329. package/dist/layers-VWVDTPUZ.mjs +16 -0
  330. package/dist/layers-VWVDTPUZ.mjs.map +1 -0
  331. package/dist/manager-THKFTOFE.mjs +10 -0
  332. package/dist/manager-THKFTOFE.mjs.map +1 -0
  333. package/dist/markdown.cjs +364 -0
  334. package/dist/markdown.cjs.map +1 -0
  335. package/dist/markdown.d.mts +60 -0
  336. package/dist/markdown.d.ts +60 -0
  337. package/dist/markdown.mjs +18 -0
  338. package/dist/markdown.mjs.map +1 -0
  339. package/dist/metadata-Cm9ujH4I.d.ts +22 -0
  340. package/dist/metadata-DacXbnLA.d.mts +22 -0
  341. package/dist/middleware.cjs +2148 -0
  342. package/dist/middleware.cjs.map +1 -0
  343. package/dist/middleware.d.mts +164 -0
  344. package/dist/middleware.d.ts +164 -0
  345. package/dist/middleware.mjs +49 -0
  346. package/dist/middleware.mjs.map +1 -0
  347. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  348. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  349. package/dist/navigation.cjs +1329 -0
  350. package/dist/navigation.cjs.map +1 -0
  351. package/dist/navigation.d.mts +14 -0
  352. package/dist/navigation.d.ts +14 -0
  353. package/dist/navigation.mjs +33 -0
  354. package/dist/navigation.mjs.map +1 -0
  355. package/dist/nitro-QO5LV6QK.mjs +689 -0
  356. package/dist/nitro-QO5LV6QK.mjs.map +1 -0
  357. package/dist/observability.cjs +186 -0
  358. package/dist/observability.cjs.map +1 -0
  359. package/dist/observability.d.mts +335 -0
  360. package/dist/observability.d.ts +335 -0
  361. package/dist/observability.mjs +16 -0
  362. package/dist/observability.mjs.map +1 -0
  363. package/dist/params-BALtrRim.d.ts +15 -0
  364. package/dist/params-ry-lxqmy.d.mts +15 -0
  365. package/dist/plugin-BJDf43dc.d.mts +165 -0
  366. package/dist/plugin-BJDf43dc.d.ts +165 -0
  367. package/dist/plugin.cjs +23470 -0
  368. package/dist/plugin.cjs.map +1 -1
  369. package/dist/plugin.d.mts +22 -0
  370. package/dist/plugin.d.ts +22 -0
  371. package/dist/plugin.mjs +8 -7
  372. package/dist/production-runtime-4KKq1AVC.d.mts +79 -0
  373. package/dist/production-runtime-C_B79w2P.d.mts +28 -0
  374. package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
  375. package/dist/production-runtime-DRsWDN2x.d.ts +79 -0
  376. package/dist/query/client.d.mts +61 -0
  377. package/dist/query/client.d.ts +61 -0
  378. package/dist/query/index.d.mts +90 -0
  379. package/dist/query/index.d.ts +90 -0
  380. package/dist/query/parsers.d.mts +25 -0
  381. package/dist/query/parsers.d.ts +25 -0
  382. package/dist/query/server.d.mts +55 -0
  383. package/dist/query/server.d.ts +55 -0
  384. package/dist/request-Dsq4kGW0.d.mts +6 -0
  385. package/dist/request-udtobOLv.d.ts +6 -0
  386. package/dist/request.d.mts +2 -0
  387. package/dist/request.d.ts +2 -0
  388. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  389. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  390. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  391. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  392. package/dist/router.d.mts +36 -0
  393. package/dist/router.d.ts +36 -0
  394. package/dist/routes.d.mts +224 -0
  395. package/dist/routes.d.ts +224 -0
  396. package/dist/runtime-9nQjVM7X.d.mts +206 -0
  397. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  398. package/dist/runtime-DgeS2skB.d.ts +206 -0
  399. package/dist/runtime-bv63eUiO.d.ts +27 -0
  400. package/dist/server-action-security.d.mts +43 -0
  401. package/dist/server-action-security.d.ts +43 -0
  402. package/dist/server-fn-client.d.mts +32 -0
  403. package/dist/server-fn-client.d.ts +32 -0
  404. package/dist/server-fn.d.mts +93 -0
  405. package/dist/server-fn.d.ts +93 -0
  406. package/dist/server-plugins.d.mts +55 -0
  407. package/dist/server-plugins.d.ts +55 -0
  408. package/dist/server-query-client.d.mts +50 -0
  409. package/dist/server-query-client.d.ts +50 -0
  410. package/dist/server-query.d.mts +36 -0
  411. package/dist/server-query.d.ts +36 -0
  412. package/dist/server.cjs +731 -447
  413. package/dist/server.cjs.map +1 -1
  414. package/dist/server.d.mts +48 -0
  415. package/dist/server.d.ts +48 -0
  416. package/dist/server.mjs +9 -8
  417. package/dist/server.mjs.map +1 -1
  418. package/dist/storage.d.mts +52 -0
  419. package/dist/storage.d.ts +52 -0
  420. package/dist/testing.d.mts +101 -0
  421. package/dist/testing.d.ts +101 -0
  422. package/dist/transport-BmbGTXA5.d.mts +49 -0
  423. package/dist/transport-BmbGTXA5.d.ts +49 -0
  424. package/dist/types-BMxWr97v.d.mts +81 -0
  425. package/dist/types-BMxWr97v.d.ts +81 -0
  426. package/dist/types-C9N-nk5R.d.mts +53 -0
  427. package/dist/types-C9N-nk5R.d.ts +53 -0
  428. package/dist/types-D1A6-XvH.d.mts +73 -0
  429. package/dist/types-D1A6-XvH.d.ts +73 -0
  430. package/dist/utils-B-cUHwoK.d.ts +23 -0
  431. package/dist/utils-Cm41AefV.d.mts +23 -0
  432. package/dist/version.cjs +1 -1
  433. package/dist/version.cjs.map +1 -1
  434. package/dist/version.d.mts +3 -0
  435. package/dist/version.d.ts +3 -0
  436. package/dist/version.mjs +1 -1
  437. package/dist/vite.cjs +682 -437
  438. package/dist/vite.cjs.map +1 -1
  439. package/dist/vite.d.mts +22 -0
  440. package/dist/vite.d.ts +22 -0
  441. package/dist/vite.mjs +6 -5
  442. package/dist/workflows.d.mts +110 -0
  443. package/dist/workflows.d.ts +110 -0
  444. package/package.json +3 -2
  445. package/types/client.d.ts +1 -1
  446. package/types/image.d.ts +4 -0
  447. package/types/images.d.ts +59 -0
@@ -0,0 +1,1926 @@
1
+ import { n as FarmClientPlugin } from './plugin-BJDf43dc.mjs';
2
+ import React__default, { ComponentType, ReactNode } from 'react';
3
+ import { IncomingMessage, ServerResponse } from 'http';
4
+ import { k as FarmStorageUserConfig } from './types-D1A6-XvH.mjs';
5
+ import { F as FarmIntegrationAPI, f as FarmIntegrationAPIMethod, e as FarmIntegrationAPIBodyFormat, a as FarmIntegrationAPIOperation, g as FarmIntegrationAPIResponseFormat, h as FarmIntegrationRouteOperationCarrier, I as InferIntegrationAPIFromRoutes } from './integration-api-CHT2OKAf.mjs';
6
+ import { OrmClient, SchemaDefinition, ModelDefinition, FieldBuilder, JsonValue, AnyModelDefinition, SchemaModels } from '@farming-labs/orm';
7
+ import { a as FarmDocsUserConfig, F as FarmDocsResolvedConfig } from './types-C9N-nk5R.mjs';
8
+ import { FarmMarkdownUserConfig, FarmMarkdownResolvedConfig } from './markdown.mjs';
9
+ import { FarmObservabilityUserConfig } from './observability.mjs';
10
+ import * as vite from 'vite';
11
+ import { ViteDevServer, UserConfig, Plugin } from 'vite';
12
+ import { FarmWorkflowsUserConfig, FarmWorkflowsResolvedConfig } from './workflows.mjs';
13
+ import { FarmCronUserConfig, FarmCronResolvedConfig } from './cron.mjs';
14
+ import { FarmEnvConfig, ResolvedFarmEnv } from './env.mjs';
15
+ import { FarmServerActionsConfig, ResolvedFarmServerActionsConfig } from './server-action-security.mjs';
16
+ import { F as FarmImageConfig, R as ResolvedFarmImageConfig } from './image-config-Duob7wER.mjs';
17
+ import { k as FarmI18nUserConfig, R as ResolvedFarmI18nConfig } from './types-BMxWr97v.mjs';
18
+ import { FarmCacheUserConfig } from './cache.mjs';
19
+ import { F as FarmRouteRuntimeConfig, a as FarmRouteRuntime, b as FarmRouteRegions, c as FarmRouteMaxDuration } from './route-runtime-DoOHzCAD.mjs';
20
+
21
+ type RuntimeClientFactory<TClient> = () => TClient | Promise<TClient>;
22
+ type FarmIntegrationOrmSchema = SchemaDefinition<Record<string, AnyModelDefinition>>;
23
+ type FarmIntegrationOrmClient<TSchema extends FarmIntegrationOrmSchema> = OrmClient<TSchema>;
24
+ type FarmIntegrationOrmFieldKind<TField extends FarmIntegrationSchemaField> = TField["type"] extends "id" | "uuid" ? "id" : TField["type"] extends "text" ? "string" : TField["type"] extends "number" ? "decimal" : Extract<TField["type"], "string" | "boolean" | "integer" | "datetime" | "json" | "enum">;
25
+ type FarmIntegrationOrmFieldNullable<TField extends FarmIntegrationSchemaField> = TField extends {
26
+ nullable: true;
27
+ } ? true : TField extends {
28
+ required: false;
29
+ } ? true : false;
30
+ type FarmIntegrationOrmEnumValue<TField extends FarmIntegrationSchemaField> = TField extends {
31
+ values: readonly (infer TValue extends string)[];
32
+ } ? TValue : string;
33
+ type FarmIntegrationOrmFieldValue<TField extends FarmIntegrationSchemaField> = TField["type"] extends "id" | "uuid" | "string" | "text" ? string : TField["type"] extends "boolean" ? boolean : TField["type"] extends "integer" ? number : TField["type"] extends "number" ? string : TField["type"] extends "datetime" ? Date : TField["type"] extends "json" ? JsonValue : TField["type"] extends "enum" ? FarmIntegrationOrmEnumValue<TField> : never;
34
+ type InferFarmIntegrationOrmField<TField extends FarmIntegrationSchemaField> = FieldBuilder<FarmIntegrationOrmFieldKind<TField>, FarmIntegrationOrmFieldNullable<TField>, FarmIntegrationOrmFieldValue<TField>>;
35
+ type InferFarmIntegrationOrmFields<TModel extends FarmIntegrationSchemaModel> = {
36
+ [TFieldKey in keyof TModel["fields"] & string]: InferFarmIntegrationOrmField<Extract<TModel["fields"][TFieldKey], FarmIntegrationSchemaField>>;
37
+ };
38
+ type InferFarmIntegrationOrmSchema<TSchema extends FarmIntegrationSchema> = SchemaDefinition<{
39
+ [TModelKey in keyof TSchema["models"] & string]: ModelDefinition<InferFarmIntegrationOrmFields<Extract<TSchema["models"][TModelKey], FarmIntegrationSchemaModel>>, {}>;
40
+ }>;
41
+ type InferFarmIntegrationOrmClient<TSchema extends FarmIntegrationSchema | undefined> = TSchema extends FarmIntegrationSchema ? OrmClient<InferFarmIntegrationOrmSchema<TSchema>> : never;
42
+ interface CreateIntegrationOrmOptions<TClient = unknown, TSchema extends FarmIntegrationSchema = FarmIntegrationSchema> {
43
+ schema: TSchema;
44
+ config?: Pick<FarmConfig, "storage">;
45
+ storage?: FarmStorageUserConfig;
46
+ client?: TClient | RuntimeClientFactory<TClient>;
47
+ }
48
+ declare function createIntegrationOrm<TClient = unknown, TSchema extends FarmIntegrationSchema = FarmIntegrationSchema>(options: CreateIntegrationOrmOptions<TClient, TSchema>): Promise<InferFarmIntegrationOrmClient<TSchema>>;
49
+ declare function resolveIntegrationOrmRuntimeClient<TClient = unknown>(options: Omit<CreateIntegrationOrmOptions<TClient>, "schema">): Promise<TClient | unknown | undefined>;
50
+ declare function farmIntegrationSchemaToOrmSchema(schema: FarmIntegrationSchema): Promise<FarmIntegrationOrmSchema>;
51
+ type IntegrationOrmModelNames<TSchema extends FarmIntegrationOrmSchema> = keyof SchemaModels<TSchema> & string;
52
+
53
+ /**
54
+ * Farm.js Middleware System
55
+ *
56
+ * Type definitions for the middleware system
57
+ */
58
+
59
+ /**
60
+ * Next function type for middleware chain
61
+ */
62
+ type MiddlewareResult = void | Response;
63
+ type NextFunction = () => Promise<MiddlewareResult>;
64
+ type MiddlewareStoreKey<TValues extends Record<string, any>> = Extract<keyof TValues, string>;
65
+ /**
66
+ * A typed view over the request-scoped maps used by middleware.
67
+ */
68
+ interface ReadonlyMiddlewareStore<TValues extends Record<string, any> = Record<string, any>> {
69
+ readonly size: number;
70
+ get<TKey extends MiddlewareStoreKey<TValues>>(key: TKey): TValues[TKey] | undefined;
71
+ has<TKey extends MiddlewareStoreKey<TValues>>(key: TKey): boolean;
72
+ entries(): IterableIterator<[MiddlewareStoreKey<TValues>, TValues[MiddlewareStoreKey<TValues>]]>;
73
+ keys(): IterableIterator<MiddlewareStoreKey<TValues>>;
74
+ values(): IterableIterator<TValues[MiddlewareStoreKey<TValues>]>;
75
+ forEach(callback: (value: TValues[MiddlewareStoreKey<TValues>], key: MiddlewareStoreKey<TValues>, store: ReadonlyMiddlewareStore<TValues>) => void, thisArg?: any): void;
76
+ [Symbol.iterator](): IterableIterator<[
77
+ MiddlewareStoreKey<TValues>,
78
+ TValues[MiddlewareStoreKey<TValues>]
79
+ ]>;
80
+ }
81
+ interface MiddlewareStore<TValues extends Record<string, any> = Record<string, any>> extends ReadonlyMiddlewareStore<TValues> {
82
+ clear(): void;
83
+ delete<TKey extends MiddlewareStoreKey<TValues>>(key: TKey): boolean;
84
+ set<TKey extends MiddlewareStoreKey<TValues>>(key: TKey, value: TValues[TKey]): this;
85
+ }
86
+ /**
87
+ * Middleware function signature
88
+ */
89
+ type MiddlewareFunction = (ctx: MiddlewareContext, next: NextFunction) => MiddlewareResult | Promise<MiddlewareResult>;
90
+ /**
91
+ * Context passed to a named, request-first middleware export.
92
+ * `locals` and the get/set helpers stay on the server. `data` can be exposed
93
+ * through page props and should contain only serializable, client-safe values.
94
+ */
95
+ interface RequestMiddlewareContext<TLocals extends Record<string, any> = Record<string, any>, TData extends Record<string, any> = Record<string, any>> {
96
+ readonly url: URL;
97
+ readonly pathname: string;
98
+ readonly searchParams: URLSearchParams;
99
+ readonly method: string;
100
+ readonly params: Record<string, string>;
101
+ readonly route: string;
102
+ readonly locals: MiddlewareStore<TLocals>;
103
+ readonly data: MiddlewareStore<TData>;
104
+ readonly headers: Map<string, string>;
105
+ readonly cookies: CookieJar;
106
+ get<TKey extends MiddlewareStoreKey<TLocals>>(key: TKey): TLocals[TKey] | undefined;
107
+ has<TKey extends MiddlewareStoreKey<TLocals>>(key: TKey): boolean;
108
+ set<TKey extends MiddlewareStoreKey<TLocals>>(key: TKey, value: TLocals[TKey]): void;
109
+ delete<TKey extends MiddlewareStoreKey<TLocals>>(key: TKey): boolean;
110
+ redirect(url: string, status?: number): void;
111
+ rewrite(url: string): void;
112
+ json(data: any, status?: number): void;
113
+ text(content: string, status?: number): void;
114
+ html(content: string, status?: number): void;
115
+ }
116
+ type RequestMiddleware<TLocals extends Record<string, any> = Record<string, any>, TData extends Record<string, any> = Record<string, any>> = (request: Request, context: RequestMiddlewareContext<TLocals, TData>) => MiddlewareResult | Promise<MiddlewareResult>;
117
+ /**
118
+ * Cookie options
119
+ */
120
+ interface CookieOptions {
121
+ maxAge?: number;
122
+ expires?: Date;
123
+ path?: string;
124
+ domain?: string;
125
+ secure?: boolean;
126
+ httpOnly?: boolean;
127
+ sameSite?: "strict" | "lax" | "none";
128
+ }
129
+ /**
130
+ * Cookie management interface
131
+ */
132
+ interface CookieJar {
133
+ get(name: string): string | undefined;
134
+ set(name: string, value: string, options?: CookieOptions): void;
135
+ delete(name: string): void;
136
+ getAll(): Record<string, string>;
137
+ }
138
+ interface RateLimitStorage {
139
+ get(key: string): Promise<any> | any;
140
+ set(key: string, value: any, ttl?: number): Promise<void> | void;
141
+ delete(key: string): Promise<void> | void;
142
+ ttl?(key: string): Promise<number | null> | number | null;
143
+ }
144
+ interface RateLimitConfig {
145
+ requests: number;
146
+ window: string;
147
+ keyGenerator?: (ctx: MiddlewareContext) => string;
148
+ onLimit?: (ctx: MiddlewareContext) => void | Response | Promise<void | Response>;
149
+ storage?: RateLimitStorage;
150
+ }
151
+ interface RateLimitStatus {
152
+ requests: number;
153
+ limit: number;
154
+ remaining: number;
155
+ resetIn: number | null;
156
+ resetAt: Date | null;
157
+ isLimited: boolean;
158
+ }
159
+ /**
160
+ * Middleware configuration
161
+ */
162
+ type MiddlewareMatcher = string | RegExp | ((ctx: MiddlewareContext) => boolean);
163
+ interface MiddlewareConfig$1 {
164
+ matcher?: MiddlewareMatcher | MiddlewareMatcher[];
165
+ exclude?: (string | RegExp)[];
166
+ runtime?: "nodejs" | "edge";
167
+ }
168
+ interface MiddlewareConfigEntry extends MiddlewareConfig$1 {
169
+ handler?: MiddlewareFunction;
170
+ handlers?: MiddlewareFunction[];
171
+ }
172
+ type FarmMiddlewareConfig = MiddlewareConfig$1 | MiddlewareConfigEntry | MiddlewareConfigEntry[];
173
+ /**
174
+ * Middleware context - the main object passed to middleware functions
175
+ */
176
+ interface MiddlewareContext {
177
+ request: IncomingMessage;
178
+ response: ServerResponse;
179
+ url: URL;
180
+ pathname: string;
181
+ searchParams: URLSearchParams;
182
+ method: string;
183
+ params: Record<string, string>;
184
+ route: string;
185
+ parent?: {
186
+ data: Map<string, any>;
187
+ locals?: Map<string, any>;
188
+ headers: Record<string, string>;
189
+ };
190
+ vite: {
191
+ isDev: boolean;
192
+ hmr: boolean;
193
+ server?: ViteDevServer;
194
+ };
195
+ data: Map<string, any>;
196
+ locals: Map<string, any>;
197
+ headers: Map<string, string>;
198
+ cookies: CookieJar;
199
+ _handled: boolean;
200
+ _redirectUrl?: string;
201
+ _rewriteUrl?: string;
202
+ redirect(url: string, status?: number): void;
203
+ rewrite(url: string): void;
204
+ json(data: any, status?: number): void;
205
+ text(content: string, status?: number): void;
206
+ html(content: string, status?: number): void;
207
+ }
208
+ /**
209
+ * Middleware chain interface
210
+ */
211
+ interface MiddlewareChain {
212
+ use(fn: MiddlewareFunction): MiddlewareChain;
213
+ /**
214
+ * Conditionally run middleware based on a condition.
215
+ * Supports boolean values or functions that evaluate to boolean.
216
+ *
217
+ * @example
218
+ * .when(true, (ctx, next) => { ... }) // Always run
219
+ * .when((ctx) => ctx.data.get('flag'), (ctx, next) => { ... }) // Conditional
220
+ */
221
+ when(condition: boolean | ((ctx: MiddlewareContext) => boolean), fn: MiddlewareFunction | ((chain: MiddlewareChain) => void)): MiddlewareChain;
222
+ rateLimit(config: RateLimitConfig): MiddlewareChain;
223
+ redirect(source: string, destination: string, permanent?: boolean): MiddlewareChain;
224
+ /**
225
+ * Rewrite the current route to a new destination.
226
+ * In route-specific middleware, this rewrites the middleware's route.
227
+ *
228
+ * @param destination - The destination path to rewrite to
229
+ * @param condition - Optional boolean or function that evaluates to boolean. If false, rewrite is skipped.
230
+ *
231
+ * @example
232
+ * // In /contact/middleware.ts
233
+ * .rewrite('/about') // Always rewrites /contact to /about
234
+ * .rewrite('/about', true) // Always rewrites
235
+ * .rewrite('/about', false) // Never rewrites
236
+ * .rewrite('/about', (ctx) => ctx.data.get('shouldRewrite')) // Conditional rewrite
237
+ */
238
+ rewrite(destination: string, condition?: boolean | ((ctx: MiddlewareContext) => boolean)): MiddlewareChain;
239
+ build(): {
240
+ handlers: MiddlewareFunction[];
241
+ config?: MiddlewareConfig$1;
242
+ };
243
+ }
244
+ /**
245
+ * Middleware module export
246
+ */
247
+ interface MiddlewareModule {
248
+ default?: MiddlewareChain | MiddlewareFunction;
249
+ middleware?: RequestMiddleware;
250
+ config?: MiddlewareConfig$1;
251
+ }
252
+
253
+ type FarmMdxComponent = React__default.ComponentType<any> | keyof React__default.JSX.IntrinsicElements;
254
+ type FarmMdxComponents = Record<string, FarmMdxComponent>;
255
+ interface FarmMdxUserConfig {
256
+ /**
257
+ * Component map or module path that exports `components` or a default component map.
258
+ * Relative paths resolve from the project root.
259
+ */
260
+ components?: string | FarmMdxComponents;
261
+ /**
262
+ * Serve source-authored markdown pages at `/route.md`.
263
+ * Enabled by default for `page.md` and `page.mdx`.
264
+ */
265
+ markdownRoutes?: boolean;
266
+ /**
267
+ * Class name used for the wrapper around rendered markdown content.
268
+ */
269
+ className?: string;
270
+ }
271
+ interface FarmMdxResolvedConfig {
272
+ components?: string | FarmMdxComponents;
273
+ markdownRoutes: boolean;
274
+ className: string;
275
+ }
276
+ interface FarmMarkdownPageSource {
277
+ source: string;
278
+ filePath: string;
279
+ }
280
+ interface FarmMarkdownPageModuleInput extends FarmMarkdownPageSource {
281
+ components?: FarmMdxComponents;
282
+ config?: FarmMdxResolvedConfig;
283
+ }
284
+ declare function resolveMdxConfig(config: FarmMdxUserConfig | undefined): FarmMdxResolvedConfig;
285
+ declare function isFarmMarkdownPageFile(filePath: string): boolean;
286
+ declare function normalizeFarmMarkdownRoutePath(pathname: string): string;
287
+ declare function parseMarkdownFrontmatter(source: string): {
288
+ frontmatter: Record<string, string>;
289
+ body: string;
290
+ };
291
+ declare function titleFromMarkdown(body: string, fallback?: string): string | undefined;
292
+ declare function createMarkdownMetadata(source: string, filePath: string): (Metadata & Record<string, any>) | undefined;
293
+ declare function createFarmMarkdownRouteModule(input: FarmMarkdownPageModuleInput): RouteModule & {
294
+ source: string;
295
+ };
296
+ declare function createFarmMarkdownRouteModuleFromFile(filePath: string, options?: {
297
+ components?: FarmMdxComponents;
298
+ config?: FarmMdxResolvedConfig;
299
+ }): Promise<RouteModule & {
300
+ source: string;
301
+ }>;
302
+ declare function loadFarmMdxComponents(config: FarmMdxResolvedConfig | undefined, options: {
303
+ root: string;
304
+ loadModule?: (modulePath: string) => Promise<unknown>;
305
+ }): Promise<FarmMdxComponents>;
306
+ declare function createFarmMarkdownSourceResponse(options: {
307
+ request: Request;
308
+ config?: FarmMdxResolvedConfig;
309
+ resolveSource: (pathname: string) => Promise<FarmMarkdownPageSource | null> | FarmMarkdownPageSource | null;
310
+ }): Promise<Response | null>;
311
+
312
+ type FarmRouteRuleRenderMode = "static" | "dynamic";
313
+ type FarmRouteRuleRedirect = string | {
314
+ to: string;
315
+ statusCode?: number;
316
+ permanent?: boolean;
317
+ };
318
+ type FarmRouteRuleCors = boolean | {
319
+ origin?: string;
320
+ methods?: string | readonly string[];
321
+ headers?: string | readonly string[];
322
+ };
323
+ interface FarmRouteRule extends FarmRouteRuntimeConfig {
324
+ prerender?: boolean;
325
+ render?: FarmRouteRuleRenderMode;
326
+ ssr?: boolean;
327
+ swr?: boolean | number;
328
+ isr?: boolean | number;
329
+ cors?: FarmRouteRuleCors;
330
+ headers?: Record<string, string>;
331
+ redirect?: FarmRouteRuleRedirect;
332
+ }
333
+ type FarmRouteRules = Record<string, FarmRouteRule>;
334
+ declare function normalizeRouteRules(routeRules: FarmRouteRules | undefined): FarmRouteRules;
335
+ declare function routeRulesToRedirects(routeRules: FarmRouteRules): RedirectConfig[];
336
+ declare function routeRulesToHeaders(routeRules: FarmRouteRules): HeaderConfig[];
337
+ declare function routeRulesToNitroRouteRules(routeRules: FarmRouteRules): Record<string, any>;
338
+
339
+ type FarmLayerEntry = string;
340
+ interface ResolvedFarmLayer {
341
+ /** The value used in `extends`. */
342
+ source: string;
343
+ /** Stable name used by the `#layers/<name>` alias. */
344
+ name: string;
345
+ /** Absolute layer package or directory root. */
346
+ root: string;
347
+ /** Source directory relative to the layer root. */
348
+ srcDir: string;
349
+ /** Resolved layer config file when one exists. */
350
+ configFile?: string;
351
+ }
352
+ interface FarmSourceRoot {
353
+ name: string;
354
+ root: string;
355
+ srcDir: string;
356
+ layer: boolean;
357
+ }
358
+ interface ResolveFarmLayersOptions {
359
+ root: string;
360
+ mode: "development" | "production";
361
+ }
362
+ interface FarmLayerResolution<TConfig extends Record<string, any>> {
363
+ config: TConfig & {
364
+ extends?: readonly FarmLayerEntry[];
365
+ layers: ResolvedFarmLayer[];
366
+ };
367
+ layers: ResolvedFarmLayer[];
368
+ }
369
+ declare function resolveFarmLayers<TConfig extends Record<string, any>>(projectConfig: TConfig, options: ResolveFarmLayersOptions): Promise<FarmLayerResolution<TConfig>>;
370
+ declare function getFarmSourceRoots(config: {
371
+ root?: string;
372
+ srcDir?: string;
373
+ layers?: readonly ResolvedFarmLayer[];
374
+ }): FarmSourceRoot[];
375
+ declare function getFarmAppDirectories(config: {
376
+ root?: string;
377
+ srcDir?: string;
378
+ layers?: readonly ResolvedFarmLayer[];
379
+ }): string[];
380
+ declare function getFarmLayerAliases(layers: readonly ResolvedFarmLayer[] | undefined): Record<string, string>;
381
+ declare function loadFarmConfigFile<TConfig = Record<string, any>>(configPath: string, options: {
382
+ root: string;
383
+ cacheRoot?: string;
384
+ }): Promise<TConfig>;
385
+
386
+ declare const DEFAULT_FARM_DEVTOOLS_SHORTCUT = "mod+shift+.";
387
+ declare const FARM_DEVTOOLS_PATH = "/__farm/devtools";
388
+ declare const FARM_DEVTOOLS_LAUNCH_PARAM = "__farm_devtools";
389
+ interface FarmDevtoolsConfig {
390
+ /** Enable the development-only DevTools UI and runtime endpoints. */
391
+ enabled?: boolean;
392
+ /** Keyboard shortcut used to toggle DevTools, or false to disable the shortcut. */
393
+ shortcut?: string | false;
394
+ }
395
+ type FarmDevtoolsUserConfig = boolean | FarmDevtoolsConfig;
396
+ interface ResolvedFarmDevtoolsConfig {
397
+ enabled: boolean;
398
+ shortcut: string | false;
399
+ }
400
+ declare function resolveFarmDevtoolsConfig(config: FarmDevtoolsUserConfig | ResolvedFarmDevtoolsConfig | undefined, mode?: "development" | "production"): ResolvedFarmDevtoolsConfig;
401
+
402
+ interface FarmAuthEmailAndPasswordConfig {
403
+ /** Require a verified email before creating a session. @default false */
404
+ requireEmailVerification?: boolean;
405
+ /** Smallest accepted password length. @default 8 */
406
+ minPasswordLength?: number;
407
+ /** Largest accepted password length. @default 128 */
408
+ maxPasswordLength?: number;
409
+ }
410
+ interface FarmAuthSessionConfig {
411
+ /** Session lifetime in seconds. @default 604800 */
412
+ expiresIn?: number;
413
+ /** Session refresh interval in seconds. @default 86400 */
414
+ updateAge?: number;
415
+ }
416
+ interface FarmAuthDatabaseConfig {
417
+ /**
418
+ * Postgres connection string. Defaults to DATABASE_URL.
419
+ * Local development falls back to SQLite when no URL is present.
420
+ */
421
+ url?: string;
422
+ /** Local SQLite path. @default ".farm/auth.sqlite" */
423
+ path?: string;
424
+ /** Automatically update the auth schema in development. @default true */
425
+ migrateInDevelopment?: boolean;
426
+ }
427
+ interface FarmAuthConfig {
428
+ /** Set false to disable auth without removing its configuration. @default true */
429
+ enabled?: boolean;
430
+ /** Display name used by authentication emails and metadata. */
431
+ appName?: string;
432
+ /** Route prefix for the auth endpoints. @default "/api/auth" */
433
+ basePath?: string;
434
+ /**
435
+ * Email/password authentication. It is enabled by default; set false to
436
+ * disable it when adding another sign-in method.
437
+ */
438
+ emailAndPassword?: boolean | FarmAuthEmailAndPasswordConfig;
439
+ session?: FarmAuthSessionConfig;
440
+ database?: FarmAuthDatabaseConfig;
441
+ }
442
+ type FarmAuthUserConfig = boolean | FarmAuthConfig;
443
+ interface ResolvedFarmAuthConfig {
444
+ enabled: boolean;
445
+ appName?: string;
446
+ basePath: string;
447
+ emailAndPassword: {
448
+ enabled: boolean;
449
+ requireEmailVerification: boolean;
450
+ minPasswordLength: number;
451
+ maxPasswordLength: number;
452
+ };
453
+ session: {
454
+ expiresIn: number;
455
+ updateAge: number;
456
+ };
457
+ database: {
458
+ url?: string;
459
+ path: string;
460
+ migrateInDevelopment: boolean;
461
+ };
462
+ }
463
+
464
+ declare const FARM_RESOLVED_CUSTOM_CONTEXT: unique symbol;
465
+
466
+ interface RedirectConfig {
467
+ source: string;
468
+ destination: string;
469
+ permanent?: boolean;
470
+ statusCode?: number;
471
+ }
472
+ interface HeaderConfig {
473
+ source: string;
474
+ headers: Array<{
475
+ key: string;
476
+ value: string;
477
+ }>;
478
+ }
479
+ interface RewriteConfig {
480
+ source: string;
481
+ destination: string;
482
+ }
483
+ /** @deprecated Use FarmImageConfig. */
484
+ type ImageConfig = FarmImageConfig;
485
+ /** @deprecated Use FarmI18nUserConfig. */
486
+ type I18nConfig = FarmI18nUserConfig;
487
+ interface OpenAPIConfig {
488
+ enabled?: boolean;
489
+ route?: string;
490
+ title?: string;
491
+ description?: string;
492
+ version?: string;
493
+ servers?: Array<{
494
+ url: string;
495
+ description?: string;
496
+ }>;
497
+ contact?: {
498
+ name?: string;
499
+ email?: string;
500
+ url?: string;
501
+ };
502
+ license?: {
503
+ name: string;
504
+ url?: string;
505
+ };
506
+ }
507
+ type MiddlewareConfig = FarmMiddlewareConfig;
508
+ interface NotFoundConfig {
509
+ /** Path to a custom 404 page component (e.g., "./src/app/not-found.tsx") */
510
+ component?: string;
511
+ }
512
+ type FarmDeployTarget = "vercel" | "cloudflare" | "netlify" | "node" | string;
513
+ interface FarmDeployConfig {
514
+ /**
515
+ * Deployment platform. When present, Farm picks the matching Nitro preset and
516
+ * output directory unless explicitly overridden.
517
+ */
518
+ target?: FarmDeployTarget;
519
+ /** Nitro preset override. Usually inferred from target. */
520
+ preset?: FarmConfig["preset"];
521
+ /** Deployable output directory, relative to project root unless absolute. */
522
+ outputDir?: string;
523
+ /** Alias for outputDir for terser config. */
524
+ output?: string;
525
+ /** Cloudflare Pages project name used by `farm deploy --cloudflare`. */
526
+ projectName?: string;
527
+ vercel?: {
528
+ outputDirectory?: string;
529
+ buildCommand?: string;
530
+ installCommand?: string;
531
+ framework?: string | null;
532
+ };
533
+ cloudflare?: {
534
+ outputDir?: string;
535
+ projectName?: string;
536
+ };
537
+ netlify?: {
538
+ outputDir?: string;
539
+ site?: string;
540
+ };
541
+ }
542
+ interface ResolvedFarmDeployConfig extends Omit<FarmDeployConfig, "output"> {
543
+ target?: FarmDeployTarget;
544
+ preset: FarmConfig["preset"];
545
+ outputDir: string;
546
+ }
547
+ interface FarmUserConfig extends Omit<FarmConfig, "vite" | "docs" | "env" | "layers"> {
548
+ /** Reusable Farm directories or installed packages, applied from left to right. */
549
+ extends?: readonly FarmLayerEntry[];
550
+ plugins?: FarmPlugin[];
551
+ integrations?: FarmIntegrationsUserConfig;
552
+ /**
553
+ * Farm-native authentication. `true` enables email/password auth with
554
+ * server helpers from `@farm.js/auth/server` and React APIs from
555
+ * `@farm.js/auth/client`.
556
+ */
557
+ auth?: FarmAuthUserConfig;
558
+ /** Shared application data, route, ISR, and PPR cache. */
559
+ cache?: FarmCacheUserConfig;
560
+ migrations?: FarmMigrationsUserConfig;
561
+ /** Map portable cron schedules to ordinary GET API routes. */
562
+ cron?: FarmCronUserConfig | FarmCronResolvedConfig | false;
563
+ workflows?: FarmWorkflowsUserConfig | boolean;
564
+ preset?: FarmConfig["preset"];
565
+ deploy?: FarmDeployConfig;
566
+ docs?: FarmDocsUserConfig;
567
+ md?: FarmMarkdownUserConfig | boolean;
568
+ mdx?: FarmMdxUserConfig;
569
+ observability?: FarmObservabilityUserConfig;
570
+ trailingSlash?: boolean;
571
+ redirects?: () => Promise<RedirectConfig[]> | RedirectConfig[];
572
+ rewrites?: () => Promise<RewriteConfig[]> | RewriteConfig[];
573
+ headers?: () => Promise<HeaderConfig[]> | HeaderConfig[];
574
+ images?: ImageConfig;
575
+ publicDir?: string;
576
+ i18n?: FarmI18nUserConfig | false;
577
+ openapi?: OpenAPIConfig;
578
+ middleware?: FarmMiddlewareConfig;
579
+ routeRules?: FarmRouteRules;
580
+ context?: FarmConfig["context"];
581
+ serverActions?: FarmServerActionsConfig;
582
+ /** Build identifier used to detect and recover from deployment version skew. */
583
+ deploymentId?: string;
584
+ notFound?: NotFoundConfig;
585
+ output?: "standalone" | "static" | "export";
586
+ distDir?: string;
587
+ generateBuildId?: () => string | Promise<string>;
588
+ compress?: boolean;
589
+ devIndicators?: {
590
+ buildActivity?: boolean;
591
+ buildActivityPosition?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
592
+ };
593
+ serverRuntimeConfig?: Record<string, any>;
594
+ publicRuntimeConfig?: Record<string, any>;
595
+ env?: FarmEnvConfig<any, any>;
596
+ typescript?: {
597
+ tsconfigPath?: string;
598
+ ignoreBuildErrors?: boolean;
599
+ };
600
+ vite?: UserConfig | ((config: UserConfig) => UserConfig);
601
+ [key: string]: any;
602
+ }
603
+ interface ResolvedFarmConfig extends Required<Omit<FarmUserConfig, "extends" | "plugins" | "vite" | "deploy" | "docs" | "md" | "mdx" | "migrations" | "cron" | "workflows" | "env" | "serverActions" | "devtools" | "images" | "i18n" | "auth">> {
604
+ /** @internal Tracks whether `context` came from user/layer config instead of the default noop. */
605
+ [FARM_RESOLVED_CUSTOM_CONTEXT]?: boolean;
606
+ extends: readonly FarmLayerEntry[];
607
+ layers: ResolvedFarmLayer[];
608
+ plugins: FarmPlugin[];
609
+ vite: UserConfig;
610
+ deploy: ResolvedFarmDeployConfig;
611
+ docs: FarmDocsResolvedConfig;
612
+ md: FarmMarkdownResolvedConfig;
613
+ mdx: FarmMdxResolvedConfig;
614
+ migrations: ResolvedFarmMigrationsConfig;
615
+ cron: FarmCronResolvedConfig;
616
+ workflows: FarmWorkflowsResolvedConfig;
617
+ env: ResolvedFarmEnv;
618
+ serverActions: ResolvedFarmServerActionsConfig;
619
+ devtools: ResolvedFarmDevtoolsConfig;
620
+ images: ResolvedFarmImageConfig;
621
+ i18n: ResolvedFarmI18nConfig;
622
+ auth: ResolvedFarmAuthConfig;
623
+ routeRules: FarmRouteRules;
624
+ }
625
+ type FarmLayerConfig = Omit<FarmUserConfig, "root" | "outDir" | "distDir" | "deploy" | "output" | "preset" | "publicDir" | "generateBuildId" | "deploymentId">;
626
+
627
+ declare function normalizeDeployTarget(target?: FarmDeployTarget): FarmDeployTarget | undefined;
628
+ declare function getPresetForDeployTarget(target?: FarmDeployTarget): FarmConfig["preset"] | undefined;
629
+ declare function getDeployTargetForPreset(preset?: string): FarmDeployTarget | undefined;
630
+ declare function resolveDeployOutputPath(root: string, outputDir: string): string;
631
+ declare function resolveDeployConfig(config: Pick<FarmUserConfig, "deploy" | "preset" | "distDir">, overrides?: {
632
+ target?: FarmDeployTarget;
633
+ preset?: FarmConfig["preset"];
634
+ outputDir?: string;
635
+ }): ResolvedFarmDeployConfig;
636
+ declare function resolveMigrationsConfig(migrations: FarmMigrationsUserConfig | undefined): ResolvedFarmMigrationsConfig;
637
+ declare function resolveConfig(userConfig: FarmUserConfig, mode: "development" | "production"): Promise<ResolvedFarmConfig>;
638
+ declare function loadConfig(rootDir?: string, configPath?: string, mode?: string, loadEnvironment?: (typeof vite)["loadEnv"]): Promise<FarmUserConfig | undefined>;
639
+
640
+ interface FarmVitePluginOptions extends FarmConfig {
641
+ openapi?: FarmUserConfig["openapi"];
642
+ images?: FarmUserConfig["images"];
643
+ }
644
+ declare function farmI18nClientBridgePlugin(): Plugin;
645
+ interface FarmModuleAstNode {
646
+ type: string;
647
+ start: number;
648
+ end: number;
649
+ [key: string]: unknown;
650
+ }
651
+ declare function rewriteEarlySsrRelativeImports(options: {
652
+ code: string;
653
+ id: string;
654
+ root: string;
655
+ parse: (code: string) => FarmModuleAstNode;
656
+ }): string | null;
657
+ declare function farmPlugin(options?: FarmVitePluginOptions, initialPluginManager?: PluginManager): Plugin;
658
+ declare function defineConfig(config?: FarmVitePluginOptions): Promise<{
659
+ plugins: (Plugin<any> | {
660
+ name: string;
661
+ enforce: "pre";
662
+ resolveId(id: string): string | null;
663
+ } | {
664
+ name: string;
665
+ enforce: "pre";
666
+ configureServer(server: ViteDevServer): void;
667
+ } | Plugin<any>[])[];
668
+ customLogger: {
669
+ info: (msg: string) => void;
670
+ warn: (msg: string) => void;
671
+ warnOnce: (msg: string) => void;
672
+ error: (msg: string) => void;
673
+ clearScreen: () => void;
674
+ hasErrorLogged: () => boolean;
675
+ hasWarned: boolean;
676
+ };
677
+ clearScreen: boolean;
678
+ optimizeDeps: {
679
+ include: string[];
680
+ exclude: string[];
681
+ };
682
+ ssr: {
683
+ noExternal: string[];
684
+ external: string[];
685
+ };
686
+ resolve: {
687
+ dedupe: string[];
688
+ alias: {
689
+ "@": string;
690
+ "supports-color": string;
691
+ "@poppinss/dumper": string;
692
+ "@poppinss/dumper/html": string;
693
+ "consola/basic": string;
694
+ youch: string;
695
+ };
696
+ };
697
+ define: {
698
+ __FARM_DEV__: string;
699
+ __FARM_PUBLIC_ENV__: string;
700
+ };
701
+ }>;
702
+
703
+ type MaybePromise$1<T> = T | Promise<T>;
704
+ interface PluginRequestContext {
705
+ set: (target: FarmRequest | Request, key: string, value: any, options?: {
706
+ exposeToPage?: boolean;
707
+ }) => void;
708
+ get: <T = any>(target: FarmRequest | Request, key: string) => T | undefined;
709
+ has: (target: FarmRequest | Request, key: string) => boolean;
710
+ delete: (target: FarmRequest | Request, key: string) => boolean;
711
+ clear: (target: FarmRequest | Request) => void;
712
+ getAll: (target: FarmRequest | Request, options?: {
713
+ exposedOnly?: boolean;
714
+ }) => Map<string, any>;
715
+ }
716
+ interface FarmRequestStore {
717
+ set(key: string, value: unknown, options?: {
718
+ exposeToPage?: boolean;
719
+ }): void;
720
+ get<T = unknown>(key: string): T | undefined;
721
+ has(key: string): boolean;
722
+ delete(key: string): boolean;
723
+ clear(): void;
724
+ snapshot(options?: {
725
+ exposedOnly?: boolean;
726
+ }): Map<string, unknown>;
727
+ }
728
+ interface FarmPluginContext {
729
+ config: FarmConfig;
730
+ viteServer?: ViteDevServer;
731
+ isDev: boolean;
732
+ isProd: boolean;
733
+ /** @deprecated Use `ctx.req` inside request hooks. */
734
+ requestContext: PluginRequestContext;
735
+ }
736
+ interface FarmRequestPluginContext extends FarmPluginContext {
737
+ /** Request-scoped values for the current hook invocation. */
738
+ readonly req: FarmRequestStore;
739
+ }
740
+ interface RouteDiscoveredPayload {
741
+ kind: "page" | "layout";
742
+ pattern: string;
743
+ modulePath: string;
744
+ }
745
+ interface RoutesGeneratedPayload {
746
+ routes: RouteDiscoveredPayload[];
747
+ pageCount: number;
748
+ layoutCount: number;
749
+ }
750
+ interface MiddlewareDiscoveredPayload {
751
+ path: string;
752
+ filePath: string;
753
+ handlerCount: number;
754
+ }
755
+ interface APIRouteDiscoveredPayload {
756
+ path: string;
757
+ filePath: string;
758
+ methods: string[];
759
+ }
760
+ interface RouteMatchPayload {
761
+ pathname: string;
762
+ method?: string;
763
+ }
764
+ interface RouteMatchResultPayload {
765
+ pathname: string;
766
+ matched: boolean;
767
+ routePattern: string | null;
768
+ params: Record<string, string>;
769
+ layoutPatterns: string[];
770
+ }
771
+ interface RenderLifecyclePayload {
772
+ pathname: string;
773
+ method: string;
774
+ routePattern: string | null;
775
+ params: Record<string, string>;
776
+ }
777
+ interface APIHandlerLifecyclePayload {
778
+ pathname: string;
779
+ method: string;
780
+ routePath?: string;
781
+ }
782
+ interface ErrorLifecyclePayload {
783
+ phase: string;
784
+ error: unknown;
785
+ meta?: Record<string, unknown>;
786
+ }
787
+ interface HMRUpdatePayload {
788
+ file: string;
789
+ modules: string[];
790
+ }
791
+ interface BundleLifecyclePayload {
792
+ root: string;
793
+ preset: string;
794
+ universal: boolean;
795
+ distDir: string;
796
+ outputDir?: string;
797
+ }
798
+ interface BundleResultPayload extends BundleLifecyclePayload {
799
+ success: boolean;
800
+ }
801
+ interface NitroBuildLifecyclePayload {
802
+ root: string;
803
+ preset: string;
804
+ distDir: string;
805
+ outputDir: string;
806
+ }
807
+ interface ShutdownPayload {
808
+ reason: string;
809
+ }
810
+ type FarmPluginRuntimeKind = "request" | "page" | "api" | "action" | "integration" | "docs" | "asset" | (string & {});
811
+ interface FarmPluginRouteRuntimePayload {
812
+ pathname: string;
813
+ pattern?: string | null;
814
+ params?: Record<string, string>;
815
+ }
816
+ interface FarmPluginSetupContext extends FarmPluginContext {
817
+ env: ResolvedFarmEnv;
818
+ }
819
+ interface FarmPluginStateContext<TState = unknown> extends FarmPluginContext {
820
+ state: TState;
821
+ }
822
+ interface FarmPluginRuntimeBaseEvent<TState = unknown> extends FarmPluginStateContext<TState> {
823
+ request: Request;
824
+ /** Request-scoped values shared by plugin hooks. */
825
+ req: FarmRequestStore;
826
+ kind: FarmPluginRuntimeKind;
827
+ route?: FarmPluginRouteRuntimePayload;
828
+ signal: AbortSignal;
829
+ waitUntil(promise: Promise<unknown>): void;
830
+ }
831
+ type FarmPluginRuntimeContextEvent<TState = unknown> = FarmPluginRuntimeBaseEvent<TState>;
832
+ interface FarmPluginRuntimeBeforeEvent<TState = unknown, TRequestContext extends object = Record<string, unknown>> extends FarmPluginRuntimeBaseEvent<TState> {
833
+ ctx: Readonly<TRequestContext>;
834
+ }
835
+ interface FarmPluginRuntimeAfterEvent<TState = unknown, TRequestContext extends object = Record<string, unknown>> extends FarmPluginRuntimeBeforeEvent<TState, TRequestContext> {
836
+ response: Response;
837
+ durationMs: number;
838
+ }
839
+ interface FarmPluginRuntimeErrorEvent<TState = unknown, TRequestContext extends object = Record<string, unknown>> extends FarmPluginRuntimeBeforeEvent<TState, TRequestContext> {
840
+ error: unknown;
841
+ durationMs: number;
842
+ }
843
+ type FarmPluginRuntimeStartEvent<TState = unknown> = FarmPluginStateContext<TState>;
844
+ interface FarmPluginRuntimeCloseEvent<TState = unknown> extends FarmPluginStateContext<TState>, ShutdownPayload {
845
+ }
846
+ interface FarmPluginRuntimeHooks<TState = unknown, TRequestContext extends object = Record<string, unknown>> {
847
+ start?(event: FarmPluginRuntimeStartEvent<TState>): MaybePromise$1<void>;
848
+ context?(event: FarmPluginRuntimeContextEvent<TState>): MaybePromise$1<TRequestContext>;
849
+ before?(event: FarmPluginRuntimeBeforeEvent<TState, TRequestContext>): MaybePromise$1<Request | Response | void>;
850
+ after?(event: FarmPluginRuntimeAfterEvent<TState, TRequestContext>): MaybePromise$1<Response | void>;
851
+ error?(event: FarmPluginRuntimeErrorEvent<TState, TRequestContext>): MaybePromise$1<void>;
852
+ close?(event: FarmPluginRuntimeCloseEvent<TState>): MaybePromise$1<void>;
853
+ }
854
+ interface FarmPluginRuntimeRequestOptions {
855
+ kind?: FarmPluginRuntimeKind;
856
+ route?: FarmPluginRouteRuntimePayload;
857
+ waitUntil?: (promise: Promise<unknown>) => void;
858
+ }
859
+ type FarmPluginRuntimeRequestHandler = (request: Request) => MaybePromise$1<Response>;
860
+ interface FarmPluginRuntimeSession {
861
+ request: Request;
862
+ response?: Response;
863
+ ctx: Readonly<Record<string, unknown>>;
864
+ startedAt: number;
865
+ options: FarmPluginRuntimeRequestOptions;
866
+ waitUntil(promise: Promise<unknown>): void;
867
+ }
868
+ type FarmPluginDiscoveredRoute = RouteDiscoveredPayload | ({
869
+ kind: "middleware";
870
+ } & MiddlewareDiscoveredPayload) | ({
871
+ kind: "api";
872
+ } & APIRouteDiscoveredPayload);
873
+ interface FarmPluginRouterHooks<TState = unknown> {
874
+ discovered?(route: FarmPluginDiscoveredRoute, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
875
+ generated?(routes: RoutesGeneratedPayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
876
+ before?(route: RouteMatchPayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
877
+ after?(result: RouteMatchResultPayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
878
+ }
879
+ interface FarmPluginRenderHooks<TState = unknown> {
880
+ before?(render: RenderLifecyclePayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
881
+ html?(html: string, render: RenderLifecyclePayload, context: FarmPluginStateContext<TState>): MaybePromise$1<string | void>;
882
+ }
883
+ interface FarmPluginBuildHooks<TState = unknown> {
884
+ before?(bundle: BundleLifecyclePayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
885
+ configure?(buildConfig: any, context: FarmPluginStateContext<TState>): MaybePromise$1<any>;
886
+ after?(result: BundleResultPayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
887
+ }
888
+ interface FarmPluginDevHooks<TState = unknown> {
889
+ server?(viteServer: ViteDevServer, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
890
+ update?(update: HMRUpdatePayload, context: FarmPluginStateContext<TState>): MaybePromise$1<void>;
891
+ }
892
+ interface FarmPluginClientConfig<TState = unknown, TPublic = undefined> extends FarmClientPlugin<TState, TPublic> {
893
+ /** Explicitly public, JSON-safe data embedded in the browser bundle. */
894
+ public?: TPublic;
895
+ }
896
+ interface FarmPlugin<TState = any, TRequestContext extends object = Record<string, unknown>, TClientState = any, TClientPublic = any> {
897
+ name: string;
898
+ version?: string;
899
+ enforce?: "pre" | "post";
900
+ /** Transform Farm config before it is resolved. */
901
+ configure?: (config: FarmConfig, context: FarmPluginContext) => MaybePromise$1<FarmConfig | void>;
902
+ /** Initialize private plugin state once for this plugin manager. */
903
+ setup?: (context: FarmPluginSetupContext) => MaybePromise$1<TState>;
904
+ runtime?: FarmPluginRuntimeHooks<TState, TRequestContext>;
905
+ router?: FarmPluginRouterHooks<TState>;
906
+ render?: FarmPluginRenderHooks<TState>;
907
+ build?: FarmPluginBuildHooks<TState>;
908
+ dev?: FarmPluginDevHooks<TState>;
909
+ /** Optional browser lifecycle for this logical plugin. */
910
+ client?: FarmPluginClientConfig<TClientState, TClientPublic>;
911
+ /** @deprecated Use `setup` instead. */
912
+ init?: (context: FarmPluginContext) => void | Promise<void>;
913
+ /** @deprecated Use `runtime.start` instead. */
914
+ ready?: (context: FarmPluginContext) => void | Promise<void>;
915
+ /** @deprecated Use `dev.server` instead. */
916
+ devServerCreated?: (viteServer: ViteDevServer, context: FarmPluginContext) => void | Promise<void>;
917
+ /** @deprecated Use `configure` instead. */
918
+ config?: (config: FarmConfig, context: FarmPluginContext) => FarmConfig | Promise<FarmConfig>;
919
+ configResolved?: (config: FarmConfig, context: FarmPluginContext) => void | Promise<void>;
920
+ /** @deprecated Use `build.before` instead. */
921
+ buildStart?: (context: FarmPluginContext) => void | Promise<void>;
922
+ /** @deprecated Use `build.after` instead. */
923
+ buildEnd?: (context: FarmPluginContext) => void | Promise<void>;
924
+ /** @deprecated Use `router.discovered` instead. */
925
+ routeDiscovered?: (route: RouteDiscoveredPayload, context: FarmPluginContext) => void | Promise<void>;
926
+ /** @deprecated Use `router.generated` instead. */
927
+ routesGenerated?: (routes: RoutesGeneratedPayload, context: FarmPluginContext) => void | Promise<void>;
928
+ /** @deprecated Use `router.discovered` instead. */
929
+ middlewareDiscovered?: (middleware: MiddlewareDiscoveredPayload, context: FarmPluginContext) => void | Promise<void>;
930
+ /** @deprecated Use `router.discovered` instead. */
931
+ apiRouteDiscovered?: (route: APIRouteDiscoveredPayload, context: FarmPluginContext) => void | Promise<void>;
932
+ /** @deprecated Use `router.before` instead. */
933
+ beforeRouteMatch?: (route: RouteMatchPayload, context: FarmPluginContext) => void | Promise<void>;
934
+ /** @deprecated Use `router.after` instead. */
935
+ afterRouteMatch?: (result: RouteMatchResultPayload, context: FarmPluginContext) => void | Promise<void>;
936
+ /** @deprecated Use `render.before` instead. */
937
+ beforeRender?: (render: RenderLifecyclePayload, context: FarmPluginContext) => void | Promise<void>;
938
+ /** @deprecated Use `render.html` instead. */
939
+ afterRender?: (html: string, render: RenderLifecyclePayload, context: FarmPluginContext) => string | Promise<string> | void | Promise<void>;
940
+ /** @deprecated Use `runtime.before` instead. */
941
+ beforeApiHandler?: (request: Request, api: APIHandlerLifecyclePayload, context: FarmRequestPluginContext) => Request | Promise<Request> | void | Promise<void>;
942
+ /** @deprecated Use `runtime.after` instead. */
943
+ afterApiHandler?: (response: Response, api: APIHandlerLifecyclePayload, context: FarmPluginContext) => Response | Promise<Response> | void | Promise<void>;
944
+ onError?: (error: ErrorLifecyclePayload, context: FarmPluginContext) => void | Promise<void>;
945
+ /** @deprecated Use `dev.update` instead. */
946
+ hmrUpdate?: (update: HMRUpdatePayload, context: FarmPluginContext) => void | Promise<void>;
947
+ /** @deprecated Use `build.before` instead. */
948
+ beforeBundle?: (bundle: BundleLifecyclePayload, context: FarmPluginContext) => void | Promise<void>;
949
+ /** @deprecated Use `build.after` instead. */
950
+ afterBundle?: (result: BundleResultPayload, context: FarmPluginContext) => void | Promise<void>;
951
+ /** @deprecated Use `build.configure` instead. */
952
+ beforeNitroBuild?: (nitroConfig: any, context: FarmPluginContext) => any | Promise<any>;
953
+ afterNitroBuild?: (payload: NitroBuildLifecyclePayload, context: FarmPluginContext) => void | Promise<void>;
954
+ /** @deprecated Use `runtime.close` instead. */
955
+ shutdown?: (payload: ShutdownPayload, context: FarmPluginContext) => void | Promise<void>;
956
+ /** @deprecated Use the Web Request based `runtime.before` hook instead. */
957
+ beforeRequest?: (req: FarmRequest, res: FarmResponse, context: FarmRequestPluginContext) => void | Promise<void>;
958
+ /** @deprecated Use the Web Response based `runtime.after` hook instead. */
959
+ afterResponse?: (req: FarmRequest, res: FarmResponse, context: FarmRequestPluginContext) => void | Promise<void>;
960
+ /** @deprecated Use `render.html` instead. */
961
+ transformHTML?: (html: string, context: FarmPluginContext) => string | Promise<string>;
962
+ /** @deprecated Use `render.before` or `render.html` instead. */
963
+ transformPage?: (component: any, context: FarmPluginContext) => any | Promise<any>;
964
+ }
965
+ declare class PluginManager {
966
+ private plugins;
967
+ private hookPresence;
968
+ private runtimeHookPresence;
969
+ private context;
970
+ private pluginStates;
971
+ private setupComplete;
972
+ private initialized;
973
+ private runtimeReady;
974
+ private runtimeClosed;
975
+ private runtimeStartPromise?;
976
+ private runtimeClosePromise?;
977
+ private runtimeRequestContexts;
978
+ private failedRuntimeSessions;
979
+ constructor(context: Omit<FarmPluginContext, "requestContext">);
980
+ private createRequestHookContext;
981
+ private copyRequestStore;
982
+ private copyRuntimeRequestContext;
983
+ private createRuntimeBaseEvent;
984
+ private createRuntimeRequestContext;
985
+ private runRuntimeErrorHooks;
986
+ private createStateHookContext;
987
+ private getPluginHooks;
988
+ private getHookContext;
989
+ addPlugin(plugin: FarmPlugin): void;
990
+ addPlugins(plugins: FarmPlugin[]): void;
991
+ getPlugins(): FarmPlugin[];
992
+ getSortedPlugins(): FarmPlugin[];
993
+ hasHook(hookName: keyof FarmPlugin): boolean;
994
+ hasRuntimeHook(hookName: "context" | "before" | "after" | "error"): boolean;
995
+ hasRuntimeRequestHooks(): boolean;
996
+ copyRequestContext(source: FarmRequest | Request, target: FarmRequest | Request): void;
997
+ setupPlugins(): Promise<void>;
998
+ startRuntime(): Promise<void>;
999
+ closeRuntime(reason?: string): Promise<void>;
1000
+ beginRuntimeRequest(request: Request, options?: FarmPluginRuntimeRequestOptions): Promise<FarmPluginRuntimeSession>;
1001
+ endRuntimeRequest(session: FarmPluginRuntimeSession, initialResponse: Response): Promise<Response>;
1002
+ failRuntimeRequest(session: FarmPluginRuntimeSession, error: unknown): Promise<void>;
1003
+ runRuntimeRequest(request: Request, handler: FarmPluginRuntimeRequestHandler, options?: FarmPluginRuntimeRequestOptions): Promise<Response>;
1004
+ runHook<K extends keyof FarmPlugin>(hookName: K, ...args: any[]): Promise<any>;
1005
+ runHookSerial<K extends keyof FarmPlugin>(hookName: K, initialValue: any, ...args: any[]): Promise<any>;
1006
+ runHookParallel<K extends keyof FarmPlugin>(hookName: K, ...args: any[]): Promise<boolean>;
1007
+ updateContext(updates: Partial<FarmPluginContext>): void;
1008
+ }
1009
+ declare function definePlugin<TState = undefined, TRequestContext extends object = Record<string, never>, TClientState = unknown, TClientPublic = undefined>(plugin: FarmPlugin<TState, TRequestContext, TClientState, TClientPublic>): FarmPlugin<TState, TRequestContext, TClientState, TClientPublic>;
1010
+
1011
+ type FarmIntegrationCategory = "auth" | "payment" | "monitoring" | "logging" | (string & {});
1012
+ /** @deprecated Use FarmIntegrationCategory instead. */
1013
+ type FarmIntegrationSlot = FarmIntegrationCategory;
1014
+ type FarmIntegrationRouteParamValue = string | string[];
1015
+ type FarmIntegrationRouteParams = Record<string, FarmIntegrationRouteParamValue>;
1016
+ type FarmIntegrationRouteMethod = FarmIntegrationAPIMethod | Lowercase<FarmIntegrationAPIMethod> | "ALL" | "all";
1017
+ type FarmIntegrationRouteInputSource = "body" | "query";
1018
+ type MaybePromise<T> = T | Promise<T>;
1019
+ type FarmIntegrationValidationPathSegment = PropertyKey | {
1020
+ readonly key: PropertyKey;
1021
+ };
1022
+ interface FarmIntegrationRouteInput<TBody = unknown, TQuery = unknown> {
1023
+ body?: TBody;
1024
+ query?: TQuery;
1025
+ }
1026
+ interface FarmIntegrationValidationIssue {
1027
+ source: FarmIntegrationRouteInputSource;
1028
+ path?: readonly (string | number)[];
1029
+ code?: string;
1030
+ message: string;
1031
+ }
1032
+ interface FarmIntegrationValidationErrorLike {
1033
+ issues?: readonly {
1034
+ path?: readonly FarmIntegrationValidationPathSegment[];
1035
+ code?: string;
1036
+ message?: string;
1037
+ }[];
1038
+ message?: string;
1039
+ }
1040
+ type FarmIntegrationValidationResult<TValue> = {
1041
+ success: true;
1042
+ data: TValue;
1043
+ } | {
1044
+ success: false;
1045
+ error: FarmIntegrationValidationErrorLike;
1046
+ };
1047
+ type FarmIntegrationStandardValidationResult<TValue> = {
1048
+ value: TValue;
1049
+ } | {
1050
+ issues: readonly {
1051
+ path?: readonly FarmIntegrationValidationPathSegment[];
1052
+ code?: string;
1053
+ message: string;
1054
+ }[];
1055
+ };
1056
+ interface FarmIntegrationInputSchema<TValue = unknown> {
1057
+ _output?: TValue;
1058
+ parse?(value: unknown): MaybePromise<TValue>;
1059
+ safeParse?(value: unknown): MaybePromise<FarmIntegrationValidationResult<TValue>>;
1060
+ safeParseAsync?(value: unknown): Promise<FarmIntegrationValidationResult<TValue>>;
1061
+ "~standard"?: {
1062
+ validate(value: unknown): MaybePromise<FarmIntegrationStandardValidationResult<TValue>>;
1063
+ types?: {
1064
+ output: TValue;
1065
+ };
1066
+ };
1067
+ }
1068
+ interface FarmIntegrationRouteInputSchemas<TBody = unknown, TQuery = unknown> {
1069
+ body?: FarmIntegrationInputSchema<TBody>;
1070
+ query?: FarmIntegrationInputSchema<TQuery>;
1071
+ }
1072
+ /** @deprecated Use `FarmRequestStore` and access it through `ctx.req`. */
1073
+ type FarmIntegrationRequestContextStore = FarmRequestStore;
1074
+ declare const FARM_INTEGRATION_INTERNAL_DISPATCH_CONTEXT_KEY = "farm.integration.internalDispatch";
1075
+ type FarmIntegrationRouteDb<TSchema extends FarmIntegrationSchema | undefined> = InferFarmIntegrationOrmClient<TSchema>;
1076
+ interface FarmIntegrationRouteStorageArgs<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1077
+ getClient(): Promise<unknown | undefined>;
1078
+ getOrm(): Promise<FarmIntegrationRouteDb<TSchema>>;
1079
+ }
1080
+ interface FarmIntegrationRouteArgs<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1081
+ db: FarmIntegrationRouteDb<TSchema>;
1082
+ getDb(): Promise<FarmIntegrationRouteDb<TSchema>>;
1083
+ storage: FarmIntegrationRouteStorageArgs<TSchema>;
1084
+ }
1085
+ interface FarmIntegrationConfigContext<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1086
+ key: string;
1087
+ integration: FarmIntegration<TSchema, any>;
1088
+ appConfig: FarmPluginContext["config"];
1089
+ /** Alias for appConfig. */
1090
+ config: FarmPluginContext["config"];
1091
+ args: FarmIntegrationRouteArgs<TSchema>;
1092
+ env: Record<string, string | undefined>;
1093
+ isDev: boolean;
1094
+ isProd: boolean;
1095
+ }
1096
+ interface FarmIntegrationConfigDefinition<TConfig = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1097
+ schema?: FarmIntegrationInputSchema<TConfig>;
1098
+ env?: Record<string, string | readonly string[]>;
1099
+ defaults?: Partial<TConfig> | ((context: FarmIntegrationConfigContext<TSchema>) => MaybePromise<Partial<TConfig>>);
1100
+ input?: Partial<TConfig> | ((context: FarmIntegrationConfigContext<TSchema>) => MaybePromise<Partial<TConfig>>);
1101
+ resolve?(context: FarmIntegrationConfigContext<TSchema>): MaybePromise<TConfig | Partial<TConfig> | undefined>;
1102
+ }
1103
+ type FarmIntegrationConfigInput<TConfig = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = FarmIntegrationInputSchema<TConfig> | FarmIntegrationConfigDefinition<TConfig, TSchema>;
1104
+ type FarmIntegrationLifecycleLogLevel = "info" | "warn" | "error";
1105
+ interface FarmIntegrationLifecycleLogger {
1106
+ info(message: string, meta?: Record<string, unknown>): void;
1107
+ warn(message: string, meta?: Record<string, unknown>): void;
1108
+ error(message: string, meta?: Record<string, unknown>): void;
1109
+ }
1110
+ interface FarmIntegrationLifecycleContext<TConfig = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> extends FarmIntegrationConfigContext<TSchema> {
1111
+ integration: FarmIntegration<TSchema, TConfig>;
1112
+ integrationConfig: TConfig;
1113
+ log: FarmIntegrationLifecycleLogger;
1114
+ reason?: string;
1115
+ cleanup(callback?: () => MaybePromise<void>): Promise<void>;
1116
+ }
1117
+ type FarmIntegrationLifecycleHook<TConfig = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = (context: FarmIntegrationLifecycleContext<TConfig, TSchema>) => MaybePromise<void>;
1118
+ /**
1119
+ * Small per-call integration metadata. Values received over HTTP are
1120
+ * client-controlled and should be validated before authorization decisions.
1121
+ */
1122
+ type FarmIntegrationData = Record<string, unknown>;
1123
+ interface FarmIntegrationHandlerContext<TBody = unknown, TQuery = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1124
+ request: Request;
1125
+ requestId: string;
1126
+ url: URL;
1127
+ pathname: string;
1128
+ method: string;
1129
+ params: FarmIntegrationRouteParams;
1130
+ input: FarmIntegrationRouteInput<TBody, TQuery>;
1131
+ args: FarmIntegrationRouteArgs<TSchema>;
1132
+ data: FarmIntegrationData;
1133
+ integration: {
1134
+ category: FarmIntegrationCategory;
1135
+ /** @deprecated Use category instead. */
1136
+ slot: FarmIntegrationCategory;
1137
+ type: string;
1138
+ instance: unknown;
1139
+ };
1140
+ route: {
1141
+ kind: "route" | "middleware";
1142
+ path: string;
1143
+ methods: readonly string[];
1144
+ };
1145
+ req: FarmRequestStore;
1146
+ /** @deprecated Use `req` instead. */
1147
+ requestContext: FarmRequestStore;
1148
+ config: FarmPluginContext["config"];
1149
+ isDev: boolean;
1150
+ isProd: boolean;
1151
+ }
1152
+ interface FarmIntegrationRouteHookContext<TBody = unknown, TQuery = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> extends FarmIntegrationHandlerContext<TBody, TQuery, TSchema> {
1153
+ response?: Response;
1154
+ }
1155
+ type FarmIntegrationRouteHook<TBody = unknown, TQuery = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = {
1156
+ bivarianceHack(request: Request, context: FarmIntegrationRouteHookContext<TBody, TQuery, TSchema>): Promise<Response | void> | Response | void;
1157
+ }["bivarianceHack"];
1158
+ interface FarmIntegrationRoute<TBody = unknown, TQuery = unknown, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1159
+ path: string;
1160
+ method?: FarmIntegrationRouteMethod;
1161
+ methods?: readonly FarmIntegrationRouteMethod[];
1162
+ middleware?: readonly FarmIntegrationRouteMiddleware<TSchema>[];
1163
+ before?: readonly FarmIntegrationRouteHook<TBody, TQuery, TSchema>[];
1164
+ after?: readonly FarmIntegrationRouteHook<TBody, TQuery, TSchema>[];
1165
+ rawBody?: boolean;
1166
+ bodyFormat?: FarmIntegrationAPIBodyFormat;
1167
+ body?: FarmIntegrationInputSchema<TBody>;
1168
+ query?: FarmIntegrationInputSchema<TQuery>;
1169
+ input?: FarmIntegrationRouteInputSchemas<TBody, TQuery>;
1170
+ handler(request: Request, context: FarmIntegrationHandlerContext<TBody, TQuery, TSchema>): Promise<Response> | Response;
1171
+ }
1172
+ interface FarmTypedIntegrationRoute<TPath extends string = string, TBody = never, TQuery = never, TResponse = unknown, TServer extends boolean = false, TMethod extends FarmIntegrationAPIMethod = FarmIntegrationAPIMethod, TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> extends FarmIntegrationRoute<TBody, TQuery, TSchema> {
1173
+ path: TPath;
1174
+ method: TMethod;
1175
+ __operation: FarmIntegrationAPIOperation<TBody, TQuery, TResponse, TServer, TMethod>;
1176
+ }
1177
+ interface FarmIntegrationRouteMiddleware<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1178
+ handler(request: Request, context: FarmIntegrationHandlerContext<unknown, unknown, TSchema>): Promise<Response | void> | Response | void;
1179
+ }
1180
+ interface FarmIntegrationMiddleware<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1181
+ matcher?: string | string[];
1182
+ handler(request: Request, context: FarmIntegrationHandlerContext<unknown, unknown, TSchema>): Promise<Response | void> | Response | void;
1183
+ }
1184
+ interface FarmIntegrationProviderProps {
1185
+ children: ReactNode;
1186
+ }
1187
+ interface FarmIntegrationProvider {
1188
+ name: string;
1189
+ type: string;
1190
+ props?: Record<string, unknown>;
1191
+ component?: ComponentType<FarmIntegrationProviderProps>;
1192
+ }
1193
+ interface FarmIntegrationDocumentNavigation {
1194
+ matcher: string | readonly string[];
1195
+ }
1196
+ type FarmIntegrationSchemaFieldType = "id" | "uuid" | "string" | "text" | "boolean" | "integer" | "number" | "datetime" | "json" | "enum";
1197
+ interface FarmIntegrationSchemaReference {
1198
+ model: string;
1199
+ field: string;
1200
+ relation?: "belongsTo" | "hasOne" | "hasMany";
1201
+ onDelete?: "cascade" | "restrict" | "setNull" | "noAction";
1202
+ enforced?: "db" | "app" | "none";
1203
+ }
1204
+ interface FarmIntegrationSchemaField {
1205
+ type: FarmIntegrationSchemaFieldType;
1206
+ name?: string;
1207
+ description?: string;
1208
+ required?: boolean;
1209
+ nullable?: boolean;
1210
+ primaryKey?: boolean;
1211
+ unique?: boolean;
1212
+ index?: boolean;
1213
+ list?: boolean;
1214
+ default?: unknown;
1215
+ values?: readonly string[];
1216
+ reference?: FarmIntegrationSchemaReference;
1217
+ meta?: Record<string, unknown>;
1218
+ }
1219
+ interface FarmIntegrationSchemaConstraint {
1220
+ type: "unique" | "index";
1221
+ fields: readonly string[];
1222
+ name?: string;
1223
+ meta?: Record<string, unknown>;
1224
+ }
1225
+ interface FarmIntegrationSchemaModel {
1226
+ name?: string;
1227
+ description?: string;
1228
+ fields: Record<string, FarmIntegrationSchemaField>;
1229
+ constraints?: readonly FarmIntegrationSchemaConstraint[];
1230
+ meta?: Record<string, unknown>;
1231
+ }
1232
+ interface FarmIntegrationSchemaModelExtension {
1233
+ name?: string;
1234
+ description?: string;
1235
+ fields?: Record<string, FarmIntegrationSchemaField>;
1236
+ constraints?: readonly FarmIntegrationSchemaConstraint[];
1237
+ meta?: Record<string, unknown>;
1238
+ }
1239
+ interface FarmIntegrationSchemaModelOverride {
1240
+ name?: string;
1241
+ description?: string;
1242
+ fields?: Record<string, Partial<FarmIntegrationSchemaField>>;
1243
+ constraints?: readonly FarmIntegrationSchemaConstraint[];
1244
+ meta?: Record<string, unknown>;
1245
+ }
1246
+ interface FarmIntegrationSchema {
1247
+ models: Record<string, FarmIntegrationSchemaModel>;
1248
+ meta?: Record<string, unknown>;
1249
+ extend?: Record<string, FarmIntegrationSchemaModelExtension>;
1250
+ override?: Record<string, FarmIntegrationSchemaModelOverride>;
1251
+ }
1252
+ declare function defineIntegrationSchema<TSchema extends FarmIntegrationSchema>(schema: TSchema): TSchema;
1253
+ type FarmIntegrationLogPhase = "registered" | "validate" | "setup" | "ready" | "dispose" | "request:start" | "request:end" | "request:error";
1254
+ interface FarmIntegrationLogEvent {
1255
+ category: FarmIntegrationCategory;
1256
+ /** @deprecated Use category instead. */
1257
+ slot: FarmIntegrationCategory;
1258
+ type: string;
1259
+ phase: FarmIntegrationLogPhase;
1260
+ route?: {
1261
+ kind: "route" | "middleware";
1262
+ path: string;
1263
+ methods: readonly string[];
1264
+ };
1265
+ requestId?: string;
1266
+ request?: Request;
1267
+ response?: Response;
1268
+ error?: unknown;
1269
+ durationMs?: number;
1270
+ level?: FarmIntegrationLifecycleLogLevel;
1271
+ message?: string;
1272
+ meta?: Record<string, unknown>;
1273
+ context: Map<string, unknown>;
1274
+ }
1275
+ type FarmIntegrationLogger = (event: FarmIntegrationLogEvent) => void | Promise<void>;
1276
+ interface FarmIntegration<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined, TConfig = unknown> {
1277
+ readonly kind: "farm-integration";
1278
+ category: FarmIntegrationCategory;
1279
+ /** @deprecated Use category instead. */
1280
+ slot?: FarmIntegrationCategory;
1281
+ type: string;
1282
+ instance: unknown;
1283
+ /** Set to false when a platform adapter owns this integration's production routes. */
1284
+ serverRuntime?: boolean;
1285
+ api?: FarmIntegrationAPI;
1286
+ schema?: TSchema;
1287
+ config?: FarmIntegrationConfigInput<TConfig, TSchema>;
1288
+ validate?: FarmIntegrationLifecycleHook<TConfig, TSchema>;
1289
+ setup?: FarmIntegrationLifecycleHook<TConfig, TSchema>;
1290
+ ready?: FarmIntegrationLifecycleHook<TConfig, TSchema>;
1291
+ dispose?: FarmIntegrationLifecycleHook<TConfig, TSchema>;
1292
+ log?: FarmIntegrationLogger;
1293
+ routes?: readonly FarmIntegrationRoute<any, any, TSchema>[];
1294
+ endpoints?: FarmIntegrationEndpoints<TSchema>;
1295
+ middleware?: readonly FarmIntegrationMiddleware<TSchema>[];
1296
+ providers?: readonly FarmIntegrationProvider[];
1297
+ documentNavigations?: readonly FarmIntegrationDocumentNavigation[];
1298
+ plugins?: readonly FarmPlugin[];
1299
+ }
1300
+ type FarmIntegrationsUserConfig = Record<string, FarmIntegration<any, any> | undefined>;
1301
+ /** @internal Identifies lifecycle plugins owned by platform-managed integrations. */
1302
+ declare function getFarmIntegrationPluginServerRuntime(plugin: FarmPlugin): boolean | undefined;
1303
+ type IntegrationRouteBuilderOptions<TBody, TQuery, TServer extends boolean, TSchema extends FarmIntegrationSchema | undefined> = {
1304
+ middleware?: readonly FarmIntegrationRouteMiddleware<TSchema>[];
1305
+ before?: readonly FarmIntegrationRouteHook<TBody, TQuery, TSchema>[];
1306
+ after?: readonly FarmIntegrationRouteHook<TBody, TQuery, TSchema>[];
1307
+ rawBody?: boolean;
1308
+ headers?: Record<string, string>;
1309
+ credentials?: RequestCredentials;
1310
+ bodyFormat?: FarmIntegrationAPIBodyFormat;
1311
+ responseFormat?: FarmIntegrationAPIResponseFormat;
1312
+ isServer?: TServer;
1313
+ body?: FarmIntegrationInputSchema<TBody>;
1314
+ query?: FarmIntegrationInputSchema<TQuery>;
1315
+ input?: FarmIntegrationRouteInputSchemas<TBody, TQuery>;
1316
+ handler(request: Request, context: FarmIntegrationHandlerContext<TBody, TQuery, TSchema>): Promise<Response> | Response;
1317
+ };
1318
+ interface FarmIntegrationRouteFactory<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1319
+ get<TPath extends string, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: Omit<IntegrationRouteBuilderOptions<never, TQuery, TServer, TSchema>, "bodyFormat">): FarmTypedIntegrationRoute<TPath, never, TQuery, TResponse, TServer, "GET", TSchema>;
1320
+ post<TPath extends string, TBody = never, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: IntegrationRouteBuilderOptions<TBody, TQuery, TServer, TSchema>): FarmTypedIntegrationRoute<TPath, TBody, TQuery, TResponse, TServer, "POST", TSchema>;
1321
+ put<TPath extends string, TBody = never, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: IntegrationRouteBuilderOptions<TBody, TQuery, TServer, TSchema>): FarmTypedIntegrationRoute<TPath, TBody, TQuery, TResponse, TServer, "PUT", TSchema>;
1322
+ patch<TPath extends string, TBody = never, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: IntegrationRouteBuilderOptions<TBody, TQuery, TServer, TSchema>): FarmTypedIntegrationRoute<TPath, TBody, TQuery, TResponse, TServer, "PATCH", TSchema>;
1323
+ delete<TPath extends string, TBody = never, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: IntegrationRouteBuilderOptions<TBody, TQuery, TServer, TSchema>): FarmTypedIntegrationRoute<TPath, TBody, TQuery, TResponse, TServer, "DELETE", TSchema>;
1324
+ options<TPath extends string, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: Omit<IntegrationRouteBuilderOptions<never, TQuery, TServer, TSchema>, "bodyFormat">): FarmTypedIntegrationRoute<TPath, never, TQuery, TResponse, TServer, "OPTIONS", TSchema>;
1325
+ head<TPath extends string, TResponse = unknown, TQuery = never, TServer extends boolean = false>(path: TPath, input: Omit<IntegrationRouteBuilderOptions<never, TQuery, TServer, TSchema>, "bodyFormat">): FarmTypedIntegrationRoute<TPath, never, TQuery, TResponse, TServer, "HEAD", TSchema>;
1326
+ }
1327
+ interface FarmIntegrationRoutesFactoryContext<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> {
1328
+ route: FarmIntegrationRouteFactory<TSchema>;
1329
+ integrationRoute: FarmIntegrationRouteFactory<TSchema>;
1330
+ }
1331
+ type FarmIntegrationRoutesFactory<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = (context: FarmIntegrationRoutesFactoryContext<TSchema>) => readonly FarmIntegrationRoute<any, any, TSchema>[];
1332
+ type FarmIntegrationEndpointValue<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = FarmIntegrationRoute<any, any, TSchema> | readonly FarmIntegrationEndpointValue<TSchema>[] | {
1333
+ readonly [key: string]: FarmIntegrationEndpointValue<TSchema> | undefined;
1334
+ };
1335
+ type FarmIntegrationEndpoints<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = {
1336
+ readonly [key: string]: FarmIntegrationEndpointValue<TSchema> | undefined;
1337
+ };
1338
+ interface FarmIntegrationEndpointsFactoryContext<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> extends FarmIntegrationRoutesFactoryContext<TSchema> {
1339
+ endpoint: FarmIntegrationRouteFactory<TSchema>;
1340
+ }
1341
+ type FarmIntegrationEndpointsFactory<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = (context: FarmIntegrationEndpointsFactoryContext<TSchema>) => FarmIntegrationEndpoints<TSchema>;
1342
+ declare function createIntegrationRoute<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined>(_schema?: TSchema): FarmIntegrationRouteFactory<TSchema>;
1343
+ declare const integrationRoute: FarmIntegrationRouteFactory<undefined>;
1344
+ type RegisteredIntegrationRuntime = {
1345
+ integration: FarmIntegration;
1346
+ config: FarmPluginContext["config"];
1347
+ isDev: boolean;
1348
+ isProd: boolean;
1349
+ };
1350
+ type FarmIntegrationRoutesInput<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = readonly FarmIntegrationRoute<any, any, TSchema>[] | FarmIntegrationRoutesFactory<TSchema>;
1351
+ type FarmIntegrationEndpointsInput<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined> = FarmIntegrationEndpoints<TSchema> | FarmIntegrationEndpointsFactory<TSchema>;
1352
+ type FarmIntegrationInput<TSchema extends FarmIntegrationSchema | undefined = FarmIntegrationSchema | undefined, TConfig = unknown> = Omit<FarmIntegration<TSchema, TConfig>, "kind" | "category" | "slot" | "config" | "routes" | "endpoints"> & {
1353
+ config?: FarmIntegrationConfigInput<TConfig, TSchema>;
1354
+ routes?: FarmIntegrationRoutesInput<TSchema>;
1355
+ endpoints?: FarmIntegrationEndpointsInput<TSchema>;
1356
+ } & ({
1357
+ category: FarmIntegrationCategory;
1358
+ slot?: FarmIntegrationCategory;
1359
+ } | {
1360
+ category?: FarmIntegrationCategory;
1361
+ slot: FarmIntegrationCategory;
1362
+ });
1363
+ type FarmIntegrationCategoryInput = {
1364
+ category: FarmIntegrationCategory;
1365
+ slot?: FarmIntegrationCategory;
1366
+ } | {
1367
+ category?: FarmIntegrationCategory;
1368
+ slot: FarmIntegrationCategory;
1369
+ };
1370
+ type FarmIntegrationShapeForInference = FarmIntegrationCategoryInput & {
1371
+ api?: FarmIntegrationAPI;
1372
+ schema?: FarmIntegrationSchema;
1373
+ config?: unknown;
1374
+ routes?: unknown;
1375
+ endpoints?: unknown;
1376
+ };
1377
+ type ExtractIntegrationSchema<TIntegration> = TIntegration extends {
1378
+ schema: infer TSchema extends FarmIntegrationSchema;
1379
+ } ? TSchema : undefined;
1380
+ type ResolveIntegrationRoutesInput<TRoutes, TSchema extends FarmIntegrationSchema | undefined> = TRoutes extends FarmIntegrationRoutesFactory<TSchema> ? ReturnType<TRoutes> : TRoutes;
1381
+ type ResolveIntegrationEndpointsInput<TEndpoints, TSchema extends FarmIntegrationSchema | undefined> = TEndpoints extends FarmIntegrationEndpointsFactory<TSchema> ? ReturnType<TEndpoints> : TEndpoints;
1382
+ type ExtractIntegrationRoutesFromRoutesInput<TRoutes, TSchema extends FarmIntegrationSchema | undefined> = ResolveIntegrationRoutesInput<TRoutes, TSchema> extends readonly (infer TRoute)[] ? TRoute : never;
1383
+ type ExtractIntegrationRoutesFromEndpointValue<TValue> = TValue extends FarmIntegrationRouteOperationCarrier<string, any> ? TValue : TValue extends readonly (infer TItem)[] ? ExtractIntegrationRoutesFromEndpointValue<TItem> : TValue extends object ? ExtractIntegrationRoutesFromEndpointValue<TValue[keyof TValue]> : never;
1384
+ type ExtractIntegrationRoutesFromEndpointsInput<TEndpoints, TSchema extends FarmIntegrationSchema | undefined> = ExtractIntegrationRoutesFromEndpointValue<ResolveIntegrationEndpointsInput<TEndpoints, TSchema>>;
1385
+ type ExtractIntegrationRouteUnion<TIntegration, TSchema extends FarmIntegrationSchema | undefined> = (TIntegration extends {
1386
+ routes: infer TRoutes;
1387
+ } ? ExtractIntegrationRoutesFromRoutesInput<TRoutes, TSchema> : never) | (TIntegration extends {
1388
+ endpoints: infer TEndpoints;
1389
+ } ? ExtractIntegrationRoutesFromEndpointsInput<TEndpoints, TSchema> : never);
1390
+ type ExtractDefinedIntegrationRoutes<TIntegration, TSchema extends FarmIntegrationSchema | undefined> = [ExtractIntegrationRouteUnion<TIntegration, TSchema>] extends [never] ? undefined : readonly ExtractIntegrationRouteUnion<TIntegration, TSchema>[];
1391
+ type ExtractDefinedIntegrationEndpoints<TIntegration, TSchema extends FarmIntegrationSchema | undefined> = TIntegration extends {
1392
+ endpoints: infer TEndpoints;
1393
+ } ? ResolveIntegrationEndpointsInput<TEndpoints, TSchema> : undefined;
1394
+ type ExtractIntegrationAPIRoutes<TIntegration, TSchema extends FarmIntegrationSchema | undefined> = Extract<ExtractIntegrationRouteUnion<TIntegration, TSchema>, FarmIntegrationRouteOperationCarrier<string, any>>;
1395
+ type ExtractIntegrationCategory<TIntegration extends FarmIntegrationCategoryInput> = TIntegration extends {
1396
+ category: infer TCategory extends FarmIntegrationCategory;
1397
+ } ? TCategory : TIntegration extends {
1398
+ slot: infer TSlot extends FarmIntegrationCategory;
1399
+ } ? TSlot : FarmIntegrationCategory;
1400
+ type ExtractDerivedIntegrationAPI<TIntegration extends FarmIntegrationShapeForInference, TSchema extends FarmIntegrationSchema | undefined = ExtractIntegrationSchema<TIntegration>> = TIntegration extends {
1401
+ api: infer TAPI extends FarmIntegrationAPI;
1402
+ } ? TAPI : [ExtractIntegrationAPIRoutes<TIntegration, TSchema>] extends [never] ? FarmIntegrationAPI | undefined : InferIntegrationAPIFromRoutes<readonly ExtractIntegrationAPIRoutes<TIntegration, TSchema>[]>;
1403
+ type DefinedIntegration<TIntegration extends FarmIntegrationShapeForInference, TSchema extends FarmIntegrationSchema | undefined = ExtractIntegrationSchema<TIntegration>> = Omit<TIntegration, "kind" | "category" | "slot" | "api" | "routes" | "endpoints"> & {
1404
+ readonly kind: "farm-integration";
1405
+ category: ExtractIntegrationCategory<TIntegration>;
1406
+ slot: ExtractIntegrationCategory<TIntegration>;
1407
+ routes: ExtractDefinedIntegrationRoutes<TIntegration, TSchema>;
1408
+ endpoints: ExtractDefinedIntegrationEndpoints<TIntegration, TSchema>;
1409
+ api: ExtractDerivedIntegrationAPI<TIntegration, TSchema>;
1410
+ };
1411
+ declare function defineIntegration<const TSchema extends FarmIntegrationSchema | undefined, const TConfig, TIntegration extends FarmIntegrationInput<TSchema, TConfig>>(integration: TIntegration & FarmIntegrationInput<TSchema, TConfig>): DefinedIntegration<TIntegration, TSchema>;
1412
+ declare function isFarmIntegration(value: unknown): value is FarmIntegration;
1413
+ declare function resolveIntegrationPlugins(integrations: FarmIntegrationsUserConfig | undefined): FarmPlugin[];
1414
+ declare function getIntegrationProviders(integrations: FarmIntegrationsUserConfig | undefined): Array<Pick<FarmIntegrationProvider, "name" | "type" | "props">>;
1415
+ declare function getIntegrationDocumentNavigationMatchers(integrations: FarmIntegrationsUserConfig | undefined): string[];
1416
+ declare function getIntegrationSchemas(integrations: FarmIntegrationsUserConfig | undefined): Record<string, FarmIntegrationSchema>;
1417
+ declare function getRegisteredIntegrationRuntime(key: string): RegisteredIntegrationRuntime | undefined;
1418
+ declare function getRegisteredIntegrations(): Record<string, FarmIntegration>;
1419
+ declare function getRegisteredIntegrationSchemas(): Record<string, FarmIntegrationSchema>;
1420
+ declare function matchIntegrationRoute(integrations: FarmIntegrationsUserConfig | undefined, input: {
1421
+ pathname: string;
1422
+ method?: string;
1423
+ }): {
1424
+ key: string;
1425
+ integration: FarmIntegration;
1426
+ route: {
1427
+ path: string;
1428
+ methods: readonly string[];
1429
+ };
1430
+ params: FarmIntegrationRouteParams;
1431
+ } | null;
1432
+ declare function matchRegisteredIntegrationRoute(input: {
1433
+ pathname: string;
1434
+ method?: string;
1435
+ }): {
1436
+ key: string;
1437
+ integration: FarmIntegration;
1438
+ route: {
1439
+ path: string;
1440
+ methods: readonly string[];
1441
+ };
1442
+ params: FarmIntegrationRouteParams;
1443
+ } | null;
1444
+ declare function getRegisteredIntegrationAPIManifest(): Record<string, FarmIntegrationAPI>;
1445
+ declare function dispatchIntegrationRequest(runtime: RegisteredIntegrationRuntime, request: Request, options?: {
1446
+ currentRequest?: Request;
1447
+ data?: FarmIntegrationData;
1448
+ internal?: boolean;
1449
+ }): Promise<Response | null>;
1450
+
1451
+ type NitroPreset = "node-server" | "vercel" | "cloudflare" | "cloudflare-pages" | "netlify" | "netlify-edge" | "bun" | "deno" | "azure" | "aws-lambda" | "firebase" | "custom" | "self-host" | "farm" | string;
1452
+ type FarmMigrationCommand = string | {
1453
+ /** Shell command to run for this migration step. */
1454
+ command: string;
1455
+ /** Optional label printed by the CLI before running the command. */
1456
+ name?: string;
1457
+ /** Working directory for this command, relative to the project root unless absolute. */
1458
+ cwd?: string;
1459
+ /** Additional environment variables for this command. */
1460
+ env?: Record<string, string | undefined>;
1461
+ /** Skip this command without removing it from config. */
1462
+ skip?: boolean;
1463
+ };
1464
+ interface FarmMigrationsConfig {
1465
+ /** One-shot commands that create or update app/integration schemas. */
1466
+ commands?: FarmMigrationCommand[];
1467
+ }
1468
+ type FarmMigrationsUserConfig = FarmMigrationsConfig | FarmMigrationCommand[];
1469
+ interface ResolvedFarmMigrationsConfig {
1470
+ commands: FarmMigrationCommand[];
1471
+ }
1472
+ interface FarmContextFactoryInput {
1473
+ request: Request;
1474
+ rawRequest?: FarmRequest;
1475
+ params: Record<string, string>;
1476
+ search: Record<string, string | string[] | undefined>;
1477
+ path: string;
1478
+ }
1479
+ type FarmContextFactory<TContext = unknown> = (input: FarmContextFactoryInput) => TContext | Promise<TContext>;
1480
+ interface FarmAppContext {
1481
+ }
1482
+ interface FarmConfig {
1483
+ root?: string;
1484
+ /** App source directory. @default "src" */
1485
+ srcDir?: string;
1486
+ extends?: readonly FarmLayerEntry[];
1487
+ /** Resolved layer graph. Populated by config resolution. */
1488
+ layers?: readonly ResolvedFarmLayer[];
1489
+ outDir?: string;
1490
+ basePath?: string;
1491
+ preset?: NitroPreset;
1492
+ deploy?: {
1493
+ target?: "vercel" | "cloudflare" | "netlify" | "node" | string;
1494
+ preset?: NitroPreset;
1495
+ outputDir?: string;
1496
+ output?: string;
1497
+ projectName?: string;
1498
+ vercel?: {
1499
+ outputDirectory?: string;
1500
+ buildCommand?: string;
1501
+ installCommand?: string;
1502
+ framework?: string | null;
1503
+ };
1504
+ cloudflare?: {
1505
+ outputDir?: string;
1506
+ projectName?: string;
1507
+ };
1508
+ netlify?: {
1509
+ outputDir?: string;
1510
+ site?: string;
1511
+ };
1512
+ };
1513
+ storage?: FarmStorageUserConfig;
1514
+ /** Shared application data, route, ISR, and PPR cache. */
1515
+ cache?: FarmCacheUserConfig;
1516
+ integrations?: FarmIntegrationsUserConfig;
1517
+ /** Farm-native authentication. `true` enables email/password auth. */
1518
+ auth?: FarmAuthUserConfig | ResolvedFarmAuthConfig;
1519
+ plugins?: FarmPlugin[];
1520
+ migrations?: FarmMigrationsUserConfig;
1521
+ /** Map portable cron schedules to ordinary GET API routes. */
1522
+ cron?: FarmCronUserConfig | FarmCronResolvedConfig | false;
1523
+ workflows?: FarmWorkflowsUserConfig | boolean;
1524
+ env?: FarmEnvConfig<any, any> | ResolvedFarmEnv;
1525
+ middleware?: FarmMiddlewareConfig;
1526
+ routeRules?: FarmRouteRules;
1527
+ context?: FarmContextFactory<any>;
1528
+ serverActions?: FarmServerActionsConfig;
1529
+ images?: FarmImageConfig;
1530
+ i18n?: FarmI18nUserConfig | ResolvedFarmI18nConfig | false;
1531
+ /** Build identifier used to detect stale clients during rolling deployments. */
1532
+ deploymentId?: string;
1533
+ docs?: FarmDocsUserConfig | FarmDocsResolvedConfig;
1534
+ md?: FarmMarkdownUserConfig | FarmMarkdownResolvedConfig | boolean;
1535
+ mdx?: FarmMdxUserConfig | FarmMdxResolvedConfig;
1536
+ observability?: FarmObservabilityUserConfig;
1537
+ /** Development-only runtime inspector. Enabled by default during `farm dev`. */
1538
+ devtools?: FarmDevtoolsUserConfig;
1539
+ /**
1540
+ * When true, Link href is not strictly typed (accepts any string).
1541
+ * Use when you want to skip route-type errors on Link or don't use generated route types.
1542
+ */
1543
+ suppressLintOnLink?: boolean;
1544
+ experimental?: {
1545
+ serverComponents?: boolean;
1546
+ serverActions?: boolean;
1547
+ /**
1548
+ * Enable server-only optimized boundaries for host-only content. Boundary
1549
+ * interiors cannot contain Client Components, event handlers, or
1550
+ * independently updating React state.
1551
+ *
1552
+ * @experimental
1553
+ * @default false
1554
+ */
1555
+ optimizedBoundary?: boolean;
1556
+ };
1557
+ vite?: any;
1558
+ }
1559
+ /**
1560
+ * Middleware data available in page components
1561
+ */
1562
+ interface MiddlewareProps {
1563
+ /**
1564
+ * Map containing all data set by middleware via ctx.data.set()
1565
+ *
1566
+ * @example
1567
+ * ```tsx
1568
+ * // In middleware.ts
1569
+ * ctx.data.set('user', { id: 1, name: 'John' });
1570
+ *
1571
+ * // In page.tsx
1572
+ * const user = props.middleware?.data.get('user');
1573
+ * ```
1574
+ */
1575
+ data: Map<string, any>;
1576
+ }
1577
+ /**
1578
+ * Plugin context data available in server page components.
1579
+ * Only values explicitly exposed by plugins are included.
1580
+ */
1581
+ interface PluginContextProps {
1582
+ data: Map<string, any>;
1583
+ }
1584
+ /**
1585
+ * Page component props
1586
+ *
1587
+ * @param params - Dynamic route parameters (e.g., { id: '123' } for /users/[id])
1588
+ * @param searchParams - URL search/query parameters
1589
+ * @param path - Current pathname
1590
+ * @param middleware - Data set by middleware.ts (optional, available if middleware exists)
1591
+ * @param context - Data explicitly exposed by plugins for this request (optional)
1592
+ */
1593
+ interface PageProps {
1594
+ params: Record<string, string>;
1595
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
1596
+ path: string;
1597
+ /**
1598
+ * Data from middleware.ts in the same directory or parent directories
1599
+ * Access data via props.middleware?.data.get('key')
1600
+ *
1601
+ * @example
1602
+ * ```tsx
1603
+ * export default function Page(props: PageProps) {
1604
+ * const user = props.middleware?.data.get('user');
1605
+ * const stats = props.middleware?.data.get('dashboardStats');
1606
+ *
1607
+ * return <div>Welcome {user?.name}</div>;
1608
+ * }
1609
+ * ```
1610
+ */
1611
+ middleware?: MiddlewareProps;
1612
+ /**
1613
+ * Request-scoped plugin context values explicitly exposed by plugins.
1614
+ * Access data via props.context?.data.get('key').
1615
+ */
1616
+ context?: PluginContextProps;
1617
+ }
1618
+ interface LoadingProps {
1619
+ params: Record<string, string>;
1620
+ searchParams: Promise<Record<string, string | string[] | undefined>>;
1621
+ search?: Record<string, string | string[] | undefined>;
1622
+ path: string;
1623
+ middleware?: MiddlewareProps;
1624
+ context?: PluginContextProps;
1625
+ }
1626
+ interface ErrorProps extends LoadingProps {
1627
+ error: unknown;
1628
+ reset: () => void;
1629
+ }
1630
+ /**
1631
+ * Helper type to create typed page props with specific middleware data shape
1632
+ *
1633
+ * @example
1634
+ * ```tsx
1635
+ * interface MyMiddlewareData {
1636
+ * user: { id: number; name: string };
1637
+ * stats: { views: number };
1638
+ * }
1639
+ *
1640
+ * type MyPageProps = PagePropsWithMiddleware<MyMiddlewareData>;
1641
+ *
1642
+ * export default function Page(props: MyPageProps) {
1643
+ * const user = props.middleware?.data.get('user'); // Fully typed!
1644
+ * const stats = props.middleware?.data.get('stats'); // Fully typed!
1645
+ *
1646
+ * return <div>Welcome {user?.name}</div>;
1647
+ * }
1648
+ * ```
1649
+ */
1650
+ type PagePropsWithMiddleware<T extends Record<string, any>> = PageProps & {
1651
+ middleware: {
1652
+ data: Map<keyof T, T[keyof T]>;
1653
+ };
1654
+ };
1655
+ interface LayoutProps {
1656
+ children: ReactNode;
1657
+ params: Record<string, string>;
1658
+ }
1659
+ type Page = ComponentType<PageProps>;
1660
+ type Layout = ComponentType<LayoutProps>;
1661
+ type Loading = ComponentType<LoadingProps>;
1662
+ type ErrorBoundary = ComponentType<ErrorProps>;
1663
+ /**
1664
+ * Route module exports for pages
1665
+ *
1666
+ * SSR is the default - pages render on each request
1667
+ * SSG is opt-in via `export const ssg = true`, Next-compatible route
1668
+ * config exports, or a top-of-file rendering directive.
1669
+ *
1670
+ * @example SSR Page (default):
1671
+ * ```tsx
1672
+ * export default async function Page() {
1673
+ * const data = await fetchData();
1674
+ * return <div>{data.title}</div>;
1675
+ * }
1676
+ * ```
1677
+ *
1678
+ * @example SSG Page:
1679
+ * ```tsx
1680
+ * export const ssg = true;
1681
+ *
1682
+ * export default function AboutPage() {
1683
+ * return <h1>About Us</h1>;
1684
+ * }
1685
+ * ```
1686
+ *
1687
+ * @example SSG with Revalidation (ISR):
1688
+ * ```tsx
1689
+ * export const ssg = true;
1690
+ * export const revalidate = 60; // Regenerate every 60 seconds
1691
+ *
1692
+ * export default async function ProductsPage() {
1693
+ * const products = await fetchProducts();
1694
+ * return <ProductList products={products} />;
1695
+ * }
1696
+ * ```
1697
+ *
1698
+ * @example Dynamic SSG Route:
1699
+ * ```tsx
1700
+ * export const ssg = true;
1701
+ *
1702
+ * export async function getStaticPaths() {
1703
+ * const posts = await fetchPosts();
1704
+ * return posts.map(post => ({ slug: post.slug }));
1705
+ * }
1706
+ *
1707
+ * export default async function BlogPost({ params }) {
1708
+ * const post = await fetchPost(params.slug);
1709
+ * return <article>{post.title}</article>;
1710
+ * }
1711
+ * ```
1712
+ *
1713
+ * @example Next-compatible Route Config:
1714
+ * ```tsx
1715
+ * export const dynamic = "force-static";
1716
+ * export const revalidate = 60;
1717
+ *
1718
+ * export default function DocsPage() {
1719
+ * return <h1>Docs</h1>;
1720
+ * }
1721
+ * ```
1722
+ *
1723
+ * @example Directive Route Config:
1724
+ * ```tsx
1725
+ * "use ssg; 60";
1726
+ *
1727
+ * export default function DocsPage() {
1728
+ * return <h1>Docs</h1>;
1729
+ * }
1730
+ * ```
1731
+ */
1732
+ interface RouteModule {
1733
+ default?: Page;
1734
+ /** Execution runtime for this route. Layout values are inherited unless overridden. */
1735
+ runtime?: FarmRouteRuntime;
1736
+ /** Provider-specific execution regions, or "auto" to clear an inherited value. */
1737
+ regions?: FarmRouteRegions;
1738
+ /** Maximum execution time in seconds, or "auto" to use the provider default. */
1739
+ maxDuration?: FarmRouteMaxDuration;
1740
+ /**
1741
+ * Mark this page for Static Site Generation (SSG)
1742
+ * When true, the page will be pre-rendered at build time
1743
+ */
1744
+ ssg?: boolean;
1745
+ /**
1746
+ * Revalidate interval in seconds for Incremental Static Regeneration (ISR)
1747
+ * Only applicable when ssg = true
1748
+ */
1749
+ revalidate?: number | false;
1750
+ /**
1751
+ * Next.js-compatible rendering mode.
1752
+ * - force-static/error: pre-render at build time
1753
+ * - force-dynamic: render on each request
1754
+ */
1755
+ dynamic?: "auto" | "force-static" | "force-dynamic" | "error";
1756
+ /**
1757
+ * Opt into Partial Prerendering/static-shell caching for this route.
1758
+ * Compatible with Farm's `ppr` export and Next.js `experimental_ppr`.
1759
+ */
1760
+ ppr?: boolean;
1761
+ experimental_ppr?: boolean;
1762
+ /**
1763
+ * Return all paths to pre-render for dynamic SSG routes
1764
+ * Required for dynamic routes (e.g., [slug]) when ssg = true
1765
+ */
1766
+ getStaticPaths?: () => Promise<StaticPathParams[]> | StaticPathParams[];
1767
+ /**
1768
+ * @deprecated Use getStaticPaths instead
1769
+ */
1770
+ generateStaticParams?: () => Promise<StaticPathParams[]> | StaticPathParams[];
1771
+ metadata?: Metadata & Record<string, any>;
1772
+ generateMetadata?: (props: PageProps) => Promise<Metadata> | Metadata;
1773
+ }
1774
+ /** A value accepted for one static route parameter. */
1775
+ type StaticPathPrimitive = string | number | boolean;
1776
+ /**
1777
+ * Parameters returned by `getStaticPaths` or `generateStaticParams`.
1778
+ * Arrays create individual URL segments for catch-all route parameters.
1779
+ */
1780
+ type StaticPathParams = Record<string, StaticPathPrimitive | readonly StaticPathPrimitive[]>;
1781
+ interface LayoutModule {
1782
+ default: Layout;
1783
+ runtime?: FarmRouteRuntime;
1784
+ regions?: FarmRouteRegions;
1785
+ maxDuration?: FarmRouteMaxDuration;
1786
+ metadata?: Metadata & Record<string, any>;
1787
+ generateMetadata?: (props: {
1788
+ params: Record<string, string>;
1789
+ }) => Promise<Metadata> | Metadata;
1790
+ }
1791
+ interface Metadata {
1792
+ metadataBase?: string | URL;
1793
+ title?: string | {
1794
+ default?: string;
1795
+ template?: string;
1796
+ };
1797
+ description?: string;
1798
+ keywords?: string | string[];
1799
+ author?: string;
1800
+ authors?: Array<{
1801
+ name: string;
1802
+ url?: string;
1803
+ }>;
1804
+ creator?: string;
1805
+ publisher?: string;
1806
+ robots?: string | {
1807
+ index?: boolean;
1808
+ follow?: boolean;
1809
+ };
1810
+ openGraph?: {
1811
+ title?: string;
1812
+ description?: string;
1813
+ url?: string;
1814
+ siteName?: string;
1815
+ images?: string | {
1816
+ url: string;
1817
+ width?: number;
1818
+ height?: number;
1819
+ alt?: string;
1820
+ type?: string;
1821
+ } | Array<{
1822
+ url: string;
1823
+ width?: number;
1824
+ height?: number;
1825
+ alt?: string;
1826
+ type?: string;
1827
+ }>;
1828
+ image?: string;
1829
+ type?: string;
1830
+ locale?: string;
1831
+ };
1832
+ twitter?: {
1833
+ card?: "summary" | "summary_large_image" | "app" | "player";
1834
+ site?: string;
1835
+ creator?: string;
1836
+ title?: string;
1837
+ description?: string;
1838
+ images?: string | {
1839
+ url: string;
1840
+ width?: number;
1841
+ height?: number;
1842
+ alt?: string;
1843
+ type?: string;
1844
+ } | Array<string | {
1845
+ url: string;
1846
+ width?: number;
1847
+ height?: number;
1848
+ alt?: string;
1849
+ type?: string;
1850
+ }>;
1851
+ };
1852
+ alternates?: {
1853
+ canonical?: string;
1854
+ languages?: Record<string, string>;
1855
+ };
1856
+ icons?: string | {
1857
+ icon?: string | Array<string | {
1858
+ url: string;
1859
+ sizes?: string;
1860
+ type?: string;
1861
+ }>;
1862
+ shortcut?: string | Array<string | {
1863
+ url: string;
1864
+ sizes?: string;
1865
+ type?: string;
1866
+ }>;
1867
+ apple?: string | Array<string | {
1868
+ url: string;
1869
+ sizes?: string;
1870
+ type?: string;
1871
+ }>;
1872
+ };
1873
+ manifest?: string;
1874
+ }
1875
+ interface FarmRequest extends IncomingMessage {
1876
+ params?: Record<string, string>;
1877
+ query?: Record<string, string | string[]>;
1878
+ body?: any;
1879
+ }
1880
+ interface FarmResponse extends ServerResponse {
1881
+ json: (data: any) => void;
1882
+ status: (code: number) => FarmResponse;
1883
+ redirect: (url: string, status?: number) => void;
1884
+ }
1885
+ type ServerAction = (...args: any[]) => Promise<any>;
1886
+ interface RouteSegment {
1887
+ segment: string;
1888
+ isDynamic: boolean;
1889
+ isOptional: boolean;
1890
+ isCatchAll: boolean;
1891
+ }
1892
+ interface ParsedRoute {
1893
+ segments: RouteSegment[];
1894
+ filePath: string;
1895
+ type: "page" | "layout" | "loading" | "error" | "not-found";
1896
+ }
1897
+ interface BuildOptions {
1898
+ mode: "development" | "production";
1899
+ ssr: boolean;
1900
+ minify: boolean;
1901
+ sourcemap: boolean;
1902
+ }
1903
+ /**
1904
+ * Represents a page to be pre-rendered at build time (SSG)
1905
+ */
1906
+ interface SSGPage {
1907
+ /** The URL path for this page */
1908
+ urlPath: string;
1909
+ /** The file path to the page module */
1910
+ filePath: string;
1911
+ /** Route parameters for dynamic routes */
1912
+ params: Record<string, string>;
1913
+ /** Revalidation interval in seconds (ISR) */
1914
+ revalidate?: number;
1915
+ }
1916
+ /**
1917
+ * Result of SSG page collection
1918
+ */
1919
+ interface SSGCollectionResult {
1920
+ /** Pages to pre-render at build time */
1921
+ ssg: SSGPage[];
1922
+ /** Routes that will be server-rendered on each request */
1923
+ ssr: string[];
1924
+ }
1925
+
1926
+ export { type ResolvedFarmDevtoolsConfig as $, type FarmLayerEntry as A, type BuildOptions as B, type ResolvedFarmLayer as C, type FarmSourceRoot as D, type ErrorProps as E, type FarmConfig as F, type ResolveFarmLayersOptions as G, type FarmLayerResolution as H, resolveFarmLayers as I, getFarmSourceRoots as J, getFarmAppDirectories as K, type LoadingProps as L, type MiddlewareProps as M, type NitroPreset as N, getFarmLayerAliases as O, type PluginContextProps as P, loadFarmConfigFile as Q, type ResolvedFarmMigrationsConfig as R, type StaticPathPrimitive as S, type FarmUserConfig as T, type BundleResultPayload as U, type FarmPlugin as V, type FarmIntegration as W, type ReadonlyMiddlewareStore as X, type FarmMiddlewareConfig as Y, type MiddlewareModule as Z, type FarmMdxResolvedConfig as _, type FarmMigrationCommand as a, type FarmDeployConfig as a$, type ResolvedFarmAuthConfig as a0, type OpenAPIConfig as a1, definePlugin as a2, PluginManager as a3, resolveConfig as a4, loadConfig as a5, resolveDeployConfig as a6, resolveMigrationsConfig as a7, resolveDeployOutputPath as a8, normalizeDeployTarget as a9, type FarmPluginRuntimeSession as aA, type FarmPluginDiscoveredRoute as aB, type FarmPluginRouterHooks as aC, type FarmPluginRenderHooks as aD, type FarmPluginBuildHooks as aE, type FarmPluginDevHooks as aF, type FarmPluginClientConfig as aG, type RouteDiscoveredPayload as aH, type RoutesGeneratedPayload as aI, type MiddlewareDiscoveredPayload as aJ, type APIRouteDiscoveredPayload as aK, type RouteMatchPayload as aL, type RouteMatchResultPayload as aM, type RenderLifecyclePayload as aN, type APIHandlerLifecyclePayload as aO, type ErrorLifecyclePayload as aP, type HMRUpdatePayload as aQ, type BundleLifecyclePayload as aR, type NitroBuildLifecyclePayload as aS, type ShutdownPayload as aT, type ResolvedFarmConfig as aU, type RedirectConfig as aV, type HeaderConfig as aW, type RewriteConfig as aX, type ImageConfig as aY, type I18nConfig as aZ, type MiddlewareConfig as a_, getDeployTargetForPreset as aa, getPresetForDeployTarget as ab, type FarmLayerConfig as ac, type FarmAuthConfig as ad, type FarmAuthDatabaseConfig as ae, type FarmAuthEmailAndPasswordConfig as af, type FarmAuthSessionConfig as ag, type FarmAuthUserConfig as ah, type PluginRequestContext as ai, type FarmPluginContext as aj, type FarmRequestPluginContext as ak, type FarmRequestStore as al, type FarmPluginRuntimeKind as am, type FarmPluginRouteRuntimePayload as an, type FarmPluginSetupContext as ao, type FarmPluginStateContext as ap, type FarmPluginRuntimeBaseEvent as aq, type FarmPluginRuntimeContextEvent as ar, type FarmPluginRuntimeBeforeEvent as as, type FarmPluginRuntimeAfterEvent as at, type FarmPluginRuntimeErrorEvent as au, type FarmPluginRuntimeStartEvent as av, type FarmPluginRuntimeCloseEvent as aw, type FarmPluginRuntimeHooks as ax, type FarmPluginRuntimeRequestOptions as ay, type FarmPluginRuntimeRequestHandler as az, type FarmMigrationsConfig as b, defineIntegration as b$, type ResolvedFarmDeployConfig as b0, type FarmDeployTarget as b1, type FarmIntegrationCategory as b2, type FarmIntegrationSlot as b3, type FarmIntegrationRouteParamValue as b4, type FarmIntegrationRouteParams as b5, type FarmIntegrationRouteMethod as b6, type FarmIntegrationRouteInputSource as b7, type FarmIntegrationValidationPathSegment as b8, type FarmIntegrationRouteInput as b9, type FarmIntegrationProviderProps as bA, type FarmIntegrationProvider as bB, type FarmIntegrationDocumentNavigation as bC, type FarmIntegrationSchemaFieldType as bD, type FarmIntegrationSchemaReference as bE, type FarmIntegrationSchemaField as bF, type FarmIntegrationSchemaConstraint as bG, type FarmIntegrationSchemaModel as bH, type FarmIntegrationSchemaModelExtension as bI, type FarmIntegrationSchemaModelOverride as bJ, type FarmIntegrationSchema as bK, defineIntegrationSchema as bL, type FarmIntegrationLogPhase as bM, type FarmIntegrationLogEvent as bN, type FarmIntegrationLogger as bO, type FarmIntegrationsUserConfig as bP, getFarmIntegrationPluginServerRuntime as bQ, type FarmIntegrationRouteFactory as bR, type FarmIntegrationRoutesFactoryContext as bS, type FarmIntegrationRoutesFactory as bT, type FarmIntegrationEndpointValue as bU, type FarmIntegrationEndpoints as bV, type FarmIntegrationEndpointsFactoryContext as bW, type FarmIntegrationEndpointsFactory as bX, createIntegrationRoute as bY, integrationRoute as bZ, type DefinedIntegration as b_, type FarmIntegrationValidationIssue as ba, type FarmIntegrationValidationErrorLike as bb, type FarmIntegrationValidationResult as bc, type FarmIntegrationStandardValidationResult as bd, type FarmIntegrationInputSchema as be, type FarmIntegrationRouteInputSchemas as bf, type FarmIntegrationRequestContextStore as bg, FARM_INTEGRATION_INTERNAL_DISPATCH_CONTEXT_KEY as bh, type FarmIntegrationRouteDb as bi, type FarmIntegrationRouteStorageArgs as bj, type FarmIntegrationRouteArgs as bk, type FarmIntegrationConfigContext as bl, type FarmIntegrationConfigDefinition as bm, type FarmIntegrationConfigInput as bn, type FarmIntegrationLifecycleLogLevel as bo, type FarmIntegrationLifecycleLogger as bp, type FarmIntegrationLifecycleContext as bq, type FarmIntegrationLifecycleHook as br, type FarmIntegrationData as bs, type FarmIntegrationHandlerContext as bt, type FarmIntegrationRouteHookContext as bu, type FarmIntegrationRouteHook as bv, type FarmIntegrationRoute as bw, type FarmTypedIntegrationRoute as bx, type FarmIntegrationRouteMiddleware as by, type FarmIntegrationMiddleware as bz, type FarmMigrationsUserConfig as c, type FarmDevtoolsConfig as c$, isFarmIntegration as c0, resolveIntegrationPlugins as c1, getIntegrationProviders as c2, getIntegrationDocumentNavigationMatchers as c3, getIntegrationSchemas as c4, getRegisteredIntegrationRuntime as c5, getRegisteredIntegrations as c6, getRegisteredIntegrationSchemas as c7, matchIntegrationRoute as c8, matchRegisteredIntegrationRoute as c9, type FarmRouteRuleRenderMode as cA, type FarmRouteRuleRedirect as cB, type FarmRouteRuleCors as cC, type FarmRouteRule as cD, type FarmRouteRules as cE, normalizeRouteRules as cF, routeRulesToRedirects as cG, routeRulesToHeaders as cH, routeRulesToNitroRouteRules as cI, type FarmMdxComponent as cJ, type FarmMdxComponents as cK, type FarmMdxUserConfig as cL, type FarmMarkdownPageSource as cM, type FarmMarkdownPageModuleInput as cN, resolveMdxConfig as cO, isFarmMarkdownPageFile as cP, normalizeFarmMarkdownRoutePath as cQ, parseMarkdownFrontmatter as cR, titleFromMarkdown as cS, createMarkdownMetadata as cT, createFarmMarkdownRouteModule as cU, createFarmMarkdownRouteModuleFromFile as cV, loadFarmMdxComponents as cW, createFarmMarkdownSourceResponse as cX, DEFAULT_FARM_DEVTOOLS_SHORTCUT as cY, FARM_DEVTOOLS_PATH as cZ, FARM_DEVTOOLS_LAUNCH_PARAM as c_, getRegisteredIntegrationAPIManifest as ca, dispatchIntegrationRequest as cb, type FarmIntegrationOrmSchema as cc, type FarmIntegrationOrmClient as cd, type InferFarmIntegrationOrmField as ce, type InferFarmIntegrationOrmFields as cf, type InferFarmIntegrationOrmSchema as cg, type InferFarmIntegrationOrmClient as ch, type CreateIntegrationOrmOptions as ci, createIntegrationOrm as cj, resolveIntegrationOrmRuntimeClient as ck, farmIntegrationSchemaToOrmSchema as cl, type IntegrationOrmModelNames as cm, type MiddlewareContext as cn, type MiddlewareFunction as co, type RequestMiddleware as cp, type RequestMiddlewareContext as cq, type MiddlewareStore as cr, type MiddlewareChain as cs, type CookieJar as ct, type CookieOptions as cu, type RateLimitConfig as cv, type RateLimitStorage as cw, type RateLimitStatus as cx, type NextFunction as cy, type MiddlewareResult as cz, defineConfig as d, type FarmDevtoolsUserConfig as d0, resolveFarmDevtoolsConfig as d1, type MiddlewareConfig$1 as d2, farmI18nClientBridgePlugin as d3, rewriteEarlySsrRelativeImports as d4, type FarmContextFactoryInput as e, farmPlugin as f, type FarmContextFactory as g, type FarmAppContext as h, type PageProps as i, type PagePropsWithMiddleware as j, type LayoutProps as k, type Page as l, type Layout as m, type Loading as n, type ErrorBoundary as o, type RouteModule as p, type StaticPathParams as q, type LayoutModule as r, type Metadata as s, type FarmRequest as t, type FarmResponse as u, type ServerAction as v, type RouteSegment as w, type ParsedRoute as x, type SSGPage as y, type SSGCollectionResult as z };