UNPKG

@tldraw/tlschema

Version:

tldraw infinite canvas SDK (schema).

86 lines (85 loc) 1.91 kB
import { createMigrationIds, createRecordMigrationSequence, createRecordType } from "@tldraw/store"; import { T } from "@tldraw/validate"; import { idValidator } from "../misc/id-validator.mjs"; const userIdValidator = idValidator("user"); const userVersions = createMigrationIds("com.tldraw.user", { Initial: 1 }); const userMigrations = createRecordMigrationSequence({ sequenceId: "com.tldraw.user", recordType: "user", sequence: [ { id: userVersions.Initial, up: (_record) => { } } ] }); function createUserRecordType(config) { const metaConfig = config?.meta; const metaValidator = metaConfig ? T.object( Object.fromEntries( Object.entries(metaConfig).map(([key, v]) => [ key, new T.Validator((value) => { if (value === void 0) return void 0; return v.validate(value); }) ]) ) ).allowUnknownProperties() : T.jsonValue; const validator = T.model( "user", T.object({ typeName: T.literal("user"), id: userIdValidator, name: T.string, color: T.string, imageUrl: T.string, meta: metaValidator }) ); return createRecordType("user", { validator, scope: "document" }).withDefaultProperties(() => ({ name: "", color: "", imageUrl: "", meta: {} })); } const userValidator = T.model( "user", T.object({ typeName: T.literal("user"), id: userIdValidator, name: T.string, color: T.string, imageUrl: T.string, meta: T.jsonValue }) ); const UserRecordType = createUserRecordType(); function isUserId(id) { return UserRecordType.isId(id); } function createUserId(id) { return UserRecordType.createId(id); } export { UserRecordType, createUserId, createUserRecordType, isUserId, userIdValidator, userMigrations, userValidator, userVersions }; //# sourceMappingURL=TLUser.mjs.map