bible api: use SvelteKit static file handling instead of fs
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				CI / update (push) Failing after 5s
				
			
		
		
	
	
				
					
				
			
		
			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:
		@@ -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({
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user