@owlmeans/storage-resource
v0.1.7
Published
S3-compatible object storage resource for OwlMeans server applications.
Readme
@owlmeans/storage-resource
S3-compatible object storage resource for OwlMeans server applications.
Overview
createStorageResource(alias?, configKey?)— creates an S3-backed storage resourceappendStorageResource(ctx, alias?, configKey?)— registers the resource in the contextStorageResource— extendsResource<StoredRecord>for uploading and retrieving filesStoredConfigAppend— config mixin type for storage bucket credentials
Installation
bun add @owlmeans/storage-resourceUsage
Add storage config type:
import type { StoredConfigAppend } from '@owlmeans/storage-resource'
interface AppConfig extends BasicConfig, StoredConfigAppend {}Register the resource:
import { appendStorageResource } from '@owlmeans/storage-resource'
appendStorageResource(context, 'images')Config (config.json):
{
"storageBuckets": {
"images": {
"url": "https://s3.amazonaws.com",
"apiKey": "...",
"basePrefix": "my-bucket/images"
}
}
}Upload a file:
const storage = context.resource<StorageResource>('images')
await storage.save({
id: fileId,
prefix: 'uploads',
stream: readableStream,
type: 'image/jpeg'
})API
createStorageResource(alias?, configKey?): StorageResource
Creates an S3 storage resource. alias defaults to DEFAULT_ALIAS ('s3-storage').
appendStorageResource<C, T>(ctx, alias?, configKey?): T
Registers the storage resource in the context.
StoredRecord
Extends ResourceRecord with: url?, size?, prefix, stream?, format?, type?, bytes?, base64?
StorageConfig
{ url: string, apiKey: string, basePrefix: string }
stripData<Input, Output>(file): Output
Strips raw data fields from a StoredFileWithData to produce a StoredFile (URL-only).
supportedMimeTypes
Array of MIME types accepted for upload.
Related Packages
@owlmeans/storage-common— shared types (StoredFileMeta,StoredFile, etc.)@owlmeans/image-resource— image-specific resource built on top of this
