@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
package/dist/lib/token.js CHANGED
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.SERVICE = void 0;
7
-
8
7
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
9
-
10
8
  var _uuid2 = require("uuid");
11
-
12
9
  var _keychain = _interopRequireDefault(require("./keychain"));
13
-
14
10
  var _api = require("./api");
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
12
 
18
13
  /**
@@ -22,111 +17,84 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
17
  /**
23
18
  * Internal dependencies
24
19
  */
20
+
25
21
  // Config
26
22
  const SERVICE = 'vip-go-cli';
27
23
  exports.SERVICE = SERVICE;
28
-
29
24
  class Token {
30
25
  constructor(token) {
31
26
  if (!token) {
32
27
  return;
33
28
  }
34
-
35
29
  token = token.trim();
36
-
37
30
  if (!token.length) {
38
31
  return;
39
32
  }
40
-
41
33
  const decodedToken = (0, _jwtDecode.default)(token);
42
34
  this.raw = token;
43
-
44
35
  if (decodedToken.id) {
45
36
  this.id = decodedToken.id;
46
37
  }
47
-
48
38
  if (decodedToken.iat) {
49
39
  this.iat = new Date(decodedToken.iat * 1000);
50
40
  }
51
-
52
41
  if (decodedToken.exp) {
53
42
  this.exp = new Date(decodedToken.exp * 1000);
54
43
  }
55
44
  }
56
-
57
45
  valid() {
58
46
  if (!this.id) {
59
47
  return false;
60
48
  }
61
-
62
49
  if (!this.iat) {
63
50
  return false;
64
51
  }
65
-
66
52
  const now = new Date();
67
-
68
53
  if (!this.exp) {
69
54
  return now > this.iat;
70
55
  }
71
-
72
56
  return now > this.iat && now < this.exp;
73
57
  }
74
-
75
58
  expired() {
76
59
  if (!this.exp) {
77
60
  return false;
78
61
  }
79
-
80
62
  const now = new Date();
81
63
  return now > this.exp;
82
64
  }
83
-
84
65
  static async uuid() {
85
66
  const service = Token.getServiceName('-uuid');
86
-
87
67
  let _uuid = await _keychain.default.getPassword(service);
88
-
89
68
  if (!_uuid) {
90
69
  _uuid = (0, _uuid2.v4)();
91
70
  await _keychain.default.setPassword(service, _uuid);
92
71
  }
93
-
94
72
  return _uuid;
95
73
  }
96
-
97
74
  static async setUuid(_uuid) {
98
75
  const service = Token.getServiceName('-uuid');
99
76
  await _keychain.default.setPassword(service, _uuid);
100
77
  }
101
-
102
78
  static async set(token) {
103
79
  const service = Token.getServiceName();
104
80
  return _keychain.default.setPassword(service, token);
105
81
  }
106
-
107
82
  static async get() {
108
83
  const service = Token.getServiceName();
109
84
  const token = await _keychain.default.getPassword(service);
110
85
  return new Token(token);
111
86
  }
112
-
113
87
  static async purge() {
114
88
  const service = Token.getServiceName();
115
89
  return _keychain.default.deletePassword(service);
116
90
  }
117
-
118
91
  static getServiceName(modifier = '') {
119
92
  let service = SERVICE;
120
-
121
93
  if (_api.PRODUCTION_API_HOST !== _api.API_HOST) {
122
94
  const sanitized = _api.API_HOST.replace(/[^a-z0-9]/gi, '-');
123
-
124
95
  service = `${SERVICE}:${sanitized}`;
125
96
  }
126
-
127
97
  return `${service}${modifier}`;
128
98
  }
129
-
130
99
  }
131
-
132
100
  exports.default = Token;
@@ -3,41 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.trackEvent = trackEvent;
7
6
  exports.aliasUser = aliasUser;
7
+ exports.trackEvent = trackEvent;
8
8
  exports.trackEventWithEnv = trackEventWithEnv;
9
-
10
9
  var _index = _interopRequireDefault(require("./analytics/index"));
11
-
12
10
  var _tracks = _interopRequireDefault(require("./analytics/clients/tracks"));
13
-
14
11
  var _pendo = _interopRequireDefault(require("./analytics/clients/pendo"));
15
-
16
12
  var _token = _interopRequireDefault(require("./token"));
17
-
18
13
  var _config = _interopRequireDefault(require("./cli/config"));
19
-
20
14
  var _env = _interopRequireDefault(require("./env"));
21
-
22
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
16
  /**
25
17
  * External dependencies
26
18
  */
27
19
  const debug = require('debug')('@automattic/vip:analytics');
20
+
28
21
  /**
29
22
  * Internal dependencies
30
23
  */
31
24
 
32
-
33
25
  let analytics = null;
34
-
35
26
  async function init() {
36
27
  const uuid = await _token.default.uuid();
37
28
  const clients = [];
38
29
  const tracksUserType = _config.default.tracksUserType;
39
30
  const tracksEventPrefix = _config.default.tracksEventPrefix;
40
-
41
31
  if (tracksUserType && tracksEventPrefix) {
42
32
  clients.push(new _tracks.default(uuid, tracksUserType, tracksEventPrefix, _env.default));
43
33
  clients.push(new _pendo.default({
@@ -46,22 +36,18 @@ async function init() {
46
36
  userId: uuid
47
37
  }));
48
38
  }
49
-
50
39
  analytics = new _index.default({
51
40
  clients
52
41
  });
53
42
  return analytics;
54
43
  }
55
-
56
44
  async function getInstance() {
57
45
  if (analytics) {
58
46
  return analytics;
59
47
  }
60
-
61
48
  analytics = await init();
62
49
  return analytics;
63
50
  }
64
-
65
51
  async function trackEvent(...args) {
66
52
  try {
67
53
  await _token.default.uuid();
@@ -71,7 +57,6 @@ async function trackEvent(...args) {
71
57
  debug('trackEvent() failed', err);
72
58
  }
73
59
  }
74
-
75
60
  async function aliasUser(vipUserId) {
76
61
  try {
77
62
  if (vipUserId) {
@@ -80,16 +65,15 @@ async function aliasUser(vipUserId) {
80
65
  _ut: _config.default.tracksUserType,
81
66
  anonid: _token.default.uuid()
82
67
  });
83
-
84
68
  _token.default.setUuid(vipUserId);
85
69
  }
86
70
  } catch (err) {
87
71
  debug('aliasUser() failed', err);
88
72
  }
89
73
  }
90
-
91
74
  async function trackEventWithEnv(appId, envId, eventName, eventProps = {}) {
92
- return trackEvent(eventName, { ...eventProps,
75
+ return trackEvent(eventName, {
76
+ ...eventProps,
93
77
  app_id: appId,
94
78
  env_id: envId
95
79
  });
@@ -4,11 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  function UserError(message) {
9
8
  this.message = message;
10
9
  }
11
-
12
10
  UserError.prototype = new Error();
13
11
  var _default = UserError;
14
12
  exports.default = _default;
@@ -3,17 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.sqlDumpLineIsMultiSite = sqlDumpLineIsMultiSite;
7
6
  exports.isMultiSiteDumpFile = isMultiSiteDumpFile;
8
-
7
+ exports.sqlDumpLineIsMultiSite = sqlDumpLineIsMultiSite;
9
8
  var _lineByLine = require("./line-by-line");
10
-
11
9
  var exit = _interopRequireWildcard(require("../cli/exit"));
12
-
13
10
  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); }
14
-
15
11
  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; }
16
-
17
12
  /**
18
13
  *
19
14
  * @format
@@ -26,33 +21,30 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
26
21
  /**
27
22
  * Internal dependencies
28
23
  */
24
+
29
25
  const SQL_CREATE_TABLE_IS_MULTISITE_REGEX = /^CREATE TABLE `?(wp_\d+_[a-z0-9_]*|wp_blogs)/i;
30
26
  const SQL_CONTAINS_MULTISITE_WP_USERS_REGEX = /\`spam\` tinyint\(2\)|\`deleted\` tinyint\(2\)/i;
31
-
32
27
  function sqlDumpLineIsMultiSite(line) {
33
28
  // determine if we're on a CREATE TABLE statement line what has eg. wp_\d_options OR wp_blogs
34
29
  // also check if we're on a line that defines the additional two columns found on the wp_users table for multisites
35
30
  if (SQL_CREATE_TABLE_IS_MULTISITE_REGEX.test(line) || SQL_CONTAINS_MULTISITE_WP_USERS_REGEX.test(line)) {
36
31
  return true;
37
32
  }
38
-
39
33
  return false;
40
34
  }
41
-
42
35
  function isMultiSiteDumpFile(fileName) {
43
36
  return new Promise(async resolve => {
44
37
  const readInterface = await (0, _lineByLine.getReadInterface)(fileName);
45
38
  readInterface.on('line', line => {
46
39
  const result = sqlDumpLineIsMultiSite(line);
47
-
48
40
  if (true === result) {
49
41
  resolve(true);
50
42
  }
51
43
  });
52
44
  readInterface.on('error', () => {
53
45
  exit.withError('An error was encountered while reading your SQL dump file. Please verify the file contents.');
54
- }); // Block until the processing completes
55
-
46
+ });
47
+ // Block until the processing completes
56
48
  await new Promise(resolveBlock => readInterface.on('close', resolveBlock));
57
49
  resolve(false);
58
50
  });
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isMultiSiteInSiteMeta = isMultiSiteInSiteMeta;
7
-
8
7
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
9
-
10
8
  var _api = _interopRequireDefault(require("../api"));
11
-
12
9
  var _tracker = require("../tracker");
13
-
14
10
  var exit = _interopRequireWildcard(require("../cli/exit"));
15
-
16
11
  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); }
17
-
18
12
  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; }
19
-
20
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
14
  /**
23
15
  *
24
16
  * @format
@@ -31,21 +23,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
31
23
  /**
32
24
  * Internal dependencies
33
25
  */
34
- const isMultiSite = new WeakMap();
35
26
 
27
+ const isMultiSite = new WeakMap();
36
28
  async function isMultiSiteInSiteMeta(appId, envId) {
37
29
  var _res, _res$data, _res$data$app;
30
+ const track = _tracker.trackEventWithEnv.bind(null, appId, envId);
38
31
 
39
- const track = _tracker.trackEventWithEnv.bind(null, appId, envId); // if we've already been through this, avoid doing it again within the same process
40
-
41
-
32
+ // if we've already been through this, avoid doing it again within the same process
42
33
  if (isMultiSite.has(arguments) && 'boolean' === typeof isMultiSite.get(arguments)) {
43
34
  return Boolean(isMultiSite.get(arguments));
44
35
  }
45
-
46
36
  const api = await (0, _api.default)();
47
37
  let res;
48
-
49
38
  try {
50
39
  res = await api.query({
51
40
  query: (0, _graphqlTag.default)`
@@ -77,23 +66,18 @@ async function isMultiSiteInSiteMeta(appId, envId) {
77
66
  });
78
67
  exit.withError(`StartImport call failed: ${GraphQlError}`);
79
68
  }
80
-
81
69
  if (Array.isArray((_res = res) === null || _res === void 0 ? void 0 : (_res$data = _res.data) === null || _res$data === void 0 ? void 0 : (_res$data$app = _res$data.app) === null || _res$data$app === void 0 ? void 0 : _res$data$app.environments)) {
82
70
  const environments = res.data.app.environments;
83
-
84
71
  if (!environments.length) {
85
72
  isMultiSite.set(arguments, false);
86
73
  return false;
87
- } // we asked for one result with one appId and one envId, so...
88
-
89
-
74
+ }
75
+ // we asked for one result with one appId and one envId, so...
90
76
  const thisEnv = environments[0];
91
-
92
77
  if (thisEnv.isMultiSite || thisEnv.isSubdirectoryMultisite) {
93
78
  isMultiSite.set(arguments, true);
94
79
  return true;
95
80
  }
96
81
  }
97
-
98
82
  return false;
99
83
  }
@@ -3,23 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getPrimaryDomainFromSQL = exports.getPrimaryDomain = void 0;
6
7
  exports.isMultisitePrimaryDomainMapped = isMultisitePrimaryDomainMapped;
7
- exports.getPrimaryDomain = exports.maybeSearchReplacePrimaryDomain = exports.getPrimaryDomainFromSQL = void 0;
8
-
8
+ exports.maybeSearchReplacePrimaryDomain = void 0;
9
9
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
10
-
11
10
  var _api = _interopRequireDefault(require("../api"));
12
-
13
11
  var _tracker = require("../tracker");
14
-
15
12
  var exit = _interopRequireWildcard(require("../cli/exit"));
16
-
17
13
  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
-
19
14
  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; }
20
-
21
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
-
23
16
  /**
24
17
  *
25
18
  * @format
@@ -41,15 +34,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
41
34
  */
42
35
  const getPrimaryDomainFromSQL = statements => {
43
36
  var _statements$;
44
-
45
37
  if (!statements.length) {
46
38
  return '';
47
39
  }
48
-
49
40
  const SQL_WP_SITE_DOMAINS_REGEX = /\(1,'(.*?)'/s;
50
41
  const matches = (_statements$ = statements[0]) === null || _statements$ === void 0 ? void 0 : _statements$.join('').replace(/\s/g, '').match(SQL_WP_SITE_DOMAINS_REGEX);
51
42
  return matches ? matches[1] : '';
52
43
  };
44
+
53
45
  /**
54
46
  * Apply search-replacements to a domain
55
47
  *
@@ -57,27 +49,21 @@ const getPrimaryDomainFromSQL = statements => {
57
49
  * @param {(string|array)} searchReplace The search-replace pairs
58
50
  * @returns {string} The processed domain
59
51
  */
60
-
61
-
62
52
  exports.getPrimaryDomainFromSQL = getPrimaryDomainFromSQL;
63
-
64
53
  const maybeSearchReplacePrimaryDomain = function (domain, searchReplace) {
65
54
  if (searchReplace) {
66
55
  var _primaryDomainReplace;
67
-
68
56
  let pairs = searchReplace;
69
-
70
57
  if (!Array.isArray(pairs)) {
71
58
  pairs = [searchReplace];
72
59
  }
73
-
74
60
  const domainReplacements = pairs.map(pair => pair.split(','));
75
61
  const primaryDomainReplacement = domainReplacements.find(pair => pair[0] === domain);
76
62
  return (_primaryDomainReplace = primaryDomainReplacement === null || primaryDomainReplacement === void 0 ? void 0 : primaryDomainReplacement[1]) !== null && _primaryDomainReplace !== void 0 ? _primaryDomainReplace : domain;
77
63
  }
78
-
79
64
  return domain;
80
65
  };
66
+
81
67
  /**
82
68
  * Get the primary domain as it will be imported
83
69
  *
@@ -85,14 +71,12 @@ const maybeSearchReplacePrimaryDomain = function (domain, searchReplace) {
85
71
  * @param {(string|array)} searchReplace The search-replace pairs
86
72
  * @returns {string} The replaced domain, or the domain as found in the SQL dump
87
73
  */
88
-
89
-
90
74
  exports.maybeSearchReplacePrimaryDomain = maybeSearchReplacePrimaryDomain;
91
-
92
75
  const getPrimaryDomain = function (statements, searchReplace) {
93
76
  const domainFromSQL = getPrimaryDomainFromSQL(statements);
94
77
  return maybeSearchReplacePrimaryDomain(domainFromSQL, searchReplace);
95
78
  };
79
+
96
80
  /**
97
81
  * Gets the mapped domains and checks if the primary domain from the provided SQL dump is one of them
98
82
  *
@@ -101,18 +85,12 @@ const getPrimaryDomain = function (statements, searchReplace) {
101
85
  * @param {string} primaryDomain The primary domain found in the provided SQL file
102
86
  * @returns {boolean} Whether the primary domain is mapped
103
87
  */
104
-
105
-
106
88
  exports.getPrimaryDomain = getPrimaryDomain;
107
-
108
89
  async function isMultisitePrimaryDomainMapped(appId, envId, primaryDomain) {
109
90
  var _res, _res$data, _res$data$app, _environments$, _environments$$domain, _environments$$domain2;
110
-
111
91
  const track = _tracker.trackEventWithEnv.bind(null, appId, envId);
112
-
113
92
  const api = await (0, _api.default)();
114
93
  let res;
115
-
116
94
  try {
117
95
  res = await api.query({
118
96
  query: (0, _graphqlTag.default)`
@@ -145,17 +123,13 @@ async function isMultisitePrimaryDomainMapped(appId, envId, primaryDomain) {
145
123
  });
146
124
  exit.withError(`StartImport call failed: ${GraphQlError}`);
147
125
  }
148
-
149
126
  if (!Array.isArray((_res = res) === null || _res === void 0 ? void 0 : (_res$data = _res.data) === null || _res$data === void 0 ? void 0 : (_res$data$app = _res$data.app) === null || _res$data$app === void 0 ? void 0 : _res$data$app.environments)) {
150
127
  return false;
151
128
  }
152
-
153
129
  const environments = res.data.app.environments;
154
-
155
130
  if (!environments.length) {
156
131
  return false;
157
132
  }
158
-
159
133
  const mappedDomains = (_environments$ = environments[0]) === null || _environments$ === void 0 ? void 0 : (_environments$$domain = _environments$.domains) === null || _environments$$domain === void 0 ? void 0 : (_environments$$domain2 = _environments$$domain.nodes) === null || _environments$$domain2 === void 0 ? void 0 : _environments$$domain2.map(domain => domain.name);
160
134
  return mappedDomains.includes(primaryDomain);
161
135
  }
@@ -3,23 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getReadInterface = getReadInterface;
7
6
  exports.fileLineValidations = fileLineValidations;
8
-
7
+ exports.getReadInterface = getReadInterface;
9
8
  var _readline = _interopRequireDefault(require("readline"));
10
-
11
9
  var _fs = _interopRequireDefault(require("fs"));
12
-
13
10
  var _debug = _interopRequireDefault(require("debug"));
14
-
15
11
  var exit = _interopRequireWildcard(require("../cli/exit"));
16
-
17
12
  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
-
19
13
  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; }
20
-
21
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
-
23
15
  /**
24
16
  *
25
17
  * @format
@@ -32,29 +24,25 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
32
24
  /**
33
25
  * Internal dependencies
34
26
  */
35
- const debug = (0, _debug.default)('vip:validations:line-by-line');
36
27
 
28
+ const debug = (0, _debug.default)('vip:validations:line-by-line');
37
29
  function openFile(filename, flags = 'r', mode = 666) {
38
30
  return new Promise((resolve, reject) => {
39
31
  _fs.default.open(filename, flags, mode, (err, fd) => {
40
32
  if (err) {
41
33
  return reject(err);
42
34
  }
43
-
44
35
  resolve(fd);
45
36
  });
46
37
  });
47
38
  }
48
-
49
39
  async function getReadInterface(filename) {
50
40
  let fd;
51
-
52
41
  try {
53
42
  fd = await openFile(filename);
54
43
  } catch (err) {
55
44
  exit.withError('The file at the provided path is either missing or not readable. Please check the input and try again.');
56
45
  }
57
-
58
46
  return _readline.default.createInterface({
59
47
  input: _fs.default.createReadStream('', {
60
48
  fd
@@ -63,7 +51,6 @@ async function getReadInterface(filename) {
63
51
  console: false
64
52
  });
65
53
  }
66
-
67
54
  async function fileLineValidations(appId, envId, fileName, validations, searchReplace) {
68
55
  const isImport = true;
69
56
  const readInterface = await getReadInterface(fileName);
@@ -75,8 +62,9 @@ async function fileLineValidations(appId, envId, fileName, validations, searchRe
75
62
  });
76
63
  readInterface.on('error', err => {
77
64
  throw new Error(` Error validating input file: ${err.toString()}`);
78
- }); // Block until the processing completes
65
+ });
79
66
 
67
+ // Block until the processing completes
80
68
  await new Promise(resolve => readInterface.on('close', resolve));
81
69
  readInterface.close();
82
70
  return Promise.all(validations.map(async validation => {
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.siteTypeValidations = void 0;
7
-
8
7
  var _debug = _interopRequireDefault(require("debug"));
9
-
10
8
  var _tracker = require("../tracker");
11
-
12
9
  var _isMultiSiteSqlDump = require("./is-multi-site-sql-dump");
13
-
14
10
  var _isMultiSite = require("./is-multi-site");
15
-
16
11
  var _isMultisiteDomainMapped = require("./is-multisite-domain-mapped");
17
-
18
12
  var _utils = require("./utils");
19
-
20
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
14
  /**
23
15
  *
24
16
  * @format
@@ -31,6 +23,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
31
23
  /**
32
24
  * Internal dependencies
33
25
  */
26
+
34
27
  const debug = (0, _debug.default)('vip:vip-import-sql');
35
28
  let isMultiSiteSqlDump = false;
36
29
  let wpSiteInsertStatement;
@@ -39,7 +32,6 @@ const siteTypeValidations = {
39
32
  execute: line => {
40
33
  const lineIsMultiSite = (0, _isMultiSiteSqlDump.sqlDumpLineIsMultiSite)(line);
41
34
  wpSiteInsertStatement = getWpSiteInsertStatement(line);
42
-
43
35
  if (lineIsMultiSite) {
44
36
  isMultiSiteSqlDump = true;
45
37
  }
@@ -50,36 +42,35 @@ const siteTypeValidations = {
50
42
  searchReplace
51
43
  }) => {
52
44
  const isMultiSite = await (0, _isMultiSite.isMultiSiteInSiteMeta)(appId, envId);
53
-
54
45
  const track = _tracker.trackEventWithEnv.bind(null, appId, envId);
55
-
56
46
  debug(`\nAppId: ${appId} is ${isMultiSite ? 'a multisite.' : 'not a multisite'}`);
57
47
  debug(`The SQL dump provided is ${isMultiSiteSqlDump ? 'from a multisite.' : 'not from a multisite'}\n`);
58
-
59
48
  if (!isMultiSite && isMultiSiteSqlDump) {
60
49
  await track('import_sql_command_error', {
61
50
  error_type: 'not-multisite-with-multisite-sql-dump'
62
51
  });
63
52
  throw new Error('You have provided a multisite SQL dump file for import into a single site (non-multisite).');
64
53
  }
65
-
66
54
  if (isMultiSite && !isMultiSiteSqlDump) {
67
55
  await track('import_sql_command_error', {
68
56
  error_type: 'subsite-import-without-subsite-sql-dump'
69
57
  });
70
58
  throw new Error('You have requested a subsite SQL import but have not provided a subsite compatiable SQL dump.');
71
- } // Get Primary Domain
59
+ }
72
60
 
61
+ // Get Primary Domain
62
+ const primaryDomainFromSQL = (0, _isMultisiteDomainMapped.getPrimaryDomain)(wpSiteInsertStatement, searchReplace);
73
63
 
74
- const primaryDomainFromSQL = (0, _isMultisiteDomainMapped.getPrimaryDomain)(wpSiteInsertStatement, searchReplace); // Check if Primary Domain exists (empty string does not qualify)
64
+ // Check if Primary Domain exists (empty string does not qualify)
65
+ const primaryDomainExists = primaryDomainFromSQL || '' !== primaryDomainFromSQL;
75
66
 
76
- const primaryDomainExists = primaryDomainFromSQL || '' !== primaryDomainFromSQL; // Check if primary domain is mapped only if it exists
67
+ // Check if primary domain is mapped only if it exists
77
68
  // Also saves on a call to Parker by checking ahead
78
-
79
69
  if (primaryDomainExists) {
80
- const isPrimaryDomainMapped = await (0, _isMultisiteDomainMapped.isMultisitePrimaryDomainMapped)(appId, envId, primaryDomainFromSQL); // If site is multisite AND the primary domain is exists AND the primary is unmapped
81
- // then throw an error
70
+ const isPrimaryDomainMapped = await (0, _isMultisiteDomainMapped.isMultisitePrimaryDomainMapped)(appId, envId, primaryDomainFromSQL);
82
71
 
72
+ // If site is multisite AND the primary domain is exists AND the primary is unmapped
73
+ // then throw an error
83
74
  if (isMultiSite && !isPrimaryDomainMapped) {
84
75
  await track('import_sql_command_error', {
85
76
  error_type: 'multisite-import-where-primary-domain-unmapped'