UNPKG

synapse-storage

Version:

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

48 lines (43 loc) 2.15 kB
import { loggerConsole } from "../../../_utils/index.js"; /** * Сравнивает сохранённую версию схемы с текущей (`config.version`) и решает, что делать * с персистентными данными при инициализации. Dev-предупреждения (в non-production) — * только при потенциально опасных рассогласованиях (версия поднята без `migrate`, * сохранённая версия новее текущей). */ function decideMigration(options) { const { hasExisting, existingState, targetVersion, migrate } = options; if (!hasExisting) { return { kind: 'seed' }; } const persistedVersion = options.persistedVersion ?? 0; if (persistedVersion === targetVersion) { return { kind: 'none' }; } if (persistedVersion > targetVersion) { if (process.env.NODE_ENV !== 'production') { loggerConsole.warn(`[synapse] persisted state version (${persistedVersion}) новее текущей config.version (${targetVersion}). ` + 'Оставляю данные как есть. Похоже, открыта старая сборка поверх данных новой схемы.'); } return { kind: 'none' }; } // persistedVersion < targetVersion → нужна миграция if (migrate) { return { kind: 'migrate', state: migrate(existingState, persistedVersion) }; } if (process.env.NODE_ENV !== 'production') { loggerConsole.warn(`[synapse] config.version поднята до ${targetVersion} (в хранилище версия ${persistedVersion}), но migrate не задан. ` + 'Оставляю сохранённые данные старой схемы как есть — задайте migrate(oldState, oldVersion) для преобразования.'); } return { kind: 'bump' }; } export { decideMigration }; //# sourceMappingURL=migration.util.js.map