@farm.js/core 0.1.24 → 0.1.26
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.cjs +4 -4
- package/dist/api/route-manager.d.mts +2 -2
- package/dist/api/route-manager.d.ts +2 -2
- package/dist/api/route-manager.mjs +3 -3
- package/dist/api/runtime.cjs +3 -3
- package/dist/api/runtime.mjs +2 -2
- package/dist/api.cjs +7 -7
- package/dist/api.d.mts +3 -3
- package/dist/api.d.ts +3 -3
- package/dist/api.mjs +6 -6
- package/dist/{app-BZDWwwFa.d.mts → app-29vG5tmY.d.mts} +3 -3
- package/dist/{app-BV-7wV5q.d.ts → app-Cx71s_PT.d.ts} +3 -3
- package/dist/app-markdown.cjs +6 -4
- package/dist/app-markdown.d.mts +3 -3
- package/dist/app-markdown.d.ts +3 -3
- package/dist/app-markdown.mjs +5 -3
- package/dist/{chunk-ISTFC3MZ.cjs → chunk-2CT6XUNO.cjs} +99 -26
- package/dist/{chunk-G6GNNB44.cjs → chunk-3TQG7CGC.cjs} +201 -180
- package/dist/{chunk-KNPRCKXK.cjs → chunk-3TQWUUNP.cjs} +9 -7
- package/dist/{chunk-LYM7HY34.cjs → chunk-3WSWXPYM.cjs} +4 -4
- package/dist/{chunk-GZ3ZPTQV.mjs → chunk-52SH7TKB.mjs} +2 -2
- package/dist/{chunk-JIKGGIOL.mjs → chunk-6D242YGO.mjs} +1 -1
- package/dist/{chunk-MVUREHPN.mjs → chunk-74RZNRY6.mjs} +1 -1
- package/dist/{chunk-BD7FZ63M.cjs → chunk-ALIFMS4A.cjs} +1 -1
- package/dist/{chunk-PGQBL5DN.mjs → chunk-ARXCHQLX.mjs} +79 -2
- package/dist/{chunk-2QLBIPFT.cjs → chunk-B6ZCT36X.cjs} +4 -4
- package/dist/{chunk-IMBMOEWT.cjs → chunk-BD2U4ZL6.cjs} +8 -8
- package/dist/{chunk-2M435BUE.mjs → chunk-CEYUWDWA.mjs} +7 -5
- package/dist/{chunk-XI3GWPUS.cjs → chunk-CRQPYWLK.cjs} +14 -14
- package/dist/{chunk-47H7VENP.mjs → chunk-DU2CASV6.mjs} +1 -1
- package/dist/{chunk-QTBEAKCJ.cjs → chunk-H7CJRJ4L.cjs} +16 -16
- package/dist/chunk-J63ZH5OQ.cjs +62 -0
- package/dist/{chunk-N255VYFP.mjs → chunk-JM5GQL4H.mjs} +8 -3
- package/dist/{chunk-6VEHUKZ2.mjs → chunk-MM5D6VLP.mjs} +4 -20
- package/dist/chunk-MVL2RAJW.mjs +62 -0
- package/dist/{chunk-YA6LLTIJ.cjs → chunk-ND224OE2.cjs} +4 -20
- package/dist/{chunk-YGMK6ESJ.mjs → chunk-OFKG57MZ.mjs} +2 -2
- package/dist/chunk-OOIL3BWR.mjs +1229 -0
- package/dist/{chunk-BNSD3VDY.mjs → chunk-PPIW3MH6.mjs} +1 -1
- package/dist/{chunk-WNUBR4CA.mjs → chunk-QGG336NI.mjs} +1 -1
- package/dist/chunk-QIH2HD6H.cjs +1229 -0
- package/dist/{chunk-OYDRPBBV.cjs → chunk-QJ4D3UKJ.cjs} +80 -3
- package/dist/{chunk-LQIRVSBY.cjs → chunk-QLXEYIAW.cjs} +13 -13
- package/dist/{chunk-ARHWIOUZ.mjs → chunk-QPPQHB6X.mjs} +111 -40
- package/dist/{chunk-7BC6GAL7.mjs → chunk-RAI7NULA.mjs} +76 -3
- package/dist/{chunk-AH7HOAQ3.cjs → chunk-RCYINC4A.cjs} +9 -4
- package/dist/{chunk-SIQMTHCZ.cjs → chunk-SZ4LYNUX.cjs} +212 -141
- package/dist/{chunk-5UX4C5QI.mjs → chunk-TKDY6AJP.mjs} +1 -1
- package/dist/{chunk-YJJLXIIS.cjs → chunk-U74A3P2P.cjs} +7 -7
- package/dist/{chunk-6YSEHN46.mjs → chunk-UXQXGB5A.mjs} +36 -15
- package/dist/{chunk-72VJRKJD.mjs → chunk-VZWO3XVL.mjs} +2 -2
- package/dist/{chunk-I5YBCWQ6.cjs → chunk-W2HZKYES.cjs} +2 -2
- package/dist/{chunk-DNLQMFER.cjs → chunk-WFPRVVF2.cjs} +26 -19
- package/dist/{chunk-BDJNP7AQ.mjs → chunk-YMUH2BLR.mjs} +10 -3
- package/dist/{client-plugins-B_XzCegf.d.mts → client-plugins-B8RPJnot.d.mts} +129 -4
- package/dist/{client-plugins-CKsXQfXY.d.ts → client-plugins-bPBf4haK.d.ts} +129 -4
- package/dist/client-plugins.d.mts +2 -2
- package/dist/client-plugins.d.ts +2 -2
- package/dist/client.cjs +4 -4
- package/dist/client.d.mts +6 -6
- package/dist/client.d.ts +6 -6
- package/dist/client.mjs +3 -3
- package/dist/config.d.mts +2 -2
- package/dist/config.d.ts +2 -2
- package/dist/{devtools-OY4SNU3P.mjs → devtools-5D4ZDRPR.mjs} +5 -3
- package/dist/{devtools-UHRSZ7VA.cjs → devtools-QZJEUOJW.cjs} +6 -4
- package/dist/docs.cjs +8 -6
- package/dist/docs.mjs +7 -5
- package/dist/index.cjs +29 -23
- package/dist/index.d.mts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.mjs +28 -22
- package/dist/integrations.d.mts +2 -2
- package/dist/integrations.d.ts +2 -2
- package/dist/internal/app-markdown-runtime.cjs +5 -3
- package/dist/internal/app-markdown-runtime.d.mts +2 -2
- package/dist/internal/app-markdown-runtime.d.ts +2 -2
- package/dist/internal/app-markdown-runtime.mjs +4 -2
- package/dist/internal/build-runtime.cjs +18 -17
- package/dist/internal/build-runtime.d.mts +4 -4
- package/dist/internal/build-runtime.d.ts +4 -4
- package/dist/internal/build-runtime.mjs +17 -16
- package/dist/internal/cli-runtime.cjs +6 -5
- package/dist/internal/cli-runtime.mjs +5 -4
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/compression-runtime.d.mts +2 -2
- package/dist/internal/compression-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.cjs +6 -4
- 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 -3
- package/dist/internal/infra-analytics-runtime.cjs +4 -3
- package/dist/internal/infra-analytics-runtime.mjs +2 -1
- package/dist/internal/product-telemetry-runtime.cjs +2 -2
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/internal/production-runtime.cjs +12 -5
- package/dist/internal/production-runtime.d.mts +33 -9
- package/dist/internal/production-runtime.d.ts +33 -9
- package/dist/internal/production-runtime.mjs +11 -4
- package/dist/markdown.cjs +6 -2
- package/dist/markdown.d.mts +63 -1
- package/dist/markdown.d.ts +63 -1
- package/dist/markdown.mjs +5 -1
- package/dist/{metadata-B08w4EYV.d.mts → metadata-C3na4CBj.d.mts} +1 -1
- package/dist/{metadata-IQEblkZp.d.ts → metadata-CzBP4Mfp.d.ts} +1 -1
- package/dist/middleware.d.mts +4 -4
- package/dist/middleware.d.ts +4 -4
- package/dist/navigation.cjs +5 -5
- package/dist/navigation.d.mts +5 -5
- package/dist/navigation.d.ts +5 -5
- package/dist/navigation.mjs +4 -4
- package/dist/observability-BupkiN0m.d.mts +447 -0
- package/dist/observability-BupkiN0m.d.ts +447 -0
- package/dist/observability.d.mts +2 -417
- package/dist/observability.d.ts +2 -417
- package/dist/plugin.cjs +13 -12
- package/dist/plugin.d.mts +2 -2
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.mjs +12 -11
- package/dist/{production-runtime-DRSOkc-d.d.ts → production-runtime-CYg4wM4E.d.ts} +1 -1
- package/dist/{production-runtime-C3bGFEaM.d.mts → production-runtime-DP94hPGe.d.mts} +1 -1
- package/dist/query/client.cjs +6 -6
- package/dist/query/client.mjs +2 -2
- package/dist/{render-plan-CCFuMLNS.d.ts → render-plan-Bl6Fzg5z.d.ts} +1 -1
- package/dist/{render-plan-B6CKNl4e.d.mts → render-plan-CKAJg0jC.d.mts} +1 -1
- package/dist/renderer-client.cjs +5 -5
- package/dist/renderer-client.d.mts +4 -4
- package/dist/renderer-client.d.ts +4 -4
- package/dist/renderer-client.mjs +2 -2
- package/dist/{request-Dn6VURbE.d.ts → request-CR-Bp1Px.d.ts} +1 -1
- package/dist/{request-DgD1XsTx.d.mts → request-CrBCcPZZ.d.mts} +1 -1
- package/dist/request.d.mts +3 -3
- package/dist/request.d.ts +3 -3
- package/dist/{route-rendering-76A5I_kE.d.mts → route-rendering-C1NAHo-C.d.mts} +1 -1
- package/dist/{route-rendering-LAmQEdyG.d.ts → route-rendering-CZH5FegB.d.ts} +1 -1
- package/dist/{router-CnrRSa9d.d.mts → router-B57eDJ3u.d.mts} +1 -1
- package/dist/{router-BSOOGya2.d.ts → router-Cg_kD3Bd.d.ts} +1 -1
- package/dist/routes.d.mts +2 -2
- package/dist/routes.d.ts +2 -2
- package/dist/server-plugins.d.mts +3 -3
- package/dist/server-plugins.d.ts +3 -3
- package/dist/server.cjs +163 -106
- package/dist/server.d.mts +8 -8
- package/dist/server.d.ts +8 -8
- package/dist/server.mjs +144 -87
- package/dist/{spa-router-BMrSsG5b.d.ts → spa-router-BstQUO6Q.d.ts} +2 -2
- package/dist/{spa-router-DnYhWCvI.d.mts → spa-router-DTdbuinx.d.mts} +2 -2
- package/dist/testing.cjs +4 -4
- package/dist/testing.d.mts +2 -2
- package/dist/testing.d.ts +2 -2
- package/dist/testing.mjs +3 -3
- package/dist/{utils-ABkktwku.d.mts → utils-CS3ZLnEJ.d.mts} +1 -1
- package/dist/{utils-C3GguS-Q.d.ts → utils-D3rdsIvM.d.ts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +13 -12
- package/dist/vite.d.mts +2 -2
- package/dist/vite.d.ts +2 -2
- package/dist/vite.mjs +12 -11
- package/package.json +1 -1
- package/dist/chunk-BBVSJVBZ.cjs +0 -600
- package/dist/chunk-OFEY6KHO.mjs +0 -600
- package/dist/{chunk-XP777LRD.mjs → chunk-GDUYXFIS.mjs} +3 -3
- package/dist/{chunk-4PNUXIVU.cjs → chunk-YAOX43YI.cjs} +3 -3
|
@@ -19,16 +19,18 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
let own = {};
|
|
22
|
+
let latestTitle;
|
|
22
23
|
if (notFoundModule) {
|
|
23
24
|
own = mergeMetadata(own, notFoundModule.metadata);
|
|
25
|
+
latestTitle = _optionalChain([notFoundModule, 'access', _ => _.metadata, 'optionalAccess', _2 => _2.title]);
|
|
24
26
|
if (typeof notFoundModule.generateMetadata === "function") {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
);
|
|
27
|
+
const generated = await notFoundModule.generateMetadata({ params: {}, searchParams: {} });
|
|
28
|
+
own = mergeMetadata(own, generated);
|
|
29
|
+
if (_optionalChain([generated, 'optionalAccess', _3 => _3.title]) !== void 0) latestTitle = generated.title;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
const title = isRecord(latestTitle) && normalizeContent(latestTitle.absolute) ? latestTitle : own.title;
|
|
33
|
+
return mergeMetadata(metadata, { ...own, title: _nullishCoalesce(title, () => ( FARM_NOT_FOUND_TITLE)) });
|
|
32
34
|
}
|
|
33
35
|
_chunkS3JO3N4Hcjs.__name.call(void 0, resolveFarmNotFoundMetadata, "resolveFarmNotFoundMetadata");
|
|
34
36
|
function mergeMetadata(base, next) {
|
|
@@ -135,8 +137,8 @@ function renderMetadataHead(metadata, options = {}) {
|
|
|
135
137
|
appendMetaName(tags, "author", resolvedMetadata.author);
|
|
136
138
|
if (Array.isArray(resolvedMetadata.authors)) {
|
|
137
139
|
for (const author of resolvedMetadata.authors) {
|
|
138
|
-
appendMetaName(tags, "author", _optionalChain([author, 'optionalAccess',
|
|
139
|
-
if (_optionalChain([author, 'optionalAccess',
|
|
140
|
+
appendMetaName(tags, "author", _optionalChain([author, 'optionalAccess', _4 => _4.name]));
|
|
141
|
+
if (_optionalChain([author, 'optionalAccess', _5 => _5.url])) {
|
|
140
142
|
appendLink(tags, "author", resolveMetadataUrl(author.url, metadataBase));
|
|
141
143
|
}
|
|
142
144
|
}
|
|
@@ -15,7 +15,7 @@ var _chunkIK6LVLKCcjs = require('./chunk-IK6LVLKC.cjs');
|
|
|
15
15
|
var _chunkHREOKQWTcjs = require('./chunk-HREOKQWT.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkQIH2HD6Hcjs = require('./chunk-QIH2HD6H.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
var _chunkEM6SBQKMcjs = require('./chunk-EM6SBQKM.cjs');
|
|
@@ -1181,11 +1181,11 @@ function shouldReturnMarkdown(request) {
|
|
|
1181
1181
|
if (url.pathname.endsWith(".md")) return true;
|
|
1182
1182
|
const accept = request.headers.get("accept");
|
|
1183
1183
|
const markdown = Math.max(
|
|
1184
|
-
|
|
1185
|
-
|
|
1184
|
+
_chunkQIH2HD6Hcjs.farmAcceptQuality.call(void 0, accept, "text/markdown"),
|
|
1185
|
+
_chunkQIH2HD6Hcjs.farmAcceptQuality.call(void 0, accept, "text/plain")
|
|
1186
1186
|
);
|
|
1187
1187
|
if (markdown <= 0) return false;
|
|
1188
|
-
return markdown >=
|
|
1188
|
+
return markdown >= _chunkQIH2HD6Hcjs.farmAcceptQuality.call(void 0, accept, "text/html", { wildcards: true });
|
|
1189
1189
|
}
|
|
1190
1190
|
_chunkS3JO3N4Hcjs.__name.call(void 0, shouldReturnMarkdown, "shouldReturnMarkdown");
|
|
1191
1191
|
function escapeAttribute(value) {
|
|
@@ -3,16 +3,26 @@ import {
|
|
|
3
3
|
} from "./chunk-XAXTTBUT.mjs";
|
|
4
4
|
import {
|
|
5
5
|
serializeFarmLlmsTxt
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RAI7NULA.mjs";
|
|
7
|
+
import {
|
|
8
|
+
emitFarmAgentRead
|
|
9
|
+
} from "./chunk-MVL2RAJW.mjs";
|
|
7
10
|
import {
|
|
8
11
|
resolveFarmThemeConfig
|
|
9
12
|
} from "./chunk-AELACLOB.mjs";
|
|
13
|
+
import {
|
|
14
|
+
resolveFarmAPIServerBasePath,
|
|
15
|
+
resolveFarmAPIServerRoutePath
|
|
16
|
+
} from "./chunk-I6XDAKWQ.mjs";
|
|
10
17
|
import {
|
|
11
18
|
omitFarmResponseBody
|
|
12
19
|
} from "./chunk-5WI2S4CO.mjs";
|
|
13
20
|
import {
|
|
14
21
|
localizeFarmPathname
|
|
15
22
|
} from "./chunk-L3KT7IXV.mjs";
|
|
23
|
+
import {
|
|
24
|
+
applyFarmBasePath
|
|
25
|
+
} from "./chunk-4RB44K6Z.mjs";
|
|
16
26
|
import {
|
|
17
27
|
__name
|
|
18
28
|
} from "./chunk-LPEX4YW6.mjs";
|
|
@@ -194,6 +204,9 @@ function createFarmMetadataRouteResponse(kind, value, routeModule = {}, options
|
|
|
194
204
|
if (method !== "GET" && method !== "HEAD") {
|
|
195
205
|
return new Response(null, { status: 405, headers: { Allow: "GET, HEAD" } });
|
|
196
206
|
}
|
|
207
|
+
if ((kind === "llms" || kind === "llms-full") && options.request) {
|
|
208
|
+
emitFarmAgentRead(options.request, kind, isResponse(value) ? value.status : 200);
|
|
209
|
+
}
|
|
197
210
|
if (isResponse(value)) {
|
|
198
211
|
return method === "HEAD" ? omitFarmResponseBody(value) : value;
|
|
199
212
|
}
|
|
@@ -440,6 +453,67 @@ function serializeInlineValue(value) {
|
|
|
440
453
|
}
|
|
441
454
|
__name(serializeInlineValue, "serializeInlineValue");
|
|
442
455
|
|
|
456
|
+
// src/api-catalog.ts
|
|
457
|
+
var FARM_API_CATALOG_PATH = "/.well-known/api-catalog";
|
|
458
|
+
var API_CATALOG_CONTENT_TYPE = 'application/linkset+json; profile="https://www.rfc-editor.org/info/rfc9727"';
|
|
459
|
+
function resolveFarmApiCatalogInput(config) {
|
|
460
|
+
const mcp = config.mcp && config.mcp.enabled !== false ? config.mcp : void 0;
|
|
461
|
+
return {
|
|
462
|
+
basePath: config.basePath,
|
|
463
|
+
apiBaseURL: config.openapi?.servers?.[0]?.url ?? config.api.baseURL,
|
|
464
|
+
openapi: config.openapi?.enabled ? { specRoute: config.openapi.specRoute, route: config.openapi.route } : void 0,
|
|
465
|
+
mcpPath: mcp ? resolveFarmAPIServerRoutePath(
|
|
466
|
+
mcp.path ?? "/api/mcp",
|
|
467
|
+
resolveFarmAPIServerBasePath(config.api)
|
|
468
|
+
) : void 0
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
__name(resolveFarmApiCatalogInput, "resolveFarmApiCatalogInput");
|
|
472
|
+
function createFarmApiCatalog(input) {
|
|
473
|
+
const appPath = /* @__PURE__ */ __name((path) => applyFarmBasePath(path, input.basePath), "appPath");
|
|
474
|
+
const items = [];
|
|
475
|
+
const contexts = [];
|
|
476
|
+
const specRoute = input.openapi?.specRoute;
|
|
477
|
+
const reference = input.openapi?.route;
|
|
478
|
+
if (specRoute || reference) {
|
|
479
|
+
const api = { anchor: input.apiBaseURL };
|
|
480
|
+
if (specRoute) {
|
|
481
|
+
api["service-desc"] = [
|
|
482
|
+
{ href: appPath(specRoute), type: "application/vnd.oai.openapi+json" }
|
|
483
|
+
];
|
|
484
|
+
}
|
|
485
|
+
if (reference) api["service-doc"] = [{ href: appPath(reference), type: "text/html" }];
|
|
486
|
+
items.push({ href: input.apiBaseURL });
|
|
487
|
+
contexts.push(api);
|
|
488
|
+
}
|
|
489
|
+
if (input.mcpPath) items.push({ href: input.mcpPath });
|
|
490
|
+
return {
|
|
491
|
+
linkset: [{ anchor: appPath(FARM_API_CATALOG_PATH), item: items }, ...contexts]
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
__name(createFarmApiCatalog, "createFarmApiCatalog");
|
|
495
|
+
function createFarmApiCatalogResponse(method, input, request) {
|
|
496
|
+
const upperMethod = method.toUpperCase();
|
|
497
|
+
if (upperMethod !== "GET" && upperMethod !== "HEAD") {
|
|
498
|
+
return new Response("Method Not Allowed", {
|
|
499
|
+
status: 405,
|
|
500
|
+
headers: { Allow: "GET, HEAD", "Content-Type": "text/plain; charset=utf-8" }
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
if (request) emitFarmAgentRead(request, "api-catalog", 200);
|
|
504
|
+
const catalog = createFarmApiCatalog(input);
|
|
505
|
+
return new Response(upperMethod === "HEAD" ? null : JSON.stringify(catalog), {
|
|
506
|
+
status: 200,
|
|
507
|
+
headers: {
|
|
508
|
+
"Content-Type": API_CATALOG_CONTENT_TYPE,
|
|
509
|
+
"Cache-Control": "public, max-age=0, must-revalidate",
|
|
510
|
+
Link: `<${catalog.linkset[0].anchor}>; rel="api-catalog"`,
|
|
511
|
+
"X-Content-Type-Options": "nosniff"
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
__name(createFarmApiCatalogResponse, "createFarmApiCatalogResponse");
|
|
516
|
+
|
|
443
517
|
export {
|
|
444
518
|
renderFarmLocaleAlternateLinks,
|
|
445
519
|
createLateRedirectRecovery,
|
|
@@ -449,5 +523,8 @@ export {
|
|
|
449
523
|
getDefaultErrorStatusText,
|
|
450
524
|
createDefaultErrorMarkup,
|
|
451
525
|
createFarmThemeDocumentParts,
|
|
452
|
-
applyFarmThemeDocument
|
|
526
|
+
applyFarmThemeDocument,
|
|
527
|
+
FARM_API_CATALOG_PATH,
|
|
528
|
+
resolveFarmApiCatalogInput,
|
|
529
|
+
createFarmApiCatalogResponse
|
|
453
530
|
};
|
|
@@ -16,7 +16,7 @@ var _chunkJ7FSKED3cjs = require('./chunk-J7FSKED3.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunk3TQWUUNPcjs = require('./chunk-3TQWUUNP.cjs');
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
@@ -30,7 +30,7 @@ var _chunkQBK2AA4Ucjs = require('./chunk-QBK2AA4U.cjs');
|
|
|
30
30
|
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
31
31
|
|
|
32
32
|
// src/client/metadata-reconciler.ts
|
|
33
|
-
var MANAGED_ATTRIBUTE =
|
|
33
|
+
var MANAGED_ATTRIBUTE = _chunk3TQWUUNPcjs.FARM_METADATA_ATTRIBUTE;
|
|
34
34
|
var OWNED_SELECTORS = [
|
|
35
35
|
'meta[name="description"]',
|
|
36
36
|
'meta[name="keywords"]',
|
|
@@ -65,8 +65,8 @@ function removeAll(selector) {
|
|
|
65
65
|
}
|
|
66
66
|
_chunkS3JO3N4Hcjs.__name.call(void 0, removeAll, "removeAll");
|
|
67
67
|
function applyFarmMetadataToDocument(metadata, pathname) {
|
|
68
|
-
document.title =
|
|
69
|
-
const rendered =
|
|
68
|
+
document.title = _chunk3TQWUUNPcjs.resolveMetadataTitle.call(void 0, _optionalChain([metadata, 'optionalAccess', _ => _.title])) || "Farm.js App";
|
|
69
|
+
const rendered = _chunk3TQWUUNPcjs.renderMetadataHead.call(void 0, metadata, { pathname });
|
|
70
70
|
const template = document.createElement("template");
|
|
71
71
|
template.innerHTML = rendered.tags;
|
|
72
72
|
removeAll(OWNED_SELECTORS);
|
|
@@ -17,7 +17,7 @@ var _chunkLYLEZIG3cjs = require('./chunk-LYLEZIG3.cjs');
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkYAOX43YIcjs = require('./chunk-YAOX43YI.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
var _chunkWMAPPDMMcjs = require('./chunk-WMAPPDMM.cjs');
|
|
@@ -93,7 +93,7 @@ var _APIRouteManager = class _APIRouteManager {
|
|
|
93
93
|
await this.loadProgrammaticApiRoutes(appDir);
|
|
94
94
|
}
|
|
95
95
|
this.routes = new Map(
|
|
96
|
-
|
|
96
|
+
_chunkYAOX43YIcjs.mergePluginAPIRoutes.call(void 0, [...this.routes.values()], this.plugins, void 0, {
|
|
97
97
|
bodySizeLimit: this.bodySizeLimit
|
|
98
98
|
}).map((route) => [route.path, route])
|
|
99
99
|
);
|
|
@@ -140,7 +140,7 @@ var _APIRouteManager = class _APIRouteManager {
|
|
|
140
140
|
const routeModule = await this.loadModule(filePath);
|
|
141
141
|
const endpoints = {};
|
|
142
142
|
const availableMethods = [];
|
|
143
|
-
for (const method of
|
|
143
|
+
for (const method of _chunkYAOX43YIcjs.API_ROUTE_METHODS) {
|
|
144
144
|
if (routeModule[method]) {
|
|
145
145
|
endpoints[method] = routeModule[method];
|
|
146
146
|
availableMethods.push(method);
|
|
@@ -322,7 +322,7 @@ var _APIRouteManager = class _APIRouteManager {
|
|
|
322
322
|
const url = new URL(request.url);
|
|
323
323
|
const pathname = url.pathname;
|
|
324
324
|
const method = request.method.toUpperCase();
|
|
325
|
-
const match =
|
|
325
|
+
const match = _chunkYAOX43YIcjs.matchAPIRouteAtBasePath.call(void 0, this.routes, pathname, this.basePath);
|
|
326
326
|
if (!match) {
|
|
327
327
|
return new Response(JSON.stringify({ error: "Not Found" }), {
|
|
328
328
|
status: 404,
|
|
@@ -330,19 +330,19 @@ var _APIRouteManager = class _APIRouteManager {
|
|
|
330
330
|
});
|
|
331
331
|
}
|
|
332
332
|
const { route, params } = match;
|
|
333
|
-
const endpoint =
|
|
333
|
+
const endpoint = _chunkYAOX43YIcjs.resolveAPIRouteEndpoint.call(void 0, route, method);
|
|
334
334
|
if (!endpoint) {
|
|
335
335
|
return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
|
|
336
336
|
status: 405,
|
|
337
337
|
headers: {
|
|
338
|
-
Allow:
|
|
338
|
+
Allow: _chunkYAOX43YIcjs.getAllowedAPIRouteMethods.call(void 0, route).join(", "),
|
|
339
339
|
"Content-Type": "application/json"
|
|
340
340
|
}
|
|
341
341
|
});
|
|
342
342
|
}
|
|
343
343
|
const invoke = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async () => {
|
|
344
344
|
try {
|
|
345
|
-
return await
|
|
345
|
+
return await _chunkYAOX43YIcjs.invokeAPIRouteEndpoint.call(void 0, endpoint, request, params, this.bodySizeLimit);
|
|
346
346
|
} catch (error) {
|
|
347
347
|
if (options.throwOnError) throw error;
|
|
348
348
|
console.error(`[API Error] ${pathname}:`, error);
|
|
@@ -364,7 +364,7 @@ var _APIRouteManager = class _APIRouteManager {
|
|
|
364
364
|
return Boolean(this.matchRoute(pathname));
|
|
365
365
|
}
|
|
366
366
|
matchRoute(pathname) {
|
|
367
|
-
return
|
|
367
|
+
return _chunkYAOX43YIcjs.matchAPIRouteAtBasePath.call(void 0, this.routes, pathname, this.basePath);
|
|
368
368
|
}
|
|
369
369
|
/**
|
|
370
370
|
* Get all routes for client type generation
|
|
@@ -19,16 +19,18 @@ async function resolveFarmNotFoundMetadata(layoutModules, notFoundModule) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
let own = {};
|
|
22
|
+
let latestTitle;
|
|
22
23
|
if (notFoundModule) {
|
|
23
24
|
own = mergeMetadata(own, notFoundModule.metadata);
|
|
25
|
+
latestTitle = notFoundModule.metadata?.title;
|
|
24
26
|
if (typeof notFoundModule.generateMetadata === "function") {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
);
|
|
27
|
+
const generated = await notFoundModule.generateMetadata({ params: {}, searchParams: {} });
|
|
28
|
+
own = mergeMetadata(own, generated);
|
|
29
|
+
if (generated?.title !== void 0) latestTitle = generated.title;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
const title = isRecord(latestTitle) && normalizeContent(latestTitle.absolute) ? latestTitle : own.title;
|
|
33
|
+
return mergeMetadata(metadata, { ...own, title: title ?? FARM_NOT_FOUND_TITLE });
|
|
32
34
|
}
|
|
33
35
|
__name(resolveFarmNotFoundMetadata, "resolveFarmNotFoundMetadata");
|
|
34
36
|
function mergeMetadata(base, next) {
|
|
@@ -7,7 +7,7 @@ var _chunkSU7MH53Pcjs = require('./chunk-SU7MH53P.cjs');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkB6ZCT36Xcjs = require('./chunk-B6ZCT36X.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
var _chunk5OVTOKGHcjs = require('./chunk-5OVTOKGH.cjs');
|
|
@@ -52,7 +52,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, shouldBlockUnload, "shouldBlockUnload");
|
|
|
52
52
|
function navigateViaRouter(href, basePath, replace, options = {}) {
|
|
53
53
|
if (typeof window === "undefined") return;
|
|
54
54
|
const url = _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, href, basePath);
|
|
55
|
-
const spaRouter =
|
|
55
|
+
const spaRouter = _chunkB6ZCT36Xcjs.getInstalledFarmSPARouter.call(void 0, );
|
|
56
56
|
if (spaRouter) {
|
|
57
57
|
void spaRouter.navigate(url, {
|
|
58
58
|
replace,
|
|
@@ -65,7 +65,7 @@ function navigateViaRouter(href, basePath, replace, options = {}) {
|
|
|
65
65
|
} else {
|
|
66
66
|
window.history.pushState(null, "", url);
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
_chunkB6ZCT36Xcjs.notifyHistoryChange.call(void 0, "url-search");
|
|
69
69
|
}
|
|
70
70
|
_chunkS3JO3N4Hcjs.__name.call(void 0, navigateViaRouter, "navigateViaRouter");
|
|
71
71
|
function useRouter(options = {}) {
|
|
@@ -85,7 +85,7 @@ function useRouter(options = {}) {
|
|
|
85
85
|
setState(readRouterState(basePath, routeMatcher));
|
|
86
86
|
}, "handlePopState");
|
|
87
87
|
handlePopState();
|
|
88
|
-
const unsubscribe =
|
|
88
|
+
const unsubscribe = _chunkB6ZCT36Xcjs.subscribeHistoryChange.call(void 0, handlePopState);
|
|
89
89
|
return unsubscribe;
|
|
90
90
|
}, [basePath, routeMatcher]);
|
|
91
91
|
const push = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (href, navigateOptions) => {
|
|
@@ -96,11 +96,11 @@ function useRouter(options = {}) {
|
|
|
96
96
|
}, "replace");
|
|
97
97
|
const pushState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (pageState, href) => {
|
|
98
98
|
if (typeof window === "undefined") return;
|
|
99
|
-
|
|
99
|
+
_chunkB6ZCT36Xcjs.getRouter.call(void 0, ).pushState(pageState, resolveClientHref(href, basePath));
|
|
100
100
|
}, "pushState");
|
|
101
101
|
const replaceState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (pageState, href) => {
|
|
102
102
|
if (typeof window === "undefined") return;
|
|
103
|
-
|
|
103
|
+
_chunkB6ZCT36Xcjs.getRouter.call(void 0, ).replaceState(pageState, resolveClientHref(href, basePath));
|
|
104
104
|
}, "replaceState");
|
|
105
105
|
const back = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
|
|
106
106
|
if (typeof window !== "undefined") {
|
|
@@ -124,25 +124,25 @@ function useRouter(options = {}) {
|
|
|
124
124
|
}
|
|
125
125
|
_chunkS3JO3N4Hcjs.__name.call(void 0, useRouter, "useRouter");
|
|
126
126
|
function usePageState() {
|
|
127
|
-
const [state, setState] = _react.useState.call(void 0, () =>
|
|
127
|
+
const [state, setState] = _react.useState.call(void 0, () => _chunkB6ZCT36Xcjs.readPageState.call(void 0, ));
|
|
128
128
|
_react.useEffect.call(void 0, () => {
|
|
129
129
|
if (typeof window === "undefined") return;
|
|
130
130
|
const handlePopState = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => {
|
|
131
|
-
setState(
|
|
131
|
+
setState(_chunkB6ZCT36Xcjs.readPageState.call(void 0, ));
|
|
132
132
|
}, "handlePopState");
|
|
133
133
|
handlePopState();
|
|
134
|
-
return
|
|
134
|
+
return _chunkB6ZCT36Xcjs.subscribeHistoryChange.call(void 0, handlePopState);
|
|
135
135
|
}, []);
|
|
136
136
|
return state;
|
|
137
137
|
}
|
|
138
138
|
_chunkS3JO3N4Hcjs.__name.call(void 0, usePageState, "usePageState");
|
|
139
139
|
function useNavigation() {
|
|
140
140
|
const [state, setState] = _react.useState.call(void 0,
|
|
141
|
-
() =>
|
|
141
|
+
() => _chunkB6ZCT36Xcjs.getRouter.call(void 0, ).getNavigationState()
|
|
142
142
|
);
|
|
143
143
|
_react.useEffect.call(void 0, () => {
|
|
144
144
|
if (typeof window === "undefined") return;
|
|
145
|
-
return
|
|
145
|
+
return _chunkB6ZCT36Xcjs.getRouter.call(void 0, ).subscribeNavigation(setState);
|
|
146
146
|
}, []);
|
|
147
147
|
return state;
|
|
148
148
|
}
|
|
@@ -155,7 +155,7 @@ function useBlocker(options) {
|
|
|
155
155
|
if (typeof window === "undefined" || !active) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
-
return
|
|
158
|
+
return _chunkB6ZCT36Xcjs.getRouter.call(void 0, ).addBlocker(
|
|
159
159
|
async (context) => {
|
|
160
160
|
const current = optionsRef.current;
|
|
161
161
|
const when = typeof current.when === "function" ? current.when(context) : current.when;
|
|
@@ -179,7 +179,7 @@ function useScrollRestoration(key) {
|
|
|
179
179
|
_react.useEffect.call(void 0, () => {
|
|
180
180
|
const element = ref.current;
|
|
181
181
|
if (!element) return;
|
|
182
|
-
return
|
|
182
|
+
return _chunkB6ZCT36Xcjs.getRouter.call(void 0, ).registerScrollElement(key, element);
|
|
183
183
|
}, [key]);
|
|
184
184
|
return ref;
|
|
185
185
|
}
|
|
@@ -201,7 +201,7 @@ function readRouterState(basePath, routeMatcher) {
|
|
|
201
201
|
pathname,
|
|
202
202
|
searchParams: url.searchParams,
|
|
203
203
|
params: _optionalChain([routeMatcher, 'optionalAccess', _5 => _5.match, 'call', _6 => _6(routePathname), 'optionalAccess', _7 => _7.params]) || {},
|
|
204
|
-
pageState: typeof window === "undefined" ? null :
|
|
204
|
+
pageState: typeof window === "undefined" ? null : _chunkB6ZCT36Xcjs.readPageState.call(void 0, )
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
207
|
_chunkS3JO3N4Hcjs.__name.call(void 0, readRouterState, "readRouterState");
|
|
@@ -6,7 +6,7 @@ var _chunk4PPEPOZZcjs = require('./chunk-4PPEPOZZ.cjs');
|
|
|
6
6
|
var _chunkMQ3H6LT5cjs = require('./chunk-MQ3H6LT5.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkBD2U4ZL6cjs = require('./chunk-BD2U4ZL6.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _chunkN4RLRSWWcjs = require('./chunk-N4RLRSWW.cjs');
|
|
@@ -19,7 +19,7 @@ var _chunk2CQ74SP6cjs = require('./chunk-2CQ74SP6.cjs');
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkYAOX43YIcjs = require('./chunk-YAOX43YI.cjs');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
var _chunk6V4TDWECcjs = require('./chunk-6V4TDWEC.cjs');
|
|
@@ -105,7 +105,7 @@ function farmApiPlugin(options = {}) {
|
|
|
105
105
|
const existing = apiRoutesCache.get(routePath);
|
|
106
106
|
const existingFile = _optionalChain([endpointSources, 'access', _ => _.get, 'call', _2 => _2(routePath), 'optionalAccess', _3 => _3.get, 'call', _4 => _4(normalizedMethod)]);
|
|
107
107
|
if (existingFile) {
|
|
108
|
-
throw new (0,
|
|
108
|
+
throw new (0, _chunkBD2U4ZL6cjs.APIRouteConflictError)(routePath, normalizedMethod, existingFile, filePath);
|
|
109
109
|
}
|
|
110
110
|
if (existing) {
|
|
111
111
|
if (!existing.methods.includes(normalizedMethod)) {
|
|
@@ -189,7 +189,7 @@ function farmApiPlugin(options = {}) {
|
|
|
189
189
|
const url = new URL(request.url);
|
|
190
190
|
const method = request.method.toUpperCase();
|
|
191
191
|
const pathname = url.pathname;
|
|
192
|
-
const match =
|
|
192
|
+
const match = _chunkYAOX43YIcjs.matchAPIRouteAtBasePath.call(void 0, apiRoutesCache, pathname, basePath);
|
|
193
193
|
if (!match) {
|
|
194
194
|
return new Response(JSON.stringify({ error: "Not Found" }), {
|
|
195
195
|
status: 404,
|
|
@@ -197,18 +197,18 @@ function farmApiPlugin(options = {}) {
|
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
199
|
const { route, params } = match;
|
|
200
|
-
const endpoint =
|
|
200
|
+
const endpoint = _chunkYAOX43YIcjs.resolveAPIRouteEndpoint.call(void 0, route, method);
|
|
201
201
|
if (!endpoint) {
|
|
202
202
|
return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
|
|
203
203
|
status: 405,
|
|
204
204
|
headers: {
|
|
205
|
-
Allow:
|
|
205
|
+
Allow: _chunkYAOX43YIcjs.getAllowedAPIRouteMethods.call(void 0, route).join(", "),
|
|
206
206
|
"Content-Type": "application/json"
|
|
207
207
|
}
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
try {
|
|
211
|
-
return await
|
|
211
|
+
return await _chunkYAOX43YIcjs.invokeAPIRouteEndpoint.call(void 0, endpoint, request, params, bodySizeLimit);
|
|
212
212
|
} catch (error) {
|
|
213
213
|
return new Response(JSON.stringify({ error: error.message || "Internal Server Error" }), {
|
|
214
214
|
status: 500,
|
|
@@ -255,7 +255,7 @@ function farmApiPlugin(options = {}) {
|
|
|
255
255
|
const routeModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, filePath);
|
|
256
256
|
const endpoints = {};
|
|
257
257
|
const availableMethods = [];
|
|
258
|
-
for (const method of
|
|
258
|
+
for (const method of _chunkYAOX43YIcjs.API_ROUTE_METHODS) {
|
|
259
259
|
if (routeModule[method]) {
|
|
260
260
|
availableMethods.push(method);
|
|
261
261
|
endpoints[method] = routeModule[method];
|
|
@@ -268,7 +268,7 @@ function farmApiPlugin(options = {}) {
|
|
|
268
268
|
log(`API route discovered: ${availableMethods.join(", ")} ${routePath}`);
|
|
269
269
|
}
|
|
270
270
|
} catch (e) {
|
|
271
|
-
if (e instanceof
|
|
271
|
+
if (e instanceof _chunkBD2U4ZL6cjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
|
|
272
272
|
log(`API route load failed at ${filePath}: ${e.message}`);
|
|
273
273
|
}
|
|
274
274
|
}
|
|
@@ -295,7 +295,7 @@ function farmApiPlugin(options = {}) {
|
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
} catch (e) {
|
|
298
|
-
if (e instanceof
|
|
298
|
+
if (e instanceof _chunkBD2U4ZL6cjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
|
|
299
299
|
log(`Root routes.ts load failed: ${e.message}`);
|
|
300
300
|
}
|
|
301
301
|
break;
|
|
@@ -326,7 +326,7 @@ function farmApiPlugin(options = {}) {
|
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
} catch (e) {
|
|
329
|
-
if (e instanceof
|
|
329
|
+
if (e instanceof _chunkBD2U4ZL6cjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
|
|
330
330
|
log(`Programmatic routes file load failed at ${routeFile}: ${e.message}`);
|
|
331
331
|
}
|
|
332
332
|
}
|
|
@@ -378,7 +378,7 @@ function farmApiPlugin(options = {}) {
|
|
|
378
378
|
const pathname = url.split("?")[0];
|
|
379
379
|
const method = req.method || "GET";
|
|
380
380
|
if (discoveryPromise) await waitForDiscovery();
|
|
381
|
-
if (!
|
|
381
|
+
if (!_chunkYAOX43YIcjs.matchAPIRouteAtBasePath.call(void 0, apiRoutesCache, pathname, basePath)) {
|
|
382
382
|
return next();
|
|
383
383
|
}
|
|
384
384
|
if (!apiRouterHandler) {
|
|
@@ -399,7 +399,7 @@ function farmApiPlugin(options = {}) {
|
|
|
399
399
|
}
|
|
400
400
|
const currentUrl = req.url || url;
|
|
401
401
|
const currentPathname = currentUrl.split("?")[0];
|
|
402
|
-
if (currentPathname !== pathname && !
|
|
402
|
+
if (currentPathname !== pathname && !_chunkYAOX43YIcjs.matchAPIRouteAtBasePath.call(void 0, apiRoutesCache, currentPathname, basePath)) {
|
|
403
403
|
return next();
|
|
404
404
|
}
|
|
405
405
|
const fullUrl = _chunk5ZSWG4UXcjs.resolveFarmRequestURL.call(void 0, req);
|
|
@@ -503,7 +503,7 @@ function farmApiPlugin(options = {}) {
|
|
|
503
503
|
log(`API router recreated`);
|
|
504
504
|
} catch (e) {
|
|
505
505
|
restoreRouteState(previousState);
|
|
506
|
-
if (e instanceof
|
|
506
|
+
if (e instanceof _chunkBD2U4ZL6cjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
|
|
507
507
|
log(`Root routes.ts HMR failed: ${e.message}`);
|
|
508
508
|
}
|
|
509
509
|
return [];
|
|
@@ -531,7 +531,7 @@ function farmApiPlugin(options = {}) {
|
|
|
531
531
|
const routeModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, file);
|
|
532
532
|
removeEndpointsFromFile(file);
|
|
533
533
|
const availableMethods = [];
|
|
534
|
-
for (const method of
|
|
534
|
+
for (const method of _chunkYAOX43YIcjs.API_ROUTE_METHODS) {
|
|
535
535
|
if (!routeModule[method]) continue;
|
|
536
536
|
availableMethods.push(method);
|
|
537
537
|
addEndpoint(routePath, file, method, routeModule[method]);
|
|
@@ -541,7 +541,7 @@ function farmApiPlugin(options = {}) {
|
|
|
541
541
|
log(`API router recreated`);
|
|
542
542
|
} catch (e) {
|
|
543
543
|
restoreRouteState(previousState);
|
|
544
|
-
if (e instanceof
|
|
544
|
+
if (e instanceof _chunkBD2U4ZL6cjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
|
|
545
545
|
log(`API route HMR failed: ${e.message}`);
|
|
546
546
|
}
|
|
547
547
|
return [];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
+
|
|
3
|
+
var _chunkE3UK5IIBcjs = require('./chunk-E3UK5IIB.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
7
|
+
|
|
8
|
+
// src/agent-identity.ts
|
|
9
|
+
var AGENT_TOKENS = [
|
|
10
|
+
["ChatGPT-User", "openai", "agent"],
|
|
11
|
+
["OAI-SearchBot", "openai", "crawler"],
|
|
12
|
+
["GPTBot", "openai", "crawler"],
|
|
13
|
+
["Claude-User", "anthropic", "agent"],
|
|
14
|
+
["Claude-SearchBot", "anthropic", "crawler"],
|
|
15
|
+
["ClaudeBot", "anthropic", "crawler"],
|
|
16
|
+
["Perplexity-User", "perplexity", "agent"],
|
|
17
|
+
["PerplexityBot", "perplexity", "crawler"],
|
|
18
|
+
["CCBot", "other", "crawler"],
|
|
19
|
+
["Bytespider", "other", "crawler"],
|
|
20
|
+
["Meta-ExternalAgent", "other", "crawler"]
|
|
21
|
+
];
|
|
22
|
+
var AGENT_PATTERNS = AGENT_TOKENS.map(([token, family, category]) => ({
|
|
23
|
+
pattern: new RegExp(`(?:^|[\\s;(])${token}(?=[/\\s;)]|$)`, "i"),
|
|
24
|
+
family,
|
|
25
|
+
category
|
|
26
|
+
}));
|
|
27
|
+
var UNKNOWN = { family: "unknown", category: "unknown", identity: "unknown" };
|
|
28
|
+
function classifyFarmAgent(userAgent) {
|
|
29
|
+
const value = (_nullishCoalesce(userAgent, () => ( ""))).slice(0, 2048);
|
|
30
|
+
const matches = AGENT_PATTERNS.filter(({ pattern }) => pattern.test(value));
|
|
31
|
+
if (matches.length === 1) {
|
|
32
|
+
const { family, category } = matches[0];
|
|
33
|
+
return { family, category, identity: "self-reported" };
|
|
34
|
+
}
|
|
35
|
+
return { ...UNKNOWN };
|
|
36
|
+
}
|
|
37
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, classifyFarmAgent, "classifyFarmAgent");
|
|
38
|
+
var FARM_INTERNAL_READ_HEADER = "x-farm-internal-read";
|
|
39
|
+
function emitFarmAgentRead(request, surface, status, view) {
|
|
40
|
+
if (request.headers.has(FARM_INTERNAL_READ_HEADER)) return;
|
|
41
|
+
let route;
|
|
42
|
+
try {
|
|
43
|
+
route = new URL(request.url).pathname;
|
|
44
|
+
} catch (e) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
_chunkE3UK5IIBcjs.emitFarmEvent.call(void 0, {
|
|
48
|
+
type: "agent.read",
|
|
49
|
+
surface,
|
|
50
|
+
route,
|
|
51
|
+
...view ? { view } : {},
|
|
52
|
+
status,
|
|
53
|
+
agent: classifyFarmAgent(request.headers.get("user-agent"))
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, emitFarmAgentRead, "emitFarmAgentRead");
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
exports.classifyFarmAgent = classifyFarmAgent; exports.FARM_INTERNAL_READ_HEADER = FARM_INTERNAL_READ_HEADER; exports.emitFarmAgentRead = emitFarmAgentRead;
|