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

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 (424) hide show
  1. package/package.json +1 -1
  2. package/dist/after.cjs +0 -227
  3. package/dist/after.cjs.map +0 -1
  4. package/dist/after.d.mts +0 -25
  5. package/dist/after.d.ts +0 -25
  6. package/dist/after.mjs +0 -14
  7. package/dist/after.mjs.map +0 -1
  8. package/dist/agent-runtime.cjs +0 -2379
  9. package/dist/agent-runtime.cjs.map +0 -1
  10. package/dist/agent-runtime.d.mts +0 -94
  11. package/dist/agent-runtime.d.ts +0 -94
  12. package/dist/agent-runtime.mjs +0 -479
  13. package/dist/agent-runtime.mjs.map +0 -1
  14. package/dist/api/route-manager.d.mts +0 -66
  15. package/dist/api/route-manager.d.ts +0 -66
  16. package/dist/api/runtime.d.mts +0 -3
  17. package/dist/api/runtime.d.ts +0 -3
  18. package/dist/api.cjs +0 -4100
  19. package/dist/api.cjs.map +0 -1
  20. package/dist/api.d.mts +0 -48
  21. package/dist/api.d.ts +0 -48
  22. package/dist/api.mjs +0 -93
  23. package/dist/api.mjs.map +0 -1
  24. package/dist/app-BjN-da13.d.ts +0 -300
  25. package/dist/app-CakAr8Be.d.mts +0 -300
  26. package/dist/app-markdown.cjs +0 -220
  27. package/dist/app-markdown.cjs.map +0 -1
  28. package/dist/app-markdown.d.mts +0 -22
  29. package/dist/app-markdown.d.ts +0 -22
  30. package/dist/app-markdown.mjs +0 -26
  31. package/dist/app-markdown.mjs.map +0 -1
  32. package/dist/cache.cjs +0 -945
  33. package/dist/cache.cjs.map +0 -1
  34. package/dist/cache.d.mts +0 -192
  35. package/dist/cache.d.ts +0 -192
  36. package/dist/cache.mjs +0 -46
  37. package/dist/cache.mjs.map +0 -1
  38. package/dist/chunk-2CUKEMVR.mjs +0 -872
  39. package/dist/chunk-2CUKEMVR.mjs.map +0 -1
  40. package/dist/chunk-2ED5Q2GH.mjs +0 -422
  41. package/dist/chunk-2ED5Q2GH.mjs.map +0 -1
  42. package/dist/chunk-2NHCNRF6.mjs +0 -6241
  43. package/dist/chunk-2NHCNRF6.mjs.map +0 -1
  44. package/dist/chunk-32W4QEJP.mjs +0 -158
  45. package/dist/chunk-32W4QEJP.mjs.map +0 -1
  46. package/dist/chunk-3XNTL3FQ.mjs +0 -452
  47. package/dist/chunk-3XNTL3FQ.mjs.map +0 -1
  48. package/dist/chunk-44ZCFSKE.mjs +0 -84
  49. package/dist/chunk-44ZCFSKE.mjs.map +0 -1
  50. package/dist/chunk-4S3ORGFA.mjs +0 -44
  51. package/dist/chunk-4S3ORGFA.mjs.map +0 -1
  52. package/dist/chunk-5BY76U2M.mjs +0 -1
  53. package/dist/chunk-5BY76U2M.mjs.map +0 -1
  54. package/dist/chunk-5ZGPRGWV.mjs +0 -136
  55. package/dist/chunk-5ZGPRGWV.mjs.map +0 -1
  56. package/dist/chunk-65A7QIKI.mjs +0 -142
  57. package/dist/chunk-65A7QIKI.mjs.map +0 -1
  58. package/dist/chunk-74YTBPTY.mjs +0 -450
  59. package/dist/chunk-74YTBPTY.mjs.map +0 -1
  60. package/dist/chunk-7HO6AEOP.mjs +0 -74
  61. package/dist/chunk-7HO6AEOP.mjs.map +0 -1
  62. package/dist/chunk-7MABZJIM.mjs +0 -29
  63. package/dist/chunk-7MABZJIM.mjs.map +0 -1
  64. package/dist/chunk-7N62DNSO.mjs +0 -41
  65. package/dist/chunk-7N62DNSO.mjs.map +0 -1
  66. package/dist/chunk-7ZY5AIJO.mjs +0 -161
  67. package/dist/chunk-7ZY5AIJO.mjs.map +0 -1
  68. package/dist/chunk-A2LUXHD2.mjs +0 -7631
  69. package/dist/chunk-A2LUXHD2.mjs.map +0 -1
  70. package/dist/chunk-ALCLXXTY.mjs +0 -187
  71. package/dist/chunk-ALCLXXTY.mjs.map +0 -1
  72. package/dist/chunk-AZ7YUVNR.mjs +0 -65
  73. package/dist/chunk-AZ7YUVNR.mjs.map +0 -1
  74. package/dist/chunk-B232I2GP.mjs +0 -163
  75. package/dist/chunk-B232I2GP.mjs.map +0 -1
  76. package/dist/chunk-BHG3LVHH.mjs +0 -176
  77. package/dist/chunk-BHG3LVHH.mjs.map +0 -1
  78. package/dist/chunk-C2ROET2V.mjs +0 -718
  79. package/dist/chunk-C2ROET2V.mjs.map +0 -1
  80. package/dist/chunk-C3DLZMBU.mjs +0 -597
  81. package/dist/chunk-C3DLZMBU.mjs.map +0 -1
  82. package/dist/chunk-CGILA3WO.mjs +0 -14
  83. package/dist/chunk-CGILA3WO.mjs.map +0 -1
  84. package/dist/chunk-E2MPIBRE.mjs +0 -149
  85. package/dist/chunk-E2MPIBRE.mjs.map +0 -1
  86. package/dist/chunk-E6EPN5BT.mjs +0 -203
  87. package/dist/chunk-E6EPN5BT.mjs.map +0 -1
  88. package/dist/chunk-EEABSBKK.mjs +0 -10
  89. package/dist/chunk-EEABSBKK.mjs.map +0 -1
  90. package/dist/chunk-EJ7T4TPB.mjs +0 -622
  91. package/dist/chunk-EJ7T4TPB.mjs.map +0 -1
  92. package/dist/chunk-FQYDHKKU.mjs +0 -128
  93. package/dist/chunk-FQYDHKKU.mjs.map +0 -1
  94. package/dist/chunk-FRPWCMMG.mjs +0 -299
  95. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  96. package/dist/chunk-GN72QAIH.mjs +0 -146
  97. package/dist/chunk-GN72QAIH.mjs.map +0 -1
  98. package/dist/chunk-GQVGIUSN.mjs +0 -149
  99. package/dist/chunk-GQVGIUSN.mjs.map +0 -1
  100. package/dist/chunk-GS6K5OCM.mjs +0 -407
  101. package/dist/chunk-GS6K5OCM.mjs.map +0 -1
  102. package/dist/chunk-GXASWWJU.mjs +0 -364
  103. package/dist/chunk-GXASWWJU.mjs.map +0 -1
  104. package/dist/chunk-GY2STC2S.mjs +0 -180
  105. package/dist/chunk-GY2STC2S.mjs.map +0 -1
  106. package/dist/chunk-H2FA2SBS.mjs +0 -51
  107. package/dist/chunk-H2FA2SBS.mjs.map +0 -1
  108. package/dist/chunk-HNIQFZKB.mjs +0 -3550
  109. package/dist/chunk-HNIQFZKB.mjs.map +0 -1
  110. package/dist/chunk-ITN462YM.mjs +0 -98
  111. package/dist/chunk-ITN462YM.mjs.map +0 -1
  112. package/dist/chunk-J23HNLFY.mjs +0 -72
  113. package/dist/chunk-J23HNLFY.mjs.map +0 -1
  114. package/dist/chunk-J4FNJ5IU.mjs +0 -179
  115. package/dist/chunk-J4FNJ5IU.mjs.map +0 -1
  116. package/dist/chunk-J5YWQVI5.mjs +0 -211
  117. package/dist/chunk-J5YWQVI5.mjs.map +0 -1
  118. package/dist/chunk-JDEOUK5V.mjs +0 -427
  119. package/dist/chunk-JDEOUK5V.mjs.map +0 -1
  120. package/dist/chunk-JK25YEN6.mjs +0 -219
  121. package/dist/chunk-JK25YEN6.mjs.map +0 -1
  122. package/dist/chunk-K4667E2Q.mjs +0 -1916
  123. package/dist/chunk-K4667E2Q.mjs.map +0 -1
  124. package/dist/chunk-LGHEOHBU.mjs +0 -218
  125. package/dist/chunk-LGHEOHBU.mjs.map +0 -1
  126. package/dist/chunk-LLC7BNXW.mjs +0 -275
  127. package/dist/chunk-LLC7BNXW.mjs.map +0 -1
  128. package/dist/chunk-LM2YNO4U.mjs +0 -24
  129. package/dist/chunk-LM2YNO4U.mjs.map +0 -1
  130. package/dist/chunk-MIUW47JX.mjs +0 -639
  131. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  132. package/dist/chunk-NM3CRAAL.mjs +0 -467
  133. package/dist/chunk-NM3CRAAL.mjs.map +0 -1
  134. package/dist/chunk-NNLCAVB6.mjs +0 -391
  135. package/dist/chunk-NNLCAVB6.mjs.map +0 -1
  136. package/dist/chunk-P7QDS5AT.mjs +0 -191
  137. package/dist/chunk-P7QDS5AT.mjs.map +0 -1
  138. package/dist/chunk-PFE6GMNE.mjs +0 -603
  139. package/dist/chunk-PFE6GMNE.mjs.map +0 -1
  140. package/dist/chunk-QGOHVJ6J.mjs +0 -63
  141. package/dist/chunk-QGOHVJ6J.mjs.map +0 -1
  142. package/dist/chunk-QGQX7SFC.mjs +0 -180
  143. package/dist/chunk-QGQX7SFC.mjs.map +0 -1
  144. package/dist/chunk-QKVUNGAH.mjs +0 -39
  145. package/dist/chunk-QKVUNGAH.mjs.map +0 -1
  146. package/dist/chunk-QM746KUO.mjs +0 -56
  147. package/dist/chunk-QM746KUO.mjs.map +0 -1
  148. package/dist/chunk-QTZZ2ISQ.mjs +0 -753
  149. package/dist/chunk-QTZZ2ISQ.mjs.map +0 -1
  150. package/dist/chunk-RBRLLZL5.mjs +0 -81
  151. package/dist/chunk-RBRLLZL5.mjs.map +0 -1
  152. package/dist/chunk-RHIFZZUI.mjs +0 -69
  153. package/dist/chunk-RHIFZZUI.mjs.map +0 -1
  154. package/dist/chunk-RSKVYESE.mjs +0 -187
  155. package/dist/chunk-RSKVYESE.mjs.map +0 -1
  156. package/dist/chunk-SCFX4UTD.mjs +0 -28
  157. package/dist/chunk-SCFX4UTD.mjs.map +0 -1
  158. package/dist/chunk-SL6HTIOK.mjs +0 -66
  159. package/dist/chunk-SL6HTIOK.mjs.map +0 -1
  160. package/dist/chunk-SPBBQLXI.mjs +0 -207
  161. package/dist/chunk-SPBBQLXI.mjs.map +0 -1
  162. package/dist/chunk-T4QJQK76.mjs +0 -459
  163. package/dist/chunk-T4QJQK76.mjs.map +0 -1
  164. package/dist/chunk-TQAEEJB4.mjs +0 -157
  165. package/dist/chunk-TQAEEJB4.mjs.map +0 -1
  166. package/dist/chunk-UB5UOSHB.mjs +0 -458
  167. package/dist/chunk-UB5UOSHB.mjs.map +0 -1
  168. package/dist/chunk-USWZZUEH.mjs +0 -25
  169. package/dist/chunk-USWZZUEH.mjs.map +0 -1
  170. package/dist/chunk-UVCIEUJC.mjs +0 -16
  171. package/dist/chunk-UVCIEUJC.mjs.map +0 -1
  172. package/dist/chunk-UXUAWNO5.mjs +0 -396
  173. package/dist/chunk-UXUAWNO5.mjs.map +0 -1
  174. package/dist/chunk-V3XURYJO.mjs +0 -756
  175. package/dist/chunk-V3XURYJO.mjs.map +0 -1
  176. package/dist/chunk-V6WE6JSZ.mjs +0 -352
  177. package/dist/chunk-V6WE6JSZ.mjs.map +0 -1
  178. package/dist/chunk-V7RBCSDJ.mjs +0 -170
  179. package/dist/chunk-V7RBCSDJ.mjs.map +0 -1
  180. package/dist/chunk-VCANOYFI.mjs +0 -588
  181. package/dist/chunk-VCANOYFI.mjs.map +0 -1
  182. package/dist/chunk-VY2UYN5R.mjs +0 -224
  183. package/dist/chunk-VY2UYN5R.mjs.map +0 -1
  184. package/dist/chunk-W2CRQFF6.mjs +0 -1352
  185. package/dist/chunk-W2CRQFF6.mjs.map +0 -1
  186. package/dist/chunk-WZ5QFROO.mjs +0 -23
  187. package/dist/chunk-WZ5QFROO.mjs.map +0 -1
  188. package/dist/chunk-XIVV5IWN.mjs +0 -541
  189. package/dist/chunk-XIVV5IWN.mjs.map +0 -1
  190. package/dist/chunk-YW7OBE6Q.mjs +0 -119
  191. package/dist/chunk-YW7OBE6Q.mjs.map +0 -1
  192. package/dist/chunk-Z5CQMP54.mjs +0 -365
  193. package/dist/chunk-Z5CQMP54.mjs.map +0 -1
  194. package/dist/chunk-ZBE6MLHL.mjs +0 -230
  195. package/dist/chunk-ZBE6MLHL.mjs.map +0 -1
  196. package/dist/chunk-ZZ57EH5Z.mjs +0 -173
  197. package/dist/chunk-ZZ57EH5Z.mjs.map +0 -1
  198. package/dist/client-BT1mFQas.d.mts +0 -447
  199. package/dist/client-Nn0q4eO4.d.ts +0 -447
  200. package/dist/client-cache-CIlyBlmx.d.ts +0 -6
  201. package/dist/client-cache-D-EZ7XVW.d.mts +0 -6
  202. package/dist/client-plugins-Cw4qUGsw.d.ts +0 -1855
  203. package/dist/client-plugins-DQQ1adXM.d.mts +0 -1855
  204. package/dist/client-plugins.cjs +0 -415
  205. package/dist/client-plugins.cjs.map +0 -1
  206. package/dist/client-plugins.d.mts +0 -22
  207. package/dist/client-plugins.d.ts +0 -22
  208. package/dist/client-plugins.mjs +0 -10
  209. package/dist/client-plugins.mjs.map +0 -1
  210. package/dist/client.cjs +0 -5402
  211. package/dist/client.cjs.map +0 -1
  212. package/dist/client.d.mts +0 -447
  213. package/dist/client.d.ts +0 -447
  214. package/dist/client.mjs +0 -110
  215. package/dist/client.mjs.map +0 -1
  216. package/dist/config.cjs +0 -38
  217. package/dist/config.cjs.map +0 -1
  218. package/dist/config.d.mts +0 -29
  219. package/dist/config.d.ts +0 -29
  220. package/dist/config.mjs +0 -10
  221. package/dist/config.mjs.map +0 -1
  222. package/dist/cron.cjs +0 -406
  223. package/dist/cron.cjs.map +0 -1
  224. package/dist/cron.d.mts +0 -78
  225. package/dist/cron.d.ts +0 -78
  226. package/dist/cron.mjs +0 -30
  227. package/dist/cron.mjs.map +0 -1
  228. package/dist/deferred.cjs +0 -438
  229. package/dist/deferred.cjs.map +0 -1
  230. package/dist/deferred.d.mts +0 -42
  231. package/dist/deferred.d.ts +0 -42
  232. package/dist/deferred.mjs +0 -28
  233. package/dist/deferred.mjs.map +0 -1
  234. package/dist/deployment.cjs +0 -199
  235. package/dist/deployment.cjs.map +0 -1
  236. package/dist/deployment.d.mts +0 -34
  237. package/dist/deployment.d.ts +0 -34
  238. package/dist/deployment.mjs +0 -38
  239. package/dist/deployment.mjs.map +0 -1
  240. package/dist/devtools-LVC3VB5P.mjs +0 -370
  241. package/dist/devtools-LVC3VB5P.mjs.map +0 -1
  242. package/dist/devtools-client-3XRTBND5.mjs +0 -216
  243. package/dist/devtools-client-3XRTBND5.mjs.map +0 -1
  244. package/dist/devtools-ui-NJKFORTG.mjs +0 -1349
  245. package/dist/devtools-ui-NJKFORTG.mjs.map +0 -1
  246. package/dist/docs.cjs +0 -5553
  247. package/dist/docs.cjs.map +0 -1
  248. package/dist/docs.d.mts +0 -69
  249. package/dist/docs.d.ts +0 -69
  250. package/dist/docs.mjs +0 -46
  251. package/dist/docs.mjs.map +0 -1
  252. package/dist/env-types.cjs +0 -223
  253. package/dist/env-types.cjs.map +0 -1
  254. package/dist/env-types.d.mts +0 -11
  255. package/dist/env-types.d.ts +0 -11
  256. package/dist/env-types.mjs +0 -9
  257. package/dist/env-types.mjs.map +0 -1
  258. package/dist/env.cjs +0 -215
  259. package/dist/env.cjs.map +0 -1
  260. package/dist/env.d.mts +0 -45
  261. package/dist/env.d.ts +0 -45
  262. package/dist/env.mjs +0 -22
  263. package/dist/env.mjs.map +0 -1
  264. package/dist/environment/vite.d.mts +0 -22
  265. package/dist/environment/vite.d.ts +0 -22
  266. package/dist/environment.cjs +0 -96
  267. package/dist/environment.cjs.map +0 -1
  268. package/dist/environment.d.mts +0 -18
  269. package/dist/environment.d.ts +0 -18
  270. package/dist/environment.mjs +0 -14
  271. package/dist/environment.mjs.map +0 -1
  272. package/dist/headers.cjs +0 -126
  273. package/dist/headers.cjs.map +0 -1
  274. package/dist/headers.d.mts +0 -22
  275. package/dist/headers.d.ts +0 -22
  276. package/dist/headers.mjs +0 -12
  277. package/dist/headers.mjs.map +0 -1
  278. package/dist/i18n/client.d.mts +0 -32
  279. package/dist/i18n/client.d.ts +0 -32
  280. package/dist/i18n/index.d.mts +0 -20
  281. package/dist/i18n/index.d.ts +0 -20
  282. package/dist/i18n/server.d.mts +0 -30
  283. package/dist/i18n/server.d.ts +0 -30
  284. package/dist/image/server.d.mts +0 -37
  285. package/dist/image/server.d.ts +0 -37
  286. package/dist/image/sharp.d.mts +0 -7
  287. package/dist/image/sharp.d.ts +0 -7
  288. package/dist/image-config-Duob7wER.d.mts +0 -50
  289. package/dist/image-config-Duob7wER.d.ts +0 -50
  290. package/dist/image.cjs +0 -209
  291. package/dist/image.cjs.map +0 -1
  292. package/dist/image.d.mts +0 -39
  293. package/dist/image.d.ts +0 -39
  294. package/dist/image.mjs +0 -165
  295. package/dist/image.mjs.map +0 -1
  296. package/dist/index.cjs +0 -41822
  297. package/dist/index.cjs.map +0 -1
  298. package/dist/index.d.mts +0 -451
  299. package/dist/index.d.ts +0 -451
  300. package/dist/index.mjs +0 -973
  301. package/dist/index.mjs.map +0 -1
  302. package/dist/integration-api-CHT2OKAf.d.mts +0 -93
  303. package/dist/integration-api-CHT2OKAf.d.ts +0 -93
  304. package/dist/integration-orm-GQLGU66X.mjs +0 -13
  305. package/dist/integration-orm-GQLGU66X.mjs.map +0 -1
  306. package/dist/integrations.cjs +0 -2820
  307. package/dist/integrations.cjs.map +0 -1
  308. package/dist/integrations.d.mts +0 -22
  309. package/dist/integrations.d.ts +0 -22
  310. package/dist/integrations.mjs +0 -51
  311. package/dist/integrations.mjs.map +0 -1
  312. package/dist/internal/build-runtime.d.mts +0 -39
  313. package/dist/internal/build-runtime.d.ts +0 -39
  314. package/dist/internal/client-runtime.d.mts +0 -2
  315. package/dist/internal/client-runtime.d.ts +0 -2
  316. package/dist/internal/config-runtime.d.mts +0 -39
  317. package/dist/internal/config-runtime.d.ts +0 -39
  318. package/dist/internal/production-node-env.d.mts +0 -12
  319. package/dist/internal/production-node-env.d.ts +0 -12
  320. package/dist/internal/production-runtime.d.mts +0 -39
  321. package/dist/internal/production-runtime.d.ts +0 -39
  322. package/dist/layers-VWVDTPUZ.mjs +0 -16
  323. package/dist/layers-VWVDTPUZ.mjs.map +0 -1
  324. package/dist/manager-THKFTOFE.mjs +0 -10
  325. package/dist/manager-THKFTOFE.mjs.map +0 -1
  326. package/dist/markdown.cjs +0 -299
  327. package/dist/markdown.cjs.map +0 -1
  328. package/dist/markdown.d.mts +0 -43
  329. package/dist/markdown.d.ts +0 -43
  330. package/dist/markdown.mjs +0 -14
  331. package/dist/markdown.mjs.map +0 -1
  332. package/dist/metadata-BAPg_Nmo.d.ts +0 -22
  333. package/dist/metadata-_6i9oFG3.d.mts +0 -22
  334. package/dist/middleware.cjs +0 -2148
  335. package/dist/middleware.cjs.map +0 -1
  336. package/dist/middleware.d.mts +0 -164
  337. package/dist/middleware.d.ts +0 -164
  338. package/dist/middleware.mjs +0 -49
  339. package/dist/middleware.mjs.map +0 -1
  340. package/dist/navigation-errors-Dvwpzaer.d.mts +0 -13
  341. package/dist/navigation-errors-Dvwpzaer.d.ts +0 -13
  342. package/dist/navigation.cjs +0 -1329
  343. package/dist/navigation.cjs.map +0 -1
  344. package/dist/navigation.d.mts +0 -14
  345. package/dist/navigation.d.ts +0 -14
  346. package/dist/navigation.mjs +0 -33
  347. package/dist/navigation.mjs.map +0 -1
  348. package/dist/nitro-QO5LV6QK.mjs +0 -689
  349. package/dist/nitro-QO5LV6QK.mjs.map +0 -1
  350. package/dist/observability.cjs +0 -186
  351. package/dist/observability.cjs.map +0 -1
  352. package/dist/observability.d.mts +0 -335
  353. package/dist/observability.d.ts +0 -335
  354. package/dist/observability.mjs +0 -16
  355. package/dist/observability.mjs.map +0 -1
  356. package/dist/params-BALtrRim.d.ts +0 -15
  357. package/dist/params-ry-lxqmy.d.mts +0 -15
  358. package/dist/plugin-BJDf43dc.d.mts +0 -165
  359. package/dist/plugin-BJDf43dc.d.ts +0 -165
  360. package/dist/plugin.cjs +0 -23225
  361. package/dist/plugin.d.mts +0 -22
  362. package/dist/plugin.d.ts +0 -22
  363. package/dist/production-runtime-BoJDc5mc.d.ts +0 -79
  364. package/dist/production-runtime-C_B79w2P.d.mts +0 -28
  365. package/dist/production-runtime-DDEM1D2q.d.ts +0 -28
  366. package/dist/production-runtime-DPfgMV9Y.d.mts +0 -79
  367. package/dist/query/client.d.mts +0 -61
  368. package/dist/query/client.d.ts +0 -61
  369. package/dist/query/index.d.mts +0 -90
  370. package/dist/query/index.d.ts +0 -90
  371. package/dist/query/parsers.d.mts +0 -25
  372. package/dist/query/parsers.d.ts +0 -25
  373. package/dist/query/server.d.mts +0 -55
  374. package/dist/query/server.d.ts +0 -55
  375. package/dist/request-BrFBuc8G.d.mts +0 -6
  376. package/dist/request-BslSZIRz.d.ts +0 -6
  377. package/dist/request.d.mts +0 -2
  378. package/dist/request.d.ts +0 -2
  379. package/dist/resolver-C6iecsDV.d.ts +0 -14
  380. package/dist/resolver-DlOPpjkB.d.mts +0 -14
  381. package/dist/route-runtime-DoOHzCAD.d.mts +0 -38
  382. package/dist/route-runtime-DoOHzCAD.d.ts +0 -38
  383. package/dist/router.d.mts +0 -36
  384. package/dist/router.d.ts +0 -36
  385. package/dist/routes.d.mts +0 -224
  386. package/dist/routes.d.ts +0 -224
  387. package/dist/runtime-9nQjVM7X.d.mts +0 -206
  388. package/dist/runtime-B6GvwDS1.d.ts +0 -27
  389. package/dist/runtime-DeAAZ6gO.d.mts +0 -27
  390. package/dist/runtime-DgeS2skB.d.ts +0 -206
  391. package/dist/server-action-security.d.mts +0 -43
  392. package/dist/server-action-security.d.ts +0 -43
  393. package/dist/server-fn-client.d.mts +0 -32
  394. package/dist/server-fn-client.d.ts +0 -32
  395. package/dist/server-fn.d.mts +0 -93
  396. package/dist/server-fn.d.ts +0 -93
  397. package/dist/server-plugins.d.mts +0 -55
  398. package/dist/server-plugins.d.ts +0 -55
  399. package/dist/server-query-client.d.mts +0 -50
  400. package/dist/server-query-client.d.ts +0 -50
  401. package/dist/server-query.d.mts +0 -36
  402. package/dist/server-query.d.ts +0 -36
  403. package/dist/server.d.mts +0 -48
  404. package/dist/server.d.ts +0 -48
  405. package/dist/storage.d.mts +0 -52
  406. package/dist/storage.d.ts +0 -52
  407. package/dist/testing.d.mts +0 -101
  408. package/dist/testing.d.ts +0 -101
  409. package/dist/transport-BmbGTXA5.d.mts +0 -49
  410. package/dist/transport-BmbGTXA5.d.ts +0 -49
  411. package/dist/types-BH1lhg5G.d.mts +0 -81
  412. package/dist/types-BH1lhg5G.d.ts +0 -81
  413. package/dist/types-C9N-nk5R.d.mts +0 -53
  414. package/dist/types-C9N-nk5R.d.ts +0 -53
  415. package/dist/types-D1A6-XvH.d.mts +0 -73
  416. package/dist/types-D1A6-XvH.d.ts +0 -73
  417. package/dist/utils-CHXlMDkg.d.mts +0 -23
  418. package/dist/utils-Drsyz1Vj.d.ts +0 -23
  419. package/dist/version.d.mts +0 -3
  420. package/dist/version.d.ts +0 -3
  421. package/dist/vite.d.mts +0 -22
  422. package/dist/vite.d.ts +0 -22
  423. package/dist/workflows.d.mts +0 -110
  424. package/dist/workflows.d.ts +0 -110
@@ -1,158 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-CGILA3WO.mjs";
4
-
5
- // src/server-fn-client.ts
6
- import { useCallback, useMemo, useRef, useState } from "react";
7
- function useServerFn(serverFn, options = {}) {
8
- const { initialResult = null, resetOnSubmit = true } = options;
9
- const callbacksRef = useRef({});
10
- const requestIdRef = useRef(0);
11
- const initialState = {
12
- pendingCount: 0,
13
- status: "idle",
14
- result: initialResult,
15
- error: null
16
- };
17
- const stateRef = useRef(initialState);
18
- const [state, setState] = useState(initialState);
19
- const setActionState = useCallback(
20
- (value) => {
21
- setState((current) => {
22
- const next = typeof value === "function" ? value(current) : value;
23
- stateRef.current = next;
24
- return next;
25
- });
26
- },
27
- []
28
- );
29
- callbacksRef.current = {
30
- onError: options.onError,
31
- onSettled: options.onSettled,
32
- onSuccess: options.onSuccess,
33
- throwOnFormError: options.throwOnFormError
34
- };
35
- const submit = useCallback(
36
- async (input) => {
37
- const requestId = ++requestIdRef.current;
38
- const formData = isFormData(input) ? input : void 0;
39
- const previousResult = stateRef.current.result;
40
- const optimisticResult = options.optimistic?.({
41
- input,
42
- formData,
43
- current: previousResult
44
- });
45
- const hasOptimisticResult = optimisticResult !== void 0;
46
- setActionState((current) => ({
47
- pendingCount: current.pendingCount + 1,
48
- status: "pending",
49
- result: hasOptimisticResult ? optimisticResult : resetOnSubmit ? null : current.result,
50
- error: null
51
- }));
52
- try {
53
- const result = await serverFn(input);
54
- const isLatestRequest = requestId === requestIdRef.current;
55
- setActionState((current) => {
56
- const pendingCount = Math.max(0, current.pendingCount - 1);
57
- if (!isLatestRequest) {
58
- return {
59
- ...current,
60
- pendingCount,
61
- status: pendingCount > 0 ? "pending" : current.status
62
- };
63
- }
64
- return {
65
- pendingCount,
66
- status: pendingCount > 0 ? "pending" : "success",
67
- result,
68
- error: null
69
- };
70
- });
71
- if (isLatestRequest) {
72
- callbacksRef.current.onSuccess?.(result);
73
- callbacksRef.current.onSettled?.(result, null);
74
- }
75
- return result;
76
- } catch (cause) {
77
- const error = normalizeServerFnError(cause);
78
- const isLatestRequest = requestId === requestIdRef.current;
79
- setActionState((current) => {
80
- const pendingCount = Math.max(0, current.pendingCount - 1);
81
- if (!isLatestRequest) {
82
- return {
83
- ...current,
84
- pendingCount,
85
- status: pendingCount > 0 ? "pending" : current.status
86
- };
87
- }
88
- return {
89
- pendingCount,
90
- status: pendingCount > 0 ? "pending" : "error",
91
- result: hasOptimisticResult && options.rollbackOnError ? previousResult : resetOnSubmit ? null : current.result,
92
- error
93
- };
94
- });
95
- if (isLatestRequest) {
96
- callbacksRef.current.onError?.(error);
97
- callbacksRef.current.onSettled?.(null, error);
98
- }
99
- throw error;
100
- }
101
- },
102
- [options.optimistic, options.rollbackOnError, resetOnSubmit, serverFn, setActionState]
103
- );
104
- const formAction = useCallback(
105
- async (formData) => {
106
- try {
107
- await submit(formData);
108
- } catch (error) {
109
- if (callbacksRef.current.throwOnFormError) {
110
- throw error;
111
- }
112
- }
113
- },
114
- [submit]
115
- );
116
- const reset = useCallback(() => {
117
- requestIdRef.current += 1;
118
- setActionState({
119
- pendingCount: 0,
120
- status: "idle",
121
- result: initialResult,
122
- error: null
123
- });
124
- }, [initialResult, setActionState]);
125
- return useMemo(
126
- () => ({
127
- pending: state.pendingCount > 0,
128
- status: state.status,
129
- result: state.result,
130
- error: state.error,
131
- submit,
132
- formAction,
133
- reset
134
- }),
135
- [formAction, reset, state.error, state.pendingCount, state.result, state.status, submit]
136
- );
137
- }
138
- __name(useServerFn, "useServerFn");
139
- function normalizeServerFnError(error) {
140
- if (error instanceof Error) return error;
141
- const normalized = new Error(typeof error === "string" ? error : "Server function failed");
142
- normalized.cause = error;
143
- return normalized;
144
- }
145
- __name(normalizeServerFnError, "normalizeServerFnError");
146
- function isFormData(value) {
147
- if (!value || typeof value !== "object") return false;
148
- if (typeof FormData !== "undefined" && value instanceof FormData) {
149
- return true;
150
- }
151
- return Object.prototype.toString.call(value) === "[object FormData]" && typeof value.entries === "function";
152
- }
153
- __name(isFormData, "isFormData");
154
-
155
- export {
156
- useServerFn
157
- };
158
- //# sourceMappingURL=chunk-32W4QEJP.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server-fn-client.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { ServerFn } from \"./server-fn\";\n\nexport type ServerFnActionStatus = \"idle\" | \"pending\" | \"success\" | \"error\";\n\nexport type ServerFnSubmit<TInput, TResult> = [unknown] extends [TInput]\n ? (input?: TInput | FormData) => Promise<TResult>\n : (input: TInput | FormData) => Promise<TResult>;\n\nexport type ServerFnOptimisticContext<TInput, TResult> = {\n input: TInput | FormData | undefined;\n formData?: FormData;\n current: TResult | null;\n};\n\nexport type UseServerFnOptions<TResult, TError extends Error = Error, TInput = unknown> = {\n initialResult?: TResult | null;\n resetOnSubmit?: boolean;\n throwOnFormError?: boolean;\n optimistic?: (context: ServerFnOptimisticContext<TInput, TResult>) => TResult | null | undefined;\n rollbackOnError?: boolean;\n onSuccess?: (result: TResult) => void;\n onError?: (error: TError) => void;\n onSettled?: (result: TResult | null, error: TError | null) => void;\n};\n\nexport type UseServerFnReturn<TInput, TResult, TError extends Error = Error> = {\n pending: boolean;\n status: ServerFnActionStatus;\n result: TResult | null;\n error: TError | null;\n submit: ServerFnSubmit<TInput, TResult>;\n formAction: (formData: FormData) => Promise<void>;\n reset: () => void;\n};\n\ntype ServerFnActionState<TResult, TError extends Error> = {\n pendingCount: number;\n status: ServerFnActionStatus;\n result: TResult | null;\n error: TError | null;\n};\n\ntype ServerFnActionCallbacks<TResult, TError extends Error> = Pick<\n UseServerFnOptions<TResult, TError, unknown>,\n \"onError\" | \"onSettled\" | \"onSuccess\" | \"throwOnFormError\"\n>;\n\nexport function useServerFn<TInput, TResult, TError extends Error = Error>(\n serverFn: ServerFn<TInput, TResult>,\n options: UseServerFnOptions<TResult, TError, TInput> = {},\n): UseServerFnReturn<TInput, TResult, TError> {\n const { initialResult = null, resetOnSubmit = true } = options;\n const callbacksRef = useRef<ServerFnActionCallbacks<TResult, TError>>({});\n const requestIdRef = useRef(0);\n const initialState: ServerFnActionState<TResult, TError> = {\n pendingCount: 0,\n status: \"idle\",\n result: initialResult,\n error: null,\n };\n const stateRef = useRef<ServerFnActionState<TResult, TError>>(initialState);\n const [state, setState] = useState<ServerFnActionState<TResult, TError>>(initialState);\n const setActionState = useCallback(\n (\n value:\n | ServerFnActionState<TResult, TError>\n | ((current: ServerFnActionState<TResult, TError>) => ServerFnActionState<TResult, TError>),\n ) => {\n setState((current) => {\n const next = typeof value === \"function\" ? value(current) : value;\n stateRef.current = next;\n return next;\n });\n },\n [],\n );\n\n callbacksRef.current = {\n onError: options.onError,\n onSettled: options.onSettled,\n onSuccess: options.onSuccess,\n throwOnFormError: options.throwOnFormError,\n };\n\n const submit = useCallback(\n async (input?: TInput | FormData) => {\n const requestId = ++requestIdRef.current;\n const formData = isFormData(input) ? input : undefined;\n const previousResult = stateRef.current.result;\n const optimisticResult = options.optimistic?.({\n input,\n formData,\n current: previousResult,\n });\n const hasOptimisticResult = optimisticResult !== undefined;\n\n setActionState((current) => ({\n pendingCount: current.pendingCount + 1,\n status: \"pending\",\n result: hasOptimisticResult ? optimisticResult : resetOnSubmit ? null : current.result,\n error: null,\n }));\n\n try {\n const result = await serverFn(input as TInput | FormData);\n const isLatestRequest = requestId === requestIdRef.current;\n\n setActionState((current) => {\n const pendingCount = Math.max(0, current.pendingCount - 1);\n\n if (!isLatestRequest) {\n return {\n ...current,\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : current.status,\n };\n }\n\n return {\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : \"success\",\n result,\n error: null,\n };\n });\n\n if (isLatestRequest) {\n callbacksRef.current.onSuccess?.(result);\n callbacksRef.current.onSettled?.(result, null);\n }\n\n return result;\n } catch (cause) {\n const error = normalizeServerFnError(cause) as TError;\n const isLatestRequest = requestId === requestIdRef.current;\n\n setActionState((current) => {\n const pendingCount = Math.max(0, current.pendingCount - 1);\n\n if (!isLatestRequest) {\n return {\n ...current,\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : current.status,\n };\n }\n\n return {\n pendingCount,\n status: pendingCount > 0 ? \"pending\" : \"error\",\n result:\n hasOptimisticResult && options.rollbackOnError\n ? previousResult\n : resetOnSubmit\n ? null\n : current.result,\n error,\n };\n });\n\n if (isLatestRequest) {\n callbacksRef.current.onError?.(error);\n callbacksRef.current.onSettled?.(null, error);\n }\n\n throw error;\n }\n },\n [options.optimistic, options.rollbackOnError, resetOnSubmit, serverFn, setActionState],\n ) as ServerFnSubmit<TInput, TResult>;\n\n const formAction = useCallback(\n async (formData: FormData) => {\n try {\n await submit(formData as TInput | FormData);\n } catch (error) {\n if (callbacksRef.current.throwOnFormError) {\n throw error;\n }\n }\n },\n [submit],\n );\n\n const reset = useCallback(() => {\n requestIdRef.current += 1;\n setActionState({\n pendingCount: 0,\n status: \"idle\",\n result: initialResult,\n error: null,\n });\n }, [initialResult, setActionState]);\n\n return useMemo(\n () => ({\n pending: state.pendingCount > 0,\n status: state.status,\n result: state.result,\n error: state.error,\n submit,\n formAction,\n reset,\n }),\n [formAction, reset, state.error, state.pendingCount, state.result, state.status, submit],\n );\n}\n\nfunction normalizeServerFnError(error: unknown) {\n if (error instanceof Error) return error;\n\n const normalized = new Error(typeof error === \"string\" ? error : \"Server function failed\");\n (normalized as Error & { cause?: unknown }).cause = error;\n return normalized;\n}\n\nfunction isFormData(value: unknown): value is FormData {\n if (!value || typeof value !== \"object\") return false;\n\n if (typeof FormData !== \"undefined\" && value instanceof FormData) {\n return true;\n }\n\n return (\n Object.prototype.toString.call(value) === \"[object FormData]\" &&\n typeof (value as { entries?: unknown }).entries === \"function\"\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,452 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-CGILA3WO.mjs";
4
-
5
- // src/image-server.ts
6
- var _FarmImageRequestError = class _FarmImageRequestError extends Error {
7
- constructor(code, status, message) {
8
- super(message);
9
- this.name = "FarmImageRequestError";
10
- this.code = code;
11
- this.status = status;
12
- }
13
- };
14
- __name(_FarmImageRequestError, "FarmImageRequestError");
15
- var FarmImageRequestError = _FarmImageRequestError;
16
- function createFarmImageHandler(config, options) {
17
- const fetcher = options.fetch ?? globalThis.fetch;
18
- const cache = new FarmImageMemoryCache(options.cacheEntries ?? 100);
19
- const allowedWidths = /* @__PURE__ */ new Set([...config.deviceSizes, ...config.imageSizes]);
20
- const allowedQualities = new Set(config.qualities);
21
- return /* @__PURE__ */ __name(async function handleFarmImage(request) {
22
- const requestUrl = new URL(request.url);
23
- if (requestUrl.pathname !== config.path) return null;
24
- try {
25
- if (config.provider === "none") {
26
- throw new FarmImageRequestError(
27
- "DISALLOWED_SOURCE",
28
- 404,
29
- "The Farm image optimizer is disabled"
30
- );
31
- }
32
- if (request.method !== "GET" && request.method !== "HEAD") {
33
- throw new FarmImageRequestError(
34
- "INVALID_METHOD",
35
- 405,
36
- "The Farm image optimizer only accepts GET and HEAD"
37
- );
38
- }
39
- const sourceUrl = await resolveImageSourceUrl(requestUrl, config, options.validateRemoteUrl);
40
- const width = parseAllowedInteger(requestUrl.searchParams.get("w"), allowedWidths, "width");
41
- const quality = parseAllowedInteger(
42
- requestUrl.searchParams.get("q"),
43
- allowedQualities,
44
- "quality"
45
- );
46
- const accept = request.headers.get("accept") ?? "";
47
- const cacheKey = `${sourceUrl.href}
48
- ${width}
49
- ${quality}
50
- ${accept}`;
51
- let optimized = cache.get(cacheKey);
52
- if (!optimized) {
53
- const fetchedSource = await fetchImageSource(
54
- sourceUrl,
55
- requestUrl.origin,
56
- config,
57
- fetcher,
58
- options.validateRemoteUrl,
59
- request.signal
60
- );
61
- const source = await readResponseWithLimit(
62
- fetchedSource.response,
63
- config.maximumResponseBody
64
- );
65
- const sourceType = detectImageContentType(source);
66
- validateSourceType(sourceType, config);
67
- throwIfAborted(request.signal);
68
- const result = await options.transform({
69
- source,
70
- sourceUrl: fetchedSource.url,
71
- sourceType,
72
- width,
73
- quality,
74
- accept,
75
- formats: config.formats,
76
- signal: request.signal
77
- });
78
- throwIfAborted(request.signal);
79
- validateTransformedResult(result, config);
80
- optimized = {
81
- ...result,
82
- etag: createImageEtag(result.body),
83
- cacheControl: `public, max-age=${config.minimumCacheTTL}, stale-while-revalidate=${Math.max(
84
- config.minimumCacheTTL,
85
- 60
86
- )}`,
87
- expiresAt: Date.now() + config.minimumCacheTTL * 1e3
88
- };
89
- cache.set(cacheKey, optimized);
90
- }
91
- return createOptimizedImageResponse(request, optimized, config);
92
- } catch (error) {
93
- if (!(error instanceof FarmImageRequestError) && !isAbortError(error)) {
94
- options.onError?.(error, request);
95
- }
96
- return createFarmImageErrorResponse(error);
97
- }
98
- }, "handleFarmImage");
99
- }
100
- __name(createFarmImageHandler, "createFarmImageHandler");
101
- function createCloudflareImageTransformer(fetcher = globalThis.fetch) {
102
- return async ({ sourceUrl, width, quality, accept, formats, signal }) => {
103
- const format = selectOutputFormat(accept, formats);
104
- const response = await fetcher(sourceUrl, {
105
- signal,
106
- headers: { accept: "image/*" },
107
- cf: {
108
- image: {
109
- fit: "scale-down",
110
- width,
111
- quality,
112
- ...format ? { format: format === "image/avif" ? "avif" : "webp" } : {}
113
- }
114
- }
115
- });
116
- if (!response.ok) {
117
- throw new FarmImageRequestError(
118
- "UNSUPPORTED_IMAGE",
119
- response.status === 404 ? 404 : 502,
120
- "Cloudflare could not transform the source image"
121
- );
122
- }
123
- const body = new Uint8Array(await response.arrayBuffer());
124
- return {
125
- body,
126
- contentType: normalizeImageContentType(response.headers.get("content-type")) || detectImageContentType(body)
127
- };
128
- };
129
- }
130
- __name(createCloudflareImageTransformer, "createCloudflareImageTransformer");
131
- function selectOutputFormat(accept, formats) {
132
- const normalizedAccept = accept.toLowerCase();
133
- return formats.find((format) => normalizedAccept.includes(format));
134
- }
135
- __name(selectOutputFormat, "selectOutputFormat");
136
- function isPrivateImageAddress(address) {
137
- const value = address.toLowerCase().replace(/^\[|\]$/g, "");
138
- if (value === "::" || value === "::1") return true;
139
- if (/^(?:fc|fd)[0-9a-f]{2}:/.test(value) || /^fe[89ab][0-9a-f]:/.test(value)) return true;
140
- if (value.startsWith("::ffff:")) return isPrivateImageAddress(value.slice(7));
141
- const parts = value.split(".");
142
- if (parts.length !== 4 || parts.some((part) => !/^\d{1,3}$/.test(part))) return false;
143
- const octets = parts.map(Number);
144
- if (octets.some((part) => part > 255)) return false;
145
- const [a, b] = octets;
146
- return a === 0 || a === 10 || a === 127 || a === 100 && b >= 64 && b <= 127 || a === 169 && b === 254 || a === 172 && b >= 16 && b <= 31 || a === 192 && (b === 0 || b === 168) || a === 198 && (b === 18 || b === 19) || a >= 224;
147
- }
148
- __name(isPrivateImageAddress, "isPrivateImageAddress");
149
- function parseAllowedInteger(raw, allowed, name) {
150
- if (!raw || !/^\d+$/.test(raw)) {
151
- throw new FarmImageRequestError(
152
- "INVALID_PARAMETER",
153
- 400,
154
- `Image ${name} must be an allowed integer`
155
- );
156
- }
157
- const value = Number(raw);
158
- if (!allowed.has(value)) {
159
- throw new FarmImageRequestError("INVALID_PARAMETER", 400, `Image ${name} is not configured`);
160
- }
161
- return value;
162
- }
163
- __name(parseAllowedInteger, "parseAllowedInteger");
164
- async function resolveImageSourceUrl(requestUrl, config, validateRemoteUrl) {
165
- const raw = requestUrl.searchParams.get("url");
166
- if (!raw || raw.length > 4096 || raw.startsWith("//")) {
167
- throw new FarmImageRequestError("INVALID_PARAMETER", 400, "Invalid image source URL");
168
- }
169
- let sourceUrl;
170
- try {
171
- sourceUrl = raw.startsWith("/") ? new URL(raw, requestUrl.origin) : new URL(raw);
172
- } catch {
173
- throw new FarmImageRequestError("INVALID_PARAMETER", 400, "Invalid image source URL");
174
- }
175
- await validateImageSourceUrl(sourceUrl, requestUrl.origin, config, validateRemoteUrl);
176
- return sourceUrl;
177
- }
178
- __name(resolveImageSourceUrl, "resolveImageSourceUrl");
179
- async function validateImageSourceUrl(sourceUrl, requestOrigin, config, validateRemoteUrl) {
180
- if (sourceUrl.protocol !== "http:" && sourceUrl.protocol !== "https:") {
181
- throw new FarmImageRequestError("DISALLOWED_SOURCE", 400, "Unsupported image protocol");
182
- }
183
- if (sourceUrl.username || sourceUrl.password || sourceUrl.hash) {
184
- throw new FarmImageRequestError("DISALLOWED_SOURCE", 400, "Unsafe image source URL");
185
- }
186
- if (sourceUrl.origin === requestOrigin) {
187
- if (sourceUrl.pathname === config.path || !matchesLocalPatterns(sourceUrl, config.localPatterns)) {
188
- throw new FarmImageRequestError(
189
- "DISALLOWED_SOURCE",
190
- 400,
191
- "Local image source is not allowed"
192
- );
193
- }
194
- return;
195
- }
196
- if (!matchesRemoteSource(sourceUrl, config)) {
197
- throw new FarmImageRequestError("DISALLOWED_SOURCE", 400, "Remote image source is not allowed");
198
- }
199
- if (!config.dangerouslyAllowLocalIP && isPrivateImageAddress(sourceUrl.hostname)) {
200
- throw new FarmImageRequestError("PRIVATE_SOURCE", 400, "Private image source is not allowed");
201
- }
202
- if (!config.dangerouslyAllowLocalIP) {
203
- await validateRemoteUrl?.(sourceUrl);
204
- }
205
- }
206
- __name(validateImageSourceUrl, "validateImageSourceUrl");
207
- async function fetchImageSource(initialUrl, requestOrigin, config, fetcher, validateRemoteUrl, signal) {
208
- let currentUrl = initialUrl;
209
- for (let redirectCount = 0; ; redirectCount += 1) {
210
- throwIfAborted(signal);
211
- const response = await fetcher(currentUrl, {
212
- method: "GET",
213
- redirect: "manual",
214
- signal,
215
- headers: {
216
- accept: "image/avif,image/webp,image/*,*/*;q=0.8",
217
- "user-agent": "Farm.js Image Optimizer"
218
- }
219
- });
220
- if (![301, 302, 303, 307, 308].includes(response.status)) {
221
- if (!response.ok) {
222
- throw new FarmImageRequestError(
223
- "UNSUPPORTED_IMAGE",
224
- response.status === 404 ? 404 : 502,
225
- "Could not fetch source image"
226
- );
227
- }
228
- return { response, url: currentUrl };
229
- }
230
- if (redirectCount >= config.maximumRedirects) {
231
- throw new FarmImageRequestError(
232
- "TOO_MANY_REDIRECTS",
233
- 400,
234
- "Source image exceeded the redirect limit"
235
- );
236
- }
237
- const location = response.headers.get("location");
238
- if (!location) {
239
- throw new FarmImageRequestError("UNSUPPORTED_IMAGE", 502, "Invalid image redirect");
240
- }
241
- currentUrl = new URL(location, currentUrl);
242
- await validateImageSourceUrl(currentUrl, requestOrigin, config, validateRemoteUrl);
243
- }
244
- }
245
- __name(fetchImageSource, "fetchImageSource");
246
- async function readResponseWithLimit(response, limit) {
247
- const contentLength = response.headers.get("content-length");
248
- if (contentLength && Number(contentLength) > limit) {
249
- throw new FarmImageRequestError("BODY_TOO_LARGE", 413, "Source image is too large");
250
- }
251
- if (!response.body) return new Uint8Array();
252
- const reader = response.body.getReader();
253
- const chunks = [];
254
- let byteLength = 0;
255
- while (true) {
256
- const { done, value } = await reader.read();
257
- if (done) break;
258
- byteLength += value.byteLength;
259
- if (byteLength > limit) {
260
- await reader.cancel();
261
- throw new FarmImageRequestError("BODY_TOO_LARGE", 413, "Source image is too large");
262
- }
263
- chunks.push(value);
264
- }
265
- const result = new Uint8Array(byteLength);
266
- let offset = 0;
267
- for (const chunk of chunks) {
268
- result.set(chunk, offset);
269
- offset += chunk.byteLength;
270
- }
271
- return result;
272
- }
273
- __name(readResponseWithLimit, "readResponseWithLimit");
274
- function detectImageContentType(bytes) {
275
- if (bytes.length >= 8 && bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71) {
276
- return "image/png";
277
- }
278
- if (bytes.length >= 3 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) {
279
- return "image/jpeg";
280
- }
281
- if (bytes.length >= 6) {
282
- const signature = new TextDecoder().decode(bytes.slice(0, 6));
283
- if (signature === "GIF87a" || signature === "GIF89a") return "image/gif";
284
- }
285
- if (bytes.length >= 12) {
286
- const riff = new TextDecoder().decode(bytes.slice(0, 4));
287
- const webp = new TextDecoder().decode(bytes.slice(8, 12));
288
- if (riff === "RIFF" && webp === "WEBP") return "image/webp";
289
- const box = new TextDecoder().decode(bytes.slice(4, 12));
290
- if (box.startsWith("ftypavif") || box.startsWith("ftypavis")) return "image/avif";
291
- }
292
- const prefix = new TextDecoder().decode(bytes.slice(0, 512)).trimStart().toLowerCase();
293
- if (prefix.startsWith("<svg") || prefix.startsWith("<?xml") && prefix.includes("<svg")) {
294
- return "image/svg+xml";
295
- }
296
- return "";
297
- }
298
- __name(detectImageContentType, "detectImageContentType");
299
- function validateSourceType(type, config) {
300
- if (!type || type === "image/svg+xml" && !config.dangerouslyAllowSVG) {
301
- throw new FarmImageRequestError("UNSUPPORTED_IMAGE", 415, "Unsupported source image");
302
- }
303
- }
304
- __name(validateSourceType, "validateSourceType");
305
- function validateTransformedResult(result, config) {
306
- if (!(result.body instanceof Uint8Array) || result.body.byteLength === 0) {
307
- throw new Error("The image transformer returned an empty response");
308
- }
309
- if (result.body.byteLength > config.maximumResponseBody) {
310
- throw new FarmImageRequestError("BODY_TOO_LARGE", 413, "Optimized image is too large");
311
- }
312
- const contentType = normalizeImageContentType(result.contentType);
313
- if (!contentType || contentType === "image/svg+xml" && !config.dangerouslyAllowSVG) {
314
- throw new Error("The image transformer returned an unsupported content type");
315
- }
316
- result.contentType = contentType;
317
- }
318
- __name(validateTransformedResult, "validateTransformedResult");
319
- function normalizeImageContentType(value) {
320
- const type = value?.split(";", 1)[0].trim().toLowerCase() ?? "";
321
- return type.startsWith("image/") ? type : "";
322
- }
323
- __name(normalizeImageContentType, "normalizeImageContentType");
324
- function matchesRemoteSource(url, config) {
325
- if (config.domains.includes(url.hostname.toLowerCase())) return true;
326
- return config.remotePatterns.some((pattern) => matchesRemotePattern(url, pattern));
327
- }
328
- __name(matchesRemoteSource, "matchesRemoteSource");
329
- function matchesRemotePattern(url, pattern) {
330
- return (!pattern.protocol || url.protocol === `${pattern.protocol}:`) && matchesHostname(url.hostname, pattern.hostname) && (pattern.port === void 0 || url.port === pattern.port) && matchesGlob(url.pathname, pattern.pathname ?? "/**") && (pattern.search === void 0 || url.search === pattern.search);
331
- }
332
- __name(matchesRemotePattern, "matchesRemotePattern");
333
- function matchesLocalPatterns(url, patterns) {
334
- return patterns.some(
335
- (pattern) => matchesGlob(url.pathname, pattern.pathname) && (pattern.search === void 0 || url.search === pattern.search)
336
- );
337
- }
338
- __name(matchesLocalPatterns, "matchesLocalPatterns");
339
- function matchesHostname(hostname, pattern) {
340
- const normalizedHostname = hostname.toLowerCase();
341
- const normalizedPattern = pattern.toLowerCase();
342
- if (normalizedPattern.startsWith("**.")) {
343
- const suffix = normalizedPattern.slice(3);
344
- return normalizedHostname === suffix || normalizedHostname.endsWith(`.${suffix}`);
345
- }
346
- if (normalizedPattern.startsWith("*.")) {
347
- const suffix = normalizedPattern.slice(2);
348
- const prefix = normalizedHostname.slice(0, -(suffix.length + 1));
349
- return normalizedHostname.endsWith(`.${suffix}`) && !!prefix && !prefix.includes(".");
350
- }
351
- return normalizedHostname === normalizedPattern;
352
- }
353
- __name(matchesHostname, "matchesHostname");
354
- function matchesGlob(value, pattern) {
355
- const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
356
- const source = escaped.replace(/\*\*/g, "\0").replace(/\*/g, "[^/]*").replace(/\0/g, ".*");
357
- return new RegExp(`^${source}$`).test(value);
358
- }
359
- __name(matchesGlob, "matchesGlob");
360
- function createOptimizedImageResponse(request, image, config) {
361
- const headers = new Headers({
362
- "cache-control": image.cacheControl,
363
- "content-type": image.contentType,
364
- "content-length": String(image.body.byteLength),
365
- "content-disposition": "inline",
366
- etag: image.etag,
367
- vary: "Accept",
368
- "x-content-type-options": "nosniff"
369
- });
370
- if (image.contentType === "image/svg+xml" && config.dangerouslyAllowSVG) {
371
- headers.set("content-security-policy", "default-src 'none'; sandbox");
372
- }
373
- if (request.headers.get("if-none-match") === image.etag) {
374
- headers.delete("content-length");
375
- return new Response(null, { status: 304, headers });
376
- }
377
- const body = request.method === "HEAD" ? null : image.body.buffer.slice(
378
- image.body.byteOffset,
379
- image.body.byteOffset + image.body.byteLength
380
- );
381
- return new Response(body, { status: 200, headers });
382
- }
383
- __name(createOptimizedImageResponse, "createOptimizedImageResponse");
384
- function createFarmImageErrorResponse(error) {
385
- const status = error instanceof FarmImageRequestError ? error.status : isAbortError(error) ? 499 : 500;
386
- const headers = new Headers({
387
- "cache-control": "no-store",
388
- "content-type": "text/plain; charset=utf-8",
389
- "x-content-type-options": "nosniff"
390
- });
391
- if (status === 405) headers.set("allow", "GET, HEAD");
392
- const message = status === 400 ? "Invalid image request" : status === 404 ? "Image not found" : status === 405 ? "Method not allowed" : status === 413 ? "Image is too large" : status === 415 ? "Unsupported image" : status === 499 ? "Image request cancelled" : "Image optimization failed";
393
- return new Response(message, { status, headers });
394
- }
395
- __name(createFarmImageErrorResponse, "createFarmImageErrorResponse");
396
- function createImageEtag(bytes) {
397
- let hash = 2166136261;
398
- for (const byte of bytes) {
399
- hash ^= byte;
400
- hash = Math.imul(hash, 16777619);
401
- }
402
- return `W/"farm-${bytes.byteLength.toString(16)}-${(hash >>> 0).toString(16)}"`;
403
- }
404
- __name(createImageEtag, "createImageEtag");
405
- function throwIfAborted(signal) {
406
- if (signal.aborted) {
407
- throw signal.reason instanceof Error ? signal.reason : new DOMException("The image request was aborted", "AbortError");
408
- }
409
- }
410
- __name(throwIfAborted, "throwIfAborted");
411
- function isAbortError(error) {
412
- return error instanceof Error && error.name === "AbortError";
413
- }
414
- __name(isAbortError, "isAbortError");
415
- var _FarmImageMemoryCache = class _FarmImageMemoryCache {
416
- constructor(capacity) {
417
- this.capacity = capacity;
418
- this.entries = /* @__PURE__ */ new Map();
419
- }
420
- get(key) {
421
- const value = this.entries.get(key);
422
- if (!value) return void 0;
423
- if (value.expiresAt <= Date.now()) {
424
- this.entries.delete(key);
425
- return void 0;
426
- }
427
- this.entries.delete(key);
428
- this.entries.set(key, value);
429
- return value;
430
- }
431
- set(key, value) {
432
- if (this.capacity <= 0) return;
433
- this.entries.delete(key);
434
- this.entries.set(key, value);
435
- while (this.entries.size > this.capacity) {
436
- const oldestKey = this.entries.keys().next().value;
437
- if (oldestKey === void 0) break;
438
- this.entries.delete(oldestKey);
439
- }
440
- }
441
- };
442
- __name(_FarmImageMemoryCache, "FarmImageMemoryCache");
443
- var FarmImageMemoryCache = _FarmImageMemoryCache;
444
-
445
- export {
446
- FarmImageRequestError,
447
- createFarmImageHandler,
448
- createCloudflareImageTransformer,
449
- selectOutputFormat,
450
- isPrivateImageAddress
451
- };
452
- //# sourceMappingURL=chunk-3XNTL3FQ.mjs.map