Перейти к содержимому
GitHubXDiscord

useInspect

Стабильный · с 0.1.0

Возвращает самый свежий TriggerInspectSnapshot для одного триггера или undefined, если триггер ещё ни разу не запускался. Полезно для инлайн-оверлеев отладки, штампов “last run at” или быстрых проверок “выстрелил ли он вообще” в dev-панелях.

useInspect не подписывается на новые запуски — он читает свежий снепшот на каждом рендере и возвращает его как есть. Парься с useInspectHistory для живого фида свежих запусков.

import { useInspect } from '@triggery/react';
function useInspect<S extends TriggerSchema>(
  trigger: Trigger<S>,
): TriggerInspectSnapshot | undefined;
ПараметрТипОписание
triggerTrigger<S>Триггер, возвращённый из createTrigger.

Свежий TriggerInspectSnapshot или undefined, если триггер ещё не запускался (либо в рантайме отключён инспектор).

Поле снепшотаТипОписание
triggerIdstringСовпадает с trigger.id.
runIdstringУникальный id на запуск.
eventNamestringСобытие, которое сматчилось.
status'fired' | 'skipped' | 'errored' | 'aborted'Исход запуска.
reason?stringУстановлено, когда status'skipped', 'errored' или 'aborted'.
durationMsnumberWall-time обработчика.
executedActionsreadonly string[]Имена действий, вызванных в ходе запуска.
snapshotKeysreadonly string[]Ключи условий, прочитанные обработчиком.
import { useInspect } from '@triggery/react';
import { messageTrigger } from './triggers/message.trigger';

function DebugBadge() {
  const snap = useInspect(messageTrigger);
  if (!snap) return null;
  return (
    <span style={{ color: snap.status === 'fired' ? 'green' : 'orange' }}>
      {snap.status} ({snap.durationMs.toFixed(1)}ms)
    </span>
  );
}

Быстрая проверка “выстрелил ли он” в dev-инструментах

Заголовок раздела «Быстрая проверка “выстрелил ли он” в dev-инструментах»
import { useInspect } from '@triggery/react';
import { fetchUserTrigger } from './triggers/fetch-user.trigger';

function FetchUserDebug() {
  const snap = useInspect(fetchUserTrigger);
  return (
    <pre>
      {snap
        ? JSON.stringify(
            { id: snap.runId, status: snap.status, actions: snap.executedActions },
            null,
            2,
          )
        : '(no runs yet)'}
    </pre>
  );
}
import { useInspect } from '@triggery/react';
import { syncTrigger } from './triggers/sync.trigger';

function LastSync() {
  const snap = useInspect(syncTrigger);
  if (!snap || snap.status !== 'fired') return <span>never</span>;
  return <span>last sync: {snap.runId}</span>;
}