TypeScript 50.6%
JavaScript 46.1%
SQL 2.1%
Shell 0.6%
CSS 0.5%
1import { db } from "@/db/client";2import { auditEvents } from "@/db/schema";3/** Journal append-only ; métadonnées minimisées (jamais de code OTP, de jeton, d'adresse en clair). */4export async function audit(action: string, opts: { actorId?: string | null; objectType?: string; objectId?: string; ipHash?: string; meta?: Record<string, unknown> } = {}) {5 try { await db().insert(auditEvents).values({ action, actorId: opts.actorId ?? null, objectType: opts.objectType ?? null, objectId: opts.objectId ?? null, ipHash: opts.ipHash ?? null, metadataRedacted: opts.meta ?? {} }); }6 catch (e) { console.error("[audit]", action, (e as Error).message); }7}8