42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import type { APIRoute } from "astro";
|
||
import * as fs from "node:fs/promises";
|
||
import * as path from "node:path";
|
||
|
||
export const prerender = true;
|
||
|
||
async function exists(p: string) {
|
||
try { await fs.access(p); return true; } catch { return false; }
|
||
}
|
||
|
||
export const GET: APIRoute = async () => {
|
||
const distFile = path.join(process.cwd(), "dist", "para-index.json");
|
||
|
||
// Si dist existe (ex: après un build), on renvoie le vrai fichier.
|
||
if (await exists(distFile)) {
|
||
const raw = await fs.readFile(distFile, "utf8");
|
||
return new Response(raw, {
|
||
status: 200,
|
||
headers: {
|
||
"content-type": "application/json; charset=utf-8",
|
||
"cache-control": "no-store",
|
||
},
|
||
});
|
||
}
|
||
|
||
// Sinon stub (dev sans build) : pas d’erreur, pas de crash, pas de 404.
|
||
const stub = {
|
||
schema: 1,
|
||
generatedAt: new Date().toISOString(),
|
||
items: [],
|
||
byId: {},
|
||
note: "para-index not built yet (run: npm run build to generate dist/para-index.json)",
|
||
};
|
||
|
||
return new Response(JSON.stringify(stub), {
|
||
status: 200,
|
||
headers: {
|
||
"content-type": "application/json; charset=utf-8",
|
||
"cache-control": "no-store",
|
||
},
|
||
});
|
||
}; |