@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
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  _parseServerFnSchema,
3
3
  createServerFn
4
- } from "./chunk-RLGUZ3HS.mjs";
4
+ } from "./chunk-I3OOUWO5.mjs";
5
5
  import {
6
6
  createFarmServerQueryResult
7
- } from "./chunk-SCFX4UTD.mjs";
7
+ } from "./chunk-EHTUKVSW.mjs";
8
8
  import {
9
9
  getServerActionExecutionContext
10
- } from "./chunk-VV24CC42.mjs";
10
+ } from "./chunk-35NPLKQJ.mjs";
11
11
  import {
12
12
  createFarmCacheKey,
13
13
  createRouteDataCacheKey,
14
14
  createRouteDataCacheTag,
15
15
  getFarmDataCache
16
- } from "./chunk-AXVJCMVF.mjs";
16
+ } from "./chunk-2HDOV47R.mjs";
17
17
  import {
18
18
  __name
19
19
  } from "./chunk-CGILA3WO.mjs";
@@ -58,7 +58,8 @@ function createServerQuery(options) {
58
58
  return createFarmServerQueryResult(data, {
59
59
  key: clientKey,
60
60
  staleTime,
61
- updatedAt
61
+ updatedAt,
62
+ ...options.persist === true ? { persist: true } : {}
62
63
  });
63
64
  }, "handler")
64
65
  });
@@ -139,4 +140,4 @@ export {
139
140
  FARM_SERVER_QUERY_SYMBOL,
140
141
  createServerQuery
141
142
  };
142
- //# sourceMappingURL=chunk-HHZAOTQD.mjs.map
143
+ //# sourceMappingURL=chunk-GJ7W6LNK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server-query.ts"],"sourcesContent":["import {\n createFarmCacheKey,\n createRouteDataCacheKey,\n createRouteDataCacheTag,\n getFarmDataCache,\n type RouteDataCacheKey,\n} from \"./cache\";\nimport { getServerActionExecutionContext } from \"./server-action-security\";\nimport {\n createServerFn,\n type AnyServerFnMiddleware,\n type InferServerFnSchemaInput,\n type InferServerFnSchemaOutput,\n type ServerFn,\n type ServerFnContext,\n type ServerFnHandler,\n type ServerFnHandlerContext,\n type ServerFnMiddlewareContext,\n type ServerFnSchema,\n _parseServerFnSchema,\n} from \"./server-fn\";\nimport { createFarmServerQueryResult, type FarmServerQueryResult } from \"./server-query-protocol\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type ServerQueryStaleTime = number | false | `${number}${\"ms\" | \"s\" | \"m\" | \"h\"}`;\n\nexport type ServerQueryKey<TInput, TContext extends object = {}> = (\n context: ServerFnContext<TInput, TContext>,\n) => MaybePromise<RouteDataCacheKey>;\n\nexport type ServerQueryOptions<\n TSchema extends ServerFnSchema | undefined,\n TResult,\n TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n> = {\n input?: TSchema;\n output?: undefined;\n middleware?: TMiddlewares;\n key: ServerQueryKey<\n TSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TSchema> : unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n /** Milliseconds, a duration string such as \"30s\", or false for no expiry. */\n staleTime?: ServerQueryStaleTime;\n /** Allow the configured client cache persistence adapter to store results on the device. */\n persist?: boolean;\n handler: ServerFnHandler<\n TSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TSchema> : unknown,\n TResult,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n};\n\nexport type ServerQueryOutputOptions<\n TInputSchema extends ServerFnSchema | undefined,\n TOutputSchema extends ServerFnSchema,\n TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n> = {\n input?: TInputSchema;\n output: TOutputSchema;\n middleware?: TMiddlewares;\n key: ServerQueryKey<\n TInputSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TInputSchema> : unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n /** Milliseconds, a duration string such as \"30s\", or false for no expiry. */\n staleTime?: ServerQueryStaleTime;\n /** Allow the configured client cache persistence adapter to store results on the device. */\n persist?: boolean;\n handler: ServerFnHandler<\n TInputSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TInputSchema> : unknown,\n unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n};\n\nexport type ServerQuery<TInput, TResult> = ([unknown] extends [TInput]\n ? (input?: TInput) => Promise<TResult>\n : (input: TInput) => Promise<TResult>) & {\n readonly __farmServerQuery: true;\n readonly __farmServerQueryInput?: unknown;\n readonly __farmServerQueryOutput?: unknown;\n};\n\nexport const FARM_SERVER_QUERY_SYMBOL = Symbol.for(\"farm.server-query\");\n\ntype AnyServerQueryOptions = {\n input?: ServerFnSchema;\n output?: ServerFnSchema;\n middleware?: readonly AnyServerFnMiddleware[];\n key: ServerQueryKey<any, any>;\n staleTime?: ServerQueryStaleTime;\n persist?: boolean;\n handler: ServerFnHandler<any, any, any>;\n};\n\nconst requestInflight = new WeakMap<Request, Map<string, Promise<unknown>>>();\nconst detachedInflight = new Map<string, Promise<unknown>>();\n\nexport function createServerQuery<\n TInputSchema extends ServerFnSchema,\n TOutputSchema extends ServerFnSchema,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOutputOptions<TInputSchema, TOutputSchema, TMiddlewares>,\n): ServerQuery<\n InferServerFnSchemaInput<TInputSchema>,\n Awaited<InferServerFnSchemaOutput<TOutputSchema>>\n>;\nexport function createServerQuery<\n TOutputSchema extends ServerFnSchema,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOutputOptions<undefined, TOutputSchema, TMiddlewares>,\n): ServerQuery<unknown, Awaited<InferServerFnSchemaOutput<TOutputSchema>>>;\nexport function createServerQuery<\n TSchema extends ServerFnSchema,\n TResult,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOptions<TSchema, TResult, TMiddlewares>,\n): ServerQuery<InferServerFnSchemaInput<TSchema>, Awaited<TResult>>;\nexport function createServerQuery<\n TResult,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOptions<undefined, TResult, TMiddlewares>,\n): ServerQuery<unknown, Awaited<TResult>>;\nexport function createServerQuery(options: AnyServerQueryOptions): ServerQuery<unknown, unknown> {\n if (!options || typeof options.handler !== \"function\") {\n throw new TypeError(\"createServerQuery requires a handler function\");\n }\n if (typeof options.key !== \"function\") {\n throw new TypeError(\"createServerQuery requires a key function\");\n }\n\n const staleTime = normalizeServerQueryStaleTime(options.staleTime);\n const execute = (\n createServerFn as (options: any) => ServerFn<unknown, FarmServerQueryResult<any>>\n )({\n input: options.input,\n middleware: options.middleware,\n handler: async (context: ServerFnHandlerContext<any, any>) => {\n const routeKey = await options.key(context);\n assertServerQueryKey(routeKey);\n\n const clientKey = createRouteDataCacheKey(routeKey);\n const cacheKey = createFarmCacheKey([\"route-data\", routeKey]);\n const producer = async () => {\n const value = await options.handler(context);\n return _parseServerFnSchema(options.output, value, \"output\", \"createServerQuery\");\n };\n\n let data: unknown;\n let updatedAt: number;\n\n if (staleTime === 0) {\n data = await dedupeServerQueryRequest(cacheKey, context.request, producer);\n updatedAt = Date.now();\n } else {\n const cache = getFarmDataCache();\n data = await cache.getOrSet(cacheKey, producer, {\n tags: [createRouteDataCacheTag(routeKey)],\n revalidate: staleTime === false ? false : staleTime / 1000,\n });\n updatedAt =\n (await cache.getEntryAsync(cacheKey, { allowStale: true }))?.createdAt ?? Date.now();\n }\n\n return createFarmServerQueryResult(data, {\n key: clientKey,\n staleTime,\n updatedAt,\n ...(options.persist === true ? { persist: true } : {}),\n });\n },\n });\n\n const query = async (input?: unknown) => {\n const result = await execute(input);\n return getServerActionExecutionContext() ? result : result.data;\n };\n\n Object.defineProperties(query, {\n [FARM_SERVER_QUERY_SYMBOL]: {\n value: true,\n enumerable: false,\n },\n __farmServerQuery: {\n value: true,\n enumerable: false,\n },\n __farmServerQueryInput: {\n value: options.input,\n enumerable: false,\n },\n __farmServerQueryOutput: {\n value: options.output,\n enumerable: false,\n },\n });\n\n return query as ServerQuery<unknown, unknown>;\n}\n\nasync function dedupeServerQueryRequest<TData>(\n key: string,\n request: Request | undefined,\n producer: () => Promise<TData>,\n): Promise<TData> {\n let inflight: Map<string, Promise<unknown>>;\n if (request) {\n inflight = requestInflight.get(request) ?? new Map();\n requestInflight.set(request, inflight);\n } else {\n inflight = detachedInflight;\n }\n\n const existing = inflight.get(key) as Promise<TData> | undefined;\n if (existing) return existing;\n\n const promise = Promise.resolve().then(producer);\n inflight.set(key, promise);\n\n try {\n return await promise;\n } finally {\n inflight.delete(key);\n }\n}\n\nfunction normalizeServerQueryStaleTime(value: ServerQueryStaleTime | undefined): number | false {\n if (value === false) return false;\n if (value === undefined) return 0;\n\n if (typeof value === \"number\") {\n if (!Number.isFinite(value) || value < 0) {\n throw new TypeError(\"createServerQuery staleTime must be a non-negative duration\");\n }\n return value;\n }\n\n const match = value.match(/^(\\d+(?:\\.\\d+)?)(ms|s|m|h)$/);\n if (!match) {\n throw new TypeError('createServerQuery staleTime must look like \"250ms\", \"30s\", \"5m\", or \"1h\"');\n }\n\n const amount = Number(match[1]);\n const unit = match[2];\n const multiplier = unit === \"ms\" ? 1 : unit === \"s\" ? 1000 : unit === \"m\" ? 60_000 : 3_600_000;\n return amount * multiplier;\n}\n\nfunction assertServerQueryKey(key: unknown): asserts key is RouteDataCacheKey {\n if (typeof key === \"string\") {\n if (key.trim().length > 0) return;\n } else if (Array.isArray(key)) {\n return;\n }\n\n throw new TypeError(\"createServerQuery key must return a non-empty string or an array\");\n}\n"],"mappings":"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","names":[]}
@@ -2,10 +2,10 @@ import {
2
2
  ServerFnFailure,
3
3
  getServerActionExecutionContext,
4
4
  getServerActionSignal
5
- } from "./chunk-VV24CC42.mjs";
5
+ } from "./chunk-35NPLKQJ.mjs";
6
6
  import {
7
7
  applyFarmCacheInvalidationTargets
8
- } from "./chunk-AXVJCMVF.mjs";
8
+ } from "./chunk-2HDOV47R.mjs";
9
9
  import {
10
10
  _resolveCurrentRequest
11
11
  } from "./chunk-LM2YNO4U.mjs";
@@ -300,4 +300,4 @@ export {
300
300
  createServerFn,
301
301
  _parseServerFnSchema
302
302
  };
303
- //# sourceMappingURL=chunk-RLGUZ3HS.mjs.map
303
+ //# sourceMappingURL=chunk-I3OOUWO5.mjs.map
@@ -1,8 +1,11 @@
1
+ import {
2
+ notifyClientObserver
3
+ } from "./chunk-DU3PKDVQ.mjs";
1
4
  import {
2
5
  FarmClientDataCache,
3
6
  getFarmClientDataCache,
4
7
  normalizeFarmClientCacheKey
5
- } from "./chunk-DLBUAJTK.mjs";
8
+ } from "./chunk-WMJGA32P.mjs";
6
9
  import {
7
10
  resolveAPIRequestRuntime
8
11
  } from "./chunk-YECMFULZ.mjs";
@@ -12,7 +15,7 @@ import {
12
15
  matchAPIRoute,
13
16
  parseDynamicSegment,
14
17
  readJSONStream
15
- } from "./chunk-XTLLHCWU.mjs";
18
+ } from "./chunk-V4VRLVLW.mjs";
16
19
  import {
17
20
  getFarmAPIBaseURL,
18
21
  resolveFarmAPIRequestURL
@@ -21,7 +24,7 @@ import {
21
24
  FARM_CACHE_INVALIDATION_HEADER,
22
25
  applyFarmCacheInvalidations,
23
26
  decodeFarmCacheInvalidations
24
- } from "./chunk-RBRLLZL5.mjs";
27
+ } from "./chunk-34IAPZBG.mjs";
25
28
  import {
26
29
  _resolveCurrentRequest
27
30
  } from "./chunk-LM2YNO4U.mjs";
@@ -125,33 +128,6 @@ function createClientCancellation(signal, timeoutMs = 0, parent) {
125
128
  }
126
129
  __name(createClientCancellation, "createClientCancellation");
127
130
 
128
- // src/client-observers.ts
129
- function notifyClientObserver(observer, args, label = "Client lifecycle") {
130
- if (!observer) return;
131
- const report = /* @__PURE__ */ __name((error) => {
132
- const reportError = globalThis.reportError;
133
- if (typeof reportError === "function") {
134
- try {
135
- reportError.call(globalThis, error);
136
- return;
137
- } catch {
138
- }
139
- }
140
- try {
141
- console.error(`[Farm.js] ${label} callback failed:`, error);
142
- } catch {
143
- }
144
- }, "report");
145
- try {
146
- const result = observer(...args);
147
- if (result && typeof result.then === "function")
148
- void Promise.resolve(result).catch(report);
149
- } catch (error) {
150
- report(error);
151
- }
152
- }
153
- __name(notifyClientObserver, "notifyClientObserver");
154
-
155
131
  // src/integration-client.ts
156
132
  var _IntegrationClientError = class _IntegrationClientError extends Error {
157
133
  constructor(message, response, data) {
@@ -633,7 +609,8 @@ async function executeServerOperation(operation, input, options, requestOptions,
633
609
  serverRequestOptions?.baseURL ?? options.baseURL,
634
610
  request
635
611
  );
636
- const url = new URL(operation.path, baseURL);
612
+ const origin = resolveServerBaseURL(void 0, request);
613
+ const url = new URL(operation.path, new URL(baseURL, origin));
637
614
  appendQuery(url, input.query);
638
615
  const headers = new Headers();
639
616
  appendHeaders(
@@ -686,7 +663,9 @@ async function executeServerOperation(operation, input, options, requestOptions,
686
663
  }
687
664
  appendIntegrationClientDataHeader(headers, data);
688
665
  const body = createOperationBody(operation, input.body, headers);
689
- const response = await (options.fetch ?? fetch)(url.toString(), {
666
+ const httpURL = resolveFarmAPIRequestURL(operation.path, baseURL, origin);
667
+ appendQuery(httpURL, input.query);
668
+ const response = await (options.fetch ?? fetch)(httpURL.toString(), {
690
669
  method: operation.method,
691
670
  headers,
692
671
  body,
@@ -1287,69 +1266,6 @@ function createAPIClientRuntime(options = {}, transport) {
1287
1266
  let scopedRequestState;
1288
1267
  const routeMeta = transport?.routeMeta ?? /* @__PURE__ */ new WeakMap();
1289
1268
  let requestCounter = 0;
1290
- const applyOptimisticLayer = /* @__PURE__ */ __name((entry, layer) => {
1291
- let data = entry?.data;
1292
- for (const updater of layer.updaters) data = updater(data);
1293
- return {
1294
- data,
1295
- updatedAt: layer.updatedAt,
1296
- staleAt: entry?.staleAt ?? layer.staleAt,
1297
- gcAt: entry?.gcAt ?? layer.gcAt,
1298
- invalidatedAt: entry?.invalidatedAt
1299
- };
1300
- }, "applyOptimisticLayer");
1301
- const storeOptimisticEntry = /* @__PURE__ */ __name((cacheState, key, stack, entry) => {
1302
- if (!entry) {
1303
- cacheState.delete(key);
1304
- stack.renderedEntry = void 0;
1305
- return;
1306
- }
1307
- cacheState.set(key, entry);
1308
- if (stack.invalidatedAt !== void 0) {
1309
- cacheState.invalidate(key, stack.invalidatedAt);
1310
- }
1311
- stack.renderedEntry = cacheState.get(key);
1312
- }, "storeOptimisticEntry");
1313
- const reconcileOptimisticInvalidation = /* @__PURE__ */ __name((cacheState, key, stack) => {
1314
- const current = cacheState.get(key);
1315
- const rendered = stack.renderedEntry;
1316
- if (current === rendered) return true;
1317
- if (!current || !rendered || current.data !== rendered.data || current.updatedAt !== rendered.updatedAt || current.gcAt !== rendered.gcAt || current.status !== rendered.status || current.error !== rendered.error || current.fetching !== rendered.fetching || current.staleAt !== 0 || current.invalidatedAt === void 0) {
1318
- return false;
1319
- }
1320
- stack.invalidatedAt = current.invalidatedAt;
1321
- stack.renderedEntry = current;
1322
- return true;
1323
- }, "reconcileOptimisticInvalidation");
1324
- const renderOptimisticStack = /* @__PURE__ */ __name((cacheState, key, stack) => {
1325
- let entry = stack.entry ? { ...stack.entry } : void 0;
1326
- for (const layer of stack.layers) entry = applyOptimisticLayer(entry, layer);
1327
- storeOptimisticEntry(cacheState, key, stack, entry);
1328
- }, "renderOptimisticStack");
1329
- const settleOptimisticUpdates = /* @__PURE__ */ __name((cacheState, optimisticState, snapshots, outcome) => {
1330
- const settledKeys = [];
1331
- for (const snapshot of snapshots) {
1332
- const stack = optimisticState.get(snapshot.key);
1333
- if (stack !== snapshot.stack) continue;
1334
- if (!reconcileOptimisticInvalidation(cacheState, snapshot.key, stack)) {
1335
- optimisticState.delete(snapshot.key);
1336
- continue;
1337
- }
1338
- if (outcome === "rollback") {
1339
- stack.layers = stack.layers.filter((layer) => layer !== snapshot.layer);
1340
- } else {
1341
- snapshot.layer.committed = true;
1342
- if (outcome === "invalidate") stack.invalidatedAt = Date.now();
1343
- }
1344
- while (stack.layers[0]?.committed) {
1345
- stack.entry = applyOptimisticLayer(stack.entry, stack.layers.shift());
1346
- }
1347
- renderOptimisticStack(cacheState, snapshot.key, stack);
1348
- if (stack.layers.length === 0) optimisticState.delete(snapshot.key);
1349
- settledKeys.push(snapshot.key);
1350
- }
1351
- return settledKeys;
1352
- }, "settleOptimisticUpdates");
1353
1269
  const fetchClient = /* @__PURE__ */ __name(async (path, requestOptions, defaultHeaders, cancellation) => {
1354
1270
  const url = resolveFarmAPIRequestURL(path, baseURL);
1355
1271
  const method = String(requestOptions.method || "GET").toUpperCase();
@@ -1582,6 +1498,9 @@ function createAPIClientRuntime(options = {}, transport) {
1582
1498
  const executeNetwork = /* @__PURE__ */ __name(async (opts) => {
1583
1499
  const release = cancellation.hold();
1584
1500
  let unsubscribeInvalidation;
1501
+ let readOwners;
1502
+ let readOwner;
1503
+ const resolvedCacheKey = cacheState.resolveKey(cacheKey);
1585
1504
  try {
1586
1505
  const dedupeMs = cacheOptions?.dedupeMs ?? 0;
1587
1506
  const inflight = inflightState.get(cacheKey);
@@ -1605,6 +1524,9 @@ function createAPIClientRuntime(options = {}, transport) {
1605
1524
  }
1606
1525
  let invalidatedDuringRequest = false;
1607
1526
  if (isCacheEnabled) {
1527
+ readOwners = getCacheReadOwners(cacheState);
1528
+ readOwner = {};
1529
+ readOwners.set(resolvedCacheKey, readOwner);
1608
1530
  unsubscribeInvalidation = cacheState.subscribe(cacheKey, (event) => {
1609
1531
  if (event === "invalidate") invalidatedDuringRequest = true;
1610
1532
  });
@@ -1712,15 +1634,27 @@ function createAPIClientRuntime(options = {}, transport) {
1712
1634
  inflightState.set(cacheKey, inflightEntry);
1713
1635
  try {
1714
1636
  const result2 = await promise;
1715
- if (inflightState.get(cacheKey) === inflightEntry && !invalidatedDuringRequest && !result2.error && isCacheEnabled && !isFarmAPIStream(result2.data)) {
1637
+ if (inflightState.get(cacheKey) === inflightEntry && readOwners?.get(resolvedCacheKey) === readOwner && !invalidatedDuringRequest && !result2.error && isCacheEnabled && !isFarmAPIStream(result2.data)) {
1716
1638
  const updatedAt = Date.now();
1717
- cacheState.set(cacheKey, {
1639
+ const cached = {
1718
1640
  data: result2.data,
1719
1641
  updatedAt,
1720
1642
  staleAt: updatedAt + staleTime,
1721
1643
  gcAt: getGcAt(updatedAt, cacheOptions?.gcTime),
1722
- invalidatedAt: void 0
1723
- });
1644
+ invalidatedAt: void 0,
1645
+ persist: cacheOptions?.persist === true ? true : void 0,
1646
+ [API_CACHE_REFETCH]: createCacheRefetch(
1647
+ request,
1648
+ path,
1649
+ method,
1650
+ input,
1651
+ cacheKey,
1652
+ cacheOptions,
1653
+ clientOptions,
1654
+ options.onError
1655
+ )
1656
+ };
1657
+ cacheState.set(cacheKey, cached);
1724
1658
  }
1725
1659
  if (result2.error) {
1726
1660
  emitStatus("error", { error: result2.error, isBackground: opts?.isBackground });
@@ -1748,6 +1682,9 @@ function createAPIClientRuntime(options = {}, transport) {
1748
1682
  }
1749
1683
  }
1750
1684
  } finally {
1685
+ if (readOwner && readOwners?.get(resolvedCacheKey) === readOwner) {
1686
+ readOwners.delete(resolvedCacheKey);
1687
+ }
1751
1688
  unsubscribeInvalidation?.();
1752
1689
  release();
1753
1690
  }
@@ -1758,6 +1695,7 @@ function createAPIClientRuntime(options = {}, transport) {
1758
1695
  targets: clientOptions.invalidate.targets,
1759
1696
  refetch: clientOptions.invalidate.refetch ?? false
1760
1697
  };
1698
+ const refetches = /* @__PURE__ */ new Set();
1761
1699
  for (const target of invalidateOptions.targets) {
1762
1700
  const targetKey = resolveTargetKey(
1763
1701
  routeMeta,
@@ -1769,20 +1707,22 @@ function createAPIClientRuntime(options = {}, transport) {
1769
1707
  );
1770
1708
  if (!targetKey) continue;
1771
1709
  const existing = cacheState.get(targetKey);
1710
+ const invalidatedAt = Date.now();
1711
+ cacheState.invalidate(targetKey, invalidatedAt);
1772
1712
  if (existing) {
1773
- const invalidatedAt = Date.now();
1774
1713
  const stack = optimisticState.get(targetKey);
1775
- cacheState.invalidate(targetKey, invalidatedAt);
1776
1714
  if (stack?.renderedEntry === existing) {
1777
1715
  stack.invalidatedAt = invalidatedAt;
1778
1716
  stack.renderedEntry = cacheState.get(targetKey);
1779
1717
  }
1780
1718
  }
1781
1719
  emitStatus("invalidated", { key: targetKey });
1782
- if (invalidateOptions.refetch && existing && targetKey === cacheKey) {
1783
- void executeNetwork({ isBackground: true, callCallbacks: false });
1720
+ const refetch = existing?.[API_CACHE_REFETCH];
1721
+ if (invalidateOptions.refetch && refetch) {
1722
+ refetches.add(refetch);
1784
1723
  }
1785
1724
  }
1725
+ for (const refetch of refetches) refetch();
1786
1726
  }, "invalidateTargets");
1787
1727
  const optimisticSnapshots = requestContextError ? [] : applyOptimisticUpdates();
1788
1728
  if (isCacheEnabled && !requestContextError && !cancellation.signal?.aborted) {
@@ -2016,7 +1956,31 @@ function createServerAPIClient(endpoints, options = {}) {
2016
1956
  return endpoints;
2017
1957
  }
2018
1958
  __name(createServerAPIClient, "createServerAPIClient");
1959
+ var API_CACHE_REFETCH = /* @__PURE__ */ Symbol.for("farm.api.cache-refetch");
1960
+ function createCacheRefetch(request, path, method, input, key, cache, options, onError) {
1961
+ const readOptions = {
1962
+ cache: { ...cache, key, policy: "network-only", dedupeMs: 0 },
1963
+ retry: options?.retry,
1964
+ timeoutMs: options?.timeoutMs
1965
+ };
1966
+ return () => {
1967
+ void request(path, method, input, readOptions).catch((error) => {
1968
+ notifyClientObserver(onError, [normalizeError(error)]);
1969
+ });
1970
+ };
1971
+ }
1972
+ __name(createCacheRefetch, "createCacheRefetch");
2019
1973
  var optimisticStates = /* @__PURE__ */ new WeakMap();
1974
+ var cacheReadOwners = /* @__PURE__ */ new WeakMap();
1975
+ function getCacheReadOwners(cache) {
1976
+ let owners = cacheReadOwners.get(cache);
1977
+ if (!owners) {
1978
+ owners = /* @__PURE__ */ new Map();
1979
+ cacheReadOwners.set(cache, owners);
1980
+ }
1981
+ return owners;
1982
+ }
1983
+ __name(getCacheReadOwners, "getCacheReadOwners");
2020
1984
  function getOptimisticState(cache) {
2021
1985
  let state = optimisticStates.get(cache);
2022
1986
  if (!state) {
@@ -2026,6 +1990,151 @@ function getOptimisticState(cache) {
2026
1990
  return state;
2027
1991
  }
2028
1992
  __name(getOptimisticState, "getOptimisticState");
1993
+ function applyOptimisticLayer(entry, layer) {
1994
+ let data = entry?.data;
1995
+ for (const updater of layer.updaters) data = updater(data);
1996
+ return {
1997
+ data,
1998
+ updatedAt: layer.updatedAt,
1999
+ staleAt: entry?.staleAt ?? layer.staleAt,
2000
+ gcAt: entry?.gcAt ?? layer.gcAt,
2001
+ invalidatedAt: entry?.invalidatedAt,
2002
+ [API_CACHE_REFETCH]: entry?.[API_CACHE_REFETCH]
2003
+ };
2004
+ }
2005
+ __name(applyOptimisticLayer, "applyOptimisticLayer");
2006
+ function storeOptimisticEntry(cacheState, key, stack, entry) {
2007
+ if (!entry) {
2008
+ cacheState.delete(key);
2009
+ stack.renderedEntry = void 0;
2010
+ return;
2011
+ }
2012
+ cacheState.set(key, entry);
2013
+ if (stack.invalidatedAt !== void 0) {
2014
+ cacheState.invalidate(key, stack.invalidatedAt);
2015
+ }
2016
+ stack.renderedEntry = cacheState.get(key);
2017
+ }
2018
+ __name(storeOptimisticEntry, "storeOptimisticEntry");
2019
+ function reconcileOptimisticInvalidation(cacheState, key, stack) {
2020
+ const current = cacheState.get(key);
2021
+ const rendered = stack.renderedEntry;
2022
+ if (current === rendered) return true;
2023
+ if (!current || !rendered || current.data !== rendered.data || current.updatedAt !== rendered.updatedAt || current.gcAt !== rendered.gcAt || current.status !== rendered.status || current.error !== rendered.error || current.fetching !== rendered.fetching || current.staleAt !== 0 || current.invalidatedAt === void 0) {
2024
+ return false;
2025
+ }
2026
+ stack.invalidatedAt = current.invalidatedAt;
2027
+ stack.renderedEntry = current;
2028
+ return true;
2029
+ }
2030
+ __name(reconcileOptimisticInvalidation, "reconcileOptimisticInvalidation");
2031
+ function renderOptimisticStack(cacheState, key, stack) {
2032
+ let entry = stack.entry ? { ...stack.entry } : void 0;
2033
+ for (const layer of stack.layers) entry = applyOptimisticLayer(entry, layer);
2034
+ storeOptimisticEntry(cacheState, key, stack, entry);
2035
+ }
2036
+ __name(renderOptimisticStack, "renderOptimisticStack");
2037
+ function settleOptimisticUpdates(cacheState, optimisticState, snapshots, outcome) {
2038
+ const settledKeys = [];
2039
+ for (const snapshot of snapshots) {
2040
+ const stack = optimisticState.get(snapshot.key);
2041
+ if (stack !== snapshot.stack) continue;
2042
+ if (!reconcileOptimisticInvalidation(cacheState, snapshot.key, stack)) {
2043
+ optimisticState.delete(snapshot.key);
2044
+ continue;
2045
+ }
2046
+ if (outcome === "rollback") {
2047
+ stack.layers = stack.layers.filter((layer) => layer !== snapshot.layer);
2048
+ } else {
2049
+ snapshot.layer.committed = true;
2050
+ if (outcome === "invalidate") stack.invalidatedAt = Date.now();
2051
+ }
2052
+ while (stack.layers[0]?.committed) {
2053
+ stack.entry = applyOptimisticLayer(stack.entry, stack.layers.shift());
2054
+ }
2055
+ renderOptimisticStack(cacheState, snapshot.key, stack);
2056
+ if (stack.layers.length === 0) optimisticState.delete(snapshot.key);
2057
+ settledKeys.push(snapshot.key);
2058
+ }
2059
+ return settledKeys;
2060
+ }
2061
+ __name(settleOptimisticUpdates, "settleOptimisticUpdates");
2062
+ function applyServerFnOptimisticUpdates(updates, now = Date.now()) {
2063
+ const cacheState = getFarmClientDataCache();
2064
+ const optimisticState = getOptimisticState(cacheState);
2065
+ const snapshots = /* @__PURE__ */ new Map();
2066
+ for (const update of updates) {
2067
+ if (update.length !== 2) continue;
2068
+ const [target, updater] = update;
2069
+ if (typeof updater !== "function") continue;
2070
+ const targetKey = typeof target === "string" || Array.isArray(target) ? normalizeFarmClientCacheKey(target) : null;
2071
+ if (!targetKey) continue;
2072
+ const targetEntry = getValidCacheEntry(cacheState, targetKey, now);
2073
+ const currentEntry = cacheState.get(targetKey);
2074
+ let stack = optimisticState.get(targetKey);
2075
+ if (stack && !reconcileOptimisticInvalidation(cacheState, targetKey, stack)) {
2076
+ stack = void 0;
2077
+ }
2078
+ if (!stack) {
2079
+ stack = {
2080
+ entry: targetEntry ? { ...targetEntry } : void 0,
2081
+ layers: [],
2082
+ renderedEntry: currentEntry
2083
+ };
2084
+ optimisticState.set(targetKey, stack);
2085
+ }
2086
+ let snapshot = snapshots.get(targetKey);
2087
+ if (!snapshot) {
2088
+ const previousEntry = stack.layers.length === 0 ? stack.entry : stack.renderedEntry;
2089
+ const layer = {
2090
+ updaters: [],
2091
+ updatedAt: now,
2092
+ // A server function has no cache policy of its own; preserve the
2093
+ // target read's freshness metadata when it exists.
2094
+ staleAt: targetEntry?.staleAt ?? now,
2095
+ gcAt: targetEntry?.gcAt
2096
+ };
2097
+ stack.layers.push(layer);
2098
+ snapshot = { key: targetKey, stack, layer };
2099
+ snapshots.set(targetKey, snapshot);
2100
+ snapshot.layer.updaters.push(updater);
2101
+ const nextEntry2 = applyOptimisticLayer(previousEntry, {
2102
+ ...snapshot.layer,
2103
+ updaters: [updater]
2104
+ });
2105
+ storeOptimisticEntry(cacheState, targetKey, stack, nextEntry2);
2106
+ continue;
2107
+ }
2108
+ snapshot.layer.updaters.push(updater);
2109
+ const nextEntry = applyOptimisticLayer(stack.renderedEntry, {
2110
+ ...snapshot.layer,
2111
+ updaters: [updater]
2112
+ });
2113
+ storeOptimisticEntry(cacheState, targetKey, stack, nextEntry);
2114
+ }
2115
+ return Array.from(snapshots.values());
2116
+ }
2117
+ __name(applyServerFnOptimisticUpdates, "applyServerFnOptimisticUpdates");
2118
+ function settleServerFnOptimisticUpdates(snapshots, outcome) {
2119
+ if (snapshots.length === 0) return;
2120
+ const cacheState = getFarmClientDataCache();
2121
+ settleOptimisticUpdates(cacheState, getOptimisticState(cacheState), snapshots, outcome);
2122
+ }
2123
+ __name(settleServerFnOptimisticUpdates, "settleServerFnOptimisticUpdates");
2124
+ function resolveServerFnInvalidateTargets(invalidate) {
2125
+ const targets = Array.isArray(invalidate) ? invalidate : invalidate.targets;
2126
+ const keys = [];
2127
+ for (const target of targets) {
2128
+ if (typeof target === "string" || Array.isArray(target)) {
2129
+ if (Array.isArray(target) && typeof target[0] === "function") continue;
2130
+ keys.push(normalizeFarmClientCacheKey(target));
2131
+ } else if (target && typeof target === "object" && "key" in target) {
2132
+ keys.push(normalizeFarmClientCacheKey(target.key));
2133
+ }
2134
+ }
2135
+ return keys;
2136
+ }
2137
+ __name(resolveServerFnInvalidateTargets, "resolveServerFnInvalidateTargets");
2029
2138
  function buildCacheKey(method, path, input, baseURL, defaultHeaders) {
2030
2139
  const keyInput = input && typeof input === "object" ? {
2031
2140
  query: input.query,
@@ -2220,6 +2329,9 @@ export {
2220
2329
  createAPIClient,
2221
2330
  isAPIRouteRef,
2222
2331
  getAPIRouteRefMetadata,
2223
- createServerAPIClient
2332
+ createServerAPIClient,
2333
+ applyServerFnOptimisticUpdates,
2334
+ settleServerFnOptimisticUpdates,
2335
+ resolveServerFnInvalidateTargets
2224
2336
  };
2225
- //# sourceMappingURL=chunk-75CGAL6E.mjs.map
2337
+ //# sourceMappingURL=chunk-IZBX2TEU.mjs.map