@azure-utils/storybooks
Version:
Utils to upload and manage Storybooks via Azure Functions and storage.
53 lines (51 loc) • 2.79 kB
JavaScript
const require_chunk = require('./chunk-DWy1uDak.cjs');
const require_azure_storage_blob = require('./azure-storage-blob-BAHnImGv.cjs');
const require_store = require('./store-CYxr095K.cjs');
const __azure_storage_blob = require_chunk.__toESM(require("@azure/storage-blob"));
const node_fs = require_chunk.__toESM(require("node:fs"));
const node_path = require_chunk.__toESM(require("node:path"));
const node_stream = require_chunk.__toESM(require("node:stream"));
const node_os = require_chunk.__toESM(require("node:os"));
const decompress = require_chunk.__toESM(require("decompress"));
const node_events = require_chunk.__toESM(require("node:events"));
//#region src/utils/upload-utils.ts
async function uploadZipWithDecompressed(projectId, buildSHA, zipFile) {
const { context, connectionString, request } = require_store.getStore();
const tmpDir = node_os.default.tmpdir();
const dirpath = node_fs.default.mkdtempSync(node_path.default.join(tmpDir, "storybook-"));
const zipFilePath = node_path.default.join(dirpath, `${projectId}-${buildSHA}-storybook.zip`);
try {
if (zipFile) await writeStreamToFile(node_stream.Readable.fromWeb(zipFile.stream()), zipFilePath);
else await writeStreamToFile(node_stream.Readable.fromWeb(request.body), zipFilePath);
await (0, decompress.default)(zipFilePath, dirpath);
const containerClient = __azure_storage_blob.BlobServiceClient.fromConnectionString(connectionString).getContainerClient(require_azure_storage_blob.generateAzureStorageContainerName(projectId));
const blobName = `${buildSHA}/storybook.zip`;
context.debug(`Uploading stream to blob: ${blobName} (container: ${containerClient.containerName})`);
const uploadResponse = await containerClient.getBlockBlobClient(blobName).uploadFile(zipFilePath, { blobHTTPHeaders: {
blobContentType: "application/zip",
blobContentEncoding: "utf8",
blobCacheControl: "public, max-age=31536000"
} });
if (uploadResponse.errorCode) return require_store.responseError("Failed to upload Storybook.", context, uploadResponse._response.status);
await require_azure_storage_blob.uploadDirToAzureBlobStorage(context, containerClient, dirpath, (blobName$1) => node_path.default.join(buildSHA, blobName$1));
return;
} finally {
node_fs.default.rmSync(dirpath, {
recursive: true,
force: true
});
}
}
async function writeStreamToFile(readable, filePath) {
const writable = node_fs.default.createWriteStream(filePath);
for await (const chunk of readable) if (!writable.write(chunk)) await (0, node_events.once)(writable, "drain");
writable.end();
await (0, node_events.once)(writable, "finish");
}
//#endregion
Object.defineProperty(exports, 'uploadZipWithDecompressed', {
enumerable: true,
get: function () {
return uploadZipWithDecompressed;
}
});