import { errors } from '@vinejs/vine' import type { ErrorReporterContract, FieldContext } from '@vinejs/vine/types' /** * Der VanillaErrorReporter sammelt Validierungsfehler im Standardformat, * damit die AdonisJS Session-Middleware sie korrekt verarbeiten (reducen) kann. */ export class VanillaErrorReporter implements ErrorReporterContract { /** * Boolean, um zu prüfen, ob Fehler vorliegen */ hasErrors: boolean = false /** * Sammlung der Fehler als Array (erforderlich für AdonisJS 6 Session) */ errors: any[] = [] /** * Diese Methode wird von VineJS für jeden Validierungsfehler aufgerufen */ report( message: string, rule: string, field: FieldContext, meta?: Record ): void { this.hasErrors = true /** * Wir pushen das Objekt in das Array. * Das Feld 'field' erhält den vollständigen Pfad (z.B. "user.email"). */ this.errors.push({ message, rule, field: field.getFieldPath(), ...meta, }); } /** * Erstellt die eigentliche Exception. * Da 'this.errors' nun ein Array ist, funktioniert .reduce() * in der Session-Middleware reibungslos. */ createError() { return new errors.E_VALIDATION_ERROR(this.errors); } }