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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to SSRWire are documented here. The project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.4.0] - 2026-09-01
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Offline `ssrwire compare` for two redacted JSON audits, with stable target IDs
|
|
13
|
+
for matching the same route across production and preview origins.
|
|
14
|
+
- Regression, fixed, and neutral-change classification for policy findings,
|
|
15
|
+
completion, HTTP delivery, metadata values and locations, agent coverage, and
|
|
16
|
+
redirect evidence.
|
|
17
|
+
- Dual-floor median timing comparisons with configurable absolute and relative
|
|
18
|
+
thresholds.
|
|
19
|
+
- Terminal and deterministic JSON comparison reports plus a self-contained,
|
|
20
|
+
script-free HTML wire waterfall.
|
|
21
|
+
- Public comparison, report-validation, and comparison-reporter APIs.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- JSON audits now include an explicit `schemaVersion: 1` persisted-report
|
|
26
|
+
contract independent of the SSRWire package version.
|
|
27
|
+
- Target objects accept an optional unique `id`; exact URL matching remains the
|
|
28
|
+
fallback when an ID is absent.
|
|
29
|
+
|
|
8
30
|
## [0.3.0] - 2026-08-28
|
|
9
31
|
|
|
10
32
|
### Added
|
|
@@ -58,7 +80,8 @@ All notable changes to SSRWire are documented here. The project follows
|
|
|
58
80
|
- Terminal, JSON, and SARIF reports with CI-safe exit codes.
|
|
59
81
|
- YAML configuration, one-off URL checks, Docker support, and GitHub Actions examples.
|
|
60
82
|
|
|
61
|
-
[Unreleased]: https://github.com/lame13/ssrwire/compare/v0.
|
|
83
|
+
[Unreleased]: https://github.com/lame13/ssrwire/compare/v0.4.0...HEAD
|
|
84
|
+
[0.4.0]: https://github.com/lame13/ssrwire/compare/v0.3.0...v0.4.0
|
|
62
85
|
[0.3.0]: https://github.com/lame13/ssrwire/compare/v0.2.0...v0.3.0
|
|
63
86
|
[0.2.0]: https://github.com/lame13/ssrwire/compare/v0.1.0...v0.2.0
|
|
64
87
|
[0.1.0]: https://github.com/lame13/ssrwire/releases/tag/v0.1.0
|
package/CONTRIBUTING.md
CHANGED
|
@@ -26,13 +26,14 @@ before opening a pull request, then run `npm run check` again.
|
|
|
26
26
|
Keep each change narrow. Include tests for behavior changes, especially for:
|
|
27
27
|
|
|
28
28
|
- response chunk boundaries and elements split across chunks;
|
|
29
|
+
- persisted audit-report validation, target matching, and comparison classification;
|
|
29
30
|
- redirects, timeouts, aborted bodies, and size limits;
|
|
30
31
|
- malformed, duplicated, late, or body-located metadata;
|
|
31
32
|
- Open Graph and Twitter Card requirements, fallbacks, arrays, and URL values;
|
|
32
33
|
- user-agent differences and comparison findings;
|
|
33
34
|
- repeated-sample ordering, aggregation, and instability classification;
|
|
34
35
|
- redaction of configured header values;
|
|
35
|
-
- terminal, JSON, SARIF, and exit-code behavior.
|
|
36
|
+
- terminal, JSON, SARIF, comparison HTML, and exit-code behavior.
|
|
36
37
|
|
|
37
38
|
Do not make timing tests depend on exact millisecond values. Shared runners and
|
|
38
39
|
local machines have unavoidable scheduling variance. Test ordering,
|
package/PUBLISHING.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Publish SSRWire 0.
|
|
1
|
+
# Publish SSRWire 0.4.0 from a local machine
|
|
2
2
|
|
|
3
3
|
This repository intentionally includes no npm publishing workflow. Publish from
|
|
4
4
|
a foreground local terminal only after the GitHub `CI` workflow passes. Do not
|
|
@@ -10,7 +10,7 @@ request, and do not use an administrator bypass or a direct push to `main`.
|
|
|
10
10
|
|
|
11
11
|
## 1. Update the existing repository
|
|
12
12
|
|
|
13
|
-
Work from a clean clone of the existing public repository. Copy the 0.
|
|
13
|
+
Work from a clean clone of the existing public repository. Copy the 0.4.0
|
|
14
14
|
source files into that clone while preserving its `.git` directory.
|
|
15
15
|
|
|
16
16
|
```bash
|
|
@@ -18,7 +18,7 @@ cd ssrwire
|
|
|
18
18
|
git switch main
|
|
19
19
|
git pull --ff-only origin main
|
|
20
20
|
git status --short
|
|
21
|
-
git switch -c release/0.
|
|
21
|
+
git switch -c release/0.4.0
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
`git status --short` must be empty before creating the release branch and
|
|
@@ -36,7 +36,7 @@ npm pack --dry-run
|
|
|
36
36
|
node dist/bin.js --version
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
The final command must print `0.
|
|
39
|
+
The final command must print `0.4.0`. Inspect the dry-run file list. It must not
|
|
40
40
|
contain `.env`, `.github`, `node_modules`, `test`, ZIP files, or tarballs.
|
|
41
41
|
|
|
42
42
|
Review the release diff and version references:
|
|
@@ -45,7 +45,7 @@ Review the release diff and version references:
|
|
|
45
45
|
git diff --check
|
|
46
46
|
git diff --stat
|
|
47
47
|
git diff -- package.json package-lock.json CHANGELOG.md README.md PUBLISHING.md
|
|
48
|
-
rg '0\.
|
|
48
|
+
rg '0\.3\.0' README.md examples package.json package-lock.json scripts src test
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
The final search should return nothing. Historical entries in `CHANGELOG.md`
|
|
@@ -58,10 +58,10 @@ gh auth status -h github.com || gh auth login -h github.com --web
|
|
|
58
58
|
git add --all
|
|
59
59
|
git diff --cached --check
|
|
60
60
|
git diff --cached --stat
|
|
61
|
-
git commit -m "feat: release SSRWire 0.
|
|
62
|
-
git push --set-upstream origin release/0.
|
|
63
|
-
gh pr create --base main --head release/0.
|
|
64
|
-
PR_NUMBER="$(gh pr view release/0.
|
|
61
|
+
git commit -m "feat: release SSRWire 0.4.0"
|
|
62
|
+
git push --set-upstream origin release/0.4.0
|
|
63
|
+
gh pr create --base main --head release/0.4.0 --fill
|
|
64
|
+
PR_NUMBER="$(gh pr view release/0.4.0 --json number --jq .number)"
|
|
65
65
|
test -n "$PR_NUMBER"
|
|
66
66
|
gh pr checks "$PR_NUMBER" --watch --fail-fast
|
|
67
67
|
```
|
|
@@ -102,8 +102,8 @@ npm config get registry
|
|
|
102
102
|
npm config get provenance
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
The published version and `latest` tag must still be `0.
|
|
106
|
-
reports `0.
|
|
105
|
+
The published version and `latest` tag must still be `0.3.0`. If npm already
|
|
106
|
+
reports `0.4.0`, stop: never reuse a version that npm accepted.
|
|
107
107
|
|
|
108
108
|
In the npm package settings, select **Require two-factor authentication and
|
|
109
109
|
disallow tokens**. npm documents this as the strongest package publishing
|
|
@@ -132,7 +132,7 @@ or add an npm credential to the repository or GitHub Actions. The package-level
|
|
|
132
132
|
"disallow tokens" setting ensures that publication remains interactive.
|
|
133
133
|
|
|
134
134
|
If npm's publish-time scanning delays package visibility, wait. Do not publish
|
|
135
|
-
`0.
|
|
135
|
+
`0.4.0` again or change the tag to work around propagation.
|
|
136
136
|
|
|
137
137
|
## 6. Tag the exact published commit
|
|
138
138
|
|
|
@@ -140,9 +140,9 @@ If npm's publish-time scanning delays package visibility, wait. Do not publish
|
|
|
140
140
|
node scripts/clean.mjs
|
|
141
141
|
rm -rf node_modules/.vite
|
|
142
142
|
git status --short
|
|
143
|
-
git tag -a v0.
|
|
144
|
-
git push origin v0.
|
|
145
|
-
gh release create v0.
|
|
143
|
+
git tag -a v0.4.0 -m "SSRWire v0.4.0"
|
|
144
|
+
git push origin v0.4.0
|
|
145
|
+
gh release create v0.4.0 --generate-notes --title "SSRWire v0.4.0"
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
`git status --short` must print nothing before tagging.
|
package/README.md
CHANGED
|
@@ -85,6 +85,65 @@ npx ssrwire check \
|
|
|
85
85
|
The root command and `check` are equivalent, so `npx ssrwire URL` is the short
|
|
86
86
|
form of `npx ssrwire check URL`.
|
|
87
87
|
|
|
88
|
+
## Compare deployments
|
|
89
|
+
|
|
90
|
+
SSRWire can compare two JSON audits without making more network requests. Give
|
|
91
|
+
the same logical target a stable `id` in each environment so reports can match
|
|
92
|
+
across different origins:
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
# production.yml
|
|
96
|
+
targets:
|
|
97
|
+
- id: home
|
|
98
|
+
url: https://www.example.com/
|
|
99
|
+
- id: pricing
|
|
100
|
+
url: https://www.example.com/pricing/
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
```yaml
|
|
104
|
+
# preview.yml
|
|
105
|
+
targets:
|
|
106
|
+
- id: home
|
|
107
|
+
url: https://preview.example.net/
|
|
108
|
+
- id: pricing
|
|
109
|
+
url: https://preview.example.net/pricing/
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Capture and compare the already-redacted reports:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npx ssrwire check --config production.yml --format json --output production.json
|
|
116
|
+
npx ssrwire check --config preview.yml --format json --output preview.json
|
|
117
|
+
|
|
118
|
+
npx ssrwire compare production.json preview.json
|
|
119
|
+
npx ssrwire compare production.json preview.json \
|
|
120
|
+
--format html \
|
|
121
|
+
--output ssrwire-diff.html
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The comparison classifies candidate-only warning/error findings and newly
|
|
125
|
+
incomplete probes as regressions, resolved findings and material timing
|
|
126
|
+
improvements as fixed, and response or metadata differences as neutral changes.
|
|
127
|
+
A metadata change becomes a regression when it causes a candidate policy
|
|
128
|
+
finding, such as required metadata disappearing or head-only crawler metadata
|
|
129
|
+
moving into the body.
|
|
130
|
+
|
|
131
|
+
Timing regressions use per-agent medians and require both an absolute increase
|
|
132
|
+
over 250 ms and a relative increase over 25% by default. Both floors are
|
|
133
|
+
configurable on `compare`; small timing differences remain visible in the HTML
|
|
134
|
+
waterfall without making CI noisy. `--fail-on regression` is the comparison
|
|
135
|
+
default, while `--fail-on never` always exits successfully after valid reports
|
|
136
|
+
are compared.
|
|
137
|
+
|
|
138
|
+
The HTML report is one self-contained, script-free file with synchronized
|
|
139
|
+
baseline and candidate milestones. It never embeds raw response HTML. SSRWire
|
|
140
|
+
does not create or update baseline files automatically.
|
|
141
|
+
|
|
142
|
+
Reports without target IDs match by exact target URL. IDs must be unique within
|
|
143
|
+
one report, so an ID mismatch is shown as one removed and one added target
|
|
144
|
+
instead of being guessed. Comparison requires the explicit `schemaVersion: 1`
|
|
145
|
+
audit contract emitted by SSRWire 0.4.0.
|
|
146
|
+
|
|
88
147
|
## What it observes
|
|
89
148
|
|
|
90
149
|
For each target, agent, and configured sample, SSRWire captures:
|
|
@@ -208,7 +267,8 @@ takes precedence.
|
|
|
208
267
|
|
|
209
268
|
```yaml
|
|
210
269
|
targets:
|
|
211
|
-
-
|
|
270
|
+
- id: home
|
|
271
|
+
url: https://example.com/
|
|
212
272
|
expectedStatus: 200
|
|
213
273
|
expectedFinalUrl: https://example.com/
|
|
214
274
|
require:
|
|
@@ -222,7 +282,8 @@ targets:
|
|
|
222
282
|
maxFirstByteMs: 1200
|
|
223
283
|
maxCriticalMs: 2500
|
|
224
284
|
|
|
225
|
-
-
|
|
285
|
+
- id: not-found
|
|
286
|
+
url: https://example.com/not-found/
|
|
226
287
|
expectedStatus: [404]
|
|
227
288
|
require:
|
|
228
289
|
title: true
|
|
@@ -256,6 +317,10 @@ targets:
|
|
|
256
317
|
- https://example.com/pricing/
|
|
257
318
|
```
|
|
258
319
|
|
|
320
|
+
Use the object form with a stable `id` when reports from different origins will
|
|
321
|
+
be compared. IDs are 1–64 ASCII letters, digits, dots, underscores, or hyphens,
|
|
322
|
+
and must start with a letter or digit.
|
|
323
|
+
|
|
259
324
|
Defaults:
|
|
260
325
|
|
|
261
326
|
- expected status: `200`;
|
|
@@ -365,6 +430,7 @@ dynamic values commonly change source HTML.
|
|
|
365
430
|
```text
|
|
366
431
|
ssrwire [urls...] [options]
|
|
367
432
|
ssrwire check [urls...] [options]
|
|
433
|
+
ssrwire compare <baseline.json> <candidate.json> [options]
|
|
368
434
|
ssrwire init [path] [--force]
|
|
369
435
|
```
|
|
370
436
|
|
|
@@ -387,6 +453,17 @@ Check options:
|
|
|
387
453
|
Config-file targets and CLI URLs are combined, with exact duplicate URLs
|
|
388
454
|
removed.
|
|
389
455
|
|
|
456
|
+
Comparison options:
|
|
457
|
+
|
|
458
|
+
| Option | Purpose |
|
|
459
|
+
|---|---|
|
|
460
|
+
| `-f, --format <format>` | `terminal`, `json`, or self-contained `html` |
|
|
461
|
+
| `-o, --output <path>` | Write the comparison to a file |
|
|
462
|
+
| `--fail-on <level>` | `regression` or `never` |
|
|
463
|
+
| `--timing-regression-ms <ms>` | Absolute median slowdown floor; default `250` |
|
|
464
|
+
| `--timing-regression-percent <percent>` | Relative median slowdown floor; default `25` |
|
|
465
|
+
| `--no-color` | Disable terminal color |
|
|
466
|
+
|
|
390
467
|
## Reports and exit codes
|
|
391
468
|
|
|
392
469
|
- `terminal`: compact sample, social-readiness, aggregate-timing, and finding
|
|
@@ -395,6 +472,8 @@ removed.
|
|
|
395
472
|
signal plus repeated-run stability summaries.
|
|
396
473
|
- `sarif`: findings suitable for GitHub Code Scanning and other SARIF 2.1.0
|
|
397
474
|
consumers.
|
|
475
|
+
- comparison `html`: a script-free deployment summary and per-agent wire
|
|
476
|
+
waterfall suitable for a CI artifact.
|
|
398
477
|
|
|
399
478
|
Exit codes are stable:
|
|
400
479
|
|
|
@@ -402,7 +481,11 @@ Exit codes are stable:
|
|
|
402
481
|
- `1`: the run completed but crossed the `--fail-on` threshold;
|
|
403
482
|
- `2`: configuration/setup failure or incomplete probe evidence.
|
|
404
483
|
|
|
405
|
-
|
|
484
|
+
For `compare`, exit `1` means at least one regression was introduced under the
|
|
485
|
+
default policy, while invalid or unreadable reports use exit `2`. Neutral
|
|
486
|
+
changes and fixed findings do not fail comparison.
|
|
487
|
+
|
|
488
|
+
`check --fail-on never` suppresses policy failures, but it never converts an
|
|
406
489
|
incomplete probe into a pass.
|
|
407
490
|
|
|
408
491
|
## GitHub Actions
|
|
@@ -460,9 +543,29 @@ const audit = await runAudit(config);
|
|
|
460
543
|
process.stdout.write(renderJson(audit));
|
|
461
544
|
```
|
|
462
545
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
546
|
+
Comparisons use the same primitives as the CLI:
|
|
547
|
+
|
|
548
|
+
```ts
|
|
549
|
+
import { readFile } from "node:fs/promises";
|
|
550
|
+
import {
|
|
551
|
+
compareAudits,
|
|
552
|
+
parseAuditReportText,
|
|
553
|
+
renderComparisonHtml,
|
|
554
|
+
} from "ssrwire";
|
|
555
|
+
|
|
556
|
+
const [baselineJson, candidateJson] = await Promise.all([
|
|
557
|
+
readFile("production.json", "utf8"),
|
|
558
|
+
readFile("preview.json", "utf8"),
|
|
559
|
+
]);
|
|
560
|
+
const baseline = parseAuditReportText(baselineJson, "baseline audit report");
|
|
561
|
+
const candidate = parseAuditReportText(candidateJson, "candidate audit report");
|
|
562
|
+
const comparison = compareAudits(baseline, candidate);
|
|
563
|
+
const html = renderComparisonHtml(comparison);
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
The JSON report's top-level `version` is the SSRWire software version.
|
|
567
|
+
`schemaVersion` separately identifies the persisted report contract used by
|
|
568
|
+
offline comparison.
|
|
466
569
|
|
|
467
570
|
## Scope
|
|
468
571
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AuditResult } from "./types.js";
|
|
2
|
+
export declare const AUDIT_SCHEMA_VERSION: 1;
|
|
3
|
+
export declare class AuditReportError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function parseAuditReport(value: unknown, source?: string): AuditResult;
|
|
7
|
+
export declare function parseAuditReportText(text: string, source?: string): AuditResult;
|
|
8
|
+
//# sourceMappingURL=audit-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-report.d.ts","sourceRoot":"","sources":["../src/audit-report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AA4O/C,qBAAa,gBAAiB,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAInC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAiB,GAAG,WAAW,CAYrF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAiB,GAAG,WAAW,CAQvF"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const AUDIT_SCHEMA_VERSION = 1;
|
|
3
|
+
const nonNegativeNumber = z.number().finite().nonnegative();
|
|
4
|
+
const nonNegativeInteger = z.number().int().nonnegative();
|
|
5
|
+
const elementLocation = z.enum(["head", "body", "document"]);
|
|
6
|
+
const severity = z.enum(["info", "warning", "error"]);
|
|
7
|
+
const timingMark = z
|
|
8
|
+
.object({
|
|
9
|
+
atMs: nonNegativeNumber,
|
|
10
|
+
observedByByte: nonNegativeInteger,
|
|
11
|
+
})
|
|
12
|
+
.strict();
|
|
13
|
+
const elementSignal = timingMark
|
|
14
|
+
.extend({
|
|
15
|
+
value: z.string(),
|
|
16
|
+
location: elementLocation,
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
const robotsSignal = elementSignal
|
|
20
|
+
.extend({ audience: z.enum(["robots", "googlebot", "bingbot"]) })
|
|
21
|
+
.strict();
|
|
22
|
+
const socialMetadataSignal = elementSignal
|
|
23
|
+
.extend({
|
|
24
|
+
property: z.enum([
|
|
25
|
+
"og:title",
|
|
26
|
+
"og:type",
|
|
27
|
+
"og:url",
|
|
28
|
+
"og:image",
|
|
29
|
+
"og:description",
|
|
30
|
+
"twitter:card",
|
|
31
|
+
"twitter:title",
|
|
32
|
+
"twitter:description",
|
|
33
|
+
"twitter:image",
|
|
34
|
+
]),
|
|
35
|
+
})
|
|
36
|
+
.strict();
|
|
37
|
+
const jsonLdSignal = timingMark
|
|
38
|
+
.extend({
|
|
39
|
+
location: elementLocation,
|
|
40
|
+
valid: z.boolean().optional(),
|
|
41
|
+
types: z.array(z.string()),
|
|
42
|
+
bytes: nonNegativeInteger,
|
|
43
|
+
analysisLimit: z.string().optional(),
|
|
44
|
+
error: z.string().optional(),
|
|
45
|
+
})
|
|
46
|
+
.strict();
|
|
47
|
+
const documentSignals = z
|
|
48
|
+
.object({
|
|
49
|
+
title: elementSignal.optional(),
|
|
50
|
+
titles: z.array(elementSignal).optional(),
|
|
51
|
+
descriptions: z.array(elementSignal),
|
|
52
|
+
canonicals: z.array(elementSignal),
|
|
53
|
+
robots: z.array(robotsSignal),
|
|
54
|
+
socialMetadata: z.array(socialMetadataSignal).optional(),
|
|
55
|
+
h1s: z.array(elementSignal),
|
|
56
|
+
firstMainText: elementSignal.optional(),
|
|
57
|
+
jsonLd: z.array(jsonLdSignal),
|
|
58
|
+
headClosed: timingMark.optional(),
|
|
59
|
+
bodyStarted: timingMark.optional(),
|
|
60
|
+
documentClosed: timingMark.optional(),
|
|
61
|
+
})
|
|
62
|
+
.strict();
|
|
63
|
+
const agentProfile = z
|
|
64
|
+
.object({
|
|
65
|
+
key: z.string().min(1),
|
|
66
|
+
label: z.string().min(1),
|
|
67
|
+
userAgent: z.string(),
|
|
68
|
+
requiresHeadMetadata: z.boolean(),
|
|
69
|
+
})
|
|
70
|
+
.strict();
|
|
71
|
+
const redirectHop = z
|
|
72
|
+
.object({
|
|
73
|
+
url: z.string(),
|
|
74
|
+
status: z.number().int().min(100).max(599),
|
|
75
|
+
location: z.string(),
|
|
76
|
+
durationMs: nonNegativeNumber,
|
|
77
|
+
})
|
|
78
|
+
.strict();
|
|
79
|
+
const headerSnapshot = z
|
|
80
|
+
.object({
|
|
81
|
+
values: z.record(z.string(), z.string()),
|
|
82
|
+
setCookiePresent: z.boolean(),
|
|
83
|
+
})
|
|
84
|
+
.strict();
|
|
85
|
+
const probeTimings = z
|
|
86
|
+
.object({
|
|
87
|
+
headersMs: nonNegativeNumber,
|
|
88
|
+
firstByteMs: nonNegativeNumber.optional(),
|
|
89
|
+
completeMs: nonNegativeNumber.optional(),
|
|
90
|
+
})
|
|
91
|
+
.strict();
|
|
92
|
+
const probeResult = z
|
|
93
|
+
.object({
|
|
94
|
+
requestedUrl: z.string(),
|
|
95
|
+
finalUrl: z.string(),
|
|
96
|
+
agent: agentProfile,
|
|
97
|
+
status: z.number().int().min(100).max(599).optional(),
|
|
98
|
+
redirects: z.array(redirectHop),
|
|
99
|
+
headers: headerSnapshot,
|
|
100
|
+
timings: probeTimings,
|
|
101
|
+
bytesRead: nonNegativeInteger,
|
|
102
|
+
bodySha256: z.string().optional(),
|
|
103
|
+
signals: documentSignals,
|
|
104
|
+
completion: z.enum([
|
|
105
|
+
"complete",
|
|
106
|
+
"max-bytes-exceeded",
|
|
107
|
+
"timeout",
|
|
108
|
+
"network-error",
|
|
109
|
+
"invalid-response",
|
|
110
|
+
]),
|
|
111
|
+
error: z.string().optional(),
|
|
112
|
+
sample: z.number().int().positive().optional(),
|
|
113
|
+
})
|
|
114
|
+
.strict();
|
|
115
|
+
const targetExpectations = z
|
|
116
|
+
.object({
|
|
117
|
+
statuses: z.array(z.number().int().min(100).max(599)).min(1),
|
|
118
|
+
finalUrl: z.string().optional(),
|
|
119
|
+
requireTitle: z.boolean(),
|
|
120
|
+
requireDescription: z.boolean(),
|
|
121
|
+
requireCanonical: z.boolean(),
|
|
122
|
+
requireH1: z.boolean(),
|
|
123
|
+
requireMainText: z.boolean(),
|
|
124
|
+
requireOpenGraph: z.boolean().optional(),
|
|
125
|
+
requireTwitterCard: z.boolean().optional(),
|
|
126
|
+
maxFirstByteMs: z.number().positive().finite().optional(),
|
|
127
|
+
maxCriticalMs: z.number().positive().finite().optional(),
|
|
128
|
+
})
|
|
129
|
+
.strict();
|
|
130
|
+
const auditTarget = z
|
|
131
|
+
.object({
|
|
132
|
+
id: z.string().min(1).optional(),
|
|
133
|
+
url: z.string(),
|
|
134
|
+
expectations: targetExpectations,
|
|
135
|
+
})
|
|
136
|
+
.strict();
|
|
137
|
+
const timingStats = z
|
|
138
|
+
.object({
|
|
139
|
+
samples: nonNegativeInteger,
|
|
140
|
+
minMs: nonNegativeNumber,
|
|
141
|
+
medianMs: nonNegativeNumber,
|
|
142
|
+
p95Ms: nonNegativeNumber,
|
|
143
|
+
maxMs: nonNegativeNumber,
|
|
144
|
+
spreadMs: nonNegativeNumber,
|
|
145
|
+
})
|
|
146
|
+
.strict();
|
|
147
|
+
const stabilityTimings = z
|
|
148
|
+
.object({
|
|
149
|
+
headers: timingStats.optional(),
|
|
150
|
+
firstByte: timingStats.optional(),
|
|
151
|
+
criticalSignals: timingStats.optional(),
|
|
152
|
+
complete: timingStats.optional(),
|
|
153
|
+
})
|
|
154
|
+
.strict();
|
|
155
|
+
const stabilityVariants = z
|
|
156
|
+
.object({
|
|
157
|
+
completion: nonNegativeInteger,
|
|
158
|
+
status: nonNegativeInteger,
|
|
159
|
+
finalUrl: nonNegativeInteger,
|
|
160
|
+
redirectChain: nonNegativeInteger,
|
|
161
|
+
bodySha256: nonNegativeInteger,
|
|
162
|
+
metadataValues: nonNegativeInteger,
|
|
163
|
+
metadataLocations: nonNegativeInteger,
|
|
164
|
+
})
|
|
165
|
+
.strict();
|
|
166
|
+
const agentStability = z
|
|
167
|
+
.object({
|
|
168
|
+
agent: agentProfile,
|
|
169
|
+
samples: nonNegativeInteger,
|
|
170
|
+
complete: nonNegativeInteger,
|
|
171
|
+
incomplete: nonNegativeInteger,
|
|
172
|
+
timings: stabilityTimings,
|
|
173
|
+
variants: stabilityVariants,
|
|
174
|
+
})
|
|
175
|
+
.strict();
|
|
176
|
+
const finding = z
|
|
177
|
+
.object({
|
|
178
|
+
code: z.string().min(1),
|
|
179
|
+
severity,
|
|
180
|
+
message: z.string(),
|
|
181
|
+
url: z.string(),
|
|
182
|
+
agent: z.string().optional(),
|
|
183
|
+
evidence: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
|
|
184
|
+
})
|
|
185
|
+
.strict();
|
|
186
|
+
const targetAuditResult = z
|
|
187
|
+
.object({
|
|
188
|
+
target: auditTarget,
|
|
189
|
+
probes: z.array(probeResult),
|
|
190
|
+
findings: z.array(finding),
|
|
191
|
+
stability: z.array(agentStability).optional(),
|
|
192
|
+
})
|
|
193
|
+
.strict();
|
|
194
|
+
const auditSummary = z
|
|
195
|
+
.object({
|
|
196
|
+
targets: nonNegativeInteger,
|
|
197
|
+
probes: nonNegativeInteger,
|
|
198
|
+
errors: nonNegativeInteger,
|
|
199
|
+
warnings: nonNegativeInteger,
|
|
200
|
+
info: nonNegativeInteger,
|
|
201
|
+
incomplete: nonNegativeInteger,
|
|
202
|
+
})
|
|
203
|
+
.strict();
|
|
204
|
+
const auditReportSchema = z
|
|
205
|
+
.object({
|
|
206
|
+
schemaVersion: z.literal(AUDIT_SCHEMA_VERSION),
|
|
207
|
+
version: z.string().min(1),
|
|
208
|
+
generatedAt: z.string().min(1),
|
|
209
|
+
durationMs: nonNegativeNumber,
|
|
210
|
+
repeat: z.number().int().min(1).max(10).optional(),
|
|
211
|
+
results: z.array(targetAuditResult),
|
|
212
|
+
summary: auditSummary,
|
|
213
|
+
})
|
|
214
|
+
.strict();
|
|
215
|
+
export class AuditReportError extends Error {
|
|
216
|
+
constructor(message) {
|
|
217
|
+
super(message);
|
|
218
|
+
this.name = "AuditReportError";
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
export function parseAuditReport(value, source = "audit report") {
|
|
222
|
+
const parsed = auditReportSchema.safeParse(value);
|
|
223
|
+
if (!parsed.success) {
|
|
224
|
+
const detail = parsed.error.issues
|
|
225
|
+
.slice(0, 5)
|
|
226
|
+
.map((issue) => `${issue.path.join(".") || "report"}: ${issue.message}`)
|
|
227
|
+
.join("; ");
|
|
228
|
+
throw new AuditReportError(`Invalid ${source}: ${detail}`);
|
|
229
|
+
}
|
|
230
|
+
// The complete runtime schema above is the persisted counterpart of AuditResult.
|
|
231
|
+
return parsed.data;
|
|
232
|
+
}
|
|
233
|
+
export function parseAuditReportText(text, source = "audit report") {
|
|
234
|
+
let value;
|
|
235
|
+
try {
|
|
236
|
+
value = JSON.parse(text);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
throw new AuditReportError(`Could not parse ${source} as JSON.`);
|
|
240
|
+
}
|
|
241
|
+
return parseAuditReport(value, source);
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=audit-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-report.js","sourceRoot":"","sources":["../src/audit-report.ts"],"names":[],"mappings":"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"}
|
package/dist/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EAIX,aAAa,EAEd,MAAM,YAAY,CAAC;AAgHpB,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CA0E1E"}
|
package/dist/audit.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { analyzeTarget, summarizeAudit } from "./analyze.js";
|
|
2
|
+
import { AUDIT_SCHEMA_VERSION } from "./audit-report.js";
|
|
2
3
|
import { probeUrl } from "./http-probe.js";
|
|
3
4
|
import { redactAudit } from "./redact.js";
|
|
4
5
|
import { analyzeStability } from "./stability.js";
|
|
@@ -132,6 +133,7 @@ export async function runAudit(config) {
|
|
|
132
133
|
};
|
|
133
134
|
});
|
|
134
135
|
const audit = {
|
|
136
|
+
schemaVersion: AUDIT_SCHEMA_VERSION,
|
|
135
137
|
version: VERSION,
|
|
136
138
|
generatedAt: new Date().toISOString(),
|
|
137
139
|
durationMs: Math.round(performance.now() - started),
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiPA,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DhF"}
|