Skip to content

Плагины

Плагины Query Layer — дополнительные entry points. Они не нужны для обычного HTTP-запроса и не включаются автоматически.

ts
import { persistQueryRuntime } from "@dubium/query-layer/persist"
import { setupBroadcastSync } from "@dubium/query-layer/sync"
import { OfflineMutationQueue } from "@dubium/query-layer/offline"

Основной пакет продолжает работать без этих импортов.

Три разные задачи

ПлагинЧто сохраняет/передаётКогда нужен
PersistenceУспешный query cache между reloadПосле перезагрузки можно показать разрешённые cached data
Cross-tab syncСобытия query между открытыми вкладкамиИзменение в одной вкладке должно обновить другую
Offline queueКоманды mutation до восстановления сетиПользователь должен продолжить действие offline

Это не взаимозаменяемые механизмы.

Что плагины не делают

  • не создают API-функции;
  • не разрешают UI вызывать Axios напрямую;
  • не заменяют MobX stores;
  • не определяют, какие данные безопасны;
  • не шифруют localStorage;
  • не гарантируют idempotency backend;
  • не загружают Module Federation remote.

Общая предпосылка

Плагины работают с root QueryRuntime:

ts
const runtime = createQueryRuntime({
  mode: "application",
  identity: {
    applicationId: "portal",
    version: "1.0.0",
  },
})

Контроллеры создаются на composition root приложения, а не внутри React компонента и не внутри каждой feature.

Opt-in вместо «сохранить всё»

Query помечается metadata:

ts
meta: {
  persist: true,
  broadcast: true,
}

Затем host policy решает, разрешён ли key. Метка — запрос feature, а не безусловное разрешение.

Ownership

РесурсКто создаётКто освобождает
Persistence controllerapplication bootstrap/hostapplication shutdown/logout
Broadcast sync controllerapplication bootstrap/hostapplication shutdown/logout
Offline queueapplication data layerснимает mount listener и отменяет replay
Query storesfeature/domain layerfeature lifecycle или participant scope

Выбор страницы