@farm.js/core 0.1.0-beta.95 → 0.1.0-beta.97

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 (317) hide show
  1. package/dist/after.cjs +1 -1
  2. package/dist/after.mjs +1 -1
  3. package/dist/agent-runtime.d.mts +3 -2
  4. package/dist/agent-runtime.d.ts +3 -2
  5. package/dist/api/route-manager.cjs +43 -4
  6. package/dist/api/route-manager.d.mts +4 -3
  7. package/dist/api/route-manager.d.ts +4 -3
  8. package/dist/api/route-manager.mjs +7 -7
  9. package/dist/api/runtime.cjs +43 -4
  10. package/dist/api/runtime.d.mts +1 -1
  11. package/dist/api/runtime.d.ts +1 -1
  12. package/dist/api/runtime.mjs +5 -5
  13. package/dist/api.cjs +352 -109
  14. package/dist/api.d.mts +7 -6
  15. package/dist/api.d.ts +7 -6
  16. package/dist/api.mjs +19 -12
  17. package/dist/{app-CIIEvA4r.d.ts → app-CIOx3LvY.d.ts} +4 -4
  18. package/dist/{app-O4AEC1OH.d.mts → app-DBd6437H.d.mts} +4 -4
  19. package/dist/app-markdown.d.mts +4 -3
  20. package/dist/app-markdown.d.ts +4 -3
  21. package/dist/cache.cjs +42 -4
  22. package/dist/cache.d.mts +68 -1
  23. package/dist/cache.d.ts +68 -1
  24. package/dist/cache.mjs +3 -3
  25. package/dist/{chunk-AXVJCMVF.mjs → chunk-2HDOV47R.mjs} +3 -3
  26. package/dist/chunk-2HDOV47R.mjs.map +1 -0
  27. package/dist/{chunk-RBRLLZL5.mjs → chunk-34IAPZBG.mjs} +16 -3
  28. package/dist/chunk-34IAPZBG.mjs.map +1 -0
  29. package/dist/{chunk-VV24CC42.mjs → chunk-35NPLKQJ.mjs} +2 -2
  30. package/dist/{chunk-D7QH7MDU.mjs → chunk-3TWQERDE.mjs} +5 -4
  31. package/dist/chunk-3TWQERDE.mjs.map +1 -0
  32. package/dist/{chunk-RWYRFCLG.mjs → chunk-4X57GXQA.mjs} +2 -2
  33. package/dist/{chunk-KOTSX5JH.mjs → chunk-52BR7LTX.mjs} +30 -21
  34. package/dist/chunk-52BR7LTX.mjs.map +1 -0
  35. package/dist/{chunk-SALMKQXH.mjs → chunk-6EJHNHH4.mjs} +80 -27
  36. package/dist/chunk-6EJHNHH4.mjs.map +1 -0
  37. package/dist/{chunk-ZFNK77WN.mjs → chunk-6JNGOC37.mjs} +2 -2
  38. package/dist/{after.cjs.map → chunk-6JNGOC37.mjs.map} +1 -1
  39. package/dist/{chunk-MOW47IF5.mjs → chunk-6UYVU46O.mjs} +2 -2
  40. package/dist/{chunk-7MABZJIM.mjs → chunk-7PYVLJ4J.mjs} +1 -1
  41. package/dist/chunk-7PYVLJ4J.mjs.map +1 -0
  42. package/dist/{chunk-FLHLPB57.mjs → chunk-D7F7YZ7L.mjs} +93 -67
  43. package/dist/chunk-D7F7YZ7L.mjs.map +1 -0
  44. package/dist/chunk-DU3PKDVQ.mjs +35 -0
  45. package/dist/chunk-DU3PKDVQ.mjs.map +1 -0
  46. package/dist/{chunk-SCFX4UTD.mjs → chunk-EHTUKVSW.mjs} +1 -1
  47. package/dist/chunk-EHTUKVSW.mjs.map +1 -0
  48. package/dist/{chunk-KWCNQUH5.mjs → chunk-EPDIF432.mjs} +526 -50
  49. package/dist/chunk-EPDIF432.mjs.map +1 -0
  50. package/dist/{chunk-A3636IHN.mjs → chunk-FP5Q67FO.mjs} +167 -96
  51. package/dist/chunk-FP5Q67FO.mjs.map +1 -0
  52. package/dist/{chunk-HHZAOTQD.mjs → chunk-GJ7W6LNK.mjs} +7 -6
  53. package/dist/chunk-GJ7W6LNK.mjs.map +1 -0
  54. package/dist/{chunk-RLGUZ3HS.mjs → chunk-I3OOUWO5.mjs} +3 -3
  55. package/dist/{chunk-75CGAL6E.mjs → chunk-IZBX2TEU.mjs} +217 -105
  56. package/dist/chunk-IZBX2TEU.mjs.map +1 -0
  57. package/dist/{chunk-22VG4DFJ.mjs → chunk-J3MPQ4MQ.mjs} +2 -2
  58. package/dist/{chunk-22VG4DFJ.mjs.map → chunk-J3MPQ4MQ.mjs.map} +1 -1
  59. package/dist/{chunk-2LS3KKE7.mjs → chunk-JV7JUD7Q.mjs} +4 -4
  60. package/dist/{chunk-Q3OX763A.mjs → chunk-LXDASSTE.mjs} +2 -2
  61. package/dist/{chunk-ZRBCBOEX.mjs → chunk-N2FY2QZ7.mjs} +28 -3
  62. package/dist/chunk-N2FY2QZ7.mjs.map +1 -0
  63. package/dist/{chunk-MRVJCLYQ.mjs → chunk-PSQ7N4XP.mjs} +4 -2
  64. package/dist/chunk-PSQ7N4XP.mjs.map +1 -0
  65. package/dist/{chunk-HVG3HLQZ.mjs → chunk-Q7WGOOAI.mjs} +3 -3
  66. package/dist/{chunk-WTYAPO5I.mjs → chunk-RCNWMEBT.mjs} +3 -2
  67. package/dist/{chunk-WTYAPO5I.mjs.map → chunk-RCNWMEBT.mjs.map} +1 -1
  68. package/dist/{chunk-3INDBMUU.mjs → chunk-TGDIACZT.mjs} +2 -2
  69. package/dist/{chunk-WB75GIX2.mjs → chunk-TQTB33JS.mjs} +14 -3
  70. package/dist/chunk-TQTB33JS.mjs.map +1 -0
  71. package/dist/{chunk-MH27UH72.mjs → chunk-TT3E2JOF.mjs} +3 -3
  72. package/dist/{chunk-UWRGX3J3.mjs → chunk-UMUWR5XA.mjs} +2 -2
  73. package/dist/{chunk-XTLLHCWU.mjs → chunk-V4VRLVLW.mjs} +52 -31
  74. package/dist/chunk-V4VRLVLW.mjs.map +1 -0
  75. package/dist/{chunk-EXCGBERG.mjs → chunk-WD2EBM3I.mjs} +79 -17
  76. package/dist/chunk-WD2EBM3I.mjs.map +1 -0
  77. package/dist/{chunk-DLBUAJTK.mjs → chunk-WMJGA32P.mjs} +74 -5
  78. package/dist/chunk-WMJGA32P.mjs.map +1 -0
  79. package/dist/{chunk-TKQCJMY7.mjs → chunk-X4SFHKFH.mjs} +7 -4
  80. package/dist/{chunk-TKQCJMY7.mjs.map → chunk-X4SFHKFH.mjs.map} +1 -1
  81. package/dist/{chunk-Q7GPJZCO.mjs → chunk-YIBV77KZ.mjs} +26 -7
  82. package/dist/chunk-YIBV77KZ.mjs.map +1 -0
  83. package/dist/client/lifecycle.mjs +2 -2
  84. package/dist/{client-mcMC334J.d.mts → client-DWoLZ3QU.d.mts} +52 -5
  85. package/dist/{client-d5ONQ-Pd.d.ts → client-DuQuQC1h.d.ts} +52 -5
  86. package/dist/client-cache-BMxuFqwH.d.ts +18 -0
  87. package/dist/client-cache-CCK-fCe0.d.mts +18 -0
  88. package/dist/{client-plugins-BvClItiL.d.mts → client-plugins-B6-07YmP.d.mts} +52 -99
  89. package/dist/{client-plugins-B9Sq-iMg.d.ts → client-plugins-By6MVUX-.d.ts} +52 -99
  90. package/dist/client-plugins.cjs +1 -1
  91. package/dist/client-plugins.d.mts +3 -2
  92. package/dist/client-plugins.d.ts +3 -2
  93. package/dist/client-plugins.mjs +2 -2
  94. package/dist/client.cjs +1046 -211
  95. package/dist/client.d.mts +136 -18
  96. package/dist/client.d.ts +136 -18
  97. package/dist/client.mjs +32 -15
  98. package/dist/config.d.mts +3 -2
  99. package/dist/config.d.ts +3 -2
  100. package/dist/{devtools-S52RRRMN.mjs → devtools-XWZX6CCL.mjs} +5 -5
  101. package/dist/{devtools-client-3XRTBND5.mjs → devtools-client-Z7QQA3Q2.mjs} +56 -17
  102. package/dist/devtools-client-Z7QQA3Q2.mjs.map +1 -0
  103. package/dist/{devtools-ui-NJKFORTG.mjs → devtools-ui-2HG5M4EL.mjs} +3 -1
  104. package/dist/devtools-ui-2HG5M4EL.mjs.map +1 -0
  105. package/dist/docs.cjs +24 -5
  106. package/dist/docs.mjs +5 -5
  107. package/dist/i18n/server.cjs +13 -2
  108. package/dist/i18n/server.d.mts +2 -2
  109. package/dist/i18n/server.d.ts +2 -2
  110. package/dist/i18n/server.mjs +1 -1
  111. package/dist/index.cjs +1928 -894
  112. package/dist/index.d.mts +139 -21
  113. package/dist/index.d.ts +139 -21
  114. package/dist/index.mjs +57 -34
  115. package/dist/index.mjs.map +1 -1
  116. package/dist/integration-api-BT024nuJ.d.mts +97 -0
  117. package/dist/integration-api-BT024nuJ.d.ts +97 -0
  118. package/dist/integrations.d.mts +3 -2
  119. package/dist/integrations.d.ts +3 -2
  120. package/dist/internal/build-runtime.cjs +764 -547
  121. package/dist/internal/build-runtime.d.mts +5 -4
  122. package/dist/internal/build-runtime.d.ts +5 -4
  123. package/dist/internal/build-runtime.mjs +16 -16
  124. package/dist/internal/client-runtime.cjs +1 -1
  125. package/dist/internal/client-runtime.mjs +2 -2
  126. package/dist/internal/config-runtime.cjs +4 -1
  127. package/dist/internal/config-runtime.d.mts +4 -3
  128. package/dist/internal/config-runtime.d.ts +4 -3
  129. package/dist/internal/config-runtime.mjs +4 -4
  130. package/dist/internal/product-telemetry-runtime.cjs +1 -1
  131. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  132. package/dist/internal/production-runtime.cjs +29 -3
  133. package/dist/internal/production-runtime.d.mts +8 -7
  134. package/dist/internal/production-runtime.d.ts +8 -7
  135. package/dist/internal/production-runtime.mjs +5 -5
  136. package/dist/{metadata-route-yV4U6X8h.d.ts → metadata-route-8_V3UonT.d.ts} +1 -1
  137. package/dist/{metadata-route-p4K1l92V.d.mts → metadata-route-CWP_HjGU.d.mts} +1 -1
  138. package/dist/middleware.cjs +28 -2
  139. package/dist/middleware.d.mts +5 -4
  140. package/dist/middleware.d.ts +5 -4
  141. package/dist/middleware.mjs +4 -4
  142. package/dist/navigation.cjs +3 -1
  143. package/dist/navigation.mjs +3 -3
  144. package/dist/observability.cjs +27 -2
  145. package/dist/observability.mjs +1 -1
  146. package/dist/plugin.cjs +528 -349
  147. package/dist/plugin.d.mts +3 -2
  148. package/dist/plugin.d.ts +3 -2
  149. package/dist/plugin.mjs +13 -13
  150. package/dist/{production-runtime-IkB0Qj4i.d.mts → production-runtime-BGRH1dKG.d.mts} +1 -1
  151. package/dist/{production-runtime-0JTch4_d.d.ts → production-runtime-CdmzsDax.d.ts} +1 -1
  152. package/dist/query/client.cjs +68 -29
  153. package/dist/query/client.mjs +69 -30
  154. package/dist/query/client.mjs.map +1 -1
  155. package/dist/{render-plan-Dc8CjNI7.d.ts → render-plan-0GeHiGVZ.d.ts} +1 -1
  156. package/dist/{render-plan-CU31j-Jk.d.mts → render-plan-DLxJYAA5.d.mts} +1 -1
  157. package/dist/renderer-client.cjs +169 -26
  158. package/dist/renderer-client.d.mts +7 -6
  159. package/dist/renderer-client.d.ts +7 -6
  160. package/dist/renderer-client.mjs +16 -19
  161. package/dist/renderer-client.mjs.map +1 -1
  162. package/dist/{request-BXa1KY8i.d.mts → request-BCNXSXLh.d.mts} +1 -1
  163. package/dist/{request-CUUBujZt.d.ts → request-BstWbZ6O.d.ts} +1 -1
  164. package/dist/request.d.mts +4 -3
  165. package/dist/request.d.ts +4 -3
  166. package/dist/{route-Y8lfz1wF.d.ts → route-4pd-EVtw.d.ts} +45 -50
  167. package/dist/{route-Cq3aObmj.d.mts → route-CvEr4Uc9.d.mts} +45 -50
  168. package/dist/routes.cjs +27 -2
  169. package/dist/routes.d.mts +3 -2
  170. package/dist/routes.d.ts +3 -2
  171. package/dist/routes.mjs +4 -4
  172. package/dist/{runtime-j1S3sDTh.d.ts → runtime-BgDQzBiu.d.ts} +1 -0
  173. package/dist/{runtime-DDwvDtS4.d.mts → runtime-CV2UCV-5.d.mts} +1 -0
  174. package/dist/server-action-security.mjs +2 -2
  175. package/dist/server-fn-client.cjs +102 -26
  176. package/dist/server-fn-client.d.mts +6 -0
  177. package/dist/server-fn-client.d.ts +6 -0
  178. package/dist/server-fn-client.mjs +2 -1
  179. package/dist/server-fn.cjs +42 -4
  180. package/dist/server-fn.mjs +5 -5
  181. package/dist/server-plugins.d.mts +4 -3
  182. package/dist/server-plugins.d.ts +4 -3
  183. package/dist/server-query-client.cjs +195 -34
  184. package/dist/server-query-client.d.mts +3 -3
  185. package/dist/server-query-client.d.ts +3 -3
  186. package/dist/server-query-client.mjs +7 -7
  187. package/dist/{server-query-runtime-3zAj77yv.d.ts → server-query-runtime-DXRNhX_3.d.ts} +2 -0
  188. package/dist/{server-query-runtime-B50KAcj5.d.mts → server-query-runtime-aP52iuL5.d.mts} +2 -0
  189. package/dist/server-query.cjs +44 -5
  190. package/dist/server-query.d.mts +4 -0
  191. package/dist/server-query.d.ts +4 -0
  192. package/dist/server-query.mjs +7 -7
  193. package/dist/server.cjs +553 -370
  194. package/dist/server.d.mts +11 -10
  195. package/dist/server.d.ts +11 -10
  196. package/dist/server.mjs +17 -17
  197. package/dist/{spa-router-CyLkwst6.d.mts → spa-router-BeyAVSc6.d.mts} +1 -1
  198. package/dist/{spa-router-BkqGXaV_.d.ts → spa-router-COgu4txb.d.ts} +1 -1
  199. package/dist/testing.cjs +27 -2
  200. package/dist/testing.d.mts +3 -2
  201. package/dist/testing.d.ts +3 -2
  202. package/dist/testing.mjs +9 -9
  203. package/dist/{utils-NKR6SoNv.d.mts → utils-DL2VwDQl.d.mts} +1 -1
  204. package/dist/{utils-B2OHrb9F.d.ts → utils-DkU2c_1B.d.ts} +1 -1
  205. package/dist/version.cjs +1 -1
  206. package/dist/version.mjs +1 -1
  207. package/dist/vite.cjs +536 -353
  208. package/dist/vite.d.mts +3 -2
  209. package/dist/vite.d.ts +3 -2
  210. package/dist/vite.mjs +17 -13
  211. package/package.json +17 -17
  212. package/types/client.d.ts +115 -10
  213. package/dist/agent-runtime.cjs.map +0 -1
  214. package/dist/api/route-manager.cjs.map +0 -1
  215. package/dist/api/runtime.cjs.map +0 -1
  216. package/dist/api.cjs.map +0 -1
  217. package/dist/app-markdown.cjs.map +0 -1
  218. package/dist/cache.cjs.map +0 -1
  219. package/dist/chunk-75CGAL6E.mjs.map +0 -1
  220. package/dist/chunk-7MABZJIM.mjs.map +0 -1
  221. package/dist/chunk-A3636IHN.mjs.map +0 -1
  222. package/dist/chunk-AXVJCMVF.mjs.map +0 -1
  223. package/dist/chunk-D7QH7MDU.mjs.map +0 -1
  224. package/dist/chunk-DLBUAJTK.mjs.map +0 -1
  225. package/dist/chunk-EXCGBERG.mjs.map +0 -1
  226. package/dist/chunk-FLHLPB57.mjs.map +0 -1
  227. package/dist/chunk-HHZAOTQD.mjs.map +0 -1
  228. package/dist/chunk-KOTSX5JH.mjs.map +0 -1
  229. package/dist/chunk-KWCNQUH5.mjs.map +0 -1
  230. package/dist/chunk-MRVJCLYQ.mjs.map +0 -1
  231. package/dist/chunk-Q7GPJZCO.mjs.map +0 -1
  232. package/dist/chunk-RBRLLZL5.mjs.map +0 -1
  233. package/dist/chunk-SALMKQXH.mjs.map +0 -1
  234. package/dist/chunk-SCFX4UTD.mjs.map +0 -1
  235. package/dist/chunk-WB75GIX2.mjs.map +0 -1
  236. package/dist/chunk-XTLLHCWU.mjs.map +0 -1
  237. package/dist/chunk-ZFNK77WN.mjs.map +0 -1
  238. package/dist/chunk-ZRBCBOEX.mjs.map +0 -1
  239. package/dist/client/lifecycle.cjs.map +0 -1
  240. package/dist/client-cache-CopR_MaI.d.mts +0 -6
  241. package/dist/client-cache-Djy_TlE8.d.ts +0 -6
  242. package/dist/client-plugins.cjs.map +0 -1
  243. package/dist/client.cjs.map +0 -1
  244. package/dist/config.cjs.map +0 -1
  245. package/dist/cron.cjs.map +0 -1
  246. package/dist/deferred.cjs.map +0 -1
  247. package/dist/deployment.cjs.map +0 -1
  248. package/dist/devtools-client-3XRTBND5.mjs.map +0 -1
  249. package/dist/devtools-ui-NJKFORTG.mjs.map +0 -1
  250. package/dist/docs.cjs.map +0 -1
  251. package/dist/env-types.cjs.map +0 -1
  252. package/dist/env.cjs.map +0 -1
  253. package/dist/environment/vite.cjs.map +0 -1
  254. package/dist/environment.cjs.map +0 -1
  255. package/dist/font.cjs.map +0 -1
  256. package/dist/headers.cjs.map +0 -1
  257. package/dist/i18n/client.cjs.map +0 -1
  258. package/dist/i18n/index.cjs.map +0 -1
  259. package/dist/i18n/server.cjs.map +0 -1
  260. package/dist/image/server.cjs.map +0 -1
  261. package/dist/image/sharp.cjs.map +0 -1
  262. package/dist/image.cjs.map +0 -1
  263. package/dist/index.cjs.map +0 -1
  264. package/dist/instrumentation.cjs.map +0 -1
  265. package/dist/integrations.cjs.map +0 -1
  266. package/dist/internal/build-runtime.cjs.map +0 -1
  267. package/dist/internal/client-runtime.cjs.map +0 -1
  268. package/dist/internal/config-runtime.cjs.map +0 -1
  269. package/dist/internal/isolated-boundary.cjs.map +0 -1
  270. package/dist/internal/metadata-image-runtime.cjs.map +0 -1
  271. package/dist/internal/product-telemetry-runtime.cjs.map +0 -1
  272. package/dist/internal/production-node-env.cjs.map +0 -1
  273. package/dist/internal/production-runtime.cjs.map +0 -1
  274. package/dist/markdown.cjs.map +0 -1
  275. package/dist/middleware.cjs.map +0 -1
  276. package/dist/navigation.cjs.map +0 -1
  277. package/dist/observability.cjs.map +0 -1
  278. package/dist/plugin.cjs.map +0 -1
  279. package/dist/query/client.cjs.map +0 -1
  280. package/dist/query/index.cjs.map +0 -1
  281. package/dist/query/parsers.cjs.map +0 -1
  282. package/dist/query/server.cjs.map +0 -1
  283. package/dist/renderer/react/client.cjs.map +0 -1
  284. package/dist/renderer/react/server.cjs.map +0 -1
  285. package/dist/renderer/react/vite.cjs.map +0 -1
  286. package/dist/renderer-client.cjs.map +0 -1
  287. package/dist/renderer.cjs.map +0 -1
  288. package/dist/request.cjs.map +0 -1
  289. package/dist/router.cjs.map +0 -1
  290. package/dist/routes.cjs.map +0 -1
  291. package/dist/server-action-security.cjs.map +0 -1
  292. package/dist/server-fn-client.cjs.map +0 -1
  293. package/dist/server-fn.cjs.map +0 -1
  294. package/dist/server-plugins.cjs.map +0 -1
  295. package/dist/server-query-client.cjs.map +0 -1
  296. package/dist/server-query.cjs.map +0 -1
  297. package/dist/server.cjs.map +0 -1
  298. package/dist/storage.cjs.map +0 -1
  299. package/dist/testing.cjs.map +0 -1
  300. package/dist/theme/client.cjs.map +0 -1
  301. package/dist/theme/index.cjs.map +0 -1
  302. package/dist/theme/runtime.cjs.map +0 -1
  303. package/dist/theme/server.cjs.map +0 -1
  304. package/dist/version.cjs.map +0 -1
  305. package/dist/vite.cjs.map +0 -1
  306. package/dist/workflows.cjs.map +0 -1
  307. /package/dist/{chunk-VV24CC42.mjs.map → chunk-35NPLKQJ.mjs.map} +0 -0
  308. /package/dist/{chunk-RWYRFCLG.mjs.map → chunk-4X57GXQA.mjs.map} +0 -0
  309. /package/dist/{chunk-MOW47IF5.mjs.map → chunk-6UYVU46O.mjs.map} +0 -0
  310. /package/dist/{chunk-RLGUZ3HS.mjs.map → chunk-I3OOUWO5.mjs.map} +0 -0
  311. /package/dist/{chunk-2LS3KKE7.mjs.map → chunk-JV7JUD7Q.mjs.map} +0 -0
  312. /package/dist/{chunk-Q3OX763A.mjs.map → chunk-LXDASSTE.mjs.map} +0 -0
  313. /package/dist/{chunk-HVG3HLQZ.mjs.map → chunk-Q7WGOOAI.mjs.map} +0 -0
  314. /package/dist/{chunk-3INDBMUU.mjs.map → chunk-TGDIACZT.mjs.map} +0 -0
  315. /package/dist/{chunk-MH27UH72.mjs.map → chunk-TT3E2JOF.mjs.map} +0 -0
  316. /package/dist/{chunk-UWRGX3J3.mjs.map → chunk-UMUWR5XA.mjs.map} +0 -0
  317. /package/dist/{devtools-S52RRRMN.mjs.map → devtools-XWZX6CCL.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client-headers.ts","../src/client-cancellation.ts","../src/integration-client.ts","../src/api/client-routes.ts","../src/api/client.ts"],"sourcesContent":["/** Instance defaults, resolved once per call before cache lookup or dispatch. */\nexport type ClientHeaders =\n | Record<string, string>\n | (() => Record<string, string> | Promise<Record<string, string>>);\n\n/** Snapshot synchronous defaults immediately; keep async resolvers local to the call. */\nexport function resolveClientHeaders(source?: ClientHeaders): Headers | Promise<Headers> {\n const value = typeof source === \"function\" ? source() : source;\n if (value && typeof (value as Promise<Record<string, string>>).then === \"function\") {\n return Promise.resolve(value).then((headers) => new Headers(headers));\n }\n return new Headers(value as Record<string, string> | undefined);\n}\n","/** One call budget, shared by header resolution, dispatch, decoding, and retry waits. */\nexport function createClientCancellation(\n signal?: AbortSignal,\n timeoutMs = 0,\n parent?: AbortSignal,\n) {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let invalid: Error | undefined;\n let timeoutReason: DOMException | undefined;\n const signals = [signal, parent].filter((value): value is AbortSignal => !!value);\n if (!Number.isInteger(timeoutMs) || timeoutMs < 0 || timeoutMs > 2_147_483_647) {\n invalid = new RangeError(\n \"timeoutMs must be an integer between 0 and 2147483647 (0 disables the deadline).\",\n );\n } else if (timeoutMs > 0) {\n const controller = new AbortController();\n signals.push(controller.signal);\n timer = setTimeout(() => {\n timeoutReason = new DOMException(\"Client request timed out\", \"TimeoutError\");\n controller.abort(timeoutReason);\n }, timeoutMs);\n }\n const combined = signals.length > 1 ? AbortSignal.any(signals) : signals[0];\n let active = 0;\n let closed = false;\n const cleanup = () => {\n if (closed && active === 0 && timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n const check = () => {\n if (invalid) throw invalid;\n combined?.throwIfAborted();\n };\n return {\n signal: combined,\n get timedOut() {\n return timeoutReason !== undefined && combined?.reason === timeoutReason;\n },\n check,\n hold() {\n active++;\n return () => {\n active--;\n cleanup();\n };\n },\n // A race also bounds cooperative local dispatch and custom HTTP implementations.\n // Late completion is consumed, but cannot turn a cancelled result into success.\n async run<T>(work: () => T | PromiseLike<T>): Promise<T> {\n check();\n active++;\n let abort: (() => void) | undefined;\n try {\n if (!combined) return await work();\n return await new Promise<T>((resolve, reject) => {\n abort = () => reject(combined.reason);\n combined.addEventListener(\"abort\", abort, { once: true });\n Promise.resolve()\n .then(() => {\n check();\n return work();\n })\n .then(resolve, reject);\n });\n } finally {\n if (abort) combined?.removeEventListener(\"abort\", abort);\n active--;\n cleanup();\n }\n },\n async delay(ms: number) {\n let retryTimer: ReturnType<typeof setTimeout> | undefined;\n try {\n await this.run(\n () =>\n new Promise<void>((resolve) => {\n retryTimer = setTimeout(resolve, ms);\n }),\n );\n } finally {\n if (retryTimer !== undefined) clearTimeout(retryTimer);\n }\n },\n dispose() {\n closed = true;\n cleanup();\n },\n };\n}\n","import type {\n FarmIntegrationAPI,\n FarmIntegrationAPIBodyFormat,\n FarmIntegrationAPIOperation,\n} from \"./integration-api\";\nimport type { FarmIntegration as FarmIntegrationDefinition } from \"./integrations\";\nimport { resolveFarmAPIRequestURL } from \"./api/config\";\nimport { resolveClientHeaders, type ClientHeaders } from \"./client-headers\";\nimport { createClientCancellation } from \"./client-cancellation\";\nimport {\n notifyClientObserver,\n type ClientLifecycleHooks,\n type ClientRequestEvent,\n type ClientResponseEvent,\n} from \"./client-observers\";\n\n/**\n * Small per-call integration metadata. When sent from a browser, values are\n * client-controlled and should be validated before authorization decisions.\n */\nexport type IntegrationClientData = Record<string, unknown>;\n\nexport type IntegrationClientOptions = ClientLifecycleHooks & {\n baseURL?: string;\n headers?: ClientHeaders;\n credentials?: RequestCredentials;\n /** Whole-call deadline in milliseconds; 0 disables it. */\n timeoutMs?: number;\n /** HTTP transport, including server fallback; never replaces local dispatch. */\n fetch?: typeof globalThis.fetch;\n data?: IntegrationClientData;\n isServer?: false | undefined;\n};\n\ntype IntegrationRequestOptionsBase<TData = unknown> = ClientLifecycleHooks<TData> & {\n headers?: Record<string, string>;\n signal?: AbortSignal;\n timeoutMs?: number;\n credentials?: RequestCredentials;\n data?: IntegrationClientData;\n};\n\nexport type IntegrationClientRequestOptions<TData = unknown> = IntegrationRequestOptionsBase<TData>;\n\nexport type IntegrationServerRequestLike =\n | Request\n | {\n url?: string;\n headers?: HeadersInit;\n };\n\nexport type IntegrationServerClientOptions = Omit<IntegrationClientOptions, \"isServer\"> & {\n isServer: true;\n request?: IntegrationServerRequestLike;\n forwardHeaders?: boolean | readonly string[];\n};\n\nexport type IntegrationServerClientRequestOptions<TData = unknown> =\n IntegrationRequestOptionsBase<TData> & {\n baseURL?: string;\n request?: IntegrationServerRequestLike;\n forwardHeaders?: boolean | readonly string[];\n };\n\nexport class IntegrationClientError<TData = unknown> extends Error {\n readonly status: number;\n readonly response: Response;\n readonly data: TData | undefined;\n\n constructor(message: string, response: Response, data?: TData) {\n super(message);\n this.name = \"IntegrationClientError\";\n this.status = response.status;\n this.response = response;\n this.data = data;\n }\n}\n\nexport type IntegrationOperationResult<\n TData = unknown,\n TError = IntegrationClientError<unknown> | Error,\n> = {\n data: TData | null;\n error: TError | null;\n};\n\ntype ExtractOperationBody<T> = T extends {\n __types?: { body: infer TBody };\n}\n ? TBody\n : never;\n\ntype ExtractOperationQuery<T> = T extends {\n __types?: { query: infer TQuery };\n}\n ? TQuery\n : never;\n\ntype ExtractOperationResponse<T> = T extends {\n __types?: { response: infer TResponse };\n}\n ? TResponse\n : unknown;\n\nexport type InferIntegrationOperationBody<T> = ExtractOperationBody<T>;\nexport type InferIntegrationOperationQuery<T> = ExtractOperationQuery<T>;\nexport type InferIntegrationOperationResponse<T> = ExtractOperationResponse<T>;\n\ntype IsNever<T> = [T] extends [never] ? true : false;\n\ntype OperationInput<T> =\n IsNever<ExtractOperationBody<T>> extends true\n ? IsNever<ExtractOperationQuery<T>> extends true\n ? {}\n : { query?: ExtractOperationQuery<T> }\n : IsNever<ExtractOperationQuery<T>> extends true\n ? { body: ExtractOperationBody<T> }\n : { body: ExtractOperationBody<T>; query?: ExtractOperationQuery<T> };\n\ntype ClientOperation<T> = (\n options?: OperationInput<T>,\n requestOptions?: IntegrationClientRequestOptions<ExtractOperationResponse<T>>,\n) => Promise<IntegrationOperationResult<ExtractOperationResponse<T>>>;\n\ntype ServerOperation<T> = (\n options?: OperationInput<T>,\n requestOptions?: IntegrationServerClientRequestOptions<ExtractOperationResponse<T>>,\n) => Promise<IntegrationOperationResult<ExtractOperationResponse<T>>>;\n\ntype IsUnion<T, U = T> = T extends any ? ([U] extends [T] ? false : true) : never;\n\ntype SingleKey<T> = [T] extends [never] ? never : IsUnion<T> extends true ? never : T;\n\ntype ExtractAPIFromSource<TSource> = TSource extends { api?: infer TAPI }\n ? NonNullable<TAPI> extends FarmIntegrationAPI\n ? NonNullable<TAPI>\n : never\n : TSource extends FarmIntegrationAPI\n ? TSource\n : never;\n\ntype SourceKeysWithAPI<TSources extends Record<string, any>> = {\n [K in keyof TSources]: [ExtractAPIFromSource<TSources[K]>] extends [never] ? never : K;\n}[keyof TSources];\n\ntype IsServerRegisteredOperation<T> = T extends { isServer: true } ? true : false;\n\ntype ClientOperationKeys<TAPI> = {\n [K in keyof TAPI]: TAPI[K] extends FarmIntegrationAPIOperation<any, any, any, any>\n ? IsServerRegisteredOperation<TAPI[K]> extends true\n ? never\n : K\n : never;\n}[keyof TAPI];\n\ntype ClientNamespaceShape<TAPI> = {\n [K in keyof TAPI as TAPI[K] extends FarmIntegrationAPIOperation<any, any, any, any>\n ? IsServerRegisteredOperation<TAPI[K]> extends true\n ? never\n : K\n : K]: TAPI[K] extends FarmIntegrationAPIOperation<any, any, any, any>\n ? ClientOperation<TAPI[K]>\n : TAPI[K] extends Record<string, any>\n ? IntegrationAPIToClient<TAPI[K]>\n : never;\n};\n\ntype SingleClientOperationKey<TAPI> =\n Exclude<keyof TAPI, ClientOperationKeys<TAPI>> extends never\n ? SingleKey<ClientOperationKeys<TAPI>>\n : never;\n\ntype IntegrationAPIToClient<TAPI> =\n TAPI extends FarmIntegrationAPIOperation<any, any, any, any>\n ? ClientOperation<TAPI>\n : TAPI extends Record<string, any>\n ? [SingleClientOperationKey<TAPI>] extends [never]\n ? ClientNamespaceShape<TAPI>\n : SingleClientOperationKey<TAPI> extends keyof TAPI\n ? ClientOperation<TAPI[SingleClientOperationKey<TAPI>]> & ClientNamespaceShape<TAPI>\n : ClientNamespaceShape<TAPI>\n : never;\n\nexport type IntegrationClient<TSources extends Record<string, any>> = {\n [K in SourceKeysWithAPI<TSources>]: IntegrationAPIToClient<ExtractAPIFromSource<TSources[K]>>;\n};\n\nexport type IntegrationClientRoot<TSources extends Record<string, any>> = {\n integrations: IntegrationClient<TSources>;\n};\n\ntype ServerOperationKeys<TAPI> = {\n [K in keyof TAPI]: TAPI[K] extends FarmIntegrationAPIOperation<any, any, any> ? K : never;\n}[keyof TAPI];\n\ntype ServerNamespaceShape<TAPI> = {\n [K in keyof TAPI]: TAPI[K] extends FarmIntegrationAPIOperation<any, any, any>\n ? ServerOperation<TAPI[K]>\n : TAPI[K] extends Record<string, any>\n ? IntegrationAPIToServerClient<TAPI[K]>\n : never;\n};\n\ntype SingleServerOperationKey<TAPI> =\n Exclude<keyof TAPI, ServerOperationKeys<TAPI>> extends never\n ? SingleKey<ServerOperationKeys<TAPI>>\n : never;\n\ntype IntegrationAPIToServerClient<TAPI> =\n TAPI extends FarmIntegrationAPIOperation<any, any, any>\n ? ServerOperation<TAPI>\n : TAPI extends Record<string, any>\n ? [SingleServerOperationKey<TAPI>] extends [never]\n ? ServerNamespaceShape<TAPI>\n : SingleServerOperationKey<TAPI> extends keyof TAPI\n ? ServerOperation<TAPI[SingleServerOperationKey<TAPI>]> & ServerNamespaceShape<TAPI>\n : ServerNamespaceShape<TAPI>\n : never;\n\nexport type IntegrationServerClient<TSources extends Record<string, any>> = {\n [K in SourceKeysWithAPI<TSources>]: IntegrationAPIToServerClient<\n ExtractAPIFromSource<TSources[K]>\n >;\n};\n\nexport type IntegrationServerClientRoot<TSources extends Record<string, any>> = {\n integrations: IntegrationServerClient<TSources>;\n};\n\nexport type IntegrationClientAliases<TSources extends Record<string, any>> =\n IntegrationClient<TSources> & {\n integrations: IntegrationClient<TSources>;\n };\n\nexport type IntegrationServerClientAliases<TSources extends Record<string, any>> =\n IntegrationServerClient<TSources> & {\n integrations: IntegrationServerClient<TSources>;\n };\n\nexport type IntegrationAPI<TSources extends Record<string, any>> =\n IntegrationClientAliases<TSources> & {\n server: (\n options: Omit<IntegrationServerClientOptions, \"isServer\">,\n ) => IntegrationServerClientAliases<TSources>;\n };\n\nexport type IntegrationClients<TSources extends Record<string, any>> = {\n api: IntegrationServerClientAliases<TSources>;\n apiClient: IntegrationClientAliases<TSources>;\n};\n\ntype ResolvedIntegrationNamespace = readonly [\n string,\n FarmIntegrationAPI,\n FarmIntegrationDefinition | FarmIntegrationAPI,\n];\n\ntype RegisteredIntegrationRuntime = {\n integration: FarmIntegrationDefinition;\n config: unknown;\n isDev: boolean;\n isProd: boolean;\n};\n\nconst INTEGRATION_RUNTIME_REGISTRY_KEY = Symbol.for(\"farm.integrationRuntimeRegistry\");\nconst CURRENT_REQUEST_RESOLVER_KEY = Symbol.for(\"farm.currentRequestResolver\");\nconst INTEGRATION_REQUEST_DISPATCHER_KEY = Symbol.for(\"farm.integrationRequestDispatcher\");\n\ntype IntegrationRequestDispatcher = (\n runtime: RegisteredIntegrationRuntime,\n request: Request,\n options?: { currentRequest?: Request; data?: IntegrationClientData; internal?: boolean },\n) => Promise<Response | null>;\n\ntype GlobalWithIntegrationRuntimeRegistry = typeof globalThis & {\n [INTEGRATION_RUNTIME_REGISTRY_KEY]?: Map<string, RegisteredIntegrationRuntime>;\n [CURRENT_REQUEST_RESOLVER_KEY]?: () => Request | undefined;\n [INTEGRATION_REQUEST_DISPATCHER_KEY]?: IntegrationRequestDispatcher;\n};\n\ntype GlobalWithIntegrationAPIManifest = typeof globalThis & {\n __FARM_INTEGRATION_API_MANIFEST__?: Record<string, FarmIntegrationAPI>;\n window?: {\n __FARM_INTEGRATION_API_MANIFEST__?: Record<string, FarmIntegrationAPI>;\n };\n};\n\nfunction isOperation(value: unknown): value is FarmIntegrationAPIOperation<any, any, any, any> {\n return (\n !!value &&\n typeof value === \"object\" &&\n (value as FarmIntegrationAPIOperation<any, any, any, any>).kind ===\n \"farm-integration-api-operation\"\n );\n}\n\nfunction resolveSourceAPI(\n source: FarmIntegrationDefinition | FarmIntegrationAPI,\n): FarmIntegrationAPI {\n if (\"kind\" in source && source.kind === \"farm-integration\") {\n if (!source.api) {\n throw new Error(`Integration \"${source.type}\" does not expose a client API definition.`);\n }\n\n return source.api as FarmIntegrationAPI;\n }\n\n return source as FarmIntegrationAPI;\n}\n\nfunction tryResolveSourceAPI(\n source: FarmIntegrationDefinition | FarmIntegrationAPI,\n): FarmIntegrationAPI | null {\n if (\"kind\" in source && source.kind === \"farm-integration\") {\n if (!source.api) {\n return null;\n }\n\n return source.api as FarmIntegrationAPI;\n }\n\n return source as FarmIntegrationAPI;\n}\n\nfunction getIntegrationRuntimeRegistry() {\n const globalState = globalThis as GlobalWithIntegrationRuntimeRegistry;\n return (\n globalState[INTEGRATION_RUNTIME_REGISTRY_KEY] || new Map<string, RegisteredIntegrationRuntime>()\n );\n}\n\nfunction getRegisteredIntegrationRuntimeLocal(\n key: string,\n): RegisteredIntegrationRuntime | undefined {\n return getIntegrationRuntimeRegistry().get(key);\n}\n\nfunction getRegisteredIntegrationsLocal(): Record<string, FarmIntegrationDefinition> {\n return Object.fromEntries(\n Array.from(getIntegrationRuntimeRegistry().entries()).map(([key, runtime]) => [\n key,\n runtime.integration,\n ]),\n );\n}\n\nfunction resolveCurrentRequestLocal(): Request | undefined {\n const globalState = globalThis as GlobalWithIntegrationRuntimeRegistry;\n return globalState[CURRENT_REQUEST_RESOLVER_KEY]?.();\n}\n\nfunction resolveIntegrationRequestDispatcherLocal(): IntegrationRequestDispatcher | undefined {\n const globalState = globalThis as GlobalWithIntegrationRuntimeRegistry;\n return globalState[INTEGRATION_REQUEST_DISPATCHER_KEY];\n}\n\nconst INTEGRATION_DATA_HEADER = \"x-farm-integration-data\";\nconst INTEGRATION_DATA_HEADER_MAX_LENGTH = 16 * 1024;\nconst BLOCKED_INTEGRATION_DATA_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\nfunction isIntegrationClientData(value: unknown): value is IntegrationClientData {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isPlainIntegrationDataObject(value: unknown): value is Record<string, unknown> {\n if (!isIntegrationClientData(value)) {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction sanitizeIntegrationClientDataValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => sanitizeIntegrationClientDataValue(item));\n }\n\n if (!isPlainIntegrationDataObject(value)) {\n return value;\n }\n\n const sanitized: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value)) {\n if (BLOCKED_INTEGRATION_DATA_KEYS.has(key)) {\n continue;\n }\n\n sanitized[key] = sanitizeIntegrationClientDataValue(item);\n }\n\n return sanitized;\n}\n\nfunction normalizeIntegrationClientData(\n value: IntegrationClientData | undefined,\n): IntegrationClientData | undefined {\n if (!isIntegrationClientData(value)) {\n return undefined;\n }\n\n const sanitized = sanitizeIntegrationClientDataValue(value);\n return isIntegrationClientData(sanitized) && Object.keys(sanitized).length > 0\n ? sanitized\n : undefined;\n}\n\nfunction getIntegrationDataHeaderByteLength(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nfunction mergeIntegrationClientData(\n ...values: Array<IntegrationClientData | undefined>\n): IntegrationClientData | undefined {\n let merged: IntegrationClientData | undefined;\n\n for (const value of values) {\n const data = normalizeIntegrationClientData(value);\n if (!data) {\n continue;\n }\n\n merged = {\n ...merged,\n ...data,\n };\n }\n\n return merged && Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nfunction serializeIntegrationClientData(data: IntegrationClientData): string {\n const serialized = JSON.stringify(data);\n if (getIntegrationDataHeaderByteLength(serialized) > INTEGRATION_DATA_HEADER_MAX_LENGTH) {\n throw new Error(\n `Integration client data must be smaller than ${INTEGRATION_DATA_HEADER_MAX_LENGTH} bytes when sent over HTTP headers.`,\n );\n }\n\n return serialized;\n}\n\nfunction appendIntegrationClientDataHeader(\n headers: Headers,\n data: IntegrationClientData | undefined,\n) {\n if (!data) {\n return;\n }\n\n headers.set(INTEGRATION_DATA_HEADER, serializeIntegrationClientData(data));\n}\n\nfunction resolveAutomaticClientNamespaces(): ResolvedIntegrationNamespace[] {\n const globalState = globalThis as GlobalWithIntegrationAPIManifest;\n const manifest =\n globalState.window?.__FARM_INTEGRATION_API_MANIFEST__ ||\n globalState.__FARM_INTEGRATION_API_MANIFEST__ ||\n {};\n\n return Object.entries(manifest).map(([key, api]) => [key, api, api] as const);\n}\n\nfunction resolveAutomaticServerNamespaces(): ResolvedIntegrationNamespace[] {\n return Object.entries(getRegisteredIntegrationsLocal()).flatMap(([key, source]) => {\n const api = tryResolveSourceAPI(source);\n return api ? [[key, api, source] as ResolvedIntegrationNamespace] : [];\n });\n}\n\nfunction appendQuery(url: URL, query: Record<string, unknown> | undefined) {\n if (!query) {\n return;\n }\n\n for (const [key, value] of Object.entries(query)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item != null) {\n url.searchParams.append(key, String(item));\n }\n }\n continue;\n }\n\n url.searchParams.set(key, String(value));\n }\n}\n\nfunction appendHeaders(target: Headers, source: HeadersInit | undefined) {\n if (!source) {\n return;\n }\n\n const headers = new Headers(source);\n headers.forEach((value, key) => {\n target.set(key, value);\n });\n}\n\nconst DEFAULT_FORWARDED_HEADERS = [\n \"authorization\",\n \"cookie\",\n \"x-client-ip\",\n \"x-forwarded-for\",\n \"x-forwarded-host\",\n \"x-forwarded-proto\",\n \"x-real-ip\",\n] as const;\n\nfunction resolveRequestLike(request: IntegrationServerRequestLike | undefined) {\n if (!request) {\n return undefined;\n }\n\n if (request instanceof Request) {\n return {\n url: request.url,\n headers: request.headers,\n };\n }\n\n return {\n url: request.url,\n headers: request.headers ? new Headers(request.headers) : undefined,\n };\n}\n\nfunction resolveServerBaseURL(\n explicitBaseURL: string | undefined,\n request: ReturnType<typeof resolveRequestLike>,\n) {\n if (explicitBaseURL) {\n return explicitBaseURL;\n }\n\n if (request?.url) {\n try {\n return new URL(request.url).origin;\n } catch {\n // Fall back to forwarded headers below.\n }\n }\n\n const headers = request?.headers;\n const host = headers?.get(\"x-forwarded-host\") || headers?.get(\"host\");\n if (host) {\n const proto = headers?.get(\"x-forwarded-proto\") || \"http\";\n return `${proto}://${host}`;\n }\n\n return \"http://localhost:3000\";\n}\n\nfunction resolveForwardHeaders(\n request: ReturnType<typeof resolveRequestLike>,\n forwardHeaders: boolean | readonly string[] | undefined,\n) {\n if (!request?.headers || forwardHeaders === false) {\n return new Headers();\n }\n\n const allowed =\n Array.isArray(forwardHeaders) && forwardHeaders.length > 0\n ? new Set(forwardHeaders.map((item) => item.toLowerCase()))\n : new Set<string>(DEFAULT_FORWARDED_HEADERS);\n\n const headers = new Headers();\n request.headers.forEach((value, key) => {\n if (allowed.has(key.toLowerCase())) {\n headers.set(key, value);\n }\n });\n\n return headers;\n}\n\nfunction createBody(\n format: FarmIntegrationAPIBodyFormat | undefined,\n body: unknown,\n headers: Headers,\n): BodyInit | undefined {\n if (body == null || format === \"none\") {\n return undefined;\n }\n\n if (format === \"form\") {\n if (body instanceof FormData || body instanceof URLSearchParams) {\n return body;\n }\n\n const form = new URLSearchParams();\n for (const [key, value] of Object.entries(body as Record<string, unknown>)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item != null) {\n form.append(key, String(item));\n }\n }\n continue;\n }\n\n form.set(key, String(value));\n }\n\n headers.set(\"content-type\", \"application/x-www-form-urlencoded;charset=UTF-8\");\n return form;\n }\n\n headers.set(\"content-type\", \"application/json\");\n return JSON.stringify(body);\n}\n\nfunction createOperationBody(\n operation: Pick<FarmIntegrationAPIOperation<any, any, any>, \"bodyFormat\" | \"method\">,\n body: unknown,\n headers: Headers,\n): BodyInit | undefined {\n const requestBody = createBody(operation.bodyFormat, body, headers);\n\n if (operation.method === \"QUERY\" && requestBody === undefined && !headers.has(\"content-type\")) {\n headers.set(\n \"content-type\",\n operation.bodyFormat === \"form\"\n ? \"application/x-www-form-urlencoded;charset=UTF-8\"\n : \"application/json\",\n );\n }\n\n return requestBody;\n}\n\nasync function parseResponseData(response: Response): Promise<unknown> {\n if (response.status === 204 || response.status === 205) {\n return undefined;\n }\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n\n if (isJSONMediaType(contentType)) {\n return await response.json();\n }\n\n return await response.text();\n}\n\nfunction isJSONMediaType(contentType: string): boolean {\n const mediaType = contentType.split(\";\", 1)[0].trim().toLowerCase();\n return mediaType === \"application/json\" || mediaType.endsWith(\"+json\");\n}\n\nasync function safeParseResponseData(response: Response): Promise<unknown> {\n try {\n return await parseResponseData(response);\n } catch {\n return undefined;\n }\n}\n\nfunction createResponseError(response: Response, errorData: unknown) {\n const message =\n typeof errorData === \"string\"\n ? errorData\n : typeof errorData === \"object\" && errorData\n ? String(\n (errorData as { error?: string; message?: string }).error ||\n (errorData as { error?: string; message?: string }).message ||\n response.statusText,\n )\n : response.statusText || \"Integration request failed.\";\n\n return new IntegrationClientError(message, response, errorData);\n}\n\nfunction normalizeExecutionError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === \"string\" && error.length > 0) {\n return new Error(error);\n }\n\n return new Error(\"Integration request failed.\");\n}\n\nasync function finalizeOperationResponse(\n operation: FarmIntegrationAPIOperation<any, any, any>,\n response: Response,\n) {\n if (!response.ok) {\n const errorData = await safeParseResponseData(response);\n return {\n data: null,\n error: createResponseError(response, errorData),\n };\n }\n\n if (operation.responseFormat === \"response\") {\n return {\n data: response,\n error: null,\n };\n }\n\n return {\n data: (await parseResponseData(response)) as unknown,\n error: null,\n };\n}\n\nlet integrationRequestCounter = 0;\nconst noIntegrationObservers = {\n response(_response: Response) {},\n finish<T extends IntegrationOperationResult>(result: T): T {\n return result;\n },\n};\n\nfunction createIntegrationObservers(\n operation: FarmIntegrationAPIOperation<any, any, any>,\n options: ClientLifecycleHooks,\n requestOptions?: ClientLifecycleHooks,\n) {\n if (\n !options.onRequest &&\n !options.onResponse &&\n !options.onError &&\n !requestOptions?.onRequest &&\n !requestOptions?.onResponse &&\n !requestOptions?.onError\n ) {\n return noIntegrationObservers;\n }\n const requestEvent: ClientRequestEvent = {\n requestId: `integration-${Date.now()}-${++integrationRequestCounter}`,\n method: operation.method,\n path: operation.path ?? \"\",\n attempt: 0,\n timestamp: Date.now(),\n };\n let response: Response | undefined;\n notifyClientObserver(options.onRequest, [requestEvent]);\n notifyClientObserver(requestOptions?.onRequest, [requestEvent]);\n return {\n response(value: Response) {\n response = value;\n },\n finish<T extends IntegrationOperationResult>(result: T): T {\n const data = result.error ? undefined : result.data;\n const event: ClientResponseEvent = {\n ...requestEvent,\n timestamp: Date.now(),\n response,\n data,\n error: result.error ?? undefined,\n ok: !result.error,\n status: response?.status,\n };\n notifyClientObserver(options.onResponse, [data, result.error, event]);\n notifyClientObserver(requestOptions?.onResponse, [data, result.error, event]);\n if (result.error) {\n notifyClientObserver(options.onError, [result.error]);\n notifyClientObserver(requestOptions?.onError, [result.error]);\n }\n return result;\n },\n };\n}\n\nasync function executeClientOperation(\n operation: FarmIntegrationAPIOperation<any, any, any>,\n input: Record<string, unknown>,\n options: IntegrationClientOptions,\n requestOptions?: IntegrationClientRequestOptions,\n) {\n const cancellation = createClientCancellation(\n requestOptions?.signal,\n requestOptions?.timeoutMs ?? options.timeoutMs,\n );\n const observers = createIntegrationObservers(operation, options, requestOptions);\n try {\n const result = await cancellation.run(async () => {\n if (!operation.path) {\n return {\n data: null,\n error: new Error(\n \"Integration API operation path is missing. Pass a path to api.get/post/... or wrap pathless methods with api.route(path, { ... }).\",\n ),\n };\n }\n\n const baseURL =\n options.baseURL ||\n (typeof window !== \"undefined\" ? window.location.origin : \"http://localhost:3000\");\n const url = resolveFarmAPIRequestURL(operation.path, baseURL);\n appendQuery(url, input.query as Record<string, unknown> | undefined);\n\n const resolved = resolveClientHeaders(options.headers);\n const headers = resolved instanceof Headers ? resolved : await resolved;\n cancellation.check();\n appendHeaders(headers, operation.headers);\n appendHeaders(headers, requestOptions?.headers);\n headers.set(\"x-farm-integration-client\", \"1\");\n\n if (operation.responseFormat !== \"response\") {\n headers.set(\"accept\", \"application/json\");\n }\n\n appendIntegrationClientDataHeader(\n headers,\n mergeIntegrationClientData(options.data, requestOptions?.data),\n );\n\n const body = createOperationBody(operation, input.body, headers);\n const response = await (options.fetch ?? fetch)(url.toString(), {\n method: operation.method,\n headers,\n body,\n credentials:\n requestOptions?.credentials ?? operation.credentials ?? options.credentials ?? \"include\",\n signal: cancellation.signal,\n });\n cancellation.check();\n\n observers.response(response);\n if (!response.ok) {\n const errorData = await safeParseResponseData(response);\n return {\n data: null,\n error: createResponseError(response, errorData),\n };\n }\n\n if (operation.responseFormat === \"response\") {\n return {\n data: response,\n error: null,\n };\n }\n\n return {\n data: (await parseResponseData(response)) as unknown,\n error: null,\n };\n });\n return observers.finish(result);\n } catch (error) {\n return observers.finish({\n data: null,\n error: normalizeExecutionError(error),\n });\n } finally {\n cancellation.dispose();\n }\n}\n\nasync function executeServerOperation(\n operation: FarmIntegrationAPIOperation<any, any, any>,\n input: Record<string, unknown>,\n options: Omit<IntegrationServerClientOptions, \"isServer\">,\n requestOptions?: IntegrationServerClientRequestOptions,\n integrationKey?: string,\n source?: FarmIntegrationDefinition | FarmIntegrationAPI,\n) {\n // Capture the request before any asynchronous work (including header resolvers).\n const currentRequest =\n requestOptions?.request instanceof Request\n ? requestOptions.request\n : options.request instanceof Request\n ? options.request\n : resolveCurrentRequestLocal();\n const cancellation = createClientCancellation(\n requestOptions?.signal,\n requestOptions?.timeoutMs ?? options.timeoutMs,\n currentRequest?.signal,\n );\n const observers = createIntegrationObservers(operation, options, requestOptions);\n try {\n const result = await cancellation.run(async () => {\n if (!operation.path) {\n return {\n data: null,\n error: new Error(\n \"Integration API operation path is missing. Pass a path to api.get/post/... or wrap pathless methods with api.route(path, { ... }).\",\n ),\n };\n }\n\n const serverRequestOptions =\n requestOptions &&\n (\"request\" in requestOptions ||\n \"baseURL\" in requestOptions ||\n \"forwardHeaders\" in requestOptions)\n ? requestOptions\n : undefined;\n const request = resolveRequestLike(\n serverRequestOptions?.request ?? options.request ?? currentRequest,\n );\n const baseURL = resolveServerBaseURL(\n serverRequestOptions?.baseURL ?? options.baseURL,\n request,\n );\n const origin = resolveServerBaseURL(undefined, request);\n // Registered handlers use their canonical path, not an HTTP gateway prefix.\n const url = new URL(operation.path, new URL(baseURL, origin));\n appendQuery(url, input.query as Record<string, unknown> | undefined);\n\n const headers = new Headers();\n appendHeaders(\n headers,\n resolveForwardHeaders(\n request,\n serverRequestOptions?.forwardHeaders ?? options.forwardHeaders,\n ),\n );\n const resolved = resolveClientHeaders(options.headers);\n appendHeaders(headers, resolved instanceof Headers ? resolved : await resolved);\n cancellation.check();\n appendHeaders(headers, operation.headers);\n appendHeaders(headers, requestOptions?.headers);\n headers.set(\"x-farm-integration-client\", \"1\");\n\n if (operation.responseFormat !== \"response\") {\n headers.set(\"accept\", \"application/json\");\n }\n\n const data = mergeIntegrationClientData(options.data, requestOptions?.data);\n\n if (integrationKey) {\n const runtime =\n \"kind\" in (source || {}) &&\n (source as FarmIntegrationDefinition).kind === \"farm-integration\"\n ? getRegisteredIntegrationRuntimeLocal(integrationKey) || {\n integration: source as FarmIntegrationDefinition,\n config: {},\n isDev: process.env.NODE_ENV !== \"production\",\n isProd: process.env.NODE_ENV === \"production\",\n }\n : getRegisteredIntegrationRuntimeLocal(integrationKey);\n\n if (runtime) {\n const dispatchIntegrationRequest = resolveIntegrationRequestDispatcherLocal();\n const body = createOperationBody(operation, input.body, headers);\n const directResponse = dispatchIntegrationRequest\n ? await dispatchIntegrationRequest(\n runtime,\n new Request(url.toString(), {\n method: operation.method,\n headers,\n body,\n signal: cancellation.signal,\n }),\n {\n currentRequest,\n data,\n internal: true,\n },\n )\n : null;\n\n cancellation.check();\n\n if (directResponse) {\n observers.response(directResponse);\n return await finalizeOperationResponse(operation, directResponse);\n }\n }\n }\n\n appendIntegrationClientDataHeader(headers, data);\n\n const body = createOperationBody(operation, input.body, headers);\n const httpURL = resolveFarmAPIRequestURL(operation.path, baseURL, origin);\n appendQuery(httpURL, input.query as Record<string, unknown> | undefined);\n const response = await (options.fetch ?? fetch)(httpURL.toString(), {\n method: operation.method,\n headers,\n body,\n credentials:\n requestOptions?.credentials ?? operation.credentials ?? options.credentials ?? \"include\",\n signal: cancellation.signal,\n });\n cancellation.check();\n\n observers.response(response);\n return await finalizeOperationResponse(operation, response);\n });\n return observers.finish(result);\n } catch (error) {\n return observers.finish({\n data: null,\n error: normalizeExecutionError(error),\n });\n } finally {\n cancellation.dispose();\n }\n}\n\nexport function createIntegrationClient<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n options: IntegrationServerClientOptions,\n): IntegrationServerClientAliases<TSources>;\nexport function createIntegrationClient<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n options?: IntegrationClientOptions,\n): IntegrationClientAliases<TSources>;\nexport function createIntegrationClient<TSources extends Record<string, any>>(\n sources: TSources,\n options: IntegrationServerClientOptions,\n): IntegrationServerClient<TSources>;\nexport function createIntegrationClient<TSources extends Record<string, any>>(\n sources: TSources,\n options?: IntegrationClientOptions,\n): IntegrationClient<TSources>;\nexport function createIntegrationClient<TSources extends Record<string, any>>(\n sources: TSources | { integrations: TSources },\n options: IntegrationClientOptions | IntegrationServerClientOptions = {},\n):\n | IntegrationClient<TSources>\n | IntegrationClientAliases<TSources>\n | IntegrationServerClient<TSources>\n | IntegrationServerClientAliases<TSources> {\n const rawSources = \"integrations\" in sources ? sources.integrations : sources;\n const isServer = options.isServer === true;\n\n const namespaces = Object.entries(rawSources)\n .map(([key, source]) => {\n const api = tryResolveSourceAPI(source as FarmIntegrationDefinition | FarmIntegrationAPI);\n if (!api) {\n return null;\n }\n return [key, api, source as FarmIntegrationDefinition | FarmIntegrationAPI] as const;\n })\n .filter(\n (\n value,\n ): value is readonly [\n string,\n FarmIntegrationAPI,\n FarmIntegrationDefinition | FarmIntegrationAPI,\n ] => value !== null,\n );\n\n const cache = new Map<string, any>();\n\n const integrationNamespaces = new Proxy(\n {},\n {\n get(target, property) {\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n if (Reflect.has(target, property)) {\n return Reflect.get(target, property);\n }\n\n if (cache.has(property)) {\n return cache.get(property);\n }\n\n const match = namespaces.find(([key]) => key === property);\n if (!match) {\n return undefined;\n }\n\n const namespace = isServer\n ? createServerNamespaceProxy(\n match[0],\n match[2],\n match[1],\n options as IntegrationServerClientOptions,\n )\n : createNamespaceProxy(match[1], options);\n cache.set(property, namespace);\n return namespace;\n },\n },\n ) as\n | IntegrationClient<TSources>\n | IntegrationClientAliases<TSources>\n | IntegrationServerClient<TSources>\n | IntegrationServerClientAliases<TSources>;\n\n if (\"integrations\" in sources) {\n Object.defineProperty(integrationNamespaces, \"integrations\", {\n value: integrationNamespaces,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return integrationNamespaces as\n | IntegrationClientAliases<TSources>\n | IntegrationServerClientAliases<TSources>;\n }\n\n return integrationNamespaces as IntegrationClient<TSources> | IntegrationServerClient<TSources>;\n}\n\nfunction createAutomaticIntegrationAliases<TSources extends Record<string, any>>(\n isServer: boolean,\n options: IntegrationClientOptions | IntegrationServerClientOptions = {},\n): IntegrationClientAliases<TSources> | IntegrationServerClientAliases<TSources> {\n const cache = isServer ? new Map<string, any>() : null;\n\n const integrationNamespaces = new Proxy(\n {},\n {\n get(_target, property) {\n if (typeof property !== \"string\") {\n return undefined;\n }\n\n if (property === \"integrations\") {\n return integrationNamespaces;\n }\n\n if (cache?.has(property)) {\n return cache.get(property);\n }\n\n const namespaces = isServer\n ? resolveAutomaticServerNamespaces()\n : resolveAutomaticClientNamespaces();\n const match = namespaces.find(([key]) => key === property);\n if (!match) {\n return undefined;\n }\n\n const namespace = isServer\n ? createServerNamespaceProxy(\n match[0],\n match[2],\n match[1],\n options as IntegrationServerClientOptions,\n )\n : createNamespaceProxy(match[1], options as IntegrationClientOptions);\n\n cache?.set(property, namespace);\n return namespace;\n },\n },\n ) as IntegrationClientAliases<TSources> | IntegrationServerClientAliases<TSources>;\n\n Object.defineProperty(integrationNamespaces, \"integrations\", {\n value: integrationNamespaces,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return integrationNamespaces;\n}\n\nexport function integrationsClient<\n TSources extends Record<string, any>,\n>(): IntegrationClientAliases<TSources>;\nexport function integrationsClient<TSources extends Record<string, any>>(\n options: IntegrationClientOptions,\n): IntegrationClientAliases<TSources>;\nexport function integrationsClient<TSources extends Record<string, any>>(\n options: IntegrationClientOptions = {},\n): IntegrationClientAliases<TSources> {\n return createAutomaticIntegrationAliases<TSources>(\n false,\n options,\n ) as IntegrationClientAliases<TSources>;\n}\n\nexport function integrationsServer<\n TSources extends Record<string, any>,\n>(): IntegrationServerClientAliases<TSources>;\nexport function integrationsServer<TSources extends Record<string, any>>(\n options: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationServerClientAliases<TSources>;\nexport function integrationsServer<TSources extends Record<string, any>>(\n options: Omit<IntegrationServerClientOptions, \"isServer\"> = {},\n): IntegrationServerClientAliases<TSources> {\n return createAutomaticIntegrationAliases<TSources>(true, {\n ...options,\n isServer: true,\n }) as IntegrationServerClientAliases<TSources>;\n}\n\nexport function createIntegrationServerClient<TSources extends Record<string, any>>(sources: {\n integrations: TSources;\n}): IntegrationServerClientAliases<TSources>;\nexport function createIntegrationServerClient<TSources extends Record<string, any>>(\n sources: TSources,\n): IntegrationServerClient<TSources>;\nexport function createIntegrationServerClient<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n options: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationServerClientAliases<TSources>;\nexport function createIntegrationServerClient<TSources extends Record<string, any>>(\n sources: TSources,\n options: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationServerClient<TSources>;\nexport function createIntegrationServerClient<TSources extends Record<string, any>>(\n sources: TSources | { integrations: TSources },\n options: Omit<IntegrationServerClientOptions, \"isServer\"> = {},\n): IntegrationServerClient<TSources> | IntegrationServerClientAliases<TSources> {\n return createIntegrationClient(sources, {\n ...options,\n isServer: true,\n }) as IntegrationServerClient<TSources> | IntegrationServerClientAliases<TSources>;\n}\n\nexport function createIntegrationApi<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n options: IntegrationClientOptions = {},\n): IntegrationAPI<TSources> {\n const client = createIntegrationClient(sources, options);\n\n return {\n ...client,\n server(serverOptions = {}) {\n return createIntegrationServerClient(sources, {\n ...options,\n ...serverOptions,\n });\n },\n };\n}\n\nfunction isIntegrationClientOptionsInput(value: unknown): value is IntegrationClientOptions {\n return (\n !!value &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n (\"baseURL\" in value ||\n \"headers\" in value ||\n \"credentials\" in value ||\n \"timeoutMs\" in value ||\n \"fetch\" in value ||\n \"onRequest\" in value ||\n \"onResponse\" in value ||\n \"onError\" in value ||\n \"data\" in value ||\n \"isServer\" in value)\n );\n}\n\nfunction resolveIntegrationServerOptions(\n clientOptions: IntegrationClientOptions = {},\n serverOptions: Omit<IntegrationServerClientOptions, \"isServer\"> = {},\n): Omit<IntegrationServerClientOptions, \"isServer\"> {\n const data = mergeIntegrationClientData(clientOptions.data, serverOptions.data);\n\n return {\n baseURL: clientOptions.baseURL,\n headers: clientOptions.headers,\n credentials: clientOptions.credentials,\n timeoutMs: clientOptions.timeoutMs,\n fetch: clientOptions.fetch,\n onRequest: clientOptions.onRequest,\n onResponse: clientOptions.onResponse,\n onError: clientOptions.onError,\n ...serverOptions,\n ...(data ? { data } : {}),\n };\n}\n\nexport function createIntegrationClients<TSources extends Record<string, any>>(\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrationClients<TSources extends Record<string, any>>(\n sources: TSources,\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrationClients<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrationClients<TSources extends Record<string, any>>(\n sources?: TSources | { integrations: TSources },\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources> {\n if (arguments.length === 0 || isIntegrationClientOptionsInput(sources)) {\n const automaticClientOptions = isIntegrationClientOptionsInput(sources) ? sources : {};\n const automaticServerOptions = arguments.length > 1 ? clientOptions : undefined;\n\n return {\n api: integrationsServer<TSources>(\n resolveIntegrationServerOptions(\n automaticClientOptions,\n automaticServerOptions as Omit<IntegrationServerClientOptions, \"isServer\"> | undefined,\n ),\n ),\n apiClient: integrationsClient<TSources>(automaticClientOptions),\n };\n }\n\n const explicitSources =\n sources && \"integrations\" in sources ? sources.integrations : (sources as TSources);\n\n return {\n api: createIntegrationServerClient(\n {\n integrations: explicitSources,\n },\n resolveIntegrationServerOptions(clientOptions, serverOptions),\n ) as IntegrationServerClientAliases<TSources>,\n apiClient: createIntegrationClient(\n {\n integrations: explicitSources,\n },\n clientOptions,\n ) as IntegrationClientAliases<TSources>,\n };\n}\n\nexport function createIntegrations<TSources extends Record<string, any>>(\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrations<TSources extends Record<string, any>>(\n sources: TSources,\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrations<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function createIntegrations<TSources extends Record<string, any>>(\n sources?: TSources | { integrations: TSources } | IntegrationClientOptions,\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources> {\n if (arguments.length === 0) {\n return createIntegrationClients<TSources>();\n }\n\n return createIntegrationClients<TSources>(\n sources as TSources,\n clientOptions,\n serverOptions,\n ) as IntegrationClients<TSources>;\n}\n\nfunction createClientSafeIntegrationAPI(\n api: FarmIntegrationAPI | undefined,\n): FarmIntegrationAPI | undefined {\n if (!api) {\n return undefined;\n }\n\n const entries = Object.entries(api as Record<string, unknown>).map(([key, value]) => {\n if (isOperation(value)) {\n return [\n key,\n {\n kind: value.kind,\n path: value.path,\n method: value.method,\n bodyFormat: value.bodyFormat,\n responseFormat: value.responseFormat,\n credentials: value.credentials,\n isServer: value.isServer,\n __pathless: value.__pathless,\n },\n ];\n }\n\n if (value && typeof value === \"object\") {\n return [key, createClientSafeIntegrationAPI(value as FarmIntegrationAPI)];\n }\n\n return [key, value];\n });\n\n return Object.fromEntries(entries) as FarmIntegrationAPI;\n}\n\nexport function getIntegrationAPIManifest(): Record<string, FarmIntegrationAPI> {\n const manifestEntries = Object.entries(getRegisteredIntegrationsLocal())\n .map(([key, integration]) => {\n const api = createClientSafeIntegrationAPI(integration.api);\n return api ? ([key, api] as const) : null;\n })\n .filter((value): value is readonly [string, FarmIntegrationAPI] => value !== null);\n\n return Object.fromEntries(manifestEntries);\n}\n\nexport function integrationClients<TSources extends Record<string, any>>(\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function integrationClients<TSources extends Record<string, any>>(\n sources: TSources,\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function integrationClients<TSources extends Record<string, any>>(\n sources: { integrations: TSources },\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources>;\nexport function integrationClients<TSources extends Record<string, any>>(\n sources?: TSources | { integrations: TSources },\n clientOptions?: IntegrationClientOptions,\n serverOptions?: Omit<IntegrationServerClientOptions, \"isServer\">,\n): IntegrationClients<TSources> {\n if (arguments.length === 0) {\n return createIntegrationClients<TSources>();\n }\n\n return createIntegrationClients<TSources>(\n sources as TSources,\n clientOptions,\n serverOptions,\n ) as IntegrationClients<TSources>;\n}\n\nfunction resolveSingleNamespaceOperation(api: FarmIntegrationAPI) {\n const entries = Object.entries(api as Record<string, unknown>);\n if (entries.length !== 1) {\n return null;\n }\n\n const [, value] = entries[0]!;\n return isOperation(value) ? value : null;\n}\n\nfunction createClientOperationCaller(\n operation: FarmIntegrationAPIOperation<any, any, any, any>,\n property: string,\n options: IntegrationClientOptions,\n) {\n if (operation.isServer === true) {\n return async () => {\n throw new Error(\n `Integration method \"${property}\" is registered with isServer: true and is only available from a server integration client.`,\n );\n };\n }\n\n return async (\n input: Record<string, unknown> = {},\n requestOptions?: IntegrationClientRequestOptions,\n ) => {\n if (typeof window === \"undefined\") {\n throw new Error(\n \"Client integration API cannot be called on the server. Pass { isServer: true } to createIntegrationClient(...) during server rendering, or provide { isServer: true, request } outside it.\",\n );\n }\n\n return executeClientOperation(operation, input, options, requestOptions);\n };\n}\n\nfunction createServerOperationCaller(\n operation: FarmIntegrationAPIOperation<any, any, any, any>,\n options: IntegrationServerClientOptions,\n integrationKey: string,\n source: FarmIntegrationDefinition | FarmIntegrationAPI,\n) {\n return async (\n input: Record<string, unknown> = {},\n requestOptions?: IntegrationServerClientRequestOptions,\n ) => {\n if (typeof window !== \"undefined\") {\n throw new Error(\n \"Server integration API cannot be called in the browser. Remove { isServer: true } and create a client integration API instead.\",\n );\n }\n\n return executeServerOperation(\n operation,\n input,\n options,\n requestOptions,\n integrationKey,\n source,\n );\n };\n}\n\nfunction createNamespaceProxy(api: FarmIntegrationAPI, options: IntegrationClientOptions) {\n const cache = new Map<string, any>();\n const directOperation = resolveSingleNamespaceOperation(api);\n const target = directOperation\n ? createClientOperationCaller(directOperation, directOperation.method.toLowerCase(), options)\n : {};\n\n return new Proxy(target, {\n get(targetObject, property, receiver) {\n if (typeof property !== \"string\") {\n return Reflect.get(targetObject, property, receiver);\n }\n\n if (cache.has(property)) {\n return cache.get(property);\n }\n\n const value = (api as Record<string, unknown>)[property];\n if (!value) {\n return Reflect.get(targetObject, property, receiver);\n }\n\n if (isOperation(value)) {\n const caller = createClientOperationCaller(value, property, options);\n cache.set(property, caller);\n return caller;\n }\n\n const namespace = createNamespaceProxy(value as FarmIntegrationAPI, options);\n cache.set(property, namespace);\n return namespace;\n },\n });\n}\n\nfunction createServerNamespaceProxy(\n integrationKey: string,\n source: FarmIntegrationDefinition | FarmIntegrationAPI,\n api: FarmIntegrationAPI,\n options: IntegrationServerClientOptions,\n) {\n const cache = new Map<string, any>();\n const directOperation = resolveSingleNamespaceOperation(api);\n const target = directOperation\n ? createServerOperationCaller(directOperation, options, integrationKey, source)\n : {};\n\n return new Proxy(target, {\n get(targetObject, property, receiver) {\n if (typeof property !== \"string\") {\n return Reflect.get(targetObject, property, receiver);\n }\n\n if (cache.has(property)) {\n return cache.get(property);\n }\n\n const value = (api as Record<string, unknown>)[property];\n if (!value) {\n return Reflect.get(targetObject, property, receiver);\n }\n\n if (isOperation(value)) {\n const caller = createServerOperationCaller(value, options, integrationKey, source);\n cache.set(property, caller);\n return caller;\n }\n\n const namespace = createServerNamespaceProxy(\n integrationKey,\n source,\n value as FarmIntegrationAPI,\n options,\n );\n cache.set(property, namespace);\n return namespace;\n },\n });\n}\n","import { matchAPIRoute, parseDynamicSegment } from \"./route-pattern\";\n\nexport type APIRouteManifest = readonly {\n readonly path: string;\n readonly methods: readonly string[];\n}[];\nexport type BoundRouteParams = Readonly<Record<string, string | readonly string[]>>;\n\n/** A schema-free lookup shared by every immutable scope of one API client. */\nexport class ClientRouteManifest {\n readonly routes: Map<string, APIRouteManifest[number]>;\n constructor(routes: APIRouteManifest) {\n this.routes = new Map(\n routes.map((route) => [\n route.path.replace(/\\/$/, \"\"),\n {\n path: route.path.replace(/\\/$/, \"\"),\n methods: [...route.methods],\n },\n ]),\n );\n }\n\n bind(path: string, input: unknown): { segment: string; params: BoundRouteParams } {\n const params = readParams(input);\n const prefix = `${path.replace(/\\/$/, \"\")}/`;\n const candidates = new Set(\n [...this.routes.keys()]\n .filter((route) => route.startsWith(prefix))\n .map((route) => route.slice(prefix.length).split(\"/\")[0])\n .filter((segment) => {\n const dynamic = parseDynamicSegment(segment);\n return (\n dynamic &&\n Object.keys(params).every((key) => key === dynamic.name) &&\n (Object.prototype.hasOwnProperty.call(params, dynamic.name) || dynamic.optional)\n );\n }),\n );\n if (candidates.size !== 1)\n throw new TypeError(\n `Cannot bind route params at ${path}: supply exactly the next dynamic segment's parameter.`,\n );\n const segment = [...candidates][0]!;\n const dynamic = parseDynamicSegment(segment)!;\n encodeParameter(dynamic, params[dynamic.name]);\n return {\n segment,\n params: Object.freeze(\n Object.fromEntries(\n Object.entries(params).map(([key, value]) => [\n key,\n Array.isArray(value) ? Object.freeze([...value]) : value,\n ]),\n ),\n ),\n };\n }\n\n resolve(\n path: string,\n method: string,\n bound: BoundRouteParams,\n input?: { params?: unknown },\n ): string {\n const normalized = path.replace(/\\/$/, \"\");\n const supplied = readParams(input?.params);\n const candidates = [...this.routes.values()].filter((route) => {\n if (route.path === normalized) return true;\n if (!route.path.startsWith(`${normalized}/`)) return false;\n const tail = route.path.slice(normalized.length + 1);\n return (\n !tail.includes(\"/\") && Boolean(parseDynamicSegment(tail)) && input?.params !== undefined\n );\n });\n const selected = candidates.filter((route) => {\n const unbound = route.path\n .split(\"/\")\n .map(parseDynamicSegment)\n .filter((part) => part && !Object.prototype.hasOwnProperty.call(bound, part.name));\n return (\n Object.keys(supplied).every((key) => unbound.some((part) => part!.name === key)) &&\n unbound.every(\n (part) => part!.optional || Object.prototype.hasOwnProperty.call(supplied, part!.name),\n )\n );\n });\n if (selected.length !== 1)\n throw new TypeError(\n `Cannot resolve ${method} ${normalized}: missing, unexpected, or ambiguous route params.`,\n );\n const route = selected[0]!;\n if (!route.methods.includes(method) && !(method === \"HEAD\" && route.methods.includes(\"GET\"))) {\n throw new TypeError(`${method} is not registered for ${route.path}.`);\n }\n const params = { ...bound, ...supplied };\n const resolved = route.path\n .split(\"/\")\n .map((segment) => {\n const dynamic = parseDynamicSegment(segment);\n return dynamic ? encodeParameter(dynamic, params[dynamic.name]) : segment;\n })\n .filter(Boolean)\n .join(\"/\");\n const pathname = `/${resolved}`;\n const winner = matchAPIRoute(this.routes, pathname);\n if (winner?.route.path !== route.path) {\n throw new TypeError(\n `Route ${route.path} resolves to ${pathname}, which is shadowed by ${winner?.route.path ?? \"another route\"}.`,\n );\n }\n return pathname;\n }\n}\n\nfunction readParams(input: unknown): Record<string, string | readonly string[]> {\n if (input === undefined) return {};\n if (\n !input ||\n typeof input !== \"object\" ||\n Array.isArray(input) ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(input))\n ) {\n throw new TypeError(\"Route params must be a plain object.\");\n }\n for (const key of Object.keys(input)) {\n if ([\"__proto__\", \"constructor\", \"prototype\"].includes(key))\n throw new TypeError(`Unsafe route parameter ${key}.`);\n }\n return input as Record<string, string | readonly string[]>;\n}\n\nfunction encodeParameter(\n parameter: { name: string; catchAll: boolean; optional: boolean },\n value: unknown,\n): string {\n if (parameter.optional && value === undefined) return \"\";\n const parts = parameter.catchAll ? value : [value];\n if (!Array.isArray(parts) || (!parts.length && !parameter.optional)) {\n throw new TypeError(\n `Route parameter ${parameter.name} must be ${parameter.catchAll ? \"a non-empty array of strings\" : \"a string\"}.`,\n );\n }\n return Array.from(parts, (part) => {\n if (\n typeof part !== \"string\" ||\n !part ||\n part === \".\" ||\n part === \"..\" ||\n Array.from(part).some(\n (character) =>\n character.charCodeAt(0) <= 31 ||\n (character.charCodeAt(0) >= 127 && character.charCodeAt(0) <= 159),\n )\n ) {\n throw new TypeError(`Invalid value for route parameter ${parameter.name}.`);\n }\n return encodeURIComponent(part);\n }).join(\"/\");\n}\n","import {\n integrationsClient,\n integrationsServer,\n type IntegrationClientOptions,\n type IntegrationClientRoot,\n type IntegrationServerClientOptions,\n type IntegrationServerClientRoot,\n} from \"../integration-client\";\nimport {\n FarmClientDataCache,\n getFarmClientDataCache,\n normalizeFarmClientCacheKey,\n type FarmClientCacheEntry,\n type FarmClientCacheKey,\n} from \"../client-cache\";\nimport {\n applyFarmCacheInvalidations,\n decodeFarmCacheInvalidations,\n FARM_CACHE_INVALIDATION_HEADER,\n} from \"../cache-invalidation\";\nimport type { DefinedCacheKey, InferCacheKeyData, RouteDataCacheKey } from \"../cache\";\nimport { getFarmAPIBaseURL, resolveFarmAPIRequestURL } from \"./config\";\nimport { ClientRouteManifest, type APIRouteManifest, type BoundRouteParams } from \"./client-routes\";\nimport type { RoutePathParams } from \"./route\";\nimport { _resolveCurrentRequest } from \"../server/request-bridge\";\nimport { resolveClientHeaders, type ClientHeaders } from \"../client-headers\";\nimport { createClientCancellation } from \"../client-cancellation\";\nimport { notifyClientObserver, type ClientLifecycleHooks } from \"../client-observers\";\nimport { resolveAPIRequestRuntime, type APIRequestRuntime } from \"./server-client-bridge\";\nexport type { APIRouteManifest } from \"./client-routes\";\nimport {\n isFarmAPIStream,\n isJSONStreamResponse,\n readJSONStream,\n type FarmAPIStream,\n} from \"./transport\";\n\nexport const FARM_API_ROUTE_REF_SYMBOL: unique symbol = Symbol.for(\"farm.api.route-ref\") as any;\nexport const FARM_API_ROUTE_META_SYMBOL: unique symbol = Symbol.for(\"farm.api.route-meta\") as any;\n\nexport type APIRouteRefMetadata = {\n path: string;\n method: string;\n baseURL: string;\n sameOrigin: boolean;\n};\n\nexport type APIClientOptions = ClientLifecycleHooks & {\n /** Generated path/method metadata required for dynamic shorthand and $params scopes. */\n routes?: APIRouteManifest;\n baseURL?: string;\n headers?: ClientHeaders;\n credentials?: RequestCredentials;\n /** Whole-call deadline in milliseconds. 0 (default) disables it. */\n timeoutMs?: number;\n /** HTTP transport only; local server dispatch does not use it. */\n fetch?: typeof globalThis.fetch;\n cacheDefaults?: CacheOptions;\n integrations?: IntegrationClientOptions;\n};\n\nexport type APIClientWithoutIntegrationsOptions = Omit<APIClientOptions, \"integrations\"> & {\n integrations: false;\n};\n\nexport type ServerAPIClientOptions = {\n integrations?: Omit<IntegrationServerClientOptions, \"isServer\">;\n};\n\nexport type ServerAPIClientWithoutIntegrationsOptions = Omit<\n ServerAPIClientOptions,\n \"integrations\"\n> & {\n integrations: false;\n};\n\nexport type StatusPhase = \"idle\" | \"pending\" | \"success\" | \"error\" | \"revalidating\" | \"invalidated\";\n\nexport type StatusEvent<TData = unknown, TError = unknown> = {\n phase: StatusPhase;\n requestId: string;\n method: \"GET\" | \"HEAD\" | \"QUERY\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\" | \"OPTIONS\";\n key: string;\n input?: unknown;\n data?: TData;\n error?: TError;\n isBackground?: boolean;\n timestamp: number;\n};\n\nexport type CacheKey<TData = unknown> = string & {\n readonly __farmCacheData?: TData;\n};\n\nexport type APIResult<TData = unknown, TError = Error> = {\n data: TData | undefined;\n error: TError | null;\n key: CacheKey<TData>;\n};\n\nexport class APIClientError<\n TCode extends string = string,\n TData = unknown,\n TStatus extends number = number,\n> extends Error {\n readonly code: TCode;\n readonly data: TData;\n readonly status: TStatus;\n readonly response?: Response;\n\n constructor(\n code: TCode,\n data: TData,\n options: {\n status: TStatus;\n message: string;\n response?: Response;\n },\n ) {\n super(options.message);\n this.name = \"APIClientError\";\n this.code = code;\n this.data = data;\n this.status = options.status;\n this.response = options.response;\n }\n}\n\nexport type APIClientSystemError =\n | APIClientError<\"http_error\", unknown, number>\n | APIClientError<\"aborted\" | \"timeout\", unknown, 0>\n | APIClientError<\"network_error\", unknown, 0>;\n\nexport type RequestEvent = {\n requestId: string;\n method: StatusEvent[\"method\"];\n key: string;\n path: string;\n input?: unknown;\n attempt: number;\n timestamp: number;\n};\n\nexport type ResponseEvent<TData = unknown, TError = Error> = {\n requestId: string;\n method: StatusEvent[\"method\"];\n key: string;\n path: string;\n input?: unknown;\n attempt: number;\n timestamp: number;\n response?: Response;\n data?: TData;\n error?: TError;\n ok?: boolean;\n status?: number;\n};\n\nexport type CachePolicy = \"cache-first\" | \"network-only\" | \"stale-while-revalidate\";\nexport type CacheScope = \"client\" | \"shared\";\n\nexport type CacheOptions = {\n key?: FarmClientCacheKey;\n policy?: CachePolicy;\n /** Select client-local or public shared storage. Identity-carrying requests always stay local. */\n scope?: CacheScope;\n staleTime?: number;\n gcTime?: number;\n dedupeMs?: number;\n /** Allow the configured client cache persistence adapter to store this read. */\n persist?: boolean;\n};\n\nexport type RetryOptions = {\n count?: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type InvalidateTarget =\n | FarmClientCacheKey\n | {\n key: FarmClientCacheKey;\n }\n | {\n path: string;\n method?: \"GET\" | \"HEAD\" | \"QUERY\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\" | \"OPTIONS\";\n input?: unknown;\n }\n | [CallableRouteRef<any>, unknown?];\n\nexport type InvalidateOptions =\n | InvalidateTarget[]\n | {\n targets: InvalidateTarget[];\n refetch?: boolean;\n };\n\nexport type OptimisticUpdate =\n | [CallableRouteRef<any>, unknown, (prev: any) => any]\n | [CacheKey<any> | DefinedCacheKey<any> | string, (prev: any) => any];\n\nexport type OptimisticOptions<TUpdates extends readonly unknown[] = readonly OptimisticUpdate[]> = {\n update: TUpdates & NormalizeOptimisticUpdates<TUpdates>;\n rollbackOnError?: boolean;\n};\n\nexport type ClientOptions<\n TData = unknown,\n TError = unknown,\n TUpdates extends readonly unknown[] = readonly OptimisticUpdate[],\n> = {\n key?: CacheKey<TData> | FarmClientCacheKey;\n signal?: AbortSignal;\n /** Override the instance deadline; 0 disables it for this call. */\n timeoutMs?: number;\n cache?: CacheOptions;\n retry?: RetryOptions;\n invalidate?: InvalidateOptions;\n optimistic?: OptimisticOptions<TUpdates>;\n onRequest?: (event: RequestEvent) => void;\n onResponse?: (\n data: TData | undefined,\n error: TError | null,\n event: ResponseEvent<TData, TError>,\n ) => void;\n onSuccess?: (data: TData) => void;\n onError?: (err: TError) => void;\n onSettled?: (data?: TData, err?: TError | null) => void;\n onStatus?: (event: StatusEvent<TData, TError>) => void;\n};\n\ntype AnyRouteRef = (...args: any[]) => any;\ntype RouteRef<TData = any, TInput = any> = {\n readonly __farmRouteInput: TInput;\n readonly __farmRouteData: TData;\n};\ntype CallableRouteRef<TData = any, TInput = any> = AnyRouteRef & RouteRef<TData, TInput>;\n\ntype InferRouteInput<TRoute> = TRoute extends { readonly __farmRouteInput: infer TInput }\n ? TInput\n : never;\ntype InferRouteData<TRoute> = TRoute extends { readonly __farmRouteData: infer TData }\n ? TData\n : never;\n\ntype NormalizeOptimisticUpdate<TUpdate> = TUpdate extends readonly [\n infer TRoute,\n unknown,\n (prev: any) => any,\n]\n ? TRoute extends RouteRef<any, any>\n ? [\n TRoute,\n InferRouteInput<TRoute> | undefined,\n (prev: InferRouteData<TRoute> | undefined) => InferRouteData<TRoute>,\n ]\n : never\n : TUpdate extends readonly [infer TKey, (prev: any) => any]\n ? TKey extends DefinedCacheKey<any, RouteDataCacheKey>\n ? [TKey, (prev: InferCacheKeyData<TKey> | undefined) => InferCacheKeyData<TKey>]\n : TKey extends CacheKey<infer TData>\n ? [TKey, (prev: TData | undefined) => TData]\n : TKey extends string\n ? [TKey, (prev: unknown) => unknown]\n : never\n : never;\n\ntype NormalizeOptimisticUpdates<TUpdates extends readonly unknown[]> = {\n [K in keyof TUpdates]: NormalizeOptimisticUpdate<TUpdates[K]>;\n};\n\ntype TypedEndpointLike = {\n __types: {\n body: any;\n query: any;\n response: any;\n errors?: any;\n };\n};\n\ntype Simplify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\ntype IsNever<T> = [T] extends [never] ? true : false;\ntype IsAny<T> = 0 extends 1 & T ? true : false;\ntype RequiredKeys<T> = T extends object\n ? {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K;\n }[keyof T]\n : never;\n\ntype BodyInputProp<TValue> =\n IsNever<TValue> extends true\n ? {}\n : IsAny<TValue> extends true\n ? { body?: TValue }\n : undefined extends TValue\n ? { body?: TValue }\n : { body: TValue };\n\ntype QueryInputProp<TValue> =\n IsNever<TValue> extends true\n ? {}\n : IsAny<TValue> extends true\n ? { query?: TValue }\n : undefined extends TValue\n ? { query?: TValue }\n : RequiredKeys<TValue> extends never\n ? { query?: TValue }\n : { query: TValue };\n\ntype HasRequiredKeys<T> = RequiredKeys<T> extends never ? false : true;\n\n// Type utilities to extract endpoint input/output types from TypedEndpoint\ntype InferEndpointBody<T> = T extends {\n __types: {\n inputBody: infer TInputBody;\n };\n}\n ? TInputBody\n : T extends {\n __types: {\n body: infer TBody;\n };\n }\n ? TBody\n : never;\n\ntype InferEndpointInput<T> = T extends {\n __types: {\n query: infer TQuery;\n };\n}\n ? Simplify<\n BodyInputProp<InferEndpointBody<T>> &\n QueryInputProp<T extends { __types: { inputQuery: infer I } } ? I : TQuery> &\n (T extends { __routeParams: infer P }\n ? keyof P extends never\n ? { params?: never }\n : { params: P }\n : {}) &\n (T extends { __types: { inputHeaders: infer H } }\n ? IsNever<H> extends true\n ? {}\n : RequiredKeys<H> extends never\n ? { headers?: H }\n : { headers: H }\n : {})\n >\n : T extends { __routeParams: infer P }\n ? keyof P extends never\n ? { params?: never }\n : { params: P }\n : {};\n\ntype InferEndpointOutput<T> = T extends {\n __types: {\n response: infer R;\n };\n}\n ? R extends { readonly __farmStreamItem: infer TItem }\n ? FarmAPIStream<TItem>\n : R\n : any;\n\ntype InferEndpointError<T> = T extends {\n __types: {\n errors: infer TErrors;\n };\n}\n ? keyof TErrors extends never\n ? Error\n :\n | {\n [TCode in keyof TErrors]: TErrors[TCode] extends {\n data: infer TData;\n status: infer TStatus extends number;\n }\n ? APIClientError<TCode & string, TData, TStatus>\n : never;\n }[keyof TErrors]\n | APIClientSystemError\n : Error;\n\n// Type for a single endpoint method\ntype EndpointCall<T = any> = <TUpdates extends readonly unknown[] = readonly OptimisticUpdate[]>(\n ...args: HasRequiredKeys<InferEndpointInput<T>> extends true\n ? [\n options: InferEndpointInput<T>,\n clientOptions?: ClientOptions<InferEndpointOutput<T>, InferEndpointError<T>, TUpdates>,\n ]\n : [\n options?: InferEndpointInput<T>,\n clientOptions?: ClientOptions<InferEndpointOutput<T>, InferEndpointError<T>, TUpdates>,\n ]\n) => Promise<APIResult<InferEndpointOutput<T>, InferEndpointError<T>>>;\ntype EndpointMethod<T = any> = EndpointCall<T> &\n RouteRef<InferEndpointOutput<T>, InferEndpointInput<T>>;\n\ntype DynamicKeys<T> = Extract<keyof T, `[${string}]`>;\ntype MethodKeys = \"get\" | \"head\" | \"query\" | \"post\" | \"put\" | \"patch\" | \"delete\" | \"options\";\ntype OwnMethodKeys<T> = {\n [K in Extract<keyof T, MethodKeys>]: T[K] extends TypedEndpointLike | ((...args: any[]) => any)\n ? K\n : never;\n}[Extract<keyof T, MethodKeys>];\ntype WithRouteParams<T, P> = T & { __routeParams: P };\ntype UnionToIntersection<U> = (U extends unknown ? (v: U) => void : never) extends (\n v: infer I,\n) => void\n ? I\n : never;\ntype ChildMethods<T> = { [K in DynamicKeys<T>]: OwnMethodKeys<T[K]> }[DynamicKeys<T>];\ntype MethodEndpoints<T, M extends PropertyKey, P> =\n | (M extends OwnMethodKeys<T> ? WithRouteParams<T[M], P> : never)\n | {\n [K in DynamicKeys<T>]: M extends keyof T[K]\n ? WithRouteParams<T[K][M], P & RoutePathParams<K>>\n : never;\n }[DynamicKeys<T>];\ntype DistributedCall<T> = T extends unknown ? EndpointCall<T> : never;\ntype ScopedMethod<T> = UnionToIntersection<DistributedCall<T>> &\n EndpointCall<T> &\n RouteRef<InferEndpointOutput<T>, InferEndpointInput<T>>;\n\n// Keep bracket access for compatibility; explicit binding preserves intermediate segments.\ntype RouterToClient<T, P = {}> = {\n [K in Exclude<keyof T, OwnMethodKeys<T>>]: T[K] extends TypedEndpointLike\n ? EndpointMethod<WithRouteParams<T[K], P>>\n : T[K] extends Record<string, any>\n ? RouterToClient<T[K], P & (K extends string ? RoutePathParams<K> : {})>\n : EndpointMethod<WithRouteParams<T[K], P>>;\n} & {\n [M in OwnMethodKeys<T> | ChildMethods<T>]: M extends ChildMethods<T>\n ? ScopedMethod<MethodEndpoints<T, M, P>>\n : M extends keyof T\n ? EndpointMethod<WithRouteParams<T[M], P>>\n : never;\n} & ([DynamicKeys<T>] extends [never]\n ? {}\n : {\n $params: UnionToIntersection<\n {\n [K in DynamicKeys<T>]: (params: RoutePathParams<K>) => RouterToClient<T[K], P>;\n }[DynamicKeys<T>]\n >;\n });\n\nexport type RouteAPIClient<TRouter extends Record<string, any>> = RouterToClient<TRouter>;\n\nexport type APIClient<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n> = RouteAPIClient<TRouter> & IntegrationClientRoot<TIntegrations>;\n\nexport type ServerAPIClient<\n TEndpoints extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n> = TEndpoints & IntegrationServerClientRoot<TIntegrations>;\n\nexport type ApiClients<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n> = {\n api: RouteAPIClient<TRouter> & IntegrationServerClientRoot<TIntegrations>;\n apiClient: APIClient<TRouter, TIntegrations>;\n};\n\n/**\n * Define one shared pair of typed callers. Import only generated route metadata\n * here, not endpoint modules. `api` dispatches locally during a Farm request;\n * `apiClient` uses HTTP. Both return the same app-route APIResult shape.\n */\nexport function createApiClients<TRouter extends Record<string, any>>(\n options: APIClientWithoutIntegrationsOptions,\n): { api: RouteAPIClient<TRouter>; apiClient: RouteAPIClient<TRouter> };\nexport function createApiClients<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(options?: APIClientOptions): ApiClients<TRouter, TIntegrations>;\nexport function createApiClients<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(\n options: APIClientOptions | APIClientWithoutIntegrationsOptions = {},\n): ApiClients<TRouter, TIntegrations> {\n // A module-level pair is safe across requests. No cache, credentials, or\n // dispatcher from one request is retained by another request's caller.\n const localScopes = new WeakMap<APIRequestRuntime, WeakMap<Request, { request: APICall }>>();\n const routeMeta = new WeakMap<AnyRouteRef, RouteMeta>();\n const api = createNestedProxy(\n [],\n async (path: string, method: string, input: any, clientOptions?: ClientOptions<any, any>) => {\n if (typeof window !== \"undefined\") {\n throw new Error(\n \"api is server-only. Use apiClient from createApiClients() in the browser.\",\n );\n }\n const currentRequest = _resolveCurrentRequest();\n const runtime = resolveAPIRequestRuntime();\n if (!currentRequest || !runtime) {\n throw new Error(\n \"api requires an active Farm server request. Call it from a server page, query, action, or API handler; use apiClient with an absolute baseURL for standalone HTTP calls.\",\n );\n }\n let localClients = localScopes.get(runtime);\n if (!localClients) {\n localClients = new WeakMap();\n localScopes.set(runtime, localClients);\n }\n let local = localClients.get(currentRequest);\n if (!local) {\n const origin = new URL(currentRequest.url).origin;\n const headers = new Headers();\n // Only identity/content negotiation headers are inherited. In\n // particular, never copy the outer request's body or hop-by-hop fields.\n for (const name of [\"cookie\", \"authorization\", \"accept-language\"]) {\n const value = currentRequest.headers.get(name);\n if (value !== null) headers.set(name, value);\n }\n local = createAPIClientRuntime(\n {\n ...options,\n integrations: false,\n baseURL: new URL(runtime.basePath, origin).toString(),\n },\n {\n headers,\n signal: currentRequest.signal,\n cache: new FarmClientDataCache({ subscribeToInvalidation: false }),\n routeMeta,\n fetch: (url, init) => {\n if (new URL(url).origin !== origin) {\n throw new Error(\n \"api can only dispatch to this Farm app. Use apiClient for HTTP calls.\",\n );\n }\n currentRequest.signal.throwIfAborted();\n return runtime.dispatch(new Request(url, init));\n },\n },\n );\n localClients.set(currentRequest, local);\n }\n return local.request(path, method, input, clientOptions);\n },\n routeMeta,\n \"/api\",\n true,\n options.integrations === false\n ? undefined\n : {\n integrations: integrationsServer<TIntegrations>({\n baseURL: options.baseURL,\n headers: options.headers,\n credentials: options.credentials,\n timeoutMs: options.timeoutMs,\n fetch: options.fetch,\n onRequest: options.onRequest,\n onResponse: options.onResponse,\n onError: options.onError,\n ...options.integrations,\n }),\n },\n options.routes ? new ClientRouteManifest(options.routes) : undefined,\n );\n return {\n api: api as ApiClients<TRouter, TIntegrations>[\"api\"],\n apiClient: createAPIClient<TRouter, TIntegrations>(options as APIClientOptions),\n };\n}\n\n/**\n * Create a typed RPC client for Farm.js API routes\n *\n * Returns a nested proxy that supports:\n * - api.hello.get({ query: { name: 'World' } })\n * - api['auth/login'].post({ body: { email: '...', password: '...' } })\n * - api.users.get({ query: { limit: '10' } })\n * - api.integrations.billing.checkout({ body: { priceId: 'price_...' } })\n *\n * @example\n * ```typescript\n * import { createAPIClient } from 'farm/client';\n * import type { APIRouter } from '@/api';\n * import type { AppIntegrations } from '@/lib/integrations';\n *\n * export const api = createAPIClient<APIRouter, AppIntegrations>();\n *\n * // Use it (nested property access)\n * const result = await api.hello.get({ query: { name: 'World' } });\n * if (result.error) console.error(result.error);\n * else console.log(result.data);\n *\n * // Or with string keys for nested paths\n * const result = await api['auth/login'].post({\n * body: { email: 'test@example.com', password: 'pass123' }\n * });\n *\n * // Integration APIs live under a reserved namespace.\n * const checkout = await api.integrations.billing.checkout({\n * body: { priceId: 'price_123' }\n * });\n * ```\n */\nexport function createAPIClient<TRouter extends Record<string, any>>(\n options: APIClientWithoutIntegrationsOptions,\n): RouteAPIClient<TRouter>;\nexport function createAPIClient<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(options?: APIClientOptions): APIClient<TRouter, TIntegrations>;\nexport function createAPIClient<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(\n options: APIClientOptions | APIClientWithoutIntegrationsOptions = {},\n): RouteAPIClient<TRouter> | APIClient<TRouter, TIntegrations> {\n return createAPIClientRuntime<TRouter, TIntegrations>(options).client;\n}\n\ntype APICall = (\n path: string,\n method: string,\n input?: any,\n options?: ClientOptions<any, any>,\n) => Promise<APIResult<any, Error>>;\n\nfunction createAPIClientRuntime<\n TRouter extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(\n options: APIClientOptions | APIClientWithoutIntegrationsOptions = {},\n transport?: {\n headers?: HeadersInit;\n signal?: AbortSignal;\n fetch(url: string, init: RequestInit): Promise<Response>;\n cache: FarmClientDataCache;\n routeMeta: WeakMap<AnyRouteRef, RouteMeta>;\n },\n): { client: APIClient<TRouter, TIntegrations>; request: APICall } {\n options ??= {};\n const baseURL = options.baseURL || getFarmAPIBaseURL();\n const httpFetch = options.fetch;\n const integrationOptions =\n options.integrations === false\n ? false\n : {\n baseURL: options.baseURL,\n headers: options.headers,\n credentials: options.credentials,\n timeoutMs: options.timeoutMs,\n fetch: httpFetch,\n onRequest: options.onRequest,\n onResponse: options.onResponse,\n onError: options.onError,\n ...(typeof options.integrations === \"object\" ? options.integrations : {}),\n };\n const rootAliases =\n integrationOptions === false\n ? undefined\n : {\n integrations: integrationsClient<TIntegrations>(integrationOptions),\n };\n\n const sharedCacheState = transport?.cache ?? getFarmClientDataCache();\n const localCaches = transport ? new Set([sharedCacheState]) : undefined;\n const sharedInflightState = new Map<string, InflightEntry>();\n let scopedRequestState: ScopedRequestState | undefined;\n const routeMeta = transport?.routeMeta ?? new WeakMap<AnyRouteRef, RouteMeta>();\n let requestCounter = 0;\n\n // Create a simple fetch-based client (browser compatible)\n const fetchClient = async (\n path: string,\n requestOptions: any,\n defaultHeaders: Headers,\n cancellation: ReturnType<typeof createClientCancellation>,\n ) => {\n const url = resolveFarmAPIRequestURL(path, baseURL);\n const method = String(requestOptions.method || \"GET\").toUpperCase();\n\n // Handle query parameters\n if (requestOptions.query) {\n Object.entries(requestOptions.query).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n url.searchParams.delete(key);\n const values = Array.isArray(value) ? value : [value];\n for (const item of values) {\n if (item !== undefined && item !== null) url.searchParams.append(key, String(item));\n }\n });\n }\n\n // Prepare fetch options\n const headers = new Headers(defaultHeaders);\n new Headers(requestOptions.headers).forEach((value, key) => headers.set(key, value));\n const fetchOptions: RequestInit = {\n method,\n headers,\n credentials: options.credentials,\n signal: cancellation.signal,\n };\n if (method === \"QUERY\" && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n\n // Handle body\n if (requestOptions.body !== undefined) {\n if (isFormData(requestOptions.body)) {\n headers.delete(\"content-type\");\n fetchOptions.body = requestOptions.body;\n } else {\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n fetchOptions.body = JSON.stringify(requestOptions.body);\n }\n }\n\n cancellation.check();\n const response = await (transport?.fetch ?? httpFetch ?? fetch)(url.toString(), fetchOptions);\n cancellation.check();\n const invalidations = decodeFarmCacheInvalidations(\n response.headers?.get?.(FARM_CACHE_INVALIDATION_HEADER),\n );\n if (transport) {\n for (const cache of localCaches!) {\n for (const key of invalidations) cache.invalidate(key);\n }\n } else {\n applyFarmCacheInvalidations(invalidations);\n }\n let data: unknown;\n try {\n data = await readAPIResponseData(response, method);\n cancellation.check();\n } catch (decodeError) {\n if (!(decodeError instanceof APIResponseDecodeError)) throw decodeError;\n if (response.ok) throw decodeError.cause;\n return { response, data: undefined, decodeError: decodeError.cause };\n }\n\n return { response, data };\n };\n\n const request = async (\n path: string,\n method: string,\n input: any = {},\n clientOptions?: ClientOptions<any, any>,\n ): Promise<APIResult<any, Error>> => {\n const cancellation = createClientCancellation(\n clientOptions?.signal,\n clientOptions?.timeoutMs ?? options.timeoutMs,\n transport?.signal,\n );\n const normalizeCallError = (error: unknown): Error => {\n if (!cancellation.signal?.aborted) return normalizeError(error);\n const normalized = new APIClientError(\n cancellation.timedOut ? \"timeout\" : \"aborted\",\n undefined,\n {\n status: 0,\n message: cancellation.timedOut ? \"Client request timed out\" : \"Client request aborted\",\n },\n );\n (normalized as Error & { cause?: unknown }).cause = cancellation.signal.reason;\n return normalized;\n };\n try {\n const methodUpper = method.toUpperCase() as StatusEvent[\"method\"];\n const requestId = `${Date.now()}-${++requestCounter}`;\n const defaultHeaders = new Headers(transport?.headers);\n let requestContextError: Error | undefined;\n try {\n cancellation.check();\n const resolved = resolveClientHeaders(options.headers);\n const headers =\n resolved instanceof Headers ? resolved : await cancellation.run(() => resolved);\n cancellation.check();\n headers.forEach((value, name) => defaultHeaders.set(name, value));\n } catch (error) {\n requestContextError = normalizeCallError(error);\n }\n const cacheOptions = clientOptions?.cache\n ? {\n ...options.cacheDefaults,\n ...clientOptions.cache,\n }\n : undefined;\n const configuredCacheKey = clientOptions?.key ?? cacheOptions?.key;\n const cacheKey = normalizeFarmClientCacheKey(\n configuredCacheKey ?? buildCacheKey(methodUpper, path, input, baseURL, defaultHeaders),\n ) as CacheKey<any>;\n const now = Date.now();\n\n const emitStatus = (phase: StatusPhase, payload?: Partial<StatusEvent>) => {\n clientOptions?.onStatus?.({\n phase,\n requestId,\n method: methodUpper,\n key: cacheKey,\n input,\n timestamp: Date.now(),\n ...payload,\n });\n };\n\n const policy = cacheOptions?.policy ?? (cacheOptions ? \"cache-first\" : \"network-only\");\n const staleTime = cacheOptions?.staleTime ?? 0;\n const hasReliableDefaultCacheKey =\n methodUpper !== \"QUERY\" || !isFormData(input?.body) || configuredCacheKey !== undefined;\n const isCacheEnabled =\n Boolean(cacheOptions) &&\n (methodUpper === \"GET\" || methodUpper === \"QUERY\") &&\n hasReliableDefaultCacheKey;\n const needsCacheState =\n isCacheEnabled ||\n Boolean(clientOptions?.optimistic?.update?.length) ||\n Boolean(clientOptions?.invalidate);\n let requestCacheContext = requestContextError ? `invalid:${requestId}` : undefined;\n if (needsCacheState && !requestContextError) {\n try {\n requestCacheContext = getRequestCacheContext(\n { headers: defaultHeaders, credentials: options.credentials },\n input,\n // Custom transports can inject an identity outside visible headers.\n // Never share their cached data with other client instances.\n httpFetch ? \"client\" : cacheOptions?.scope,\n );\n } catch (error) {\n requestCacheContext = `invalid:${requestId}`;\n requestContextError = normalizeError(error);\n }\n }\n\n let cacheState = sharedCacheState;\n let inflightState = sharedInflightState;\n let requestScopedState: ScopedRequestState | undefined;\n if (requestCacheContext !== undefined) {\n if (scopedRequestState && scopedRequestState.context !== requestCacheContext) {\n scopedRequestState.retired = true;\n if (scopedRequestState.inflight.size === 0) scopedRequestState.cache.dispose();\n scopedRequestState = undefined;\n }\n scopedRequestState ??= {\n context: requestCacheContext,\n cache: new FarmClientDataCache({ subscribeToInvalidation: !transport }),\n inflight: new Map(),\n retired: false,\n };\n requestScopedState = scopedRequestState;\n cacheState = requestScopedState.cache;\n localCaches?.add(cacheState);\n inflightState = requestScopedState.inflight;\n }\n const optimisticState = getOptimisticState(cacheState);\n\n const entry = getValidCacheEntry(cacheState, cacheKey, now);\n const isStale = entry ? isEntryStale(entry, now) : true;\n\n const applyOptimisticUpdates = () => {\n if (!clientOptions?.optimistic?.update?.length) return [] as OptimisticSnapshot[];\n\n const snapshots = new Map<string, OptimisticSnapshot>();\n for (const update of clientOptions.optimistic.update) {\n const [target, targetInput, updater] =\n update.length === 2\n ? [update[0], undefined, update[1]]\n : [update[0], update[1], update[2]];\n const targetKey = resolveTargetKey(\n routeMeta,\n target,\n targetInput,\n baseURL,\n defaultHeaders,\n transport ? baseURL : undefined,\n );\n if (!targetKey) continue;\n\n const targetEntry = getValidCacheEntry(cacheState, targetKey, now);\n const currentEntry = cacheState.get(targetKey);\n let stack = optimisticState.get(targetKey);\n if (stack && !reconcileOptimisticInvalidation(cacheState, targetKey, stack)) {\n stack = undefined;\n }\n if (!stack) {\n stack = {\n entry: targetEntry ? { ...targetEntry } : undefined,\n layers: [],\n renderedEntry: currentEntry,\n };\n optimisticState.set(targetKey, stack);\n }\n\n let snapshot = snapshots.get(targetKey);\n if (!snapshot) {\n const previousEntry = stack.layers.length === 0 ? stack.entry : stack.renderedEntry;\n const layer: OptimisticLayer = {\n updaters: [],\n updatedAt: now,\n staleAt:\n targetEntry?.staleAt ??\n now + (cacheOptions?.staleTime ?? options.cacheDefaults?.staleTime ?? 0),\n gcAt:\n targetEntry?.gcAt ??\n getGcAt(now, cacheOptions?.gcTime ?? options.cacheDefaults?.gcTime),\n };\n stack.layers.push(layer);\n snapshot = {\n key: targetKey,\n stack,\n layer,\n };\n snapshots.set(targetKey, snapshot);\n snapshot.layer.updaters.push(updater);\n const nextEntry = applyOptimisticLayer(previousEntry, {\n ...snapshot.layer,\n updaters: [updater],\n });\n storeOptimisticEntry(cacheState, targetKey, stack, nextEntry);\n continue;\n }\n snapshot.layer.updaters.push(updater);\n const nextEntry = applyOptimisticLayer(stack.renderedEntry, {\n ...snapshot.layer,\n updaters: [updater],\n });\n storeOptimisticEntry(cacheState, targetKey, stack, nextEntry);\n }\n\n return Array.from(snapshots.values());\n };\n\n const rollbackOptimisticUpdates = (snapshots: OptimisticSnapshot[]) => {\n if (!clientOptions?.optimistic?.rollbackOnError) return;\n settleOptimisticUpdates(cacheState, optimisticState, snapshots, \"rollback\");\n };\n\n const invalidateUncommittedOptimisticUpdates = (snapshots: OptimisticSnapshot[]) => {\n if (clientOptions?.optimistic?.rollbackOnError) return;\n for (const key of settleOptimisticUpdates(\n cacheState,\n optimisticState,\n snapshots,\n \"invalidate\",\n )) {\n emitStatus(\"invalidated\", { key });\n }\n };\n\n const executeNetwork = async (opts?: { isBackground?: boolean; callCallbacks?: boolean }) => {\n const release = cancellation.hold();\n let unsubscribeInvalidation: (() => void) | undefined;\n let readOwners: Map<string, object> | undefined;\n let readOwner: object | undefined;\n const resolvedCacheKey = cacheState.resolveKey(cacheKey);\n try {\n const dedupeMs = cacheOptions?.dedupeMs ?? 0;\n const inflight = inflightState.get(cacheKey);\n const allowDedupe =\n isCacheEnabled && dedupeMs > 0 && !cancellation.signal && !requestContextError;\n\n if (\n allowDedupe &&\n inflight &&\n !inflight.cancellable &&\n now - inflight.startedAt < dedupeMs\n ) {\n emitStatus(\"pending\", { isBackground: opts?.isBackground, data: entry?.data });\n const result = await inflight.promise;\n\n if (result.error) {\n emitStatus(\"error\", { error: result.error, isBackground: opts?.isBackground });\n notifyClientObserver(options.onError, [result.error]);\n if (opts?.callCallbacks !== false) {\n clientOptions?.onError?.(result.error);\n }\n } else {\n emitStatus(\"success\", { data: result.data, isBackground: opts?.isBackground });\n if (opts?.callCallbacks !== false) {\n clientOptions?.onSuccess?.(result.data as any);\n }\n }\n\n return result;\n }\n\n // Observe ordering, not wall-clock timestamps: invalidation can happen in the\n // same millisecond, or be cleared by another client's newer cache write.\n let invalidatedDuringRequest = false;\n if (isCacheEnabled) {\n // Transport deduplication is caller-local, but cache ownership must\n // span every caller writing to the same cache instance.\n readOwners = getCacheReadOwners(cacheState);\n readOwner = {};\n readOwners.set(resolvedCacheKey, readOwner);\n unsubscribeInvalidation = cacheState.subscribe(cacheKey, (event) => {\n if (event === \"invalidate\") invalidatedDuringRequest = true;\n });\n }\n emitStatus(opts?.isBackground ? \"revalidating\" : \"pending\", {\n isBackground: opts?.isBackground,\n });\n\n const promise = (async () => {\n const maxRetries = Math.max(0, clientOptions?.retry?.count ?? 0);\n let attempt = 0;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (options.onRequest || clientOptions?.onRequest) {\n const requestEvent: RequestEvent = {\n requestId,\n method: methodUpper,\n key: cacheKey,\n path,\n input,\n attempt,\n timestamp: Date.now(),\n };\n notifyClientObserver(options.onRequest, [requestEvent]);\n clientOptions?.onRequest?.(requestEvent);\n }\n\n try {\n if (requestContextError) throw requestContextError;\n const { response, data, decodeError } = await cancellation.run(() =>\n fetchClient(\n path,\n {\n ...input,\n method: methodUpper,\n },\n defaultHeaders,\n cancellation,\n ),\n );\n\n const error = response.ok ? null : createResponseError(response, data, decodeError);\n\n const responseEvent: ResponseEvent<any, Error> = {\n requestId,\n method: methodUpper,\n key: cacheKey,\n path,\n input,\n attempt,\n timestamp: Date.now(),\n response,\n data: response.ok ? data : undefined,\n error: error ?? undefined,\n ok: response.ok,\n status: response.status,\n };\n\n notifyClientObserver(options.onResponse, [\n response.ok ? data : undefined,\n error,\n responseEvent,\n ]);\n notifyResponseObserver(\n clientOptions?.onResponse,\n response.ok ? data : undefined,\n error,\n responseEvent,\n );\n\n if (!error) {\n return { data, error: null, key: cacheKey } as APIResult<any, Error>;\n }\n\n if (attempt >= maxRetries) {\n return { data: undefined, error, key: cacheKey } as APIResult<any, Error>;\n }\n } catch (err: any) {\n const error = normalizeCallError(err);\n const responseEvent: ResponseEvent<any, Error> = {\n requestId,\n method: methodUpper,\n key: cacheKey,\n path,\n input,\n attempt,\n timestamp: Date.now(),\n error,\n ok: false,\n };\n\n notifyClientObserver(options.onResponse, [undefined, error, responseEvent]);\n notifyResponseObserver(clientOptions?.onResponse, undefined, error, responseEvent);\n\n if (attempt >= maxRetries || requestContextError || cancellation.signal?.aborted) {\n return { data: undefined, error, key: cacheKey } as APIResult<any, Error>;\n }\n }\n\n attempt += 1;\n const delay =\n typeof clientOptions?.retry?.delay === \"function\"\n ? clientOptions.retry.delay(attempt)\n : (clientOptions?.retry?.delay ?? 0);\n\n if (delay > 0) {\n try {\n await cancellation.delay(delay);\n } catch (error) {\n return { data: undefined, error: normalizeCallError(error), key: cacheKey };\n }\n }\n }\n })();\n\n const inflightEntry = {\n promise,\n startedAt: now,\n cancellable: !!cancellation.signal || !!requestContextError,\n };\n inflightState.set(cacheKey, inflightEntry);\n\n try {\n const result = await promise;\n\n if (\n inflightState.get(cacheKey) === inflightEntry &&\n readOwners?.get(resolvedCacheKey) === readOwner &&\n !invalidatedDuringRequest &&\n !result.error &&\n isCacheEnabled &&\n !isFarmAPIStream(result.data)\n ) {\n const updatedAt = Date.now();\n const cached: CacheEntry = {\n data: result.data,\n updatedAt,\n staleAt: updatedAt + staleTime,\n gcAt: getGcAt(updatedAt, cacheOptions?.gcTime),\n invalidatedAt: undefined,\n persist: cacheOptions?.persist === true ? true : undefined,\n [API_CACHE_REFETCH]: createCacheRefetch(\n request,\n path,\n method,\n input,\n cacheKey,\n cacheOptions!,\n clientOptions,\n options.onError,\n ),\n };\n cacheState.set(cacheKey, cached);\n }\n\n if (result.error) {\n emitStatus(\"error\", { error: result.error, isBackground: opts?.isBackground });\n notifyClientObserver(options.onError, [result.error]);\n if (opts?.callCallbacks !== false) {\n clientOptions?.onError?.(result.error);\n }\n } else {\n emitStatus(\"success\", { data: result.data, isBackground: opts?.isBackground });\n if (opts?.callCallbacks !== false) {\n clientOptions?.onSuccess?.(result.data as any);\n }\n }\n\n return result;\n } finally {\n if (inflightState.get(cacheKey) === inflightEntry) {\n inflightState.delete(cacheKey);\n }\n if (requestContextError && requestScopedState) {\n requestScopedState.retired = true;\n if (scopedRequestState === requestScopedState) scopedRequestState = undefined;\n }\n if (requestScopedState?.retired && requestScopedState.inflight.size === 0) {\n requestScopedState.cache.dispose();\n }\n }\n } finally {\n if (readOwner && readOwners?.get(resolvedCacheKey) === readOwner) {\n readOwners.delete(resolvedCacheKey);\n }\n unsubscribeInvalidation?.();\n release();\n }\n };\n\n const invalidateTargets = async () => {\n if (!clientOptions?.invalidate) return;\n\n const invalidateOptions = Array.isArray(clientOptions.invalidate)\n ? { targets: clientOptions.invalidate, refetch: false }\n : {\n targets: clientOptions.invalidate.targets,\n refetch: clientOptions.invalidate.refetch ?? false,\n };\n\n const refetches = new Set<() => void>();\n for (const target of invalidateOptions.targets) {\n const targetKey = resolveTargetKey(\n routeMeta,\n target,\n undefined,\n baseURL,\n defaultHeaders,\n transport ? baseURL : undefined,\n );\n if (!targetKey) continue;\n\n const existing = cacheState.get(targetKey);\n const invalidatedAt = Date.now();\n // The first read may still be in flight with no stored entry yet.\n // Notify its invalidation listener before it can cache an old result.\n cacheState.invalidate(targetKey, invalidatedAt);\n if (existing) {\n const stack = optimisticState.get(targetKey);\n if (stack?.renderedEntry === existing) {\n stack.invalidatedAt = invalidatedAt;\n stack.renderedEntry = cacheState.get(targetKey);\n }\n }\n\n emitStatus(\"invalidated\", { key: targetKey });\n\n const refetch = (existing as CacheEntry | undefined)?.[API_CACHE_REFETCH];\n if (invalidateOptions.refetch && refetch) {\n refetches.add(refetch);\n }\n }\n // Invalidate every alias before starting work; never replay this mutation.\n for (const refetch of refetches) refetch();\n };\n\n const optimisticSnapshots = requestContextError ? [] : applyOptimisticUpdates();\n\n if (isCacheEnabled && !requestContextError && !cancellation.signal?.aborted) {\n if (entry && !isStale && policy !== \"network-only\") {\n emitStatus(\"success\", { data: entry.data });\n clientOptions?.onSuccess?.(entry.data);\n clientOptions?.onSettled?.(entry.data, null);\n return { data: entry.data, error: null, key: cacheKey };\n }\n\n if (entry && isStale && policy === \"stale-while-revalidate\") {\n emitStatus(\"success\", { data: entry.data });\n clientOptions?.onSuccess?.(entry.data);\n clientOptions?.onSettled?.(entry.data, null);\n\n void executeNetwork({ isBackground: true, callCallbacks: false });\n return { data: entry.data, error: null, key: cacheKey };\n }\n }\n\n const result = await executeNetwork();\n if (result.error) {\n if (cancellation.signal?.aborted) {\n settleOptimisticUpdates(cacheState, optimisticState, optimisticSnapshots, \"rollback\");\n } else {\n rollbackOptimisticUpdates(optimisticSnapshots);\n invalidateUncommittedOptimisticUpdates(optimisticSnapshots);\n }\n } else {\n settleOptimisticUpdates(cacheState, optimisticState, optimisticSnapshots, \"commit\");\n await invalidateTargets();\n }\n clientOptions?.onSettled?.(result.data, result.error);\n return result;\n } finally {\n cancellation.dispose();\n }\n };\n\n // Return nested proxy (starts with empty path, user adds to it)\n const client = createNestedProxy(\n [],\n request,\n routeMeta,\n baseURL,\n isSameOriginAPIBaseURL(baseURL),\n rootAliases,\n options.routes ? new ClientRouteManifest(options.routes) : undefined,\n ) as APIClient<TRouter, TIntegrations>;\n return { client, request };\n}\n\nasync function readAPIResponseData(response: Response, method: string): Promise<unknown> {\n if (\n method === \"HEAD\" ||\n response.status === 204 ||\n response.status === 205 ||\n response.status === 304\n ) {\n return undefined;\n }\n\n // Keep lightweight fetch-compatible adapters working when they expose the\n // traditional json() contract without a complete Web Response implementation.\n if (!response.headers?.get && typeof response.json === \"function\") {\n return readResponseJSON(response);\n }\n\n if (response.body === null) return undefined;\n\n if (isJSONStreamResponse(response)) {\n return readJSONStream(response);\n }\n\n const contentType = response.headers.get(\"content-type\")?.split(\";\", 1)[0]?.trim().toLowerCase();\n if (typeof response.arrayBuffer === \"function\") {\n const data = await response.arrayBuffer();\n if (data.byteLength === 0) return undefined;\n\n if (!contentType || contentType === \"application/json\" || contentType.endsWith(\"+json\")) {\n return parseResponseJSON(new TextDecoder().decode(data));\n }\n\n if (\n contentType.startsWith(\"text/\") ||\n contentType === \"application/xml\" ||\n contentType === \"application/xhtml+xml\" ||\n contentType === \"application/graphql\"\n ) {\n return new TextDecoder().decode(data);\n }\n\n return data;\n }\n\n if (\n (!contentType || contentType === \"application/json\" || contentType.endsWith(\"+json\")) &&\n typeof response.json === \"function\"\n ) {\n return readResponseJSON(response);\n }\n\n if (\n (contentType?.startsWith(\"text/\") ||\n contentType === \"application/xml\" ||\n contentType === \"application/xhtml+xml\" ||\n contentType === \"application/graphql\") &&\n typeof response.text === \"function\"\n ) {\n return response.text();\n }\n\n // Some fetch-compatible adapters expose headers but still only implement\n // the traditional json() reader.\n if (typeof response.json === \"function\") {\n return readResponseJSON(response);\n }\n\n return undefined;\n}\n\nclass APIResponseDecodeError extends Error {\n readonly cause: unknown;\n\n constructor(cause: unknown) {\n super(cause instanceof Error ? cause.message : \"Failed to decode JSON response\");\n this.name = \"APIResponseDecodeError\";\n this.cause = cause;\n }\n}\n\nfunction parseResponseJSON(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new APIResponseDecodeError(error);\n }\n}\n\nasync function readResponseJSON(response: Pick<Response, \"json\">): Promise<unknown> {\n try {\n return await response.json();\n } catch (error) {\n if (error instanceof SyntaxError) throw new APIResponseDecodeError(error);\n throw error;\n }\n}\n\n/**\n * Create a nested proxy that builds up the path\n *\n * Flow:\n * 1. api.hello -> Proxy(['hello'])\n * 2. api.hello.get -> Proxy(['hello', 'get'])\n * 3. api.hello.get({ query: {...} })\n * -> fetch('/api/hello', { method: 'GET', ... })\n *\n * For routes with single method:\n * 1. api.hello -> Proxy(['hello'])\n * 2. api.hello({ query: {...} })\n * -> fetch('/api/hello', ...)\n */\nfunction createNestedProxy(\n path: string[],\n client: any,\n routeMeta: WeakMap<AnyRouteRef, RouteMeta>,\n baseURL: string,\n sameOrigin: boolean,\n rootAliases?: Record<string, unknown>,\n manifest?: ClientRouteManifest,\n bound: BoundRouteParams = {},\n): any {\n const target = () => {};\n const proxy = new Proxy(target, {\n // When accessing a property (api.hello)\n get(_target, prop: string | symbol) {\n if (prop === \"$params\") {\n return (params: unknown) => {\n if (!manifest)\n throw new TypeError(\n \"$params requires createAPIClient({ routes: apiRoutes }) from the generated API manifest.\",\n );\n const scope = manifest.bind(buildProxyRoutePath(path), params);\n return createNestedProxy(\n [...path, scope.segment],\n client,\n routeMeta,\n baseURL,\n sameOrigin,\n rootAliases,\n manifest,\n Object.freeze({ ...bound, ...scope.params }),\n );\n };\n }\n if (prop === FARM_API_ROUTE_REF_SYMBOL) {\n return path.length > 0;\n }\n if (prop === FARM_API_ROUTE_META_SYMBOL) {\n let metadata;\n try {\n metadata = resolveRouteMeta({ path, baseURL, manifest, bound });\n } catch {\n return null;\n } // An unbound/overloaded route has no single URL yet.\n const requestURL = resolveFarmAPIRequestURL(metadata.routePath, baseURL);\n return Object.freeze({\n path: `${requestURL.pathname}${requestURL.search}${requestURL.hash}`,\n method: metadata.method,\n baseURL: requestURL.origin,\n sameOrigin,\n });\n }\n\n if (path.length === 0 && typeof prop === \"string\" && rootAliases && prop in rootAliases) {\n return rootAliases[prop];\n }\n\n if (typeof prop !== \"string\") {\n return Reflect.get(_target, prop);\n }\n\n // Add prop to path and return new proxy\n return createNestedProxy(\n [...path, prop],\n client,\n routeMeta,\n baseURL,\n sameOrigin,\n rootAliases,\n manifest,\n bound,\n );\n },\n\n // When calling as a function\n apply(_target, _thisArg, args) {\n // Check if the last part is an HTTP method\n const lastPart = path[path.length - 1];\n const httpMethods = [\"get\", \"head\", \"query\", \"post\", \"put\", \"delete\", \"patch\", \"options\"];\n\n if (httpMethods.includes(lastPart)) {\n // Method is explicitly called: api.users.get() or api['auth/login'].post()\n // Remove the method from path and use it as the HTTP method\n const routePath = buildProxyRoutePath(path.slice(0, -1));\n const method = lastPart.toUpperCase();\n\n // Extract options from arguments\n const [options, clientOptions] = args;\n\n // Call fetch client with explicit method\n const resolved = manifest ? manifest.resolve(routePath, method, bound, options) : routePath;\n if (!manifest && options?.params)\n throw new TypeError(\"Dynamic params require the generated routes manifest.\");\n return client(resolved, method, options, clientOptions);\n } else {\n // Direct call without method: api.hello()\n // Use the full path and let the server determine the method (usually GET)\n const routePath = buildProxyRoutePath(path);\n\n // Extract options from arguments\n const [options, clientOptions] = args;\n\n // Call fetch client (default method will be GET)\n const method = options?.method || \"GET\";\n const resolved = manifest ? manifest.resolve(routePath, method, bound, options) : routePath;\n return client(resolved, method, options, clientOptions);\n }\n },\n });\n\n routeMeta.set(proxy, { path: [...path], baseURL, manifest, bound });\n return proxy;\n}\n\nfunction buildProxyRoutePath(path: string[]): string {\n return \"/api/\" + path.join(\"/\").replace(/^\\/+/, \"\");\n}\n\nexport function isAPIRouteRef(value: unknown): value is CallableRouteRef {\n return (\n typeof value === \"function\" &&\n (value as { [FARM_API_ROUTE_REF_SYMBOL]?: unknown })[FARM_API_ROUTE_REF_SYMBOL] === true\n );\n}\n\nexport function getAPIRouteRefMetadata(value: unknown): APIRouteRefMetadata | null {\n if (!isAPIRouteRef(value)) return null;\n const metadata = (value as { [FARM_API_ROUTE_META_SYMBOL]?: unknown })[\n FARM_API_ROUTE_META_SYMBOL\n ];\n if (!metadata || typeof metadata !== \"object\") return null;\n\n const candidate = metadata as Partial<APIRouteRefMetadata>;\n if (\n typeof candidate.path !== \"string\" ||\n typeof candidate.method !== \"string\" ||\n typeof candidate.baseURL !== \"string\" ||\n typeof candidate.sameOrigin !== \"boolean\"\n ) {\n return null;\n }\n\n return {\n path: candidate.path,\n method: candidate.method,\n baseURL: candidate.baseURL,\n sameOrigin: candidate.sameOrigin,\n };\n}\n\n/**\n * Server-side API client that calls endpoints directly as functions\n * No HTTP overhead for app endpoints, and registered integration routes can be exposed at\n * api.integrations.* where Farm can dispatch them directly to the integration handler.\n *\n * @example\n * ```typescript\n * import { createServerAPIClient } from 'farm/client';\n * import type { AppIntegrations } from '@/lib/integrations';\n *\n * export const api = createServerAPIClient<{}, AppIntegrations>({});\n *\n * const result = await api.integrations.billing.status();\n * ```\n */\nexport function createServerAPIClient<TEndpoints extends Record<string, any>>(\n endpoints: TEndpoints,\n): TEndpoints;\nexport function createServerAPIClient<TEndpoints extends Record<string, any>>(\n endpoints: TEndpoints,\n options: ServerAPIClientWithoutIntegrationsOptions,\n): TEndpoints;\nexport function createServerAPIClient<\n TEndpoints extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(\n endpoints: TEndpoints,\n options?: ServerAPIClientOptions,\n): ServerAPIClient<TEndpoints, TIntegrations>;\nexport function createServerAPIClient<\n TEndpoints extends Record<string, any>,\n TIntegrations extends Record<string, any> = {},\n>(\n endpoints: TEndpoints,\n options: ServerAPIClientOptions | ServerAPIClientWithoutIntegrationsOptions = {},\n): TEndpoints | ServerAPIClient<TEndpoints, TIntegrations> {\n if (\n options.integrations === false ||\n Object.prototype.hasOwnProperty.call(endpoints, \"integrations\")\n ) {\n return endpoints;\n }\n\n Object.defineProperty(endpoints, \"integrations\", {\n get() {\n return integrationsServer<TIntegrations>(\n typeof options.integrations === \"object\" ? options.integrations : {},\n );\n },\n enumerable: false,\n configurable: true,\n });\n\n return endpoints as ServerAPIClient<TEndpoints, TIntegrations>;\n}\n\nconst API_CACHE_REFETCH = Symbol.for(\"farm.api.cache-refetch\");\ntype CacheEntry = FarmClientCacheEntry<any> & {\n [API_CACHE_REFETCH]?: () => void;\n};\n\n// Keep the read recipe on its cache entry, so deletion/GC also releases it.\n// This separate closure must not retain the original request's entry or signal.\nfunction createCacheRefetch(\n request: APICall,\n path: string,\n method: string,\n input: unknown,\n key: string,\n cache: CacheOptions,\n options: ClientOptions<any, any> | undefined,\n onError: APIClientOptions[\"onError\"],\n): () => void {\n const readOptions: ClientOptions<any, any> = {\n cache: { ...cache, key, policy: \"network-only\", dedupeMs: 0 },\n retry: options?.retry,\n timeoutMs: options?.timeoutMs,\n };\n return () => {\n // A new call resolves current defaults and owns a fresh deadline. Do not\n // retain prior signals, mutation options, or per-call completion callbacks.\n void request(path, method, input, readOptions).catch((error) => {\n notifyClientObserver(onError, [normalizeError(error)]);\n });\n };\n}\n\ntype InflightEntry = {\n cancellable?: boolean;\n promise: Promise<APIResult<any, Error>>;\n startedAt: number;\n};\n\ntype ScopedRequestState = {\n context: string;\n cache: FarmClientDataCache;\n inflight: Map<string, InflightEntry>;\n retired: boolean;\n};\n\ntype RouteMeta = {\n path: string[];\n baseURL: string;\n manifest?: ClientRouteManifest;\n bound?: BoundRouteParams;\n};\n\ntype OptimisticSnapshot = {\n key: string;\n stack: OptimisticStack;\n layer: OptimisticLayer;\n};\n\ntype OptimisticStack = {\n entry?: CacheEntry;\n layers: OptimisticLayer[];\n renderedEntry?: CacheEntry;\n invalidatedAt?: number;\n};\n\ntype OptimisticLayer = {\n updaters: Array<(prev: any) => any>;\n updatedAt: number;\n staleAt: number;\n gcAt?: number;\n committed?: boolean;\n};\n\nconst optimisticStates = new WeakMap<FarmClientDataCache, Map<string, OptimisticStack>>();\nconst cacheReadOwners = new WeakMap<FarmClientDataCache, Map<string, object>>();\n\nfunction getCacheReadOwners(cache: FarmClientDataCache): Map<string, object> {\n let owners = cacheReadOwners.get(cache);\n if (!owners) {\n owners = new Map();\n cacheReadOwners.set(cache, owners);\n }\n return owners;\n}\n\nfunction getOptimisticState(cache: FarmClientDataCache): Map<string, OptimisticStack> {\n let state = optimisticStates.get(cache);\n if (!state) {\n state = new Map();\n optimisticStates.set(cache, state);\n }\n return state;\n}\n\nfunction applyOptimisticLayer(entry: CacheEntry | undefined, layer: OptimisticLayer): CacheEntry {\n let data = entry?.data;\n for (const updater of layer.updaters) data = updater(data);\n\n return {\n data,\n updatedAt: layer.updatedAt,\n staleAt: entry?.staleAt ?? layer.staleAt,\n gcAt: entry?.gcAt ?? layer.gcAt,\n invalidatedAt: entry?.invalidatedAt,\n [API_CACHE_REFETCH]: entry?.[API_CACHE_REFETCH],\n };\n}\n\nfunction storeOptimisticEntry(\n cacheState: FarmClientDataCache,\n key: string,\n stack: OptimisticStack,\n entry: CacheEntry | undefined,\n): void {\n if (!entry) {\n cacheState.delete(key);\n stack.renderedEntry = undefined;\n return;\n }\n\n cacheState.set(key, entry);\n if (stack.invalidatedAt !== undefined) {\n cacheState.invalidate(key, stack.invalidatedAt);\n }\n stack.renderedEntry = cacheState.get(key);\n}\n\nfunction reconcileOptimisticInvalidation(\n cacheState: FarmClientDataCache,\n key: string,\n stack: OptimisticStack,\n): boolean {\n const current = cacheState.get(key);\n const rendered = stack.renderedEntry;\n if (current === rendered) return true;\n if (\n !current ||\n !rendered ||\n current.data !== rendered.data ||\n current.updatedAt !== rendered.updatedAt ||\n current.gcAt !== rendered.gcAt ||\n current.status !== rendered.status ||\n current.error !== rendered.error ||\n current.fetching !== rendered.fetching ||\n current.staleAt !== 0 ||\n current.invalidatedAt === undefined\n ) {\n return false;\n }\n\n stack.invalidatedAt = current.invalidatedAt;\n stack.renderedEntry = current;\n return true;\n}\n\nfunction renderOptimisticStack(\n cacheState: FarmClientDataCache,\n key: string,\n stack: OptimisticStack,\n): void {\n let entry = stack.entry ? { ...stack.entry } : undefined;\n for (const layer of stack.layers) entry = applyOptimisticLayer(entry, layer);\n storeOptimisticEntry(cacheState, key, stack, entry);\n}\n\nfunction settleOptimisticUpdates(\n cacheState: FarmClientDataCache,\n optimisticState: Map<string, OptimisticStack>,\n snapshots: OptimisticSnapshot[],\n outcome: \"commit\" | \"rollback\" | \"invalidate\",\n): string[] {\n const settledKeys: string[] = [];\n for (const snapshot of snapshots) {\n const stack = optimisticState.get(snapshot.key);\n if (stack !== snapshot.stack) continue;\n if (!reconcileOptimisticInvalidation(cacheState, snapshot.key, stack)) {\n optimisticState.delete(snapshot.key);\n continue;\n }\n\n if (outcome === \"rollback\") {\n stack.layers = stack.layers.filter((layer) => layer !== snapshot.layer);\n } else {\n snapshot.layer.committed = true;\n if (outcome === \"invalidate\") stack.invalidatedAt = Date.now();\n }\n\n while (stack.layers[0]?.committed) {\n stack.entry = applyOptimisticLayer(stack.entry, stack.layers.shift()!);\n }\n\n renderOptimisticStack(cacheState, snapshot.key, stack);\n if (stack.layers.length === 0) optimisticState.delete(snapshot.key);\n settledKeys.push(snapshot.key);\n }\n return settledKeys;\n}\n\n/**\n * @internal Apply key-targeted optimistic updates to the shared client cache\n * for a server-function mutation. Route-reference update tuples need an API\n * caller's route metadata and are skipped here; use structured cache keys.\n */\nexport function applyServerFnOptimisticUpdates(\n updates: readonly OptimisticUpdate[],\n now = Date.now(),\n): OptimisticSnapshot[] {\n const cacheState = getFarmClientDataCache();\n const optimisticState = getOptimisticState(cacheState);\n const snapshots = new Map<string, OptimisticSnapshot>();\n\n for (const update of updates) {\n if (update.length !== 2) continue;\n const [target, updater] = update;\n if (typeof updater !== \"function\") continue;\n const targetKey =\n typeof target === \"string\" || Array.isArray(target)\n ? normalizeFarmClientCacheKey(target as FarmClientCacheKey)\n : null;\n if (!targetKey) continue;\n\n const targetEntry = getValidCacheEntry(cacheState, targetKey, now);\n const currentEntry = cacheState.get(targetKey);\n let stack = optimisticState.get(targetKey);\n if (stack && !reconcileOptimisticInvalidation(cacheState, targetKey, stack)) {\n stack = undefined;\n }\n if (!stack) {\n stack = {\n entry: targetEntry ? { ...targetEntry } : undefined,\n layers: [],\n renderedEntry: currentEntry,\n };\n optimisticState.set(targetKey, stack);\n }\n\n let snapshot = snapshots.get(targetKey);\n if (!snapshot) {\n const previousEntry = stack.layers.length === 0 ? stack.entry : stack.renderedEntry;\n const layer: OptimisticLayer = {\n updaters: [],\n updatedAt: now,\n // A server function has no cache policy of its own; preserve the\n // target read's freshness metadata when it exists.\n staleAt: targetEntry?.staleAt ?? now,\n gcAt: targetEntry?.gcAt,\n };\n stack.layers.push(layer);\n snapshot = { key: targetKey, stack, layer };\n snapshots.set(targetKey, snapshot);\n snapshot.layer.updaters.push(updater);\n const nextEntry = applyOptimisticLayer(previousEntry, {\n ...snapshot.layer,\n updaters: [updater],\n });\n storeOptimisticEntry(cacheState, targetKey, stack, nextEntry);\n continue;\n }\n snapshot.layer.updaters.push(updater);\n const nextEntry = applyOptimisticLayer(stack.renderedEntry, {\n ...snapshot.layer,\n updaters: [updater],\n });\n storeOptimisticEntry(cacheState, targetKey, stack, nextEntry);\n }\n\n return Array.from(snapshots.values());\n}\n\n/**\n * @internal Settle a server-function mutation's optimistic snapshots with the\n * API client's semantics: commit on success, rollback on failure with\n * `rollbackOnError`, and mark-stale on failure without it.\n */\nexport function settleServerFnOptimisticUpdates(\n snapshots: OptimisticSnapshot[],\n outcome: \"commit\" | \"rollback\" | \"invalidate\",\n): void {\n if (snapshots.length === 0) return;\n const cacheState = getFarmClientDataCache();\n settleOptimisticUpdates(cacheState, getOptimisticState(cacheState), snapshots, outcome);\n}\n\n/**\n * @internal Resolve a server-function mutation's invalidate targets to cache\n * keys. Route-reference and path targets need an API caller's identity and are\n * skipped; use structured cache keys. Keys are applied through the shared\n * invalidation bus, matching server-declared `invalidates`.\n */\nexport function resolveServerFnInvalidateTargets(invalidate: InvalidateOptions): string[] {\n const targets = Array.isArray(invalidate) ? invalidate : invalidate.targets;\n const keys: string[] = [];\n for (const target of targets) {\n if (typeof target === \"string\" || Array.isArray(target)) {\n if (Array.isArray(target) && typeof target[0] === \"function\") continue;\n keys.push(normalizeFarmClientCacheKey(target as FarmClientCacheKey));\n } else if (target && typeof target === \"object\" && \"key\" in target) {\n keys.push(normalizeFarmClientCacheKey(target.key));\n }\n }\n return keys;\n}\n\nfunction buildCacheKey(\n method: string,\n path: string,\n input: any,\n baseURL: string,\n defaultHeaders?: HeadersInit,\n): string {\n const keyInput =\n input && typeof input === \"object\"\n ? {\n query: input.query,\n body: input.body,\n ...(method === \"QUERY\"\n ? {\n contentType:\n getHeader(input.headers, \"content-type\") ??\n getHeader(defaultHeaders, \"content-type\") ??\n \"application/json\",\n contentEncoding:\n getHeader(input.headers, \"content-encoding\") ??\n getHeader(defaultHeaders, \"content-encoding\"),\n }\n : {}),\n }\n : input;\n const url = resolveFarmAPIRequestURL(path, baseURL);\n return `${method}:${url.origin}${url.pathname}:${stableStringify(keyInput ?? {})}`;\n}\n\nfunction isSameOriginAPIBaseURL(baseURL: string): boolean {\n if (typeof window === \"undefined\") return baseURL.startsWith(\"/\");\n return resolveFarmAPIRequestURL(\"/api\", baseURL).origin === window.location.origin;\n}\n\nfunction stableStringify(value: any): string {\n if (value === null || value === undefined) return String(value);\n if (value instanceof Date) return value.toISOString();\n if (typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableStringify(item)).join(\",\")}]`;\n }\n\n const keys = Object.keys(value).sort();\n const entries = keys.map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`);\n return `{${entries.join(\",\")}}`;\n}\n\nfunction getHeader(headers: unknown, name: string): string | undefined {\n if (!headers || typeof headers !== \"object\") return undefined;\n\n if (typeof Headers !== \"undefined\" && headers instanceof Headers) {\n return headers.get(name) ?? undefined;\n }\n\n const entry = Object.entries(headers).find(([key]) => key.toLowerCase() === name);\n return entry?.[1] === undefined ? undefined : String(entry[1]);\n}\n\nfunction getRequestCacheContext(\n options: { headers?: HeadersInit; credentials?: RequestCredentials },\n input: unknown,\n scope: CacheScope | undefined,\n): string | undefined {\n const credentials = options.credentials ?? \"same-origin\";\n const headers = new Headers(options.headers);\n const requestHeaders =\n input && typeof input === \"object\" && \"headers\" in input ? input.headers : undefined;\n\n if (requestHeaders) {\n new Headers(requestHeaders as HeadersInit).forEach((value, key) => headers.set(key, value));\n }\n\n const carriesBrowserIdentity = credentials !== \"omit\" || [...headers].length > 0;\n if (scope !== \"client\" && !carriesBrowserIdentity) return undefined;\n\n return stableStringify({\n credentials,\n headers: [...headers].sort(([left], [right]) => left.localeCompare(right)),\n });\n}\n\nfunction getGcAt(now: number, gcTime?: number): number | undefined {\n if (gcTime === undefined) return undefined;\n if (!Number.isFinite(gcTime) || gcTime <= 0) return now;\n return now + gcTime;\n}\n\nfunction getValidCacheEntry(\n cacheState: FarmClientDataCache,\n key: string,\n now: number,\n): CacheEntry | undefined {\n const entry = cacheState.get(key);\n if (!entry) return undefined;\n\n if (entry.gcAt !== undefined && now >= entry.gcAt) {\n cacheState.delete(key);\n return undefined;\n }\n\n return entry;\n}\n\nfunction isEntryStale(entry: CacheEntry, now: number): boolean {\n if (entry.invalidatedAt !== undefined) return true;\n return now >= entry.staleAt;\n}\n\nfunction resolveTargetKey(\n routeMeta: WeakMap<AnyRouteRef, RouteMeta>,\n target: InvalidateTarget | AnyRouteRef,\n input?: unknown,\n baseURL = \"http://localhost:3000\",\n defaultHeaders?: HeadersInit,\n localBaseURL?: string,\n): string | null {\n if (!target) return null;\n\n if (typeof target === \"string\") return target;\n\n if (typeof target === \"function\") {\n const meta = routeMeta.get(target);\n if (!meta) return null;\n\n const { method, routePath } = resolveRouteMeta(meta, input);\n return buildCacheKey(\n method,\n routePath,\n input ?? {},\n localBaseURL ?? meta.baseURL,\n defaultHeaders,\n );\n }\n\n if (Array.isArray(target)) {\n const [route, routeInput] = target;\n if (typeof route === \"function\") {\n return resolveTargetKey(routeMeta, route, routeInput, baseURL, defaultHeaders, localBaseURL);\n }\n return normalizeFarmClientCacheKey(target);\n }\n\n if (\"key\" in target) return normalizeFarmClientCacheKey(target.key);\n\n if (\"path\" in target) {\n const method = target.method ?? \"GET\";\n return buildCacheKey(method, target.path, target.input ?? {}, baseURL, defaultHeaders);\n }\n\n return null;\n}\n\nfunction resolveRouteMeta(meta: RouteMeta, input?: any): { routePath: string; method: string } {\n const httpMethods = [\"get\", \"head\", \"query\", \"post\", \"put\", \"delete\", \"patch\", \"options\"];\n const lastPart = meta.path[meta.path.length - 1];\n if (lastPart && httpMethods.includes(lastPart)) {\n return {\n routePath: meta.manifest\n ? meta.manifest.resolve(\n buildProxyRoutePath(meta.path.slice(0, -1)),\n lastPart.toUpperCase(),\n meta.bound ?? {},\n input,\n )\n : buildProxyRoutePath(meta.path.slice(0, -1)),\n method: lastPart.toUpperCase(),\n };\n }\n\n return {\n routePath: meta.manifest\n ? meta.manifest.resolve(buildProxyRoutePath(meta.path), \"GET\", meta.bound ?? {}, input)\n : buildProxyRoutePath(meta.path),\n method: \"GET\",\n };\n}\n\nfunction normalizeError(error: unknown): Error {\n if (error instanceof APIClientError) return error;\n\n const normalized = new APIClientError(\"network_error\", undefined, {\n status: 0,\n message:\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Network request failed\",\n });\n (normalized as Error & { cause?: unknown }).cause = error;\n return normalized;\n}\n\nfunction notifyResponseObserver(\n observer: ClientOptions<any, any>[\"onResponse\"],\n data: unknown,\n error: unknown,\n event: ResponseEvent<any, any>,\n): void {\n notifyClientObserver(observer, [data, error, event], \"API client onResponse\");\n}\n\nfunction isFormData(value: unknown): value is FormData {\n return (\n typeof value === \"object\" &&\n value !== null &&\n ((typeof FormData !== \"undefined\" && value instanceof FormData) ||\n (Object.prototype.toString.call(value) === \"[object FormData]\" &&\n typeof (value as { entries?: unknown }).entries === \"function\"))\n );\n}\n\nfunction createResponseError(response: Response, data: any, cause?: unknown): Error {\n const expected = readEndpointErrorEnvelope(data);\n if (expected) {\n return new APIClientError(expected.code, expected.data, {\n status: response.status,\n message: expected.message,\n response,\n });\n }\n\n const error = new APIClientError(\"http_error\", data, {\n status: response.status,\n message: `HTTP ${response.status}: ${response.statusText}`,\n response,\n });\n if (cause !== undefined) (error as Error & { cause?: unknown }).cause = cause;\n return error;\n}\n\nfunction readEndpointErrorEnvelope(data: unknown): {\n code: string;\n message: string;\n data: unknown;\n} | null {\n if (!data || typeof data !== \"object\") return null;\n const error = (data as { error?: unknown }).error;\n if (!error || typeof error !== \"object\") return null;\n\n const code = (error as { code?: unknown }).code;\n const message = (error as { message?: unknown }).message;\n if (typeof code !== \"string\" || typeof message !== \"string\") return null;\n\n return {\n code,\n message,\n data: (error as { data?: unknown }).data,\n };\n}\n"],"mappings":"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","names":["body","segment","dynamic","route","nextEntry","result","createResponseError"]}
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "0.1.0-beta.95";
2
+ var version = "0.1.0-beta.97";
3
3
 
4
4
  // src/version.ts
5
5
  var FARM_VERSION = version;
@@ -7,4 +7,4 @@ var FARM_VERSION = version;
7
7
  export {
8
8
  FARM_VERSION
9
9
  };
10
- //# sourceMappingURL=chunk-22VG4DFJ.mjs.map
10
+ //# sourceMappingURL=chunk-J3MPQ4MQ.mjs.map