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

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 (248) 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-CJKz2mbi.d.ts} +4 -4
  18. package/dist/{app-DBd6437H.d.mts → app-DMEGFLR2.d.mts} +4 -4
  19. package/dist/app-markdown.cjs.map +1 -0
  20. package/dist/app-markdown.d.mts +3 -3
  21. package/dist/app-markdown.d.ts +3 -3
  22. package/dist/cache.cjs.map +1 -0
  23. package/dist/{chunk-WD2EBM3I.mjs → chunk-3CQJV3NC.mjs} +2 -2
  24. package/dist/{chunk-I3OOUWO5.mjs → chunk-3GDRV7SG.mjs} +2 -2
  25. package/dist/{chunk-X4SFHKFH.mjs → chunk-6KJY25DQ.mjs} +5 -5
  26. package/dist/{chunk-FP5Q67FO.mjs → chunk-AAEZP2EY.mjs} +9 -9
  27. package/dist/{chunk-WMJGA32P.mjs → chunk-BXVOHG6B.mjs} +27 -2
  28. package/dist/{chunk-WMJGA32P.mjs.map → chunk-BXVOHG6B.mjs.map} +1 -1
  29. package/dist/{chunk-BZAIS65C.mjs → chunk-DIHNOVZZ.mjs} +40 -13
  30. package/dist/chunk-DIHNOVZZ.mjs.map +1 -0
  31. package/dist/{chunk-ISSFLGJ5.mjs → chunk-FDWECN3W.mjs} +8 -4
  32. package/dist/chunk-FDWECN3W.mjs.map +1 -0
  33. package/dist/chunk-FDWXXTWR.mjs +114 -0
  34. package/dist/chunk-FDWXXTWR.mjs.map +1 -0
  35. package/dist/{chunk-J3MPQ4MQ.mjs → chunk-IHADQ6J7.mjs} +2 -2
  36. package/dist/{chunk-J3MPQ4MQ.mjs.map → chunk-IHADQ6J7.mjs.map} +1 -1
  37. package/dist/{chunk-FSIXEIOB.mjs → chunk-L7FSTPGS.mjs} +2 -2
  38. package/dist/{chunk-AAC66ILR.mjs → chunk-LXXG3K2Y.mjs} +61 -2
  39. package/dist/chunk-LXXG3K2Y.mjs.map +1 -0
  40. package/dist/{chunk-GJ7W6LNK.mjs → chunk-N5RK4LK6.mjs} +3 -3
  41. package/dist/{chunk-WKDAA6V2.mjs → chunk-NBF56FXB.mjs} +20 -5
  42. package/dist/chunk-NBF56FXB.mjs.map +1 -0
  43. package/dist/chunk-RKUPOYQV.mjs +28 -0
  44. package/dist/chunk-RKUPOYQV.mjs.map +1 -0
  45. package/dist/{chunk-2SKCXYLB.mjs → chunk-RL3THP3L.mjs} +54 -5
  46. package/dist/chunk-RL3THP3L.mjs.map +1 -0
  47. package/dist/{chunk-52BR7LTX.mjs → chunk-STSPSJUI.mjs} +3 -3
  48. package/dist/{chunk-EPDIF432.mjs → chunk-UOGX6UNO.mjs} +37 -17
  49. package/dist/chunk-UOGX6UNO.mjs.map +1 -0
  50. package/dist/{chunk-YIBV77KZ.mjs → chunk-URQELPSH.mjs} +2 -2
  51. package/dist/{chunk-UMUWR5XA.mjs → chunk-UWQ4EEW7.mjs} +2 -2
  52. package/dist/{chunk-IZBX2TEU.mjs → chunk-VQG3QWWK.mjs} +2 -2
  53. package/dist/{chunk-D7F7YZ7L.mjs → chunk-WA77FWAO.mjs} +8 -8
  54. package/dist/{chunk-35NPLKQJ.mjs → chunk-XWM2C267.mjs} +21 -105
  55. package/dist/chunk-XWM2C267.mjs.map +1 -0
  56. package/dist/client/lifecycle.cjs.map +1 -0
  57. package/dist/client/lifecycle.mjs +2 -2
  58. package/dist/{client-plugins-B6-07YmP.d.mts → client-plugins-CyTLPqjP.d.mts} +38 -2
  59. package/dist/{client-plugins-By6MVUX-.d.ts → client-plugins-D-UgzngJ.d.ts} +38 -2
  60. package/dist/client-plugins.cjs +1 -1
  61. package/dist/client-plugins.cjs.map +1 -0
  62. package/dist/client-plugins.d.mts +2 -2
  63. package/dist/client-plugins.d.ts +2 -2
  64. package/dist/client-plugins.mjs +2 -2
  65. package/dist/client.cjs +61 -16
  66. package/dist/client.cjs.map +1 -0
  67. package/dist/client.d.mts +5 -5
  68. package/dist/client.d.ts +5 -5
  69. package/dist/client.mjs +7 -7
  70. package/dist/config.cjs.map +1 -0
  71. package/dist/config.d.mts +2 -2
  72. package/dist/config.d.ts +2 -2
  73. package/dist/cron.cjs +48 -12
  74. package/dist/cron.cjs.map +1 -0
  75. package/dist/cron.mjs +2 -1
  76. package/dist/deferred.cjs.map +1 -0
  77. package/dist/deployment.cjs.map +1 -0
  78. package/dist/{devtools-XWZX6CCL.mjs → devtools-KQ2PXSIC.mjs} +8 -6
  79. package/dist/{devtools-XWZX6CCL.mjs.map → devtools-KQ2PXSIC.mjs.map} +1 -1
  80. package/dist/docs.cjs +7 -3
  81. package/dist/docs.cjs.map +1 -0
  82. package/dist/docs.mjs +8 -6
  83. package/dist/env-types.cjs.map +1 -0
  84. package/dist/env.cjs.map +1 -0
  85. package/dist/environment/vite.cjs.map +1 -0
  86. package/dist/environment.cjs.map +1 -0
  87. package/dist/font.cjs.map +1 -0
  88. package/dist/headers.cjs.map +1 -0
  89. package/dist/i18n/client.cjs.map +1 -0
  90. package/dist/i18n/index.cjs.map +1 -0
  91. package/dist/i18n/server.cjs.map +1 -0
  92. package/dist/image/server.cjs +19 -4
  93. package/dist/image/server.cjs.map +1 -0
  94. package/dist/image/server.d.mts +6 -0
  95. package/dist/image/server.d.ts +6 -0
  96. package/dist/image/server.mjs +1 -1
  97. package/dist/image/sharp.cjs +1 -0
  98. package/dist/image/sharp.cjs.map +1 -0
  99. package/dist/image/sharp.mjs +1 -1
  100. package/dist/image.cjs.map +1 -0
  101. package/dist/index.cjs +370 -143
  102. package/dist/index.cjs.map +1 -0
  103. package/dist/index.d.mts +10 -10
  104. package/dist/index.d.ts +10 -10
  105. package/dist/index.mjs +29 -21
  106. package/dist/index.mjs.map +1 -1
  107. package/dist/instrumentation.cjs.map +1 -0
  108. package/dist/{integration-orm-LLW6WZNK.mjs → integration-orm-G5BPBT5X.mjs} +3 -3
  109. package/dist/integrations.cjs +168 -5
  110. package/dist/integrations.cjs.map +1 -0
  111. package/dist/integrations.d.mts +2 -2
  112. package/dist/integrations.d.ts +2 -2
  113. package/dist/integrations.mjs +10 -3
  114. package/dist/internal/build-runtime.cjs +178 -51
  115. package/dist/internal/build-runtime.cjs.map +1 -0
  116. package/dist/internal/build-runtime.d.mts +4 -4
  117. package/dist/internal/build-runtime.d.ts +4 -4
  118. package/dist/internal/build-runtime.mjs +13 -11
  119. package/dist/internal/client-runtime.cjs +1 -1
  120. package/dist/internal/client-runtime.cjs.map +1 -0
  121. package/dist/internal/client-runtime.mjs +2 -2
  122. package/dist/internal/config-runtime.cjs +48 -42
  123. package/dist/internal/config-runtime.cjs.map +1 -0
  124. package/dist/internal/config-runtime.d.mts +3 -3
  125. package/dist/internal/config-runtime.d.ts +3 -3
  126. package/dist/internal/config-runtime.mjs +7 -5
  127. package/dist/internal/isolated-boundary.cjs.map +1 -0
  128. package/dist/internal/metadata-image-runtime.cjs.map +1 -0
  129. package/dist/internal/product-telemetry-runtime.cjs +6 -2
  130. package/dist/internal/product-telemetry-runtime.cjs.map +1 -0
  131. package/dist/internal/product-telemetry-runtime.mjs +6 -2
  132. package/dist/internal/product-telemetry-runtime.mjs.map +1 -1
  133. package/dist/internal/production-node-env.cjs.map +1 -0
  134. package/dist/internal/production-runtime.cjs.map +1 -0
  135. package/dist/internal/production-runtime.d.mts +8 -8
  136. package/dist/internal/production-runtime.d.ts +8 -8
  137. package/dist/markdown.cjs.map +1 -0
  138. package/dist/{metadata-route-8_V3UonT.d.ts → metadata-route-BpU8K9RI.d.ts} +1 -1
  139. package/dist/{metadata-route-CWP_HjGU.d.mts → metadata-route-D1AYgWni.d.mts} +1 -1
  140. package/dist/middleware.cjs.map +1 -0
  141. package/dist/middleware.d.mts +4 -4
  142. package/dist/middleware.d.ts +4 -4
  143. package/dist/navigation.cjs.map +1 -0
  144. package/dist/{nitro-EGRNOB5P.mjs → nitro-IITKBMUI.mjs} +4 -3
  145. package/dist/{nitro-EGRNOB5P.mjs.map → nitro-IITKBMUI.mjs.map} +1 -1
  146. package/dist/observability.cjs.map +1 -0
  147. package/dist/plugin.cjs +143 -50
  148. package/dist/plugin.cjs.map +1 -0
  149. package/dist/plugin.d.mts +2 -2
  150. package/dist/plugin.d.ts +2 -2
  151. package/dist/plugin.mjs +10 -8
  152. package/dist/{production-runtime-BGRH1dKG.d.mts → production-runtime-BIKA-BVT.d.mts} +2 -2
  153. package/dist/{production-runtime-CdmzsDax.d.ts → production-runtime-DtCUEELY.d.ts} +2 -2
  154. package/dist/query/client.cjs.map +1 -0
  155. package/dist/query/index.cjs.map +1 -0
  156. package/dist/query/parsers.cjs.map +1 -0
  157. package/dist/query/server.cjs.map +1 -0
  158. package/dist/{render-plan-DLxJYAA5.d.mts → render-plan-Dimb23ux.d.mts} +1 -1
  159. package/dist/{render-plan-0GeHiGVZ.d.ts → render-plan-rg3uiSo3.d.ts} +1 -1
  160. package/dist/renderer/react/client.cjs.map +1 -0
  161. package/dist/renderer/react/server.cjs.map +1 -0
  162. package/dist/renderer/react/vite.cjs.map +1 -0
  163. package/dist/renderer-client.cjs +26 -1
  164. package/dist/renderer-client.cjs.map +1 -0
  165. package/dist/renderer-client.d.mts +4 -4
  166. package/dist/renderer-client.d.ts +4 -4
  167. package/dist/renderer-client.mjs +2 -2
  168. package/dist/renderer.cjs.map +1 -0
  169. package/dist/{request-BstWbZ6O.d.ts → request-ColD-ChW.d.ts} +1 -1
  170. package/dist/{request-BCNXSXLh.d.mts → request-D5zvbU2Z.d.mts} +1 -1
  171. package/dist/request.cjs.map +1 -0
  172. package/dist/request.d.mts +3 -3
  173. package/dist/request.d.ts +3 -3
  174. package/dist/router.cjs.map +1 -0
  175. package/dist/routes.cjs.map +1 -0
  176. package/dist/routes.d.mts +2 -2
  177. package/dist/routes.d.ts +2 -2
  178. package/dist/server-action-security.cjs +117 -104
  179. package/dist/server-action-security.cjs.map +1 -0
  180. package/dist/server-action-security.mjs +2 -1
  181. package/dist/server-fn-client.cjs.map +1 -0
  182. package/dist/server-fn.cjs.map +1 -0
  183. package/dist/server-fn.mjs +3 -2
  184. package/dist/server-plugins.cjs.map +1 -0
  185. package/dist/server-plugins.d.mts +3 -3
  186. package/dist/server-plugins.d.ts +3 -3
  187. package/dist/server-query-client.cjs +26 -1
  188. package/dist/server-query-client.cjs.map +1 -0
  189. package/dist/server-query-client.mjs +3 -3
  190. package/dist/server-query.cjs.map +1 -0
  191. package/dist/server-query.mjs +4 -3
  192. package/dist/server.cjs +221 -116
  193. package/dist/server.cjs.map +1 -0
  194. package/dist/server.d.mts +8 -8
  195. package/dist/server.d.ts +8 -8
  196. package/dist/server.mjs +13 -11
  197. package/dist/server.mjs.map +1 -1
  198. package/dist/{spa-router-BeyAVSc6.d.mts → spa-router-BlilYGAN.d.mts} +1 -1
  199. package/dist/{spa-router-COgu4txb.d.ts → spa-router-kXORcsT_.d.ts} +1 -1
  200. package/dist/storage.cjs +7 -3
  201. package/dist/storage.cjs.map +1 -0
  202. package/dist/storage.mjs +1 -1
  203. package/dist/testing.cjs.map +1 -0
  204. package/dist/testing.d.mts +2 -2
  205. package/dist/testing.d.ts +2 -2
  206. package/dist/testing.mjs +2 -1
  207. package/dist/testing.mjs.map +1 -1
  208. package/dist/theme/client.cjs.map +1 -0
  209. package/dist/theme/index.cjs.map +1 -0
  210. package/dist/theme/runtime.cjs.map +1 -0
  211. package/dist/theme/server.cjs.map +1 -0
  212. package/dist/{utils-DkU2c_1B.d.ts → utils-BhvF7Hhl.d.ts} +1 -1
  213. package/dist/{utils-DL2VwDQl.d.mts → utils-uF32evNX.d.mts} +1 -1
  214. package/dist/version.cjs +1 -1
  215. package/dist/version.cjs.map +1 -0
  216. package/dist/version.mjs +1 -1
  217. package/dist/vite.cjs +143 -50
  218. package/dist/vite.cjs.map +1 -0
  219. package/dist/vite.d.mts +2 -2
  220. package/dist/vite.d.ts +2 -2
  221. package/dist/vite.mjs +10 -8
  222. package/dist/{workflows-ChyK_oTu.d.mts → workflows-BantWytQ.d.mts} +7 -0
  223. package/dist/{workflows-ChyK_oTu.d.ts → workflows-BantWytQ.d.ts} +7 -0
  224. package/dist/workflows.cjs +67 -4
  225. package/dist/workflows.cjs.map +1 -0
  226. package/dist/workflows.d.mts +1 -1
  227. package/dist/workflows.d.ts +1 -1
  228. package/dist/workflows.mjs +2 -1
  229. package/package.json +17 -17
  230. package/dist/chunk-2SKCXYLB.mjs.map +0 -1
  231. package/dist/chunk-35NPLKQJ.mjs.map +0 -1
  232. package/dist/chunk-AAC66ILR.mjs.map +0 -1
  233. package/dist/chunk-BZAIS65C.mjs.map +0 -1
  234. package/dist/chunk-EPDIF432.mjs.map +0 -1
  235. package/dist/chunk-ISSFLGJ5.mjs.map +0 -1
  236. package/dist/chunk-WKDAA6V2.mjs.map +0 -1
  237. /package/dist/{chunk-WD2EBM3I.mjs.map → chunk-3CQJV3NC.mjs.map} +0 -0
  238. /package/dist/{chunk-I3OOUWO5.mjs.map → chunk-3GDRV7SG.mjs.map} +0 -0
  239. /package/dist/{chunk-X4SFHKFH.mjs.map → chunk-6KJY25DQ.mjs.map} +0 -0
  240. /package/dist/{chunk-FP5Q67FO.mjs.map → chunk-AAEZP2EY.mjs.map} +0 -0
  241. /package/dist/{chunk-FSIXEIOB.mjs.map → chunk-L7FSTPGS.mjs.map} +0 -0
  242. /package/dist/{chunk-GJ7W6LNK.mjs.map → chunk-N5RK4LK6.mjs.map} +0 -0
  243. /package/dist/{chunk-52BR7LTX.mjs.map → chunk-STSPSJUI.mjs.map} +0 -0
  244. /package/dist/{chunk-YIBV77KZ.mjs.map → chunk-URQELPSH.mjs.map} +0 -0
  245. /package/dist/{chunk-UMUWR5XA.mjs.map → chunk-UWQ4EEW7.mjs.map} +0 -0
  246. /package/dist/{chunk-IZBX2TEU.mjs.map → chunk-VQG3QWWK.mjs.map} +0 -0
  247. /package/dist/{chunk-D7F7YZ7L.mjs.map → chunk-WA77FWAO.mjs.map} +0 -0
  248. /package/dist/{integration-orm-LLW6WZNK.mjs.map → integration-orm-G5BPBT5X.mjs.map} +0 -0
@@ -11,7 +11,7 @@ import { FarmMarkdownUserConfig, FarmMarkdownResolvedConfig } from './markdown.j
11
11
  import { FarmObservabilityUserConfig } from './observability.js';
12
12
  import * as vite from 'vite';
13
13
  import { ViteDevServer, UserConfig, Plugin, Connect } from 'vite';
14
- import { j as FarmWorkflowsUserConfig, a as FarmServerConfig, F as FarmWorkflowsResolvedConfig, R as ResolvedFarmServerConfig } from './workflows-ChyK_oTu.js';
14
+ import { j as FarmWorkflowsUserConfig, a as FarmServerConfig, F as FarmWorkflowsResolvedConfig, R as ResolvedFarmServerConfig } from './workflows-BantWytQ.js';
15
15
  import { FarmCronUserConfig, FarmCronResolvedConfig } from './cron.js';
16
16
  import { ResolvedFarmEnv, FarmEnvConfig } from './env.js';
17
17
  import { b as FarmRedirectStatus } from './navigation-errors-Dvwpzaer.js';
@@ -25,6 +25,42 @@ import { FarmLayoutFonts } from './font.js';
25
25
  import { _withAfterNodeMiddleware } from './after.js';
26
26
  import { F as FarmIslandStrategy } from './island-CfGru1MO.js';
27
27
 
28
+ /**
29
+ * Integration auth routes accept ordinary form posts, which browsers send
30
+ * cross-site without a CORS preflight. Without an origin check, a third-party
31
+ * page can submit credentials to an app's own sign-in route and plant an
32
+ * attacker-controlled session in the victim's browser (login CSRF), or drive a
33
+ * forced sign-out. This mirrors the server-action origin contract so both
34
+ * entry points reject the same requests.
35
+ */
36
+ type IntegrationOriginRejection = "missing-origin" | "opaque-origin" | "invalid-origin" | "cross-site";
37
+ type IntegrationOriginResult = {
38
+ ok: true;
39
+ } | {
40
+ ok: false;
41
+ reason: IntegrationOriginRejection;
42
+ };
43
+ interface IntegrationOriginPolicy {
44
+ /** Extra trusted origins, using the `serverActions.allowedOrigins` pattern syntax. */
45
+ allowedOrigins?: readonly string[];
46
+ /**
47
+ * Whether a request carrying no origin metadata at all must be rejected.
48
+ *
49
+ * Form posts always carry an Origin header in supported browsers, so
50
+ * state-changing POSTs default to rejecting (`true`). Top-level GET
51
+ * navigations legitimately arrive with no Origin and no Referer — a typed
52
+ * URL or a bookmark — so GET callers pass `false` to avoid breaking them.
53
+ */
54
+ requireOriginMetadata?: boolean;
55
+ }
56
+ /**
57
+ * Resolve configured origin patterns once, at integration construction, so an
58
+ * invalid pattern fails loudly at startup instead of per request.
59
+ */
60
+ declare function resolveIntegrationAllowedOrigins(values: readonly string[] | undefined, label: string): readonly string[];
61
+ declare function validateIntegrationRequestOrigin(request: Request, policy?: IntegrationOriginPolicy): IntegrationOriginResult;
62
+ declare function describeIntegrationOriginRejection(reason: IntegrationOriginRejection): string;
63
+
28
64
  type RuntimeClientFactory<TClient> = () => TClient | Promise<TClient>;
29
65
  type FarmIntegrationOrmSchema = SchemaDefinition<Record<string, AnyModelDefinition>>;
30
66
  type FarmIntegrationOrmClient<TSchema extends FarmIntegrationOrmSchema> = OrmClient<TSchema>;
@@ -2269,4 +2305,4 @@ interface SSGCollectionResult {
2269
2305
  ssr: string[];
2270
2306
  }
2271
2307
 
2272
- export { type BuildOptions as $, type AppRoutePattern as A, type BundleResultPayload as B, type FarmContextFactoryInput as C, type FarmIsolatedClientHydrationMode as D, type LoadingProps as E, type FarmRouteRuntimeConfig as F, type ErrorProps as G, type PagePropsWithMiddleware as H, type MetadataProps as I, type LayoutMetadataProps as J, type Page as K, type LayoutProps as L, type Metadata as M, type NitroPreset as N, type Layout as O, type ParsedRoute as P, type Loading as Q, type RouteSegment as R, type ErrorBoundary as S, type StaticPathPrimitive as T, type StaticPathParams as U, type StaticRouteParams as V, type GenerateStaticParams as W, type LayoutModule as X, type FarmRequest as Y, type FarmResponse as Z, type ServerAction as _, type FarmPlugin as a, type FarmPluginRouteRuntimePayload as a$, type SSGPage as a0, type SSGCollectionResult as a1, type FarmLayerEntry as a2, type ResolvedFarmLayer as a3, type FarmSourceRoot as a4, type ResolveFarmLayersOptions as a5, type FarmLayerResolution as a6, resolveFarmLayers as a7, getFarmSourceRoots as a8, getFarmAppDirectories as a9, resolveDeployOutputPath as aA, normalizeDeployTarget as aB, getDeployTargetForPreset as aC, getPresetForDeployTarget as aD, type FarmLayerConfig as aE, type FarmPerformanceConfig as aF, type FarmPreloadMode as aG, type FarmPreloadUserConfig as aH, type ResolvedFarmPreloadConfig as aI, type FarmCspConfig as aJ, type FarmCspDirectives as aK, type FarmCspDirectiveValue as aL, type FarmCspOptions as aM, type FarmSecurityConfig as aN, type ResolvedFarmCspConfig as aO, type FarmAuthConfig as aP, type FarmAuthDatabaseConfig as aQ, type FarmAuthEmailAndPasswordConfig as aR, type FarmAuthSessionConfig as aS, type FarmAuthUserConfig as aT, type PluginRequestContext as aU, type FarmPluginContext as aV, type FarmPluginIntegrationContext as aW, type FarmPluginLifecycle as aX, type FarmRequestPluginContext as aY, type FarmRequestStore as aZ, type FarmPluginRuntimeKind as a_, getFarmLayerAliases as aa, createFarmConfigResolutionPlugin as ab, loadFarmConfigFile as ac, type ReadonlyMiddlewareStore as ad, type FarmMiddlewareConfig as ae, type MiddlewareModule as af, type ResolvedFarmRouteRuntimeConfig as ag, type ResolvedFarmAPIConfig as ah, type ResolvedFarmDevtoolsConfig as ai, type ResolvedFarmDevIndicatorsConfig as aj, type ResolvedFarmAuthConfig as ak, type ResolvedFarmPerformanceConfig as al, type ResolvedFarmSecurityConfig as am, type APIRequestRuntime as an, manageFarmDocumentPreloads as ao, manageFarmHtmlPreloads as ap, manageFarmLinkHeaderPreloads as aq, reportFarmPreloadWarnings as ar, type OpenAPIConfig as as, definePlugin as at, FarmRuntimeShutdownError as au, PluginManager as av, resolveConfig as aw, loadConfig as ax, resolveDeployConfig as ay, resolveMigrationsConfig as az, type FarmRouteRuntime as b, type FarmIntegrationConfigInput as b$, type FarmPluginSetupContext as b0, type FarmPluginStateContext as b1, type FarmPluginRuntimeBaseEvent as b2, type FarmPluginRuntimeContextEvent as b3, type FarmPluginRuntimeBeforeEvent as b4, type FarmPluginRuntimeAfterEvent as b5, type FarmPluginRuntimeErrorEvent as b6, type FarmPluginRuntimeStartEvent as b7, type FarmPluginRuntimeCloseEvent as b8, type FarmPluginRuntimeHooks as b9, type ImageConfig as bA, type I18nConfig as bB, type MiddlewareConfig as bC, type FarmDeployConfig as bD, type ResolvedFarmDeployConfig as bE, type FarmDeployTarget as bF, type FarmIntegrationCategory as bG, type FarmIntegrationSlot as bH, type FarmIntegrationRouteParamValue as bI, type FarmIntegrationRouteParams as bJ, type FarmIntegrationRouteMethod as bK, type FarmIntegrationRouteInputSource as bL, type FarmIntegrationValidationPathSegment as bM, type FarmIntegrationRouteInput as bN, type FarmIntegrationValidationIssue as bO, type FarmIntegrationValidationErrorLike as bP, type FarmIntegrationValidationResult as bQ, type FarmIntegrationStandardValidationResult as bR, type FarmIntegrationInputSchema as bS, type FarmIntegrationRouteInputSchemas as bT, type FarmIntegrationRequestContextStore as bU, FARM_INTEGRATION_INTERNAL_DISPATCH_CONTEXT_KEY as bV, type FarmIntegrationRouteDb as bW, type FarmIntegrationRouteStorageArgs as bX, type FarmIntegrationRouteArgs as bY, type FarmIntegrationConfigContext as bZ, type FarmIntegrationConfigDefinition as b_, type FarmPluginRuntimeRequestOptions as ba, type FarmPluginRuntimeRequestHandler as bb, type FarmPluginRuntimeSession as bc, type FarmPluginDiscoveredRoute as bd, type FarmPluginRouterHooks as be, type FarmPluginRenderHooks as bf, type FarmPluginBuildHooks as bg, type FarmPluginDevHooks as bh, type FarmPluginClientConfig as bi, type RouteDiscoveredPayload as bj, type RoutesGeneratedPayload as bk, type MiddlewareDiscoveredPayload as bl, type APIRouteDiscoveredPayload as bm, type RouteMatchPayload as bn, type RouteMatchResultPayload as bo, type RenderLifecyclePayload as bp, type APIHandlerLifecyclePayload as bq, type ErrorLifecyclePayload as br, type HMRUpdatePayload as bs, type BundleLifecyclePayload as bt, type NitroBuildLifecyclePayload as bu, type ShutdownPayload as bv, type ResolvedFarmConfig as bw, type RedirectConfig as bx, type HeaderConfig as by, type RewriteConfig as bz, type FarmRouteRegions as c, type CreateIntegrationOrmOptions as c$, type FarmIntegrationLifecycleLogLevel as c0, type FarmIntegrationLifecycleLogger as c1, type FarmIntegrationLifecycleContext as c2, type FarmIntegrationLifecycleHook as c3, type FarmIntegrationData as c4, type FarmIntegrationHandlerContext as c5, type FarmIntegrationRouteHookContext as c6, type FarmIntegrationRouteHook as c7, type FarmIntegrationRoute as c8, type FarmTypedIntegrationRoute as c9, type FarmIntegrationEndpointValue as cA, type FarmIntegrationEndpoints as cB, type FarmIntegrationEndpointsFactoryContext as cC, type FarmIntegrationEndpointsFactory as cD, createIntegrationRoute as cE, integrationRoute as cF, type DefinedIntegration as cG, defineIntegration as cH, isFarmIntegration as cI, resolveIntegrationPlugins as cJ, getIntegrationProviders as cK, isFarmIntegrationProviderComponentReference as cL, getIntegrationDocumentNavigationMatchers as cM, getIntegrationSchemas as cN, getRegisteredIntegrationRuntime as cO, getRegisteredIntegrations as cP, getRegisteredIntegrationSchemas as cQ, matchIntegrationRoute as cR, matchRegisteredIntegrationRoute as cS, getRegisteredIntegrationAPIManifest as cT, dispatchIntegrationRequest as cU, type FarmIntegrationOrmSchema as cV, type FarmIntegrationOrmClient as cW, type InferFarmIntegrationOrmField as cX, type InferFarmIntegrationOrmFields as cY, type InferFarmIntegrationOrmSchema as cZ, type InferFarmIntegrationOrmClient as c_, type FarmIntegrationRouteMiddleware as ca, type FarmIntegrationMiddleware as cb, type FarmIntegrationProviderProps as cc, type FarmIntegrationProviderComponentReference as cd, type FarmIntegrationProvider as ce, type FarmIntegrationDocumentNavigation as cf, type FarmIntegrationSchemaFieldType as cg, type FarmIntegrationSchemaReference as ch, type FarmIntegrationSchemaField as ci, type FarmIntegrationSchemaConstraint as cj, type FarmIntegrationSchemaModel as ck, type FarmIntegrationSchemaModelExtension as cl, type FarmIntegrationSchemaModelOverride as cm, type FarmIntegrationSchema as cn, defineIntegrationSchema as co, type FarmIntegrationLogPhase as cp, type FarmIntegrationLogEvent as cq, type FarmIntegrationLogger as cr, type FarmIntegrationPluginOwner as cs, type FarmIntegrationContributedPlugin as ct, type FarmIntegrationsUserConfig as cu, getFarmIntegrationPluginServerRuntime as cv, getFarmIntegrationPluginOwner as cw, type FarmIntegrationRouteFactory as cx, type FarmIntegrationRoutesFactoryContext as cy, type FarmIntegrationRoutesFactory as cz, type FarmRouteMaxDuration as d, rewriteEarlySsrRelativeImports as d$, createIntegrationOrm as d0, resolveIntegrationOrmRuntimeClient as d1, farmIntegrationSchemaToOrmSchema as d2, type IntegrationOrmModelNames as d3, DEFAULT_FARM_API_BASE_PATH as d4, type FarmAPIConfigResolverContext as d5, type FarmAPIConfigValue as d6, type FarmAPIConfig as d7, resolveFarmAPIConfig as d8, normalizeFarmAPIConfig as d9, routeRulesToHeaders as dA, routeRulesToNitroRouteRules as dB, type FarmRouteRuntimeEntryKind as dC, type FarmRouteRenderingMode as dD, type FarmRouteRuntimeManifestEntry as dE, type FarmRouteRuntimeManifest as dF, normalizeFarmRouteRuntimeConfig as dG, mergeFarmRouteRuntimeConfigs as dH, resolveFarmRouteRuntimeConfig as dI, hasFarmRouteRuntimeControls as dJ, getFarmRouteRuntimeConfig as dK, createFarmRouteRuntimeKey as dL, resolveFarmRouteRuleRuntimeConfig as dM, farmRouteRuleMatches as dN, DEFAULT_FARM_DEVTOOLS_SHORTCUT as dO, FARM_DEVTOOLS_PATH as dP, FARM_DEVTOOLS_LAUNCH_PARAM as dQ, type FarmDevtoolsConfig as dR, type FarmDevtoolsUserConfig as dS, resolveFarmDevtoolsConfig as dT, type FarmBuildActivityPosition as dU, type FarmDevIndicatorsConfig as dV, resolveFarmDevIndicatorsConfig as dW, generateFarmDevIndicatorsClientRuntime as dX, type MiddlewareConfig$1 as dY, farmI18nClientBridgePlugin as dZ, withFarmRequestTracing as d_, normalizeFarmAPIBasePath as da, getFarmAPIBaseURL as db, resolveFarmAPIRequestURL as dc, type MiddlewareContext as dd, type MiddlewareFunction as de, type RequestMiddleware as df, type RequestMiddlewareContext as dg, type MiddlewareStore as dh, type MiddlewareChain as di, type CookieJar as dj, type CookieOptions as dk, type RateLimitConfig as dl, type RateLimitIncrementResult as dm, type RateLimitStorage as dn, type RateLimitStatus as dp, type MemoryRateLimitStorageOptions as dq, type NextFunction as dr, type MiddlewareResult as ds, type FarmRouteRuleRenderMode as dt, type FarmRouteRuleRedirect as du, type FarmRouteRuleCors as dv, type FarmRouteRule as dw, type FarmRouteRules as dx, normalizeRouteRules as dy, routeRulesToRedirects as dz, type FarmAppContext as e, transformIsolatedClientBoundaryModule as e0, generateClientCachePersistenceCode as e1, resolveFarmClientCacheAdapterEntry as e2, type ClientCachePersistenceEntryCode as e3, FARM_NODE_RESPONSE_END_PENDING as e4, type PageProps as f, type PluginContextProps as g, type RouteModule as h, type FarmMdxComponents as i, type FarmMdxResolvedConfig as j, type FarmMdxComponent as k, type FarmMdxUserConfig as l, type FarmUserConfig as m, type FarmContextFactory as n, type MiddlewareProps as o, type FarmIntegration as p, type FarmConfig as q, resolveMdxConfig as r, farmPlugin as s, defineConfig as t, type FarmComponentType as u, type PageRouteParams as v, type FarmMigrationCommand as w, type FarmMigrationsConfig as x, type FarmMigrationsUserConfig as y, type ResolvedFarmMigrationsConfig as z };
2308
+ export { type BuildOptions as $, type AppRoutePattern as A, type BundleResultPayload as B, type FarmContextFactoryInput as C, type FarmIsolatedClientHydrationMode as D, type LoadingProps as E, type FarmRouteRuntimeConfig as F, type ErrorProps as G, type PagePropsWithMiddleware as H, type MetadataProps as I, type LayoutMetadataProps as J, type Page as K, type LayoutProps as L, type Metadata as M, type NitroPreset as N, type Layout as O, type ParsedRoute as P, type Loading as Q, type RouteSegment as R, type ErrorBoundary as S, type StaticPathPrimitive as T, type StaticPathParams as U, type StaticRouteParams as V, type GenerateStaticParams as W, type LayoutModule as X, type FarmRequest as Y, type FarmResponse as Z, type ServerAction as _, type FarmPlugin as a, type FarmPluginRouteRuntimePayload as a$, type SSGPage as a0, type SSGCollectionResult as a1, type FarmLayerEntry as a2, type ResolvedFarmLayer as a3, type FarmSourceRoot as a4, type ResolveFarmLayersOptions as a5, type FarmLayerResolution as a6, resolveFarmLayers as a7, getFarmSourceRoots as a8, getFarmAppDirectories as a9, resolveDeployOutputPath as aA, normalizeDeployTarget as aB, getDeployTargetForPreset as aC, getPresetForDeployTarget as aD, type FarmLayerConfig as aE, type FarmPerformanceConfig as aF, type FarmPreloadMode as aG, type FarmPreloadUserConfig as aH, type ResolvedFarmPreloadConfig as aI, type FarmCspConfig as aJ, type FarmCspDirectives as aK, type FarmCspDirectiveValue as aL, type FarmCspOptions as aM, type FarmSecurityConfig as aN, type ResolvedFarmCspConfig as aO, type FarmAuthConfig as aP, type FarmAuthDatabaseConfig as aQ, type FarmAuthEmailAndPasswordConfig as aR, type FarmAuthSessionConfig as aS, type FarmAuthUserConfig as aT, type PluginRequestContext as aU, type FarmPluginContext as aV, type FarmPluginIntegrationContext as aW, type FarmPluginLifecycle as aX, type FarmRequestPluginContext as aY, type FarmRequestStore as aZ, type FarmPluginRuntimeKind as a_, getFarmLayerAliases as aa, createFarmConfigResolutionPlugin as ab, loadFarmConfigFile as ac, type ReadonlyMiddlewareStore as ad, type FarmMiddlewareConfig as ae, type MiddlewareModule as af, type ResolvedFarmRouteRuntimeConfig as ag, type ResolvedFarmAPIConfig as ah, type ResolvedFarmDevtoolsConfig as ai, type ResolvedFarmDevIndicatorsConfig as aj, type ResolvedFarmAuthConfig as ak, type ResolvedFarmPerformanceConfig as al, type ResolvedFarmSecurityConfig as am, type APIRequestRuntime as an, manageFarmDocumentPreloads as ao, manageFarmHtmlPreloads as ap, manageFarmLinkHeaderPreloads as aq, reportFarmPreloadWarnings as ar, type OpenAPIConfig as as, definePlugin as at, FarmRuntimeShutdownError as au, PluginManager as av, resolveConfig as aw, loadConfig as ax, resolveDeployConfig as ay, resolveMigrationsConfig as az, type FarmRouteRuntime as b, type FarmIntegrationConfigInput as b$, type FarmPluginSetupContext as b0, type FarmPluginStateContext as b1, type FarmPluginRuntimeBaseEvent as b2, type FarmPluginRuntimeContextEvent as b3, type FarmPluginRuntimeBeforeEvent as b4, type FarmPluginRuntimeAfterEvent as b5, type FarmPluginRuntimeErrorEvent as b6, type FarmPluginRuntimeStartEvent as b7, type FarmPluginRuntimeCloseEvent as b8, type FarmPluginRuntimeHooks as b9, type ImageConfig as bA, type I18nConfig as bB, type MiddlewareConfig as bC, type FarmDeployConfig as bD, type ResolvedFarmDeployConfig as bE, type FarmDeployTarget as bF, type FarmIntegrationCategory as bG, type FarmIntegrationSlot as bH, type FarmIntegrationRouteParamValue as bI, type FarmIntegrationRouteParams as bJ, type FarmIntegrationRouteMethod as bK, type FarmIntegrationRouteInputSource as bL, type FarmIntegrationValidationPathSegment as bM, type FarmIntegrationRouteInput as bN, type FarmIntegrationValidationIssue as bO, type FarmIntegrationValidationErrorLike as bP, type FarmIntegrationValidationResult as bQ, type FarmIntegrationStandardValidationResult as bR, type FarmIntegrationInputSchema as bS, type FarmIntegrationRouteInputSchemas as bT, type FarmIntegrationRequestContextStore as bU, FARM_INTEGRATION_INTERNAL_DISPATCH_CONTEXT_KEY as bV, type FarmIntegrationRouteDb as bW, type FarmIntegrationRouteStorageArgs as bX, type FarmIntegrationRouteArgs as bY, type FarmIntegrationConfigContext as bZ, type FarmIntegrationConfigDefinition as b_, type FarmPluginRuntimeRequestOptions as ba, type FarmPluginRuntimeRequestHandler as bb, type FarmPluginRuntimeSession as bc, type FarmPluginDiscoveredRoute as bd, type FarmPluginRouterHooks as be, type FarmPluginRenderHooks as bf, type FarmPluginBuildHooks as bg, type FarmPluginDevHooks as bh, type FarmPluginClientConfig as bi, type RouteDiscoveredPayload as bj, type RoutesGeneratedPayload as bk, type MiddlewareDiscoveredPayload as bl, type APIRouteDiscoveredPayload as bm, type RouteMatchPayload as bn, type RouteMatchResultPayload as bo, type RenderLifecyclePayload as bp, type APIHandlerLifecyclePayload as bq, type ErrorLifecyclePayload as br, type HMRUpdatePayload as bs, type BundleLifecyclePayload as bt, type NitroBuildLifecyclePayload as bu, type ShutdownPayload as bv, type ResolvedFarmConfig as bw, type RedirectConfig as bx, type HeaderConfig as by, type RewriteConfig as bz, type FarmRouteRegions as c, type FarmIntegrationOrmSchema as c$, type FarmIntegrationLifecycleLogLevel as c0, type FarmIntegrationLifecycleLogger as c1, type FarmIntegrationLifecycleContext as c2, type FarmIntegrationLifecycleHook as c3, type FarmIntegrationData as c4, type FarmIntegrationHandlerContext as c5, type FarmIntegrationRouteHookContext as c6, type FarmIntegrationRouteHook as c7, type FarmIntegrationRoute as c8, type FarmTypedIntegrationRoute as c9, type FarmIntegrationEndpointValue as cA, type FarmIntegrationEndpoints as cB, type FarmIntegrationEndpointsFactoryContext as cC, type FarmIntegrationEndpointsFactory as cD, createIntegrationRoute as cE, integrationRoute as cF, type DefinedIntegration as cG, defineIntegration as cH, isFarmIntegration as cI, resolveIntegrationPlugins as cJ, getIntegrationProviders as cK, isFarmIntegrationProviderComponentReference as cL, getIntegrationDocumentNavigationMatchers as cM, getIntegrationSchemas as cN, getRegisteredIntegrationRuntime as cO, getRegisteredIntegrations as cP, getRegisteredIntegrationSchemas as cQ, matchIntegrationRoute as cR, matchRegisteredIntegrationRoute as cS, getRegisteredIntegrationAPIManifest as cT, dispatchIntegrationRequest as cU, describeIntegrationOriginRejection as cV, resolveIntegrationAllowedOrigins as cW, validateIntegrationRequestOrigin as cX, type IntegrationOriginPolicy as cY, type IntegrationOriginRejection as cZ, type IntegrationOriginResult as c_, type FarmIntegrationRouteMiddleware as ca, type FarmIntegrationMiddleware as cb, type FarmIntegrationProviderProps as cc, type FarmIntegrationProviderComponentReference as cd, type FarmIntegrationProvider as ce, type FarmIntegrationDocumentNavigation as cf, type FarmIntegrationSchemaFieldType as cg, type FarmIntegrationSchemaReference as ch, type FarmIntegrationSchemaField as ci, type FarmIntegrationSchemaConstraint as cj, type FarmIntegrationSchemaModel as ck, type FarmIntegrationSchemaModelExtension as cl, type FarmIntegrationSchemaModelOverride as cm, type FarmIntegrationSchema as cn, defineIntegrationSchema as co, type FarmIntegrationLogPhase as cp, type FarmIntegrationLogEvent as cq, type FarmIntegrationLogger as cr, type FarmIntegrationPluginOwner as cs, type FarmIntegrationContributedPlugin as ct, type FarmIntegrationsUserConfig as cu, getFarmIntegrationPluginServerRuntime as cv, getFarmIntegrationPluginOwner as cw, type FarmIntegrationRouteFactory as cx, type FarmIntegrationRoutesFactoryContext as cy, type FarmIntegrationRoutesFactory as cz, type FarmRouteMaxDuration as d, type FarmDevIndicatorsConfig as d$, type FarmIntegrationOrmClient as d0, type InferFarmIntegrationOrmField as d1, type InferFarmIntegrationOrmFields as d2, type InferFarmIntegrationOrmSchema as d3, type InferFarmIntegrationOrmClient as d4, type CreateIntegrationOrmOptions as d5, createIntegrationOrm as d6, resolveIntegrationOrmRuntimeClient as d7, farmIntegrationSchemaToOrmSchema as d8, type IntegrationOrmModelNames as d9, type FarmRouteRuleRedirect as dA, type FarmRouteRuleCors as dB, type FarmRouteRule as dC, type FarmRouteRules as dD, normalizeRouteRules as dE, routeRulesToRedirects as dF, routeRulesToHeaders as dG, routeRulesToNitroRouteRules as dH, type FarmRouteRuntimeEntryKind as dI, type FarmRouteRenderingMode as dJ, type FarmRouteRuntimeManifestEntry as dK, type FarmRouteRuntimeManifest as dL, normalizeFarmRouteRuntimeConfig as dM, mergeFarmRouteRuntimeConfigs as dN, resolveFarmRouteRuntimeConfig as dO, hasFarmRouteRuntimeControls as dP, getFarmRouteRuntimeConfig as dQ, createFarmRouteRuntimeKey as dR, resolveFarmRouteRuleRuntimeConfig as dS, farmRouteRuleMatches as dT, DEFAULT_FARM_DEVTOOLS_SHORTCUT as dU, FARM_DEVTOOLS_PATH as dV, FARM_DEVTOOLS_LAUNCH_PARAM as dW, type FarmDevtoolsConfig as dX, type FarmDevtoolsUserConfig as dY, resolveFarmDevtoolsConfig as dZ, type FarmBuildActivityPosition as d_, DEFAULT_FARM_API_BASE_PATH as da, type FarmAPIConfigResolverContext as db, type FarmAPIConfigValue as dc, type FarmAPIConfig as dd, resolveFarmAPIConfig as de, normalizeFarmAPIConfig as df, normalizeFarmAPIBasePath as dg, getFarmAPIBaseURL as dh, resolveFarmAPIRequestURL as di, type MiddlewareContext as dj, type MiddlewareFunction as dk, type RequestMiddleware as dl, type RequestMiddlewareContext as dm, type MiddlewareStore as dn, type MiddlewareChain as dp, type CookieJar as dq, type CookieOptions as dr, type RateLimitConfig as ds, type RateLimitIncrementResult as dt, type RateLimitStorage as du, type RateLimitStatus as dv, type MemoryRateLimitStorageOptions as dw, type NextFunction as dx, type MiddlewareResult as dy, type FarmRouteRuleRenderMode as dz, type FarmAppContext as e, resolveFarmDevIndicatorsConfig as e0, generateFarmDevIndicatorsClientRuntime as e1, type MiddlewareConfig$1 as e2, farmI18nClientBridgePlugin as e3, withFarmRequestTracing as e4, rewriteEarlySsrRelativeImports as e5, transformIsolatedClientBoundaryModule as e6, generateClientCachePersistenceCode as e7, resolveFarmClientCacheAdapterEntry as e8, type ClientCachePersistenceEntryCode as e9, FARM_NODE_RESPONSE_END_PENDING as ea, type PageProps as f, type PluginContextProps as g, type RouteModule as h, type FarmMdxComponents as i, type FarmMdxResolvedConfig as j, type FarmMdxComponent as k, type FarmMdxUserConfig as l, type FarmUserConfig as m, type FarmContextFactory as n, type MiddlewareProps as o, type FarmIntegration as p, type FarmConfig as q, resolveMdxConfig as r, farmPlugin as s, defineConfig as t, type FarmComponentType as u, type PageRouteParams as v, type FarmMigrationCommand as w, type FarmMigrationsConfig as x, type FarmMigrationsUserConfig as y, type ResolvedFarmMigrationsConfig as z };
@@ -465,7 +465,7 @@ body {
465
465
  `;
466
466
 
467
467
  // package.json
468
- var version = "0.1.0-beta.97";
468
+ var version = "0.1.0-beta.98";
469
469
 
470
470
  // src/version.ts
471
471
  var FARM_VERSION = version;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client-plugins.ts","../src/client/runtime-error-overlay.ts","../src/components/error-styles.ts","../package.json","../src/version.ts","../src/client/chunk-recovery.ts","../src/client/plugin.ts"],"sourcesContent":["export { createClientPluginManager, FarmClientPluginManager } from \"./client/plugin\";\nexport type {\n FarmClientHydrationCompleteEvent,\n FarmClientHydrationEvent,\n FarmClientHydrationMode,\n FarmClientHydrationSession,\n FarmClientLocation,\n FarmClientNavigationAction,\n FarmClientNavigationErrorEvent,\n FarmClientNavigationEvent,\n FarmClientNavigationLoadedEvent,\n FarmClientNavigationResolvedEvent,\n FarmClientNavigationSession,\n FarmClientPerformanceEvent,\n FarmClientPlugin,\n FarmClientPluginCloseEvent,\n FarmClientPluginEnforce,\n FarmClientPluginErrorEvent,\n FarmClientPluginErrorPhase,\n FarmClientPluginManagerOptions,\n FarmClientPluginMetadata,\n FarmClientPluginRegistration,\n FarmClientPluginRouter,\n FarmClientPluginSetupEvent,\n FarmClientPluginStateEvent,\n} from \"./client/plugin\";\nexport type {\n FarmPlugin,\n FarmPluginContext,\n FarmRequestPluginContext,\n FarmRequestStore,\n} from \"./plugin\";\n","\"use client\";\n\nimport {\n originalPositionFor,\n sourceContentFor,\n TraceMap,\n type SourceMapInput,\n} from \"@jridgewell/trace-mapping\";\nimport { DEFAULT_ERROR_STYLES } from \"../components/error-styles\";\nimport { FARM_VERSION } from \"../version\";\nimport { isChunkLoadError } from \"./chunk-recovery\";\n\nexport interface FarmRuntimeErrorLocation {\n href: string;\n pathname: string;\n search: string;\n hash: string;\n}\n\nexport interface FarmRuntimeErrorOverlayContext {\n phase: string;\n location: FarmRuntimeErrorLocation;\n sourceEvent?: Event;\n}\n\nexport interface FarmRuntimeErrorOverlayOptions {\n window: Window;\n farmVersion?: string;\n reload?: () => void;\n fetch?: typeof fetch;\n}\n\nexport interface FarmRuntimeErrorOverlay {\n show(error: unknown, context: FarmRuntimeErrorOverlayContext): void;\n dismiss(): void;\n destroy(): void;\n}\n\ninterface NormalizedRuntimeError {\n name: string;\n message: string;\n stack?: string;\n}\n\ninterface BrowserSourceLocation {\n url: string;\n displayPath: string;\n line: number;\n column: number;\n stackLine?: string;\n}\n\ninterface BrowserSourceLine {\n number?: number;\n content: string;\n highlight?: boolean;\n}\n\ninterface BrowserSourceFrame {\n path: string;\n line?: number;\n column?: number;\n lines: BrowserSourceLine[];\n unavailable?: boolean;\n}\n\ninterface RuntimeErrorRecord {\n error: NormalizedRuntimeError;\n context: FarmRuntimeErrorOverlayContext;\n fingerprint: string;\n occurrences: number;\n sourceLocation?: BrowserSourceLocation;\n sourceFrame: BrowserSourceFrame;\n}\n\nconst OVERLAY_STYLES = `\n:host {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.farm-runtime-error__viewport {\n width: 100%;\n height: 100%;\n overflow: auto;\n overscroll-behavior: contain;\n}\n\n.farm-runtime-error__viewport .farm-default-error {\n min-height: 100%;\n padding: clamp(22px, 4vh, 36px) 24px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__code {\n font-size: clamp(96px, 10vw, 120px);\n line-height: 0.92;\n}\n\n.farm-runtime-error__viewport .farm-default-error__eyebrow {\n margin-top: 22px;\n margin-bottom: 18px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__summary {\n margin-bottom: 20px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__row {\n min-height: 48px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__details {\n padding-top: 16px;\n padding-bottom: 14px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__details-header {\n margin-bottom: 8px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__source-path {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__source-code {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__meta {\n margin-top: 10px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__actions {\n margin-top: 20px;\n}\n\n.farm-runtime-error__occurrences {\n display: inline-flex;\n align-items: center;\n min-height: 24px;\n margin-right: auto;\n padding: 0 8px;\n border: 1px solid var(--farm-error-line);\n color: var(--farm-error-muted);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.farm-runtime-error__occurrences[hidden],\n.farm-runtime-error__action[hidden] {\n display: none;\n}\n\n.farm-runtime-error__copy {\n min-width: 166px;\n}\n\n.farm-runtime-error__action:focus {\n outline: 1px solid var(--farm-error-fg);\n outline-offset: 2px;\n}\n\n.farm-runtime-error__viewport .farm-default-error__panel {\n border: 0;\n box-shadow: inset 0 0 0 0.5px var(--farm-error-line-strong);\n}\n\n.farm-runtime-error__github-icon {\n display: block;\n width: 18px;\n height: 18px;\n flex: 0 0 auto;\n margin-right: 10px;\n color: currentColor;\n}\n\n.farm-runtime-error__message-value {\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n}\n\n.farm-runtime-error__inline-code {\n color: var(--farm-error-source-marker);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.94em;\n font-weight: 600;\n line-height: inherit;\n overflow-wrap: anywhere;\n}\n\n@media (max-width: 620px) {\n .farm-runtime-error__occurrences {\n margin-right: 0;\n }\n\n .farm-runtime-error__viewport .farm-default-error__content,\n .farm-runtime-error__viewport .farm-default-error__panel,\n .farm-runtime-error__viewport .farm-default-error__details,\n .farm-runtime-error__viewport .farm-default-error__source,\n .farm-runtime-error__viewport .farm-default-error__actions {\n min-width: 0;\n max-width: 100%;\n }\n\n .farm-runtime-error__viewport .farm-default-error__actions {\n width: 100%;\n }\n\n .farm-runtime-error__viewport .farm-default-error__action {\n min-width: 0;\n }\n\n .farm-runtime-error__viewport .farm-default-error__code {\n font-size: 80px;\n }\n}\n\n@media (max-height: 760px) {\n .farm-runtime-error__viewport .farm-default-error {\n place-items: start center;\n padding-top: 12px;\n padding-bottom: 12px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__code {\n font-size: 88px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__eyebrow {\n margin-top: 14px;\n margin-bottom: 12px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__summary {\n margin-bottom: 14px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__row {\n min-height: 42px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__details {\n padding-top: 12px;\n padding-bottom: 10px;\n }\n\n .farm-runtime-error__viewport .farm-default-error__actions {\n margin-top: 10px;\n }\n}\n`;\n\nconst OVERLAY_MARKUP = `\n<div class=\"farm-runtime-error__viewport\" data-farm-runtime-error-viewport>\n <main class=\"farm-default-error\" data-farm-runtime-error role=\"alertdialog\" aria-modal=\"true\" aria-labelledby=\"farm-runtime-error-title\" aria-describedby=\"farm-runtime-error-description\">\n <div class=\"farm-default-error__content\">\n <p class=\"farm-default-error__code\" aria-hidden=\"true\">500</p>\n <p class=\"farm-default-error__eyebrow\">Runtime error</p>\n <header class=\"farm-default-error__summary\">\n <h1 id=\"farm-runtime-error-title\" class=\"farm-default-error__title\">Application failed in the browser</h1>\n </header>\n <section class=\"farm-default-error__panel\" aria-label=\"Error information\">\n <div class=\"farm-default-error__row\">\n <span class=\"farm-default-error__label\">Error type</span>\n <span class=\"farm-default-error__value\" data-farm-runtime-error-type></span>\n </div>\n <div class=\"farm-default-error__row\">\n <span class=\"farm-default-error__label\">Error message</span>\n <span id=\"farm-runtime-error-description\" class=\"farm-default-error__value farm-runtime-error__message-value\" data-farm-runtime-error-message></span>\n </div>\n <div class=\"farm-default-error__row\">\n <span class=\"farm-default-error__label\">Location</span>\n <span class=\"farm-default-error__value\" data-farm-runtime-error-location></span>\n </div>\n <section class=\"farm-default-error__details\" aria-labelledby=\"farm-runtime-error-details-title\">\n <div class=\"farm-default-error__details-header\">\n <h2 id=\"farm-runtime-error-details-title\" class=\"farm-default-error__details-title\">Details</h2>\n <span class=\"farm-runtime-error__occurrences\" data-farm-runtime-error-occurrences hidden></span>\n <button class=\"farm-default-error__copy farm-runtime-error__copy\" type=\"button\" data-farm-runtime-error-copy>\n <span data-farm-runtime-error-copy-label>Copy debug report</span>\n <span class=\"farm-default-error__sr-only\" aria-live=\"polite\" data-farm-runtime-error-copy-status></span>\n </button>\n </div>\n <div data-farm-runtime-error-source></div>\n <p class=\"farm-default-error__meta\" data-farm-runtime-error-meta></p>\n </section>\n </section>\n <div class=\"farm-default-error__actions\">\n <a class=\"farm-default-error__action farm-default-error__action--primary farm-runtime-error__action\" data-farm-runtime-error-issue target=\"_blank\" rel=\"noopener noreferrer\"><svg class=\"farm-runtime-error__github-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 .7a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56v-2.23c-3.22.7-3.9-1.37-3.9-1.37-.52-1.34-1.28-1.69-1.28-1.69-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.57-.29-5.27-1.29-5.27-5.68 0-1.26.45-2.28 1.18-3.09-.12-.29-.51-1.47.11-3.05 0 0 .96-.31 3.16 1.18A10.95 10.95 0 0 1 12 6.1c.98 0 1.95.13 2.87.39 2.2-1.49 3.16-1.18 3.16-1.18.62 1.58.23 2.76.11 3.05.74.81 1.18 1.83 1.18 3.09 0 4.4-2.71 5.38-5.29 5.67.42.36.79 1.07.79 2.16v3.27c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .7Z\" /></svg><span>Open GitHub issue</span></a>\n <button class=\"farm-default-error__action farm-runtime-error__action\" type=\"button\" data-farm-runtime-error-reload>Reload page</button>\n <button class=\"farm-default-error__action farm-runtime-error__action\" type=\"button\" data-farm-runtime-error-dismiss>Dismiss</button>\n </div>\n </div>\n </main>\n</div>\n`;\n\nclass DefaultFarmRuntimeErrorOverlay implements FarmRuntimeErrorOverlay {\n private readonly options: FarmRuntimeErrorOverlayOptions;\n private readonly document: Document;\n private readonly host: HTMLDivElement;\n private readonly shadow: ShadowRoot;\n private readonly dismissedFingerprints = new Set<string>();\n private readonly themeObserver: MutationObserver;\n private readonly colorSchemeQuery?: MediaQueryList;\n private current?: RuntimeErrorRecord;\n private previousFocus?: Element | null;\n private renderSequence = 0;\n private copyResetTimer?: number;\n private destroyed = false;\n\n constructor(options: FarmRuntimeErrorOverlayOptions) {\n this.options = options;\n this.document = options.window.document;\n this.host = this.document.createElement(\"div\");\n this.host.dataset.farmRuntimeErrorOverlay = \"\";\n this.host.hidden = true;\n this.shadow = this.host.attachShadow({ mode: \"open\" });\n this.shadow.innerHTML = `<style>${DEFAULT_ERROR_STYLES}${OVERLAY_STYLES}</style>${OVERLAY_MARKUP}`;\n\n this.getElement<HTMLButtonElement>(\"[data-farm-runtime-error-reload]\").addEventListener(\n \"click\",\n this.handleReload,\n );\n this.getElement<HTMLButtonElement>(\"[data-farm-runtime-error-dismiss]\").addEventListener(\n \"click\",\n this.handleDismiss,\n );\n this.getElement<HTMLButtonElement>(\"[data-farm-runtime-error-copy]\").addEventListener(\n \"click\",\n this.handleCopy,\n );\n this.shadow.addEventListener(\"keydown\", this.handleKeyDown);\n\n this.themeObserver = new MutationObserver(this.updateTheme);\n this.themeObserver.observe(this.document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\", \"data-theme\", \"data-color-scheme\", \"style\"],\n });\n if (this.document.body) {\n this.themeObserver.observe(this.document.body, {\n attributes: true,\n attributeFilter: [\"class\", \"data-theme\", \"data-color-scheme\", \"style\"],\n });\n }\n\n this.colorSchemeQuery = options.window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n this.colorSchemeQuery?.addEventListener?.(\"change\", this.updateTheme);\n this.updateTheme();\n }\n\n show(errorLike: unknown, context: FarmRuntimeErrorOverlayContext): void {\n if (this.destroyed || isChunkLoadError(errorLike) || isChunkLoadError(context.sourceEvent)) {\n return;\n }\n\n const error = normalizeRuntimeError(errorLike);\n const sourceLocation = resolveBrowserSourceLocation(\n error,\n context.sourceEvent,\n this.options.window,\n );\n if (sourceLocation && isBrowserExtensionUrl(sourceLocation.url)) return;\n if (isRecoverableReactHydrationError(error, context, sourceLocation)) return;\n\n const fingerprint = createErrorFingerprint(error, context, sourceLocation);\n if (this.dismissedFingerprints.has(fingerprint)) return;\n\n if (this.current?.fingerprint === fingerprint) {\n this.current.occurrences += 1;\n this.renderOccurrences(this.current.occurrences);\n return;\n }\n\n const record: RuntimeErrorRecord = {\n error,\n context,\n fingerprint,\n occurrences: 1,\n sourceLocation,\n sourceFrame: createFallbackSourceFrame(error, sourceLocation),\n };\n this.current = record;\n const sequence = ++this.renderSequence;\n this.render(record);\n this.mount();\n\n if (sourceLocation) {\n void loadBrowserSourceFrame(sourceLocation, this.options)\n .then((sourceFrame) => {\n if (\n !sourceFrame ||\n this.destroyed ||\n sequence !== this.renderSequence ||\n this.current !== record\n ) {\n return;\n }\n record.sourceFrame = sourceFrame;\n this.renderSourceFrame(sourceFrame);\n this.renderIssueLink(record);\n })\n .catch(() => {});\n }\n }\n\n dismiss(): void {\n if (this.destroyed || this.host.hidden) return;\n if (this.current) this.dismissedFingerprints.add(this.current.fingerprint);\n this.host.hidden = true;\n this.renderSequence += 1;\n if (this.previousFocus instanceof HTMLElement && this.previousFocus.isConnected) {\n this.previousFocus.focus();\n }\n this.previousFocus = undefined;\n }\n\n destroy(): void {\n if (this.destroyed) return;\n this.destroyed = true;\n this.renderSequence += 1;\n this.themeObserver.disconnect();\n this.colorSchemeQuery?.removeEventListener?.(\"change\", this.updateTheme);\n this.shadow.removeEventListener(\"keydown\", this.handleKeyDown);\n if (this.copyResetTimer !== undefined) {\n this.options.window.clearTimeout(this.copyResetTimer);\n }\n this.host.remove();\n this.current = undefined;\n }\n\n private mount(): void {\n if (!this.host.isConnected) {\n (this.document.body || this.document.documentElement).appendChild(this.host);\n }\n const wasHidden = this.host.hidden;\n this.host.hidden = false;\n if (wasHidden) {\n this.previousFocus = this.document.activeElement;\n this.options.window.setTimeout(() => {\n if (!this.host.hidden && !this.destroyed) {\n this.getElement<HTMLAnchorElement>(\"[data-farm-runtime-error-issue]\").focus({\n preventScroll: true,\n });\n }\n }, 0);\n }\n }\n\n private render(record: RuntimeErrorRecord): void {\n this.getElement(\"[data-farm-runtime-error-type]\").textContent = formatErrorType(\n record.error,\n record.context.phase,\n );\n renderErrorMessage(\n this.getElement(\"[data-farm-runtime-error-message]\"),\n record.error.message,\n this.document,\n );\n this.getElement(\"[data-farm-runtime-error-location]\").textContent =\n `${record.context.location.pathname}${record.context.location.search}` || \"/\";\n this.getElement(\"[data-farm-runtime-error-meta]\").textContent =\n `Farm.js v${this.options.farmVersion || FARM_VERSION} · development · browser`;\n this.renderIssueLink(record);\n this.renderOccurrences(record.occurrences);\n this.renderSourceFrame(record.sourceFrame);\n this.resetCopyStatus();\n }\n\n private renderOccurrences(occurrences: number): void {\n const badge = this.getElement<HTMLElement>(\"[data-farm-runtime-error-occurrences]\");\n badge.hidden = occurrences < 2;\n badge.textContent = occurrences < 2 ? \"\" : `Repeated ×${occurrences}`;\n }\n\n private renderIssueLink(record: RuntimeErrorRecord): void {\n this.getElement<HTMLAnchorElement>(\"[data-farm-runtime-error-issue]\").href =\n createGithubIssueUrl(record, this.options.window, this.options.farmVersion || FARM_VERSION);\n }\n\n private renderSourceFrame(sourceFrame: BrowserSourceFrame): void {\n const container = this.getElement<HTMLElement>(\"[data-farm-runtime-error-source]\");\n container.replaceChildren();\n\n const source = this.document.createElement(\"div\");\n source.className = \"farm-default-error__source\";\n\n const path = this.document.createElement(\"p\");\n path.className = \"farm-default-error__source-path\";\n path.textContent = formatSourcePath(sourceFrame);\n source.appendChild(path);\n\n const pre = this.document.createElement(\"pre\");\n pre.className = \"farm-default-error__source-code\";\n pre.tabIndex = 0;\n const code = this.document.createElement(\"code\");\n for (const line of sourceFrame.lines) {\n const row = this.document.createElement(\"span\");\n row.className = `farm-default-error__source-line${line.highlight ? \" farm-default-error__source-line--active\" : \"\"}`;\n\n const gutter = this.document.createElement(\"span\");\n gutter.className = \"farm-default-error__source-gutter\";\n gutter.textContent = `${line.highlight ? \">\" : \" \"} ${line.number ?? \"\"}`;\n\n const text = this.document.createElement(\"span\");\n text.className = \"farm-default-error__source-text\";\n text.textContent = line.content || \" \";\n\n row.append(gutter, text);\n code.appendChild(row);\n }\n pre.appendChild(code);\n source.appendChild(pre);\n container.appendChild(source);\n }\n\n private readonly handleReload = () => {\n (this.options.reload || (() => this.options.window.location.reload()))();\n };\n\n private readonly handleDismiss = () => {\n this.dismiss();\n };\n\n private readonly handleCopy = async () => {\n if (!this.current) return;\n const report = createFarmRuntimeErrorDebugReport(\n this.current,\n this.options.window,\n this.options.farmVersion || FARM_VERSION,\n );\n const label = this.getElement<HTMLElement>(\"[data-farm-runtime-error-copy-label]\");\n const status = this.getElement<HTMLElement>(\"[data-farm-runtime-error-copy-status]\");\n\n try {\n await copyText(report, this.options.window, this.document);\n label.textContent = \"Copied\";\n status.textContent = \"Debug report copied\";\n if (this.copyResetTimer !== undefined) {\n this.options.window.clearTimeout(this.copyResetTimer);\n }\n this.copyResetTimer = this.options.window.setTimeout(() => this.resetCopyStatus(), 1800);\n } catch {\n status.textContent = \"Unable to copy the debug report\";\n }\n };\n\n private readonly handleKeyDown = (event: Event) => {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key === \"Escape\") {\n keyboardEvent.preventDefault();\n this.dismiss();\n return;\n }\n if (keyboardEvent.key !== \"Tab\") return;\n\n const controls = Array.from(\n this.shadow.querySelectorAll<HTMLElement>(\"a[href], button:not([hidden]):not([disabled])\"),\n );\n if (controls.length === 0) return;\n const first = controls[0];\n const last = controls[controls.length - 1];\n const active = this.shadow.activeElement;\n\n if (keyboardEvent.shiftKey && active === first) {\n keyboardEvent.preventDefault();\n last.focus();\n } else if (!keyboardEvent.shiftKey && active === last) {\n keyboardEvent.preventDefault();\n first.focus();\n }\n };\n\n private readonly updateTheme = () => {\n this.getElement<HTMLElement>(\"[data-farm-runtime-error-viewport]\").dataset.theme =\n resolveDocumentTheme(this.document, this.options.window);\n };\n\n private resetCopyStatus(): void {\n this.getElement(\"[data-farm-runtime-error-copy-label]\").textContent = \"Copy debug report\";\n this.getElement(\"[data-farm-runtime-error-copy-status]\").textContent = \"\";\n }\n\n private getElement<T extends Element = HTMLElement>(selector: string): T {\n const element = this.shadow.querySelector<T>(selector);\n if (!element) throw new Error(`Farm runtime error overlay is missing ${selector}`);\n return element;\n }\n}\n\nexport function createFarmRuntimeErrorOverlay(\n options: FarmRuntimeErrorOverlayOptions,\n): FarmRuntimeErrorOverlay {\n return new DefaultFarmRuntimeErrorOverlay(options);\n}\n\nfunction normalizeRuntimeError(errorLike: unknown): NormalizedRuntimeError {\n if (errorLike instanceof Error) {\n return {\n name: errorLike.name || \"Error\",\n message: errorLike.message || \"An unknown browser error occurred.\",\n stack: errorLike.stack,\n };\n }\n\n if (errorLike && typeof errorLike === \"object\") {\n const error = errorLike as Record<string, unknown>;\n const name = typeof error.name === \"string\" && error.name ? error.name : \"Error\";\n const message =\n typeof error.message === \"string\" && error.message\n ? error.message\n : typeof error.reason === \"string\" && error.reason\n ? error.reason\n : stringifyUnknown(errorLike);\n return {\n name,\n message: message || \"An unknown browser error occurred.\",\n stack: typeof error.stack === \"string\" ? error.stack : undefined,\n };\n }\n\n return {\n name: \"Error\",\n message: stringifyUnknown(errorLike) || \"An unknown browser error occurred.\",\n };\n}\n\nfunction stringifyUnknown(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value == null) return \"\";\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction resolveBrowserSourceLocation(\n error: NormalizedRuntimeError,\n sourceEvent: Event | undefined,\n clientWindow: Window,\n): BrowserSourceLocation | undefined {\n if (sourceEvent && \"filename\" in sourceEvent) {\n const event = sourceEvent as ErrorEvent;\n if (event.filename && event.lineno) {\n return createSourceLocation(event.filename, event.lineno, event.colno || 1, clientWindow);\n }\n }\n\n if (!error.stack) return undefined;\n for (const stackLine of error.stack.split(\"\\n\").slice(1)) {\n const match = stackLine\n .trim()\n .match(/\\(?((?:[a-z][a-z\\d+.-]*):\\/\\/[^)\\s]+|\\/[^)\\s]+):(\\d+):(\\d+)\\)?$/i);\n if (!match) continue;\n return {\n ...createSourceLocation(match[1], Number(match[2]), Number(match[3]), clientWindow),\n stackLine: stackLine.trim(),\n };\n }\n return undefined;\n}\n\nfunction createSourceLocation(\n url: string,\n line: number,\n column: number,\n clientWindow: Window,\n): BrowserSourceLocation {\n let displayPath = url;\n try {\n const parsed = new URL(url, clientWindow.location.href);\n displayPath = parsed.origin === clientWindow.location.origin ? parsed.pathname : parsed.href;\n } catch {}\n\n return { url, displayPath, line, column };\n}\n\nfunction createFallbackSourceFrame(\n error: NormalizedRuntimeError,\n location?: BrowserSourceLocation,\n): BrowserSourceFrame {\n const firstStackLine =\n location?.stackLine || error.stack?.split(\"\\n\").find((line) => line.trim().startsWith(\"at \"));\n return {\n path: location?.displayPath || \"Browser stack\",\n line: location?.line,\n column: location?.column,\n unavailable: true,\n lines: [\n {\n number: location?.line,\n content: firstStackLine?.trim() || error.message,\n highlight: true,\n },\n ],\n };\n}\n\nasync function loadBrowserSourceFrame(\n location: BrowserSourceLocation,\n options: FarmRuntimeErrorOverlayOptions,\n): Promise<BrowserSourceFrame | undefined> {\n const request = options.fetch || options.window.fetch?.bind(options.window);\n if (!request) return undefined;\n\n let sourceUrl: URL;\n try {\n sourceUrl = new URL(location.url, options.window.location.href);\n } catch {\n return undefined;\n }\n if (\n sourceUrl.origin !== options.window.location.origin ||\n (sourceUrl.protocol !== \"http:\" && sourceUrl.protocol !== \"https:\")\n ) {\n return undefined;\n }\n\n try {\n const response = await request(sourceUrl.href, {\n headers: { Accept: \"text/plain, application/javascript\" },\n });\n if (!response.ok) return undefined;\n const source = await response.text();\n if (source.length > 1_000_000) return undefined;\n\n const mappedFrame = await createMappedSourceFrame(\n source,\n sourceUrl,\n location,\n request,\n options.window,\n );\n if (mappedFrame) return mappedFrame;\n\n return createSourceFrame(source, location.displayPath, location.line, location.column);\n } catch {\n return undefined;\n }\n}\n\nasync function createMappedSourceFrame(\n generatedSource: string,\n generatedUrl: URL,\n location: BrowserSourceLocation,\n request: typeof fetch,\n clientWindow: Window,\n): Promise<BrowserSourceFrame | undefined> {\n const traceMap = await loadTraceMap(generatedSource, generatedUrl, request, clientWindow);\n if (!traceMap) return undefined;\n\n const original = originalPositionFor(traceMap, {\n line: location.line,\n column: Math.max(0, location.column - 1),\n });\n if (!original.source || original.line == null) return undefined;\n\n const originalSource = sourceContentFor(traceMap, original.source);\n if (originalSource == null) return undefined;\n\n const originalLines = originalSource.split(/\\r?\\n/);\n const generatedLine = generatedSource.split(/\\r?\\n/)[location.line - 1] || \"\";\n const line = refineOriginalLine(generatedLine, originalLines, original.line);\n const lineContent = originalLines[line - 1] || \"\";\n const trimmedGeneratedLine = generatedLine.trim();\n const column =\n line !== original.line && trimmedGeneratedLine && lineContent.includes(trimmedGeneratedLine)\n ? lineContent.indexOf(trimmedGeneratedLine) + 1\n : (original.column ?? 0) + 1;\n\n return createSourceFrame(\n originalSource,\n formatDisplaySourceUrl(original.source, clientWindow),\n line,\n column,\n );\n}\n\nasync function loadTraceMap(\n generatedSource: string,\n generatedUrl: URL,\n request: typeof fetch,\n clientWindow: Window,\n): Promise<TraceMap | undefined> {\n const matches = Array.from(generatedSource.matchAll(/\\/\\/[#@]\\s*sourceMappingURL=([^\\s]+)/g));\n const reference = matches[matches.length - 1]?.[1];\n if (!reference) return undefined;\n\n let sourceMapJson: string;\n if (reference.startsWith(\"data:\")) {\n sourceMapJson = decodeSourceMapDataUrl(reference, clientWindow);\n } else {\n const sourceMapUrl = new URL(reference, generatedUrl);\n if (sourceMapUrl.origin !== clientWindow.location.origin) return undefined;\n const response = await request(sourceMapUrl.href, {\n headers: { Accept: \"application/json, text/plain\" },\n });\n if (!response.ok) return undefined;\n sourceMapJson = await response.text();\n if (sourceMapJson.length > 2_000_000) return undefined;\n }\n\n return new TraceMap(JSON.parse(sourceMapJson) as SourceMapInput, generatedUrl.href);\n}\n\nfunction decodeSourceMapDataUrl(value: string, clientWindow: Window): string {\n const separator = value.indexOf(\",\");\n if (separator < 0) throw new Error(\"Invalid inline source map\");\n const metadata = value.slice(0, separator);\n const payload = value.slice(separator + 1);\n if (!metadata.includes(\";base64\")) return decodeURIComponent(payload);\n\n const binary = clientWindow.atob(payload);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return new TextDecoder().decode(bytes);\n}\n\nfunction refineOriginalLine(\n generatedLine: string,\n originalLines: string[],\n mappedLine: number,\n): number {\n const normalizedGeneratedLine = normalizeSourceLine(generatedLine);\n if (normalizedGeneratedLine.length < 8) return mappedLine;\n\n let bestMatch = mappedLine;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (let index = 0; index < originalLines.length; index += 1) {\n if (normalizeSourceLine(originalLines[index]) !== normalizedGeneratedLine) continue;\n const line = index + 1;\n const distance = Math.abs(line - mappedLine);\n if (distance < bestDistance) {\n bestMatch = line;\n bestDistance = distance;\n }\n }\n return bestMatch;\n}\n\nfunction normalizeSourceLine(value: string): string {\n return value.trim().replace(/\\s+/g, \" \");\n}\n\nfunction createSourceFrame(\n source: string,\n path: string,\n line: number,\n column: number,\n): BrowserSourceFrame | undefined {\n const lines = source.split(/\\r?\\n/);\n if (line < 1 || line > lines.length) return undefined;\n const start = Math.max(1, line - 2);\n const end = Math.min(lines.length, line + 2);\n const frameLines: BrowserSourceLine[] = [];\n for (let number = start; number <= end; number += 1) {\n frameLines.push({\n number,\n content: lines[number - 1] || \" \",\n highlight: number === line,\n });\n }\n\n return { path, line, column, lines: frameLines };\n}\n\nfunction formatDisplaySourceUrl(url: string, clientWindow: Window): string {\n try {\n const parsed = new URL(url, clientWindow.location.href);\n return parsed.origin === clientWindow.location.origin ? parsed.pathname : parsed.href;\n } catch {\n return url.replace(/[?#].*$/, \"\");\n }\n}\n\nfunction isBrowserExtensionUrl(url: string): boolean {\n try {\n return [\n \"chrome-extension:\",\n \"moz-extension:\",\n \"safari-web-extension:\",\n \"ms-browser-extension:\",\n ].includes(new URL(url).protocol);\n } catch {\n return /^(?:chrome|moz|safari-web|ms-browser)-extension:\\/\\//i.test(url);\n }\n}\n\nfunction isRecoverableReactHydrationError(\n error: NormalizedRuntimeError,\n context: FarmRuntimeErrorOverlayContext,\n location?: BrowserSourceLocation,\n): boolean {\n if (context.phase !== \"window\") return false;\n\n const isKnownRecoverableMessage = [\n /^Hydration failed because the server rendered (?:text|HTML) didn't match the client\\b/i,\n /^Text content does not match server-rendered HTML\\b/i,\n /^There was an error while hydrating but React was able to recover\\b/i,\n ].some((pattern) => pattern.test(error.message));\n if (!isKnownRecoverableMessage) return false;\n\n return /(?:react-dom(?:_client)?(?:\\.development)?\\.js|react-dom\\/|throwOnHydrationMismatch|onRecoverableError)/i.test(\n `${location?.url || \"\"}\\n${error.stack || \"\"}`,\n );\n}\n\nfunction renderErrorMessage(container: Element, message: string, document: Document): void {\n const fragments: Node[] = [];\n const codePattern = /`([^`\\n]+)`|\\b[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*){2,}\\b/g;\n let offset = 0;\n\n for (const match of message.matchAll(codePattern)) {\n const index = match.index ?? 0;\n if (index > offset) fragments.push(document.createTextNode(message.slice(offset, index)));\n\n const code = document.createElement(\"code\");\n code.className = \"farm-runtime-error__inline-code\";\n code.textContent = match[1] || match[0];\n fragments.push(code);\n offset = index + match[0].length;\n }\n\n if (offset < message.length) fragments.push(document.createTextNode(message.slice(offset)));\n container.replaceChildren(...fragments);\n}\n\nfunction createErrorFingerprint(\n error: NormalizedRuntimeError,\n context: FarmRuntimeErrorOverlayContext,\n location?: BrowserSourceLocation,\n): string {\n return [\n context.phase,\n context.location.pathname,\n error.name,\n error.message,\n location?.displayPath || \"\",\n location?.line || \"\",\n error.stack?.split(\"\\n\")[1]?.trim() || \"\",\n ].join(\"\\u0000\");\n}\n\nfunction formatPhase(phase: string): string {\n return phase\n .replace(/^plugin:/, \"Plugin · \")\n .replace(/-/g, \" \")\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n\nfunction formatErrorType(error: NormalizedRuntimeError, phase: string): string {\n const category =\n phase === \"hydration\"\n ? \"Hydration\"\n : phase === \"navigation\"\n ? \"Navigation\"\n : phase === \"setup\" || phase.startsWith(\"plugin:\")\n ? \"Plugin\"\n : phase === \"performance\"\n ? \"Performance\"\n : \"Runtime\";\n const name = error.name.trim() || \"Error\";\n return `${category} ${name}`;\n}\n\nfunction formatSourcePath(sourceFrame: BrowserSourceFrame): string {\n if (!sourceFrame.line) return sourceFrame.path;\n return `${sourceFrame.path}:${sourceFrame.line}:${sourceFrame.column || 1}${\n sourceFrame.unavailable ? \" · source preview unavailable\" : \"\"\n }`;\n}\n\nfunction resolveDocumentTheme(document: Document, clientWindow: Window): \"light\" | \"dark\" {\n for (const element of [document.documentElement, document.body]) {\n if (!element) continue;\n const explicit =\n element.getAttribute(\"data-theme\") || element.getAttribute(\"data-color-scheme\");\n if (explicit === \"dark\" || element.classList.contains(\"dark\")) return \"dark\";\n if (explicit === \"light\" || element.classList.contains(\"light\")) return \"light\";\n }\n\n const colorScheme = clientWindow.getComputedStyle?.(document.documentElement).colorScheme;\n if (colorScheme?.includes(\"dark\") && !colorScheme.includes(\"light\")) return \"dark\";\n return clientWindow.matchMedia?.(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction createFarmRuntimeErrorDebugReport(\n record: RuntimeErrorRecord,\n clientWindow: Window,\n farmVersion: string,\n): string {\n const source = record.sourceFrame.lines\n .map(\n (line) =>\n `${line.highlight ? \">\" : \" \"} ${line.number ? String(line.number).padStart(4, \" \") : \" \"} | ${line.content}`,\n )\n .join(\"\\n\");\n const viewport = `${clientWindow.innerWidth}×${clientWindow.innerHeight}`;\n\n return [\n \"# Farm.js client runtime debug report\",\n \"\",\n \"## Error\",\n `- Type: ${formatErrorType(record.error, record.context.phase)}`,\n `- Message: ${record.error.message}`,\n `- Phase: ${formatPhase(record.context.phase)}`,\n `- Page: ${record.context.location.href}`,\n `- Occurrences: ${record.occurrences}`,\n \"\",\n \"## Browser runtime\",\n `- Farm.js: ${farmVersion}`,\n `- User agent: ${clientWindow.navigator.userAgent}`,\n `- Viewport: ${viewport}`,\n `- Online: ${clientWindow.navigator.onLine === false ? \"no\" : \"yes\"}`,\n \"\",\n \"## Source\",\n `\\`${formatSourcePath(record.sourceFrame)}\\``,\n \"\",\n \"```text\",\n source,\n \"```\",\n \"\",\n \"## Stack trace\",\n \"```text\",\n record.error.stack || \"Stack trace unavailable.\",\n \"```\",\n \"\",\n \"## Diagnostic request\",\n \"Identify the most likely root cause from the message, source frame, and stack trace. Explain the smallest safe fix and how to verify it.\",\n ].join(\"\\n\");\n}\n\nfunction createGithubIssueUrl(\n record: RuntimeErrorRecord,\n clientWindow: Window,\n farmVersion: string,\n): string {\n const source = record.sourceFrame.lines\n .map(\n (line) =>\n `${line.highlight ? \">\" : \" \"} ${line.number ? String(line.number).padStart(4, \" \") : \" \"} | ${line.content}`,\n )\n .join(\"\\n\");\n const body = truncateText(\n [\n \"## Runtime error report\",\n \"\",\n \"> This report was prefilled by the Farm.js development error overlay. Review it and remove sensitive information before submitting.\",\n \"\",\n \"### Error\",\n `- Type: ${formatErrorType(record.error, record.context.phase)}`,\n `- Message: ${record.error.message}`,\n `- Phase: ${formatPhase(record.context.phase)}`,\n `- Page path: ${record.context.location.pathname}`,\n `- Occurrences: ${record.occurrences}`,\n `- Farm.js: ${farmVersion}`,\n `- Browser: ${clientWindow.navigator.userAgent}`,\n `- Viewport: ${clientWindow.innerWidth}×${clientWindow.innerHeight}`,\n `- Online: ${clientWindow.navigator.onLine === false ? \"no\" : \"yes\"}`,\n \"\",\n \"### Source\",\n `\\`${formatSourcePath(record.sourceFrame)}\\``,\n \"\",\n \"```text\",\n source,\n \"```\",\n \"\",\n \"### Stack trace\",\n \"```text\",\n record.error.stack || \"Stack trace unavailable.\",\n \"```\",\n \"\",\n \"### Expected behavior\",\n \"Describe what you expected to happen and the steps needed to reproduce the failure.\",\n \"\",\n \"### Diagnostic request\",\n \"Identify the most likely root cause from the message, source frame, and stack trace. Explain the smallest safe fix and how to verify it.\",\n ].join(\"\\n\"),\n 6_000,\n );\n const issueUrl = new URL(\"https://github.com/farming-labs/farm.js/issues/new\");\n issueUrl.searchParams.set(\"title\", truncateText(`[runtime error] ${record.error.message}`, 120));\n issueUrl.searchParams.set(\"body\", body);\n return issueUrl.href;\n}\n\nfunction truncateText(value: string, maxLength: number): string {\n if (value.length <= maxLength) return value;\n return `${value.slice(0, maxLength - 24)}\\n\\n[report truncated]`;\n}\n\nasync function copyText(value: string, clientWindow: Window, document: Document): Promise<void> {\n if (clientWindow.navigator.clipboard && clientWindow.isSecureContext) {\n await clientWindow.navigator.clipboard.writeText(value);\n return;\n }\n\n const area = document.createElement(\"textarea\");\n area.value = value;\n area.readOnly = true;\n area.style.position = \"fixed\";\n area.style.opacity = \"0\";\n document.body.appendChild(area);\n area.select();\n const copied = document.execCommand(\"copy\");\n area.remove();\n if (!copied) throw new Error(\"Copy command was rejected\");\n}\n","/**\n * Shared styles for Farm's default HTTP error page.\n *\n * Kept framework-agnostic so the same fallback can be used by the development\n * renderer and generated production runtimes.\n */\nexport const DEFAULT_ERROR_STYLES = `\nbody {\n margin: 0;\n}\n\n.farm-default-error {\n --farm-error-bg: #fafafa;\n --farm-error-fg: #171717;\n --farm-error-muted: #737373;\n --farm-error-line: rgba(0, 0, 0, 0.1);\n --farm-error-line-strong: rgba(0, 0, 0, 0.22);\n --farm-error-panel: rgba(0, 0, 0, 0.018);\n --farm-error-button-fg: #ffffff;\n --farm-error-source-line: rgba(185, 28, 28, 0.08);\n --farm-error-source-marker: #b91c1c;\n min-height: 100vh;\n min-height: 100svh;\n display: grid;\n place-items: center;\n padding: clamp(28px, 6vw, 72px) 24px;\n color: var(--farm-error-fg);\n background: var(--farm-error-bg);\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n color-scheme: light;\n}\n\n.farm-default-error,\n.farm-default-error * {\n box-sizing: border-box;\n}\n\n.farm-default-error__content {\n width: min(100%, 840px);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n.farm-default-error__code {\n margin: 0;\n color: var(--farm-error-fg);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: clamp(76px, 13vw, 112px);\n font-weight: 800;\n line-height: 0.78;\n letter-spacing: -0.08em;\n text-align: center;\n transform: translateX(-3px);\n}\n\n@supports (-webkit-text-stroke: 1px currentColor) {\n .farm-default-error__code {\n color: var(--farm-error-bg);\n -webkit-text-stroke: 1.5px var(--farm-error-fg);\n text-shadow: 2px 2px 0 var(--farm-error-fg);\n }\n}\n\n.farm-default-error__eyebrow {\n width: min(100%, 590px);\n display: flex;\n align-items: center;\n align-self: center;\n gap: 16px;\n margin: 34px 0 28px;\n color: var(--farm-error-fg);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 11px;\n font-weight: 600;\n line-height: 1;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n white-space: nowrap;\n}\n\n.farm-default-error__eyebrow::before,\n.farm-default-error__eyebrow::after {\n content: \"\";\n height: 1px;\n flex: 1 1 auto;\n background: var(--farm-error-line-strong);\n}\n\n.farm-default-error__summary {\n margin-bottom: 28px;\n text-align: center;\n}\n\n.farm-default-error__title {\n margin: 0;\n font-size: clamp(20px, 3vw, 26px);\n font-weight: 540;\n line-height: 1.25;\n letter-spacing: -0.02em;\n}\n\n.farm-default-error__message {\n max-width: 680px;\n margin: 8px auto 0;\n color: var(--farm-error-muted);\n font-size: 15px;\n line-height: 1.55;\n overflow-wrap: anywhere;\n}\n\n.farm-default-error__panel {\n border: 1px solid var(--farm-error-line-strong);\n background: var(--farm-error-panel);\n}\n\n.farm-default-error__row {\n min-height: 58px;\n display: grid;\n grid-template-columns: minmax(124px, 180px) minmax(0, 1fr);\n align-items: center;\n border-bottom: 1px solid var(--farm-error-line);\n}\n\n.farm-default-error__row:last-child {\n border-bottom: 0;\n}\n\n.farm-default-error__label,\n.farm-default-error__value,\n.farm-default-error__details-title,\n.farm-default-error__source-path,\n.farm-default-error__meta {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n\n.farm-default-error__label {\n padding: 0 22px;\n color: var(--farm-error-muted);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n}\n\n.farm-default-error__value {\n min-width: 0;\n padding: 15px 22px;\n color: var(--farm-error-fg);\n font-size: 14px;\n line-height: 1.45;\n overflow-wrap: anywhere;\n}\n\n.farm-default-error__details {\n padding: 20px 22px 18px;\n}\n\n.farm-default-error__details-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 10px;\n}\n\n.farm-default-error__details-title {\n margin: 0;\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n}\n\n.farm-default-error__copy {\n min-height: 34px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 12px;\n border: 1px solid var(--farm-error-line);\n border-radius: 0;\n color: var(--farm-error-fg);\n background: transparent;\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n font-size: 12px;\n font-weight: 600;\n line-height: 1;\n letter-spacing: 0.01em;\n cursor: pointer;\n transition: border-color 150ms ease-out, background 150ms ease-out;\n}\n\n.farm-default-error__source {\n border: 1px solid var(--farm-error-line);\n background: var(--farm-error-bg);\n overflow: hidden;\n}\n\n.farm-default-error__source-path {\n margin: 0;\n padding: 11px 14px;\n border-bottom: 1px solid var(--farm-error-line);\n color: var(--farm-error-fg);\n font-size: 12px;\n line-height: 1.4;\n overflow-wrap: anywhere;\n}\n\n.farm-default-error__source-code {\n margin: 0;\n padding: 8px 0;\n overflow-x: auto;\n color: var(--farm-error-fg);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 12px;\n line-height: 1.75;\n tab-size: 2;\n}\n\n.farm-default-error__source-line {\n min-width: max-content;\n display: grid;\n grid-template-columns: 68px minmax(0, 1fr);\n padding: 0 14px 0 0;\n border-left: 1px solid transparent;\n}\n\n.farm-default-error__source-line--active {\n border-left-color: var(--farm-error-source-marker);\n background: var(--farm-error-source-line);\n}\n\n.farm-default-error__source-gutter {\n padding-right: 14px;\n color: var(--farm-error-muted);\n text-align: right;\n user-select: none;\n}\n\n.farm-default-error__source-line--active .farm-default-error__source-gutter {\n color: var(--farm-error-source-marker);\n}\n\n.farm-default-error__source-text {\n white-space: pre;\n}\n\n.farm-default-error__details-empty {\n margin: 0;\n padding: 15px;\n border: 1px solid var(--farm-error-line);\n color: var(--farm-error-muted);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 12px;\n line-height: 1.5;\n}\n\n.farm-default-error__meta {\n margin: 14px 0 0;\n color: var(--farm-error-muted);\n font-size: 10px;\n line-height: 1.5;\n letter-spacing: 0.04em;\n text-align: center;\n}\n\n.farm-default-error__actions {\n display: flex;\n justify-content: center;\n gap: 12px;\n margin-top: 28px;\n}\n\n.farm-default-error__action {\n min-width: 152px;\n min-height: 44px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 20px;\n border: 1px solid var(--farm-error-line-strong);\n border-radius: 0;\n color: var(--farm-error-fg);\n background: transparent;\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n font-size: 13px;\n font-weight: 600;\n line-height: 1;\n letter-spacing: 0.01em;\n text-decoration: none;\n cursor: pointer;\n transition: opacity 150ms ease-out, transform 100ms ease-out;\n}\n\n.farm-default-error__action--primary {\n border-color: var(--farm-error-fg);\n color: var(--farm-error-button-fg);\n background: var(--farm-error-fg);\n}\n\n.farm-default-error__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .farm-default-error__copy:hover {\n border-color: var(--farm-error-line-strong);\n background: var(--farm-error-panel);\n }\n\n .farm-default-error__action:hover {\n opacity: 0.76;\n }\n}\n\n.farm-default-error__copy:active,\n.farm-default-error__action:active {\n transform: translateY(1px);\n}\n\n.farm-default-error__copy:focus-visible,\n.farm-default-error__action:focus-visible {\n outline: 1px solid var(--farm-error-fg);\n outline-offset: 2px;\n}\n\n@media (max-width: 620px) {\n .farm-default-error {\n place-items: start center;\n padding: 48px 16px 32px;\n }\n\n .farm-default-error__eyebrow {\n margin-top: 28px;\n }\n\n .farm-default-error__row {\n grid-template-columns: 1fr;\n gap: 5px;\n padding: 14px 16px;\n }\n\n .farm-default-error__label,\n .farm-default-error__value {\n padding: 0;\n }\n\n .farm-default-error__details {\n padding: 16px;\n }\n\n .farm-default-error__details-header {\n align-items: flex-start;\n flex-direction: column;\n }\n\n .farm-default-error__copy {\n width: 100%;\n }\n\n .farm-default-error__source-line {\n grid-template-columns: 56px minmax(0, 1fr);\n }\n\n .farm-default-error__actions {\n flex-direction: column;\n }\n\n .farm-default-error__action {\n width: 100%;\n }\n}\n\n@media (prefers-color-scheme: dark) {\n .farm-default-error {\n --farm-error-bg: #0a0a0a;\n --farm-error-fg: #ededed;\n --farm-error-muted: #a1a1a1;\n --farm-error-line: rgba(255, 255, 255, 0.1);\n --farm-error-line-strong: rgba(255, 255, 255, 0.22);\n --farm-error-panel: rgba(255, 255, 255, 0.018);\n --farm-error-button-fg: #0a0a0a;\n --farm-error-source-line: rgba(248, 113, 113, 0.12);\n --farm-error-source-marker: #f87171;\n color-scheme: dark;\n }\n}\n\n.dark .farm-default-error,\n[data-theme=\"dark\"] .farm-default-error,\n[data-color-scheme=\"dark\"] .farm-default-error {\n --farm-error-bg: #0a0a0a;\n --farm-error-fg: #ededed;\n --farm-error-muted: #a1a1a1;\n --farm-error-line: rgba(255, 255, 255, 0.1);\n --farm-error-line-strong: rgba(255, 255, 255, 0.22);\n --farm-error-panel: rgba(255, 255, 255, 0.018);\n --farm-error-button-fg: #0a0a0a;\n --farm-error-source-line: rgba(248, 113, 113, 0.12);\n --farm-error-source-marker: #f87171;\n color-scheme: dark;\n}\n\n.light .farm-default-error,\n[data-theme=\"light\"] .farm-default-error,\n[data-color-scheme=\"light\"] .farm-default-error {\n --farm-error-bg: #fafafa;\n --farm-error-fg: #171717;\n --farm-error-muted: #737373;\n --farm-error-line: rgba(0, 0, 0, 0.1);\n --farm-error-line-strong: rgba(0, 0, 0, 0.22);\n --farm-error-panel: rgba(0, 0, 0, 0.018);\n --farm-error-button-fg: #ffffff;\n --farm-error-source-line: rgba(185, 28, 28, 0.08);\n --farm-error-source-marker: #b91c1c;\n color-scheme: light;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .farm-default-error__copy,\n .farm-default-error__action {\n transition: none;\n }\n\n .farm-default-error__copy:active,\n .farm-default-error__action:active {\n transform: none;\n }\n}\n`;\n","{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.98\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"theme\": [\n \"./dist/theme/index.d.ts\"\n ],\n \"theme/client\": [\n \"./dist/theme/client.d.ts\"\n ],\n \"theme/runtime\": [\n \"./dist/theme/runtime.d.ts\"\n ],\n \"theme/server\": [\n \"./dist/theme/server.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"instrumentation\": [\n \"./dist/instrumentation.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-query\": [\n \"./dist/server-query.d.ts\"\n ],\n \"server-query/client\": [\n \"./dist/server-query-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"font\": [\n \"./dist/font.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"css\": [\n \"./types/css.d.ts\"\n ],\n \"image\": [\n \"./types/image.d.ts\",\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/product-telemetry-runtime\": [\n \"./dist/internal/product-telemetry-runtime.d.ts\"\n ],\n \"internal/metadata-image-runtime\": [\n \"./dist/internal/metadata-image-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/isolated-boundary\": [\n \"./dist/internal/isolated-boundary.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"renderer\": [\n \"./dist/renderer.d.ts\"\n ],\n \"renderer-client\": [\n \"./dist/renderer-client.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"client/lifecycle\": [\n \"./dist/client/lifecycle.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./renderer\": {\n \"types\": \"./dist/renderer.d.ts\",\n \"import\": \"./dist/renderer.mjs\",\n \"require\": \"./dist/renderer.cjs\"\n },\n \"./renderer-client\": {\n \"types\": \"./dist/renderer-client.d.ts\",\n \"import\": \"./dist/renderer-client.mjs\",\n \"require\": \"./dist/renderer-client.cjs\"\n },\n \"./renderer/react/server\": {\n \"types\": \"./dist/renderer/react/server.d.ts\",\n \"import\": \"./dist/renderer/react/server.mjs\",\n \"require\": \"./dist/renderer/react/server.cjs\"\n },\n \"./renderer/react/client\": {\n \"types\": \"./dist/renderer/react/client.d.ts\",\n \"import\": \"./dist/renderer/react/client.mjs\",\n \"require\": \"./dist/renderer/react/client.cjs\"\n },\n \"./renderer/react/vite\": {\n \"types\": \"./dist/renderer/react/vite.d.ts\",\n \"import\": \"./dist/renderer/react/vite.mjs\",\n \"require\": \"./dist/renderer/react/vite.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./client/lifecycle\": {\n \"types\": \"./dist/client/lifecycle.d.ts\",\n \"import\": \"./dist/client/lifecycle.mjs\",\n \"require\": \"./dist/client/lifecycle.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./theme\": {\n \"types\": \"./dist/theme/index.d.ts\",\n \"import\": \"./dist/theme/index.mjs\",\n \"require\": \"./dist/theme/index.cjs\"\n },\n \"./theme/client\": {\n \"types\": \"./dist/theme/client.d.ts\",\n \"import\": \"./dist/theme/client.mjs\",\n \"require\": \"./dist/theme/client.cjs\"\n },\n \"./theme/runtime\": {\n \"types\": \"./dist/theme/runtime.d.ts\",\n \"import\": \"./dist/theme/runtime.mjs\",\n \"require\": \"./dist/theme/runtime.cjs\"\n },\n \"./theme/server\": {\n \"types\": \"./dist/theme/server.d.ts\",\n \"import\": \"./dist/theme/server.mjs\",\n \"require\": \"./dist/theme/server.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./instrumentation\": {\n \"types\": \"./dist/instrumentation.d.ts\",\n \"import\": \"./dist/instrumentation.mjs\",\n \"require\": \"./dist/instrumentation.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./font\": {\n \"types\": \"./dist/font.d.ts\",\n \"import\": \"./dist/font.mjs\",\n \"require\": \"./dist/font.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./css\": {\n \"types\": \"./types/css.d.ts\"\n },\n \"./image\": {\n \"types\": \"./types/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/product-telemetry-runtime\": {\n \"types\": \"./dist/internal/product-telemetry-runtime.d.ts\",\n \"import\": \"./dist/internal/product-telemetry-runtime.mjs\",\n \"require\": \"./dist/internal/product-telemetry-runtime.cjs\"\n },\n \"./internal/metadata-image-runtime\": {\n \"types\": \"./dist/internal/metadata-image-runtime.d.ts\",\n \"import\": \"./dist/internal/metadata-image-runtime.mjs\",\n \"require\": \"./dist/internal/metadata-image-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/isolated-boundary\": {\n \"types\": \"./dist/internal/isolated-boundary.d.ts\",\n \"import\": \"./dist/internal/isolated-boundary.mjs\",\n \"require\": \"./dist/internal/isolated-boundary.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@jridgewell/trace-mapping\": \"0.3.31\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@opentelemetry/api\": \"1.9.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vercel/og\": \"0.11.1\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"es-module-lexer\": \"2.0.0\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@farm.js/otel\": \"workspace:*\",\n \"@farm.js/renderer-tests\": \"workspace:*\",\n \"@opentelemetry/sdk-node\": \"0.221.0\",\n \"@opentelemetry/sdk-trace-base\": \"2.10.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^3.2.7\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^3.2.7\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n },\n \"react-dom\": {\n \"optional\": true\n }\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n },\n \"engines\": {\n \"node\": \">=22.13.0\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n","\"use client\";\n\nexport interface FarmChunkRecoveryOptions {\n /**\n * How long a page is considered already recovered before another chunk\n * failure may trigger a reload. Defaults to 30 seconds.\n */\n maxAgeMs?: number;\n /**\n * Override the storage key. Mostly useful for tests and embedded runtimes.\n */\n storageKey?: string;\n /**\n * Called right before Farm reloads the page.\n */\n onRecover?: (error: unknown) => void;\n /**\n * Test hooks for browser globals.\n */\n reload?: () => void;\n storage?: Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null;\n location?: Pick<Location, \"pathname\" | \"search\" | \"reload\">;\n now?: () => number;\n}\n\nconst DEFAULT_MAX_AGE_MS = 30_000;\nconst STORAGE_KEY_PREFIX = \"farm:chunk-recovery:\";\nconst CHUNK_ERROR_PATTERNS = [\n /ChunkLoadError/i,\n /Loading chunk [\\w-]+ failed/i,\n /Loading CSS chunk [\\w-]+ failed/i,\n /CSS_CHUNK_LOAD_FAILED/i,\n /failed to fetch dynamically imported module/i,\n /error loading dynamically imported module/i,\n /importing a module script failed/i,\n /unable to preload CSS/i,\n /module script failed/i,\n];\n\nexport function isChunkLoadError(errorLike: unknown): boolean {\n const values = collectErrorText(errorLike);\n if (values.some((value) => CHUNK_ERROR_PATTERNS.some((pattern) => pattern.test(value)))) {\n return true;\n }\n\n // Only treat same-origin script/style failures as chunk errors. A blocked\n // or missing third-party asset (analytics, embeds) is not fixable by\n // reloading, and reloading for it would loop for as long as it keeps\n // failing.\n const targetUrl = getEventTargetAssetUrl(errorLike);\n return Boolean(\n targetUrl && /\\.(?:m?js|css)(?:[?#].*)?$/i.test(targetUrl) && isSameOriginAssetUrl(targetUrl),\n );\n}\n\nfunction isSameOriginAssetUrl(url: string): boolean {\n if (typeof window === \"undefined\" || !window.location) {\n return false;\n }\n\n try {\n return new URL(url, window.location.href).origin === window.location.origin;\n } catch {\n return false;\n }\n}\n\nexport function installChunkErrorRecovery(options: FarmChunkRecoveryOptions = {}): () => void {\n if (typeof window === \"undefined\") {\n return () => {};\n }\n\n const recover = (errorLike: unknown) => {\n if (!isChunkLoadError(errorLike)) {\n return;\n }\n if (!markRecovered(options)) {\n return;\n }\n\n options.onRecover?.(errorLike);\n getReload(options)();\n };\n\n const onError = (event: Event | ErrorEvent) => {\n recover(getErrorEventPayload(event));\n };\n const onUnhandledRejection = (event: PromiseRejectionEvent) => {\n recover(event.reason);\n };\n\n window.addEventListener(\"error\", onError, true);\n window.addEventListener(\"unhandledrejection\", onUnhandledRejection);\n\n return () => {\n window.removeEventListener(\"error\", onError, true);\n window.removeEventListener(\"unhandledrejection\", onUnhandledRejection);\n };\n}\n\nfunction markRecovered(options: FarmChunkRecoveryOptions): boolean {\n const now = getNow(options);\n const maxAgeMs = options.maxAgeMs ?? DEFAULT_MAX_AGE_MS;\n const storage = getStorage(options);\n const key = getStorageKey(options);\n\n if (!storage) {\n return true;\n }\n\n try {\n const previous = Number(storage.getItem(key));\n if (Number.isFinite(previous) && previous > 0 && now - previous < maxAgeMs) {\n return false;\n }\n storage.setItem(key, String(now));\n return true;\n } catch {\n return true;\n }\n}\n\nfunction getErrorEventPayload(event: Event | ErrorEvent): unknown {\n if (\"error\" in event && event.error) {\n return event.error;\n }\n if (\"message\" in event && event.message) {\n return event.message;\n }\n return event;\n}\n\nfunction collectErrorText(value: unknown, seen = new Set<unknown>()): string[] {\n if (value == null || seen.has(value)) {\n return [];\n }\n seen.add(value);\n\n if (typeof value === \"string\") {\n return [value];\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return [String(value)];\n }\n if (typeof value !== \"object\") {\n return [];\n }\n\n const record = value as Record<string, unknown>;\n const output: string[] = [];\n\n for (const key of [\"name\", \"message\", \"code\", \"type\", \"request\", \"src\", \"href\"]) {\n const candidate = record[key];\n if (typeof candidate === \"string\") {\n output.push(candidate);\n }\n }\n\n if (\"reason\" in record) {\n output.push(...collectErrorText(record.reason, seen));\n }\n if (\"error\" in record) {\n output.push(...collectErrorText(record.error, seen));\n }\n\n return output;\n}\n\nfunction getEventTargetAssetUrl(value: unknown): string | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const target = (value as Event).target as\n | (EventTarget & { src?: string; href?: string; tagName?: string })\n | null\n | undefined;\n if (!target || typeof target !== \"object\") {\n return undefined;\n }\n\n const tagName = typeof target.tagName === \"string\" ? target.tagName.toLowerCase() : \"\";\n if (tagName !== \"script\" && tagName !== \"link\") {\n return undefined;\n }\n\n return typeof target.src === \"string\" && target.src\n ? target.src\n : typeof target.href === \"string\" && target.href\n ? target.href\n : undefined;\n}\n\nfunction getStorage(options: FarmChunkRecoveryOptions) {\n if (\"storage\" in options) {\n return options.storage;\n }\n\n try {\n return window.sessionStorage;\n } catch {\n return null;\n }\n}\n\nfunction getStorageKey(options: FarmChunkRecoveryOptions): string {\n if (options.storageKey) {\n return options.storageKey;\n }\n\n const location = getLocation(options);\n return `${STORAGE_KEY_PREFIX}${location.pathname}${location.search}`;\n}\n\nfunction getLocation(options: FarmChunkRecoveryOptions) {\n return options.location ?? window.location;\n}\n\nfunction getReload(options: FarmChunkRecoveryOptions): () => void {\n if (options.reload) {\n return options.reload;\n }\n\n const location = getLocation(options);\n return () => location.reload();\n}\n\nfunction getNow(options: FarmChunkRecoveryOptions): number {\n return options.now ? options.now() : Date.now();\n}\n","\"use client\";\n\nimport {\n createFarmRuntimeErrorOverlay,\n type FarmRuntimeErrorOverlay,\n} from \"./runtime-error-overlay\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type FarmClientPluginEnforce = \"pre\" | \"post\";\nexport type FarmClientNavigationAction = \"push\" | \"replace\" | \"pop\";\nexport type FarmClientHydrationMode = \"hydrate\" | \"render\";\n\nexport interface FarmClientLocation {\n href: string;\n pathname: string;\n search: string;\n hash: string;\n}\n\nexport interface FarmClientPluginRouter {\n navigate(href: string, options?: Record<string, unknown>): MaybePromise<void>;\n /** Re-render the current URL from fresh server data without replacing the document shell. */\n refresh?(options?: Record<string, unknown>): MaybePromise<void>;\n prefetch?(href: string): MaybePromise<void>;\n clearCache?(): void;\n getNavigationState?(): unknown;\n}\n\nexport interface FarmClientPluginMetadata {\n name: string;\n version?: string;\n}\n\nexport interface FarmClientPluginSetupEvent<TPublic = undefined> {\n plugin: FarmClientPluginMetadata;\n public: Readonly<TPublic>;\n router: FarmClientPluginRouter;\n isDev: boolean;\n isProd: boolean;\n deploymentId?: string;\n}\n\nexport interface FarmClientPluginStateEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientPluginSetupEvent<TPublic> {\n state: TState;\n}\n\nexport interface FarmClientHydrationSession {\n container: Element;\n location: FarmClientLocation;\n mode: FarmClientHydrationMode;\n startedAt: number;\n}\n\nexport interface FarmClientHydrationEvent<TState = unknown, TPublic = undefined>\n extends FarmClientPluginStateEvent<TState, TPublic>, FarmClientHydrationSession {}\n\nexport interface FarmClientHydrationCompleteEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientHydrationEvent<TState, TPublic> {\n durationMs: number;\n recovered: boolean;\n}\n\nexport interface FarmClientNavigationSession {\n id: string;\n from: FarmClientLocation | null;\n to: FarmClientLocation;\n action: FarmClientNavigationAction;\n signal: AbortSignal;\n startedAt: number;\n route?: {\n pattern?: string | null;\n params?: Record<string, string>;\n };\n}\n\nexport interface FarmClientNavigationEvent<TState = unknown, TPublic = undefined>\n extends FarmClientPluginStateEvent<TState, TPublic>, FarmClientNavigationSession {}\n\nexport interface FarmClientNavigationLoadedEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientNavigationEvent<TState, TPublic> {\n durationMs: number;\n data?: unknown;\n}\n\nexport interface FarmClientNavigationResolvedEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientNavigationEvent<TState, TPublic> {\n durationMs: number;\n}\n\nexport interface FarmClientNavigationErrorEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientNavigationResolvedEvent<TState, TPublic> {\n error: unknown;\n}\n\nexport type FarmClientPluginErrorPhase =\n | \"setup\"\n | \"hydration\"\n | \"navigation\"\n | \"window\"\n | \"unhandled-rejection\"\n | \"performance\"\n | `plugin:${string}`\n | (string & {});\n\nexport interface FarmClientPluginErrorEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientPluginStateEvent<TState, TPublic> {\n error: unknown;\n phase: FarmClientPluginErrorPhase;\n location: FarmClientLocation;\n navigation?: FarmClientNavigationSession;\n}\n\nexport interface FarmClientPerformanceEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientPluginStateEvent<TState, TPublic> {\n entry: PerformanceEntry;\n location: FarmClientLocation;\n}\n\nexport interface FarmClientPluginCloseEvent<\n TState = unknown,\n TPublic = undefined,\n> extends FarmClientPluginStateEvent<TState, TPublic> {\n reason: \"pagehide\" | \"hmr\" | \"manual\" | (string & {});\n}\n\nexport interface FarmClientPlugin<TState = unknown, TPublic = undefined> {\n setup?(event: FarmClientPluginSetupEvent<TPublic>): MaybePromise<TState>;\n hydration?: {\n before?(event: FarmClientHydrationEvent<TState, TPublic>): MaybePromise<void>;\n after?(event: FarmClientHydrationCompleteEvent<TState, TPublic>): MaybePromise<void>;\n };\n navigation?: {\n before?(event: FarmClientNavigationEvent<TState, TPublic>): MaybePromise<void>;\n loaded?(event: FarmClientNavigationLoadedEvent<TState, TPublic>): MaybePromise<void>;\n resolved?(event: FarmClientNavigationResolvedEvent<TState, TPublic>): MaybePromise<void>;\n rendered?(event: FarmClientNavigationResolvedEvent<TState, TPublic>): MaybePromise<void>;\n error?(event: FarmClientNavigationErrorEvent<TState, TPublic>): MaybePromise<void>;\n };\n error?(event: FarmClientPluginErrorEvent<TState, TPublic>): MaybePromise<void>;\n performance?(event: FarmClientPerformanceEvent<TState, TPublic>): MaybePromise<void>;\n close?(event: FarmClientPluginCloseEvent<TState, TPublic>): MaybePromise<void>;\n}\n\nexport interface FarmClientPluginRegistration<TPublic = undefined> {\n name: string;\n version?: string;\n enforce?: FarmClientPluginEnforce;\n definition: FarmClientPlugin<any, TPublic>;\n public?: TPublic;\n}\n\n/**\n * Define the lifecycle for an application's auto-discovered `src/client.ts`\n * entry. The identity helper preserves state inference while keeping the\n * module entirely in the browser bundle.\n */\nexport function defineClient<TState = unknown, TPublic = undefined>(\n definition: FarmClientPlugin<TState, TPublic>,\n): FarmClientPlugin<TState, TPublic> {\n return definition;\n}\n\nexport interface FarmClientPluginManagerOptions {\n router: FarmClientPluginRouter;\n isDev?: boolean;\n isProd?: boolean;\n deploymentId?: string;\n window?: Window;\n}\n\ninterface FarmClientPluginInstance {\n registration: FarmClientPluginRegistration<any>;\n plugin: FarmClientPlugin<any, any>;\n state: unknown;\n}\n\nconst PERFORMANCE_ENTRY_TYPES = [\n \"navigation\",\n \"paint\",\n \"largest-contentful-paint\",\n \"layout-shift\",\n \"event\",\n];\n\nexport class FarmClientPluginManager {\n private readonly registrations: FarmClientPluginRegistration[];\n private readonly options: FarmClientPluginManagerOptions;\n private readonly instances: FarmClientPluginInstance[] = [];\n private readonly performanceObservers: PerformanceObserver[] = [];\n private startPromise?: Promise<void>;\n private closePromise?: Promise<void>;\n private currentNavigation?: {\n controller: AbortController;\n session: FarmClientNavigationSession;\n };\n private navigationSequence = 0;\n private starting = false;\n private started = false;\n private closed = false;\n private readonly reportedErrors = new WeakSet<object>();\n private readonly runtimeErrorOverlay?: FarmRuntimeErrorOverlay;\n\n private readonly handleWindowError = (event: ErrorEvent) => {\n const error = event.error ?? new Error(event.message || \"Unknown browser error\");\n void this.reportError(error, \"window\", undefined, this.getLocation(), event);\n };\n\n private readonly handleUnhandledRejection = (event: PromiseRejectionEvent) => {\n void this.reportError(\n event.reason,\n \"unhandled-rejection\",\n undefined,\n this.getLocation(),\n event,\n );\n };\n\n private readonly handlePageHide = () => {\n void this.close(\"pagehide\");\n };\n\n constructor(\n registrations: readonly FarmClientPluginRegistration[],\n options: FarmClientPluginManagerOptions,\n ) {\n this.registrations = sortRegistrations(registrations);\n this.options = {\n ...options,\n isDev: options.isDev ?? false,\n isProd: options.isProd ?? !options.isDev,\n window: options.window ?? (typeof window !== \"undefined\" ? window : undefined),\n };\n if (this.options.isDev && this.options.window) {\n this.runtimeErrorOverlay = createFarmRuntimeErrorOverlay({\n window: this.options.window,\n });\n }\n }\n\n start(): Promise<void> {\n if (this.startPromise) return this.startPromise;\n\n this.startPromise = Promise.resolve().then(() => this.startInternal());\n return this.startPromise;\n }\n\n async beginHydration(input: {\n container: Element;\n mode: FarmClientHydrationMode;\n }): Promise<FarmClientHydrationSession> {\n await this.start();\n const session: FarmClientHydrationSession = {\n ...input,\n location: this.getLocation(),\n startedAt: now(),\n };\n\n await this.runHook(\"hydration.before\", (instance) =>\n instance.plugin.hydration?.before?.({\n ...this.createStateEvent(instance),\n ...session,\n }),\n );\n\n return session;\n }\n\n async completeHydration(\n session: FarmClientHydrationSession,\n options: { recovered?: boolean } = {},\n ): Promise<void> {\n await this.runHook(\"hydration.after\", (instance) =>\n instance.plugin.hydration?.after?.({\n ...this.createStateEvent(instance),\n ...session,\n durationMs: now() - session.startedAt,\n recovered: options.recovered ?? false,\n }),\n );\n }\n\n async failHydration(session: FarmClientHydrationSession, error: unknown): Promise<void> {\n await this.reportError(error, \"hydration\", undefined, session.location);\n }\n\n async beginNavigation(input: {\n from?: string | URL | FarmClientLocation | null;\n to: string | URL | FarmClientLocation;\n action: FarmClientNavigationAction;\n route?: FarmClientNavigationSession[\"route\"];\n }): Promise<FarmClientNavigationSession> {\n await this.start();\n this.currentNavigation?.controller.abort(\"superseded\");\n\n const controller = new AbortController();\n const session: FarmClientNavigationSession = {\n id: `navigation:${++this.navigationSequence}`,\n from:\n input.from === null\n ? null\n : toClientLocation(input.from ?? this.getLocation().href, this.getBaseUrl()),\n to: toClientLocation(input.to, this.getBaseUrl()),\n action: input.action,\n signal: controller.signal,\n startedAt: now(),\n route: input.route,\n };\n\n this.currentNavigation = { controller, session };\n await this.runHook(\"navigation.before\", (instance) =>\n instance.plugin.navigation?.before?.({\n ...this.createStateEvent(instance),\n ...session,\n }),\n );\n\n return session;\n }\n\n async markNavigationLoaded(session: FarmClientNavigationSession, data?: unknown): Promise<void> {\n if (session.signal.aborted) return;\n await this.runHook(\"navigation.loaded\", (instance) =>\n instance.plugin.navigation?.loaded?.({\n ...this.createStateEvent(instance),\n ...session,\n data,\n durationMs: now() - session.startedAt,\n }),\n );\n }\n\n cancelNavigation(session?: FarmClientNavigationSession, reason: unknown = \"canceled\"): void {\n const current = this.currentNavigation;\n if (!current || (session && current.session !== session)) return;\n current.controller.abort(reason);\n this.currentNavigation = undefined;\n }\n\n async resolveNavigation(session: FarmClientNavigationSession): Promise<void> {\n if (session.signal.aborted) return;\n await this.runHook(\"navigation.resolved\", (instance) =>\n instance.plugin.navigation?.resolved?.({\n ...this.createStateEvent(instance),\n ...session,\n durationMs: now() - session.startedAt,\n }),\n );\n }\n\n scheduleNavigationRendered(session: FarmClientNavigationSession): Promise<void> {\n if (session.signal.aborted) return Promise.resolve();\n const clientWindow = this.options.window;\n const schedule = clientWindow?.requestAnimationFrame\n ? (callback: () => void) =>\n clientWindow.requestAnimationFrame(() => clientWindow.requestAnimationFrame(callback))\n : (callback: () => void) => setTimeout(callback, 0);\n\n return new Promise((resolve) => {\n schedule(() => {\n if (session.signal.aborted || this.closed) {\n resolve();\n return;\n }\n void this.runHook(\"navigation.rendered\", (instance) =>\n instance.plugin.navigation?.rendered?.({\n ...this.createStateEvent(instance),\n ...session,\n durationMs: now() - session.startedAt,\n }),\n ).finally(() => {\n if (this.currentNavigation?.session === session) {\n this.currentNavigation = undefined;\n }\n resolve();\n });\n });\n });\n }\n\n async failNavigation(session: FarmClientNavigationSession, error: unknown): Promise<void> {\n if (!session.signal.aborted) {\n await this.runHook(\"navigation.error\", (instance) =>\n instance.plugin.navigation?.error?.({\n ...this.createStateEvent(instance),\n ...session,\n durationMs: now() - session.startedAt,\n error,\n }),\n );\n await this.reportError(error, \"navigation\", session, session.to);\n }\n\n if (this.currentNavigation?.session === session) {\n this.currentNavigation = undefined;\n }\n }\n\n async reportError(\n error: unknown,\n phase: FarmClientPluginErrorPhase,\n navigation?: FarmClientNavigationSession,\n location = this.getLocation(),\n sourceEvent?: Event,\n ): Promise<void> {\n if (this.closed) return;\n if (isObject(error)) {\n if (this.reportedErrors.has(error)) return;\n this.reportedErrors.add(error);\n }\n\n if (!this.started && !this.starting) await this.start();\n await this.runErrorHooks({ error, phase, navigation, location }, undefined, sourceEvent);\n }\n\n close(reason: FarmClientPluginCloseEvent[\"reason\"] = \"manual\"): Promise<void> {\n if (this.closePromise) return this.closePromise;\n this.closePromise = this.closeInternal(reason);\n return this.closePromise;\n }\n\n getPlugins(): readonly FarmClientPluginMetadata[] {\n return this.instances.map(({ registration }) => ({\n name: registration.name,\n version: registration.version,\n }));\n }\n\n private async startInternal(): Promise<void> {\n if (this.started || this.closed) return;\n this.starting = true;\n\n try {\n for (const registration of this.registrations) {\n try {\n const definition = registration.definition;\n if (!definition || typeof definition !== \"object\") {\n throw new TypeError(\n `Client plugin \"${registration.name}\" does not define a lifecycle object`,\n );\n }\n\n const instance: FarmClientPluginInstance = {\n registration,\n plugin: definition,\n state: undefined,\n };\n instance.state = await definition.setup?.(this.createSetupEvent(instance));\n this.instances.push(instance);\n } catch (error) {\n this.logHookError(registration.name, \"setup\", error);\n await this.runErrorHooks({\n error,\n phase: \"setup\",\n location: this.getLocation(),\n });\n }\n }\n\n this.started = true;\n this.installBrowserListeners();\n this.installPerformanceObservers();\n } finally {\n this.starting = false;\n }\n }\n\n private installBrowserListeners(): void {\n const clientWindow = this.options.window;\n if (!clientWindow) return;\n\n if (this.runtimeErrorOverlay || this.instances.some(({ plugin }) => plugin.error)) {\n clientWindow.addEventListener(\"error\", this.handleWindowError);\n clientWindow.addEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n }\n clientWindow.addEventListener(\"pagehide\", this.handlePageHide, {\n once: true,\n });\n }\n\n private installPerformanceObservers(): void {\n if (!this.instances.some(({ plugin }) => plugin.performance)) return;\n const Observer = typeof PerformanceObserver !== \"undefined\" ? PerformanceObserver : undefined;\n if (!Observer) return;\n\n const supported = new Set(Observer.supportedEntryTypes || []);\n for (const type of PERFORMANCE_ENTRY_TYPES) {\n if (!supported.has(type)) continue;\n try {\n const observer = new Observer((list: PerformanceObserverEntryList) => {\n for (const entry of list.getEntries()) {\n void this.runHook(\"performance\", (instance) =>\n instance.plugin.performance?.({\n ...this.createStateEvent(instance),\n entry,\n location: this.getLocation(),\n }),\n );\n }\n });\n observer.observe({ type, buffered: true });\n this.performanceObservers.push(observer);\n } catch (error) {\n void this.reportError(error, \"performance\");\n }\n }\n }\n\n private async closeInternal(reason: FarmClientPluginCloseEvent[\"reason\"]): Promise<void> {\n if (this.closed) return;\n if (this.startPromise) await this.startPromise;\n this.closed = true;\n this.currentNavigation?.controller.abort(reason);\n this.currentNavigation = undefined;\n\n const clientWindow = this.options.window;\n clientWindow?.removeEventListener(\"error\", this.handleWindowError);\n clientWindow?.removeEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\n clientWindow?.removeEventListener(\"pagehide\", this.handlePageHide);\n for (const observer of this.performanceObservers) observer.disconnect();\n this.performanceObservers.length = 0;\n this.runtimeErrorOverlay?.destroy();\n\n for (const instance of [...this.instances].reverse()) {\n try {\n await instance.plugin.close?.({\n ...this.createStateEvent(instance),\n reason,\n });\n } catch (error) {\n this.logHookError(instance.registration.name, \"close\", error);\n }\n }\n }\n\n private async runHook(\n hook: string,\n invoke: (instance: FarmClientPluginInstance) => MaybePromise<void> | undefined,\n ): Promise<void> {\n for (const instance of this.instances) {\n try {\n await invoke(instance);\n } catch (error) {\n this.logHookError(instance.registration.name, hook, error);\n await this.runErrorHooks(\n {\n error,\n phase: `plugin:${hook}`,\n location: this.getLocation(),\n },\n instance,\n );\n }\n }\n }\n\n private async runErrorHooks(\n event: Pick<FarmClientPluginErrorEvent, \"error\" | \"phase\" | \"location\" | \"navigation\">,\n excluded?: FarmClientPluginInstance,\n sourceEvent?: Event,\n ): Promise<void> {\n this.runtimeErrorOverlay?.show(event.error, {\n phase: event.phase,\n location: event.location,\n sourceEvent,\n });\n for (const instance of this.instances) {\n if (instance === excluded || !instance.plugin.error) continue;\n try {\n await instance.plugin.error({\n ...this.createStateEvent(instance),\n ...event,\n });\n } catch (error) {\n this.logHookError(instance.registration.name, \"error\", error);\n }\n }\n }\n\n private createSetupEvent(\n instance: Pick<FarmClientPluginInstance, \"registration\">,\n ): FarmClientPluginSetupEvent<any> {\n return {\n plugin: {\n name: instance.registration.name,\n version: instance.registration.version,\n },\n public: readonlyPublicData(instance.registration.public),\n router: this.options.router,\n isDev: Boolean(this.options.isDev),\n isProd: Boolean(this.options.isProd),\n deploymentId: this.options.deploymentId,\n };\n }\n\n private createStateEvent(\n instance: FarmClientPluginInstance,\n ): FarmClientPluginStateEvent<any, any> {\n return {\n ...this.createSetupEvent(instance),\n state: instance.state,\n };\n }\n\n private getLocation(): FarmClientLocation {\n const href = this.options.window?.location.href ?? \"http://localhost/\";\n return toClientLocation(href, href);\n }\n\n private getBaseUrl(): string {\n return this.options.window?.location.href ?? \"http://localhost/\";\n }\n\n private logHookError(name: string, hook: string, error: unknown): void {\n console.error(`[Farm.js] Client plugin \"${name}\" failed in ${hook}:`, error);\n }\n}\n\nexport function createClientPluginManager(\n registrations: readonly FarmClientPluginRegistration[],\n options: FarmClientPluginManagerOptions,\n): FarmClientPluginManager {\n return new FarmClientPluginManager(registrations, options);\n}\n\nfunction sortRegistrations(\n registrations: readonly FarmClientPluginRegistration[],\n): FarmClientPluginRegistration[] {\n const rank = (enforce?: FarmClientPluginEnforce) =>\n enforce === \"pre\" ? 0 : enforce === \"post\" ? 2 : 1;\n return registrations\n .map((registration, index) => ({ registration, index }))\n .sort(\n (left, right) =>\n rank(left.registration.enforce) - rank(right.registration.enforce) ||\n left.index - right.index,\n )\n .map(({ registration }) => registration);\n}\n\nfunction toClientLocation(\n input: string | URL | FarmClientLocation,\n base: string,\n): FarmClientLocation {\n if (typeof input === \"object\" && \"href\" in input && \"pathname\" in input) {\n return {\n href: input.href,\n pathname: input.pathname,\n search: input.search,\n hash: input.hash,\n };\n }\n\n const url = new URL(input, base);\n return {\n href: url.href,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n}\n\nfunction readonlyPublicData<T>(value: T | undefined): Readonly<T> {\n if (value && typeof value === \"object\") {\n return Object.freeze(value);\n }\n return value as Readonly<T>;\n}\n\nfunction now(): number {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\nfunction isObject(value: unknown): value is object {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,2BAKO;;;ACDA,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","names":[]}
@@ -1,5 +1,5 @@
1
1
  export { a as FarmClientHydrationCompleteEvent, b as FarmClientHydrationEvent, d as FarmClientHydrationMode, e as FarmClientHydrationSession, f as FarmClientLocation, g as FarmClientNavigationAction, h as FarmClientNavigationErrorEvent, i as FarmClientNavigationEvent, j as FarmClientNavigationLoadedEvent, k as FarmClientNavigationResolvedEvent, l as FarmClientNavigationSession, m as FarmClientPerformanceEvent, n as FarmClientPlugin, o as FarmClientPluginCloseEvent, p as FarmClientPluginEnforce, q as FarmClientPluginErrorEvent, r as FarmClientPluginErrorPhase, F as FarmClientPluginManager, s as FarmClientPluginManagerOptions, t as FarmClientPluginMetadata, u as FarmClientPluginRegistration, v as FarmClientPluginRouter, w as FarmClientPluginSetupEvent, x as FarmClientPluginStateEvent, c as createClientPluginManager } from './lifecycle-De0vQG45.mjs';
2
- export { a as FarmPlugin, aV as FarmPluginContext, aY as FarmRequestPluginContext, aZ as FarmRequestStore } from './client-plugins-B6-07YmP.mjs';
2
+ export { a as FarmPlugin, aV as FarmPluginContext, aY as FarmRequestPluginContext, aZ as FarmRequestStore } from './client-plugins-CyTLPqjP.mjs';
3
3
  import './route-CvEr4Uc9.mjs';
4
4
  import './cache.mjs';
5
5
  import './renderer.mjs';
@@ -16,7 +16,7 @@ import './markdown.mjs';
16
16
  import './observability.mjs';
17
17
  import '@opentelemetry/api';
18
18
  import 'vite';
19
- import './workflows-ChyK_oTu.mjs';
19
+ import './workflows-BantWytQ.mjs';
20
20
  import './cron.mjs';
21
21
  import './env.mjs';
22
22
  import './navigation-errors-Dvwpzaer.mjs';
@@ -1,5 +1,5 @@
1
1
  export { a as FarmClientHydrationCompleteEvent, b as FarmClientHydrationEvent, d as FarmClientHydrationMode, e as FarmClientHydrationSession, f as FarmClientLocation, g as FarmClientNavigationAction, h as FarmClientNavigationErrorEvent, i as FarmClientNavigationEvent, j as FarmClientNavigationLoadedEvent, k as FarmClientNavigationResolvedEvent, l as FarmClientNavigationSession, m as FarmClientPerformanceEvent, n as FarmClientPlugin, o as FarmClientPluginCloseEvent, p as FarmClientPluginEnforce, q as FarmClientPluginErrorEvent, r as FarmClientPluginErrorPhase, F as FarmClientPluginManager, s as FarmClientPluginManagerOptions, t as FarmClientPluginMetadata, u as FarmClientPluginRegistration, v as FarmClientPluginRouter, w as FarmClientPluginSetupEvent, x as FarmClientPluginStateEvent, c as createClientPluginManager } from './lifecycle-De0vQG45.js';
2
- export { a as FarmPlugin, aV as FarmPluginContext, aY as FarmRequestPluginContext, aZ as FarmRequestStore } from './client-plugins-By6MVUX-.js';
2
+ export { a as FarmPlugin, aV as FarmPluginContext, aY as FarmRequestPluginContext, aZ as FarmRequestStore } from './client-plugins-D-UgzngJ.js';
3
3
  import './route-4pd-EVtw.js';
4
4
  import './cache.js';
5
5
  import './renderer.js';
@@ -16,7 +16,7 @@ import './markdown.js';
16
16
  import './observability.js';
17
17
  import '@opentelemetry/api';
18
18
  import 'vite';
19
- import './workflows-ChyK_oTu.js';
19
+ import './workflows-BantWytQ.js';
20
20
  import './cron.js';
21
21
  import './env.js';
22
22
  import './navigation-errors-Dvwpzaer.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  FarmClientPluginManager,
3
3
  createClientPluginManager
4
- } from "./chunk-UMUWR5XA.mjs";
4
+ } from "./chunk-UWQ4EEW7.mjs";
5
5
  import "./chunk-FXG2PS27.mjs";
6
- import "./chunk-J3MPQ4MQ.mjs";
6
+ import "./chunk-IHADQ6J7.mjs";
7
7
  import "./chunk-CGILA3WO.mjs";
8
8
  export {
9
9
  FarmClientPluginManager,