@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,390 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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/isolated-boundary.ts
6
+ var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element");
7
+ var LEGACY_REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element");
8
+ var BOUNDARY_GRAPH_CONTEXT = /* @__PURE__ */ Symbol.for("farm.isolated-hydration.client-graph-context");
9
+ function getBoundaryGraphContext(ReactRuntime) {
10
+ const shared = globalThis;
11
+ const contexts = _nullishCoalesce(shared[BOUNDARY_GRAPH_CONTEXT], () => ( /* @__PURE__ */ new WeakMap()));
12
+ shared[BOUNDARY_GRAPH_CONTEXT] = contexts;
13
+ const runtimeIdentity = ReactRuntime.createElement;
14
+ const existing = contexts.get(runtimeIdentity);
15
+ if (existing) return existing;
16
+ const context = ReactRuntime.createContext(false);
17
+ contexts.set(runtimeIdentity, context);
18
+ return context;
19
+ }
20
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getBoundaryGraphContext, "getBoundaryGraphContext");
21
+ function serializeBoundaryProps(value, seen = /* @__PURE__ */ new Set()) {
22
+ if (value === null || typeof value === "string" || typeof value === "boolean") return value;
23
+ if (typeof value === "number") {
24
+ if (!Number.isFinite(value)) throw new TypeError("non-finite numbers are not serializable");
25
+ return value;
26
+ }
27
+ if (typeof value === "undefined") {
28
+ throw new TypeError("undefined values are not serializable");
29
+ }
30
+ if (typeof value !== "object") {
31
+ throw new TypeError(`${typeof value} values are not serializable`);
32
+ }
33
+ if (value.$$typeof === REACT_ELEMENT_TYPE || value.$$typeof === LEGACY_REACT_ELEMENT_TYPE) {
34
+ throw new TypeError("React elements cannot cross an isolated hydration boundary");
35
+ }
36
+ if (seen.has(value)) throw new TypeError("circular props are not serializable");
37
+ seen.add(value);
38
+ try {
39
+ if (Array.isArray(value)) return value.map((entry) => serializeBoundaryProps(entry, seen));
40
+ const prototype = Object.getPrototypeOf(value);
41
+ if (prototype !== Object.prototype && prototype !== null) {
42
+ throw new TypeError("class instances are not serializable");
43
+ }
44
+ return Object.fromEntries(
45
+ Object.entries(value).map(([key, entry]) => [key, serializeBoundaryProps(entry, seen)])
46
+ );
47
+ } finally {
48
+ seen.delete(value);
49
+ }
50
+ }
51
+ _chunkS3JO3N4Hcjs.__name.call(void 0, serializeBoundaryProps, "serializeBoundaryProps");
52
+ function serializeBoundaryPayload(value) {
53
+ return JSON.stringify(serializeBoundaryProps(value)).replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
54
+ }
55
+ _chunkS3JO3N4Hcjs.__name.call(void 0, serializeBoundaryPayload, "serializeBoundaryPayload");
56
+ function wrapFarmIsolatedClientGraph(ReactRuntime, element) {
57
+ const Context = getBoundaryGraphContext(ReactRuntime);
58
+ return ReactRuntime.createElement(Context.Provider, { value: true }, element);
59
+ }
60
+ _chunkS3JO3N4Hcjs.__name.call(void 0, wrapFarmIsolatedClientGraph, "wrapFarmIsolatedClientGraph");
61
+ function isolateFarmServerPageGraph(ReactRuntime, element) {
62
+ const Context = getBoundaryGraphContext(ReactRuntime);
63
+ return ReactRuntime.createElement(Context.Provider, { value: false }, element);
64
+ }
65
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isolateFarmServerPageGraph, "isolateFarmServerPageGraph");
66
+ function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReference, exportName, islandStrategy) {
67
+ function FarmIsolatedClientBoundary(props) {
68
+ const Context = getBoundaryGraphContext(ReactRuntime);
69
+ const belongsToParentClientGraph = ReactRuntime.useContext(Context);
70
+ const boundaryId = ReactRuntime.useId();
71
+ if (belongsToParentClientGraph) {
72
+ return ReactRuntime.createElement(Component, props);
73
+ }
74
+ let serializedProps;
75
+ try {
76
+ serializedProps = serializeBoundaryPayload(props);
77
+ } catch (error) {
78
+ if (typeof window === "undefined") {
79
+ console.warn(
80
+ `[Farm.js] Could not isolate ${moduleReference}#${exportName}: ${error instanceof Error ? error.message : String(error)}. The server-rendered component was preserved without client hydration.`
81
+ );
82
+ }
83
+ return ReactRuntime.createElement(Component, props);
84
+ }
85
+ return ReactRuntime.createElement(
86
+ ReactRuntime.Fragment,
87
+ null,
88
+ ReactRuntime.createElement(
89
+ "farm-client-boundary",
90
+ {
91
+ "data-farm-client-boundary": moduleReference,
92
+ "data-farm-client-id": boundaryId,
93
+ "data-farm-client-export": exportName,
94
+ "data-farm-island-strategy": islandStrategy,
95
+ style: { display: "contents" }
96
+ },
97
+ ReactRuntime.createElement(
98
+ Context.Provider,
99
+ { value: true },
100
+ ReactRuntime.createElement(Component, props)
101
+ )
102
+ ),
103
+ ReactRuntime.createElement("script", {
104
+ type: "application/json",
105
+ "data-farm-client-props": boundaryId,
106
+ dangerouslySetInnerHTML: { __html: serializedProps }
107
+ })
108
+ );
109
+ }
110
+ _chunkS3JO3N4Hcjs.__name.call(void 0, FarmIsolatedClientBoundary, "FarmIsolatedClientBoundary");
111
+ FarmIsolatedClientBoundary.displayName = `FarmIsolated(${Component.displayName || Component.name || exportName})`;
112
+ return FarmIsolatedClientBoundary;
113
+ }
114
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmIsolatedClientBoundary, "createFarmIsolatedClientBoundary");
115
+ function isEarlyHydrationUpdate(error) {
116
+ return error instanceof Error && (error.message === "This root received an early update, before anything was able hydrate. Switched the entire root to client rendering." || error.message.startsWith("Minified React error #424;"));
117
+ }
118
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isEarlyHydrationUpdate, "isEarlyHydrationUpdate");
119
+ function findBoundaryPayload(container, boundaryId) {
120
+ const sibling = container.nextElementSibling;
121
+ if (sibling instanceof HTMLScriptElement && sibling.type === "application/json" && sibling.getAttribute("data-farm-client-props") === boundaryId) {
122
+ return sibling;
123
+ }
124
+ for (const candidate of container.ownerDocument.querySelectorAll(
125
+ 'script[type="application/json"][data-farm-client-props]'
126
+ )) {
127
+ if (candidate.getAttribute("data-farm-client-props") === boundaryId) return candidate;
128
+ }
129
+ return null;
130
+ }
131
+ _chunkS3JO3N4Hcjs.__name.call(void 0, findBoundaryPayload, "findBoundaryPayload");
132
+ function createFarmIsolatedHydrationRuntime(options) {
133
+ const roots = /* @__PURE__ */ new Map();
134
+ const pending = /* @__PURE__ */ new Map();
135
+ const report = _nullishCoalesce(options.report, () => ( ((message, error) => console.warn(`[Farm.js] ${message}`, error))));
136
+ const failRoot = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (container, reference, exportName, serverHTML, error) => {
137
+ report(
138
+ `Could not hydrate isolated client boundary ${reference}#${exportName}. The server-rendered HTML was restored.`,
139
+ error
140
+ );
141
+ queueMicrotask(() => {
142
+ try {
143
+ _optionalChain([roots, 'access', _ => _.get, 'call', _2 => _2(container), 'optionalAccess', _3 => _3.root, 'access', _4 => _4.unmount, 'call', _5 => _5()]);
144
+ } catch (e) {
145
+ }
146
+ roots.delete(container);
147
+ container.removeAttribute("data-farm-hydrated");
148
+ container.removeAttribute("data-farm-island-hydrated");
149
+ container.innerHTML = serverHTML;
150
+ });
151
+ }, "failRoot");
152
+ const _FarmIsolatedRootErrorBoundary = class _FarmIsolatedRootErrorBoundary extends options.ReactRuntime.Component {
153
+ constructor() {
154
+ super(...arguments);
155
+ this.state = { failed: false };
156
+ }
157
+ static getDerivedStateFromError() {
158
+ return { failed: true };
159
+ }
160
+ componentDidCatch(error) {
161
+ this.props.onError(error);
162
+ }
163
+ render() {
164
+ return this.state.failed ? null : this.props.children;
165
+ }
166
+ };
167
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _FarmIsolatedRootErrorBoundary, "FarmIsolatedRootErrorBoundary");
168
+ let FarmIsolatedRootErrorBoundary = _FarmIsolatedRootErrorBoundary;
169
+ const createBoundaryGraph = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (Component, props, restore) => {
170
+ const componentElement = options.ReactRuntime.createElement(Component, props);
171
+ const wrappedElement = options.wrap ? options.wrap(componentElement) : componentElement;
172
+ return wrapFarmIsolatedClientGraph(
173
+ options.ReactRuntime,
174
+ options.ReactRuntime.createElement(
175
+ FarmIsolatedRootErrorBoundary,
176
+ { onError: restore },
177
+ wrappedElement
178
+ )
179
+ );
180
+ }, "createBoundaryGraph");
181
+ async function hydrate(scope = document, signal) {
182
+ const candidates = Array.from(
183
+ scope.querySelectorAll("farm-client-boundary[data-farm-client-boundary]")
184
+ );
185
+ if (scope instanceof Element && scope.matches("farm-client-boundary[data-farm-client-boundary]")) {
186
+ candidates.unshift(scope);
187
+ }
188
+ const boundaries = candidates.filter((container) => {
189
+ if (roots.has(container) || pending.has(container)) return false;
190
+ return !_optionalChain([container, 'access', _6 => _6.parentElement, 'optionalAccess', _7 => _7.closest, 'call', _8 => _8("farm-client-boundary[data-farm-client-boundary]")]);
191
+ });
192
+ await Promise.all(
193
+ boundaries.map(async (container) => {
194
+ const reference = container.getAttribute("data-farm-client-boundary");
195
+ const boundaryId = container.getAttribute("data-farm-client-id");
196
+ const exportName = container.getAttribute("data-farm-client-export") || "default";
197
+ const strategy = _nullishCoalesce(container.getAttribute("data-farm-island-strategy"), () => ( "load"));
198
+ if (!reference || !boundaryId) {
199
+ report("An isolated client boundary is missing its module reference or payload ID.");
200
+ return;
201
+ }
202
+ const controller = new AbortController();
203
+ pending.set(container, controller);
204
+ const releasePending = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
205
+ if (pending.get(container) === controller) pending.delete(container);
206
+ }, "releasePending");
207
+ controller.signal.addEventListener("abort", releasePending, { once: true });
208
+ const abort = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => controller.abort(), "abort");
209
+ if (_optionalChain([signal, 'optionalAccess', _9 => _9.aborted])) abort();
210
+ else _optionalChain([signal, 'optionalAccess', _10 => _10.addEventListener, 'call', _11 => _11("abort", abort, { once: true })]);
211
+ const cleanup = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
212
+ _optionalChain([signal, 'optionalAccess', _12 => _12.removeEventListener, 'call', _13 => _13("abort", abort)]);
213
+ releasePending();
214
+ }, "cleanup");
215
+ let scheduled;
216
+ try {
217
+ scheduled = options.schedule({
218
+ container,
219
+ strategy,
220
+ signal: controller.signal,
221
+ hydrate: /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async () => {
222
+ if (controller.signal.aborted || !container.isConnected) return;
223
+ const serverHTML = container.innerHTML;
224
+ try {
225
+ const module = await options.load(reference);
226
+ if (controller.signal.aborted || !container.isConnected) return;
227
+ const originals = module.__farm_client_boundary_originals__;
228
+ const Component = _optionalChain([originals, 'optionalAccess', _14 => _14[exportName]]);
229
+ if (typeof Component !== "function" && typeof Component !== "object") {
230
+ throw new Error("compiled original export was not found");
231
+ }
232
+ const payload = findBoundaryPayload(container, boundaryId);
233
+ if (!payload) throw new Error(`serialized props ${boundaryId} were not found`);
234
+ const props = JSON.parse(payload.textContent || "{}");
235
+ if (!props || typeof props !== "object" || Array.isArray(props)) {
236
+ throw new Error("serialized props must be an object");
237
+ }
238
+ let rootFailure;
239
+ const restore = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (error) => {
240
+ if (rootFailure !== void 0) return;
241
+ rootFailure = error;
242
+ failRoot(container, reference, exportName, serverHTML, error);
243
+ controller.abort();
244
+ }, "restore");
245
+ const graphElement = createBoundaryGraph(
246
+ Component,
247
+ props,
248
+ restore
249
+ );
250
+ let disposing = false;
251
+ const root = options.hydrateRoot(container, graphElement, {
252
+ onUncaughtError: restore,
253
+ onRecoverableError(error) {
254
+ if (disposing && isEarlyHydrationUpdate(error)) return;
255
+ if (typeof globalThis.reportError === "function") globalThis.reportError(error);
256
+ else console.error(error);
257
+ }
258
+ });
259
+ roots.set(container, {
260
+ root,
261
+ dispose() {
262
+ disposing = true;
263
+ try {
264
+ root.unmount();
265
+ } finally {
266
+ disposing = false;
267
+ }
268
+ },
269
+ reference,
270
+ exportName,
271
+ props,
272
+ serverHTML,
273
+ restore
274
+ });
275
+ container.setAttribute("data-farm-hydrated", "true");
276
+ } catch (error) {
277
+ if (controller.signal.aborted) return;
278
+ failRoot(container, reference, exportName, serverHTML, error);
279
+ controller.abort();
280
+ }
281
+ }, "hydrate")
282
+ });
283
+ } catch (error) {
284
+ failRoot(container, reference, exportName, container.innerHTML, error);
285
+ controller.abort();
286
+ cleanup();
287
+ return;
288
+ }
289
+ const tracked = Promise.resolve(scheduled).catch((error) => {
290
+ if (!controller.signal.aborted) {
291
+ failRoot(container, reference, exportName, container.innerHTML, error);
292
+ controller.abort();
293
+ }
294
+ }).finally(cleanup);
295
+ if (strategy === "load") await tracked;
296
+ else void tracked;
297
+ })
298
+ );
299
+ }
300
+ _chunkS3JO3N4Hcjs.__name.call(void 0, hydrate, "hydrate");
301
+ function updateModule(reference, module) {
302
+ const originals = module.__farm_client_boundary_originals__;
303
+ let updated = 0;
304
+ for (const [container, record] of roots) {
305
+ if (record.reference !== reference) continue;
306
+ const Component = _optionalChain([originals, 'optionalAccess', _15 => _15[record.exportName]]);
307
+ if (typeof Component !== "function" && typeof Component !== "object") {
308
+ failRoot(
309
+ container,
310
+ record.reference,
311
+ record.exportName,
312
+ record.serverHTML,
313
+ new Error("updated compiled original export was not found")
314
+ );
315
+ continue;
316
+ }
317
+ try {
318
+ record.root.render(
319
+ createBoundaryGraph(Component, record.props, record.restore)
320
+ );
321
+ updated++;
322
+ } catch (error) {
323
+ failRoot(container, record.reference, record.exportName, record.serverHTML, error);
324
+ }
325
+ }
326
+ return updated;
327
+ }
328
+ _chunkS3JO3N4Hcjs.__name.call(void 0, updateModule, "updateModule");
329
+ function dispose(scope) {
330
+ for (const [container, controller] of pending) {
331
+ if (container === scope || scope.contains(container)) {
332
+ controller.abort();
333
+ pending.delete(container);
334
+ }
335
+ }
336
+ for (const [container, record] of roots) {
337
+ if (container === scope || scope.contains(container)) {
338
+ try {
339
+ record.dispose();
340
+ } catch (e2) {
341
+ }
342
+ roots.delete(container);
343
+ container.removeAttribute("data-farm-hydrated");
344
+ container.removeAttribute("data-farm-island-hydrated");
345
+ }
346
+ }
347
+ }
348
+ _chunkS3JO3N4Hcjs.__name.call(void 0, dispose, "dispose");
349
+ return {
350
+ hydrate,
351
+ updateModule,
352
+ dispose,
353
+ rootCount: /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => roots.size, "rootCount")
354
+ };
355
+ }
356
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmIsolatedHydrationRuntime, "createFarmIsolatedHydrationRuntime");
357
+ function createFarmServerPageBoundary(ReactRuntime, runtime) {
358
+ return /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, function FarmServerPage(props) {
359
+ const ref = ReactRuntime.useRef(null);
360
+ const html = props.dangerouslySetInnerHTML.__html;
361
+ ReactRuntime.useLayoutEffect(() => {
362
+ const page = ref.current;
363
+ if (!page) return;
364
+ const islands = Array.from(
365
+ page.querySelectorAll("farm-client-boundary[data-farm-client-boundary]")
366
+ );
367
+ if (islands.length === 0) return;
368
+ const controller = new AbortController();
369
+ runtime.hydrate(page, controller.signal).catch((error) => {
370
+ console.error("[Farm.js] Could not hydrate the islands in this page:", error);
371
+ });
372
+ return () => {
373
+ controller.abort();
374
+ queueMicrotask(() => {
375
+ for (const island of islands) runtime.dispose(island);
376
+ });
377
+ };
378
+ }, [html]);
379
+ return ReactRuntime.createElement("div", { ...props, ref });
380
+ }, "FarmServerPage");
381
+ }
382
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmServerPageBoundary, "createFarmServerPageBoundary");
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+ exports.wrapFarmIsolatedClientGraph = wrapFarmIsolatedClientGraph; exports.isolateFarmServerPageGraph = isolateFarmServerPageGraph; exports.createFarmIsolatedClientBoundary = createFarmIsolatedClientBoundary; exports.createFarmIsolatedHydrationRuntime = createFarmIsolatedHydrationRuntime; exports.createFarmServerPageBoundary = createFarmServerPageBoundary;
@@ -0,0 +1,54 @@
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/instrumentation.ts
6
+ var _esbuild = require('esbuild');
7
+ var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
8
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
9
+ var _url = require('url');
10
+ var INSTRUMENTATION_EXTENSIONS = ["ts", "mts", "js", "mjs"];
11
+ function resolveFarmInstrumentationFile(root, srcDir = "src") {
12
+ const candidates = [
13
+ ...INSTRUMENTATION_EXTENSIONS.map(
14
+ (extension) => _path2.default.join(root, srcDir, `instrumentation.${extension}`)
15
+ ),
16
+ ...INSTRUMENTATION_EXTENSIONS.map(
17
+ (extension) => _path2.default.join(root, `instrumentation.${extension}`)
18
+ )
19
+ ].filter((candidate) => _fs2.default.existsSync(candidate));
20
+ if (candidates.length > 1) {
21
+ throw new Error(
22
+ `Farm.js found multiple instrumentation files:
23
+ ${candidates.map((candidate) => `- ${_path2.default.relative(root, candidate)}`).join("\n")}
24
+ Keep only one instrumentation file in the project root or ${srcDir}/.`
25
+ );
26
+ }
27
+ return _nullishCoalesce(candidates[0], () => ( null));
28
+ }
29
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveFarmInstrumentationFile, "resolveFarmInstrumentationFile");
30
+ async function loadFarmInstrumentation(filePath, root) {
31
+ if (!filePath) return null;
32
+ const outputDirectory = _path2.default.join(root, ".farm", ".instrumentation-loader");
33
+ const outputFile = _path2.default.join(outputDirectory, "instrumentation.mjs");
34
+ await _fs2.default.promises.mkdir(outputDirectory, { recursive: true });
35
+ await _esbuild.build.call(void 0, {
36
+ entryPoints: [filePath],
37
+ outfile: outputFile,
38
+ bundle: true,
39
+ format: "esm",
40
+ platform: "node",
41
+ target: "node20",
42
+ packages: "external",
43
+ sourcemap: "inline"
44
+ });
45
+ const url = _url.pathToFileURL.call(void 0, outputFile);
46
+ url.searchParams.set("t", String(Date.now()));
47
+ return await import(url.href);
48
+ }
49
+ _chunkS3JO3N4Hcjs.__name.call(void 0, loadFarmInstrumentation, "loadFarmInstrumentation");
50
+
51
+
52
+
53
+
54
+ exports.resolveFarmInstrumentationFile = resolveFarmInstrumentationFile; exports.loadFarmInstrumentation = loadFarmInstrumentation;