UNPKG

@tldraw/tlschema

Version:

A tiny little drawing app (schema).

89 lines (88 loc) 2.56 kB
import { RecordType, createMigrationSequence } from "@tldraw/store"; import { assert } from "@tldraw/utils"; function processPropsMigrations(typeName, records) { const result = []; for (const [subType, { migrations }] of Object.entries(records)) { const sequenceId = `com.tldraw.${typeName}.${subType}`; if (!migrations) { result.push( createMigrationSequence({ sequenceId, retroactive: false, sequence: [] }) ); } else if ("sequenceId" in migrations) { assert( sequenceId === migrations.sequenceId, `sequenceId mismatch for ${subType} ${RecordType} migrations. Expected '${sequenceId}', got '${migrations.sequenceId}'` ); result.push(migrations); } else if ("sequence" in migrations) { result.push( createMigrationSequence({ sequenceId, retroactive: false, sequence: migrations.sequence.map( (m) => "id" in m ? createPropsMigration(typeName, subType, m) : m ) }) ); } else { result.push( createMigrationSequence({ sequenceId, retroactive: false, sequence: Object.keys(migrations.migrators).map((k) => Number(k)).sort((a, b) => a - b).map( (version) => ({ id: `${sequenceId}/${version}`, scope: "record", filter: (r) => r.typeName === typeName && r.type === subType, up: (record) => { const result2 = migrations.migrators[version].up(record); if (result2) { return result2; } }, down: (record) => { const result2 = migrations.migrators[version].down(record); if (result2) { return result2; } } }) ) }) ); } } return result; } function createPropsMigration(typeName, subType, m) { return { id: m.id, dependsOn: m.dependsOn, scope: "record", filter: (r) => r.typeName === typeName && r.type === subType, up: (record) => { const result = m.up(record.props); if (result) { record.props = result; } }, down: typeof m.down === "function" ? (record) => { const result = m.down(record.props); if (result) { record.props = result; } } : void 0 }; } export { createPropsMigration, processPropsMigrations }; //# sourceMappingURL=recordsWithProps.mjs.map