@farm.js/core 0.1.17 → 0.1.18

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 (249) 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/cache.cjs +38 -1560
  9. package/dist/chunk-22GUSVNJ.cjs +351 -0
  10. package/dist/chunk-2CQ74SP6.cjs +13 -0
  11. package/dist/chunk-2SJ4RQ6P.cjs +57 -0
  12. package/dist/chunk-3376ZTRC.cjs +1 -0
  13. package/dist/{chunk-YD4J4XCI.mjs → chunk-3XG26Z3J.mjs} +1 -1
  14. package/dist/chunk-4PNUXIVU.cjs +472 -0
  15. package/dist/chunk-4PPEPOZZ.cjs +21 -0
  16. package/dist/chunk-4ZFL5GFN.cjs +520 -0
  17. package/dist/chunk-5OVTOKGH.cjs +65 -0
  18. package/dist/chunk-5QIKR7RR.cjs +224 -0
  19. package/dist/chunk-5ZSWG4UX.cjs +127 -0
  20. package/dist/chunk-62YJ2IEB.cjs +238 -0
  21. package/dist/chunk-6EODJYCX.cjs +183 -0
  22. package/dist/chunk-6EXBPJ24.cjs +434 -0
  23. package/dist/chunk-6QQDAAAZ.cjs +38 -0
  24. package/dist/chunk-6V4TDWEC.cjs +455 -0
  25. package/dist/chunk-72ADZ6GQ.cjs +19 -0
  26. package/dist/chunk-75BRBIFP.cjs +172 -0
  27. package/dist/chunk-7W3CPVXS.cjs +24 -0
  28. package/dist/chunk-A6WIQH5Z.cjs +31 -0
  29. package/dist/chunk-AFOD3LYZ.cjs +377 -0
  30. package/dist/chunk-AMDMVWMI.cjs +39 -0
  31. package/dist/chunk-AORPIPNB.cjs +552 -0
  32. package/dist/chunk-ARJWXNQL.cjs +256 -0
  33. package/dist/chunk-AWRISO2H.cjs +2199 -0
  34. package/dist/chunk-AYJR42WX.cjs +711 -0
  35. package/dist/chunk-B4CH33IG.cjs +644 -0
  36. package/dist/chunk-BIDYX3SL.cjs +91 -0
  37. package/dist/chunk-BSTRERPP.cjs +40 -0
  38. package/dist/chunk-BYODCJD6.cjs +663 -0
  39. package/dist/chunk-C3VRMB6H.cjs +85 -0
  40. package/dist/chunk-C5GUTBZK.cjs +173 -0
  41. package/dist/chunk-CIAGU2X4.cjs +337 -0
  42. package/dist/chunk-CMGMGHUZ.cjs +27 -0
  43. package/dist/chunk-CXP5U3RW.cjs +54 -0
  44. package/dist/chunk-D2ULAULS.cjs +166 -0
  45. package/dist/chunk-D7JTOLFK.cjs +285 -0
  46. package/dist/chunk-DVM4FKZL.cjs +169 -0
  47. package/dist/chunk-DYEJQTDN.cjs +49 -0
  48. package/dist/chunk-E2BMSZ2W.cjs +151 -0
  49. package/dist/chunk-E3UK5IIB.cjs +593 -0
  50. package/dist/chunk-EM6SBQKM.cjs +470 -0
  51. package/dist/chunk-FJSWYIR7.cjs +482 -0
  52. package/dist/chunk-FK6GO24V.cjs +54 -0
  53. package/dist/chunk-FXUUWYAX.cjs +654 -0
  54. package/dist/chunk-G3HRIVEY.cjs +395 -0
  55. package/dist/chunk-G643DQCH.cjs +13 -0
  56. package/dist/chunk-G7HXGLEC.cjs +175 -0
  57. package/dist/chunk-GDSHDTJ4.cjs +152 -0
  58. package/dist/chunk-GNEO2XOF.cjs +2040 -0
  59. package/dist/{chunk-56DAX2BE.mjs → chunk-GYKJCFTS.mjs} +1 -1
  60. package/dist/chunk-H6G5INWM.cjs +1094 -0
  61. package/dist/chunk-HBTUGXHS.cjs +180 -0
  62. package/dist/chunk-HREOKQWT.cjs +45 -0
  63. package/dist/chunk-I4J452B7.cjs +435 -0
  64. package/dist/chunk-I57LW5VZ.cjs +94 -0
  65. package/dist/chunk-I7PUUDGY.cjs +389 -0
  66. package/dist/chunk-IAMRBF3Z.cjs +86 -0
  67. package/dist/chunk-IKNRN4VS.cjs +14214 -0
  68. package/dist/chunk-IQXFRNY2.cjs +169 -0
  69. package/dist/chunk-IXTFU4PL.cjs +2355 -0
  70. package/dist/chunk-J2OP5GG3.cjs +725 -0
  71. package/dist/chunk-J3LOGE4T.cjs +42 -0
  72. package/dist/chunk-J7FSKED3.cjs +93 -0
  73. package/dist/chunk-JDNHKPTD.cjs +22 -0
  74. package/dist/chunk-JSROZYYO.cjs +164 -0
  75. package/dist/chunk-K6FNHVDR.cjs +696 -0
  76. package/dist/chunk-KGZIORNL.cjs +43 -0
  77. package/dist/{chunk-MVIWBEJF.mjs → chunk-KPNVGRBL.mjs} +1 -1
  78. package/dist/chunk-KR6CKSXT.cjs +15 -0
  79. package/dist/chunk-KROWKCUH.cjs +185 -0
  80. package/dist/chunk-KVFPGF2M.cjs +46 -0
  81. package/dist/chunk-LCCBO7PJ.cjs +46 -0
  82. package/dist/chunk-LIUGYUX3.cjs +22 -0
  83. package/dist/chunk-LTNGXMQ6.cjs +55 -0
  84. package/dist/chunk-M2L4MYDQ.cjs +14 -0
  85. package/dist/chunk-MCJLA63J.cjs +1 -0
  86. package/dist/chunk-MKB2EGIR.cjs +148 -0
  87. package/dist/chunk-MQ3H6LT5.cjs +202 -0
  88. package/dist/chunk-MT763TDW.cjs +43 -0
  89. package/dist/chunk-MWSK6C4J.cjs +18 -0
  90. package/dist/chunk-MWWVKDW3.cjs +169 -0
  91. package/dist/chunk-NO3WWW3N.cjs +192 -0
  92. package/dist/chunk-NV3A5DXM.cjs +862 -0
  93. package/dist/chunk-NWOD6NIT.cjs +9 -0
  94. package/dist/chunk-NZKJGRB3.cjs +230 -0
  95. package/dist/chunk-OAVTUMJP.cjs +1496 -0
  96. package/dist/chunk-OHY2ZWUG.cjs +25 -0
  97. package/dist/chunk-OI6CMLWX.cjs +47 -0
  98. package/dist/chunk-OIEOCXKG.cjs +453 -0
  99. package/dist/chunk-OWOUTKIJ.cjs +558 -0
  100. package/dist/chunk-OX6O6WVA.cjs +74 -0
  101. package/dist/chunk-OXSIH4D6.cjs +476 -0
  102. package/dist/chunk-OYEUREB6.cjs +35 -0
  103. package/dist/chunk-PCOTGFSM.cjs +139 -0
  104. package/dist/chunk-PZYCPSCC.cjs +35 -0
  105. package/dist/chunk-QBK2AA4U.cjs +445 -0
  106. package/dist/chunk-QBPXNZGV.cjs +487 -0
  107. package/dist/chunk-QNPEUFHQ.cjs +27 -0
  108. package/dist/chunk-QZRVZSPN.cjs +236 -0
  109. package/dist/chunk-R5A5KNVX.cjs +20 -0
  110. package/dist/chunk-R5JIFR6B.cjs +42 -0
  111. package/dist/chunk-R6AIILII.cjs +193 -0
  112. package/dist/chunk-RG3ZOTG5.cjs +34 -0
  113. package/dist/chunk-ROUTX2E5.cjs +390 -0
  114. package/dist/chunk-RTHIVJ2G.cjs +54 -0
  115. package/dist/chunk-S3A45T7F.cjs +166 -0
  116. package/dist/chunk-S3JO3N4H.cjs +17 -0
  117. package/dist/chunk-SK35NQKK.cjs +27 -0
  118. package/dist/chunk-SU7MH53P.cjs +180 -0
  119. package/dist/chunk-SVRTJOUF.cjs +113 -0
  120. package/dist/chunk-SWN467MP.cjs +18 -0
  121. package/dist/chunk-SYQ3MOWW.cjs +73 -0
  122. package/dist/chunk-T5CERMEH.cjs +417 -0
  123. package/dist/chunk-TFAXUHWX.cjs +206 -0
  124. package/dist/chunk-TIWHTW3Q.cjs +24 -0
  125. package/dist/chunk-TKJZFIML.cjs +20 -0
  126. package/dist/chunk-TKNSDBBN.cjs +193 -0
  127. package/dist/chunk-TWGMSEHX.cjs +525 -0
  128. package/dist/chunk-TYQUSXUG.cjs +1357 -0
  129. package/dist/chunk-U4KT7QP3.cjs +23 -0
  130. package/dist/chunk-UJ2C4ICS.cjs +277 -0
  131. package/dist/chunk-UN5GHC5V.cjs +10244 -0
  132. package/dist/chunk-UQZ4AYTH.cjs +168 -0
  133. package/dist/chunk-US2QVW3E.cjs +36 -0
  134. package/dist/chunk-VB6UCX3V.cjs +421 -0
  135. package/dist/chunk-VEKFLAQM.cjs +300 -0
  136. package/dist/chunk-VQDBNVOO.cjs +14 -0
  137. package/dist/chunk-W4E7WMXE.cjs +71 -0
  138. package/dist/chunk-WJ3HK3LJ.cjs +1102 -0
  139. package/dist/chunk-WMAPPDMM.cjs +28 -0
  140. package/dist/chunk-WMOGFOUJ.cjs +223 -0
  141. package/dist/chunk-WPYFSQKK.cjs +37 -0
  142. package/dist/chunk-WZMNW2IW.cjs +1415 -0
  143. package/dist/chunk-XGC343EY.cjs +443 -0
  144. package/dist/chunk-XSKZORAS.cjs +727 -0
  145. package/dist/chunk-XWAWFQFS.cjs +82 -0
  146. package/dist/chunk-Y4YMF2NQ.cjs +460 -0
  147. package/dist/chunk-Y4YWHNKU.cjs +250 -0
  148. package/dist/chunk-Y53ZSFN6.cjs +504 -0
  149. package/dist/chunk-YA6LLTIJ.cjs +411 -0
  150. package/dist/chunk-YFPGHF5F.cjs +202 -0
  151. package/dist/chunk-YJRZR7VU.cjs +28 -0
  152. package/dist/chunk-YTAABQEV.cjs +1 -0
  153. package/dist/chunk-YX3DBN4M.cjs +18 -0
  154. package/dist/chunk-YZTASLPQ.cjs +64 -0
  155. package/dist/chunk-Z5HIWVDP.cjs +2173 -0
  156. package/dist/chunk-ZEG3OPIB.cjs +93 -0
  157. package/dist/chunk-ZMN3H73H.cjs +155 -0
  158. package/dist/client/lifecycle.cjs +6 -35
  159. package/dist/client-plugins.cjs +7 -448
  160. package/dist/client.cjs +171 -9808
  161. package/dist/config.cjs +8 -36
  162. package/dist/cron.cjs +24 -491
  163. package/dist/deferred.cjs +26 -475
  164. package/dist/deployment.cjs +39 -210
  165. package/dist/devtools-OUIPHVV6.cjs +388 -0
  166. package/dist/devtools-client-4WAPJY5L.cjs +254 -0
  167. package/dist/devtools-ui-5GBDIGMK.cjs +1296 -0
  168. package/dist/docs.cjs +46 -5657
  169. package/dist/env-types.cjs +5 -226
  170. package/dist/env.cjs +21 -338
  171. package/dist/environment/vite.cjs +8 -372
  172. package/dist/environment.cjs +12 -94
  173. package/dist/font.cjs +13 -63
  174. package/dist/headers.cjs +7 -123
  175. package/dist/i18n/client.cjs +55 -294
  176. package/dist/i18n/index.cjs +22 -209
  177. package/dist/i18n/server.cjs +22 -745
  178. package/dist/image/server.cjs +13 -729
  179. package/dist/image/sharp.cjs +33 -171
  180. package/dist/image.cjs +41 -85
  181. package/dist/index.cjs +1151 -68080
  182. package/dist/index.mjs +3 -3
  183. package/dist/instrumentation.cjs +12 -138
  184. package/dist/integration-orm-55F7CII5.cjs +13 -0
  185. package/dist/integrations.cjs +55 -4090
  186. package/dist/internal/app-markdown-runtime.cjs +27 -224
  187. package/dist/internal/build-runtime.cjs +120 -52259
  188. package/dist/internal/build-runtime.mjs +3 -3
  189. package/dist/internal/cli-runtime.cjs +67 -13811
  190. package/dist/internal/client-error-overlay.cjs +80 -733
  191. package/dist/internal/client-error-overlay.mjs +1 -1
  192. package/dist/internal/client-runtime.cjs +81 -913
  193. package/dist/internal/compression-runtime.cjs +8 -214
  194. package/dist/internal/config-runtime.cjs +42 -6547
  195. package/dist/internal/docs-precompiled-runtime.cjs +26 -46
  196. package/dist/internal/infra-analytics-runtime.cjs +10 -536
  197. package/dist/internal/isolated-boundary.cjs +14 -414
  198. package/dist/internal/metadata-image-runtime.cjs +7 -285
  199. package/dist/internal/product-telemetry-runtime.cjs +42 -97
  200. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  201. package/dist/internal/production-node-env.cjs +6 -63
  202. package/dist/internal/production-runtime.cjs +418 -7133
  203. package/dist/internal/request-cookies.cjs +6 -54
  204. package/dist/json-ld.cjs +24 -50
  205. package/dist/layers-E4WPJNY5.cjs +17 -0
  206. package/dist/manager-G4B2IPYE.cjs +14 -0
  207. package/dist/markdown.cjs +21 -547
  208. package/dist/middleware.cjs +36 -2995
  209. package/dist/navigation.cjs +22 -2588
  210. package/dist/nitro-4I2MYLY2.cjs +652 -0
  211. package/dist/observability.cjs +22 -614
  212. package/dist/og.cjs +5 -28
  213. package/dist/plugin.cjs +106 -37442
  214. package/dist/plugin.mjs +2 -2
  215. package/dist/query/client.cjs +113 -449
  216. package/dist/query/index.cjs +26 -288
  217. package/dist/query/parsers.cjs +23 -247
  218. package/dist/query/server.cjs +36 -298
  219. package/dist/renderer/react/client.cjs +9 -43
  220. package/dist/renderer/react/server.cjs +40 -103
  221. package/dist/renderer/react/vite.cjs +7 -29
  222. package/dist/renderer-client.cjs +126 -4295
  223. package/dist/renderer.cjs +31 -249
  224. package/dist/request.cjs +5 -68
  225. package/dist/router.cjs +11 -474
  226. package/dist/routes.cjs +42 -2461
  227. package/dist/schema-dev-notice-MXSZMVDG.cjs +56 -0
  228. package/dist/schema.cjs +6 -33
  229. package/dist/search-client-G3RICOFU.cjs +13 -0
  230. package/dist/server-action-security.cjs +25 -541
  231. package/dist/server-fn-client.cjs +6 -337
  232. package/dist/server-fn.cjs +32 -1841
  233. package/dist/server-plugins.cjs +15 -884
  234. package/dist/server-query-client.cjs +15 -1883
  235. package/dist/server-query.cjs +16 -1838
  236. package/dist/server.cjs +296 -44681
  237. package/dist/server.mjs +2 -2
  238. package/dist/storage.cjs +57 -576
  239. package/dist/testing.cjs +89 -3186
  240. package/dist/theme/client.cjs +13 -108
  241. package/dist/theme/index.cjs +6 -68
  242. package/dist/theme/runtime.cjs +13 -78
  243. package/dist/theme/server.cjs +10 -179
  244. package/dist/version.cjs +4 -32
  245. package/dist/version.mjs +1 -1
  246. package/dist/vite.cjs +119 -37773
  247. package/dist/vite.mjs +2 -2
  248. package/dist/workflows.cjs +19 -1040
  249. package/package.json +1 -1
@@ -0,0 +1,82 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkOI6CMLWXcjs = require('./chunk-OI6CMLWX.cjs');
4
+
5
+
6
+ var _chunk7W3CPVXScjs = require('./chunk-7W3CPVXS.cjs');
7
+
8
+
9
+ var _chunk5ZSWG4UXcjs = require('./chunk-5ZSWG4UX.cjs');
10
+
11
+
12
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
13
+
14
+ // src/theme/server.ts
15
+ var defaultThemeConfig = _chunkOI6CMLWXcjs.resolveFarmThemeConfig.call(void 0, void 0);
16
+ function _setDefaultFarmThemeConfig(config, basePath = "/") {
17
+ defaultThemeConfig = _chunkOI6CMLWXcjs.resolveFarmThemeConfig.call(void 0, config, basePath);
18
+ }
19
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
20
+ function getTheme(request = _chunk5ZSWG4UXcjs.getCurrentRequestOrNull.call(void 0, )) {
21
+ if (!request) return defaultThemeConfig.default;
22
+ return readFarmThemePreference(request, defaultThemeConfig);
23
+ }
24
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getTheme, "getTheme");
25
+ function getThemeSnapshot(request = _chunk5ZSWG4UXcjs.getCurrentRequestOrNull.call(void 0, )) {
26
+ const theme = request ? readFarmThemePreference(request, defaultThemeConfig) : defaultThemeConfig.default;
27
+ return {
28
+ theme,
29
+ resolvedTheme: theme === "system" ? void 0 : theme,
30
+ mounted: false
31
+ };
32
+ }
33
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getThemeSnapshot, "getThemeSnapshot");
34
+ function readFarmThemePreference(request, config) {
35
+ if (!config.enabled) return config.default;
36
+ const stored = readCookie(request.headers.get("cookie"), config.storageKey);
37
+ return isFarmThemePreference(stored) ? stored : config.default;
38
+ }
39
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readFarmThemePreference, "readFarmThemePreference");
40
+ function readCookie(cookieHeader, name) {
41
+ if (!cookieHeader) return void 0;
42
+ for (const entry of cookieHeader.split(";")) {
43
+ const separator = entry.indexOf("=");
44
+ if (separator < 0) continue;
45
+ const key = decodeCookieValue(entry.slice(0, separator).trim());
46
+ if (key !== name) continue;
47
+ return decodeCookieValue(entry.slice(separator + 1).trim());
48
+ }
49
+ return void 0;
50
+ }
51
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readCookie, "readCookie");
52
+ function decodeCookieValue(value) {
53
+ try {
54
+ return decodeURIComponent(value);
55
+ } catch (e) {
56
+ return value;
57
+ }
58
+ }
59
+ _chunkS3JO3N4Hcjs.__name.call(void 0, decodeCookieValue, "decodeCookieValue");
60
+ function isFarmThemePreference(value) {
61
+ return value === "light" || value === "dark" || value === "system";
62
+ }
63
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isFarmThemePreference, "isFarmThemePreference");
64
+ _chunk7W3CPVXScjs._setFarmThemeServerSnapshotResolver.call(void 0, () => {
65
+ try {
66
+ return getThemeSnapshot();
67
+ } catch (e2) {
68
+ const theme = defaultThemeConfig.default;
69
+ return {
70
+ theme,
71
+ resolvedTheme: theme === "system" ? void 0 : theme,
72
+ mounted: false
73
+ };
74
+ }
75
+ });
76
+
77
+
78
+
79
+
80
+
81
+
82
+ exports._setDefaultFarmThemeConfig = _setDefaultFarmThemeConfig; exports.getTheme = getTheme; exports.getThemeSnapshot = getThemeSnapshot; exports.readFarmThemePreference = readFarmThemePreference;
@@ -0,0 +1,460 @@
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(); } } 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/layers.ts
6
+ var _fs = require('fs');
7
+ var _promises = require('fs/promises');
8
+ var _module = require('module');
9
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
10
+ var _url = require('url');
11
+ var FARM_CORE_PACKAGE = "@farm.js/core";
12
+ var FARM_CONFIG_ENTRY = "@farm.js/core/config";
13
+ var FARM_CORE_REFERENCE_RE = /(["'])@farm.js\/core\1/g;
14
+ var FARM_CONFIG_HELPER_IMPORT_RE = /(?:^|\n)[\t ]*import[\t ]*\{([^{}]*)\}[\t ]*from[\t ]*(["'])@farm.js\/core\2[\t ]*;?[\t ]*(?:\n|$)/g;
15
+ var FARM_CONFIG_HELPER_SPECIFIER_RE = /^(?:defineConfig|defineFarmConfig)(?:\s+as\s+[$A-Z_a-z][$\w]*)?$/;
16
+ var CONFIG_FILENAMES = [
17
+ "farm.config.ts",
18
+ "farm.config.tsx",
19
+ "farm.config.mts",
20
+ "farm.config.cts",
21
+ "farm.config.js",
22
+ "farm.config.jsx",
23
+ "farm.config.mjs",
24
+ "farm.config.cjs",
25
+ "config.ts",
26
+ "config.tsx",
27
+ "config.mts",
28
+ "config.cts",
29
+ "config.js",
30
+ "config.jsx",
31
+ "config.mjs",
32
+ "config.cjs"
33
+ ];
34
+ var LAYER_LOCAL_CONFIG_KEYS = /* @__PURE__ */ new Set([
35
+ "root",
36
+ "srcDir",
37
+ "outDir",
38
+ "distDir",
39
+ "deploy",
40
+ "output",
41
+ "preset",
42
+ "publicDir",
43
+ "generateBuildId"
44
+ ]);
45
+ async function resolveFarmLayers(projectConfig, options) {
46
+ const projectRoot = _path2.default.resolve(options.root);
47
+ const entries = normalizeLayerEntries(projectConfig.extends, "project config");
48
+ if (entries.length === 0) {
49
+ return {
50
+ config: {
51
+ ...projectConfig,
52
+ layers: []
53
+ },
54
+ layers: []
55
+ };
56
+ }
57
+ const loadedLayers = [];
58
+ const visited = /* @__PURE__ */ new Set();
59
+ const aliases = /* @__PURE__ */ new Map();
60
+ const visit = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async (source, ownerRoot, stack) => {
61
+ const resolvedSource = resolveLayerSource(source, ownerRoot);
62
+ const cycleIndex = stack.findIndex((entry) => entry.root === resolvedSource.root);
63
+ if (cycleIndex !== -1) {
64
+ const cycle = [...stack.slice(cycleIndex).map((entry) => entry.source), source];
65
+ throw new Error(`Farm layer cycle detected: ${cycle.join(" -> ")}`);
66
+ }
67
+ if (visited.has(resolvedSource.root)) return;
68
+ const configFile = findFarmConfigFile(resolvedSource.root, resolvedSource.configFile);
69
+ const config = configFile ? await loadFarmConfigFile(configFile, {
70
+ cacheRoot: projectRoot,
71
+ root: resolvedSource.root
72
+ }) : {};
73
+ const nestedEntries = normalizeLayerEntries(config.extends, `layer ${JSON.stringify(source)}`);
74
+ const nextStack = [...stack, { root: resolvedSource.root, source }];
75
+ for (const nestedSource of nestedEntries) {
76
+ await visit(nestedSource, resolvedSource.root, nextStack);
77
+ }
78
+ if (visited.has(resolvedSource.root)) return;
79
+ const name = getLayerName(source, resolvedSource.root);
80
+ const conflictingRoot = aliases.get(name);
81
+ if (conflictingRoot && conflictingRoot !== resolvedSource.root) {
82
+ throw new Error(
83
+ `Farm layer alias "#layers/${name}" is ambiguous between ${conflictingRoot} and ${resolvedSource.root}`
84
+ );
85
+ }
86
+ aliases.set(name, resolvedSource.root);
87
+ visited.add(resolvedSource.root);
88
+ loadedLayers.push({
89
+ source,
90
+ name,
91
+ root: resolvedSource.root,
92
+ srcDir: normalizeLayerSrcDir(config.srcDir),
93
+ configFile,
94
+ config
95
+ });
96
+ }, "visit");
97
+ for (const source of entries) {
98
+ await visit(source, projectRoot, []);
99
+ }
100
+ let mergedConfig = {};
101
+ for (const layer of loadedLayers) {
102
+ mergedConfig = mergeFarmLayerConfig(mergedConfig, getLayerDefaults(layer.config));
103
+ }
104
+ mergedConfig = mergeFarmLayerConfig(mergedConfig, projectConfig);
105
+ const layers = loadedLayers.map(({ config: _config, ...layer }) => layer);
106
+ return {
107
+ config: {
108
+ ...mergedConfig,
109
+ root: projectConfig.root,
110
+ srcDir: projectConfig.srcDir,
111
+ extends: projectConfig.extends,
112
+ layers
113
+ },
114
+ layers
115
+ };
116
+ }
117
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveFarmLayers, "resolveFarmLayers");
118
+ function getFarmSourceRoots(config) {
119
+ const roots = (_nullishCoalesce(config.layers, () => ( []))).map((layer) => ({
120
+ name: layer.name,
121
+ root: layer.root,
122
+ srcDir: layer.srcDir,
123
+ layer: true
124
+ }));
125
+ roots.push({
126
+ name: "project",
127
+ root: _path2.default.resolve(config.root || process.cwd()),
128
+ srcDir: config.srcDir || "src",
129
+ layer: false
130
+ });
131
+ return roots;
132
+ }
133
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmSourceRoots, "getFarmSourceRoots");
134
+ function getFarmAppDirectories(config) {
135
+ return getFarmSourceRoots(config).map((source) => _path2.default.join(source.root, source.srcDir, "app"));
136
+ }
137
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmAppDirectories, "getFarmAppDirectories");
138
+ function getFarmLayerAliases(layers) {
139
+ return Object.fromEntries(
140
+ (_nullishCoalesce(layers, () => ( []))).map((layer) => [`#layers/${layer.name}`, _path2.default.join(layer.root, layer.srcDir)])
141
+ );
142
+ }
143
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getFarmLayerAliases, "getFarmLayerAliases");
144
+ var WINDOWS_ABSOLUTE_PATH_RE = /^(?:[A-Za-z]:[\\/]|\\\\)/;
145
+ function toExternalSpecifier(resolvedPath) {
146
+ return _path2.default.isAbsolute(resolvedPath) ? _url.pathToFileURL.call(void 0, resolvedPath).href : resolvedPath;
147
+ }
148
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toExternalSpecifier, "toExternalSpecifier");
149
+ function createFarmConfigResolutionPlugin(options) {
150
+ const configEntryChecks = /* @__PURE__ */ new Map();
151
+ return {
152
+ name: "farm-config-package-resolution",
153
+ setup(pluginBuild) {
154
+ pluginBuild.onResolve({ filter: /^@farm\.js\/core$/ }, async (args) => {
155
+ if (_optionalChain([args, 'access', _ => _.pluginData, 'optionalAccess', _2 => _2.farmConfigExternal]) || args.kind !== "import-statement" || !args.importer) {
156
+ return;
157
+ }
158
+ let configEntryCheck = configEntryChecks.get(args.importer);
159
+ if (!configEntryCheck) {
160
+ configEntryCheck = onlyImportsFarmConfigHelpers(args.importer, options.transform);
161
+ configEntryChecks.set(args.importer, configEntryCheck);
162
+ }
163
+ if (!await configEntryCheck) return;
164
+ const resolved = await pluginBuild.resolve(FARM_CONFIG_ENTRY, {
165
+ importer: args.importer,
166
+ kind: args.kind,
167
+ namespace: args.namespace,
168
+ resolveDir: args.resolveDir,
169
+ pluginData: { farmConfigExternal: true }
170
+ });
171
+ if (resolved.errors.length > 0 || !resolved.path) return;
172
+ return {
173
+ path: toExternalSpecifier(resolved.path),
174
+ external: true,
175
+ warnings: resolved.warnings
176
+ };
177
+ });
178
+ pluginBuild.onResolve({ filter: /^[^./]/ }, async (args) => {
179
+ if (args.kind === "entry-point" || _path2.default.isAbsolute(args.path) || WINDOWS_ABSOLUTE_PATH_RE.test(args.path)) {
180
+ return;
181
+ }
182
+ if (_optionalChain([args, 'access', _3 => _3.pluginData, 'optionalAccess', _4 => _4.farmConfigExternal])) return;
183
+ const resolved = await pluginBuild.resolve(args.path, {
184
+ importer: args.importer,
185
+ kind: args.kind,
186
+ namespace: args.namespace,
187
+ resolveDir: args.resolveDir,
188
+ pluginData: { farmConfigExternal: true }
189
+ });
190
+ if (resolved.errors.length > 0 || !resolved.path) {
191
+ return { path: args.path, external: true };
192
+ }
193
+ return {
194
+ path: toExternalSpecifier(resolved.path),
195
+ external: true,
196
+ warnings: resolved.warnings
197
+ };
198
+ });
199
+ }
200
+ };
201
+ }
202
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmConfigResolutionPlugin, "createFarmConfigResolutionPlugin");
203
+ async function loadFarmConfigFile(configPath, options) {
204
+ const { build, transform } = await import("esbuild");
205
+ const cacheRoot = _path2.default.resolve(options.cacheRoot || options.root);
206
+ const configCacheDir = _path2.default.join(cacheRoot, ".farm", ".config-loader");
207
+ await _promises.mkdir.call(void 0, configCacheDir, { recursive: true });
208
+ const modulePath = _path2.default.join(
209
+ configCacheDir,
210
+ `farm-config-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`
211
+ );
212
+ await build({
213
+ absWorkingDir: _path2.default.resolve(options.root),
214
+ entryPoints: [_path2.default.resolve(configPath)],
215
+ outfile: modulePath,
216
+ bundle: true,
217
+ format: "esm",
218
+ platform: "node",
219
+ target: `node${process.versions.node.split(".")[0]}`,
220
+ plugins: [createFarmConfigResolutionPlugin({ transform })],
221
+ jsx: "automatic",
222
+ logLevel: "silent",
223
+ sourcemap: "inline"
224
+ });
225
+ const moduleUrl = `${_url.pathToFileURL.call(void 0, modulePath).href}?t=${Date.now()}`;
226
+ try {
227
+ const loaded = await import(
228
+ /* @vite-ignore */
229
+ moduleUrl
230
+ );
231
+ const config = loaded.default || loaded;
232
+ if (!config || typeof config !== "object" || Array.isArray(config)) {
233
+ throw new TypeError(`Farm config ${configPath} must export an object`);
234
+ }
235
+ return config;
236
+ } finally {
237
+ await _promises.unlink.call(void 0, modulePath).catch(() => void 0);
238
+ }
239
+ }
240
+ _chunkS3JO3N4Hcjs.__name.call(void 0, loadFarmConfigFile, "loadFarmConfigFile");
241
+ async function onlyImportsFarmConfigHelpers(importer, transform) {
242
+ try {
243
+ const source = _fs.readFileSync.call(void 0, importer, "utf8");
244
+ if (!source.includes(FARM_CORE_PACKAGE)) return false;
245
+ const transformed = await transform(source, {
246
+ format: "esm",
247
+ jsx: "automatic",
248
+ loader: getEsbuildLoader(importer),
249
+ sourcefile: importer
250
+ });
251
+ const references = [...transformed.code.matchAll(FARM_CORE_REFERENCE_RE)];
252
+ if (references.length === 0) return false;
253
+ const safeImportRanges = [];
254
+ for (const match of transformed.code.matchAll(FARM_CONFIG_HELPER_IMPORT_RE)) {
255
+ const specifiers = match[1].split(",").map((specifier) => specifier.trim()).filter(Boolean);
256
+ if (specifiers.length === 0 || !specifiers.every((specifier) => FARM_CONFIG_HELPER_SPECIFIER_RE.test(specifier))) {
257
+ continue;
258
+ }
259
+ const start = _nullishCoalesce(match.index, () => ( 0));
260
+ safeImportRanges.push({ start, end: start + match[0].length });
261
+ }
262
+ return references.every((reference) => {
263
+ const index = _nullishCoalesce(reference.index, () => ( -1));
264
+ return safeImportRanges.some((range) => index >= range.start && index < range.end);
265
+ });
266
+ } catch (e) {
267
+ return false;
268
+ }
269
+ }
270
+ _chunkS3JO3N4Hcjs.__name.call(void 0, onlyImportsFarmConfigHelpers, "onlyImportsFarmConfigHelpers");
271
+ function getEsbuildLoader(file) {
272
+ switch (_path2.default.extname(file)) {
273
+ case ".ts":
274
+ case ".mts":
275
+ case ".cts":
276
+ return "ts";
277
+ case ".tsx":
278
+ return "tsx";
279
+ case ".jsx":
280
+ return "jsx";
281
+ default:
282
+ return "js";
283
+ }
284
+ }
285
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getEsbuildLoader, "getEsbuildLoader");
286
+ function normalizeLayerEntries(value, owner) {
287
+ if (value === void 0) return [];
288
+ if (!Array.isArray(value)) {
289
+ throw new TypeError(`${owner} "extends" must be an array of layer paths or package names`);
290
+ }
291
+ return value.map((entry, index) => {
292
+ if (typeof entry !== "string" || entry.trim() === "") {
293
+ throw new TypeError(`${owner} "extends" entry ${index} must be a non-empty string`);
294
+ }
295
+ return entry.trim();
296
+ });
297
+ }
298
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeLayerEntries, "normalizeLayerEntries");
299
+ function resolveLayerSource(source, ownerRoot) {
300
+ if (isPathLayerSource(source)) {
301
+ const target = source.startsWith("file:") ? _path2.default.resolve(ownerRoot, source.slice("file:".length)) : _path2.default.resolve(ownerRoot, source);
302
+ if (!_fs.existsSync.call(void 0, target)) {
303
+ throw new Error(`Cannot resolve Farm layer ${JSON.stringify(source)} from ${ownerRoot}`);
304
+ }
305
+ const stats = _fs.statSync.call(void 0, target);
306
+ const root = stats.isDirectory() ? target : _path2.default.dirname(target);
307
+ return {
308
+ root: normalizeRealPath(root),
309
+ configFile: stats.isFile() ? normalizeRealPath(target) : void 0
310
+ };
311
+ }
312
+ const requireFromOwner = _module.createRequire.call(void 0, _path2.default.join(ownerRoot, "package.json"));
313
+ let packageJsonPath;
314
+ try {
315
+ packageJsonPath = requireFromOwner.resolve(`${source}/package.json`);
316
+ } catch (e2) {
317
+ }
318
+ if (packageJsonPath) {
319
+ return { root: normalizeRealPath(_path2.default.dirname(packageJsonPath)) };
320
+ }
321
+ try {
322
+ const entryPath = requireFromOwner.resolve(source);
323
+ const packageRoot = findNearestPackageRoot(entryPath);
324
+ if (packageRoot) return { root: normalizeRealPath(packageRoot) };
325
+ } catch (e3) {
326
+ }
327
+ throw new Error(`Cannot resolve Farm layer package ${JSON.stringify(source)} from ${ownerRoot}`);
328
+ }
329
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveLayerSource, "resolveLayerSource");
330
+ function findNearestPackageRoot(entryPath) {
331
+ let current = _fs.statSync.call(void 0, entryPath).isDirectory() ? entryPath : _path2.default.dirname(entryPath);
332
+ while (true) {
333
+ if (_fs.existsSync.call(void 0, _path2.default.join(current, "package.json"))) return current;
334
+ const parent = _path2.default.dirname(current);
335
+ if (parent === current) return null;
336
+ current = parent;
337
+ }
338
+ }
339
+ _chunkS3JO3N4Hcjs.__name.call(void 0, findNearestPackageRoot, "findNearestPackageRoot");
340
+ function findFarmConfigFile(root, explicitPath) {
341
+ if (explicitPath) return explicitPath;
342
+ for (const fileName of CONFIG_FILENAMES) {
343
+ const candidate = _path2.default.join(root, fileName);
344
+ if (_fs.existsSync.call(void 0, candidate)) return candidate;
345
+ }
346
+ return void 0;
347
+ }
348
+ _chunkS3JO3N4Hcjs.__name.call(void 0, findFarmConfigFile, "findFarmConfigFile");
349
+ function getLayerName(source, root) {
350
+ if (!isPathLayerSource(source)) {
351
+ const packageName = source.split("/").filter(Boolean).pop();
352
+ if (packageName) return sanitizeLayerName(packageName);
353
+ }
354
+ try {
355
+ const packageJson = JSON.parse(_fs.readFileSync.call(void 0, _path2.default.join(root, "package.json"), "utf8"));
356
+ if (typeof packageJson.name === "string") {
357
+ return sanitizeLayerName(packageJson.name.split("/").pop() || packageJson.name);
358
+ }
359
+ } catch (e4) {
360
+ }
361
+ return sanitizeLayerName(_path2.default.basename(root));
362
+ }
363
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getLayerName, "getLayerName");
364
+ function sanitizeLayerName(value) {
365
+ const name = value.trim().replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
366
+ if (!name) throw new Error(`Cannot derive a name for Farm layer ${JSON.stringify(value)}`);
367
+ return name;
368
+ }
369
+ _chunkS3JO3N4Hcjs.__name.call(void 0, sanitizeLayerName, "sanitizeLayerName");
370
+ function normalizeLayerSrcDir(value) {
371
+ if (value === void 0) return "src";
372
+ if (typeof value !== "string" || value.trim() === "" || _path2.default.isAbsolute(value)) {
373
+ throw new TypeError("A Farm layer srcDir must be a non-empty relative path");
374
+ }
375
+ const normalized = _path2.default.normalize(value.trim());
376
+ if (normalized === ".." || normalized.startsWith(`..${_path2.default.sep}`)) {
377
+ throw new TypeError("A Farm layer srcDir cannot leave the layer root");
378
+ }
379
+ return normalized;
380
+ }
381
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeLayerSrcDir, "normalizeLayerSrcDir");
382
+ function getLayerDefaults(config) {
383
+ return Object.fromEntries(
384
+ Object.entries(config).filter(
385
+ ([key, value]) => key !== "extends" && value !== void 0 && !LAYER_LOCAL_CONFIG_KEYS.has(key)
386
+ )
387
+ );
388
+ }
389
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getLayerDefaults, "getLayerDefaults");
390
+ function mergeFarmLayerConfig(base, override) {
391
+ const output = { ...base };
392
+ for (const [key, value] of Object.entries(override)) {
393
+ if (value === void 0 || key === "layers") continue;
394
+ if (key === "plugins") {
395
+ output[key] = [...toArray(output[key]), ...toArray(value)];
396
+ continue;
397
+ }
398
+ if (key === "middleware" && output[key] !== void 0) {
399
+ output[key] = [...toArray(output[key]), ...toArray(value)];
400
+ continue;
401
+ }
402
+ if ((key === "redirects" || key === "rewrites" || key === "headers") && output[key]) {
403
+ output[key] = mergeConfigListResolvers(output[key], value);
404
+ continue;
405
+ }
406
+ if (isPlainObject(output[key]) && isPlainObject(value)) {
407
+ output[key] = mergePlainObjects(output[key], value);
408
+ continue;
409
+ }
410
+ output[key] = value;
411
+ }
412
+ return output;
413
+ }
414
+ _chunkS3JO3N4Hcjs.__name.call(void 0, mergeFarmLayerConfig, "mergeFarmLayerConfig");
415
+ function mergePlainObjects(base, override) {
416
+ const output = { ...base };
417
+ for (const [key, value] of Object.entries(override)) {
418
+ if (value === void 0) continue;
419
+ output[key] = isPlainObject(output[key]) && isPlainObject(value) ? mergePlainObjects(output[key], value) : value;
420
+ }
421
+ return output;
422
+ }
423
+ _chunkS3JO3N4Hcjs.__name.call(void 0, mergePlainObjects, "mergePlainObjects");
424
+ function mergeConfigListResolvers(base, override) {
425
+ return async () => [...await resolveConfigList(base), ...await resolveConfigList(override)];
426
+ }
427
+ _chunkS3JO3N4Hcjs.__name.call(void 0, mergeConfigListResolvers, "mergeConfigListResolvers");
428
+ async function resolveConfigList(value) {
429
+ const resolved = typeof value === "function" ? await value() : value;
430
+ return toArray(resolved);
431
+ }
432
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveConfigList, "resolveConfigList");
433
+ function toArray(value) {
434
+ if (value === void 0 || value === null) return [];
435
+ return Array.isArray(value) ? value : [value];
436
+ }
437
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toArray, "toArray");
438
+ function isPlainObject(value) {
439
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
440
+ const prototype = Object.getPrototypeOf(value);
441
+ return prototype === Object.prototype || prototype === null;
442
+ }
443
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isPlainObject, "isPlainObject");
444
+ function isPathLayerSource(source) {
445
+ return source.startsWith(".") || source.startsWith("/") || source.startsWith("file:") || /^[a-zA-Z]:[\\/]/.test(source);
446
+ }
447
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isPathLayerSource, "isPathLayerSource");
448
+ function normalizeRealPath(value) {
449
+ return _path2.default.resolve(_fs.realpathSync.call(void 0, value));
450
+ }
451
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeRealPath, "normalizeRealPath");
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+ exports.resolveFarmLayers = resolveFarmLayers; exports.getFarmSourceRoots = getFarmSourceRoots; exports.getFarmAppDirectories = getFarmAppDirectories; exports.getFarmLayerAliases = getFarmLayerAliases; exports.createFarmConfigResolutionPlugin = createFarmConfigResolutionPlugin; exports.loadFarmConfigFile = loadFarmConfigFile;