UNPKG

turborepo-remote-cache

Version:
45 lines 4.32 kB
import { PassThrough, Writable } from 'node:stream'; import { BlobServiceClient } from '@azure/storage-blob'; export function createAzureBlobStorage({ containerName, connectionString, }) { const blobServiceClient = BlobServiceClient.fromConnectionString(connectionString); const containerClient = blobServiceClient.getContainerClient(containerName); return { exists: (artifactPath, cb) => { const blobClient = containerClient.getBlobClient(artifactPath); blobClient.exists().then((exists) => { cb(null, exists); }, cb); }, createReadStream(artifactPath) { const blobClient = containerClient.getBlobClient(artifactPath); const stream = new PassThrough(); blobClient .download() .then((response) => { if (!response.readableStreamBody) { throw new Error(`Artifact ${artifactPath} download returned no readable body.`); } response.readableStreamBody .on('error', (err) => stream.destroy(err)) .pipe(stream); }) .catch((err) => stream.destroy(err)); return stream; }, createWriteStream(artifactPath) { const blockBlobClient = containerClient.getBlockBlobClient(artifactPath); const passThrough = new PassThrough(); const uploadPromise = blockBlobClient.uploadStream(passThrough); return new Writable({ write(chunk, encoding, callback) { passThrough.write(chunk, encoding, callback); }, final(callback) { passThrough.end(); uploadPromise.then(() => callback()).catch(callback); }, }); }, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtYmxvYi1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL3N0b3JhZ2UvYXp1cmUtYmxvYi1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBUXZELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUNyQyxhQUFhLEVBQ2IsZ0JBQWdCLEdBQ1E7SUFDeEIsTUFBTSxpQkFBaUIsR0FDckIsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUMxRCxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUUzRSxPQUFPO1FBQ0wsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQzNCLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDOUQsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsQyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ2xCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNSLENBQUM7UUFDRCxnQkFBZ0IsQ0FBQyxZQUFZO1lBQzNCLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDOUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQTtZQUNoQyxVQUFVO2lCQUNQLFFBQVEsRUFBRTtpQkFDVixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUNqQyxNQUFNLElBQUksS0FBSyxDQUNiLFlBQVksWUFBWSxzQ0FBc0MsQ0FDL0QsQ0FBQTtnQkFDSCxDQUFDO2dCQUdELFFBQVEsQ0FBQyxrQkFBa0I7cUJBQ3hCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQixDQUFDLENBQUM7aUJBS0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDdEMsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO1FBQ0QsaUJBQWlCLENBQUMsWUFBWTtZQUM1QixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDeEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQTtZQUNyQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQy9ELE9BQU8sSUFBSSxRQUFRLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVE7b0JBQzdCLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtnQkFDOUMsQ0FBQztnQkFDRCxLQUFLLENBQUMsUUFBUTtvQkFDWixXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7b0JBQ2pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3RELENBQUM7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUMifQ==