import { BaseRecord } from '@bigbluebutton/store' import { JsonObject } from '@bigbluebutton/utils' import { T } from '@bigbluebutton/validate' import { idValidator } from '../misc/id-validator' import { TLAssetId } from '../records/TLAsset' /** @public */ export interface TLBaseAsset extends BaseRecord<'asset', TLAssetId> { type: Type props: Props meta: JsonObject } /** * A validator for asset record type Ids. * * @public */ export const assetIdValidator = idValidator('asset') /** * Create a validator for an asset record type. * * @param type - The type of the asset * @param props - The validator for the asset's props * * @public */ export function createAssetValidator( type: Type, props: T.Validator ): T.ObjectValidator<{ id: TLAssetId typeName: 'asset' type: Type props: Props meta: JsonObject }> { return T.object({ id: assetIdValidator, typeName: T.literal('asset'), type: T.literal(type), props, meta: T.jsonValue as T.ObjectValidator, }) }