bible api: use SvelteKit static file handling instead of fs
Some checks failed
CI / update (push) Failing after 5s

Replace filesystem access with fetch request to leverage SvelteKit's
built-in static file serving for the allioli.tsv bible data.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-12 22:54:25 +02:00
parent a22471a943
commit 7ffb9c0b86

View File

@@ -1,7 +1,5 @@
import { json, error } from '@sveltejs/kit'; import { json, error } from '@sveltejs/kit';
import type { RequestHandler } from './$types'; import type { RequestHandler } from './$types';
import fs from 'fs';
import path from 'path';
interface BibleVerse { interface BibleVerse {
bookName: string; bookName: string;
@@ -15,14 +13,17 @@ interface BibleVerse {
// Cache for parsed verses to avoid reading file repeatedly // Cache for parsed verses to avoid reading file repeatedly
let cachedVerses: BibleVerse[] | null = null; let cachedVerses: BibleVerse[] | null = null;
function loadVerses(): BibleVerse[] { async function loadVerses(): Promise<BibleVerse[]> {
if (cachedVerses) { if (cachedVerses) {
return cachedVerses; return cachedVerses;
} }
try { try {
const filePath = path.join(process.cwd(), 'static', 'allioli.tsv'); const response = await fetch('/allioli.tsv');
const content = fs.readFileSync(filePath, 'utf-8'); if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const content = await response.text();
const lines = content.trim().split('\n'); const lines = content.trim().split('\n');
cachedVerses = lines.map(line => { cachedVerses = lines.map(line => {
@@ -55,7 +56,7 @@ function formatVerse(verse: BibleVerse): string {
export const GET: RequestHandler = async () => { export const GET: RequestHandler = async () => {
try { try {
const verses = loadVerses(); const verses = await loadVerses();
const randomVerse = getRandomVerse(verses); const randomVerse = getRandomVerse(verses);
return json({ return json({