@edgestore/server
Version:
Upload files with ease from React/Next.js
68 lines (63 loc) • 2.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var storageBlob = require('@azure/storage-blob');
var uuid = require('uuid');
var shared = require('../../shared-4ec2dc90.js');
require('@edgestore/shared');
require('@panva/hkdf');
require('cookie');
require('jose');
function AzureProvider(options) {
const { storageAccountName = shared.getEnv('ES_AZURE_ACCOUNT_NAME'), sasToken = shared.getEnv('ES_AZURE_SAS_TOKEN'), containerName = shared.getEnv('ES_AZURE_CONTAINER_NAME'), customBaseUrl = shared.getEnv('ES_AZURE_BASE_URL') } = options ?? {};
const baseUrl = customBaseUrl ?? `https://${storageAccountName}.blob.core.windows.net`;
const blobServiceClient = new storageBlob.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 = uuid.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
};
}
};
}
exports.AzureProvider = AzureProvider;