pagespeed-quest 0.7.0 → 0.7.2
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/build/command.js +7 -2
- package/build/lighthouse-summary.d.ts +3 -0
- package/build/lighthouse-summary.js +113 -4
- package/build/lighthouse.d.ts +3 -0
- package/build/lighthouse.js +4 -2
- package/package.json +3 -3
package/build/command.js
CHANGED
|
@@ -44,10 +44,13 @@ function registerLighthouseCommands(main) {
|
|
|
44
44
|
const playback = lighthouse.command('playback');
|
|
45
45
|
playback.description('Playback contents for lighthouse');
|
|
46
46
|
playback.action(async () => {
|
|
47
|
-
const
|
|
47
|
+
const inventoryDir = main.opts().inventory || './inventory';
|
|
48
|
+
const inventoryRepository = new InventoryRepository(inventoryDir);
|
|
48
49
|
const artifactsDir = lighthouse.opts().artifacts || './artifacts';
|
|
49
50
|
const quiet = !!lighthouse.opts().quiet;
|
|
50
51
|
const timeout = Number(lighthouse.opts().timeout || '30000');
|
|
52
|
+
// Load inventory for traffic statistics
|
|
53
|
+
const inventory = await inventoryRepository.loadInventory();
|
|
51
54
|
await withPlaybackProxy({
|
|
52
55
|
inventoryRepository,
|
|
53
56
|
}, dependency, async (proxy) => {
|
|
@@ -59,6 +62,8 @@ function registerLighthouseCommands(main) {
|
|
|
59
62
|
artifactsDir,
|
|
60
63
|
headless: quiet,
|
|
61
64
|
timeout,
|
|
65
|
+
inventoryDir,
|
|
66
|
+
resources: inventory.resources,
|
|
62
67
|
}, dependency);
|
|
63
68
|
dependency.logger?.info('Lighthouse completed');
|
|
64
69
|
});
|
|
@@ -153,4 +158,4 @@ registerLighthouseCommands(main);
|
|
|
153
158
|
registerLoadshowCommands(main);
|
|
154
159
|
registerProxyCommands(main);
|
|
155
160
|
main.parse(process.argv);
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUU5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXZGLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7QUFFbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFBO0FBRTFFLFNBQVMsMEJBQTBCLENBQUMsSUFBYTtJQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzdDLFVBQVUsQ0FBQyxXQUFXLENBQUMsbURBQW1ELENBQUMsQ0FBQTtJQUMzRSxVQUFVLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ2hGLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2RCxVQUFVLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRXhFLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDakQsU0FB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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Resource } from './inventory.js';
|
|
1
2
|
import { DependencyInterface } from './types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Lighthouse audit result structure
|
|
@@ -25,6 +26,8 @@ export interface LighthouseReport {
|
|
|
25
26
|
export interface GenerateLighthouseSummaryInput {
|
|
26
27
|
jsonPath: string;
|
|
27
28
|
outputPath: string;
|
|
29
|
+
inventoryDir?: string;
|
|
30
|
+
resources?: Resource[];
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* Generates a Markdown summary from a Lighthouse JSON report
|
|
@@ -5,12 +5,99 @@ import Path from 'path';
|
|
|
5
5
|
* Weights are based on Lighthouse v10+ scoring
|
|
6
6
|
*/
|
|
7
7
|
const PERFORMANCE_METRICS = [
|
|
8
|
-
{ id: 'first-contentful-paint', abbr: 'FCP', unit: 'ms', weight: 0.1 },
|
|
9
8
|
{ id: 'largest-contentful-paint', abbr: 'LCP', unit: 'ms', weight: 0.25 },
|
|
10
|
-
{ id: 'total-blocking-time', abbr: 'TBT', unit: 'ms', weight: 0.3 },
|
|
11
9
|
{ id: 'cumulative-layout-shift', abbr: 'CLS', unit: '', weight: 0.25 },
|
|
10
|
+
{ id: 'total-blocking-time', abbr: 'TBT', unit: 'ms', weight: 0.3 },
|
|
11
|
+
{ id: 'first-contentful-paint', abbr: 'FCP', unit: 'ms', weight: 0.1 },
|
|
12
12
|
{ id: 'speed-index', abbr: 'SI', unit: 'ms', weight: 0.1 },
|
|
13
13
|
];
|
|
14
|
+
/**
|
|
15
|
+
* Maps MIME type to resource type category
|
|
16
|
+
*/
|
|
17
|
+
function getResourceType(mime) {
|
|
18
|
+
if (!mime)
|
|
19
|
+
return 'other';
|
|
20
|
+
if (mime.includes('html'))
|
|
21
|
+
return 'document';
|
|
22
|
+
if (mime.includes('css'))
|
|
23
|
+
return 'stylesheet';
|
|
24
|
+
// cspell:ignore ecmascript
|
|
25
|
+
if (mime.includes('javascript') || mime.includes('ecmascript'))
|
|
26
|
+
return 'script';
|
|
27
|
+
if (mime.startsWith('image/'))
|
|
28
|
+
return 'image';
|
|
29
|
+
if (mime.includes('font') || mime.includes('woff') || mime.includes('ttf') || mime.includes('otf'))
|
|
30
|
+
return 'font';
|
|
31
|
+
return 'other';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Formats bytes to human-readable string (KB, MB, etc.)
|
|
35
|
+
*/
|
|
36
|
+
function formatBytes(bytes) {
|
|
37
|
+
if (bytes < 1024)
|
|
38
|
+
return `${bytes} B`;
|
|
39
|
+
if (bytes < 1024 * 1024)
|
|
40
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
41
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Calculates traffic statistics by resource type
|
|
45
|
+
*/
|
|
46
|
+
async function calculateResourceStats(resources, inventoryDir) {
|
|
47
|
+
const statsMap = new Map();
|
|
48
|
+
// Initialize all resource types
|
|
49
|
+
const types = ['document', 'stylesheet', 'script', 'image', 'font', 'other'];
|
|
50
|
+
for (const type of types) {
|
|
51
|
+
statsMap.set(type, { type, count: 0, trafficSize: 0, resourceSize: 0 });
|
|
52
|
+
}
|
|
53
|
+
for (const resource of resources) {
|
|
54
|
+
if (!resource.contentFilePath)
|
|
55
|
+
continue;
|
|
56
|
+
const type = getResourceType(resource.contentTypeMime);
|
|
57
|
+
const stat = statsMap.get(type);
|
|
58
|
+
if (!stat)
|
|
59
|
+
continue;
|
|
60
|
+
try {
|
|
61
|
+
const filePath = Path.join(inventoryDir, resource.contentFilePath);
|
|
62
|
+
const fileStat = await fs.stat(filePath);
|
|
63
|
+
const resourceSize = fileStat.size;
|
|
64
|
+
// Traffic size: if content-encoding exists, estimate compressed size
|
|
65
|
+
// Otherwise use resource size
|
|
66
|
+
// Note: The file is stored decompressed, so we estimate traffic size
|
|
67
|
+
// based on typical compression ratios for each type
|
|
68
|
+
let trafficSize = resourceSize;
|
|
69
|
+
if (resource.contentEncoding) {
|
|
70
|
+
// For compressed resources, estimate traffic size based on typical ratios
|
|
71
|
+
// These are rough estimates - actual values would require re-compression
|
|
72
|
+
const compressionRatios = {
|
|
73
|
+
document: 0.2,
|
|
74
|
+
stylesheet: 0.15,
|
|
75
|
+
script: 0.25,
|
|
76
|
+
image: 0.95,
|
|
77
|
+
font: 0.7,
|
|
78
|
+
other: 0.5,
|
|
79
|
+
};
|
|
80
|
+
trafficSize = Math.round(resourceSize * compressionRatios[type]);
|
|
81
|
+
}
|
|
82
|
+
stat.count++;
|
|
83
|
+
stat.trafficSize += trafficSize;
|
|
84
|
+
stat.resourceSize += resourceSize;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// File not found or other error - skip
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Filter out types with no resources and sort by fixed order
|
|
91
|
+
const typeOrder = ['document', 'stylesheet', 'script', 'image', 'font', 'other'];
|
|
92
|
+
const stats = Array.from(statsMap.values())
|
|
93
|
+
.filter((s) => s.count > 0)
|
|
94
|
+
.sort((a, b) => typeOrder.indexOf(a.type) - typeOrder.indexOf(b.type));
|
|
95
|
+
const totals = stats.reduce((acc, s) => ({
|
|
96
|
+
trafficSize: acc.trafficSize + s.trafficSize,
|
|
97
|
+
resourceSize: acc.resourceSize + s.resourceSize,
|
|
98
|
+
}), { trafficSize: 0, resourceSize: 0 });
|
|
99
|
+
return { stats, totals };
|
|
100
|
+
}
|
|
14
101
|
/**
|
|
15
102
|
* Formats a score as a percentage integer
|
|
16
103
|
*/
|
|
@@ -60,7 +147,6 @@ export async function generateLighthouseSummary(opts, dependency) {
|
|
|
60
147
|
// Section 2: Scores
|
|
61
148
|
lines.push('## Scores');
|
|
62
149
|
lines.push('');
|
|
63
|
-
lines.push(`- Overall ${formatScore(overallScore)}`);
|
|
64
150
|
for (const metric of PERFORMANCE_METRICS) {
|
|
65
151
|
const audit = report.audits[metric.id];
|
|
66
152
|
if (audit) {
|
|
@@ -69,7 +155,30 @@ export async function generateLighthouseSummary(opts, dependency) {
|
|
|
69
155
|
lines.push(`- ${metric.abbr} ${score} ${weight}`);
|
|
70
156
|
}
|
|
71
157
|
}
|
|
158
|
+
lines.push(`- **Overall** ${formatScore(overallScore)}`);
|
|
72
159
|
lines.push('');
|
|
160
|
+
// Section 3: Resource Traffic (if inventory data is provided)
|
|
161
|
+
if (opts.resources && opts.inventoryDir) {
|
|
162
|
+
const { stats, totals } = await calculateResourceStats(opts.resources, opts.inventoryDir);
|
|
163
|
+
if (stats.length > 0) {
|
|
164
|
+
// Traffic section (compressed/transferred size)
|
|
165
|
+
lines.push('## Traffic: Type / Count / Size / Bytes');
|
|
166
|
+
lines.push('');
|
|
167
|
+
for (const stat of stats) {
|
|
168
|
+
lines.push(`- ${stat.type} / ${stat.count} / ${formatBytes(stat.trafficSize)} / ${stat.trafficSize}`);
|
|
169
|
+
}
|
|
170
|
+
lines.push(`- **total** / ${stats.reduce((sum, s) => sum + s.count, 0)} / ${formatBytes(totals.trafficSize)} / ${totals.trafficSize}`);
|
|
171
|
+
lines.push('');
|
|
172
|
+
// Resource section (decompressed/original size)
|
|
173
|
+
lines.push('## Resource: Type / Count / Size / Bytes');
|
|
174
|
+
lines.push('');
|
|
175
|
+
for (const stat of stats) {
|
|
176
|
+
lines.push(`- ${stat.type} / ${stat.count} / ${formatBytes(stat.resourceSize)} / ${stat.resourceSize}`);
|
|
177
|
+
}
|
|
178
|
+
lines.push(`- **total** / ${stats.reduce((sum, s) => sum + s.count, 0)} / ${formatBytes(totals.resourceSize)} / ${totals.resourceSize}`);
|
|
179
|
+
lines.push('');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
73
182
|
// Ensure output directory exists
|
|
74
183
|
const outputDir = Path.dirname(opts.outputPath);
|
|
75
184
|
await dependency.mkdirp(outputDir);
|
|
@@ -77,4 +186,4 @@ export async function generateLighthouseSummary(opts, dependency) {
|
|
|
77
186
|
await fs.writeFile(opts.outputPath, lines.join('\n'), 'utf-8');
|
|
78
187
|
dependency.logger?.info(`Lighthouse summary saved to ${opts.outputPath}`);
|
|
79
188
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRob3VzZS1zdW1tYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xpZ2h0aG91c2Utc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDNUIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBOEJ2Qjs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0lBQ3RFLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ25FLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ3RFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtDQUMzRCxDQUFBO0FBd0JEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBd0I7SUFDL0MsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQTtJQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sWUFBWSxDQUFBO0lB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
|
package/build/lighthouse.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Resource } from './inventory.js';
|
|
1
2
|
import { DependencyInterface, DeviceType } from './types.js';
|
|
2
3
|
export interface ExecLighthouseInput {
|
|
3
4
|
url: string;
|
|
@@ -8,5 +9,7 @@ export interface ExecLighthouseInput {
|
|
|
8
9
|
headless: boolean;
|
|
9
10
|
timeout: number;
|
|
10
11
|
captureScoreAndMetrics?: boolean;
|
|
12
|
+
inventoryDir?: string;
|
|
13
|
+
resources?: Resource[];
|
|
11
14
|
}
|
|
12
15
|
export declare function execLighthouse(opts: ExecLighthouseInput, dependency: Pick<DependencyInterface, 'mkdirp' | 'executeLighthouse' | 'logger'>): Promise<void>;
|
package/build/lighthouse.js
CHANGED
|
@@ -26,7 +26,7 @@ export async function execLighthouse(opts, dependency) {
|
|
|
26
26
|
const chromeFlags = ['--ignore-certificate-errors', `--proxy-server=http://localhost:${opts.proxyPort}`];
|
|
27
27
|
if (opts.headless)
|
|
28
28
|
chromeFlags.push('--headless');
|
|
29
|
-
args.push(`--chrome-flags
|
|
29
|
+
args.push(`--chrome-flags=${chromeFlags.join(' ')}`);
|
|
30
30
|
if (opts.view)
|
|
31
31
|
args.push('--view');
|
|
32
32
|
await dependency.executeLighthouse(args);
|
|
@@ -52,6 +52,8 @@ export async function execLighthouse(opts, dependency) {
|
|
|
52
52
|
await generateLighthouseSummary({
|
|
53
53
|
jsonPath,
|
|
54
54
|
outputPath: summaryPath,
|
|
55
|
+
inventoryDir: opts.inventoryDir,
|
|
56
|
+
resources: opts.resources,
|
|
55
57
|
}, dependency);
|
|
56
58
|
}
|
|
57
59
|
catch (error) {
|
|
@@ -59,4 +61,4 @@ export async function execLighthouse(opts, dependency) {
|
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRob3VzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWdodGhvdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUd2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQWdCbkUsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLElBQXlCLEVBQ3pCLFVBQWdGO0lBRWhGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFBO0lBQ3ZELE1BQU0sVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQTtJQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQTtJQUN4RCxNQUFNLElBQUksR0FBYTtRQUNyQixJQUFJLENBQUMsR0FBRztRQUNSLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsaUJBQWlCLFVBQVUsRUFBRTtRQUM3QiwrQkFBK0I7UUFDL0IsaUJBQWlCLFVBQVUsRUFBRTtRQUM3Qiw0Q0FBNEM7UUFDNUMsNEJBQTRCLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQ3hFLDZEQUE2RDtRQUM3RCxzQkFBc0I7UUFDdEIsK0JBQStCO1FBQy9CLHVDQUF1QztRQUN2QyxxQ0FBcUM7UUFDckMsc0NBQXNDO0tBQ3ZDLENBQUE7SUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUVoRCxNQUFNLFdBQVcsR0FBYSxDQUFDLDZCQUE2QixFQUFFLG1DQUFtQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNsSCxJQUFJLElBQUksQ0FBQyxRQUFRO1FBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVwRCxJQUFJLElBQUksQ0FBQyxJQUFJO1FBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVsQyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUV4QyxvREFBb0Q7SUFDcEQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssS0FBSyxFQUFFO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLEdBQUcsVUFBVSxjQUFjLENBQUE7UUFDNUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLENBQUMsQ0FBQTtRQUVuRSxJQUFJO1lBQ0YsTUFBTSx1QkFBdUIsQ0FDM0I7Z0JBQ0UsUUFBUTtnQkFDUixVQUFVLEVBQUUsVUFBVTthQUN2QixFQUNELFVBQVUsQ0FDWCxDQUFBO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1EQUFtRCxLQUFLLEVBQUUsQ0FBQyxDQUFBO1NBQ3BGO0tBQ0Y7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsVUFBVSxjQUFjLENBQUE7UUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFFekQsSUFBSTtZQUNGLE1BQU0seUJBQXlCLENBQzdCO2dCQUNFLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzFCLEVBQ0QsVUFBVSxDQUNYLENBQUE7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsMENBQTBDLEtBQUssRUFBRSxDQUFDLENBQUE7U0FDM0U7S0FDRjtBQUNILENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pagespeed-quest",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A framework for efficient web front-end speed improvement",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"pino-pretty": "^11.2.2",
|
|
65
65
|
"prettier": "^2.1.1",
|
|
66
66
|
"puppeteer": "^24.31.0",
|
|
67
|
-
"rust-http-playback-proxy": "0.4.
|
|
67
|
+
"rust-http-playback-proxy": "0.4.3",
|
|
68
68
|
"tmp-promise": "^3.0.3"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
@@ -132,4 +132,4 @@
|
|
|
132
132
|
"**/*.spec.js"
|
|
133
133
|
]
|
|
134
134
|
}
|
|
135
|
-
}
|
|
135
|
+
}
|