@farm.js/core 0.1.17 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/dist/after.cjs +12 -225
  2. package/dist/agent-runtime.cjs +83 -2800
  3. package/dist/api/client.cjs +17 -4060
  4. package/dist/api/route-manager.cjs +34 -4354
  5. package/dist/api/runtime.cjs +29 -2696
  6. package/dist/api.cjs +88 -8434
  7. package/dist/app-markdown.cjs +39 -280
  8. package/dist/app-markdown.mjs +3 -3
  9. package/dist/cache.cjs +38 -1560
  10. package/dist/chunk-22GUSVNJ.cjs +351 -0
  11. package/dist/{chunk-EN7WTEAY.mjs → chunk-2ANEVVF7.mjs} +1 -1
  12. package/dist/chunk-2CQ74SP6.cjs +13 -0
  13. package/dist/{chunk-YD4J4XCI.mjs → chunk-2GNATDDE.mjs} +1 -1
  14. package/dist/chunk-2SJ4RQ6P.cjs +57 -0
  15. package/dist/chunk-3376ZTRC.cjs +1 -0
  16. package/dist/chunk-4PNUXIVU.cjs +472 -0
  17. package/dist/chunk-4PPEPOZZ.cjs +21 -0
  18. package/dist/chunk-4ZFL5GFN.cjs +520 -0
  19. package/dist/chunk-5OVTOKGH.cjs +65 -0
  20. package/dist/chunk-5QIKR7RR.cjs +224 -0
  21. package/dist/chunk-5ZSWG4UX.cjs +127 -0
  22. package/dist/chunk-62YJ2IEB.cjs +238 -0
  23. package/dist/chunk-6EODJYCX.cjs +183 -0
  24. package/dist/chunk-6EXBPJ24.cjs +434 -0
  25. package/dist/chunk-6QQDAAAZ.cjs +38 -0
  26. package/dist/chunk-6V4TDWEC.cjs +455 -0
  27. package/dist/chunk-72ADZ6GQ.cjs +19 -0
  28. package/dist/chunk-75BRBIFP.cjs +172 -0
  29. package/dist/{chunk-ZCNJKLA2.mjs → chunk-7BC6GAL7.mjs} +1 -1
  30. package/dist/chunk-7W3CPVXS.cjs +24 -0
  31. package/dist/chunk-A6WIQH5Z.cjs +31 -0
  32. package/dist/chunk-A777V5WU.cjs +725 -0
  33. package/dist/chunk-AFOD3LYZ.cjs +377 -0
  34. package/dist/chunk-AH7HOAQ3.cjs +151 -0
  35. package/dist/chunk-AMDMVWMI.cjs +39 -0
  36. package/dist/chunk-AORPIPNB.cjs +552 -0
  37. package/dist/chunk-ARJWXNQL.cjs +256 -0
  38. package/dist/chunk-AYJR42WX.cjs +711 -0
  39. package/dist/chunk-BBVSJVBZ.cjs +600 -0
  40. package/dist/chunk-BIDYX3SL.cjs +91 -0
  41. package/dist/chunk-BYODCJD6.cjs +663 -0
  42. package/dist/chunk-C3VRMB6H.cjs +85 -0
  43. package/dist/chunk-C5GUTBZK.cjs +173 -0
  44. package/dist/chunk-CIAGU2X4.cjs +337 -0
  45. package/dist/chunk-CMGMGHUZ.cjs +27 -0
  46. package/dist/chunk-CXP5U3RW.cjs +54 -0
  47. package/dist/chunk-D2ULAULS.cjs +166 -0
  48. package/dist/chunk-D7JTOLFK.cjs +285 -0
  49. package/dist/chunk-DVM4FKZL.cjs +169 -0
  50. package/dist/chunk-DYEJQTDN.cjs +49 -0
  51. package/dist/chunk-E2ROOWQC.cjs +2225 -0
  52. package/dist/chunk-E3UK5IIB.cjs +593 -0
  53. package/dist/chunk-EM6SBQKM.cjs +470 -0
  54. package/dist/chunk-FJSWYIR7.cjs +482 -0
  55. package/dist/chunk-FK6GO24V.cjs +54 -0
  56. package/dist/{chunk-MVIWBEJF.mjs → chunk-FVZGEVTO.mjs} +7 -7
  57. package/dist/chunk-FXUUWYAX.cjs +654 -0
  58. package/dist/chunk-G3HRIVEY.cjs +395 -0
  59. package/dist/chunk-G643DQCH.cjs +13 -0
  60. package/dist/chunk-G7HXGLEC.cjs +175 -0
  61. package/dist/chunk-GDSHDTJ4.cjs +152 -0
  62. package/dist/chunk-GPVTX3HT.cjs +1415 -0
  63. package/dist/chunk-H6G5INWM.cjs +1094 -0
  64. package/dist/{chunk-DHDVMXYK.mjs → chunk-HALDNTIV.mjs} +30 -4
  65. package/dist/chunk-HBTUGXHS.cjs +180 -0
  66. package/dist/chunk-HREOKQWT.cjs +45 -0
  67. package/dist/{chunk-5QOEPUYE.mjs → chunk-HSDL2AUR.mjs} +1 -1
  68. package/dist/chunk-I4J452B7.cjs +435 -0
  69. package/dist/chunk-I57LW5VZ.cjs +94 -0
  70. package/dist/chunk-I5YBCWQ6.cjs +40 -0
  71. package/dist/chunk-I7PUUDGY.cjs +389 -0
  72. package/dist/chunk-IAMRBF3Z.cjs +86 -0
  73. package/dist/chunk-IQXFRNY2.cjs +169 -0
  74. package/dist/chunk-ISTFC3MZ.cjs +1357 -0
  75. package/dist/chunk-IXTFU4PL.cjs +2355 -0
  76. package/dist/chunk-J3LOGE4T.cjs +42 -0
  77. package/dist/chunk-J7FSKED3.cjs +93 -0
  78. package/dist/chunk-JDNHKPTD.cjs +22 -0
  79. package/dist/chunk-JSROZYYO.cjs +164 -0
  80. package/dist/chunk-K6FNHVDR.cjs +696 -0
  81. package/dist/chunk-KGZIORNL.cjs +43 -0
  82. package/dist/chunk-KR6CKSXT.cjs +15 -0
  83. package/dist/chunk-KROWKCUH.cjs +185 -0
  84. package/dist/chunk-KVFPGF2M.cjs +46 -0
  85. package/dist/{chunk-TNBAYAWO.mjs → chunk-L4DVIHOC.mjs} +1 -1
  86. package/dist/chunk-LCCBO7PJ.cjs +46 -0
  87. package/dist/chunk-LIUGYUX3.cjs +22 -0
  88. package/dist/chunk-LTNGXMQ6.cjs +55 -0
  89. package/dist/chunk-M2L4MYDQ.cjs +14 -0
  90. package/dist/chunk-MCJLA63J.cjs +1 -0
  91. package/dist/chunk-MKB2EGIR.cjs +148 -0
  92. package/dist/chunk-MQ3H6LT5.cjs +202 -0
  93. package/dist/chunk-MT763TDW.cjs +43 -0
  94. package/dist/{chunk-XWAYMDLB.mjs → chunk-MVUREHPN.mjs} +1 -1
  95. package/dist/chunk-MWSK6C4J.cjs +18 -0
  96. package/dist/chunk-MWWVKDW3.cjs +169 -0
  97. package/dist/{chunk-6VQIKZZO.mjs → chunk-N255VYFP.mjs} +1 -1
  98. package/dist/chunk-NBAHDVOJ.cjs +2040 -0
  99. package/dist/chunk-NO3WWW3N.cjs +192 -0
  100. package/dist/chunk-NSFC3LHB.cjs +10244 -0
  101. package/dist/chunk-NZKJGRB3.cjs +230 -0
  102. package/dist/chunk-OAVTUMJP.cjs +1496 -0
  103. package/dist/{chunk-SXHV42UQ.mjs → chunk-OFEY6KHO.mjs} +88 -13
  104. package/dist/chunk-OHY2ZWUG.cjs +25 -0
  105. package/dist/chunk-OI6CMLWX.cjs +47 -0
  106. package/dist/chunk-OWOUTKIJ.cjs +558 -0
  107. package/dist/chunk-OX6O6WVA.cjs +74 -0
  108. package/dist/chunk-OXSIH4D6.cjs +476 -0
  109. package/dist/chunk-OYDRPBBV.cjs +453 -0
  110. package/dist/chunk-OYEUREB6.cjs +35 -0
  111. package/dist/chunk-PCOTGFSM.cjs +139 -0
  112. package/dist/{chunk-76DG3LF3.mjs → chunk-PGQBL5DN.mjs} +1 -1
  113. package/dist/chunk-PZYCPSCC.cjs +35 -0
  114. package/dist/chunk-QBK2AA4U.cjs +445 -0
  115. package/dist/{chunk-UTBVHYS3.mjs → chunk-QBPKKQTD.mjs} +2 -2
  116. package/dist/chunk-QBPXNZGV.cjs +487 -0
  117. package/dist/chunk-QNPEUFHQ.cjs +27 -0
  118. package/dist/chunk-QZRVZSPN.cjs +236 -0
  119. package/dist/chunk-R5A5KNVX.cjs +20 -0
  120. package/dist/chunk-R5JIFR6B.cjs +42 -0
  121. package/dist/chunk-R6AIILII.cjs +193 -0
  122. package/dist/chunk-RFYO7QUD.cjs +9 -0
  123. package/dist/chunk-RG3ZOTG5.cjs +34 -0
  124. package/dist/chunk-ROUTX2E5.cjs +390 -0
  125. package/dist/chunk-RTHIVJ2G.cjs +54 -0
  126. package/dist/chunk-S27FMYAM.cjs +644 -0
  127. package/dist/chunk-S3A45T7F.cjs +166 -0
  128. package/dist/chunk-S3JO3N4H.cjs +17 -0
  129. package/dist/chunk-SK35NQKK.cjs +27 -0
  130. package/dist/chunk-SU7MH53P.cjs +180 -0
  131. package/dist/chunk-SVRTJOUF.cjs +113 -0
  132. package/dist/chunk-SWN467MP.cjs +18 -0
  133. package/dist/chunk-SYQ3MOWW.cjs +73 -0
  134. package/dist/chunk-T5CERMEH.cjs +417 -0
  135. package/dist/chunk-TFAXUHWX.cjs +206 -0
  136. package/dist/chunk-TIWHTW3Q.cjs +24 -0
  137. package/dist/chunk-TKJZFIML.cjs +20 -0
  138. package/dist/chunk-TKNSDBBN.cjs +193 -0
  139. package/dist/chunk-U4KT7QP3.cjs +23 -0
  140. package/dist/chunk-U5BMPGS3.cjs +862 -0
  141. package/dist/chunk-UJ2C4ICS.cjs +277 -0
  142. package/dist/chunk-UQZ4AYTH.cjs +168 -0
  143. package/dist/chunk-US2QVW3E.cjs +36 -0
  144. package/dist/{chunk-QGVJVSNX.mjs → chunk-V4AICMQA.mjs} +2 -2
  145. package/dist/chunk-VB6UCX3V.cjs +421 -0
  146. package/dist/chunk-VEKFLAQM.cjs +300 -0
  147. package/dist/chunk-VQDBNVOO.cjs +14 -0
  148. package/dist/chunk-W4E7WMXE.cjs +71 -0
  149. package/dist/chunk-WJ3HK3LJ.cjs +1102 -0
  150. package/dist/chunk-WMAPPDMM.cjs +28 -0
  151. package/dist/chunk-WMOGFOUJ.cjs +223 -0
  152. package/dist/chunk-WPYFSQKK.cjs +37 -0
  153. package/dist/{chunk-56DAX2BE.mjs → chunk-WZXN4R5Y.mjs} +24 -13
  154. package/dist/chunk-XDGMADQM.cjs +14225 -0
  155. package/dist/chunk-XGC343EY.cjs +443 -0
  156. package/dist/chunk-XSKZORAS.cjs +727 -0
  157. package/dist/chunk-XWAWFQFS.cjs +82 -0
  158. package/dist/chunk-Y4YMF2NQ.cjs +460 -0
  159. package/dist/chunk-Y4YWHNKU.cjs +250 -0
  160. package/dist/chunk-Y53ZSFN6.cjs +504 -0
  161. package/dist/chunk-YA6LLTIJ.cjs +411 -0
  162. package/dist/chunk-YFPGHF5F.cjs +202 -0
  163. package/dist/chunk-YJRZR7VU.cjs +28 -0
  164. package/dist/chunk-YTAABQEV.cjs +1 -0
  165. package/dist/chunk-YX3DBN4M.cjs +18 -0
  166. package/dist/chunk-YZTASLPQ.cjs +64 -0
  167. package/dist/chunk-Z5HIWVDP.cjs +2173 -0
  168. package/dist/chunk-ZEG3OPIB.cjs +93 -0
  169. package/dist/chunk-ZMN3H73H.cjs +155 -0
  170. package/dist/client/lifecycle.cjs +6 -35
  171. package/dist/client-plugins.cjs +7 -448
  172. package/dist/client.cjs +171 -9808
  173. package/dist/config.cjs +8 -36
  174. package/dist/cron.cjs +24 -491
  175. package/dist/deferred.cjs +26 -475
  176. package/dist/deployment.cjs +39 -210
  177. package/dist/devtools-5KGPDVKL.cjs +388 -0
  178. package/dist/{devtools-UFVTMQX5.mjs → devtools-FY5R7TQ4.mjs} +3 -3
  179. package/dist/devtools-client-4WAPJY5L.cjs +254 -0
  180. package/dist/devtools-ui-5GBDIGMK.cjs +1296 -0
  181. package/dist/docs.cjs +46 -5657
  182. package/dist/docs.mjs +5 -5
  183. package/dist/env-types.cjs +5 -226
  184. package/dist/env.cjs +21 -338
  185. package/dist/environment/vite.cjs +8 -372
  186. package/dist/environment.cjs +12 -94
  187. package/dist/font.cjs +13 -63
  188. package/dist/headers.cjs +7 -123
  189. package/dist/i18n/client.cjs +55 -294
  190. package/dist/i18n/index.cjs +22 -209
  191. package/dist/i18n/server.cjs +22 -745
  192. package/dist/image/server.cjs +13 -729
  193. package/dist/image/sharp.cjs +33 -171
  194. package/dist/image.cjs +41 -85
  195. package/dist/index.cjs +1151 -68080
  196. package/dist/index.mjs +14 -14
  197. package/dist/instrumentation.cjs +12 -138
  198. package/dist/integration-orm-55F7CII5.cjs +13 -0
  199. package/dist/integrations.cjs +55 -4090
  200. package/dist/internal/app-markdown-runtime.cjs +27 -224
  201. package/dist/internal/app-markdown-runtime.mjs +2 -2
  202. package/dist/internal/build-runtime.cjs +120 -52259
  203. package/dist/internal/build-runtime.mjs +13 -13
  204. package/dist/internal/cli-runtime.cjs +67 -13811
  205. package/dist/internal/cli-runtime.mjs +7 -7
  206. package/dist/internal/client-error-overlay.cjs +80 -733
  207. package/dist/internal/client-error-overlay.mjs +1 -1
  208. package/dist/internal/client-runtime.cjs +81 -913
  209. package/dist/internal/compression-runtime.cjs +8 -214
  210. package/dist/internal/config-runtime.cjs +42 -6547
  211. package/dist/internal/config-runtime.mjs +3 -3
  212. package/dist/internal/docs-precompiled-runtime.cjs +26 -46
  213. package/dist/internal/infra-analytics-runtime.cjs +10 -536
  214. package/dist/internal/isolated-boundary.cjs +14 -414
  215. package/dist/internal/metadata-image-runtime.cjs +7 -285
  216. package/dist/internal/product-telemetry-runtime.cjs +42 -97
  217. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  218. package/dist/internal/production-node-env.cjs +6 -63
  219. package/dist/internal/production-runtime.cjs +418 -7133
  220. package/dist/internal/production-runtime.mjs +3 -3
  221. package/dist/internal/request-cookies.cjs +6 -54
  222. package/dist/json-ld.cjs +24 -50
  223. package/dist/layers-E4WPJNY5.cjs +17 -0
  224. package/dist/manager-G4B2IPYE.cjs +14 -0
  225. package/dist/markdown.cjs +21 -547
  226. package/dist/markdown.mjs +1 -1
  227. package/dist/middleware.cjs +36 -2995
  228. package/dist/navigation.cjs +22 -2588
  229. package/dist/nitro-4I2MYLY2.cjs +652 -0
  230. package/dist/observability.cjs +22 -614
  231. package/dist/og.cjs +5 -28
  232. package/dist/plugin.cjs +106 -37442
  233. package/dist/plugin.mjs +9 -9
  234. package/dist/query/client.cjs +113 -449
  235. package/dist/query/index.cjs +26 -288
  236. package/dist/query/parsers.cjs +23 -247
  237. package/dist/query/server.cjs +36 -298
  238. package/dist/renderer/react/client.cjs +9 -43
  239. package/dist/renderer/react/server.cjs +40 -103
  240. package/dist/renderer/react/vite.cjs +7 -29
  241. package/dist/renderer-client.cjs +126 -4295
  242. package/dist/renderer.cjs +31 -249
  243. package/dist/request.cjs +5 -68
  244. package/dist/router.cjs +11 -474
  245. package/dist/routes.cjs +42 -2461
  246. package/dist/{schema-dev-notice-2IE2F2XI.mjs → schema-dev-notice-O67CPXJ6.mjs} +1 -1
  247. package/dist/schema-dev-notice-Y7MQEFGN.cjs +56 -0
  248. package/dist/schema.cjs +6 -33
  249. package/dist/search-client-G3RICOFU.cjs +13 -0
  250. package/dist/server-action-security.cjs +25 -541
  251. package/dist/server-fn-client.cjs +6 -337
  252. package/dist/server-fn.cjs +32 -1841
  253. package/dist/server-plugins.cjs +15 -884
  254. package/dist/server-query-client.cjs +15 -1883
  255. package/dist/server-query.cjs +16 -1838
  256. package/dist/server.cjs +296 -44681
  257. package/dist/server.mjs +11 -11
  258. package/dist/storage.cjs +57 -576
  259. package/dist/testing.cjs +89 -3186
  260. package/dist/theme/client.cjs +13 -108
  261. package/dist/theme/index.cjs +6 -68
  262. package/dist/theme/runtime.cjs +13 -78
  263. package/dist/theme/server.cjs +10 -179
  264. package/dist/version.cjs +4 -32
  265. package/dist/version.mjs +1 -1
  266. package/dist/vite.cjs +119 -37773
  267. package/dist/vite.mjs +9 -9
  268. package/dist/workflows.cjs +19 -1040
  269. package/package.json +1 -1
@@ -0,0 +1,421 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/client/plugin.ts
6
+ function defineClient(definition) {
7
+ return definition;
8
+ }
9
+ _chunkS3JO3N4Hcjs.__name.call(void 0, defineClient, "defineClient");
10
+ var PERFORMANCE_ENTRY_TYPES = [
11
+ "navigation",
12
+ "paint",
13
+ "largest-contentful-paint",
14
+ "layout-shift",
15
+ "event"
16
+ ];
17
+ var _FarmClientPluginManager = class _FarmClientPluginManager {
18
+ constructor(registrations, options) {
19
+ this.instances = [];
20
+ this.performanceObservers = [];
21
+ this.navigationSequence = 0;
22
+ this.starting = false;
23
+ this.started = false;
24
+ this.closed = false;
25
+ this.reportedErrors = /* @__PURE__ */ new WeakSet();
26
+ this.handleWindowError = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (event) => {
27
+ const error = _nullishCoalesce(event.error, () => ( new Error(event.message || "Unknown browser error")));
28
+ void this.reportError(error, "window", void 0, this.getLocation(), event);
29
+ }, "handleWindowError");
30
+ this.handleUnhandledRejection = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (event) => {
31
+ void this.reportError(
32
+ event.reason,
33
+ "unhandled-rejection",
34
+ void 0,
35
+ this.getLocation(),
36
+ event
37
+ );
38
+ }, "handleUnhandledRejection");
39
+ this.handlePageHide = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (event) => {
40
+ if (event.persisted) return;
41
+ void this.close("pagehide");
42
+ }, "handlePageHide");
43
+ this.registrations = sortRegistrations(registrations);
44
+ this.options = {
45
+ ...options,
46
+ isDev: _nullishCoalesce(options.isDev, () => ( false)),
47
+ isProd: _nullishCoalesce(options.isProd, () => ( !options.isDev)),
48
+ window: _nullishCoalesce(options.window, () => ( (typeof window !== "undefined" ? window : void 0)))
49
+ };
50
+ }
51
+ start() {
52
+ if (this.startPromise) return this.startPromise;
53
+ this.startPromise = Promise.resolve().then(() => this.startInternal());
54
+ return this.startPromise;
55
+ }
56
+ async beginHydration(input) {
57
+ await this.start();
58
+ const session = {
59
+ ...input,
60
+ location: this.getLocation(),
61
+ startedAt: now()
62
+ };
63
+ await this.runHook(
64
+ "hydration.before",
65
+ (instance) => _optionalChain([instance, 'access', _ => _.plugin, 'access', _2 => _2.hydration, 'optionalAccess', _3 => _3.before, 'optionalCall', _4 => _4({
66
+ ...this.createStateEvent(instance),
67
+ ...session
68
+ })])
69
+ );
70
+ return session;
71
+ }
72
+ async completeHydration(session, options = {}) {
73
+ await this.runHook(
74
+ "hydration.after",
75
+ (instance) => _optionalChain([instance, 'access', _5 => _5.plugin, 'access', _6 => _6.hydration, 'optionalAccess', _7 => _7.after, 'optionalCall', _8 => _8({
76
+ ...this.createStateEvent(instance),
77
+ ...session,
78
+ durationMs: now() - session.startedAt,
79
+ recovered: _nullishCoalesce(options.recovered, () => ( false))
80
+ })])
81
+ );
82
+ }
83
+ async failHydration(session, error) {
84
+ await this.reportError(error, "hydration", void 0, session.location);
85
+ }
86
+ async beginNavigation(input) {
87
+ await this.start();
88
+ _optionalChain([this, 'access', _9 => _9.currentNavigation, 'optionalAccess', _10 => _10.controller, 'access', _11 => _11.abort, 'call', _12 => _12("superseded")]);
89
+ const controller = new AbortController();
90
+ const session = {
91
+ id: `navigation:${++this.navigationSequence}`,
92
+ from: input.from === null ? null : toClientLocation(_nullishCoalesce(input.from, () => ( this.getLocation().href)), this.getBaseUrl()),
93
+ to: toClientLocation(input.to, this.getBaseUrl()),
94
+ action: input.action,
95
+ signal: controller.signal,
96
+ startedAt: now(),
97
+ route: input.route
98
+ };
99
+ this.currentNavigation = { controller, session };
100
+ await this.runHook(
101
+ "navigation.before",
102
+ (instance) => _optionalChain([instance, 'access', _13 => _13.plugin, 'access', _14 => _14.navigation, 'optionalAccess', _15 => _15.before, 'optionalCall', _16 => _16({
103
+ ...this.createStateEvent(instance),
104
+ ...session
105
+ })])
106
+ );
107
+ return session;
108
+ }
109
+ async markNavigationLoaded(session, data) {
110
+ if (session.signal.aborted) return;
111
+ await this.runHook(
112
+ "navigation.loaded",
113
+ (instance) => _optionalChain([instance, 'access', _17 => _17.plugin, 'access', _18 => _18.navigation, 'optionalAccess', _19 => _19.loaded, 'optionalCall', _20 => _20({
114
+ ...this.createStateEvent(instance),
115
+ ...session,
116
+ data,
117
+ durationMs: now() - session.startedAt
118
+ })])
119
+ );
120
+ }
121
+ cancelNavigation(session, reason = "canceled") {
122
+ const current = this.currentNavigation;
123
+ if (!current || session && current.session !== session) return;
124
+ current.controller.abort(reason);
125
+ this.currentNavigation = void 0;
126
+ }
127
+ async resolveNavigation(session) {
128
+ if (session.signal.aborted) return;
129
+ await this.runHook(
130
+ "navigation.resolved",
131
+ (instance) => _optionalChain([instance, 'access', _21 => _21.plugin, 'access', _22 => _22.navigation, 'optionalAccess', _23 => _23.resolved, 'optionalCall', _24 => _24({
132
+ ...this.createStateEvent(instance),
133
+ ...session,
134
+ durationMs: now() - session.startedAt
135
+ })])
136
+ );
137
+ }
138
+ scheduleNavigationRendered(session) {
139
+ if (session.signal.aborted) return Promise.resolve();
140
+ const clientWindow = this.options.window;
141
+ const schedule = _optionalChain([clientWindow, 'optionalAccess', _25 => _25.requestAnimationFrame]) ? (callback) => clientWindow.requestAnimationFrame(() => clientWindow.requestAnimationFrame(callback)) : (callback) => setTimeout(callback, 0);
142
+ return new Promise((resolve) => {
143
+ schedule(() => {
144
+ if (session.signal.aborted || this.closed) {
145
+ resolve();
146
+ return;
147
+ }
148
+ void this.runHook(
149
+ "navigation.rendered",
150
+ (instance) => _optionalChain([instance, 'access', _26 => _26.plugin, 'access', _27 => _27.navigation, 'optionalAccess', _28 => _28.rendered, 'optionalCall', _29 => _29({
151
+ ...this.createStateEvent(instance),
152
+ ...session,
153
+ durationMs: now() - session.startedAt
154
+ })])
155
+ ).finally(() => {
156
+ if (_optionalChain([this, 'access', _30 => _30.currentNavigation, 'optionalAccess', _31 => _31.session]) === session) {
157
+ this.currentNavigation = void 0;
158
+ }
159
+ resolve();
160
+ });
161
+ });
162
+ });
163
+ }
164
+ async failNavigation(session, error) {
165
+ if (!session.signal.aborted) {
166
+ await this.runHook(
167
+ "navigation.error",
168
+ (instance) => _optionalChain([instance, 'access', _32 => _32.plugin, 'access', _33 => _33.navigation, 'optionalAccess', _34 => _34.error, 'optionalCall', _35 => _35({
169
+ ...this.createStateEvent(instance),
170
+ ...session,
171
+ durationMs: now() - session.startedAt,
172
+ error
173
+ })])
174
+ );
175
+ await this.reportError(error, "navigation", session, session.to);
176
+ }
177
+ if (_optionalChain([this, 'access', _36 => _36.currentNavigation, 'optionalAccess', _37 => _37.session]) === session) {
178
+ this.currentNavigation = void 0;
179
+ }
180
+ }
181
+ async reportError(error, phase, navigation, location = this.getLocation(), sourceEvent) {
182
+ if (this.closed) return;
183
+ if (isObject(error)) {
184
+ if (this.reportedErrors.has(error)) return;
185
+ this.reportedErrors.add(error);
186
+ }
187
+ if (!this.started && !this.starting) await this.start();
188
+ if (this.closed) return;
189
+ await this.runErrorHooks({ error, phase, navigation, location }, void 0, sourceEvent);
190
+ }
191
+ close(reason = "manual") {
192
+ if (this.closePromise) return this.closePromise;
193
+ this.closePromise = this.closeInternal(reason);
194
+ return this.closePromise;
195
+ }
196
+ getPlugins() {
197
+ return this.instances.map(({ registration }) => ({
198
+ name: registration.name,
199
+ version: registration.version
200
+ }));
201
+ }
202
+ async startInternal() {
203
+ if (this.started || this.closed) return;
204
+ if (process.env.NODE_ENV !== "production" && this.options.isDev && this.options.window) {
205
+ try {
206
+ const { createFarmRuntimeErrorOverlay } = await import("@farm.js/core/internal/client-error-overlay");
207
+ this.runtimeErrorOverlay = createFarmRuntimeErrorOverlay({ window: this.options.window });
208
+ } catch (error) {
209
+ this.logHookError("farm:runtime-error-overlay", "load", error);
210
+ }
211
+ }
212
+ this.starting = true;
213
+ try {
214
+ for (const registration of this.registrations) {
215
+ try {
216
+ const definition = registration.definition;
217
+ if (!definition || typeof definition !== "object") {
218
+ throw new TypeError(
219
+ `Client plugin "${registration.name}" does not define a lifecycle object`
220
+ );
221
+ }
222
+ const instance = {
223
+ registration,
224
+ plugin: definition,
225
+ state: void 0
226
+ };
227
+ instance.state = await _optionalChain([definition, 'access', _38 => _38.setup, 'optionalCall', _39 => _39(this.createSetupEvent(instance))]);
228
+ this.instances.push(instance);
229
+ } catch (error) {
230
+ this.logHookError(registration.name, "setup", error);
231
+ await this.runErrorHooks({
232
+ error,
233
+ phase: "setup",
234
+ location: this.getLocation()
235
+ });
236
+ }
237
+ }
238
+ this.started = true;
239
+ this.installBrowserListeners();
240
+ this.installPerformanceObservers();
241
+ } finally {
242
+ this.starting = false;
243
+ }
244
+ }
245
+ installBrowserListeners() {
246
+ const clientWindow = this.options.window;
247
+ if (!clientWindow) return;
248
+ if (this.runtimeErrorOverlay || this.instances.some(({ plugin }) => plugin.error)) {
249
+ clientWindow.addEventListener("error", this.handleWindowError);
250
+ clientWindow.addEventListener("unhandledrejection", this.handleUnhandledRejection);
251
+ }
252
+ clientWindow.addEventListener("pagehide", this.handlePageHide);
253
+ }
254
+ installPerformanceObservers() {
255
+ if (!this.instances.some(({ plugin }) => plugin.performance)) return;
256
+ const Observer = typeof PerformanceObserver !== "undefined" ? PerformanceObserver : void 0;
257
+ if (!Observer) return;
258
+ const supported = new Set(Observer.supportedEntryTypes || []);
259
+ for (const type of PERFORMANCE_ENTRY_TYPES) {
260
+ if (!supported.has(type)) continue;
261
+ try {
262
+ const observer = new Observer((list) => {
263
+ for (const entry of list.getEntries()) {
264
+ void this.runHook(
265
+ "performance",
266
+ (instance) => _optionalChain([instance, 'access', _40 => _40.plugin, 'access', _41 => _41.performance, 'optionalCall', _42 => _42({
267
+ ...this.createStateEvent(instance),
268
+ entry,
269
+ location: this.getLocation()
270
+ })])
271
+ );
272
+ }
273
+ });
274
+ observer.observe({ type, buffered: true });
275
+ this.performanceObservers.push(observer);
276
+ } catch (error) {
277
+ void this.reportError(error, "performance");
278
+ }
279
+ }
280
+ }
281
+ async closeInternal(reason) {
282
+ if (this.closed) return;
283
+ if (this.startPromise) await this.startPromise;
284
+ this.closed = true;
285
+ _optionalChain([this, 'access', _43 => _43.currentNavigation, 'optionalAccess', _44 => _44.controller, 'access', _45 => _45.abort, 'call', _46 => _46(reason)]);
286
+ this.currentNavigation = void 0;
287
+ const clientWindow = this.options.window;
288
+ _optionalChain([clientWindow, 'optionalAccess', _47 => _47.removeEventListener, 'call', _48 => _48("error", this.handleWindowError)]);
289
+ _optionalChain([clientWindow, 'optionalAccess', _49 => _49.removeEventListener, 'call', _50 => _50("unhandledrejection", this.handleUnhandledRejection)]);
290
+ _optionalChain([clientWindow, 'optionalAccess', _51 => _51.removeEventListener, 'call', _52 => _52("pagehide", this.handlePageHide)]);
291
+ for (const observer of this.performanceObservers) observer.disconnect();
292
+ this.performanceObservers.length = 0;
293
+ _optionalChain([this, 'access', _53 => _53.runtimeErrorOverlay, 'optionalAccess', _54 => _54.destroy, 'call', _55 => _55()]);
294
+ for (const instance of [...this.instances].reverse()) {
295
+ try {
296
+ await _optionalChain([instance, 'access', _56 => _56.plugin, 'access', _57 => _57.close, 'optionalCall', _58 => _58({
297
+ ...this.createStateEvent(instance),
298
+ reason
299
+ })]);
300
+ } catch (error) {
301
+ this.logHookError(instance.registration.name, "close", error);
302
+ }
303
+ }
304
+ }
305
+ async runHook(hook, invoke) {
306
+ for (const instance of this.instances) {
307
+ try {
308
+ await invoke(instance);
309
+ } catch (error) {
310
+ this.logHookError(instance.registration.name, hook, error);
311
+ await this.runErrorHooks(
312
+ {
313
+ error,
314
+ phase: `plugin:${hook}`,
315
+ location: this.getLocation()
316
+ },
317
+ instance
318
+ );
319
+ }
320
+ }
321
+ }
322
+ async runErrorHooks(event, excluded, sourceEvent) {
323
+ _optionalChain([this, 'access', _59 => _59.runtimeErrorOverlay, 'optionalAccess', _60 => _60.show, 'call', _61 => _61(event.error, {
324
+ phase: event.phase,
325
+ location: event.location,
326
+ sourceEvent
327
+ })]);
328
+ for (const instance of this.instances) {
329
+ if (instance === excluded || !instance.plugin.error) continue;
330
+ try {
331
+ await instance.plugin.error({
332
+ ...this.createStateEvent(instance),
333
+ ...event
334
+ });
335
+ } catch (error) {
336
+ this.logHookError(instance.registration.name, "error", error);
337
+ }
338
+ }
339
+ }
340
+ createSetupEvent(instance) {
341
+ return {
342
+ plugin: {
343
+ name: instance.registration.name,
344
+ version: instance.registration.version
345
+ },
346
+ public: readonlyPublicData(instance.registration.public),
347
+ router: this.options.router,
348
+ isDev: Boolean(this.options.isDev),
349
+ isProd: Boolean(this.options.isProd),
350
+ deploymentId: this.options.deploymentId
351
+ };
352
+ }
353
+ createStateEvent(instance) {
354
+ return {
355
+ ...this.createSetupEvent(instance),
356
+ state: instance.state
357
+ };
358
+ }
359
+ getLocation() {
360
+ const href = _nullishCoalesce(_optionalChain([this, 'access', _62 => _62.options, 'access', _63 => _63.window, 'optionalAccess', _64 => _64.location, 'access', _65 => _65.href]), () => ( "http://localhost/"));
361
+ return toClientLocation(href, href);
362
+ }
363
+ getBaseUrl() {
364
+ return _nullishCoalesce(_optionalChain([this, 'access', _66 => _66.options, 'access', _67 => _67.window, 'optionalAccess', _68 => _68.location, 'access', _69 => _69.href]), () => ( "http://localhost/"));
365
+ }
366
+ logHookError(name, hook, error) {
367
+ console.error(`[Farm.js] Client plugin "${name}" failed in ${hook}:`, error);
368
+ }
369
+ };
370
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _FarmClientPluginManager, "FarmClientPluginManager");
371
+ var FarmClientPluginManager = _FarmClientPluginManager;
372
+ function createClientPluginManager(registrations, options) {
373
+ return new FarmClientPluginManager(registrations, options);
374
+ }
375
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createClientPluginManager, "createClientPluginManager");
376
+ function sortRegistrations(registrations) {
377
+ const rank = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (enforce) => enforce === "pre" ? 0 : enforce === "post" ? 2 : 1, "rank");
378
+ return registrations.map((registration, index) => ({ registration, index })).sort(
379
+ (left, right) => rank(left.registration.enforce) - rank(right.registration.enforce) || left.index - right.index
380
+ ).map(({ registration }) => registration);
381
+ }
382
+ _chunkS3JO3N4Hcjs.__name.call(void 0, sortRegistrations, "sortRegistrations");
383
+ function toClientLocation(input, base) {
384
+ if (typeof input === "object" && "href" in input && "pathname" in input) {
385
+ return {
386
+ href: input.href,
387
+ pathname: input.pathname,
388
+ search: input.search,
389
+ hash: input.hash
390
+ };
391
+ }
392
+ const url = new URL(input, base);
393
+ return {
394
+ href: url.href,
395
+ pathname: url.pathname,
396
+ search: url.search,
397
+ hash: url.hash
398
+ };
399
+ }
400
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toClientLocation, "toClientLocation");
401
+ function readonlyPublicData(value) {
402
+ if (value && typeof value === "object") {
403
+ return Object.freeze(value);
404
+ }
405
+ return value;
406
+ }
407
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readonlyPublicData, "readonlyPublicData");
408
+ function now() {
409
+ return typeof performance !== "undefined" ? performance.now() : Date.now();
410
+ }
411
+ _chunkS3JO3N4Hcjs.__name.call(void 0, now, "now");
412
+ function isObject(value) {
413
+ return typeof value === "object" && value !== null || typeof value === "function";
414
+ }
415
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isObject, "isObject");
416
+
417
+
418
+
419
+
420
+
421
+ exports.defineClient = defineClient; exports.FarmClientPluginManager = FarmClientPluginManager; exports.createClientPluginManager = createClientPluginManager;