import type { ComponentData } from "./parsers/parser"; /** * Schema 版本迁移机制。 * * ComponentData 的结构会随版本演进,迁移机制保证老数据在新版代码中可用: * - 每个迁移函数把 version N 的数据转换为 version N+1; * - 迁移函数必须从 0 开始形成连续的链(0→1→2→…),链在哪断,latest 就到哪; * - 版本号记录在根节点 `version` 字段,缺省视为 0; * - 整棵树原子迁移,子节点不单独记录版本。 */ /** 把 version `fromVersion` 的数据迁移到 `fromVersion + 1` */ export type SchemaMigration = (data: ComponentData) => void; /** * 注册迁移函数。重复注册同一版本会抛错,避免静默覆盖。 * 迁移函数在工作副本上就地修改即可,原始数据不会被改动。 */ export declare function registerSchemaMigration(fromVersion: number, migration: SchemaMigration): void; /** 清空所有已注册的迁移,仅用于测试 */ export declare function clearSchemaMigrations(): void; /** * 当前最新的 schema 版本:从 0 开始的连续迁移链的长度。 * 没有注册任何迁移时为 0,此时数据不写入版本号(与历史数据兼容)。 */ export declare function latestSchemaVersion(): number; /** * 把 ComponentData 迁移到当前最新版本。 * * - 无需迁移(已是最新版本,或未注册任何迁移)时原样返回同一引用, * 保证对 Designer 的 props diff 零影响; * - 需要迁移时返回迁移后的深拷贝,不修改传入对象; * - 数据版本高于当前实现(例如新版保存的数据回滚到旧版代码打开)时, * 原样返回并输出警告。 */ export declare function migrateComponentData(componentData: ComponentData): ComponentData;