Dry Run

Testet Create-Operationen in Payload CMS komplett durch, bricht nach Validierung und Hooks die Datenbanktransaktion ab.

Community 0 2/Wo. MIT v1.0.1

Installation

pnpm add @lizardglobal/payload-dry-run

Über

Das Plugin durchläuft bei einer Create-Operation die gesamte Pipeline inklusive Validierung, Hooks und Access Control, schreibt das Dokument aber nicht in die Datenbank. Alles, was eine Anfrage ablehnen oder transformieren würde, wird wie bei einem echten Schreibvorgang ausgefuehrt. Nur der finale Commit wird rueckgaengig gemacht, und zwar ueber `req.payload.db.rollbackTransaction(req.transactionID)` in einem afterOperation-Hook. Aktiviert wird das Plugin pro Collection mit `dryRunCreatePlugin({ collections: ['users', 'orders'] })`. Ein Dry Run wird ausgeloest, indem ein Truthy-Wert fuer den Standard-Flag `_dryRun` ueber Query String, Request Body, Search Params oder `req.context` uebergeben wird. Als truthy gelten `true`, `1`, `on` und `yes` ohne Beruecksichtigung der Gross- und Kleinschreibung. Der Flag wird zurueck in `req.context` geschrieben, sodass nachfolgende Hooks ihn abfragen koennen. Die Option `dryRunFieldName` akzeptiert einen einzelnen String, ein Mapping pro Collection oder ein Objekt mit einem `_default`-Fallback. Bei Auth-Collections mit E-Mail-Verifizierung setzt ein beforeOperation-Hook `disableVerificationEmail: true`, damit waehrend eines Dry Runs keine Verifizierungs-E-Mail verschickt wird. Mit `disabled` kann das Plugin komplett deaktiviert werden, was sich fuere umgebungsspezifische Deaktivierung in Produktion eignet. Fuer die manuelle Komposition von Collection-Konfigurationen gibt es den Helper `withCreateDryRun(collection, fieldName?)`. Er wendet das Dry-Run-Verhalten auf eine einzelne `CollectionConfig` an, ohne das Plugin zu verwenden, und ist idempotent. Ist ein Rollback noetig, aber keine `transactionID` vorhanden, wirft das Plugin einen Fehler, anstatt das Dokument stillschweigend zu committen. Das Plugin ist experimentell, APIs und Schema koennen sich noch aendern. Payload muss in Version 3.0.0 oder hoeher installiert sein, Node in Version 20 oder hoeher.

Paketinformationen

Paketname
@lizardglobal/payload-dry-run
Neueste Version
1.0.1
Entpackte Größe
35 kB
Lizenz
MIT
Wöchentliche Downloads
2
Zuletzt veröffentlicht
28. Juli 2026

Mehr von LizardGlobalGH

Profil ansehen

Ähnliche Plugins

Mehr in Devtools