@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.
- package/dist/agent-runtime.d.mts +2 -2
- package/dist/agent-runtime.d.ts +2 -2
- package/dist/api/route-manager.d.mts +1 -1
- package/dist/api/route-manager.d.ts +1 -1
- package/dist/api/runtime.d.mts +2 -2
- package/dist/api/runtime.d.ts +2 -2
- package/dist/api.cjs +2 -2
- package/dist/api.d.mts +18 -4
- package/dist/api.d.ts +18 -4
- package/dist/api.mjs +1 -1
- package/dist/{app-DSSq6wiN.d.mts → app-DAuUTIZf.d.mts} +3 -3
- package/dist/app-markdown.cjs +5 -4
- package/dist/app-markdown.d.mts +3 -3
- package/dist/app-markdown.d.ts +3 -3
- package/dist/app-markdown.mjs +4 -3
- package/dist/{app-M8nVWvNU.d.ts → app-sUJ3jnTZ.d.ts} +3 -3
- package/dist/{chunk-N6UROPT7.mjs → chunk-2FQHH5SC.mjs} +12 -13
- package/dist/{chunk-2CNBR3EB.mjs → chunk-2UABTL3Y.mjs} +2 -2
- package/dist/{chunk-JUFRXDTK.cjs → chunk-3FCFQP5V.cjs} +17 -5
- package/dist/{chunk-XSPGWQWA.cjs → chunk-6CNX6Q3K.cjs} +96 -24
- package/dist/{chunk-NVBS5WSZ.mjs → chunk-6G3ZZ2IE.mjs} +1 -1
- package/dist/{chunk-QBPXNZGV.cjs → chunk-6MVFL3R5.cjs} +25 -6
- package/dist/{chunk-PZPDGOU5.mjs → chunk-7CXKSRKL.mjs} +11 -7
- package/dist/{chunk-K3YEZLSY.mjs → chunk-ATXI6LGT.mjs} +96 -24
- package/dist/{chunk-2DLN6HG4.mjs → chunk-BZ3CHOFX.mjs} +1 -1
- package/dist/{chunk-EWZ3XHKQ.cjs → chunk-BZAGKCKB.cjs} +2 -2
- package/dist/{chunk-FB3H4INL.mjs → chunk-D234YWNA.mjs} +1 -1
- package/dist/{chunk-KXGDXYUC.mjs → chunk-DGXN3L4D.mjs} +17 -5
- package/dist/chunk-FJ3M4CUX.cjs +46 -0
- package/dist/chunk-FXEF4PPL.mjs +47 -0
- package/dist/{chunk-ID6OVSLH.cjs → chunk-GIWC4CFJ.cjs} +175 -171
- package/dist/{chunk-F52CDFJM.cjs → chunk-HPQC2LHF.cjs} +435 -274
- package/dist/{chunk-FVCSLZWT.mjs → chunk-IVLUJUT4.mjs} +315 -154
- package/dist/{chunk-KOQ555NR.cjs → chunk-JFHKNFEO.cjs} +24 -20
- package/dist/{chunk-UX2DD2VK.mjs → chunk-K6V52QMI.mjs} +1 -1
- package/dist/{chunk-BYODCJD6.cjs → chunk-K7CELQLK.cjs} +12 -13
- package/dist/{chunk-A672WZEG.cjs → chunk-NPPL5YDT.cjs} +2 -2
- package/dist/{chunk-TII23GJC.cjs → chunk-NXG66MR7.cjs} +3 -3
- package/dist/{chunk-R6AIILII.cjs → chunk-OZVEHHMA.cjs} +15 -14
- package/dist/{chunk-T7HQ3I4C.mjs → chunk-PQD2AI3B.mjs} +1 -1
- package/dist/{chunk-VQXDC5UV.cjs → chunk-Q5JFU33Q.cjs} +4 -4
- package/dist/{chunk-FZC7EEPM.mjs → chunk-RSOJ7DRT.mjs} +26 -7
- package/dist/{chunk-ZRIE4KMG.mjs → chunk-S4K74WI4.mjs} +17 -13
- package/dist/{chunk-Y7GW7J46.cjs → chunk-X5TXZFMN.cjs} +1 -1
- package/dist/chunk-XD32KALF.cjs +47 -0
- package/dist/{chunk-RDV44SED.mjs → chunk-XJJVLDM6.mjs} +15 -14
- package/dist/{chunk-55ZY4ZA7.cjs → chunk-XLTV4VOG.cjs} +21 -16
- package/dist/{chunk-REGFZJEJ.mjs → chunk-YMUE7L3D.mjs} +18 -13
- package/dist/chunk-Z3HATSKO.mjs +46 -0
- package/dist/{chunk-MH24QDVJ.cjs → chunk-ZDILFMWN.cjs} +13 -13
- package/dist/{client-plugins-CgYNY7jF.d.mts → client-plugins-BX2ptm4H.d.mts} +7 -2
- package/dist/{client-plugins-Fl9Og3yB.d.ts → client-plugins-BmxM5KW_.d.ts} +7 -2
- package/dist/client-plugins.d.mts +2 -2
- package/dist/client-plugins.d.ts +2 -2
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/config.d.mts +2 -2
- package/dist/config.d.ts +2 -2
- package/dist/{devtools-5AREISIA.cjs → devtools-GGVPZHJX.cjs} +95 -20
- package/dist/{devtools-3E7ZANMZ.mjs → devtools-THVNPI2M.mjs} +79 -4
- package/dist/{devtools-client-4WAPJY5L.cjs → devtools-client-CXQ6PXI6.cjs} +1 -1
- package/dist/{devtools-client-LEUIHHAS.mjs → devtools-client-HJS2T34Y.mjs} +1 -1
- package/dist/docs.cjs +8 -7
- package/dist/docs.mjs +7 -6
- package/dist/index.cjs +18 -16
- package/dist/index.d.mts +24 -14
- package/dist/index.d.ts +24 -14
- package/dist/index.mjs +17 -15
- package/dist/integrations.d.mts +2 -2
- package/dist/integrations.d.ts +2 -2
- package/dist/internal/app-markdown-runtime.cjs +4 -3
- package/dist/internal/app-markdown-runtime.d.mts +3 -3
- package/dist/internal/app-markdown-runtime.d.ts +3 -3
- package/dist/internal/app-markdown-runtime.mjs +3 -2
- package/dist/internal/build-runtime.cjs +15 -13
- package/dist/internal/build-runtime.d.mts +4 -4
- package/dist/internal/build-runtime.d.ts +4 -4
- package/dist/internal/build-runtime.mjs +14 -12
- package/dist/internal/cli-runtime.cjs +7 -6
- package/dist/internal/cli-runtime.mjs +6 -5
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/compression-runtime.cjs +3 -2
- package/dist/internal/compression-runtime.d.mts +5 -3
- package/dist/internal/compression-runtime.d.ts +5 -3
- package/dist/internal/compression-runtime.mjs +2 -1
- package/dist/internal/config-runtime.cjs +6 -5
- package/dist/internal/config-runtime.d.mts +3 -3
- package/dist/internal/config-runtime.d.ts +3 -3
- package/dist/internal/config-runtime.mjs +5 -4
- package/dist/internal/product-telemetry-runtime.cjs +10 -6
- package/dist/internal/product-telemetry-runtime.mjs +9 -5
- package/dist/internal/production-runtime.cjs +19 -5
- package/dist/internal/production-runtime.d.mts +35 -8
- package/dist/internal/production-runtime.d.ts +35 -8
- package/dist/internal/production-runtime.mjs +18 -4
- package/dist/markdown.cjs +3 -2
- package/dist/markdown.d.mts +2 -2
- package/dist/markdown.d.ts +2 -2
- package/dist/markdown.mjs +2 -1
- package/dist/{metadata-B0X-qtcQ.d.mts → metadata-DsEaK7mQ.d.mts} +1 -1
- package/dist/{metadata-BdDKgd7K.d.ts → metadata-fwZ3gfG6.d.ts} +1 -1
- package/dist/middleware.cjs +3 -2
- package/dist/middleware.d.mts +3 -3
- package/dist/middleware.d.ts +3 -3
- package/dist/middleware.mjs +2 -1
- package/dist/navigation.d.mts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/plugin.cjs +10 -9
- package/dist/plugin.d.mts +2 -2
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.mjs +9 -8
- package/dist/{production-runtime-BjgFgDIg.d.mts → production-runtime-Baqgwtvc.d.mts} +1 -1
- package/dist/{production-runtime-Dx_qMA3t.d.ts → production-runtime-DNkpFnmg.d.ts} +1 -1
- package/dist/{render-plan-_1TAWODt.d.mts → render-plan-DhwQnmmX.d.mts} +1 -1
- package/dist/{render-plan-B41EWmBb.d.ts → render-plan-rkIK9wd9.d.ts} +1 -1
- package/dist/renderer-client.d.mts +3 -3
- package/dist/renderer-client.d.ts +3 -3
- package/dist/{request-Dbf3G0zM.d.ts → request-BcY4RYPC.d.ts} +1 -1
- package/dist/{request-BhE4luLv.d.mts → request-CFy1BltJ.d.mts} +1 -1
- package/dist/request.d.mts +3 -3
- package/dist/request.d.ts +3 -3
- package/dist/{route-rendering-zzfx_GHf.d.mts → route-rendering-BkS0TBlB.d.mts} +1 -1
- package/dist/{route-rendering-Z7PveTZE.d.ts → route-rendering-D4XpMjam.d.ts} +1 -1
- package/dist/{router-BatNMsa1.d.mts → router-C4zPlC3V.d.mts} +1 -1
- package/dist/{router-DtNRhQl3.d.ts → router-Cq7BcZxg.d.ts} +1 -1
- package/dist/routes.d.mts +2 -2
- package/dist/routes.d.ts +2 -2
- package/dist/server-plugins.cjs +3 -2
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server-plugins.mjs +2 -1
- package/dist/server.cjs +33 -28
- package/dist/server.d.mts +8 -8
- package/dist/server.d.ts +8 -8
- package/dist/server.mjs +16 -11
- package/dist/{spa-router-BE3bwU-J.d.ts → spa-router-B1HI3X9k.d.ts} +2 -2
- package/dist/{spa-router-DQOnHZVj.d.mts → spa-router-DzPZH-AO.d.mts} +2 -2
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{utils-DLK1ERNl.d.mts → utils-CEBktlBG.d.mts} +1 -1
- package/dist/{utils-u7ZBSWAK.d.ts → utils-DMD1Hzta.d.ts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +10 -9
- package/dist/vite.d.mts +2 -2
- package/dist/vite.d.ts +2 -2
- package/dist/vite.mjs +9 -8
- 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
|
|
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(
|
|
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(() =>
|
|
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(
|
|
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(
|
|
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
|
+
};
|