Files
Epicnabbo-Catalogus-Updated…/src/app/api/settings/route.ts
T
openhands dc8fb8a6ed feat: speed up admin clone import and enable Cache Components
- Clone import: defer FurnitureData.json writes and append all entries in a
  single batched write instead of one read-modify-write per item, removing
  the main serialization bottleneck for large batches.
- Clone import: raise SSE batch concurrency cap from 5 to 10 and bump the
  clone client/route default from 2 to 6.
- Add a flush hook to runSseBatch so callers can batch deferred work before
  batch_complete is emitted, and surface flush errors as an error event.
- Enable Next.js Cache Components (instant: false opt-out) and silence the
  related build warnings in next.config.ts.
- Switch isomorphic-dompurify to dompurify and refresh dependencies.
2026-08-05 11:10:16 +02:00

28 lines
924 B
TypeScript

import { apiJson } from "@/lib/api";
import { siteSettings } from "@/lib/services/site-settings";
// Public website settings as a flat { key: value } map. Secrets are stripped so
// this can be served to the game client / external integrations.
// Any key containing one of these tokens is considered sensitive and never
// exposed through the public API (mirrors AtomCMS's public settings filtering).
const SENSITIVE = ["secret", "api_key", "password", "token", "webhook"];
function isSensitive(key: string): boolean {
const k = key.toLowerCase();
return SENSITIVE.some((needle) => k.includes(needle));
}
export async function GET(_req: Request) {
try {
const map = await siteSettings.getAll();
const settings: Record<string, string> = {};
for (const [key, value] of map) {
if (!isSensitive(key)) settings[key] = value;
}
return apiJson(settings);
} catch {
return apiJson({}, { status: 200 });
}
}