ssrwire 0.3.0 → 0.4.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 +24 -1
- package/CONTRIBUTING.md +2 -1
- package/PUBLISHING.md +15 -15
- package/README.md +109 -6
- package/dist/audit-report.d.ts +8 -0
- package/dist/audit-report.d.ts.map +1 -0
- package/dist/audit-report.js +243 -0
- package/dist/audit-report.js.map +1 -0
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +2 -0
- package/dist/audit.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +74 -9
- package/dist/cli.js.map +1 -1
- package/dist/compare.d.ts +6 -0
- package/dist/compare.d.ts.map +1 -0
- package/dist/compare.js +720 -0
- package/dist/compare.js.map +1 -0
- package/dist/comparison-reporters.d.ts +9 -0
- package/dist/comparison-reporters.d.ts.map +1 -0
- package/dist/comparison-reporters.js +223 -0
- package/dist/comparison-reporters.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +1 -0
- package/dist/redact.js.map +1 -1
- package/dist/types.d.ts +83 -1
- package/dist/types.d.ts.map +1 -1
- package/examples/github-actions.yml +2 -2
- package/examples/ssrwire.config.yml +4 -2
- package/package.json +1 -1
- package/src/audit-report.ts +269 -0
- package/src/audit.ts +2 -0
- package/src/cli.ts +103 -11
- package/src/compare.ts +949 -0
- package/src/comparison-reporters.ts +276 -0
- package/src/config.ts +15 -1
- package/src/index.ts +27 -0
- package/src/redact.ts +1 -0
- package/src/types.ts +97 -1
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { access, mkdir, writeFile } from "node:fs/promises";
|
|
2
|
-
import { dirname, resolve } from "node:path";
|
|
1
|
+
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, resolve } from "node:path";
|
|
3
3
|
import { Command, CommanderError, InvalidArgumentError } from "commander";
|
|
4
4
|
import { runAudit } from "./audit.js";
|
|
5
|
+
import { AuditReportError, parseAuditReportText } from "./audit-report.js";
|
|
6
|
+
import { compareAudits } from "./compare.js";
|
|
7
|
+
import { renderComparisonReport } from "./comparison-reporters.js";
|
|
5
8
|
import { ConfigError, loadConfig } from "./config.js";
|
|
6
9
|
import { renderReport } from "./reporters.js";
|
|
7
10
|
import { VERSION } from "./version.js";
|
|
8
11
|
const CONFIG_TEMPLATE = `# SSRWire configuration
|
|
9
12
|
targets:
|
|
10
|
-
-
|
|
13
|
+
- id: home
|
|
14
|
+
url: https://example.com/
|
|
11
15
|
expectedStatus: 200
|
|
12
16
|
require:
|
|
13
17
|
title: true
|
|
@@ -55,6 +59,23 @@ function parseFailOn(value) {
|
|
|
55
59
|
}
|
|
56
60
|
throw new InvalidArgumentError("Expected error, warning, or never.");
|
|
57
61
|
}
|
|
62
|
+
function parseComparisonFormat(value) {
|
|
63
|
+
if (value === "terminal" || value === "json" || value === "html")
|
|
64
|
+
return value;
|
|
65
|
+
throw new InvalidArgumentError("Expected terminal, json, or html.");
|
|
66
|
+
}
|
|
67
|
+
function parseComparisonFailOn(value) {
|
|
68
|
+
if (value === "regression" || value === "never")
|
|
69
|
+
return value;
|
|
70
|
+
throw new InvalidArgumentError("Expected regression or never.");
|
|
71
|
+
}
|
|
72
|
+
function parseNonNegativeNumber(value) {
|
|
73
|
+
const parsed = Number(value);
|
|
74
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
75
|
+
throw new InvalidArgumentError("Expected a finite non-negative number.");
|
|
76
|
+
}
|
|
77
|
+
return parsed;
|
|
78
|
+
}
|
|
58
79
|
function addCheckOptions(command) {
|
|
59
80
|
return command
|
|
60
81
|
.option("-c, --config <path>", "configuration file")
|
|
@@ -92,6 +113,16 @@ async function writeReport(path, report) {
|
|
|
92
113
|
await mkdir(dirname(absolute), { recursive: true });
|
|
93
114
|
await writeFile(absolute, report, "utf8");
|
|
94
115
|
}
|
|
116
|
+
async function readAuditFile(path, label) {
|
|
117
|
+
let text;
|
|
118
|
+
try {
|
|
119
|
+
text = await readFile(resolve(path), "utf8");
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
throw new AuditReportError(`Could not read ${label} audit report: ${path}`);
|
|
123
|
+
}
|
|
124
|
+
return parseAuditReportText(text, `${label} audit report`);
|
|
125
|
+
}
|
|
95
126
|
async function check(urls, options) {
|
|
96
127
|
const config = await loadConfig({
|
|
97
128
|
...(options.config ? { configPath: options.config } : {}),
|
|
@@ -118,6 +149,31 @@ async function check(urls, options) {
|
|
|
118
149
|
}
|
|
119
150
|
process.exitCode = reportExitCode(audit.summary, options.failOn);
|
|
120
151
|
}
|
|
152
|
+
async function compareReports(baselinePath, candidatePath, options) {
|
|
153
|
+
const [baseline, candidate] = await Promise.all([
|
|
154
|
+
readAuditFile(baselinePath, "baseline"),
|
|
155
|
+
readAuditFile(candidatePath, "candidate"),
|
|
156
|
+
]);
|
|
157
|
+
const comparison = compareAudits(baseline, candidate, {
|
|
158
|
+
baselineLabel: basename(baselinePath),
|
|
159
|
+
candidateLabel: basename(candidatePath),
|
|
160
|
+
timingRegressionMs: options.timingRegressionMs,
|
|
161
|
+
timingRegressionPercent: options.timingRegressionPercent,
|
|
162
|
+
});
|
|
163
|
+
const color = options.color &&
|
|
164
|
+
!options.output &&
|
|
165
|
+
Boolean(process.stdout.isTTY) &&
|
|
166
|
+
!Reflect.has(process.env, "NO_COLOR");
|
|
167
|
+
const report = renderComparisonReport(comparison, options.format, { color });
|
|
168
|
+
if (options.output) {
|
|
169
|
+
await writeReport(options.output, report);
|
|
170
|
+
process.stderr.write(`SSRWire wrote ${options.format} comparison to ${options.output}\n`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
process.stdout.write(report);
|
|
174
|
+
}
|
|
175
|
+
process.exitCode = options.failOn === "regression" && comparison.summary.regressions > 0 ? 1 : 0;
|
|
176
|
+
}
|
|
121
177
|
async function initialize(path, force) {
|
|
122
178
|
const absolute = resolve(path);
|
|
123
179
|
if (!force) {
|
|
@@ -143,17 +199,26 @@ export async function main(argv = process.argv) {
|
|
|
143
199
|
.version(VERSION)
|
|
144
200
|
.exitOverride()
|
|
145
201
|
.showHelpAfterError();
|
|
146
|
-
addCheckOptions(program)
|
|
147
|
-
.argument("[urls...]", "HTTP or HTTPS URLs to inspect")
|
|
148
|
-
.action(async (urls, _options, command) => {
|
|
149
|
-
await check(urls, optionsFrom(command));
|
|
150
|
-
});
|
|
151
202
|
addCheckOptions(program
|
|
152
|
-
.command("check")
|
|
203
|
+
.command("check", { isDefault: true })
|
|
153
204
|
.description("inspect one or more SSR responses")
|
|
154
205
|
.argument("[urls...]", "HTTP or HTTPS URLs to inspect")).action(async (urls, _options, command) => {
|
|
155
206
|
await check(urls, optionsFrom(command));
|
|
156
207
|
});
|
|
208
|
+
program
|
|
209
|
+
.command("compare")
|
|
210
|
+
.description("compare two SSRWire JSON audit reports")
|
|
211
|
+
.argument("<baseline>", "baseline JSON audit report")
|
|
212
|
+
.argument("<candidate>", "candidate JSON audit report")
|
|
213
|
+
.option("-f, --format <format>", "terminal, json, or html", parseComparisonFormat, "terminal")
|
|
214
|
+
.option("-o, --output <path>", "write the comparison to a file")
|
|
215
|
+
.option("--fail-on <level>", "regression or never", parseComparisonFailOn, "regression")
|
|
216
|
+
.option("--timing-regression-ms <ms>", "minimum absolute median slowdown", parseNonNegativeNumber, 250)
|
|
217
|
+
.option("--timing-regression-percent <percent>", "minimum relative median slowdown", parseNonNegativeNumber, 25)
|
|
218
|
+
.option("--no-color", "disable terminal colors")
|
|
219
|
+
.action(async (baselinePath, candidatePath, options) => {
|
|
220
|
+
await compareReports(baselinePath, candidatePath, options);
|
|
221
|
+
});
|
|
157
222
|
program
|
|
158
223
|
.command("init")
|
|
159
224
|
.description("create a documented starter configuration")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AuditComparison, AuditResult, CompareAuditOptions } from "./types.js";
|
|
2
|
+
export declare class ComparisonError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
export declare function compareAudits(baseline: AuditResult, candidate: AuditResult, options?: CompareAuditOptions): AuditComparison;
|
|
6
|
+
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEX,mBAAmB,EAcpB,MAAM,YAAY,CAAC;AAsEpB,qBAAa,eAAgB,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAInC;AAwtBD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,mBAAwB,GAChC,eAAe,CAkHjB"}
|