UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

39 lines (38 loc) 1.98 kB
import type { MigrateFn } from '../storage.interface'; /** * Решение о миграции персистентного состояния, принимаемое до записи. Чистая функция — * не трогает хранилище; применяет результат вызывающий (`initializeWithMiddlewares`), * т.к. запись отличается в sync/async адаптерах. */ export type MigrationDecision<T> = /** Данных нет — записать `initialState` (если задан) и текущую версию. */ { kind: 'seed'; } /** Данные старой версии — записать `state` (результат `migrate`) и текущую версию. */ | { kind: 'migrate'; state: T; } /** Данные актуальной формы, но версию надо обновить (например, поднята без `migrate`). */ | { kind: 'bump'; } /** Ничего не делать (версии совпадают либо сохранённая новее текущей). */ | { kind: 'none'; }; export interface DecideMigrationOptions<T extends Record<string, any>> { hasExisting: boolean; existingState: any; persistedVersion: number | undefined; targetVersion: number; migrate?: MigrateFn<T>; } /** * Сравнивает сохранённую версию схемы с текущей (`config.version`) и решает, что делать * с персистентными данными при инициализации. Dev-предупреждения (в non-production) — * только при потенциально опасных рассогласованиях (версия поднята без `migrate`, * сохранённая версия новее текущей). */ export declare function decideMigration<T extends Record<string, any>>(options: DecideMigrationOptions<T>): MigrationDecision<T>;