@automattic/vip 2.29.1 → 2.30.0-dev1

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.
@@ -0,0 +1,2 @@
1
+ sonar.sources=src, helpers
2
+ sonar.tests=__tests__
@@ -8,7 +8,6 @@ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
8
8
  var _command = _interopRequireDefault(require("../lib/cli/command"));
9
9
  var _api = _interopRequireDefault(require("../lib/api"));
10
10
  var _tracker = require("../lib/tracker");
11
- var _rollbar = require("../lib/rollbar");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
12
  /**
14
13
  * Internal dependencies
@@ -43,7 +42,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
43
42
  await (0, _tracker.trackEvent)('app_list_command_fetch_error', {
44
43
  error: message
45
44
  });
46
- _rollbar.rollbar.error(err);
47
45
  console.log('Failed to fetch apps: %s', message);
48
46
  return;
49
47
  }
@@ -19,7 +19,6 @@ var _command = _interopRequireDefault(require("../lib/cli/command"));
19
19
  var _api = require("../lib/envvar/api");
20
20
  var _input = require("../lib/envvar/input");
21
21
  var _logging = require("../lib/envvar/logging");
22
- var _rollbar = require("../lib/rollbar");
23
22
  var _tracker = require("../lib/tracker");
24
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
24
  /**
@@ -60,7 +59,6 @@ async function deleteEnvVarCommand(arg, opt) {
60
59
  }
61
60
  }
62
61
  await (0, _api.deleteEnvVar)(opt.app.id, opt.env.id, name).catch(async err => {
63
- _rollbar.rollbar.error(err);
64
62
  await (0, _tracker.trackEvent)('envvar_delete_mutation_error', {
65
63
  ...trackingParams,
66
64
  error: err.message
@@ -19,7 +19,6 @@ var _command = _interopRequireDefault(require("../lib/cli/command"));
19
19
  var _format = require("../lib/cli/format");
20
20
  var _api = require("../lib/envvar/api");
21
21
  var _logging = require("../lib/envvar/logging");
22
- var _rollbar = require("../lib/rollbar");
23
22
  var _tracker = require("../lib/tracker");
24
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
24
  /**
@@ -43,7 +42,6 @@ async function getAllEnvVarsCommand(arg, opt) {
43
42
  (0, _logging.debug)(`Request: Get all environment variables for ${(0, _logging.getEnvContext)(opt.app, opt.env)}`);
44
43
  await (0, _tracker.trackEvent)('envvar_get_all_command_execute', trackingParams);
45
44
  const envvars = await (0, _api.getEnvVars)(opt.app.id, opt.env.id).catch(async err => {
46
- _rollbar.rollbar.error(err);
47
45
  await (0, _tracker.trackEvent)('envvar_get_all_query_error', {
48
46
  ...trackingParams,
49
47
  error: err.message
@@ -18,7 +18,6 @@ var _chalk = _interopRequireDefault(require("chalk"));
18
18
  var _command = _interopRequireDefault(require("../lib/cli/command"));
19
19
  var _api = require("../lib/envvar/api");
20
20
  var _logging = require("../lib/envvar/logging");
21
- var _rollbar = require("../lib/rollbar");
22
21
  var _tracker = require("../lib/tracker");
23
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
23
  /**
@@ -44,7 +43,6 @@ async function getEnvVarCommand(arg, opt) {
44
43
  (0, _logging.debug)(`Request: Get environment variable ${JSON.stringify(name)} for ${(0, _logging.getEnvContext)(opt.app, opt.env)}`);
45
44
  await (0, _tracker.trackEvent)('envvar_get_command_execute', trackingParams);
46
45
  const envvar = await (0, _api.getEnvVar)(opt.app.id, opt.env.id, name).catch(async err => {
47
- _rollbar.rollbar.error(err);
48
46
  await (0, _tracker.trackEvent)('envvar_get_query_error', {
49
47
  ...trackingParams,
50
48
  error: err.message
@@ -19,7 +19,6 @@ var _command = _interopRequireDefault(require("../lib/cli/command"));
19
19
  var _format = require("../lib/cli/format");
20
20
  var _api = require("../lib/envvar/api");
21
21
  var _logging = require("../lib/envvar/logging");
22
- var _rollbar = require("../lib/rollbar");
23
22
  var _tracker = require("../lib/tracker");
24
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
24
  /**
@@ -43,7 +42,6 @@ async function listEnvVarsCommand(arg, opt) {
43
42
  (0, _logging.debug)(`Request: list environment variables for ${(0, _logging.getEnvContext)(opt.app, opt.env)}`);
44
43
  await (0, _tracker.trackEvent)('envvar_list_command_execute', trackingParams);
45
44
  const envvars = await (0, _api.listEnvVars)(opt.app.id, opt.env.id).catch(async err => {
46
- _rollbar.rollbar.error(err);
47
45
  await (0, _tracker.trackEvent)('envvar_list_query_error', {
48
46
  ...trackingParams,
49
47
  error: err.message
@@ -20,7 +20,6 @@ var _api = require("../lib/envvar/api");
20
20
  var _input = require("../lib/envvar/input");
21
21
  var _logging = require("../lib/envvar/logging");
22
22
  var _readFile = require("../lib/envvar/read-file");
23
- var _rollbar = require("../lib/rollbar");
24
23
  var _tracker = require("../lib/tracker");
25
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
25
  /**
@@ -82,7 +81,6 @@ async function setEnvVarCommand(arg, opt) {
82
81
  }
83
82
  }
84
83
  await (0, _api.setEnvVar)(opt.app.id, opt.env.id, name, value).catch(async err => {
85
- _rollbar.rollbar.error(err);
86
84
  await (0, _tracker.trackEvent)('envvar_set_mutation_error', {
87
85
  ...trackingParams,
88
86
  error: err.message
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ *
5
+ * @format
6
+ */
7
+
8
+ /**
9
+ * External dependencies
10
+ */
11
+ "use strict";
12
+
13
+ var _chalk = _interopRequireDefault(require("chalk"));
14
+ var _command = _interopRequireDefault(require("../lib/cli/command"));
15
+ var _devEnvironmentCore = require("../lib/dev-environment/dev-environment-core");
16
+ var _devEnvironmentLando = require("../lib/dev-environment/dev-environment-lando");
17
+ var _userError = _interopRequireDefault(require("../lib/user-error"));
18
+ var _devEnvSyncSql = require("../commands/dev-env-sync-sql");
19
+ var _devEnvironment = require("../lib/constants/dev-environment");
20
+ var _tracker = require("../lib/tracker");
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+ const examples = [{
26
+ usage: `${_devEnvironment.DEV_ENVIRONMENT_FULL_COMMAND} sync sql @my-test.develop --slug=my_site`,
27
+ description: 'Syncs with the `my-test` site\'s `develop` environment database into `my_site`'
28
+ }];
29
+ const appQuery = `
30
+ id,
31
+ name,
32
+ type,
33
+ organization { id, name },
34
+ environments{
35
+ id
36
+ appId
37
+ type
38
+ name
39
+ primaryDomain { name }
40
+ uniqueLabel
41
+ isMultisite
42
+ }
43
+ `;
44
+ (0, _command.default)({
45
+ appContext: true,
46
+ appQuery,
47
+ envContext: true,
48
+ requiredArgs: 0,
49
+ module: 'dev-env-sync-sql'
50
+ }).option('slug', 'Custom name of the dev environment').examples(examples).argv(process.argv, async (arg, {
51
+ app,
52
+ env,
53
+ slug
54
+ }) => {
55
+ const trackerFn = (0, _tracker.makeCommandTracker)('dev_env_sync_sql', {
56
+ app: app.id,
57
+ env: env.uniqueLabel,
58
+ slug
59
+ });
60
+ await trackerFn('execute');
61
+ if (env.isMultisite) {
62
+ console.log(_chalk.default.yellow('You seem to be trying to sync a SQL database for a network site.'));
63
+ console.log(_chalk.default.yellow('Unfortunately, the current version of our tool does not yet support syncing network sites.\n'));
64
+ console.log(_chalk.default.yellow('However, you can manually export the database using the following command:'));
65
+ console.log(_chalk.default.yellow(_chalk.default.bold(`vip export sql @${app.id}.${env.uniqueLabel} --output=${app.id}-${env.uniqueLabel}-exported.sql.gz\n`)));
66
+ console.log(_chalk.default.yellow('After exporting the database, you\'ll need to perform the necessary search and replace operations on the exported file to update any relevant data or configurations.'));
67
+ console.log(_chalk.default.yellow('See: https://docs.wpvip.com/how-tos/dev-env-add-content/#h-3-import-the-sql-file\n'));
68
+ console.log(_chalk.default.yellow('Once you\'ve made the required changes, you can import the modified SQL file into your development environment using the following command:'));
69
+ console.log(_chalk.default.yellow(_chalk.default.bold(`vip dev-env import sql ${app.id}-${env.uniqueLabel}-exported.sql.gz --slug=${slug}`)));
70
+ await trackerFn('aborted', {
71
+ error_type: 'multisite_not_supported'
72
+ });
73
+ process.exit(0);
74
+ }
75
+ const lando = await (0, _devEnvironmentLando.bootstrapLando)();
76
+ const envPath = (0, _devEnvironmentCore.getEnvironmentPath)(slug);
77
+ if (!(await (0, _devEnvironmentLando.isEnvUp)(lando, envPath))) {
78
+ await trackerFn('env_not_running_error', {
79
+ errorMessage: 'Environment was not running'
80
+ });
81
+ throw new _userError.default('Environment needs to be started first');
82
+ }
83
+ const cmd = new _devEnvSyncSql.DevEnvSyncSQLCommand(app, env, slug, trackerFn);
84
+ await cmd.run();
85
+ await trackerFn('success');
86
+ });
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ *
5
+ * @format
6
+ */
7
+
8
+ /**
9
+ * External dependencies
10
+ */
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ "use strict";
16
+
17
+ var _command = _interopRequireDefault(require("../lib/cli/command"));
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ (0, _command.default)({
20
+ requiredArgs: 1
21
+ }).command('sql', 'Sync local database with a production environment').argv(process.argv);
@@ -18,4 +18,4 @@ var _command = _interopRequireDefault(require("../lib/cli/command"));
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
  (0, _command.default)({
20
20
  requiredArgs: 0
21
- }).command('create', 'Create a new local dev environment').command('update', 'Update an already created local dev environment').command('start', 'Start a local dev environment').command('stop', 'Stop a local dev environment').command('destroy', 'Remove containers, networks, volumes and configuration files of a local dev environment').command('info', 'Provides basic info about one or multiple local dev environments').command('list', 'Provides basic info about all local dev environments').command('exec', 'Execute a WP-CLI command in local dev environment').command('import', 'Import data into a local WordPress environment').command('shell', 'Spawns a shell in a dev environment').command('logs', 'View logs from a local WordPress environment').argv(process.argv);
21
+ }).command('create', 'Create a new local dev environment').command('update', 'Update an already created local dev environment').command('start', 'Start a local dev environment').command('stop', 'Stop a local dev environment').command('destroy', 'Remove containers, networks, volumes and configuration files of a local dev environment').command('info', 'Provides basic info about one or multiple local dev environments').command('list', 'Provides basic info about all local dev environments').command('exec', 'Execute a WP-CLI command in local dev environment').command('import', 'Import data into a local WordPress environment').command('shell', 'Spawns a shell in a dev environment').command('logs', 'View logs from a local WordPress environment').command('sync', 'Pull data from production to local development environment').argv(process.argv);
@@ -34,7 +34,6 @@ var _lineByLine = require("../lib/validations/line-by-line");
34
34
  var _format = require("../lib/cli/format");
35
35
  var _progress = require("../lib/cli/progress");
36
36
  var _isMultiSite = require("../lib/validations/is-multi-site");
37
- var _rollbar = require("../lib/rollbar");
38
37
  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); }
39
38
  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; }
40
39
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -419,7 +418,6 @@ Processing the SQL import for your environment...
419
418
  progressTracker.print({
420
419
  clearAfter: true
421
420
  });
422
- _rollbar.rollbar.error(failureError);
423
421
  exit.withError(failureError);
424
422
  };
425
423
  progressTracker.startPrinting(setProgressTrackerPrefixAndSuffix);
@@ -14,7 +14,6 @@ exports.validateInputs = validateInputs;
14
14
  var _chalk = _interopRequireDefault(require("chalk"));
15
15
  var _promises = require("timers/promises");
16
16
  var _command = _interopRequireDefault(require("../lib/cli/command"));
17
- var _rollbar = require("../lib/rollbar");
18
17
  var _tracker = require("../lib/tracker");
19
18
  var logsLib = _interopRequireWildcard(require("../lib/app-logs/app-logs"));
20
19
  var exit = _interopRequireWildcard(require("../lib/cli/exit"));
@@ -43,7 +42,6 @@ async function getLogs(arg, opt) {
43
42
  }
44
43
  logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, opt.limit);
45
44
  } catch (error) {
46
- _rollbar.rollbar.error(error);
47
45
  await (0, _tracker.trackEvent)('logs_command_error', {
48
46
  ...trackingParams,
49
47
  error: error.message
@@ -104,7 +102,6 @@ async function followLogs(opt) {
104
102
  delay += DEFAULT_POLLING_DELAY_IN_SECONDS;
105
103
  delay = Math.min(delay, MAX_POLLING_DELAY_IN_SECONDS);
106
104
  console.error(`${_chalk.default.red('Error:')} Failed to fetch logs. Trying again in ${delay} seconds.`);
107
- _rollbar.rollbar.error(error);
108
105
  }
109
106
  if (logs) {
110
107
  var _logs2, _logs3, _logs4;
@@ -18,7 +18,6 @@ var _format = require("../lib/cli/format");
18
18
  var _prompt = require("../lib/cli/prompt");
19
19
  var _tracker = require("../lib/tracker");
20
20
  var _token = _interopRequireDefault(require("../lib/token"));
21
- var _rollbar = require("../lib/rollbar");
22
21
  var _proxyAgent = require("../lib/http/proxy-agent");
23
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); }
24
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; }
@@ -174,7 +173,6 @@ const launchCommandAndGetStreams = async ({
174
173
  });
175
174
  (0, _socket2.default)(socket).on('error', err => {
176
175
  // This returns the error so it can be catched by the socket.on('error')
177
- _rollbar.rollbar.error(err);
178
176
  return err;
179
177
  });
180
178
  socket.on('error', err => {
@@ -182,7 +180,6 @@ const launchCommandAndGetStreams = async ({
182
180
  console.log(_chalk.default.red('\nError:'), 'Rate limit exceeded: Please wait a moment and try again.');
183
181
  return;
184
182
  }
185
- _rollbar.rollbar.error(err);
186
183
  console.log(err);
187
184
  });
188
185
  return {
@@ -204,12 +201,6 @@ const bindReconnectEvents = ({
204
201
  currentJob.socket.removeAllListeners('connect_error');
205
202
  currentJob.socket.io.on('reconnect', async () => {
206
203
  debug('socket.io: reconnect');
207
- _rollbar.rollbar.info('WP-CLI socket.io.on( \'reconnect\' )', {
208
- custom: {
209
- code: 'wp-cli-on-reconnect',
210
- commandGuid: cliCommand.guid
211
- }
212
- });
213
204
 
214
205
  // Close old streams
215
206
  unpipeStreamsFromProcess({
@@ -248,24 +239,12 @@ const bindReconnectEvents = ({
248
239
  });
249
240
  currentJob.socket.on('retry', async () => {
250
241
  debug('socket: retry');
251
- _rollbar.rollbar.info('WP-CLI socket.io.on( \'retry\' )', {
252
- custom: {
253
- code: 'wp-cli-on-retry',
254
- commandGuid: cliCommand.guid
255
- }
256
- });
257
242
  setTimeout(() => {
258
243
  currentJob.socket.io.engine.close();
259
244
  }, 5000);
260
245
  });
261
246
  currentJob.socket.on('connect_error', () => {
262
247
  debug('socket: connect_error; forcing the preference for websocket');
263
- _rollbar.rollbar.info('WP-CLI socket.on( \'connect_error\' )', {
264
- custom: {
265
- code: 'wp-cli-on-connect_error',
266
- commandGuid: cliCommand.guid
267
- }
268
- });
269
248
 
270
249
  // Force the preference for WebSocket in case we see an error during connection
271
250
  // https://socket.io/docs/v3/client-initialization/#low-level-engine-options
@@ -418,7 +397,6 @@ const bindReconnectEvents = ({
418
397
  });
419
398
  } else {
420
399
  // Else, other type of error, just dump it
421
- _rollbar.rollbar.error(error);
422
400
  console.log(error);
423
401
  }
424
402
  if (!isSubShell) {
@@ -436,14 +414,6 @@ const bindReconnectEvents = ({
436
414
  }
437
415
  }
438
416
  } = result;
439
- if (line.includes("'")) {
440
- _rollbar.rollbar.info('WP-CLI Command containing single quotes', {
441
- custom: {
442
- code: 'wp-cli-single-quotes',
443
- commandGuid: cliCommand.guid
444
- }
445
- });
446
- }
447
417
  const token = await _token.default.get();
448
418
  const extraHeaders = {
449
419
  Authorization: `Bearer ${token.raw}`
package/dist/bin/vip.js CHANGED
@@ -12,7 +12,6 @@ var _config = _interopRequireDefault(require("../lib/cli/config"));
12
12
  var _command = _interopRequireWildcard(require("../lib/cli/command"));
13
13
  var _token = _interopRequireDefault(require("../lib/token"));
14
14
  var _tracker = require("../lib/tracker");
15
- var _rollbar = require("../lib/rollbar");
16
15
  var _logout = _interopRequireDefault(require("../lib/logout"));
17
16
  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); }
18
17
  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; }
@@ -48,7 +47,7 @@ const rootCmd = async function () {
48
47
  const isDevEnvCommandWithoutEnv = doesArgvHaveAtLeastOneParam(process.argv, ['dev-env']) && !(0, _command.containsAppEnvArgument)(process.argv);
49
48
  debug('Argv:', process.argv);
50
49
  if (!isLoginCommand && (isLogoutCommand || isHelpCommand || isVersionCommand || isDevEnvCommandWithoutEnv || token && token.valid())) {
51
- runCmd();
50
+ await runCmd();
52
51
  } else {
53
52
  console.log();
54
53
  console.log(' _ __ ________ ________ ____');
@@ -86,7 +85,6 @@ const rootCmd = async function () {
86
85
  token = new _token.default(tokenInput);
87
86
  } catch (err) {
88
87
  console.log('The token provided is malformed. Please check the token and try again.');
89
- _rollbar.rollbar.error(err);
90
88
  await (0, _tracker.trackEvent)('login_command_token_submit_error', {
91
89
  error: err.message
92
90
  });
@@ -107,12 +105,11 @@ const rootCmd = async function () {
107
105
  return;
108
106
  }
109
107
  try {
110
- _token.default.set(token.raw);
108
+ await _token.default.set(token.raw);
111
109
  } catch (err) {
112
110
  await (0, _tracker.trackEvent)('login_command_token_submit_error', {
113
111
  error: err.message
114
112
  });
115
- _rollbar.rollbar.error(err);
116
113
  throw err;
117
114
  }
118
115
 
@@ -123,7 +120,7 @@ const rootCmd = async function () {
123
120
  console.log('You are now logged in - see `vip -h` for a list of available commands.');
124
121
  process.exit();
125
122
  }
126
- runCmd();
123
+ await runCmd();
127
124
  }
128
125
  };
129
126
  rootCmd();
@@ -16,6 +16,7 @@ Object.defineProperty(exports, "__esModule", {
16
16
  exports.DevEnvSyncSQLCommand = void 0;
17
17
  var _fs = _interopRequireDefault(require("fs"));
18
18
  var _chalk = _interopRequireDefault(require("chalk"));
19
+ var _url = _interopRequireDefault(require("url"));
19
20
  var _vipSearchReplace = require("@automattic/vip-search-replace");
20
21
  var _clientFileUploader = require("../lib/client-file-uploader");
21
22
  var _exportSql = require("./export-sql");
@@ -39,8 +40,8 @@ function findSiteHomeUrl(sql) {
39
40
  const regex = "'(siteurl|home)',\\s?'(.*?)'";
40
41
  const results = sql.match(regex);
41
42
  if (results) {
42
- const domain = results[2].replace(/https?:\/\//, '');
43
- return domain;
43
+ const url = results[2];
44
+ return _url.default.parse(url).hostname;
44
45
  }
45
46
  return null;
46
47
  }
@@ -55,15 +56,15 @@ function findSiteHomeUrl(sql) {
55
56
  async function extractSiteUrls(sqlFile) {
56
57
  const readInterface = await (0, _lineByLine.getReadInterface)(sqlFile);
57
58
  return new Promise((resolve, reject) => {
58
- const domains = [];
59
+ const domains = new Set();
59
60
  readInterface.on('line', line => {
60
61
  const domain = findSiteHomeUrl(line);
61
62
  if (domain) {
62
- domains.push(domain);
63
+ domains.add('//' + domain);
63
64
  }
64
65
  });
65
66
  readInterface.on('close', () => {
66
- resolve(domains);
67
+ resolve(Array.from(domains));
67
68
  });
68
69
  readInterface.on('error', reject);
69
70
  });
@@ -72,18 +73,20 @@ class DevEnvSyncSQLCommand {
72
73
  /**
73
74
  * Creates a new instance of the command
74
75
  *
75
- * @param {string} app The app object
76
- * @param {string} env The environment object
77
- * @param {string} slug The site slug
76
+ * @param {string} app The app object
77
+ * @param {string} env The environment object
78
+ * @param {string} slug The site slug
79
+ * @param {Function} trackerFn Function to call for tracking
78
80
  */
79
- constructor(app, env, slug) {
81
+ constructor(app, env, slug, trackerFn = () => {}) {
80
82
  this.app = app;
81
83
  this.env = env;
82
84
  this.slug = slug;
85
+ this.track = trackerFn;
83
86
  this.tmpDir = (0, _utils.makeTempDir)();
84
87
  }
85
88
  get landoDomain() {
86
- return `${this.slug}.vipdev.lndo.site`;
89
+ return `//${this.slug}.vipdev.lndo.site`;
87
90
  }
88
91
  get sqlFile() {
89
92
  return `${this.tmpDir}/sql-export.sql`;
@@ -99,7 +102,7 @@ class DevEnvSyncSQLCommand {
99
102
  * @return {Promise<void>} Promise that resolves when the export is complete
100
103
  */
101
104
  async generateExport() {
102
- const exportCommand = new _exportSql.ExportSQLCommand(this.app, this.env, this.gzFile);
105
+ const exportCommand = new _exportSql.ExportSQLCommand(this.app, this.env, this.gzFile, this.track);
103
106
  await exportCommand.run();
104
107
  }
105
108
 
@@ -114,9 +117,13 @@ class DevEnvSyncSQLCommand {
114
117
  const replacements = this.siteUrls.reduce((acc, url) => [...acc, url, this.landoDomain], []);
115
118
  const readStream = _fs.default.createReadStream(this.sqlFile);
116
119
  const replacedStream = await (0, _vipSearchReplace.replace)(readStream, replacements);
117
- replacedStream.pipe(_fs.default.createWriteStream(this.sqlFile));
120
+ const outputFile = `${this.tmpDir}/sql-export-sr.sql`;
121
+ replacedStream.pipe(_fs.default.createWriteStream(outputFile));
118
122
  return new Promise((resolve, reject) => {
119
- replacedStream.on('finish', resolve);
123
+ replacedStream.on('finish', () => {
124
+ _fs.default.renameSync(outputFile, this.sqlFile);
125
+ resolve();
126
+ });
120
127
  replacedStream.on('error', reject);
121
128
  });
122
129
  }
@@ -129,11 +136,10 @@ class DevEnvSyncSQLCommand {
129
136
  */
130
137
  async runImport() {
131
138
  const importOptions = {
132
- slug: this.slug,
133
139
  inPlace: true,
134
140
  skipValidate: true
135
141
  };
136
- const importCommand = new _devEnvImportSql.DevEnvImportSQLCommand(this.sqlFile, importOptions);
142
+ const importCommand = new _devEnvImportSql.DevEnvImportSQLCommand(this.sqlFile, importOptions, this.slug);
137
143
  await importCommand.run(true);
138
144
  }
139
145
 
@@ -154,6 +160,9 @@ class DevEnvSyncSQLCommand {
154
160
  await (0, _clientFileUploader.unzipFile)(this.gzFile, this.sqlFile);
155
161
  console.log(`${_chalk.default.green('✓')} Extracted to ${this.sqlFile}`);
156
162
  } catch (err) {
163
+ await this.track('archive_extraction_error', {
164
+ errorMessage: err === null || err === void 0 ? void 0 : err.message
165
+ });
157
166
  exit.withError(`Error extracting the SQL export: ${err === null || err === void 0 ? void 0 : err.message}`);
158
167
  }
159
168
  try {
@@ -170,6 +179,9 @@ class DevEnvSyncSQLCommand {
170
179
  await this.runSearchReplace();
171
180
  console.log(`${_chalk.default.green('✓')} Search-replace operation is complete`);
172
181
  } catch (err) {
182
+ await this.track('search_replace_error', {
183
+ errorMessage: err === null || err === void 0 ? void 0 : err.message
184
+ });
173
185
  exit.withError(`Error replacing domains: ${err === null || err === void 0 ? void 0 : err.message}`);
174
186
  }
175
187
  try {
@@ -177,6 +189,9 @@ class DevEnvSyncSQLCommand {
177
189
  await this.runImport();
178
190
  console.log(`${_chalk.default.green('✓')} SQL file imported`);
179
191
  } catch (err) {
192
+ await this.track('import_error', {
193
+ errorMessage: err === null || err === void 0 ? void 0 : err.message
194
+ });
180
195
  exit.withError(`Error importing SQL file: ${err === null || err === void 0 ? void 0 : err.message}`);
181
196
  }
182
197
  }
@@ -320,8 +320,9 @@ class ExportSQLCommand {
320
320
  try {
321
321
  _fs.default.accessSync(_path.default.parse(this.outputFile).dir, _fs.default.constants.W_OK);
322
322
  } catch (err) {
323
- await this.track('cannot_write_to_path', {
324
- errorMessage: `Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`
323
+ await this.track('error', {
324
+ error_type: 'cannot_write_to_path',
325
+ error_message: `Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`
325
326
  });
326
327
  exit.withError(`Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`);
327
328
  }
@@ -331,8 +332,9 @@ class ExportSQLCommand {
331
332
  latestBackup
332
333
  } = await fetchLatestBackupAndJobStatus(this.app.id, this.env.id);
333
334
  if (!latestBackup) {
334
- await this.track('no_backup_found_error', {
335
- errorMessage: 'No backup found for the site'
335
+ await this.track('error', {
336
+ error_type: 'no_backup_found',
337
+ error_message: 'No backup found for the site'
336
338
  });
337
339
  exit.withError(`No backup found for site ${this.app.name}`);
338
340
  } else {
@@ -347,8 +349,9 @@ class ExportSQLCommand {
347
349
  } catch (err) {
348
350
  // Todo: match error code instead of message substring
349
351
  if (err !== null && err !== void 0 && err.message.includes('Backup Copy already in progress')) {
350
- await this.track('export_job_already_running_error', {
351
- errorMessage: err === null || err === void 0 ? void 0 : err.message
352
+ await this.track('error', {
353
+ error_type: 'job_already_running',
354
+ error_message: err === null || err === void 0 ? void 0 : err.message
352
355
  });
353
356
  exit.withError('There is an export job already running for this site: ' + `https://dashboard.wpvip.com/apps/${this.app.id}/${this.env.uniqueLabel}/data/database/backups\n` + 'Currently, we allow only one export job at a time, per site. Please try again later.');
354
357
  }
@@ -373,8 +376,9 @@ class ExportSQLCommand {
373
376
  } catch (err) {
374
377
  this.progressTracker.stepFailed(this.steps.DOWNLOAD);
375
378
  this.stopProgressTracker();
376
- await this.track('download_failed_error', {
377
- errorMessage: err === null || err === void 0 ? void 0 : err.message
379
+ await this.track('error', {
380
+ error_type: 'download_failed',
381
+ error_message: err === null || err === void 0 ? void 0 : err.message
378
382
  });
379
383
  exit.withError(`Error downloading exported file: ${err === null || err === void 0 ? void 0 : err.message}`);
380
384
  }
@@ -18,7 +18,6 @@ var _format = require("./format");
18
18
  var _package = _interopRequireDefault(require("../../../package.json"));
19
19
  var _tracker = require("../../lib/tracker");
20
20
  var _envAlias = require("./envAlias");
21
- var _rollbar = require("../rollbar");
22
21
  var exit = _interopRequireWildcard(require("./exit"));
23
22
  var _debug = _interopRequireDefault(require("debug"));
24
23
  var _userError = _interopRequireDefault(require("../user-error"));
@@ -188,7 +187,6 @@ _args.default.argv = async function (argv, cb) {
188
187
  await (0, _tracker.trackEvent)('command_appcontext_list_fetch_error', {
189
188
  error: message
190
189
  });
191
- _rollbar.rollbar.error(err);
192
190
  exit.withError(`Failed to get app (${_opts.appQuery}) details: ${message}`);
193
191
  }
194
192
  if (!res || !res.data || !res.data.apps || !res.data.apps.edges || !res.data.apps.edges.length) {
@@ -211,7 +209,6 @@ _args.default.argv = async function (argv, cb) {
211
209
  if (!err) {
212
210
  process.exit();
213
211
  }
214
- _rollbar.rollbar.error(err);
215
212
  exit.withError(err.message || err);
216
213
  }
217
214
 
@@ -286,7 +283,6 @@ _args.default.argv = async function (argv, cb) {
286
283
  if (!err) {
287
284
  process.exit();
288
285
  }
289
- _rollbar.rollbar.error(err);
290
286
  exit.withError(err.message || err);
291
287
  }
292
288
 
@@ -190,10 +190,10 @@ const formatBytes = (bytes, decimals = 2) => {
190
190
  if (0 === bytes) {
191
191
  return '0 Bytes';
192
192
  }
193
- const kk = 1024;
193
+ const bytesMultiplier = 1024;
194
194
  const dm = decimals < 0 ? 0 : decimals;
195
195
  const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB'];
196
- const idx = Math.floor(Math.log(bytes) / Math.log(kk));
197
- return parseFloat((bytes / Math.pow(kk, idx)).toFixed(dm)) + ' ' + sizes[idx];
196
+ const idx = Math.floor(Math.log(bytes) / Math.log(bytesMultiplier));
197
+ return parseFloat((bytes / Math.pow(bytesMultiplier, idx)).toFixed(dm)) + ' ' + sizes[idx];
198
198
  };
199
199
  exports.formatBytes = formatBytes;
@@ -23,6 +23,7 @@ exports.promptForComponent = promptForComponent;
23
23
  exports.promptForPhpVersion = promptForPhpVersion;
24
24
  exports.promptForText = promptForText;
25
25
  exports.resolvePath = resolvePath;
26
+ exports.resolvePhpVersion = resolvePhpVersion;
26
27
  exports.setIsTTY = setIsTTY;
27
28
  exports.validateDependencies = void 0;
28
29
  var _chalk = _interopRequireDefault(require("chalk"));
@@ -460,18 +461,30 @@ function promptForBoolean(message, initial) {
460
461
  return Promise.resolve(initial);
461
462
  }
462
463
  function resolvePhpVersion(version) {
463
- debug(`Resolving PHP version '${version}'`);
464
- if (typeof version === 'string' && version.startsWith('image:')) {
464
+ debug(`Resolving PHP version %j`, version);
465
+ if (version.startsWith('image:')) {
465
466
  return version;
466
467
  }
467
- const versions = Object.keys(_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS);
468
- const images = Object.values(_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS);
469
- const index = versions.findIndex(value => value === version);
470
- if (index === -1) {
468
+ let result;
469
+ if (_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS[version] === undefined) {
470
+ const images = Object.values(_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS);
471
471
  const image = images.find(value => value === version);
472
- return image !== null && image !== void 0 ? image : images[0];
472
+ if (image) {
473
+ result = image;
474
+ } else if (version.indexOf('/') !== -1) {
475
+ // Assuming this is a Docker image
476
+ // This can happen when we first called `vip dev-env update -P image:ghcr.io/...`
477
+ // and then called `vip dev-env update` again. The custom image won't match our images
478
+ // but we still want to use it.
479
+ result = version;
480
+ } else {
481
+ result = images[0];
482
+ }
483
+ } else {
484
+ result = _devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS[version];
473
485
  }
474
- return images[index];
486
+ debug('Resolved PHP image: %j', result);
487
+ return result;
475
488
  }
476
489
  async function promptForPhpVersion(initialValue) {
477
490
  debug(`Prompting for PHP version, preselected option is ${initialValue}`);
@@ -479,7 +492,11 @@ async function promptForPhpVersion(initialValue) {
479
492
  if (isStdinTTY) {
480
493
  const choices = Object.keys(_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS);
481
494
  const images = Object.values(_devEnvironment.DEV_ENVIRONMENT_PHP_VERSIONS);
482
- const initial = images.findIndex(version => version === initialValue);
495
+ let initial = images.findIndex(version => version === initialValue);
496
+ if (initial === -1) {
497
+ choices.push(initialValue);
498
+ initial = choices.length - 1;
499
+ }
483
500
  const select = new _enquirer.Select({
484
501
  message: 'PHP version to use',
485
502
  choices,
@@ -571,7 +588,7 @@ function processVersionOption(value) {
571
588
  // If it's an Integer passed in, let's ensure that it has a decimal in it to match the version tags e.g. 6 => 6.0
572
589
  return parseFloat(value).toFixed(1);
573
590
  }
574
- return value;
591
+ return value + '';
575
592
  }
576
593
  function addDevEnvConfigurationOptions(command) {
577
594
  // We leave the third parameter to undefined on some because the defaults are handled in preProcessInstanceData()
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@automattic/vip",
3
- "version": "2.29.1",
3
+ "version": "2.29.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@automattic/vip",
9
- "version": "2.29.1",
9
+ "version": "2.29.0",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
@@ -33,7 +33,6 @@
33
33
  "node-fetch": "^2.6.1",
34
34
  "opn": "5.5.0",
35
35
  "proxy-from-env": "^1.1.0",
36
- "rollbar": "2.22.0",
37
36
  "semver": "7.5.1",
38
37
  "shelljs": "^0.8.5",
39
38
  "single-line-log": "1.1.2",
@@ -74,7 +73,10 @@
74
73
  "vip-dev-env-shell": "dist/bin/vip-dev-env-shell.js",
75
74
  "vip-dev-env-start": "dist/bin/vip-dev-env-start.js",
76
75
  "vip-dev-env-stop": "dist/bin/vip-dev-env-stop.js",
76
+ "vip-dev-env-sync": "dist/bin/vip-dev-env-sync.js",
77
+ "vip-dev-env-sync-sql": "dist/bin/vip-dev-env-sync-sql.js",
77
78
  "vip-dev-env-update": "dist/bin/vip-dev-env-update.js",
79
+ "vip-export": "dist/bin/vip-export.js",
78
80
  "vip-export-sql": "dist/bin/vip-export-sql.js",
79
81
  "vip-import": "dist/bin/vip-import.js",
80
82
  "vip-import-media": "dist/bin/vip-import-media.js",
@@ -656,15 +658,6 @@
656
658
  "@babel/core": "^7.0.0"
657
659
  }
658
660
  },
659
- "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
660
- "version": "5.1.1",
661
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
662
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
663
- "dev": true,
664
- "dependencies": {
665
- "yallist": "^3.0.2"
666
- }
667
- },
668
661
  "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
669
662
  "version": "6.3.0",
670
663
  "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -674,12 +667,6 @@
674
667
  "semver": "bin/semver.js"
675
668
  }
676
669
  },
677
- "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
678
- "version": "3.1.1",
679
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
680
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
681
- "dev": true
682
- },
683
670
  "node_modules/@babel/helper-create-class-features-plugin": {
684
671
  "version": "7.21.0",
685
672
  "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz",
@@ -4128,9 +4115,9 @@
4128
4115
  "dev": true
4129
4116
  },
4130
4117
  "node_modules/async": {
4131
- "version": "1.2.1",
4132
- "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz",
4133
- "integrity": "sha512-UMnr1f7iakrFTqRSvkCUv3Fs7dMHN5XYWXLlzmKUMhJpOYlCxgI/zQd6kYnEuxhCAULUfP0jtMSiTbpGNbhskw=="
4118
+ "version": "3.2.4",
4119
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
4120
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
4134
4121
  },
4135
4122
  "node_modules/asynckit": {
4136
4123
  "version": "0.4.0",
@@ -5597,11 +5584,6 @@
5597
5584
  "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
5598
5585
  "optional": true
5599
5586
  },
5600
- "node_modules/console-polyfill": {
5601
- "version": "0.3.0",
5602
- "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz",
5603
- "integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ=="
5604
- },
5605
5587
  "node_modules/convert-source-map": {
5606
5588
  "version": "1.9.0",
5607
5589
  "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@@ -5858,15 +5840,6 @@
5858
5840
  }
5859
5841
  }
5860
5842
  },
5861
- "node_modules/decache": {
5862
- "version": "3.1.0",
5863
- "resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz",
5864
- "integrity": "sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=",
5865
- "optional": true,
5866
- "dependencies": {
5867
- "find": "^0.2.4"
5868
- }
5869
- },
5870
5843
  "node_modules/decamelize": {
5871
5844
  "version": "1.2.0",
5872
5845
  "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -6368,14 +6341,6 @@
6368
6341
  "is-arrayish": "^0.2.1"
6369
6342
  }
6370
6343
  },
6371
- "node_modules/error-stack-parser": {
6372
- "version": "2.0.6",
6373
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
6374
- "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
6375
- "dependencies": {
6376
- "stackframe": "^1.1.1"
6377
- }
6378
- },
6379
6344
  "node_modules/es-abstract": {
6380
6345
  "version": "1.21.2",
6381
6346
  "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
@@ -7847,15 +7812,6 @@
7847
7812
  "node": ">=0.10.0"
7848
7813
  }
7849
7814
  },
7850
- "node_modules/find": {
7851
- "version": "0.2.9",
7852
- "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz",
7853
- "integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=",
7854
- "optional": true,
7855
- "dependencies": {
7856
- "traverse-chain": "~0.1.0"
7857
- }
7858
- },
7859
7815
  "node_modules/find-babel-config": {
7860
7816
  "version": "2.0.0",
7861
7817
  "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-2.0.0.tgz",
@@ -8910,11 +8866,6 @@
8910
8866
  "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
8911
8867
  "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
8912
8868
  },
8913
- "node_modules/is_js": {
8914
- "version": "0.9.0",
8915
- "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz",
8916
- "integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0="
8917
- },
8918
8869
  "node_modules/is-accessor-descriptor": {
8919
8870
  "version": "0.1.6",
8920
8871
  "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -9605,11 +9556,6 @@
9605
9556
  "node": ">=10"
9606
9557
  }
9607
9558
  },
9608
- "node_modules/jake/node_modules/async": {
9609
- "version": "3.2.4",
9610
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
9611
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
9612
- },
9613
9559
  "node_modules/jest": {
9614
9560
  "version": "29.5.0",
9615
9561
  "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
@@ -10829,7 +10775,8 @@
10829
10775
  "node_modules/json-stringify-safe": {
10830
10776
  "version": "5.0.1",
10831
10777
  "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
10832
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
10778
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
10779
+ "dev": true
10833
10780
  },
10834
10781
  "node_modules/json2csv": {
10835
10782
  "version": "5.0.7",
@@ -11313,9 +11260,19 @@
11313
11260
  }
11314
11261
  },
11315
11262
  "node_modules/lru-cache": {
11316
- "version": "2.2.4",
11317
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
11318
- "integrity": "sha512-Q5pAgXs+WEAfoEdw2qKQhNFFhMoFMTYqRVKKUMnzuiR7oKFHS7fWo848cPcTKw+4j/IdN17NyzdhVKgabFV0EA=="
11263
+ "version": "5.1.1",
11264
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
11265
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
11266
+ "dev": true,
11267
+ "dependencies": {
11268
+ "yallist": "^3.0.2"
11269
+ }
11270
+ },
11271
+ "node_modules/lru-cache/node_modules/yallist": {
11272
+ "version": "3.1.1",
11273
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
11274
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
11275
+ "dev": true
11319
11276
  },
11320
11277
  "node_modules/make-dir": {
11321
11278
  "version": "3.1.0",
@@ -13047,14 +13004,6 @@
13047
13004
  "node": ">=0.10"
13048
13005
  }
13049
13006
  },
13050
- "node_modules/request-ip": {
13051
- "version": "2.0.2",
13052
- "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.0.2.tgz",
13053
- "integrity": "sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=",
13054
- "dependencies": {
13055
- "is_js": "^0.9.0"
13056
- }
13057
- },
13058
13007
  "node_modules/require-directory": {
13059
13008
  "version": "2.1.1",
13060
13009
  "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -13187,33 +13136,6 @@
13187
13136
  "url": "https://github.com/sponsors/isaacs"
13188
13137
  }
13189
13138
  },
13190
- "node_modules/rollbar": {
13191
- "version": "2.22.0",
13192
- "resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.22.0.tgz",
13193
- "integrity": "sha512-fMTKtzSnoE2ODnMAqzH/Soocb/o7Qy7U5tdRjzljKoz1vMRKkMYbW7E0s0Qraoo3xaTzd5UxDNP3c8jmrlWgug==",
13194
- "dependencies": {
13195
- "async": "~1.2.1",
13196
- "console-polyfill": "0.3.0",
13197
- "error-stack-parser": "^2.0.4",
13198
- "json-stringify-safe": "~5.0.0",
13199
- "lru-cache": "~2.2.1",
13200
- "request-ip": "~2.0.1",
13201
- "source-map": "^0.5.7",
13202
- "uuid": "3.0.x"
13203
- },
13204
- "optionalDependencies": {
13205
- "decache": "^3.0.5"
13206
- }
13207
- },
13208
- "node_modules/rollbar/node_modules/uuid": {
13209
- "version": "3.0.1",
13210
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
13211
- "integrity": "sha512-tyhM7iisckwwmyHVFcjTzISz/R1ss/bRudNgHFYsgeu7j4JbhRvjE+Hbcpr9y5xh+b+HxeFjuToDT4i9kQNrtA==",
13212
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
13213
- "bin": {
13214
- "uuid": "bin/uuid"
13215
- }
13216
- },
13217
13139
  "node_modules/run-async": {
13218
13140
  "version": "2.4.1",
13219
13141
  "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -13720,6 +13642,7 @@
13720
13642
  "version": "0.5.7",
13721
13643
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
13722
13644
  "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
13645
+ "dev": true,
13723
13646
  "engines": {
13724
13647
  "node": ">=0.10.0"
13725
13648
  }
@@ -13859,11 +13782,6 @@
13859
13782
  "node": ">=8"
13860
13783
  }
13861
13784
  },
13862
- "node_modules/stackframe": {
13863
- "version": "1.2.0",
13864
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz",
13865
- "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA=="
13866
- },
13867
13785
  "node_modules/static-extend": {
13868
13786
  "version": "0.1.2",
13869
13787
  "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@@ -14413,12 +14331,6 @@
14413
14331
  "node": ">=6.0.0"
14414
14332
  }
14415
14333
  },
14416
- "node_modules/traverse-chain": {
14417
- "version": "0.1.0",
14418
- "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz",
14419
- "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=",
14420
- "optional": true
14421
- },
14422
14334
  "node_modules/ts-invariant": {
14423
14335
  "version": "0.6.2",
14424
14336
  "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.6.2.tgz",
@@ -15834,26 +15746,11 @@
15834
15746
  "semver": "^6.3.0"
15835
15747
  },
15836
15748
  "dependencies": {
15837
- "lru-cache": {
15838
- "version": "5.1.1",
15839
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
15840
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
15841
- "dev": true,
15842
- "requires": {
15843
- "yallist": "^3.0.2"
15844
- }
15845
- },
15846
15749
  "semver": {
15847
15750
  "version": "6.3.0",
15848
15751
  "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
15849
15752
  "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
15850
15753
  "dev": true
15851
- },
15852
- "yallist": {
15853
- "version": "3.1.1",
15854
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
15855
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
15856
- "dev": true
15857
15754
  }
15858
15755
  }
15859
15756
  },
@@ -18380,9 +18277,9 @@
18380
18277
  "dev": true
18381
18278
  },
18382
18279
  "async": {
18383
- "version": "1.2.1",
18384
- "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz",
18385
- "integrity": "sha512-UMnr1f7iakrFTqRSvkCUv3Fs7dMHN5XYWXLlzmKUMhJpOYlCxgI/zQd6kYnEuxhCAULUfP0jtMSiTbpGNbhskw=="
18280
+ "version": "3.2.4",
18281
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
18282
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
18386
18283
  },
18387
18284
  "asynckit": {
18388
18285
  "version": "0.4.0",
@@ -19485,11 +19382,6 @@
19485
19382
  "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
19486
19383
  "optional": true
19487
19384
  },
19488
- "console-polyfill": {
19489
- "version": "0.3.0",
19490
- "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz",
19491
- "integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ=="
19492
- },
19493
19385
  "convert-source-map": {
19494
19386
  "version": "1.9.0",
19495
19387
  "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@@ -19701,15 +19593,6 @@
19701
19593
  "ms": "2.1.2"
19702
19594
  }
19703
19595
  },
19704
- "decache": {
19705
- "version": "3.1.0",
19706
- "resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz",
19707
- "integrity": "sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=",
19708
- "optional": true,
19709
- "requires": {
19710
- "find": "^0.2.4"
19711
- }
19712
- },
19713
19596
  "decamelize": {
19714
19597
  "version": "1.2.0",
19715
19598
  "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -20101,14 +19984,6 @@
20101
19984
  "is-arrayish": "^0.2.1"
20102
19985
  }
20103
19986
  },
20104
- "error-stack-parser": {
20105
- "version": "2.0.6",
20106
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
20107
- "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
20108
- "requires": {
20109
- "stackframe": "^1.1.1"
20110
- }
20111
- },
20112
19987
  "es-abstract": {
20113
19988
  "version": "1.21.2",
20114
19989
  "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
@@ -21221,15 +21096,6 @@
21221
21096
  }
21222
21097
  }
21223
21098
  },
21224
- "find": {
21225
- "version": "0.2.9",
21226
- "resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz",
21227
- "integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=",
21228
- "optional": true,
21229
- "requires": {
21230
- "traverse-chain": "~0.1.0"
21231
- }
21232
- },
21233
21099
  "find-babel-config": {
21234
21100
  "version": "2.0.0",
21235
21101
  "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-2.0.0.tgz",
@@ -22005,11 +21871,6 @@
22005
21871
  "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
22006
21872
  "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
22007
21873
  },
22008
- "is_js": {
22009
- "version": "0.9.0",
22010
- "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz",
22011
- "integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0="
22012
- },
22013
21874
  "is-accessor-descriptor": {
22014
21875
  "version": "0.1.6",
22015
21876
  "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -22505,13 +22366,6 @@
22505
22366
  "chalk": "^4.0.2",
22506
22367
  "filelist": "^1.0.1",
22507
22368
  "minimatch": "^3.0.4"
22508
- },
22509
- "dependencies": {
22510
- "async": {
22511
- "version": "3.2.4",
22512
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
22513
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
22514
- }
22515
22369
  }
22516
22370
  },
22517
22371
  "jest": {
@@ -23418,7 +23272,8 @@
23418
23272
  "json-stringify-safe": {
23419
23273
  "version": "5.0.1",
23420
23274
  "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
23421
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
23275
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
23276
+ "dev": true
23422
23277
  },
23423
23278
  "json2csv": {
23424
23279
  "version": "5.0.7",
@@ -23805,9 +23660,21 @@
23805
23660
  "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
23806
23661
  },
23807
23662
  "lru-cache": {
23808
- "version": "2.2.4",
23809
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
23810
- "integrity": "sha512-Q5pAgXs+WEAfoEdw2qKQhNFFhMoFMTYqRVKKUMnzuiR7oKFHS7fWo848cPcTKw+4j/IdN17NyzdhVKgabFV0EA=="
23663
+ "version": "5.1.1",
23664
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
23665
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
23666
+ "dev": true,
23667
+ "requires": {
23668
+ "yallist": "^3.0.2"
23669
+ },
23670
+ "dependencies": {
23671
+ "yallist": {
23672
+ "version": "3.1.1",
23673
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
23674
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
23675
+ "dev": true
23676
+ }
23677
+ }
23811
23678
  },
23812
23679
  "make-dir": {
23813
23680
  "version": "3.1.0",
@@ -25132,14 +24999,6 @@
25132
24999
  "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
25133
25000
  "dev": true
25134
25001
  },
25135
- "request-ip": {
25136
- "version": "2.0.2",
25137
- "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.0.2.tgz",
25138
- "integrity": "sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=",
25139
- "requires": {
25140
- "is_js": "^0.9.0"
25141
- }
25142
- },
25143
25002
  "require-directory": {
25144
25003
  "version": "2.1.1",
25145
25004
  "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -25237,29 +25096,6 @@
25237
25096
  "glob": "^7.1.3"
25238
25097
  }
25239
25098
  },
25240
- "rollbar": {
25241
- "version": "2.22.0",
25242
- "resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.22.0.tgz",
25243
- "integrity": "sha512-fMTKtzSnoE2ODnMAqzH/Soocb/o7Qy7U5tdRjzljKoz1vMRKkMYbW7E0s0Qraoo3xaTzd5UxDNP3c8jmrlWgug==",
25244
- "requires": {
25245
- "async": "~1.2.1",
25246
- "console-polyfill": "0.3.0",
25247
- "decache": "^3.0.5",
25248
- "error-stack-parser": "^2.0.4",
25249
- "json-stringify-safe": "~5.0.0",
25250
- "lru-cache": "~2.2.1",
25251
- "request-ip": "~2.0.1",
25252
- "source-map": "^0.5.7",
25253
- "uuid": "3.0.x"
25254
- },
25255
- "dependencies": {
25256
- "uuid": {
25257
- "version": "3.0.1",
25258
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
25259
- "integrity": "sha512-tyhM7iisckwwmyHVFcjTzISz/R1ss/bRudNgHFYsgeu7j4JbhRvjE+Hbcpr9y5xh+b+HxeFjuToDT4i9kQNrtA=="
25260
- }
25261
- }
25262
- },
25263
25099
  "run-async": {
25264
25100
  "version": "2.4.1",
25265
25101
  "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -25647,7 +25483,8 @@
25647
25483
  "source-map": {
25648
25484
  "version": "0.5.7",
25649
25485
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
25650
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
25486
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
25487
+ "dev": true
25651
25488
  },
25652
25489
  "source-map-resolve": {
25653
25490
  "version": "0.5.3",
@@ -25765,11 +25602,6 @@
25765
25602
  "resolved": "https://registry.npmjs.org/stack-utils-node-internals/-/stack-utils-node-internals-1.0.1.tgz",
25766
25603
  "integrity": "sha512-lMuPPh5lj8Nj+vGsxnrp5LRamN5SF++yJE+skeXz9Chy/Uw93BzxzrnQ/8BLOIKKVsJ44bleARrfSUh3ZGdMZw=="
25767
25604
  },
25768
- "stackframe": {
25769
- "version": "1.2.0",
25770
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz",
25771
- "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA=="
25772
- },
25773
25605
  "static-extend": {
25774
25606
  "version": "0.1.2",
25775
25607
  "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@@ -26194,12 +26026,6 @@
26194
26026
  "yargs": "^17.5.1"
26195
26027
  }
26196
26028
  },
26197
- "traverse-chain": {
26198
- "version": "0.1.0",
26199
- "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz",
26200
- "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=",
26201
- "optional": true
26202
- },
26203
26029
  "ts-invariant": {
26204
26030
  "version": "0.6.2",
26205
26031
  "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.6.2.tgz",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automattic/vip",
3
- "version": "2.29.1",
3
+ "version": "2.30.0-dev1",
4
4
  "description": "The VIP Javascript library & CLI",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -35,6 +35,8 @@
35
35
  "vip-dev-env-logs": "dist/bin/vip-dev-env-logs.js",
36
36
  "vip-export": "dist/bin/vip-export.js",
37
37
  "vip-export-sql": "dist/bin/vip-export-sql.js",
38
+ "vip-dev-env-sync": "dist/bin/vip-dev-env-sync.js",
39
+ "vip-dev-env-sync-sql": "dist/bin/vip-dev-env-sync-sql.js",
38
40
  "vip-import": "dist/bin/vip-import.js",
39
41
  "vip-import-media": "dist/bin/vip-import-media.js",
40
42
  "vip-import-media-abort": "dist/bin/vip-import-media-abort.js",
@@ -136,7 +138,6 @@
136
138
  "node-fetch": "^2.6.1",
137
139
  "opn": "5.5.0",
138
140
  "proxy-from-env": "^1.1.0",
139
- "rollbar": "2.22.0",
140
141
  "semver": "7.5.1",
141
142
  "shelljs": "^0.8.5",
142
143
  "single-line-log": "1.1.2",
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.rollbar = void 0;
7
- var _env = _interopRequireDefault(require("./env"));
8
- var _config = _interopRequireDefault(require("../lib/cli/config"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- /**
11
- * Internal dependencies
12
- */
13
-
14
- const Rollbar = require('rollbar');
15
- const rollbar = new Rollbar({
16
- accessToken: '99c8f982d64f47049fde6f6f9d567070',
17
- captureUncaught: true,
18
- captureUnhandledRejections: true,
19
- /* eslint-disable camelcase */
20
- payload: {
21
- platform: 'client',
22
- cli_version: _env.default.app.version,
23
- os_name: _env.default.os.name,
24
- node_version: _env.default.node.version,
25
- environment: _config.default.environment
26
- }
27
- /* eslint-enable camelcase */
28
- });
29
- exports.rollbar = rollbar;