@automattic/vip 2.36.0-dev.0 → 2.36.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 (129) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/bin/vip-app-list.js +1 -8
  3. package/dist/bin/vip-app.js +3 -10
  4. package/dist/bin/vip-backup-db.js +1 -9
  5. package/dist/bin/vip-backup.js +0 -8
  6. package/dist/bin/vip-cache-purge-url.js +6 -16
  7. package/dist/bin/vip-cache.js +0 -8
  8. package/dist/bin/vip-config-envvar-delete.js +2 -11
  9. package/dist/bin/vip-config-envvar-get-all.js +1 -10
  10. package/dist/bin/vip-config-envvar-get.js +1 -10
  11. package/dist/bin/vip-config-envvar-list.js +1 -10
  12. package/dist/bin/vip-config-envvar-set.js +3 -12
  13. package/dist/bin/vip-config-envvar.js +0 -8
  14. package/dist/bin/vip-config-software-get.js +3 -12
  15. package/dist/bin/vip-config-software-update.js +6 -13
  16. package/dist/bin/vip-config-software.js +0 -8
  17. package/dist/bin/vip-config.js +0 -8
  18. package/dist/bin/vip-dev-env-create.js +6 -13
  19. package/dist/bin/vip-dev-env-destroy.js +3 -10
  20. package/dist/bin/vip-dev-env-exec.js +2 -6
  21. package/dist/bin/vip-dev-env-import-media.js +2 -10
  22. package/dist/bin/vip-dev-env-import-sql.js +3 -11
  23. package/dist/bin/vip-dev-env-import.js +0 -8
  24. package/dist/bin/vip-dev-env-info.js +4 -11
  25. package/dist/bin/vip-dev-env-list.js +3 -11
  26. package/dist/bin/vip-dev-env-logs.js +3 -10
  27. package/dist/bin/vip-dev-env-shell.js +3 -10
  28. package/dist/bin/vip-dev-env-start.js +6 -13
  29. package/dist/bin/vip-dev-env-stop.js +4 -11
  30. package/dist/bin/vip-dev-env-sync-sql.js +4 -12
  31. package/dist/bin/vip-dev-env-sync.js +0 -8
  32. package/dist/bin/vip-dev-env-update.js +5 -12
  33. package/dist/bin/vip-dev-env.js +0 -8
  34. package/dist/bin/vip-export-sql.js +1 -9
  35. package/dist/bin/vip-export.js +0 -8
  36. package/dist/bin/vip-import-media-abort.js +7 -13
  37. package/dist/bin/vip-import-media-status.js +4 -11
  38. package/dist/bin/vip-import-media.js +5 -11
  39. package/dist/bin/vip-import-sql-status.js +5 -12
  40. package/dist/bin/vip-import-sql.js +46 -48
  41. package/dist/bin/vip-import-validate-files.js +3 -10
  42. package/dist/bin/vip-import-validate-sql.js +2 -10
  43. package/dist/bin/vip-import.js +0 -8
  44. package/dist/bin/vip-logout.js +0 -8
  45. package/dist/bin/vip-logs.js +10 -22
  46. package/dist/bin/vip-search-replace.js +2 -9
  47. package/dist/bin/vip-slowlogs.js +6 -16
  48. package/dist/bin/vip-sync.js +0 -7
  49. package/dist/bin/vip-validate-preflight.js +13 -24
  50. package/dist/bin/vip-validate.js +0 -8
  51. package/dist/bin/vip-whoami.js +4 -14
  52. package/dist/bin/vip-wp.js +8 -17
  53. package/dist/bin/vip.js +11 -19
  54. package/dist/commands/backup-db.js +15 -31
  55. package/dist/commands/dev-env-import-sql.js +23 -12
  56. package/dist/commands/dev-env-sync-sql.js +34 -35
  57. package/dist/commands/export-sql.js +27 -39
  58. package/dist/lib/analytics/clients/pendo.js +1 -11
  59. package/dist/lib/analytics/clients/tracks.js +2 -12
  60. package/dist/lib/analytics/index.js +1 -11
  61. package/dist/lib/api/app.js +3 -14
  62. package/dist/lib/api/cache-purge.js +3 -17
  63. package/dist/lib/api/feature-flags.js +1 -11
  64. package/dist/lib/api/http.js +4 -14
  65. package/dist/lib/api/user.js +1 -13
  66. package/dist/lib/api.js +8 -23
  67. package/dist/lib/app-logs/app-logs.js +4 -18
  68. package/dist/lib/app-slowlogs/app-slowlogs.js +4 -18
  69. package/dist/lib/app.js +1 -11
  70. package/dist/lib/backup-storage-availability/backup-storage-availability.js +8 -11
  71. package/dist/lib/backup-storage-availability/docker-machine-not-found-error.js +1 -3
  72. package/dist/lib/cli/apiConfig.js +6 -20
  73. package/dist/lib/cli/command.js +26 -33
  74. package/dist/lib/cli/config.js +4 -11
  75. package/dist/lib/cli/envAlias.js +1 -7
  76. package/dist/lib/cli/exit.js +1 -13
  77. package/dist/lib/cli/format.js +4 -13
  78. package/dist/lib/cli/progress.js +2 -13
  79. package/dist/lib/cli/prompt.js +1 -11
  80. package/dist/lib/client-file-uploader.js +22 -24
  81. package/dist/lib/config/software.js +11 -25
  82. package/dist/lib/constants/dev-environment.js +35 -33
  83. package/dist/lib/constants/file-size.js +5 -11
  84. package/dist/lib/constants/vipgo.js +10 -21
  85. package/dist/lib/dev-environment/dev-environment-cli.js +46 -49
  86. package/dist/lib/dev-environment/dev-environment-configuration-file.js +14 -26
  87. package/dist/lib/dev-environment/dev-environment-core.js +30 -43
  88. package/dist/lib/dev-environment/dev-environment-lando.js +19 -30
  89. package/dist/lib/dev-environment/docker-utils.js +1 -6
  90. package/dist/lib/env.js +2 -13
  91. package/dist/lib/envvar/api-delete.js +1 -11
  92. package/dist/lib/envvar/api-get-all.js +2 -13
  93. package/dist/lib/envvar/api-get.js +2 -12
  94. package/dist/lib/envvar/api-list.js +3 -14
  95. package/dist/lib/envvar/api-set.js +1 -11
  96. package/dist/lib/envvar/api.js +8 -46
  97. package/dist/lib/envvar/input.js +2 -14
  98. package/dist/lib/envvar/logging.js +3 -13
  99. package/dist/lib/envvar/read-file.js +1 -13
  100. package/dist/lib/http/proxy-agent.js +3 -12
  101. package/dist/lib/keychain/insecure.js +1 -11
  102. package/dist/lib/keychain/secure.js +1 -11
  103. package/dist/lib/keychain.js +3 -14
  104. package/dist/lib/logout.js +2 -7
  105. package/dist/lib/media-import/media-file-import.js +4 -12
  106. package/dist/lib/media-import/progress.js +2 -12
  107. package/dist/lib/media-import/status.js +15 -30
  108. package/dist/lib/read-file.js +3 -15
  109. package/dist/lib/search-and-replace.js +9 -21
  110. package/dist/lib/site-import/db-file-import.js +6 -18
  111. package/dist/lib/site-import/status.js +19 -36
  112. package/dist/lib/token.js +5 -16
  113. package/dist/lib/tracker.js +5 -15
  114. package/dist/lib/user-error.js +1 -3
  115. package/dist/lib/utils.js +4 -15
  116. package/dist/lib/validations/is-multi-site-sql-dump.js +1 -3
  117. package/dist/lib/validations/is-multi-site.js +6 -17
  118. package/dist/lib/validations/is-multisite-domain-mapped.js +9 -21
  119. package/dist/lib/validations/line-by-line.js +5 -15
  120. package/dist/lib/validations/site-type.js +4 -15
  121. package/dist/lib/validations/sql.js +33 -15
  122. package/dist/lib/validations/utils.js +1 -3
  123. package/dist/lib/vip-import-validate-files.js +2 -9
  124. package/helpers/check-version.js +1 -0
  125. package/helpers/prepublishOnly.js +2 -1
  126. package/npm-shrinkwrap.json +2586 -2999
  127. package/package.json +30 -34
  128. package/dist/bin/vip-phpmyadmin.js +0 -53
  129. package/dist/commands/phpmyadmin.js +0 -91
@@ -1,37 +1,26 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.DB_BACKUP_JOB_STATUS_QUERY = exports.CREATE_DB_BACKUP_JOB_MUTATION = exports.BackupDBCommand = void 0;
7
5
  var _chalk = _interopRequireDefault(require("chalk"));
8
6
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
9
7
  var _api = _interopRequireWildcard(require("../lib/api"));
10
8
  var exit = _interopRequireWildcard(require("../lib/cli/exit"));
11
- var _utils = require("../lib/utils");
12
- var _progress = require("../lib/cli/progress");
13
9
  var _format = require("../lib/cli/format");
14
- 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); }
15
- 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; }
10
+ var _progress = require("../lib/cli/progress");
11
+ var _utils = require("../lib/utils");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
- /**
18
- * External dependencies
19
- */
20
-
21
- /**
22
- * Internal dependencies
23
- */
24
-
25
15
  const DB_BACKUP_PROGRESS_POLL_INTERVAL = 1000;
26
- const CREATE_DB_BACKUP_JOB_MUTATION = (0, _graphqlTag.default)`
16
+ const CREATE_DB_BACKUP_JOB_MUTATION = exports.CREATE_DB_BACKUP_JOB_MUTATION = (0, _graphqlTag.default)`
27
17
  mutation TriggerDatabaseBackup($input: AppEnvironmentTriggerDBBackupInput) {
28
18
  triggerDatabaseBackup(input: $input) {
29
19
  success
30
20
  }
31
21
  }
32
22
  `;
33
- exports.CREATE_DB_BACKUP_JOB_MUTATION = CREATE_DB_BACKUP_JOB_MUTATION;
34
- const DB_BACKUP_JOB_STATUS_QUERY = (0, _graphqlTag.default)`
23
+ const DB_BACKUP_JOB_STATUS_QUERY = exports.DB_BACKUP_JOB_STATUS_QUERY = (0, _graphqlTag.default)`
35
24
  query AppBackupJobStatus($appId: Int!, $envId: Int!) {
36
25
  app(id: $appId) {
37
26
  id
@@ -55,9 +44,7 @@ const DB_BACKUP_JOB_STATUS_QUERY = (0, _graphqlTag.default)`
55
44
  }
56
45
  }
57
46
  `;
58
- exports.DB_BACKUP_JOB_STATUS_QUERY = DB_BACKUP_JOB_STATUS_QUERY;
59
47
  async function getBackupJob(appId, envId) {
60
- var _app$environments;
61
48
  const api = await (0, _api.default)();
62
49
  const response = await api.query({
63
50
  query: DB_BACKUP_JOB_STATUS_QUERY,
@@ -72,7 +59,7 @@ async function getBackupJob(appId, envId) {
72
59
  app
73
60
  }
74
61
  } = response;
75
- return app === null || app === void 0 || (_app$environments = app.environments) === null || _app$environments === void 0 || (_app$environments = _app$environments[0]) === null || _app$environments === void 0 || (_app$environments = _app$environments.jobs) === null || _app$environments === void 0 ? void 0 : _app$environments[0];
62
+ return app?.environments?.[0]?.jobs?.[0];
76
63
  }
77
64
  async function createBackupJob(appId, envId) {
78
65
  // Disable global error handling so that we can handle errors ourselves
@@ -126,7 +113,7 @@ class BackupDBCommand {
126
113
  console.log(msg);
127
114
  }
128
115
  isDone(job) {
129
- return !(job !== null && job !== void 0 && job.inProgressLock);
116
+ return !job?.inProgressLock;
130
117
  }
131
118
 
132
119
  /**
@@ -139,11 +126,10 @@ class BackupDBCommand {
139
126
  this.progressTracker.stopPrinting();
140
127
  }
141
128
  async loadBackupJob() {
142
- var _this$job, _this$job2, _this$job3;
143
129
  this.job = await getBackupJob(this.app.id ?? 0, this.env.id ?? 0);
144
- this.backupName = ((_this$job = this.job) === null || _this$job === void 0 || (_this$job = _this$job.metadata) === null || _this$job === void 0 || (_this$job = _this$job.find(meta => (meta === null || meta === void 0 ? void 0 : meta.name) === 'backupName')) === null || _this$job === void 0 ? void 0 : _this$job.value) ?? 'Unknown';
145
- this.jobStatus = ((_this$job2 = this.job) === null || _this$job2 === void 0 || (_this$job2 = _this$job2.progress) === null || _this$job2 === void 0 ? void 0 : _this$job2.status) ?? undefined;
146
- if ((_this$job3 = this.job) !== null && _this$job3 !== void 0 && _this$job3.completedAt) {
130
+ this.backupName = this.job?.metadata?.find(meta => meta?.name === 'backupName')?.value ?? 'Unknown';
131
+ this.jobStatus = this.job?.progress?.status ?? undefined;
132
+ if (this.job?.completedAt) {
147
133
  this.jobAge = (new Date().getTime() - new Date(this.job.completedAt).getTime()) / 1000 / 60;
148
134
  } else {
149
135
  this.jobAge = undefined;
@@ -151,10 +137,9 @@ class BackupDBCommand {
151
137
  return this.job;
152
138
  }
153
139
  async run(silent = false) {
154
- var _this$job4;
155
140
  this.silent = silent;
156
141
  await this.loadBackupJob();
157
- if ((_this$job4 = this.job) !== null && _this$job4 !== void 0 && _this$job4.inProgressLock) {
142
+ if (this.job?.inProgressLock) {
158
143
  this.log('Database backup already in progress...');
159
144
  } else {
160
145
  try {
@@ -163,12 +148,11 @@ class BackupDBCommand {
163
148
  this.progressTracker.startPrinting();
164
149
  await createBackupJob(this.app.id ?? 0, this.env.id ?? 0);
165
150
  } catch (err) {
166
- var _error$graphQLErrors, _graphQLError$extensi;
167
151
  const error = err;
168
- const graphQLError = (_error$graphQLErrors = error.graphQLErrors) === null || _error$graphQLErrors === void 0 ? void 0 : _error$graphQLErrors[0];
152
+ const graphQLError = error.graphQLErrors?.[0];
169
153
  this.progressTracker.stepFailed(this.steps.PREPARE);
170
154
  this.stopProgressTracker();
171
- if ((graphQLError === null || graphQLError === void 0 || (_graphQLError$extensi = graphQLError.extensions) === null || _graphQLError$extensi === void 0 ? void 0 : _graphQLError$extensi.errorHttpCode) === 429) {
155
+ if (graphQLError?.extensions?.errorHttpCode === 429) {
172
156
  const retryAfter = graphQLError.extensions.retryAfter;
173
157
  await this.track('error', {
174
158
  error_type: 'rate_limit_exceeded',
@@ -1,25 +1,20 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.DevEnvImportSQLCommand = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
5
  var _chalk = _interopRequireDefault(require("chalk"));
6
+ var _fs = _interopRequireDefault(require("fs"));
7
+ var exit = _interopRequireWildcard(require("../lib/cli/exit"));
8
+ var _clientFileUploader = require("../lib/client-file-uploader");
9
9
  var _devEnvironmentCli = require("../lib/dev-environment/dev-environment-cli");
10
10
  var _devEnvironmentCore = require("../lib/dev-environment/dev-environment-core");
11
11
  var _devEnvironmentLando = require("../lib/dev-environment/dev-environment-lando");
12
12
  var _userError = _interopRequireDefault(require("../lib/user-error"));
13
+ var _utils = require("../lib/utils");
13
14
  var _sql = require("../lib/validations/sql");
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- /**
16
- * External dependencies
17
- */
18
-
19
- /**
20
- * Internal dependencies
21
- */
22
-
23
18
  class DevEnvImportSQLCommand {
24
19
  fileName;
25
20
  options;
@@ -33,6 +28,22 @@ class DevEnvImportSQLCommand {
33
28
  async run(silent = false) {
34
29
  const lando = await (0, _devEnvironmentLando.bootstrapLando)();
35
30
  await (0, _devEnvironmentCli.validateDependencies)(lando, this.slug, silent);
31
+ (0, _sql.validateImportFileExtension)(this.fileName);
32
+
33
+ // Check if file is compressed and if so, extract the
34
+ const fileMeta = await (0, _clientFileUploader.getFileMeta)(this.fileName);
35
+ if (fileMeta.isCompressed) {
36
+ const tmpDir = (0, _utils.makeTempDir)();
37
+ const sqlFile = `${tmpDir}/sql-import.sql`;
38
+ try {
39
+ console.log(`Extracting the compressed file ${this.fileName}...`);
40
+ await (0, _clientFileUploader.unzipFile)(this.fileName, sqlFile);
41
+ console.log(`${_chalk.default.green('✓')} Extracted to ${sqlFile}`);
42
+ this.fileName = sqlFile;
43
+ } catch (err) {
44
+ exit.withError(`Error extracting the SQL file: ${err.message}`);
45
+ }
46
+ }
36
47
  const {
37
48
  searchReplace,
38
49
  inPlace
@@ -1,31 +1,22 @@
1
1
  #!/usr/bin/env node
2
-
3
- /**
4
- * External dependencies
5
- */
6
2
  "use strict";
7
3
 
8
- Object.defineProperty(exports, "__esModule", {
9
- value: true
10
- });
4
+ exports.__esModule = true;
11
5
  exports.DevEnvSyncSQLCommand = void 0;
12
- var _fs = _interopRequireDefault(require("fs"));
6
+ var _vipSearchReplace = require("@automattic/vip-search-replace");
13
7
  var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _fs = _interopRequireDefault(require("fs"));
14
9
  var _url = _interopRequireDefault(require("url"));
15
- var _vipSearchReplace = require("@automattic/vip-search-replace");
16
- var _clientFileUploader = require("../lib/client-file-uploader");
10
+ var _devEnvImportSql = require("./dev-env-import-sql");
17
11
  var _exportSql = require("./export-sql");
12
+ var _backupStorageAvailability = require("../lib/backup-storage-availability/backup-storage-availability");
13
+ var exit = _interopRequireWildcard(require("../lib/cli/exit"));
14
+ var _clientFileUploader = require("../lib/client-file-uploader");
18
15
  var _utils = require("../lib/utils");
19
16
  var _lineByLine = require("../lib/validations/line-by-line");
20
- var exit = _interopRequireWildcard(require("../lib/cli/exit"));
21
- var _devEnvImportSql = require("./dev-env-import-sql");
22
- var _backupStorageAvailability = require("../lib/backup-storage-availability/backup-storage-availability");
23
- 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
- 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; }
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
- /**
27
- * Internal dependencies
28
- */
29
20
  /**
30
21
  * Finds the site home url from the SQL line
31
22
  *
@@ -33,9 +24,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
33
24
  * @return {string} Site home url. null if not found
34
25
  */
35
26
  function findSiteHomeUrl(sql) {
36
- var _sql$match;
37
27
  const regex = "'(siteurl|home)',\\s?'(.*?)'";
38
- const url = ((_sql$match = sql.match(regex)) === null || _sql$match === void 0 ? void 0 : _sql$match[2]) || '';
28
+ const url = sql.match(regex)?.[2] || '';
39
29
  return _url.default.parse(url).hostname || null;
40
30
  }
41
31
 
@@ -145,9 +135,18 @@ class DevEnvSyncSQLCommand {
145
135
  if (!site.blogId || site.blogId === 1) continue;
146
136
  const url = site.homeUrl.replace(/https?:\/\//, '');
147
137
  if (!this.searchReplaceMap[url]) continue;
148
- this.searchReplaceMap[url] = `${site.blogId}.${this.landoDomain}`;
138
+ this.searchReplaceMap[url] = `${this.slugifyDomain(url)}-${site.blogId}.${this.landoDomain}`;
149
139
  }
150
140
  }
141
+ slugifyDomain(domain) {
142
+ return String(domain).normalize('NFKD') // split accented characters into their base characters and diacritical marks
143
+ .replace(/[\u0300-\u036f]/g, '') // remove all the accents, which happen to be all in the \u03xx UNICODE block.
144
+ .trim() // trim leading or trailing whitespace
145
+ .toLowerCase() // convert to lowercase
146
+ .replace(/[^a-z0-9 .-]/g, '') // remove non-alphanumeric characters except for spaces, dots, and hyphens
147
+ .replace(/[.\s]+/g, '-') // replace dots and spaces with hyphens
148
+ .replace(/-+/g, '-'); // remove consecutive hyphens
149
+ }
151
150
 
152
151
  /**
153
152
  * Runs the SQL import command to import the SQL file
@@ -179,10 +178,10 @@ class DevEnvSyncSQLCommand {
179
178
  // the following will not get executed if this.generateExport() calls exit.withError() on all exception
180
179
  await this.track('error', {
181
180
  error_type: 'export_sql_backup',
182
- error_message: err === null || err === void 0 ? void 0 : err.message,
183
- stack: err === null || err === void 0 ? void 0 : err.stack
181
+ error_message: err?.message,
182
+ stack: err?.stack
184
183
  });
185
- exit.withError(`Error exporting SQL backup: ${err === null || err === void 0 ? void 0 : err.message}`);
184
+ exit.withError(`Error exporting SQL backup: ${err?.message}`);
186
185
  }
187
186
  try {
188
187
  console.log(`Extracting the exported file ${this.gzFile}...`);
@@ -191,8 +190,8 @@ class DevEnvSyncSQLCommand {
191
190
  } catch (err) {
192
191
  await this.track('error', {
193
192
  error_type: 'archive_extraction',
194
- error_message: err === null || err === void 0 ? void 0 : err.message,
195
- stack: err === null || err === void 0 ? void 0 : err.stack
193
+ error_message: err?.message,
194
+ stack: err?.stack
196
195
  });
197
196
  exit.withError(`Error extracting the SQL export: ${err.message}`);
198
197
  }
@@ -202,10 +201,10 @@ class DevEnvSyncSQLCommand {
202
201
  } catch (err) {
203
202
  await this.track('error', {
204
203
  error_type: 'extract_site_urls',
205
- error_message: err === null || err === void 0 ? void 0 : err.message,
206
- stack: err === null || err === void 0 ? void 0 : err.stack
204
+ error_message: err?.message,
205
+ stack: err?.stack
207
206
  });
208
- exit.withError(`Error extracting site URLs: ${err === null || err === void 0 ? void 0 : err.message}`);
207
+ exit.withError(`Error extracting site URLs: ${err?.message}`);
209
208
  }
210
209
  console.log('Generating search-replace configuration...');
211
210
  this.generateSearchReplaceMap();
@@ -219,10 +218,10 @@ class DevEnvSyncSQLCommand {
219
218
  } catch (err) {
220
219
  await this.track('error', {
221
220
  error_type: 'search_replace',
222
- error_message: err === null || err === void 0 ? void 0 : err.message,
223
- stack: err === null || err === void 0 ? void 0 : err.stack
221
+ error_message: err?.message,
222
+ stack: err?.stack
224
223
  });
225
- exit.withError(`Error replacing domains: ${err === null || err === void 0 ? void 0 : err.message}`);
224
+ exit.withError(`Error replacing domains: ${err?.message}`);
226
225
  }
227
226
  try {
228
227
  console.log('Importing the SQL file...');
@@ -232,10 +231,10 @@ class DevEnvSyncSQLCommand {
232
231
  } catch (err) {
233
232
  await this.track('error', {
234
233
  error_type: 'import_sql_file',
235
- error_message: err === null || err === void 0 ? void 0 : err.message,
236
- stack: err === null || err === void 0 ? void 0 : err.stack
234
+ error_message: err?.message,
235
+ stack: err?.stack
237
236
  });
238
- exit.withError(`Error importing SQL file: ${err === null || err === void 0 ? void 0 : err.message}`);
237
+ exit.withError(`Error importing SQL file: ${err?.message}`);
239
238
  }
240
239
  }
241
240
  }
@@ -1,32 +1,22 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.GENERATE_DOWNLOAD_LINK_MUTATION = exports.ExportSQLCommand = exports.CREATE_EXPORT_JOB_MUTATION = void 0;
7
- var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
5
+ var _chalk = _interopRequireDefault(require("chalk"));
8
6
  var _fs = _interopRequireDefault(require("fs"));
7
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
9
8
  var _https = _interopRequireDefault(require("https"));
10
9
  var _path = _interopRequireDefault(require("path"));
11
- var _chalk = _interopRequireDefault(require("chalk"));
10
+ var _backupDb = require("./backup-db");
12
11
  var _api = _interopRequireWildcard(require("../lib/api"));
12
+ var _backupStorageAvailability = require("../lib/backup-storage-availability/backup-storage-availability");
13
+ var exit = _interopRequireWildcard(require("../lib/cli/exit"));
13
14
  var _format = require("../lib/cli/format");
14
15
  var _progress = require("../lib/cli/progress");
15
- var exit = _interopRequireWildcard(require("../lib/cli/exit"));
16
16
  var _utils = require("../lib/utils");
17
- var _backupDb = require("./backup-db");
18
- var _backupStorageAvailability = require("../lib/backup-storage-availability/backup-storage-availability");
19
- 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); }
20
- 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; }
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
- /**
23
- * External dependencies
24
- */
25
-
26
- /**
27
- * Internal dependencies
28
- */
29
-
30
20
  const EXPORT_SQL_PROGRESS_POLL_INTERVAL = 1000;
31
21
  const BACKUP_AND_JOB_STATUS_QUERY = (0, _graphqlTag.default)`
32
22
  query AppBackupAndJobStatus($appId: Int!, $envId: Int!) {
@@ -67,7 +57,7 @@ const BACKUP_AND_JOB_STATUS_QUERY = (0, _graphqlTag.default)`
67
57
  `;
68
58
 
69
59
  // Exporting for test purposes
70
- const GENERATE_DOWNLOAD_LINK_MUTATION = (0, _graphqlTag.default)`
60
+ const GENERATE_DOWNLOAD_LINK_MUTATION = exports.GENERATE_DOWNLOAD_LINK_MUTATION = (0, _graphqlTag.default)`
71
61
  mutation GenerateDBBackupCopyUrl($input: AppEnvironmentGenerateDBBackupCopyUrlInput) {
72
62
  generateDBBackupCopyUrl(input: $input) {
73
63
  url
@@ -77,8 +67,7 @@ const GENERATE_DOWNLOAD_LINK_MUTATION = (0, _graphqlTag.default)`
77
67
  `;
78
68
 
79
69
  // Exporting for test purposes
80
- exports.GENERATE_DOWNLOAD_LINK_MUTATION = GENERATE_DOWNLOAD_LINK_MUTATION;
81
- const CREATE_EXPORT_JOB_MUTATION = (0, _graphqlTag.default)`
70
+ const CREATE_EXPORT_JOB_MUTATION = exports.CREATE_EXPORT_JOB_MUTATION = (0, _graphqlTag.default)`
82
71
  mutation BackupDBCopy($input: AppEnvironmentStartDBBackupCopyInput) {
83
72
  startDBBackupCopy(input: $input) {
84
73
  message
@@ -94,7 +83,6 @@ const CREATE_EXPORT_JOB_MUTATION = (0, _graphqlTag.default)`
94
83
  * @param {number} envId Environment ID
95
84
  * @return {Promise} A promise which resolves to the latest backup and job status
96
85
  */
97
- exports.CREATE_EXPORT_JOB_MUTATION = CREATE_EXPORT_JOB_MUTATION;
98
86
  async function fetchLatestBackupAndJobStatus(appId, envId) {
99
87
  const api = await (0, _api.default)();
100
88
  const response = await api.query({
@@ -257,7 +245,7 @@ class ExportSQLCommand {
257
245
  async getExportedFileName() {
258
246
  const job = await this.getExportJob();
259
247
  const metadata = job.metadata.find(md => md.name === 'uploadPath');
260
- return metadata === null || metadata === void 0 ? void 0 : metadata.value.split('/')[1];
248
+ return metadata?.value.split('/')[1];
261
249
  }
262
250
 
263
251
  /**
@@ -298,8 +286,8 @@ class ExportSQLCommand {
298
286
  * @return {boolean} True if the preflight step is successful
299
287
  */
300
288
  isPrepared(job) {
301
- const step = job === null || job === void 0 ? void 0 : job.progress.steps.find(st => st.id === 'preflight');
302
- return (step === null || step === void 0 ? void 0 : step.status) === 'success';
289
+ const step = job?.progress.steps.find(st => st.id === 'preflight');
290
+ return step?.status === 'success';
303
291
  }
304
292
 
305
293
  /**
@@ -309,8 +297,8 @@ class ExportSQLCommand {
309
297
  * @return {boolean} True if the upload step is successful
310
298
  */
311
299
  isCreated(job) {
312
- const step = job === null || job === void 0 ? void 0 : job.progress.steps.find(st => st.id === 'upload_backup');
313
- return (step === null || step === void 0 ? void 0 : step.status) === 'success';
300
+ const step = job?.progress.steps.find(st => st.id === 'upload_backup');
301
+ return step?.status === 'success';
314
302
  }
315
303
 
316
304
  /**
@@ -349,10 +337,10 @@ class ExportSQLCommand {
349
337
  } catch (err) {
350
338
  await this.track('error', {
351
339
  error_type: 'cannot_write_to_path',
352
- error_message: `Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`,
353
- stack: err === null || err === void 0 ? void 0 : err.stack
340
+ error_message: `Cannot write to the specified path: ${err?.message}`,
341
+ stack: err?.stack
354
342
  });
355
- exit.withError(`Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`);
343
+ exit.withError(`Cannot write to the specified path: ${err?.message}`);
356
344
  }
357
345
  }
358
346
  if (this.generateBackup) {
@@ -382,21 +370,21 @@ class ExportSQLCommand {
382
370
  await createExportJob(this.app.id, this.env.id, latestBackup.id);
383
371
  } catch (err) {
384
372
  // Todo: match error code instead of message substring
385
- if (err !== null && err !== void 0 && err.message.includes('Backup Copy already in progress')) {
373
+ if (err?.message.includes('Backup Copy already in progress')) {
386
374
  await this.track('error', {
387
375
  error_type: 'job_already_running',
388
- error_message: err === null || err === void 0 ? void 0 : err.message,
389
- stack: err === null || err === void 0 ? void 0 : err.stack
376
+ error_message: err?.message,
377
+ stack: err?.stack
390
378
  });
391
379
  exit.withError('There is an export job already running for this environment: ' + `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.');
392
380
  } else {
393
381
  await this.track('error', {
394
382
  error_type: 'create_export_job',
395
- error_message: err === null || err === void 0 ? void 0 : err.message,
396
- stack: err === null || err === void 0 ? void 0 : err.stack
383
+ error_message: err?.message,
384
+ stack: err?.stack
397
385
  });
398
386
  }
399
- exit.withError(`Error creating export job: ${err === null || err === void 0 ? void 0 : err.message}`);
387
+ exit.withError(`Error creating export job: ${err?.message}`);
400
388
  }
401
389
  }
402
390
  this.progressTracker.stepRunning(this.steps.PREPARE);
@@ -429,10 +417,10 @@ class ExportSQLCommand {
429
417
  this.stopProgressTracker();
430
418
  await this.track('error', {
431
419
  error_type: 'download_failed',
432
- error_message: err === null || err === void 0 ? void 0 : err.message,
433
- stack: err === null || err === void 0 ? void 0 : err.stack
420
+ error_message: err?.message,
421
+ stack: err?.stack
434
422
  });
435
- exit.withError(`Error downloading exported file: ${err === null || err === void 0 ? void 0 : err.message}`);
423
+ exit.withError(`Error downloading exported file: ${err?.message}`);
436
424
  }
437
425
  }
438
426
  }
@@ -1,20 +1,10 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.default = void 0;
7
5
  var _debug = _interopRequireDefault(require("debug"));
8
6
  var _http = _interopRequireDefault(require("../../../lib/api/http"));
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- /**
11
- * External dependencies
12
- */
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
-
18
8
  const debug = (0, _debug.default)('@automattic/vip:analytics:clients:pendo');
19
9
  /**
20
10
  * Pendo analytics client.
@@ -1,22 +1,12 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.default = void 0;
5
+ var _debug = _interopRequireDefault(require("debug"));
7
6
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
8
7
  var _querystring = _interopRequireDefault(require("querystring"));
9
- var _debug = _interopRequireDefault(require("debug"));
10
8
  var _apiConfig = require("../../cli/apiConfig");
11
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- /**
13
- * External dependencies
14
- */
15
-
16
- /**
17
- * Internal dependencies
18
- */
19
-
20
10
  const debug = (0, _debug.default)('@automattic/vip:analytics:clients:tracks');
21
11
  const validEventOrPropNamePattern = /^[a-z_][a-z0-9_]*$/;
22
12
  /**
@@ -1,20 +1,10 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.default = void 0;
7
5
  var _debug = _interopRequireDefault(require("debug"));
8
6
  var _env = _interopRequireDefault(require("../env"));
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- /**
11
- * External dependencies
12
- */
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
-
18
8
  const debug = (0, _debug.default)('@automattic/vip:analytics');
19
9
 
20
10
  /* eslint-disable camelcase */
@@ -1,24 +1,13 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.default = _default;
7
5
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
8
6
  var _api = _interopRequireDefault(require("../../lib/api"));
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- /**
11
- * External dependencies
12
- */
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
-
18
8
  async function _default(app, fields = 'id,name', fragments = '') {
19
9
  const api = await (0, _api.default)();
20
- if (isNaN(+app)) {
21
- var _res$data$apps;
10
+ if (isNaN(Number(app))) {
22
11
  const res = await api.query({
23
12
  query: (0, _graphqlTag.default)`query App( $name: String ) {
24
13
  apps( first: 1, name: $name ) {
@@ -34,7 +23,7 @@ async function _default(app, fields = 'id,name', fragments = '') {
34
23
  name: app
35
24
  }
36
25
  });
37
- if (!((_res$data$apps = res.data.apps) !== null && _res$data$apps !== void 0 && (_res$data$apps = _res$data$apps.edges) !== null && _res$data$apps !== void 0 && _res$data$apps.length)) {
26
+ if (!res.data.apps?.edges?.length) {
38
27
  return {};
39
28
  }
40
29
  return res.data.apps.edges[0];
@@ -1,23 +1,11 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.appQuery = void 0;
7
5
  exports.purgeCache = purgeCache;
8
6
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
9
7
  var _api = _interopRequireDefault(require("../../lib/api"));
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- // @format
12
-
13
- /**
14
- * External dependencies
15
- */
16
-
17
- /**
18
- * Internal dependencies
19
- */
20
-
21
9
  const mutation = (0, _graphqlTag.default)`
22
10
  mutation PurgePageCacheMutation($appId: Int!, $envId: Int!, $urls: [String!]!) {
23
11
  purgePageCache(input: { appId: $appId, environmentId: $envId, urls: $urls }) {
@@ -28,7 +16,7 @@ const mutation = (0, _graphqlTag.default)`
28
16
  `;
29
17
 
30
18
  // The subquery for environments lets users choose any environment, including production.
31
- const appQuery = `
19
+ const appQuery = exports.appQuery = `
32
20
  id
33
21
  name
34
22
  environments {
@@ -41,9 +29,7 @@ const appQuery = `
41
29
  type
42
30
  }
43
31
  `;
44
- exports.appQuery = appQuery;
45
32
  async function purgeCache(appId, envId, urls) {
46
- var _response$data;
47
33
  const api = await (0, _api.default)();
48
34
  const variables = {
49
35
  appId,
@@ -54,5 +40,5 @@ async function purgeCache(appId, envId, urls) {
54
40
  mutation,
55
41
  variables
56
42
  });
57
- return ((_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.purgePageCache) ?? null;
43
+ return response.data?.purgePageCache ?? null;
58
44
  }
@@ -1,20 +1,10 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
3
+ exports.__esModule = true;
6
4
  exports.get = get;
7
5
  var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
8
6
  var _api = _interopRequireDefault(require("../../lib/api"));
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- /**
11
- * External dependencies
12
- */
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
-
18
8
  let api;
19
9
 
20
10
  // If Token.get() fails, we may have an unhandled rejection