UNPKG

4.39 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.BaseS3Publisher = void 0;
7
8function _bluebirdLst() {
9 const data = require("bluebird-lst");
10
11 _bluebirdLst = function () {
12 return data;
13 };
14
15 return data;
16}
17
18function _s() {
19 const data = _interopRequireDefault(require("aws-sdk/clients/s3"));
20
21 _s = function () {
22 return data;
23 };
24
25 return data;
26}
27
28function _builderUtil() {
29 const data = require("builder-util");
30
31 _builderUtil = function () {
32 return data;
33 };
34
35 return data;
36}
37
38function _electronPublish() {
39 const data = require("electron-publish");
40
41 _electronPublish = function () {
42 return data;
43 };
44
45 return data;
46}
47
48function _fsExtraP() {
49 const data = require("fs-extra-p");
50
51 _fsExtraP = function () {
52 return data;
53 };
54
55 return data;
56}
57
58function _mime() {
59 const data = _interopRequireDefault(require("mime"));
60
61 _mime = function () {
62 return data;
63 };
64
65 return data;
66}
67
68var path = _interopRequireWildcard(require("path"));
69
70function _uploader() {
71 const data = require("./uploader");
72
73 _uploader = function () {
74 return data;
75 };
76
77 return data;
78}
79
80function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
81
82function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
83
84class BaseS3Publisher extends _electronPublish().Publisher {
85 constructor(context, options) {
86 super(context);
87 this.options = options;
88 }
89
90 configureS3Options(s3Options) {
91 // if explicitly set to null, do not add
92 if (this.options.acl !== null) {
93 s3Options.ACL = this.options.acl || "public-read";
94 }
95 }
96
97 createClientConfiguration() {
98 return {
99 signatureVersion: "v4"
100 };
101 } // http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-creating-buckets.html
102
103
104 upload(task) {
105 var _this = this;
106
107 return (0, _bluebirdLst().coroutine)(function* () {
108 const fileName = path.basename(task.file);
109 const cancellationToken = _this.context.cancellationToken;
110 const target = (_this.options.path == null ? "" : `${_this.options.path}/`) + fileName;
111
112 if (process.env.__TEST_S3_PUBLISHER__ != null) {
113 const testFile = path.join(process.env.__TEST_S3_PUBLISHER__, target);
114 yield (0, _fsExtraP().ensureDir)(path.dirname(testFile));
115 yield (0, _fsExtraP().symlink)(task.file, testFile);
116 return;
117 }
118
119 const s3Options = {
120 Key: target,
121 Bucket: _this.getBucketName(),
122 ContentType: _mime().default.getType(task.file) || "application/octet-stream"
123 };
124
125 _this.configureS3Options(s3Options);
126
127 const contentLength = task.fileContent == null ? (yield (0, _fsExtraP().stat)(task.file)).size : task.fileContent.length;
128 const uploader = new (_uploader().Uploader)(new (_s().default)(_this.createClientConfiguration()), s3Options, task.file, contentLength, task.fileContent);
129
130 const progressBar = _this.createProgressBar(fileName, uploader.contentLength);
131
132 if (progressBar != null) {
133 const callback = new (_electronPublish().ProgressCallback)(progressBar);
134 uploader.on("progress", () => {
135 if (!cancellationToken.cancelled) {
136 callback.update(uploader.loaded, uploader.contentLength);
137 }
138 });
139 }
140
141 return yield cancellationToken.createPromise((resolve, reject, onCancel) => {
142 onCancel(() => uploader.abort());
143 uploader.upload().then(() => {
144 try {
145 _builderUtil().log.debug({
146 provider: _this.providerName,
147 file: fileName,
148 bucket: _this.getBucketName()
149 }, "uploaded");
150 } finally {
151 resolve();
152 }
153 }).catch(reject);
154 });
155 })();
156 }
157
158 toString() {
159 return `${this.providerName} (bucket: ${this.getBucketName()})`;
160 }
161
162} exports.BaseS3Publisher = BaseS3Publisher;
163//# sourceMappingURL=BaseS3Publisher.js.map
\No newline at end of file