useInspectHistory
Стабильный · с 0.1.0
Возвращает limit свежих снепшотов инспектора из активного рантайма, новые — первыми. Хук подписывается на runtime.subscribe и ререндерит при записи каждого нового запуска — используй его для devtools-панелей внутри приложения, списков “последние 20 запусков” или любого UI, которому нужен живой лог событий.
Снепшоты включают все триггеры в рантайме — фильтра по конкретному триггеру нет. Чтобы сузить до одного триггера, фильтруй возвращаемый массив.
import { useInspectHistory } from '@triggery/react';
Сигнатура
Заголовок раздела «Сигнатура»function useInspectHistory(
limit?: number,
): readonly TriggerInspectSnapshot[];Параметры
Заголовок раздела «Параметры»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
limit | number | 20 | Максимальное число возвращаемых снепшотов. Ограничивается 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>
);
}Замечания
Заголовок раздела «Замечания»См. также
Заголовок раздела «См. также» useInspect Свежий снепшот для одного триггера (без подписки).
createInspector Реализация кольцевого буфера.
RuntimeOptions `inspector` и `inspectorBufferSize`.
@triggery/devtools-panel Готовая панель, использующая этот хук.