import { readFileSync } from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' import { Router } from 'express' /** * Oeffentliche Standalone-Seiten des Webshops (Plan 2026-10-05-webshop.md, H2; Spec 5.4): * GET /shop/:siteKey Shop mit dem Widget public/embed/shop.js * GET /shop/:siteKey/widerruf dieselbe Seite, das Widget oeffnet gleich die Widerrufsfunktion * Die Seite verraet nicht, ob der Schluessel existiert oder der Shop aktiv ist: jeder syntaktisch gueltige Schluessel * bekommt dieselbe Seite, ob der Shop laeuft entscheidet das Widget ueber die oeffentliche Schnittstelle. Alles andere ist 404. */ const SITE_KEY_RE = /^[a-z2-7]{16}$/ const DATEI = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'public', 'shop-seite.html') const CSP = [ "default-src 'self'", "img-src 'self' data:", "script-src 'self'", "style-src 'self' 'unsafe-inline'", // das Widget legt ein