@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
57 lines (56 loc) • 2.52 kB
JavaScript
import { VersionUpgrade17 } from './VersionUpgrade17';
import { VersionUpgrade18 } from './VersionUpgrade18';
import { ADAPTABLE_VERSION } from '../EnvVars';
import { VersionUpgrade20 } from './VersionUpgrade20';
import { VersionUpgrade21 } from './VersionUpgrade21';
import { VersionUpgrade22 } from './VersionUpgrade22';
import { VersionUpgrade23 } from './VersionUpgrade23';
export class AdaptableUpgradeHelper {
currentMajorVersion;
versionUpgrades;
logger;
constructor(logger) {
this.currentMajorVersion = this.getCurrentMajorVersion(ADAPTABLE_VERSION);
this.logger = logger || this.getConsoleLogger();
this.versionUpgrades = new Map();
this.versionUpgrades.set(17, new VersionUpgrade17(this.logger));
this.versionUpgrades.set(18, new VersionUpgrade18(this.logger));
this.versionUpgrades.set(20, new VersionUpgrade20(this.logger));
this.versionUpgrades.set(21, new VersionUpgrade21(this.logger));
this.versionUpgrades.set(22, new VersionUpgrade22(this.logger));
this.versionUpgrades.set(23, new VersionUpgrade23(this.logger));
}
static migrateAdaptableState(state, config) {
const upgradeHelper = new AdaptableUpgradeHelper(config.logger);
let fromVersion = config?.fromVersion || 16;
const toVersion = config?.toVersion || upgradeHelper.currentMajorVersion;
if (fromVersion >= toVersion) {
console.warn(`The fromVersion (${fromVersion}) should be less than toVersion (${toVersion})!`);
return state;
}
if (fromVersion < 16) {
fromVersion = 16;
}
const versionUpgrades = Array.from(upgradeHelper.versionUpgrades.keys());
let updatedState = structuredClone(state);
for (const version of versionUpgrades) {
if (version > fromVersion && version <= toVersion) {
upgradeHelper.logger.info(`Migration to version ${version} started.`);
updatedState = upgradeHelper.versionUpgrades.get(version).migrateState(updatedState);
upgradeHelper.logger.info(`Migration to version ${version} completed.`);
}
}
return updatedState;
}
getCurrentMajorVersion(version) {
return parseInt(version.split('.')[0]) || 24;
}
getConsoleLogger() {
return {
success: console.log,
info: console.info,
warn: console.warn,
error: console.error,
};
}
}