TriggerCtx
Единственный аргумент, который получает каждый обработчик триггера. В нём упакованы матчившееся событие, снепшот условий, прокси действий, DSL check, метаданные рантайма и AbortSignal. Форма полностью выводится из TriggerSchema триггера — деструктурируй только нужные поля.
Определение
Заголовок раздела «Определение»S — схема триггера; R — union ключей обязательных условий (required: [...] в конфиге).
event — EventOf<S>
Заголовок раздела «event — EventOf<S>»Дискриминированный union по S['events']. У каждого варианта { readonly name: K; readonly payload: EventMap<S>[K] }. Сужай через event.name.
conditions — ConditionsCtx<ConditionMap<S>, R>
Заголовок раздела «conditions — ConditionsCtx<ConditionMap<S>, R>»Снепшот всех условий, снимается один раз в момент срабатывания. Ключи, перечисленные в required, видны как необязательные нет — без undefined; остальные — T | undefined.
Ограничение V1: required не сужает в системе типов — conditions.user остаётся User | undefined, даже если required: ['user']. Используй check.is/all/any или ранний guard if (!conditions.user) return;.
actions — ActionsCtx<ActionMap<S>>
Заголовок раздела «actions — ActionsCtx<ActionMap<S>>»Мапа { [name]?: (payload) => void } плюс три цепочечных таймера:
| Метод | Возвращает | Описание |
|---|---|---|
actions.<name>?.(payload) | void | Вызвать действие, если оно зарегистрировано. Optional chain, потому что реактор мог быть не смонтирован. |
actions.debounce(ms) | та же форма | Ждать ms тишины перед срабатыванием. |
actions.throttle(ms) | та же форма | Не более одного срабатывания за окно ms. |
actions.defer(ms) | та же форма | Ждать ms перед срабатыванием — без coalescing. |
check — CheckCtx<ConditionMap<S>>
Заголовок раздела «check — CheckCtx<ConditionMap<S>>»DSL предикатов. См. createCheck. is, all и any сужают значение через NonNullable внутри предиката.
meta — MetaCtx
Заголовок раздела «meta — MetaCtx»Метаданные рантайма о текущем запуске:
| Поле | Тип | Описание |
|---|---|---|
runId | string | Уникальный id запуска. |
triggerId | string | Триггер, который сейчас запущен. |
scheduledAt | number | performance.now() в момент постановки запуска в очередь. |
cascadeDepth | number | 0 для срабатываний верхнего уровня; n для n-го потомка каскада. |
parentRunId? | string | Установлен, если запуск — часть каскада. |
parentTriggerId? | string | То же — id upstream-триггера. |
signal — AbortSignal
Заголовок раздела «signal — AbortSignal»Прерывается, когда рантайм отменяет текущий запуск — например, стратегия concurrency take-latest его вытесняет, триггер отключён или утилизирован, либо разрушается сам рантайм. Передавай его в fetch(url, { signal }), addEventListener('…', fn, { signal }) или проверяй signal.aborted после любых async-ожиданий.