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

useInspectHistory

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

Возвращает limit свежих снепшотов инспектора из активного рантайма, новые — первыми. Хук подписывается на runtime.subscribe и ререндерит при записи каждого нового запуска — используй его для devtools-панелей внутри приложения, списков “последние 20 запусков” или любого UI, которому нужен живой лог событий.

Снепшоты включают все триггеры в рантайме — фильтра по конкретному триггеру нет. Чтобы сузить до одного триггера, фильтруй возвращаемый массив.

import { useInspectHistory } from '@triggery/react';
function useInspectHistory(
  limit?: number,
): readonly TriggerInspectSnapshot[];
ПараметрТипПо умолчаниюОписание
limitnumber20Максимальное число возвращаемых снепшотов. Ограничивается inspectorBufferSize рантайма.

readonly TriggerInspectSnapshot[], новые — первыми. Пустой, если инспектор выключен или запусков ещё не было.

import { useInspectHistory } from '@triggery/react';

function RecentRuns() {
  const history = useInspectHistory(50);
  return (
    <ul>
      {history.map(s => (
        <li key={s.runId}>
          <code>{s.triggerId}</code> · {s.status} · {s.durationMs.toFixed(1)}ms
        </li>
      ))}
    </ul>
  );
}
import { useInspectHistory } from '@triggery/react';

function MessageRuns() {
  const history = useInspectHistory(100);
  const ours = history.filter(s => s.triggerId === 'chat:new-message');
  return <pre>{JSON.stringify(ours.slice(0, 10), null, 2)}</pre>;
}
import { useInspectHistory } from '@triggery/react';

function Errors() {
  const history = useInspectHistory(200);
  const errors = history.filter(s => s.status === 'errored');
  if (errors.length === 0) return <span>clean</span>;
  return (
    <ul>
      {errors.map(s => (
        <li key={s.runId}>
          <strong>{s.triggerId}</strong>: {s.reason}
        </li>
      ))}
    </ul>
  );
}
import { useInspectHistory } from '@triggery/react';
import { useMemo } from 'react';

function StatusBar() {
  const history = useInspectHistory(500);
  const counts = useMemo(() => {
    const out = { fired: 0, skipped: 0, errored: 0, aborted: 0 };
    for (const s of history) out[s.status] += 1;
    return out;
  }, [history]);
  return (
    <div>
      {counts.fired}/{counts.skipped}/{counts.errored}/{counts.aborted}
    </div>
  );
}