---
title: "Référence d'API — @nodefony/security — audit"
source: docs/api/security/audit.md
url: https://nodefony.github.io/nodefony-core/docs/api/security/audit/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/security`](../) › audit

> Générée depuis les déclarations de types publiées de `@nodefony/security` **10.0.0-beta.5** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/security`

`import { … } from "@nodefony/security"` — 10 symboles.

### Classes (1)

#### `MemoryAuditStore`

```ts
class MemoryAuditStore implements IAuditStore
```

Journal d'audit **en mémoire** — implémentation de référence d'`IAuditStore`.

- `constructor(now?: () => number, retentionMs?: number, maxEntries?: number)`
- `append(event: IAuditEvent): Promise<void>` — Ajoute un événement (immuable, jamais modifié ensuite).
- `listPage(query: IAuditListQuery): Promise<IPage<IAuditEvent>>` — Lit **une page** d'événements filtrés, du plus récent au plus ancien — l'implémentation ne matérialise jamais plus que `limit` événements.
- `gc(now?: number): Promise<number>` — Purge les événements au-delà de la fenêtre de rétention.
- `get size(): number` — Nombre d'événements actuellement retenus (introspection / tests).
- `snapshot(): AuditStoreSnapshot` — Instantané sérialisable de l'état courant.
- `restore(snapshot: AuditStoreSnapshot): void` — Remplace l'état par celui d'un instantané.

### Fonctions (5)

#### `getAuditStoreFactory`

```ts
function getAuditStoreFactory(name: string): AuditStoreFactory
```

Fabrique d'un store par nom, ou `undefined` si inconnu.

#### `listAuditStores`

```ts
function listAuditStores(): string[]
```

Noms enregistrés (validation boot, introspection Studio, tests).

#### `readAuditContext`

```ts
function readAuditContext(context: unknown): AuditContextInfo
```

Extrait IP / User-Agent / requestId + drapeaux de présence (jamais la valeur) d'un contexte de requête — pour enrichir un événement d'audit avec la provenance (« d'où vient cette tentative »). Calque `JsonAuditLogger`.

#### `recordAudit`

```ts
function recordAudit(container: Container | null, event: IAuditEventDraft): void
```

Émet un événement d'audit **si** le service est présent — no-op sinon. La résolution se fait par le container (`auditService`) sur le **cold-path** (login, refus, révocation) : le coût d'un `Map.get` y est négligeable, et le journal reste **découplé** (module audit absent ou désactivé → aucun effet, jamais d'exception qui remonterait dans le flux métier).

#### `registerAuditStore`

```ts
function registerAuditStore(name: string, factory: AuditStoreFactory): void
```

Enregistre (ou remplace) la fabrique d'un store d'audit. Appelée par le builtin `memory` au chargement, et par les adapters (drizzle/mongoose/redis) pour les leurs.

### Interfaces (3)

#### `AuditContextInfo`

```ts
interface AuditContextInfo
```

Métadonnées de provenance extraites d'un contexte, prêtes à enrichir un événement.

- `ip: string | null`
- `userAgent: string | null`
- `requestId: string | null`
- `flags: IAuditEventFlags`

#### `AuditStoreSnapshot`

```ts
interface AuditStoreSnapshot
```

Instantané sérialisable du journal mémoire (persistance fichier + tests).

- `events: IAuditEvent[]`

#### `IAuditStoreFactoryContext`

```ts
interface IAuditStoreFactoryContext
```

Contexte passé à une fabrique de store d'audit : de quoi se construire (résolutions coûteuses en lazy à l'intérieur de l'instance).

- `readonly container: Container` — Container DI — résolution de services (ORM, redis...).
- `readonly config: ISecurityConfig` — Config sécurité validée + gelée.

### Types (1)

#### `AuditStoreFactory`

```ts
type AuditStoreFactory = (ctx: IAuditStoreFactoryContext) => IAuditStore
```

Fabrique d'un store d'audit pour un nom donné.

---

[← Toutes les références d'API](../../)
