createAssetValidator
See source codeCreates a validator for a specific asset record type. This factory function generates a complete validator that validates the entire asset record structure including the base properties (id, typeName, type, meta) and the type-specific props.
function createAssetValidator<Type extends string, Props extends JsonObject>(
type: Type,
props: T.Validator<Props>
): T.ObjectValidator<
import('@tldraw/utils').Expand<
{
[P in
| 'id'
| 'meta'
| 'typeName'
| (undefined extends Props ? never : 'props')
| (undefined extends Type ? never : 'type')]: {
id: TLAssetId
meta: JsonObject
props: Props
type: Type
typeName: 'asset'
}[P]
} & {
[P_1 in
| (undefined extends Props ? 'props' : never)
| (undefined extends Type ? 'type' : never)]?:
| {
id: TLAssetId
meta: JsonObject
props: Props
type: Type
typeName: 'asset'
}[P_1]
| undefined
}
>
>
Example
import { createAssetValidator, TLBaseAsset } from '@tldraw/tlschema'
import { T } from '@tldraw/validate'
// Define a custom asset type
type TLCustomAsset = TLBaseAsset<
'custom',
{
url: string
title: string
description?: string
}
>
// Create validator for the custom asset
const customAssetValidator = createAssetValidator(
'custom',
T.object({
url: T.string,
title: T.string,
description: T.string.optional(),
})
)
// Use the validator
const assetData = {
id: 'asset:custom123',
typeName: 'asset' as const,
type: 'custom' as const,
props: {
url: 'https://example.com',
title: 'My Custom Asset',
},
meta: {},
}
const validatedAsset = customAssetValidator.validate(assetData)
Parameters
Name | Description |
---|---|
|
The asset type identifier (e.g., 'image', 'video', 'bookmark') |
|
The validator for the asset's type-specific properties |
Returns
T.ObjectValidator<
import('@tldraw/utils').Expand<
{
[P in
| 'id'
| 'meta'
| 'typeName'
| (undefined extends Props ? never : 'props')
| (undefined extends Type ? never : 'type')]: {
id: TLAssetId
meta: JsonObject
props: Props
type: Type
typeName: 'asset'
}[P]
} & {
[P_1 in
| (undefined extends Props ? 'props' : never)
| (undefined extends Type ? 'type' : never)]?:
| {
id: TLAssetId
meta: JsonObject
props: Props
type: Type
typeName: 'asset'
}[P_1]
| undefined
}
>
>
A complete validator for the asset record type
Prev
useUnlockedSelectedShapesCountNext
createBindingId