1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.BaseS3Publisher = void 0;
|
7 |
|
8 | function _bluebirdLst() {
|
9 | const data = require("bluebird-lst");
|
10 |
|
11 | _bluebirdLst = function () {
|
12 | return data;
|
13 | };
|
14 |
|
15 | return data;
|
16 | }
|
17 |
|
18 | function _s() {
|
19 | const data = _interopRequireDefault(require("aws-sdk/clients/s3"));
|
20 |
|
21 | _s = function () {
|
22 | return data;
|
23 | };
|
24 |
|
25 | return data;
|
26 | }
|
27 |
|
28 | function _builderUtil() {
|
29 | const data = require("builder-util");
|
30 |
|
31 | _builderUtil = function () {
|
32 | return data;
|
33 | };
|
34 |
|
35 | return data;
|
36 | }
|
37 |
|
38 | function _electronPublish() {
|
39 | const data = require("electron-publish");
|
40 |
|
41 | _electronPublish = function () {
|
42 | return data;
|
43 | };
|
44 |
|
45 | return data;
|
46 | }
|
47 |
|
48 | function _fsExtraP() {
|
49 | const data = require("fs-extra-p");
|
50 |
|
51 | _fsExtraP = function () {
|
52 | return data;
|
53 | };
|
54 |
|
55 | return data;
|
56 | }
|
57 |
|
58 | function _mime() {
|
59 | const data = _interopRequireDefault(require("mime"));
|
60 |
|
61 | _mime = function () {
|
62 | return data;
|
63 | };
|
64 |
|
65 | return data;
|
66 | }
|
67 |
|
68 | var path = _interopRequireWildcard(require("path"));
|
69 |
|
70 | function _uploader() {
|
71 | const data = require("./uploader");
|
72 |
|
73 | _uploader = function () {
|
74 | return data;
|
75 | };
|
76 |
|
77 | return data;
|
78 | }
|
79 |
|
80 | function _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 |
|
82 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
83 |
|
84 | class BaseS3Publisher extends _electronPublish().Publisher {
|
85 | constructor(context, options) {
|
86 | super(context);
|
87 | this.options = options;
|
88 | }
|
89 |
|
90 | configureS3Options(s3Options) {
|
91 |
|
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 | }
|
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 |
|
\ | No newline at end of file |