@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 @@
1
+ {"version":3,"sources":["../src/cache.ts"],"sourcesContent":["import { emitFarmEvent } from \"./observability\";\nimport { notifyFarmCacheInvalidation, notifyFarmCacheTask } from \"./cache-invalidation\";\nimport { getActiveFarmI18nSnapshot } from \"./i18n/bridge\";\n\nexport { applyFarmCacheInvalidations } from \"./cache-invalidation\";\n\nexport type RevalidateTagProfile =\n | \"max\"\n | \"default\"\n | \"seconds\"\n | \"minutes\"\n | \"hours\"\n | \"days\"\n | \"weeks\"\n | \"months\"\n | { expire?: number };\n\nexport interface FarmCacheOptions {\n /**\n * Tag cached data so it can be invalidated with revalidateTag/updateTag.\n */\n tags?: readonly string[];\n /**\n * Path tags let revalidatePath invalidate data tied to a route.\n */\n paths?: readonly string[];\n /**\n * Time in seconds before the entry becomes stale. False means no TTL.\n */\n revalidate?: number | false;\n}\n\nexport interface FarmCacheSetOptions extends FarmCacheOptions {\n createdAt?: number;\n}\n\nexport type RouteDataCacheKey = string | readonly unknown[];\n\nexport type FarmCacheInvalidationTarget =\n | { key: RouteDataCacheKey }\n | { path: string }\n | { tag: string };\n\ndeclare const FARM_DEFINED_CACHE_KEY_DATA: unique symbol;\n\n/**\n * A regular Farm cache key carrying the data shape stored under that key.\n *\n * The brand exists only in TypeScript. At runtime the value remains the\n * original string or structured array, so all existing cache APIs continue to\n * accept untyped keys.\n */\nexport type DefinedCacheKey<TData, TKey extends RouteDataCacheKey = RouteDataCacheKey> = TKey & {\n readonly [FARM_DEFINED_CACHE_KEY_DATA]: TData;\n};\n\nexport type CacheKeyFactory<\n TData,\n TArguments extends readonly unknown[],\n TKey extends RouteDataCacheKey = RouteDataCacheKey,\n> = (...args: TArguments) => DefinedCacheKey<TData, TKey>;\n\nexport type InferCacheKeyData<TKey> =\n TKey extends DefinedCacheKey<infer TData, RouteDataCacheKey> ? TData : unknown;\n\n/**\n * Optionally add a data type to an existing string/array cache-key factory.\n *\n * This helper does not introduce a new runtime key representation. Calling the\n * returned factory produces the exact key returned by `factory`.\n */\nexport function defineCacheKey<TData>() {\n return <const TArguments extends readonly unknown[], const TKey extends RouteDataCacheKey>(\n factory: (...args: TArguments) => TKey,\n ): CacheKeyFactory<TData, TArguments, TKey> => {\n if (typeof factory !== \"function\") {\n throw new TypeError(\"defineCacheKey expects a key factory function.\");\n }\n\n return ((...args: TArguments) => {\n const key = factory(...args);\n if (typeof key !== \"string\" && !Array.isArray(key)) {\n throw new TypeError(\n \"A defined cache key factory must return a string or structured array.\",\n );\n }\n return key as DefinedCacheKey<TData, TKey>;\n }) as CacheKeyFactory<TData, TArguments, TKey>;\n };\n}\n\nexport interface FarmCacheEntry<T = unknown> {\n key: string;\n value: T;\n tags: readonly string[];\n /**\n * Adapter tag versions captured before the cached value was produced.\n * A later version makes the entry stale across every server instance.\n */\n tagVersions?: Readonly<Record<string, number>>;\n createdAt: number;\n createdVersion?: number;\n revalidate?: number | false;\n}\n\ninterface InternalFarmCacheEntry<T = unknown> {\n key: string;\n value: T;\n tags: Set<string>;\n tagVersions?: Readonly<Record<string, number>>;\n createdAt: number;\n createdVersion: number;\n revalidate?: number | false;\n}\n\n/**\n * Asynchronous persistence contract used by distributed Farm caches.\n *\n * Implementations are responsible for serializing cache entries and making\n * tag version updates atomic when the backing service supports it.\n */\nexport interface FarmCacheAdapter {\n readonly name?: string;\n get<T = unknown>(key: string): Promise<FarmCacheEntry<T> | null | undefined>;\n set<T = unknown>(key: string, entry: FarmCacheEntry<T>): Promise<void>;\n delete(key: string): Promise<void>;\n clear?(): Promise<void>;\n getTagVersions?(tags: readonly string[]): Promise<Readonly<Record<string, number>>>;\n invalidateTags?(tags: readonly string[]): Promise<void>;\n /** Atomically acquire a short-lived regeneration lease. */\n acquireLease?(key: string, ttlMs: number): Promise<string | null | undefined>;\n /** Release the lease only when the supplied ownership token still matches. */\n releaseLease?(key: string, token: string): Promise<void>;\n}\n\nexport interface FarmCacheUserConfig {\n /** Shared cache implementation, for example a Redis-backed adapter. */\n adapter?: FarmCacheAdapter;\n /** Prefix isolating applications and deployments sharing one adapter. */\n namespace?: string;\n /**\n * Coordinate cache fills across processes when the adapter implements\n * acquireLease/releaseLease. Set false to disable.\n */\n lease?:\n | false\n | {\n ttlMs?: number;\n waitTimeoutMs?: number;\n pollIntervalMs?: number;\n };\n}\n\nexport interface FarmCacheStorage {\n getItem<T = unknown>(key: string): Promise<T | null>;\n setItem<T = unknown>(key: string, value: T): Promise<unknown>;\n removeItem(key: string): Promise<unknown>;\n clear?(base?: string): Promise<unknown>;\n}\n\nexport interface StorageFarmCacheAdapterOptions {\n /** Prefix used inside the supplied storage client. */\n base?: string;\n}\n\n/**\n * Adapt a Farm/unstorage-compatible key-value client to the cache contract.\n *\n * This is a portable baseline adapter. Provider-specific adapters should use\n * their atomic increment/transaction primitives for tag invalidation.\n */\nexport function storageCacheAdapter(\n storage: FarmCacheStorage,\n options: StorageFarmCacheAdapterOptions = {},\n): FarmCacheAdapter {\n if (!storage || typeof storage.getItem !== \"function\" || typeof storage.setItem !== \"function\") {\n throw new TypeError(\"storageCacheAdapter expects a compatible storage client.\");\n }\n\n const base = normalizeCacheNamespace(options.base || \"farm-cache\");\n const entryKey = (key: string) => `${base}:entry:${key}`;\n const tagKey = (tag: string) => `${base}:tag:${tag}`;\n\n return {\n name: \"storage\",\n get: <T>(key: string) => storage.getItem<FarmCacheEntry<T>>(entryKey(key)),\n set: async <T>(key: string, entry: FarmCacheEntry<T>) => {\n await storage.setItem(entryKey(key), entry);\n },\n delete: async (key: string) => {\n await storage.removeItem(entryKey(key));\n },\n clear: storage.clear\n ? async () => {\n await storage.clear!(base);\n }\n : undefined,\n getTagVersions: async (tags) => {\n const versions = await Promise.all(\n tags.map(async (tag) => {\n const value = await storage.getItem<number>(tagKey(tag));\n return [tag, normalizeAdapterVersion(value)] as const;\n }),\n );\n return Object.fromEntries(versions);\n },\n invalidateTags: async (tags) => {\n await Promise.all(\n tags.map(async (tag) => {\n const key = tagKey(tag);\n const current = normalizeAdapterVersion(await storage.getItem<number>(key));\n await storage.setItem(key, Math.max(Date.now(), current + 1));\n }),\n );\n },\n };\n}\n\nexport interface GetFarmCacheEntryOptions {\n allowStale?: boolean;\n now?: number;\n}\n\ninterface FarmCacheStaleEntry {\n tags: Iterable<string>;\n createdAt: number;\n createdVersion?: number;\n revalidate?: number | false;\n}\n\nexport class FarmDataCache {\n private entries = new Map<string, InternalFarmCacheEntry>();\n private inflight = new Map<string, Promise<unknown>>();\n private invalidatedTagVersions = new Map<string, number>();\n private version = 0;\n private adapter?: FarmCacheAdapter;\n private namespace = \"farm\";\n private local = true;\n private lease = {\n enabled: true,\n ttlMs: 10_000,\n waitTimeoutMs: 10_000,\n pollIntervalMs: 25,\n };\n\n constructor(config: FarmCacheUserConfig = {}) {\n this.configure(config);\n }\n\n configure(config: FarmCacheUserConfig = {}): void {\n this.adapter = config.adapter;\n this.namespace = normalizeCacheNamespace(config.namespace || \"farm\");\n this.local = !config.adapter;\n this.lease =\n config.lease === false\n ? { ...this.lease, enabled: false }\n : {\n enabled: true,\n ttlMs: normalizePositiveDuration(config.lease?.ttlMs, 10_000, \"cache.lease.ttlMs\"),\n waitTimeoutMs: normalizePositiveDuration(\n config.lease?.waitTimeoutMs,\n 10_000,\n \"cache.lease.waitTimeoutMs\",\n ),\n pollIntervalMs: normalizePositiveDuration(\n config.lease?.pollIntervalMs,\n 25,\n \"cache.lease.pollIntervalMs\",\n ),\n };\n if (!this.local) {\n this.entries.clear();\n this.inflight.clear();\n this.invalidatedTagVersions.clear();\n this.version = 0;\n }\n }\n\n get adapterName(): string {\n return this.adapter?.name || (this.adapter ? \"custom\" : \"memory\");\n }\n\n get hasAdapter(): boolean {\n return this.adapter !== undefined;\n }\n\n get size(): number {\n return this.entries.size;\n }\n\n get<T>(key: string, options: GetFarmCacheEntryOptions = {}): T | undefined {\n return this.getEntry<T>(key, options)?.value;\n }\n\n getEntry<T = unknown>(\n key: string,\n options: GetFarmCacheEntryOptions = {},\n ): FarmCacheEntry<T> | undefined {\n const entry = this.entries.get(key) as InternalFarmCacheEntry<T> | undefined;\n if (!entry) {\n emitFarmEvent({ type: \"cache.miss\", key });\n return undefined;\n }\n\n const stale = this.isStale(entry, options.now);\n if (stale) {\n emitFarmEvent({\n type: \"cache.stale\",\n key,\n tags: Array.from(entry.tags),\n revalidate: entry.revalidate,\n });\n }\n\n if (!options.allowStale && stale) {\n emitFarmEvent({ type: \"cache.miss\", key, reason: \"stale\" });\n return undefined;\n }\n\n emitFarmEvent({\n type: \"cache.hit\",\n key,\n tags: Array.from(entry.tags),\n revalidate: entry.revalidate,\n stale,\n });\n\n return this.toPublicEntry(entry);\n }\n\n async getEntryAsync<T = unknown>(\n key: string,\n options: GetFarmCacheEntryOptions = {},\n ): Promise<FarmCacheEntry<T> | undefined> {\n if (this.local) {\n const localEntry = this.getEntry<T>(key, options);\n if (localEntry) return localEntry;\n }\n\n if (!this.adapter) {\n return this.local ? undefined : this.getEntry<T>(key, options);\n }\n\n const entry = await this.adapter.get<T>(this.createAdapterKey(key));\n if (!entry) {\n emitFarmEvent({ type: \"cache.miss\", key });\n return undefined;\n }\n\n assertFarmCacheEntry(entry, key);\n const stale = await this.isAdapterEntryStale(entry, options.now);\n if (stale) {\n emitFarmEvent({\n type: \"cache.stale\",\n key,\n tags: [...entry.tags],\n revalidate: entry.revalidate,\n });\n if (!options.allowStale) {\n emitFarmEvent({ type: \"cache.miss\", key, reason: \"stale\" });\n return undefined;\n }\n }\n\n emitFarmEvent({\n type: \"cache.hit\",\n key,\n tags: [...entry.tags],\n revalidate: entry.revalidate,\n stale,\n });\n\n if (this.local && !stale) {\n this.hydrateLocalEntry(entry);\n }\n return { ...entry, key };\n }\n\n set<T>(key: string, value: T, options: FarmCacheSetOptions = {}): FarmCacheEntry<T> {\n const tags = new Set<string>();\n for (const tag of options.tags ?? []) {\n tags.add(normalizeCacheTag(tag));\n }\n for (const routePath of options.paths ?? []) {\n tags.add(createPathCacheTag(routePath));\n }\n\n const entry: InternalFarmCacheEntry<T> = {\n key,\n value,\n tags,\n tagVersions: undefined,\n createdAt: options.createdAt ?? Date.now(),\n createdVersion: ++this.version,\n revalidate: normalizeRevalidate(options.revalidate),\n };\n\n this.entries.set(key, entry);\n emitFarmEvent({\n type: \"cache.set\",\n key,\n tags: Array.from(tags),\n revalidate: entry.revalidate,\n });\n return this.toPublicEntry(entry);\n }\n\n async setAsync<T>(\n key: string,\n value: T,\n options: FarmCacheSetOptions = {},\n tagVersions?: Readonly<Record<string, number>>,\n ): Promise<FarmCacheEntry<T>> {\n const tags = normalizeCacheOptionsTags(options);\n const capturedVersions =\n tagVersions ?? (await this.getAdapterTagVersions(Array.from(tags.values())));\n const entry: FarmCacheEntry<T> = {\n key,\n value,\n tags: Array.from(tags),\n tagVersions: capturedVersions,\n createdAt: options.createdAt ?? Date.now(),\n createdVersion: ++this.version,\n revalidate: normalizeRevalidate(options.revalidate),\n };\n\n if (this.local) {\n this.hydrateLocalEntry(entry);\n }\n if (this.adapter) {\n await this.adapter.set(this.createAdapterKey(key), entry);\n }\n\n emitFarmEvent({\n type: \"cache.set\",\n key,\n tags: [...entry.tags],\n revalidate: entry.revalidate,\n });\n return entry;\n }\n\n delete(key: string): boolean {\n const deleted = this.entries.delete(key);\n emitFarmEvent({ type: \"cache.delete\", key, deleted });\n return deleted;\n }\n\n async deleteAsync(key: string): Promise<boolean> {\n const deleted = this.entries.delete(key);\n if (this.adapter) {\n await this.adapter.delete(this.createAdapterKey(key));\n }\n emitFarmEvent({ type: \"cache.delete\", key, deleted: this.adapter ? true : deleted });\n return this.adapter ? true : deleted;\n }\n\n clear(): void {\n const count = this.entries.size;\n this.entries.clear();\n this.inflight.clear();\n this.invalidatedTagVersions.clear();\n this.version = 0;\n emitFarmEvent({ type: \"cache.clear\", count });\n }\n\n async clearAsync(): Promise<void> {\n this.clear();\n await this.adapter?.clear?.();\n }\n\n isStale(entry: FarmCacheStaleEntry, now = Date.now()): boolean {\n if (\n typeof entry.revalidate === \"number\" &&\n entry.revalidate > 0 &&\n now - entry.createdAt >= entry.revalidate * 1000\n ) {\n return true;\n }\n\n for (const tag of entry.tags) {\n const invalidatedVersion = this.invalidatedTagVersions.get(normalizeCacheTag(tag));\n if (\n typeof invalidatedVersion === \"number\" &&\n typeof entry.createdVersion === \"number\" &&\n invalidatedVersion > entry.createdVersion\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n async isStaleAsync(entry: FarmCacheEntry, now = Date.now()): Promise<boolean> {\n if (this.adapter) {\n return this.isAdapterEntryStale(entry, now);\n }\n return this.isStale(entry, now);\n }\n\n revalidateTag(\n tag: string,\n options: { source?: \"revalidateTag\" | \"updateTag\"; profile?: RevalidateTagProfile } = {},\n ): number {\n const normalized = normalizeCacheTag(tag);\n const count = this.invalidateTag(normalized);\n emitFarmEvent(\n options.source === \"updateTag\"\n ? { type: \"cache.updateTag\", tag: normalized, count }\n : { type: \"cache.revalidateTag\", tag: normalized, profile: options.profile, count },\n );\n return count;\n }\n\n async revalidateTagAsync(\n tag: string,\n options: { source?: \"revalidateTag\" | \"updateTag\"; profile?: RevalidateTagProfile } = {},\n ): Promise<number> {\n const normalized = normalizeCacheTag(tag);\n const count = this.invalidateTag(normalized);\n await this.adapter?.invalidateTags?.([this.createAdapterTag(normalized)]);\n emitFarmEvent(\n options.source === \"updateTag\"\n ? { type: \"cache.updateTag\", tag: normalized, count }\n : { type: \"cache.revalidateTag\", tag: normalized, profile: options.profile, count },\n );\n return count;\n }\n\n revalidatePath(routePath: string): number {\n const normalizedPath = normalizeRevalidatePath(routePath);\n const pathTag = createPathCacheTag(normalizedPath);\n const pprCount = this.countEntriesForTags([pathTag, \"ppr\"]);\n const count = this.invalidateTag(pathTag);\n emitFarmEvent({ type: \"cache.revalidatePath\", path: normalizedPath, count });\n\n if (pprCount > 0) {\n emitFarmEvent({\n type: \"ppr.shell.invalidated\",\n route: normalizedPath,\n reason: \"revalidatePath\",\n count: pprCount,\n });\n }\n\n return count;\n }\n\n async revalidatePathAsync(routePath: string): Promise<number> {\n const normalizedPath = normalizeRevalidatePath(routePath);\n const pathTag = createPathCacheTag(normalizedPath);\n const pprCount = this.countEntriesForTags([pathTag, \"ppr\"]);\n const count = this.invalidateTag(pathTag);\n await this.adapter?.invalidateTags?.([this.createAdapterTag(pathTag)]);\n emitFarmEvent({ type: \"cache.revalidatePath\", path: normalizedPath, count });\n\n if (pprCount > 0) {\n emitFarmEvent({\n type: \"ppr.shell.invalidated\",\n route: normalizedPath,\n reason: \"revalidatePath\",\n count: pprCount,\n });\n }\n\n return count;\n }\n\n async getOrSet<T>(\n key: string,\n producer: () => Promise<T> | T,\n options: FarmCacheOptions = {},\n ): Promise<T> {\n const cached = await this.getEntryAsync<T>(key);\n if (cached) {\n return cached.value;\n }\n\n const inflight = this.inflight.get(key) as Promise<T> | undefined;\n if (inflight) {\n emitFarmEvent({ type: \"cache.dedupe\", key });\n return inflight;\n }\n\n const tags = Array.from(normalizeCacheOptionsTags(options));\n const promise = this.fillCacheEntry(key, producer, options, tags)\n .catch((error) => {\n emitFarmEvent({ type: \"cache.error\", key, operation: \"set\", error });\n throw error;\n })\n .finally(() => {\n this.inflight.delete(key);\n });\n\n this.inflight.set(key, promise);\n return promise;\n }\n\n private async fillCacheEntry<T>(\n key: string,\n producer: () => Promise<T> | T,\n options: FarmCacheOptions,\n tags: readonly string[],\n ): Promise<T> {\n const leaseKey = `${this.namespace}:lease:${key}`;\n let leaseToken: string | null | undefined;\n\n if (this.adapter?.acquireLease && this.adapter.releaseLease && this.lease.enabled) {\n leaseToken = await this.adapter.acquireLease(leaseKey, this.lease.ttlMs);\n if (!leaseToken) {\n const shared = await this.waitForAdapterEntry<T>(key);\n if (shared) {\n emitFarmEvent({ type: \"cache.dedupe\", key });\n return shared.value;\n }\n leaseToken = await this.adapter.acquireLease(leaseKey, this.lease.ttlMs);\n }\n }\n\n try {\n const initialTagVersions = await this.getAdapterTagVersions(tags);\n const value = await producer();\n await this.setAsync(key, value, options, initialTagVersions);\n return value;\n } finally {\n if (leaseToken && this.adapter?.releaseLease) {\n await this.adapter.releaseLease(leaseKey, leaseToken);\n }\n }\n }\n\n private async waitForAdapterEntry<T>(key: string): Promise<FarmCacheEntry<T> | undefined> {\n const deadline = Date.now() + this.lease.waitTimeoutMs;\n while (Date.now() < deadline) {\n await delay(this.lease.pollIntervalMs);\n const entry = await this.getEntryAsync<T>(key);\n if (entry) return entry;\n }\n return undefined;\n }\n\n private countEntriesForTag(tag: string): number {\n let count = 0;\n for (const entry of this.entries.values()) {\n if (entry.tags.has(tag)) {\n count++;\n }\n }\n return count;\n }\n\n private countEntriesForTags(tags: readonly string[]): number {\n let count = 0;\n for (const entry of this.entries.values()) {\n if (tags.every((tag) => entry.tags.has(tag))) {\n count++;\n }\n }\n return count;\n }\n\n private invalidateTag(normalizedTag: string): number {\n this.invalidatedTagVersions.set(normalizedTag, ++this.version);\n return this.countEntriesForTag(normalizedTag);\n }\n\n private toPublicEntry<T>(entry: InternalFarmCacheEntry<T>): FarmCacheEntry<T> {\n return {\n key: entry.key,\n value: entry.value,\n tags: Array.from(entry.tags),\n tagVersions: entry.tagVersions,\n createdAt: entry.createdAt,\n createdVersion: entry.createdVersion,\n revalidate: entry.revalidate,\n };\n }\n\n private hydrateLocalEntry<T>(entry: FarmCacheEntry<T>): void {\n this.entries.set(entry.key, {\n key: entry.key,\n value: entry.value,\n tags: new Set(entry.tags.map(normalizeCacheTag)),\n tagVersions: entry.tagVersions,\n createdAt: entry.createdAt,\n createdVersion: entry.createdVersion ?? ++this.version,\n revalidate: normalizeRevalidate(entry.revalidate),\n });\n }\n\n private createAdapterKey(key: string): string {\n return `${this.namespace}:entry:${key}`;\n }\n\n private createAdapterTag(tag: string): string {\n return `${this.namespace}:tag:${tag}`;\n }\n\n private async getAdapterTagVersions(\n tags: readonly string[],\n ): Promise<Readonly<Record<string, number>>> {\n if (!this.adapter?.getTagVersions || tags.length === 0) return {};\n\n const normalized = tags.map(normalizeCacheTag);\n const physicalTags = normalized.map((tag) => this.createAdapterTag(tag));\n const versions = await this.adapter.getTagVersions(physicalTags);\n return Object.fromEntries(\n normalized.map((tag, index) => [\n tag,\n normalizeAdapterVersion(versions[physicalTags[index]!]),\n ]),\n );\n }\n\n private async isAdapterEntryStale(entry: FarmCacheEntry, now = Date.now()): Promise<boolean> {\n if (\n typeof entry.revalidate === \"number\" &&\n entry.revalidate > 0 &&\n now - entry.createdAt >= entry.revalidate * 1000\n ) {\n return true;\n }\n\n const currentVersions = await this.getAdapterTagVersions(entry.tags);\n for (const tag of entry.tags) {\n if (\n normalizeAdapterVersion(currentVersions[tag]) >\n normalizeAdapterVersion(entry.tagVersions?.[tag])\n ) {\n return true;\n }\n }\n return false;\n }\n}\n\nconst FARM_DATA_CACHE_SYMBOL = Symbol.for(\"farm.dataCache\");\nconst farmDataCacheGlobal = globalThis as typeof globalThis & {\n [FARM_DATA_CACHE_SYMBOL]?: FarmDataCache;\n};\nconst sharedFarmDataCache = (farmDataCacheGlobal[FARM_DATA_CACHE_SYMBOL] ??= new FarmDataCache());\nconst functionIds = new WeakMap<Function, number>();\nlet nextFunctionId = 0;\n\nexport function getFarmDataCache(): FarmDataCache {\n return sharedFarmDataCache;\n}\n\nexport function configureFarmCache(config: FarmCacheUserConfig | undefined): void {\n sharedFarmDataCache.configure(config);\n}\n\nexport function unstable_cache<Args extends unknown[], Result>(\n fn: (...args: Args) => Result | Promise<Result>,\n keyParts: readonly unknown[] = [],\n options: FarmCacheOptions = {},\n): (...args: Args) => Promise<Result> {\n return async (...args: Args): Promise<Result> => {\n const locale = getActiveFarmI18nSnapshot()?.locale;\n const key = createFarmCacheKey([\n \"unstable_cache\",\n getFunctionCacheIdentity(fn),\n locale ? [\"locale\", locale] : null,\n keyParts,\n args,\n ]);\n return getFarmDataCache().getOrSet<Result>(key, () => fn(...args), options);\n };\n}\n\nexport function revalidateTag(_tag: string, _profile?: RevalidateTagProfile): void | Promise<void> {\n const cache = getFarmDataCache();\n if (cache.hasAdapter) {\n const task = cache\n .revalidateTagAsync(_tag, {\n source: \"revalidateTag\",\n profile: _profile,\n })\n .then(() => undefined);\n notifyFarmCacheTask(task);\n return task;\n }\n cache.revalidateTag(_tag, {\n source: \"revalidateTag\",\n profile: _profile,\n });\n}\n\nexport function updateTag(tag: string): void | Promise<void> {\n const cache = getFarmDataCache();\n if (cache.hasAdapter) {\n const task = cache.revalidateTagAsync(tag, { source: \"updateTag\" }).then(() => undefined);\n notifyFarmCacheTask(task);\n return task;\n }\n cache.revalidateTag(tag, { source: \"updateTag\" });\n}\n\nexport function revalidatePath(routePath: string): void | Promise<void> {\n const cache = getFarmDataCache();\n if (cache.hasAdapter) {\n const task = cache.revalidatePathAsync(routePath).then(() => undefined);\n notifyFarmCacheTask(task);\n return task;\n }\n cache.revalidatePath(routePath);\n}\n\nexport function invalidate(key: RouteDataCacheKey): void | Promise<void> {\n const clientKey = createRouteDataCacheKey(key);\n const task = updateTag(createRouteDataCacheTag(key));\n notifyFarmCacheInvalidation(clientKey);\n return task;\n}\n\nexport function invalidateRouteData(key: RouteDataCacheKey): void | Promise<void> {\n return invalidate(key);\n}\n\n/**\n * Apply a normalized set of invalidation targets and return browser cache keys\n * that should be carried with an action/endpoint response.\n */\nexport async function applyFarmCacheInvalidationTargets(\n targets: readonly FarmCacheInvalidationTarget[],\n): Promise<readonly string[]> {\n if (!Array.isArray(targets)) {\n throw new TypeError(\"Cache invalidations must resolve to an array of targets.\");\n }\n\n const clientKeys: string[] = [];\n for (const target of targets) {\n assertFarmCacheInvalidationTarget(target);\n if (\"key\" in target) {\n await invalidate(target.key);\n clientKeys.push(createRouteDataCacheKey(target.key));\n } else if (\"path\" in target) {\n await revalidatePath(target.path);\n } else {\n await updateTag(target.tag);\n }\n }\n return Array.from(new Set(clientKeys));\n}\n\nexport function createPathCacheTag(routePath: string): string {\n return `path:${normalizeRevalidatePath(routePath)}`;\n}\n\nexport function createRouteDataCacheTag(key: RouteDataCacheKey): string {\n return `route-data:${createRouteDataCacheKey(key)}`;\n}\n\nexport function createRouteDataCacheKey(key: RouteDataCacheKey): string {\n return createFarmCacheKey(Array.isArray(key) ? key : [key]);\n}\n\nexport function normalizeRevalidatePath(routePath: string): string {\n if (typeof routePath !== \"string\") {\n throw new TypeError(\"revalidatePath expects a path string.\");\n }\n\n let normalized = routePath.trim();\n if (!normalized) {\n throw new Error(\"revalidatePath expects a non-empty path.\");\n }\n\n try {\n if (/^https?:\\/\\//.test(normalized)) {\n normalized = new URL(normalized).pathname;\n }\n } catch {\n // Keep the original path if URL parsing fails.\n }\n\n normalized = normalized.split(\"?\")[0] ?? normalized;\n normalized = normalized.startsWith(\"/\") ? normalized : `/${normalized}`;\n normalized = normalized.replace(/\\/{2,}/g, \"/\");\n if (normalized.length > 1) {\n normalized = normalized.replace(/\\/+$/, \"\");\n }\n return normalized || \"/\";\n}\n\nexport function createFarmCacheKey(parts: readonly unknown[]): string {\n return stableSerialize(parts);\n}\n\nfunction normalizeRevalidate(revalidate: number | false | undefined): number | false | undefined {\n if (revalidate === false || revalidate === undefined) {\n return revalidate;\n }\n if (!Number.isFinite(revalidate) || revalidate <= 0) {\n return undefined;\n }\n return revalidate;\n}\n\nfunction normalizeCacheTag(tag: string): string {\n if (typeof tag !== \"string\") {\n throw new TypeError(\"Cache tags must be strings.\");\n }\n const normalized = tag.trim();\n if (!normalized) {\n throw new Error(\"Cache tags cannot be empty.\");\n }\n return normalized;\n}\n\nfunction normalizeCacheNamespace(namespace: string): string {\n if (typeof namespace !== \"string\") {\n throw new TypeError(\"Cache namespace must be a string.\");\n }\n const normalized = namespace.trim().replace(/:+$/g, \"\");\n if (!normalized) {\n throw new Error(\"Cache namespace cannot be empty.\");\n }\n return normalized;\n}\n\nfunction normalizeAdapterVersion(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) && value > 0 ? value : 0;\n}\n\nfunction normalizePositiveDuration(\n value: number | undefined,\n fallback: number,\n name: string,\n): number {\n if (value === undefined) return fallback;\n if (!Number.isFinite(value) || value <= 0) {\n throw new TypeError(`${name} must be a positive number of milliseconds.`);\n }\n return Math.floor(value);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction normalizeCacheOptionsTags(options: FarmCacheOptions): Set<string> {\n const tags = new Set<string>();\n for (const tag of options.tags ?? []) {\n tags.add(normalizeCacheTag(tag));\n }\n for (const routePath of options.paths ?? []) {\n tags.add(createPathCacheTag(routePath));\n }\n return tags;\n}\n\nfunction assertFarmCacheEntry(\n entry: FarmCacheEntry,\n expectedKey: string,\n): asserts entry is FarmCacheEntry {\n if (\n !entry ||\n typeof entry !== \"object\" ||\n entry.key !== expectedKey ||\n !Array.isArray(entry.tags) ||\n typeof entry.createdAt !== \"number\"\n ) {\n throw new TypeError(\n `Cache adapter returned an invalid entry for ${JSON.stringify(expectedKey)}.`,\n );\n }\n}\n\nfunction assertFarmCacheInvalidationTarget(\n target: unknown,\n): asserts target is FarmCacheInvalidationTarget {\n if (!target || typeof target !== \"object\") {\n throw new TypeError(\"Cache invalidation targets must be { key }, { path }, or { tag }.\");\n }\n\n if (\"key\" in target) {\n const key = (target as { key?: unknown }).key;\n if (typeof key === \"string\" || Array.isArray(key)) return;\n } else if (\"path\" in target && typeof (target as { path?: unknown }).path === \"string\") {\n return;\n } else if (\"tag\" in target && typeof (target as { tag?: unknown }).tag === \"string\") {\n return;\n }\n\n throw new TypeError(\"Cache invalidation targets must contain a string/array key, path, or tag.\");\n}\n\nfunction getFunctionCacheIdentity(fn: Function): string {\n if (fn.name) {\n return `name:${fn.name}`;\n }\n\n let id = functionIds.get(fn);\n if (!id) {\n id = ++nextFunctionId;\n functionIds.set(fn, id);\n }\n return `anonymous:${id}`;\n}\n\nfunction stableSerialize(value: unknown, seen = new WeakSet<object>()): string {\n if (value === null) return \"null\";\n if (value === undefined) return \"undefined\";\n\n const valueType = typeof value;\n if (valueType === \"string\") return JSON.stringify(value);\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return `${valueType}:${String(value)}`;\n }\n if (valueType === \"symbol\") {\n return `symbol:${String(value)}`;\n }\n if (valueType === \"function\") {\n return `function:${getFunctionCacheIdentity(value as Function)}`;\n }\n\n if (value instanceof Date) {\n return `date:${value.toISOString()}`;\n }\n if (value instanceof URL) {\n return `url:${value.toString()}`;\n }\n if (value instanceof RegExp) {\n return `regexp:${value.toString()}`;\n }\n\n if (Array.isArray(value)) {\n return `[${value.map((item) => stableSerialize(item, seen)).join(\",\")}]`;\n }\n\n if (value && typeof value === \"object\") {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n\n const entries = Object.entries(value as Record<string, unknown>).sort(([a], [b]) =>\n a.localeCompare(b),\n );\n const serialized = entries\n .map(([key, item]) => `${JSON.stringify(key)}:${stableSerialize(item, seen)}`)\n .join(\",\");\n\n seen.delete(value);\n return `{${serialized}}`;\n }\n\n return String(value);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,352 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/environment-vite.ts
6
+ var ENVIRONMENT_IMPORTS = /* @__PURE__ */ new Set([
7
+ "@farm.js/core",
8
+ "@farm.js/core/environment",
9
+ "@farm.js/core/server"
10
+ ]);
11
+ var ENVIRONMENT_FUNCTIONS = /* @__PURE__ */ new Set([
12
+ "createServerOnlyFn",
13
+ "createClientOnlyFn",
14
+ "createIsomorphicFn"
15
+ ]);
16
+ var MODULE_EXTENSION_RE = /\.[cm]?[jt]sx?$/;
17
+ function transformEnvironmentFunctions(options) {
18
+ if (!isTransformableModule(options.id) || !containsEnvironmentFunction(options.code)) {
19
+ return null;
20
+ }
21
+ let output = options.code;
22
+ let transformed = false;
23
+ for (let pass = 0; pass < 20; pass++) {
24
+ const ast = options.parse(output);
25
+ const bindings = findEnvironmentFunctionBindings(ast);
26
+ if (bindings.named.size === 0 && bindings.namespaces.size === 0) break;
27
+ const calls = findEnvironmentCalls(ast, bindings);
28
+ if (calls.length === 0) break;
29
+ const innermostCalls = calls.filter(
30
+ (call) => !calls.some(
31
+ (candidate) => candidate !== call && candidate.node.start > call.node.start && candidate.node.end < call.node.end
32
+ )
33
+ );
34
+ const replacements = innermostCalls.map(
35
+ (call) => createReplacement(output, options.id, options.environment, call)
36
+ );
37
+ output = applyReplacements(output, replacements);
38
+ transformed = true;
39
+ }
40
+ if (!transformed) return null;
41
+ const remainingAst = options.parse(output);
42
+ const remainingBindings = findEnvironmentFunctionBindings(remainingAst);
43
+ if (findEnvironmentCalls(remainingAst, remainingBindings).length > 0) {
44
+ throw transformError(options.id, "environment functions are nested too deeply");
45
+ }
46
+ return { code: output };
47
+ }
48
+ __name(transformEnvironmentFunctions, "transformEnvironmentFunctions");
49
+ function farmEnvironmentFunctionsPlugin() {
50
+ return {
51
+ name: "farm:environment-functions",
52
+ enforce: "post",
53
+ transform(code, id, transformOptions) {
54
+ const result = transformEnvironmentFunctions({
55
+ code,
56
+ id,
57
+ environment: resolveBuildEnvironment(
58
+ this,
59
+ transformOptions?.ssr
60
+ ),
61
+ parse: /* @__PURE__ */ __name((source) => this.parse(source), "parse")
62
+ });
63
+ return result ? { code: result.code, map: null } : null;
64
+ }
65
+ };
66
+ }
67
+ __name(farmEnvironmentFunctionsPlugin, "farmEnvironmentFunctionsPlugin");
68
+ function resolveBuildEnvironment(context, ssr) {
69
+ if (context.environment?.name === "client") return "client";
70
+ if (context.environment?.name === "rsc" || context.environment?.name === "ssr") {
71
+ return "server";
72
+ }
73
+ return ssr ? "server" : "client";
74
+ }
75
+ __name(resolveBuildEnvironment, "resolveBuildEnvironment");
76
+ function findEnvironmentFunctionBindings(ast) {
77
+ const named = /* @__PURE__ */ new Map();
78
+ const namespaces = /* @__PURE__ */ new Set();
79
+ const body = Array.isArray(ast.body) ? ast.body : [];
80
+ for (const statement of body) {
81
+ if (!isAstNode(statement) || statement.type !== "ImportDeclaration") continue;
82
+ const source = isAstNode(statement.source) ? statement.source.value : void 0;
83
+ if (typeof source !== "string" || !ENVIRONMENT_IMPORTS.has(source)) continue;
84
+ const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];
85
+ for (const specifier of specifiers) {
86
+ if (!isAstNode(specifier) || !isAstNode(specifier.local)) continue;
87
+ const localName = specifier.local.name;
88
+ if (typeof localName !== "string") continue;
89
+ if (specifier.type === "ImportNamespaceSpecifier") {
90
+ namespaces.add(localName);
91
+ continue;
92
+ }
93
+ if (specifier.type !== "ImportSpecifier" || !isAstNode(specifier.imported)) continue;
94
+ const importedName = specifier.imported.name ?? specifier.imported.value;
95
+ if (isEnvironmentFunctionKind(importedName)) {
96
+ named.set(localName, importedName);
97
+ }
98
+ }
99
+ }
100
+ return { named, namespaces };
101
+ }
102
+ __name(findEnvironmentFunctionBindings, "findEnvironmentFunctionBindings");
103
+ function findEnvironmentCalls(ast, bindings) {
104
+ const calls = [];
105
+ walkAst(ast, (node, ancestors) => {
106
+ if (node.type !== "CallExpression" || !isAstNode(node.callee)) return;
107
+ if (node.callee.type === "Identifier" && typeof node.callee.name === "string") {
108
+ const kind = bindings.named.get(node.callee.name);
109
+ if (kind && !isNameShadowed(node.callee.name, ancestors)) calls.push({ node, kind });
110
+ return;
111
+ }
112
+ if (node.callee.type !== "MemberExpression" || node.callee.computed === true || !isAstNode(node.callee.object) || !isAstNode(node.callee.property) || node.callee.object.type !== "Identifier" || node.callee.property.type !== "Identifier" || typeof node.callee.object.name !== "string" || typeof node.callee.property.name !== "string" || !bindings.namespaces.has(node.callee.object.name) || isNameShadowed(node.callee.object.name, ancestors) || !isEnvironmentFunctionKind(node.callee.property.name)) {
113
+ return;
114
+ }
115
+ calls.push({ node, kind: node.callee.property.name });
116
+ });
117
+ return calls;
118
+ }
119
+ __name(findEnvironmentCalls, "findEnvironmentCalls");
120
+ function createReplacement(code, id, environment, call) {
121
+ const args = Array.isArray(call.node.arguments) ? call.node.arguments : [];
122
+ if (args.length !== 1 || !isAstNode(args[0]) || args[0].type === "SpreadElement") {
123
+ throw transformError(id, `${call.kind}() requires exactly one static argument`);
124
+ }
125
+ let replacement;
126
+ if (call.kind === "createIsomorphicFn") {
127
+ replacement = selectIsomorphicImplementation(code, id, environment, args[0]);
128
+ } else {
129
+ const expected = call.kind === "createServerOnlyFn" ? "server" : "client";
130
+ replacement = environment === expected ? readNode(code, args[0]) : `(0, ${readNode(code, call.node.callee)})(undefined, ${JSON.stringify(environment)})`;
131
+ }
132
+ return {
133
+ start: call.node.start,
134
+ end: call.node.end,
135
+ code: `(${replacement})`
136
+ };
137
+ }
138
+ __name(createReplacement, "createReplacement");
139
+ function selectIsomorphicImplementation(code, id, environment, optionsNode) {
140
+ if (optionsNode.type !== "ObjectExpression") {
141
+ throw transformError(id, "createIsomorphicFn() requires an inline options object");
142
+ }
143
+ const properties = Array.isArray(optionsNode.properties) ? optionsNode.properties : [];
144
+ if (properties.some((property) => isAstNode(property) && property.type === "SpreadElement")) {
145
+ throw transformError(id, "createIsomorphicFn() does not support spread properties");
146
+ }
147
+ let selectedProperty;
148
+ for (const property of properties) {
149
+ if (!isAstNode(property) || property.type !== "Property" || property.computed === true) {
150
+ continue;
151
+ }
152
+ const key = readPropertyName(property.key);
153
+ if (key === environment) selectedProperty = property;
154
+ }
155
+ if (!selectedProperty || !isAstNode(selectedProperty.value)) {
156
+ throw transformError(id, `createIsomorphicFn() requires a ${environment} implementation`);
157
+ }
158
+ if (selectedProperty.kind !== void 0 && selectedProperty.kind !== "init") {
159
+ throw transformError(id, "createIsomorphicFn() does not support getters or setters");
160
+ }
161
+ return selectedProperty.method === true ? renderObjectMethod(code, id, selectedProperty.value) : readNode(code, selectedProperty.value);
162
+ }
163
+ __name(selectIsomorphicImplementation, "selectIsomorphicImplementation");
164
+ function renderObjectMethod(code, id, functionNode) {
165
+ if (!isAstNode(functionNode.body) || !Array.isArray(functionNode.params)) {
166
+ throw transformError(id, "createIsomorphicFn() received an unsupported method");
167
+ }
168
+ const params = functionNode.params.map((param) => {
169
+ if (!isAstNode(param)) {
170
+ throw transformError(id, "createIsomorphicFn() received an unsupported parameter");
171
+ }
172
+ return readNode(code, param);
173
+ });
174
+ const asyncPrefix = functionNode.async === true ? "async " : "";
175
+ const generatorMarker = functionNode.generator === true ? "*" : "";
176
+ return `${asyncPrefix}function${generatorMarker}(${params.join(", ")}) ${readNode(code, functionNode.body)}`;
177
+ }
178
+ __name(renderObjectMethod, "renderObjectMethod");
179
+ function applyReplacements(code, replacements) {
180
+ let output = code;
181
+ for (const replacement of replacements.sort((left, right) => right.start - left.start)) {
182
+ output = output.slice(0, replacement.start) + replacement.code + output.slice(replacement.end);
183
+ }
184
+ return output;
185
+ }
186
+ __name(applyReplacements, "applyReplacements");
187
+ function walkAst(node, visit, ancestors = []) {
188
+ visit(node, ancestors);
189
+ const childAncestors = [...ancestors, node];
190
+ for (const [key, value] of Object.entries(node)) {
191
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
192
+ if (isAstNode(value)) {
193
+ walkAst(value, visit, childAncestors);
194
+ } else if (Array.isArray(value)) {
195
+ for (const item of value) {
196
+ if (isAstNode(item)) walkAst(item, visit, childAncestors);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ __name(walkAst, "walkAst");
202
+ function isNameShadowed(name, ancestors) {
203
+ for (const [index, ancestor] of ancestors.entries()) {
204
+ if (isFunctionNode(ancestor)) {
205
+ const params = Array.isArray(ancestor.params) ? ancestor.params : [];
206
+ if (params.some((param) => patternContainsName(param, name))) return true;
207
+ if (patternContainsName(ancestor.id, name)) return true;
208
+ if (isAstNode(ancestor.body) && ancestors.slice(index + 1).includes(ancestor.body) && functionBodyDeclaresVarName(ancestor.body, name)) {
209
+ return true;
210
+ }
211
+ }
212
+ if (ancestor.type === "CatchClause" && patternContainsName(ancestor.param, name)) {
213
+ return true;
214
+ }
215
+ if ((ancestor.type === "BlockStatement" || ancestor.type === "StaticBlock") && blockDeclaresName(ancestor, name)) {
216
+ return true;
217
+ }
218
+ if (loopDeclaresName(ancestor, name)) return true;
219
+ if (ancestor.type === "SwitchStatement" && ancestors.slice(index + 1).some((candidate) => candidate.type === "SwitchCase") && switchDeclaresName(ancestor, name)) {
220
+ return true;
221
+ }
222
+ if (ancestor.type === "ClassExpression" && patternContainsName(ancestor.id, name) && ancestors.slice(index + 1).some((candidate) => candidate.type === "ClassBody")) {
223
+ return true;
224
+ }
225
+ }
226
+ return false;
227
+ }
228
+ __name(isNameShadowed, "isNameShadowed");
229
+ function functionBodyDeclaresVarName(body, name) {
230
+ if (body.type === "VariableDeclaration" && body.kind === "var") {
231
+ const declarations = Array.isArray(body.declarations) ? body.declarations : [];
232
+ if (declarations.some(
233
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
234
+ )) {
235
+ return true;
236
+ }
237
+ }
238
+ for (const [key, value] of Object.entries(body)) {
239
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
240
+ if (isAstNode(value)) {
241
+ if (isNestedVarScope(value)) continue;
242
+ if (functionBodyDeclaresVarName(value, name)) return true;
243
+ } else if (Array.isArray(value)) {
244
+ for (const item of value) {
245
+ if (!isAstNode(item) || isNestedVarScope(item)) continue;
246
+ if (functionBodyDeclaresVarName(item, name)) return true;
247
+ }
248
+ }
249
+ }
250
+ return false;
251
+ }
252
+ __name(functionBodyDeclaresVarName, "functionBodyDeclaresVarName");
253
+ function isNestedVarScope(node) {
254
+ return isFunctionNode(node) || node.type === "ClassDeclaration" || node.type === "ClassExpression";
255
+ }
256
+ __name(isNestedVarScope, "isNestedVarScope");
257
+ function loopDeclaresName(node, name) {
258
+ const declaration = node.type === "ForStatement" ? node.init : node.type === "ForInStatement" || node.type === "ForOfStatement" ? node.left : void 0;
259
+ if (!isAstNode(declaration) || declaration.type !== "VariableDeclaration") return false;
260
+ const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];
261
+ return declarations.some((item) => isAstNode(item) && patternContainsName(item.id, name));
262
+ }
263
+ __name(loopDeclaresName, "loopDeclaresName");
264
+ function switchDeclaresName(node, name) {
265
+ const cases = Array.isArray(node.cases) ? node.cases : [];
266
+ return cases.some((switchCase) => {
267
+ if (!isAstNode(switchCase) || !Array.isArray(switchCase.consequent)) return false;
268
+ return switchCase.consequent.some((statement) => {
269
+ if (!isAstNode(statement)) return false;
270
+ if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
271
+ return true;
272
+ }
273
+ if (statement.type !== "VariableDeclaration" || statement.kind === "var") return false;
274
+ const declarations = Array.isArray(statement.declarations) ? statement.declarations : [];
275
+ return declarations.some(
276
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
277
+ );
278
+ });
279
+ });
280
+ }
281
+ __name(switchDeclaresName, "switchDeclaresName");
282
+ function blockDeclaresName(block, name) {
283
+ const statements = Array.isArray(block.body) ? block.body : [];
284
+ for (const statement of statements) {
285
+ if (!isAstNode(statement)) continue;
286
+ if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
287
+ return true;
288
+ }
289
+ if (statement.type !== "VariableDeclaration" || !Array.isArray(statement.declarations)) {
290
+ continue;
291
+ }
292
+ if (statement.declarations.some(
293
+ (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
294
+ )) {
295
+ return true;
296
+ }
297
+ }
298
+ return false;
299
+ }
300
+ __name(blockDeclaresName, "blockDeclaresName");
301
+ function patternContainsName(value, name) {
302
+ if (!isAstNode(value)) return false;
303
+ if (value.type === "Identifier") return value.name === name;
304
+ if (value.type === "RestElement") return patternContainsName(value.argument, name);
305
+ if (value.type === "AssignmentPattern") return patternContainsName(value.left, name);
306
+ if (value.type === "Property") return patternContainsName(value.value, name);
307
+ const elements = Array.isArray(value.elements) ? value.elements : Array.isArray(value.properties) ? value.properties : [];
308
+ return elements.some((element) => patternContainsName(element, name));
309
+ }
310
+ __name(patternContainsName, "patternContainsName");
311
+ function isFunctionNode(node) {
312
+ return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
313
+ }
314
+ __name(isFunctionNode, "isFunctionNode");
315
+ function readPropertyName(value) {
316
+ if (!isAstNode(value)) return void 0;
317
+ if (value.type === "Identifier" && typeof value.name === "string") return value.name;
318
+ if (value.type === "Literal" && typeof value.value === "string") return value.value;
319
+ return void 0;
320
+ }
321
+ __name(readPropertyName, "readPropertyName");
322
+ function readNode(code, node) {
323
+ return code.slice(node.start, node.end);
324
+ }
325
+ __name(readNode, "readNode");
326
+ function isAstNode(value) {
327
+ return !!value && typeof value === "object" && typeof value.type === "string" && typeof value.start === "number" && typeof value.end === "number";
328
+ }
329
+ __name(isAstNode, "isAstNode");
330
+ function isEnvironmentFunctionKind(value) {
331
+ return typeof value === "string" && ENVIRONMENT_FUNCTIONS.has(value);
332
+ }
333
+ __name(isEnvironmentFunctionKind, "isEnvironmentFunctionKind");
334
+ function containsEnvironmentFunction(code) {
335
+ return Array.from(ENVIRONMENT_FUNCTIONS).some((name) => code.includes(name));
336
+ }
337
+ __name(containsEnvironmentFunction, "containsEnvironmentFunction");
338
+ function isTransformableModule(id) {
339
+ const cleanId = id.split("?", 1)[0];
340
+ return MODULE_EXTENSION_RE.test(cleanId) && !/\.d\.[cm]?ts$/.test(cleanId);
341
+ }
342
+ __name(isTransformableModule, "isTransformableModule");
343
+ function transformError(id, message) {
344
+ return new Error(`[Farm environment functions] ${message} in ${id.split("?", 1)[0]}`);
345
+ }
346
+ __name(transformError, "transformError");
347
+
348
+ export {
349
+ transformEnvironmentFunctions,
350
+ farmEnvironmentFunctionsPlugin
351
+ };
352
+ //# sourceMappingURL=chunk-V6WE6JSZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/environment-vite.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport type { FarmEnvironment } from \"./environment\";\n\ntype EnvironmentFunctionKind = \"createServerOnlyFn\" | \"createClientOnlyFn\" | \"createIsomorphicFn\";\n\ninterface AstNode {\n type: string;\n start: number;\n end: number;\n [key: string]: unknown;\n}\n\ninterface EnvironmentCall {\n node: AstNode;\n kind: EnvironmentFunctionKind;\n}\n\ninterface Replacement {\n start: number;\n end: number;\n code: string;\n}\n\nexport interface TransformEnvironmentFunctionsOptions {\n code: string;\n id: string;\n environment: FarmEnvironment;\n parse: (code: string) => AstNode;\n}\n\nexport interface TransformEnvironmentFunctionsResult {\n code: string;\n}\n\nconst ENVIRONMENT_IMPORTS = new Set([\n \"@farm.js/core\",\n \"@farm.js/core/environment\",\n \"@farm.js/core/server\",\n]);\nconst ENVIRONMENT_FUNCTIONS = new Set<EnvironmentFunctionKind>([\n \"createServerOnlyFn\",\n \"createClientOnlyFn\",\n \"createIsomorphicFn\",\n]);\nconst MODULE_EXTENSION_RE = /\\.[cm]?[jt]sx?$/;\n\nexport function transformEnvironmentFunctions(\n options: TransformEnvironmentFunctionsOptions,\n): TransformEnvironmentFunctionsResult | null {\n if (!isTransformableModule(options.id) || !containsEnvironmentFunction(options.code)) {\n return null;\n }\n\n let output = options.code;\n let transformed = false;\n\n for (let pass = 0; pass < 20; pass++) {\n const ast = options.parse(output);\n const bindings = findEnvironmentFunctionBindings(ast);\n if (bindings.named.size === 0 && bindings.namespaces.size === 0) break;\n\n const calls = findEnvironmentCalls(ast, bindings);\n if (calls.length === 0) break;\n\n const innermostCalls = calls.filter(\n (call) =>\n !calls.some(\n (candidate) =>\n candidate !== call &&\n candidate.node.start > call.node.start &&\n candidate.node.end < call.node.end,\n ),\n );\n const replacements = innermostCalls.map((call) =>\n createReplacement(output, options.id, options.environment, call),\n );\n\n output = applyReplacements(output, replacements);\n transformed = true;\n }\n\n if (!transformed) return null;\n\n const remainingAst = options.parse(output);\n const remainingBindings = findEnvironmentFunctionBindings(remainingAst);\n if (findEnvironmentCalls(remainingAst, remainingBindings).length > 0) {\n throw transformError(options.id, \"environment functions are nested too deeply\");\n }\n\n return { code: output };\n}\n\nexport function farmEnvironmentFunctionsPlugin(): Plugin {\n return {\n name: \"farm:environment-functions\",\n enforce: \"post\",\n\n transform(code, id, transformOptions) {\n const result = transformEnvironmentFunctions({\n code,\n id,\n environment: resolveBuildEnvironment(\n this as unknown as { environment?: { name?: string } },\n transformOptions?.ssr,\n ),\n parse: (source) => this.parse(source) as unknown as AstNode,\n });\n\n return result ? { code: result.code, map: null } : null;\n },\n };\n}\n\nfunction resolveBuildEnvironment(\n context: { environment?: { name?: string } },\n ssr: boolean | undefined,\n): FarmEnvironment {\n if (context.environment?.name === \"client\") return \"client\";\n if (context.environment?.name === \"rsc\" || context.environment?.name === \"ssr\") {\n return \"server\";\n }\n return ssr ? \"server\" : \"client\";\n}\n\nfunction findEnvironmentFunctionBindings(ast: AstNode) {\n const named = new Map<string, EnvironmentFunctionKind>();\n const namespaces = new Set<string>();\n const body = Array.isArray(ast.body) ? ast.body : [];\n\n for (const statement of body) {\n if (!isAstNode(statement) || statement.type !== \"ImportDeclaration\") continue;\n const source = isAstNode(statement.source) ? statement.source.value : undefined;\n if (typeof source !== \"string\" || !ENVIRONMENT_IMPORTS.has(source)) continue;\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n for (const specifier of specifiers) {\n if (!isAstNode(specifier) || !isAstNode(specifier.local)) continue;\n const localName = specifier.local.name;\n if (typeof localName !== \"string\") continue;\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n namespaces.add(localName);\n continue;\n }\n\n if (specifier.type !== \"ImportSpecifier\" || !isAstNode(specifier.imported)) continue;\n const importedName = specifier.imported.name ?? specifier.imported.value;\n if (isEnvironmentFunctionKind(importedName)) {\n named.set(localName, importedName);\n }\n }\n }\n\n return { named, namespaces };\n}\n\nfunction findEnvironmentCalls(\n ast: AstNode,\n bindings: ReturnType<typeof findEnvironmentFunctionBindings>,\n): EnvironmentCall[] {\n const calls: EnvironmentCall[] = [];\n\n walkAst(ast, (node, ancestors) => {\n if (node.type !== \"CallExpression\" || !isAstNode(node.callee)) return;\n\n if (node.callee.type === \"Identifier\" && typeof node.callee.name === \"string\") {\n const kind = bindings.named.get(node.callee.name);\n if (kind && !isNameShadowed(node.callee.name, ancestors)) calls.push({ node, kind });\n return;\n }\n\n if (\n node.callee.type !== \"MemberExpression\" ||\n node.callee.computed === true ||\n !isAstNode(node.callee.object) ||\n !isAstNode(node.callee.property) ||\n node.callee.object.type !== \"Identifier\" ||\n node.callee.property.type !== \"Identifier\" ||\n typeof node.callee.object.name !== \"string\" ||\n typeof node.callee.property.name !== \"string\" ||\n !bindings.namespaces.has(node.callee.object.name) ||\n isNameShadowed(node.callee.object.name, ancestors) ||\n !isEnvironmentFunctionKind(node.callee.property.name)\n ) {\n return;\n }\n\n calls.push({ node, kind: node.callee.property.name });\n });\n\n return calls;\n}\n\nfunction createReplacement(\n code: string,\n id: string,\n environment: FarmEnvironment,\n call: EnvironmentCall,\n): Replacement {\n const args = Array.isArray(call.node.arguments) ? call.node.arguments : [];\n if (args.length !== 1 || !isAstNode(args[0]) || args[0].type === \"SpreadElement\") {\n throw transformError(id, `${call.kind}() requires exactly one static argument`);\n }\n\n let replacement: string;\n if (call.kind === \"createIsomorphicFn\") {\n replacement = selectIsomorphicImplementation(code, id, environment, args[0]);\n } else {\n const expected = call.kind === \"createServerOnlyFn\" ? \"server\" : \"client\";\n replacement =\n environment === expected\n ? readNode(code, args[0])\n : `(0, ${readNode(code, call.node.callee as AstNode)})(undefined, ${JSON.stringify(environment)})`;\n }\n\n return {\n start: call.node.start,\n end: call.node.end,\n code: `(${replacement})`,\n };\n}\n\nfunction selectIsomorphicImplementation(\n code: string,\n id: string,\n environment: FarmEnvironment,\n optionsNode: AstNode,\n): string {\n if (optionsNode.type !== \"ObjectExpression\") {\n throw transformError(id, \"createIsomorphicFn() requires an inline options object\");\n }\n\n const properties = Array.isArray(optionsNode.properties) ? optionsNode.properties : [];\n if (properties.some((property) => isAstNode(property) && property.type === \"SpreadElement\")) {\n throw transformError(id, \"createIsomorphicFn() does not support spread properties\");\n }\n\n let selectedProperty: AstNode | undefined;\n for (const property of properties) {\n if (!isAstNode(property) || property.type !== \"Property\" || property.computed === true) {\n continue;\n }\n const key = readPropertyName(property.key);\n if (key === environment) selectedProperty = property;\n }\n\n if (!selectedProperty || !isAstNode(selectedProperty.value)) {\n throw transformError(id, `createIsomorphicFn() requires a ${environment} implementation`);\n }\n if (selectedProperty.kind !== undefined && selectedProperty.kind !== \"init\") {\n throw transformError(id, \"createIsomorphicFn() does not support getters or setters\");\n }\n\n return selectedProperty.method === true\n ? renderObjectMethod(code, id, selectedProperty.value)\n : readNode(code, selectedProperty.value);\n}\n\nfunction renderObjectMethod(code: string, id: string, functionNode: AstNode): string {\n if (!isAstNode(functionNode.body) || !Array.isArray(functionNode.params)) {\n throw transformError(id, \"createIsomorphicFn() received an unsupported method\");\n }\n\n const params = functionNode.params.map((param) => {\n if (!isAstNode(param)) {\n throw transformError(id, \"createIsomorphicFn() received an unsupported parameter\");\n }\n return readNode(code, param);\n });\n const asyncPrefix = functionNode.async === true ? \"async \" : \"\";\n const generatorMarker = functionNode.generator === true ? \"*\" : \"\";\n return `${asyncPrefix}function${generatorMarker}(${params.join(\", \")}) ${readNode(code, functionNode.body)}`;\n}\n\nfunction applyReplacements(code: string, replacements: Replacement[]): string {\n let output = code;\n for (const replacement of replacements.sort((left, right) => right.start - left.start)) {\n output = output.slice(0, replacement.start) + replacement.code + output.slice(replacement.end);\n }\n return output;\n}\n\nfunction walkAst(\n node: AstNode,\n visit: (node: AstNode, ancestors: readonly AstNode[]) => void,\n ancestors: readonly AstNode[] = [],\n) {\n visit(node, ancestors);\n const childAncestors = [...ancestors, node];\n\n for (const [key, value] of Object.entries(node)) {\n if (key === \"start\" || key === \"end\" || key === \"loc\" || key === \"range\") continue;\n if (isAstNode(value)) {\n walkAst(value, visit, childAncestors);\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (isAstNode(item)) walkAst(item, visit, childAncestors);\n }\n }\n }\n}\n\nfunction isNameShadowed(name: string, ancestors: readonly AstNode[]): boolean {\n for (const [index, ancestor] of ancestors.entries()) {\n if (isFunctionNode(ancestor)) {\n const params = Array.isArray(ancestor.params) ? ancestor.params : [];\n if (params.some((param) => patternContainsName(param, name))) return true;\n if (patternContainsName(ancestor.id, name)) return true;\n if (\n isAstNode(ancestor.body) &&\n ancestors.slice(index + 1).includes(ancestor.body) &&\n functionBodyDeclaresVarName(ancestor.body, name)\n ) {\n return true;\n }\n }\n\n if (ancestor.type === \"CatchClause\" && patternContainsName(ancestor.param, name)) {\n return true;\n }\n\n if (\n (ancestor.type === \"BlockStatement\" || ancestor.type === \"StaticBlock\") &&\n blockDeclaresName(ancestor, name)\n ) {\n return true;\n }\n\n if (loopDeclaresName(ancestor, name)) return true;\n\n if (\n ancestor.type === \"SwitchStatement\" &&\n ancestors.slice(index + 1).some((candidate) => candidate.type === \"SwitchCase\") &&\n switchDeclaresName(ancestor, name)\n ) {\n return true;\n }\n\n if (\n ancestor.type === \"ClassExpression\" &&\n patternContainsName(ancestor.id, name) &&\n ancestors.slice(index + 1).some((candidate) => candidate.type === \"ClassBody\")\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction functionBodyDeclaresVarName(body: AstNode, name: string): boolean {\n if (body.type === \"VariableDeclaration\" && body.kind === \"var\") {\n const declarations = Array.isArray(body.declarations) ? body.declarations : [];\n if (\n declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n )\n ) {\n return true;\n }\n }\n\n for (const [key, value] of Object.entries(body)) {\n if (key === \"start\" || key === \"end\" || key === \"loc\" || key === \"range\") continue;\n if (isAstNode(value)) {\n if (isNestedVarScope(value)) continue;\n if (functionBodyDeclaresVarName(value, name)) return true;\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (!isAstNode(item) || isNestedVarScope(item)) continue;\n if (functionBodyDeclaresVarName(item, name)) return true;\n }\n }\n }\n\n return false;\n}\n\nfunction isNestedVarScope(node: AstNode): boolean {\n return (\n isFunctionNode(node) || node.type === \"ClassDeclaration\" || node.type === \"ClassExpression\"\n );\n}\n\nfunction loopDeclaresName(node: AstNode, name: string): boolean {\n const declaration =\n node.type === \"ForStatement\"\n ? node.init\n : node.type === \"ForInStatement\" || node.type === \"ForOfStatement\"\n ? node.left\n : undefined;\n if (!isAstNode(declaration) || declaration.type !== \"VariableDeclaration\") return false;\n\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n return declarations.some((item) => isAstNode(item) && patternContainsName(item.id, name));\n}\n\nfunction switchDeclaresName(node: AstNode, name: string): boolean {\n const cases = Array.isArray(node.cases) ? node.cases : [];\n return cases.some((switchCase) => {\n if (!isAstNode(switchCase) || !Array.isArray(switchCase.consequent)) return false;\n return switchCase.consequent.some((statement) => {\n if (!isAstNode(statement)) return false;\n if (\n (statement.type === \"FunctionDeclaration\" || statement.type === \"ClassDeclaration\") &&\n patternContainsName(statement.id, name)\n ) {\n return true;\n }\n if (statement.type !== \"VariableDeclaration\" || statement.kind === \"var\") return false;\n const declarations = Array.isArray(statement.declarations) ? statement.declarations : [];\n return declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n );\n });\n });\n}\n\nfunction blockDeclaresName(block: AstNode, name: string): boolean {\n const statements = Array.isArray(block.body) ? block.body : [];\n for (const statement of statements) {\n if (!isAstNode(statement)) continue;\n if (\n (statement.type === \"FunctionDeclaration\" || statement.type === \"ClassDeclaration\") &&\n patternContainsName(statement.id, name)\n ) {\n return true;\n }\n if (statement.type !== \"VariableDeclaration\" || !Array.isArray(statement.declarations)) {\n continue;\n }\n if (\n statement.declarations.some(\n (declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name),\n )\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction patternContainsName(value: unknown, name: string): boolean {\n if (!isAstNode(value)) return false;\n if (value.type === \"Identifier\") return value.name === name;\n\n if (value.type === \"RestElement\") return patternContainsName(value.argument, name);\n if (value.type === \"AssignmentPattern\") return patternContainsName(value.left, name);\n if (value.type === \"Property\") return patternContainsName(value.value, name);\n\n const elements = Array.isArray(value.elements)\n ? value.elements\n : Array.isArray(value.properties)\n ? value.properties\n : [];\n return elements.some((element) => patternContainsName(element, name));\n}\n\nfunction isFunctionNode(node: AstNode): boolean {\n return (\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction readPropertyName(value: unknown): string | undefined {\n if (!isAstNode(value)) return undefined;\n if (value.type === \"Identifier\" && typeof value.name === \"string\") return value.name;\n if (value.type === \"Literal\" && typeof value.value === \"string\") return value.value;\n return undefined;\n}\n\nfunction readNode(code: string, node: AstNode): string {\n return code.slice(node.start, node.end);\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as AstNode).type === \"string\" &&\n typeof (value as AstNode).start === \"number\" &&\n typeof (value as AstNode).end === \"number\"\n );\n}\n\nfunction isEnvironmentFunctionKind(value: unknown): value is EnvironmentFunctionKind {\n return typeof value === \"string\" && ENVIRONMENT_FUNCTIONS.has(value as EnvironmentFunctionKind);\n}\n\nfunction containsEnvironmentFunction(code: string): boolean {\n return Array.from(ENVIRONMENT_FUNCTIONS).some((name) => code.includes(name));\n}\n\nfunction isTransformableModule(id: string): boolean {\n const cleanId = id.split(\"?\", 1)[0];\n return MODULE_EXTENSION_RE.test(cleanId) && !/\\.d\\.[cm]?ts$/.test(cleanId);\n}\n\nfunction transformError(id: string, message: string): Error {\n return new Error(`[Farm environment functions] ${message} in ${id.split(\"?\", 1)[0]}`);\n}\n"],"mappings":";;;;;AAkCA,IAAM,sBAAsB,oBAAI,IAAI;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wBAAwB,oBAAI,IAA6B;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,sBAAsB;AAErB,SAAS,8BACd,SAC4C;AAC5C,MAAI,CAAC,sBAAsB,QAAQ,EAAE,KAAK,CAAC,4BAA4B,QAAQ,IAAI,GAAG;AACpF,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ;AACrB,MAAI,cAAc;AAElB,WAAS,OAAO,GAAG,OAAO,IAAI,QAAQ;AACpC,UAAM,MAAM,QAAQ,MAAM,MAAM;AAChC,UAAM,WAAW,gCAAgC,GAAG;AACpD,QAAI,SAAS,MAAM,SAAS,KAAK,SAAS,WAAW,SAAS,EAAG;AAEjE,UAAM,QAAQ,qBAAqB,KAAK,QAAQ;AAChD,QAAI,MAAM,WAAW,EAAG;AAExB,UAAM,iBAAiB,MAAM;AAAA,MAC3B,CAAC,SACC,CAAC,MAAM;AAAA,QACL,CAAC,cACC,cAAc,QACd,UAAU,KAAK,QAAQ,KAAK,KAAK,SACjC,UAAU,KAAK,MAAM,KAAK,KAAK;AAAA,MACnC;AAAA,IACJ;AACA,UAAM,eAAe,eAAe;AAAA,MAAI,CAAC,SACvC,kBAAkB,QAAQ,QAAQ,IAAI,QAAQ,aAAa,IAAI;AAAA,IACjE;AAEA,aAAS,kBAAkB,QAAQ,YAAY;AAC/C,kBAAc;AAAA,EAChB;AAEA,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,eAAe,QAAQ,MAAM,MAAM;AACzC,QAAM,oBAAoB,gCAAgC,YAAY;AACtE,MAAI,qBAAqB,cAAc,iBAAiB,EAAE,SAAS,GAAG;AACpE,UAAM,eAAe,QAAQ,IAAI,6CAA6C;AAAA,EAChF;AAEA,SAAO,EAAE,MAAM,OAAO;AACxB;AA5CgB;AA8CT,SAAS,iCAAyC;AACvD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,UAAU,MAAM,IAAI,kBAAkB;AACpC,YAAM,SAAS,8BAA8B;AAAA,QAC3C;AAAA,QACA;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,QACpB;AAAA,QACA,OAAO,wBAAC,WAAW,KAAK,MAAM,MAAM,GAA7B;AAAA,MACT,CAAC;AAED,aAAO,SAAS,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK,IAAI;AAAA,IACrD;AAAA,EACF;AACF;AAnBgB;AAqBhB,SAAS,wBACP,SACA,KACiB;AACjB,MAAI,QAAQ,aAAa,SAAS,SAAU,QAAO;AACnD,MAAI,QAAQ,aAAa,SAAS,SAAS,QAAQ,aAAa,SAAS,OAAO;AAC9E,WAAO;AAAA,EACT;AACA,SAAO,MAAM,WAAW;AAC1B;AATS;AAWT,SAAS,gCAAgC,KAAc;AACrD,QAAM,QAAQ,oBAAI,IAAqC;AACvD,QAAM,aAAa,oBAAI,IAAY;AACnC,QAAM,OAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC;AAEnD,aAAW,aAAa,MAAM;AAC5B,QAAI,CAAC,UAAU,SAAS,KAAK,UAAU,SAAS,oBAAqB;AACrE,UAAM,SAAS,UAAU,UAAU,MAAM,IAAI,UAAU,OAAO,QAAQ;AACtE,QAAI,OAAO,WAAW,YAAY,CAAC,oBAAoB,IAAI,MAAM,EAAG;AAEpE,UAAM,aAAa,MAAM,QAAQ,UAAU,UAAU,IAAI,UAAU,aAAa,CAAC;AACjF,eAAW,aAAa,YAAY;AAClC,UAAI,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,UAAU,KAAK,EAAG;AAC1D,YAAM,YAAY,UAAU,MAAM;AAClC,UAAI,OAAO,cAAc,SAAU;AAEnC,UAAI,UAAU,SAAS,4BAA4B;AACjD,mBAAW,IAAI,SAAS;AACxB;AAAA,MACF;AAEA,UAAI,UAAU,SAAS,qBAAqB,CAAC,UAAU,UAAU,QAAQ,EAAG;AAC5E,YAAM,eAAe,UAAU,SAAS,QAAQ,UAAU,SAAS;AACnE,UAAI,0BAA0B,YAAY,GAAG;AAC3C,cAAM,IAAI,WAAW,YAAY;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,WAAW;AAC7B;AA9BS;AAgCT,SAAS,qBACP,KACA,UACmB;AACnB,QAAM,QAA2B,CAAC;AAElC,UAAQ,KAAK,CAAC,MAAM,cAAc;AAChC,QAAI,KAAK,SAAS,oBAAoB,CAAC,UAAU,KAAK,MAAM,EAAG;AAE/D,QAAI,KAAK,OAAO,SAAS,gBAAgB,OAAO,KAAK,OAAO,SAAS,UAAU;AAC7E,YAAM,OAAO,SAAS,MAAM,IAAI,KAAK,OAAO,IAAI;AAChD,UAAI,QAAQ,CAAC,eAAe,KAAK,OAAO,MAAM,SAAS,EAAG,OAAM,KAAK,EAAE,MAAM,KAAK,CAAC;AACnF;AAAA,IACF;AAEA,QACE,KAAK,OAAO,SAAS,sBACrB,KAAK,OAAO,aAAa,QACzB,CAAC,UAAU,KAAK,OAAO,MAAM,KAC7B,CAAC,UAAU,KAAK,OAAO,QAAQ,KAC/B,KAAK,OAAO,OAAO,SAAS,gBAC5B,KAAK,OAAO,SAAS,SAAS,gBAC9B,OAAO,KAAK,OAAO,OAAO,SAAS,YACnC,OAAO,KAAK,OAAO,SAAS,SAAS,YACrC,CAAC,SAAS,WAAW,IAAI,KAAK,OAAO,OAAO,IAAI,KAChD,eAAe,KAAK,OAAO,OAAO,MAAM,SAAS,KACjD,CAAC,0BAA0B,KAAK,OAAO,SAAS,IAAI,GACpD;AACA;AAAA,IACF;AAEA,UAAM,KAAK,EAAE,MAAM,MAAM,KAAK,OAAO,SAAS,KAAK,CAAC;AAAA,EACtD,CAAC;AAED,SAAO;AACT;AAnCS;AAqCT,SAAS,kBACP,MACA,IACA,aACA,MACa;AACb,QAAM,OAAO,MAAM,QAAQ,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,CAAC;AACzE,MAAI,KAAK,WAAW,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,SAAS,iBAAiB;AAChF,UAAM,eAAe,IAAI,GAAG,KAAK,IAAI,yCAAyC;AAAA,EAChF;AAEA,MAAI;AACJ,MAAI,KAAK,SAAS,sBAAsB;AACtC,kBAAc,+BAA+B,MAAM,IAAI,aAAa,KAAK,CAAC,CAAC;AAAA,EAC7E,OAAO;AACL,UAAM,WAAW,KAAK,SAAS,uBAAuB,WAAW;AACjE,kBACE,gBAAgB,WACZ,SAAS,MAAM,KAAK,CAAC,CAAC,IACtB,OAAO,SAAS,MAAM,KAAK,KAAK,MAAiB,CAAC,gBAAgB,KAAK,UAAU,WAAW,CAAC;AAAA,EACrG;AAEA,SAAO;AAAA,IACL,OAAO,KAAK,KAAK;AAAA,IACjB,KAAK,KAAK,KAAK;AAAA,IACf,MAAM,IAAI,WAAW;AAAA,EACvB;AACF;AA3BS;AA6BT,SAAS,+BACP,MACA,IACA,aACA,aACQ;AACR,MAAI,YAAY,SAAS,oBAAoB;AAC3C,UAAM,eAAe,IAAI,wDAAwD;AAAA,EACnF;AAEA,QAAM,aAAa,MAAM,QAAQ,YAAY,UAAU,IAAI,YAAY,aAAa,CAAC;AACrF,MAAI,WAAW,KAAK,CAAC,aAAa,UAAU,QAAQ,KAAK,SAAS,SAAS,eAAe,GAAG;AAC3F,UAAM,eAAe,IAAI,yDAAyD;AAAA,EACpF;AAEA,MAAI;AACJ,aAAW,YAAY,YAAY;AACjC,QAAI,CAAC,UAAU,QAAQ,KAAK,SAAS,SAAS,cAAc,SAAS,aAAa,MAAM;AACtF;AAAA,IACF;AACA,UAAM,MAAM,iBAAiB,SAAS,GAAG;AACzC,QAAI,QAAQ,YAAa,oBAAmB;AAAA,EAC9C;AAEA,MAAI,CAAC,oBAAoB,CAAC,UAAU,iBAAiB,KAAK,GAAG;AAC3D,UAAM,eAAe,IAAI,mCAAmC,WAAW,iBAAiB;AAAA,EAC1F;AACA,MAAI,iBAAiB,SAAS,UAAa,iBAAiB,SAAS,QAAQ;AAC3E,UAAM,eAAe,IAAI,0DAA0D;AAAA,EACrF;AAEA,SAAO,iBAAiB,WAAW,OAC/B,mBAAmB,MAAM,IAAI,iBAAiB,KAAK,IACnD,SAAS,MAAM,iBAAiB,KAAK;AAC3C;AAlCS;AAoCT,SAAS,mBAAmB,MAAc,IAAY,cAA+B;AACnF,MAAI,CAAC,UAAU,aAAa,IAAI,KAAK,CAAC,MAAM,QAAQ,aAAa,MAAM,GAAG;AACxE,UAAM,eAAe,IAAI,qDAAqD;AAAA,EAChF;AAEA,QAAM,SAAS,aAAa,OAAO,IAAI,CAAC,UAAU;AAChD,QAAI,CAAC,UAAU,KAAK,GAAG;AACrB,YAAM,eAAe,IAAI,wDAAwD;AAAA,IACnF;AACA,WAAO,SAAS,MAAM,KAAK;AAAA,EAC7B,CAAC;AACD,QAAM,cAAc,aAAa,UAAU,OAAO,WAAW;AAC7D,QAAM,kBAAkB,aAAa,cAAc,OAAO,MAAM;AAChE,SAAO,GAAG,WAAW,WAAW,eAAe,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,SAAS,MAAM,aAAa,IAAI,CAAC;AAC5G;AAdS;AAgBT,SAAS,kBAAkB,MAAc,cAAqC;AAC5E,MAAI,SAAS;AACb,aAAW,eAAe,aAAa,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,KAAK,GAAG;AACtF,aAAS,OAAO,MAAM,GAAG,YAAY,KAAK,IAAI,YAAY,OAAO,OAAO,MAAM,YAAY,GAAG;AAAA,EAC/F;AACA,SAAO;AACT;AANS;AAQT,SAAS,QACP,MACA,OACA,YAAgC,CAAC,GACjC;AACA,QAAM,MAAM,SAAS;AACrB,QAAM,iBAAiB,CAAC,GAAG,WAAW,IAAI;AAE1C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,QAAI,QAAQ,WAAW,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAS;AAC1E,QAAI,UAAU,KAAK,GAAG;AACpB,cAAQ,OAAO,OAAO,cAAc;AAAA,IACtC,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,iBAAW,QAAQ,OAAO;AACxB,YAAI,UAAU,IAAI,EAAG,SAAQ,MAAM,OAAO,cAAc;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACF;AAlBS;AAoBT,SAAS,eAAe,MAAc,WAAwC;AAC5E,aAAW,CAAC,OAAO,QAAQ,KAAK,UAAU,QAAQ,GAAG;AACnD,QAAI,eAAe,QAAQ,GAAG;AAC5B,YAAM,SAAS,MAAM,QAAQ,SAAS,MAAM,IAAI,SAAS,SAAS,CAAC;AACnE,UAAI,OAAO,KAAK,CAAC,UAAU,oBAAoB,OAAO,IAAI,CAAC,EAAG,QAAO;AACrE,UAAI,oBAAoB,SAAS,IAAI,IAAI,EAAG,QAAO;AACnD,UACE,UAAU,SAAS,IAAI,KACvB,UAAU,MAAM,QAAQ,CAAC,EAAE,SAAS,SAAS,IAAI,KACjD,4BAA4B,SAAS,MAAM,IAAI,GAC/C;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,SAAS,SAAS,iBAAiB,oBAAoB,SAAS,OAAO,IAAI,GAAG;AAChF,aAAO;AAAA,IACT;AAEA,SACG,SAAS,SAAS,oBAAoB,SAAS,SAAS,kBACzD,kBAAkB,UAAU,IAAI,GAChC;AACA,aAAO;AAAA,IACT;AAEA,QAAI,iBAAiB,UAAU,IAAI,EAAG,QAAO;AAE7C,QACE,SAAS,SAAS,qBAClB,UAAU,MAAM,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,UAAU,SAAS,YAAY,KAC9E,mBAAmB,UAAU,IAAI,GACjC;AACA,aAAO;AAAA,IACT;AAEA,QACE,SAAS,SAAS,qBAClB,oBAAoB,SAAS,IAAI,IAAI,KACrC,UAAU,MAAM,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,UAAU,SAAS,WAAW,GAC7E;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AA9CS;AAgDT,SAAS,4BAA4B,MAAe,MAAuB;AACzE,MAAI,KAAK,SAAS,yBAAyB,KAAK,SAAS,OAAO;AAC9D,UAAM,eAAe,MAAM,QAAQ,KAAK,YAAY,IAAI,KAAK,eAAe,CAAC;AAC7E,QACE,aAAa;AAAA,MACX,CAAC,gBAAgB,UAAU,WAAW,KAAK,oBAAoB,YAAY,IAAI,IAAI;AAAA,IACrF,GACA;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,QAAI,QAAQ,WAAW,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAS;AAC1E,QAAI,UAAU,KAAK,GAAG;AACpB,UAAI,iBAAiB,KAAK,EAAG;AAC7B,UAAI,4BAA4B,OAAO,IAAI,EAAG,QAAO;AAAA,IACvD,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,iBAAW,QAAQ,OAAO;AACxB,YAAI,CAAC,UAAU,IAAI,KAAK,iBAAiB,IAAI,EAAG;AAChD,YAAI,4BAA4B,MAAM,IAAI,EAAG,QAAO;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AA1BS;AA4BT,SAAS,iBAAiB,MAAwB;AAChD,SACE,eAAe,IAAI,KAAK,KAAK,SAAS,sBAAsB,KAAK,SAAS;AAE9E;AAJS;AAMT,SAAS,iBAAiB,MAAe,MAAuB;AAC9D,QAAM,cACJ,KAAK,SAAS,iBACV,KAAK,OACL,KAAK,SAAS,oBAAoB,KAAK,SAAS,mBAC9C,KAAK,OACL;AACR,MAAI,CAAC,UAAU,WAAW,KAAK,YAAY,SAAS,sBAAuB,QAAO;AAElF,QAAM,eAAe,MAAM,QAAQ,YAAY,YAAY,IAAI,YAAY,eAAe,CAAC;AAC3F,SAAO,aAAa,KAAK,CAAC,SAAS,UAAU,IAAI,KAAK,oBAAoB,KAAK,IAAI,IAAI,CAAC;AAC1F;AAXS;AAaT,SAAS,mBAAmB,MAAe,MAAuB;AAChE,QAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AACxD,SAAO,MAAM,KAAK,CAAC,eAAe;AAChC,QAAI,CAAC,UAAU,UAAU,KAAK,CAAC,MAAM,QAAQ,WAAW,UAAU,EAAG,QAAO;AAC5E,WAAO,WAAW,WAAW,KAAK,CAAC,cAAc;AAC/C,UAAI,CAAC,UAAU,SAAS,EAAG,QAAO;AAClC,WACG,UAAU,SAAS,yBAAyB,UAAU,SAAS,uBAChE,oBAAoB,UAAU,IAAI,IAAI,GACtC;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,SAAS,yBAAyB,UAAU,SAAS,MAAO,QAAO;AACjF,YAAM,eAAe,MAAM,QAAQ,UAAU,YAAY,IAAI,UAAU,eAAe,CAAC;AACvF,aAAO,aAAa;AAAA,QAClB,CAAC,gBAAgB,UAAU,WAAW,KAAK,oBAAoB,YAAY,IAAI,IAAI;AAAA,MACrF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAnBS;AAqBT,SAAS,kBAAkB,OAAgB,MAAuB;AAChE,QAAM,aAAa,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC;AAC7D,aAAW,aAAa,YAAY;AAClC,QAAI,CAAC,UAAU,SAAS,EAAG;AAC3B,SACG,UAAU,SAAS,yBAAyB,UAAU,SAAS,uBAChE,oBAAoB,UAAU,IAAI,IAAI,GACtC;AACA,aAAO;AAAA,IACT;AACA,QAAI,UAAU,SAAS,yBAAyB,CAAC,MAAM,QAAQ,UAAU,YAAY,GAAG;AACtF;AAAA,IACF;AACA,QACE,UAAU,aAAa;AAAA,MACrB,CAAC,gBAAgB,UAAU,WAAW,KAAK,oBAAoB,YAAY,IAAI,IAAI;AAAA,IACrF,GACA;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAtBS;AAwBT,SAAS,oBAAoB,OAAgB,MAAuB;AAClE,MAAI,CAAC,UAAU,KAAK,EAAG,QAAO;AAC9B,MAAI,MAAM,SAAS,aAAc,QAAO,MAAM,SAAS;AAEvD,MAAI,MAAM,SAAS,cAAe,QAAO,oBAAoB,MAAM,UAAU,IAAI;AACjF,MAAI,MAAM,SAAS,oBAAqB,QAAO,oBAAoB,MAAM,MAAM,IAAI;AACnF,MAAI,MAAM,SAAS,WAAY,QAAO,oBAAoB,MAAM,OAAO,IAAI;AAE3E,QAAM,WAAW,MAAM,QAAQ,MAAM,QAAQ,IACzC,MAAM,WACN,MAAM,QAAQ,MAAM,UAAU,IAC5B,MAAM,aACN,CAAC;AACP,SAAO,SAAS,KAAK,CAAC,YAAY,oBAAoB,SAAS,IAAI,CAAC;AACtE;AAdS;AAgBT,SAAS,eAAe,MAAwB;AAC9C,SACE,KAAK,SAAS,yBACd,KAAK,SAAS,wBACd,KAAK,SAAS;AAElB;AANS;AAQT,SAAS,iBAAiB,OAAoC;AAC5D,MAAI,CAAC,UAAU,KAAK,EAAG,QAAO;AAC9B,MAAI,MAAM,SAAS,gBAAgB,OAAO,MAAM,SAAS,SAAU,QAAO,MAAM;AAChF,MAAI,MAAM,SAAS,aAAa,OAAO,MAAM,UAAU,SAAU,QAAO,MAAM;AAC9E,SAAO;AACT;AALS;AAOT,SAAS,SAAS,MAAc,MAAuB;AACrD,SAAO,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG;AACxC;AAFS;AAIT,SAAS,UAAU,OAAkC;AACnD,SACE,CAAC,CAAC,SACF,OAAO,UAAU,YACjB,OAAQ,MAAkB,SAAS,YACnC,OAAQ,MAAkB,UAAU,YACpC,OAAQ,MAAkB,QAAQ;AAEtC;AARS;AAUT,SAAS,0BAA0B,OAAkD;AACnF,SAAO,OAAO,UAAU,YAAY,sBAAsB,IAAI,KAAgC;AAChG;AAFS;AAIT,SAAS,4BAA4B,MAAuB;AAC1D,SAAO,MAAM,KAAK,qBAAqB,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC;AAC7E;AAFS;AAIT,SAAS,sBAAsB,IAAqB;AAClD,QAAM,UAAU,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;AAClC,SAAO,oBAAoB,KAAK,OAAO,KAAK,CAAC,gBAAgB,KAAK,OAAO;AAC3E;AAHS;AAKT,SAAS,eAAe,IAAY,SAAwB;AAC1D,SAAO,IAAI,MAAM,gCAAgC,OAAO,OAAO,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;AACtF;AAFS;","names":[]}