sitespeed.io 27.3.1 → 27.4.1
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 +7 -0
- package/bin/sitespeed.js +130 -34
- package/lib/api/send.js +93 -0
- package/lib/cli/cli.js +48 -0
- package/npm-shrinkwrap.json +366 -5
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# CHANGELOG - sitespeed.io (we use [semantic versioning](https://semver.org))
|
|
2
2
|
|
|
3
|
+
## 27.4.1 - 2023-05-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
* Fixed the silent part of the API.
|
|
7
|
+
## 27.4.0 - 2023-05-03
|
|
8
|
+
### Added
|
|
9
|
+
* Prepare to add support for the sitespeed.io API where you can launch tests on other servers. This is not ready yet but a makes it easier for me to test the upcoming functionality.
|
|
3
10
|
## 27.3.1 - 2023-04-28
|
|
4
11
|
### Fixed
|
|
5
12
|
* Fix broken --firstParty parameter as reported in [#3822](https://github.com/sitespeedio/sitespeed.io/issues/3822) and fixed in [#3823](https://github.com/sitespeedio/sitespeed.io/pull/3823)
|
package/bin/sitespeed.js
CHANGED
|
@@ -5,8 +5,100 @@
|
|
|
5
5
|
import { writeFileSync } from 'node:fs';
|
|
6
6
|
import { execSync } from 'node:child_process';
|
|
7
7
|
import { platform } from 'node:os';
|
|
8
|
+
import { resolve } from 'node:path';
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
|
|
11
|
+
import merge from 'lodash.merge';
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
|
|
8
14
|
import { parseCommandLine } from '../lib/cli/cli.js';
|
|
9
15
|
import { run } from '../lib/sitespeed.js';
|
|
16
|
+
import { addTest, waitAndGetResult, get } from '../lib/api/send.js';
|
|
17
|
+
|
|
18
|
+
async function api(options) {
|
|
19
|
+
const action = options.api.action ?? 'addAndGetResult';
|
|
20
|
+
|
|
21
|
+
if (action === 'get' && !options.api.id) {
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
console.log('Missing test id --api.id');
|
|
24
|
+
process.exit();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const hostname = options.api.hostname;
|
|
28
|
+
let apiOptions = options.explicitOptions;
|
|
29
|
+
// Delete the hostname to make sure the server do not end in
|
|
30
|
+
// a forever loop
|
|
31
|
+
delete apiOptions.api.hostname;
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
// Add support for running multi tests
|
|
35
|
+
if (options.multi) {
|
|
36
|
+
const scripting = await readFileSync(
|
|
37
|
+
new URL(resolve(process.cwd(), options._[0]), import.meta.url)
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
if (options.config) {
|
|
43
|
+
const config = JSON.parse(
|
|
44
|
+
await readFileSync(
|
|
45
|
+
new URL(resolve(process.cwd(), options.config), import.meta.url)
|
|
46
|
+
)
|
|
47
|
+
);
|
|
48
|
+
apiOptions = merge(options.explicitOptions, config);
|
|
49
|
+
delete apiOptions.config;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (action === 'add' || action === 'addAndGetResult') {
|
|
53
|
+
const spinner = ora({
|
|
54
|
+
text: `Send test to ${hostname}`,
|
|
55
|
+
isSilent: options.api.silent
|
|
56
|
+
}).start();
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
const data = await addTest(hostname, apiOptions, spinner);
|
|
60
|
+
const testId = JSON.parse(data).id;
|
|
61
|
+
spinner.color = 'yellow';
|
|
62
|
+
spinner.text = `Added test with id ${testId}`;
|
|
63
|
+
|
|
64
|
+
if (action === 'add') {
|
|
65
|
+
spinner.succeed(`Added test with id ${testId}`);
|
|
66
|
+
console.log(testId);
|
|
67
|
+
process.exit();
|
|
68
|
+
} else if (action === 'addAndGetResult') {
|
|
69
|
+
const result = await waitAndGetResult(
|
|
70
|
+
testId,
|
|
71
|
+
hostname,
|
|
72
|
+
apiOptions,
|
|
73
|
+
spinner
|
|
74
|
+
);
|
|
75
|
+
spinner.succeed(`Got test result with id ${testId}`);
|
|
76
|
+
|
|
77
|
+
if (options.api.json) {
|
|
78
|
+
console.log(JSON.stringify(result));
|
|
79
|
+
} else {
|
|
80
|
+
console.log(result.result);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
} catch (error) {
|
|
84
|
+
spinner.fail(error.message);
|
|
85
|
+
process.exitCode = 1;
|
|
86
|
+
process.exit();
|
|
87
|
+
}
|
|
88
|
+
} else if (action === 'get') {
|
|
89
|
+
try {
|
|
90
|
+
const result = await get(options.api.id, hostname, apiOptions);
|
|
91
|
+
if (options.api.json) {
|
|
92
|
+
console.log(JSON.stringify(result));
|
|
93
|
+
} else {
|
|
94
|
+
console.log(result);
|
|
95
|
+
}
|
|
96
|
+
} catch (error) {
|
|
97
|
+
process.exitCode = 1;
|
|
98
|
+
console.log(error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
10
102
|
|
|
11
103
|
async function start() {
|
|
12
104
|
let parsed = await parseCommandLine();
|
|
@@ -17,45 +109,49 @@ async function start() {
|
|
|
17
109
|
parsed.options.urlsMetaData = parsed.urlsMetaData;
|
|
18
110
|
|
|
19
111
|
let options = parsed.options;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (options.storeResult == 'true') {
|
|
27
|
-
writeFileSync('result.json', JSON.stringify(result));
|
|
28
|
-
}
|
|
112
|
+
if (options.api && options.api.hostname) {
|
|
113
|
+
api(options);
|
|
114
|
+
} else {
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
try {
|
|
117
|
+
const result = await run(options);
|
|
29
118
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
119
|
+
// This can be used as an option to get hold of where the data is stored
|
|
120
|
+
// for third parties
|
|
121
|
+
if (options.storeResult == 'true') {
|
|
122
|
+
writeFileSync('result.json', JSON.stringify(result));
|
|
123
|
+
}
|
|
33
124
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
execSync('xdg-open ' + result.localPath + '/index.html');
|
|
38
|
-
}
|
|
125
|
+
if (result.errors.length > 0) {
|
|
126
|
+
throw new Error('Errors while running:\n' + result.errors.join('\n'));
|
|
127
|
+
}
|
|
39
128
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
budgetFailing = true;
|
|
46
|
-
}
|
|
129
|
+
if ((options.open || options.o) && platform() === 'darwin') {
|
|
130
|
+
execSync('open ' + result.localPath + '/index.html');
|
|
131
|
+
} else if ((options.open || options.o) && platform() === 'linux') {
|
|
132
|
+
execSync('xdg-open ' + result.localPath + '/index.html');
|
|
133
|
+
}
|
|
47
134
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
135
|
+
if (
|
|
136
|
+
parsed.options.budget &&
|
|
137
|
+
Object.keys(result.budgetResult.failing).length > 0
|
|
138
|
+
) {
|
|
139
|
+
process.exitCode = 1;
|
|
140
|
+
budgetFailing = true;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (
|
|
144
|
+
!budgetFailing ||
|
|
145
|
+
(parsed.options.budget && parsed.options.budget.suppressExitCode)
|
|
146
|
+
) {
|
|
147
|
+
process.exitCode = 0;
|
|
148
|
+
}
|
|
149
|
+
} catch (error) {
|
|
150
|
+
process.exitCode = 1;
|
|
151
|
+
console.log(error);
|
|
152
|
+
} finally {
|
|
153
|
+
process.exit();
|
|
53
154
|
}
|
|
54
|
-
} catch (error) {
|
|
55
|
-
process.exitCode = 1;
|
|
56
|
-
console.log(error);
|
|
57
|
-
} finally {
|
|
58
|
-
process.exit();
|
|
59
155
|
}
|
|
60
156
|
}
|
|
61
157
|
|
package/lib/api/send.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
import https from 'node:https';
|
|
3
|
+
|
|
4
|
+
const delay = ms => new Promise(res => setTimeout(res, ms));
|
|
5
|
+
|
|
6
|
+
export async function addTest(hostname, options, spinner) {
|
|
7
|
+
const port = options.api.port ?? 3000;
|
|
8
|
+
const postData = options;
|
|
9
|
+
const postOptions = {
|
|
10
|
+
hostname: hostname,
|
|
11
|
+
port: port,
|
|
12
|
+
path: '/api/add',
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
'Content-Length': Buffer.byteLength(JSON.stringify(postData))
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
// not perfect but maybe work for us
|
|
22
|
+
const library = options.api.port === 443 ? https : http;
|
|
23
|
+
const request = library.request(postOptions, res => {
|
|
24
|
+
if (res.statusCode === 200) {
|
|
25
|
+
res.setEncoding('utf8');
|
|
26
|
+
let body = '';
|
|
27
|
+
res.on('data', chunk => (body += chunk));
|
|
28
|
+
res.on('end', () => resolve(body));
|
|
29
|
+
} else {
|
|
30
|
+
spinner.text = `Got ${res.statusCode} from the API: ${res.statusMessage}`;
|
|
31
|
+
spinner.color = 'red';
|
|
32
|
+
const e = new Error(
|
|
33
|
+
`Got ${res.statusCode} from the API: ${res.statusMessage}`
|
|
34
|
+
);
|
|
35
|
+
reject(e);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
request.on('error', error => {
|
|
39
|
+
spinner.text = `Got ${error.toString()} from the API`;
|
|
40
|
+
spinner.color = 'red';
|
|
41
|
+
reject(error);
|
|
42
|
+
});
|
|
43
|
+
request.write(JSON.stringify(postData));
|
|
44
|
+
request.end();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export async function waitAndGetResult(testId, hostname, options, spinner) {
|
|
49
|
+
do {
|
|
50
|
+
await delay(2000);
|
|
51
|
+
const response = await get(testId, hostname, options);
|
|
52
|
+
spinner.text = response.message;
|
|
53
|
+
if (response.status === 'completed') {
|
|
54
|
+
return response;
|
|
55
|
+
}
|
|
56
|
+
// eslint-disable-next-line no-constant-condition
|
|
57
|
+
} while (true);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export async function get(testId, hostname, options) {
|
|
61
|
+
return new Promise((resolve, reject) => {
|
|
62
|
+
const port = options.api.port ?? 3000;
|
|
63
|
+
const library = port === 443 ? https : http;
|
|
64
|
+
|
|
65
|
+
const url = `${port === 443 ? 'https' : 'http'}://${hostname}${
|
|
66
|
+
port != 80 && port != 443 ? `:${port}` : ''
|
|
67
|
+
}/api/status/${testId}`;
|
|
68
|
+
|
|
69
|
+
library
|
|
70
|
+
.get(url, res => {
|
|
71
|
+
let data = [];
|
|
72
|
+
|
|
73
|
+
if (res.statusCode != 200) {
|
|
74
|
+
return reject(
|
|
75
|
+
new Error(
|
|
76
|
+
`Got response code ${res.statusCode} from the API: ${res.statusMessage}`
|
|
77
|
+
)
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
res.on('data', chunk => {
|
|
82
|
+
data.push(chunk);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
res.on('end', () => {
|
|
86
|
+
return resolve(JSON.parse(Buffer.concat(data).toString()));
|
|
87
|
+
});
|
|
88
|
+
})
|
|
89
|
+
.on('error', () => {
|
|
90
|
+
return reject();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
package/lib/cli/cli.js
CHANGED
|
@@ -1092,6 +1092,21 @@ export async function parseCommandLine() {
|
|
|
1092
1092
|
'The wait time before you start the real testing after your pre-cache request.'
|
|
1093
1093
|
})
|
|
1094
1094
|
/*
|
|
1095
|
+
API options
|
|
1096
|
+
*/
|
|
1097
|
+
.option('api.key', {
|
|
1098
|
+
describe: 'The API key to use',
|
|
1099
|
+
group: 'API'
|
|
1100
|
+
})
|
|
1101
|
+
.option('api.hostname', {
|
|
1102
|
+
describe: 'The hostname of the server hosting the API',
|
|
1103
|
+
group: 'API'
|
|
1104
|
+
})
|
|
1105
|
+
.option('api.serverName', {
|
|
1106
|
+
describe: 'The serverName that will run the actual test',
|
|
1107
|
+
group: 'API'
|
|
1108
|
+
})
|
|
1109
|
+
/*
|
|
1095
1110
|
Crawler options
|
|
1096
1111
|
*/
|
|
1097
1112
|
.option('crawler.depth', {
|
|
@@ -1797,6 +1812,39 @@ export async function parseCommandLine() {
|
|
|
1797
1812
|
'Instead of using the local copy of the hosting database, you can use the latest version through the Green Web Foundation API. This means sitespeed.io will make HTTP GET to the the hosting info.',
|
|
1798
1813
|
group: 'Sustainable'
|
|
1799
1814
|
});
|
|
1815
|
+
|
|
1816
|
+
parsed
|
|
1817
|
+
.option('api.type', {
|
|
1818
|
+
describe: 'The type of API call you want to do: S',
|
|
1819
|
+
default: 'addAndGetResult',
|
|
1820
|
+
choices: ['add', 'addAndGetResult', 'get'],
|
|
1821
|
+
group: 'API'
|
|
1822
|
+
})
|
|
1823
|
+
.option('api.hostname', {
|
|
1824
|
+
describe: 'The hostname of the API server.',
|
|
1825
|
+
group: 'API'
|
|
1826
|
+
})
|
|
1827
|
+
.option('api.silent', {
|
|
1828
|
+
describe:
|
|
1829
|
+
'Set to true if you do not want to log anything from the comunication',
|
|
1830
|
+
default: false,
|
|
1831
|
+
type: 'boolean',
|
|
1832
|
+
group: 'API'
|
|
1833
|
+
})
|
|
1834
|
+
.option('api.port', {
|
|
1835
|
+
describe: 'The port for the API',
|
|
1836
|
+
port: 3000,
|
|
1837
|
+
group: 'API'
|
|
1838
|
+
})
|
|
1839
|
+
.option('api.id', {
|
|
1840
|
+
describe:
|
|
1841
|
+
'The id of the test. You it when you want to get the test result.',
|
|
1842
|
+
group: 'API'
|
|
1843
|
+
})
|
|
1844
|
+
.option('api.json', {
|
|
1845
|
+
describe: 'Output the result as JSON.',
|
|
1846
|
+
group: 'API'
|
|
1847
|
+
});
|
|
1800
1848
|
parsed
|
|
1801
1849
|
.option('mobile', {
|
|
1802
1850
|
describe:
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sitespeed.io",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.4.1",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "sitespeed.io",
|
|
9
|
-
"version": "27.
|
|
9
|
+
"version": "27.4.1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@google-cloud/storage": "6.9.5",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"markdown": "0.5.0",
|
|
46
46
|
"node-scp": "0.0.22",
|
|
47
47
|
"node-slack": "0.0.7",
|
|
48
|
+
"ora": "6.3.0",
|
|
48
49
|
"os-name": "5.1.0",
|
|
49
50
|
"p-limit": "4.0.0",
|
|
50
51
|
"pug": "3.0.2",
|
|
@@ -1809,6 +1810,58 @@
|
|
|
1809
1810
|
"file-uri-to-path": "1.0.0"
|
|
1810
1811
|
}
|
|
1811
1812
|
},
|
|
1813
|
+
"node_modules/bl": {
|
|
1814
|
+
"version": "5.1.0",
|
|
1815
|
+
"resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
|
|
1816
|
+
"integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
|
|
1817
|
+
"dependencies": {
|
|
1818
|
+
"buffer": "^6.0.3",
|
|
1819
|
+
"inherits": "^2.0.4",
|
|
1820
|
+
"readable-stream": "^3.4.0"
|
|
1821
|
+
}
|
|
1822
|
+
},
|
|
1823
|
+
"node_modules/bl/node_modules/buffer": {
|
|
1824
|
+
"version": "6.0.3",
|
|
1825
|
+
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
|
1826
|
+
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
|
1827
|
+
"funding": [
|
|
1828
|
+
{
|
|
1829
|
+
"type": "github",
|
|
1830
|
+
"url": "https://github.com/sponsors/feross"
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
"type": "patreon",
|
|
1834
|
+
"url": "https://www.patreon.com/feross"
|
|
1835
|
+
},
|
|
1836
|
+
{
|
|
1837
|
+
"type": "consulting",
|
|
1838
|
+
"url": "https://feross.org/support"
|
|
1839
|
+
}
|
|
1840
|
+
],
|
|
1841
|
+
"dependencies": {
|
|
1842
|
+
"base64-js": "^1.3.1",
|
|
1843
|
+
"ieee754": "^1.2.1"
|
|
1844
|
+
}
|
|
1845
|
+
},
|
|
1846
|
+
"node_modules/bl/node_modules/ieee754": {
|
|
1847
|
+
"version": "1.2.1",
|
|
1848
|
+
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
|
1849
|
+
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
|
1850
|
+
"funding": [
|
|
1851
|
+
{
|
|
1852
|
+
"type": "github",
|
|
1853
|
+
"url": "https://github.com/sponsors/feross"
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
"type": "patreon",
|
|
1857
|
+
"url": "https://www.patreon.com/feross"
|
|
1858
|
+
},
|
|
1859
|
+
{
|
|
1860
|
+
"type": "consulting",
|
|
1861
|
+
"url": "https://feross.org/support"
|
|
1862
|
+
}
|
|
1863
|
+
]
|
|
1864
|
+
},
|
|
1812
1865
|
"node_modules/blueimp-md5": {
|
|
1813
1866
|
"version": "2.19.0",
|
|
1814
1867
|
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
|
|
@@ -2272,6 +2325,31 @@
|
|
|
2272
2325
|
"node": ">=0.10"
|
|
2273
2326
|
}
|
|
2274
2327
|
},
|
|
2328
|
+
"node_modules/cli-cursor": {
|
|
2329
|
+
"version": "4.0.0",
|
|
2330
|
+
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
|
|
2331
|
+
"integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
|
|
2332
|
+
"dependencies": {
|
|
2333
|
+
"restore-cursor": "^4.0.0"
|
|
2334
|
+
},
|
|
2335
|
+
"engines": {
|
|
2336
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
2337
|
+
},
|
|
2338
|
+
"funding": {
|
|
2339
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2340
|
+
}
|
|
2341
|
+
},
|
|
2342
|
+
"node_modules/cli-spinners": {
|
|
2343
|
+
"version": "2.8.0",
|
|
2344
|
+
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz",
|
|
2345
|
+
"integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==",
|
|
2346
|
+
"engines": {
|
|
2347
|
+
"node": ">=6"
|
|
2348
|
+
},
|
|
2349
|
+
"funding": {
|
|
2350
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2351
|
+
}
|
|
2352
|
+
},
|
|
2275
2353
|
"node_modules/cli-truncate": {
|
|
2276
2354
|
"version": "3.1.0",
|
|
2277
2355
|
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
|
|
@@ -2364,6 +2442,14 @@
|
|
|
2364
2442
|
"node": ">=8"
|
|
2365
2443
|
}
|
|
2366
2444
|
},
|
|
2445
|
+
"node_modules/clone": {
|
|
2446
|
+
"version": "1.0.4",
|
|
2447
|
+
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
|
2448
|
+
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
|
|
2449
|
+
"engines": {
|
|
2450
|
+
"node": ">=0.8"
|
|
2451
|
+
}
|
|
2452
|
+
},
|
|
2367
2453
|
"node_modules/coach-core": {
|
|
2368
2454
|
"version": "7.1.3",
|
|
2369
2455
|
"resolved": "https://registry.npmjs.org/coach-core/-/coach-core-7.1.3.tgz",
|
|
@@ -2696,6 +2782,17 @@
|
|
|
2696
2782
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
|
|
2697
2783
|
"dev": true
|
|
2698
2784
|
},
|
|
2785
|
+
"node_modules/defaults": {
|
|
2786
|
+
"version": "1.0.4",
|
|
2787
|
+
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
|
|
2788
|
+
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
|
|
2789
|
+
"dependencies": {
|
|
2790
|
+
"clone": "^1.0.2"
|
|
2791
|
+
},
|
|
2792
|
+
"funding": {
|
|
2793
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2794
|
+
}
|
|
2795
|
+
},
|
|
2699
2796
|
"node_modules/deferred": {
|
|
2700
2797
|
"version": "0.7.1",
|
|
2701
2798
|
"resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.1.tgz",
|
|
@@ -4976,6 +5073,17 @@
|
|
|
4976
5073
|
"node": ">=0.10.0"
|
|
4977
5074
|
}
|
|
4978
5075
|
},
|
|
5076
|
+
"node_modules/is-interactive": {
|
|
5077
|
+
"version": "2.0.0",
|
|
5078
|
+
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
|
|
5079
|
+
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
|
|
5080
|
+
"engines": {
|
|
5081
|
+
"node": ">=12"
|
|
5082
|
+
},
|
|
5083
|
+
"funding": {
|
|
5084
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
5085
|
+
}
|
|
5086
|
+
},
|
|
4979
5087
|
"node_modules/is-map": {
|
|
4980
5088
|
"version": "2.0.2",
|
|
4981
5089
|
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
|
|
@@ -5150,7 +5258,6 @@
|
|
|
5150
5258
|
"version": "1.3.0",
|
|
5151
5259
|
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
|
|
5152
5260
|
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
|
|
5153
|
-
"dev": true,
|
|
5154
5261
|
"engines": {
|
|
5155
5262
|
"node": ">=12"
|
|
5156
5263
|
},
|
|
@@ -5883,6 +5990,32 @@
|
|
|
5883
5990
|
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
|
|
5884
5991
|
"integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg="
|
|
5885
5992
|
},
|
|
5993
|
+
"node_modules/log-symbols": {
|
|
5994
|
+
"version": "5.1.0",
|
|
5995
|
+
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
|
|
5996
|
+
"integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
|
|
5997
|
+
"dependencies": {
|
|
5998
|
+
"chalk": "^5.0.0",
|
|
5999
|
+
"is-unicode-supported": "^1.1.0"
|
|
6000
|
+
},
|
|
6001
|
+
"engines": {
|
|
6002
|
+
"node": ">=12"
|
|
6003
|
+
},
|
|
6004
|
+
"funding": {
|
|
6005
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
6006
|
+
}
|
|
6007
|
+
},
|
|
6008
|
+
"node_modules/log-symbols/node_modules/chalk": {
|
|
6009
|
+
"version": "5.2.0",
|
|
6010
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
|
6011
|
+
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
|
|
6012
|
+
"engines": {
|
|
6013
|
+
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
|
6014
|
+
},
|
|
6015
|
+
"funding": {
|
|
6016
|
+
"url": "https://github.com/chalk/chalk?sponsor=1"
|
|
6017
|
+
}
|
|
6018
|
+
},
|
|
5886
6019
|
"node_modules/lru-cache": {
|
|
5887
6020
|
"version": "6.0.0",
|
|
5888
6021
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
@@ -6505,6 +6638,64 @@
|
|
|
6505
6638
|
"node": ">= 0.8.0"
|
|
6506
6639
|
}
|
|
6507
6640
|
},
|
|
6641
|
+
"node_modules/ora": {
|
|
6642
|
+
"version": "6.3.0",
|
|
6643
|
+
"resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz",
|
|
6644
|
+
"integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==",
|
|
6645
|
+
"dependencies": {
|
|
6646
|
+
"chalk": "^5.0.0",
|
|
6647
|
+
"cli-cursor": "^4.0.0",
|
|
6648
|
+
"cli-spinners": "^2.6.1",
|
|
6649
|
+
"is-interactive": "^2.0.0",
|
|
6650
|
+
"is-unicode-supported": "^1.1.0",
|
|
6651
|
+
"log-symbols": "^5.1.0",
|
|
6652
|
+
"stdin-discarder": "^0.1.0",
|
|
6653
|
+
"strip-ansi": "^7.0.1",
|
|
6654
|
+
"wcwidth": "^1.0.1"
|
|
6655
|
+
},
|
|
6656
|
+
"engines": {
|
|
6657
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
6658
|
+
},
|
|
6659
|
+
"funding": {
|
|
6660
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
6661
|
+
}
|
|
6662
|
+
},
|
|
6663
|
+
"node_modules/ora/node_modules/ansi-regex": {
|
|
6664
|
+
"version": "6.0.1",
|
|
6665
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
|
|
6666
|
+
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
|
|
6667
|
+
"engines": {
|
|
6668
|
+
"node": ">=12"
|
|
6669
|
+
},
|
|
6670
|
+
"funding": {
|
|
6671
|
+
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
|
6672
|
+
}
|
|
6673
|
+
},
|
|
6674
|
+
"node_modules/ora/node_modules/chalk": {
|
|
6675
|
+
"version": "5.2.0",
|
|
6676
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
|
6677
|
+
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
|
|
6678
|
+
"engines": {
|
|
6679
|
+
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
|
6680
|
+
},
|
|
6681
|
+
"funding": {
|
|
6682
|
+
"url": "https://github.com/chalk/chalk?sponsor=1"
|
|
6683
|
+
}
|
|
6684
|
+
},
|
|
6685
|
+
"node_modules/ora/node_modules/strip-ansi": {
|
|
6686
|
+
"version": "7.0.1",
|
|
6687
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
|
|
6688
|
+
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
|
|
6689
|
+
"dependencies": {
|
|
6690
|
+
"ansi-regex": "^6.0.1"
|
|
6691
|
+
},
|
|
6692
|
+
"engines": {
|
|
6693
|
+
"node": ">=12"
|
|
6694
|
+
},
|
|
6695
|
+
"funding": {
|
|
6696
|
+
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
|
6697
|
+
}
|
|
6698
|
+
},
|
|
6508
6699
|
"node_modules/os-homedir": {
|
|
6509
6700
|
"version": "1.0.2",
|
|
6510
6701
|
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
|
|
@@ -7658,6 +7849,21 @@
|
|
|
7658
7849
|
"node": ">=4"
|
|
7659
7850
|
}
|
|
7660
7851
|
},
|
|
7852
|
+
"node_modules/restore-cursor": {
|
|
7853
|
+
"version": "4.0.0",
|
|
7854
|
+
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
|
|
7855
|
+
"integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
|
|
7856
|
+
"dependencies": {
|
|
7857
|
+
"onetime": "^5.1.0",
|
|
7858
|
+
"signal-exit": "^3.0.2"
|
|
7859
|
+
},
|
|
7860
|
+
"engines": {
|
|
7861
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
7862
|
+
},
|
|
7863
|
+
"funding": {
|
|
7864
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
7865
|
+
}
|
|
7866
|
+
},
|
|
7661
7867
|
"node_modules/resumer": {
|
|
7662
7868
|
"version": "0.0.0",
|
|
7663
7869
|
"resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
|
|
@@ -8200,6 +8406,20 @@
|
|
|
8200
8406
|
"node": ">=8"
|
|
8201
8407
|
}
|
|
8202
8408
|
},
|
|
8409
|
+
"node_modules/stdin-discarder": {
|
|
8410
|
+
"version": "0.1.0",
|
|
8411
|
+
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
|
|
8412
|
+
"integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
|
|
8413
|
+
"dependencies": {
|
|
8414
|
+
"bl": "^5.0.0"
|
|
8415
|
+
},
|
|
8416
|
+
"engines": {
|
|
8417
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
8418
|
+
},
|
|
8419
|
+
"funding": {
|
|
8420
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
8421
|
+
}
|
|
8422
|
+
},
|
|
8203
8423
|
"node_modules/stop-iteration-iterator": {
|
|
8204
8424
|
"version": "1.0.0",
|
|
8205
8425
|
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
|
|
@@ -8931,6 +9151,14 @@
|
|
|
8931
9151
|
}
|
|
8932
9152
|
]
|
|
8933
9153
|
},
|
|
9154
|
+
"node_modules/wcwidth": {
|
|
9155
|
+
"version": "1.0.1",
|
|
9156
|
+
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
|
9157
|
+
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
|
9158
|
+
"dependencies": {
|
|
9159
|
+
"defaults": "^1.0.3"
|
|
9160
|
+
}
|
|
9161
|
+
},
|
|
8934
9162
|
"node_modules/webidl-conversions": {
|
|
8935
9163
|
"version": "3.0.1",
|
|
8936
9164
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
|
@@ -10601,6 +10829,32 @@
|
|
|
10601
10829
|
"file-uri-to-path": "1.0.0"
|
|
10602
10830
|
}
|
|
10603
10831
|
},
|
|
10832
|
+
"bl": {
|
|
10833
|
+
"version": "5.1.0",
|
|
10834
|
+
"resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
|
|
10835
|
+
"integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
|
|
10836
|
+
"requires": {
|
|
10837
|
+
"buffer": "^6.0.3",
|
|
10838
|
+
"inherits": "^2.0.4",
|
|
10839
|
+
"readable-stream": "^3.4.0"
|
|
10840
|
+
},
|
|
10841
|
+
"dependencies": {
|
|
10842
|
+
"buffer": {
|
|
10843
|
+
"version": "6.0.3",
|
|
10844
|
+
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
|
10845
|
+
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
|
10846
|
+
"requires": {
|
|
10847
|
+
"base64-js": "^1.3.1",
|
|
10848
|
+
"ieee754": "^1.2.1"
|
|
10849
|
+
}
|
|
10850
|
+
},
|
|
10851
|
+
"ieee754": {
|
|
10852
|
+
"version": "1.2.1",
|
|
10853
|
+
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
|
10854
|
+
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
|
|
10855
|
+
}
|
|
10856
|
+
}
|
|
10857
|
+
},
|
|
10604
10858
|
"blueimp-md5": {
|
|
10605
10859
|
"version": "2.19.0",
|
|
10606
10860
|
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
|
|
@@ -10946,6 +11200,19 @@
|
|
|
10946
11200
|
"timers-ext": "^0.1.7"
|
|
10947
11201
|
}
|
|
10948
11202
|
},
|
|
11203
|
+
"cli-cursor": {
|
|
11204
|
+
"version": "4.0.0",
|
|
11205
|
+
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
|
|
11206
|
+
"integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
|
|
11207
|
+
"requires": {
|
|
11208
|
+
"restore-cursor": "^4.0.0"
|
|
11209
|
+
}
|
|
11210
|
+
},
|
|
11211
|
+
"cli-spinners": {
|
|
11212
|
+
"version": "2.8.0",
|
|
11213
|
+
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz",
|
|
11214
|
+
"integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ=="
|
|
11215
|
+
},
|
|
10949
11216
|
"cli-truncate": {
|
|
10950
11217
|
"version": "3.1.0",
|
|
10951
11218
|
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
|
|
@@ -11009,6 +11276,11 @@
|
|
|
11009
11276
|
}
|
|
11010
11277
|
}
|
|
11011
11278
|
},
|
|
11279
|
+
"clone": {
|
|
11280
|
+
"version": "1.0.4",
|
|
11281
|
+
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
|
11282
|
+
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
|
|
11283
|
+
},
|
|
11012
11284
|
"coach-core": {
|
|
11013
11285
|
"version": "7.1.3",
|
|
11014
11286
|
"resolved": "https://registry.npmjs.org/coach-core/-/coach-core-7.1.3.tgz",
|
|
@@ -11290,6 +11562,14 @@
|
|
|
11290
11562
|
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
|
|
11291
11563
|
"dev": true
|
|
11292
11564
|
},
|
|
11565
|
+
"defaults": {
|
|
11566
|
+
"version": "1.0.4",
|
|
11567
|
+
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
|
|
11568
|
+
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
|
|
11569
|
+
"requires": {
|
|
11570
|
+
"clone": "^1.0.2"
|
|
11571
|
+
}
|
|
11572
|
+
},
|
|
11293
11573
|
"deferred": {
|
|
11294
11574
|
"version": "0.7.1",
|
|
11295
11575
|
"resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.1.tgz",
|
|
@@ -12981,6 +13261,11 @@
|
|
|
12981
13261
|
"is-extglob": "^2.1.1"
|
|
12982
13262
|
}
|
|
12983
13263
|
},
|
|
13264
|
+
"is-interactive": {
|
|
13265
|
+
"version": "2.0.0",
|
|
13266
|
+
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
|
|
13267
|
+
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="
|
|
13268
|
+
},
|
|
12984
13269
|
"is-map": {
|
|
12985
13270
|
"version": "2.0.2",
|
|
12986
13271
|
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
|
|
@@ -13091,8 +13376,7 @@
|
|
|
13091
13376
|
"is-unicode-supported": {
|
|
13092
13377
|
"version": "1.3.0",
|
|
13093
13378
|
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
|
|
13094
|
-
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="
|
|
13095
|
-
"dev": true
|
|
13379
|
+
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="
|
|
13096
13380
|
},
|
|
13097
13381
|
"is-weakmap": {
|
|
13098
13382
|
"version": "2.0.1",
|
|
@@ -13728,6 +14012,22 @@
|
|
|
13728
14012
|
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
|
|
13729
14013
|
"integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg="
|
|
13730
14014
|
},
|
|
14015
|
+
"log-symbols": {
|
|
14016
|
+
"version": "5.1.0",
|
|
14017
|
+
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
|
|
14018
|
+
"integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
|
|
14019
|
+
"requires": {
|
|
14020
|
+
"chalk": "^5.0.0",
|
|
14021
|
+
"is-unicode-supported": "^1.1.0"
|
|
14022
|
+
},
|
|
14023
|
+
"dependencies": {
|
|
14024
|
+
"chalk": {
|
|
14025
|
+
"version": "5.2.0",
|
|
14026
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
|
14027
|
+
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA=="
|
|
14028
|
+
}
|
|
14029
|
+
}
|
|
14030
|
+
},
|
|
13731
14031
|
"lru-cache": {
|
|
13732
14032
|
"version": "6.0.0",
|
|
13733
14033
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
@@ -14182,6 +14482,42 @@
|
|
|
14182
14482
|
"word-wrap": "^1.2.3"
|
|
14183
14483
|
}
|
|
14184
14484
|
},
|
|
14485
|
+
"ora": {
|
|
14486
|
+
"version": "6.3.0",
|
|
14487
|
+
"resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz",
|
|
14488
|
+
"integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==",
|
|
14489
|
+
"requires": {
|
|
14490
|
+
"chalk": "^5.0.0",
|
|
14491
|
+
"cli-cursor": "^4.0.0",
|
|
14492
|
+
"cli-spinners": "^2.6.1",
|
|
14493
|
+
"is-interactive": "^2.0.0",
|
|
14494
|
+
"is-unicode-supported": "^1.1.0",
|
|
14495
|
+
"log-symbols": "^5.1.0",
|
|
14496
|
+
"stdin-discarder": "^0.1.0",
|
|
14497
|
+
"strip-ansi": "^7.0.1",
|
|
14498
|
+
"wcwidth": "^1.0.1"
|
|
14499
|
+
},
|
|
14500
|
+
"dependencies": {
|
|
14501
|
+
"ansi-regex": {
|
|
14502
|
+
"version": "6.0.1",
|
|
14503
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
|
|
14504
|
+
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
|
|
14505
|
+
},
|
|
14506
|
+
"chalk": {
|
|
14507
|
+
"version": "5.2.0",
|
|
14508
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
|
|
14509
|
+
"integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA=="
|
|
14510
|
+
},
|
|
14511
|
+
"strip-ansi": {
|
|
14512
|
+
"version": "7.0.1",
|
|
14513
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
|
|
14514
|
+
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
|
|
14515
|
+
"requires": {
|
|
14516
|
+
"ansi-regex": "^6.0.1"
|
|
14517
|
+
}
|
|
14518
|
+
}
|
|
14519
|
+
}
|
|
14520
|
+
},
|
|
14185
14521
|
"os-homedir": {
|
|
14186
14522
|
"version": "1.0.2",
|
|
14187
14523
|
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
|
|
@@ -15082,6 +15418,15 @@
|
|
|
15082
15418
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
|
15083
15419
|
"dev": true
|
|
15084
15420
|
},
|
|
15421
|
+
"restore-cursor": {
|
|
15422
|
+
"version": "4.0.0",
|
|
15423
|
+
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
|
|
15424
|
+
"integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
|
|
15425
|
+
"requires": {
|
|
15426
|
+
"onetime": "^5.1.0",
|
|
15427
|
+
"signal-exit": "^3.0.2"
|
|
15428
|
+
}
|
|
15429
|
+
},
|
|
15085
15430
|
"resumer": {
|
|
15086
15431
|
"version": "0.0.0",
|
|
15087
15432
|
"resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
|
|
@@ -15477,6 +15822,14 @@
|
|
|
15477
15822
|
}
|
|
15478
15823
|
}
|
|
15479
15824
|
},
|
|
15825
|
+
"stdin-discarder": {
|
|
15826
|
+
"version": "0.1.0",
|
|
15827
|
+
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
|
|
15828
|
+
"integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
|
|
15829
|
+
"requires": {
|
|
15830
|
+
"bl": "^5.0.0"
|
|
15831
|
+
}
|
|
15832
|
+
},
|
|
15480
15833
|
"stop-iteration-iterator": {
|
|
15481
15834
|
"version": "1.0.0",
|
|
15482
15835
|
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
|
|
@@ -16039,6 +16392,14 @@
|
|
|
16039
16392
|
"resolved": "https://registry.npmjs.org/wappalyzer-core/-/wappalyzer-core-6.6.0.tgz",
|
|
16040
16393
|
"integrity": "sha512-pdod7Zg1GwVJBSjMSmV8kiFfPhzUcRbjQeQo4Alcfu7p7epGYggP9xdBSY8o1PlJOvmW/FMQH5AEd7Scxb0wUA=="
|
|
16041
16394
|
},
|
|
16395
|
+
"wcwidth": {
|
|
16396
|
+
"version": "1.0.1",
|
|
16397
|
+
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
|
16398
|
+
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
|
16399
|
+
"requires": {
|
|
16400
|
+
"defaults": "^1.0.3"
|
|
16401
|
+
}
|
|
16402
|
+
},
|
|
16042
16403
|
"webidl-conversions": {
|
|
16043
16404
|
"version": "3.0.1",
|
|
16044
16405
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"sitespeed.io": "./bin/sitespeed.js",
|
|
6
6
|
"sitespeed.io-wpr": "./bin/browsertimeWebPageReplay.js"
|
|
7
7
|
},
|
|
8
|
-
"version": "27.
|
|
8
|
+
"version": "27.4.1",
|
|
9
9
|
"description": "Analyze the web performance of your site",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"performance",
|
|
@@ -113,6 +113,7 @@
|
|
|
113
113
|
"markdown": "0.5.0",
|
|
114
114
|
"node-scp": "0.0.22",
|
|
115
115
|
"node-slack": "0.0.7",
|
|
116
|
+
"ora": "6.3.0",
|
|
116
117
|
"os-name": "5.1.0",
|
|
117
118
|
"p-limit": "4.0.0",
|
|
118
119
|
"pug": "3.0.2",
|