@farm.js/core 0.1.35 → 0.1.37
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/{metadata-BnLDsUOS.d.ts → agent-mcp-BC0bAGVF.d.mts} +45 -2
- package/dist/agent-mcp-handler-LPJ2CADR.mjs +19 -0
- package/dist/agent-mcp-handler-SJAHFSPI.cjs +19 -0
- package/dist/{metadata-WGpBYcGn.d.mts → agent-mcp-jyDHbQKe.d.ts} +45 -2
- package/dist/agent-runtime.cjs +6 -4
- package/dist/agent-runtime.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/agent-runtime.mjs +5 -3
- package/dist/api/client.cjs +3 -3
- package/dist/api/client.mjs +2 -2
- package/dist/api/route-manager.cjs +9 -9
- package/dist/api/route-manager.d.mts +10 -4
- package/dist/api/route-manager.d.ts +10 -4
- package/dist/api/route-manager.mjs +8 -8
- package/dist/api/runtime.cjs +6 -6
- package/dist/api/runtime.d.mts +4 -62
- package/dist/api/runtime.d.ts +4 -62
- package/dist/api/runtime.mjs +5 -5
- package/dist/api.cjs +13 -12
- package/dist/api.d.mts +3 -3
- package/dist/api.d.ts +3 -3
- package/dist/api.mjs +12 -11
- package/dist/{app-BXB3JZYc.d.ts → app-CKO3iN1c.d.ts} +17 -3
- package/dist/{app-D_j9AAVL.d.mts → app-Cbkj9ufe.d.mts} +17 -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-F7JZENPF.cjs → chunk-3A4KGQYI.cjs} +38 -30
- package/dist/{chunk-4MMGO7YW.cjs → chunk-3IP27TCG.cjs} +43 -32
- package/dist/{chunk-FDR64H6B.mjs → chunk-3KGDJLJK.mjs} +41 -2
- package/dist/{chunk-UJD4PHYB.mjs → chunk-4E5WBPEG.mjs} +72 -354
- package/dist/{chunk-KXWRO25S.cjs → chunk-4GPOC4LN.cjs} +3 -3
- package/dist/{chunk-Z2HLU4IX.cjs → chunk-4GWRFP22.cjs} +23 -2
- package/dist/{chunk-4KU5Q7C2.mjs → chunk-4P6ULFMD.mjs} +253 -67
- package/dist/chunk-4WQ6PGSJ.cjs +367 -0
- package/dist/{chunk-SMHH4VDG.mjs → chunk-4WVJLURN.mjs} +1 -1
- package/dist/{chunk-2F2ER724.cjs → chunk-5BXGGEC7.cjs} +27 -22
- package/dist/{chunk-3BHT4WMP.cjs → chunk-5D2JIPLH.cjs} +8 -8
- package/dist/{chunk-AHGECQEW.mjs → chunk-666CKENS.mjs} +1 -1
- package/dist/{chunk-GFHLGIYC.cjs → chunk-6LGFV2CQ.cjs} +8 -8
- package/dist/chunk-6SJ2KJTA.mjs +314 -0
- package/dist/{chunk-PFQKNERH.cjs → chunk-6TJITR2B.cjs} +457 -218
- package/dist/{chunk-73MC7ZL6.cjs → chunk-75X755YZ.cjs} +2 -2
- package/dist/{chunk-3UH7MRCP.cjs → chunk-7DWNJI73.cjs} +13 -13
- package/dist/{chunk-7L5V3KQO.cjs → chunk-7O5M4UKW.cjs} +2 -2
- package/dist/{chunk-BJPBQNIE.cjs → chunk-7SQ5SGYZ.cjs} +2 -2
- package/dist/{chunk-27ZWSI3W.cjs → chunk-ADOAUDQ6.cjs} +2 -2
- package/dist/{chunk-CP6X4AEU.mjs → chunk-AJQTP4OO.mjs} +1 -1
- package/dist/{chunk-YKX5BK66.cjs → chunk-ATWHHSY2.cjs} +7 -7
- package/dist/{chunk-EFCQPQMG.cjs → chunk-B5PFZLKV.cjs} +89 -8
- package/dist/{chunk-FNO7A7CM.cjs → chunk-BHY547NB.cjs} +34 -16
- package/dist/{chunk-JHWOVJ3M.mjs → chunk-BUGNQIHC.mjs} +5 -0
- package/dist/{chunk-7GLPRTTF.cjs → chunk-CGBDNNSM.cjs} +2 -2
- package/dist/chunk-CI6E3UOH.cjs +314 -0
- package/dist/{chunk-2G2NNLE2.mjs → chunk-CQMVIOYP.mjs} +5 -5
- package/dist/{chunk-X6W5FFH6.cjs → chunk-CVH2BXPY.cjs} +8 -8
- package/dist/{chunk-TKSCR644.cjs → chunk-D3C5LBQY.cjs} +2 -2
- package/dist/{chunk-PZNL3WEG.mjs → chunk-DMEPTZTI.mjs} +22 -11
- package/dist/chunk-DTSROJ5J.mjs +367 -0
- package/dist/{chunk-DBNKI4NF.cjs → chunk-ECKF2BAM.cjs} +6 -2
- package/dist/{chunk-GQ3Z3IZI.cjs → chunk-EMMQ64QW.cjs} +18 -18
- package/dist/{chunk-6DU6UFUE.mjs → chunk-EXG5LD6B.mjs} +16 -8
- package/dist/{chunk-HUMR6LSU.mjs → chunk-F5QO4FNE.mjs} +1 -1
- package/dist/{chunk-YULD7ICZ.mjs → chunk-FBOJ55OM.mjs} +1 -1
- package/dist/{chunk-IHNMMXHV.mjs → chunk-FGRYBX5X.mjs} +15 -10
- package/dist/{chunk-D227TIEN.cjs → chunk-FWE7LEQC.cjs} +13 -13
- package/dist/{chunk-3BU22U3M.cjs → chunk-G2TEB74S.cjs} +5 -2
- package/dist/{chunk-G5RT7EXW.mjs → chunk-HEVMCTSR.mjs} +21 -6
- package/dist/{chunk-W7LF2J2S.mjs → chunk-HMRSWN47.mjs} +1 -1
- package/dist/{chunk-JG6DJF5A.mjs → chunk-HZFM2LWQ.mjs} +22 -1
- package/dist/{chunk-UAORZ7QA.mjs → chunk-IAIYV4RZ.mjs} +2 -2
- package/dist/{chunk-F2SE2VDO.mjs → chunk-IHQIOZLC.mjs} +1 -1
- package/dist/{chunk-2NNMOPDN.mjs → chunk-J3ANCZKA.mjs} +4 -1
- package/dist/{chunk-C4SPBWFM.cjs → chunk-JEZO6VUR.cjs} +10 -1
- package/dist/{chunk-SC2WYWPF.mjs → chunk-JPNFPAZ4.mjs} +3 -3
- package/dist/{chunk-F6Z3Y5KL.mjs → chunk-K3SAEIM3.mjs} +5 -2
- package/dist/{chunk-QAU5JD57.mjs → chunk-K4I4O5TS.mjs} +289 -50
- package/dist/{chunk-KN7K4VQN.mjs → chunk-KDTBF3UU.mjs} +1 -1
- package/dist/{chunk-OMVAU7NT.cjs → chunk-KIIMAWOJ.cjs} +11 -1
- package/dist/{chunk-43FMW62B.mjs → chunk-KMTGADN3.mjs} +28 -0
- package/dist/{chunk-QORUJDIV.mjs → chunk-KPFKMDM7.mjs} +2 -2
- package/dist/{chunk-YSCV4SJF.cjs → chunk-L5H2GSUC.cjs} +4 -4
- package/dist/{chunk-YDQZGSDS.mjs → chunk-LBDP3YT3.mjs} +1 -1
- package/dist/{chunk-6ETPZTJI.mjs → chunk-LBGILORX.mjs} +116 -55
- package/dist/{chunk-IPXLADVO.cjs → chunk-LOFKRKO7.cjs} +122 -61
- package/dist/{chunk-ULAWS2PA.cjs → chunk-LPFV45AY.cjs} +29 -26
- package/dist/{chunk-3KZS4SUS.mjs → chunk-MCIZVNOQ.mjs} +1 -1
- package/dist/{chunk-RU3M2FIK.cjs → chunk-MRMI32SN.cjs} +87 -369
- package/dist/{chunk-XCMCS4DA.mjs → chunk-ND2CWPOD.mjs} +2 -2
- package/dist/{chunk-XCACDAZZ.cjs → chunk-NDILNQ4L.cjs} +25 -10
- package/dist/{chunk-6TJOML4E.mjs → chunk-NFMDCAOS.mjs} +14 -11
- package/dist/{chunk-UXFQ3UDA.cjs → chunk-NICDYKBS.cjs} +42 -3
- package/dist/{chunk-EZDQRNQ7.mjs → chunk-NNSAQX3U.mjs} +23 -5
- package/dist/{chunk-YC6V7PWE.cjs → chunk-NQ6QFZWD.cjs} +1 -1
- package/dist/{chunk-PDOCJ6RY.mjs → chunk-O6WAEAX3.mjs} +1 -1
- package/dist/{chunk-U4KT7QP3.cjs → chunk-OW67PDDS.cjs} +14 -1
- package/dist/{chunk-77GNHH2Z.cjs → chunk-PMQHMWZU.cjs} +3 -3
- package/dist/chunk-PTZ2TVNE.cjs +178 -0
- package/dist/{chunk-6WCPV6G2.mjs → chunk-Q2KB32T4.mjs} +1 -1
- package/dist/{chunk-ICUQICNC.cjs → chunk-Q5FYSK45.cjs} +718 -532
- package/dist/{chunk-5SJWVY6R.mjs → chunk-QHSH7IH4.mjs} +9 -0
- package/dist/{chunk-Q3VLETLE.mjs → chunk-RRMVL6CJ.mjs} +4 -4
- package/dist/{chunk-IZY3V5XW.mjs → chunk-S3VWVTVA.mjs} +14 -1
- package/dist/{chunk-FFFW3OQ7.cjs → chunk-S6FJO323.cjs} +2 -2
- package/dist/{chunk-VFQT3LAO.cjs → chunk-SDOTRX3V.cjs} +5 -5
- package/dist/chunk-SGBZPZUW.mjs +75 -0
- package/dist/{chunk-BMWDEBXO.cjs → chunk-SHLXACIO.cjs} +31 -3
- package/dist/{chunk-ZXGAFZDO.cjs → chunk-T5OJPTVN.cjs} +2 -2
- package/dist/{chunk-2ELDTQRN.mjs → chunk-TDNWPAVR.mjs} +1 -1
- package/dist/{chunk-VZJR7UTG.cjs → chunk-TE2G5ION.cjs} +2 -2
- package/dist/{chunk-IHNIDL6H.cjs → chunk-TO4GJ56K.cjs} +22 -11
- package/dist/{chunk-4JHOT46A.mjs → chunk-TPLJVC7E.mjs} +86 -5
- package/dist/{chunk-NRSN7G7E.mjs → chunk-TW4GYDBJ.mjs} +1 -1
- package/dist/{chunk-XBML5KMG.cjs → chunk-U6MPZ35Q.cjs} +24 -14
- package/dist/chunk-UH6QN5NL.mjs +178 -0
- package/dist/{chunk-FTFYRMQQ.cjs → chunk-UJZLSXUB.cjs} +53 -28
- package/dist/chunk-UXHS27O6.cjs +75 -0
- package/dist/{chunk-DQQOKWYA.cjs → chunk-VR4GD5I3.cjs} +3 -3
- package/dist/{chunk-22LTEMGQ.mjs → chunk-VXAWRDK7.mjs} +14 -4
- package/dist/{chunk-62XKI4Z3.cjs → chunk-W2YDNK66.cjs} +6 -3
- package/dist/{chunk-VPTDD5XF.cjs → chunk-WBKEZXWE.cjs} +5 -0
- package/dist/{chunk-EJQT6KZN.cjs → chunk-WC5UV2HQ.cjs} +2 -2
- package/dist/{chunk-SAZVVAJH.mjs → chunk-WQ7T2263.mjs} +18 -7
- package/dist/chunk-WRPHYQVY.mjs +109 -0
- package/dist/chunk-WT4TGLXT.cjs +109 -0
- package/dist/{chunk-SOMHP6GF.mjs → chunk-XOPOIFTJ.mjs} +2 -2
- package/dist/{chunk-3PXS2MHU.mjs → chunk-YCKO6FRS.mjs} +1 -1
- package/dist/{chunk-C35ZBVRD.mjs → chunk-YWMZUGIS.mjs} +6 -2
- package/dist/{chunk-HMIJDL7S.mjs → chunk-Z5BEWYVO.mjs} +31 -6
- package/dist/{chunk-OKZUAXHF.mjs → chunk-Z7LA7MHQ.mjs} +1 -1
- package/dist/{chunk-Y7RKTKYI.mjs → chunk-ZMMBIVQM.mjs} +10 -0
- package/dist/{client-plugins-HIyulDym.d.ts → client-plugins-C8DjftDF.d.ts} +112 -5
- package/dist/{client-plugins-CvIslxWi.d.mts → client-plugins-CV4eJ9De.d.mts} +112 -5
- package/dist/client-plugins.d.mts +1 -1
- package/dist/client-plugins.d.ts +1 -1
- package/dist/client.cjs +8 -8
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/client.mjs +7 -7
- package/dist/config.d.mts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/{devtools-EAUY43BS.cjs → devtools-JXFQNWSH.cjs} +11 -10
- package/dist/{devtools-EE5RIBTH.mjs → devtools-KVOY2TCZ.mjs} +10 -9
- package/dist/docs.cjs +13 -12
- package/dist/docs.d.mts +2 -2
- package/dist/docs.d.ts +2 -2
- package/dist/docs.mjs +12 -11
- package/dist/headers.cjs +4 -4
- package/dist/headers.mjs +3 -3
- package/dist/i18n/client.cjs +11 -11
- package/dist/i18n/client.mjs +3 -3
- package/dist/image/server.cjs +3 -3
- package/dist/image/server.mjs +2 -2
- package/dist/image/sharp.cjs +10 -10
- package/dist/image/sharp.mjs +2 -2
- package/dist/index.cjs +61 -54
- package/dist/index.d.mts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.mjs +60 -53
- package/dist/integrations.cjs +8 -4
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/integrations.mjs +7 -3
- package/dist/internal/app-markdown-runtime.cjs +5 -3
- package/dist/internal/app-markdown-runtime.d.mts +19 -5
- package/dist/internal/app-markdown-runtime.d.ts +19 -5
- package/dist/internal/app-markdown-runtime.mjs +4 -2
- package/dist/internal/build-runtime.cjs +38 -34
- package/dist/internal/build-runtime.d.mts +3 -3
- package/dist/internal/build-runtime.d.ts +3 -3
- package/dist/internal/build-runtime.mjs +37 -33
- package/dist/internal/cli-runtime.cjs +17 -16
- package/dist/internal/cli-runtime.mjs +16 -15
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/client-runtime.cjs +2 -2
- package/dist/internal/client-runtime.mjs +1 -1
- package/dist/internal/compression-runtime.d.mts +1 -1
- package/dist/internal/compression-runtime.d.ts +1 -1
- package/dist/internal/config-runtime.cjs +11 -10
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +10 -9
- package/dist/internal/infra-analytics-runtime.cjs +5 -5
- package/dist/internal/infra-analytics-runtime.mjs +3 -3
- package/dist/internal/isolated-boundary.cjs +2 -2
- package/dist/internal/isolated-boundary.d.mts +0 -1
- package/dist/internal/isolated-boundary.d.ts +0 -1
- package/dist/internal/isolated-boundary.mjs +1 -1
- package/dist/internal/metadata-image-runtime.cjs +3 -3
- package/dist/internal/metadata-image-runtime.mjs +2 -2
- package/dist/internal/product-telemetry-runtime.cjs +2 -2
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/internal/production-runtime.cjs +27 -48
- package/dist/internal/production-runtime.d.mts +67 -27
- package/dist/internal/production-runtime.d.ts +67 -27
- package/dist/internal/production-runtime.mjs +34 -55
- package/dist/{layers-BRQF5ETU.mjs → layers-UTB43B7A.mjs} +1 -1
- package/dist/layers-VUWIOFEO.cjs +18 -0
- package/dist/markdown.cjs +1 -1
- package/dist/markdown.d.mts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/markdown.mjs +1 -1
- package/dist/middleware.cjs +10 -10
- package/dist/middleware.d.mts +6 -4
- package/dist/middleware.d.ts +6 -4
- package/dist/middleware.mjs +9 -9
- package/dist/navigation.cjs +7 -7
- package/dist/navigation.d.mts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/navigation.mjs +6 -6
- package/dist/{nitro-OVPLKPE2.cjs → nitro-7F65EZZS.cjs} +3 -3
- package/dist/{nitro-MXRDCXWZ.mjs → nitro-MPZJGPXK.mjs} +2 -2
- package/dist/plugin.cjs +31 -28
- package/dist/plugin.d.mts +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.mjs +30 -27
- package/dist/{production-runtime-Crq6CJ-2.d.ts → production-runtime-C2kkrPVZ.d.ts} +1 -1
- package/dist/{production-runtime-0sRnuYc-.d.mts → production-runtime-Du_FHb2-.d.mts} +1 -1
- package/dist/query/client.cjs +9 -9
- package/dist/query/client.mjs +4 -4
- package/dist/{render-plan-8ozZh2Qv.d.ts → render-plan-BnnPTpus.d.ts} +1 -1
- package/dist/{render-plan-gs9GGPzw.d.mts → render-plan-Cgx7v8tJ.d.mts} +1 -1
- package/dist/renderer/react/server.cjs +3 -3
- package/dist/renderer/react/server.mjs +1 -1
- package/dist/renderer-client.cjs +12 -12
- package/dist/renderer-client.d.mts +3 -3
- package/dist/renderer-client.d.ts +3 -3
- package/dist/renderer-client.mjs +4 -4
- package/dist/{request-B5G8rLBH.d.ts → request-BNWr7r5e.d.ts} +1 -1
- package/dist/{request-fkhiynXe.d.mts → request-sKayKcop.d.mts} +1 -1
- package/dist/request.cjs +3 -3
- package/dist/request.d.mts +2 -2
- package/dist/request.d.ts +2 -2
- package/dist/request.mjs +2 -2
- package/dist/{route-rendering-lS5nUMua.d.ts → route-rendering-Bx4Auw6Q.d.ts} +1 -1
- package/dist/{route-rendering-CLnS7AZj.d.mts → route-rendering-DWFp3Yq4.d.mts} +1 -1
- package/dist/{router-ifU8Dui1.d.mts → router-BK6K42Ij.d.mts} +1 -1
- package/dist/{router-4iuiYnOW.d.ts → router-DnW_2tQi.d.ts} +1 -1
- package/dist/routes.cjs +2 -2
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/routes.mjs +1 -1
- package/dist/runtime-CA3Ei5k_.d.ts +69 -0
- package/dist/runtime-DJDaCMd_.d.mts +69 -0
- package/dist/server-action-security.cjs +3 -3
- package/dist/server-action-security.mjs +2 -2
- package/dist/server-fn.cjs +5 -5
- package/dist/server-fn.mjs +4 -4
- package/dist/server-plugins.cjs +5 -5
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server-plugins.mjs +4 -4
- package/dist/server-query.cjs +6 -6
- package/dist/server-query.mjs +5 -5
- package/dist/server.cjs +57 -54
- package/dist/server.d.mts +7 -7
- package/dist/server.d.ts +7 -7
- package/dist/server.mjs +35 -32
- package/dist/{spa-router-Bq7VCOwx.d.mts → spa-router-D6fUA4Rn.d.mts} +2 -2
- package/dist/{spa-router-DaJk5Re4.d.ts → spa-router-Mwbd7g2L.d.ts} +2 -2
- package/dist/testing.cjs +13 -13
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.mjs +10 -10
- package/dist/theme/server.cjs +4 -4
- package/dist/theme/server.mjs +3 -3
- package/dist/{utils-BXLmFsVR.d.ts → utils-BwVcAfUR.d.ts} +1 -1
- package/dist/{utils-XJn0c9bj.d.mts → utils-p9Hs-jCc.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +31 -28
- package/dist/vite.d.mts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.mjs +30 -27
- package/dist/workflows.cjs +3 -3
- package/dist/workflows.mjs +2 -2
- package/package.json +1 -1
- package/types/middleware.d.ts +5 -1
- package/dist/chunk-FXEF4PPL.mjs +0 -47
- package/dist/chunk-XD32KALF.cjs +0 -47
- package/dist/layers-4PNE2HOY.cjs +0 -18
- /package/dist/{chunk-SJNMVDDF.cjs → chunk-FUCSUGDM.cjs} +0 -0
- /package/dist/{chunk-UDNPLXW7.mjs → chunk-MYIZXDZA.mjs} +0 -0
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
isFarmMetadataNoIndex
|
|
3
|
+
} from "./chunk-DTSROJ5J.mjs";
|
|
4
|
+
import {
|
|
4
5
|
matchesFarmMarkdownRoutePattern
|
|
5
6
|
} from "./chunk-WWIKMBRN.mjs";
|
|
6
|
-
import {
|
|
7
|
-
FARM_INTERNAL_READ_HEADER
|
|
8
|
-
} from "./chunk-MVL2RAJW.mjs";
|
|
9
7
|
import {
|
|
10
8
|
_markFarmOwnedResponse,
|
|
11
9
|
_withFarmResponseHeaders
|
|
@@ -17,348 +15,6 @@ import {
|
|
|
17
15
|
__name
|
|
18
16
|
} from "./chunk-LPEX4YW6.mjs";
|
|
19
17
|
|
|
20
|
-
// src/llms-txt.ts
|
|
21
|
-
function resolveFarmLlmsTxtConfig(input) {
|
|
22
|
-
if (!input) return { enabled: false, include: [], exclude: [], full: false };
|
|
23
|
-
if (input === true) return { enabled: true, include: [], exclude: [], full: true };
|
|
24
|
-
if (typeof input !== "object") {
|
|
25
|
-
throw new TypeError("agent.llmsTxt must be true, false, or an options object.");
|
|
26
|
-
}
|
|
27
|
-
if (input.enabled === false) return { enabled: false, include: [], exclude: [], full: false };
|
|
28
|
-
for (const key of ["title", "summary", "details"]) {
|
|
29
|
-
if (input[key] !== void 0 && typeof input[key] !== "string") {
|
|
30
|
-
throw new TypeError(`agent.llmsTxt.${key} must be a string.`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (input.full !== void 0 && typeof input.full !== "boolean") {
|
|
34
|
-
throw new TypeError("agent.llmsTxt.full must be a boolean.");
|
|
35
|
-
}
|
|
36
|
-
if (input.revalidate !== void 0 && (typeof input.revalidate !== "number" || !Number.isFinite(input.revalidate) || input.revalidate < 0)) {
|
|
37
|
-
throw new TypeError("agent.llmsTxt.revalidate must be a number of seconds.");
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
enabled: true,
|
|
41
|
-
...input.title ? { title: input.title } : {},
|
|
42
|
-
...input.summary ? { summary: input.summary } : {},
|
|
43
|
-
...input.details ? { details: input.details } : {},
|
|
44
|
-
include: resolveRoutePatterns(input.include, "include"),
|
|
45
|
-
exclude: resolveRoutePatterns(input.exclude, "exclude"),
|
|
46
|
-
full: input.full !== false,
|
|
47
|
-
...input.revalidate !== void 0 ? { revalidate: input.revalidate } : {}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
__name(resolveFarmLlmsTxtConfig, "resolveFarmLlmsTxtConfig");
|
|
51
|
-
function resolveRoutePatterns(value, key) {
|
|
52
|
-
if (value === void 0) return [];
|
|
53
|
-
if (!Array.isArray(value)) {
|
|
54
|
-
throw new TypeError(`agent.llmsTxt.${key} must be an array of route patterns.`);
|
|
55
|
-
}
|
|
56
|
-
return value.map((pattern, index) => {
|
|
57
|
-
if (typeof pattern !== "string" || !pattern.startsWith("/")) {
|
|
58
|
-
throw new TypeError(
|
|
59
|
-
`agent.llmsTxt.${key}[${index}] must be a route pattern starting with "/", such as "/docs/[...slug]".`
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
return pattern;
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
__name(resolveRoutePatterns, "resolveRoutePatterns");
|
|
66
|
-
function collectFarmLlmsTxtPages(sources, options) {
|
|
67
|
-
const include = options.include ?? [];
|
|
68
|
-
const exclude = options.exclude ?? [];
|
|
69
|
-
const pages = /* @__PURE__ */ new Map();
|
|
70
|
-
for (const source of sources) {
|
|
71
|
-
const path = source.pattern;
|
|
72
|
-
if (path.includes("[") || pages.has(path)) continue;
|
|
73
|
-
if (include.length && !include.some((pattern) => matchesFarmMarkdownRoutePattern(pattern, path))) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (exclude.some((pattern) => matchesFarmMarkdownRoutePattern(pattern, path))) continue;
|
|
77
|
-
if (isMetadataNoIndex(source.metadata)) continue;
|
|
78
|
-
const target = isFarmMarkdownMirrorExposed(options.markdown, path) ? getFarmMarkdownMirrorPath(path) : path;
|
|
79
|
-
const description = readMetadataString(source.metadata, "description");
|
|
80
|
-
pages.set(path, {
|
|
81
|
-
path,
|
|
82
|
-
title: readMetadataTitle(source.metadata) ?? fallbackPageTitle(path),
|
|
83
|
-
url: `${options.origin}${applyFarmBasePath(target, options.basePath)}`,
|
|
84
|
-
...description ? { description } : {}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
return [...pages.values()].sort((left, right) => left.path.localeCompare(right.path));
|
|
88
|
-
}
|
|
89
|
-
__name(collectFarmLlmsTxtPages, "collectFarmLlmsTxtPages");
|
|
90
|
-
function isMetadataNoIndex(metadata) {
|
|
91
|
-
if (!metadata || typeof metadata !== "object") return false;
|
|
92
|
-
const robots = metadata.robots;
|
|
93
|
-
if (typeof robots === "string") {
|
|
94
|
-
return robots.split(",").map((directive) => directive.trim().toLowerCase()).some((directive) => directive === "noindex" || directive === "none");
|
|
95
|
-
}
|
|
96
|
-
return Boolean(
|
|
97
|
-
robots && typeof robots === "object" && robots.index === false
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
__name(isMetadataNoIndex, "isMetadataNoIndex");
|
|
101
|
-
function createFarmDefaultLlmsTxt(options) {
|
|
102
|
-
const { config, pages } = options;
|
|
103
|
-
const mcp = options.mcp ?? [];
|
|
104
|
-
const summary = config.summary ?? readMetadataString(options.rootMetadata, "description");
|
|
105
|
-
return {
|
|
106
|
-
title: config.title ?? readMetadataTitle(options.rootMetadata) ?? pages.find((page) => page.path === "/")?.title ?? new URL(options.origin).host,
|
|
107
|
-
...summary ? { summary } : {},
|
|
108
|
-
...config.details ? { details: config.details } : {},
|
|
109
|
-
sections: [
|
|
110
|
-
...pages.length ? [
|
|
111
|
-
{
|
|
112
|
-
title: "Pages",
|
|
113
|
-
links: pages.map(({ title, url, description }) => ({
|
|
114
|
-
title,
|
|
115
|
-
url,
|
|
116
|
-
...description ? { description } : {}
|
|
117
|
-
}))
|
|
118
|
-
}
|
|
119
|
-
] : [],
|
|
120
|
-
...mcp.length ? [{ title: "MCP", links: mcp }] : []
|
|
121
|
-
]
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
__name(createFarmDefaultLlmsTxt, "createFarmDefaultLlmsTxt");
|
|
125
|
-
function serializeFarmLlmsTxt(value) {
|
|
126
|
-
if (typeof value === "string") {
|
|
127
|
-
if (!value.trim()) throw new TypeError("llms.ts returned an empty llms.txt");
|
|
128
|
-
return value.endsWith("\n") ? value : `${value}
|
|
129
|
-
`;
|
|
130
|
-
}
|
|
131
|
-
if (!isRecord(value)) {
|
|
132
|
-
throw new TypeError("llms.ts must return llms.txt text, an llms.txt object, or a Response");
|
|
133
|
-
}
|
|
134
|
-
const title = requireText(value.title, "llms.ts must return a non-empty title");
|
|
135
|
-
const summary = optionalText(value.summary, "llms.ts summary must be a string");
|
|
136
|
-
const details = optionalText(value.details, "llms.ts details must be a string");
|
|
137
|
-
if (value.sections !== void 0 && !Array.isArray(value.sections)) {
|
|
138
|
-
throw new TypeError("llms.ts sections must be an array");
|
|
139
|
-
}
|
|
140
|
-
const blocks = [`# ${toSingleLine(title)}`];
|
|
141
|
-
if (summary?.trim()) blocks.push(`> ${toSingleLine(summary)}`);
|
|
142
|
-
if (details?.trim()) blocks.push(details.trim());
|
|
143
|
-
for (const [sectionIndex, section] of (value.sections ?? []).entries()) {
|
|
144
|
-
if (!isRecord(section)) {
|
|
145
|
-
throw new TypeError(`llms.ts section ${sectionIndex} must be an object`);
|
|
146
|
-
}
|
|
147
|
-
const sectionTitle = requireText(
|
|
148
|
-
section.title,
|
|
149
|
-
`llms.ts section ${sectionIndex} must include a non-empty title`
|
|
150
|
-
);
|
|
151
|
-
if (!Array.isArray(section.links)) {
|
|
152
|
-
throw new TypeError(`llms.ts section "${sectionTitle}" must include a links array`);
|
|
153
|
-
}
|
|
154
|
-
const links = section.links.map((link, linkIndex) => {
|
|
155
|
-
const where = `llms.ts section "${sectionTitle}" link ${linkIndex}`;
|
|
156
|
-
if (!isRecord(link)) throw new TypeError(`${where} must be an object`);
|
|
157
|
-
const linkTitle = requireText(link.title, `${where} must include a non-empty title`);
|
|
158
|
-
const url = requireText(link.url, `${where} must include a non-empty url`);
|
|
159
|
-
const description = optionalText(link.description, `${where} description must be a string`);
|
|
160
|
-
return `- [${escapeLinkText(linkTitle)}](${escapeLinkUrl(url)})${description?.trim() ? `: ${toSingleLine(description)}` : ""}`;
|
|
161
|
-
});
|
|
162
|
-
blocks.push(`## ${toSingleLine(sectionTitle)}`, links.join("\n"));
|
|
163
|
-
}
|
|
164
|
-
return `${blocks.filter(Boolean).join("\n\n")}
|
|
165
|
-
`;
|
|
166
|
-
}
|
|
167
|
-
__name(serializeFarmLlmsTxt, "serializeFarmLlmsTxt");
|
|
168
|
-
function createFarmLlmsMarkdownReader(fetchMarkdown) {
|
|
169
|
-
return async (url) => {
|
|
170
|
-
try {
|
|
171
|
-
const response = await fetchMarkdown(
|
|
172
|
-
new Request(url, {
|
|
173
|
-
headers: { accept: "text/markdown", [FARM_INTERNAL_READ_HEADER]: "llms-full" }
|
|
174
|
-
})
|
|
175
|
-
);
|
|
176
|
-
const type = response.headers.get("content-type") ?? "";
|
|
177
|
-
if (!response.ok || !type.toLowerCase().startsWith("text/markdown")) {
|
|
178
|
-
await response.body?.cancel();
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
return await response.text();
|
|
182
|
-
} catch {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
__name(createFarmLlmsMarkdownReader, "createFarmLlmsMarkdownReader");
|
|
188
|
-
var FARM_LLMS_FULL_PAGE_TIMEOUT_MS = 3e4;
|
|
189
|
-
var LLMS_PAGE_TIMED_OUT = /* @__PURE__ */ Symbol("farm.llms.pageTimedOut");
|
|
190
|
-
async function renderFarmLlmsFullTxt(value, options) {
|
|
191
|
-
const index = serializeFarmLlmsTxt(value);
|
|
192
|
-
if (typeof value === "string") return index;
|
|
193
|
-
const llms = value;
|
|
194
|
-
const links = [];
|
|
195
|
-
const seen = /* @__PURE__ */ new Set();
|
|
196
|
-
for (const section of llms.sections ?? []) {
|
|
197
|
-
for (const link of section.links) {
|
|
198
|
-
if (seen.has(link.url)) continue;
|
|
199
|
-
seen.add(link.url);
|
|
200
|
-
links.push(link);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
const pageTimeout = options.pageTimeout ?? FARM_LLMS_FULL_PAGE_TIMEOUT_MS;
|
|
204
|
-
const readWithinTimeout = /* @__PURE__ */ __name(async (url) => {
|
|
205
|
-
let timer;
|
|
206
|
-
const timedOut = new Promise((resolve) => {
|
|
207
|
-
timer = setTimeout(resolve, pageTimeout, LLMS_PAGE_TIMED_OUT);
|
|
208
|
-
});
|
|
209
|
-
try {
|
|
210
|
-
const content = await Promise.race([options.readMarkdown(url), timedOut]);
|
|
211
|
-
if (content !== LLMS_PAGE_TIMED_OUT) return content;
|
|
212
|
-
options.onIncomplete?.();
|
|
213
|
-
return null;
|
|
214
|
-
} finally {
|
|
215
|
-
clearTimeout(timer);
|
|
216
|
-
}
|
|
217
|
-
}, "readWithinTimeout");
|
|
218
|
-
const contents = await mapWithConcurrency(
|
|
219
|
-
links,
|
|
220
|
-
options.concurrency ?? 4,
|
|
221
|
-
(link) => shouldInlineLlmsLink(link.url, options.origin) ? readWithinTimeout(link.url) : null
|
|
222
|
-
);
|
|
223
|
-
const blocks = [`# ${toSingleLine(llms.title)}`];
|
|
224
|
-
if (llms.summary?.trim()) blocks.push(`> ${toSingleLine(llms.summary)}`);
|
|
225
|
-
if (llms.details?.trim()) blocks.push(llms.details.trim());
|
|
226
|
-
const pages = links.map((link, index2) => {
|
|
227
|
-
const parts = [`## ${toSingleLine(link.title)}`, `URL: ${escapeLinkUrl(link.url)}`];
|
|
228
|
-
if (link.description?.trim()) parts.push(toSingleLine(link.description));
|
|
229
|
-
const content = stripFrontmatter(contents[index2] ?? "").trim();
|
|
230
|
-
if (content) parts.push(content);
|
|
231
|
-
return parts.join("\n\n");
|
|
232
|
-
});
|
|
233
|
-
if (pages.length) blocks.push(pages.join("\n\n---\n\n"));
|
|
234
|
-
return `${blocks.join("\n\n")}
|
|
235
|
-
`;
|
|
236
|
-
}
|
|
237
|
-
__name(renderFarmLlmsFullTxt, "renderFarmLlmsFullTxt");
|
|
238
|
-
function createFarmLlmsFullRenderer(options = {}) {
|
|
239
|
-
const now = options.now ?? Date.now;
|
|
240
|
-
const ttl = (options.revalidate ?? 0) * 1e3;
|
|
241
|
-
const maxEntries = options.maxEntries ?? 16;
|
|
242
|
-
const entries = /* @__PURE__ */ new Map();
|
|
243
|
-
let queue = Promise.resolve();
|
|
244
|
-
const settle = /* @__PURE__ */ __name((body, complete, onSettled) => onSettled ? body.then((value) => (onSettled(complete()), value)) : body, "settle");
|
|
245
|
-
return (origin, render, onSettled) => {
|
|
246
|
-
const entry = entries.get(origin);
|
|
247
|
-
if (entry && entry.expires > now()) return settle(entry.body, entry.complete, onSettled);
|
|
248
|
-
entries.delete(origin);
|
|
249
|
-
let complete = true;
|
|
250
|
-
const body = queue.then(
|
|
251
|
-
() => render({
|
|
252
|
-
incomplete: /* @__PURE__ */ __name(() => {
|
|
253
|
-
complete = false;
|
|
254
|
-
}, "incomplete")
|
|
255
|
-
})
|
|
256
|
-
);
|
|
257
|
-
queue = body.catch(() => {
|
|
258
|
-
});
|
|
259
|
-
const pending = { body, expires: Number.POSITIVE_INFINITY, complete: /* @__PURE__ */ __name(() => complete, "complete") };
|
|
260
|
-
entries.set(origin, pending);
|
|
261
|
-
if (entries.size > maxEntries) entries.delete(entries.keys().next().value);
|
|
262
|
-
body.then(
|
|
263
|
-
() => {
|
|
264
|
-
if (entries.get(origin) !== pending) return;
|
|
265
|
-
if (ttl > 0 && complete) pending.expires = now() + ttl;
|
|
266
|
-
else entries.delete(origin);
|
|
267
|
-
},
|
|
268
|
-
() => {
|
|
269
|
-
if (entries.get(origin) === pending) entries.delete(origin);
|
|
270
|
-
}
|
|
271
|
-
);
|
|
272
|
-
return settle(body, pending.complete, onSettled);
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
__name(createFarmLlmsFullRenderer, "createFarmLlmsFullRenderer");
|
|
276
|
-
function stripFrontmatter(markdown) {
|
|
277
|
-
const match = /^\uFEFF?---\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/.exec(markdown);
|
|
278
|
-
return match ? markdown.slice(match[0].length) : markdown;
|
|
279
|
-
}
|
|
280
|
-
__name(stripFrontmatter, "stripFrontmatter");
|
|
281
|
-
function shouldInlineLlmsLink(url, origin) {
|
|
282
|
-
let target;
|
|
283
|
-
try {
|
|
284
|
-
target = new URL(url, origin);
|
|
285
|
-
} catch {
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
288
|
-
return target.origin === origin && !/\/llms(-full)?\.txt$/.test(target.pathname);
|
|
289
|
-
}
|
|
290
|
-
__name(shouldInlineLlmsLink, "shouldInlineLlmsLink");
|
|
291
|
-
async function mapWithConcurrency(items, limit, run) {
|
|
292
|
-
const results = [];
|
|
293
|
-
let next = 0;
|
|
294
|
-
const worker = /* @__PURE__ */ __name(async () => {
|
|
295
|
-
while (next < items.length) {
|
|
296
|
-
const index = next++;
|
|
297
|
-
results[index] = await run(items[index]);
|
|
298
|
-
}
|
|
299
|
-
}, "worker");
|
|
300
|
-
await Promise.all(Array.from({ length: Math.min(Math.max(limit, 1), items.length) }, worker));
|
|
301
|
-
return results;
|
|
302
|
-
}
|
|
303
|
-
__name(mapWithConcurrency, "mapWithConcurrency");
|
|
304
|
-
function readMetadataTitle(metadata) {
|
|
305
|
-
if (!isRecord(metadata)) return void 0;
|
|
306
|
-
const { title } = metadata;
|
|
307
|
-
if (typeof title === "string") return title.trim() || void 0;
|
|
308
|
-
if (isRecord(title)) {
|
|
309
|
-
for (const key of ["absolute", "default"]) {
|
|
310
|
-
const value = title[key];
|
|
311
|
-
if (typeof value === "string" && value.trim()) return value.trim();
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return void 0;
|
|
315
|
-
}
|
|
316
|
-
__name(readMetadataTitle, "readMetadataTitle");
|
|
317
|
-
function readMetadataString(metadata, key) {
|
|
318
|
-
if (!isRecord(metadata)) return void 0;
|
|
319
|
-
const value = metadata[key];
|
|
320
|
-
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
321
|
-
}
|
|
322
|
-
__name(readMetadataString, "readMetadataString");
|
|
323
|
-
function fallbackPageTitle(path) {
|
|
324
|
-
if (path === "/") return "Home";
|
|
325
|
-
const segments = path.split("/").filter(Boolean);
|
|
326
|
-
const segment = segments[segments.length - 1] ?? path;
|
|
327
|
-
const words = segment.replace(/[-_]+/g, " ").trim();
|
|
328
|
-
return words ? words[0].toUpperCase() + words.slice(1) : path;
|
|
329
|
-
}
|
|
330
|
-
__name(fallbackPageTitle, "fallbackPageTitle");
|
|
331
|
-
function toSingleLine(value) {
|
|
332
|
-
return value.replace(/\s+/g, " ").trim();
|
|
333
|
-
}
|
|
334
|
-
__name(toSingleLine, "toSingleLine");
|
|
335
|
-
function escapeLinkText(value) {
|
|
336
|
-
return toSingleLine(value).replace(/[\\[\]]/g, "\\$&");
|
|
337
|
-
}
|
|
338
|
-
__name(escapeLinkText, "escapeLinkText");
|
|
339
|
-
function escapeLinkUrl(value) {
|
|
340
|
-
return value.trim().replace(
|
|
341
|
-
/[\s()<>]/g,
|
|
342
|
-
(character) => character === "(" ? "%28" : character === ")" ? "%29" : encodeURIComponent(character)
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
__name(escapeLinkUrl, "escapeLinkUrl");
|
|
346
|
-
function requireText(value, message) {
|
|
347
|
-
if (typeof value !== "string" || !value.trim()) throw new TypeError(message);
|
|
348
|
-
return value;
|
|
349
|
-
}
|
|
350
|
-
__name(requireText, "requireText");
|
|
351
|
-
function optionalText(value, message) {
|
|
352
|
-
if (value === void 0) return void 0;
|
|
353
|
-
if (typeof value !== "string") throw new TypeError(message);
|
|
354
|
-
return value;
|
|
355
|
-
}
|
|
356
|
-
__name(optionalText, "optionalText");
|
|
357
|
-
function isRecord(value) {
|
|
358
|
-
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
359
|
-
}
|
|
360
|
-
__name(isRecord, "isRecord");
|
|
361
|
-
|
|
362
18
|
// src/agent-crawlers.ts
|
|
363
19
|
var FARM_AI_CRAWLERS = {
|
|
364
20
|
search: [
|
|
@@ -489,6 +145,73 @@ function resolveDefaultSitemap(options) {
|
|
|
489
145
|
}
|
|
490
146
|
__name(resolveDefaultSitemap, "resolveDefaultSitemap");
|
|
491
147
|
|
|
148
|
+
// src/agent-sitemap.ts
|
|
149
|
+
function resolveFarmAgentSitemap(input) {
|
|
150
|
+
if (!input) return { enabled: false, include: [], exclude: [] };
|
|
151
|
+
if (input === true) return { enabled: true, include: [], exclude: [] };
|
|
152
|
+
if (typeof input !== "object") {
|
|
153
|
+
throw new TypeError("agent.sitemap must be true, false, or an options object.");
|
|
154
|
+
}
|
|
155
|
+
if (input.enabled === false) return { enabled: false, include: [], exclude: [] };
|
|
156
|
+
return {
|
|
157
|
+
enabled: true,
|
|
158
|
+
include: resolveRoutePatterns(input.include, "include"),
|
|
159
|
+
exclude: resolveRoutePatterns(input.exclude, "exclude")
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
__name(resolveFarmAgentSitemap, "resolveFarmAgentSitemap");
|
|
163
|
+
function resolveRoutePatterns(value, key) {
|
|
164
|
+
if (value === void 0) return [];
|
|
165
|
+
if (!Array.isArray(value)) {
|
|
166
|
+
throw new TypeError(`agent.sitemap.${key} must be an array of route patterns.`);
|
|
167
|
+
}
|
|
168
|
+
return value.map((pattern, index) => {
|
|
169
|
+
if (typeof pattern !== "string" || !pattern.startsWith("/")) {
|
|
170
|
+
throw new TypeError(
|
|
171
|
+
`agent.sitemap.${key}[${index}] must be a route pattern starting with "/", such as "/admin/[...path]".`
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
return pattern;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
__name(resolveRoutePatterns, "resolveRoutePatterns");
|
|
178
|
+
function createFarmDefaultSitemap(sources, options) {
|
|
179
|
+
const { include, exclude } = options.config;
|
|
180
|
+
const base = toAbsoluteHttpOrigin(options.metadataBase) ?? options.origin;
|
|
181
|
+
const entries = /* @__PURE__ */ new Map();
|
|
182
|
+
for (const source of sources) {
|
|
183
|
+
const path = source.pattern;
|
|
184
|
+
if (path.includes("[") || path.includes("(") || entries.has(path)) continue;
|
|
185
|
+
if (include.length && !include.some((pattern) => matchesFarmMarkdownRoutePattern(pattern, path))) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
if (exclude.some((pattern) => matchesFarmMarkdownRoutePattern(pattern, path))) continue;
|
|
189
|
+
const module = isRecord(source.module) ? source.module : void 0;
|
|
190
|
+
if (isFarmMetadataNoIndex(module?.metadata)) continue;
|
|
191
|
+
if (module?.__farmRouteGuard) continue;
|
|
192
|
+
entries.set(path, {
|
|
193
|
+
url: new URL(applyFarmBasePath(path, options.basePath), base).href,
|
|
194
|
+
...source.lastModified ? { lastModified: source.lastModified } : {}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return [...entries.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([, entry]) => entry);
|
|
198
|
+
}
|
|
199
|
+
__name(createFarmDefaultSitemap, "createFarmDefaultSitemap");
|
|
200
|
+
function toAbsoluteHttpOrigin(value) {
|
|
201
|
+
if (typeof value !== "string" && !(value instanceof URL)) return void 0;
|
|
202
|
+
try {
|
|
203
|
+
const url = new URL(String(value));
|
|
204
|
+
return url.protocol === "https:" || url.protocol === "http:" ? url.origin : void 0;
|
|
205
|
+
} catch {
|
|
206
|
+
return void 0;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
__name(toAbsoluteHttpOrigin, "toAbsoluteHttpOrigin");
|
|
210
|
+
function isRecord(value) {
|
|
211
|
+
return Boolean(value && typeof value === "object");
|
|
212
|
+
}
|
|
213
|
+
__name(isRecord, "isRecord");
|
|
214
|
+
|
|
492
215
|
// src/security.ts
|
|
493
216
|
function resolveFarmSecurityConfig(input) {
|
|
494
217
|
if (input === void 0) return { csp: false };
|
|
@@ -1411,15 +1134,10 @@ function applyFarmPreviewRobotsTag(response) {
|
|
|
1411
1134
|
__name(applyFarmPreviewRobotsTag, "applyFarmPreviewRobotsTag");
|
|
1412
1135
|
|
|
1413
1136
|
export {
|
|
1414
|
-
resolveFarmLlmsTxtConfig,
|
|
1415
|
-
collectFarmLlmsTxtPages,
|
|
1416
|
-
createFarmDefaultLlmsTxt,
|
|
1417
|
-
serializeFarmLlmsTxt,
|
|
1418
|
-
createFarmLlmsMarkdownReader,
|
|
1419
|
-
renderFarmLlmsFullTxt,
|
|
1420
|
-
createFarmLlmsFullRenderer,
|
|
1421
1137
|
resolveFarmAgentCrawlers,
|
|
1422
1138
|
createFarmAgentRobots,
|
|
1139
|
+
resolveFarmAgentSitemap,
|
|
1140
|
+
createFarmDefaultSitemap,
|
|
1423
1141
|
resolveFarmSecurityConfig,
|
|
1424
1142
|
getFarmSecurityHeader,
|
|
1425
1143
|
createFarmCspNonce,
|
|
@@ -9,7 +9,7 @@ var _chunk7W3CPVXScjs = require('./chunk-7W3CPVXS.cjs');
|
|
|
9
9
|
var _chunkAI7QMY7Ocjs = require('./chunk-AI7QMY7O.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkNICDYKBScjs = require('./chunk-NICDYKBS.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
@@ -20,12 +20,12 @@ function _setDefaultFarmThemeConfig(config, basePath = "/") {
|
|
|
20
20
|
defaultThemeConfig = _chunkOI6CMLWXcjs.resolveFarmThemeConfig.call(void 0, config, basePath);
|
|
21
21
|
}
|
|
22
22
|
_chunkS3JO3N4Hcjs.__name.call(void 0, _setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
|
|
23
|
-
function getTheme(request =
|
|
23
|
+
function getTheme(request = _chunkNICDYKBScjs.getCurrentRequestOrNull.call(void 0, )) {
|
|
24
24
|
if (!request) return defaultThemeConfig.default;
|
|
25
25
|
return readFarmThemePreference(request, defaultThemeConfig);
|
|
26
26
|
}
|
|
27
27
|
_chunkS3JO3N4Hcjs.__name.call(void 0, getTheme, "getTheme");
|
|
28
|
-
function getThemeSnapshot(request =
|
|
28
|
+
function getThemeSnapshot(request = _chunkNICDYKBScjs.getCurrentRequestOrNull.call(void 0, )) {
|
|
29
29
|
const theme = request ? readFarmThemePreference(request, defaultThemeConfig) : defaultThemeConfig.default;
|
|
30
30
|
return {
|
|
31
31
|
theme,
|
|
@@ -183,6 +183,25 @@ function matchPattern(pattern, pathname) {
|
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
_chunkS3JO3N4Hcjs.__name.call(void 0, matchPattern, "matchPattern");
|
|
186
|
+
function withRoutePathname(ctx, routePathname) {
|
|
187
|
+
return new Proxy(ctx, {
|
|
188
|
+
get(target, key) {
|
|
189
|
+
return key === "pathname" || key === "routePathname" ? routePathname : Reflect.get(target, key, target);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, withRoutePathname, "withRoutePathname");
|
|
194
|
+
function matchesMiddlewarePredicate(predicate, ctx, getRoutePathname = () => ctx.routePathname) {
|
|
195
|
+
if (predicate(ctx)) return true;
|
|
196
|
+
const routePathname = getRoutePathname();
|
|
197
|
+
if (routePathname === void 0 || routePathname === ctx.pathname) return false;
|
|
198
|
+
return Boolean(predicate(withRoutePathname(ctx, routePathname)));
|
|
199
|
+
}
|
|
200
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, matchesMiddlewarePredicate, "matchesMiddlewarePredicate");
|
|
201
|
+
function toMiddlewareRoutePathname(pathname, toRoutePathname = (value) => value) {
|
|
202
|
+
return _chunkUS2QVW3Ecjs.canonicalizeRequestPathname.call(void 0, toRoutePathname(pathname));
|
|
203
|
+
}
|
|
204
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, toMiddlewareRoutePathname, "toMiddlewareRoutePathname");
|
|
186
205
|
function matchesCompiledMiddlewareConfig(pathname, config, ctx) {
|
|
187
206
|
let canonicalPathname;
|
|
188
207
|
const getCanonicalPathname = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => _nullishCoalesce(canonicalPathname, () => ( (canonicalPathname = _chunkUS2QVW3Ecjs.canonicalizeRequestPathname.call(void 0, pathname)))), "getCanonicalPathname");
|
|
@@ -196,7 +215,7 @@ function matchesCompiledMiddlewareConfig(pathname, config, ctx) {
|
|
|
196
215
|
if (config.matcher) {
|
|
197
216
|
for (const matcher of config.matcher) {
|
|
198
217
|
if (typeof matcher === "function") {
|
|
199
|
-
if (matcher
|
|
218
|
+
if (matchesMiddlewarePredicate(matcher, ctx, getCanonicalPathname)) {
|
|
200
219
|
return { matched: true };
|
|
201
220
|
}
|
|
202
221
|
continue;
|
|
@@ -235,4 +254,6 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, matchesMiddlewareConfigAt, "matchesMiddlew
|
|
|
235
254
|
|
|
236
255
|
|
|
237
256
|
|
|
238
|
-
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
exports.compileMiddlewareRoute = compileMiddlewareRoute; exports.matchesMiddlewareRoute = matchesMiddlewareRoute; exports.matchesMiddlewareRouteAt = matchesMiddlewareRouteAt; exports.compileMiddlewareConfig = compileMiddlewareConfig; exports.matchesMiddlewarePredicate = matchesMiddlewarePredicate; exports.toMiddlewareRoutePathname = toMiddlewareRoutePathname; exports.matchesCompiledMiddlewareConfig = matchesCompiledMiddlewareConfig; exports.matchesMiddlewareConfig = matchesMiddlewareConfig; exports.matchesMiddlewareConfigAt = matchesMiddlewareConfigAt;
|