@farm.js/core 0.1.28 → 0.1.30

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 (149) hide show
  1. package/dist/agent-runtime.d.mts +2 -2
  2. package/dist/agent-runtime.d.ts +2 -2
  3. package/dist/api/route-manager.d.mts +1 -1
  4. package/dist/api/route-manager.d.ts +1 -1
  5. package/dist/api/runtime.d.mts +2 -2
  6. package/dist/api/runtime.d.ts +2 -2
  7. package/dist/api.cjs +2 -2
  8. package/dist/api.d.mts +18 -4
  9. package/dist/api.d.ts +18 -4
  10. package/dist/api.mjs +1 -1
  11. package/dist/{app-DSSq6wiN.d.mts → app-DAuUTIZf.d.mts} +3 -3
  12. package/dist/app-markdown.cjs +5 -4
  13. package/dist/app-markdown.d.mts +3 -3
  14. package/dist/app-markdown.d.ts +3 -3
  15. package/dist/app-markdown.mjs +4 -3
  16. package/dist/{app-M8nVWvNU.d.ts → app-sUJ3jnTZ.d.ts} +3 -3
  17. package/dist/{chunk-N6UROPT7.mjs → chunk-2FQHH5SC.mjs} +12 -13
  18. package/dist/{chunk-2CNBR3EB.mjs → chunk-2UABTL3Y.mjs} +2 -2
  19. package/dist/{chunk-JUFRXDTK.cjs → chunk-3FCFQP5V.cjs} +17 -5
  20. package/dist/{chunk-XSPGWQWA.cjs → chunk-6CNX6Q3K.cjs} +96 -24
  21. package/dist/{chunk-NVBS5WSZ.mjs → chunk-6G3ZZ2IE.mjs} +1 -1
  22. package/dist/{chunk-QBPXNZGV.cjs → chunk-6MVFL3R5.cjs} +25 -6
  23. package/dist/{chunk-PZPDGOU5.mjs → chunk-7CXKSRKL.mjs} +11 -7
  24. package/dist/{chunk-K3YEZLSY.mjs → chunk-ATXI6LGT.mjs} +96 -24
  25. package/dist/{chunk-2DLN6HG4.mjs → chunk-BZ3CHOFX.mjs} +1 -1
  26. package/dist/{chunk-EWZ3XHKQ.cjs → chunk-BZAGKCKB.cjs} +2 -2
  27. package/dist/{chunk-FB3H4INL.mjs → chunk-D234YWNA.mjs} +1 -1
  28. package/dist/{chunk-KXGDXYUC.mjs → chunk-DGXN3L4D.mjs} +17 -5
  29. package/dist/chunk-FJ3M4CUX.cjs +46 -0
  30. package/dist/chunk-FXEF4PPL.mjs +47 -0
  31. package/dist/{chunk-ID6OVSLH.cjs → chunk-GIWC4CFJ.cjs} +175 -171
  32. package/dist/{chunk-F52CDFJM.cjs → chunk-HPQC2LHF.cjs} +435 -274
  33. package/dist/{chunk-FVCSLZWT.mjs → chunk-IVLUJUT4.mjs} +315 -154
  34. package/dist/{chunk-KOQ555NR.cjs → chunk-JFHKNFEO.cjs} +24 -20
  35. package/dist/{chunk-UX2DD2VK.mjs → chunk-K6V52QMI.mjs} +1 -1
  36. package/dist/{chunk-BYODCJD6.cjs → chunk-K7CELQLK.cjs} +12 -13
  37. package/dist/{chunk-A672WZEG.cjs → chunk-NPPL5YDT.cjs} +2 -2
  38. package/dist/{chunk-TII23GJC.cjs → chunk-NXG66MR7.cjs} +3 -3
  39. package/dist/{chunk-R6AIILII.cjs → chunk-OZVEHHMA.cjs} +15 -14
  40. package/dist/{chunk-T7HQ3I4C.mjs → chunk-PQD2AI3B.mjs} +1 -1
  41. package/dist/{chunk-VQXDC5UV.cjs → chunk-Q5JFU33Q.cjs} +4 -4
  42. package/dist/{chunk-FZC7EEPM.mjs → chunk-RSOJ7DRT.mjs} +26 -7
  43. package/dist/{chunk-ZRIE4KMG.mjs → chunk-S4K74WI4.mjs} +17 -13
  44. package/dist/{chunk-Y7GW7J46.cjs → chunk-X5TXZFMN.cjs} +1 -1
  45. package/dist/chunk-XD32KALF.cjs +47 -0
  46. package/dist/{chunk-RDV44SED.mjs → chunk-XJJVLDM6.mjs} +15 -14
  47. package/dist/{chunk-55ZY4ZA7.cjs → chunk-XLTV4VOG.cjs} +21 -16
  48. package/dist/{chunk-REGFZJEJ.mjs → chunk-YMUE7L3D.mjs} +18 -13
  49. package/dist/chunk-Z3HATSKO.mjs +46 -0
  50. package/dist/{chunk-MH24QDVJ.cjs → chunk-ZDILFMWN.cjs} +13 -13
  51. package/dist/{client-plugins-CgYNY7jF.d.mts → client-plugins-BX2ptm4H.d.mts} +7 -2
  52. package/dist/{client-plugins-Fl9Og3yB.d.ts → client-plugins-BmxM5KW_.d.ts} +7 -2
  53. package/dist/client-plugins.d.mts +2 -2
  54. package/dist/client-plugins.d.ts +2 -2
  55. package/dist/client.d.mts +5 -5
  56. package/dist/client.d.ts +5 -5
  57. package/dist/config.d.mts +2 -2
  58. package/dist/config.d.ts +2 -2
  59. package/dist/{devtools-5AREISIA.cjs → devtools-GGVPZHJX.cjs} +95 -20
  60. package/dist/{devtools-3E7ZANMZ.mjs → devtools-THVNPI2M.mjs} +79 -4
  61. package/dist/{devtools-client-4WAPJY5L.cjs → devtools-client-CXQ6PXI6.cjs} +1 -1
  62. package/dist/{devtools-client-LEUIHHAS.mjs → devtools-client-HJS2T34Y.mjs} +1 -1
  63. package/dist/docs.cjs +8 -7
  64. package/dist/docs.mjs +7 -6
  65. package/dist/index.cjs +18 -16
  66. package/dist/index.d.mts +24 -14
  67. package/dist/index.d.ts +24 -14
  68. package/dist/index.mjs +17 -15
  69. package/dist/integrations.d.mts +2 -2
  70. package/dist/integrations.d.ts +2 -2
  71. package/dist/internal/app-markdown-runtime.cjs +4 -3
  72. package/dist/internal/app-markdown-runtime.d.mts +3 -3
  73. package/dist/internal/app-markdown-runtime.d.ts +3 -3
  74. package/dist/internal/app-markdown-runtime.mjs +3 -2
  75. package/dist/internal/build-runtime.cjs +15 -13
  76. package/dist/internal/build-runtime.d.mts +4 -4
  77. package/dist/internal/build-runtime.d.ts +4 -4
  78. package/dist/internal/build-runtime.mjs +14 -12
  79. package/dist/internal/cli-runtime.cjs +7 -6
  80. package/dist/internal/cli-runtime.mjs +6 -5
  81. package/dist/internal/client-error-overlay.cjs +4 -4
  82. package/dist/internal/client-error-overlay.mjs +1 -1
  83. package/dist/internal/compression-runtime.cjs +3 -2
  84. package/dist/internal/compression-runtime.d.mts +5 -3
  85. package/dist/internal/compression-runtime.d.ts +5 -3
  86. package/dist/internal/compression-runtime.mjs +2 -1
  87. package/dist/internal/config-runtime.cjs +6 -5
  88. package/dist/internal/config-runtime.d.mts +3 -3
  89. package/dist/internal/config-runtime.d.ts +3 -3
  90. package/dist/internal/config-runtime.mjs +5 -4
  91. package/dist/internal/product-telemetry-runtime.cjs +10 -6
  92. package/dist/internal/product-telemetry-runtime.mjs +9 -5
  93. package/dist/internal/production-runtime.cjs +19 -5
  94. package/dist/internal/production-runtime.d.mts +35 -8
  95. package/dist/internal/production-runtime.d.ts +35 -8
  96. package/dist/internal/production-runtime.mjs +18 -4
  97. package/dist/markdown.cjs +3 -2
  98. package/dist/markdown.d.mts +2 -2
  99. package/dist/markdown.d.ts +2 -2
  100. package/dist/markdown.mjs +2 -1
  101. package/dist/{metadata-B0X-qtcQ.d.mts → metadata-DsEaK7mQ.d.mts} +1 -1
  102. package/dist/{metadata-BdDKgd7K.d.ts → metadata-fwZ3gfG6.d.ts} +1 -1
  103. package/dist/middleware.cjs +3 -2
  104. package/dist/middleware.d.mts +3 -3
  105. package/dist/middleware.d.ts +3 -3
  106. package/dist/middleware.mjs +2 -1
  107. package/dist/navigation.d.mts +4 -4
  108. package/dist/navigation.d.ts +4 -4
  109. package/dist/plugin.cjs +10 -9
  110. package/dist/plugin.d.mts +2 -2
  111. package/dist/plugin.d.ts +2 -2
  112. package/dist/plugin.mjs +9 -8
  113. package/dist/{production-runtime-BjgFgDIg.d.mts → production-runtime-Baqgwtvc.d.mts} +1 -1
  114. package/dist/{production-runtime-Dx_qMA3t.d.ts → production-runtime-DNkpFnmg.d.ts} +1 -1
  115. package/dist/{render-plan-_1TAWODt.d.mts → render-plan-DhwQnmmX.d.mts} +1 -1
  116. package/dist/{render-plan-B41EWmBb.d.ts → render-plan-rkIK9wd9.d.ts} +1 -1
  117. package/dist/renderer-client.d.mts +3 -3
  118. package/dist/renderer-client.d.ts +3 -3
  119. package/dist/{request-Dbf3G0zM.d.ts → request-BcY4RYPC.d.ts} +1 -1
  120. package/dist/{request-BhE4luLv.d.mts → request-CFy1BltJ.d.mts} +1 -1
  121. package/dist/request.d.mts +3 -3
  122. package/dist/request.d.ts +3 -3
  123. package/dist/{route-rendering-zzfx_GHf.d.mts → route-rendering-BkS0TBlB.d.mts} +1 -1
  124. package/dist/{route-rendering-Z7PveTZE.d.ts → route-rendering-D4XpMjam.d.ts} +1 -1
  125. package/dist/{router-BatNMsa1.d.mts → router-C4zPlC3V.d.mts} +1 -1
  126. package/dist/{router-DtNRhQl3.d.ts → router-Cq7BcZxg.d.ts} +1 -1
  127. package/dist/routes.d.mts +2 -2
  128. package/dist/routes.d.ts +2 -2
  129. package/dist/server-plugins.cjs +3 -2
  130. package/dist/server-plugins.d.mts +2 -2
  131. package/dist/server-plugins.d.ts +2 -2
  132. package/dist/server-plugins.mjs +2 -1
  133. package/dist/server.cjs +33 -28
  134. package/dist/server.d.mts +8 -8
  135. package/dist/server.d.ts +8 -8
  136. package/dist/server.mjs +16 -11
  137. package/dist/{spa-router-BE3bwU-J.d.ts → spa-router-B1HI3X9k.d.ts} +2 -2
  138. package/dist/{spa-router-DQOnHZVj.d.mts → spa-router-DzPZH-AO.d.mts} +2 -2
  139. package/dist/testing.d.mts +1 -1
  140. package/dist/testing.d.ts +1 -1
  141. package/dist/{utils-DLK1ERNl.d.mts → utils-CEBktlBG.d.mts} +1 -1
  142. package/dist/{utils-u7ZBSWAK.d.ts → utils-DMD1Hzta.d.ts} +1 -1
  143. package/dist/version.cjs +2 -2
  144. package/dist/version.mjs +1 -1
  145. package/dist/vite.cjs +10 -9
  146. package/dist/vite.d.mts +2 -2
  147. package/dist/vite.d.ts +2 -2
  148. package/dist/vite.mjs +9 -8
  149. package/package.json +1 -1
@@ -18,6 +18,7 @@ import {
18
18
  getAllowedAPIRouteMethods,
19
19
  invokeAPIRouteEndpoint,
20
20
  matchAPIRouteAtBasePath,
21
+ mergePluginAPIRoutes,
21
22
  resolveAPIRouteEndpoint
22
23
  } from "./chunk-X7WVQMIB.mjs";
23
24
  import {
@@ -63,6 +64,10 @@ function farmApiPlugin(options = {}) {
63
64
  const basePath = options.basePath;
64
65
  let apiRoutesCache = /* @__PURE__ */ new Map();
65
66
  let apiRouterHandler = null;
67
+ let projectRoot = process.cwd();
68
+ let pluginMergedRoutes = null;
69
+ const servedRoutes = /* @__PURE__ */ __name(() => pluginMergedRoutes ?? apiRoutesCache, "servedRoutes");
70
+ let routePlugins;
66
71
  let discoveryComplete = false;
67
72
  let discoveryPromise = null;
68
73
  let discoveryError;
@@ -179,7 +184,13 @@ function farmApiPlugin(options = {}) {
179
184
  }
180
185
  }, "restoreRouteState");
181
186
  const createRouter = /* @__PURE__ */ __name(async () => {
182
- const totalEndpoints = Array.from(apiRoutesCache.values()).reduce(
187
+ const plugins = options.plugins ? await (routePlugins ?? (routePlugins = Promise.resolve(options.plugins({ root: projectRoot })))) : [];
188
+ pluginMergedRoutes = plugins.length ? new Map(
189
+ mergePluginAPIRoutes([...apiRoutesCache.values()], plugins, void 0, {
190
+ bodySizeLimit
191
+ }).map((route) => [route.path, route])
192
+ ) : null;
193
+ const totalEndpoints = Array.from(servedRoutes().values()).reduce(
183
194
  (sum, route) => sum + route.methods.length,
184
195
  0
185
196
  );
@@ -189,7 +200,7 @@ function farmApiPlugin(options = {}) {
189
200
  const url = new URL(request.url);
190
201
  const method = request.method.toUpperCase();
191
202
  const pathname = url.pathname;
192
- const match = matchAPIRouteAtBasePath(apiRoutesCache, pathname, basePath);
203
+ const match = matchAPIRouteAtBasePath(servedRoutes(), pathname, basePath);
193
204
  if (!match) {
194
205
  return new Response(JSON.stringify({ error: "Not Found" }), {
195
206
  status: 404,
@@ -223,6 +234,7 @@ function farmApiPlugin(options = {}) {
223
234
  name: "@farm.js/core:api",
224
235
  enforce: "pre",
225
236
  configureServer(server) {
237
+ projectRoot = server.config.root;
226
238
  const discoverFileRoutes = /* @__PURE__ */ __name(async (apiDir) => {
227
239
  const fs = await import("fs");
228
240
  const path = await import("path");
@@ -368,7 +380,7 @@ function farmApiPlugin(options = {}) {
368
380
  }, "recoverFailedDiscovery");
369
381
  server.__farmApi__ = {
370
382
  getHandler: /* @__PURE__ */ __name(() => apiRouterHandler, "getHandler"),
371
- getRoutes: /* @__PURE__ */ __name(() => apiRoutesCache, "getRoutes"),
383
+ getRoutes: /* @__PURE__ */ __name(() => servedRoutes(), "getRoutes"),
372
384
  isReady: /* @__PURE__ */ __name(() => discoveryComplete, "isReady"),
373
385
  waitForDiscovery
374
386
  };
@@ -378,7 +390,7 @@ function farmApiPlugin(options = {}) {
378
390
  const pathname = url.split("?")[0];
379
391
  const method = req.method || "GET";
380
392
  if (discoveryPromise) await waitForDiscovery();
381
- if (!matchAPIRouteAtBasePath(apiRoutesCache, pathname, basePath)) {
393
+ if (!matchAPIRouteAtBasePath(servedRoutes(), pathname, basePath)) {
382
394
  return next();
383
395
  }
384
396
  if (!apiRouterHandler) {
@@ -399,7 +411,7 @@ function farmApiPlugin(options = {}) {
399
411
  }
400
412
  const currentUrl = req.url || url;
401
413
  const currentPathname = currentUrl.split("?")[0];
402
- if (currentPathname !== pathname && !matchAPIRouteAtBasePath(apiRoutesCache, currentPathname, basePath)) {
414
+ if (currentPathname !== pathname && !matchAPIRouteAtBasePath(servedRoutes(), currentPathname, basePath)) {
403
415
  return next();
404
416
  }
405
417
  const fullUrl = resolveFarmRequestURL(req);
@@ -0,0 +1,46 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/owned-response.ts
6
+ var OWNED_RESPONSES = /* @__PURE__ */ Symbol.for("farm.ownedResponses");
7
+ function registry() {
8
+ const state = globalThis;
9
+ return _nullishCoalesce(state[OWNED_RESPONSES], () => ( (state[OWNED_RESPONSES] = /* @__PURE__ */ new WeakSet())));
10
+ }
11
+ _chunkS3JO3N4Hcjs.__name.call(void 0, registry, "registry");
12
+ function _markFarmOwnedResponse(response) {
13
+ registry().add(response);
14
+ return response;
15
+ }
16
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _markFarmOwnedResponse, "_markFarmOwnedResponse");
17
+ function _isFarmOwnedResponse(response) {
18
+ return registry().has(response);
19
+ }
20
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _isFarmOwnedResponse, "_isFarmOwnedResponse");
21
+ function _withFarmResponseHeaders(response, edit) {
22
+ if (registry().has(response)) {
23
+ try {
24
+ edit(response.headers);
25
+ return response;
26
+ } catch (error) {
27
+ if (!(error instanceof TypeError)) throw error;
28
+ }
29
+ }
30
+ const headers = new Headers(response.headers);
31
+ edit(headers);
32
+ return _markFarmOwnedResponse(
33
+ new Response(response.body, {
34
+ status: response.status,
35
+ statusText: response.statusText,
36
+ headers
37
+ })
38
+ );
39
+ }
40
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _withFarmResponseHeaders, "_withFarmResponseHeaders");
41
+
42
+
43
+
44
+
45
+
46
+ exports._markFarmOwnedResponse = _markFarmOwnedResponse; exports._isFarmOwnedResponse = _isFarmOwnedResponse; exports._withFarmResponseHeaders = _withFarmResponseHeaders;
@@ -0,0 +1,47 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-LPEX4YW6.mjs";
4
+
5
+ // src/nitro/native-mcp-source.ts
6
+ function generateNativeMCPPluginSource(mcp) {
7
+ if (mcp?.enabled !== true) {
8
+ return { importSource: "", registerSource: "", pluginSource: "" };
9
+ }
10
+ return {
11
+ importSource: `import { createFarmMCPPlugin as __farmCreateMCPPlugin } from "@farm.js/mcp/internal";`,
12
+ registerSource: `function __farmMCPIsPlainObject(value) {
13
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
14
+ const prototype = Object.getPrototypeOf(value);
15
+ return prototype === Object.prototype || prototype === null;
16
+ }
17
+
18
+ function __farmMergeMCPConfig(base, override) {
19
+ const output = { ...base };
20
+ for (const [key, value] of Object.entries(override)) {
21
+ if (value === undefined) continue;
22
+ output[key] =
23
+ __farmMCPIsPlainObject(output[key]) && __farmMCPIsPlainObject(value)
24
+ ? __farmMergeMCPConfig(output[key], value)
25
+ : value;
26
+ }
27
+ return output;
28
+ }
29
+
30
+ const farmNativeMCPConfig = farmRuntimeConfigs.reduce((merged, runtimeConfig) => {
31
+ const value = runtimeConfig?.mcp;
32
+ if (value === undefined) return merged;
33
+ if (value === false) return false;
34
+ return __farmMergeMCPConfig(merged && merged !== false ? merged : {}, value);
35
+ }, undefined);
36
+ const farmNativeMCPPlugin =
37
+ farmNativeMCPConfig && farmNativeMCPConfig.enabled !== false
38
+ ? __farmCreateMCPPlugin(farmNativeMCPConfig)
39
+ : null;`,
40
+ pluginSource: `...(farmNativeMCPPlugin ? [farmNativeMCPPlugin] : []),`
41
+ };
42
+ }
43
+ __name(generateNativeMCPPluginSource, "generateNativeMCPPluginSource");
44
+
45
+ export {
46
+ generateNativeMCPPluginSource
47
+ };