@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,472 @@
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 _chunkWPYFSQKKcjs = require('./chunk-WPYFSQKK.cjs');
4
+
5
+
6
+
7
+ var _chunkI4J452B7cjs = require('./chunk-I4J452B7.cjs');
8
+
9
+
10
+ var _chunkWMAPPDMMcjs = require('./chunk-WMAPPDMM.cjs');
11
+
12
+
13
+ var _chunkTKJZFIMLcjs = require('./chunk-TKJZFIML.cjs');
14
+
15
+
16
+
17
+
18
+ var _chunkEM6SBQKMcjs = require('./chunk-EM6SBQKM.cjs');
19
+
20
+
21
+
22
+ var _chunkG7HXGLECcjs = require('./chunk-G7HXGLEC.cjs');
23
+
24
+
25
+
26
+ var _chunkS3A45T7Fcjs = require('./chunk-S3A45T7F.cjs');
27
+
28
+
29
+
30
+
31
+ var _chunkZEG3OPIBcjs = require('./chunk-ZEG3OPIB.cjs');
32
+
33
+
34
+ var _chunk5ZSWG4UXcjs = require('./chunk-5ZSWG4UX.cjs');
35
+
36
+
37
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
38
+
39
+ // src/api/route-schema.ts
40
+ async function parseRouteSchema(schema, value) {
41
+ if (schema.parseAsync) return schema.parseAsync(value);
42
+ if (schema["~standard"]) {
43
+ const result = await schema["~standard"].validate(value);
44
+ if (result.issues)
45
+ throw Object.assign(new Error("Validation failed"), { issues: result.issues });
46
+ return result.value;
47
+ }
48
+ if (schema.parse) return schema.parse(value);
49
+ throw new TypeError("Route validators must implement Standard Schema or parse().");
50
+ }
51
+ _chunkS3JO3N4Hcjs.__name.call(void 0, parseRouteSchema, "parseRouteSchema");
52
+
53
+ // src/api/plugin-route-runtime.ts
54
+ function mergePluginAPIRoutes(existing, plugins, expected, options = {}) {
55
+ const routes = /* @__PURE__ */ new Map();
56
+ const shapes = /* @__PURE__ */ new Map();
57
+ for (const route of existing) {
58
+ _chunkWMAPPDMMcjs.registerAPIRouteShape.call(void 0, shapes, route.path, route.filePath || route.path, "app");
59
+ routes.set(route.path, {
60
+ ...route,
61
+ filePath: route.filePath || "",
62
+ methods: [...route.methods],
63
+ endpoints: { ...route.endpoints }
64
+ });
65
+ }
66
+ const api = createPluginLocalAPI(existing, options.bodySizeLimit);
67
+ for (const definition of _chunkI4J452B7cjs.resolvePluginRoutes.call(void 0, plugins, { api })) {
68
+ _chunkWMAPPDMMcjs.registerAPIRouteShape.call(void 0, shapes, definition.path, `plugin:${definition.path}`, "app");
69
+ let route = routes.get(definition.path);
70
+ if (_optionalChain([route, 'optionalAccess', _ => _.methods, 'access', _2 => _2.includes, 'call', _3 => _3(definition.method)])) {
71
+ throw new Error(
72
+ `Duplicate API route for ${definition.method} ${definition.path}. Plugin routes cannot override app or other plugin endpoints.`
73
+ );
74
+ }
75
+ if (!route) {
76
+ route = { path: definition.path, filePath: "", methods: [], endpoints: {} };
77
+ routes.set(definition.path, route);
78
+ }
79
+ route.methods.push(definition.method);
80
+ route.pluginMethods = [..._nullishCoalesce(route.pluginMethods, () => ( [])), definition.method];
81
+ route.endpoints[definition.method] = definition.endpoint;
82
+ }
83
+ const result = [...routes.values()];
84
+ if (expected) {
85
+ const signature = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (entries) => entries.map(({ path, methods }) => `${path}:${[...methods].sort().join(",")}`).sort().join("\n"), "signature");
86
+ const actualSignature = signature(result);
87
+ const expectedSignature = signature(expected);
88
+ if (actualSignature !== expectedSignature) {
89
+ throw new Error(
90
+ `Plugin API routes changed between build and runtime. Route paths and methods must be stable across environments; rebuild the app.
91
+ Expected:
92
+ ${expectedSignature || "(none)"}
93
+ Received:
94
+ ${actualSignature || "(none)"}`
95
+ );
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ _chunkS3JO3N4Hcjs.__name.call(void 0, mergePluginAPIRoutes, "mergePluginAPIRoutes");
101
+ function createPluginLocalAPI(routes, bodySizeLimit) {
102
+ const endpoints = /* @__PURE__ */ new Map();
103
+ for (const route of routes) {
104
+ for (const method of route.methods) {
105
+ const normalizedMethod = method.toUpperCase();
106
+ const endpoint = route.endpoints[normalizedMethod];
107
+ if (typeof endpoint !== "function") continue;
108
+ const descriptor = Object.freeze({
109
+ path: route.path,
110
+ method: normalizedMethod,
111
+ input: Object.freeze({
112
+ body: _optionalChain([endpoint, 'access', _4 => _4.__types, 'optionalAccess', _5 => _5.body]),
113
+ query: _optionalChain([endpoint, 'access', _6 => _6.__types, 'optionalAccess', _7 => _7.query]),
114
+ params: _optionalChain([endpoint, 'access', _8 => _8.__types, 'optionalAccess', _9 => _9.params]),
115
+ headers: _optionalChain([endpoint, 'access', _10 => _10.__types, 'optionalAccess', _11 => _11.headers])
116
+ }),
117
+ output: endpoint.__output,
118
+ mcp: endpoint.__mcp === true ? true : endpoint.__mcp ? Object.freeze({ ...endpoint.__mcp }) : void 0,
119
+ invoke(request, params = {}) {
120
+ return invokeAPIRouteEndpoint(endpoint, request, { ...params }, bodySizeLimit);
121
+ }
122
+ });
123
+ endpoints.set(`${normalizedMethod} ${route.path}`, descriptor);
124
+ }
125
+ }
126
+ const listedEndpoints = Object.freeze(Array.from(endpoints.values()));
127
+ return Object.freeze({
128
+ available: true,
129
+ get(method, path) {
130
+ return endpoints.get(`${method.toUpperCase()} ${path}`);
131
+ },
132
+ list() {
133
+ return listedEndpoints;
134
+ }
135
+ });
136
+ }
137
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createPluginLocalAPI, "createPluginLocalAPI");
138
+
139
+ // src/api/runtime.ts
140
+ var API_ROUTE_METHODS = [
141
+ "GET",
142
+ "HEAD",
143
+ "QUERY",
144
+ "POST",
145
+ "PUT",
146
+ "DELETE",
147
+ "PATCH",
148
+ "OPTIONS"
149
+ ];
150
+ function resolveAPIRouteEndpoint(route, method) {
151
+ const normalizedMethod = method.toUpperCase();
152
+ return _nullishCoalesce(route.endpoints[normalizedMethod], () => ( (normalizedMethod === "HEAD" ? route.endpoints.GET : void 0)));
153
+ }
154
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveAPIRouteEndpoint, "resolveAPIRouteEndpoint");
155
+ function getAllowedAPIRouteMethods(route) {
156
+ const methods = [...route.methods];
157
+ const getIndex = methods.indexOf("GET");
158
+ if (getIndex >= 0 && !methods.includes("HEAD")) {
159
+ methods.splice(getIndex + 1, 0, "HEAD");
160
+ }
161
+ return methods;
162
+ }
163
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getAllowedAPIRouteMethods, "getAllowedAPIRouteMethods");
164
+ function matchAPIRouteAtBasePath(routes, pathname, serverBasePath = _chunkS3A45T7Fcjs.DEFAULT_FARM_API_BASE_PATH) {
165
+ const directMatch = _chunkG7HXGLECcjs.matchAPIRoute.call(void 0, routes, pathname);
166
+ if (directMatch) return directMatch;
167
+ const canonicalPathname = _chunkWPYFSQKKcjs.resolveFarmAPICanonicalPathname.call(void 0, pathname, serverBasePath);
168
+ return canonicalPathname === pathname ? null : _chunkG7HXGLECcjs.matchAPIRoute.call(void 0, routes, canonicalPathname);
169
+ }
170
+ _chunkS3JO3N4Hcjs.__name.call(void 0, matchAPIRouteAtBasePath, "matchAPIRouteAtBasePath");
171
+ function createStaticAPIRouteMatcherAtBasePath(routes, serverBasePath = _chunkS3A45T7Fcjs.DEFAULT_FARM_API_BASE_PATH) {
172
+ const match = _chunkG7HXGLECcjs.createStaticAPIRouteMatcher.call(void 0, routes);
173
+ return (pathname) => {
174
+ const directMatch = match(pathname);
175
+ if (directMatch) return directMatch;
176
+ const canonicalPathname = _chunkWPYFSQKKcjs.resolveFarmAPICanonicalPathname.call(void 0, pathname, serverBasePath);
177
+ return canonicalPathname === pathname ? null : match(canonicalPathname);
178
+ };
179
+ }
180
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createStaticAPIRouteMatcherAtBasePath, "createStaticAPIRouteMatcherAtBasePath");
181
+ function isFarmAPIPathname(pathname, serverBasePath = _chunkS3A45T7Fcjs.DEFAULT_FARM_API_BASE_PATH) {
182
+ const basePath = _chunkS3A45T7Fcjs.normalizeFarmAPIBasePath.call(void 0, serverBasePath);
183
+ return basePath !== "/" && (pathname === basePath || pathname.startsWith(`${basePath}/`));
184
+ }
185
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isFarmAPIPathname, "isFarmAPIPathname");
186
+ async function invokeAPIRouteEndpoint(endpoint, request, params = {}, bodySizeLimit = _chunkEM6SBQKMcjs.DEFAULT_FARM_SERVER_BODY_SIZE_LIMIT) {
187
+ try {
188
+ request = await _chunkEM6SBQKMcjs.bufferFarmRequestBody.call(void 0, request, bodySizeLimit);
189
+ } catch (error) {
190
+ const response2 = _chunkEM6SBQKMcjs.createFarmRequestBodyErrorResponse.call(void 0, error);
191
+ if (response2) return response2;
192
+ throw error;
193
+ }
194
+ const response = await _chunk5ZSWG4UXcjs._runWithCurrentRequest.call(void 0,
195
+ request,
196
+ () => invokeAPIRouteEndpointInContext(endpoint, request, params)
197
+ );
198
+ if (request.method.toUpperCase() !== "HEAD") {
199
+ return response;
200
+ }
201
+ return _chunkTKJZFIMLcjs.omitFarmResponseBody.call(void 0, response);
202
+ }
203
+ _chunkS3JO3N4Hcjs.__name.call(void 0, invokeAPIRouteEndpoint, "invokeAPIRouteEndpoint");
204
+ async function invokeAPIRouteEndpointInContext(endpoint, request, params) {
205
+ const queryContentTypeError = validateQueryContentType(request);
206
+ if (queryContentTypeError) {
207
+ return queryContentTypeError;
208
+ }
209
+ const farmHandler = endpoint.__handler || null;
210
+ if (!farmHandler) {
211
+ const result = await endpoint(request, {
212
+ params: Promise.resolve(params)
213
+ });
214
+ return normalizeRouteResponse(result);
215
+ }
216
+ const url = new URL(request.url);
217
+ const query = {
218
+ ...searchParamsToObject(url.searchParams)
219
+ };
220
+ let body = void 0;
221
+ if (request.method.toUpperCase() !== "GET" && request.method.toUpperCase() !== "HEAD") {
222
+ const parsedBody = await readRequestBody(request);
223
+ if (parsedBody.error) return parsedBody.error;
224
+ body = parsedBody.body;
225
+ }
226
+ const headers = Object.fromEntries(request.headers.entries());
227
+ const types = endpoint.__types || {};
228
+ const queryValidation = await validateInput(types.query, query, "Invalid query parameters");
229
+ if (queryValidation instanceof Response) {
230
+ return queryValidation;
231
+ }
232
+ const bodyValidation = await validateInput(types.body, body, "Invalid request body");
233
+ if (bodyValidation instanceof Response) {
234
+ return bodyValidation;
235
+ }
236
+ const headersValidation = await validateInput(types.headers, headers, "Invalid request headers");
237
+ if (headersValidation instanceof Response) {
238
+ return headersValidation;
239
+ }
240
+ const paramsValidation = await validateInput(types.params, params, "Invalid route parameters");
241
+ if (paramsValidation instanceof Response) return paramsValidation;
242
+ const handlerContext = {
243
+ query: queryValidation,
244
+ body: bodyValidation,
245
+ headers: headersValidation,
246
+ request,
247
+ context: {},
248
+ params: paramsValidation
249
+ };
250
+ let execution;
251
+ try {
252
+ execution = typeof endpoint.__farmInvoke === "function" ? await endpoint.__farmInvoke(handlerContext) : {
253
+ result: await farmHandler(handlerContext),
254
+ context: handlerContext.context,
255
+ handlerExecuted: true,
256
+ invalidations: []
257
+ };
258
+ } catch (error) {
259
+ if (_chunkI4J452B7cjs.isEndpointFailure.call(void 0, error)) {
260
+ return createEndpointFailureResponse(error);
261
+ }
262
+ throw error;
263
+ }
264
+ if (execution.handlerExecuted && endpoint.__output && !isWebResponse(execution.result)) {
265
+ try {
266
+ execution.result = await parseRouteSchema(endpoint.__output, execution.result);
267
+ } catch (e) {
268
+ throw new Error("API route returned a value that does not match its output schema.");
269
+ }
270
+ }
271
+ const response = normalizeRouteResponse(execution.result);
272
+ return attachEndpointInvalidations(response, execution.invalidations);
273
+ }
274
+ _chunkS3JO3N4Hcjs.__name.call(void 0, invokeAPIRouteEndpointInContext, "invokeAPIRouteEndpointInContext");
275
+ function validateQueryContentType(request) {
276
+ if (request.method.toUpperCase() !== "QUERY" || request.headers.has("content-type")) {
277
+ return null;
278
+ }
279
+ return new Response(
280
+ JSON.stringify({
281
+ error: "Invalid QUERY request",
282
+ message: "QUERY requests must include a Content-Type header."
283
+ }),
284
+ {
285
+ status: 400,
286
+ headers: { "Content-Type": "application/json" }
287
+ }
288
+ );
289
+ }
290
+ _chunkS3JO3N4Hcjs.__name.call(void 0, validateQueryContentType, "validateQueryContentType");
291
+ function normalizeRouteResponse(result) {
292
+ if (isWebResponse(result)) {
293
+ return result;
294
+ }
295
+ if (result === void 0) {
296
+ return new Response(null, { status: 204 });
297
+ }
298
+ let body;
299
+ try {
300
+ body = JSON.stringify(result);
301
+ } catch (error) {
302
+ const serializationError = new TypeError(
303
+ "API route result must be a JSON-serializable value or a Response."
304
+ );
305
+ serializationError.cause = error;
306
+ throw serializationError;
307
+ }
308
+ if (body === void 0) {
309
+ throw new TypeError("API route result must be a JSON-serializable value or a Response.");
310
+ }
311
+ return new Response(body, {
312
+ status: 200,
313
+ headers: { "Content-Type": "application/json" }
314
+ });
315
+ }
316
+ _chunkS3JO3N4Hcjs.__name.call(void 0, normalizeRouteResponse, "normalizeRouteResponse");
317
+ function isWebResponse(value) {
318
+ return value instanceof Response || typeof value === "object" && value !== null && "headers" in value && "status" in value && typeof value.arrayBuffer === "function";
319
+ }
320
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isWebResponse, "isWebResponse");
321
+ function attachEndpointInvalidations(response, keys) {
322
+ const existing = _chunkZEG3OPIBcjs.decodeFarmCacheInvalidations.call(void 0,
323
+ response.headers.get(_chunkZEG3OPIBcjs.FARM_CACHE_INVALIDATION_HEADER)
324
+ );
325
+ const encoded = _chunkZEG3OPIBcjs.encodeFarmCacheInvalidations.call(void 0, [...existing, ...keys]);
326
+ if (!encoded) return response;
327
+ const headers = new Headers(response.headers);
328
+ headers.set(_chunkZEG3OPIBcjs.FARM_CACHE_INVALIDATION_HEADER, encoded);
329
+ return new Response(response.body, {
330
+ status: response.status,
331
+ statusText: response.statusText,
332
+ headers
333
+ });
334
+ }
335
+ _chunkS3JO3N4Hcjs.__name.call(void 0, attachEndpointInvalidations, "attachEndpointInvalidations");
336
+ function createEndpointFailureResponse(failure) {
337
+ return new Response(
338
+ JSON.stringify({
339
+ error: {
340
+ code: failure.code,
341
+ message: failure.message,
342
+ data: failure.data
343
+ }
344
+ }),
345
+ {
346
+ status: failure.status,
347
+ headers: {
348
+ "cache-control": "no-store",
349
+ "content-type": "application/json"
350
+ }
351
+ }
352
+ );
353
+ }
354
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createEndpointFailureResponse, "createEndpointFailureResponse");
355
+ async function readRequestBody(request) {
356
+ const contentType = _optionalChain([request, 'access', _12 => _12.headers, 'access', _13 => _13.get, 'call', _14 => _14("content-type"), 'optionalAccess', _15 => _15.split, 'call', _16 => _16(";", 1), 'access', _17 => _17[0], 'optionalAccess', _18 => _18.trim, 'call', _19 => _19(), 'access', _20 => _20.toLowerCase, 'call', _21 => _21()]);
357
+ if (contentType === "multipart/form-data") {
358
+ try {
359
+ return { body: formDataToObject(await request.clone().formData()) };
360
+ } catch (e2) {
361
+ return invalidRequestBody("The request body is not valid multipart form data.");
362
+ }
363
+ }
364
+ let text;
365
+ try {
366
+ text = await request.clone().text();
367
+ } catch (e3) {
368
+ if (contentType === "application/json" || _optionalChain([contentType, 'optionalAccess', _22 => _22.endsWith, 'call', _23 => _23("+json")])) {
369
+ return invalidRequestBody("The request body is not valid JSON.");
370
+ }
371
+ if (contentType === "application/x-www-form-urlencoded") {
372
+ return invalidRequestBody("The request body is not valid URL-encoded form data.");
373
+ }
374
+ return { body: void 0 };
375
+ }
376
+ if (contentType === "application/json" || _optionalChain([contentType, 'optionalAccess', _24 => _24.endsWith, 'call', _25 => _25("+json")])) {
377
+ if (!text && request.method.toUpperCase() === "QUERY") {
378
+ return { body: void 0 };
379
+ }
380
+ try {
381
+ return { body: JSON.parse(text) };
382
+ } catch (e4) {
383
+ return invalidRequestBody("The request body is not valid JSON.");
384
+ }
385
+ }
386
+ if (contentType === "application/x-www-form-urlencoded") {
387
+ return { body: searchParamsToObject(new URLSearchParams(text)) };
388
+ }
389
+ if (!text) return { body: void 0 };
390
+ if (contentType === void 0) {
391
+ try {
392
+ return { body: JSON.parse(text) };
393
+ } catch (e5) {
394
+ return { body: void 0 };
395
+ }
396
+ }
397
+ return { body: void 0 };
398
+ }
399
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readRequestBody, "readRequestBody");
400
+ function invalidRequestBody(message) {
401
+ return {
402
+ error: new Response(
403
+ JSON.stringify({
404
+ error: "Invalid request body",
405
+ message
406
+ }),
407
+ {
408
+ status: 400,
409
+ headers: { "Content-Type": "application/json" }
410
+ }
411
+ )
412
+ };
413
+ }
414
+ _chunkS3JO3N4Hcjs.__name.call(void 0, invalidRequestBody, "invalidRequestBody");
415
+ function formDataToObject(formData) {
416
+ return entriesToObject(formData.entries());
417
+ }
418
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formDataToObject, "formDataToObject");
419
+ function searchParamsToObject(searchParams) {
420
+ return entriesToObject(searchParams.entries());
421
+ }
422
+ _chunkS3JO3N4Hcjs.__name.call(void 0, searchParamsToObject, "searchParamsToObject");
423
+ function entriesToObject(entries) {
424
+ const output = /* @__PURE__ */ Object.create(null);
425
+ for (const [key, value] of entries) {
426
+ if (key === "__proto__" || key === "constructor" || key === "prototype") continue;
427
+ const current = output[key];
428
+ if (current === void 0) {
429
+ output[key] = value;
430
+ } else if (Array.isArray(current)) {
431
+ current.push(value);
432
+ } else {
433
+ output[key] = [current, value];
434
+ }
435
+ }
436
+ return output;
437
+ }
438
+ _chunkS3JO3N4Hcjs.__name.call(void 0, entriesToObject, "entriesToObject");
439
+ async function validateInput(schema, value, error) {
440
+ if (!schema) return value;
441
+ try {
442
+ return await parseRouteSchema(schema, value);
443
+ } catch (validationError) {
444
+ return Response.json(
445
+ {
446
+ error,
447
+ details: (validationError.issues || validationError.errors || []).map((issue) => ({
448
+ path: issue.path,
449
+ message: issue.message,
450
+ code: issue.code
451
+ }))
452
+ },
453
+ { status: 400 }
454
+ );
455
+ }
456
+ }
457
+ _chunkS3JO3N4Hcjs.__name.call(void 0, validateInput, "validateInput");
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+ exports.parseRouteSchema = parseRouteSchema; exports.API_ROUTE_METHODS = API_ROUTE_METHODS; exports.resolveAPIRouteEndpoint = resolveAPIRouteEndpoint; exports.getAllowedAPIRouteMethods = getAllowedAPIRouteMethods; exports.matchAPIRouteAtBasePath = matchAPIRouteAtBasePath; exports.createStaticAPIRouteMatcherAtBasePath = createStaticAPIRouteMatcherAtBasePath; exports.isFarmAPIPathname = isFarmAPIPathname; exports.invokeAPIRouteEndpoint = invokeAPIRouteEndpoint; exports.normalizeRouteResponse = normalizeRouteResponse; exports.isWebResponse = isWebResponse; exports.createEndpointFailureResponse = createEndpointFailureResponse; exports.mergePluginAPIRoutes = mergePluginAPIRoutes;
@@ -0,0 +1,21 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+ var _chunk72ADZ6GQcjs = require('./chunk-72ADZ6GQ.cjs');
4
+
5
+
6
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
7
+
8
+ // src/api/server-context.ts
9
+ var _async_hooks = require('async_hooks');
10
+ var API_RUNTIME_STORAGE = /* @__PURE__ */ Symbol.for("@farm.js/core/api-request-storage");
11
+ var runtimeGlobal = globalThis;
12
+ var storage = _nullishCoalesce(runtimeGlobal[API_RUNTIME_STORAGE], () => ( (runtimeGlobal[API_RUNTIME_STORAGE] = new (0, _async_hooks.AsyncLocalStorage)())));
13
+ _chunk72ADZ6GQcjs.setAPIRequestRuntimeResolver.call(void 0, () => storage.getStore());
14
+ function _runWithAPIRequestRuntime(runtime, run) {
15
+ return storage.run(runtime, run);
16
+ }
17
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _runWithAPIRequestRuntime, "_runWithAPIRequestRuntime");
18
+
19
+
20
+
21
+ exports._runWithAPIRequestRuntime = _runWithAPIRequestRuntime;