import type { ResourceRevisionVersion } from '../../index.js'; import type { DiagramImplement, Model, ModelImplement, ModelImplements } from '../../model/index.js'; import { migrateDiagramFromMxGraphToX6 } from './sim-diagram.js'; import { migrateGraphic } from './sim-graphic.js'; /** 转换 diagram */ function diagram(d: DiagramImplement | undefined): void { if (!d) return; if (d.cells && Array.isArray(d.canvas)) return; migrateDiagramFromMxGraphToX6(d); } /** * 升级算例 */ export function migrate(model: Model): void { const { revision } = model; if (Array.isArray(revision.implements)) { const arr = revision.implements as ModelImplement[]; const obj: ModelImplements = {}; for (const impl of arr) { if (typeof impl?.type != 'string') continue; obj[impl.type] = impl as never; } revision.implements = obj; } if (typeof revision.graphic == 'string') { migrateGraphic(model); } if (model.context.graphic && !('nodes' in model.context.graphic)) { model.context.graphic = undefined; } diagram(revision.implements.diagram); model.revision.version = 2 as ResourceRevisionVersion; }