Skip to content

StorageAdapterPresignedUrl

Defined in: packages/core/src/media/types.ts:286

Base class for storage adapters.

All file storage adapters must extend this class to ensure consistent behavior in the admin panel. Adapters override methods to implement adapter-specific logic (e.g., different storage backends).

// In file-storage-convex/src/adapter/index.ts
import { BaseStorageAdapter } from "@vexcms/core";
export class ConvexStorageAdapter extends BaseStorageAdapter {
readonly name = "convex";
async generateUploadUrl(ctx) {
const url = await ctx.storage.generateUploadUrl();
return { url };
}
// Override other methods as needed...
}

new StorageAdapterPresignedUrl(): StorageAdapterPresignedUrl

StorageAdapterPresignedUrl

abstract admin: object

Defined in: packages/core/src/media/types.ts:294

softDelete: boolean

StorageAdapterPresignedUrlInterface.admin


abstract mediaCollections: MediaCollectionConfig<BaseFieldMeta, MediaCollectionMeta, string, Record<string, AdminField<BaseFieldMeta>>, ComponentHKT>[]

Defined in: packages/core/src/media/types.ts:292

Processed media collections ready for schema generation and admin panel.

The adapter validates, augments, and returns these collections. Each collection is tagged with meta.storageAdapterName equal to this adapter’s name. Core merges all collections from all adapters into VexConfig.mediaCollections — separate from user-defined collections.

StorageAdapterPresignedUrlInterface.mediaCollections


abstract readonly name: string

Defined in: packages/core/src/media/types.ts:288

Protocol name — tells the admin panel what the identifier of this storage adapter is.

StorageAdapterPresignedUrlInterface.name


abstract readonly type: "presigned-url"

Defined in: packages/core/src/media/types.ts:290

Protocol type — tells the admin panel how to upload files.

StorageAdapterPresignedUrlInterface.type

abstract createMediaDocument<TDataModel>(ctx, args): Promise<string>

Defined in: packages/core/src/media/types.ts:308

Creates a media document in Convex after the file is uploaded. Override in subclass for adapter-specific implementation.

TDataModel extends GenericDataModel = GenericDataModel

GenericMutationCtx<TDataModel>

Record<string, unknown>

string

string

string

string

number

string

Promise<string>

StorageAdapterPresignedUrlInterface.createMediaDocument


abstract deleteMedia<TDataModel>(ctx, args): Promise<boolean>

Defined in: packages/core/src/media/types.ts:325

Deletes a media document and its file from storage. Override in subclass for adapter-specific implementation.

TDataModel extends GenericDataModel = GenericDataModel

GenericMutationCtx<TDataModel>

string

string

boolean

Promise<boolean>

StorageAdapterPresignedUrlInterface.deleteMedia


abstract generateUploadUrl<TDataModel>(ctx): Promise<{ storageId?: string; url: string; }>

Defined in: packages/core/src/media/types.ts:300

Generates a URL to upload a file to. Override in subclass for adapter-specific implementation.

TDataModel extends GenericDataModel = GenericDataModel

GenericMutationCtx<TDataModel>

Promise<{ storageId?: string; url: string; }>

StorageAdapterPresignedUrlInterface.generateUploadUrl


abstract getUrl<TDataModel>(ctx, args): Promise<{ error?: undefined; url: string; } | { error: string; url?: undefined; }>

Defined in: packages/core/src/media/types.ts:338

Returns a URL for a media file. Override in subclass for adapter-specific implementation.

TDataModel extends GenericDataModel = GenericDataModel

GenericQueryCtx<TDataModel>

string

string

Promise<{ error?: undefined; url: string; } | { error: string; url?: undefined; }>

StorageAdapterPresignedUrlInterface.getUrl


abstract uploadFile(file, uploadUrl): Promise<{[key: string]: unknown; storageId: string; url?: string; }>

Defined in: packages/core/src/media/types.ts:363

Uploads a file to the storage backend and returns the storage ID.

This is a pure JS function that can be called from any framework (React, Next.js, Svelte, etc.) or even directly in the browser.

any

The file to upload

string

The presigned URL from generateUploadUrl

Promise<{[key: string]: unknown; storageId: string; url?: string; }>

Promise resolving to { storageId, url, … } with adapter-specific fields

// React component
const { storageId } = await adapter.uploadFile(file, uploadUrl);
await createMediaDocument({ storageId, ... });

StorageAdapterPresignedUrlInterface.uploadFile