@automattic/vip 2.31.0-dev1 → 2.31.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.
- package/CHANGELOG.md +25 -0
- package/assets/dev-env.lando.template.yml.ejs +14 -0
- package/assets/dev-env.nginx.template.conf.ejs +23 -2
- package/dist/bin/vip-dev-env-shell.js +2 -1
- package/dist/bin/vip-dev-env-sync-sql.js +4 -1
- package/dist/bin/vip-dev-env-sync.js +0 -0
- package/dist/bin/vip-dev-env-update.js +1 -0
- package/dist/commands/dev-env-sync-sql.js +26 -7
- package/dist/commands/export-sql.js +12 -3
- package/dist/lib/dev-environment/dev-environment-cli.js +6 -4
- package/dist/lib/dev-environment/dev-environment-configuration-file.js +4 -2
- package/dist/lib/dev-environment/dev-environment-core.js +3 -0
- package/npm-shrinkwrap.json +2 -70
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
+
### 2.31.0
|
|
4
|
+
|
|
5
|
+
- #1397 feature(dev-env): Add ability to sync multisites
|
|
6
|
+
- #1399 chore(dev-deps): Remove stub type definitions
|
|
7
|
+
- #1394 FORNO-1609: Combine all error events into one error event
|
|
8
|
+
- #1345 feat(dev-env): Add Photon
|
|
9
|
+
- #1398 Fix coverage generation
|
|
10
|
+
- #1395 Add types for the other ways of using enquirer
|
|
11
|
+
- #1388 Typescript: refactor `vip-whoami`
|
|
12
|
+
- #1393 refactor: Convert `lib/{app-logs,envvar}` to TypeScript
|
|
13
|
+
- #1392 refactor: Convert `lib/config` to TypeScript
|
|
14
|
+
- #1391 refactor: Convert lib to TypeScript
|
|
15
|
+
- #1390 chore(deps): Update @automattic/vip-search-replace to 1.1.1
|
|
16
|
+
- #1389 Replace 'site' by 'environment' in error msg
|
|
17
|
+
- #1385 refactor: Convert lib/api to TypeScript
|
|
18
|
+
- #1387 chore(deps): Update @automattic/vip-search-replace to 1.1.0
|
|
19
|
+
- #1386 fix: Fix `getAbsolutePath()` and convert `utils.js` to TypeScript
|
|
20
|
+
- #1383 fix(dev-env): Pull uniqueLabel field from backend
|
|
21
|
+
- #1382 test: Reduce noise from tests
|
|
22
|
+
- #1384 fix: Add return type to parseEnvAliasFromArgv()
|
|
23
|
+
- #1381 refactor: Convert lib/cli and dependencies to TypeScript
|
|
24
|
+
- #1377 chore: Configure linting for TS files
|
|
25
|
+
- #1380 chore(dev-deps): Remove jest-environment-jsdom
|
|
26
|
+
- #1378 refactor: Convert analytics and dependencies to TypeScript
|
|
27
|
+
|
|
3
28
|
### 2.30.0
|
|
4
29
|
|
|
5
30
|
- #1264 feature(dev-env): Add dev-env-sync-sql command
|
|
@@ -222,6 +222,20 @@ services:
|
|
|
222
222
|
LANDO_NEEDS_EXEC: 1
|
|
223
223
|
<% } %>
|
|
224
224
|
|
|
225
|
+
<% if ( photon ) { %>
|
|
226
|
+
photon:
|
|
227
|
+
type: compose
|
|
228
|
+
services:
|
|
229
|
+
image: ghcr.io/automattic/vip-container-images/photon:latest
|
|
230
|
+
command: /usr/sbin/php-fpm
|
|
231
|
+
environment:
|
|
232
|
+
LANDO_NO_USER_PERMS: 1
|
|
233
|
+
LANDO_NO_SCRIPTS: 1
|
|
234
|
+
LANDO_NEEDS_EXEC: 1
|
|
235
|
+
volumes:
|
|
236
|
+
- ./uploads:/usr/share/webapps/photon/uploads:ro
|
|
237
|
+
<% } %>
|
|
238
|
+
|
|
225
239
|
tooling:
|
|
226
240
|
wp:
|
|
227
241
|
service: php
|
|
@@ -1,6 +1,27 @@
|
|
|
1
|
+
<% if ( photon ) { %>
|
|
2
|
+
|
|
3
|
+
location ^~ /wp-content/uploads/ {
|
|
4
|
+
expires max;
|
|
5
|
+
log_not_found off;
|
|
1
6
|
<% if ( mediaRedirectDomain ) { %>
|
|
7
|
+
if (!-f $request_filename) {
|
|
8
|
+
rewrite ^/(.*)$ <%= mediaRedirectDomain %>/$1 redirect;
|
|
9
|
+
}
|
|
10
|
+
<% } %>
|
|
11
|
+
|
|
12
|
+
include fastcgi_params;
|
|
13
|
+
fastcgi_param DOCUMENT_ROOT /usr/share/webapps/photon;
|
|
14
|
+
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/photon/index.php;
|
|
15
|
+
fastcgi_param SCRIPT_NAME /index.php;
|
|
16
|
+
|
|
17
|
+
if ($request_uri ~* \.(gif|jpe?g|png)\?) {
|
|
18
|
+
fastcgi_pass photon:9000;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
<% } else if ( mediaRedirectDomain ) { %>
|
|
2
23
|
|
|
3
|
-
location
|
|
24
|
+
location ^~ /wp-content/uploads {
|
|
4
25
|
expires max;
|
|
5
26
|
log_not_found off;
|
|
6
27
|
try_files $uri @prod_site;
|
|
@@ -10,4 +31,4 @@ location @prod_site {
|
|
|
10
31
|
rewrite ^/(.*)$ <%= mediaRedirectDomain %>/$1 redirect;
|
|
11
32
|
}
|
|
12
33
|
|
|
13
|
-
<% } %>
|
|
34
|
+
<% } %>
|
|
@@ -62,7 +62,8 @@ const appQuery = `
|
|
|
62
62
|
const trackerFn = (0, _tracker.makeCommandTracker)('dev_env_sync_sql', {
|
|
63
63
|
app: app.id,
|
|
64
64
|
env: env.uniqueLabel,
|
|
65
|
-
slug
|
|
65
|
+
slug,
|
|
66
|
+
multisite: env.isMultisite
|
|
66
67
|
});
|
|
67
68
|
await trackerFn('execute');
|
|
68
69
|
const lando = await (0, _devEnvironmentLando.bootstrapLando)();
|
|
@@ -74,6 +75,8 @@ const appQuery = `
|
|
|
74
75
|
throw new _userError.default('Environment needs to be started first');
|
|
75
76
|
}
|
|
76
77
|
const cmd = new _devEnvSyncSql.DevEnvSyncSQLCommand(app, env, slug, trackerFn);
|
|
78
|
+
// TODO: There's a function called handleCLIException for dev-env that handles exceptions but DevEnvSyncSQLCommand has its own implementation.
|
|
79
|
+
// We should probably use handleCLIException instead?
|
|
77
80
|
await cmd.run();
|
|
78
81
|
await trackerFn('success');
|
|
79
82
|
});
|
|
File without changes
|
|
@@ -64,6 +64,7 @@ cmd.argv(process.argv, async (arg, opt) => {
|
|
|
64
64
|
phpmyadmin: currentInstanceData.phpmyadmin,
|
|
65
65
|
xdebug: currentInstanceData.xdebug,
|
|
66
66
|
mailpit: (_currentInstanceData$ = currentInstanceData.mailpit) !== null && _currentInstanceData$ !== void 0 ? _currentInstanceData$ : currentInstanceData.mailhog,
|
|
67
|
+
photon: currentInstanceData.photon,
|
|
67
68
|
mediaRedirectDomain: currentInstanceData.mediaRedirectDomain,
|
|
68
69
|
multisite: false,
|
|
69
70
|
title: ''
|
|
@@ -135,7 +135,7 @@ class DevEnvSyncSQLCommand {
|
|
|
135
135
|
for (const site of networkSites) {
|
|
136
136
|
if (!site.blogId || site.blogId === 1) continue;
|
|
137
137
|
const url = site.homeUrl.replace(/https?:\/\//, '');
|
|
138
|
-
if (!this.searchReplaceMap[url])
|
|
138
|
+
if (!this.searchReplaceMap[url]) continue;
|
|
139
139
|
this.searchReplaceMap[url] = `${site.blogId}.${this.landoDomain}`;
|
|
140
140
|
}
|
|
141
141
|
}
|
|
@@ -165,6 +165,14 @@ class DevEnvSyncSQLCommand {
|
|
|
165
165
|
try {
|
|
166
166
|
await this.generateExport();
|
|
167
167
|
} catch (err) {
|
|
168
|
+
// this.generateExport probably catches all exceptions, track the event and runs exit.withError() but if things go really wrong
|
|
169
|
+
// and we have no tracking data, we would at least have it logged here.
|
|
170
|
+
// the following will not get executed if this.generateExport() calls exit.withError() on all exception
|
|
171
|
+
await this.track('error', {
|
|
172
|
+
error_type: 'export_sql_backup',
|
|
173
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
174
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
175
|
+
});
|
|
168
176
|
exit.withError(`Error exporting SQL backup: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
169
177
|
}
|
|
170
178
|
try {
|
|
@@ -172,8 +180,10 @@ class DevEnvSyncSQLCommand {
|
|
|
172
180
|
await (0, _clientFileUploader.unzipFile)(this.gzFile, this.sqlFile);
|
|
173
181
|
console.log(`${_chalk.default.green('✓')} Extracted to ${this.sqlFile}`);
|
|
174
182
|
} catch (err) {
|
|
175
|
-
await this.track('
|
|
176
|
-
|
|
183
|
+
await this.track('error', {
|
|
184
|
+
error_type: 'archive_extraction',
|
|
185
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
186
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
177
187
|
});
|
|
178
188
|
exit.withError(`Error extracting the SQL export: ${err.message}`);
|
|
179
189
|
}
|
|
@@ -181,6 +191,11 @@ class DevEnvSyncSQLCommand {
|
|
|
181
191
|
console.log('Extracting site urls from the SQL file...');
|
|
182
192
|
this.siteUrls = await extractSiteUrls(this.sqlFile);
|
|
183
193
|
} catch (err) {
|
|
194
|
+
await this.track('error', {
|
|
195
|
+
error_type: 'extract_site_urls',
|
|
196
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
197
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
198
|
+
});
|
|
184
199
|
exit.withError(`Error extracting site URLs: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
185
200
|
}
|
|
186
201
|
console.log('Generating search-replace configuration...');
|
|
@@ -193,8 +208,10 @@ class DevEnvSyncSQLCommand {
|
|
|
193
208
|
await this.runSearchReplace();
|
|
194
209
|
console.log(`${_chalk.default.green('✓')} Search-replace operation is complete`);
|
|
195
210
|
} catch (err) {
|
|
196
|
-
await this.track('
|
|
197
|
-
|
|
211
|
+
await this.track('error', {
|
|
212
|
+
error_type: 'search_replace',
|
|
213
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
214
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
198
215
|
});
|
|
199
216
|
exit.withError(`Error replacing domains: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
200
217
|
}
|
|
@@ -203,8 +220,10 @@ class DevEnvSyncSQLCommand {
|
|
|
203
220
|
await this.runImport();
|
|
204
221
|
console.log(`${_chalk.default.green('✓')} SQL file imported`);
|
|
205
222
|
} catch (err) {
|
|
206
|
-
await this.track('
|
|
207
|
-
|
|
223
|
+
await this.track('error', {
|
|
224
|
+
error_type: 'import_sql_file',
|
|
225
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
226
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
208
227
|
});
|
|
209
228
|
exit.withError(`Error importing SQL file: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
210
229
|
}
|
|
@@ -322,7 +322,8 @@ class ExportSQLCommand {
|
|
|
322
322
|
} catch (err) {
|
|
323
323
|
await this.track('error', {
|
|
324
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
|
+
error_message: `Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`,
|
|
326
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
326
327
|
});
|
|
327
328
|
exit.withError(`Cannot write to the specified path: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
328
329
|
}
|
|
@@ -351,9 +352,16 @@ class ExportSQLCommand {
|
|
|
351
352
|
if (err !== null && err !== void 0 && err.message.includes('Backup Copy already in progress')) {
|
|
352
353
|
await this.track('error', {
|
|
353
354
|
error_type: 'job_already_running',
|
|
354
|
-
error_message: err === null || err === void 0 ? void 0 : err.message
|
|
355
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
356
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
355
357
|
});
|
|
356
358
|
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.');
|
|
359
|
+
} else {
|
|
360
|
+
await this.track('error', {
|
|
361
|
+
error_type: 'create_export_job',
|
|
362
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
363
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
364
|
+
});
|
|
357
365
|
}
|
|
358
366
|
exit.withError(`Error creating export job: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
359
367
|
}
|
|
@@ -378,7 +386,8 @@ class ExportSQLCommand {
|
|
|
378
386
|
this.stopProgressTracker();
|
|
379
387
|
await this.track('error', {
|
|
380
388
|
error_type: 'download_failed',
|
|
381
|
-
error_message: err === null || err === void 0 ? void 0 : err.message
|
|
389
|
+
error_message: err === null || err === void 0 ? void 0 : err.message,
|
|
390
|
+
stack: err === null || err === void 0 ? void 0 : err.stack
|
|
382
391
|
});
|
|
383
392
|
exit.withError(`Error downloading exported file: ${err === null || err === void 0 ? void 0 : err.message}`);
|
|
384
393
|
}
|
|
@@ -307,12 +307,14 @@ async function promptForArguments(preselectedOptions, defaultOptions, suppressPr
|
|
|
307
307
|
xdebug: false,
|
|
308
308
|
xdebugConfig: preselectedOptions.xdebugConfig,
|
|
309
309
|
siteSlug: '',
|
|
310
|
-
mailpit: false
|
|
310
|
+
mailpit: false,
|
|
311
|
+
photon: false
|
|
311
312
|
};
|
|
312
313
|
const promptLabels = {
|
|
313
314
|
xdebug: 'XDebug',
|
|
314
315
|
phpmyadmin: 'phpMyAdmin',
|
|
315
|
-
mailpit: 'Mailpit'
|
|
316
|
+
mailpit: 'Mailpit',
|
|
317
|
+
photon: 'Photon'
|
|
316
318
|
};
|
|
317
319
|
if (!instanceData.mediaRedirectDomain && defaultOptions.mediaRedirectDomain) {
|
|
318
320
|
const mediaRedirectPromptText = `Would you like to redirect to ${defaultOptions.mediaRedirectDomain} for missing media files?`;
|
|
@@ -340,7 +342,7 @@ async function promptForArguments(preselectedOptions, defaultOptions, suppressPr
|
|
|
340
342
|
} else {
|
|
341
343
|
instanceData.elasticsearch = await promptForBoolean('Enable Elasticsearch (needed by Enterprise Search)?', !!defaultOptions.elasticsearch);
|
|
342
344
|
}
|
|
343
|
-
for (const service of ['phpmyadmin', 'xdebug', 'mailpit']) {
|
|
345
|
+
for (const service of ['phpmyadmin', 'xdebug', 'mailpit', 'photon']) {
|
|
344
346
|
if (service in instanceData) {
|
|
345
347
|
if (service in preselectedOptions) {
|
|
346
348
|
instanceData[service] = preselectedOptions[service];
|
|
@@ -636,7 +638,7 @@ function processVersionOption(value) {
|
|
|
636
638
|
}
|
|
637
639
|
function addDevEnvConfigurationOptions(command) {
|
|
638
640
|
// We leave the third parameter to undefined on some because the defaults are handled in preProcessInstanceData()
|
|
639
|
-
return command.option('wordpress', 'Use a specific WordPress version', undefined, processVersionOption).option(['u', 'mu-plugins'], 'Use a specific mu-plugins changeset or local directory').option('app-code', 'Use the application code from a local directory or use "demo" for VIP skeleton code').option('phpmyadmin', 'Enable PHPMyAdmin component. By default it is disabled', undefined, processBooleanOption).option('xdebug', 'Enable XDebug. By default it is disabled', undefined, processBooleanOption).option('xdebug_config', 'Extra configuration to pass to xdebug via XDEBUG_CONFIG environment variable').option('elasticsearch', 'Enable Elasticsearch (needed by Enterprise Search)', undefined, processBooleanOption).option(['r', 'media-redirect-domain'], 'Domain to redirect for missing media files. This can be used to still have images without the need to import them locally.').option('php', 'Explicitly choose PHP version to use', undefined, processVersionOption).option(['G', 'mailhog'], 'Enable Mailpit. By default it is disabled (deprecated option, please use --mailpit instead)', undefined, processBooleanOption).option(['A', 'mailpit'], 'Enable Mailpit. By default it is disabled', undefined, processBooleanOption);
|
|
641
|
+
return command.option('wordpress', 'Use a specific WordPress version', undefined, processVersionOption).option(['u', 'mu-plugins'], 'Use a specific mu-plugins changeset or local directory').option('app-code', 'Use the application code from a local directory or use "demo" for VIP skeleton code').option('phpmyadmin', 'Enable PHPMyAdmin component. By default it is disabled', undefined, processBooleanOption).option('xdebug', 'Enable XDebug. By default it is disabled', undefined, processBooleanOption).option('xdebug_config', 'Extra configuration to pass to xdebug via XDEBUG_CONFIG environment variable').option('elasticsearch', 'Enable Elasticsearch (needed by Enterprise Search)', undefined, processBooleanOption).option(['r', 'media-redirect-domain'], 'Domain to redirect for missing media files. This can be used to still have images without the need to import them locally.').option('php', 'Explicitly choose PHP version to use', undefined, processVersionOption).option(['G', 'mailhog'], 'Enable Mailpit. By default it is disabled (deprecated option, please use --mailpit instead)', undefined, processBooleanOption).option(['A', 'mailpit'], 'Enable Mailpit. By default it is disabled', undefined, processBooleanOption).option(['H', 'photon'], 'Enable Photon. By default it is disabled', undefined, processBooleanOption);
|
|
640
642
|
}
|
|
641
643
|
|
|
642
644
|
/**
|
|
@@ -94,7 +94,8 @@ async function sanitizeConfiguration(configuration) {
|
|
|
94
94
|
phpmyadmin: stringToBooleanIfDefined(configuration.phpmyadmin),
|
|
95
95
|
xdebug: stringToBooleanIfDefined(configuration.xdebug),
|
|
96
96
|
mailpit: stringToBooleanIfDefined((_configuration$mailpi = configuration.mailpit) !== null && _configuration$mailpi !== void 0 ? _configuration$mailpi : configuration.mailhog),
|
|
97
|
-
'media-redirect-domain': configuration['media-redirect-domain']
|
|
97
|
+
'media-redirect-domain': configuration['media-redirect-domain'],
|
|
98
|
+
photon: stringToBooleanIfDefined(configuration.photon)
|
|
98
99
|
};
|
|
99
100
|
|
|
100
101
|
// Remove undefined values
|
|
@@ -119,7 +120,8 @@ function mergeConfigurationFileOptions(preselectedOptions, configurationFileOpti
|
|
|
119
120
|
xdebug: configurationFileOptions.xdebug,
|
|
120
121
|
xdebugConfig: configurationFileOptions['xdebug-config'],
|
|
121
122
|
mailpit: (_configurationFileOpt = configurationFileOptions.mailpit) !== null && _configurationFileOpt !== void 0 ? _configurationFileOpt : configurationFileOptions.mailhog,
|
|
122
|
-
mediaRedirectDomain: configurationFileOptions['media-redirect-domain']
|
|
123
|
+
mediaRedirectDomain: configurationFileOptions['media-redirect-domain'],
|
|
124
|
+
photon: configurationFileOptions.photon
|
|
123
125
|
};
|
|
124
126
|
const mergedOptions = {};
|
|
125
127
|
Object.keys(configurationFileInstanceOptions).forEach(key => {
|
|
@@ -146,6 +146,9 @@ function preProcessInstanceData(instanceData) {
|
|
|
146
146
|
if (!newInstanceData.phpmyadmin) {
|
|
147
147
|
newInstanceData.phpmyadmin = false;
|
|
148
148
|
}
|
|
149
|
+
if (!newInstanceData.photon) {
|
|
150
|
+
newInstanceData.photon = false;
|
|
151
|
+
}
|
|
149
152
|
|
|
150
153
|
// Mailpit migration
|
|
151
154
|
if (!newInstanceData.mailpit) {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@automattic/vip",
|
|
3
|
-
"version": "2.31.0
|
|
3
|
+
"version": "2.31.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@automattic/vip",
|
|
9
|
-
"version": "2.31.0
|
|
9
|
+
"version": "2.31.0",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
@@ -115,17 +115,14 @@
|
|
|
115
115
|
"@types/js-yaml": "^4.0.5",
|
|
116
116
|
"@types/json2csv": "5.0.3",
|
|
117
117
|
"@types/node-fetch": "^2.6.4",
|
|
118
|
-
"@types/opn": "5.5.0",
|
|
119
118
|
"@types/proxy-from-env": "^1.0.1",
|
|
120
119
|
"@types/semver": "7.5.0",
|
|
121
120
|
"@types/shelljs": "^0.8.12",
|
|
122
121
|
"@types/single-line-log": "1.1.0",
|
|
123
122
|
"@types/update-notifier": "5.1.0",
|
|
124
123
|
"@types/uuid": "9.0.0",
|
|
125
|
-
"@types/xdg-basedir": "^4.0.2",
|
|
126
124
|
"@types/xml2js": "^0.4.11",
|
|
127
125
|
"babel-jest": "^29.5.0",
|
|
128
|
-
"babel-plugin-explicit-exports-references": "^1.0.2",
|
|
129
126
|
"babel-plugin-module-resolver": "5.0.0",
|
|
130
127
|
"check-node-version": "^4.2.1",
|
|
131
128
|
"dockerode": "^3.3.4",
|
|
@@ -3625,16 +3622,6 @@
|
|
|
3625
3622
|
"node": ">= 6"
|
|
3626
3623
|
}
|
|
3627
3624
|
},
|
|
3628
|
-
"node_modules/@types/opn": {
|
|
3629
|
-
"version": "5.5.0",
|
|
3630
|
-
"resolved": "https://registry.npmjs.org/@types/opn/-/opn-5.5.0.tgz",
|
|
3631
|
-
"integrity": "sha512-rfEmrSa/x0vArY1aFnVTBAmy6b2I0oNHONL59qR+vnsHfD5xacM40O4PSiVisERq/GmROjmS3Xo/ptp8fx823g==",
|
|
3632
|
-
"deprecated": "This is a stub types definition. opn provides its own type definitions, so you do not need this installed.",
|
|
3633
|
-
"dev": true,
|
|
3634
|
-
"dependencies": {
|
|
3635
|
-
"opn": "*"
|
|
3636
|
-
}
|
|
3637
|
-
},
|
|
3638
3625
|
"node_modules/@types/prettier": {
|
|
3639
3626
|
"version": "2.7.2",
|
|
3640
3627
|
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
|
|
@@ -3869,16 +3856,6 @@
|
|
|
3869
3856
|
"integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==",
|
|
3870
3857
|
"dev": true
|
|
3871
3858
|
},
|
|
3872
|
-
"node_modules/@types/xdg-basedir": {
|
|
3873
|
-
"version": "4.0.2",
|
|
3874
|
-
"resolved": "https://registry.npmjs.org/@types/xdg-basedir/-/xdg-basedir-4.0.2.tgz",
|
|
3875
|
-
"integrity": "sha512-hNaXvZUM/XXs/Vlwpo7Pu6BXfDP7xWIoGRq/uwVYuIKcKOCKfavyRtQn++Uw1lpDrqqG9mX5XuTMazFk68pd2g==",
|
|
3876
|
-
"deprecated": "This is a stub types definition. xdg-basedir provides its own type definitions, so you do not need this installed.",
|
|
3877
|
-
"dev": true,
|
|
3878
|
-
"dependencies": {
|
|
3879
|
-
"xdg-basedir": "*"
|
|
3880
|
-
}
|
|
3881
|
-
},
|
|
3882
3859
|
"node_modules/@types/xml2js": {
|
|
3883
3860
|
"version": "0.4.11",
|
|
3884
3861
|
"resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.11.tgz",
|
|
@@ -4572,21 +4549,6 @@
|
|
|
4572
4549
|
"node": ">=8"
|
|
4573
4550
|
}
|
|
4574
4551
|
},
|
|
4575
|
-
"node_modules/babel-plugin-explicit-exports-references": {
|
|
4576
|
-
"version": "1.0.2",
|
|
4577
|
-
"resolved": "https://registry.npmjs.org/babel-plugin-explicit-exports-references/-/babel-plugin-explicit-exports-references-1.0.2.tgz",
|
|
4578
|
-
"integrity": "sha512-z+weAyF11Mr1azXIR5pfhAeXeK8ZvacXSKgPLGdwBoR7efyqnUxYvlGUny7eHZxAO/Q1C2O1+xO9lwgGPDaBlw==",
|
|
4579
|
-
"dev": true,
|
|
4580
|
-
"dependencies": {
|
|
4581
|
-
"@babel/core": "^7.13.15",
|
|
4582
|
-
"@babel/template": "^7.12.13",
|
|
4583
|
-
"@babel/types": "^7.13.14",
|
|
4584
|
-
"debug": "^4.3.1"
|
|
4585
|
-
},
|
|
4586
|
-
"engines": {
|
|
4587
|
-
"node": ">= 12.x"
|
|
4588
|
-
}
|
|
4589
|
-
},
|
|
4590
4552
|
"node_modules/babel-plugin-istanbul": {
|
|
4591
4553
|
"version": "6.1.1",
|
|
4592
4554
|
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
|
|
@@ -17829,15 +17791,6 @@
|
|
|
17829
17791
|
}
|
|
17830
17792
|
}
|
|
17831
17793
|
},
|
|
17832
|
-
"@types/opn": {
|
|
17833
|
-
"version": "5.5.0",
|
|
17834
|
-
"resolved": "https://registry.npmjs.org/@types/opn/-/opn-5.5.0.tgz",
|
|
17835
|
-
"integrity": "sha512-rfEmrSa/x0vArY1aFnVTBAmy6b2I0oNHONL59qR+vnsHfD5xacM40O4PSiVisERq/GmROjmS3Xo/ptp8fx823g==",
|
|
17836
|
-
"dev": true,
|
|
17837
|
-
"requires": {
|
|
17838
|
-
"opn": "*"
|
|
17839
|
-
}
|
|
17840
|
-
},
|
|
17841
17794
|
"@types/prettier": {
|
|
17842
17795
|
"version": "2.7.2",
|
|
17843
17796
|
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
|
|
@@ -18034,15 +17987,6 @@
|
|
|
18034
17987
|
"integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==",
|
|
18035
17988
|
"dev": true
|
|
18036
17989
|
},
|
|
18037
|
-
"@types/xdg-basedir": {
|
|
18038
|
-
"version": "4.0.2",
|
|
18039
|
-
"resolved": "https://registry.npmjs.org/@types/xdg-basedir/-/xdg-basedir-4.0.2.tgz",
|
|
18040
|
-
"integrity": "sha512-hNaXvZUM/XXs/Vlwpo7Pu6BXfDP7xWIoGRq/uwVYuIKcKOCKfavyRtQn++Uw1lpDrqqG9mX5XuTMazFk68pd2g==",
|
|
18041
|
-
"dev": true,
|
|
18042
|
-
"requires": {
|
|
18043
|
-
"xdg-basedir": "*"
|
|
18044
|
-
}
|
|
18045
|
-
},
|
|
18046
17990
|
"@types/xml2js": {
|
|
18047
17991
|
"version": "0.4.11",
|
|
18048
17992
|
"resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.11.tgz",
|
|
@@ -18533,18 +18477,6 @@
|
|
|
18533
18477
|
}
|
|
18534
18478
|
}
|
|
18535
18479
|
},
|
|
18536
|
-
"babel-plugin-explicit-exports-references": {
|
|
18537
|
-
"version": "1.0.2",
|
|
18538
|
-
"resolved": "https://registry.npmjs.org/babel-plugin-explicit-exports-references/-/babel-plugin-explicit-exports-references-1.0.2.tgz",
|
|
18539
|
-
"integrity": "sha512-z+weAyF11Mr1azXIR5pfhAeXeK8ZvacXSKgPLGdwBoR7efyqnUxYvlGUny7eHZxAO/Q1C2O1+xO9lwgGPDaBlw==",
|
|
18540
|
-
"dev": true,
|
|
18541
|
-
"requires": {
|
|
18542
|
-
"@babel/core": "^7.13.15",
|
|
18543
|
-
"@babel/template": "^7.12.13",
|
|
18544
|
-
"@babel/types": "^7.13.14",
|
|
18545
|
-
"debug": "^4.3.1"
|
|
18546
|
-
}
|
|
18547
|
-
},
|
|
18548
18480
|
"babel-plugin-istanbul": {
|
|
18549
18481
|
"version": "6.1.1",
|
|
18550
18482
|
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@automattic/vip",
|
|
3
|
-
"version": "2.31.0
|
|
3
|
+
"version": "2.31.0",
|
|
4
4
|
"description": "The VIP Javascript library & CLI",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"vip-wp": "dist/bin/vip-wp.js"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
|
-
"test": "npm run lint && npm run flow && npm run check-types && jest --testPathIgnorePatterns __tests__/devenv-e2e/",
|
|
57
|
+
"test": "npm run lint && npm run flow && npm run check-types && jest --coverage --testPathIgnorePatterns __tests__/devenv-e2e/",
|
|
58
58
|
"test:e2e:dev-env": "jest -c __tests__/devenv-e2e/jest/jest.config.js",
|
|
59
59
|
"clean": "rimraf dist",
|
|
60
60
|
"prepare": "npm run clean && npm run build",
|
|
@@ -112,17 +112,14 @@
|
|
|
112
112
|
"@types/js-yaml": "^4.0.5",
|
|
113
113
|
"@types/json2csv": "5.0.3",
|
|
114
114
|
"@types/node-fetch": "^2.6.4",
|
|
115
|
-
"@types/opn": "5.5.0",
|
|
116
115
|
"@types/proxy-from-env": "^1.0.1",
|
|
117
116
|
"@types/semver": "7.5.0",
|
|
118
117
|
"@types/shelljs": "^0.8.12",
|
|
119
118
|
"@types/single-line-log": "1.1.0",
|
|
120
119
|
"@types/update-notifier": "5.1.0",
|
|
121
120
|
"@types/uuid": "9.0.0",
|
|
122
|
-
"@types/xdg-basedir": "^4.0.2",
|
|
123
121
|
"@types/xml2js": "^0.4.11",
|
|
124
122
|
"babel-jest": "^29.5.0",
|
|
125
|
-
"babel-plugin-explicit-exports-references": "^1.0.2",
|
|
126
123
|
"babel-plugin-module-resolver": "5.0.0",
|
|
127
124
|
"check-node-version": "^4.2.1",
|
|
128
125
|
"dockerode": "^3.3.4",
|