Weblite Storage Client
TypeScript client for Weblite S3 Storage
API
declare const upload: (file: File, { name, type, meta, accessToken, compression, onProgress, }?: {
name?: string; // default: file.name
type?: 'file' | 'voice' | 'image' | 'infer'; // default: `file`
meta?: Record<string, unknown>; // use it carefully!
compression?: CompressorOptions; // applied only if `type` = `image`, will be passed to compressorjs
accessToken?: string; // if provided, will overwrite `config.authToken`
onUploadSubmit?: (fileId: string) => void, // called when the upload is submitted in the queue
onUploadStart?: (fileId: string) => void, // called when the upload is started
onProgress?: (fileId: string, { sent, total }: {
sent: number;
total: number;
}) => void;
}) => Promise<{
fileId: string;
fileName: string;
size: number;
type: 'file' | 'voice' | 'image';
contentType: string;
createdAt: Date;
}>
declare const cancelUpload: (fileId: string) => boolean
declare const getDirectLink: (fileId: string) => string
declare const getPreSignedDownloadUrl: (fileId: string, accessToken?: string) => Promise<string>
declare const getInfo: (fileId: string, accessToken?: string) => Promise<{
fileName: string;
size: number;
contentType: string;
meta: Record<string, unknown>;
directLink: string;
}>
declare const config: (values: {
fileServiceUrl?: string
s3Url?: string
authToken?: string
}) => void
Usage
import * as storage from '@web-lite/storage'
storage.config({ authToken: 'yourAuthToken' })
const uploadImage = async (image: File): Promise<void> => {
const { fileId } = await storage.upload(image, {
type: 'image',
compression: { quality: 0.5 },
})
const info = await storage.getInfo(fileId)
console.log(info)
}
const image = selectImage()
uploadImage(image)