@farm.js/core 0.1.0-beta.4 → 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 (441) hide show
  1. package/dist/internal/build-runtime.cjs +1 -1
  2. package/dist/internal/build-runtime.cjs.map +1 -1
  3. package/dist/internal/build-runtime.mjs +5 -5
  4. package/dist/plugin.cjs.map +1 -1
  5. package/dist/plugin.mjs +4 -4
  6. package/dist/server-query-client.cjs +1 -1
  7. package/dist/server-query-client.cjs.map +1 -1
  8. package/dist/server-query-client.mjs +1 -1
  9. package/dist/server.cjs +1 -1
  10. package/dist/server.cjs.map +1 -1
  11. package/dist/server.mjs +4 -4
  12. package/dist/version.cjs +1 -1
  13. package/dist/version.cjs.map +1 -1
  14. package/dist/version.mjs +1 -1
  15. package/dist/vite.cjs +1 -1
  16. package/dist/vite.cjs.map +1 -1
  17. package/dist/vite.mjs +4 -4
  18. package/package.json +1 -1
  19. package/dist/after.cjs +0 -227
  20. package/dist/after.cjs.map +0 -1
  21. package/dist/after.d.mts +0 -25
  22. package/dist/after.d.ts +0 -25
  23. package/dist/after.mjs +0 -14
  24. package/dist/after.mjs.map +0 -1
  25. package/dist/agent-runtime.cjs +0 -2379
  26. package/dist/agent-runtime.cjs.map +0 -1
  27. package/dist/agent-runtime.d.mts +0 -94
  28. package/dist/agent-runtime.d.ts +0 -94
  29. package/dist/agent-runtime.mjs +0 -479
  30. package/dist/agent-runtime.mjs.map +0 -1
  31. package/dist/api/route-manager.d.mts +0 -66
  32. package/dist/api/route-manager.d.ts +0 -66
  33. package/dist/api/runtime.d.mts +0 -3
  34. package/dist/api/runtime.d.ts +0 -3
  35. package/dist/api.cjs +0 -4100
  36. package/dist/api.cjs.map +0 -1
  37. package/dist/api.d.mts +0 -48
  38. package/dist/api.d.ts +0 -48
  39. package/dist/api.mjs +0 -93
  40. package/dist/api.mjs.map +0 -1
  41. package/dist/app-BjN-da13.d.ts +0 -300
  42. package/dist/app-CakAr8Be.d.mts +0 -300
  43. package/dist/app-markdown.cjs +0 -220
  44. package/dist/app-markdown.cjs.map +0 -1
  45. package/dist/app-markdown.d.mts +0 -22
  46. package/dist/app-markdown.d.ts +0 -22
  47. package/dist/app-markdown.mjs +0 -26
  48. package/dist/app-markdown.mjs.map +0 -1
  49. package/dist/cache.cjs +0 -945
  50. package/dist/cache.cjs.map +0 -1
  51. package/dist/cache.d.mts +0 -192
  52. package/dist/cache.d.ts +0 -192
  53. package/dist/cache.mjs +0 -46
  54. package/dist/cache.mjs.map +0 -1
  55. package/dist/chunk-2CUKEMVR.mjs +0 -872
  56. package/dist/chunk-2CUKEMVR.mjs.map +0 -1
  57. package/dist/chunk-2ED5Q2GH.mjs +0 -422
  58. package/dist/chunk-2ED5Q2GH.mjs.map +0 -1
  59. package/dist/chunk-32W4QEJP.mjs +0 -158
  60. package/dist/chunk-32W4QEJP.mjs.map +0 -1
  61. package/dist/chunk-3U3ZUQAQ.mjs +0 -41
  62. package/dist/chunk-3U3ZUQAQ.mjs.map +0 -1
  63. package/dist/chunk-3XNTL3FQ.mjs +0 -452
  64. package/dist/chunk-3XNTL3FQ.mjs.map +0 -1
  65. package/dist/chunk-44ZCFSKE.mjs +0 -84
  66. package/dist/chunk-44ZCFSKE.mjs.map +0 -1
  67. package/dist/chunk-4S3ORGFA.mjs +0 -44
  68. package/dist/chunk-4S3ORGFA.mjs.map +0 -1
  69. package/dist/chunk-5BY76U2M.mjs +0 -1
  70. package/dist/chunk-5BY76U2M.mjs.map +0 -1
  71. package/dist/chunk-5ZGPRGWV.mjs +0 -136
  72. package/dist/chunk-5ZGPRGWV.mjs.map +0 -1
  73. package/dist/chunk-65A7QIKI.mjs +0 -142
  74. package/dist/chunk-65A7QIKI.mjs.map +0 -1
  75. package/dist/chunk-74YTBPTY.mjs +0 -450
  76. package/dist/chunk-74YTBPTY.mjs.map +0 -1
  77. package/dist/chunk-7HO6AEOP.mjs +0 -74
  78. package/dist/chunk-7HO6AEOP.mjs.map +0 -1
  79. package/dist/chunk-7MABZJIM.mjs +0 -29
  80. package/dist/chunk-7MABZJIM.mjs.map +0 -1
  81. package/dist/chunk-7ZY5AIJO.mjs +0 -161
  82. package/dist/chunk-7ZY5AIJO.mjs.map +0 -1
  83. package/dist/chunk-AJWRO5WE.mjs +0 -6241
  84. package/dist/chunk-AJWRO5WE.mjs.map +0 -1
  85. package/dist/chunk-ALCLXXTY.mjs +0 -187
  86. package/dist/chunk-ALCLXXTY.mjs.map +0 -1
  87. package/dist/chunk-AOBXKNS5.mjs +0 -7631
  88. package/dist/chunk-AOBXKNS5.mjs.map +0 -1
  89. package/dist/chunk-AZ7YUVNR.mjs +0 -65
  90. package/dist/chunk-AZ7YUVNR.mjs.map +0 -1
  91. package/dist/chunk-B232I2GP.mjs +0 -163
  92. package/dist/chunk-B232I2GP.mjs.map +0 -1
  93. package/dist/chunk-BHG3LVHH.mjs +0 -176
  94. package/dist/chunk-BHG3LVHH.mjs.map +0 -1
  95. package/dist/chunk-C2ROET2V.mjs +0 -718
  96. package/dist/chunk-C2ROET2V.mjs.map +0 -1
  97. package/dist/chunk-C3DLZMBU.mjs +0 -597
  98. package/dist/chunk-C3DLZMBU.mjs.map +0 -1
  99. package/dist/chunk-CGILA3WO.mjs +0 -14
  100. package/dist/chunk-CGILA3WO.mjs.map +0 -1
  101. package/dist/chunk-E2MPIBRE.mjs +0 -149
  102. package/dist/chunk-E2MPIBRE.mjs.map +0 -1
  103. package/dist/chunk-E6EPN5BT.mjs +0 -203
  104. package/dist/chunk-E6EPN5BT.mjs.map +0 -1
  105. package/dist/chunk-EJ7T4TPB.mjs +0 -622
  106. package/dist/chunk-EJ7T4TPB.mjs.map +0 -1
  107. package/dist/chunk-FQYDHKKU.mjs +0 -128
  108. package/dist/chunk-FQYDHKKU.mjs.map +0 -1
  109. package/dist/chunk-FRPWCMMG.mjs +0 -299
  110. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  111. package/dist/chunk-GN72QAIH.mjs +0 -146
  112. package/dist/chunk-GN72QAIH.mjs.map +0 -1
  113. package/dist/chunk-GQVGIUSN.mjs +0 -149
  114. package/dist/chunk-GQVGIUSN.mjs.map +0 -1
  115. package/dist/chunk-GS6K5OCM.mjs +0 -407
  116. package/dist/chunk-GS6K5OCM.mjs.map +0 -1
  117. package/dist/chunk-GXASWWJU.mjs +0 -364
  118. package/dist/chunk-GXASWWJU.mjs.map +0 -1
  119. package/dist/chunk-GY2STC2S.mjs +0 -180
  120. package/dist/chunk-GY2STC2S.mjs.map +0 -1
  121. package/dist/chunk-H2FA2SBS.mjs +0 -51
  122. package/dist/chunk-H2FA2SBS.mjs.map +0 -1
  123. package/dist/chunk-HNIQFZKB.mjs +0 -3550
  124. package/dist/chunk-HNIQFZKB.mjs.map +0 -1
  125. package/dist/chunk-ITN462YM.mjs +0 -98
  126. package/dist/chunk-ITN462YM.mjs.map +0 -1
  127. package/dist/chunk-J23HNLFY.mjs +0 -72
  128. package/dist/chunk-J23HNLFY.mjs.map +0 -1
  129. package/dist/chunk-J4FNJ5IU.mjs +0 -179
  130. package/dist/chunk-J4FNJ5IU.mjs.map +0 -1
  131. package/dist/chunk-JDEOUK5V.mjs +0 -427
  132. package/dist/chunk-JDEOUK5V.mjs.map +0 -1
  133. package/dist/chunk-JK25YEN6.mjs +0 -219
  134. package/dist/chunk-JK25YEN6.mjs.map +0 -1
  135. package/dist/chunk-K4667E2Q.mjs +0 -1916
  136. package/dist/chunk-K4667E2Q.mjs.map +0 -1
  137. package/dist/chunk-LGHEOHBU.mjs +0 -218
  138. package/dist/chunk-LGHEOHBU.mjs.map +0 -1
  139. package/dist/chunk-LLC7BNXW.mjs +0 -275
  140. package/dist/chunk-LLC7BNXW.mjs.map +0 -1
  141. package/dist/chunk-LM2YNO4U.mjs +0 -24
  142. package/dist/chunk-LM2YNO4U.mjs.map +0 -1
  143. package/dist/chunk-MIUW47JX.mjs +0 -639
  144. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  145. package/dist/chunk-NM3CRAAL.mjs +0 -467
  146. package/dist/chunk-NM3CRAAL.mjs.map +0 -1
  147. package/dist/chunk-NNLCAVB6.mjs +0 -391
  148. package/dist/chunk-NNLCAVB6.mjs.map +0 -1
  149. package/dist/chunk-P7QDS5AT.mjs +0 -191
  150. package/dist/chunk-P7QDS5AT.mjs.map +0 -1
  151. package/dist/chunk-PFE6GMNE.mjs +0 -603
  152. package/dist/chunk-PFE6GMNE.mjs.map +0 -1
  153. package/dist/chunk-QGOHVJ6J.mjs +0 -63
  154. package/dist/chunk-QGOHVJ6J.mjs.map +0 -1
  155. package/dist/chunk-QGQX7SFC.mjs +0 -180
  156. package/dist/chunk-QGQX7SFC.mjs.map +0 -1
  157. package/dist/chunk-QKVUNGAH.mjs +0 -39
  158. package/dist/chunk-QKVUNGAH.mjs.map +0 -1
  159. package/dist/chunk-QM746KUO.mjs +0 -56
  160. package/dist/chunk-QM746KUO.mjs.map +0 -1
  161. package/dist/chunk-RBRLLZL5.mjs +0 -81
  162. package/dist/chunk-RBRLLZL5.mjs.map +0 -1
  163. package/dist/chunk-RHIFZZUI.mjs +0 -69
  164. package/dist/chunk-RHIFZZUI.mjs.map +0 -1
  165. package/dist/chunk-RSKVYESE.mjs +0 -187
  166. package/dist/chunk-RSKVYESE.mjs.map +0 -1
  167. package/dist/chunk-SADGIRS2.mjs +0 -211
  168. package/dist/chunk-SADGIRS2.mjs.map +0 -1
  169. package/dist/chunk-SCFX4UTD.mjs +0 -28
  170. package/dist/chunk-SCFX4UTD.mjs.map +0 -1
  171. package/dist/chunk-SL6HTIOK.mjs +0 -66
  172. package/dist/chunk-SL6HTIOK.mjs.map +0 -1
  173. package/dist/chunk-SPBBQLXI.mjs +0 -207
  174. package/dist/chunk-SPBBQLXI.mjs.map +0 -1
  175. package/dist/chunk-T4QJQK76.mjs +0 -459
  176. package/dist/chunk-T4QJQK76.mjs.map +0 -1
  177. package/dist/chunk-TQAEEJB4.mjs +0 -157
  178. package/dist/chunk-TQAEEJB4.mjs.map +0 -1
  179. package/dist/chunk-UB5UOSHB.mjs +0 -458
  180. package/dist/chunk-UB5UOSHB.mjs.map +0 -1
  181. package/dist/chunk-USWZZUEH.mjs +0 -25
  182. package/dist/chunk-USWZZUEH.mjs.map +0 -1
  183. package/dist/chunk-UVCIEUJC.mjs +0 -16
  184. package/dist/chunk-UVCIEUJC.mjs.map +0 -1
  185. package/dist/chunk-UXUAWNO5.mjs +0 -396
  186. package/dist/chunk-UXUAWNO5.mjs.map +0 -1
  187. package/dist/chunk-V3XURYJO.mjs +0 -756
  188. package/dist/chunk-V3XURYJO.mjs.map +0 -1
  189. package/dist/chunk-V6WE6JSZ.mjs +0 -352
  190. package/dist/chunk-V6WE6JSZ.mjs.map +0 -1
  191. package/dist/chunk-V7RBCSDJ.mjs +0 -170
  192. package/dist/chunk-V7RBCSDJ.mjs.map +0 -1
  193. package/dist/chunk-VCANOYFI.mjs +0 -588
  194. package/dist/chunk-VCANOYFI.mjs.map +0 -1
  195. package/dist/chunk-VVKWFZAH.mjs +0 -753
  196. package/dist/chunk-VVKWFZAH.mjs.map +0 -1
  197. package/dist/chunk-VY2UYN5R.mjs +0 -224
  198. package/dist/chunk-VY2UYN5R.mjs.map +0 -1
  199. package/dist/chunk-W2CRQFF6.mjs +0 -1352
  200. package/dist/chunk-W2CRQFF6.mjs.map +0 -1
  201. package/dist/chunk-W4UIVMVI.mjs +0 -10
  202. package/dist/chunk-W4UIVMVI.mjs.map +0 -1
  203. package/dist/chunk-WZ5QFROO.mjs +0 -23
  204. package/dist/chunk-WZ5QFROO.mjs.map +0 -1
  205. package/dist/chunk-XIVV5IWN.mjs +0 -541
  206. package/dist/chunk-XIVV5IWN.mjs.map +0 -1
  207. package/dist/chunk-YW7OBE6Q.mjs +0 -119
  208. package/dist/chunk-YW7OBE6Q.mjs.map +0 -1
  209. package/dist/chunk-Z5CQMP54.mjs +0 -365
  210. package/dist/chunk-Z5CQMP54.mjs.map +0 -1
  211. package/dist/chunk-ZBE6MLHL.mjs +0 -230
  212. package/dist/chunk-ZBE6MLHL.mjs.map +0 -1
  213. package/dist/chunk-ZZ57EH5Z.mjs +0 -173
  214. package/dist/chunk-ZZ57EH5Z.mjs.map +0 -1
  215. package/dist/client-BT1mFQas.d.mts +0 -447
  216. package/dist/client-Nn0q4eO4.d.ts +0 -447
  217. package/dist/client-cache-CIlyBlmx.d.ts +0 -6
  218. package/dist/client-cache-D-EZ7XVW.d.mts +0 -6
  219. package/dist/client-plugins-Cw4qUGsw.d.ts +0 -1855
  220. package/dist/client-plugins-DQQ1adXM.d.mts +0 -1855
  221. package/dist/client-plugins.cjs +0 -415
  222. package/dist/client-plugins.cjs.map +0 -1
  223. package/dist/client-plugins.d.mts +0 -22
  224. package/dist/client-plugins.d.ts +0 -22
  225. package/dist/client-plugins.mjs +0 -10
  226. package/dist/client-plugins.mjs.map +0 -1
  227. package/dist/client.cjs +0 -5402
  228. package/dist/client.cjs.map +0 -1
  229. package/dist/client.d.mts +0 -447
  230. package/dist/client.d.ts +0 -447
  231. package/dist/client.mjs +0 -110
  232. package/dist/client.mjs.map +0 -1
  233. package/dist/config.cjs +0 -38
  234. package/dist/config.cjs.map +0 -1
  235. package/dist/config.d.mts +0 -29
  236. package/dist/config.d.ts +0 -29
  237. package/dist/config.mjs +0 -10
  238. package/dist/config.mjs.map +0 -1
  239. package/dist/cron.cjs +0 -406
  240. package/dist/cron.cjs.map +0 -1
  241. package/dist/cron.d.mts +0 -78
  242. package/dist/cron.d.ts +0 -78
  243. package/dist/cron.mjs +0 -30
  244. package/dist/cron.mjs.map +0 -1
  245. package/dist/deferred.cjs +0 -438
  246. package/dist/deferred.cjs.map +0 -1
  247. package/dist/deferred.d.mts +0 -42
  248. package/dist/deferred.d.ts +0 -42
  249. package/dist/deferred.mjs +0 -28
  250. package/dist/deferred.mjs.map +0 -1
  251. package/dist/deployment.cjs +0 -199
  252. package/dist/deployment.cjs.map +0 -1
  253. package/dist/deployment.d.mts +0 -34
  254. package/dist/deployment.d.ts +0 -34
  255. package/dist/deployment.mjs +0 -38
  256. package/dist/deployment.mjs.map +0 -1
  257. package/dist/devtools-LVC3VB5P.mjs +0 -370
  258. package/dist/devtools-LVC3VB5P.mjs.map +0 -1
  259. package/dist/devtools-client-3XRTBND5.mjs +0 -216
  260. package/dist/devtools-client-3XRTBND5.mjs.map +0 -1
  261. package/dist/devtools-ui-NJKFORTG.mjs +0 -1349
  262. package/dist/devtools-ui-NJKFORTG.mjs.map +0 -1
  263. package/dist/docs.cjs +0 -5553
  264. package/dist/docs.cjs.map +0 -1
  265. package/dist/docs.d.mts +0 -69
  266. package/dist/docs.d.ts +0 -69
  267. package/dist/docs.mjs +0 -46
  268. package/dist/docs.mjs.map +0 -1
  269. package/dist/env-types.cjs +0 -223
  270. package/dist/env-types.cjs.map +0 -1
  271. package/dist/env-types.d.mts +0 -11
  272. package/dist/env-types.d.ts +0 -11
  273. package/dist/env-types.mjs +0 -9
  274. package/dist/env-types.mjs.map +0 -1
  275. package/dist/env.cjs +0 -215
  276. package/dist/env.cjs.map +0 -1
  277. package/dist/env.d.mts +0 -45
  278. package/dist/env.d.ts +0 -45
  279. package/dist/env.mjs +0 -22
  280. package/dist/env.mjs.map +0 -1
  281. package/dist/environment/vite.d.mts +0 -22
  282. package/dist/environment/vite.d.ts +0 -22
  283. package/dist/environment.cjs +0 -96
  284. package/dist/environment.cjs.map +0 -1
  285. package/dist/environment.d.mts +0 -18
  286. package/dist/environment.d.ts +0 -18
  287. package/dist/environment.mjs +0 -14
  288. package/dist/environment.mjs.map +0 -1
  289. package/dist/headers.cjs +0 -126
  290. package/dist/headers.cjs.map +0 -1
  291. package/dist/headers.d.mts +0 -22
  292. package/dist/headers.d.ts +0 -22
  293. package/dist/headers.mjs +0 -12
  294. package/dist/headers.mjs.map +0 -1
  295. package/dist/i18n/client.d.mts +0 -32
  296. package/dist/i18n/client.d.ts +0 -32
  297. package/dist/i18n/index.d.mts +0 -20
  298. package/dist/i18n/index.d.ts +0 -20
  299. package/dist/i18n/server.d.mts +0 -30
  300. package/dist/i18n/server.d.ts +0 -30
  301. package/dist/image/server.d.mts +0 -37
  302. package/dist/image/server.d.ts +0 -37
  303. package/dist/image/sharp.d.mts +0 -7
  304. package/dist/image/sharp.d.ts +0 -7
  305. package/dist/image-config-Duob7wER.d.mts +0 -50
  306. package/dist/image-config-Duob7wER.d.ts +0 -50
  307. package/dist/image.cjs +0 -209
  308. package/dist/image.cjs.map +0 -1
  309. package/dist/image.d.mts +0 -39
  310. package/dist/image.d.ts +0 -39
  311. package/dist/image.mjs +0 -165
  312. package/dist/image.mjs.map +0 -1
  313. package/dist/index.cjs +0 -41822
  314. package/dist/index.cjs.map +0 -1
  315. package/dist/index.d.mts +0 -452
  316. package/dist/index.d.ts +0 -452
  317. package/dist/index.mjs +0 -973
  318. package/dist/index.mjs.map +0 -1
  319. package/dist/integration-api-CHT2OKAf.d.mts +0 -93
  320. package/dist/integration-api-CHT2OKAf.d.ts +0 -93
  321. package/dist/integration-orm-GQLGU66X.mjs +0 -13
  322. package/dist/integration-orm-GQLGU66X.mjs.map +0 -1
  323. package/dist/integrations.cjs +0 -2820
  324. package/dist/integrations.cjs.map +0 -1
  325. package/dist/integrations.d.mts +0 -22
  326. package/dist/integrations.d.ts +0 -22
  327. package/dist/integrations.mjs +0 -51
  328. package/dist/integrations.mjs.map +0 -1
  329. package/dist/internal/build-runtime.d.mts +0 -39
  330. package/dist/internal/build-runtime.d.ts +0 -39
  331. package/dist/internal/client-runtime.d.mts +0 -2
  332. package/dist/internal/client-runtime.d.ts +0 -2
  333. package/dist/internal/config-runtime.d.mts +0 -39
  334. package/dist/internal/config-runtime.d.ts +0 -39
  335. package/dist/internal/production-node-env.d.mts +0 -12
  336. package/dist/internal/production-node-env.d.ts +0 -12
  337. package/dist/internal/production-runtime.d.mts +0 -39
  338. package/dist/internal/production-runtime.d.ts +0 -39
  339. package/dist/layers-VWVDTPUZ.mjs +0 -16
  340. package/dist/layers-VWVDTPUZ.mjs.map +0 -1
  341. package/dist/manager-THKFTOFE.mjs +0 -10
  342. package/dist/manager-THKFTOFE.mjs.map +0 -1
  343. package/dist/markdown.cjs +0 -299
  344. package/dist/markdown.cjs.map +0 -1
  345. package/dist/markdown.d.mts +0 -43
  346. package/dist/markdown.d.ts +0 -43
  347. package/dist/markdown.mjs +0 -14
  348. package/dist/markdown.mjs.map +0 -1
  349. package/dist/metadata-BAPg_Nmo.d.ts +0 -22
  350. package/dist/metadata-_6i9oFG3.d.mts +0 -22
  351. package/dist/middleware.cjs +0 -2148
  352. package/dist/middleware.cjs.map +0 -1
  353. package/dist/middleware.d.mts +0 -164
  354. package/dist/middleware.d.ts +0 -164
  355. package/dist/middleware.mjs +0 -49
  356. package/dist/middleware.mjs.map +0 -1
  357. package/dist/navigation-errors-Dvwpzaer.d.mts +0 -13
  358. package/dist/navigation-errors-Dvwpzaer.d.ts +0 -13
  359. package/dist/navigation.cjs +0 -1329
  360. package/dist/navigation.cjs.map +0 -1
  361. package/dist/navigation.d.mts +0 -14
  362. package/dist/navigation.d.ts +0 -14
  363. package/dist/navigation.mjs +0 -33
  364. package/dist/navigation.mjs.map +0 -1
  365. package/dist/nitro-QO5LV6QK.mjs +0 -689
  366. package/dist/nitro-QO5LV6QK.mjs.map +0 -1
  367. package/dist/observability.cjs +0 -186
  368. package/dist/observability.cjs.map +0 -1
  369. package/dist/observability.d.mts +0 -335
  370. package/dist/observability.d.ts +0 -335
  371. package/dist/observability.mjs +0 -16
  372. package/dist/observability.mjs.map +0 -1
  373. package/dist/params-BALtrRim.d.ts +0 -15
  374. package/dist/params-ry-lxqmy.d.mts +0 -15
  375. package/dist/plugin-BJDf43dc.d.mts +0 -165
  376. package/dist/plugin-BJDf43dc.d.ts +0 -165
  377. package/dist/plugin.cjs +0 -23225
  378. package/dist/plugin.d.mts +0 -22
  379. package/dist/plugin.d.ts +0 -22
  380. package/dist/production-runtime-BoJDc5mc.d.ts +0 -79
  381. package/dist/production-runtime-C_B79w2P.d.mts +0 -28
  382. package/dist/production-runtime-DDEM1D2q.d.ts +0 -28
  383. package/dist/production-runtime-DPfgMV9Y.d.mts +0 -79
  384. package/dist/query/client.d.mts +0 -61
  385. package/dist/query/client.d.ts +0 -61
  386. package/dist/query/index.d.mts +0 -90
  387. package/dist/query/index.d.ts +0 -90
  388. package/dist/query/parsers.d.mts +0 -25
  389. package/dist/query/parsers.d.ts +0 -25
  390. package/dist/query/server.d.mts +0 -55
  391. package/dist/query/server.d.ts +0 -55
  392. package/dist/request-BrFBuc8G.d.mts +0 -6
  393. package/dist/request-BslSZIRz.d.ts +0 -6
  394. package/dist/request.d.mts +0 -2
  395. package/dist/request.d.ts +0 -2
  396. package/dist/resolver-C6iecsDV.d.ts +0 -14
  397. package/dist/resolver-DlOPpjkB.d.mts +0 -14
  398. package/dist/route-runtime-DoOHzCAD.d.mts +0 -38
  399. package/dist/route-runtime-DoOHzCAD.d.ts +0 -38
  400. package/dist/router.d.mts +0 -36
  401. package/dist/router.d.ts +0 -36
  402. package/dist/routes.d.mts +0 -224
  403. package/dist/routes.d.ts +0 -224
  404. package/dist/runtime-9nQjVM7X.d.mts +0 -206
  405. package/dist/runtime-B6GvwDS1.d.ts +0 -27
  406. package/dist/runtime-DeAAZ6gO.d.mts +0 -27
  407. package/dist/runtime-DgeS2skB.d.ts +0 -206
  408. package/dist/server-action-security.d.mts +0 -43
  409. package/dist/server-action-security.d.ts +0 -43
  410. package/dist/server-fn-client.d.mts +0 -32
  411. package/dist/server-fn-client.d.ts +0 -32
  412. package/dist/server-fn.d.mts +0 -93
  413. package/dist/server-fn.d.ts +0 -93
  414. package/dist/server-plugins.d.mts +0 -55
  415. package/dist/server-plugins.d.ts +0 -55
  416. package/dist/server-query-client.d.mts +0 -50
  417. package/dist/server-query-client.d.ts +0 -50
  418. package/dist/server-query.d.mts +0 -36
  419. package/dist/server-query.d.ts +0 -36
  420. package/dist/server.d.mts +0 -48
  421. package/dist/server.d.ts +0 -48
  422. package/dist/storage.d.mts +0 -52
  423. package/dist/storage.d.ts +0 -52
  424. package/dist/testing.d.mts +0 -101
  425. package/dist/testing.d.ts +0 -101
  426. package/dist/transport-BmbGTXA5.d.mts +0 -49
  427. package/dist/transport-BmbGTXA5.d.ts +0 -49
  428. package/dist/types-BH1lhg5G.d.mts +0 -81
  429. package/dist/types-BH1lhg5G.d.ts +0 -81
  430. package/dist/types-C9N-nk5R.d.mts +0 -53
  431. package/dist/types-C9N-nk5R.d.ts +0 -53
  432. package/dist/types-D1A6-XvH.d.mts +0 -73
  433. package/dist/types-D1A6-XvH.d.ts +0 -73
  434. package/dist/utils-CHXlMDkg.d.mts +0 -23
  435. package/dist/utils-Drsyz1Vj.d.ts +0 -23
  436. package/dist/version.d.mts +0 -3
  437. package/dist/version.d.ts +0 -3
  438. package/dist/vite.d.mts +0 -22
  439. package/dist/vite.d.ts +0 -22
  440. package/dist/workflows.d.mts +0 -110
  441. package/dist/workflows.d.ts +0 -110
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/image-server.ts"],"sourcesContent":["import type {\n FarmImageFormat,\n FarmImageLocalPattern,\n FarmImageRemotePattern,\n ResolvedFarmImageConfig,\n} from \"./image-config\";\n\nexport interface FarmImageTransformInput {\n source: Uint8Array;\n sourceUrl: URL;\n sourceType: string;\n width: number;\n quality: number;\n accept: string;\n formats: readonly FarmImageFormat[];\n signal: AbortSignal;\n}\n\nexport interface FarmImageTransformResult {\n body: Uint8Array;\n contentType: string;\n}\n\nexport type FarmImageTransformer = (\n input: FarmImageTransformInput,\n) => Promise<FarmImageTransformResult>;\n\nexport interface CreateFarmImageHandlerOptions {\n fetch?: typeof globalThis.fetch;\n transform: FarmImageTransformer;\n validateRemoteUrl?: (url: URL) => void | Promise<void>;\n onError?: (error: unknown, request: Request) => void;\n cacheEntries?: number;\n}\n\nexport type FarmImageHandler = (request: Request) => Promise<Response | null>;\n\ntype OptimizedImage = FarmImageTransformResult & {\n etag: string;\n cacheControl: string;\n expiresAt: number;\n};\n\ntype FarmImageRequestErrorCode =\n | \"BODY_TOO_LARGE\"\n | \"DISALLOWED_SOURCE\"\n | \"INVALID_METHOD\"\n | \"INVALID_PARAMETER\"\n | \"PRIVATE_SOURCE\"\n | \"TOO_MANY_REDIRECTS\"\n | \"UNSUPPORTED_IMAGE\";\n\nexport class FarmImageRequestError extends Error {\n readonly code: FarmImageRequestErrorCode;\n readonly status: number;\n\n constructor(code: FarmImageRequestErrorCode, status: number, message: string) {\n super(message);\n this.name = \"FarmImageRequestError\";\n this.code = code;\n this.status = status;\n }\n}\n\nexport function createFarmImageHandler(\n config: ResolvedFarmImageConfig,\n options: CreateFarmImageHandlerOptions,\n): FarmImageHandler {\n const fetcher = options.fetch ?? globalThis.fetch;\n const cache = new FarmImageMemoryCache(options.cacheEntries ?? 100);\n const allowedWidths = new Set([...config.deviceSizes, ...config.imageSizes]);\n const allowedQualities = new Set(config.qualities);\n\n return async function handleFarmImage(request): Promise<Response | null> {\n const requestUrl = new URL(request.url);\n if (requestUrl.pathname !== config.path) return null;\n\n try {\n if (config.provider === \"none\") {\n throw new FarmImageRequestError(\n \"DISALLOWED_SOURCE\",\n 404,\n \"The Farm image optimizer is disabled\",\n );\n }\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n throw new FarmImageRequestError(\n \"INVALID_METHOD\",\n 405,\n \"The Farm image optimizer only accepts GET and HEAD\",\n );\n }\n\n const sourceUrl = await resolveImageSourceUrl(requestUrl, config, options.validateRemoteUrl);\n const width = parseAllowedInteger(requestUrl.searchParams.get(\"w\"), allowedWidths, \"width\");\n const quality = parseAllowedInteger(\n requestUrl.searchParams.get(\"q\"),\n allowedQualities,\n \"quality\",\n );\n const accept = request.headers.get(\"accept\") ?? \"\";\n const cacheKey = `${sourceUrl.href}\\n${width}\\n${quality}\\n${accept}`;\n let optimized = cache.get(cacheKey);\n\n if (!optimized) {\n const fetchedSource = await fetchImageSource(\n sourceUrl,\n requestUrl.origin,\n config,\n fetcher,\n options.validateRemoteUrl,\n request.signal,\n );\n const source = await readResponseWithLimit(\n fetchedSource.response,\n config.maximumResponseBody,\n );\n const sourceType = detectImageContentType(source);\n validateSourceType(sourceType, config);\n throwIfAborted(request.signal);\n\n const result = await options.transform({\n source,\n sourceUrl: fetchedSource.url,\n sourceType,\n width,\n quality,\n accept,\n formats: config.formats,\n signal: request.signal,\n });\n throwIfAborted(request.signal);\n validateTransformedResult(result, config);\n\n optimized = {\n ...result,\n etag: createImageEtag(result.body),\n cacheControl: `public, max-age=${config.minimumCacheTTL}, stale-while-revalidate=${Math.max(\n config.minimumCacheTTL,\n 60,\n )}`,\n expiresAt: Date.now() + config.minimumCacheTTL * 1_000,\n };\n cache.set(cacheKey, optimized);\n }\n\n return createOptimizedImageResponse(request, optimized, config);\n } catch (error) {\n if (!(error instanceof FarmImageRequestError) && !isAbortError(error)) {\n options.onError?.(error, request);\n }\n return createFarmImageErrorResponse(error);\n }\n };\n}\n\nexport function createCloudflareImageTransformer(\n fetcher: typeof globalThis.fetch = globalThis.fetch,\n): FarmImageTransformer {\n return async ({ sourceUrl, width, quality, accept, formats, signal }) => {\n const format = selectOutputFormat(accept, formats);\n const response = await fetcher(sourceUrl, {\n signal,\n headers: { accept: \"image/*\" },\n cf: {\n image: {\n fit: \"scale-down\",\n width,\n quality,\n ...(format ? { format: format === \"image/avif\" ? \"avif\" : \"webp\" } : {}),\n },\n },\n } as RequestInit);\n\n if (!response.ok) {\n throw new FarmImageRequestError(\n \"UNSUPPORTED_IMAGE\",\n response.status === 404 ? 404 : 502,\n \"Cloudflare could not transform the source image\",\n );\n }\n\n const body = new Uint8Array(await response.arrayBuffer());\n return {\n body,\n contentType:\n normalizeImageContentType(response.headers.get(\"content-type\")) ||\n detectImageContentType(body),\n };\n };\n}\n\nexport function selectOutputFormat(\n accept: string,\n formats: readonly FarmImageFormat[],\n): FarmImageFormat | undefined {\n const normalizedAccept = accept.toLowerCase();\n return formats.find((format) => normalizedAccept.includes(format));\n}\n\nexport function isPrivateImageAddress(address: string): boolean {\n const value = address.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (value === \"::\" || value === \"::1\") return true;\n if (/^(?:fc|fd)[0-9a-f]{2}:/.test(value) || /^fe[89ab][0-9a-f]:/.test(value)) return true;\n if (value.startsWith(\"::ffff:\")) return isPrivateImageAddress(value.slice(7));\n\n const parts = value.split(\".\");\n if (parts.length !== 4 || parts.some((part) => !/^\\d{1,3}$/.test(part))) return false;\n const octets = parts.map(Number);\n if (octets.some((part) => part > 255)) return false;\n\n const [a, b] = octets;\n return (\n a === 0 ||\n a === 10 ||\n a === 127 ||\n (a === 100 && b >= 64 && b <= 127) ||\n (a === 169 && b === 254) ||\n (a === 172 && b >= 16 && b <= 31) ||\n (a === 192 && (b === 0 || b === 168)) ||\n (a === 198 && (b === 18 || b === 19)) ||\n a >= 224\n );\n}\n\nfunction parseAllowedInteger(\n raw: string | null,\n allowed: ReadonlySet<number>,\n name: string,\n): number {\n if (!raw || !/^\\d+$/.test(raw)) {\n throw new FarmImageRequestError(\n \"INVALID_PARAMETER\",\n 400,\n `Image ${name} must be an allowed integer`,\n );\n }\n const value = Number(raw);\n if (!allowed.has(value)) {\n throw new FarmImageRequestError(\"INVALID_PARAMETER\", 400, `Image ${name} is not configured`);\n }\n return value;\n}\n\nasync function resolveImageSourceUrl(\n requestUrl: URL,\n config: ResolvedFarmImageConfig,\n validateRemoteUrl: CreateFarmImageHandlerOptions[\"validateRemoteUrl\"],\n): Promise<URL> {\n const raw = requestUrl.searchParams.get(\"url\");\n if (!raw || raw.length > 4096 || raw.startsWith(\"//\")) {\n throw new FarmImageRequestError(\"INVALID_PARAMETER\", 400, \"Invalid image source URL\");\n }\n\n let sourceUrl: URL;\n try {\n sourceUrl = raw.startsWith(\"/\") ? new URL(raw, requestUrl.origin) : new URL(raw);\n } catch {\n throw new FarmImageRequestError(\"INVALID_PARAMETER\", 400, \"Invalid image source URL\");\n }\n\n await validateImageSourceUrl(sourceUrl, requestUrl.origin, config, validateRemoteUrl);\n return sourceUrl;\n}\n\nasync function validateImageSourceUrl(\n sourceUrl: URL,\n requestOrigin: string,\n config: ResolvedFarmImageConfig,\n validateRemoteUrl: CreateFarmImageHandlerOptions[\"validateRemoteUrl\"],\n): Promise<void> {\n if (sourceUrl.protocol !== \"http:\" && sourceUrl.protocol !== \"https:\") {\n throw new FarmImageRequestError(\"DISALLOWED_SOURCE\", 400, \"Unsupported image protocol\");\n }\n if (sourceUrl.username || sourceUrl.password || sourceUrl.hash) {\n throw new FarmImageRequestError(\"DISALLOWED_SOURCE\", 400, \"Unsafe image source URL\");\n }\n\n if (sourceUrl.origin === requestOrigin) {\n if (\n sourceUrl.pathname === config.path ||\n !matchesLocalPatterns(sourceUrl, config.localPatterns)\n ) {\n throw new FarmImageRequestError(\n \"DISALLOWED_SOURCE\",\n 400,\n \"Local image source is not allowed\",\n );\n }\n return;\n }\n\n if (!matchesRemoteSource(sourceUrl, config)) {\n throw new FarmImageRequestError(\"DISALLOWED_SOURCE\", 400, \"Remote image source is not allowed\");\n }\n if (!config.dangerouslyAllowLocalIP && isPrivateImageAddress(sourceUrl.hostname)) {\n throw new FarmImageRequestError(\"PRIVATE_SOURCE\", 400, \"Private image source is not allowed\");\n }\n if (!config.dangerouslyAllowLocalIP) {\n await validateRemoteUrl?.(sourceUrl);\n }\n}\n\nasync function fetchImageSource(\n initialUrl: URL,\n requestOrigin: string,\n config: ResolvedFarmImageConfig,\n fetcher: typeof globalThis.fetch,\n validateRemoteUrl: CreateFarmImageHandlerOptions[\"validateRemoteUrl\"],\n signal: AbortSignal,\n): Promise<{ response: Response; url: URL }> {\n let currentUrl = initialUrl;\n\n for (let redirectCount = 0; ; redirectCount += 1) {\n throwIfAborted(signal);\n const response = await fetcher(currentUrl, {\n method: \"GET\",\n redirect: \"manual\",\n signal,\n headers: {\n accept: \"image/avif,image/webp,image/*,*/*;q=0.8\",\n \"user-agent\": \"Farm.js Image Optimizer\",\n },\n });\n\n if (![301, 302, 303, 307, 308].includes(response.status)) {\n if (!response.ok) {\n throw new FarmImageRequestError(\n \"UNSUPPORTED_IMAGE\",\n response.status === 404 ? 404 : 502,\n \"Could not fetch source image\",\n );\n }\n return { response, url: currentUrl };\n }\n\n if (redirectCount >= config.maximumRedirects) {\n throw new FarmImageRequestError(\n \"TOO_MANY_REDIRECTS\",\n 400,\n \"Source image exceeded the redirect limit\",\n );\n }\n const location = response.headers.get(\"location\");\n if (!location) {\n throw new FarmImageRequestError(\"UNSUPPORTED_IMAGE\", 502, \"Invalid image redirect\");\n }\n currentUrl = new URL(location, currentUrl);\n await validateImageSourceUrl(currentUrl, requestOrigin, config, validateRemoteUrl);\n }\n}\n\nasync function readResponseWithLimit(response: Response, limit: number): Promise<Uint8Array> {\n const contentLength = response.headers.get(\"content-length\");\n if (contentLength && Number(contentLength) > limit) {\n throw new FarmImageRequestError(\"BODY_TOO_LARGE\", 413, \"Source image is too large\");\n }\n\n if (!response.body) return new Uint8Array();\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let byteLength = 0;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n byteLength += value.byteLength;\n if (byteLength > limit) {\n await reader.cancel();\n throw new FarmImageRequestError(\"BODY_TOO_LARGE\", 413, \"Source image is too large\");\n }\n chunks.push(value);\n }\n\n const result = new Uint8Array(byteLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n}\n\nfunction detectImageContentType(bytes: Uint8Array): string {\n if (\n bytes.length >= 8 &&\n bytes[0] === 0x89 &&\n bytes[1] === 0x50 &&\n bytes[2] === 0x4e &&\n bytes[3] === 0x47\n ) {\n return \"image/png\";\n }\n if (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) {\n return \"image/jpeg\";\n }\n if (bytes.length >= 6) {\n const signature = new TextDecoder().decode(bytes.slice(0, 6));\n if (signature === \"GIF87a\" || signature === \"GIF89a\") return \"image/gif\";\n }\n if (bytes.length >= 12) {\n const riff = new TextDecoder().decode(bytes.slice(0, 4));\n const webp = new TextDecoder().decode(bytes.slice(8, 12));\n if (riff === \"RIFF\" && webp === \"WEBP\") return \"image/webp\";\n const box = new TextDecoder().decode(bytes.slice(4, 12));\n if (box.startsWith(\"ftypavif\") || box.startsWith(\"ftypavis\")) return \"image/avif\";\n }\n\n const prefix = new TextDecoder().decode(bytes.slice(0, 512)).trimStart().toLowerCase();\n if (prefix.startsWith(\"<svg\") || (prefix.startsWith(\"<?xml\") && prefix.includes(\"<svg\"))) {\n return \"image/svg+xml\";\n }\n return \"\";\n}\n\nfunction validateSourceType(type: string, config: ResolvedFarmImageConfig): void {\n if (!type || (type === \"image/svg+xml\" && !config.dangerouslyAllowSVG)) {\n throw new FarmImageRequestError(\"UNSUPPORTED_IMAGE\", 415, \"Unsupported source image\");\n }\n}\n\nfunction validateTransformedResult(\n result: FarmImageTransformResult,\n config: ResolvedFarmImageConfig,\n): void {\n if (!(result.body instanceof Uint8Array) || result.body.byteLength === 0) {\n throw new Error(\"The image transformer returned an empty response\");\n }\n if (result.body.byteLength > config.maximumResponseBody) {\n throw new FarmImageRequestError(\"BODY_TOO_LARGE\", 413, \"Optimized image is too large\");\n }\n const contentType = normalizeImageContentType(result.contentType);\n if (!contentType || (contentType === \"image/svg+xml\" && !config.dangerouslyAllowSVG)) {\n throw new Error(\"The image transformer returned an unsupported content type\");\n }\n result.contentType = contentType;\n}\n\nfunction normalizeImageContentType(value: string | null): string {\n const type = value?.split(\";\", 1)[0].trim().toLowerCase() ?? \"\";\n return type.startsWith(\"image/\") ? type : \"\";\n}\n\nfunction matchesRemoteSource(url: URL, config: ResolvedFarmImageConfig): boolean {\n if (config.domains.includes(url.hostname.toLowerCase())) return true;\n return config.remotePatterns.some((pattern) => matchesRemotePattern(url, pattern));\n}\n\nfunction matchesRemotePattern(url: URL, pattern: FarmImageRemotePattern): boolean {\n return (\n (!pattern.protocol || url.protocol === `${pattern.protocol}:`) &&\n matchesHostname(url.hostname, pattern.hostname) &&\n (pattern.port === undefined || url.port === pattern.port) &&\n matchesGlob(url.pathname, pattern.pathname ?? \"/**\") &&\n (pattern.search === undefined || url.search === pattern.search)\n );\n}\n\nfunction matchesLocalPatterns(url: URL, patterns: readonly FarmImageLocalPattern[]): boolean {\n return patterns.some(\n (pattern) =>\n matchesGlob(url.pathname, pattern.pathname) &&\n (pattern.search === undefined || url.search === pattern.search),\n );\n}\n\nfunction matchesHostname(hostname: string, pattern: string): boolean {\n const normalizedHostname = hostname.toLowerCase();\n const normalizedPattern = pattern.toLowerCase();\n if (normalizedPattern.startsWith(\"**.\")) {\n const suffix = normalizedPattern.slice(3);\n return normalizedHostname === suffix || normalizedHostname.endsWith(`.${suffix}`);\n }\n if (normalizedPattern.startsWith(\"*.\")) {\n const suffix = normalizedPattern.slice(2);\n const prefix = normalizedHostname.slice(0, -(suffix.length + 1));\n return normalizedHostname.endsWith(`.${suffix}`) && !!prefix && !prefix.includes(\".\");\n }\n return normalizedHostname === normalizedPattern;\n}\n\nfunction matchesGlob(value: string, pattern: string): boolean {\n const escaped = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const source = escaped.replace(/\\*\\*/g, \"\\0\").replace(/\\*/g, \"[^/]*\").replace(/\\0/g, \".*\");\n return new RegExp(`^${source}$`).test(value);\n}\n\nfunction createOptimizedImageResponse(\n request: Request,\n image: OptimizedImage,\n config: ResolvedFarmImageConfig,\n): Response {\n const headers = new Headers({\n \"cache-control\": image.cacheControl,\n \"content-type\": image.contentType,\n \"content-length\": String(image.body.byteLength),\n \"content-disposition\": \"inline\",\n etag: image.etag,\n vary: \"Accept\",\n \"x-content-type-options\": \"nosniff\",\n });\n if (image.contentType === \"image/svg+xml\" && config.dangerouslyAllowSVG) {\n headers.set(\"content-security-policy\", \"default-src 'none'; sandbox\");\n }\n if (request.headers.get(\"if-none-match\") === image.etag) {\n headers.delete(\"content-length\");\n return new Response(null, { status: 304, headers });\n }\n const body =\n request.method === \"HEAD\"\n ? null\n : image.body.buffer.slice(\n image.body.byteOffset,\n image.body.byteOffset + image.body.byteLength,\n );\n return new Response(body as ArrayBuffer | null, { status: 200, headers });\n}\n\nfunction createFarmImageErrorResponse(error: unknown): Response {\n const status =\n error instanceof FarmImageRequestError ? error.status : isAbortError(error) ? 499 : 500;\n const headers = new Headers({\n \"cache-control\": \"no-store\",\n \"content-type\": \"text/plain; charset=utf-8\",\n \"x-content-type-options\": \"nosniff\",\n });\n if (status === 405) headers.set(\"allow\", \"GET, HEAD\");\n\n const message =\n status === 400\n ? \"Invalid image request\"\n : status === 404\n ? \"Image not found\"\n : status === 405\n ? \"Method not allowed\"\n : status === 413\n ? \"Image is too large\"\n : status === 415\n ? \"Unsupported image\"\n : status === 499\n ? \"Image request cancelled\"\n : \"Image optimization failed\";\n return new Response(message, { status, headers });\n}\n\nfunction createImageEtag(bytes: Uint8Array): string {\n let hash = 0x811c9dc5;\n for (const byte of bytes) {\n hash ^= byte;\n hash = Math.imul(hash, 0x01000193);\n }\n return `W/\"farm-${bytes.byteLength.toString(16)}-${(hash >>> 0).toString(16)}\"`;\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (signal.aborted) {\n throw signal.reason instanceof Error\n ? signal.reason\n : new DOMException(\"The image request was aborted\", \"AbortError\");\n }\n}\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === \"AbortError\";\n}\n\nclass FarmImageMemoryCache {\n private readonly entries = new Map<string, OptimizedImage>();\n\n constructor(private readonly capacity: number) {}\n\n get(key: string): OptimizedImage | undefined {\n const value = this.entries.get(key);\n if (!value) return undefined;\n if (value.expiresAt <= Date.now()) {\n this.entries.delete(key);\n return undefined;\n }\n this.entries.delete(key);\n this.entries.set(key, value);\n return value;\n }\n\n set(key: string, value: OptimizedImage): void {\n if (this.capacity <= 0) return;\n this.entries.delete(key);\n this.entries.set(key, value);\n while (this.entries.size > this.capacity) {\n const oldestKey = this.entries.keys().next().value as string | undefined;\n if (oldestKey === undefined) break;\n this.entries.delete(oldestKey);\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,84 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-CGILA3WO.mjs";
4
-
5
- // src/i18n/routing.ts
6
- var RTL_LANGUAGES = /* @__PURE__ */ new Set([
7
- "ar",
8
- "arc",
9
- "ckb",
10
- "dv",
11
- "fa",
12
- "he",
13
- "ku",
14
- "nqo",
15
- "ps",
16
- "sd",
17
- "syr",
18
- "ug",
19
- "ur",
20
- "yi"
21
- ]);
22
- function resolveFarmLocalePath(pathname, config) {
23
- const normalized = normalizePathname(pathname);
24
- if (config.routing === "none") {
25
- return { pathname: normalized, explicit: false };
26
- }
27
- const segments = normalized.split("/").filter(Boolean);
28
- const firstSegment = segments[0];
29
- const locale = config.locales.find(
30
- (candidate) => candidate.toLowerCase() === firstSegment?.toLowerCase()
31
- );
32
- if (!locale) {
33
- return { pathname: normalized, explicit: false };
34
- }
35
- const remaining = segments.slice(1);
36
- return {
37
- locale,
38
- pathname: remaining.length > 0 ? `/${remaining.join("/")}` : "/",
39
- explicit: true
40
- };
41
- }
42
- __name(resolveFarmLocalePath, "resolveFarmLocalePath");
43
- function stripFarmLocaleFromPathname(pathname, config) {
44
- return resolveFarmLocalePath(pathname, config).pathname;
45
- }
46
- __name(stripFarmLocaleFromPathname, "stripFarmLocaleFromPathname");
47
- function localizeFarmPathname(pathname, locale, config) {
48
- const internalPathname = resolveFarmLocalePath(pathname, config).pathname;
49
- if (config.routing === "none") return internalPathname;
50
- if (config.routing === "prefix-except-default" && locale === config.defaultLocale) {
51
- return internalPathname;
52
- }
53
- return internalPathname === "/" ? `/${locale}` : `/${locale}${internalPathname}`;
54
- }
55
- __name(localizeFarmPathname, "localizeFarmPathname");
56
- function localizeFarmHref(href, locale, config) {
57
- if (!href.startsWith("/") || href.startsWith("//")) return href;
58
- const url = new URL(href, "http://farm.local");
59
- url.pathname = localizeFarmPathname(url.pathname, locale, config);
60
- return `${url.pathname}${url.search}${url.hash}`;
61
- }
62
- __name(localizeFarmHref, "localizeFarmHref");
63
- function getFarmLocaleDirection(locale, direction) {
64
- const configured = direction?.[locale];
65
- if (configured) return configured;
66
- const language = locale.split("-")[0]?.toLowerCase() || locale.toLowerCase();
67
- return RTL_LANGUAGES.has(language) ? "rtl" : "ltr";
68
- }
69
- __name(getFarmLocaleDirection, "getFarmLocaleDirection");
70
- function normalizePathname(pathname) {
71
- const withLeadingSlash = pathname.startsWith("/") ? pathname : `/${pathname}`;
72
- if (withLeadingSlash === "/") return "/";
73
- return withLeadingSlash.replace(/\/{2,}/g, "/").replace(/\/$/, "") || "/";
74
- }
75
- __name(normalizePathname, "normalizePathname");
76
-
77
- export {
78
- resolveFarmLocalePath,
79
- stripFarmLocaleFromPathname,
80
- localizeFarmPathname,
81
- localizeFarmHref,
82
- getFarmLocaleDirection
83
- };
84
- //# sourceMappingURL=chunk-44ZCFSKE.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n/routing.ts"],"sourcesContent":["import type { FarmI18nDirection, FarmI18nRouting, ResolvedFarmI18nConfig } from \"./types\";\n\nexport interface FarmLocalePathConfig {\n locales: readonly string[];\n defaultLocale: string;\n routing: FarmI18nRouting;\n}\n\nexport interface FarmLocalePathMatch {\n locale?: string;\n pathname: string;\n explicit: boolean;\n}\n\nconst RTL_LANGUAGES = new Set([\n \"ar\",\n \"arc\",\n \"ckb\",\n \"dv\",\n \"fa\",\n \"he\",\n \"ku\",\n \"nqo\",\n \"ps\",\n \"sd\",\n \"syr\",\n \"ug\",\n \"ur\",\n \"yi\",\n]);\n\nexport function resolveFarmLocalePath(\n pathname: string,\n config: FarmLocalePathConfig,\n): FarmLocalePathMatch {\n const normalized = normalizePathname(pathname);\n if (config.routing === \"none\") {\n return { pathname: normalized, explicit: false };\n }\n\n const segments = normalized.split(\"/\").filter(Boolean);\n const firstSegment = segments[0];\n const locale = config.locales.find(\n (candidate) => candidate.toLowerCase() === firstSegment?.toLowerCase(),\n );\n if (!locale) {\n return { pathname: normalized, explicit: false };\n }\n\n const remaining = segments.slice(1);\n return {\n locale,\n pathname: remaining.length > 0 ? `/${remaining.join(\"/\")}` : \"/\",\n explicit: true,\n };\n}\n\nexport function stripFarmLocaleFromPathname(\n pathname: string,\n config: FarmLocalePathConfig,\n): string {\n return resolveFarmLocalePath(pathname, config).pathname;\n}\n\nexport function localizeFarmPathname(\n pathname: string,\n locale: string,\n config: FarmLocalePathConfig,\n): string {\n const internalPathname = resolveFarmLocalePath(pathname, config).pathname;\n if (config.routing === \"none\") return internalPathname;\n if (config.routing === \"prefix-except-default\" && locale === config.defaultLocale) {\n return internalPathname;\n }\n return internalPathname === \"/\" ? `/${locale}` : `/${locale}${internalPathname}`;\n}\n\nexport function localizeFarmHref(\n href: string,\n locale: string,\n config: FarmLocalePathConfig,\n): string {\n if (!href.startsWith(\"/\") || href.startsWith(\"//\")) return href;\n const url = new URL(href, \"http://farm.local\");\n url.pathname = localizeFarmPathname(url.pathname, locale, config);\n return `${url.pathname}${url.search}${url.hash}`;\n}\n\nexport function getFarmLocaleDirection(\n locale: string,\n direction: ResolvedFarmI18nConfig[\"direction\"] | undefined,\n): FarmI18nDirection {\n const configured = direction?.[locale];\n if (configured) return configured;\n const language = locale.split(\"-\")[0]?.toLowerCase() || locale.toLowerCase();\n return RTL_LANGUAGES.has(language) ? \"rtl\" : \"ltr\";\n}\n\nfunction normalizePathname(pathname: string): string {\n const withLeadingSlash = pathname.startsWith(\"/\") ? pathname : `/${pathname}`;\n if (withLeadingSlash === \"/\") return \"/\";\n return withLeadingSlash.replace(/\\/{2,}/g, \"/\").replace(/\\/$/, \"\") || \"/\";\n}\n"],"mappings":";;;;;AAcA,IAAM,gBAAgB,oBAAI,IAAI;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,sBACd,UACA,QACqB;AACrB,QAAM,aAAa,kBAAkB,QAAQ;AAC7C,MAAI,OAAO,YAAY,QAAQ;AAC7B,WAAO,EAAE,UAAU,YAAY,UAAU,MAAM;AAAA,EACjD;AAEA,QAAM,WAAW,WAAW,MAAM,GAAG,EAAE,OAAO,OAAO;AACrD,QAAM,eAAe,SAAS,CAAC;AAC/B,QAAM,SAAS,OAAO,QAAQ;AAAA,IAC5B,CAAC,cAAc,UAAU,YAAY,MAAM,cAAc,YAAY;AAAA,EACvE;AACA,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,UAAU,YAAY,UAAU,MAAM;AAAA,EACjD;AAEA,QAAM,YAAY,SAAS,MAAM,CAAC;AAClC,SAAO;AAAA,IACL;AAAA,IACA,UAAU,UAAU,SAAS,IAAI,IAAI,UAAU,KAAK,GAAG,CAAC,KAAK;AAAA,IAC7D,UAAU;AAAA,EACZ;AACF;AAxBgB;AA0BT,SAAS,4BACd,UACA,QACQ;AACR,SAAO,sBAAsB,UAAU,MAAM,EAAE;AACjD;AALgB;AAOT,SAAS,qBACd,UACA,QACA,QACQ;AACR,QAAM,mBAAmB,sBAAsB,UAAU,MAAM,EAAE;AACjE,MAAI,OAAO,YAAY,OAAQ,QAAO;AACtC,MAAI,OAAO,YAAY,2BAA2B,WAAW,OAAO,eAAe;AACjF,WAAO;AAAA,EACT;AACA,SAAO,qBAAqB,MAAM,IAAI,MAAM,KAAK,IAAI,MAAM,GAAG,gBAAgB;AAChF;AAXgB;AAaT,SAAS,iBACd,MACA,QACA,QACQ;AACR,MAAI,CAAC,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,IAAI,EAAG,QAAO;AAC3D,QAAM,MAAM,IAAI,IAAI,MAAM,mBAAmB;AAC7C,MAAI,WAAW,qBAAqB,IAAI,UAAU,QAAQ,MAAM;AAChE,SAAO,GAAG,IAAI,QAAQ,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI;AAChD;AATgB;AAWT,SAAS,uBACd,QACA,WACmB;AACnB,QAAM,aAAa,YAAY,MAAM;AACrC,MAAI,WAAY,QAAO;AACvB,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE,CAAC,GAAG,YAAY,KAAK,OAAO,YAAY;AAC3E,SAAO,cAAc,IAAI,QAAQ,IAAI,QAAQ;AAC/C;AARgB;AAUhB,SAAS,kBAAkB,UAA0B;AACnD,QAAM,mBAAmB,SAAS,WAAW,GAAG,IAAI,WAAW,IAAI,QAAQ;AAC3E,MAAI,qBAAqB,IAAK,QAAO;AACrC,SAAO,iBAAiB,QAAQ,WAAW,GAAG,EAAE,QAAQ,OAAO,EAAE,KAAK;AACxE;AAJS;","names":[]}
@@ -1,44 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-CGILA3WO.mjs";
4
-
5
- // src/build/production-node-env.ts
6
- var productionNodeEnvStateKey = /* @__PURE__ */ Symbol.for("@farm.js/core/production-node-env-state");
7
- function getProductionNodeEnvState() {
8
- return Reflect.get(globalThis, productionNodeEnvStateKey);
9
- }
10
- __name(getProductionNodeEnvState, "getProductionNodeEnvState");
11
- async function withProductionNodeEnv(operation) {
12
- let state = getProductionNodeEnvState();
13
- if (state) {
14
- state.depth += 1;
15
- } else {
16
- state = {
17
- depth: 1,
18
- original: process.env.NODE_ENV
19
- };
20
- Reflect.set(globalThis, productionNodeEnvStateKey, state);
21
- }
22
- process.env.NODE_ENV = "production";
23
- try {
24
- return await operation();
25
- } finally {
26
- state.depth -= 1;
27
- if (state.depth > 0) {
28
- process.env.NODE_ENV = "production";
29
- } else {
30
- Reflect.deleteProperty(globalThis, productionNodeEnvStateKey);
31
- if (state.original === void 0) {
32
- delete process.env.NODE_ENV;
33
- } else {
34
- process.env.NODE_ENV = state.original;
35
- }
36
- }
37
- }
38
- }
39
- __name(withProductionNodeEnv, "withProductionNodeEnv");
40
-
41
- export {
42
- withProductionNodeEnv
43
- };
44
- //# sourceMappingURL=chunk-4S3ORGFA.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/build/production-node-env.ts"],"sourcesContent":["const productionNodeEnvStateKey = Symbol.for(\"@farm.js/core/production-node-env-state\");\n\ninterface ProductionNodeEnvState {\n depth: number;\n original: string | undefined;\n}\n\nfunction getProductionNodeEnvState(): ProductionNodeEnvState | undefined {\n return Reflect.get(globalThis, productionNodeEnvStateKey) as ProductionNodeEnvState | undefined;\n}\n\n/**\n * Keep overlapping production operations on the production condition.\n *\n * The state lives on `globalThis` so independently loaded CJS/ESM copies of\n * Farm share one refcount. The first entrant captures the caller's value and\n * only the last operation to settle restores it.\n *\n * @internal\n */\nexport async function withProductionNodeEnv<T>(operation: () => T | PromiseLike<T>): Promise<T> {\n let state = getProductionNodeEnvState();\n\n if (state) {\n state.depth += 1;\n } else {\n state = {\n depth: 1,\n original: process.env.NODE_ENV,\n };\n Reflect.set(globalThis, productionNodeEnvStateKey, state);\n }\n\n process.env.NODE_ENV = \"production\";\n\n try {\n return await operation();\n } finally {\n state.depth -= 1;\n\n if (state.depth > 0) {\n // A nested operation may have changed NODE_ENV. Keep the remaining\n // production scopes pinned until the final scope settles.\n process.env.NODE_ENV = \"production\";\n } else {\n Reflect.deleteProperty(globalThis, productionNodeEnvStateKey);\n if (state.original === undefined) {\n delete process.env.NODE_ENV;\n } else {\n process.env.NODE_ENV = state.original;\n }\n }\n }\n}\n"],"mappings":";;;;;AAAA,IAAM,4BAA4B,uBAAO,IAAI,yCAAyC;AAOtF,SAAS,4BAAgE;AACvE,SAAO,QAAQ,IAAI,YAAY,yBAAyB;AAC1D;AAFS;AAaT,eAAsB,sBAAyB,WAAiD;AAC9F,MAAI,QAAQ,0BAA0B;AAEtC,MAAI,OAAO;AACT,UAAM,SAAS;AAAA,EACjB,OAAO;AACL,YAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU,QAAQ,IAAI;AAAA,IACxB;AACA,YAAQ,IAAI,YAAY,2BAA2B,KAAK;AAAA,EAC1D;AAEA,UAAQ,IAAI,WAAW;AAEvB,MAAI;AACF,WAAO,MAAM,UAAU;AAAA,EACzB,UAAE;AACA,UAAM,SAAS;AAEf,QAAI,MAAM,QAAQ,GAAG;AAGnB,cAAQ,IAAI,WAAW;AAAA,IACzB,OAAO;AACL,cAAQ,eAAe,YAAY,yBAAyB;AAC5D,UAAI,MAAM,aAAa,QAAW;AAChC,eAAO,QAAQ,IAAI;AAAA,MACrB,OAAO;AACL,gBAAQ,IAAI,WAAW,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;AAjCsB;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-5BY76U2M.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,136 +0,0 @@
1
- import {
2
- resolveStorageRuntimeClient
3
- } from "./chunk-T4QJQK76.mjs";
4
- import {
5
- __name
6
- } from "./chunk-CGILA3WO.mjs";
7
-
8
- // src/integration-orm.ts
9
- async function createIntegrationOrm(options) {
10
- const [schema, client] = await Promise.all([
11
- farmIntegrationSchemaToOrmSchema(options.schema),
12
- resolveIntegrationOrmRuntimeClient(options)
13
- ]);
14
- if (!client) {
15
- throw new Error(
16
- "Schema-backed integration storage requires a runtime client at farm.config storage.client."
17
- );
18
- }
19
- const { createOrmFromRuntime } = await import("@farming-labs/orm-runtime");
20
- return createOrmFromRuntime({
21
- schema,
22
- client
23
- });
24
- }
25
- __name(createIntegrationOrm, "createIntegrationOrm");
26
- async function resolveIntegrationOrmRuntimeClient(options) {
27
- if (options.client !== void 0) {
28
- return typeof options.client === "function" ? await options.client() : options.client;
29
- }
30
- return resolveStorageRuntimeClient(options.storage ?? options.config?.storage);
31
- }
32
- __name(resolveIntegrationOrmRuntimeClient, "resolveIntegrationOrmRuntimeClient");
33
- async function farmIntegrationSchemaToOrmSchema(schema) {
34
- const orm = await import("@farming-labs/orm");
35
- const models = {};
36
- for (const [modelKey, modelSchema] of Object.entries(schema.models)) {
37
- models[modelKey] = orm.model({
38
- table: modelSchema.name ?? modelKey,
39
- fields: createOrmModelFields(orm, modelSchema),
40
- constraints: createOrmModelConstraints(modelSchema),
41
- description: modelSchema.description
42
- });
43
- }
44
- return orm.defineSchema(models);
45
- }
46
- __name(farmIntegrationSchemaToOrmSchema, "farmIntegrationSchemaToOrmSchema");
47
- function createOrmModelFields(orm, modelSchema) {
48
- return Object.fromEntries(
49
- Object.entries(modelSchema.fields).map(([fieldKey, fieldSchema]) => [
50
- fieldKey,
51
- createOrmField(orm, fieldKey, fieldSchema)
52
- ])
53
- );
54
- }
55
- __name(createOrmModelFields, "createOrmModelFields");
56
- function createOrmField(orm, fieldKey, field) {
57
- let builder = createOrmFieldBuilder(orm, fieldKey, field);
58
- if (field.unique) {
59
- builder = builder.unique();
60
- }
61
- if (field.nullable || field.required === false) {
62
- builder = builder.nullable();
63
- }
64
- if (field.default !== void 0) {
65
- builder = field.type === "datetime" && field.default === "now" ? builder.defaultNow() : builder.default(field.default);
66
- }
67
- if (field.reference) {
68
- builder = builder.references(`${field.reference.model}.${field.reference.field}`);
69
- }
70
- if (field.name && field.name !== fieldKey) {
71
- builder = builder.map(field.name);
72
- }
73
- if (field.description) {
74
- builder = builder.describe(field.description);
75
- }
76
- return builder;
77
- }
78
- __name(createOrmField, "createOrmField");
79
- function createOrmFieldBuilder(orm, fieldKey, field) {
80
- switch (field.type) {
81
- case "id":
82
- case "uuid":
83
- return orm.id();
84
- case "string":
85
- case "text":
86
- return orm.string();
87
- case "boolean":
88
- return orm.boolean();
89
- case "integer":
90
- return orm.integer();
91
- case "number":
92
- return orm.decimal();
93
- case "datetime":
94
- return orm.datetime();
95
- case "json":
96
- return orm.json();
97
- case "enum": {
98
- if (!field.values?.length) {
99
- throw new Error(`Integration schema enum field "${fieldKey}" must define values.`);
100
- }
101
- return orm.enumeration(field.values);
102
- }
103
- default:
104
- throw new Error(
105
- `Unsupported integration schema field type "${field.type}" for "${fieldKey}".`
106
- );
107
- }
108
- }
109
- __name(createOrmFieldBuilder, "createOrmFieldBuilder");
110
- function createOrmModelConstraints(modelSchema) {
111
- const unique = [];
112
- const indexes = [];
113
- for (const constraint of modelSchema.constraints ?? []) {
114
- if (!constraint.fields.length) {
115
- continue;
116
- }
117
- const fields = constraint.fields;
118
- if (constraint.type === "unique") {
119
- unique.push(fields);
120
- } else {
121
- indexes.push(fields);
122
- }
123
- }
124
- return {
125
- unique,
126
- indexes
127
- };
128
- }
129
- __name(createOrmModelConstraints, "createOrmModelConstraints");
130
-
131
- export {
132
- createIntegrationOrm,
133
- resolveIntegrationOrmRuntimeClient,
134
- farmIntegrationSchemaToOrmSchema
135
- };
136
- //# sourceMappingURL=chunk-5ZGPRGWV.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/integration-orm.ts"],"sourcesContent":["import type {\n AnyFieldBuilder,\n AnyModelDefinition,\n FieldBuilder,\n JsonValue,\n ModelDefinition,\n OrmClient,\n SchemaDefinition,\n SchemaModels,\n} from \"@farming-labs/orm\";\nimport type {\n FarmIntegrationSchema,\n FarmIntegrationSchemaField,\n FarmIntegrationSchemaModel,\n} from \"./integrations\";\nimport { resolveStorageRuntimeClient } from \"./storage\";\nimport type { FarmStorageUserConfig } from \"./storage/types\";\nimport type { FarmConfig } from \"./types\";\n\ntype RuntimeClientFactory<TClient> = () => TClient | Promise<TClient>;\n\nexport type FarmIntegrationOrmSchema = SchemaDefinition<Record<string, AnyModelDefinition>>;\n\nexport type FarmIntegrationOrmClient<TSchema extends FarmIntegrationOrmSchema> = OrmClient<TSchema>;\n\ntype FarmIntegrationOrmFieldKind<TField extends FarmIntegrationSchemaField> = TField[\"type\"] extends\n | \"id\"\n | \"uuid\"\n ? \"id\"\n : TField[\"type\"] extends \"text\"\n ? \"string\"\n : TField[\"type\"] extends \"number\"\n ? \"decimal\"\n : Extract<TField[\"type\"], \"string\" | \"boolean\" | \"integer\" | \"datetime\" | \"json\" | \"enum\">;\n\ntype FarmIntegrationOrmFieldNullable<TField extends FarmIntegrationSchemaField> = TField extends {\n nullable: true;\n}\n ? true\n : TField extends { required: false }\n ? true\n : false;\n\ntype FarmIntegrationOrmEnumValue<TField extends FarmIntegrationSchemaField> = TField extends {\n values: readonly (infer TValue extends string)[];\n}\n ? TValue\n : string;\n\ntype FarmIntegrationOrmFieldValue<TField extends FarmIntegrationSchemaField> =\n TField[\"type\"] extends \"id\" | \"uuid\" | \"string\" | \"text\"\n ? string\n : TField[\"type\"] extends \"boolean\"\n ? boolean\n : TField[\"type\"] extends \"integer\"\n ? number\n : TField[\"type\"] extends \"number\"\n ? string\n : TField[\"type\"] extends \"datetime\"\n ? Date\n : TField[\"type\"] extends \"json\"\n ? JsonValue\n : TField[\"type\"] extends \"enum\"\n ? FarmIntegrationOrmEnumValue<TField>\n : never;\n\nexport type InferFarmIntegrationOrmField<TField extends FarmIntegrationSchemaField> = FieldBuilder<\n FarmIntegrationOrmFieldKind<TField>,\n FarmIntegrationOrmFieldNullable<TField>,\n FarmIntegrationOrmFieldValue<TField>\n>;\n\nexport type InferFarmIntegrationOrmFields<TModel extends FarmIntegrationSchemaModel> = {\n [TFieldKey in keyof TModel[\"fields\"] & string]: InferFarmIntegrationOrmField<\n Extract<TModel[\"fields\"][TFieldKey], FarmIntegrationSchemaField>\n >;\n};\n\nexport type InferFarmIntegrationOrmSchema<TSchema extends FarmIntegrationSchema> =\n SchemaDefinition<{\n [TModelKey in keyof TSchema[\"models\"] & string]: ModelDefinition<\n InferFarmIntegrationOrmFields<\n Extract<TSchema[\"models\"][TModelKey], FarmIntegrationSchemaModel>\n >,\n {}\n >;\n }>;\n\nexport type InferFarmIntegrationOrmClient<TSchema extends FarmIntegrationSchema | undefined> =\n TSchema extends FarmIntegrationSchema ? OrmClient<InferFarmIntegrationOrmSchema<TSchema>> : never;\n\nexport interface CreateIntegrationOrmOptions<\n TClient = unknown,\n TSchema extends FarmIntegrationSchema = FarmIntegrationSchema,\n> {\n schema: TSchema;\n config?: Pick<FarmConfig, \"storage\">;\n storage?: FarmStorageUserConfig;\n client?: TClient | RuntimeClientFactory<TClient>;\n}\n\nexport async function createIntegrationOrm<\n TClient = unknown,\n TSchema extends FarmIntegrationSchema = FarmIntegrationSchema,\n>(\n options: CreateIntegrationOrmOptions<TClient, TSchema>,\n): Promise<InferFarmIntegrationOrmClient<TSchema>> {\n const [schema, client] = await Promise.all([\n farmIntegrationSchemaToOrmSchema(options.schema),\n resolveIntegrationOrmRuntimeClient(options),\n ]);\n\n if (!client) {\n throw new Error(\n \"Schema-backed integration storage requires a runtime client at farm.config storage.client.\",\n );\n }\n\n const { createOrmFromRuntime } = await import(\"@farming-labs/orm-runtime\");\n return createOrmFromRuntime({\n schema,\n client,\n }) as Promise<InferFarmIntegrationOrmClient<TSchema>>;\n}\n\nexport async function resolveIntegrationOrmRuntimeClient<TClient = unknown>(\n options: Omit<CreateIntegrationOrmOptions<TClient>, \"schema\">,\n): Promise<TClient | unknown | undefined> {\n if (options.client !== undefined) {\n return typeof options.client === \"function\"\n ? await (options.client as RuntimeClientFactory<TClient>)()\n : options.client;\n }\n\n return resolveStorageRuntimeClient(options.storage ?? options.config?.storage);\n}\n\nexport async function farmIntegrationSchemaToOrmSchema(\n schema: FarmIntegrationSchema,\n): Promise<FarmIntegrationOrmSchema> {\n const orm = await import(\"@farming-labs/orm\");\n const models: Record<string, AnyModelDefinition> = {};\n\n for (const [modelKey, modelSchema] of Object.entries(schema.models)) {\n models[modelKey] = orm.model({\n table: modelSchema.name ?? modelKey,\n fields: createOrmModelFields(orm, modelSchema),\n constraints: createOrmModelConstraints(modelSchema),\n description: modelSchema.description,\n }) as AnyModelDefinition;\n }\n\n return orm.defineSchema(models) as FarmIntegrationOrmSchema;\n}\n\nfunction createOrmModelFields(\n orm: typeof import(\"@farming-labs/orm\"),\n modelSchema: FarmIntegrationSchemaModel,\n): Record<string, AnyFieldBuilder> {\n return Object.fromEntries(\n Object.entries(modelSchema.fields).map(([fieldKey, fieldSchema]) => [\n fieldKey,\n createOrmField(orm, fieldKey, fieldSchema),\n ]),\n );\n}\n\nfunction createOrmField(\n orm: typeof import(\"@farming-labs/orm\"),\n fieldKey: string,\n field: FarmIntegrationSchemaField,\n): AnyFieldBuilder {\n let builder = createOrmFieldBuilder(orm, fieldKey, field) as AnyFieldBuilder;\n\n if (field.unique) {\n builder = builder.unique();\n }\n\n if (field.nullable || field.required === false) {\n builder = builder.nullable();\n }\n\n if (field.default !== undefined) {\n builder =\n field.type === \"datetime\" && field.default === \"now\"\n ? builder.defaultNow()\n : builder.default(field.default as never);\n }\n\n if (field.reference) {\n builder = builder.references(`${field.reference.model}.${field.reference.field}`);\n }\n\n if (field.name && field.name !== fieldKey) {\n builder = builder.map(field.name);\n }\n\n if (field.description) {\n builder = builder.describe(field.description);\n }\n\n return builder;\n}\n\nfunction createOrmFieldBuilder(\n orm: typeof import(\"@farming-labs/orm\"),\n fieldKey: string,\n field: FarmIntegrationSchemaField,\n): AnyFieldBuilder {\n switch (field.type) {\n case \"id\":\n case \"uuid\":\n return orm.id();\n case \"string\":\n case \"text\":\n return orm.string();\n case \"boolean\":\n return orm.boolean();\n case \"integer\":\n return orm.integer();\n case \"number\":\n return orm.decimal();\n case \"datetime\":\n return orm.datetime();\n case \"json\":\n return orm.json();\n case \"enum\": {\n if (!field.values?.length) {\n throw new Error(`Integration schema enum field \"${fieldKey}\" must define values.`);\n }\n\n return orm.enumeration(field.values as readonly [string, ...string[]]);\n }\n default:\n throw new Error(\n `Unsupported integration schema field type \"${field.type}\" for \"${fieldKey}\".`,\n );\n }\n}\n\nfunction createOrmModelConstraints(modelSchema: FarmIntegrationSchemaModel) {\n const unique: Array<readonly [string, ...string[]]> = [];\n const indexes: Array<readonly [string, ...string[]]> = [];\n\n for (const constraint of modelSchema.constraints ?? []) {\n if (!constraint.fields.length) {\n continue;\n }\n\n const fields = constraint.fields as readonly [string, ...string[]];\n if (constraint.type === \"unique\") {\n unique.push(fields);\n } else {\n indexes.push(fields);\n }\n }\n\n return {\n unique,\n indexes,\n };\n}\n\nexport type IntegrationOrmModelNames<TSchema extends FarmIntegrationOrmSchema> =\n keyof SchemaModels<TSchema> & string;\n"],"mappings":";;;;;;;;AAqGA,eAAsB,qBAIpB,SACiD;AACjD,QAAM,CAAC,QAAQ,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,IACzC,iCAAiC,QAAQ,MAAM;AAAA,IAC/C,mCAAmC,OAAO;AAAA,EAC5C,CAAC;AAED,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,2BAA2B;AACzE,SAAO,qBAAqB;AAAA,IAC1B;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAtBsB;AAwBtB,eAAsB,mCACpB,SACwC;AACxC,MAAI,QAAQ,WAAW,QAAW;AAChC,WAAO,OAAO,QAAQ,WAAW,aAC7B,MAAO,QAAQ,OAAyC,IACxD,QAAQ;AAAA,EACd;AAEA,SAAO,4BAA4B,QAAQ,WAAW,QAAQ,QAAQ,OAAO;AAC/E;AAVsB;AAYtB,eAAsB,iCACpB,QACmC;AACnC,QAAM,MAAM,MAAM,OAAO,mBAAmB;AAC5C,QAAM,SAA6C,CAAC;AAEpD,aAAW,CAAC,UAAU,WAAW,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AACnE,WAAO,QAAQ,IAAI,IAAI,MAAM;AAAA,MAC3B,OAAO,YAAY,QAAQ;AAAA,MAC3B,QAAQ,qBAAqB,KAAK,WAAW;AAAA,MAC7C,aAAa,0BAA0B,WAAW;AAAA,MAClD,aAAa,YAAY;AAAA,IAC3B,CAAC;AAAA,EACH;AAEA,SAAO,IAAI,aAAa,MAAM;AAChC;AAhBsB;AAkBtB,SAAS,qBACP,KACA,aACiC;AACjC,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,YAAY,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,WAAW,MAAM;AAAA,MAClE;AAAA,MACA,eAAe,KAAK,UAAU,WAAW;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;AAVS;AAYT,SAAS,eACP,KACA,UACA,OACiB;AACjB,MAAI,UAAU,sBAAsB,KAAK,UAAU,KAAK;AAExD,MAAI,MAAM,QAAQ;AAChB,cAAU,QAAQ,OAAO;AAAA,EAC3B;AAEA,MAAI,MAAM,YAAY,MAAM,aAAa,OAAO;AAC9C,cAAU,QAAQ,SAAS;AAAA,EAC7B;AAEA,MAAI,MAAM,YAAY,QAAW;AAC/B,cACE,MAAM,SAAS,cAAc,MAAM,YAAY,QAC3C,QAAQ,WAAW,IACnB,QAAQ,QAAQ,MAAM,OAAgB;AAAA,EAC9C;AAEA,MAAI,MAAM,WAAW;AACnB,cAAU,QAAQ,WAAW,GAAG,MAAM,UAAU,KAAK,IAAI,MAAM,UAAU,KAAK,EAAE;AAAA,EAClF;AAEA,MAAI,MAAM,QAAQ,MAAM,SAAS,UAAU;AACzC,cAAU,QAAQ,IAAI,MAAM,IAAI;AAAA,EAClC;AAEA,MAAI,MAAM,aAAa;AACrB,cAAU,QAAQ,SAAS,MAAM,WAAW;AAAA,EAC9C;AAEA,SAAO;AACT;AAnCS;AAqCT,SAAS,sBACP,KACA,UACA,OACiB;AACjB,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,GAAG;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,IAAI,OAAO;AAAA,IACpB,KAAK;AACH,aAAO,IAAI,QAAQ;AAAA,IACrB,KAAK;AACH,aAAO,IAAI,QAAQ;AAAA,IACrB,KAAK;AACH,aAAO,IAAI,QAAQ;AAAA,IACrB,KAAK;AACH,aAAO,IAAI,SAAS;AAAA,IACtB,KAAK;AACH,aAAO,IAAI,KAAK;AAAA,IAClB,KAAK,QAAQ;AACX,UAAI,CAAC,MAAM,QAAQ,QAAQ;AACzB,cAAM,IAAI,MAAM,kCAAkC,QAAQ,uBAAuB;AAAA,MACnF;AAEA,aAAO,IAAI,YAAY,MAAM,MAAwC;AAAA,IACvE;AAAA,IACA;AACE,YAAM,IAAI;AAAA,QACR,8CAA8C,MAAM,IAAI,UAAU,QAAQ;AAAA,MAC5E;AAAA,EACJ;AACF;AAlCS;AAoCT,SAAS,0BAA0B,aAAyC;AAC1E,QAAM,SAAgD,CAAC;AACvD,QAAM,UAAiD,CAAC;AAExD,aAAW,cAAc,YAAY,eAAe,CAAC,GAAG;AACtD,QAAI,CAAC,WAAW,OAAO,QAAQ;AAC7B;AAAA,IACF;AAEA,UAAM,SAAS,WAAW;AAC1B,QAAI,WAAW,SAAS,UAAU;AAChC,aAAO,KAAK,MAAM;AAAA,IACpB,OAAO;AACL,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AArBS;","names":[]}
@@ -1,142 +0,0 @@
1
- import {
2
- _parseServerFnSchema,
3
- createServerFn
4
- } from "./chunk-VY2UYN5R.mjs";
5
- import {
6
- createFarmServerQueryResult
7
- } from "./chunk-SCFX4UTD.mjs";
8
- import {
9
- getServerActionExecutionContext
10
- } from "./chunk-UB5UOSHB.mjs";
11
- import {
12
- createFarmCacheKey,
13
- createRouteDataCacheKey,
14
- createRouteDataCacheTag,
15
- getFarmDataCache
16
- } from "./chunk-V3XURYJO.mjs";
17
- import {
18
- __name
19
- } from "./chunk-CGILA3WO.mjs";
20
-
21
- // src/server-query.ts
22
- var FARM_SERVER_QUERY_SYMBOL = /* @__PURE__ */ Symbol.for("farm.server-query");
23
- var requestInflight = /* @__PURE__ */ new WeakMap();
24
- var detachedInflight = /* @__PURE__ */ new Map();
25
- function createServerQuery(options) {
26
- if (!options || typeof options.handler !== "function") {
27
- throw new TypeError("createServerQuery requires a handler function");
28
- }
29
- if (typeof options.key !== "function") {
30
- throw new TypeError("createServerQuery requires a key function");
31
- }
32
- const staleTime = normalizeServerQueryStaleTime(options.staleTime);
33
- const execute = createServerFn({
34
- input: options.input,
35
- middleware: options.middleware,
36
- handler: /* @__PURE__ */ __name(async (context) => {
37
- const routeKey = await options.key(context);
38
- assertServerQueryKey(routeKey);
39
- const clientKey = createRouteDataCacheKey(routeKey);
40
- const cacheKey = createFarmCacheKey(["route-data", routeKey]);
41
- const producer = /* @__PURE__ */ __name(async () => {
42
- const value = await options.handler(context);
43
- return _parseServerFnSchema(options.output, value, "output", "createServerQuery");
44
- }, "producer");
45
- let data;
46
- let updatedAt;
47
- if (staleTime === 0) {
48
- data = await dedupeServerQueryRequest(cacheKey, context.request, producer);
49
- updatedAt = Date.now();
50
- } else {
51
- const cache = getFarmDataCache();
52
- data = await cache.getOrSet(cacheKey, producer, {
53
- tags: [createRouteDataCacheTag(routeKey)],
54
- revalidate: staleTime === false ? false : Math.max(1, Math.ceil(staleTime / 1e3))
55
- });
56
- updatedAt = (await cache.getEntryAsync(cacheKey, { allowStale: true }))?.createdAt ?? Date.now();
57
- }
58
- return createFarmServerQueryResult(data, {
59
- key: clientKey,
60
- staleTime,
61
- updatedAt
62
- });
63
- }, "handler")
64
- });
65
- const query = /* @__PURE__ */ __name(async (input) => {
66
- const result = await execute(input);
67
- return getServerActionExecutionContext() ? result : result.data;
68
- }, "query");
69
- Object.defineProperties(query, {
70
- [FARM_SERVER_QUERY_SYMBOL]: {
71
- value: true,
72
- enumerable: false
73
- },
74
- __farmServerQuery: {
75
- value: true,
76
- enumerable: false
77
- },
78
- __farmServerQueryInput: {
79
- value: options.input,
80
- enumerable: false
81
- },
82
- __farmServerQueryOutput: {
83
- value: options.output,
84
- enumerable: false
85
- }
86
- });
87
- return query;
88
- }
89
- __name(createServerQuery, "createServerQuery");
90
- async function dedupeServerQueryRequest(key, request, producer) {
91
- let inflight;
92
- if (request) {
93
- inflight = requestInflight.get(request) ?? /* @__PURE__ */ new Map();
94
- requestInflight.set(request, inflight);
95
- } else {
96
- inflight = detachedInflight;
97
- }
98
- const existing = inflight.get(key);
99
- if (existing) return existing;
100
- const promise = Promise.resolve().then(producer);
101
- inflight.set(key, promise);
102
- try {
103
- return await promise;
104
- } finally {
105
- inflight.delete(key);
106
- }
107
- }
108
- __name(dedupeServerQueryRequest, "dedupeServerQueryRequest");
109
- function normalizeServerQueryStaleTime(value) {
110
- if (value === false) return false;
111
- if (value === void 0) return 0;
112
- if (typeof value === "number") {
113
- if (!Number.isFinite(value) || value < 0) {
114
- throw new TypeError("createServerQuery staleTime must be a non-negative duration");
115
- }
116
- return value;
117
- }
118
- const match = value.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)$/);
119
- if (!match) {
120
- throw new TypeError('createServerQuery staleTime must look like "250ms", "30s", "5m", or "1h"');
121
- }
122
- const amount = Number(match[1]);
123
- const unit = match[2];
124
- const multiplier = unit === "ms" ? 1 : unit === "s" ? 1e3 : unit === "m" ? 6e4 : 36e5;
125
- return amount * multiplier;
126
- }
127
- __name(normalizeServerQueryStaleTime, "normalizeServerQueryStaleTime");
128
- function assertServerQueryKey(key) {
129
- if (typeof key === "string") {
130
- if (key.trim().length > 0) return;
131
- } else if (Array.isArray(key)) {
132
- return;
133
- }
134
- throw new TypeError("createServerQuery key must return a non-empty string or an array");
135
- }
136
- __name(assertServerQueryKey, "assertServerQueryKey");
137
-
138
- export {
139
- FARM_SERVER_QUERY_SYMBOL,
140
- createServerQuery
141
- };
142
- //# sourceMappingURL=chunk-65A7QIKI.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server-query.ts"],"sourcesContent":["import {\n createFarmCacheKey,\n createRouteDataCacheKey,\n createRouteDataCacheTag,\n getFarmDataCache,\n type RouteDataCacheKey,\n} from \"./cache\";\nimport { getServerActionExecutionContext } from \"./server-action-security\";\nimport {\n createServerFn,\n type AnyServerFnMiddleware,\n type InferServerFnSchemaInput,\n type InferServerFnSchemaOutput,\n type ServerFn,\n type ServerFnContext,\n type ServerFnHandler,\n type ServerFnMiddlewareContext,\n type ServerFnSchema,\n _parseServerFnSchema,\n} from \"./server-fn\";\nimport { createFarmServerQueryResult, type FarmServerQueryResult } from \"./server-query-protocol\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type ServerQueryStaleTime = number | false | `${number}${\"ms\" | \"s\" | \"m\" | \"h\"}`;\n\nexport type ServerQueryKey<TInput, TContext extends object = {}> = (\n context: ServerFnContext<TInput, TContext>,\n) => MaybePromise<RouteDataCacheKey>;\n\nexport type ServerQueryOptions<\n TSchema extends ServerFnSchema | undefined,\n TResult,\n TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n> = {\n input?: TSchema;\n output?: undefined;\n middleware?: TMiddlewares;\n key: ServerQueryKey<\n TSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TSchema> : unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n /** Milliseconds, a duration string such as \"30s\", or false for no expiry. */\n staleTime?: ServerQueryStaleTime;\n handler: ServerFnHandler<\n TSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TSchema> : unknown,\n TResult,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n};\n\nexport type ServerQueryOutputOptions<\n TInputSchema extends ServerFnSchema | undefined,\n TOutputSchema extends ServerFnSchema,\n TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n> = {\n input?: TInputSchema;\n output: TOutputSchema;\n middleware?: TMiddlewares;\n key: ServerQueryKey<\n TInputSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TInputSchema> : unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n /** Milliseconds, a duration string such as \"30s\", or false for no expiry. */\n staleTime?: ServerQueryStaleTime;\n handler: ServerFnHandler<\n TInputSchema extends ServerFnSchema ? InferServerFnSchemaOutput<TInputSchema> : unknown,\n unknown,\n ServerFnMiddlewareContext<TMiddlewares>\n >;\n};\n\nexport type ServerQuery<TInput, TResult> = ([unknown] extends [TInput]\n ? (input?: TInput) => Promise<TResult>\n : (input: TInput) => Promise<TResult>) & {\n readonly __farmServerQuery: true;\n readonly __farmServerQueryInput?: unknown;\n readonly __farmServerQueryOutput?: unknown;\n};\n\nexport const FARM_SERVER_QUERY_SYMBOL = Symbol.for(\"farm.server-query\");\n\ntype AnyServerQueryOptions = {\n input?: ServerFnSchema;\n output?: ServerFnSchema;\n middleware?: readonly AnyServerFnMiddleware[];\n key: ServerQueryKey<any, any>;\n staleTime?: ServerQueryStaleTime;\n handler: ServerFnHandler<any, any, any>;\n};\n\nconst requestInflight = new WeakMap<Request, Map<string, Promise<unknown>>>();\nconst detachedInflight = new Map<string, Promise<unknown>>();\n\nexport function createServerQuery<\n TInputSchema extends ServerFnSchema,\n TOutputSchema extends ServerFnSchema,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOutputOptions<TInputSchema, TOutputSchema, TMiddlewares>,\n): ServerQuery<\n InferServerFnSchemaInput<TInputSchema>,\n Awaited<InferServerFnSchemaOutput<TOutputSchema>>\n>;\nexport function createServerQuery<\n TOutputSchema extends ServerFnSchema,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOutputOptions<undefined, TOutputSchema, TMiddlewares>,\n): ServerQuery<unknown, Awaited<InferServerFnSchemaOutput<TOutputSchema>>>;\nexport function createServerQuery<\n TSchema extends ServerFnSchema,\n TResult,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOptions<TSchema, TResult, TMiddlewares>,\n): ServerQuery<InferServerFnSchemaInput<TSchema>, Awaited<TResult>>;\nexport function createServerQuery<\n TResult,\n const TMiddlewares extends readonly AnyServerFnMiddleware[] = readonly [],\n>(\n options: ServerQueryOptions<undefined, TResult, TMiddlewares>,\n): ServerQuery<unknown, Awaited<TResult>>;\nexport function createServerQuery(options: AnyServerQueryOptions): ServerQuery<unknown, unknown> {\n if (!options || typeof options.handler !== \"function\") {\n throw new TypeError(\"createServerQuery requires a handler function\");\n }\n if (typeof options.key !== \"function\") {\n throw new TypeError(\"createServerQuery requires a key function\");\n }\n\n const staleTime = normalizeServerQueryStaleTime(options.staleTime);\n const execute = (\n createServerFn as (options: any) => ServerFn<unknown, FarmServerQueryResult<any>>\n )({\n input: options.input,\n middleware: options.middleware,\n handler: async (context: ServerFnContext<any, any>) => {\n const routeKey = await options.key(context);\n assertServerQueryKey(routeKey);\n\n const clientKey = createRouteDataCacheKey(routeKey);\n const cacheKey = createFarmCacheKey([\"route-data\", routeKey]);\n const producer = async () => {\n const value = await options.handler(context);\n return _parseServerFnSchema(options.output, value, \"output\", \"createServerQuery\");\n };\n\n let data: unknown;\n let updatedAt: number;\n\n if (staleTime === 0) {\n data = await dedupeServerQueryRequest(cacheKey, context.request, producer);\n updatedAt = Date.now();\n } else {\n const cache = getFarmDataCache();\n data = await cache.getOrSet(cacheKey, producer, {\n tags: [createRouteDataCacheTag(routeKey)],\n revalidate: staleTime === false ? false : Math.max(1, Math.ceil(staleTime / 1000)),\n });\n updatedAt =\n (await cache.getEntryAsync(cacheKey, { allowStale: true }))?.createdAt ?? Date.now();\n }\n\n return createFarmServerQueryResult(data, {\n key: clientKey,\n staleTime,\n updatedAt,\n });\n },\n });\n\n const query = async (input?: unknown) => {\n const result = await execute(input);\n return getServerActionExecutionContext() ? result : result.data;\n };\n\n Object.defineProperties(query, {\n [FARM_SERVER_QUERY_SYMBOL]: {\n value: true,\n enumerable: false,\n },\n __farmServerQuery: {\n value: true,\n enumerable: false,\n },\n __farmServerQueryInput: {\n value: options.input,\n enumerable: false,\n },\n __farmServerQueryOutput: {\n value: options.output,\n enumerable: false,\n },\n });\n\n return query as ServerQuery<unknown, unknown>;\n}\n\nasync function dedupeServerQueryRequest<TData>(\n key: string,\n request: Request | undefined,\n producer: () => Promise<TData>,\n): Promise<TData> {\n let inflight: Map<string, Promise<unknown>>;\n if (request) {\n inflight = requestInflight.get(request) ?? new Map();\n requestInflight.set(request, inflight);\n } else {\n inflight = detachedInflight;\n }\n\n const existing = inflight.get(key) as Promise<TData> | undefined;\n if (existing) return existing;\n\n const promise = Promise.resolve().then(producer);\n inflight.set(key, promise);\n\n try {\n return await promise;\n } finally {\n inflight.delete(key);\n }\n}\n\nfunction normalizeServerQueryStaleTime(value: ServerQueryStaleTime | undefined): number | false {\n if (value === false) return false;\n if (value === undefined) return 0;\n\n if (typeof value === \"number\") {\n if (!Number.isFinite(value) || value < 0) {\n throw new TypeError(\"createServerQuery staleTime must be a non-negative duration\");\n }\n return value;\n }\n\n const match = value.match(/^(\\d+(?:\\.\\d+)?)(ms|s|m|h)$/);\n if (!match) {\n throw new TypeError('createServerQuery staleTime must look like \"250ms\", \"30s\", \"5m\", or \"1h\"');\n }\n\n const amount = Number(match[1]);\n const unit = match[2];\n const multiplier = unit === \"ms\" ? 1 : unit === \"s\" ? 1000 : unit === \"m\" ? 60_000 : 3_600_000;\n return amount * multiplier;\n}\n\nfunction assertServerQueryKey(key: unknown): asserts key is RouteDataCacheKey {\n if (typeof key === \"string\") {\n if (key.trim().length > 0) return;\n } else if (Array.isArray(key)) {\n return;\n }\n\n throw new TypeError(\"createServerQuery key must return a non-empty string or an array\");\n}\n"],"mappings":"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","names":[]}