TypeScript API / laikacms/storage/r2 / R2DataSource
Class: R2DataSource
R2DataSource provides low-level operations for interacting with Cloudflare R2 storage. It handles the translation between the flat object store model and a hierarchical file system model.
Constructors
Constructor
new R2DataSource(
bucket,
availableExtensions?,
defaultFileExtension?
): R2DataSource;Parameters
| Parameter | Type | Default value |
|---|---|---|
bucket | R2Bucket | undefined |
availableExtensions | string[] | [] |
defaultFileExtension | string | '' |
Returns
R2DataSource
Methods
createOrUpdate()
createOrUpdate(
key,
content,
extension,
customMetadata?
): Promise<LaikaResult<{
key: string;
}>>;Create or update an object in R2. Pass customMetadata to embed fields that survive subsequent writes (e.g. x-laika-created-at set once on creation so createdAt never drifts).
Parameters
| Parameter | Type |
|---|---|
key | string |
content | string |
extension | string |
customMetadata? | Record<string, string> |
Returns
Promise<LaikaResult<{ key: string; }>>
deleteObjects()
deleteObjects(keys): AsyncGenerator<LaikaResult<string>>;Delete multiple objects from R2
Parameters
| Parameter | Type |
|---|---|
keys | readonly string[] |
Returns
AsyncGenerator<LaikaResult<string>>
findExistingObjectExtension()
findExistingObjectExtension(key): Promise<string | null>;Check if an object exists with any of the available extensions. Returns the extension if found, null otherwise.
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<string | null>
getFolderMeta()
getFolderMeta(key): Promise<LaikaResult<{
createdAt: Date;
updatedAt: Date;
}>>;Get metadata for a "folder" (prefix in R2) Since R2 is a flat object store, folders don't have real metadata. We return the current time as a placeholder.
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<LaikaResult<{ createdAt: Date; updatedAt: Date; }>>
getObjectContents()
getObjectContents(key): Promise<LaikaResult<{
content: string;
extension: string;
key: string;
}>>;Get the contents of an object
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<LaikaResult<{ content: string; extension: string; key: string; }>>
getObjectMeta()
getObjectMeta(key): Promise<LaikaResult<{
createdAt: Date;
etag: string;
extension: string;
key: string;
size: number;
updatedAt: Date;
}>>;Get metadata for an object
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<LaikaResult<{ createdAt: Date; etag: string; extension: string; key: string; size: number; updatedAt: Date; }>>
isDirectory()
isDirectory(key): Promise<LaikaResult<boolean>>;Check if a key represents a directory (has objects with that prefix)
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<LaikaResult<boolean>>
isFile()
isFile(key): Promise<boolean>;Check if a key represents a file (object exists)
Parameters
| Parameter | Type |
|---|---|
key | string |
Returns
Promise<boolean>
listDirectory()
listDirectory(prefix): Promise<LaikaResult<R2Entry[]>>;List objects in a "directory" (prefix in R2)
Parameters
| Parameter | Type |
|---|---|
prefix | string |
Returns
Promise<LaikaResult<R2Entry[]>>