Skip to content

defineMediaCollection

defineMediaCollection<TFieldMeta, TCollectionMeta, TCollectionSlug, TFields, TComponent>(config): MediaCollectionConfig<TFieldMeta, TCollectionMeta, TCollectionSlug, TFields, TComponent>

Defined in: packages/file-storage-convex/src/mediaCollection.ts:49

Resolves a raw media collection config input into a fully-populated MediaCollectionConfig tagged meta.storageAdapter: "convex".

Injects the Convex-specific base fields (filename, alt, mimeType, size, storageId, deleted, src, width, height) beneath the caller’s own fields and defaults admin.useAsTitle to filename. Pure and client-safe — never touches the Convex SDK — so the result is declared on the client config’s mediaCollections.

TFieldMeta extends BaseFieldMeta = BaseFieldMeta

TCollectionMeta extends MediaCollectionMeta = MediaCollectionMeta

TCollectionSlug extends string = string

TFields extends Record<string, AdminField<TFieldMeta>> = Record<string, AdminField<TFieldMeta>>

TComponent extends ComponentHKT = ComponentHKT

MediaCollectionConfigInput<TFieldMeta, TCollectionMeta, TCollectionSlug, TFields, TComponent> & object

The raw media collection configuration supplied by the caller.

MediaCollectionConfig<TFieldMeta, TCollectionMeta, TCollectionSlug, TFields, TComponent>

The resolved MediaCollectionConfig with all defaults applied.

import { defineMediaCollection } from "@vexcms/file-storage-convex/client";
const images = defineMediaCollection({
slug: "images",
fields: { alt: text({ required: true }) },
});
export default defineConfig({
mediaCollections: [images],
collections: [posts],
});