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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/dist/after.cjs +227 -0
  2. package/dist/after.cjs.map +1 -0
  3. package/dist/after.d.mts +25 -0
  4. package/dist/after.d.ts +25 -0
  5. package/dist/after.mjs +14 -0
  6. package/dist/after.mjs.map +1 -0
  7. package/dist/agent-runtime.cjs +2379 -0
  8. package/dist/agent-runtime.cjs.map +1 -0
  9. package/dist/agent-runtime.d.mts +94 -0
  10. package/dist/agent-runtime.d.ts +94 -0
  11. package/dist/agent-runtime.mjs +479 -0
  12. package/dist/agent-runtime.mjs.map +1 -0
  13. package/dist/api/route-manager.d.mts +66 -0
  14. package/dist/api/route-manager.d.ts +66 -0
  15. package/dist/api/runtime.d.mts +3 -0
  16. package/dist/api/runtime.d.ts +3 -0
  17. package/dist/api.cjs +4100 -0
  18. package/dist/api.cjs.map +1 -0
  19. package/dist/api.d.mts +48 -0
  20. package/dist/api.d.ts +48 -0
  21. package/dist/api.mjs +93 -0
  22. package/dist/api.mjs.map +1 -0
  23. package/dist/app-BWtqQu3R.d.mts +302 -0
  24. package/dist/app-markdown.cjs +244 -0
  25. package/dist/app-markdown.cjs.map +1 -0
  26. package/dist/app-markdown.d.mts +22 -0
  27. package/dist/app-markdown.d.ts +22 -0
  28. package/dist/app-markdown.mjs +27 -0
  29. package/dist/app-markdown.mjs.map +1 -0
  30. package/dist/app-xltejvLY.d.ts +302 -0
  31. package/dist/cache.cjs +945 -0
  32. package/dist/cache.cjs.map +1 -0
  33. package/dist/cache.d.mts +192 -0
  34. package/dist/cache.d.ts +192 -0
  35. package/dist/cache.mjs +46 -0
  36. package/dist/cache.mjs.map +1 -0
  37. package/dist/chunk-2ED5Q2GH.mjs +422 -0
  38. package/dist/chunk-2ED5Q2GH.mjs.map +1 -0
  39. package/dist/chunk-32W4QEJP.mjs +158 -0
  40. package/dist/chunk-32W4QEJP.mjs.map +1 -0
  41. package/dist/chunk-3XNTL3FQ.mjs +452 -0
  42. package/dist/chunk-3XNTL3FQ.mjs.map +1 -0
  43. package/dist/chunk-44ZCFSKE.mjs +84 -0
  44. package/dist/chunk-44ZCFSKE.mjs.map +1 -0
  45. package/dist/chunk-4MGVSBRP.mjs +7787 -0
  46. package/dist/chunk-4MGVSBRP.mjs.map +1 -0
  47. package/dist/chunk-4S3ORGFA.mjs +44 -0
  48. package/dist/chunk-4S3ORGFA.mjs.map +1 -0
  49. package/dist/chunk-5BY76U2M.mjs +1 -0
  50. package/dist/chunk-5BY76U2M.mjs.map +1 -0
  51. package/dist/chunk-5ZGPRGWV.mjs +136 -0
  52. package/dist/chunk-5ZGPRGWV.mjs.map +1 -0
  53. package/dist/chunk-65A7QIKI.mjs +142 -0
  54. package/dist/chunk-65A7QIKI.mjs.map +1 -0
  55. package/dist/chunk-74YTBPTY.mjs +450 -0
  56. package/dist/chunk-74YTBPTY.mjs.map +1 -0
  57. package/dist/chunk-7FBJLMQH.mjs +338 -0
  58. package/dist/chunk-7FBJLMQH.mjs.map +1 -0
  59. package/dist/chunk-7HO6AEOP.mjs +74 -0
  60. package/dist/chunk-7HO6AEOP.mjs.map +1 -0
  61. package/dist/chunk-7MABZJIM.mjs +29 -0
  62. package/dist/chunk-7MABZJIM.mjs.map +1 -0
  63. package/dist/chunk-7N62DNSO.mjs +41 -0
  64. package/dist/chunk-7N62DNSO.mjs.map +1 -0
  65. package/dist/chunk-7ZY5AIJO.mjs +161 -0
  66. package/dist/chunk-7ZY5AIJO.mjs.map +1 -0
  67. package/dist/chunk-ALCLXXTY.mjs +187 -0
  68. package/dist/chunk-ALCLXXTY.mjs.map +1 -0
  69. package/dist/chunk-AZ7YUVNR.mjs +65 -0
  70. package/dist/chunk-AZ7YUVNR.mjs.map +1 -0
  71. package/dist/chunk-B232I2GP.mjs +163 -0
  72. package/dist/chunk-B232I2GP.mjs.map +1 -0
  73. package/dist/chunk-B4W3BNTL.mjs +483 -0
  74. package/dist/chunk-B4W3BNTL.mjs.map +1 -0
  75. package/dist/chunk-C2ROET2V.mjs +718 -0
  76. package/dist/chunk-C2ROET2V.mjs.map +1 -0
  77. package/dist/chunk-CGILA3WO.mjs +14 -0
  78. package/dist/chunk-CGILA3WO.mjs.map +1 -0
  79. package/dist/chunk-CGIXMLSY.mjs +184 -0
  80. package/dist/chunk-CGIXMLSY.mjs.map +1 -0
  81. package/dist/chunk-DJSGLHCN.mjs +597 -0
  82. package/dist/chunk-DJSGLHCN.mjs.map +1 -0
  83. package/dist/chunk-E2MPIBRE.mjs +149 -0
  84. package/dist/chunk-E2MPIBRE.mjs.map +1 -0
  85. package/dist/chunk-E6EPN5BT.mjs +203 -0
  86. package/dist/chunk-E6EPN5BT.mjs.map +1 -0
  87. package/dist/chunk-EI43C4RA.mjs +6277 -0
  88. package/dist/chunk-EI43C4RA.mjs.map +1 -0
  89. package/dist/chunk-EJ7T4TPB.mjs +622 -0
  90. package/dist/chunk-EJ7T4TPB.mjs.map +1 -0
  91. package/dist/chunk-FQYDHKKU.mjs +128 -0
  92. package/dist/chunk-FQYDHKKU.mjs.map +1 -0
  93. package/dist/chunk-FRPWCMMG.mjs +299 -0
  94. package/dist/chunk-FRPWCMMG.mjs.map +1 -0
  95. package/dist/chunk-GN72QAIH.mjs +146 -0
  96. package/dist/chunk-GN72QAIH.mjs.map +1 -0
  97. package/dist/chunk-GQVGIUSN.mjs +149 -0
  98. package/dist/chunk-GQVGIUSN.mjs.map +1 -0
  99. package/dist/chunk-GS6K5OCM.mjs +407 -0
  100. package/dist/chunk-GS6K5OCM.mjs.map +1 -0
  101. package/dist/chunk-GXASWWJU.mjs +364 -0
  102. package/dist/chunk-GXASWWJU.mjs.map +1 -0
  103. package/dist/chunk-GY2STC2S.mjs +180 -0
  104. package/dist/chunk-GY2STC2S.mjs.map +1 -0
  105. package/dist/chunk-H2FA2SBS.mjs +51 -0
  106. package/dist/chunk-H2FA2SBS.mjs.map +1 -0
  107. package/dist/chunk-I4CUBGVF.mjs +93 -0
  108. package/dist/chunk-I4CUBGVF.mjs.map +1 -0
  109. package/dist/chunk-ITN462YM.mjs +98 -0
  110. package/dist/chunk-ITN462YM.mjs.map +1 -0
  111. package/dist/chunk-J23HNLFY.mjs +72 -0
  112. package/dist/chunk-J23HNLFY.mjs.map +1 -0
  113. package/dist/chunk-J4FNJ5IU.mjs +179 -0
  114. package/dist/chunk-J4FNJ5IU.mjs.map +1 -0
  115. package/dist/chunk-J5YWQVI5.mjs +211 -0
  116. package/dist/chunk-J5YWQVI5.mjs.map +1 -0
  117. package/dist/chunk-JDEOUK5V.mjs +427 -0
  118. package/dist/chunk-JDEOUK5V.mjs.map +1 -0
  119. package/dist/chunk-JK25YEN6.mjs +219 -0
  120. package/dist/chunk-JK25YEN6.mjs.map +1 -0
  121. package/dist/chunk-K4667E2Q.mjs +1916 -0
  122. package/dist/chunk-K4667E2Q.mjs.map +1 -0
  123. package/dist/chunk-LGHEOHBU.mjs +218 -0
  124. package/dist/chunk-LGHEOHBU.mjs.map +1 -0
  125. package/dist/chunk-LM2YNO4U.mjs +24 -0
  126. package/dist/chunk-LM2YNO4U.mjs.map +1 -0
  127. package/dist/chunk-ME4MO2RJ.mjs +3540 -0
  128. package/dist/chunk-ME4MO2RJ.mjs.map +1 -0
  129. package/dist/chunk-MIUW47JX.mjs +639 -0
  130. package/dist/chunk-MIUW47JX.mjs.map +1 -0
  131. package/dist/chunk-NNLCAVB6.mjs +391 -0
  132. package/dist/chunk-NNLCAVB6.mjs.map +1 -0
  133. package/dist/chunk-P7QDS5AT.mjs +191 -0
  134. package/dist/chunk-P7QDS5AT.mjs.map +1 -0
  135. package/dist/chunk-PFE6GMNE.mjs +603 -0
  136. package/dist/chunk-PFE6GMNE.mjs.map +1 -0
  137. package/dist/chunk-QGOHVJ6J.mjs +63 -0
  138. package/dist/chunk-QGOHVJ6J.mjs.map +1 -0
  139. package/dist/chunk-QKVUNGAH.mjs +39 -0
  140. package/dist/chunk-QKVUNGAH.mjs.map +1 -0
  141. package/dist/chunk-QM746KUO.mjs +56 -0
  142. package/dist/chunk-QM746KUO.mjs.map +1 -0
  143. package/dist/chunk-QTZZ2ISQ.mjs +753 -0
  144. package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
  145. package/dist/chunk-RBRLLZL5.mjs +81 -0
  146. package/dist/chunk-RBRLLZL5.mjs.map +1 -0
  147. package/dist/chunk-RHIFZZUI.mjs +69 -0
  148. package/dist/chunk-RHIFZZUI.mjs.map +1 -0
  149. package/dist/chunk-RQ633A5I.mjs +187 -0
  150. package/dist/chunk-RQ633A5I.mjs.map +1 -0
  151. package/dist/chunk-SCFX4UTD.mjs +28 -0
  152. package/dist/chunk-SCFX4UTD.mjs.map +1 -0
  153. package/dist/chunk-SL6HTIOK.mjs +66 -0
  154. package/dist/chunk-SL6HTIOK.mjs.map +1 -0
  155. package/dist/chunk-SPBBQLXI.mjs +207 -0
  156. package/dist/chunk-SPBBQLXI.mjs.map +1 -0
  157. package/dist/chunk-SSA7THPX.mjs +10 -0
  158. package/dist/chunk-SSA7THPX.mjs.map +1 -0
  159. package/dist/chunk-T4QJQK76.mjs +459 -0
  160. package/dist/chunk-T4QJQK76.mjs.map +1 -0
  161. package/dist/chunk-TQAEEJB4.mjs +157 -0
  162. package/dist/chunk-TQAEEJB4.mjs.map +1 -0
  163. package/dist/chunk-UB5UOSHB.mjs +458 -0
  164. package/dist/chunk-UB5UOSHB.mjs.map +1 -0
  165. package/dist/chunk-USWZZUEH.mjs +25 -0
  166. package/dist/chunk-USWZZUEH.mjs.map +1 -0
  167. package/dist/chunk-UVCIEUJC.mjs +16 -0
  168. package/dist/chunk-UVCIEUJC.mjs.map +1 -0
  169. package/dist/chunk-UXUAWNO5.mjs +396 -0
  170. package/dist/chunk-UXUAWNO5.mjs.map +1 -0
  171. package/dist/chunk-V3XURYJO.mjs +756 -0
  172. package/dist/chunk-V3XURYJO.mjs.map +1 -0
  173. package/dist/chunk-V6WE6JSZ.mjs +352 -0
  174. package/dist/chunk-V6WE6JSZ.mjs.map +1 -0
  175. package/dist/chunk-V7RBCSDJ.mjs +170 -0
  176. package/dist/chunk-V7RBCSDJ.mjs.map +1 -0
  177. package/dist/chunk-VCANOYFI.mjs +588 -0
  178. package/dist/chunk-VCANOYFI.mjs.map +1 -0
  179. package/dist/chunk-VY2UYN5R.mjs +224 -0
  180. package/dist/chunk-VY2UYN5R.mjs.map +1 -0
  181. package/dist/chunk-W2CRQFF6.mjs +1352 -0
  182. package/dist/chunk-W2CRQFF6.mjs.map +1 -0
  183. package/dist/chunk-WDU6QXNK.mjs +872 -0
  184. package/dist/chunk-WDU6QXNK.mjs.map +1 -0
  185. package/dist/chunk-WZ5QFROO.mjs +23 -0
  186. package/dist/chunk-WZ5QFROO.mjs.map +1 -0
  187. package/dist/chunk-XIVV5IWN.mjs +541 -0
  188. package/dist/chunk-XIVV5IWN.mjs.map +1 -0
  189. package/dist/chunk-YW7OBE6Q.mjs +119 -0
  190. package/dist/chunk-YW7OBE6Q.mjs.map +1 -0
  191. package/dist/chunk-Z5CQMP54.mjs +365 -0
  192. package/dist/chunk-Z5CQMP54.mjs.map +1 -0
  193. package/dist/chunk-ZBE6MLHL.mjs +230 -0
  194. package/dist/chunk-ZBE6MLHL.mjs.map +1 -0
  195. package/dist/chunk-ZVWA4ZQ3.mjs +189 -0
  196. package/dist/chunk-ZVWA4ZQ3.mjs.map +1 -0
  197. package/dist/chunk-ZZ57EH5Z.mjs +173 -0
  198. package/dist/chunk-ZZ57EH5Z.mjs.map +1 -0
  199. package/dist/client-BT1mFQas.d.mts +447 -0
  200. package/dist/client-Nn0q4eO4.d.ts +447 -0
  201. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  202. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  203. package/dist/client-plugins-BI2R6Eae.d.mts +1926 -0
  204. package/dist/client-plugins-DU9oMspX.d.ts +1926 -0
  205. package/dist/client-plugins.cjs +415 -0
  206. package/dist/client-plugins.cjs.map +1 -0
  207. package/dist/client-plugins.d.mts +22 -0
  208. package/dist/client-plugins.d.ts +22 -0
  209. package/dist/client-plugins.mjs +10 -0
  210. package/dist/client-plugins.mjs.map +1 -0
  211. package/dist/client.cjs +5402 -0
  212. package/dist/client.cjs.map +1 -0
  213. package/dist/client.d.mts +447 -0
  214. package/dist/client.d.ts +447 -0
  215. package/dist/client.mjs +110 -0
  216. package/dist/client.mjs.map +1 -0
  217. package/dist/config.cjs +38 -0
  218. package/dist/config.cjs.map +1 -0
  219. package/dist/config.d.mts +29 -0
  220. package/dist/config.d.ts +29 -0
  221. package/dist/config.mjs +10 -0
  222. package/dist/config.mjs.map +1 -0
  223. package/dist/cron.cjs +406 -0
  224. package/dist/cron.cjs.map +1 -0
  225. package/dist/cron.d.mts +78 -0
  226. package/dist/cron.d.ts +78 -0
  227. package/dist/cron.mjs +30 -0
  228. package/dist/cron.mjs.map +1 -0
  229. package/dist/deferred.cjs +438 -0
  230. package/dist/deferred.cjs.map +1 -0
  231. package/dist/deferred.d.mts +42 -0
  232. package/dist/deferred.d.ts +42 -0
  233. package/dist/deferred.mjs +28 -0
  234. package/dist/deferred.mjs.map +1 -0
  235. package/dist/deployment.cjs +199 -0
  236. package/dist/deployment.cjs.map +1 -0
  237. package/dist/deployment.d.mts +34 -0
  238. package/dist/deployment.d.ts +34 -0
  239. package/dist/deployment.mjs +38 -0
  240. package/dist/deployment.mjs.map +1 -0
  241. package/dist/devtools-REQTS3I7.mjs +371 -0
  242. package/dist/devtools-REQTS3I7.mjs.map +1 -0
  243. package/dist/devtools-client-3XRTBND5.mjs +216 -0
  244. package/dist/devtools-client-3XRTBND5.mjs.map +1 -0
  245. package/dist/devtools-ui-NJKFORTG.mjs +1349 -0
  246. package/dist/devtools-ui-NJKFORTG.mjs.map +1 -0
  247. package/dist/docs.cjs +5548 -0
  248. package/dist/docs.cjs.map +1 -0
  249. package/dist/docs.d.mts +69 -0
  250. package/dist/docs.d.ts +69 -0
  251. package/dist/docs.mjs +47 -0
  252. package/dist/docs.mjs.map +1 -0
  253. package/dist/env-types.cjs +232 -0
  254. package/dist/env-types.cjs.map +1 -0
  255. package/dist/env-types.d.mts +12 -0
  256. package/dist/env-types.d.ts +12 -0
  257. package/dist/env-types.mjs +11 -0
  258. package/dist/env-types.mjs.map +1 -0
  259. package/dist/env.cjs +215 -0
  260. package/dist/env.cjs.map +1 -0
  261. package/dist/env.d.mts +45 -0
  262. package/dist/env.d.ts +45 -0
  263. package/dist/env.mjs +22 -0
  264. package/dist/env.mjs.map +1 -0
  265. package/dist/environment/vite.d.mts +22 -0
  266. package/dist/environment/vite.d.ts +22 -0
  267. package/dist/environment.cjs +96 -0
  268. package/dist/environment.cjs.map +1 -0
  269. package/dist/environment.d.mts +18 -0
  270. package/dist/environment.d.ts +18 -0
  271. package/dist/environment.mjs +14 -0
  272. package/dist/environment.mjs.map +1 -0
  273. package/dist/headers.cjs +126 -0
  274. package/dist/headers.cjs.map +1 -0
  275. package/dist/headers.d.mts +22 -0
  276. package/dist/headers.d.ts +22 -0
  277. package/dist/headers.mjs +12 -0
  278. package/dist/headers.mjs.map +1 -0
  279. package/dist/i18n/client.d.mts +32 -0
  280. package/dist/i18n/client.d.ts +32 -0
  281. package/dist/i18n/index.d.mts +20 -0
  282. package/dist/i18n/index.d.ts +20 -0
  283. package/dist/i18n/server.d.mts +30 -0
  284. package/dist/i18n/server.d.ts +30 -0
  285. package/dist/image/server.d.mts +37 -0
  286. package/dist/image/server.d.ts +37 -0
  287. package/dist/image/sharp.d.mts +7 -0
  288. package/dist/image/sharp.d.ts +7 -0
  289. package/dist/image-config-Duob7wER.d.mts +50 -0
  290. package/dist/image-config-Duob7wER.d.ts +50 -0
  291. package/dist/image.cjs +209 -0
  292. package/dist/image.cjs.map +1 -0
  293. package/dist/image.d.mts +39 -0
  294. package/dist/image.d.ts +39 -0
  295. package/dist/image.mjs +165 -0
  296. package/dist/image.mjs.map +1 -0
  297. package/dist/index.cjs +42186 -0
  298. package/dist/index.cjs.map +1 -0
  299. package/dist/index.d.mts +454 -0
  300. package/dist/index.d.ts +454 -0
  301. package/dist/index.mjs +980 -0
  302. package/dist/index.mjs.map +1 -0
  303. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  304. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  305. package/dist/integration-orm-GQLGU66X.mjs +13 -0
  306. package/dist/integration-orm-GQLGU66X.mjs.map +1 -0
  307. package/dist/integrations.cjs +2820 -0
  308. package/dist/integrations.cjs.map +1 -0
  309. package/dist/integrations.d.mts +22 -0
  310. package/dist/integrations.d.ts +22 -0
  311. package/dist/integrations.mjs +51 -0
  312. package/dist/integrations.mjs.map +1 -0
  313. package/dist/internal/build-runtime.cjs +643 -322
  314. package/dist/internal/build-runtime.cjs.map +1 -1
  315. package/dist/internal/build-runtime.d.mts +39 -0
  316. package/dist/internal/build-runtime.d.ts +39 -0
  317. package/dist/internal/build-runtime.mjs +11 -10
  318. package/dist/internal/client-runtime.d.mts +2 -0
  319. package/dist/internal/client-runtime.d.ts +2 -0
  320. package/dist/internal/config-runtime.cjs +135 -39
  321. package/dist/internal/config-runtime.cjs.map +1 -1
  322. package/dist/internal/config-runtime.d.mts +39 -0
  323. package/dist/internal/config-runtime.d.ts +39 -0
  324. package/dist/internal/config-runtime.mjs +5 -4
  325. package/dist/internal/production-node-env.d.mts +12 -0
  326. package/dist/internal/production-node-env.d.ts +12 -0
  327. package/dist/internal/production-runtime.d.mts +39 -0
  328. package/dist/internal/production-runtime.d.ts +39 -0
  329. package/dist/layers-VWVDTPUZ.mjs +16 -0
  330. package/dist/layers-VWVDTPUZ.mjs.map +1 -0
  331. package/dist/manager-THKFTOFE.mjs +10 -0
  332. package/dist/manager-THKFTOFE.mjs.map +1 -0
  333. package/dist/markdown.cjs +364 -0
  334. package/dist/markdown.cjs.map +1 -0
  335. package/dist/markdown.d.mts +60 -0
  336. package/dist/markdown.d.ts +60 -0
  337. package/dist/markdown.mjs +18 -0
  338. package/dist/markdown.mjs.map +1 -0
  339. package/dist/metadata-Cm9ujH4I.d.ts +22 -0
  340. package/dist/metadata-DacXbnLA.d.mts +22 -0
  341. package/dist/middleware.cjs +2148 -0
  342. package/dist/middleware.cjs.map +1 -0
  343. package/dist/middleware.d.mts +164 -0
  344. package/dist/middleware.d.ts +164 -0
  345. package/dist/middleware.mjs +49 -0
  346. package/dist/middleware.mjs.map +1 -0
  347. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  348. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  349. package/dist/navigation.cjs +1329 -0
  350. package/dist/navigation.cjs.map +1 -0
  351. package/dist/navigation.d.mts +14 -0
  352. package/dist/navigation.d.ts +14 -0
  353. package/dist/navigation.mjs +33 -0
  354. package/dist/navigation.mjs.map +1 -0
  355. package/dist/nitro-QO5LV6QK.mjs +689 -0
  356. package/dist/nitro-QO5LV6QK.mjs.map +1 -0
  357. package/dist/observability.cjs +186 -0
  358. package/dist/observability.cjs.map +1 -0
  359. package/dist/observability.d.mts +335 -0
  360. package/dist/observability.d.ts +335 -0
  361. package/dist/observability.mjs +16 -0
  362. package/dist/observability.mjs.map +1 -0
  363. package/dist/params-BALtrRim.d.ts +15 -0
  364. package/dist/params-ry-lxqmy.d.mts +15 -0
  365. package/dist/plugin-BJDf43dc.d.mts +165 -0
  366. package/dist/plugin-BJDf43dc.d.ts +165 -0
  367. package/dist/plugin.cjs +23470 -0
  368. package/dist/plugin.cjs.map +1 -1
  369. package/dist/plugin.d.mts +22 -0
  370. package/dist/plugin.d.ts +22 -0
  371. package/dist/plugin.mjs +8 -7
  372. package/dist/production-runtime-4KKq1AVC.d.mts +79 -0
  373. package/dist/production-runtime-C_B79w2P.d.mts +28 -0
  374. package/dist/production-runtime-DDEM1D2q.d.ts +28 -0
  375. package/dist/production-runtime-DRsWDN2x.d.ts +79 -0
  376. package/dist/query/client.d.mts +61 -0
  377. package/dist/query/client.d.ts +61 -0
  378. package/dist/query/index.d.mts +90 -0
  379. package/dist/query/index.d.ts +90 -0
  380. package/dist/query/parsers.d.mts +25 -0
  381. package/dist/query/parsers.d.ts +25 -0
  382. package/dist/query/server.d.mts +55 -0
  383. package/dist/query/server.d.ts +55 -0
  384. package/dist/request-Dsq4kGW0.d.mts +6 -0
  385. package/dist/request-udtobOLv.d.ts +6 -0
  386. package/dist/request.d.mts +2 -0
  387. package/dist/request.d.ts +2 -0
  388. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  389. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  390. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  391. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  392. package/dist/router.d.mts +36 -0
  393. package/dist/router.d.ts +36 -0
  394. package/dist/routes.d.mts +224 -0
  395. package/dist/routes.d.ts +224 -0
  396. package/dist/runtime-9nQjVM7X.d.mts +206 -0
  397. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  398. package/dist/runtime-DgeS2skB.d.ts +206 -0
  399. package/dist/runtime-bv63eUiO.d.ts +27 -0
  400. package/dist/server-action-security.d.mts +43 -0
  401. package/dist/server-action-security.d.ts +43 -0
  402. package/dist/server-fn-client.d.mts +32 -0
  403. package/dist/server-fn-client.d.ts +32 -0
  404. package/dist/server-fn.d.mts +93 -0
  405. package/dist/server-fn.d.ts +93 -0
  406. package/dist/server-plugins.d.mts +55 -0
  407. package/dist/server-plugins.d.ts +55 -0
  408. package/dist/server-query-client.d.mts +50 -0
  409. package/dist/server-query-client.d.ts +50 -0
  410. package/dist/server-query.d.mts +36 -0
  411. package/dist/server-query.d.ts +36 -0
  412. package/dist/server.cjs +731 -447
  413. package/dist/server.cjs.map +1 -1
  414. package/dist/server.d.mts +48 -0
  415. package/dist/server.d.ts +48 -0
  416. package/dist/server.mjs +9 -8
  417. package/dist/server.mjs.map +1 -1
  418. package/dist/storage.d.mts +52 -0
  419. package/dist/storage.d.ts +52 -0
  420. package/dist/testing.d.mts +101 -0
  421. package/dist/testing.d.ts +101 -0
  422. package/dist/transport-BmbGTXA5.d.mts +49 -0
  423. package/dist/transport-BmbGTXA5.d.ts +49 -0
  424. package/dist/types-BMxWr97v.d.mts +81 -0
  425. package/dist/types-BMxWr97v.d.ts +81 -0
  426. package/dist/types-C9N-nk5R.d.mts +53 -0
  427. package/dist/types-C9N-nk5R.d.ts +53 -0
  428. package/dist/types-D1A6-XvH.d.mts +73 -0
  429. package/dist/types-D1A6-XvH.d.ts +73 -0
  430. package/dist/utils-B-cUHwoK.d.ts +23 -0
  431. package/dist/utils-Cm41AefV.d.mts +23 -0
  432. package/dist/version.cjs +1 -1
  433. package/dist/version.cjs.map +1 -1
  434. package/dist/version.d.mts +3 -0
  435. package/dist/version.d.ts +3 -0
  436. package/dist/version.mjs +1 -1
  437. package/dist/vite.cjs +682 -437
  438. package/dist/vite.cjs.map +1 -1
  439. package/dist/vite.d.mts +22 -0
  440. package/dist/vite.d.ts +22 -0
  441. package/dist/vite.mjs +6 -5
  442. package/dist/workflows.d.mts +110 -0
  443. package/dist/workflows.d.ts +110 -0
  444. package/package.json +3 -2
  445. package/types/client.d.ts +1 -1
  446. package/types/image.d.ts +4 -0
  447. package/types/images.d.ts +59 -0
@@ -0,0 +1,422 @@
1
+ import {
2
+ resolveFarmLocaleRequest
3
+ } from "./chunk-GN72QAIH.mjs";
4
+ import {
5
+ resolveFarmI18nMessagePath
6
+ } from "./chunk-FQYDHKKU.mjs";
7
+ import {
8
+ getFarmLocaleDirection
9
+ } from "./chunk-44ZCFSKE.mjs";
10
+ import {
11
+ _setFarmI18nSnapshotResolver
12
+ } from "./chunk-WZ5QFROO.mjs";
13
+ import {
14
+ __name
15
+ } from "./chunk-CGILA3WO.mjs";
16
+
17
+ // src/i18n/server.ts
18
+ import { AsyncLocalStorage } from "async_hooks";
19
+
20
+ // src/i18n/runtime.ts
21
+ import IntlMessageFormat from "intl-messageformat";
22
+
23
+ // src/i18n/catalog.ts
24
+ import { readFile } from "fs/promises";
25
+ import { TYPE, parse } from "@formatjs/icu-messageformat-parser";
26
+ async function readFarmI18nCatalogs(config) {
27
+ if (!config.enabled) {
28
+ return { catalogs: {}, signatures: {} };
29
+ }
30
+ const catalogs = {};
31
+ for (const locale of config.locales) {
32
+ const filePath = resolveFarmI18nMessagePath(config, locale);
33
+ let source;
34
+ try {
35
+ source = await readFile(filePath, "utf8");
36
+ } catch (error) {
37
+ throw new Error(
38
+ `Unable to read Farm i18n catalog for "${locale}" at ${filePath}: ${messageOf(error)}`
39
+ );
40
+ }
41
+ let parsed;
42
+ try {
43
+ parsed = JSON.parse(source);
44
+ } catch (error) {
45
+ throw new Error(`Invalid JSON in Farm i18n catalog ${filePath}: ${messageOf(error)}`);
46
+ }
47
+ catalogs[locale] = flattenFarmI18nCatalog(parsed, filePath);
48
+ }
49
+ const reference = catalogs[config.defaultLocale] || {};
50
+ const signatures = {};
51
+ for (const [key, message] of Object.entries(reference)) {
52
+ signatures[key] = analyzeFarmI18nMessage(message, `${config.defaultLocale}:${key}`);
53
+ }
54
+ validateFarmI18nCatalogs(config, catalogs, signatures);
55
+ return { catalogs, signatures };
56
+ }
57
+ __name(readFarmI18nCatalogs, "readFarmI18nCatalogs");
58
+ function flattenFarmI18nCatalog(input, source = "i18n catalog") {
59
+ if (!isPlainObject(input)) {
60
+ throw new Error(`${source} must contain a JSON object at its root.`);
61
+ }
62
+ const output = {};
63
+ const visit = /* @__PURE__ */ __name((value, segments) => {
64
+ if (typeof value === "string") {
65
+ const key = segments.join(".");
66
+ if (!key) throw new Error(`${source} contains an empty message key.`);
67
+ if (key in output) throw new Error(`${source} contains duplicate message key "${key}".`);
68
+ output[key] = value;
69
+ return;
70
+ }
71
+ if (!isPlainObject(value)) {
72
+ const key = segments.join(".") || "<root>";
73
+ throw new Error(`${source} message "${key}" must be a string or nested object.`);
74
+ }
75
+ for (const [key, nested] of Object.entries(value)) {
76
+ if (!key.trim()) throw new Error(`${source} contains an empty message key.`);
77
+ visit(nested, [...segments, key]);
78
+ }
79
+ }, "visit");
80
+ visit(input, []);
81
+ return output;
82
+ }
83
+ __name(flattenFarmI18nCatalog, "flattenFarmI18nCatalog");
84
+ function analyzeFarmI18nMessage(message, label = "message") {
85
+ let ast;
86
+ try {
87
+ ast = parse(message, { captureLocation: false });
88
+ } catch (error) {
89
+ throw new Error(`Invalid ICU syntax in ${label}: ${messageOf(error)}`);
90
+ }
91
+ const signature = {};
92
+ collectArguments(ast, signature, label);
93
+ return signature;
94
+ }
95
+ __name(analyzeFarmI18nMessage, "analyzeFarmI18nMessage");
96
+ function validateFarmI18nCatalogs(config, catalogs, signatures) {
97
+ const referenceKeys = Object.keys(catalogs[config.defaultLocale] || {}).sort();
98
+ for (const locale of config.locales) {
99
+ const catalog = catalogs[locale] || {};
100
+ const localeKeys = Object.keys(catalog).sort();
101
+ const missing = referenceKeys.filter((key) => !(key in catalog));
102
+ const extra = localeKeys.filter((key) => !(key in signatures));
103
+ if (config.strict && (missing.length > 0 || extra.length > 0)) {
104
+ const details = [
105
+ missing.length ? `missing: ${missing.join(", ")}` : "",
106
+ extra.length ? `extra: ${extra.join(", ")}` : ""
107
+ ].filter(Boolean).join("; ");
108
+ throw new Error(
109
+ `Farm i18n catalog "${locale}" does not match the default catalog (${details}).`
110
+ );
111
+ }
112
+ for (const [key, message] of Object.entries(catalog)) {
113
+ const actual = analyzeFarmI18nMessage(message, `${locale}:${key}`);
114
+ const expected = signatures[key];
115
+ if (!expected || sameSignature(expected, actual)) continue;
116
+ throw new Error(
117
+ `Farm i18n message "${key}" in "${locale}" uses different variables than "${config.defaultLocale}".`
118
+ );
119
+ }
120
+ }
121
+ }
122
+ __name(validateFarmI18nCatalogs, "validateFarmI18nCatalogs");
123
+ function collectArguments(elements, signature, label) {
124
+ for (const element of elements) {
125
+ switch (element.type) {
126
+ case TYPE.argument:
127
+ addArgument(signature, element.value, "string", label);
128
+ break;
129
+ case TYPE.number:
130
+ case TYPE.plural:
131
+ addArgument(signature, element.value, "number", label);
132
+ break;
133
+ case TYPE.date:
134
+ case TYPE.time:
135
+ addArgument(signature, element.value, "date", label);
136
+ break;
137
+ case TYPE.select:
138
+ addArgument(signature, element.value, "select", label);
139
+ break;
140
+ case TYPE.tag:
141
+ addArgument(signature, element.value, "rich", label);
142
+ collectArguments(element.children, signature, label);
143
+ break;
144
+ }
145
+ if (element.type === TYPE.plural || element.type === TYPE.select) {
146
+ for (const option of Object.values(element.options)) {
147
+ collectArguments(option.value, signature, label);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ __name(collectArguments, "collectArguments");
153
+ function addArgument(signature, name, kind, label) {
154
+ const existing = signature[name];
155
+ if (existing && existing !== kind) {
156
+ throw new Error(`Farm i18n ${label} uses variable "${name}" as both ${existing} and ${kind}.`);
157
+ }
158
+ signature[name] = kind;
159
+ }
160
+ __name(addArgument, "addArgument");
161
+ function sameSignature(expected, actual) {
162
+ const expectedEntries = Object.entries(expected).sort(([a], [b]) => a.localeCompare(b));
163
+ const actualEntries = Object.entries(actual).sort(([a], [b]) => a.localeCompare(b));
164
+ return JSON.stringify(expectedEntries) === JSON.stringify(actualEntries);
165
+ }
166
+ __name(sameSignature, "sameSignature");
167
+ function isPlainObject(value) {
168
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
169
+ }
170
+ __name(isPlainObject, "isPlainObject");
171
+ function messageOf(error) {
172
+ return error instanceof Error ? error.message : String(error);
173
+ }
174
+ __name(messageOf, "messageOf");
175
+
176
+ // src/i18n/runtime.ts
177
+ var _FarmI18nRuntime = class _FarmI18nRuntime {
178
+ constructor(config, catalogs = {}) {
179
+ this.compiled = /* @__PURE__ */ new Map();
180
+ this.warnedMissing = /* @__PURE__ */ new Set();
181
+ this.config = config;
182
+ this.catalogs = catalogs;
183
+ }
184
+ async initialize() {
185
+ if (!this.config.enabled) return;
186
+ const bundle = await readFarmI18nCatalogs(this.config);
187
+ this.replaceCatalogs(bundle.catalogs);
188
+ }
189
+ async reload() {
190
+ await this.initialize();
191
+ }
192
+ replaceCatalogs(catalogs) {
193
+ this.catalogs = catalogs;
194
+ this.compiled.clear();
195
+ this.warnedMissing.clear();
196
+ }
197
+ getCatalogs() {
198
+ return Object.fromEntries(
199
+ Object.entries(this.catalogs).map(([locale, catalog]) => [locale, { ...catalog }])
200
+ );
201
+ }
202
+ resolveRequest(request, options = {}) {
203
+ return resolveFarmLocaleRequest(request, this.config, options);
204
+ }
205
+ translate(locale, key, values) {
206
+ const result = this.formatMessage(locale, key, values);
207
+ if (Array.isArray(result) && result.some((part) => typeof part !== "string")) {
208
+ throw new Error(`Farm i18n message "${key}" contains rich content. Render it with t.rich().`);
209
+ }
210
+ return Array.isArray(result) ? result.join("") : String(result);
211
+ }
212
+ translateRich(locale, key, values) {
213
+ const result = this.formatMessage(locale, key, values);
214
+ return Array.isArray(result) && result.length === 1 ? result[0] : result;
215
+ }
216
+ getRawMessage(locale, key) {
217
+ return this.resolveMessage(locale, key);
218
+ }
219
+ hasMessage(locale, key) {
220
+ return (this.catalogs[locale]?.[key] ?? this.catalogs[this.config.fallbackLocale]?.[key]) !== void 0;
221
+ }
222
+ getClientSnapshot(resolution) {
223
+ return {
224
+ locale: resolution.locale,
225
+ source: resolution.source,
226
+ locales: this.config.locales,
227
+ defaultLocale: this.config.defaultLocale,
228
+ routing: this.config.routing,
229
+ cookie: this.config.cookie,
230
+ direction: getFarmLocaleDirection(resolution.locale, this.config.direction),
231
+ messages: {
232
+ ...this.catalogs[this.config.fallbackLocale],
233
+ ...this.catalogs[resolution.locale]
234
+ }
235
+ };
236
+ }
237
+ formatMessage(locale, key, values) {
238
+ const message = this.resolveMessage(locale, key);
239
+ const cacheKey = `${locale}\0${key}\0${message}`;
240
+ let formatter = this.compiled.get(cacheKey);
241
+ if (!formatter) {
242
+ formatter = new IntlMessageFormat(message, locale);
243
+ this.compiled.set(cacheKey, formatter);
244
+ }
245
+ return formatter.format(values);
246
+ }
247
+ resolveMessage(locale, key) {
248
+ const message = this.catalogs[locale]?.[key] ?? this.catalogs[this.config.fallbackLocale]?.[key];
249
+ if (message !== void 0) return message;
250
+ if (this.config.strict) {
251
+ throw new Error(`Missing Farm i18n message "${key}" for locale "${locale}".`);
252
+ }
253
+ const warningKey = `${locale}:${key}`;
254
+ if (!this.warnedMissing.has(warningKey)) {
255
+ this.warnedMissing.add(warningKey);
256
+ console.warn(`[Farm.js] Missing i18n message "${key}" for locale "${locale}".`);
257
+ }
258
+ return key;
259
+ }
260
+ };
261
+ __name(_FarmI18nRuntime, "FarmI18nRuntime");
262
+ var FarmI18nRuntime = _FarmI18nRuntime;
263
+ function createFarmI18nRuntime(config, catalogs) {
264
+ return new FarmI18nRuntime(config, catalogs);
265
+ }
266
+ __name(createFarmI18nRuntime, "createFarmI18nRuntime");
267
+
268
+ // src/i18n/server.ts
269
+ var FARM_I18N_REQUEST_STORE = /* @__PURE__ */ Symbol.for("farm.i18n.requestStore");
270
+ var FARM_I18N_DEFAULT_RUNTIME = /* @__PURE__ */ Symbol.for("farm.i18n.defaultRuntime");
271
+ function getRequestStore() {
272
+ const state = globalThis;
273
+ return state[FARM_I18N_REQUEST_STORE] ?? (state[FARM_I18N_REQUEST_STORE] = new AsyncLocalStorage());
274
+ }
275
+ __name(getRequestStore, "getRequestStore");
276
+ function getState() {
277
+ const state = getRequestStore().getStore();
278
+ if (!state) {
279
+ throw new Error(
280
+ "No Farm i18n request context is active. Use this API while rendering, inside an API route, or use createTranslator(locale)."
281
+ );
282
+ }
283
+ return state;
284
+ }
285
+ __name(getState, "getState");
286
+ function _setDefaultFarmI18nRuntime(runtime) {
287
+ globalThis[FARM_I18N_DEFAULT_RUNTIME] = runtime;
288
+ }
289
+ __name(_setDefaultFarmI18nRuntime, "_setDefaultFarmI18nRuntime");
290
+ async function _runWithFarmI18nRequest(runtime, request, fn, options = {}) {
291
+ const resolution = runtime.resolveRequest(request, options);
292
+ const state = {
293
+ runtime,
294
+ resolution,
295
+ snapshot: runtime.getClientSnapshot(resolution)
296
+ };
297
+ return getRequestStore().run(state, () => fn(resolution));
298
+ }
299
+ __name(_runWithFarmI18nRequest, "_runWithFarmI18nRequest");
300
+ async function runWithLocale(locale, fn) {
301
+ const runtime = getDefaultRuntime();
302
+ assertLocale(runtime, locale);
303
+ const resolution = {
304
+ locale,
305
+ source: "explicit",
306
+ pathname: "/",
307
+ persist: false
308
+ };
309
+ const state = {
310
+ runtime,
311
+ resolution,
312
+ snapshot: runtime.getClientSnapshot(resolution)
313
+ };
314
+ return getRequestStore().run(state, fn);
315
+ }
316
+ __name(runWithLocale, "runWithLocale");
317
+ function getLocale() {
318
+ return getState().resolution.locale;
319
+ }
320
+ __name(getLocale, "getLocale");
321
+ function getLocaleSource() {
322
+ return getState().resolution.source;
323
+ }
324
+ __name(getLocaleSource, "getLocaleSource");
325
+ var t = createTranslatorFromState(() => getState());
326
+ function createTranslator(locale) {
327
+ const runtime = getDefaultRuntime();
328
+ assertLocale(runtime, locale);
329
+ return createTranslatorFromState(() => ({
330
+ runtime,
331
+ resolution: {
332
+ locale,
333
+ source: "explicit",
334
+ pathname: "/",
335
+ persist: false
336
+ },
337
+ snapshot: runtime.getClientSnapshot({
338
+ locale,
339
+ source: "explicit",
340
+ pathname: "/",
341
+ persist: false
342
+ })
343
+ }));
344
+ }
345
+ __name(createTranslator, "createTranslator");
346
+ function getFarmI18nClientSnapshot() {
347
+ return getRequestStore().getStore()?.snapshot;
348
+ }
349
+ __name(getFarmI18nClientSnapshot, "getFarmI18nClientSnapshot");
350
+ var format = {
351
+ number(value, options) {
352
+ return new Intl.NumberFormat(getLocale(), options).format(value);
353
+ },
354
+ currency(value, currency, options = {}) {
355
+ return new Intl.NumberFormat(getLocale(), {
356
+ ...options,
357
+ style: "currency",
358
+ currency
359
+ }).format(value);
360
+ },
361
+ date(value, options) {
362
+ return new Intl.DateTimeFormat(getLocale(), options).format(value);
363
+ },
364
+ relativeTime(value, unit, options) {
365
+ return new Intl.RelativeTimeFormat(getLocale(), options).format(value, unit);
366
+ },
367
+ list(values, options) {
368
+ const ListFormat = Intl.ListFormat;
369
+ return new ListFormat(getLocale(), options).format(Array.from(values));
370
+ }
371
+ };
372
+ function getDefaultRuntime() {
373
+ const runtime = globalThis[FARM_I18N_DEFAULT_RUNTIME];
374
+ if (!runtime?.config.enabled) {
375
+ throw new Error("Farm i18n is not configured for this application.");
376
+ }
377
+ return runtime;
378
+ }
379
+ __name(getDefaultRuntime, "getDefaultRuntime");
380
+ function assertLocale(runtime, locale) {
381
+ if (!runtime.config.locales.includes(locale)) {
382
+ throw new Error(`Unsupported Farm i18n locale "${locale}".`);
383
+ }
384
+ }
385
+ __name(assertLocale, "assertLocale");
386
+ function createTranslatorFromState(resolveState) {
387
+ const translator = /* @__PURE__ */ __name(((key, values) => {
388
+ const state = resolveState();
389
+ return state.runtime.translate(state.resolution.locale, key, values);
390
+ }), "translator");
391
+ translator.rich = (key, values) => {
392
+ const state = resolveState();
393
+ return state.runtime.translateRich(state.resolution.locale, key, values);
394
+ };
395
+ translator.raw = (key) => {
396
+ const state = resolveState();
397
+ return state.runtime.getRawMessage(state.resolution.locale, key);
398
+ };
399
+ translator.has = (key) => {
400
+ const state = resolveState();
401
+ return state.runtime.hasMessage(state.resolution.locale, key);
402
+ };
403
+ return translator;
404
+ }
405
+ __name(createTranslatorFromState, "createTranslatorFromState");
406
+ _setFarmI18nSnapshotResolver(() => getFarmI18nClientSnapshot());
407
+
408
+ export {
409
+ readFarmI18nCatalogs,
410
+ FarmI18nRuntime,
411
+ createFarmI18nRuntime,
412
+ _setDefaultFarmI18nRuntime,
413
+ _runWithFarmI18nRequest,
414
+ runWithLocale,
415
+ getLocale,
416
+ getLocaleSource,
417
+ t,
418
+ createTranslator,
419
+ getFarmI18nClientSnapshot,
420
+ format
421
+ };
422
+ //# sourceMappingURL=chunk-2ED5Q2GH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/server.ts","../src/i18n/runtime.ts","../src/i18n/catalog.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { FarmLocaleResolution } from \"./resolver\";\nimport { _setFarmI18nSnapshotResolver } from \"./bridge\";\nimport { FarmI18nRuntime, createFarmI18nRuntime } from \"./runtime\";\nimport type {\n FarmI18nClientSnapshot,\n FarmI18nLocale,\n FarmI18nLocaleSource,\n FarmI18nMessageArgs,\n FarmI18nMessageKey,\n FarmTranslator,\n} from \"./types\";\n\ninterface FarmI18nRequestState {\n runtime: FarmI18nRuntime;\n resolution: FarmLocaleResolution;\n snapshot: FarmI18nClientSnapshot;\n}\n\ninterface FarmListFormatOptions {\n localeMatcher?: \"lookup\" | \"best fit\";\n type?: \"conjunction\" | \"disjunction\" | \"unit\";\n style?: \"long\" | \"short\" | \"narrow\";\n}\n\nconst FARM_I18N_REQUEST_STORE = Symbol.for(\"farm.i18n.requestStore\");\nconst FARM_I18N_DEFAULT_RUNTIME = Symbol.for(\"farm.i18n.defaultRuntime\");\n\ntype GlobalFarmI18nState = typeof globalThis & {\n [FARM_I18N_REQUEST_STORE]?: AsyncLocalStorage<FarmI18nRequestState>;\n [FARM_I18N_DEFAULT_RUNTIME]?: FarmI18nRuntime;\n};\n\nfunction getRequestStore(): AsyncLocalStorage<FarmI18nRequestState> {\n const state = globalThis as GlobalFarmI18nState;\n return (state[FARM_I18N_REQUEST_STORE] ??= new AsyncLocalStorage<FarmI18nRequestState>());\n}\n\nfunction getState(): FarmI18nRequestState {\n const state = getRequestStore().getStore();\n if (!state) {\n throw new Error(\n \"No Farm i18n request context is active. Use this API while rendering, inside an API route, or use createTranslator(locale).\",\n );\n }\n return state;\n}\n\nexport function _setDefaultFarmI18nRuntime(runtime: FarmI18nRuntime | undefined): void {\n (globalThis as GlobalFarmI18nState)[FARM_I18N_DEFAULT_RUNTIME] = runtime;\n}\n\nexport async function _runWithFarmI18nRequest<T>(\n runtime: FarmI18nRuntime,\n request: Request,\n fn: (resolution: FarmLocaleResolution) => T | Promise<T>,\n options: { redirect?: boolean } = {},\n): Promise<T> {\n const resolution = runtime.resolveRequest(request, options);\n const state: FarmI18nRequestState = {\n runtime,\n resolution,\n snapshot: runtime.getClientSnapshot(resolution),\n };\n return getRequestStore().run(state, () => fn(resolution));\n}\n\nexport async function runWithLocale<T>(\n locale: FarmI18nLocale,\n fn: () => T | Promise<T>,\n): Promise<T> {\n const runtime = getDefaultRuntime();\n assertLocale(runtime, locale);\n const resolution: FarmLocaleResolution = {\n locale,\n source: \"explicit\",\n pathname: \"/\",\n persist: false,\n };\n const state: FarmI18nRequestState = {\n runtime,\n resolution,\n snapshot: runtime.getClientSnapshot(resolution),\n };\n return getRequestStore().run(state, fn);\n}\n\nexport function getLocale(): FarmI18nLocale {\n return getState().resolution.locale as FarmI18nLocale;\n}\n\nexport function getLocaleSource(): FarmI18nLocaleSource {\n return getState().resolution.source;\n}\n\nexport const t = createTranslatorFromState(() => getState());\n\nexport function createTranslator(locale: FarmI18nLocale): FarmTranslator {\n const runtime = getDefaultRuntime();\n assertLocale(runtime, locale);\n return createTranslatorFromState(() => ({\n runtime,\n resolution: {\n locale,\n source: \"explicit\",\n pathname: \"/\",\n persist: false,\n },\n snapshot: runtime.getClientSnapshot({\n locale,\n source: \"explicit\",\n pathname: \"/\",\n persist: false,\n }),\n }));\n}\n\nexport function getFarmI18nClientSnapshot(): FarmI18nClientSnapshot | undefined {\n return getRequestStore().getStore()?.snapshot;\n}\n\nexport const format = {\n number(value: number, options?: Intl.NumberFormatOptions): string {\n return new Intl.NumberFormat(getLocale(), options).format(value);\n },\n currency(\n value: number,\n currency: string,\n options: Omit<Intl.NumberFormatOptions, \"style\" | \"currency\"> = {},\n ): string {\n return new Intl.NumberFormat(getLocale(), {\n ...options,\n style: \"currency\",\n currency,\n }).format(value);\n },\n date(value: Date | number, options?: Intl.DateTimeFormatOptions): string {\n return new Intl.DateTimeFormat(getLocale(), options).format(value);\n },\n relativeTime(\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ): string {\n return new Intl.RelativeTimeFormat(getLocale(), options).format(value, unit);\n },\n list(values: Iterable<string>, options?: FarmListFormatOptions): string {\n const ListFormat = (Intl as any).ListFormat;\n return new ListFormat(getLocale(), options).format(Array.from(values));\n },\n};\n\nfunction getDefaultRuntime(): FarmI18nRuntime {\n const runtime = (globalThis as GlobalFarmI18nState)[FARM_I18N_DEFAULT_RUNTIME];\n if (!runtime?.config.enabled) {\n throw new Error(\"Farm i18n is not configured for this application.\");\n }\n return runtime;\n}\n\nfunction assertLocale(runtime: FarmI18nRuntime, locale: string): void {\n if (!runtime.config.locales.includes(locale)) {\n throw new Error(`Unsupported Farm i18n locale \"${locale}\".`);\n }\n}\n\nfunction createTranslatorFromState(resolveState: () => FarmI18nRequestState): FarmTranslator {\n const translator = ((key: string, values?: Record<string, unknown>) => {\n const state = resolveState();\n return state.runtime.translate(state.resolution.locale, key, values);\n }) as FarmTranslator;\n translator.rich = (key: string, values?: Record<string, unknown>) => {\n const state = resolveState();\n return state.runtime.translateRich(state.resolution.locale, key, values);\n };\n translator.raw = (key: string) => {\n const state = resolveState();\n return state.runtime.getRawMessage(state.resolution.locale, key);\n };\n translator.has = (key: string) => {\n const state = resolveState();\n return state.runtime.hasMessage(state.resolution.locale, key);\n };\n return translator;\n}\n\n_setFarmI18nSnapshotResolver(() => getFarmI18nClientSnapshot());\n\nexport { FarmI18nRuntime, createFarmI18nRuntime };\nexport type { FarmI18nClientSnapshot, FarmI18nLocale, FarmI18nMessageArgs, FarmI18nMessageKey };\n","import IntlMessageFormat from \"intl-messageformat\";\nimport { readFarmI18nCatalogs } from \"./catalog\";\nimport { getFarmLocaleDirection } from \"./routing\";\nimport { resolveFarmLocaleRequest, type FarmLocaleResolution } from \"./resolver\";\nimport type { FarmI18nCatalogs, FarmI18nClientSnapshot, ResolvedFarmI18nConfig } from \"./types\";\n\nexport class FarmI18nRuntime {\n readonly config: ResolvedFarmI18nConfig;\n private catalogs: FarmI18nCatalogs;\n private compiled = new Map<string, IntlMessageFormat>();\n private warnedMissing = new Set<string>();\n\n constructor(config: ResolvedFarmI18nConfig, catalogs: FarmI18nCatalogs = {}) {\n this.config = config;\n this.catalogs = catalogs;\n }\n\n async initialize(): Promise<void> {\n if (!this.config.enabled) return;\n const bundle = await readFarmI18nCatalogs(this.config);\n this.replaceCatalogs(bundle.catalogs);\n }\n\n async reload(): Promise<void> {\n await this.initialize();\n }\n\n replaceCatalogs(catalogs: FarmI18nCatalogs): void {\n this.catalogs = catalogs;\n this.compiled.clear();\n this.warnedMissing.clear();\n }\n\n getCatalogs(): FarmI18nCatalogs {\n return Object.fromEntries(\n Object.entries(this.catalogs).map(([locale, catalog]) => [locale, { ...catalog }]),\n );\n }\n\n resolveRequest(request: Request, options: { redirect?: boolean } = {}): FarmLocaleResolution {\n return resolveFarmLocaleRequest(request, this.config, options);\n }\n\n translate(locale: string, key: string, values?: Record<string, unknown>): string {\n const result = this.formatMessage(locale, key, values);\n if (Array.isArray(result) && result.some((part) => typeof part !== \"string\")) {\n throw new Error(`Farm i18n message \"${key}\" contains rich content. Render it with t.rich().`);\n }\n return Array.isArray(result) ? result.join(\"\") : String(result);\n }\n\n translateRich(locale: string, key: string, values?: Record<string, unknown>): unknown {\n const result = this.formatMessage(locale, key, values);\n return Array.isArray(result) && result.length === 1 ? result[0] : result;\n }\n\n getRawMessage(locale: string, key: string): string {\n return this.resolveMessage(locale, key);\n }\n\n hasMessage(locale: string, key: string): boolean {\n return (\n (this.catalogs[locale]?.[key] ?? this.catalogs[this.config.fallbackLocale]?.[key]) !==\n undefined\n );\n }\n\n getClientSnapshot(resolution: FarmLocaleResolution): FarmI18nClientSnapshot {\n return {\n locale: resolution.locale,\n source: resolution.source,\n locales: this.config.locales,\n defaultLocale: this.config.defaultLocale,\n routing: this.config.routing,\n cookie: this.config.cookie,\n direction: getFarmLocaleDirection(resolution.locale, this.config.direction),\n messages: {\n ...this.catalogs[this.config.fallbackLocale],\n ...this.catalogs[resolution.locale],\n },\n };\n }\n\n private formatMessage(locale: string, key: string, values?: Record<string, unknown>): unknown {\n const message = this.resolveMessage(locale, key);\n const cacheKey = `${locale}\\u0000${key}\\u0000${message}`;\n let formatter = this.compiled.get(cacheKey);\n if (!formatter) {\n formatter = new IntlMessageFormat(message, locale);\n this.compiled.set(cacheKey, formatter);\n }\n return formatter.format(values as any);\n }\n\n private resolveMessage(locale: string, key: string): string {\n const message =\n this.catalogs[locale]?.[key] ?? this.catalogs[this.config.fallbackLocale]?.[key];\n if (message !== undefined) return message;\n if (this.config.strict) {\n throw new Error(`Missing Farm i18n message \"${key}\" for locale \"${locale}\".`);\n }\n const warningKey = `${locale}:${key}`;\n if (!this.warnedMissing.has(warningKey)) {\n this.warnedMissing.add(warningKey);\n console.warn(`[Farm.js] Missing i18n message \"${key}\" for locale \"${locale}\".`);\n }\n return key;\n }\n}\n\nexport function createFarmI18nRuntime(\n config: ResolvedFarmI18nConfig,\n catalogs?: FarmI18nCatalogs,\n): FarmI18nRuntime {\n return new FarmI18nRuntime(config, catalogs);\n}\n","import { readFile } from \"node:fs/promises\";\nimport { TYPE, parse, type MessageFormatElement } from \"@formatjs/icu-messageformat-parser\";\nimport { resolveFarmI18nMessagePath } from \"./config\";\nimport type { FarmI18nCatalog, FarmI18nCatalogs, ResolvedFarmI18nConfig } from \"./types\";\n\nexport type FarmI18nArgumentKind = \"string\" | \"number\" | \"date\" | \"select\" | \"rich\";\nexport type FarmI18nMessageSignature = Record<string, FarmI18nArgumentKind>;\n\nexport interface FarmI18nCatalogBundle {\n catalogs: FarmI18nCatalogs;\n signatures: Record<string, FarmI18nMessageSignature>;\n}\n\nexport async function readFarmI18nCatalogs(\n config: ResolvedFarmI18nConfig,\n): Promise<FarmI18nCatalogBundle> {\n if (!config.enabled) {\n return { catalogs: {}, signatures: {} };\n }\n\n const catalogs: FarmI18nCatalogs = {};\n for (const locale of config.locales) {\n const filePath = resolveFarmI18nMessagePath(config, locale);\n let source: string;\n try {\n source = await readFile(filePath, \"utf8\");\n } catch (error) {\n throw new Error(\n `Unable to read Farm i18n catalog for \"${locale}\" at ${filePath}: ${messageOf(error)}`,\n );\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(source);\n } catch (error) {\n throw new Error(`Invalid JSON in Farm i18n catalog ${filePath}: ${messageOf(error)}`);\n }\n catalogs[locale] = flattenFarmI18nCatalog(parsed, filePath);\n }\n\n const reference = catalogs[config.defaultLocale] || {};\n const signatures: Record<string, FarmI18nMessageSignature> = {};\n for (const [key, message] of Object.entries(reference)) {\n signatures[key] = analyzeFarmI18nMessage(message, `${config.defaultLocale}:${key}`);\n }\n\n validateFarmI18nCatalogs(config, catalogs, signatures);\n return { catalogs, signatures };\n}\n\nexport function flattenFarmI18nCatalog(input: unknown, source = \"i18n catalog\"): FarmI18nCatalog {\n if (!isPlainObject(input)) {\n throw new Error(`${source} must contain a JSON object at its root.`);\n }\n\n const output: FarmI18nCatalog = {};\n const visit = (value: unknown, segments: string[]) => {\n if (typeof value === \"string\") {\n const key = segments.join(\".\");\n if (!key) throw new Error(`${source} contains an empty message key.`);\n if (key in output) throw new Error(`${source} contains duplicate message key \"${key}\".`);\n output[key] = value;\n return;\n }\n\n if (!isPlainObject(value)) {\n const key = segments.join(\".\") || \"<root>\";\n throw new Error(`${source} message \"${key}\" must be a string or nested object.`);\n }\n\n for (const [key, nested] of Object.entries(value)) {\n if (!key.trim()) throw new Error(`${source} contains an empty message key.`);\n visit(nested, [...segments, key]);\n }\n };\n\n visit(input, []);\n return output;\n}\n\nexport function analyzeFarmI18nMessage(\n message: string,\n label = \"message\",\n): FarmI18nMessageSignature {\n let ast: MessageFormatElement[];\n try {\n ast = parse(message, { captureLocation: false });\n } catch (error) {\n throw new Error(`Invalid ICU syntax in ${label}: ${messageOf(error)}`);\n }\n\n const signature: FarmI18nMessageSignature = {};\n collectArguments(ast, signature, label);\n return signature;\n}\n\nfunction validateFarmI18nCatalogs(\n config: ResolvedFarmI18nConfig,\n catalogs: FarmI18nCatalogs,\n signatures: Record<string, FarmI18nMessageSignature>,\n): void {\n const referenceKeys = Object.keys(catalogs[config.defaultLocale] || {}).sort();\n\n for (const locale of config.locales) {\n const catalog = catalogs[locale] || {};\n const localeKeys = Object.keys(catalog).sort();\n const missing = referenceKeys.filter((key) => !(key in catalog));\n const extra = localeKeys.filter((key) => !(key in signatures));\n\n if (config.strict && (missing.length > 0 || extra.length > 0)) {\n const details = [\n missing.length ? `missing: ${missing.join(\", \")}` : \"\",\n extra.length ? `extra: ${extra.join(\", \")}` : \"\",\n ]\n .filter(Boolean)\n .join(\"; \");\n throw new Error(\n `Farm i18n catalog \"${locale}\" does not match the default catalog (${details}).`,\n );\n }\n\n for (const [key, message] of Object.entries(catalog)) {\n const actual = analyzeFarmI18nMessage(message, `${locale}:${key}`);\n const expected = signatures[key];\n if (!expected || sameSignature(expected, actual)) continue;\n throw new Error(\n `Farm i18n message \"${key}\" in \"${locale}\" uses different variables than \"${config.defaultLocale}\".`,\n );\n }\n }\n}\n\nfunction collectArguments(\n elements: MessageFormatElement[],\n signature: FarmI18nMessageSignature,\n label: string,\n): void {\n for (const element of elements) {\n switch (element.type) {\n case TYPE.argument:\n addArgument(signature, element.value, \"string\", label);\n break;\n case TYPE.number:\n case TYPE.plural:\n addArgument(signature, element.value, \"number\", label);\n break;\n case TYPE.date:\n case TYPE.time:\n addArgument(signature, element.value, \"date\", label);\n break;\n case TYPE.select:\n addArgument(signature, element.value, \"select\", label);\n break;\n case TYPE.tag:\n addArgument(signature, element.value, \"rich\", label);\n collectArguments(element.children, signature, label);\n break;\n }\n\n if (element.type === TYPE.plural || element.type === TYPE.select) {\n for (const option of Object.values(element.options)) {\n collectArguments(option.value, signature, label);\n }\n }\n }\n}\n\nfunction addArgument(\n signature: FarmI18nMessageSignature,\n name: string,\n kind: FarmI18nArgumentKind,\n label: string,\n): void {\n const existing = signature[name];\n if (existing && existing !== kind) {\n throw new Error(`Farm i18n ${label} uses variable \"${name}\" as both ${existing} and ${kind}.`);\n }\n signature[name] = kind;\n}\n\nfunction sameSignature(\n expected: FarmI18nMessageSignature,\n actual: FarmI18nMessageSignature,\n): boolean {\n const expectedEntries = Object.entries(expected).sort(([a], [b]) => a.localeCompare(b));\n const actualEntries = Object.entries(actual).sort(([a], [b]) => a.localeCompare(b));\n return JSON.stringify(expectedEntries) === JSON.stringify(actualEntries);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction messageOf(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,158 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/server-fn-client.ts
6
+ import { useCallback, useMemo, useRef, useState } from "react";
7
+ function useServerFn(serverFn, options = {}) {
8
+ const { initialResult = null, resetOnSubmit = true } = options;
9
+ const callbacksRef = useRef({});
10
+ const requestIdRef = useRef(0);
11
+ const initialState = {
12
+ pendingCount: 0,
13
+ status: "idle",
14
+ result: initialResult,
15
+ error: null
16
+ };
17
+ const stateRef = useRef(initialState);
18
+ const [state, setState] = useState(initialState);
19
+ const setActionState = useCallback(
20
+ (value) => {
21
+ setState((current) => {
22
+ const next = typeof value === "function" ? value(current) : value;
23
+ stateRef.current = next;
24
+ return next;
25
+ });
26
+ },
27
+ []
28
+ );
29
+ callbacksRef.current = {
30
+ onError: options.onError,
31
+ onSettled: options.onSettled,
32
+ onSuccess: options.onSuccess,
33
+ throwOnFormError: options.throwOnFormError
34
+ };
35
+ const submit = useCallback(
36
+ async (input) => {
37
+ const requestId = ++requestIdRef.current;
38
+ const formData = isFormData(input) ? input : void 0;
39
+ const previousResult = stateRef.current.result;
40
+ const optimisticResult = options.optimistic?.({
41
+ input,
42
+ formData,
43
+ current: previousResult
44
+ });
45
+ const hasOptimisticResult = optimisticResult !== void 0;
46
+ setActionState((current) => ({
47
+ pendingCount: current.pendingCount + 1,
48
+ status: "pending",
49
+ result: hasOptimisticResult ? optimisticResult : resetOnSubmit ? null : current.result,
50
+ error: null
51
+ }));
52
+ try {
53
+ const result = await serverFn(input);
54
+ const isLatestRequest = requestId === requestIdRef.current;
55
+ setActionState((current) => {
56
+ const pendingCount = Math.max(0, current.pendingCount - 1);
57
+ if (!isLatestRequest) {
58
+ return {
59
+ ...current,
60
+ pendingCount,
61
+ status: pendingCount > 0 ? "pending" : current.status
62
+ };
63
+ }
64
+ return {
65
+ pendingCount,
66
+ status: pendingCount > 0 ? "pending" : "success",
67
+ result,
68
+ error: null
69
+ };
70
+ });
71
+ if (isLatestRequest) {
72
+ callbacksRef.current.onSuccess?.(result);
73
+ callbacksRef.current.onSettled?.(result, null);
74
+ }
75
+ return result;
76
+ } catch (cause) {
77
+ const error = normalizeServerFnError(cause);
78
+ const isLatestRequest = requestId === requestIdRef.current;
79
+ setActionState((current) => {
80
+ const pendingCount = Math.max(0, current.pendingCount - 1);
81
+ if (!isLatestRequest) {
82
+ return {
83
+ ...current,
84
+ pendingCount,
85
+ status: pendingCount > 0 ? "pending" : current.status
86
+ };
87
+ }
88
+ return {
89
+ pendingCount,
90
+ status: pendingCount > 0 ? "pending" : "error",
91
+ result: hasOptimisticResult && options.rollbackOnError ? previousResult : resetOnSubmit ? null : current.result,
92
+ error
93
+ };
94
+ });
95
+ if (isLatestRequest) {
96
+ callbacksRef.current.onError?.(error);
97
+ callbacksRef.current.onSettled?.(null, error);
98
+ }
99
+ throw error;
100
+ }
101
+ },
102
+ [options.optimistic, options.rollbackOnError, resetOnSubmit, serverFn, setActionState]
103
+ );
104
+ const formAction = useCallback(
105
+ async (formData) => {
106
+ try {
107
+ await submit(formData);
108
+ } catch (error) {
109
+ if (callbacksRef.current.throwOnFormError) {
110
+ throw error;
111
+ }
112
+ }
113
+ },
114
+ [submit]
115
+ );
116
+ const reset = useCallback(() => {
117
+ requestIdRef.current += 1;
118
+ setActionState({
119
+ pendingCount: 0,
120
+ status: "idle",
121
+ result: initialResult,
122
+ error: null
123
+ });
124
+ }, [initialResult, setActionState]);
125
+ return useMemo(
126
+ () => ({
127
+ pending: state.pendingCount > 0,
128
+ status: state.status,
129
+ result: state.result,
130
+ error: state.error,
131
+ submit,
132
+ formAction,
133
+ reset
134
+ }),
135
+ [formAction, reset, state.error, state.pendingCount, state.result, state.status, submit]
136
+ );
137
+ }
138
+ __name(useServerFn, "useServerFn");
139
+ function normalizeServerFnError(error) {
140
+ if (error instanceof Error) return error;
141
+ const normalized = new Error(typeof error === "string" ? error : "Server function failed");
142
+ normalized.cause = error;
143
+ return normalized;
144
+ }
145
+ __name(normalizeServerFnError, "normalizeServerFnError");
146
+ function isFormData(value) {
147
+ if (!value || typeof value !== "object") return false;
148
+ if (typeof FormData !== "undefined" && value instanceof FormData) {
149
+ return true;
150
+ }
151
+ return Object.prototype.toString.call(value) === "[object FormData]" && typeof value.entries === "function";
152
+ }
153
+ __name(isFormData, "isFormData");
154
+
155
+ export {
156
+ useServerFn
157
+ };
158
+ //# sourceMappingURL=chunk-32W4QEJP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server-fn-client.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { ServerFn } from \"./server-fn\";\n\nexport type ServerFnActionStatus = \"idle\" | \"pending\" | \"success\" | \"error\";\n\nexport type ServerFnSubmit<TInput, TResult> = [unknown] extends [TInput]\n ? (input?: TInput | FormData) => Promise<TResult>\n : (input: TInput | FormData) => Promise<TResult>;\n\nexport type ServerFnOptimisticContext<TInput, TResult> = {\n input: TInput | FormData | undefined;\n formData?: FormData;\n current: TResult | null;\n};\n\nexport type UseServerFnOptions<TResult, TError extends Error = Error, TInput = unknown> = {\n initialResult?: TResult | null;\n resetOnSubmit?: boolean;\n throwOnFormError?: boolean;\n optimistic?: (context: ServerFnOptimisticContext<TInput, TResult>) => TResult | null | undefined;\n rollbackOnError?: boolean;\n onSuccess?: (result: TResult) => void;\n onError?: (error: TError) => void;\n onSettled?: (result: TResult | null, error: TError | null) => void;\n};\n\nexport type UseServerFnReturn<TInput, TResult, TError extends Error = Error> = {\n pending: boolean;\n status: ServerFnActionStatus;\n result: TResult | null;\n error: TError | null;\n submit: ServerFnSubmit<TInput, TResult>;\n formAction: (formData: FormData) => Promise<void>;\n reset: () => void;\n};\n\ntype ServerFnActionState<TResult, TError extends Error> = {\n pendingCount: number;\n status: ServerFnActionStatus;\n result: TResult | null;\n error: TError | null;\n};\n\ntype ServerFnActionCallbacks<TResult, TError extends Error> = Pick<\n UseServerFnOptions<TResult, TError, unknown>,\n \"onError\" | \"onSettled\" | \"onSuccess\" | \"throwOnFormError\"\n>;\n\nexport function useServerFn<TInput, TResult, TError extends Error = Error>(\n serverFn: ServerFn<TInput, TResult>,\n options: UseServerFnOptions<TResult, TError, TInput> = {},\n): UseServerFnReturn<TInput, TResult, TError> {\n const { initialResult = null, resetOnSubmit = true } = options;\n const callbacksRef = useRef<ServerFnActionCallbacks<TResult, TError>>({});\n const requestIdRef = useRef(0);\n const initialState: ServerFnActionState<TResult, TError> = {\n pendingCount: 0,\n status: \"idle\",\n result: initialResult,\n error: null,\n };\n const stateRef = useRef<ServerFnActionState<TResult, TError>>(initialState);\n const [state, setState] = useState<ServerFnActionState<TResult, TError>>(initialState);\n const setActionState = useCallback(\n (\n value:\n | ServerFnActionState<TResult, TError>\n | ((current: ServerFnActionState<TResult, TError>) => ServerFnActionState<TResult, TError>),\n ) => {\n setState((current) => {\n const next = typeof value === \"function\" ? value(current) : value;\n stateRef.current = next;\n return next;\n });\n },\n [],\n );\n\n callbacksRef.current = {\n onError: options.onError,\n onSettled: options.onSettled,\n onSuccess: options.onSuccess,\n throwOnFormError: options.throwOnFormError,\n };\n\n const submit = useCallback(\n async (input?: TInput | FormData) => {\n const requestId = ++requestIdRef.current;\n const formData = isFormData(input) ? input : undefined;\n const previousResult = stateRef.current.result;\n const optimisticResult = options.optimistic?.({\n input,\n formData,\n current: previousResult,\n });\n const hasOptimisticResult = optimisticResult !== undefined;\n\n setActionState((current) => ({\n pendingCount: current.pendingCount + 1,\n status: \"pending\",\n result: hasOptimisticResult ? optimisticResult : resetOnSubmit ? null : current.result,\n error: null,\n }));\n\n try {\n const result = await serverFn(input as TInput | FormData);\n const isLatestRequest = requestId === requestIdRef.current;\n\n setActionState((current) => {\n const pendingCount = Math.max(0, current.pendingCount - 1);\n\n if (!isLatestRequest) {\n return {\n ...current,\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : current.status,\n };\n }\n\n return {\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : \"success\",\n result,\n error: null,\n };\n });\n\n if (isLatestRequest) {\n callbacksRef.current.onSuccess?.(result);\n callbacksRef.current.onSettled?.(result, null);\n }\n\n return result;\n } catch (cause) {\n const error = normalizeServerFnError(cause) as TError;\n const isLatestRequest = requestId === requestIdRef.current;\n\n setActionState((current) => {\n const pendingCount = Math.max(0, current.pendingCount - 1);\n\n if (!isLatestRequest) {\n return {\n ...current,\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : current.status,\n };\n }\n\n return {\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : \"error\",\n result:\n hasOptimisticResult && options.rollbackOnError\n ? previousResult\n : resetOnSubmit\n ? null\n : current.result,\n error,\n };\n });\n\n if (isLatestRequest) {\n callbacksRef.current.onError?.(error);\n callbacksRef.current.onSettled?.(null, error);\n }\n\n throw error;\n }\n },\n [options.optimistic, options.rollbackOnError, resetOnSubmit, serverFn, setActionState],\n ) as ServerFnSubmit<TInput, TResult>;\n\n const formAction = useCallback(\n async (formData: FormData) => {\n try {\n await submit(formData as TInput | FormData);\n } catch (error) {\n if (callbacksRef.current.throwOnFormError) {\n throw error;\n }\n }\n },\n [submit],\n );\n\n const reset = useCallback(() => {\n requestIdRef.current += 1;\n setActionState({\n pendingCount: 0,\n status: \"idle\",\n result: initialResult,\n error: null,\n });\n }, [initialResult, setActionState]);\n\n return useMemo(\n () => ({\n pending: state.pendingCount > 0,\n status: state.status,\n result: state.result,\n error: state.error,\n submit,\n formAction,\n reset,\n }),\n [formAction, reset, state.error, state.pendingCount, state.result, state.status, submit],\n );\n}\n\nfunction normalizeServerFnError(error: unknown) {\n if (error instanceof Error) return error;\n\n const normalized = new Error(typeof error === \"string\" ? error : \"Server function failed\");\n (normalized as Error & { cause?: unknown }).cause = error;\n return normalized;\n}\n\nfunction isFormData(value: unknown): value is FormData {\n if (!value || typeof value !== \"object\") return false;\n\n if (typeof FormData !== \"undefined\" && value instanceof FormData) {\n return true;\n }\n\n return (\n Object.prototype.toString.call(value) === \"[object FormData]\" &&\n typeof (value as { entries?: unknown }).entries === \"function\"\n );\n}\n"],"mappings":";;;;;AAEA,SAAS,aAAa,SAAS,QAAQ,gBAAgB;AAgDhD,SAAS,YACd,UACA,UAAuD,CAAC,GACZ;AAC5C,QAAM,EAAE,gBAAgB,MAAM,gBAAgB,KAAK,IAAI;AACvD,QAAM,eAAe,OAAiD,CAAC,CAAC;AACxE,QAAM,eAAe,OAAO,CAAC;AAC7B,QAAM,eAAqD;AAAA,IACzD,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACA,QAAM,WAAW,OAA6C,YAAY;AAC1E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA+C,YAAY;AACrF,QAAM,iBAAiB;AAAA,IACrB,CACE,UAGG;AACH,eAAS,CAAC,YAAY;AACpB,cAAM,OAAO,OAAO,UAAU,aAAa,MAAM,OAAO,IAAI;AAC5D,iBAAS,UAAU;AACnB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC;AAAA,EACH;AAEA,eAAa,UAAU;AAAA,IACrB,SAAS,QAAQ;AAAA,IACjB,WAAW,QAAQ;AAAA,IACnB,WAAW,QAAQ;AAAA,IACnB,kBAAkB,QAAQ;AAAA,EAC5B;AAEA,QAAM,SAAS;AAAA,IACb,OAAO,UAA8B;AACnC,YAAM,YAAY,EAAE,aAAa;AACjC,YAAM,WAAW,WAAW,KAAK,IAAI,QAAQ;AAC7C,YAAM,iBAAiB,SAAS,QAAQ;AACxC,YAAM,mBAAmB,QAAQ,aAAa;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AACD,YAAM,sBAAsB,qBAAqB;AAEjD,qBAAe,CAAC,aAAa;AAAA,QAC3B,cAAc,QAAQ,eAAe;AAAA,QACrC,QAAQ;AAAA,QACR,QAAQ,sBAAsB,mBAAmB,gBAAgB,OAAO,QAAQ;AAAA,QAChF,OAAO;AAAA,MACT,EAAE;AAEF,UAAI;AACF,cAAM,SAAS,MAAM,SAAS,KAA0B;AACxD,cAAM,kBAAkB,cAAc,aAAa;AAEnD,uBAAe,CAAC,YAAY;AAC1B,gBAAM,eAAe,KAAK,IAAI,GAAG,QAAQ,eAAe,CAAC;AAEzD,cAAI,CAAC,iBAAiB;AACpB,mBAAO;AAAA,cACL,GAAG;AAAA,cACH;AAAA,cACA,QAAQ,eAAe,IAAI,YAAY,QAAQ;AAAA,YACjD;AAAA,UACF;AAEA,iBAAO;AAAA,YACL;AAAA,YACA,QAAQ,eAAe,IAAI,YAAY;AAAA,YACvC;AAAA,YACA,OAAO;AAAA,UACT;AAAA,QACF,CAAC;AAED,YAAI,iBAAiB;AACnB,uBAAa,QAAQ,YAAY,MAAM;AACvC,uBAAa,QAAQ,YAAY,QAAQ,IAAI;AAAA,QAC/C;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,cAAM,QAAQ,uBAAuB,KAAK;AAC1C,cAAM,kBAAkB,cAAc,aAAa;AAEnD,uBAAe,CAAC,YAAY;AAC1B,gBAAM,eAAe,KAAK,IAAI,GAAG,QAAQ,eAAe,CAAC;AAEzD,cAAI,CAAC,iBAAiB;AACpB,mBAAO;AAAA,cACL,GAAG;AAAA,cACH;AAAA,cACA,QAAQ,eAAe,IAAI,YAAY,QAAQ;AAAA,YACjD;AAAA,UACF;AAEA,iBAAO;AAAA,YACL;AAAA,YACA,QAAQ,eAAe,IAAI,YAAY;AAAA,YACvC,QACE,uBAAuB,QAAQ,kBAC3B,iBACA,gBACE,OACA,QAAQ;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAC;AAED,YAAI,iBAAiB;AACnB,uBAAa,QAAQ,UAAU,KAAK;AACpC,uBAAa,QAAQ,YAAY,MAAM,KAAK;AAAA,QAC9C;AAEA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,YAAY,QAAQ,iBAAiB,eAAe,UAAU,cAAc;AAAA,EACvF;AAEA,QAAM,aAAa;AAAA,IACjB,OAAO,aAAuB;AAC5B,UAAI;AACF,cAAM,OAAO,QAA6B;AAAA,MAC5C,SAAS,OAAO;AACd,YAAI,aAAa,QAAQ,kBAAkB;AACzC,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAEA,QAAM,QAAQ,YAAY,MAAM;AAC9B,iBAAa,WAAW;AACxB,mBAAe;AAAA,MACb,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,eAAe,cAAc,CAAC;AAElC,SAAO;AAAA,IACL,OAAO;AAAA,MACL,SAAS,MAAM,eAAe;AAAA,MAC9B,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,YAAY,OAAO,MAAM,OAAO,MAAM,cAAc,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAAA,EACzF;AACF;AA/JgB;AAiKhB,SAAS,uBAAuB,OAAgB;AAC9C,MAAI,iBAAiB,MAAO,QAAO;AAEnC,QAAM,aAAa,IAAI,MAAM,OAAO,UAAU,WAAW,QAAQ,wBAAwB;AACzF,EAAC,WAA2C,QAAQ;AACpD,SAAO;AACT;AANS;AAQT,SAAS,WAAW,OAAmC;AACrD,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAEhD,MAAI,OAAO,aAAa,eAAe,iBAAiB,UAAU;AAChE,WAAO;AAAA,EACT;AAEA,SACE,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,uBAC1C,OAAQ,MAAgC,YAAY;AAExD;AAXS;","names":[]}