cypress 4.4.1 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,22 +1,75 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _templateObject = _taggedTemplateLiteral(['\n URL: ', '\n ', '\n '], ['\n URL: ', '\n ', '\n ']),
4
- _templateObject2 = _taggedTemplateLiteral(['\n Corrupted download\n\n Expected downloaded file to have checksum: ', '\n Computed checksum: ', '\n\n Expected downloaded file to have size: ', '\n Computed size: ', '\n '], ['\n Corrupted download\n\n Expected downloaded file to have checksum: ', '\n Computed checksum: ', '\n\n Expected downloaded file to have size: ', '\n Computed size: ', '\n ']),
5
- _templateObject3 = _taggedTemplateLiteral(['\n Corrupted download\n\n Expected downloaded file to have checksum: ', '\n Computed checksum: ', '\n '], ['\n Corrupted download\n\n Expected downloaded file to have checksum: ', '\n Computed checksum: ', '\n ']),
6
- _templateObject4 = _taggedTemplateLiteral(['\n Corrupted download\n\n Expected downloaded file to have size: ', '\n Computed size: ', '\n '], ['\n Corrupted download\n\n Expected downloaded file to have size: ', '\n Computed size: ', '\n ']),
7
- _templateObject5 = _taggedTemplateLiteral(['\n Failed downloading the Cypress binary.\n Response code: ', '\n Response message: ', '\n '], ['\n Failed downloading the Cypress binary.\n Response code: ', '\n Response message: ', '\n ']);
3
+ function _templateObject5() {
4
+ var data = _taggedTemplateLiteral(["\n Failed downloading the Cypress binary.\n Response code: ", "\n Response message: ", "\n "]);
8
5
 
9
- function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
6
+ _templateObject5 = function _templateObject5() {
7
+ return data;
8
+ };
9
+
10
+ return data;
11
+ }
12
+
13
+ function _templateObject4() {
14
+ var data = _taggedTemplateLiteral(["\n Corrupted download\n\n Expected downloaded file to have size: ", "\n Computed size: ", "\n "]);
15
+
16
+ _templateObject4 = function _templateObject4() {
17
+ return data;
18
+ };
19
+
20
+ return data;
21
+ }
22
+
23
+ function _templateObject3() {
24
+ var data = _taggedTemplateLiteral(["\n Corrupted download\n\n Expected downloaded file to have checksum: ", "\n Computed checksum: ", "\n "]);
25
+
26
+ _templateObject3 = function _templateObject3() {
27
+ return data;
28
+ };
29
+
30
+ return data;
31
+ }
32
+
33
+ function _templateObject2() {
34
+ var data = _taggedTemplateLiteral(["\n Corrupted download\n\n Expected downloaded file to have checksum: ", "\n Computed checksum: ", "\n\n Expected downloaded file to have size: ", "\n Computed size: ", "\n "]);
35
+
36
+ _templateObject2 = function _templateObject2() {
37
+ return data;
38
+ };
39
+
40
+ return data;
41
+ }
42
+
43
+ function _templateObject() {
44
+ var data = _taggedTemplateLiteral(["\n URL: ", "\n ", "\n "]);
45
+
46
+ _templateObject = function _templateObject() {
47
+ return data;
48
+ };
49
+
50
+ return data;
51
+ }
52
+
53
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
10
54
 
11
55
  var arch = require('arch');
56
+
12
57
  var la = require('lazy-ass');
58
+
13
59
  var is = require('check-more-types');
60
+
14
61
  var os = require('os');
62
+
15
63
  var url = require('url');
64
+
16
65
  var path = require('path');
66
+
17
67
  var debug = require('debug')('cypress:cli');
68
+
18
69
  var request = require('@cypress/request');
70
+
19
71
  var Promise = require('bluebird');
72
+
20
73
  var requestProgress = require('request-progress');
21
74
 
22
75
  var _require = require('common-tags'),
@@ -27,6 +80,7 @@ var _require2 = require('../errors'),
27
80
  errors = _require2.errors;
28
81
 
29
82
  var fs = require('../fs');
83
+
30
84
  var util = require('../util');
31
85
 
32
86
  var defaultBaseUrl = 'https://download.cypress.io/';
@@ -38,7 +92,6 @@ var getProxyUrl = function getProxyUrl() {
38
92
  var getRealOsArch = function getRealOsArch() {
39
93
  // os.arch() returns the arch for which this node was compiled
40
94
  // we want the operating system's arch instead: x64 or x86
41
-
42
95
  var osArch = arch();
43
96
 
44
97
  if (osArch === 'x86') {
@@ -67,18 +120,16 @@ var prepend = function prepend(urlPath) {
67
120
  var endpoint = url.resolve(getBaseUrl(), urlPath);
68
121
  var platform = os.platform();
69
122
  var arch = getRealOsArch();
70
-
71
- return endpoint + '?platform=' + platform + '&arch=' + arch;
123
+ return "".concat(endpoint, "?platform=").concat(platform, "&arch=").concat(arch);
72
124
  };
73
125
 
74
126
  var getUrl = function getUrl(version) {
75
127
  if (is.url(version)) {
76
128
  debug('version is already an url', version);
77
-
78
129
  return version;
79
130
  }
80
131
 
81
- return version ? prepend('desktop/' + version) : prepend('desktop');
132
+ return version ? prepend("desktop/".concat(version)) : prepend('desktop');
82
133
  };
83
134
 
84
135
  var statusMessage = function statusMessage(err) {
@@ -86,50 +137,42 @@ var statusMessage = function statusMessage(err) {
86
137
  };
87
138
 
88
139
  var prettyDownloadErr = function prettyDownloadErr(err, version) {
89
- var msg = stripIndent(_templateObject, getUrl(version), statusMessage(err));
90
-
140
+ var msg = stripIndent(_templateObject(), getUrl(version), statusMessage(err));
91
141
  debug(msg);
92
-
93
142
  return throwFormErrorText(errors.failedDownload)(msg);
94
143
  };
95
-
96
144
  /**
97
145
  * Checks checksum and file size for the given file. Allows both
98
146
  * values or just one of them to be checked.
99
147
  */
148
+
149
+
100
150
  var verifyDownloadedFile = function verifyDownloadedFile(filename, expectedSize, expectedChecksum) {
101
151
  if (expectedSize && expectedChecksum) {
102
152
  debug('verifying checksum and file size');
103
-
104
153
  return Promise.join(util.getFileChecksum(filename), util.getFileSize(filename), function (checksum, filesize) {
105
154
  if (checksum === expectedChecksum && filesize === expectedSize) {
106
155
  debug('downloaded file has the expected checksum and size ✅');
107
-
108
156
  return;
109
157
  }
110
158
 
111
159
  debug('raising error: checksum or file size mismatch');
112
- var text = stripIndent(_templateObject2, expectedChecksum, checksum, expectedSize, filesize);
113
-
160
+ var text = stripIndent(_templateObject2(), expectedChecksum, checksum, expectedSize, filesize);
114
161
  debug(text);
115
-
116
162
  throw new Error(text);
117
163
  });
118
164
  }
119
165
 
120
166
  if (expectedChecksum) {
121
167
  debug('only checking expected file checksum %d', expectedChecksum);
122
-
123
168
  return util.getFileChecksum(filename).then(function (checksum) {
124
169
  if (checksum === expectedChecksum) {
125
170
  debug('downloaded file has the expected checksum ✅');
126
-
127
171
  return;
128
172
  }
129
173
 
130
174
  debug('raising error: file checksum mismatch');
131
- var text = stripIndent(_templateObject3, expectedChecksum, checksum);
132
-
175
+ var text = stripIndent(_templateObject3(), expectedChecksum, checksum);
133
176
  throw new Error(text);
134
177
  });
135
178
  }
@@ -138,69 +181,59 @@ var verifyDownloadedFile = function verifyDownloadedFile(filename, expectedSize,
138
181
  // maybe we don't have a checksum, but at least CDN returns content length
139
182
  // which we can check against the file size
140
183
  debug('only checking expected file size %d', expectedSize);
141
-
142
184
  return util.getFileSize(filename).then(function (filesize) {
143
185
  if (filesize === expectedSize) {
144
186
  debug('downloaded file has the expected size ✅');
145
-
146
187
  return;
147
188
  }
148
189
 
149
190
  debug('raising error: file size mismatch');
150
- var text = stripIndent(_templateObject4, expectedSize, filesize);
151
-
191
+ var text = stripIndent(_templateObject4(), expectedSize, filesize);
152
192
  throw new Error(text);
153
193
  });
154
194
  }
155
195
 
156
196
  debug('downloaded file lacks checksum or size to verify');
157
-
158
197
  return Promise.resolve();
159
- };
160
-
161
- // downloads from given url
198
+ }; // downloads from given url
162
199
  // return an object with
163
200
  // {filename: ..., downloaded: true}
201
+
202
+
164
203
  var downloadFromUrl = function downloadFromUrl(_ref) {
165
204
  var url = _ref.url,
166
205
  downloadDestination = _ref.downloadDestination,
167
206
  progress = _ref.progress;
168
-
169
207
  return new Promise(function (resolve, reject) {
170
208
  var proxy = getProxyUrl();
171
-
172
209
  debug('Downloading package', {
173
210
  url: url,
174
211
  proxy: proxy,
175
212
  downloadDestination: downloadDestination
176
213
  });
177
-
178
- var redirectVersion = void 0;
179
-
214
+ var redirectVersion;
180
215
  var req = request({
181
216
  url: url,
182
217
  proxy: proxy,
183
218
  followRedirect: function followRedirect(response) {
184
219
  var version = response.headers['x-version'];
185
-
186
220
  debug('redirect version:', version);
221
+
187
222
  if (version) {
188
223
  // set the version in options if we have one.
189
224
  // this insulates us from potential redirect
190
225
  // problems where version would be set to undefined.
191
226
  redirectVersion = version;
192
- }
227
+ } // yes redirect
228
+
193
229
 
194
- // yes redirect
195
230
  return true;
196
231
  }
197
- });
232
+ }); // closure
198
233
 
199
- // closure
200
234
  var started = null;
201
- var expectedSize = void 0;
202
- var expectedChecksum = void 0;
203
-
235
+ var expectedSize;
236
+ var expectedChecksum;
204
237
  requestProgress(req, {
205
238
  throttle: progress.throttle
206
239
  }).on('response', function (response) {
@@ -209,7 +242,6 @@ var downloadFromUrl = function downloadFromUrl(_ref) {
209
242
  // these custom headers "x-amz-meta-..."
210
243
  // see https://github.com/cypress-io/cypress/pull/4092
211
244
  expectedSize = response.headers['x-amz-meta-size'] || response.headers['content-length'];
212
-
213
245
  expectedChecksum = response.headers['x-amz-meta-checksum'];
214
246
 
215
247
  if (expectedChecksum) {
@@ -220,77 +252,72 @@ var downloadFromUrl = function downloadFromUrl(_ref) {
220
252
  // convert from string (all Amazon custom headers are strings)
221
253
  expectedSize = Number(expectedSize);
222
254
  debug('expected file size %d', expectedSize);
223
- }
224
-
225
- // start counting now once we've gotten
255
+ } // start counting now once we've gotten
226
256
  // response headers
227
- started = new Date();
228
257
 
229
- // if our status code does not start with 200
230
- if (!/^2/.test(response.statusCode)) {
231
- debug('response code %d', response.statusCode);
232
258
 
233
- var err = new Error(stripIndent(_templateObject5, response.statusCode, response.statusMessage));
259
+ started = new Date(); // if our status code does not start with 200
234
260
 
261
+ if (!/^2/.test(response.statusCode)) {
262
+ debug('response code %d', response.statusCode);
263
+ var err = new Error(stripIndent(_templateObject5(), response.statusCode, response.statusMessage));
235
264
  reject(err);
236
265
  }
237
266
  }).on('error', reject).on('progress', function (state) {
238
267
  // total time we've elapsed
239
268
  // starting on our first progress notification
240
- var elapsed = new Date() - started;
269
+ var elapsed = new Date() - started; // request-progress sends a value between 0 and 1
241
270
 
242
- // request-progress sends a value between 0 and 1
243
271
  var percentage = util.convertPercentToPercentage(state.percent);
272
+ var eta = util.calculateEta(percentage, elapsed); // send up our percent and seconds remaining
244
273
 
245
- var eta = util.calculateEta(percentage, elapsed);
246
-
247
- // send up our percent and seconds remaining
248
274
  progress.onProgress(percentage, util.secsRemaining(eta));
249
- })
250
- // save this download here
275
+ }) // save this download here
251
276
  .pipe(fs.createWriteStream(downloadDestination)).on('finish', function () {
252
277
  debug('downloading finished');
253
-
254
278
  verifyDownloadedFile(downloadDestination, expectedSize, expectedChecksum).then(function () {
255
279
  return resolve(redirectVersion);
256
280
  }, reject);
257
281
  });
258
282
  });
259
283
  };
260
-
261
284
  /**
262
285
  * Download Cypress.zip from external url to local file.
263
286
  * @param [string] version Could be "3.3.0" or full URL
264
287
  * @param [string] downloadDestination Local filename to save as
265
288
  */
289
+
290
+
266
291
  var start = function start(opts) {
267
292
  var version = opts.version,
268
293
  downloadDestination = opts.downloadDestination,
269
294
  progress = opts.progress;
270
295
 
271
-
272
296
  if (!downloadDestination) {
273
297
  la(is.unemptyString(downloadDestination), 'missing download dir', opts);
274
298
  }
275
299
 
276
300
  if (!progress) {
277
- progress = { onProgress: function onProgress() {
301
+ progress = {
302
+ onProgress: function onProgress() {
278
303
  return {};
279
- } };
304
+ }
305
+ };
280
306
  }
281
307
 
282
308
  var url = getUrl(version);
283
-
284
309
  progress.throttle = 100;
285
-
286
310
  debug('needed Cypress version: %s', version);
287
311
  debug('source url %s', url);
288
- debug('downloading cypress.zip to "' + downloadDestination + '"');
312
+ debug("downloading cypress.zip to \"".concat(downloadDestination, "\"")); // ensure download dir exists
289
313
 
290
- // ensure download dir exists
291
314
  return fs.ensureDirAsync(path.dirname(downloadDestination)).then(function () {
292
- return downloadFromUrl({ url: url, downloadDestination: downloadDestination, progress: progress });
293
- }).catch(function (err) {
315
+ return downloadFromUrl({
316
+ url: url,
317
+ downloadDestination: downloadDestination,
318
+ progress: progress
319
+ });
320
+ })["catch"](function (err) {
294
321
  return prettyDownloadErr(err, version);
295
322
  });
296
323
  };