@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,161 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/observability.ts
6
+ var runtimeHandlers = /* @__PURE__ */ new Set();
7
+ var observabilityState = {
8
+ logs: false,
9
+ handlers: []
10
+ };
11
+ function configureFarmObservability(config) {
12
+ observabilityState = normalizeFarmObservabilityConfig(config);
13
+ }
14
+ __name(configureFarmObservability, "configureFarmObservability");
15
+ function normalizeFarmObservabilityConfig(config) {
16
+ if (config === void 0 || config === false) {
17
+ return { logs: false, handlers: [] };
18
+ }
19
+ if (config === true) {
20
+ return { logs: true, handlers: [] };
21
+ }
22
+ const handlers = config.onEvent ? Array.isArray(config.onEvent) ? [...config.onEvent] : [config.onEvent] : [];
23
+ return {
24
+ logs: config.logs ?? false,
25
+ handlers,
26
+ events: config.events ? new Set(config.events) : void 0
27
+ };
28
+ }
29
+ __name(normalizeFarmObservabilityConfig, "normalizeFarmObservabilityConfig");
30
+ function onFarmEvent(handler) {
31
+ runtimeHandlers.add(handler);
32
+ return () => {
33
+ runtimeHandlers.delete(handler);
34
+ };
35
+ }
36
+ __name(onFarmEvent, "onFarmEvent");
37
+ function resetFarmObservability() {
38
+ runtimeHandlers.clear();
39
+ observabilityState = {
40
+ logs: false,
41
+ handlers: []
42
+ };
43
+ }
44
+ __name(resetFarmObservability, "resetFarmObservability");
45
+ function emitFarmEvent(input) {
46
+ const event = {
47
+ timestamp: Date.now(),
48
+ level: inferFarmEventLevel(input.type),
49
+ ...input
50
+ };
51
+ if (!shouldEmitFarmEvent(event)) {
52
+ return event;
53
+ }
54
+ if (observabilityState.logs) {
55
+ logFarmEvent(event);
56
+ }
57
+ for (const handler of [...observabilityState.handlers, ...runtimeHandlers]) {
58
+ try {
59
+ Promise.resolve(handler(event)).catch((error) => {
60
+ console.warn(`[farm:observability] event handler failed: ${formatError(error)}`);
61
+ });
62
+ } catch (error) {
63
+ console.warn(`[farm:observability] event handler failed: ${formatError(error)}`);
64
+ }
65
+ }
66
+ return event;
67
+ }
68
+ __name(emitFarmEvent, "emitFarmEvent");
69
+ function shouldEmitFarmEvent(event) {
70
+ if (!observabilityState.logs && observabilityState.handlers.length === 0 && runtimeHandlers.size === 0) {
71
+ return false;
72
+ }
73
+ if (observabilityState.events && !observabilityState.events.has(event.type)) {
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ __name(shouldEmitFarmEvent, "shouldEmitFarmEvent");
79
+ function inferFarmEventLevel(type) {
80
+ if (type === "error" || type.endsWith(".error") || type.endsWith(".failed")) {
81
+ return "error";
82
+ }
83
+ if (type.endsWith(".bypass") || type.endsWith(".invalidated") || type.endsWith(".stale") || type.endsWith(".notFound")) {
84
+ return "warn";
85
+ }
86
+ if (type.endsWith(".hit") || type.endsWith(".miss") || type.endsWith(".start") || type.endsWith(".shellReady")) {
87
+ return "debug";
88
+ }
89
+ return "info";
90
+ }
91
+ __name(inferFarmEventLevel, "inferFarmEventLevel");
92
+ function logFarmEvent(event) {
93
+ const message = `[farm:${event.level}] ${event.type}${formatFarmEventDetails(event)}`;
94
+ switch (event.level) {
95
+ case "error":
96
+ console.error(message);
97
+ break;
98
+ case "warn":
99
+ console.warn(message);
100
+ break;
101
+ default:
102
+ console.log(message);
103
+ break;
104
+ }
105
+ }
106
+ __name(logFarmEvent, "logFarmEvent");
107
+ function formatFarmEventDetails(event) {
108
+ const details = [];
109
+ const record = event;
110
+ for (const key of [
111
+ "route",
112
+ "pathname",
113
+ "method",
114
+ "status",
115
+ "key",
116
+ "tag",
117
+ "path",
118
+ "reason",
119
+ "durationMs",
120
+ "integration",
121
+ "operation",
122
+ "plugin",
123
+ "hook",
124
+ "target",
125
+ "count"
126
+ ]) {
127
+ const value = record[key];
128
+ if (value !== void 0) {
129
+ details.push(`${key}=${formatDetailValue(value)}`);
130
+ }
131
+ }
132
+ return details.length > 0 ? ` ${details.join(" ")}` : "";
133
+ }
134
+ __name(formatFarmEventDetails, "formatFarmEventDetails");
135
+ function formatDetailValue(value) {
136
+ if (typeof value === "string") {
137
+ return value;
138
+ }
139
+ if (typeof value === "number" || typeof value === "boolean") {
140
+ return String(value);
141
+ }
142
+ try {
143
+ return JSON.stringify(value);
144
+ } catch {
145
+ return String(value);
146
+ }
147
+ }
148
+ __name(formatDetailValue, "formatDetailValue");
149
+ function formatError(error) {
150
+ return error instanceof Error ? error.message : String(error);
151
+ }
152
+ __name(formatError, "formatError");
153
+
154
+ export {
155
+ configureFarmObservability,
156
+ normalizeFarmObservabilityConfig,
157
+ onFarmEvent,
158
+ resetFarmObservability,
159
+ emitFarmEvent
160
+ };
161
+ //# sourceMappingURL=chunk-7ZY5AIJO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/observability.ts"],"sourcesContent":["export type FarmEventLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface FarmEventBase {\n type: string;\n timestamp: number;\n level: FarmEventLevel;\n requestId?: string;\n route?: string;\n pathname?: string;\n}\n\nexport type FarmServerEvent =\n | (FarmEventBase & {\n type: \"server.start\";\n mode: \"dev\" | \"preview\" | \"production\";\n port?: number;\n })\n | (FarmEventBase & { type: \"server.ready\"; url?: string })\n | (FarmEventBase & { type: \"server.shutdown\"; reason?: string });\n\nexport type FarmRouteEvent =\n | (FarmEventBase & { type: \"route.discovered\"; route: string; filePath: string })\n | (FarmEventBase & {\n type: \"route.matched\";\n pathname: string;\n route: string;\n params?: Record<string, string>;\n })\n | (FarmEventBase & { type: \"route.notFound\"; pathname: string })\n | (FarmEventBase & { type: \"route.redirect\"; from: string; to: string; status?: number })\n | (FarmEventBase & { type: \"route.rewrite\"; from: string; to: string });\n\nexport type FarmRenderEvent =\n | (FarmEventBase & { type: \"render.start\"; route: string; pathname?: string })\n | (FarmEventBase & {\n type: \"render.complete\";\n route: string;\n durationMs: number;\n status?: number;\n })\n | (FarmEventBase & { type: \"render.error\"; route?: string; error: unknown })\n | (FarmEventBase & { type: \"render.stream.start\"; route: string })\n | (FarmEventBase & { type: \"render.stream.shellReady\"; route: string; durationMs: number })\n | (FarmEventBase & { type: \"render.stream.complete\"; route: string; durationMs: number });\n\nexport type FarmCacheEvent =\n | (FarmEventBase & {\n type: \"cache.hit\";\n key: string;\n route?: string;\n tags?: readonly string[];\n revalidate?: number | false;\n stale?: boolean;\n })\n | (FarmEventBase & { type: \"cache.miss\"; key: string; route?: string; reason?: string })\n | (FarmEventBase & {\n type: \"cache.set\";\n key: string;\n route?: string;\n tags?: readonly string[];\n revalidate?: number | false;\n })\n | (FarmEventBase & { type: \"cache.dedupe\"; key: string })\n | (FarmEventBase & { type: \"cache.bypass\"; key?: string; route?: string; reason: string })\n | (FarmEventBase & {\n type: \"cache.stale\";\n key: string;\n route?: string;\n tags?: readonly string[];\n revalidate?: number | false;\n })\n | (FarmEventBase & { type: \"cache.revalidatePath\"; path: string; count: number })\n | (FarmEventBase & {\n type: \"cache.revalidateTag\";\n tag: string;\n profile?: unknown;\n count: number;\n })\n | (FarmEventBase & { type: \"cache.updateTag\"; tag: string; count: number })\n | (FarmEventBase & {\n type: \"cache.invalidated\";\n key?: string;\n route?: string;\n tag?: string;\n reason?: string;\n count?: number;\n })\n | (FarmEventBase & { type: \"cache.delete\"; key: string; deleted: boolean })\n | (FarmEventBase & { type: \"cache.clear\"; count: number })\n | (FarmEventBase & {\n type: \"cache.error\";\n key?: string;\n operation: \"get\" | \"set\" | \"delete\" | \"revalidate\";\n error: unknown;\n });\n\nexport type FarmPPREvent =\n | (FarmEventBase & { type: \"ppr.shell.hit\"; route: string; key: string })\n | (FarmEventBase & { type: \"ppr.shell.miss\"; route: string; key: string })\n | (FarmEventBase & {\n type: \"ppr.shell.cached\";\n route: string;\n key: string;\n revalidate?: number;\n })\n | (FarmEventBase & { type: \"ppr.shell.bypass\"; route: string; reason: string })\n | (FarmEventBase & {\n type: \"ppr.shell.invalidated\";\n route: string;\n reason?: string;\n count?: number;\n })\n | (FarmEventBase & { type: \"ppr.suspense.holeDetected\"; route: string })\n | (FarmEventBase & { type: \"ppr.refresh.start\"; route: string })\n | (FarmEventBase & { type: \"ppr.refresh.complete\"; route: string; durationMs: number })\n | (FarmEventBase & { type: \"ppr.refresh.error\"; route: string; error: unknown });\n\nexport type FarmAPIEvent =\n | (FarmEventBase & { type: \"api.request.start\"; route: string; method: string })\n | (FarmEventBase & {\n type: \"api.request.complete\";\n route: string;\n method: string;\n status: number;\n durationMs: number;\n })\n | (FarmEventBase & {\n type: \"api.validation.failed\";\n route: string;\n method: string;\n issues?: unknown;\n })\n | (FarmEventBase & { type: \"api.error\"; route: string; method: string; error: unknown });\n\nexport type FarmIntegrationEvent =\n | (FarmEventBase & { type: \"integration.registered\"; name: string })\n | (FarmEventBase & { type: \"integration.config.validated\"; name: string })\n | (FarmEventBase & { type: \"integration.ready\"; name: string })\n | (FarmEventBase & { type: \"integration.disposed\"; name: string })\n | (FarmEventBase & {\n type: \"integration.api.call.start\";\n integration: string;\n operation: string;\n })\n | (FarmEventBase & {\n type: \"integration.api.call.complete\";\n integration: string;\n operation: string;\n durationMs: number;\n })\n | (FarmEventBase & {\n type: \"integration.api.call.error\";\n integration: string;\n operation: string;\n error: unknown;\n })\n | (FarmEventBase & { type: \"integration.webhook.received\"; integration: string; event?: string })\n | (FarmEventBase & { type: \"integration.webhook.verified\"; integration: string; event?: string })\n | (FarmEventBase & { type: \"integration.webhook.failed\"; integration: string; reason: string });\n\nexport type FarmMiddlewareEvent =\n | (FarmEventBase & { type: \"middleware.start\"; route?: string; name?: string })\n | (FarmEventBase & {\n type: \"middleware.complete\";\n route?: string;\n name?: string;\n durationMs: number;\n })\n | (FarmEventBase & {\n type: \"middleware.shortCircuit\";\n route?: string;\n name?: string;\n status?: number;\n })\n | (FarmEventBase & { type: \"middleware.error\"; route?: string; name?: string; error: unknown });\n\nexport type FarmStorageEvent =\n | (FarmEventBase & { type: \"storage.query.start\"; integration?: string; operation: string })\n | (FarmEventBase & {\n type: \"storage.query.complete\";\n integration?: string;\n operation: string;\n durationMs: number;\n })\n | (FarmEventBase & {\n type: \"storage.query.error\";\n integration?: string;\n operation: string;\n error: unknown;\n })\n | (FarmEventBase & { type: \"storage.schema.ready\"; integration?: string })\n | (FarmEventBase & { type: \"storage.schema.error\"; integration?: string; error: unknown });\n\nexport type FarmBuildEvent =\n | (FarmEventBase & { type: \"build.start\"; target?: string })\n | (FarmEventBase & { type: \"build.complete\"; target?: string; durationMs: number })\n | (FarmEventBase & { type: \"build.error\"; target?: string; error: unknown })\n | (FarmEventBase & { type: \"routes.generated\"; pageCount: number; apiCount?: number })\n | (FarmEventBase & { type: \"types.generated\"; filePath: string })\n | (FarmEventBase & { type: \"manifest.generated\"; routeCount: number });\n\nexport type FarmPluginEvent =\n | (FarmEventBase & { type: \"plugin.hook.start\"; plugin: string; hook: string })\n | (FarmEventBase & {\n type: \"plugin.hook.complete\";\n plugin: string;\n hook: string;\n durationMs: number;\n })\n | (FarmEventBase & { type: \"plugin.hook.error\"; plugin: string; hook: string; error: unknown });\n\nexport type FarmErrorEvent = FarmEventBase & {\n type: \"error\";\n source: string;\n error: unknown;\n route?: string;\n};\n\nexport type FarmEvent =\n | FarmServerEvent\n | FarmRouteEvent\n | FarmRenderEvent\n | FarmCacheEvent\n | FarmPPREvent\n | FarmAPIEvent\n | FarmIntegrationEvent\n | FarmMiddlewareEvent\n | FarmStorageEvent\n | FarmBuildEvent\n | FarmPluginEvent\n | FarmErrorEvent;\n\nexport type FarmEventType = FarmEvent[\"type\"];\nexport type FarmEventHandler = (event: FarmEvent) => void | Promise<void>;\n\nexport type FarmEventInput = FarmEvent extends infer T\n ? T extends FarmEvent\n ? Omit<T, \"timestamp\" | \"level\"> & Partial<Pick<T, \"timestamp\" | \"level\">>\n : never\n : never;\n\nexport type FarmObservabilityUserConfig =\n | boolean\n | {\n logs?: boolean;\n onEvent?: FarmEventHandler | readonly FarmEventHandler[];\n events?: readonly FarmEventType[];\n };\n\nexport interface FarmResolvedObservabilityConfig {\n logs: boolean;\n handlers: FarmEventHandler[];\n events?: Set<FarmEventType>;\n}\n\nconst runtimeHandlers = new Set<FarmEventHandler>();\nlet observabilityState: FarmResolvedObservabilityConfig = {\n logs: false,\n handlers: [],\n};\n\nexport function configureFarmObservability(config: FarmObservabilityUserConfig | undefined): void {\n observabilityState = normalizeFarmObservabilityConfig(config);\n}\n\nexport function normalizeFarmObservabilityConfig(\n config: FarmObservabilityUserConfig | undefined,\n): FarmResolvedObservabilityConfig {\n if (config === undefined || config === false) {\n return { logs: false, handlers: [] };\n }\n\n if (config === true) {\n return { logs: true, handlers: [] };\n }\n\n const handlers = config.onEvent\n ? Array.isArray(config.onEvent)\n ? [...config.onEvent]\n : [config.onEvent]\n : [];\n\n return {\n logs: config.logs ?? false,\n handlers,\n events: config.events ? new Set(config.events) : undefined,\n };\n}\n\nexport function onFarmEvent(handler: FarmEventHandler): () => void {\n runtimeHandlers.add(handler);\n return () => {\n runtimeHandlers.delete(handler);\n };\n}\n\nexport function resetFarmObservability(): void {\n runtimeHandlers.clear();\n observabilityState = {\n logs: false,\n handlers: [],\n };\n}\n\nexport function emitFarmEvent(input: FarmEventInput): FarmEvent {\n const event = {\n timestamp: Date.now(),\n level: inferFarmEventLevel(input.type),\n ...input,\n } as FarmEvent;\n\n if (!shouldEmitFarmEvent(event)) {\n return event;\n }\n\n if (observabilityState.logs) {\n logFarmEvent(event);\n }\n\n for (const handler of [...observabilityState.handlers, ...runtimeHandlers]) {\n try {\n Promise.resolve(handler(event)).catch((error) => {\n console.warn(`[farm:observability] event handler failed: ${formatError(error)}`);\n });\n } catch (error) {\n console.warn(`[farm:observability] event handler failed: ${formatError(error)}`);\n }\n }\n\n return event;\n}\n\nfunction shouldEmitFarmEvent(event: FarmEvent): boolean {\n if (\n !observabilityState.logs &&\n observabilityState.handlers.length === 0 &&\n runtimeHandlers.size === 0\n ) {\n return false;\n }\n\n if (observabilityState.events && !observabilityState.events.has(event.type)) {\n return false;\n }\n\n return true;\n}\n\nfunction inferFarmEventLevel(type: FarmEventType): FarmEventLevel {\n if (type === \"error\" || type.endsWith(\".error\") || type.endsWith(\".failed\")) {\n return \"error\";\n }\n if (\n type.endsWith(\".bypass\") ||\n type.endsWith(\".invalidated\") ||\n type.endsWith(\".stale\") ||\n type.endsWith(\".notFound\")\n ) {\n return \"warn\";\n }\n if (\n type.endsWith(\".hit\") ||\n type.endsWith(\".miss\") ||\n type.endsWith(\".start\") ||\n type.endsWith(\".shellReady\")\n ) {\n return \"debug\";\n }\n return \"info\";\n}\n\nfunction logFarmEvent(event: FarmEvent): void {\n const message = `[farm:${event.level}] ${event.type}${formatFarmEventDetails(event)}`;\n switch (event.level) {\n case \"error\":\n console.error(message);\n break;\n case \"warn\":\n console.warn(message);\n break;\n default:\n console.log(message);\n break;\n }\n}\n\nfunction formatFarmEventDetails(event: FarmEvent): string {\n const details: string[] = [];\n const record = event as unknown as Record<string, unknown>;\n\n for (const key of [\n \"route\",\n \"pathname\",\n \"method\",\n \"status\",\n \"key\",\n \"tag\",\n \"path\",\n \"reason\",\n \"durationMs\",\n \"integration\",\n \"operation\",\n \"plugin\",\n \"hook\",\n \"target\",\n \"count\",\n ]) {\n const value = record[key];\n if (value !== undefined) {\n details.push(`${key}=${formatDetailValue(value)}`);\n }\n }\n\n return details.length > 0 ? ` ${details.join(\" \")}` : \"\";\n}\n\nfunction formatDetailValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,187 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/api/transport.ts
6
+ function multipart(schema) {
7
+ if (!Object.isExtensible(schema) && !isMultipartSchema(schema)) {
8
+ throw new TypeError("multipart() requires an extensible schema object");
9
+ }
10
+ if (!isMultipartSchema(schema)) {
11
+ Object.defineProperty(schema, "__farmMultipartSchema", {
12
+ value: true,
13
+ configurable: false,
14
+ enumerable: false,
15
+ writable: false
16
+ });
17
+ }
18
+ return schema;
19
+ }
20
+ __name(multipart, "multipart");
21
+ function isMultipartSchema(value) {
22
+ return typeof value === "object" && value !== null && value.__farmMultipartSchema === true && typeof value.parse === "function";
23
+ }
24
+ __name(isMultipartSchema, "isMultipartSchema");
25
+ function toFormData(values) {
26
+ const formData = new FormData();
27
+ for (const [key, value] of Object.entries(values)) {
28
+ if (isUnsafeFormKey(key)) continue;
29
+ if (Array.isArray(value)) {
30
+ for (const entry of value) appendFormValue(formData, key, entry);
31
+ continue;
32
+ }
33
+ appendFormValue(formData, key, value);
34
+ }
35
+ return formData;
36
+ }
37
+ __name(toFormData, "toFormData");
38
+ function jsonStream(source, init = {}) {
39
+ const iterator = toAsyncIterator(source);
40
+ const encoder = new TextEncoder();
41
+ let finished = false;
42
+ const body = new ReadableStream(
43
+ {
44
+ async pull(controller) {
45
+ if (finished) return;
46
+ try {
47
+ const next = await iterator.next();
48
+ if (next.done) {
49
+ finished = true;
50
+ controller.close();
51
+ return;
52
+ }
53
+ controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}
54
+ `));
55
+ } catch (error) {
56
+ finished = true;
57
+ controller.error(error);
58
+ }
59
+ },
60
+ async cancel(reason) {
61
+ finished = true;
62
+ await iterator.return?.(reason);
63
+ }
64
+ },
65
+ {
66
+ // Do not read the next application event until the response consumer
67
+ // requests another chunk.
68
+ highWaterMark: 0
69
+ }
70
+ );
71
+ const headers = new Headers(init.headers);
72
+ if (!headers.has("content-type")) {
73
+ headers.set("content-type", "application/x-ndjson; charset=utf-8");
74
+ }
75
+ headers.set("cache-control", headers.get("cache-control") ?? "no-store");
76
+ return new Response(body, {
77
+ ...init,
78
+ headers
79
+ });
80
+ }
81
+ __name(jsonStream, "jsonStream");
82
+ function isJSONStreamResponse(response) {
83
+ const contentType = response.headers?.get?.("content-type")?.toLowerCase() ?? "";
84
+ return contentType.includes("application/x-ndjson") || contentType.includes("application/ndjson");
85
+ }
86
+ __name(isJSONStreamResponse, "isJSONStreamResponse");
87
+ function readJSONStream(response) {
88
+ if (!response.body) {
89
+ throw new TypeError("Cannot read a JSON stream response without a body");
90
+ }
91
+ const reader = response.body.getReader();
92
+ const decoder = new TextDecoder();
93
+ let buffer = "";
94
+ let completed = false;
95
+ let claimed = false;
96
+ const iterator = {
97
+ async next() {
98
+ while (true) {
99
+ const lineEnd = buffer.indexOf("\n");
100
+ if (lineEnd >= 0) {
101
+ const line = buffer.slice(0, lineEnd).trim();
102
+ buffer = buffer.slice(lineEnd + 1);
103
+ if (!line) continue;
104
+ return { done: false, value: JSON.parse(line) };
105
+ }
106
+ if (completed) {
107
+ const line = buffer.trim();
108
+ buffer = "";
109
+ if (!line) return { done: true, value: void 0 };
110
+ return { done: false, value: JSON.parse(line) };
111
+ }
112
+ const chunk = await reader.read();
113
+ completed = chunk.done;
114
+ buffer += decoder.decode(chunk.value, { stream: !chunk.done });
115
+ }
116
+ },
117
+ async return() {
118
+ completed = true;
119
+ buffer = "";
120
+ await reader.cancel();
121
+ return { done: true, value: void 0 };
122
+ }
123
+ };
124
+ return {
125
+ response,
126
+ async cancel(reason) {
127
+ completed = true;
128
+ buffer = "";
129
+ await reader.cancel(reason);
130
+ },
131
+ [Symbol.asyncIterator]() {
132
+ if (claimed) {
133
+ throw new TypeError("Farm API streams can only be consumed once");
134
+ }
135
+ claimed = true;
136
+ return iterator;
137
+ }
138
+ };
139
+ }
140
+ __name(readJSONStream, "readJSONStream");
141
+ function isFarmAPIStream(value) {
142
+ return typeof value === "object" && value !== null && "response" in value && typeof value.cancel === "function" && typeof value[Symbol.asyncIterator] === "function";
143
+ }
144
+ __name(isFarmAPIStream, "isFarmAPIStream");
145
+ function appendFormValue(formData, key, value) {
146
+ if (value === void 0) return;
147
+ if (value === null) {
148
+ formData.append(key, "");
149
+ return;
150
+ }
151
+ if (value instanceof Blob) {
152
+ formData.append(key, value);
153
+ return;
154
+ }
155
+ if (value instanceof Date) {
156
+ formData.append(key, value.toISOString());
157
+ return;
158
+ }
159
+ formData.append(key, String(value));
160
+ }
161
+ __name(appendFormValue, "appendFormValue");
162
+ function isUnsafeFormKey(key) {
163
+ return key === "__proto__" || key === "constructor" || key === "prototype";
164
+ }
165
+ __name(isUnsafeFormKey, "isUnsafeFormKey");
166
+ function toAsyncIterator(source) {
167
+ if (Symbol.asyncIterator in Object(source)) {
168
+ return source[Symbol.asyncIterator]();
169
+ }
170
+ const iterator = source[Symbol.iterator]();
171
+ return {
172
+ next: /* @__PURE__ */ __name(async () => iterator.next(), "next"),
173
+ return: iterator.return ? async (value) => iterator.return(value) : void 0
174
+ };
175
+ }
176
+ __name(toAsyncIterator, "toAsyncIterator");
177
+
178
+ export {
179
+ multipart,
180
+ isMultipartSchema,
181
+ toFormData,
182
+ jsonStream,
183
+ isJSONStreamResponse,
184
+ readJSONStream,
185
+ isFarmAPIStream
186
+ };
187
+ //# sourceMappingURL=chunk-ALCLXXTY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/transport.ts"],"sourcesContent":["export type MultipartField = string | number | boolean | bigint | Blob | Date | null | undefined;\n\nexport type MultipartValues = Record<string, MultipartField | readonly MultipartField[]>;\n\n/**\n * A real FormData value that retains the submitted value shape for generated\n * API-client inference.\n */\nexport type TypedFormData<TValues> = FormData & {\n readonly __farmMultipartInput: TValues;\n};\n\nexport type MultipartSchema<TSchema> = TSchema & {\n readonly __farmMultipartSchema: true;\n};\n\nexport type FarmStreamResponse<TItem> = Response & {\n readonly __farmStreamItem: TItem;\n};\n\nexport interface FarmAPIStream<TItem> extends AsyncIterable<TItem> {\n readonly response: Response;\n cancel(reason?: unknown): Promise<void>;\n}\n\ntype SchemaLike = {\n parse(data: unknown): unknown;\n};\n\n/**\n * Mark a body schema as multipart. The handler still receives the schema's\n * parsed object; generated clients require `toFormData(...)` for the request.\n */\nexport function multipart<TSchema extends SchemaLike>(schema: TSchema): MultipartSchema<TSchema> {\n if (!Object.isExtensible(schema) && !isMultipartSchema(schema)) {\n throw new TypeError(\"multipart() requires an extensible schema object\");\n }\n\n if (!isMultipartSchema(schema)) {\n Object.defineProperty(schema, \"__farmMultipartSchema\", {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n }\n\n return schema as MultipartSchema<TSchema>;\n}\n\nexport function isMultipartSchema(value: unknown): value is MultipartSchema<SchemaLike> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { __farmMultipartSchema?: unknown }).__farmMultipartSchema === true &&\n typeof (value as SchemaLike).parse === \"function\"\n );\n}\n\n/**\n * Encode a typed object as multipart FormData without converting File or Blob\n * values to JSON or base64.\n */\nexport function toFormData<TValues extends MultipartValues>(\n values: TValues,\n): TypedFormData<TValues> {\n const formData = new FormData();\n\n for (const [key, value] of Object.entries(values)) {\n if (isUnsafeFormKey(key)) continue;\n if (Array.isArray(value)) {\n for (const entry of value) appendFormValue(formData, key, entry);\n continue;\n }\n appendFormValue(formData, key, value as MultipartField);\n }\n\n return formData as TypedFormData<TValues>;\n}\n\n/**\n * Stream JSON values as newline-delimited JSON. Each source value becomes one\n * independently decodable item instead of buffering the whole response.\n */\nexport function jsonStream<TItem>(\n source: AsyncIterable<TItem> | Iterable<TItem>,\n init: ResponseInit = {},\n): FarmStreamResponse<TItem> {\n const iterator = toAsyncIterator(source);\n const encoder = new TextEncoder();\n let finished = false;\n\n const body = new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n if (finished) return;\n\n try {\n const next = await iterator.next();\n if (next.done) {\n finished = true;\n controller.close();\n return;\n }\n controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}\\n`));\n } catch (error) {\n finished = true;\n controller.error(error);\n }\n },\n async cancel(reason) {\n finished = true;\n await iterator.return?.(reason);\n },\n },\n {\n // Do not read the next application event until the response consumer\n // requests another chunk.\n highWaterMark: 0,\n },\n );\n const headers = new Headers(init.headers);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/x-ndjson; charset=utf-8\");\n }\n headers.set(\"cache-control\", headers.get(\"cache-control\") ?? \"no-store\");\n\n return new Response(body, {\n ...init,\n headers,\n }) as FarmStreamResponse<TItem>;\n}\n\nexport function isJSONStreamResponse(response: { headers?: Pick<Headers, \"get\"> | null }): boolean {\n const contentType = response.headers?.get?.(\"content-type\")?.toLowerCase() ?? \"\";\n return contentType.includes(\"application/x-ndjson\") || contentType.includes(\"application/ndjson\");\n}\n\n/**\n * Decode a Farm JSON stream lazily. The response body is read only as the\n * consumer advances the async iterator, preserving fetch backpressure.\n */\nexport function readJSONStream<TItem>(response: Response): FarmAPIStream<TItem> {\n if (!response.body) {\n throw new TypeError(\"Cannot read a JSON stream response without a body\");\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n let claimed = false;\n\n const iterator: AsyncIterator<TItem> = {\n async next() {\n while (true) {\n const lineEnd = buffer.indexOf(\"\\n\");\n if (lineEnd >= 0) {\n const line = buffer.slice(0, lineEnd).trim();\n buffer = buffer.slice(lineEnd + 1);\n if (!line) continue;\n return { done: false, value: JSON.parse(line) as TItem };\n }\n\n if (completed) {\n const line = buffer.trim();\n buffer = \"\";\n if (!line) return { done: true, value: undefined };\n return { done: false, value: JSON.parse(line) as TItem };\n }\n\n const chunk = await reader.read();\n completed = chunk.done;\n buffer += decoder.decode(chunk.value, { stream: !chunk.done });\n }\n },\n async return() {\n completed = true;\n buffer = \"\";\n await reader.cancel();\n return { done: true, value: undefined };\n },\n };\n\n return {\n response,\n async cancel(reason) {\n completed = true;\n buffer = \"\";\n await reader.cancel(reason);\n },\n [Symbol.asyncIterator]() {\n if (claimed) {\n throw new TypeError(\"Farm API streams can only be consumed once\");\n }\n claimed = true;\n return iterator;\n },\n };\n}\n\nexport function isFarmAPIStream(value: unknown): value is FarmAPIStream<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"response\" in value &&\n typeof (value as FarmAPIStream<unknown>).cancel === \"function\" &&\n typeof (value as FarmAPIStream<unknown>)[Symbol.asyncIterator] === \"function\"\n );\n}\n\nfunction appendFormValue(formData: FormData, key: string, value: MultipartField): void {\n if (value === undefined) return;\n if (value === null) {\n formData.append(key, \"\");\n return;\n }\n if (value instanceof Blob) {\n formData.append(key, value);\n return;\n }\n if (value instanceof Date) {\n formData.append(key, value.toISOString());\n return;\n }\n formData.append(key, String(value));\n}\n\nfunction isUnsafeFormKey(key: string): boolean {\n return key === \"__proto__\" || key === \"constructor\" || key === \"prototype\";\n}\n\nfunction toAsyncIterator<TItem>(\n source: AsyncIterable<TItem> | Iterable<TItem>,\n): AsyncIterator<TItem> {\n if (Symbol.asyncIterator in Object(source)) {\n return (source as AsyncIterable<TItem>)[Symbol.asyncIterator]();\n }\n\n const iterator = (source as Iterable<TItem>)[Symbol.iterator]();\n return {\n next: async () => iterator.next(),\n return: iterator.return ? async (value?: unknown) => iterator.return!(value) : undefined,\n };\n}\n"],"mappings":";;;;;AAiCO,SAAS,UAAsC,QAA2C;AAC/F,MAAI,CAAC,OAAO,aAAa,MAAM,KAAK,CAAC,kBAAkB,MAAM,GAAG;AAC9D,UAAM,IAAI,UAAU,kDAAkD;AAAA,EACxE;AAEA,MAAI,CAAC,kBAAkB,MAAM,GAAG;AAC9B,WAAO,eAAe,QAAQ,yBAAyB;AAAA,MACrD,OAAO;AAAA,MACP,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAfgB;AAiBT,SAAS,kBAAkB,OAAsD;AACtF,SACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8C,0BAA0B,QACzE,OAAQ,MAAqB,UAAU;AAE3C;AAPgB;AAaT,SAAS,WACd,QACwB;AACxB,QAAM,WAAW,IAAI,SAAS;AAE9B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,gBAAgB,GAAG,EAAG;AAC1B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAW,SAAS,MAAO,iBAAgB,UAAU,KAAK,KAAK;AAC/D;AAAA,IACF;AACA,oBAAgB,UAAU,KAAK,KAAuB;AAAA,EACxD;AAEA,SAAO;AACT;AAfgB;AAqBT,SAAS,WACd,QACA,OAAqB,CAAC,GACK;AAC3B,QAAM,WAAW,gBAAgB,MAAM;AACvC,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,WAAW;AAEf,QAAM,OAAO,IAAI;AAAA,IACf;AAAA,MACE,MAAM,KAAK,YAAY;AACrB,YAAI,SAAU;AAEd,YAAI;AACF,gBAAM,OAAO,MAAM,SAAS,KAAK;AACjC,cAAI,KAAK,MAAM;AACb,uBAAW;AACX,uBAAW,MAAM;AACjB;AAAA,UACF;AACA,qBAAW,QAAQ,QAAQ,OAAO,GAAG,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,CAAI,CAAC;AAAA,QACtE,SAAS,OAAO;AACd,qBAAW;AACX,qBAAW,MAAM,KAAK;AAAA,QACxB;AAAA,MACF;AAAA,MACA,MAAM,OAAO,QAAQ;AACnB,mBAAW;AACX,cAAM,SAAS,SAAS,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,IACA;AAAA;AAAA;AAAA,MAGE,eAAe;AAAA,IACjB;AAAA,EACF;AACA,QAAM,UAAU,IAAI,QAAQ,KAAK,OAAO;AACxC,MAAI,CAAC,QAAQ,IAAI,cAAc,GAAG;AAChC,YAAQ,IAAI,gBAAgB,qCAAqC;AAAA,EACnE;AACA,UAAQ,IAAI,iBAAiB,QAAQ,IAAI,eAAe,KAAK,UAAU;AAEvE,SAAO,IAAI,SAAS,MAAM;AAAA,IACxB,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;AA/CgB;AAiDT,SAAS,qBAAqB,UAA8D;AACjG,QAAM,cAAc,SAAS,SAAS,MAAM,cAAc,GAAG,YAAY,KAAK;AAC9E,SAAO,YAAY,SAAS,sBAAsB,KAAK,YAAY,SAAS,oBAAoB;AAClG;AAHgB;AAST,SAAS,eAAsB,UAA0C;AAC9E,MAAI,CAAC,SAAS,MAAM;AAClB,UAAM,IAAI,UAAU,mDAAmD;AAAA,EACzE;AAEA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,SAAS;AACb,MAAI,YAAY;AAChB,MAAI,UAAU;AAEd,QAAM,WAAiC;AAAA,IACrC,MAAM,OAAO;AACX,aAAO,MAAM;AACX,cAAM,UAAU,OAAO,QAAQ,IAAI;AACnC,YAAI,WAAW,GAAG;AAChB,gBAAM,OAAO,OAAO,MAAM,GAAG,OAAO,EAAE,KAAK;AAC3C,mBAAS,OAAO,MAAM,UAAU,CAAC;AACjC,cAAI,CAAC,KAAM;AACX,iBAAO,EAAE,MAAM,OAAO,OAAO,KAAK,MAAM,IAAI,EAAW;AAAA,QACzD;AAEA,YAAI,WAAW;AACb,gBAAM,OAAO,OAAO,KAAK;AACzB,mBAAS;AACT,cAAI,CAAC,KAAM,QAAO,EAAE,MAAM,MAAM,OAAO,OAAU;AACjD,iBAAO,EAAE,MAAM,OAAO,OAAO,KAAK,MAAM,IAAI,EAAW;AAAA,QACzD;AAEA,cAAM,QAAQ,MAAM,OAAO,KAAK;AAChC,oBAAY,MAAM;AAClB,kBAAU,QAAQ,OAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,MAAM,SAAS;AACb,kBAAY;AACZ,eAAS;AACT,YAAM,OAAO,OAAO;AACpB,aAAO,EAAE,MAAM,MAAM,OAAO,OAAU;AAAA,IACxC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO,QAAQ;AACnB,kBAAY;AACZ,eAAS;AACT,YAAM,OAAO,OAAO,MAAM;AAAA,IAC5B;AAAA,IACA,CAAC,OAAO,aAAa,IAAI;AACvB,UAAI,SAAS;AACX,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AACA,gBAAU;AACV,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAzDgB;AA2DT,SAAS,gBAAgB,OAAiD;AAC/E,SACE,OAAO,UAAU,YACjB,UAAU,QACV,cAAc,SACd,OAAQ,MAAiC,WAAW,cACpD,OAAQ,MAAiC,OAAO,aAAa,MAAM;AAEvE;AARgB;AAUhB,SAAS,gBAAgB,UAAoB,KAAa,OAA6B;AACrF,MAAI,UAAU,OAAW;AACzB,MAAI,UAAU,MAAM;AAClB,aAAS,OAAO,KAAK,EAAE;AACvB;AAAA,EACF;AACA,MAAI,iBAAiB,MAAM;AACzB,aAAS,OAAO,KAAK,KAAK;AAC1B;AAAA,EACF;AACA,MAAI,iBAAiB,MAAM;AACzB,aAAS,OAAO,KAAK,MAAM,YAAY,CAAC;AACxC;AAAA,EACF;AACA,WAAS,OAAO,KAAK,OAAO,KAAK,CAAC;AACpC;AAfS;AAiBT,SAAS,gBAAgB,KAAsB;AAC7C,SAAO,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ;AACjE;AAFS;AAIT,SAAS,gBACP,QACsB;AACtB,MAAI,OAAO,iBAAiB,OAAO,MAAM,GAAG;AAC1C,WAAQ,OAAgC,OAAO,aAAa,EAAE;AAAA,EAChE;AAEA,QAAM,WAAY,OAA2B,OAAO,QAAQ,EAAE;AAC9D,SAAO;AAAA,IACL,MAAM,mCAAY,SAAS,KAAK,GAA1B;AAAA,IACN,QAAQ,SAAS,SAAS,OAAO,UAAoB,SAAS,OAAQ,KAAK,IAAI;AAAA,EACjF;AACF;AAZS;","names":[]}
@@ -0,0 +1,65 @@
1
+ import {
2
+ getCurrentRequest
3
+ } from "./chunk-RHIFZZUI.mjs";
4
+ import {
5
+ __name
6
+ } from "./chunk-CGILA3WO.mjs";
7
+
8
+ // src/headers.ts
9
+ function headers() {
10
+ return new Headers(getCurrentRequest().headers);
11
+ }
12
+ __name(headers, "headers");
13
+ function cookies() {
14
+ const cookieHeader = getCurrentRequest().headers.get("cookie") || "";
15
+ const parsed = parseCookieHeader(cookieHeader);
16
+ return {
17
+ get(name) {
18
+ return parsed.find((cookie) => cookie.name === name);
19
+ },
20
+ getAll(name) {
21
+ return name ? parsed.filter((cookie) => cookie.name === name) : [...parsed];
22
+ },
23
+ has(name) {
24
+ return parsed.some((cookie) => cookie.name === name);
25
+ },
26
+ toString() {
27
+ return cookieHeader;
28
+ },
29
+ [Symbol.iterator]() {
30
+ return parsed[Symbol.iterator]();
31
+ }
32
+ };
33
+ }
34
+ __name(cookies, "cookies");
35
+ function parseCookieHeader(header) {
36
+ if (!header.trim()) return [];
37
+ return header.split(";").map((part) => part.trim()).filter(Boolean).map((part) => {
38
+ const separatorIndex = part.indexOf("=");
39
+ if (separatorIndex === -1) {
40
+ return {
41
+ name: decodeCookiePart(part),
42
+ value: ""
43
+ };
44
+ }
45
+ return {
46
+ name: decodeCookiePart(part.slice(0, separatorIndex).trim()),
47
+ value: decodeCookiePart(part.slice(separatorIndex + 1).trim())
48
+ };
49
+ }).filter((cookie) => cookie.name.length > 0);
50
+ }
51
+ __name(parseCookieHeader, "parseCookieHeader");
52
+ function decodeCookiePart(value) {
53
+ try {
54
+ return decodeURIComponent(value);
55
+ } catch {
56
+ return value;
57
+ }
58
+ }
59
+ __name(decodeCookiePart, "decodeCookiePart");
60
+
61
+ export {
62
+ headers,
63
+ cookies
64
+ };
65
+ //# sourceMappingURL=chunk-AZ7YUVNR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/headers.ts"],"sourcesContent":["import { getCurrentRequest } from \"./server/request\";\n\nexport interface RequestCookie {\n name: string;\n value: string;\n}\n\nexport interface ReadonlyHeaders extends Iterable<[string, string]> {\n get(name: string): string | null;\n has(name: string): boolean;\n forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;\n entries(): IterableIterator<[string, string]>;\n keys(): IterableIterator<string>;\n values(): IterableIterator<string>;\n}\n\nexport interface ReadonlyRequestCookies extends Iterable<RequestCookie> {\n get(name: string): RequestCookie | undefined;\n getAll(name?: string): RequestCookie[];\n has(name: string): boolean;\n toString(): string;\n}\n\nexport function headers(): ReadonlyHeaders {\n return new Headers(getCurrentRequest().headers) as ReadonlyHeaders;\n}\n\nexport function cookies(): ReadonlyRequestCookies {\n const cookieHeader = getCurrentRequest().headers.get(\"cookie\") || \"\";\n const parsed = parseCookieHeader(cookieHeader);\n\n return {\n get(name) {\n return parsed.find((cookie) => cookie.name === name);\n },\n getAll(name) {\n return name ? parsed.filter((cookie) => cookie.name === name) : [...parsed];\n },\n has(name) {\n return parsed.some((cookie) => cookie.name === name);\n },\n toString() {\n return cookieHeader;\n },\n [Symbol.iterator]() {\n return parsed[Symbol.iterator]();\n },\n };\n}\n\nfunction parseCookieHeader(header: string): RequestCookie[] {\n if (!header.trim()) return [];\n\n return header\n .split(\";\")\n .map((part) => part.trim())\n .filter(Boolean)\n .map((part) => {\n const separatorIndex = part.indexOf(\"=\");\n if (separatorIndex === -1) {\n return {\n name: decodeCookiePart(part),\n value: \"\",\n };\n }\n\n return {\n name: decodeCookiePart(part.slice(0, separatorIndex).trim()),\n value: decodeCookiePart(part.slice(separatorIndex + 1).trim()),\n };\n })\n .filter((cookie) => cookie.name.length > 0);\n}\n\nfunction decodeCookiePart(value: string) {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n"],"mappings":";;;;;;;;AAuBO,SAAS,UAA2B;AACzC,SAAO,IAAI,QAAQ,kBAAkB,EAAE,OAAO;AAChD;AAFgB;AAIT,SAAS,UAAkC;AAChD,QAAM,eAAe,kBAAkB,EAAE,QAAQ,IAAI,QAAQ,KAAK;AAClE,QAAM,SAAS,kBAAkB,YAAY;AAE7C,SAAO;AAAA,IACL,IAAI,MAAM;AACR,aAAO,OAAO,KAAK,CAAC,WAAW,OAAO,SAAS,IAAI;AAAA,IACrD;AAAA,IACA,OAAO,MAAM;AACX,aAAO,OAAO,OAAO,OAAO,CAAC,WAAW,OAAO,SAAS,IAAI,IAAI,CAAC,GAAG,MAAM;AAAA,IAC5E;AAAA,IACA,IAAI,MAAM;AACR,aAAO,OAAO,KAAK,CAAC,WAAW,OAAO,SAAS,IAAI;AAAA,IACrD;AAAA,IACA,WAAW;AACT,aAAO;AAAA,IACT;AAAA,IACA,CAAC,OAAO,QAAQ,IAAI;AAClB,aAAO,OAAO,OAAO,QAAQ,EAAE;AAAA,IACjC;AAAA,EACF;AACF;AArBgB;AAuBhB,SAAS,kBAAkB,QAAiC;AAC1D,MAAI,CAAC,OAAO,KAAK,EAAG,QAAO,CAAC;AAE5B,SAAO,OACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,OAAO,EACd,IAAI,CAAC,SAAS;AACb,UAAM,iBAAiB,KAAK,QAAQ,GAAG;AACvC,QAAI,mBAAmB,IAAI;AACzB,aAAO;AAAA,QACL,MAAM,iBAAiB,IAAI;AAAA,QAC3B,OAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,iBAAiB,KAAK,MAAM,GAAG,cAAc,EAAE,KAAK,CAAC;AAAA,MAC3D,OAAO,iBAAiB,KAAK,MAAM,iBAAiB,CAAC,EAAE,KAAK,CAAC;AAAA,IAC/D;AAAA,EACF,CAAC,EACA,OAAO,CAAC,WAAW,OAAO,KAAK,SAAS,CAAC;AAC9C;AAtBS;AAwBT,SAAS,iBAAiB,OAAe;AACvC,MAAI;AACF,WAAO,mBAAmB,KAAK;AAAA,EACjC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AANS;","names":[]}
@@ -0,0 +1,163 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-CGILA3WO.mjs";
4
+
5
+ // src/deployment.ts
6
+ var FARM_DEPLOYMENT_ID_HEADER = "x-farm-deployment-id";
7
+ var FARM_DEPLOYMENT_MISMATCH_HEADER = "x-farm-deployment-mismatch";
8
+ var FARM_DEPLOYMENT_COOKIE = "__farm_deployment";
9
+ var FARM_DEPLOYMENT_MISMATCH_CODE = "FARM_DEPLOYMENT_MISMATCH";
10
+ var FARM_DEPLOYMENT_MISMATCH_STATUS = 409;
11
+ var _FarmDeploymentMismatchError = class _FarmDeploymentMismatchError extends Error {
12
+ constructor(clientDeploymentId, serverDeploymentId) {
13
+ super("The application was updated while this page was open. Refresh before trying again.");
14
+ this.clientDeploymentId = clientDeploymentId;
15
+ this.serverDeploymentId = serverDeploymentId;
16
+ this.name = "FarmDeploymentMismatchError";
17
+ this.code = FARM_DEPLOYMENT_MISMATCH_CODE;
18
+ this.retryable = false;
19
+ }
20
+ };
21
+ __name(_FarmDeploymentMismatchError, "FarmDeploymentMismatchError");
22
+ var FarmDeploymentMismatchError = _FarmDeploymentMismatchError;
23
+ function normalizeFarmDeploymentId(value) {
24
+ if (typeof value !== "string" || value.trim() === "") {
25
+ throw new TypeError("Farm deploymentId must be a non-empty string");
26
+ }
27
+ const normalized = value.trim();
28
+ if (normalized.length > 200 || /[\u0000-\u001f\u007f]/.test(normalized)) {
29
+ throw new TypeError("Farm deploymentId must be at most 200 characters without control bytes");
30
+ }
31
+ return normalized;
32
+ }
33
+ __name(normalizeFarmDeploymentId, "normalizeFarmDeploymentId");
34
+ function createFarmDeploymentRequestHeaders(deploymentId, init) {
35
+ const headers = new Headers(init);
36
+ if (deploymentId) {
37
+ headers.set(FARM_DEPLOYMENT_ID_HEADER, deploymentId);
38
+ }
39
+ return headers;
40
+ }
41
+ __name(createFarmDeploymentRequestHeaders, "createFarmDeploymentRequestHeaders");
42
+ function getFarmRequestDeploymentId(request) {
43
+ const headerValue = request.headers.get(FARM_DEPLOYMENT_ID_HEADER)?.trim();
44
+ if (headerValue) return headerValue;
45
+ if (isSafeRequestMethod(request.method)) return void 0;
46
+ return readCookie(request.headers.get("cookie"), FARM_DEPLOYMENT_COOKIE);
47
+ }
48
+ __name(getFarmRequestDeploymentId, "getFarmRequestDeploymentId");
49
+ function getFarmDeploymentMismatch(request, serverDeploymentId) {
50
+ if (!serverDeploymentId) return null;
51
+ const clientDeploymentId = getFarmRequestDeploymentId(request);
52
+ if (!clientDeploymentId || clientDeploymentId === serverDeploymentId) return null;
53
+ return { clientDeploymentId, serverDeploymentId };
54
+ }
55
+ __name(getFarmDeploymentMismatch, "getFarmDeploymentMismatch");
56
+ function createFarmDeploymentMismatchResponse(mismatch) {
57
+ return new Response(
58
+ JSON.stringify({
59
+ error: FARM_DEPLOYMENT_MISMATCH_CODE,
60
+ message: "The application deployment changed. Refresh before retrying this request."
61
+ }),
62
+ {
63
+ status: FARM_DEPLOYMENT_MISMATCH_STATUS,
64
+ headers: {
65
+ "Cache-Control": "no-store",
66
+ "Content-Type": "application/json; charset=utf-8",
67
+ [FARM_DEPLOYMENT_ID_HEADER]: mismatch.serverDeploymentId,
68
+ [FARM_DEPLOYMENT_MISMATCH_HEADER]: "1"
69
+ }
70
+ }
71
+ );
72
+ }
73
+ __name(createFarmDeploymentMismatchResponse, "createFarmDeploymentMismatchResponse");
74
+ function withFarmDeploymentResponse(response, deploymentId, options = {}) {
75
+ if (!deploymentId) return response;
76
+ const headers = new Headers(response.headers);
77
+ headers.set(FARM_DEPLOYMENT_ID_HEADER, deploymentId);
78
+ if (options.setCookie) {
79
+ headers.append(
80
+ "Set-Cookie",
81
+ createFarmDeploymentCookie(
82
+ deploymentId,
83
+ options.cookiePath ?? "/",
84
+ options.secureCookie ?? false
85
+ )
86
+ );
87
+ }
88
+ return new Response(response.body, {
89
+ status: response.status,
90
+ statusText: response.statusText,
91
+ headers
92
+ });
93
+ }
94
+ __name(withFarmDeploymentResponse, "withFarmDeploymentResponse");
95
+ function getFarmResponseDeploymentId(response) {
96
+ return response.headers.get(FARM_DEPLOYMENT_ID_HEADER)?.trim() || void 0;
97
+ }
98
+ __name(getFarmResponseDeploymentId, "getFarmResponseDeploymentId");
99
+ function isFarmDeploymentMismatchResponse(response, clientDeploymentId) {
100
+ const serverDeploymentId = getFarmResponseDeploymentId(response);
101
+ if (clientDeploymentId && serverDeploymentId && clientDeploymentId !== serverDeploymentId) {
102
+ return true;
103
+ }
104
+ return response.status === FARM_DEPLOYMENT_MISMATCH_STATUS && response.headers.get(FARM_DEPLOYMENT_MISMATCH_HEADER) === "1";
105
+ }
106
+ __name(isFarmDeploymentMismatchResponse, "isFarmDeploymentMismatchResponse");
107
+ function createFarmDeploymentMismatchError(response, clientDeploymentId) {
108
+ return new FarmDeploymentMismatchError(
109
+ clientDeploymentId,
110
+ getFarmResponseDeploymentId(response) || "unknown"
111
+ );
112
+ }
113
+ __name(createFarmDeploymentMismatchError, "createFarmDeploymentMismatchError");
114
+ function createFarmDeploymentCookie(deploymentId, path = "/", secure = false) {
115
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
116
+ return [
117
+ `${FARM_DEPLOYMENT_COOKIE}=${encodeURIComponent(deploymentId)}`,
118
+ `Path=${normalizedPath}`,
119
+ "HttpOnly",
120
+ "SameSite=Lax",
121
+ secure ? "Secure" : ""
122
+ ].filter(Boolean).join("; ");
123
+ }
124
+ __name(createFarmDeploymentCookie, "createFarmDeploymentCookie");
125
+ function readCookie(cookieHeader, name) {
126
+ if (!cookieHeader) return void 0;
127
+ for (const part of cookieHeader.split(";")) {
128
+ const separator = part.indexOf("=");
129
+ if (separator === -1 || part.slice(0, separator).trim() !== name) continue;
130
+ const value = part.slice(separator + 1).trim();
131
+ try {
132
+ return decodeURIComponent(value);
133
+ } catch {
134
+ return value;
135
+ }
136
+ }
137
+ return void 0;
138
+ }
139
+ __name(readCookie, "readCookie");
140
+ function isSafeRequestMethod(method) {
141
+ return ["GET", "HEAD", "OPTIONS"].includes(method.toUpperCase());
142
+ }
143
+ __name(isSafeRequestMethod, "isSafeRequestMethod");
144
+
145
+ export {
146
+ FARM_DEPLOYMENT_ID_HEADER,
147
+ FARM_DEPLOYMENT_MISMATCH_HEADER,
148
+ FARM_DEPLOYMENT_COOKIE,
149
+ FARM_DEPLOYMENT_MISMATCH_CODE,
150
+ FARM_DEPLOYMENT_MISMATCH_STATUS,
151
+ FarmDeploymentMismatchError,
152
+ normalizeFarmDeploymentId,
153
+ createFarmDeploymentRequestHeaders,
154
+ getFarmRequestDeploymentId,
155
+ getFarmDeploymentMismatch,
156
+ createFarmDeploymentMismatchResponse,
157
+ withFarmDeploymentResponse,
158
+ getFarmResponseDeploymentId,
159
+ isFarmDeploymentMismatchResponse,
160
+ createFarmDeploymentMismatchError,
161
+ createFarmDeploymentCookie
162
+ };
163
+ //# sourceMappingURL=chunk-B232I2GP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deployment.ts"],"sourcesContent":["export const FARM_DEPLOYMENT_ID_HEADER = \"x-farm-deployment-id\";\nexport const FARM_DEPLOYMENT_MISMATCH_HEADER = \"x-farm-deployment-mismatch\";\nexport const FARM_DEPLOYMENT_COOKIE = \"__farm_deployment\";\nexport const FARM_DEPLOYMENT_MISMATCH_CODE = \"FARM_DEPLOYMENT_MISMATCH\";\nexport const FARM_DEPLOYMENT_MISMATCH_STATUS = 409;\n\nexport interface FarmDeploymentMismatch {\n clientDeploymentId: string;\n serverDeploymentId: string;\n}\n\nexport interface FarmDeploymentResponseOptions {\n setCookie?: boolean;\n cookiePath?: string;\n secureCookie?: boolean;\n}\n\nexport class FarmDeploymentMismatchError extends Error {\n readonly name = \"FarmDeploymentMismatchError\";\n readonly code = FARM_DEPLOYMENT_MISMATCH_CODE;\n readonly retryable = false;\n\n constructor(\n readonly clientDeploymentId: string,\n readonly serverDeploymentId: string,\n ) {\n super(\"The application was updated while this page was open. Refresh before trying again.\");\n }\n}\n\nexport function normalizeFarmDeploymentId(value: unknown): string {\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw new TypeError(\"Farm deploymentId must be a non-empty string\");\n }\n\n const normalized = value.trim();\n if (normalized.length > 200 || /[\\u0000-\\u001f\\u007f]/.test(normalized)) {\n throw new TypeError(\"Farm deploymentId must be at most 200 characters without control bytes\");\n }\n\n return normalized;\n}\n\nexport function createFarmDeploymentRequestHeaders(\n deploymentId: string | undefined,\n init?: HeadersInit,\n): Headers {\n const headers = new Headers(init);\n if (deploymentId) {\n headers.set(FARM_DEPLOYMENT_ID_HEADER, deploymentId);\n }\n return headers;\n}\n\nexport function getFarmRequestDeploymentId(\n request: Pick<Request, \"headers\" | \"method\">,\n): string | undefined {\n const headerValue = request.headers.get(FARM_DEPLOYMENT_ID_HEADER)?.trim();\n if (headerValue) return headerValue;\n\n if (isSafeRequestMethod(request.method)) return undefined;\n return readCookie(request.headers.get(\"cookie\"), FARM_DEPLOYMENT_COOKIE);\n}\n\nexport function getFarmDeploymentMismatch(\n request: Pick<Request, \"headers\" | \"method\">,\n serverDeploymentId: string | undefined,\n): FarmDeploymentMismatch | null {\n if (!serverDeploymentId) return null;\n\n const clientDeploymentId = getFarmRequestDeploymentId(request);\n if (!clientDeploymentId || clientDeploymentId === serverDeploymentId) return null;\n\n return { clientDeploymentId, serverDeploymentId };\n}\n\nexport function createFarmDeploymentMismatchResponse(mismatch: FarmDeploymentMismatch): Response {\n return new Response(\n JSON.stringify({\n error: FARM_DEPLOYMENT_MISMATCH_CODE,\n message: \"The application deployment changed. Refresh before retrying this request.\",\n }),\n {\n status: FARM_DEPLOYMENT_MISMATCH_STATUS,\n headers: {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"application/json; charset=utf-8\",\n [FARM_DEPLOYMENT_ID_HEADER]: mismatch.serverDeploymentId,\n [FARM_DEPLOYMENT_MISMATCH_HEADER]: \"1\",\n },\n },\n );\n}\n\nexport function withFarmDeploymentResponse(\n response: Response,\n deploymentId: string | undefined,\n options: FarmDeploymentResponseOptions = {},\n): Response {\n if (!deploymentId) return response;\n\n const headers = new Headers(response.headers);\n headers.set(FARM_DEPLOYMENT_ID_HEADER, deploymentId);\n if (options.setCookie) {\n headers.append(\n \"Set-Cookie\",\n createFarmDeploymentCookie(\n deploymentId,\n options.cookiePath ?? \"/\",\n options.secureCookie ?? false,\n ),\n );\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\nexport function getFarmResponseDeploymentId(\n response: Pick<Response, \"headers\">,\n): string | undefined {\n return response.headers.get(FARM_DEPLOYMENT_ID_HEADER)?.trim() || undefined;\n}\n\nexport function isFarmDeploymentMismatchResponse(\n response: Pick<Response, \"headers\" | \"status\">,\n clientDeploymentId: string | undefined,\n): boolean {\n const serverDeploymentId = getFarmResponseDeploymentId(response);\n if (clientDeploymentId && serverDeploymentId && clientDeploymentId !== serverDeploymentId) {\n return true;\n }\n\n return (\n response.status === FARM_DEPLOYMENT_MISMATCH_STATUS &&\n response.headers.get(FARM_DEPLOYMENT_MISMATCH_HEADER) === \"1\"\n );\n}\n\nexport function createFarmDeploymentMismatchError(\n response: Pick<Response, \"headers\">,\n clientDeploymentId: string,\n): FarmDeploymentMismatchError {\n return new FarmDeploymentMismatchError(\n clientDeploymentId,\n getFarmResponseDeploymentId(response) || \"unknown\",\n );\n}\n\nexport function createFarmDeploymentCookie(\n deploymentId: string,\n path = \"/\",\n secure = false,\n): string {\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n return [\n `${FARM_DEPLOYMENT_COOKIE}=${encodeURIComponent(deploymentId)}`,\n `Path=${normalizedPath}`,\n \"HttpOnly\",\n \"SameSite=Lax\",\n secure ? \"Secure\" : \"\",\n ]\n .filter(Boolean)\n .join(\"; \");\n}\n\nfunction readCookie(cookieHeader: string | null, name: string): string | undefined {\n if (!cookieHeader) return undefined;\n\n for (const part of cookieHeader.split(\";\")) {\n const separator = part.indexOf(\"=\");\n if (separator === -1 || part.slice(0, separator).trim() !== name) continue;\n\n const value = part.slice(separator + 1).trim();\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n }\n\n return undefined;\n}\n\nfunction isSafeRequestMethod(method: string): boolean {\n return [\"GET\", \"HEAD\", \"OPTIONS\"].includes(method.toUpperCase());\n}\n"],"mappings":";;;;;AAAO,IAAM,4BAA4B;AAClC,IAAM,kCAAkC;AACxC,IAAM,yBAAyB;AAC/B,IAAM,gCAAgC;AACtC,IAAM,kCAAkC;AAaxC,IAAM,+BAAN,MAAM,qCAAoC,MAAM;AAAA,EAKrD,YACW,oBACA,oBACT;AACA,UAAM,oFAAoF;AAHjF;AACA;AANX,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB,SAAS,YAAY;AAAA,EAOrB;AACF;AAXuD;AAAhD,IAAM,8BAAN;AAaA,SAAS,0BAA0B,OAAwB;AAChE,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;AACpD,UAAM,IAAI,UAAU,8CAA8C;AAAA,EACpE;AAEA,QAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,WAAW,SAAS,OAAO,wBAAwB,KAAK,UAAU,GAAG;AACvE,UAAM,IAAI,UAAU,wEAAwE;AAAA,EAC9F;AAEA,SAAO;AACT;AAXgB;AAaT,SAAS,mCACd,cACA,MACS;AACT,QAAM,UAAU,IAAI,QAAQ,IAAI;AAChC,MAAI,cAAc;AAChB,YAAQ,IAAI,2BAA2B,YAAY;AAAA,EACrD;AACA,SAAO;AACT;AATgB;AAWT,SAAS,2BACd,SACoB;AACpB,QAAM,cAAc,QAAQ,QAAQ,IAAI,yBAAyB,GAAG,KAAK;AACzE,MAAI,YAAa,QAAO;AAExB,MAAI,oBAAoB,QAAQ,MAAM,EAAG,QAAO;AAChD,SAAO,WAAW,QAAQ,QAAQ,IAAI,QAAQ,GAAG,sBAAsB;AACzE;AARgB;AAUT,SAAS,0BACd,SACA,oBAC+B;AAC/B,MAAI,CAAC,mBAAoB,QAAO;AAEhC,QAAM,qBAAqB,2BAA2B,OAAO;AAC7D,MAAI,CAAC,sBAAsB,uBAAuB,mBAAoB,QAAO;AAE7E,SAAO,EAAE,oBAAoB,mBAAmB;AAClD;AAVgB;AAYT,SAAS,qCAAqC,UAA4C;AAC/F,SAAO,IAAI;AAAA,IACT,KAAK,UAAU;AAAA,MACb,OAAO;AAAA,MACP,SAAS;AAAA,IACX,CAAC;AAAA,IACD;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,CAAC,yBAAyB,GAAG,SAAS;AAAA,QACtC,CAAC,+BAA+B,GAAG;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACF;AAhBgB;AAkBT,SAAS,2BACd,UACA,cACA,UAAyC,CAAC,GAChC;AACV,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,UAAU,IAAI,QAAQ,SAAS,OAAO;AAC5C,UAAQ,IAAI,2BAA2B,YAAY;AACnD,MAAI,QAAQ,WAAW;AACrB,YAAQ;AAAA,MACN;AAAA,MACA;AAAA,QACE;AAAA,QACA,QAAQ,cAAc;AAAA,QACtB,QAAQ,gBAAgB;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,SAAS,SAAS,MAAM;AAAA,IACjC,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAzBgB;AA2BT,SAAS,4BACd,UACoB;AACpB,SAAO,SAAS,QAAQ,IAAI,yBAAyB,GAAG,KAAK,KAAK;AACpE;AAJgB;AAMT,SAAS,iCACd,UACA,oBACS;AACT,QAAM,qBAAqB,4BAA4B,QAAQ;AAC/D,MAAI,sBAAsB,sBAAsB,uBAAuB,oBAAoB;AACzF,WAAO;AAAA,EACT;AAEA,SACE,SAAS,WAAW,mCACpB,SAAS,QAAQ,IAAI,+BAA+B,MAAM;AAE9D;AAbgB;AAeT,SAAS,kCACd,UACA,oBAC6B;AAC7B,SAAO,IAAI;AAAA,IACT;AAAA,IACA,4BAA4B,QAAQ,KAAK;AAAA,EAC3C;AACF;AARgB;AAUT,SAAS,2BACd,cACA,OAAO,KACP,SAAS,OACD;AACR,QAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AAC7D,SAAO;AAAA,IACL,GAAG,sBAAsB,IAAI,mBAAmB,YAAY,CAAC;AAAA,IAC7D,QAAQ,cAAc;AAAA,IACtB;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,EACtB,EACG,OAAO,OAAO,EACd,KAAK,IAAI;AACd;AAfgB;AAiBhB,SAAS,WAAW,cAA6B,MAAkC;AACjF,MAAI,CAAC,aAAc,QAAO;AAE1B,aAAW,QAAQ,aAAa,MAAM,GAAG,GAAG;AAC1C,UAAM,YAAY,KAAK,QAAQ,GAAG;AAClC,QAAI,cAAc,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,KAAK,MAAM,KAAM;AAElE,UAAM,QAAQ,KAAK,MAAM,YAAY,CAAC,EAAE,KAAK;AAC7C,QAAI;AACF,aAAO,mBAAmB,KAAK;AAAA,IACjC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAhBS;AAkBT,SAAS,oBAAoB,QAAyB;AACpD,SAAO,CAAC,OAAO,QAAQ,SAAS,EAAE,SAAS,OAAO,YAAY,CAAC;AACjE;AAFS;","names":[]}