Dry Run

Плагин для Payload CMS: проверяет операцию create с полным циклом валидации, хуков и доступа, затем откатывает транзакцию.

Сообщество 0 2/нед MIT v1.0.1

Установка

pnpm add @lizardglobal/payload-dry-run

Описание

Плагин выполняет операцию create коллекции Payload от начала до конца: валидация, хуки, проверка прав доступа. После этого запись не сохраняется, а транзакция откатывается вызовом `req.payload.db.rollbackTransaction(req.transactionID)` в хуке `afterOperation`. Весь конвейер отрабатывает так же, как при реальном создании документа: срабатывают все проверки и преобразования, отменяется только финальная запись в базу. Подключение выполняется для отдельных коллекций через `dryRunCreatePlugin({ collections: ['slug', ...] })`. Режим dry run включается правдивым флагом (по умолчанию `_dryRun`), который читается из query string, тела запроса, search params или `req.context`. Правдивые значения: `true`, `1`, `on`, `yes` (без учета регистра). Флаг также записывается обратно в `req.context`, поэтому последующие хуки могут его проверить. Опция `dryRunFieldName` принимает одну строку, объект с ключами коллекций или объект с запасным вариантом `_default`. Для auth-коллекций с подтверждением по email хук `beforeOperation` выставляет `disableVerificationEmail: true`, чтобы dry run не отправлял письмо. Параметр `disabled` полностью отключает плагин, что удобно для production-окружения. Функция `withCreateDryRun(collection, fieldName?)` применяет то же поведение к одной `CollectionConfig` без использования плагина, если вы собираете конфиг коллекции вручную. Функция идемпотентна. Если откат нужен, но `transactionID` отсутствует, плагин выбросит ошибку, а не оставит сохраненный документ. Для каждой коллекции добавляется скрытое виртуальное поле-чекбокс только для чтения, чтобы Payload распознавал ключ триггера. Проект экспериментальный: API и схема могут меняться. Требуется Payload ^3.0.0 и Node >=20.

О пакете

Имя пакета
@lizardglobal/payload-dry-run
Последняя версия
1.0.1
Размер
35 кБ
Лицензия
MIT
Загрузок в неделю
2
Последняя публикация
28 июл. 2026 г.

Ещё от LizardGlobalGH

Профиль автора