aboutsummaryrefslogtreecommitdiff
path: root/website/scripts/patch-starlight-llms.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'website/scripts/patch-starlight-llms.mjs')
-rw-r--r--website/scripts/patch-starlight-llms.mjs68
1 files changed, 49 insertions, 19 deletions
diff --git a/website/scripts/patch-starlight-llms.mjs b/website/scripts/patch-starlight-llms.mjs
index 16d3ba9b..3582b6f6 100644
--- a/website/scripts/patch-starlight-llms.mjs
+++ b/website/scripts/patch-starlight-llms.mjs
@@ -1,24 +1,54 @@
import { readFile, writeFile } from 'node:fs/promises';
import { resolve } from 'node:path';
-const path = resolve('node_modules/starlight-llms-txt/llms-full.txt.ts');
-const original = await readFile(path, 'utf8');
-const importLine = "import { starlightLllmsTxtContext } from 'virtual:starlight-llms-txt/context';";
-const excludeLine = '\t\texclude: starlightLllmsTxtContext.exclude,';
-
-if (original.includes(importLine) && original.includes(excludeLine)) process.exit(0);
-
-const withImport = original.replace(
- "import { generateLlmsTxt } from './generator';",
- `${importLine}\nimport { generateLlmsTxt } from './generator';`,
-);
-const patched = withImport.replace(
- '\t\tdescription: `This is the full developer documentation for ${getSiteTitle()}`,',
- '\t\tdescription: `This is the full developer documentation for ${getSiteTitle()}`,\n' + excludeLine,
-);
-
-if (patched === original || !patched.includes(importLine) || !patched.includes(excludeLine)) {
- throw new Error('starlight-llms-txt changed: update the stable-only llms-full compatibility patch');
+await patchFullBundleExclusions();
+await disablePluginIndexRoute();
+
+async function patchFullBundleExclusions() {
+ const path = resolve('node_modules/starlight-llms-txt/llms-full.txt.ts');
+ const original = await readFile(path, 'utf8');
+ const importLine =
+ "import { starlightLllmsTxtContext } from 'virtual:starlight-llms-txt/context';";
+ const excludeLine = '\t\texclude: starlightLllmsTxtContext.exclude,';
+
+ if (original.includes(importLine) && original.includes(excludeLine)) return;
+
+ const withImport = original.replace(
+ "import { generateLlmsTxt } from './generator';",
+ `${importLine}\nimport { generateLlmsTxt } from './generator';`,
+ );
+ const patched = withImport.replace(
+ '\t\tdescription: `This is the full developer documentation for ${getSiteTitle()}`,',
+ '\t\tdescription: `This is the full developer documentation for ${getSiteTitle()}`,\n' +
+ excludeLine,
+ );
+
+ if (patched === original || !patched.includes(importLine) || !patched.includes(excludeLine)) {
+ throw new Error(
+ 'starlight-llms-txt changed: update the stable-only llms-full compatibility patch',
+ );
+ }
+
+ await writeFile(path, patched, 'utf8');
}
-await writeFile(path, patched, 'utf8');
+async function disablePluginIndexRoute() {
+ const path = resolve('node_modules/starlight-llms-txt/index.ts');
+ const original = await readFile(path, 'utf8');
+ const marker =
+ '\t\t\t\t\t\t\t// Herdr publishes channel-aware raw-source indexes from website/public.';
+ if (original.includes(marker)) return;
+
+ const route = `\t\t\t\t\t\t\tinjectRoute({
+\t\t\t\t\t\t\t\tentrypoint: new URL('./llms.txt.ts', import.meta.url),
+\t\t\t\t\t\t\t\tpattern: '/llms.txt',
+\t\t\t\t\t\t\t});`;
+ const patched = original.replace(route, marker);
+ if (patched === original || !patched.includes(marker)) {
+ throw new Error(
+ 'starlight-llms-txt changed: update the custom llms.txt index compatibility patch',
+ );
+ }
+
+ await writeFile(path, patched, 'utf8');
+}