@triggery/core
Рантайм, на котором работают все биндинги Triggery. Framework-agnostic, без рантайм-зависимостей, запускается везде, где есть JavaScript (браузер, Node, Workers, React Native, edge).
Установка
Заголовок раздела «Установка»pnpm add @triggery/core npm install @triggery/core yarn add @triggery/core bun add @triggery/core Что внутри
Заголовок раздела «Что внутри»| Экспорт | Назначение |
|---|---|
createTrigger | Описать сценарий (события, условия, required, обработчик). |
createRuntime | Инстанцировать изолированный рантайм. |
getDefaultRuntime / setDefaultRuntime | Хелперы для глобального синглтона. |
createCheck | Собрать хелперы check.is/all/any для контекста обработчика. |
createInspector | Кастомный инспектор на кольцевом буфере. |
createScheduler | Собрать кастомный планировщик. |
| Все публичные типы | TriggerSchema, TriggerCtx, Middleware, ConcurrencyStrategy, … |
Быстрый пример
Заголовок раздела «Быстрый пример»Это рантайм в чистом виде. В реальном приложении ручной registerAction не нужен — биндинги делают это через useAction.
Почему «framework-agnostic»?
Заголовок раздела «Почему «framework-agnostic»?»Рантайм — обычный JavaScript-объект с реестром на Map. Он не импортирует React. Не импортирует виртуальный DOM. Запускается:
- В web-воркере или service-воркере.
- В Node.js-процессе — CLI, сервер, edge-функция.
- В React Native (DOM-адаптер рантайму не нужен).
- В ванильной HTML-странице без бандлера.
Одно и то же объявление createTrigger({ … }) без изменений работает во всех перечисленных средах. Биндинги (~50 строк каждый) связывают useEvent / useCondition / useAction с жизненным циклом хост-фреймворка.
Возможности
Заголовок раздела «Возможности»- Индексированный диспатч —
Map<eventKey, Trigger[]>, никаких полных сканов. required-гейт — обработчик пропускается (с записью в инспектор), пока не зарегистрированы все обязательные условия.- Стратегии конкурентности для асинхронных обработчиков:
take-latest(по умолчанию),take-every,take-first,queue,exhaust,sync. - Цепочки действий:
actions.debounce(ms).foo(p),actions.throttle,actions.defer,actions.queue. - Безопасность каскадов — лимит глубины и обнаружение циклов в цепочках
action → fireEvent. - Middleware —
onFire,onBeforeMatch,onSkip,onActionStart,onActionEnd,onError,onCascade. - Кольцевой буфер инспектора — встроен, по умолчанию автоматически отключается в PROD. Opt-in через
@triggery/core/inspectдля bundle-friendly factory pattern (v0.10+). - Last-write-wins для владения condition / action регистрациями с DEV warn-once.
- Чистый ESM, без side-effects, tree-shakable.
Размер ядра
Заголовок раздела «Размер ядра»~4.2 KB gzipped для main entry @triggery/core (v0.10, production-минификация). Если в бандле используется и subpath @triggery/core/builder (бандлер дедуплицирует общие хелперы), суммарная стоимость — ~3.8 KB gz. Каждый framework-биндинг добавляет сверху ~1 KB.