JavaScript SDK - Storage#

S3-compatible object storage: buckets, objects, folders and presigned URLs.

Buckets#

const { data: bucket } = await db.storage.createBucket({
  name: 'Avatars',
  slug: 'avatars',
  is_public: true,
  file_size_limit: 5_000_000,
  allowed_mime_types: ['image/png', 'image/jpeg'],
});

const { data: buckets } = await db.storage.listBuckets();
const { data: one } = await db.storage.getBucket(bucket.id);
await db.storage.deleteBucket(bucket.id);
TypeScript

Objects#

const { data: objects } = await db.storage.listObjects(bucket.id);
await db.storage.createFolder(bucket.id, 'user-uploads');
await db.storage.deleteObject(objectId);
TypeScript

Upload#

Get a presigned URL, then PUT the file bytes to it:

const { data: { url } } = await db.storage.signedUploadUrl({
  bucket_id: bucket.id,
  object_name: 'user-1.png',
  content_length: 20480,
});

await fetch(url, { method: 'PUT', body: file });
TypeScript

Download#

const { data: { url: downloadUrl } } = await db.storage.signedDownloadUrl(objectId);

// Public URL (no auth, public buckets only)
const publicUrl = db.storage.publicUrl(bucket.id, objectId);
TypeScript

Typed#

const buckets = await db.storage.listBuckets<{ id: string; slug: string }>();
buckets.data![0].slug;
TypeScript

Next: Environment variables.