@edgestore/server
Version: 
Upload files with ease from React/Next.js
64 lines (61 loc) • 2.33 kB
JavaScript
import { BlobServiceClient } from '@azure/storage-blob';
import { v4 } from 'uuid';
import { g as getEnv } from '../../shared-c6527780.mjs';
import '@edgestore/shared';
import '@panva/hkdf';
import 'cookie';
import 'jose';
function AzureProvider(options) {
    const { storageAccountName = getEnv('ES_AZURE_ACCOUNT_NAME'), sasToken = getEnv('ES_AZURE_SAS_TOKEN'), containerName = getEnv('ES_AZURE_CONTAINER_NAME'), customBaseUrl = getEnv('ES_AZURE_BASE_URL') } = options ?? {};
    const baseUrl = customBaseUrl ?? `https://${storageAccountName}.blob.core.windows.net`;
    const blobServiceClient = new BlobServiceClient(`${baseUrl}?${sasToken}`);
    const containerClient = blobServiceClient.getContainerClient(containerName ?? '');
    return {
        name: 'azure',
        async init () {
            return {};
        },
        getBaseUrl () {
            return baseUrl;
        },
        async getFile ({ url }) {
            const blobClient = containerClient.getBlobClient(url);
            const { contentLength, lastModified } = await blobClient.getProperties();
            return {
                url: url,
                metadata: {},
                path: {},
                size: contentLength ?? 0,
                uploadedAt: lastModified ?? new Date()
            };
        },
        async requestUpload ({ fileInfo }) {
            const nameId = v4();
            const extension = fileInfo.extension ? `.${fileInfo.extension.replace('.', '')}` : '';
            const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
            const blobClient = containerClient.getBlobClient(fileName);
            const url = blobClient.url;
            return {
                uploadUrl: url,
                accessUrl: url
            };
        },
        async requestUploadParts () {
            throw new Error('Not implemented');
        },
        async completeMultipartUpload () {
            throw new Error('Not implemented');
        },
        async confirmUpload () {
            throw new Error('Not implemented');
        },
        async deleteFile ({ url }) {
            const blobClient = containerClient.getBlobClient(url);
            await blobClient.delete();
            return {
                success: true
            };
        }
    };
}
export { AzureProvider };