@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,31 @@
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 _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/build/production-vite.ts
6
+ function assertRequestedProductionViteBuilder() {
7
+ const requested = _optionalChain([process, 'access', _ => _.env, 'access', _2 => _2.FARM_VITE_BUILDER, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4(), 'access', _5 => _5.toLowerCase, 'call', _6 => _6()]);
8
+ if (!requested || requested === "rolldown") return;
9
+ if (requested === "rollup") {
10
+ throw new Error(
11
+ "FARM_VITE_BUILDER=rollup is no longer supported: Farm builds with Vite 8, which bundles with Rolldown. Remove FARM_VITE_BUILDER."
12
+ );
13
+ }
14
+ throw new Error('FARM_VITE_BUILDER must be "rolldown" when set');
15
+ }
16
+ _chunkS3JO3N4Hcjs.__name.call(void 0, assertRequestedProductionViteBuilder, "assertRequestedProductionViteBuilder");
17
+ async function loadFarmProductionVite() {
18
+ assertRequestedProductionViteBuilder();
19
+ const runtime = await import("vite");
20
+ return {
21
+ build: runtime.build,
22
+ createServer: runtime.createServer,
23
+ loadEnv: runtime.loadEnv,
24
+ builder: "rolldown"
25
+ };
26
+ }
27
+ _chunkS3JO3N4Hcjs.__name.call(void 0, loadFarmProductionVite, "loadFarmProductionVite");
28
+
29
+
30
+
31
+ exports.loadFarmProductionVite = loadFarmProductionVite;
@@ -0,0 +1,377 @@
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 _chunkIAMRBF3Zcjs = require('./chunk-IAMRBF3Z.cjs');
4
+
5
+
6
+ var _chunk2CQ74SP6cjs = require('./chunk-2CQ74SP6.cjs');
7
+
8
+
9
+ var _chunkUJ2C4ICScjs = require('./chunk-UJ2C4ICS.cjs');
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ var _chunk4PNUXIVUcjs = require('./chunk-4PNUXIVU.cjs');
18
+
19
+
20
+ var _chunkWMAPPDMMcjs = require('./chunk-WMAPPDMM.cjs');
21
+
22
+
23
+ var _chunk6V4TDWECcjs = require('./chunk-6V4TDWEC.cjs');
24
+
25
+
26
+
27
+ var _chunkMKB2EGIRcjs = require('./chunk-MKB2EGIR.cjs');
28
+
29
+
30
+ var _chunkVQDBNVOOcjs = require('./chunk-VQDBNVOO.cjs');
31
+
32
+
33
+ var _chunk5QIKR7RRcjs = require('./chunk-5QIKR7RR.cjs');
34
+
35
+
36
+
37
+ var _chunkNO3WWW3Ncjs = require('./chunk-NO3WWW3N.cjs');
38
+
39
+
40
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
41
+
42
+ // src/api/route-manager.ts
43
+ var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
44
+ var _path = require('path'); var path = _interopRequireWildcard(_path);
45
+ var _APIRouteConflictError = class _APIRouteConflictError extends Error {
46
+ constructor(routePath, method, existingFile, conflictingFile) {
47
+ super(
48
+ `Duplicate API route for ${method.toUpperCase()} ${routePath}: ${existingFile} conflicts with ${conflictingFile}`
49
+ );
50
+ this.name = "APIRouteConflictError";
51
+ }
52
+ };
53
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _APIRouteConflictError, "APIRouteConflictError");
54
+ var APIRouteConflictError = _APIRouteConflictError;
55
+ var _APIRouteManager = class _APIRouteManager {
56
+ constructor(appDir, viteServer, options = {}) {
57
+ this.routes = /* @__PURE__ */ new Map();
58
+ this.endpointSources = /* @__PURE__ */ new Map();
59
+ this.routeShapes = /* @__PURE__ */ new Map();
60
+ this.appDirs = Array.isArray(appDir) ? [...appDir] : [appDir];
61
+ this.viteServer = viteServer;
62
+ this.plugins = _nullishCoalesce(options.plugins, () => ( []));
63
+ this.throwOnLoadError = options.throwOnLoadError === true;
64
+ this.i18n = options.i18n;
65
+ this.bodySizeLimit = options.bodySizeLimit;
66
+ this.basePath = options.basePath;
67
+ }
68
+ /**
69
+ * Discover route.ts files in /app/api and explicit endpoints in root routes.ts
70
+ */
71
+ async discoverRoutes() {
72
+ const previousRoutes = this.routes;
73
+ const previousEndpointSources = this.endpointSources;
74
+ const previousRouteShapes = this.routeShapes;
75
+ this.routes = /* @__PURE__ */ new Map();
76
+ this.endpointSources = /* @__PURE__ */ new Map();
77
+ this.routeShapes = /* @__PURE__ */ new Map();
78
+ try {
79
+ for (const appDir of this.appDirs) {
80
+ const apiDir = path.join(appDir, "api");
81
+ let routeFiles = [];
82
+ if (fs.existsSync(apiDir)) {
83
+ routeFiles = this.findRouteFiles(apiDir);
84
+ }
85
+ for (const filePath of routeFiles) {
86
+ await this.loadRoute(filePath, appDir);
87
+ }
88
+ await this.loadRootRoutes(appDir);
89
+ await this.loadProgrammaticApiRoutes(appDir);
90
+ }
91
+ this.routes = new Map(
92
+ _chunk4PNUXIVUcjs.mergePluginAPIRoutes.call(void 0, [...this.routes.values()], this.plugins, void 0, {
93
+ bodySizeLimit: this.bodySizeLimit
94
+ }).map((route) => [route.path, route])
95
+ );
96
+ } catch (error) {
97
+ this.routes = previousRoutes;
98
+ this.endpointSources = previousEndpointSources;
99
+ this.routeShapes = previousRouteShapes;
100
+ throw error;
101
+ }
102
+ if (process.env.FARM_VERBOSE) {
103
+ _chunk5QIKR7RRcjs.logger.success(`Discovered ${this.routes.size} API routes`);
104
+ for (const [routePath, route] of this.routes) {
105
+ _chunk5QIKR7RRcjs.logger.info(` ${route.methods.join(", ")} ${routePath}`);
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Recursively find all route.ts files
111
+ */
112
+ findRouteFiles(dir) {
113
+ const files = [];
114
+ if (!fs.existsSync(dir)) {
115
+ return files;
116
+ }
117
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
118
+ for (const entry of entries) {
119
+ const fullPath = path.join(dir, entry.name);
120
+ if (entry.isDirectory()) {
121
+ files.push(...this.findRouteFiles(fullPath));
122
+ } else if (_chunk2CQ74SP6cjs.isFarmAPIRouteFileName.call(void 0, entry.name)) {
123
+ files.push(fullPath);
124
+ }
125
+ }
126
+ return files;
127
+ }
128
+ /**
129
+ * Load a route.ts file and extract HTTP method exports
130
+ */
131
+ async loadRoute(filePath, appDir) {
132
+ try {
133
+ const apiDir = path.join(appDir, "api");
134
+ const relativePath = path.relative(apiDir, path.dirname(filePath));
135
+ const routePath = "/api/" + (relativePath === "." ? "" : relativePath.replace(/\\/g, "/"));
136
+ const routeModule = await this.loadModule(filePath);
137
+ const endpoints = {};
138
+ const availableMethods = [];
139
+ for (const method of _chunk4PNUXIVUcjs.API_ROUTE_METHODS) {
140
+ if (routeModule[method]) {
141
+ endpoints[method] = routeModule[method];
142
+ availableMethods.push(method);
143
+ }
144
+ }
145
+ if (availableMethods.length > 0) {
146
+ const existingSources = this.endpointSources.get(routePath);
147
+ if (existingSources) {
148
+ for (const method of availableMethods) {
149
+ const existingSource = existingSources.get(method);
150
+ if (_optionalChain([existingSource, 'optionalAccess', _ => _.appDir]) === appDir) {
151
+ throw new APIRouteConflictError(routePath, method, existingSource.filePath, filePath);
152
+ }
153
+ }
154
+ }
155
+ const runtimeConfig = _chunkMKB2EGIRcjs.normalizeFarmRouteRuntimeConfig.call(void 0,
156
+ _chunkMKB2EGIRcjs.getFarmRouteRuntimeConfig.call(void 0, routeModule),
157
+ `API route "${routePath}"`
158
+ );
159
+ this.registerRouteShape(routePath, filePath, appDir);
160
+ const existingRoute = this.routes.get(routePath);
161
+ const mergedMethods = existingRoute ? [...existingRoute.methods] : [];
162
+ for (const method of availableMethods) {
163
+ if (!mergedMethods.includes(method)) mergedMethods.push(method);
164
+ }
165
+ this.routes.set(routePath, {
166
+ ...existingRoute,
167
+ path: routePath,
168
+ filePath,
169
+ methods: mergedMethods,
170
+ endpoints: { ..._optionalChain([existingRoute, 'optionalAccess', _2 => _2.endpoints]), ...endpoints },
171
+ ...runtimeConfig
172
+ });
173
+ const nextSources = new Map(existingSources);
174
+ for (const method of availableMethods) {
175
+ nextSources.set(method, { appDir, filePath });
176
+ }
177
+ this.endpointSources.set(routePath, nextSources);
178
+ }
179
+ } catch (error) {
180
+ this.handleLoadError(`Error loading route ${filePath}`, error);
181
+ }
182
+ }
183
+ /**
184
+ * Load explicit-path endpoints from src/routes.ts-style files.
185
+ */
186
+ async loadRootRoutes(appDir) {
187
+ const routesFile = this.findRootRoutesFile(appDir);
188
+ if (!routesFile) {
189
+ return;
190
+ }
191
+ try {
192
+ const routesModule = await this.loadModule(routesFile);
193
+ for (const exportValue of Object.values(routesModule)) {
194
+ const endpoint = exportValue;
195
+ if (!_optionalChain([endpoint, 'optionalAccess', _3 => _3.__path])) {
196
+ continue;
197
+ }
198
+ const method = String(endpoint.__method || "GET").toUpperCase();
199
+ this.registerRouteShape(endpoint.__path, routesFile, appDir);
200
+ this.addEndpoint(endpoint.__path, routesFile, method, endpoint, appDir);
201
+ }
202
+ } catch (error) {
203
+ this.handleLoadError(`Error loading root API routes ${routesFile}`, error);
204
+ }
205
+ }
206
+ async loadProgrammaticApiRoutes(appDir) {
207
+ const candidateRoots = [path.dirname(appDir), appDir];
208
+ const routeFiles = Array.from(
209
+ new Set(candidateRoots.flatMap((srcRoot) => _chunkIAMRBF3Zcjs.findProgrammaticRouteFilesInDir.call(void 0, srcRoot)))
210
+ );
211
+ if (routeFiles.length === 0) return;
212
+ const { getProgrammaticRouteManifest } = await import("./routes.cjs");
213
+ for (const routeFile of routeFiles) {
214
+ try {
215
+ const routesModule = await this.loadModule(routeFile);
216
+ const manifest = getProgrammaticRouteManifest(routesModule);
217
+ if (!manifest) continue;
218
+ for (const definition of manifest.routes) {
219
+ if (definition.kind !== "api") continue;
220
+ if (!Object.values(definition.methods).some(Boolean)) continue;
221
+ this.addProgrammaticApiRoute(routeFile, definition, appDir);
222
+ }
223
+ } catch (error) {
224
+ this.handleLoadError(`Error loading programmatic API routes ${routeFile}`, error);
225
+ }
226
+ }
227
+ }
228
+ handleLoadError(message, error) {
229
+ _chunk5QIKR7RRcjs.logger.error(`${message}: ${error}`);
230
+ if (this.throwOnLoadError || error instanceof APIRouteConflictError || error instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError || error instanceof _chunkNO3WWW3Ncjs.NonTerminalCatchAllRouteError) {
231
+ throw error;
232
+ }
233
+ }
234
+ findRootRoutesFile(appDir) {
235
+ const routeNames = ["routes.ts", "routes.tsx", "routes.js"];
236
+ const candidateDirs = [path.dirname(appDir), appDir];
237
+ const seen = /* @__PURE__ */ new Set();
238
+ for (const dir of candidateDirs) {
239
+ for (const routeName of routeNames) {
240
+ const routesFile = path.join(dir, routeName);
241
+ if (seen.has(routesFile)) {
242
+ continue;
243
+ }
244
+ seen.add(routesFile);
245
+ if (fs.existsSync(routesFile)) {
246
+ return routesFile;
247
+ }
248
+ }
249
+ }
250
+ return null;
251
+ }
252
+ async loadModule(filePath) {
253
+ if (this.viteServer) {
254
+ return await this.viteServer.ssrLoadModule(filePath);
255
+ }
256
+ return await import(
257
+ /* @vite-ignore */
258
+ _chunkVQDBNVOOcjs.toFileModuleUrl.call(void 0, filePath)
259
+ );
260
+ }
261
+ addEndpoint(routePath, filePath, method, endpoint, appDir, runtimeConfig = {}) {
262
+ const normalizedMethod = method.toUpperCase();
263
+ const existingRoute = this.routes.get(routePath);
264
+ const existingSource = _optionalChain([this, 'access', _4 => _4.endpointSources, 'access', _5 => _5.get, 'call', _6 => _6(routePath), 'optionalAccess', _7 => _7.get, 'call', _8 => _8(normalizedMethod)]);
265
+ if (_optionalChain([existingSource, 'optionalAccess', _9 => _9.appDir]) === appDir) {
266
+ throw new APIRouteConflictError(
267
+ routePath,
268
+ normalizedMethod,
269
+ existingSource.filePath,
270
+ filePath
271
+ );
272
+ }
273
+ if (existingRoute) {
274
+ if (!existingRoute.methods.includes(normalizedMethod)) {
275
+ existingRoute.methods.push(normalizedMethod);
276
+ }
277
+ existingRoute.endpoints[normalizedMethod] = endpoint;
278
+ Object.assign(existingRoute, runtimeConfig);
279
+ const sources = _nullishCoalesce(this.endpointSources.get(routePath), () => ( /* @__PURE__ */ new Map()));
280
+ sources.set(normalizedMethod, { appDir, filePath });
281
+ this.endpointSources.set(routePath, sources);
282
+ return;
283
+ }
284
+ this.routes.set(routePath, {
285
+ path: routePath,
286
+ filePath,
287
+ methods: [normalizedMethod],
288
+ endpoints: { [normalizedMethod]: endpoint },
289
+ ...runtimeConfig
290
+ });
291
+ this.endpointSources.set(routePath, /* @__PURE__ */ new Map([[normalizedMethod, { appDir, filePath }]]));
292
+ }
293
+ addProgrammaticApiRoute(filePath, route, appDir) {
294
+ const modulePath = _chunk6V4TDWECcjs.createProgrammaticRouteModuleId.call(void 0, filePath, "api", route.path);
295
+ const runtimeConfig = _chunkMKB2EGIRcjs.normalizeFarmRouteRuntimeConfig.call(void 0, route, `API route "${route.path}"`);
296
+ for (const [method, endpoint] of Object.entries(route.methods)) {
297
+ if (endpoint) {
298
+ this.addEndpoint(route.path, modulePath, method, endpoint, appDir, runtimeConfig);
299
+ }
300
+ }
301
+ }
302
+ registerRouteShape(routePath, filePath, appDir) {
303
+ const replacedPath = _chunkWMAPPDMMcjs.registerAPIRouteShape.call(void 0, this.routeShapes, routePath, filePath, appDir);
304
+ if (replacedPath) {
305
+ this.routes.delete(replacedPath);
306
+ this.endpointSources.delete(replacedPath);
307
+ }
308
+ }
309
+ /**
310
+ * Get the handler that directly invokes endpoint handlers
311
+ */
312
+ getHandler(options = {}) {
313
+ if (this.routes.size === 0) {
314
+ return null;
315
+ }
316
+ return async (request) => {
317
+ const url = new URL(request.url);
318
+ const pathname = url.pathname;
319
+ const method = request.method.toUpperCase();
320
+ const match = _chunk4PNUXIVUcjs.matchAPIRouteAtBasePath.call(void 0, this.routes, pathname, this.basePath);
321
+ if (!match) {
322
+ return new Response(JSON.stringify({ error: "Not Found" }), {
323
+ status: 404,
324
+ headers: { "Content-Type": "application/json" }
325
+ });
326
+ }
327
+ const { route, params } = match;
328
+ const endpoint = _chunk4PNUXIVUcjs.resolveAPIRouteEndpoint.call(void 0, route, method);
329
+ if (!endpoint) {
330
+ return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
331
+ status: 405,
332
+ headers: {
333
+ Allow: _chunk4PNUXIVUcjs.getAllowedAPIRouteMethods.call(void 0, route).join(", "),
334
+ "Content-Type": "application/json"
335
+ }
336
+ });
337
+ }
338
+ const invoke = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async () => {
339
+ try {
340
+ return await _chunk4PNUXIVUcjs.invokeAPIRouteEndpoint.call(void 0, endpoint, request, params, this.bodySizeLimit);
341
+ } catch (error) {
342
+ if (options.throwOnError) throw error;
343
+ console.error(`[API Error] ${pathname}:`, error);
344
+ return new Response(JSON.stringify({ error: "Internal Server Error" }), {
345
+ status: 500,
346
+ headers: { "Content-Type": "application/json" }
347
+ });
348
+ }
349
+ }, "invoke");
350
+ return _optionalChain([this, 'access', _10 => _10.i18n, 'optionalAccess', _11 => _11.config, 'access', _12 => _12.enabled]) ? _chunkUJ2C4ICScjs._runWithFarmI18nRequest.call(void 0, this.i18n, request, invoke, {
351
+ redirect: false
352
+ }) : invoke();
353
+ };
354
+ }
355
+ /**
356
+ * Check if a path is an API route
357
+ */
358
+ isAPIRoute(pathname) {
359
+ return Boolean(this.matchRoute(pathname));
360
+ }
361
+ matchRoute(pathname) {
362
+ return _chunk4PNUXIVUcjs.matchAPIRouteAtBasePath.call(void 0, this.routes, pathname, this.basePath);
363
+ }
364
+ /**
365
+ * Get all routes for client type generation
366
+ */
367
+ getRoutes() {
368
+ return this.routes;
369
+ }
370
+ };
371
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _APIRouteManager, "APIRouteManager");
372
+ var APIRouteManager = _APIRouteManager;
373
+
374
+
375
+
376
+
377
+ exports.APIRouteConflictError = APIRouteConflictError; exports.APIRouteManager = APIRouteManager;
@@ -0,0 +1,39 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/font.ts
6
+ function defineLayoutFonts(fonts) {
7
+ return fonts;
8
+ }
9
+ _chunkS3JO3N4Hcjs.__name.call(void 0, defineLayoutFonts, "defineLayoutFonts");
10
+ function resolveFarmLayoutFonts(layouts) {
11
+ let resolved;
12
+ for (const layout of layouts) {
13
+ if (!layout.fonts) continue;
14
+ resolved = { ...resolved, ...layout.fonts };
15
+ }
16
+ return resolved;
17
+ }
18
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveFarmLayoutFonts, "resolveFarmLayoutFonts");
19
+ function fontCompilerError(loader) {
20
+ throw new Error(
21
+ `[Farm fonts] ${loader}() must be called at module scope with static options and compiled by the Farm Vite plugin.`
22
+ );
23
+ }
24
+ _chunkS3JO3N4Hcjs.__name.call(void 0, fontCompilerError, "fontCompilerError");
25
+ function localFont(_options) {
26
+ return fontCompilerError("localFont");
27
+ }
28
+ _chunkS3JO3N4Hcjs.__name.call(void 0, localFont, "localFont");
29
+ function remoteFont(_options) {
30
+ return fontCompilerError("remoteFont");
31
+ }
32
+ _chunkS3JO3N4Hcjs.__name.call(void 0, remoteFont, "remoteFont");
33
+
34
+
35
+
36
+
37
+
38
+
39
+ exports.defineLayoutFonts = defineLayoutFonts; exports.resolveFarmLayoutFonts = resolveFarmLayoutFonts; exports.localFont = localFont; exports.remoteFont = remoteFont;