@farm.js/core 0.1.15 → 0.1.17

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 (180) hide show
  1. package/dist/agent-runtime.d.mts +5 -2
  2. package/dist/agent-runtime.d.ts +5 -2
  3. package/dist/api/client.cjs +62 -28
  4. package/dist/api/client.d.mts +3 -2
  5. package/dist/api/client.d.ts +3 -2
  6. package/dist/api/client.mjs +3 -3
  7. package/dist/api/route-manager.cjs +69 -32
  8. package/dist/api/route-manager.d.mts +5 -2
  9. package/dist/api/route-manager.d.ts +5 -2
  10. package/dist/api/route-manager.mjs +5 -5
  11. package/dist/api/runtime.cjs +65 -29
  12. package/dist/api/runtime.d.mts +3 -2
  13. package/dist/api/runtime.d.ts +3 -2
  14. package/dist/api/runtime.mjs +6 -3
  15. package/dist/{api-client-C8d7BZNp.d.mts → api-client-Cx54IR5g.d.mts} +2 -1
  16. package/dist/{api-client-BWrEbxfO.d.ts → api-client-DykpaKcY.d.ts} +2 -1
  17. package/dist/api.cjs +106 -33
  18. package/dist/api.d.mts +7 -4
  19. package/dist/api.d.ts +7 -4
  20. package/dist/api.mjs +8 -8
  21. package/dist/{app-wIYse61b.d.ts → app-BHY_10Lm.d.ts} +3 -3
  22. package/dist/{app-B3nVSjen.d.mts → app-BMk0do23.d.mts} +3 -3
  23. package/dist/app-markdown.d.mts +6 -3
  24. package/dist/app-markdown.d.ts +6 -3
  25. package/dist/app-markdown.mjs +3 -3
  26. package/dist/cache.cjs +62 -28
  27. package/dist/cache.d.mts +11 -1
  28. package/dist/cache.d.ts +11 -1
  29. package/dist/cache.mjs +1 -1
  30. package/dist/{chunk-FOGLGRDS.mjs → chunk-4OOBRCJX.mjs} +122 -8
  31. package/dist/{chunk-JRF3C33L.mjs → chunk-56DAX2BE.mjs} +172 -53
  32. package/dist/{chunk-B76DT5Y6.mjs → chunk-57J3Y7Y3.mjs} +1 -1
  33. package/dist/{chunk-MOQNHLTS.mjs → chunk-5QOEPUYE.mjs} +5 -2
  34. package/dist/{chunk-HKLRP3BN.mjs → chunk-5SPPCN5J.mjs} +1 -1
  35. package/dist/{chunk-LUC2FAGW.mjs → chunk-6VQIKZZO.mjs} +1 -1
  36. package/dist/{chunk-7ZWL7XOU.mjs → chunk-76DG3LF3.mjs} +1 -1
  37. package/dist/{chunk-EWDK36MM.mjs → chunk-A72YEUZ3.mjs} +1 -1
  38. package/dist/{chunk-ZHOIQC6U.mjs → chunk-ATERBVHQ.mjs} +2 -2
  39. package/dist/{chunk-27JNCYEK.mjs → chunk-EN7WTEAY.mjs} +2 -2
  40. package/dist/{chunk-IGO2HEV7.mjs → chunk-F6SJAKFJ.mjs} +62 -28
  41. package/dist/{chunk-GSDIZACQ.mjs → chunk-FG5H2VCJ.mjs} +2 -2
  42. package/dist/{chunk-LZK5CXDW.mjs → chunk-KLSSO6YD.mjs} +2 -2
  43. package/dist/{chunk-KUO3GBPK.mjs → chunk-L6V3P73N.mjs} +1 -1
  44. package/dist/{chunk-FBHGHMOA.mjs → chunk-MVIWBEJF.mjs} +37 -27
  45. package/dist/{chunk-KTGFMHET.mjs → chunk-N6UROPT7.mjs} +1 -1
  46. package/dist/{chunk-NDD2YVGU.mjs → chunk-NRVGEI5I.mjs} +10 -3
  47. package/dist/{chunk-GNTPTTLA.mjs → chunk-QGVJVSNX.mjs} +5 -5
  48. package/dist/{chunk-6SCB2MXB.mjs → chunk-SXHV42UQ.mjs} +16 -1
  49. package/dist/{chunk-OWTIOHON.mjs → chunk-SYGGPS4A.mjs} +2 -2
  50. package/dist/{chunk-NC333MFA.mjs → chunk-TSWW5BVH.mjs} +7 -4
  51. package/dist/{chunk-LK6FGAQR.mjs → chunk-UDBJCUPA.mjs} +7 -4
  52. package/dist/{chunk-NJ47VORC.mjs → chunk-UTBVHYS3.mjs} +2 -2
  53. package/dist/{chunk-76MNRHTS.mjs → chunk-UUYF3CHN.mjs} +2 -2
  54. package/dist/{chunk-S3QW3BIS.mjs → chunk-WD4YXVLV.mjs} +99 -6
  55. package/dist/{chunk-W7IVHTOP.mjs → chunk-WD5PNSOB.mjs} +16 -3
  56. package/dist/{chunk-DPZUDPVJ.mjs → chunk-XP777LRD.mjs} +1 -1
  57. package/dist/{chunk-KATQ6I56.mjs → chunk-XWAYMDLB.mjs} +1 -1
  58. package/dist/{chunk-UE75PB52.mjs → chunk-YD4J4XCI.mjs} +1 -1
  59. package/dist/{chunk-Q3MDL7TM.mjs → chunk-ZCNJKLA2.mjs} +30 -11
  60. package/dist/{client-plugins-CslwYp3E.d.ts → client-plugins-C089bQhN.d.ts} +16 -4
  61. package/dist/{client-plugins-C1EgdoJM.d.mts → client-plugins-JXXmZliS.d.mts} +16 -4
  62. package/dist/client-plugins.d.mts +5 -2
  63. package/dist/client-plugins.d.ts +5 -2
  64. package/dist/client.cjs +62 -28
  65. package/dist/client.d.mts +8 -7
  66. package/dist/client.d.ts +8 -7
  67. package/dist/client.mjs +6 -6
  68. package/dist/config.d.mts +5 -2
  69. package/dist/config.d.ts +5 -2
  70. package/dist/cron.mjs +2 -2
  71. package/dist/{devtools-PCGEBRSC.mjs → devtools-UFVTMQX5.mjs} +7 -7
  72. package/dist/docs.cjs +83 -4
  73. package/dist/docs.mjs +9 -9
  74. package/dist/{route-CHBaW55F.d.ts → endpoint-1zA994xL.d.ts} +3 -128
  75. package/dist/{route-C6UClI1z.d.mts → endpoint-DAc96i93.d.mts} +3 -128
  76. package/dist/env.cjs +135 -8
  77. package/dist/env.d.mts +22 -2
  78. package/dist/env.d.ts +22 -2
  79. package/dist/env.mjs +4 -1
  80. package/dist/index.cjs +516 -105
  81. package/dist/index.d.mts +16 -15
  82. package/dist/index.d.ts +16 -15
  83. package/dist/index.mjs +46 -34
  84. package/dist/integrations.d.mts +5 -2
  85. package/dist/integrations.d.ts +5 -2
  86. package/dist/internal/app-markdown-runtime.d.mts +5 -2
  87. package/dist/internal/app-markdown-runtime.d.ts +5 -2
  88. package/dist/internal/app-markdown-runtime.mjs +2 -2
  89. package/dist/internal/build-runtime.cjs +600 -284
  90. package/dist/internal/build-runtime.d.mts +7 -4
  91. package/dist/internal/build-runtime.d.ts +7 -4
  92. package/dist/internal/build-runtime.mjs +23 -23
  93. package/dist/internal/cli-runtime.cjs +143 -33
  94. package/dist/internal/cli-runtime.mjs +13 -13
  95. package/dist/internal/client-error-overlay.cjs +1 -1
  96. package/dist/internal/client-error-overlay.mjs +1 -1
  97. package/dist/internal/compression-runtime.d.mts +5 -2
  98. package/dist/internal/compression-runtime.d.ts +5 -2
  99. package/dist/internal/config-runtime.cjs +80 -4
  100. package/dist/internal/config-runtime.d.mts +6 -3
  101. package/dist/internal/config-runtime.d.ts +6 -3
  102. package/dist/internal/config-runtime.mjs +7 -7
  103. package/dist/internal/product-telemetry-runtime.cjs +1 -1
  104. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  105. package/dist/internal/production-runtime.cjs +101 -41
  106. package/dist/internal/production-runtime.d.mts +11 -8
  107. package/dist/internal/production-runtime.d.ts +11 -8
  108. package/dist/internal/production-runtime.mjs +6 -6
  109. package/dist/markdown.cjs +16 -1
  110. package/dist/markdown.mjs +1 -1
  111. package/dist/{metadata-BsUcOEXg.d.ts → metadata-BcNJP4fq.d.ts} +1 -1
  112. package/dist/{metadata-B1bxCPUY.d.mts → metadata-C1Z9vLbb.d.mts} +1 -1
  113. package/dist/middleware.cjs +10 -3
  114. package/dist/middleware.d.mts +7 -4
  115. package/dist/middleware.d.ts +7 -4
  116. package/dist/middleware.mjs +4 -4
  117. package/dist/{nitro-ICBP5APY.mjs → nitro-CVZ36JM5.mjs} +8 -5
  118. package/dist/plugin.cjs +358 -106
  119. package/dist/plugin.d.mts +5 -2
  120. package/dist/plugin.d.ts +5 -2
  121. package/dist/plugin.mjs +19 -19
  122. package/dist/{production-runtime-BDllolVh.d.mts → production-runtime-jcrTlRTb.d.mts} +1 -1
  123. package/dist/{production-runtime-CsNn2-zx.d.ts → production-runtime-oKmC0WU-.d.ts} +1 -1
  124. package/dist/{render-plan-CNUlzylR.d.mts → render-plan-BLIfc4jt.d.mts} +1 -1
  125. package/dist/{render-plan-EG4hNFjy.d.ts → render-plan-DOB9cV-h.d.ts} +1 -1
  126. package/dist/renderer-client.cjs +62 -28
  127. package/dist/renderer-client.d.mts +5 -4
  128. package/dist/renderer-client.d.ts +5 -4
  129. package/dist/renderer-client.mjs +3 -3
  130. package/dist/{request-Blh_f7Z3.d.mts → request-Cr53NRHr.d.mts} +1 -1
  131. package/dist/{request-DsVSQVfD.d.ts → request-Dt2gNuQD.d.ts} +1 -1
  132. package/dist/request.d.mts +6 -3
  133. package/dist/request.d.ts +6 -3
  134. package/dist/route-B0XrsrFk.d.mts +128 -0
  135. package/dist/route-DOEpbyWZ.d.ts +128 -0
  136. package/dist/{route-rendering-hUETRCbM.d.ts → route-rendering-CWYd8Mv1.d.ts} +1 -1
  137. package/dist/{route-rendering-LT4XSoQK.d.mts → route-rendering-CeFBEAoZ.d.mts} +1 -1
  138. package/dist/routes.cjs +68 -31
  139. package/dist/routes.d.mts +5 -3
  140. package/dist/routes.d.ts +5 -3
  141. package/dist/routes.mjs +2 -2
  142. package/dist/server-fn-client.d.mts +3 -2
  143. package/dist/server-fn-client.d.ts +3 -2
  144. package/dist/server-fn.cjs +212 -32
  145. package/dist/server-fn.d.mts +72 -1
  146. package/dist/server-fn.d.ts +72 -1
  147. package/dist/server-fn.mjs +13 -2
  148. package/dist/server-plugins.d.mts +6 -3
  149. package/dist/server-plugins.d.ts +6 -3
  150. package/dist/server-query-client.cjs +62 -28
  151. package/dist/server-query-client.d.mts +1 -0
  152. package/dist/server-query-client.d.ts +1 -0
  153. package/dist/server-query-client.mjs +4 -4
  154. package/dist/server-query.cjs +131 -32
  155. package/dist/server-query.d.mts +6 -1
  156. package/dist/server-query.d.ts +6 -1
  157. package/dist/server-query.mjs +4 -3
  158. package/dist/server.cjs +393 -84
  159. package/dist/server.d.mts +9 -8
  160. package/dist/server.d.ts +9 -8
  161. package/dist/server.mjs +22 -22
  162. package/dist/{spa-router-csKR9Ebj.d.mts → spa-router-CQWiYGxS.d.mts} +2 -2
  163. package/dist/{spa-router-Y_2FSJQK.d.ts → spa-router-Wjiw-8hB.d.ts} +2 -2
  164. package/dist/testing.cjs +73 -32
  165. package/dist/testing.d.mts +5 -3
  166. package/dist/testing.d.ts +5 -3
  167. package/dist/testing.mjs +11 -7
  168. package/dist/{utils-jISOE9SD.d.ts → utils-B0XJmG_b.d.ts} +1 -1
  169. package/dist/{utils-DR2wfZAn.d.mts → utils-uUxF0K0P.d.mts} +1 -1
  170. package/dist/version.cjs +1 -1
  171. package/dist/version.mjs +1 -1
  172. package/dist/vite.cjs +500 -252
  173. package/dist/vite.d.mts +5 -2
  174. package/dist/vite.d.ts +5 -2
  175. package/dist/vite.mjs +19 -19
  176. package/dist/workflows.mjs +2 -2
  177. package/package.json +2 -2
  178. package/dist/{chunk-VO5SCWF5.mjs → chunk-BNGS6KJ6.mjs} +0 -0
  179. package/dist/{chunk-MUUZJLCI.mjs → chunk-EGJDUF4Q.mjs} +3 -3
  180. package/dist/{chunk-4L7SZOHZ.mjs → chunk-YHOCRI4H.mjs} +3 -3
@@ -1,9 +1,10 @@
1
- import { cf as ResolvedFarmConfig } from '../client-plugins-C1EgdoJM.mjs';
2
- export { b2 as loadConfig, b1 as resolveConfig, b3 as resolveDeployConfig } from '../client-plugins-C1EgdoJM.mjs';
1
+ import { cg as ResolvedFarmConfig } from '../client-plugins-JXXmZliS.mjs';
2
+ export { b2 as loadConfig, b1 as resolveConfig, b3 as resolveDeployConfig } from '../client-plugins-JXXmZliS.mjs';
3
3
  import { FarmProductionViteRuntime } from './config-runtime.mjs';
4
- export { l as logger } from '../utils-DR2wfZAn.mjs';
4
+ export { l as logger } from '../utils-uUxF0K0P.mjs';
5
5
  import '../lifecycle-DK06VuKP.mjs';
6
- import '../route-C6UClI1z.mjs';
6
+ import '../route-B0XrsrFk.mjs';
7
+ import '../endpoint-DAc96i93.mjs';
7
8
  import '../cache.mjs';
8
9
  import '../renderer.mjs';
9
10
  import '../deployment.mjs';
@@ -30,6 +31,8 @@ import '../server-fn-error-DDh14a0V.mjs';
30
31
  import 'esbuild';
31
32
  import '../image-config-Duob7wER.mjs';
32
33
  import '../types-Z0aotQ8w.mjs';
34
+ import '../server-fn.mjs';
35
+ import '../server-query.mjs';
33
36
  import '../types-DQnyD3VD.mjs';
34
37
  import '../font.mjs';
35
38
  import '../after.mjs';
@@ -1,9 +1,10 @@
1
- import { cf as ResolvedFarmConfig } from '../client-plugins-CslwYp3E.js';
2
- export { b2 as loadConfig, b1 as resolveConfig, b3 as resolveDeployConfig } from '../client-plugins-CslwYp3E.js';
1
+ import { cg as ResolvedFarmConfig } from '../client-plugins-C089bQhN.js';
2
+ export { b2 as loadConfig, b1 as resolveConfig, b3 as resolveDeployConfig } from '../client-plugins-C089bQhN.js';
3
3
  import { FarmProductionViteRuntime } from './config-runtime.js';
4
- export { l as logger } from '../utils-jISOE9SD.js';
4
+ export { l as logger } from '../utils-B0XJmG_b.js';
5
5
  import '../lifecycle-DK06VuKP.js';
6
- import '../route-CHBaW55F.js';
6
+ import '../route-DOEpbyWZ.js';
7
+ import '../endpoint-1zA994xL.js';
7
8
  import '../cache.js';
8
9
  import '../renderer.js';
9
10
  import '../deployment.js';
@@ -30,6 +31,8 @@ import '../server-fn-error-DDh14a0V.js';
30
31
  import 'esbuild';
31
32
  import '../image-config-Duob7wER.js';
32
33
  import '../types-Z0aotQ8w.js';
34
+ import '../server-fn.js';
35
+ import '../server-query.js';
33
36
  import '../types-DQnyD3VD.js';
34
37
  import '../font.js';
35
38
  import '../after.js';
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  build
3
- } from "../chunk-FBHGHMOA.mjs";
3
+ } from "../chunk-MVIWBEJF.mjs";
4
4
  import "../chunk-S3FNNQHR.mjs";
5
5
  import "../chunk-655RLQQL.mjs";
6
- import "../chunk-NJ47VORC.mjs";
7
- import "../chunk-MOQNHLTS.mjs";
6
+ import "../chunk-UTBVHYS3.mjs";
7
+ import "../chunk-5QOEPUYE.mjs";
8
8
  import "../chunk-UP4CW6WP.mjs";
9
9
  import "../chunk-TFQG7TBC.mjs";
10
10
  import "../chunk-6VEHUKZ2.mjs";
@@ -12,16 +12,16 @@ import {
12
12
  loadConfig,
13
13
  resolveConfig,
14
14
  resolveDeployConfig
15
- } from "../chunk-GNTPTTLA.mjs";
15
+ } from "../chunk-QGVJVSNX.mjs";
16
16
  import "../chunk-XZNTNMHT.mjs";
17
17
  import "../chunk-F5D4XEAS.mjs";
18
18
  import "../chunk-H77NVNJ2.mjs";
19
- import "../chunk-JRF3C33L.mjs";
20
- import "../chunk-27JNCYEK.mjs";
19
+ import "../chunk-56DAX2BE.mjs";
20
+ import "../chunk-EN7WTEAY.mjs";
21
21
  import "../chunk-DHDVMXYK.mjs";
22
22
  import "../chunk-ZMSZZXOR.mjs";
23
23
  import "../chunk-3NM6SRI6.mjs";
24
- import "../chunk-7ZWL7XOU.mjs";
24
+ import "../chunk-76DG3LF3.mjs";
25
25
  import "../chunk-DAO7JGTS.mjs";
26
26
  import "../chunk-BOYNDCZL.mjs";
27
27
  import "../chunk-HLCDYJY7.mjs";
@@ -39,37 +39,37 @@ import "../chunk-JBSVKMC5.mjs";
39
39
  import "../chunk-7WPA7GBZ.mjs";
40
40
  import "../chunk-IILNZK5G.mjs";
41
41
  import "../chunk-OLYK7EAK.mjs";
42
- import "../chunk-Q3MDL7TM.mjs";
42
+ import "../chunk-ZCNJKLA2.mjs";
43
43
  import "../chunk-G2KY33I6.mjs";
44
- import "../chunk-4L7SZOHZ.mjs";
44
+ import "../chunk-YHOCRI4H.mjs";
45
45
  import "../chunk-QCFFHV5H.mjs";
46
- import "../chunk-FOGLGRDS.mjs";
47
- import "../chunk-KATQ6I56.mjs";
48
- import "../chunk-LUC2FAGW.mjs";
46
+ import "../chunk-4OOBRCJX.mjs";
47
+ import "../chunk-XWAYMDLB.mjs";
48
+ import "../chunk-6VQIKZZO.mjs";
49
49
  import "../chunk-FA2W42OV.mjs";
50
- import "../chunk-6SCB2MXB.mjs";
51
- import "../chunk-MUUZJLCI.mjs";
52
- import "../chunk-ONUEYC6N.mjs";
50
+ import "../chunk-SXHV42UQ.mjs";
51
+ import "../chunk-EGJDUF4Q.mjs";
53
52
  import "../chunk-2UC36WAC.mjs";
53
+ import "../chunk-ONUEYC6N.mjs";
54
54
  import "../chunk-UWPLULNK.mjs";
55
55
  import "../chunk-AELACLOB.mjs";
56
56
  import "../chunk-SEJ5N6SL.mjs";
57
57
  import "../chunk-JLCQGPXE.mjs";
58
58
  import "../chunk-FP2INE7H.mjs";
59
59
  import "../chunk-44SYJEG3.mjs";
60
- import "../chunk-B76DT5Y6.mjs";
61
- import "../chunk-NDD2YVGU.mjs";
60
+ import "../chunk-57J3Y7Y3.mjs";
61
+ import "../chunk-NRVGEI5I.mjs";
62
62
  import "../chunk-5TISYEQF.mjs";
63
63
  import "../chunk-R3DS7A2T.mjs";
64
64
  import "../chunk-IOEH4VWN.mjs";
65
- import "../chunk-ZHOIQC6U.mjs";
66
- import "../chunk-VO5SCWF5.mjs";
65
+ import "../chunk-ATERBVHQ.mjs";
66
+ import "../chunk-BNGS6KJ6.mjs";
67
67
  import "../chunk-CU625VAY.mjs";
68
68
  import "../chunk-JNGIWIY6.mjs";
69
69
  import "../chunk-FV45CKBC.mjs";
70
- import "../chunk-DPZUDPVJ.mjs";
70
+ import "../chunk-XP777LRD.mjs";
71
71
  import "../chunk-I6XDAKWQ.mjs";
72
- import "../chunk-OWTIOHON.mjs";
72
+ import "../chunk-SYGGPS4A.mjs";
73
73
  import "../chunk-W3B4PKAW.mjs";
74
74
  import "../chunk-5WI2S4CO.mjs";
75
75
  import "../chunk-EA5K5BKU.mjs";
@@ -83,7 +83,7 @@ import {
83
83
  } from "../chunk-KI3MESHB.mjs";
84
84
  import "../chunk-QVKYGNVM.mjs";
85
85
  import "../chunk-Z2RZJZIZ.mjs";
86
- import "../chunk-UE75PB52.mjs";
86
+ import "../chunk-YD4J4XCI.mjs";
87
87
  import "../chunk-54UPOYFS.mjs";
88
88
  import "../chunk-WNSDDRNU.mjs";
89
89
  import "../chunk-JPLUGGRV.mjs";
@@ -96,7 +96,7 @@ import "../chunk-YS3TRKCG.mjs";
96
96
  import "../chunk-SKNL7VA2.mjs";
97
97
  import "../chunk-2A3EQHXX.mjs";
98
98
  import "../chunk-JNZ4TDWM.mjs";
99
- import "../chunk-IGO2HEV7.mjs";
99
+ import "../chunk-F6SJAKFJ.mjs";
100
100
  import "../chunk-4SIYUGRY.mjs";
101
101
  import "../chunk-C4NCTZLM.mjs";
102
102
  import "../chunk-FUZEBRP3.mjs";
@@ -2334,6 +2334,8 @@ var init_cache = __esm({
2334
2334
  constructor(config = {}) {
2335
2335
  this.entries = /* @__PURE__ */ new Map();
2336
2336
  this.inflight = /* @__PURE__ */ new Map();
2337
+ /** Local entries by tag, so tag counts and pruning never scan unrelated entries. */
2338
+ this.entriesByTag = /* @__PURE__ */ new Map();
2337
2339
  this.invalidatedTagVersions = /* @__PURE__ */ new Map();
2338
2340
  this.activeGenerations = /* @__PURE__ */ new Set();
2339
2341
  this.version = 0;
@@ -2352,6 +2354,7 @@ var init_cache = __esm({
2352
2354
  configure(config = {}) {
2353
2355
  this.generation++;
2354
2356
  this.entries.clear();
2357
+ this.entriesByTag.clear();
2355
2358
  this.inflight.clear();
2356
2359
  this.invalidatedTagVersions.clear();
2357
2360
  this.activeGenerations.clear();
@@ -2518,14 +2521,12 @@ var init_cache = __esm({
2518
2521
  return entry;
2519
2522
  }
2520
2523
  delete(key) {
2521
- const deleted = this.entries.delete(key);
2522
- if (deleted) this.pruneInvalidatedTagVersions();
2524
+ const deleted = this.deleteLocalEntry(key);
2523
2525
  emitFarmEvent({ type: "cache.delete", key, deleted });
2524
2526
  return deleted;
2525
2527
  }
2526
2528
  async deleteAsync(key) {
2527
- const deleted = this.entries.delete(key);
2528
- if (deleted) this.pruneInvalidatedTagVersions();
2529
+ const deleted = this.deleteLocalEntry(key);
2529
2530
  if (this.adapter) {
2530
2531
  await this.adapter.delete(this.createAdapterKey(key));
2531
2532
  }
@@ -2536,6 +2537,7 @@ var init_cache = __esm({
2536
2537
  const count = this.entries.size;
2537
2538
  this.generation++;
2538
2539
  this.entries.clear();
2540
+ this.entriesByTag.clear();
2539
2541
  this.inflight.clear();
2540
2542
  this.invalidatedTagVersions.clear();
2541
2543
  this.activeGenerations.clear();
@@ -2621,23 +2623,32 @@ var init_cache = __esm({
2621
2623
  return cached.value;
2622
2624
  }
2623
2625
  const inflight = this.inflight.get(key);
2624
- if (inflight) {
2626
+ if (inflight && !this.wasInvalidatedSince(inflight.tags, inflight.startVersion)) {
2625
2627
  emitFarmEvent({ type: "cache.dedupe", key });
2626
- return inflight;
2628
+ return inflight.promise;
2627
2629
  }
2628
2630
  const tags = Array.from(normalizeCacheOptionsTags(options));
2629
2631
  const generation = this.generation;
2632
+ const startVersion = this.version;
2630
2633
  const promise = this.fillCacheEntry(key, producer, options, tags, generation).catch((error) => {
2631
2634
  emitFarmEvent({ type: "cache.error", key, operation: "set", error });
2632
2635
  throw error;
2633
2636
  }).finally(() => {
2634
- if (this.inflight.get(key) === promise) {
2637
+ if (this.inflight.get(key)?.promise === promise) {
2635
2638
  this.inflight.delete(key);
2636
2639
  }
2637
2640
  });
2638
- this.inflight.set(key, promise);
2641
+ this.inflight.set(key, { promise, tags, startVersion });
2639
2642
  return promise;
2640
2643
  }
2644
+ /** A fill that started before one of its tags was invalidated cannot satisfy later readers. */
2645
+ wasInvalidatedSince(tags, version) {
2646
+ for (const tag of tags) {
2647
+ const invalidatedVersion = this.invalidatedTagVersions.get(tag);
2648
+ if (invalidatedVersion !== void 0 && invalidatedVersion > version) return true;
2649
+ }
2650
+ return false;
2651
+ }
2641
2652
  async fillCacheEntry(key, producer, options, tags, generation) {
2642
2653
  const adapter = this.adapter;
2643
2654
  const namespace = this.namespace;
@@ -2678,7 +2689,7 @@ var init_cache = __esm({
2678
2689
  return value;
2679
2690
  } finally {
2680
2691
  this.activeGenerations.delete(activeGeneration);
2681
- this.pruneInvalidatedTagVersions();
2692
+ this.pruneInvalidatedTagVersions(activeGeneration.tags);
2682
2693
  if (leaseToken && adapter?.releaseLease) {
2683
2694
  try {
2684
2695
  await adapter.releaseLease(leaseKey, leaseToken);
@@ -2723,18 +2734,9 @@ var init_cache = __esm({
2723
2734
  }
2724
2735
  return void 0;
2725
2736
  }
2726
- countEntriesForTag(tag) {
2727
- let count = 0;
2728
- for (const entry of this.entries.values()) {
2729
- if (entry.tags.has(tag)) {
2730
- count++;
2731
- }
2732
- }
2733
- return count;
2734
- }
2735
2737
  countEntriesForTags(tags) {
2736
2738
  let count = 0;
2737
- for (const entry of this.entries.values()) {
2739
+ for (const entry of this.entriesByTag.get(tags[0]) ?? []) {
2738
2740
  if (tags.every((tag) => entry.tags.has(tag))) {
2739
2741
  count++;
2740
2742
  }
@@ -2742,10 +2744,10 @@ var init_cache = __esm({
2742
2744
  return count;
2743
2745
  }
2744
2746
  invalidateTag(normalizedTag) {
2745
- const count = this.countEntriesForTag(normalizedTag);
2747
+ const count = this.entriesByTag.get(normalizedTag)?.size ?? 0;
2746
2748
  this.invalidatedTagVersions.delete(normalizedTag);
2747
2749
  this.invalidatedTagVersions.set(normalizedTag, ++this.version);
2748
- this.pruneInvalidatedTagVersions();
2750
+ this.pruneInvalidatedTagVersions([normalizedTag]);
2749
2751
  return count;
2750
2752
  }
2751
2753
  toPublicEntry(entry) {
@@ -2775,19 +2777,51 @@ var init_cache = __esm({
2775
2777
  this.entries.set(key, entry);
2776
2778
  }
2777
2779
  storeLocalEntry(entry) {
2778
- this.entries.delete(entry.key);
2780
+ const removed = [];
2781
+ const replaced = this.detachLocalEntry(entry.key);
2782
+ if (replaced) removed.push(replaced);
2779
2783
  this.entries.set(entry.key, entry);
2784
+ for (const tag of entry.tags) {
2785
+ let tagged = this.entriesByTag.get(tag);
2786
+ if (!tagged) this.entriesByTag.set(tag, tagged = /* @__PURE__ */ new Set());
2787
+ tagged.add(entry);
2788
+ }
2780
2789
  while (this.entries.size > this.maxEntries) {
2781
2790
  const oldestKey = this.entries.keys().next().value;
2782
2791
  if (oldestKey === void 0) break;
2783
- this.entries.delete(oldestKey);
2792
+ removed.push(this.detachLocalEntry(oldestKey));
2784
2793
  }
2785
- this.pruneInvalidatedTagVersions();
2794
+ for (const removedEntry of removed) this.pruneInvalidatedTagVersions(removedEntry.tags);
2786
2795
  }
2787
- pruneInvalidatedTagVersions() {
2788
- tags: for (const [tag, invalidatedVersion] of this.invalidatedTagVersions) {
2789
- for (const entry of this.entries.values()) {
2790
- if (entry.tags.has(tag) && entry.createdVersion < invalidatedVersion) continue tags;
2796
+ deleteLocalEntry(key) {
2797
+ const entry = this.detachLocalEntry(key);
2798
+ if (!entry) return false;
2799
+ this.pruneInvalidatedTagVersions(entry.tags);
2800
+ return true;
2801
+ }
2802
+ detachLocalEntry(key) {
2803
+ const entry = this.entries.get(key);
2804
+ if (!entry) return void 0;
2805
+ this.entries.delete(key);
2806
+ for (const tag of entry.tags) {
2807
+ const tagged = this.entriesByTag.get(tag);
2808
+ if (!tagged) continue;
2809
+ tagged.delete(entry);
2810
+ if (tagged.size === 0) this.entriesByTag.delete(tag);
2811
+ }
2812
+ return entry;
2813
+ }
2814
+ /**
2815
+ * Drop invalidation versions that no local entry or active fill can be stale against.
2816
+ * Callers pass only the tags whose dependents just changed, so the cost is bounded by
2817
+ * the entries sharing those tags rather than by the whole cache.
2818
+ */
2819
+ pruneInvalidatedTagVersions(tags) {
2820
+ tags: for (const tag of tags) {
2821
+ const invalidatedVersion = this.invalidatedTagVersions.get(tag);
2822
+ if (invalidatedVersion === void 0) continue;
2823
+ for (const entry of this.entriesByTag.get(tag) ?? []) {
2824
+ if (entry.createdVersion < invalidatedVersion) continue tags;
2791
2825
  }
2792
2826
  for (const generation of this.activeGenerations) {
2793
2827
  if (generation.tags.has(tag) && generation.createdVersion < invalidatedVersion)
@@ -5701,6 +5735,19 @@ function normalizeMarkdownRoute(route) {
5701
5735
  }
5702
5736
  __name(normalizeMarkdownRoute, "normalizeMarkdownRoute");
5703
5737
 
5738
+ // src/utils/runtime-env.ts
5739
+ function getFarmRuntimeBindings() {
5740
+ const runtimeBindings = globalThis.__env__;
5741
+ return runtimeBindings && typeof runtimeBindings === "object" ? runtimeBindings : void 0;
5742
+ }
5743
+ __name(getFarmRuntimeBindings, "getFarmRuntimeBindings");
5744
+ function readFarmEnvironmentValue(name) {
5745
+ const runtimeValue = getFarmRuntimeBindings()?.[name];
5746
+ if (typeof runtimeValue === "string") return runtimeValue;
5747
+ return typeof process !== "undefined" ? process.env?.[name] : void 0;
5748
+ }
5749
+ __name(readFarmEnvironmentValue, "readFarmEnvironmentValue");
5750
+
5704
5751
  // src/workflows.ts
5705
5752
  var import_node_path = require("path");
5706
5753
  var DEFAULT_FARM_WORKFLOW_DIRS = ["src/jobs", "src/workflows", "src/cron"];
@@ -5911,6 +5958,7 @@ __name(isResolvedCronConfig, "isResolvedCronConfig");
5911
5958
 
5912
5959
  // src/env.ts
5913
5960
  var FARM_ENV_SYMBOL = /* @__PURE__ */ Symbol.for("farm.env");
5961
+ var FARM_ENV_RUNTIME_SYMBOL = /* @__PURE__ */ Symbol.for("farm.env.runtime");
5914
5962
  var farmEnvGlobal = globalThis;
5915
5963
  var currentEnv = getInitialEnv();
5916
5964
  function resolveEnv(config, source = getProcessEnv()) {
@@ -5922,7 +5970,7 @@ function resolveEnv(config, source = getProcessEnv()) {
5922
5970
  }
5923
5971
  __name(resolveEnv, "resolveEnv");
5924
5972
  function setEnv(env2) {
5925
- currentEnv = normalizeResolvedEnv(env2);
5973
+ currentEnv = prepareEnv(env2);
5926
5974
  if (typeof window === "undefined") {
5927
5975
  farmEnvGlobal[FARM_ENV_SYMBOL] = currentEnv;
5928
5976
  }
@@ -5965,7 +6013,7 @@ function createEnvProxy(scope) {
5965
6013
  return void 0;
5966
6014
  }
5967
6015
  const env2 = getEnvScope(scope);
5968
- return env2[property];
6016
+ return scope === "server" ? readServerEnvKey(env2, property) : env2[property];
5969
6017
  },
5970
6018
  ownKeys() {
5971
6019
  return Reflect.ownKeys(getEnvScope(scope));
@@ -5989,12 +6037,74 @@ function createEnvProxy(scope) {
5989
6037
  }
5990
6038
  __name(createEnvProxy, "createEnvProxy");
5991
6039
  function getEnvScope(scope) {
6040
+ const env2 = getCurrentEnv();
5992
6041
  if (scope === "server") {
5993
6042
  assertServerEnvAccess();
6043
+ readRuntimeServerEnv(env2);
5994
6044
  }
5995
- return getCurrentEnv()[scope] || {};
6045
+ return env2[scope] || {};
5996
6046
  }
5997
6047
  __name(getEnvScope, "getEnvScope");
6048
+ function readServerEnvKey(server, key) {
6049
+ const value = server[key];
6050
+ if (value === void 0) {
6051
+ const state = getCurrentEnv()[FARM_ENV_RUNTIME_SYMBOL];
6052
+ if (state && key in state.pending && !state.warned.has(key)) {
6053
+ state.warned.add(key);
6054
+ console.warn(
6055
+ `[Farm] Server env "${key}" was set when this app was built but is not set where the server runs, so it reads as undefined. Farm reads server env at runtime and does not store it in the build output; set "${key}" in the server's environment.`
6056
+ );
6057
+ }
6058
+ }
6059
+ return value;
6060
+ }
6061
+ __name(readServerEnvKey, "readServerEnvKey");
6062
+ function readRuntimeServerEnv(env2) {
6063
+ const state = env2[FARM_ENV_RUNTIME_SYMBOL];
6064
+ if (!state) return;
6065
+ for (const [key, type] of Object.entries(state.pending)) {
6066
+ const raw = readFarmEnvironmentValue(key);
6067
+ if (raw === void 0) continue;
6068
+ env2.server[key] = coerceRuntimeEnvValue(raw, type);
6069
+ delete state.pending[key];
6070
+ }
6071
+ }
6072
+ __name(readRuntimeServerEnv, "readRuntimeServerEnv");
6073
+ function coerceRuntimeEnvValue(raw, type) {
6074
+ if (type === "number") {
6075
+ const value = Number(raw);
6076
+ return raw.trim() !== "" && Number.isFinite(value) ? value : raw;
6077
+ }
6078
+ if (type === "boolean") {
6079
+ if (/^(true|1)$/i.test(raw.trim())) return true;
6080
+ if (/^(false|0|)$/i.test(raw.trim())) return false;
6081
+ return raw;
6082
+ }
6083
+ if (type === "json") {
6084
+ try {
6085
+ return JSON.parse(raw);
6086
+ } catch {
6087
+ return raw;
6088
+ }
6089
+ }
6090
+ return raw;
6091
+ }
6092
+ __name(coerceRuntimeEnvValue, "coerceRuntimeEnvValue");
6093
+ function prepareEnv(env2) {
6094
+ const normalized = normalizeResolvedEnv(env2);
6095
+ const runtime3 = env2.runtime?.server;
6096
+ if (!isRecord(runtime3) || Object.keys(runtime3).length === 0) return normalized;
6097
+ const prepared = { server: { ...normalized.server }, public: normalized.public };
6098
+ Object.defineProperty(prepared, FARM_ENV_RUNTIME_SYMBOL, {
6099
+ value: {
6100
+ pending: { ...runtime3 },
6101
+ warned: /* @__PURE__ */ new Set()
6102
+ },
6103
+ enumerable: false
6104
+ });
6105
+ return prepared;
6106
+ }
6107
+ __name(prepareEnv, "prepareEnv");
5998
6108
  function assertServerEnvAccess() {
5999
6109
  if (typeof window !== "undefined") {
6000
6110
  throw new Error("Farm server env is not available in the browser. Use publicEnv.");
@@ -6025,7 +6135,7 @@ __name(getCurrentEnv, "getCurrentEnv");
6025
6135
  function getInjectedEnv() {
6026
6136
  try {
6027
6137
  if (typeof __FARM_ENV__ !== "undefined" && __FARM_ENV__) {
6028
- return normalizeResolvedEnv(__FARM_ENV__);
6138
+ return prepareEnv(__FARM_ENV__);
6029
6139
  }
6030
6140
  } catch {
6031
6141
  }
@@ -10299,7 +10409,7 @@ function createEndpoint(pathOrOptions, optionsOrHandler, maybeHandler) {
10299
10409
  wrappedHandler
10300
10410
  );
10301
10411
  endpoint.__path = path17 || void 0;
10302
- endpoint.__method = options.method || "GET";
10412
+ endpoint.__method = options.method || (path17 ? "GET" : void 0);
10303
10413
  endpoint.__autoPath = !path17;
10304
10414
  endpoint.__handler = wrappedHandler;
10305
10415
  endpoint.__farmInvoke = (ctx) => runEndpointMiddleware(middleware, ctx, handler, error, options.invalidates);
@@ -7,13 +7,13 @@ import {
7
7
  import "../chunk-QV4VE2OW.mjs";
8
8
  import {
9
9
  getFarmDocsRouteTypeEntries
10
- } from "../chunk-MOQNHLTS.mjs";
10
+ } from "../chunk-5QOEPUYE.mjs";
11
11
  import "../chunk-UP4CW6WP.mjs";
12
12
  import "../chunk-TFQG7TBC.mjs";
13
13
  import {
14
14
  isProgrammaticRoutesFileName,
15
15
  scanProgrammaticPagePaths
16
- } from "../chunk-NC333MFA.mjs";
16
+ } from "../chunk-TSWW5BVH.mjs";
17
17
  import {
18
18
  getDeployTargetForPreset,
19
19
  getPresetForDeployTarget,
@@ -22,12 +22,12 @@ import {
22
22
  resolveConfig,
23
23
  resolveDeployConfig,
24
24
  resolveDeployOutputPath
25
- } from "../chunk-GNTPTTLA.mjs";
25
+ } from "../chunk-QGVJVSNX.mjs";
26
26
  import "../chunk-XZNTNMHT.mjs";
27
27
  import {
28
28
  generateFarmTypeArtifacts,
29
29
  resolveRouteRenderingConfig
30
- } from "../chunk-27JNCYEK.mjs";
30
+ } from "../chunk-EN7WTEAY.mjs";
31
31
  import {
32
32
  collectSchemaExtensions,
33
33
  collectSchemaModels,
@@ -54,16 +54,16 @@ import {
54
54
  getFarmSourceRoots
55
55
  } from "../chunk-IILNZK5G.mjs";
56
56
  import "../chunk-OLYK7EAK.mjs";
57
- import "../chunk-Q3MDL7TM.mjs";
57
+ import "../chunk-ZCNJKLA2.mjs";
58
58
  import "../chunk-G2KY33I6.mjs";
59
- import "../chunk-4L7SZOHZ.mjs";
59
+ import "../chunk-YHOCRI4H.mjs";
60
60
  import "../chunk-QCFFHV5H.mjs";
61
- import "../chunk-FOGLGRDS.mjs";
61
+ import "../chunk-4OOBRCJX.mjs";
62
62
  import "../chunk-FA2W42OV.mjs";
63
- import "../chunk-6SCB2MXB.mjs";
64
- import "../chunk-MUUZJLCI.mjs";
65
- import "../chunk-ONUEYC6N.mjs";
63
+ import "../chunk-SXHV42UQ.mjs";
64
+ import "../chunk-EGJDUF4Q.mjs";
66
65
  import "../chunk-2UC36WAC.mjs";
66
+ import "../chunk-ONUEYC6N.mjs";
67
67
  import "../chunk-UWPLULNK.mjs";
68
68
  import "../chunk-AELACLOB.mjs";
69
69
  import "../chunk-SEJ5N6SL.mjs";
@@ -72,10 +72,10 @@ import {
72
72
  } from "../chunk-JLCQGPXE.mjs";
73
73
  import "../chunk-FP2INE7H.mjs";
74
74
  import "../chunk-44SYJEG3.mjs";
75
- import "../chunk-VO5SCWF5.mjs";
75
+ import "../chunk-BNGS6KJ6.mjs";
76
76
  import "../chunk-CU625VAY.mjs";
77
77
  import "../chunk-FV45CKBC.mjs";
78
- import "../chunk-OWTIOHON.mjs";
78
+ import "../chunk-SYGGPS4A.mjs";
79
79
  import "../chunk-W3B4PKAW.mjs";
80
80
  import "../chunk-EA5K5BKU.mjs";
81
81
  import {
@@ -98,7 +98,7 @@ import "../chunk-SKNL7VA2.mjs";
98
98
  import {
99
99
  getFarmPresetRuntime
100
100
  } from "../chunk-2A3EQHXX.mjs";
101
- import "../chunk-IGO2HEV7.mjs";
101
+ import "../chunk-F6SJAKFJ.mjs";
102
102
  import "../chunk-4SIYUGRY.mjs";
103
103
  import "../chunk-C4NCTZLM.mjs";
104
104
  import "../chunk-FUZEBRP3.mjs";
@@ -583,7 +583,7 @@ body {
583
583
  `;
584
584
 
585
585
  // package.json
586
- var version = "0.1.15";
586
+ var version = "0.1.17";
587
587
 
588
588
  // src/version.ts
589
589
  var FARM_VERSION = version;
@@ -7,7 +7,7 @@ import {
7
7
  } from "../chunk-XAXTTBUT.mjs";
8
8
  import {
9
9
  FARM_VERSION
10
- } from "../chunk-UE75PB52.mjs";
10
+ } from "../chunk-YD4J4XCI.mjs";
11
11
  import {
12
12
  __name
13
13
  } from "../chunk-LPEX4YW6.mjs";
@@ -1,6 +1,7 @@
1
- import { b as FarmRequest, c as FarmResponse, d as FarmPluginContext, a as FarmPlugin } from '../client-plugins-C1EgdoJM.mjs';
1
+ import { b as FarmRequest, c as FarmResponse, d as FarmPluginContext, a as FarmPlugin } from '../client-plugins-JXXmZliS.mjs';
2
2
  import '../lifecycle-DK06VuKP.mjs';
3
- import '../route-C6UClI1z.mjs';
3
+ import '../route-B0XrsrFk.mjs';
4
+ import '../endpoint-DAc96i93.mjs';
4
5
  import '../cache.mjs';
5
6
  import '../renderer.mjs';
6
7
  import '../deployment.mjs';
@@ -27,6 +28,8 @@ import '../server-fn-error-DDh14a0V.mjs';
27
28
  import 'esbuild';
28
29
  import '../image-config-Duob7wER.mjs';
29
30
  import '../types-Z0aotQ8w.mjs';
31
+ import '../server-fn.mjs';
32
+ import '../server-query.mjs';
30
33
  import '../types-DQnyD3VD.mjs';
31
34
  import '../font.mjs';
32
35
  import '../after.mjs';
@@ -1,6 +1,7 @@
1
- import { b as FarmRequest, c as FarmResponse, d as FarmPluginContext, a as FarmPlugin } from '../client-plugins-CslwYp3E.js';
1
+ import { b as FarmRequest, c as FarmResponse, d as FarmPluginContext, a as FarmPlugin } from '../client-plugins-C089bQhN.js';
2
2
  import '../lifecycle-DK06VuKP.js';
3
- import '../route-CHBaW55F.js';
3
+ import '../route-DOEpbyWZ.js';
4
+ import '../endpoint-1zA994xL.js';
4
5
  import '../cache.js';
5
6
  import '../renderer.js';
6
7
  import '../deployment.js';
@@ -27,6 +28,8 @@ import '../server-fn-error-DDh14a0V.js';
27
28
  import 'esbuild';
28
29
  import '../image-config-Duob7wER.js';
29
30
  import '../types-Z0aotQ8w.js';
31
+ import '../server-fn.js';
32
+ import '../server-query.js';
30
33
  import '../types-DQnyD3VD.js';
31
34
  import '../font.js';
32
35
  import '../after.js';