@triggery/devtools-bridge
Page-side мост, делающий рантайм Triggery наблюдаемым для внешних инструментов — Chrome-расширения, будущей standalone веб-панели, кастомных инспекторов, всего, что умеет слушать window.postMessage. Framework-agnostic, без рантайм-зависимостей, возвращает no-op в Node / SSR.
Установка
Заголовок раздела «Установка»pnpm add @triggery/core @triggery/devtools-bridge npm install @triggery/core @triggery/devtools-bridge yarn add @triggery/core @triggery/devtools-bridge bun add @triggery/core @triggery/devtools-bridge Peer-зависимости: @triggery/core.
Что внутри
Заголовок раздела «Что внутри»| Экспорт | Назначение |
|---|---|
installDevtoolsBridge(runtime) | Подключает page-side мост к рантайму. Возвращает обратный вызов dispose(). |
Быстрый пример
Заголовок раздела «Быстрый пример»import { createRuntime } from '@triggery/core';
import { installDevtoolsBridge } from '@triggery/devtools-bridge';
const runtime = createRuntime();
if (import.meta.env.DEV) {
installDevtoolsBridge(runtime);
}И всё. Мост:
- Выставляет discovery-handle на
window.__triggery_devtools__, чтобы инструменты могли обнаружить рантайм. - Транслирует
postMessagetriggery:helloс текущимgraph()и буфером инспектора. - Подписывается на рантайм и шлёт
triggery:snapshotна каждый новый запуск. - По
dispose()удаляет discovery-handle и транслируетtriggery:bye.
В Node / SSR installDevtoolsBridge возвращает no-op-disposer.
Wire-формат
Заголовок раздела «Wire-формат»{ source: 'triggery-devtools', type: 'triggery:hello', runtimeId, graph, buffer, at }
{ source: 'triggery-devtools', type: 'triggery:snapshot', runtimeId, snapshot, at }
{ source: 'triggery-devtools', type: 'triggery:bye', runtimeId, at }Связанные пакеты
Заголовок раздела «Связанные пакеты» @triggery/core Рантайм, к которому подключается мост.
@triggery/devtools-panel React-компоненты in-app инспектора.
@triggery/devtools-redux Стримит события рантайма в расширение Redux DevTools.