@automattic/vip 2.21.0 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/assets/dev-env.lando.template.yml.ejs +1 -1
  3. package/automattic-vip-2.23.0.tgz +0 -0
  4. package/dist/bin/vip-app-list.js +0 -12
  5. package/dist/bin/vip-app.js +6 -13
  6. package/dist/bin/vip-cache-purge-url.js +4 -19
  7. package/dist/bin/vip-cache.js +0 -2
  8. package/dist/bin/vip-config-envvar-delete.js +4 -19
  9. package/dist/bin/vip-config-envvar-get-all.js +6 -19
  10. package/dist/bin/vip-config-envvar-get.js +4 -15
  11. package/dist/bin/vip-config-envvar-list.js +8 -20
  12. package/dist/bin/vip-config-envvar-set.js +4 -23
  13. package/dist/bin/vip-config-envvar.js +0 -2
  14. package/dist/bin/vip-config-software-get.js +0 -17
  15. package/dist/bin/vip-config-software-update.js +6 -22
  16. package/dist/bin/vip-config-software.js +0 -2
  17. package/dist/bin/vip-config.js +0 -2
  18. package/dist/bin/vip-dev-env-create.js +0 -18
  19. package/dist/bin/vip-dev-env-destroy.js +0 -9
  20. package/dist/bin/vip-dev-env-exec.js +0 -12
  21. package/dist/bin/vip-dev-env-import-media.js +0 -7
  22. package/dist/bin/vip-dev-env-import-sql.js +2 -17
  23. package/dist/bin/vip-dev-env-import.js +0 -3
  24. package/dist/bin/vip-dev-env-info.js +0 -10
  25. package/dist/bin/vip-dev-env-list.js +0 -7
  26. package/dist/bin/vip-dev-env-start.js +4 -14
  27. package/dist/bin/vip-dev-env-stop.js +0 -9
  28. package/dist/bin/vip-dev-env-update.js +0 -11
  29. package/dist/bin/vip-dev-env.js +0 -2
  30. package/dist/bin/vip-import-media-abort.js +0 -18
  31. package/dist/bin/vip-import-media-status.js +0 -12
  32. package/dist/bin/vip-import-media.js +6 -23
  33. package/dist/bin/vip-import-sql-status.js +0 -12
  34. package/dist/bin/vip-import-sql.js +40 -103
  35. package/dist/bin/vip-import-validate-files.js +21 -42
  36. package/dist/bin/vip-import-validate-sql.js +0 -8
  37. package/dist/bin/vip-import.js +0 -3
  38. package/dist/bin/vip-logs.js +20 -50
  39. package/dist/bin/vip-search-replace.js +8 -14
  40. package/dist/bin/vip-sync.js +2 -25
  41. package/dist/bin/vip-validate-preflight.js +427 -0
  42. package/dist/bin/vip-validate.js +19 -0
  43. package/dist/bin/vip-whoami.js +2 -14
  44. package/dist/bin/vip-wp.js +39 -89
  45. package/dist/bin/vip.js +5 -35
  46. package/dist/lib/analytics/clients/pendo.js +9 -18
  47. package/dist/lib/analytics/clients/stub.js +1 -3
  48. package/dist/lib/analytics/clients/tracks.js +11 -20
  49. package/dist/lib/analytics/index.js +4 -11
  50. package/dist/lib/api/app.js +1 -11
  51. package/dist/lib/api/cache-purge.js +4 -7
  52. package/dist/lib/api/feature-flags.js +1 -4
  53. package/dist/lib/api/http.js +9 -15
  54. package/dist/lib/api/user.js +1 -7
  55. package/dist/lib/api.js +17 -19
  56. package/dist/lib/app-logs/app-logs.js +2 -9
  57. package/dist/lib/app.js +2 -5
  58. package/dist/lib/cli/apiConfig.js +4 -19
  59. package/dist/lib/cli/command.js +43 -133
  60. package/dist/lib/cli/config.js +1 -5
  61. package/dist/lib/cli/envAlias.js +14 -15
  62. package/dist/lib/cli/exit.js +4 -6
  63. package/dist/lib/cli/format.js +8 -50
  64. package/dist/lib/cli/progress.js +13 -42
  65. package/dist/lib/cli/prompt.js +1 -5
  66. package/dist/lib/cli/repo.js +7 -20
  67. package/dist/lib/client-file-uploader.js +44 -97
  68. package/dist/lib/config/software.js +2 -52
  69. package/dist/lib/constants/dev-environment.js +1 -2
  70. package/dist/lib/constants/file-size.js +1 -1
  71. package/dist/lib/constants/vipgo.js +1 -1
  72. package/dist/lib/dev-environment/dev-environment-cli.js +68 -155
  73. package/dist/lib/dev-environment/dev-environment-core.js +73 -194
  74. package/dist/lib/dev-environment/dev-environment-lando.js +16 -71
  75. package/dist/lib/env.js +1 -4
  76. package/dist/lib/envvar/api-delete.js +1 -4
  77. package/dist/lib/envvar/api-get-all.js +1 -4
  78. package/dist/lib/envvar/api-get.js +1 -2
  79. package/dist/lib/envvar/api-list.js +3 -4
  80. package/dist/lib/envvar/api-set.js +1 -4
  81. package/dist/lib/envvar/api.js +5 -16
  82. package/dist/lib/envvar/input.js +1 -8
  83. package/dist/lib/envvar/logging.js +2 -6
  84. package/dist/lib/envvar/read-file.js +1 -3
  85. package/dist/lib/http/proxy-agent.js +17 -22
  86. package/dist/lib/keychain/browser.js +1 -4
  87. package/dist/lib/keychain/insecure.js +1 -10
  88. package/dist/lib/keychain/secure.js +1 -8
  89. package/dist/lib/keychain.js +4 -8
  90. package/dist/lib/logout.js +0 -6
  91. package/dist/lib/media-import/media-file-import.js +3 -7
  92. package/dist/lib/media-import/progress.js +6 -17
  93. package/dist/lib/media-import/status.js +14 -65
  94. package/dist/lib/read-file.js +1 -6
  95. package/dist/lib/rollbar.js +1 -7
  96. package/dist/lib/search-and-replace.js +9 -41
  97. package/dist/lib/site-import/db-file-import.js +3 -9
  98. package/dist/lib/site-import/status.js +17 -74
  99. package/dist/lib/token.js +1 -33
  100. package/dist/lib/tracker.js +4 -20
  101. package/dist/lib/user-error.js +0 -2
  102. package/dist/lib/validations/is-multi-site-sql-dump.js +4 -12
  103. package/dist/lib/validations/is-multi-site.js +5 -21
  104. package/dist/lib/validations/is-multisite-domain-mapped.js +5 -31
  105. package/dist/lib/validations/line-by-line.js +4 -16
  106. package/dist/lib/validations/site-type.js +10 -19
  107. package/dist/lib/validations/sql.js +11 -76
  108. package/dist/lib/validations/utils.js +1 -6
  109. package/dist/lib/vip-import-validate-files.js +82 -109
  110. package/npm-shrinkwrap.json +2407 -1800
  111. package/package.json +18 -15
@@ -10,25 +10,17 @@
10
10
  "use strict";
11
11
 
12
12
  var _command = _interopRequireDefault(require("../lib/cli/command"));
13
-
14
13
  var exit = _interopRequireWildcard(require("../lib/cli/exit"));
15
-
16
14
  var _sql = require("../lib/validations/sql");
17
-
18
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
18
  (0, _command.default)({
25
19
  requiredArgs: 1
26
20
  }).example('vip import validate-sql <file>', 'Run the import validation against file').argv(process.argv, async arg => {
27
21
  const filename = arg[0];
28
-
29
22
  if (!arg && !filename) {
30
23
  exit.withError('You must pass in a filename');
31
24
  }
32
-
33
25
  (0, _sql.validate)(filename);
34
26
  });
@@ -10,11 +10,8 @@
10
10
  "use strict";
11
11
 
12
12
  var _command = _interopRequireDefault(require("../lib/cli/command"));
13
-
14
13
  var _tracker = require("../lib/tracker");
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
15
  (0, _command.default)().command('sql', 'Import SQL to your database from a file').command('validate-sql', 'Validate your SQL dump').command('validate-files', 'Validate your media file library').command('media', 'Import media files to the production environment of your application from a compressed web archive').example('vip import sql @mysite.develop <file.sql>', 'Import the given SQL file to your site').example('vip import media @mysite.production https://<path_to_publicly_accessible_archive>', 'Import contents of the given archive file into the media library of your site').argv(process.argv, async () => {
19
16
  await (0, _tracker.trackEvent)('vip_import_command_execute');
20
17
  });
@@ -8,31 +8,20 @@
8
8
  Object.defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
- exports.getLogs = getLogs;
11
+ exports.appQuery = void 0;
12
12
  exports.followLogs = followLogs;
13
+ exports.getLogs = getLogs;
13
14
  exports.validateInputs = validateInputs;
14
- exports.appQuery = void 0;
15
-
16
15
  var _chalk = _interopRequireDefault(require("chalk"));
17
-
18
16
  var _command = _interopRequireDefault(require("../lib/cli/command"));
19
-
20
17
  var _rollbar = require("../lib/rollbar");
21
-
22
18
  var _tracker = require("../lib/tracker");
23
-
24
19
  var logsLib = _interopRequireWildcard(require("../lib/app-logs/app-logs"));
25
-
26
20
  var exit = _interopRequireWildcard(require("../lib/cli/exit"));
27
-
28
21
  var _format = require("../lib/cli/format");
29
-
30
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
-
36
25
  /**
37
26
  * Internal dependencies
38
27
  */
@@ -43,49 +32,43 @@ const ALLOWED_FORMATS = ['csv', 'json', 'text'];
43
32
  const DEFAULT_POLLING_DELAY_IN_SECONDS = 30;
44
33
  const MIN_POLLING_DELAY_IN_SECONDS = 5;
45
34
  const MAX_POLLING_DELAY_IN_SECONDS = 300;
46
-
47
35
  async function getLogs(arg, opt) {
48
36
  validateInputs(opt.type, opt.limit, opt.format);
49
37
  const trackingParams = getBaseTrackingParams(opt);
50
38
  await (0, _tracker.trackEvent)('logs_command_execute', trackingParams);
51
39
  let logs;
52
-
53
40
  try {
54
41
  if (opt.follow) {
55
42
  return await followLogs(opt);
56
43
  }
57
-
58
44
  logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, opt.limit);
59
45
  } catch (error) {
60
46
  _rollbar.rollbar.error(error);
61
-
62
- await (0, _tracker.trackEvent)('logs_command_error', { ...trackingParams,
47
+ await (0, _tracker.trackEvent)('logs_command_error', {
48
+ ...trackingParams,
63
49
  error: error.message
64
50
  });
65
51
  return exit.withError(error.message);
66
52
  }
67
-
68
- await (0, _tracker.trackEvent)('logs_command_success', { ...trackingParams,
53
+ await (0, _tracker.trackEvent)('logs_command_success', {
54
+ ...trackingParams,
69
55
  total: logs.nodes.length
70
56
  });
71
-
72
57
  if (!logs.nodes.length) {
73
58
  console.error('No logs found');
74
59
  return;
75
60
  }
76
-
77
61
  printLogs(logs.nodes, opt.format);
78
62
  }
79
-
80
63
  async function followLogs(opt) {
81
64
  let after = null;
82
- let isFirstRequest = true; // How many times have we polled?
83
-
65
+ let isFirstRequest = true;
66
+ // How many times have we polled?
84
67
  let requestNumber = 0;
85
- const trackingParams = getBaseTrackingParams(opt); // Set an initial default delay
68
+ const trackingParams = getBaseTrackingParams(opt);
86
69
 
70
+ // Set an initial default delay
87
71
  let delay = DEFAULT_POLLING_DELAY_IN_SECONDS;
88
-
89
72
  while (true) {
90
73
  const limit = isFirstRequest ? opt.limit : LIMIT_MAX;
91
74
  requestNumber++;
@@ -93,49 +76,44 @@ async function followLogs(opt) {
93
76
  trackingParams.request_delay = delay;
94
77
  trackingParams.limit = limit;
95
78
  let logs;
96
-
97
79
  try {
98
80
  var _logs;
99
-
100
81
  logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, limit, after);
101
- await (0, _tracker.trackEvent)('logs_command_follow_success', { ...trackingParams,
82
+ await (0, _tracker.trackEvent)('logs_command_follow_success', {
83
+ ...trackingParams,
102
84
  total: (_logs = logs) === null || _logs === void 0 ? void 0 : _logs.nodes.length
103
85
  });
104
86
  } catch (error) {
105
- await (0, _tracker.trackEvent)('logs_command_follow_error', { ...trackingParams,
87
+ await (0, _tracker.trackEvent)('logs_command_follow_error', {
88
+ ...trackingParams,
106
89
  error: error.message
107
- }); // If the first request fails we don't want to retry (it's probably not recoverable)
90
+ });
108
91
 
92
+ // If the first request fails we don't want to retry (it's probably not recoverable)
109
93
  if (isFirstRequest) {
110
94
  console.error(`${_chalk.default.red('Error:')} Failed to fetch logs.`);
111
95
  break;
112
- } // Increase the delay on errors to avoid overloading the server, up to a max of 5 minutes
113
-
114
-
96
+ }
97
+ // Increase the delay on errors to avoid overloading the server, up to a max of 5 minutes
115
98
  delay += DEFAULT_POLLING_DELAY_IN_SECONDS;
116
99
  delay = Math.min(delay, MAX_POLLING_DELAY_IN_SECONDS);
117
100
  console.error(`${_chalk.default.red('Error:')} Failed to fetch logs. Trying again in ${delay} seconds.`);
118
-
119
101
  _rollbar.rollbar.error(error);
120
102
  }
121
-
122
103
  if (logs) {
123
104
  var _logs2, _logs3, _logs4;
124
-
125
105
  if ((_logs2 = logs) !== null && _logs2 !== void 0 && _logs2.nodes.length) {
126
106
  printLogs(logs.nodes, opt.format);
127
107
  }
128
-
129
108
  after = (_logs3 = logs) === null || _logs3 === void 0 ? void 0 : _logs3.nextCursor;
130
- isFirstRequest = false; // Keep a sane lower limit of MIN_POLLING_DELAY_IN_SECONDS just in case something goes wrong in the server-side
109
+ isFirstRequest = false;
131
110
 
111
+ // Keep a sane lower limit of MIN_POLLING_DELAY_IN_SECONDS just in case something goes wrong in the server-side
132
112
  delay = Math.max(((_logs4 = logs) === null || _logs4 === void 0 ? void 0 : _logs4.pollingDelaySeconds) || DEFAULT_POLLING_DELAY_IN_SECONDS, MIN_POLLING_DELAY_IN_SECONDS);
133
113
  }
134
-
135
114
  await new Promise(resolve => setTimeout(resolve, delay * 1000));
136
115
  }
137
116
  }
138
-
139
117
  function getBaseTrackingParams(opt) {
140
118
  return {
141
119
  command: 'vip logs',
@@ -148,7 +126,6 @@ function getBaseTrackingParams(opt) {
148
126
  format: opt.format
149
127
  };
150
128
  }
151
-
152
129
  function printLogs(logs, format) {
153
130
  // Strip out __typename
154
131
  logs = logs.map(log => {
@@ -162,10 +139,8 @@ function printLogs(logs, format) {
162
139
  };
163
140
  });
164
141
  let output = '';
165
-
166
142
  if (format && 'text' === format) {
167
143
  const rows = [];
168
-
169
144
  for (const {
170
145
  timestamp,
171
146
  message
@@ -176,24 +151,19 @@ function printLogs(logs, format) {
176
151
  } else {
177
152
  output = (0, _format.formatData)(logs, format);
178
153
  }
179
-
180
154
  console.log(output);
181
155
  }
182
-
183
156
  function validateInputs(type, limit, format) {
184
157
  if (!ALLOWED_TYPES.includes(type)) {
185
158
  exit.withError(`Invalid type: ${type}. The supported types are: ${ALLOWED_TYPES.join(', ')}.`);
186
159
  }
187
-
188
160
  if (!ALLOWED_FORMATS.includes(format)) {
189
161
  exit.withError(`Invalid format: ${format}. The supported formats are: ${ALLOWED_FORMATS.join(', ')}.`);
190
162
  }
191
-
192
163
  if (!Number.isInteger(limit) || limit < LIMIT_MIN || limit > logsLib.LIMIT_MAX) {
193
164
  exit.withError(`Invalid limit: ${limit}. It should be a number between ${LIMIT_MIN} and ${logsLib.LIMIT_MAX}.`);
194
165
  }
195
166
  }
196
-
197
167
  const appQuery = `
198
168
  id
199
169
  name
@@ -11,33 +11,30 @@
11
11
  "use strict";
12
12
 
13
13
  var _debug = _interopRequireDefault(require("debug"));
14
-
15
14
  var _command = _interopRequireDefault(require("../lib/cli/command"));
16
-
17
15
  var exit = _interopRequireWildcard(require("../lib/cli/exit"));
18
-
19
16
  var _searchAndReplace = require("../lib/search-and-replace");
20
-
21
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
-
23
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
-
25
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
-
27
20
  /**
28
21
  * Internal dependencies
29
22
  */
30
- const debug = (0, _debug.default)('@automattic/vip:bin:vip-search-replace'); // Command examples
23
+ const debug = (0, _debug.default)('@automattic/vip:bin:vip-search-replace');
31
24
 
32
- const examples = [// `search-replace` flag
25
+ // Command examples
26
+ const examples = [
27
+ // `search-replace` flag
33
28
  {
34
29
  usage: 'vip search-replace <file.sql> --search-replace="from,to"',
35
30
  description: 'Replace instances of <from> with <to> in the provided <file.sql>\n' + ' * Ensure there are no spaces between your search-replace parameters'
36
- }, // `in-place` flag
31
+ },
32
+ // `in-place` flag
37
33
  {
38
34
  usage: 'vip search-replace <file.sql> --search-replace="from,to" --in-place',
39
35
  description: 'Perform Search and Replace explicitly on the provided input <file.sql> file'
40
- }, // `output` flag
36
+ },
37
+ // `output` flag
41
38
  {
42
39
  usage: 'vip search-replace <file.sql> --search-replace="from,to" --output="<output.sql>"',
43
40
  description: 'Search and Replace to the specified output <output.sql> file\n' + ' * Has no effect when the `in-place` flag is used'
@@ -53,15 +50,12 @@ const examples = [// `search-replace` flag
53
50
  } = opt;
54
51
  debug('Args: ', arg, 'searchReplace: ', searchReplace);
55
52
  const filename = arg[0];
56
-
57
53
  if (!arg && !filename) {
58
54
  exit.withError('You must pass in a filename');
59
55
  }
60
-
61
56
  if (!searchReplace || !searchReplace.length) {
62
57
  exit.withError('You must provide a pair of strings (separated by comma) such as original,replacement');
63
58
  }
64
-
65
59
  const isImport = false;
66
60
  await (0, _searchAndReplace.searchAndReplace)(filename, searchReplace, {
67
61
  isImport,
@@ -6,23 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  var _chalk = _interopRequireDefault(require("chalk"));
9
-
10
9
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
11
-
12
10
  var _singleLineLog = require("single-line-log");
13
-
14
11
  var _api = _interopRequireDefault(require("../lib/api"));
15
-
16
12
  var _app2 = _interopRequireDefault(require("../lib/api/app"));
17
-
18
13
  var _command = _interopRequireDefault(require("../lib/cli/command"));
19
-
20
14
  var _format = require("../lib/cli/format");
21
-
22
15
  var _tracker = require("../lib/tracker");
23
-
24
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
17
  /**
27
18
  * Internal dependencies
28
19
  */
@@ -41,7 +32,6 @@ const appQuery = `id,name,environments{
41
32
  const api = await (0, _api.default)();
42
33
  let syncing = false;
43
34
  await (0, _tracker.trackEvent)('sync_command_execute');
44
-
45
35
  try {
46
36
  await api.mutate({
47
37
  // $FlowFixMe: gql template is not supported by flow
@@ -64,47 +54,40 @@ const appQuery = `id,name,environments{
64
54
  } catch (error) {
65
55
  if (error.graphQLErrors) {
66
56
  let bail = false;
67
-
68
57
  for (const err of error.graphQLErrors) {
69
58
  if (err.message !== 'Site is already syncing') {
70
59
  bail = true;
71
60
  console.log(_chalk.default.red('Error:'), err.message);
72
61
  }
73
- } // TODO: Log e
62
+ }
74
63
 
64
+ // TODO: Log e
75
65
 
76
66
  if (bail) {
77
67
  return;
78
68
  }
79
69
  }
80
-
81
70
  syncing = true;
82
71
  await (0, _tracker.trackEvent)('sync_command_execute_error', {
83
72
  error: `Already syncing: ${error.message}`
84
73
  });
85
74
  }
86
-
87
75
  const sprite = {
88
76
  count: 0,
89
77
  sprite: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],
90
-
91
78
  next() {
92
79
  this.count++;
93
-
94
80
  if (this.count >= this.sprite.length) {
95
81
  this.count = 0;
96
82
  }
97
-
98
83
  return {
99
84
  value: this.sprite[this.count],
100
85
  done: false
101
86
  };
102
87
  }
103
-
104
88
  };
105
89
  const application = await (0, _app2.default)(opts.app.id, appQuery);
106
90
  let environment = application.environments.find(env => env.id === opts.env.id);
107
-
108
91
  if (syncing) {
109
92
  if (environment.syncProgress.status === 'running') {
110
93
  console.log(_chalk.default.yellow('Note:'), 'A data sync is already running');
@@ -113,7 +96,6 @@ const appQuery = `id,name,environments{
113
96
  console.log(_chalk.default.yellow('Note:'), 'Please wait a few minutes before trying again');
114
97
  }
115
98
  }
116
-
117
99
  console.log();
118
100
  console.log(` syncing: ${_chalk.default.yellow(opts.app.name)}`);
119
101
  console.log(` from: ${(0, _format.formatEnvironment)('production')}`);
@@ -143,7 +125,6 @@ const appQuery = `id,name,environments{
143
125
  environment = _app.environments.find(env => env.id === opts.env.id);
144
126
  });
145
127
  }
146
-
147
128
  const marks = {
148
129
  pending: '○',
149
130
  running: _chalk.default.blueBright(sprite.next().value),
@@ -162,12 +143,10 @@ const appQuery = `id,name,environments{
162
143
  }
163
144
  });
164
145
  out.push('');
165
-
166
146
  switch (environment.syncProgress.status) {
167
147
  case 'running':
168
148
  out.push(`${marks.running} Press ^C to hide progress. Data sync will continue in the background.`);
169
149
  break;
170
-
171
150
  case 'failed':
172
151
  clearInterval(progress);
173
152
  await (0, _tracker.trackEvent)('sync_command_error', {
@@ -176,7 +155,6 @@ const appQuery = `id,name,environments{
176
155
  out.push(`${marks.failed} Data Sync is finished for ${opts.app.name}`);
177
156
  out.push('');
178
157
  break;
179
-
180
158
  case 'success':
181
159
  default:
182
160
  clearInterval(progress);
@@ -185,7 +163,6 @@ const appQuery = `id,name,environments{
185
163
  out.push('');
186
164
  break;
187
165
  }
188
-
189
166
  (0, _singleLineLog.stdout)(out.join('\n'));
190
167
  }, 100);
191
168
  });