Files
triggershell/src/lib/docs.ts
T
valknarandClaude Sonnet 5 c6337ea942 Run prettier across the repo, exclude the lockfile from it
Prettier had never been run in --check mode here before, so this had
drifted across most files (markdown tables, long option() chains,
line wrapping). Purely formatting, no logic changes - needed so a CI
format:check gate can actually pass. Adds .prettierignore for
pnpm-lock.yaml specifically: prettier's YAML formatter rewrites every
quoted key (single -> double quotes) producing an ~8700-line diff of
pure noise on a file pnpm itself owns the formatting of.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 13:55:25 +02:00

49 lines
1.5 KiB
TypeScript

import fs from "node:fs";
import path from "node:path";
export interface DocMeta {
slug: string;
title: string;
description: string;
file: string;
}
export const DOCS: DocMeta[] = [
{
slug: "api",
title: "API Reference",
description:
"REST and WebSocket endpoints, auth, and request/response shapes.",
file: "API.md",
},
{
slug: "config",
title: "Config Reference",
description:
"Every field in triggershell.yml: server, auth, scripts, and variables.",
file: "CONFIG_REFERENCE.md",
},
];
export function getDocMeta(slug: string): DocMeta | undefined {
return DOCS.find((doc) => doc.slug === slug);
}
// Resolved from TRIGGERSHELL_APP_ROOT (set once in server.ts), not `process.cwd()` or
// `import.meta.dirname` - this file is read from a Route Handler compiled through Next's own
// module graph, which is a separate module instantiation from server.ts and doesn't preserve
// source-relative `import.meta` paths (see the `globalThis` comment in `runner/events.ts`).
// Falls back to a source-relative resolution for contexts where server.ts never ran (e.g. tests).
function docsDir(): string {
const appRoot =
process.env.TRIGGERSHELL_APP_ROOT ??
path.resolve(import.meta.dirname, "..", "..");
return path.resolve(appRoot, "docs");
}
export function readDocContent(doc: DocMeta): string | null {
const filePath = path.join(docsDir(), doc.file);
if (!fs.existsSync(/*turbopackIgnore: true*/ filePath)) return null;
return fs.readFileSync(/*turbopackIgnore: true*/ filePath, "utf-8");
}