UNPKG

5.74 kBSource Map (JSON)View Raw
1{"version":3,"file":"BaseS3Publisher.js","sourceRoot":"","sources":["../src/BaseS3Publisher.ts"],"names":[],"mappings":"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","sourcesContent":["import S3, { ClientConfiguration, CreateMultipartUploadRequest, ObjectCannedACL } from \"aws-sdk/clients/s3\"\nimport { log } from \"builder-util\"\nimport { BaseS3Options } from \"builder-util-runtime\"\nimport { ProgressCallback, PublishContext, Publisher, UploadTask } from \"electron-publish\"\nimport { ensureDir, stat, symlink } from \"fs-extra-p\"\nimport mime from \"mime\"\nimport * as path from \"path\"\nimport { Uploader } from \"./uploader\"\n\nexport abstract class BaseS3Publisher extends Publisher {\n protected constructor(context: PublishContext, private options: BaseS3Options) {\n super(context)\n }\n\n protected abstract getBucketName(): string\n\n protected configureS3Options(s3Options: CreateMultipartUploadRequest) {\n // if explicitly set to null, do not add\n if (this.options.acl !== null) {\n s3Options.ACL = this.options.acl as ObjectCannedACL || \"public-read\"\n }\n }\n\n protected createClientConfiguration(): ClientConfiguration {\n return {signatureVersion: \"v4\"}\n }\n\n // http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-creating-buckets.html\n async upload(task: UploadTask): Promise<any> {\n const fileName = path.basename(task.file)\n const cancellationToken = this.context.cancellationToken\n\n const target = (this.options.path == null ? \"\" : `${this.options.path}/`) + fileName\n\n if (process.env.__TEST_S3_PUBLISHER__ != null) {\n const testFile = path.join(process.env.__TEST_S3_PUBLISHER__!, target)\n await ensureDir(path.dirname(testFile))\n await symlink(task.file, testFile)\n return\n }\n\n const s3Options: CreateMultipartUploadRequest = {\n Key: target,\n Bucket: this.getBucketName(),\n ContentType: mime.getType(task.file) || \"application/octet-stream\"\n }\n this.configureS3Options(s3Options)\n\n const contentLength = task.fileContent == null ? (await stat(task.file)).size : task.fileContent.length\n const uploader = new Uploader(new S3(this.createClientConfiguration()), s3Options, task.file, contentLength, task.fileContent)\n\n const progressBar = this.createProgressBar(fileName, uploader.contentLength)\n if (progressBar != null) {\n const callback = new ProgressCallback(progressBar)\n uploader.on(\"progress\", () => {\n if (!cancellationToken.cancelled) {\n callback.update(uploader.loaded, uploader.contentLength)\n }\n })\n }\n\n return await cancellationToken.createPromise((resolve, reject, onCancel) => {\n onCancel(() => uploader.abort())\n uploader.upload()\n .then(() => {\n try {\n log.debug({provider: this.providerName, file: fileName, bucket: this.getBucketName()}, \"uploaded\")\n }\n finally {\n resolve()\n }\n })\n .catch(reject)\n })\n }\n\n toString() {\n return `${this.providerName} (bucket: ${this.getBucketName()})`\n }\n}\n"]}