import { WIDGET_MODULE_SLUGS } from '@tessera/shared'; /** * Zuordnung Widget-Typ → Modul (D-22, PERM-07). * * Zweck: Widgets eines für den Benutzer gesperrten Moduls verschwinden * serverseitig aus GET /dashboard/widgets — DashboardService.getWidgets * filtert darüber. * * Schlüssel sind Werte von `WidgetInstance.widgetType`, Werte sind * Modul-Slugs aus `Module.slug`. * * quick-260922-m1h: Die Tabelle selbst steht seit diesem Umbau in * `packages/shared/src/index.ts` als `WIDGET_MODULE_SLUGS` — EINE Tabelle * für beide Seiten, damit der Katalogfilter im Web * (`visibleWidgetTypes`, Komfort) und dieser Server-Filter (verbindlich) * nicht auseinanderlaufen. Hier steht nur noch der Lesezugriff; die * öffentliche Schnittstelle dieser Datei bleibt unverändert, weil * dashboard.service.spec.ts sie gezielt mockt. * * Bewusst eine TypeScript-Konstante statt einer Spalte auf * `WidgetInstance`: eine Migration auf einer bereits befüllten Tabelle * für ein Feld, das derzeit für jede Zeile leer wäre, wiegt schwerer als * diese Konstante mit identischer Aussagekraft (15-RESEARCH.md Pitfall 5). * * Seit quick-261002-k67 stehen dort zwei Einträge: `proxmox` → `proxmox` * (quick-260924-i8v) und `nextcloud-status` → `nextcloud-status`. Die * übrigen Widget-Typen (clock/search/calendar/note/calculator/favorites/ * stopwatch/picture-frame/xframe/reminder) sind Plattform-Widgets ohne * Modulbezug. */ export const WIDGET_MODULE_MAP: Readonly> = WIDGET_MODULE_SLUGS; /** * Liefert den Modul-Slug für einen Widget-Typ, oder `undefined`, wenn * der Typ kein Modul-Widget ist (alle Typen außer `proxmox` und `nextcloud-status`). Einziger Lesezugriff auf die Zuordnungstabelle, * damit Tests sie gezielt mocken können. */ export function getModuleSlugForWidgetType(widgetType: string): string | undefined { return WIDGET_MODULE_MAP[widgetType]; }