ShyyTAUI/src/routes/api/docs/[slug]/+server.ts
2025-10-18 18:31:15 +02:00

37 lines
No EOL
1.2 KiB
TypeScript

import { error } from '@sveltejs/kit';
// Import all markdown files at build time
const docs = import.meta.glob('$lib/taDocs/*.md', {
as: 'raw',
eager: true
});
export async function GET({ params }: { params: { slug: string } }) {
const { slug } = params;
// Validate filename to prevent directory traversal attacks
if (!slug || slug.includes('..') || slug.includes('/') || !slug.endsWith('.md')) {
throw error(400, 'Invalid documentation file requested');
}
// Create the import path that matches our glob pattern
const importPath = `/src/lib/taDocs/${slug}`;
// Find the matching document
const content = docs[importPath];
if (!content) {
console.error(`Documentation file not found: ${slug}`);
// List available files for debugging
console.error('Available files:', Object.keys(docs));
throw error(404, 'Documentation file not found');
}
return new Response(content, {
headers: {
'Content-Type': 'text/markdown; charset=utf-8',
'Cache-Control': 'max-age=600', // Cache for 10 minutes
'Access-Control-Allow-Origin': '*' // Add CORS
}
});
}