@tldraw/tlschema
Version:
tldraw infinite canvas SDK (schema).
86 lines (85 loc) • 1.91 kB
JavaScript
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