Files
Harlekin e0b03ea336
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Gedankenstriche durch Bindestriche ersetzt
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die
README; an keiner Stelle Bedeutung, nur Zeichensetzung.
2026-09-04 08:54:52 +02:00

31 lines
949 B
TypeScript

/**
* Fehler, die bis in die Oberfläche durchgereicht werden.
*
* `code` ist ein Schlüssel in `de.actionErrors`, kein Text: die Meldung wird
* erst am Rand übersetzt. Ein Fehler, den der Nutzer nicht sehen darf, kommt
* gar nicht erst hier an - fehlender Zugriff endet in 404, nicht in 403.
*/
export class AccessError extends Error {
constructor(readonly code: string) {
super(code)
this.name = 'AccessError'
}
}
/**
* Kein stilles Überschreiben: die fremde Fassung kommt mit zurück, damit der
* Nutzer beide sieht und entscheidet. Siehe docs/05-akten-und-vorlagen.md.
*/
export class ConflictError extends Error {
constructor(
readonly current: { value: unknown; version: number; updatedById: string | null },
) {
super('conflict')
this.name = 'ConflictError'
}
}
export function must(check: { ok: boolean; reason?: string }): void {
if (!check.ok) throw new AccessError(check.reason ?? 'denied')
}