UNPKG

@edgestore/server

Version:

Upload files with ease from React/Next.js

68 lines (63 loc) 2.46 kB
'use strict'; 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;