37 lines
No EOL
1.2 KiB
TypeScript
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
|
|
}
|
|
});
|
|
} |