@farm.js/core 0.1.0-beta.97 → 0.1.0-beta.99

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 (269) hide show
  1. package/dist/after.cjs.map +1 -0
  2. package/dist/agent-runtime.cjs +7 -3
  3. package/dist/agent-runtime.cjs.map +1 -0
  4. package/dist/agent-runtime.d.mts +2 -2
  5. package/dist/agent-runtime.d.ts +2 -2
  6. package/dist/agent-runtime.mjs +2 -1
  7. package/dist/agent-runtime.mjs.map +1 -1
  8. package/dist/api/route-manager.cjs.map +1 -0
  9. package/dist/api/route-manager.d.mts +2 -2
  10. package/dist/api/route-manager.d.ts +2 -2
  11. package/dist/api/runtime.cjs.map +1 -0
  12. package/dist/api.cjs +26 -1
  13. package/dist/api.cjs.map +1 -0
  14. package/dist/api.d.mts +3 -3
  15. package/dist/api.d.ts +3 -3
  16. package/dist/api.mjs +2 -2
  17. package/dist/{app-CIOx3LvY.d.ts → app-CGjrKNoN.d.ts} +4 -4
  18. package/dist/{app-DBd6437H.d.mts → app-DOcLs_iq.d.mts} +4 -4
  19. package/dist/app-markdown.cjs +21 -0
  20. package/dist/app-markdown.cjs.map +1 -0
  21. package/dist/app-markdown.d.mts +19 -4
  22. package/dist/app-markdown.d.ts +19 -4
  23. package/dist/app-markdown.mjs +7 -1
  24. package/dist/cache.cjs.map +1 -0
  25. package/dist/{chunk-VMCHLH3Y.mjs → chunk-26BCDVJS.mjs} +19 -1
  26. package/dist/chunk-26BCDVJS.mjs.map +1 -0
  27. package/dist/{chunk-FP5Q67FO.mjs → chunk-2HYYZCCI.mjs} +308 -19
  28. package/dist/chunk-2HYYZCCI.mjs.map +1 -0
  29. package/dist/{chunk-WKDAA6V2.mjs → chunk-3BTAMIQE.mjs} +100 -41
  30. package/dist/chunk-3BTAMIQE.mjs.map +1 -0
  31. package/dist/{chunk-WD2EBM3I.mjs → chunk-3CQJV3NC.mjs} +2 -2
  32. package/dist/{chunk-I3OOUWO5.mjs → chunk-3GDRV7SG.mjs} +2 -2
  33. package/dist/{chunk-YIBV77KZ.mjs → chunk-4WLAVHCY.mjs} +2 -2
  34. package/dist/{chunk-KDP5ZSWP.mjs → chunk-7PS5NKOM.mjs} +26 -11
  35. package/dist/chunk-7PS5NKOM.mjs.map +1 -0
  36. package/dist/{chunk-X4SFHKFH.mjs → chunk-BU65A3LZ.mjs} +10 -6
  37. package/dist/chunk-BU65A3LZ.mjs.map +1 -0
  38. package/dist/{chunk-WMJGA32P.mjs → chunk-BXVOHG6B.mjs} +27 -2
  39. package/dist/{chunk-WMJGA32P.mjs.map → chunk-BXVOHG6B.mjs.map} +1 -1
  40. package/dist/{chunk-BZAIS65C.mjs → chunk-DIHNOVZZ.mjs} +40 -13
  41. package/dist/chunk-DIHNOVZZ.mjs.map +1 -0
  42. package/dist/{chunk-ISSFLGJ5.mjs → chunk-FDWECN3W.mjs} +8 -4
  43. package/dist/chunk-FDWECN3W.mjs.map +1 -0
  44. package/dist/chunk-FDWXXTWR.mjs +114 -0
  45. package/dist/chunk-FDWXXTWR.mjs.map +1 -0
  46. package/dist/{chunk-FSIXEIOB.mjs → chunk-L7FSTPGS.mjs} +2 -2
  47. package/dist/{chunk-J3MPQ4MQ.mjs → chunk-LG4XB6RN.mjs} +2 -2
  48. package/dist/{chunk-J3MPQ4MQ.mjs.map → chunk-LG4XB6RN.mjs.map} +1 -1
  49. package/dist/{chunk-AAC66ILR.mjs → chunk-LXXG3K2Y.mjs} +61 -2
  50. package/dist/chunk-LXXG3K2Y.mjs.map +1 -0
  51. package/dist/{chunk-GJ7W6LNK.mjs → chunk-N5RK4LK6.mjs} +3 -3
  52. package/dist/{chunk-D7F7YZ7L.mjs → chunk-NCVFPT67.mjs} +100 -40
  53. package/dist/{chunk-D7F7YZ7L.mjs.map → chunk-NCVFPT67.mjs.map} +1 -1
  54. package/dist/{chunk-UMUWR5XA.mjs → chunk-PURU7FXR.mjs} +2 -2
  55. package/dist/{chunk-2SKCXYLB.mjs → chunk-QQCCBMTH.mjs} +60 -6
  56. package/dist/chunk-QQCCBMTH.mjs.map +1 -0
  57. package/dist/chunk-RKUPOYQV.mjs +28 -0
  58. package/dist/chunk-RKUPOYQV.mjs.map +1 -0
  59. package/dist/{chunk-52BR7LTX.mjs → chunk-STSPSJUI.mjs} +3 -3
  60. package/dist/{chunk-EPDIF432.mjs → chunk-UOGX6UNO.mjs} +37 -17
  61. package/dist/chunk-UOGX6UNO.mjs.map +1 -0
  62. package/dist/{chunk-IZBX2TEU.mjs → chunk-VQG3QWWK.mjs} +2 -2
  63. package/dist/{chunk-35NPLKQJ.mjs → chunk-XWM2C267.mjs} +21 -105
  64. package/dist/chunk-XWM2C267.mjs.map +1 -0
  65. package/dist/{chunk-7ZVN3YZI.mjs → chunk-Z5ARESQG.mjs} +43 -1
  66. package/dist/chunk-Z5ARESQG.mjs.map +1 -0
  67. package/dist/client/lifecycle.cjs.map +1 -0
  68. package/dist/client/lifecycle.mjs +2 -2
  69. package/dist/{client-plugins-B6-07YmP.d.mts → client-plugins-BqtHoJ9C.d.mts} +91 -3
  70. package/dist/{client-plugins-By6MVUX-.d.ts → client-plugins-DYprkCKN.d.ts} +91 -3
  71. package/dist/client-plugins.cjs +1 -1
  72. package/dist/client-plugins.cjs.map +1 -0
  73. package/dist/client-plugins.d.mts +2 -2
  74. package/dist/client-plugins.d.ts +2 -2
  75. package/dist/client-plugins.mjs +2 -2
  76. package/dist/client.cjs +61 -16
  77. package/dist/client.cjs.map +1 -0
  78. package/dist/client.d.mts +5 -5
  79. package/dist/client.d.ts +5 -5
  80. package/dist/client.mjs +7 -7
  81. package/dist/config.cjs.map +1 -0
  82. package/dist/config.d.mts +2 -2
  83. package/dist/config.d.ts +2 -2
  84. package/dist/cron.cjs +48 -12
  85. package/dist/cron.cjs.map +1 -0
  86. package/dist/cron.mjs +2 -1
  87. package/dist/deferred.cjs.map +1 -0
  88. package/dist/deployment.cjs.map +1 -0
  89. package/dist/{devtools-XWZX6CCL.mjs → devtools-24N3U5IG.mjs} +9 -7
  90. package/dist/{devtools-XWZX6CCL.mjs.map → devtools-24N3U5IG.mjs.map} +1 -1
  91. package/dist/docs.cjs +7 -3
  92. package/dist/docs.cjs.map +1 -0
  93. package/dist/docs.mjs +9 -7
  94. package/dist/env-types.cjs.map +1 -0
  95. package/dist/env.cjs.map +1 -0
  96. package/dist/environment/vite.cjs.map +1 -0
  97. package/dist/environment.cjs.map +1 -0
  98. package/dist/font.cjs.map +1 -0
  99. package/dist/headers.cjs.map +1 -0
  100. package/dist/i18n/client.cjs.map +1 -0
  101. package/dist/i18n/index.cjs.map +1 -0
  102. package/dist/i18n/server.cjs.map +1 -0
  103. package/dist/image/server.cjs +99 -40
  104. package/dist/image/server.cjs.map +1 -0
  105. package/dist/image/server.d.mts +6 -0
  106. package/dist/image/server.d.ts +6 -0
  107. package/dist/image/server.mjs +1 -1
  108. package/dist/image/sharp.cjs +1 -0
  109. package/dist/image/sharp.cjs.map +1 -0
  110. package/dist/image/sharp.d.mts +1 -1
  111. package/dist/image/sharp.d.ts +1 -1
  112. package/dist/image/sharp.mjs +1 -1
  113. package/dist/image/sharp.mjs.map +1 -1
  114. package/dist/image.cjs.map +1 -0
  115. package/dist/index.cjs +943 -231
  116. package/dist/index.cjs.map +1 -0
  117. package/dist/index.d.mts +11 -11
  118. package/dist/index.d.ts +11 -11
  119. package/dist/index.mjs +38 -24
  120. package/dist/index.mjs.map +1 -1
  121. package/dist/instrumentation.cjs.map +1 -0
  122. package/dist/{integration-orm-LLW6WZNK.mjs → integration-orm-G5BPBT5X.mjs} +3 -3
  123. package/dist/integrations.cjs +168 -5
  124. package/dist/integrations.cjs.map +1 -0
  125. package/dist/integrations.d.mts +2 -2
  126. package/dist/integrations.d.ts +2 -2
  127. package/dist/integrations.mjs +10 -3
  128. package/dist/internal/build-runtime.cjs +745 -139
  129. package/dist/internal/build-runtime.cjs.map +1 -0
  130. package/dist/internal/build-runtime.d.mts +4 -4
  131. package/dist/internal/build-runtime.d.ts +4 -4
  132. package/dist/internal/build-runtime.mjs +16 -14
  133. package/dist/internal/client-runtime.cjs +7 -2
  134. package/dist/internal/client-runtime.cjs.map +1 -0
  135. package/dist/internal/client-runtime.mjs +8 -3
  136. package/dist/internal/client-runtime.mjs.map +1 -1
  137. package/dist/internal/config-runtime.cjs +59 -42
  138. package/dist/internal/config-runtime.cjs.map +1 -0
  139. package/dist/internal/config-runtime.d.mts +3 -3
  140. package/dist/internal/config-runtime.d.ts +3 -3
  141. package/dist/internal/config-runtime.mjs +8 -6
  142. package/dist/internal/isolated-boundary.cjs.map +1 -0
  143. package/dist/internal/metadata-image-runtime.cjs.map +1 -0
  144. package/dist/internal/product-telemetry-runtime.cjs +52 -5
  145. package/dist/internal/product-telemetry-runtime.cjs.map +1 -0
  146. package/dist/internal/product-telemetry-runtime.d.mts +12 -1
  147. package/dist/internal/product-telemetry-runtime.d.ts +12 -1
  148. package/dist/internal/product-telemetry-runtime.mjs +50 -5
  149. package/dist/internal/product-telemetry-runtime.mjs.map +1 -1
  150. package/dist/internal/production-node-env.cjs.map +1 -0
  151. package/dist/internal/production-runtime.cjs +56 -10
  152. package/dist/internal/production-runtime.cjs.map +1 -0
  153. package/dist/internal/production-runtime.d.mts +8 -8
  154. package/dist/internal/production-runtime.d.ts +8 -8
  155. package/dist/internal/production-runtime.mjs +2 -2
  156. package/dist/markdown.cjs.map +1 -0
  157. package/dist/{metadata-route-8_V3UonT.d.ts → metadata-route-D2be_0kC.d.ts} +17 -2
  158. package/dist/{metadata-route-CWP_HjGU.d.mts → metadata-route-Dw5CrDIZ.d.mts} +17 -2
  159. package/dist/middleware.cjs.map +1 -0
  160. package/dist/middleware.d.mts +4 -4
  161. package/dist/middleware.d.ts +4 -4
  162. package/dist/navigation.cjs.map +1 -0
  163. package/dist/{nitro-EGRNOB5P.mjs → nitro-YJEP3FWM.mjs} +4 -3
  164. package/dist/{nitro-EGRNOB5P.mjs.map → nitro-YJEP3FWM.mjs.map} +1 -1
  165. package/dist/observability.cjs.map +1 -0
  166. package/dist/plugin.cjs +599 -104
  167. package/dist/plugin.cjs.map +1 -0
  168. package/dist/plugin.d.mts +2 -2
  169. package/dist/plugin.d.ts +2 -2
  170. package/dist/plugin.mjs +13 -11
  171. package/dist/{production-runtime-CdmzsDax.d.ts → production-runtime-CTqpD1C8.d.ts} +2 -2
  172. package/dist/{production-runtime-BGRH1dKG.d.mts → production-runtime-HNqNZd4D.d.mts} +2 -2
  173. package/dist/query/client.cjs.map +1 -0
  174. package/dist/query/index.cjs.map +1 -0
  175. package/dist/query/parsers.cjs.map +1 -0
  176. package/dist/query/server.cjs.map +1 -0
  177. package/dist/{render-plan-DLxJYAA5.d.mts → render-plan-COscpW-i.d.mts} +1 -1
  178. package/dist/{render-plan-0GeHiGVZ.d.ts → render-plan-Z4kSxaT_.d.ts} +1 -1
  179. package/dist/renderer/react/client.cjs.map +1 -0
  180. package/dist/renderer/react/server.cjs.map +1 -0
  181. package/dist/renderer/react/vite.cjs.map +1 -0
  182. package/dist/renderer-client.cjs +26 -1
  183. package/dist/renderer-client.cjs.map +1 -0
  184. package/dist/renderer-client.d.mts +4 -4
  185. package/dist/renderer-client.d.ts +4 -4
  186. package/dist/renderer-client.mjs +2 -2
  187. package/dist/renderer.cjs.map +1 -0
  188. package/dist/{request-BstWbZ6O.d.ts → request-BEDb2jE9.d.ts} +1 -1
  189. package/dist/{request-BCNXSXLh.d.mts → request-CbIAqJY9.d.mts} +1 -1
  190. package/dist/request.cjs.map +1 -0
  191. package/dist/request.d.mts +3 -3
  192. package/dist/request.d.ts +3 -3
  193. package/dist/router.cjs.map +1 -0
  194. package/dist/routes.cjs.map +1 -0
  195. package/dist/routes.d.mts +2 -2
  196. package/dist/routes.d.ts +2 -2
  197. package/dist/server-action-security.cjs +117 -104
  198. package/dist/server-action-security.cjs.map +1 -0
  199. package/dist/server-action-security.mjs +2 -1
  200. package/dist/server-fn-client.cjs.map +1 -0
  201. package/dist/server-fn.cjs.map +1 -0
  202. package/dist/server-fn.mjs +3 -2
  203. package/dist/server-plugins.cjs.map +1 -0
  204. package/dist/server-plugins.d.mts +3 -3
  205. package/dist/server-plugins.d.ts +3 -3
  206. package/dist/server-query-client.cjs +26 -1
  207. package/dist/server-query-client.cjs.map +1 -0
  208. package/dist/server-query-client.mjs +3 -3
  209. package/dist/server-query.cjs.map +1 -0
  210. package/dist/server-query.mjs +4 -3
  211. package/dist/server.cjs +686 -170
  212. package/dist/server.cjs.map +1 -0
  213. package/dist/server.d.mts +8 -8
  214. package/dist/server.d.ts +8 -8
  215. package/dist/server.mjs +16 -14
  216. package/dist/server.mjs.map +1 -1
  217. package/dist/{spa-router-COgu4txb.d.ts → spa-router-CjeQites.d.ts} +1 -1
  218. package/dist/{spa-router-BeyAVSc6.d.mts → spa-router-FJbNou1a.d.mts} +1 -1
  219. package/dist/storage.cjs +7 -3
  220. package/dist/storage.cjs.map +1 -0
  221. package/dist/storage.mjs +1 -1
  222. package/dist/testing.cjs.map +1 -0
  223. package/dist/testing.d.mts +2 -2
  224. package/dist/testing.d.ts +2 -2
  225. package/dist/testing.mjs +2 -1
  226. package/dist/testing.mjs.map +1 -1
  227. package/dist/theme/client.cjs.map +1 -0
  228. package/dist/theme/index.cjs.map +1 -0
  229. package/dist/theme/runtime.cjs.map +1 -0
  230. package/dist/theme/server.cjs.map +1 -0
  231. package/dist/{utils-DL2VwDQl.d.mts → utils-BiMJv9Ys.d.mts} +1 -1
  232. package/dist/{utils-DkU2c_1B.d.ts → utils-BpnKRFv9.d.ts} +1 -1
  233. package/dist/version.cjs +1 -1
  234. package/dist/version.cjs.map +1 -0
  235. package/dist/version.mjs +1 -1
  236. package/dist/vite.cjs +599 -104
  237. package/dist/vite.cjs.map +1 -0
  238. package/dist/vite.d.mts +2 -2
  239. package/dist/vite.d.ts +2 -2
  240. package/dist/vite.mjs +13 -11
  241. package/dist/{workflows-ChyK_oTu.d.mts → workflows-BantWytQ.d.mts} +7 -0
  242. package/dist/{workflows-ChyK_oTu.d.ts → workflows-BantWytQ.d.ts} +7 -0
  243. package/dist/workflows.cjs +73 -5
  244. package/dist/workflows.cjs.map +1 -0
  245. package/dist/workflows.d.mts +1 -1
  246. package/dist/workflows.d.ts +1 -1
  247. package/dist/workflows.mjs +2 -1
  248. package/package.json +17 -17
  249. package/dist/chunk-2SKCXYLB.mjs.map +0 -1
  250. package/dist/chunk-35NPLKQJ.mjs.map +0 -1
  251. package/dist/chunk-7ZVN3YZI.mjs.map +0 -1
  252. package/dist/chunk-AAC66ILR.mjs.map +0 -1
  253. package/dist/chunk-BZAIS65C.mjs.map +0 -1
  254. package/dist/chunk-EPDIF432.mjs.map +0 -1
  255. package/dist/chunk-FP5Q67FO.mjs.map +0 -1
  256. package/dist/chunk-ISSFLGJ5.mjs.map +0 -1
  257. package/dist/chunk-KDP5ZSWP.mjs.map +0 -1
  258. package/dist/chunk-VMCHLH3Y.mjs.map +0 -1
  259. package/dist/chunk-WKDAA6V2.mjs.map +0 -1
  260. package/dist/chunk-X4SFHKFH.mjs.map +0 -1
  261. /package/dist/{chunk-WD2EBM3I.mjs.map → chunk-3CQJV3NC.mjs.map} +0 -0
  262. /package/dist/{chunk-I3OOUWO5.mjs.map → chunk-3GDRV7SG.mjs.map} +0 -0
  263. /package/dist/{chunk-YIBV77KZ.mjs.map → chunk-4WLAVHCY.mjs.map} +0 -0
  264. /package/dist/{chunk-FSIXEIOB.mjs.map → chunk-L7FSTPGS.mjs.map} +0 -0
  265. /package/dist/{chunk-GJ7W6LNK.mjs.map → chunk-N5RK4LK6.mjs.map} +0 -0
  266. /package/dist/{chunk-UMUWR5XA.mjs.map → chunk-PURU7FXR.mjs.map} +0 -0
  267. /package/dist/{chunk-52BR7LTX.mjs.map → chunk-STSPSJUI.mjs.map} +0 -0
  268. /package/dist/{chunk-IZBX2TEU.mjs.map → chunk-VQG3QWWK.mjs.map} +0 -0
  269. /package/dist/{integration-orm-LLW6WZNK.mjs.map → integration-orm-G5BPBT5X.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { FarmRouterRouteInput } from './router.mjs';
2
- import { F as FarmNavigationState, a as FarmNavigateOptions } from './spa-router-BeyAVSc6.mjs';
2
+ import { F as FarmNavigationState, a as FarmNavigateOptions } from './spa-router-FJbNou1a.mjs';
3
3
  import { F as FarmClientCacheStatus } from './client-cache-CCK-fCe0.mjs';
4
4
  import { ServerFn } from './server-fn.mjs';
5
5
  import { ServerQuery } from './server-query.mjs';
@@ -8,8 +8,8 @@ import { F as FarmThemeSnapshot, a as FarmThemePreference } from './types-DQnyD3
8
8
  import { F as FarmI18nClientSnapshot, a as FarmTranslator, b as FarmI18nLocale } from './types-CnH8DOqo.mjs';
9
9
  import './lifecycle-De0vQG45.mjs';
10
10
  import './island-CfGru1MO.mjs';
11
- import './render-plan-DLxJYAA5.mjs';
12
- import './client-plugins-B6-07YmP.mjs';
11
+ import './render-plan-COscpW-i.mjs';
12
+ import './client-plugins-BqtHoJ9C.mjs';
13
13
  import './route-CvEr4Uc9.mjs';
14
14
  import './cache.mjs';
15
15
  import './renderer.mjs';
@@ -26,7 +26,7 @@ import './markdown.mjs';
26
26
  import './observability.mjs';
27
27
  import '@opentelemetry/api';
28
28
  import 'vite';
29
- import './workflows-ChyK_oTu.mjs';
29
+ import './workflows-BantWytQ.mjs';
30
30
  import './cron.mjs';
31
31
  import './env.mjs';
32
32
  import './navigation-errors-Dvwpzaer.mjs';
@@ -1,5 +1,5 @@
1
1
  import { FarmRouterRouteInput } from './router.js';
2
- import { F as FarmNavigationState, a as FarmNavigateOptions } from './spa-router-COgu4txb.js';
2
+ import { F as FarmNavigationState, a as FarmNavigateOptions } from './spa-router-CjeQites.js';
3
3
  import { F as FarmClientCacheStatus } from './client-cache-BMxuFqwH.js';
4
4
  import { ServerFn } from './server-fn.js';
5
5
  import { ServerQuery } from './server-query.js';
@@ -8,8 +8,8 @@ import { F as FarmThemeSnapshot, a as FarmThemePreference } from './types-DQnyD3
8
8
  import { F as FarmI18nClientSnapshot, a as FarmTranslator, b as FarmI18nLocale } from './types-CnH8DOqo.js';
9
9
  import './lifecycle-De0vQG45.js';
10
10
  import './island-CfGru1MO.js';
11
- import './render-plan-0GeHiGVZ.js';
12
- import './client-plugins-By6MVUX-.js';
11
+ import './render-plan-Z4kSxaT_.js';
12
+ import './client-plugins-DYprkCKN.js';
13
13
  import './route-4pd-EVtw.js';
14
14
  import './cache.js';
15
15
  import './renderer.js';
@@ -26,7 +26,7 @@ import './markdown.js';
26
26
  import './observability.js';
27
27
  import '@opentelemetry/api';
28
28
  import 'vite';
29
- import './workflows-ChyK_oTu.js';
29
+ import './workflows-BantWytQ.js';
30
30
  import './cron.js';
31
31
  import './env.js';
32
32
  import './navigation-errors-Dvwpzaer.js';
@@ -3,7 +3,7 @@ import {
3
3
  attachRevalidationListeners,
4
4
  createServerQueryCallKey,
5
5
  fetchServerQuery
6
- } from "./chunk-WD2EBM3I.mjs";
6
+ } from "./chunk-3CQJV3NC.mjs";
7
7
  import {
8
8
  getTheme,
9
9
  setTheme,
@@ -26,7 +26,7 @@ import {
26
26
  import "./chunk-JIT7GXDP.mjs";
27
27
  import {
28
28
  getFarmClientDataCache
29
- } from "./chunk-WMJGA32P.mjs";
29
+ } from "./chunk-BXVOHG6B.mjs";
30
30
  import "./chunk-EHTUKVSW.mjs";
31
31
  import {
32
32
  createFarmLocaleCookie
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/renderer.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\n/**\n * A rendering-library integration used by Farm's compiler, server renderer,\n * and browser hydration runtime.\n *\n * Renderer descriptors intentionally contain module identifiers instead of\n * implementation functions. This keeps farm.config.ts serializable and lets\n * every module resolve from the application that selected the renderer.\n */\nexport interface FarmRenderer {\n /** Stable public identifier used in diagnostics and generated manifests. */\n name: string;\n /** Module exporting the renderer's Vite plugin factory. */\n vite: string;\n /** Module exporting Farm's server-renderer compatibility contract. */\n server: string;\n /** Module exporting Farm's browser-renderer compatibility contract. */\n client: string;\n /** JSX import source written to generated TypeScript configuration. */\n jsxImportSource?: string;\n /** Additional file extensions used for renderer-owned route components. */\n componentExtensions?: readonly string[];\n /** Packages that must share one module instance in a Farm application. */\n dedupe?: readonly string[];\n /** Renderer packages seeded into Vite's dependency optimizer. */\n optimizeDeps?: readonly string[];\n /**\n * Scheduling policy for the production client and SSR graphs.\n *\n * Most renderer plugins are safe to run in parallel. Renderers whose\n * compiler plugins keep process-global mutable state can opt into serial\n * builds so one graph cannot invalidate the other's transforms.\n */\n buildConcurrency?: \"parallel\" | \"serial\";\n /** Runtime features this renderer intentionally supports. */\n capabilities?: FarmRendererCapabilitiesInput;\n /**\n * Serializable options consumed by the renderer's Vite integration.\n *\n * Keeping renderer-owned configuration on the descriptor lets one rendering\n * library expose multiple compiler modes without teaching Farm's core about\n * each option.\n */\n options?: Readonly<Record<string, unknown>>;\n}\n\nexport interface FarmRendererStreamingCapabilities {\n /** Supports Node.js writable streams through renderToPipeableStream(). */\n node: boolean;\n /** Supports WHATWG ReadableStream output through renderToReadableStream(). */\n web: boolean;\n}\n\nexport interface FarmRendererCapabilities {\n streaming: FarmRendererStreamingCapabilities;\n}\n\nexport interface FarmRendererCapabilitiesInput {\n streaming?: Partial<FarmRendererStreamingCapabilities>;\n}\n\nconst DEFAULT_RENDERER_CAPABILITIES: Readonly<FarmRendererCapabilities> = Object.freeze({\n streaming: Object.freeze({ node: false, web: false }),\n});\n\nexport function getFarmRendererCapabilities(\n renderer?: Pick<FarmRenderer, \"capabilities\">,\n): FarmRendererCapabilities {\n return {\n streaming: {\n node: renderer?.capabilities?.streaming?.node ?? DEFAULT_RENDERER_CAPABILITIES.streaming.node,\n web: renderer?.capabilities?.streaming?.web ?? DEFAULT_RENDERER_CAPABILITIES.streaming.web,\n },\n };\n}\n\nexport const FARM_COMPONENT_EXTENSIONS = [\".ts\", \".tsx\", \".js\", \".jsx\"] as const;\n\nexport function resolveFarmComponentExtensions(extensions: readonly string[] = []): string[] {\n return Array.from(\n new Set(\n [...FARM_COMPONENT_EXTENSIONS, ...extensions].map((extension) => {\n const normalized = extension.trim().toLowerCase();\n return normalized.startsWith(\".\") ? normalized : `.${normalized}`;\n }),\n ),\n ).filter((extension) => extension.length > 1);\n}\n\nexport function getFarmRendererComponentExtensions(\n renderer?: Pick<FarmRenderer, \"componentExtensions\">,\n): string[] {\n return resolveFarmComponentExtensions(renderer?.componentExtensions);\n}\n\nexport interface FarmRendererViteModule {\n createFarmRendererPlugin(options?: {\n ssr?: boolean;\n rendererOptions?: Readonly<Record<string, unknown>>;\n }): unknown | readonly unknown[] | Promise<unknown | readonly unknown[]>;\n}\n\nexport interface FarmServerRendererRuntime {\n readonly name: string;\n readonly Fragment: unknown;\n readonly Suspense: unknown;\n createElement(type: unknown, props?: unknown, ...children: unknown[]): unknown;\n isValidElement(value: unknown): boolean;\n /** Wraps a route-owned client tree so compiled leaf boundaries stay inside that React root. */\n wrapClientGraph?(element: unknown): unknown;\n renderToString(element: unknown): string | Promise<string>;\n /**\n * Optional variant for renderers whose components emit document-head markup\n * during render (e.g. <svelte:head>). `html` is the body markup exactly as\n * renderToString would produce it; `head` is injected into the assembled\n * document's <head>.\n */\n renderToStringWithHead?(\n element: unknown,\n ): { html: string; head: string } | Promise<{ html: string; head: string }>;\n /** Optional runtime copy of the descriptor capabilities for diagnostics. */\n readonly capabilities?: FarmRendererCapabilities;\n /** Optional bootstrap required before this renderer hydrates server markup. */\n generateHydrationScript?: () => string;\n /** Optional component used to render route-level failures. */\n ErrorBoundary?: unknown;\n /** Optional streaming primitive. Renderers without one use buffered SSR. */\n renderToPipeableStream?: (\n element: unknown,\n callbacks: {\n onShellReady(): void;\n onShellError(error: unknown): void;\n onError(error: unknown): void;\n },\n ) => { pipe(destination: NodeJS.WritableStream): void };\n /** WHATWG streaming primitive used by Web-stream-capable renderers. */\n renderToReadableStream?: (\n element: unknown,\n ) => ReadableStream<Uint8Array | string> | Promise<ReadableStream<Uint8Array | string>>;\n}\n\nexport const REACT_RENDERER: Readonly<FarmRenderer> = Object.freeze({\n name: \"react\",\n vite: \"@farm.js/core/renderer/react/vite\",\n server: \"@farm.js/core/renderer/react/server\",\n client: \"@farm.js/core/renderer/react/client\",\n jsxImportSource: \"react\",\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n optimizeDeps: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n ],\n capabilities: {\n streaming: { node: true, web: false },\n },\n});\n\nexport function defineRenderer<const TRenderer extends FarmRenderer>(\n renderer: TRenderer,\n): TRenderer {\n return renderer;\n}\n\nexport function resolveFarmRenderer(renderer?: FarmRenderer): FarmRenderer {\n const resolved = renderer || REACT_RENDERER;\n const fields = [\"name\", \"vite\", \"server\", \"client\"] as const;\n\n for (const field of fields) {\n if (typeof resolved[field] !== \"string\" || resolved[field].trim().length === 0) {\n throw new TypeError(`Farm renderer \\`${field}\\` must be a non-empty string.`);\n }\n }\n\n return {\n ...resolved,\n componentExtensions: [...(resolved.componentExtensions || [])],\n dedupe: [...(resolved.dedupe || [])],\n optimizeDeps: [...(resolved.optimizeDeps || [])],\n buildConcurrency: resolved.buildConcurrency || \"parallel\",\n capabilities: getFarmRendererCapabilities(resolved),\n options: resolved.options ? { ...resolved.options } : undefined,\n };\n}\n\nexport async function readFarmRendererWebStream(\n stream: ReadableStream<Uint8Array | string>,\n): Promise<string> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let html = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n html += typeof value === \"string\" ? value : decoder.decode(value, { stream: true });\n }\n\n return html + decoder.decode();\n}\n\nexport function isReactRenderer(renderer: Pick<FarmRenderer, \"name\"> | undefined): boolean {\n return !renderer || renderer.name === \"react\";\n}\n\n/** Resolve an optional renderer module from the application's dependency graph. */\nexport function resolveFarmRendererModule(root: string, specifier: string): string {\n const requireFromApp = createRequire(path.join(path.resolve(root), \"package.json\"));\n return requireFromApp.resolve(specifier);\n}\n\nexport async function loadFarmRendererVitePlugins(\n renderer: FarmRenderer,\n root: string,\n options: { ssr?: boolean } = {},\n): Promise<unknown[]> {\n // React uses Vite's default automatic JSX transform today. Keep the legacy\n // path dependency-free and avoid resolving Farm's own built package while\n // running directly from source in the monorepo.\n if (renderer.vite === REACT_RENDERER.vite) return [];\n\n const modulePath = resolveFarmRendererModule(root, renderer.vite);\n const rendererModule = (await import(pathToFileURL(modulePath).href)) as FarmRendererViteModule;\n\n if (typeof rendererModule.createFarmRendererPlugin !== \"function\") {\n throw new Error(\n `Renderer \\`${renderer.name}\\` module ${renderer.vite} must export createFarmRendererPlugin().`,\n );\n }\n\n const created = await rendererModule.createFarmRendererPlugin({\n ...options,\n rendererOptions: renderer.options,\n });\n if (!created) return [];\n return Array.isArray(created) ? [...created] : [created];\n}\n"],"mappings":"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","names":["path"]}
@@ -1,4 +1,4 @@
1
- import './client-plugins-By6MVUX-.js';
1
+ import './client-plugins-DYprkCKN.js';
2
2
 
3
3
  declare function _runWithCurrentRequest<T>(request: Request, fn: () => Promise<T> | T): Promise<T>;
4
4
  declare function getCurrentRequest(): Request;
@@ -1,4 +1,4 @@
1
- import './client-plugins-B6-07YmP.mjs';
1
+ import './client-plugins-BqtHoJ9C.mjs';
2
2
 
3
3
  declare function _runWithCurrentRequest<T>(request: Request, fn: () => Promise<T> | T): Promise<T>;
4
4
  declare function getCurrentRequest(): Request;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/request.ts","../src/server/request.ts","../src/server/request-bridge.ts"],"sourcesContent":["export { getCurrentRequest } from \"./server/request\";\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Readable } from \"node:stream\";\nimport type { FarmRequest } from \"../types\";\nimport { _setCurrentRequestResolver } from \"./request-bridge\";\n\nconst REQUEST_STORAGE_KEY = Symbol.for(\"@farm.js/core/request-storage\");\n\nfunction getRequestStore(): AsyncLocalStorage<Request> {\n const runtime = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n const existing = runtime[REQUEST_STORAGE_KEY];\n if (existing instanceof AsyncLocalStorage) {\n return existing as AsyncLocalStorage<Request>;\n }\n\n const storage = new AsyncLocalStorage<Request>();\n runtime[REQUEST_STORAGE_KEY] = storage;\n return storage;\n}\n\nconst requestStore = getRequestStore();\n\n_setCurrentRequestResolver(() => requestStore.getStore());\n\nexport interface FarmRequestURLOptions {\n origin?: string | URL;\n trustProxy?: boolean;\n}\n\nexport function resolveFarmRequestURL(req: FarmRequest, options: FarmRequestURLOptions = {}): URL {\n if (options.origin) {\n return new URL(req.url || \"/\", options.origin);\n }\n\n const forwardedHost = options.trustProxy\n ? firstForwardedHeaderValue(req.headers[\"x-forwarded-host\"])\n : undefined;\n const fallbackHost = firstForwardedHeaderValue(req.headers.host) || \"localhost\";\n const forwardedProto = options.trustProxy\n ? firstForwardedHeaderValue(req.headers[\"x-forwarded-proto\"])\n : undefined;\n const normalizedProto = forwardedProto?.toLowerCase();\n const proto =\n normalizedProto === \"https\" || normalizedProto === \"http\"\n ? normalizedProto\n : isEncryptedFarmRequest(req)\n ? \"https\"\n : \"http\";\n return new URL(req.url || \"/\", resolveRequestOrigin(proto, forwardedHost, fallbackHost));\n}\n\nexport function createWebRequestFromFarmRequest(\n req: FarmRequest,\n options: FarmRequestURLOptions = {},\n): Request {\n const fullUrl = resolveFarmRequestURL(req, options).toString();\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n headers.append(key, item);\n }\n continue;\n }\n\n headers.set(key, value);\n }\n\n const method = (req.method || \"GET\").toUpperCase();\n const init: RequestInit & { duplex?: \"half\" } = {\n method: req.method,\n headers,\n };\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n init.body = Readable.toWeb(req) as ReadableStream<Uint8Array>;\n init.duplex = \"half\";\n }\n\n return new Request(fullUrl, init);\n}\n\nfunction isEncryptedFarmRequest(req: FarmRequest): boolean {\n return Boolean((req.socket as { encrypted?: boolean } | undefined)?.encrypted);\n}\n\nfunction firstForwardedHeaderValue(value: string | string[] | undefined): string | undefined {\n const first = Array.isArray(value) ? value[0] : value;\n const token = first?.split(\",\", 1)[0]?.trim();\n return token || undefined;\n}\n\nfunction resolveRequestOrigin(proto: \"http\" | \"https\", host: string | undefined, fallback: string) {\n for (const candidate of [host, fallback, \"localhost\"]) {\n if (!candidate) continue;\n if (/[\\s/?#@\\\\]/u.test(candidate)) continue;\n try {\n const url = new URL(`${proto}://${candidate}`);\n if (url.username || url.password || url.pathname !== \"/\" || url.search || url.hash) continue;\n return url.origin;\n } catch {\n // Try the next host instead of turning an untrusted proxy header into a 500.\n }\n }\n return `${proto}://localhost`;\n}\n\nexport async function _runWithCurrentRequest<T>(\n request: Request,\n fn: () => Promise<T> | T,\n): Promise<T> {\n return requestStore.run(request, fn);\n}\n\nexport function getCurrentRequest(): Request {\n const request = requestStore.getStore();\n if (!request) {\n throw new Error(\n \"No current request is available. getCurrentRequest() can only be used during server rendering.\",\n );\n }\n\n return request;\n}\n\n// Some runtimes (StackBlitz WebContainers among them) lose AsyncLocalStorage\n// context across async boundaries mid-render. Callers whose feature can\n// degrade gracefully should use this instead of getCurrentRequest() so a\n// missing store never turns into a 500.\nexport function getCurrentRequestOrNull(): Request | null {\n return requestStore.getStore() ?? null;\n}\n","type CurrentRequestResolver = () => Request | undefined;\n\nconst CURRENT_REQUEST_RESOLVER_KEY = Symbol.for(\"farm.currentRequestResolver\");\n\ntype GlobalWithCurrentRequestResolver = typeof globalThis & {\n [CURRENT_REQUEST_RESOLVER_KEY]?: CurrentRequestResolver;\n};\n\nfunction getGlobalState(): GlobalWithCurrentRequestResolver {\n return globalThis as GlobalWithCurrentRequestResolver;\n}\n\nexport function _setCurrentRequestResolver(resolver: CurrentRequestResolver | undefined): void {\n getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY] = resolver;\n}\n\nexport function _resolveCurrentRequest(): Request | undefined {\n return getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY]?.();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,8BAAkC;AAClC,yBAAyB;;;ACCzB,IAAM,+BAA+B,uBAAO,IAAI,6BAA6B;AAM7E,SAAS,iBAAmD;AAC1D,SAAO;AACT;AAFS;AAIF,SAAS,2BAA2B,UAAoD;AAC7F,iBAAe,EAAE,4BAA4B,IAAI;AACnD;AAFgB;;;ADPhB,IAAM,sBAAsB,uBAAO,IAAI,+BAA+B;AAEtE,SAAS,kBAA8C;AACrD,QAAM,UAAU;AAChB,QAAM,WAAW,QAAQ,mBAAmB;AAC5C,MAAI,oBAAoB,2CAAmB;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,IAAI,0CAA2B;AAC/C,UAAQ,mBAAmB,IAAI;AAC/B,SAAO;AACT;AAVS;AAYT,IAAM,eAAe,gBAAgB;AAErC,2BAA2B,MAAM,aAAa,SAAS,CAAC;AAiGjD,SAAS,oBAA6B;AAC3C,QAAM,UAAU,aAAa,SAAS;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AATgB;","names":[]}
@@ -1,5 +1,5 @@
1
- export { g as getCurrentRequest } from './request-BCNXSXLh.mjs';
2
- import './client-plugins-B6-07YmP.mjs';
1
+ export { g as getCurrentRequest } from './request-CbIAqJY9.mjs';
2
+ import './client-plugins-BqtHoJ9C.mjs';
3
3
  import './lifecycle-De0vQG45.mjs';
4
4
  import './route-CvEr4Uc9.mjs';
5
5
  import './cache.mjs';
@@ -17,7 +17,7 @@ import './markdown.mjs';
17
17
  import './observability.mjs';
18
18
  import '@opentelemetry/api';
19
19
  import 'vite';
20
- import './workflows-ChyK_oTu.mjs';
20
+ import './workflows-BantWytQ.mjs';
21
21
  import './cron.mjs';
22
22
  import './env.mjs';
23
23
  import './navigation-errors-Dvwpzaer.mjs';
package/dist/request.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { g as getCurrentRequest } from './request-BstWbZ6O.js';
2
- import './client-plugins-By6MVUX-.js';
1
+ export { g as getCurrentRequest } from './request-BEDb2jE9.js';
2
+ import './client-plugins-DYprkCKN.js';
3
3
  import './lifecycle-De0vQG45.js';
4
4
  import './route-4pd-EVtw.js';
5
5
  import './cache.js';
@@ -17,7 +17,7 @@ import './markdown.js';
17
17
  import './observability.js';
18
18
  import '@opentelemetry/api';
19
19
  import 'vite';
20
- import './workflows-ChyK_oTu.js';
20
+ import './workflows-BantWytQ.js';
21
21
  import './cron.js';
22
22
  import './env.js';
23
23
  import './navigation-errors-Dvwpzaer.js';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/router.ts","../src/routing/specificity.ts"],"sourcesContent":["import {\n AmbiguousRouteError,\n assertTerminalCatchAll,\n assertUniqueRouteParameters,\n compareRouteSpecificity,\n getRoutePatternShape,\n type RouteSegmentSpecificity,\n} from \"./routing/specificity\";\n\nexport type FarmRouterPrimitiveParam = string | number | boolean;\nexport type FarmRouterPathParam =\n | FarmRouterPrimitiveParam\n | readonly FarmRouterPrimitiveParam[]\n | null\n | undefined;\nexport type FarmRouterPathParams = Record<string, FarmRouterPathParam>;\nexport type FarmRouterParams = Record<string, string>;\n\nexport interface FarmRouterRoute<TMeta = unknown> {\n path: string;\n name?: string;\n meta?: TMeta;\n}\n\nexport type FarmRouterRouteInput<TMeta = unknown> = string | FarmRouterRoute<TMeta>;\n\nexport interface FarmRouterMatch<TMeta = unknown> {\n route: FarmRouterRoute<TMeta>;\n pathname: string;\n params: FarmRouterParams;\n}\n\nexport type FarmRouterQueryValue =\n | FarmRouterPrimitiveParam\n | readonly FarmRouterPrimitiveParam[]\n | null\n | undefined;\n\nexport interface FarmRouterBuildOptions {\n query?: URLSearchParams | Record<string, FarmRouterQueryValue>;\n hash?: string;\n trailingSlash?: boolean;\n}\n\nexport interface FarmRouterActiveOptions {\n exact?: boolean;\n}\n\nexport interface FarmRouter<TMeta = unknown> {\n routes: FarmRouterRoute<TMeta>[];\n match(pathname: string): FarmRouterMatch<TMeta> | null;\n build(pattern: string, params?: FarmRouterPathParams, options?: FarmRouterBuildOptions): string;\n isActive(pattern: string, pathname: string, options?: FarmRouterActiveOptions): boolean;\n}\n\ntype RouterSegment =\n | {\n type: \"static\";\n value: string;\n }\n | {\n type: \"dynamic\";\n name: string;\n catchAll: boolean;\n optional: boolean;\n };\n\ninterface NormalizedRouterRoute<TMeta> {\n route: FarmRouterRoute<TMeta>;\n segments: RouterSegment[];\n specificity: RouteSegmentSpecificity[];\n index: number;\n}\n\nexport function createFarmRouter<TMeta = unknown>(\n routes: FarmRouterRouteInput<TMeta>[],\n): FarmRouter<TMeta> {\n const normalizedRoutes = routes.map(normalizeRouteInput);\n const patternsByShape = new Map<string, string>();\n for (const entry of normalizedRoutes) {\n const shape = getRoutePatternShape(entry.route.path, \"router\");\n const existingPattern = patternsByShape.get(shape);\n if (existingPattern) {\n throw new AmbiguousRouteError(\n `Ambiguous route patterns \"${existingPattern}\" and \"${entry.route.path}\" match the same URLs. Keep only one route for this URL shape.`,\n );\n }\n patternsByShape.set(shape, entry.route.path);\n }\n normalizedRoutes.sort(compareRoutes);\n\n return {\n routes: normalizedRoutes.map((entry) => entry.route),\n match(pathname) {\n const normalizedPathname = normalizePathname(pathname);\n\n for (const entry of normalizedRoutes) {\n const params = matchSegments(entry.segments, normalizedPathname);\n if (params) {\n return {\n route: entry.route,\n pathname: normalizedPathname,\n params,\n };\n }\n }\n\n return null;\n },\n build: buildFarmRoutePath,\n isActive: isFarmRouteActive,\n };\n}\n\nexport function matchFarmRoute(pattern: string, pathname: string): FarmRouterParams | null {\n return matchSegments(parseRoutePattern(pattern), normalizePathname(pathname));\n}\n\nexport function buildFarmRoutePath(\n pattern: string,\n params: FarmRouterPathParams = {},\n options: FarmRouterBuildOptions = {},\n): string {\n const parts: string[] = [];\n\n for (const segment of parseRoutePattern(pattern)) {\n if (segment.type === \"static\") {\n parts.push(encodePathSegment(segment.value));\n continue;\n }\n\n const value = params[segment.name];\n const values = Array.isArray(value) ? value : value == null ? [] : [value];\n\n if (values.length === 0) {\n if (segment.optional) continue;\n throw new Error(`Missing route param \"${segment.name}\" for ${pattern}.`);\n }\n\n if (!segment.catchAll && values.length > 1) {\n throw new Error(`Route param \"${segment.name}\" for ${pattern} expects a single value.`);\n }\n\n const encodedValues = values.map((item) => {\n const value = String(item);\n if (!value) {\n throw new Error(\n `Route param \"${segment.name}\" for ${pattern} cannot contain an empty path segment.`,\n );\n }\n return encodePathSegment(value);\n });\n parts.push(...encodedValues);\n }\n\n let pathname = parts.length ? `/${parts.join(\"/\")}` : \"/\";\n\n if (options.trailingSlash && pathname !== \"/\") {\n pathname = `${pathname}/`;\n }\n\n return appendQueryAndHash(pathname, options);\n}\n\nexport function isFarmRouteActive(\n pattern: string,\n pathname: string,\n options: FarmRouterActiveOptions = {},\n): boolean {\n const normalizedPathname = normalizePathname(pathname);\n if (matchFarmRoute(pattern, normalizedPathname)) return true;\n if (options.exact !== false) return false;\n\n const segments = parseRoutePattern(pattern);\n if (segments.length === 0) return normalizedPathname === \"/\";\n return matchSegments(segments, normalizedPathname, true) !== null;\n}\n\nfunction normalizeRouteInput<TMeta>(\n input: FarmRouterRouteInput<TMeta>,\n index: number,\n): NormalizedRouterRoute<TMeta> {\n const route = typeof input === \"string\" ? { path: input } : input;\n const path = normalizePathname(route.path);\n const segments = parseRoutePattern(path);\n\n return {\n route: {\n ...route,\n path,\n },\n segments,\n specificity: segments.map(getRouterSegmentSpecificity),\n index,\n };\n}\n\nfunction parseRoutePattern(pattern: string): RouterSegment[] {\n assertTerminalCatchAll(pattern, \"router\");\n assertUniqueRouteParameters(pattern, \"router\");\n return splitPathname(pattern)\n .filter((part) => !isRouteGroup(part))\n .map((part) => {\n const optionalCatchAll = part.match(/^\\[\\[\\.\\.\\.([A-Za-z0-9_$-]+)\\]\\]$/);\n if (optionalCatchAll) {\n return {\n type: \"dynamic\",\n name: optionalCatchAll[1],\n catchAll: true,\n optional: true,\n };\n }\n\n const catchAll = part.match(/^\\[\\.\\.\\.([A-Za-z0-9_$-]+)\\]$/);\n if (catchAll) {\n return {\n type: \"dynamic\",\n name: catchAll[1],\n catchAll: true,\n optional: false,\n };\n }\n\n const dynamic = part.match(/^\\[([A-Za-z0-9_$-]+)\\]$/) || part.match(/^:([A-Za-z0-9_$-]+)$/);\n if (dynamic) {\n return {\n type: \"dynamic\",\n name: dynamic[1],\n catchAll: false,\n optional: false,\n };\n }\n\n const star = part.match(/^\\*([A-Za-z0-9_$-]+)(\\?)?$/);\n if (star) {\n return {\n type: \"dynamic\",\n name: star[1],\n catchAll: true,\n optional: !!star[2],\n };\n }\n\n return {\n type: \"static\",\n value: decodePathSegment(part),\n };\n });\n}\n\nfunction matchSegments(\n segments: RouterSegment[],\n pathname: string,\n allowTrailingSegments = false,\n): FarmRouterParams | null {\n const parts = splitPathname(pathname);\n const params: FarmRouterParams = {};\n\n if (segments.length === 0) {\n return parts.length === 0 ? params : null;\n }\n\n let pathIndex = 0;\n\n for (const segment of segments) {\n if (segment.type === \"static\") {\n if (decodePathSegment(parts[pathIndex] || \"\") !== segment.value) return null;\n pathIndex++;\n continue;\n }\n\n if (segment.catchAll) {\n const remaining = parts.slice(pathIndex).map(decodePathSegment);\n if (remaining.length === 0 && !segment.optional) return null;\n params[segment.name] = remaining.join(\"/\");\n pathIndex = parts.length;\n continue;\n }\n\n const value = parts[pathIndex];\n if (!value) return null;\n params[segment.name] = decodePathSegment(value);\n pathIndex++;\n }\n\n return allowTrailingSegments || pathIndex === parts.length ? params : null;\n}\n\nfunction compareRoutes<TMeta>(\n left: NormalizedRouterRoute<TMeta>,\n right: NormalizedRouterRoute<TMeta>,\n) {\n const specificity = compareRouteSpecificity(left.specificity, right.specificity);\n if (specificity !== 0) return specificity;\n return left.index - right.index;\n}\n\nfunction getRouterSegmentSpecificity(segment: RouterSegment): RouteSegmentSpecificity {\n if (segment.type === \"static\") return \"static\";\n if (!segment.catchAll) return \"dynamic\";\n return segment.optional ? \"optional-catch-all\" : \"catch-all\";\n}\n\nfunction normalizePathname(value: string) {\n const raw = value || \"/\";\n let pathname = raw;\n\n try {\n pathname = new URL(raw, \"http://farm.local\").pathname;\n } catch {\n pathname = raw.split(/[?#]/, 1)[0] || \"/\";\n }\n\n pathname = pathname.replace(/\\\\/g, \"/\").replace(/\\/+/g, \"/\");\n if (!pathname.startsWith(\"/\")) pathname = `/${pathname}`;\n if (pathname.length > 1) pathname = pathname.replace(/\\/+$/, \"\");\n return pathname || \"/\";\n}\n\nfunction splitPathname(pathname: string) {\n return normalizePathname(pathname).split(\"/\").filter(Boolean);\n}\n\nfunction isRouteGroup(part: string) {\n return part.startsWith(\"(\") && part.endsWith(\")\");\n}\n\nfunction decodePathSegment(value: string) {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction encodePathSegment(value: string) {\n return encodeURIComponent(value);\n}\n\nfunction appendQueryAndHash(pathname: string, options: FarmRouterBuildOptions) {\n const search = createSearchParams(options.query);\n const hash = options.hash ? `#${options.hash.replace(/^#/, \"\")}` : \"\";\n const query = search.toString();\n return `${pathname}${query ? `?${query}` : \"\"}${hash}`;\n}\n\nfunction createSearchParams(query: FarmRouterBuildOptions[\"query\"]) {\n if (query instanceof URLSearchParams) return query;\n\n const search = new URLSearchParams();\n if (!query) return search;\n\n for (const [key, value] of Object.entries(query)) {\n const values = Array.isArray(value) ? value : [value];\n for (const item of values) {\n if (item == null) continue;\n search.append(key, String(item));\n }\n }\n\n return search;\n}\n","export type RouteSegmentSpecificity = \"static\" | \"dynamic\" | \"catch-all\" | \"optional-catch-all\";\n\nexport class AmbiguousRouteError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AmbiguousRouteError\";\n }\n}\n\nexport class NonTerminalCatchAllRouteError extends TypeError {\n constructor(message: string) {\n super(message);\n this.name = \"NonTerminalCatchAllRouteError\";\n }\n}\n\nexport class DuplicateRouteParameterError extends AmbiguousRouteError {\n constructor(message: string) {\n super(message);\n this.name = \"DuplicateRouteParameterError\";\n }\n}\n\nexport class ReservedRouteParameterError extends AmbiguousRouteError {\n constructor(message: string) {\n super(message);\n this.name = \"ReservedRouteParameterError\";\n }\n}\n\nexport class BrowserUnstableRouteError extends TypeError {\n constructor(message: string) {\n super(message);\n this.name = \"BrowserUnstableRouteError\";\n }\n}\n\nconst SEGMENT_RANK: Record<RouteSegmentSpecificity, number> = {\n static: 4,\n dynamic: 3,\n \"catch-all\": 1,\n \"optional-catch-all\": 0,\n};\n\n// Ending a route is more specific than consuming the same path through a\n// catch-all, while a following static or dynamic segment remains more specific.\nconst ROUTE_END_RANK = 2;\n\n/** Sort route patterns from the most specific segment sequence to the least specific. */\nexport function compareRouteSpecificity(\n left: readonly RouteSegmentSpecificity[],\n right: readonly RouteSegmentSpecificity[],\n): number {\n const length = Math.max(left.length, right.length);\n\n for (let index = 0; index < length; index++) {\n const leftRank = index < left.length ? SEGMENT_RANK[left[index]!] : ROUTE_END_RANK;\n const rightRank = index < right.length ? SEGMENT_RANK[right[index]!] : ROUTE_END_RANK;\n if (leftRank !== rightRank) return rightRank - leftRank;\n }\n\n return 0;\n}\n\nexport type RoutePatternSyntax = \"page\" | \"router\" | \"api\";\n\nconst ROUTER_PARAMETER_NAME = \"[A-Za-z0-9_$-]+\";\nconst PAGE_PARAMETER_PATTERN = /^(?:\\[\\[\\.\\.\\.(.+)\\]\\]|\\[\\.\\.\\.(.+)\\]|\\[(.+)\\])$/;\nconst ROUTER_PARAMETER_PATTERN =\n /^(?:\\[\\[\\.\\.\\.([A-Za-z0-9_$-]+)\\]\\]|\\[\\.\\.\\.([A-Za-z0-9_$-]+)\\]|\\[([A-Za-z0-9_$-]+)\\]|:([A-Za-z0-9_$-]+)|\\*([A-Za-z0-9_$-]+)\\??)$/;\nconst RESERVED_PARAMETER_NAMES = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\nexport function assertBrowserStableRoutePath(pattern: string): void {\n if (pattern.includes(\"\\\\\") || hasControlCharacter(pattern)) {\n throw new BrowserUnstableRouteError(\n `Route path \"${pattern}\" cannot contain backslashes or control characters.`,\n );\n }\n\n for (const segment of pattern.split(\"/\").filter(Boolean)) {\n if (\n (segment.startsWith(\"(\") && segment.endsWith(\")\")) ||\n (segment.startsWith(\"[\") && segment.endsWith(\"]\"))\n ) {\n continue;\n }\n\n let decoded = segment;\n try {\n decoded = decodeURIComponent(segment);\n } catch {\n // Malformed escapes stay literal in browser pathnames.\n }\n if (\n decoded === \".\" ||\n decoded === \"..\" ||\n decoded.includes(\"/\") ||\n decoded.includes(\"\\\\\") ||\n hasControlCharacter(decoded)\n ) {\n throw new BrowserUnstableRouteError(\n `Route path \"${pattern}\" contains browser-unstable segment \"${segment}\".`,\n );\n }\n }\n}\n\nfunction hasControlCharacter(value: string): boolean {\n return Array.from(value).some((character) => {\n const code = character.charCodeAt(0);\n return code <= 31 || (code >= 127 && code <= 159);\n });\n}\n\nexport function assertUniqueRouteParameters(\n pattern: string,\n syntax: RoutePatternSyntax = \"page\",\n): void {\n const parameterPattern = syntax === \"router\" ? ROUTER_PARAMETER_PATTERN : PAGE_PARAMETER_PATTERN;\n const names = new Set<string>();\n\n for (const segment of splitRoutePattern(pattern, syntax)) {\n const match = parameterPattern.exec(segment);\n const name = match?.slice(1).find(Boolean);\n if (!name) continue;\n if (RESERVED_PARAMETER_NAMES.has(name)) {\n throw new ReservedRouteParameterError(\n `Route parameter \"${name}\" in route \"${pattern}\" is reserved. Use a different parameter name.`,\n );\n }\n if (names.has(name)) {\n throw new DuplicateRouteParameterError(\n `Duplicate route parameter \"${name}\" in route \"${pattern}\". Each dynamic segment must use a unique name.`,\n );\n }\n names.add(name);\n }\n}\n\nfunction splitRoutePattern(pattern: string, syntax: RoutePatternSyntax): string[] {\n return pattern\n .replace(/\\\\/g, \"/\")\n .split(\"/\")\n .filter(Boolean)\n .filter((segment) =>\n syntax === \"api\" ? true : !(segment.startsWith(\"(\") && segment.endsWith(\")\")),\n );\n}\n\nexport function assertTerminalCatchAll(pattern: string, syntax: RoutePatternSyntax = \"page\"): void {\n const segments = splitRoutePattern(pattern, syntax);\n const parameterName = syntax === \"router\" ? ROUTER_PARAMETER_NAME : \".+\";\n const catchAllPattern = new RegExp(\n syntax === \"router\"\n ? `^(?:\\\\[\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\]\\\\]|\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\]|\\\\*${parameterName}\\\\??)$`\n : `^(?:\\\\[\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\]\\\\]|\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\])$`,\n );\n const catchAllIndex = segments.findIndex((segment) => catchAllPattern.test(segment));\n if (catchAllIndex >= 0 && catchAllIndex !== segments.length - 1) {\n throw new NonTerminalCatchAllRouteError(\n `Catch-all segment \"${segments[catchAllIndex]}\" must be the final segment in route \"${pattern}\".`,\n );\n }\n}\n\n/** Return the URL-matching shape of a route without its parameter names. */\nexport function getRoutePatternShape(pattern: string, syntax: RoutePatternSyntax = \"page\"): string {\n assertTerminalCatchAll(pattern, syntax);\n const segments = splitRoutePattern(pattern, syntax).map((segment) => {\n const specificity = getPatternSegmentSpecificity(segment, syntax);\n if (specificity !== \"static\") return specificity;\n\n try {\n return `static:${decodeURIComponent(segment)}`;\n } catch {\n return `static:${segment}`;\n }\n });\n\n return segments.length === 0 ? \"/\" : JSON.stringify(segments);\n}\n\n/** Return the specificity of every URL-consuming segment in a route pattern. */\nexport function getRoutePatternSpecificity(\n pattern: string,\n syntax: RoutePatternSyntax = \"page\",\n): RouteSegmentSpecificity[] {\n assertTerminalCatchAll(pattern, syntax);\n return splitRoutePattern(pattern, syntax).map((segment) =>\n getPatternSegmentSpecificity(segment, syntax),\n );\n}\n\nfunction getPatternSegmentSpecificity(\n segment: string,\n syntax: RoutePatternSyntax,\n): RouteSegmentSpecificity {\n const parameterName = syntax === \"router\" ? ROUTER_PARAMETER_NAME : \".+\";\n const supportsColonAndStar = syntax === \"router\";\n if (\n new RegExp(`^\\\\[\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\]\\\\]$`).test(segment) ||\n (supportsColonAndStar && new RegExp(`^\\\\*${parameterName}\\\\?$`).test(segment))\n ) {\n return \"optional-catch-all\";\n }\n if (\n new RegExp(`^\\\\[\\\\.\\\\.\\\\.${parameterName}\\\\]$`).test(segment) ||\n (supportsColonAndStar && new RegExp(`^\\\\*${parameterName}$`).test(segment))\n ) {\n return \"catch-all\";\n }\n if (\n new RegExp(`^\\\\[${parameterName}\\\\]$`).test(segment) ||\n (supportsColonAndStar && new RegExp(`^:${parameterName}$`).test(segment))\n ) {\n return \"dynamic\";\n }\n\n return \"static\";\n}\n"],"mappings":"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","names":["value"]}