@juxtapose/core 0.4.0 → 0.6.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/dist/agent/handoff.d.ts +8 -1
- package/dist/agent/handoff.js +75 -7
- package/dist/agent/handoff.js.map +1 -1
- package/dist/analysis/affected.d.ts +37 -0
- package/dist/analysis/affected.js +97 -22
- package/dist/analysis/affected.js.map +1 -1
- package/dist/analysis/cause.d.ts +32 -0
- package/dist/analysis/cause.js +187 -0
- package/dist/analysis/cause.js.map +1 -0
- package/dist/baseline/approve.d.ts +24 -0
- package/dist/baseline/approve.js +54 -0
- package/dist/baseline/approve.js.map +1 -0
- package/dist/baseline/git-store.d.ts +4 -0
- package/dist/baseline/git-store.js +22 -0
- package/dist/baseline/git-store.js.map +1 -1
- package/dist/browser/acquire.d.ts +15 -0
- package/dist/browser/acquire.js +26 -0
- package/dist/browser/acquire.js.map +1 -0
- package/dist/browser/browser.d.ts +53 -0
- package/dist/browser/browser.js +122 -0
- package/dist/browser/browser.js.map +1 -0
- package/dist/browser/cdp.d.ts +81 -0
- package/dist/browser/cdp.js +230 -0
- package/dist/browser/cdp.js.map +1 -0
- package/dist/browser/daemon/client.d.ts +145 -0
- package/dist/browser/daemon/client.js +764 -0
- package/dist/browser/daemon/client.js.map +1 -0
- package/dist/browser/daemon/state.d.ts +99 -0
- package/dist/browser/daemon/state.js +297 -0
- package/dist/browser/daemon/state.js.map +1 -0
- package/dist/browser/daemon/supervisor-main.d.ts +1 -0
- package/dist/browser/daemon/supervisor-main.js +54 -0
- package/dist/browser/daemon/supervisor-main.js.map +1 -0
- package/dist/browser/daemon/supervisor.d.ts +37 -0
- package/dist/browser/daemon/supervisor.js +777 -0
- package/dist/browser/daemon/supervisor.js.map +1 -0
- package/dist/{capture/launch.d.ts → browser/flags.d.ts} +19 -1
- package/dist/browser/flags.js +146 -0
- package/dist/browser/flags.js.map +1 -0
- package/dist/browser/index.d.ts +14 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/install.d.ts +33 -0
- package/dist/browser/install.js +167 -0
- package/dist/browser/install.js.map +1 -0
- package/dist/browser/launch.d.ts +37 -0
- package/dist/browser/launch.js +254 -0
- package/dist/browser/launch.js.map +1 -0
- package/dist/browser/page.d.ts +125 -0
- package/dist/browser/page.js +564 -0
- package/dist/browser/page.js.map +1 -0
- package/dist/browser/pins.d.ts +12 -0
- package/dist/browser/pins.js +57 -0
- package/dist/browser/pins.js.map +1 -0
- package/dist/browser/private-dir.d.ts +7 -0
- package/dist/browser/private-dir.js +24 -0
- package/dist/browser/private-dir.js.map +1 -0
- package/dist/browser/resolve.d.ts +31 -0
- package/dist/browser/resolve.js +126 -0
- package/dist/browser/resolve.js.map +1 -0
- package/dist/browser/selectors.d.ts +10 -0
- package/dist/browser/selectors.js +60 -0
- package/dist/browser/selectors.js.map +1 -0
- package/dist/browser/transport.d.ts +51 -0
- package/dist/browser/transport.js +124 -0
- package/dist/browser/transport.js.map +1 -0
- package/dist/browser/types.d.ts +4 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/browser/zip.d.ts +27 -0
- package/dist/browser/zip.js +241 -0
- package/dist/browser/zip.js.map +1 -0
- package/dist/capture/capture.d.ts +7 -1
- package/dist/capture/capture.js +25 -8
- package/dist/capture/capture.js.map +1 -1
- package/dist/capture/env.d.ts +1 -1
- package/dist/capture/pool.d.ts +1 -1
- package/dist/capture/pool.js +41 -8
- package/dist/capture/pool.js.map +1 -1
- package/dist/capture/settle.d.ts +1 -1
- package/dist/capture/settle.js +2 -0
- package/dist/capture/settle.js.map +1 -1
- package/dist/capture/snap.d.ts +43 -0
- package/dist/capture/snap.js +103 -0
- package/dist/capture/snap.js.map +1 -0
- package/dist/capture/structure.d.ts +77 -0
- package/dist/capture/structure.js +498 -0
- package/dist/capture/structure.js.map +1 -0
- package/dist/diff/compare.d.ts +19 -0
- package/dist/diff/compare.js +19 -0
- package/dist/diff/compare.js.map +1 -0
- package/dist/diff/crops.d.ts +26 -0
- package/dist/diff/crops.js +92 -0
- package/dist/diff/crops.js.map +1 -0
- package/dist/diff/structural/classify.d.ts +29 -0
- package/dist/diff/structural/classify.js +113 -0
- package/dist/diff/structural/classify.js.map +1 -0
- package/dist/diff/structural/coverage.d.ts +11 -0
- package/dist/diff/structural/coverage.js +37 -0
- package/dist/diff/structural/coverage.js.map +1 -0
- package/dist/diff/structural/deltas.d.ts +29 -0
- package/dist/diff/structural/deltas.js +218 -0
- package/dist/diff/structural/deltas.js.map +1 -0
- package/dist/diff/structural/disambiguate.d.ts +3 -0
- package/dist/diff/structural/disambiguate.js +89 -0
- package/dist/diff/structural/disambiguate.js.map +1 -0
- package/dist/diff/structural/label.d.ts +15 -0
- package/dist/diff/structural/label.js +64 -0
- package/dist/diff/structural/label.js.map +1 -0
- package/dist/diff/structural/match.d.ts +13 -0
- package/dist/diff/structural/match.js +135 -0
- package/dist/diff/structural/match.js.map +1 -0
- package/dist/diff/structural/shift.d.ts +2 -0
- package/dist/diff/structural/shift.js +144 -0
- package/dist/diff/structural/shift.js.map +1 -0
- package/dist/diff/structural/summary.d.ts +31 -0
- package/dist/diff/structural/summary.js +420 -0
- package/dist/diff/structural/summary.js.map +1 -0
- package/dist/diff/structural.d.ts +40 -0
- package/dist/diff/structural.js +219 -0
- package/dist/diff/structural.js.map +1 -0
- package/dist/index.d.ts +28 -4
- package/dist/index.js +32 -3
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +1 -1
- package/dist/platforms/urls.d.ts +3 -0
- package/dist/platforms/urls.js +89 -0
- package/dist/platforms/urls.js.map +1 -0
- package/dist/report/comment.js +9 -3
- package/dist/report/comment.js.map +1 -1
- package/dist/report/format.d.ts +18 -0
- package/dist/report/format.js +20 -0
- package/dist/report/format.js.map +1 -1
- package/dist/report/html.js +2 -2
- package/dist/report/html.js.map +1 -1
- package/dist/run/groups.d.ts +2 -0
- package/dist/run/groups.js +45 -0
- package/dist/run/groups.js.map +1 -0
- package/dist/run/run.d.ts +6 -2
- package/dist/run/run.js +74 -6
- package/dist/run/run.js.map +1 -1
- package/dist/shell-quote.d.ts +2 -0
- package/dist/shell-quote.js +10 -0
- package/dist/shell-quote.js.map +1 -0
- package/dist/types.d.ts +201 -5
- package/dist/types.js +0 -2
- package/dist/types.js.map +1 -1
- package/dist/url-platform.d.ts +2 -2
- package/dist/url-platform.js +2 -2
- package/dist/url-platform.js.map +1 -1
- package/package.json +6 -10
- package/dist/capture/launch.js +0 -56
- package/dist/capture/launch.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { DiffOutput } from './diff.js';
|
|
2
|
+
import type { Cause, ChangedRegion, StructureSnapshot, StructuralVerdict } from '../types.js';
|
|
3
|
+
export interface StructuralDiffInput {
|
|
4
|
+
baseline?: StructureSnapshot;
|
|
5
|
+
current?: StructureSnapshot;
|
|
6
|
+
/** The two encoded images are byte-identical (equal hashes). Only this
|
|
7
|
+
* makes a verdict `identical`: a pixel diff with 0 mismatches can still
|
|
8
|
+
* hide a real change below its tolerance. It implies no changed regions
|
|
9
|
+
* and no dimension mismatch; if `pixels` contradicts it, the pixel
|
|
10
|
+
* evidence wins and the verdict is not `identical`. */
|
|
11
|
+
imagesIdentical: boolean;
|
|
12
|
+
pixels: Pick<DiffOutput, 'changedRegions' | 'dimensionMismatch'>;
|
|
13
|
+
/** The exact tier-3 command; core does not know how the CLI is spelled. */
|
|
14
|
+
escalate: {
|
|
15
|
+
command: string;
|
|
16
|
+
};
|
|
17
|
+
/** From `jux run --since`; `jux diff` has no changed-file set. */
|
|
18
|
+
cause?: Cause;
|
|
19
|
+
}
|
|
20
|
+
export declare const MAX_DELTAS = 20;
|
|
21
|
+
/** JSON.stringify(verdict).length never exceeds this. */
|
|
22
|
+
export declare const MAX_VERDICT = 1500;
|
|
23
|
+
/** `cause.files` is capped here as well as in the index: the budget is a
|
|
24
|
+
* guarantee for any input. */
|
|
25
|
+
export declare const MAX_CAUSE_FILES = 5;
|
|
26
|
+
/** Longest `cause.files[].path`. The tail is kept: the file name is what a
|
|
27
|
+
* reader greps for; a 10-deep monorepo prefix is not. */
|
|
28
|
+
export declare const MAX_CAUSE_PATH = 80;
|
|
29
|
+
/** The verdict plus every unexplained region: the verdict's own list is the
|
|
30
|
+
* prefix that fits the budget, and crops must order and label from the whole. */
|
|
31
|
+
export declare function structuralDiffWithCoverage(input: StructuralDiffInput): {
|
|
32
|
+
verdict: StructuralVerdict;
|
|
33
|
+
unexplainedRegions: ChangedRegion[];
|
|
34
|
+
/** One box per element the deltas name, in delta order: the union of its
|
|
35
|
+
* old and new rects, rounded outward to whole px. What `--crops` shows
|
|
36
|
+
* when the pixel diff marked nothing (sub-threshold). */
|
|
37
|
+
elementRegions: ChangedRegion[];
|
|
38
|
+
};
|
|
39
|
+
/** The verdict alone; what every caller but `--crops` wants. */
|
|
40
|
+
export declare function structuralDiff(input: StructuralDiffInput): StructuralVerdict;
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
// Structural diff → tier-0 verdict. Pure, no browser, no I/O.
|
|
2
|
+
//
|
|
3
|
+
// Composition: match → facts → shifts → unique labels → coverage → classify → summary, then a
|
|
4
|
+
// signature over the abstracted facts. Every list is sorted by a documented
|
|
5
|
+
// key and the result is built as one literal, so the same inputs always
|
|
6
|
+
// serialize to the same bytes (the CLI promises that in its JSON contract).
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { classify, computeFlags } from './structural/classify.js';
|
|
9
|
+
import { computeCoverage } from './structural/coverage.js';
|
|
10
|
+
import { disambiguate } from './structural/disambiguate.js';
|
|
11
|
+
import { compareCodeUnits, computeFacts } from './structural/deltas.js';
|
|
12
|
+
import { matchElements } from './structural/match.js';
|
|
13
|
+
import { synthesizeShifts } from './structural/shift.js';
|
|
14
|
+
import { buildChange, buildSummary } from './structural/summary.js';
|
|
15
|
+
export const MAX_DELTAS = 20;
|
|
16
|
+
/** JSON.stringify(verdict).length never exceeds this. */
|
|
17
|
+
export const MAX_VERDICT = 1500;
|
|
18
|
+
/** `cause.files` is capped here as well as in the index: the budget is a
|
|
19
|
+
* guarantee for any input. */
|
|
20
|
+
export const MAX_CAUSE_FILES = 5;
|
|
21
|
+
/** Longest `cause.files[].path`. The tail is kept: the file name is what a
|
|
22
|
+
* reader greps for; a 10-deep monorepo prefix is not. */
|
|
23
|
+
export const MAX_CAUSE_PATH = 80;
|
|
24
|
+
/** The verdict plus every unexplained region: the verdict's own list is the
|
|
25
|
+
* prefix that fits the budget, and crops must order and label from the whole. */
|
|
26
|
+
export function structuralDiffWithCoverage(input) {
|
|
27
|
+
const { baseline, current, pixels, imagesIdentical } = input;
|
|
28
|
+
const comparable = baseline !== undefined &&
|
|
29
|
+
current !== undefined &&
|
|
30
|
+
!pixels.dimensionMismatch &&
|
|
31
|
+
baseline.viewport.width === current.viewport.width &&
|
|
32
|
+
baseline.viewport.height === current.viewport.height;
|
|
33
|
+
// With a truncated side, the elements past the cap exist but were not
|
|
34
|
+
// recorded; reporting them as removed would be a lie the summary already
|
|
35
|
+
// tells more honestly as a count.
|
|
36
|
+
// Labels are made unique last, so only elements still named after the
|
|
37
|
+
// shift collapse — the ones a reader will see — are renamed.
|
|
38
|
+
const facts = comparable
|
|
39
|
+
? disambiguate(synthesizeShifts(computeFacts(baseline, current, matchElements(baseline, current)).filter((f) => !(f.delta.kind === 'removed' && current.truncated) &&
|
|
40
|
+
!(f.delta.kind === 'added' && baseline.truncated))), baseline, current)
|
|
41
|
+
: [];
|
|
42
|
+
const cov = computeCoverage(pixels.changedRegions, facts);
|
|
43
|
+
const ctx = {
|
|
44
|
+
baseline,
|
|
45
|
+
current,
|
|
46
|
+
facts,
|
|
47
|
+
explained: cov.explained,
|
|
48
|
+
unexplainedRegions: cov.unexplainedRegions,
|
|
49
|
+
pixels: {
|
|
50
|
+
imagesIdentical,
|
|
51
|
+
dimensionMismatch: pixels.dimensionMismatch,
|
|
52
|
+
hasRegions: cov.regionCount > 0,
|
|
53
|
+
subThreshold: !imagesIdentical && !pixels.dimensionMismatch && cov.regionCount === 0,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const { classification, styleTags } = classify(ctx);
|
|
57
|
+
const flags = computeFlags(ctx);
|
|
58
|
+
const deltas = facts.slice(0, MAX_DELTAS).map((f) => f.delta);
|
|
59
|
+
const summary = buildSummary({
|
|
60
|
+
classification,
|
|
61
|
+
styleTags,
|
|
62
|
+
deltas,
|
|
63
|
+
deltaCount: facts.length,
|
|
64
|
+
regionCount: cov.regionCount,
|
|
65
|
+
unexplainedRegions: cov.unexplainedRegions,
|
|
66
|
+
flags,
|
|
67
|
+
imagesIdentical,
|
|
68
|
+
baseline,
|
|
69
|
+
current,
|
|
70
|
+
});
|
|
71
|
+
// The same clauses with `el` swapped for role|tag, so it reads the same on
|
|
72
|
+
// every page that made the change. Absent when there is nothing to state.
|
|
73
|
+
const change = facts.length > 0
|
|
74
|
+
? buildChange({
|
|
75
|
+
classification,
|
|
76
|
+
styleTags,
|
|
77
|
+
deltas: facts
|
|
78
|
+
.slice(0, MAX_DELTAS)
|
|
79
|
+
.map((f) => f.delta.kind === 'shift'
|
|
80
|
+
? { ...f.delta, after: f.abstract }
|
|
81
|
+
: { ...f.delta, el: f.abstract }),
|
|
82
|
+
deltaCount: facts.length,
|
|
83
|
+
regionCount: 0,
|
|
84
|
+
unexplainedRegions: [],
|
|
85
|
+
flags,
|
|
86
|
+
imagesIdentical,
|
|
87
|
+
})
|
|
88
|
+
: undefined;
|
|
89
|
+
const sig = signature(classification, facts);
|
|
90
|
+
// Fitted here, not trusted from the caller: the budget is a guarantee for
|
|
91
|
+
// any input, and the index's cap is a courtesy.
|
|
92
|
+
const cause = input.cause && fitCause(input.cause);
|
|
93
|
+
// One literal, one key order: the CLI's byte-stability rests on it.
|
|
94
|
+
const build = (ds, regions) => ({
|
|
95
|
+
schema: 'juxtapose.verdict/v1',
|
|
96
|
+
classification,
|
|
97
|
+
styleTags,
|
|
98
|
+
summary,
|
|
99
|
+
...(change ? { change } : {}),
|
|
100
|
+
deltas: ds,
|
|
101
|
+
deltaCount: facts.length,
|
|
102
|
+
coverage: cov.coverage,
|
|
103
|
+
explained: cov.explained,
|
|
104
|
+
unexplainedRegions: regions,
|
|
105
|
+
flags,
|
|
106
|
+
...(cause ? { cause } : {}),
|
|
107
|
+
signature: sig,
|
|
108
|
+
escalate: { command: input.escalate.command },
|
|
109
|
+
});
|
|
110
|
+
// The tier-0 budget is a guarantee, not a corpus statistic. Labels (60)
|
|
111
|
+
// and values (200) are capped, but one delta is still 70–400 chars, so 20
|
|
112
|
+
// of them (or a diff with hundreds of regions) would pass 1,500: one button
|
|
113
|
+
// with 10 realistic style changes measured 1,701. Each list keeps the
|
|
114
|
+
// prefix that fits — deltas first, they are the "what" — while deltaCount,
|
|
115
|
+
// coverage and explained still describe the whole. Holds for any input
|
|
116
|
+
// except an escalate command that alone exceeds the budget.
|
|
117
|
+
let room = MAX_VERDICT - JSON.stringify(build([], [])).length;
|
|
118
|
+
const fit = (items) => {
|
|
119
|
+
const out = [];
|
|
120
|
+
for (const x of items) {
|
|
121
|
+
const n = JSON.stringify(x).length + (out.length > 0 ? 1 : 0);
|
|
122
|
+
if (n > room)
|
|
123
|
+
break;
|
|
124
|
+
room -= n;
|
|
125
|
+
out.push(x);
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
};
|
|
129
|
+
const kept = fit(deltas);
|
|
130
|
+
return {
|
|
131
|
+
verdict: build(kept, fit(cov.unexplainedRegions)),
|
|
132
|
+
unexplainedRegions: cov.unexplainedRegions,
|
|
133
|
+
elementRegions: elementRegions(facts),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** Facts are grouped by element identity (`source`), not label: two
|
|
137
|
+
* `div.card`s are two boxes. A shift carries its anchor's source but its
|
|
138
|
+
* run's rects, so it is a box of its own rather than swelling the anchor's.
|
|
139
|
+
* Zero-area unions carry no pixels and are dropped. */
|
|
140
|
+
function elementRegions(facts) {
|
|
141
|
+
const boxes = new Map();
|
|
142
|
+
for (const f of facts) {
|
|
143
|
+
const key = `${f.delta.kind === 'shift' ? 'shift:' : ''}${f.source.side}:${f.source.index}`;
|
|
144
|
+
for (const r of f.rects) {
|
|
145
|
+
const b = boxes.get(key);
|
|
146
|
+
const x0 = Math.floor(r.x);
|
|
147
|
+
const y0 = Math.floor(r.y);
|
|
148
|
+
const x1 = Math.ceil(r.x + r.w);
|
|
149
|
+
const y1 = Math.ceil(r.y + r.h);
|
|
150
|
+
boxes.set(key, b
|
|
151
|
+
? {
|
|
152
|
+
x0: Math.min(b.x0, x0),
|
|
153
|
+
y0: Math.min(b.y0, y0),
|
|
154
|
+
x1: Math.max(b.x1, x1),
|
|
155
|
+
y1: Math.max(b.y1, y1),
|
|
156
|
+
}
|
|
157
|
+
: { x0, y0, x1, y1 });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return [...boxes.values()]
|
|
161
|
+
.map((b) => ({ x: b.x0, y: b.y0, width: b.x1 - b.x0, height: b.y1 - b.y0 }))
|
|
162
|
+
.filter((r) => r.width > 0 && r.height > 0);
|
|
163
|
+
}
|
|
164
|
+
/** The verdict alone; what every caller but `--crops` wants. */
|
|
165
|
+
export function structuralDiff(input) {
|
|
166
|
+
return structuralDiffWithCoverage(input).verdict;
|
|
167
|
+
}
|
|
168
|
+
/** sha256 of the classification, then the facts with each element reduced
|
|
169
|
+
* to role|tag and the values kept: "every button background
|
|
170
|
+
* #2563eb→#1d4ed8" hashes the same on any page that made that change. The
|
|
171
|
+
* classification leads so that verdicts with no facts — identical, a
|
|
172
|
+
* canvas redraw, a size change — do not all share one signature. Facts are
|
|
173
|
+
* sorted (by code unit) so order of discovery cannot leak in. */
|
|
174
|
+
function signature(classification, facts) {
|
|
175
|
+
const items = facts
|
|
176
|
+
.map((f) => {
|
|
177
|
+
const d = f.delta;
|
|
178
|
+
const rest = d.kind === 'text' || d.kind === 'style' || d.kind === 'attr'
|
|
179
|
+
? [
|
|
180
|
+
d.kind === 'style' ? d.prop : d.kind === 'attr' ? d.attr : 'text',
|
|
181
|
+
d.from,
|
|
182
|
+
d.to,
|
|
183
|
+
]
|
|
184
|
+
: d.kind === 'moved'
|
|
185
|
+
? ['moved', d.dx, d.dy]
|
|
186
|
+
: d.kind === 'resized'
|
|
187
|
+
? ['resized', d.dw, d.dh]
|
|
188
|
+
: d.kind === 'shift'
|
|
189
|
+
? ['shift', d.dx, d.dy, d.count]
|
|
190
|
+
: [d.kind];
|
|
191
|
+
return JSON.stringify([f.abstract, ...rest]);
|
|
192
|
+
})
|
|
193
|
+
.sort(compareCodeUnits);
|
|
194
|
+
return createHash('sha256')
|
|
195
|
+
.update([classification, ...items].join('\n'))
|
|
196
|
+
.digest('hex');
|
|
197
|
+
}
|
|
198
|
+
function fitCause(c) {
|
|
199
|
+
return {
|
|
200
|
+
kind: c.kind,
|
|
201
|
+
files: c.files.slice(0, MAX_CAUSE_FILES).map((f) => ({
|
|
202
|
+
path: clipHead(f.path, MAX_CAUSE_PATH),
|
|
203
|
+
distance: f.distance,
|
|
204
|
+
})),
|
|
205
|
+
...(c.partial ? { partial: true } : {}),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/** `…` plus at most the last `max - 1` code units, never starting on the
|
|
209
|
+
* low half of a surrogate pair: a lone surrogate is not valid UTF-8. */
|
|
210
|
+
function clipHead(s, max) {
|
|
211
|
+
if (s.length <= max)
|
|
212
|
+
return s;
|
|
213
|
+
let from = s.length - (max - 1);
|
|
214
|
+
const c = s.charCodeAt(from);
|
|
215
|
+
if (c >= 0xdc00 && c <= 0xdfff)
|
|
216
|
+
from++;
|
|
217
|
+
return '…' + s.slice(from);
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=structural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/diff/structural.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,8FAA8F;AAC9F,4EAA4E;AAC5E,wEAAwE;AACxE,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAwB,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAa,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAkBpE,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAChC;+BAC+B;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC;0DAC0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;kFACkF;AAClF,MAAM,UAAU,0BAA0B,CAAC,KAA0B;IAQnE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC7D,MAAM,UAAU,GACd,QAAQ,KAAK,SAAS;QACtB,OAAO,KAAK,SAAS;QACrB,CAAC,MAAM,CAAC,iBAAiB;QACzB,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK;QAClD,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAEvD,sEAAsE;IACtE,yEAAyE;IACzE,kCAAkC;IAClC,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,KAAK,GAAW,UAAU;QAC9B,CAAC,CAAC,YAAY,CACV,gBAAgB,CACd,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CACtE,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;YAClD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CACpD,CACF,EACD,QAAQ,EACR,OAAO,CACR;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAoB;QAC3B,QAAQ;QACR,OAAO;QACP,KAAK;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,MAAM,EAAE;YACN,eAAe;YACf,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,UAAU,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC;YAC/B,YAAY,EACV,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,WAAW,KAAK,CAAC;SACzE;KACF,CAAC;IACF,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAY,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,YAAY,CAAC;QAC3B,cAAc;QACd,SAAS;QACT,MAAM;QACN,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,KAAK;QACL,eAAe;QACf,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;IAEH,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,WAAW,CAAC;YACV,cAAc;YACd,SAAS;YACT,MAAM,EAAE,KAAK;iBACV,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACnC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CACnC;YACH,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,WAAW,EAAE,CAAC;YACd,kBAAkB,EAAE,EAAE;YACtB,KAAK;YACL,eAAe;SAChB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,gDAAgD;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,oEAAoE;IACpE,MAAM,KAAK,GAAG,CAAC,EAAW,EAAE,OAAwB,EAAqB,EAAE,CAAC,CAAC;QAC3E,MAAM,EAAE,sBAAsB;QAC9B,cAAc;QACd,SAAS;QACT,OAAO;QACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,kBAAkB,EAAE,OAAO;QAC3B,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;KAC9C,CAAC,CAAC;IAEH,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,4DAA4D;IAC5D,IAAI,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAI,KAAU,EAAO,EAAE;QACjC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,GAAG,IAAI;gBAAE,MAAM;YACpB,IAAI,IAAI,CAAC,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACjD,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;wDAGwD;AACxD,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8D,CAAC;IACpF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5F,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC,GAAG,CACP,GAAG,EACH,CAAC;gBACC,CAAC,CAAC;oBACE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;oBACtB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;oBACtB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;oBACtB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;iBACvB;gBACH,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AAED;;;;;kEAKkE;AAClE,SAAS,SAAS,CAAC,cAA8B,EAAE,KAAa;IAC9D,MAAM,KAAK,GAAG,KAAK;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAC1D,CAAC,CAAC;gBACE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;gBACjE,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,EAAE;aACL;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;gBAClB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS;oBACpB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;oBACzB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;wBAClB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;wBAChC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;SACD,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAQ;IACxB,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC;YACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACH,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;yEACyE;AACzE,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACtC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM;QAAE,IAAI,EAAE,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,40 @@
|
|
|
1
|
-
export type { StoryParams, Viewport, StoryManifest, Snapshot, ChangedRegion, DiffStatus, DiffResult, RunReport, ApprovalMeta, BaselineEntry, BaselineManifest, ProjectConfig, StorageConfig, BaselineStore, } from './types.js';
|
|
1
|
+
export type { StoryParams, Viewport, StoryManifest, Snapshot, StructureSnapshot, StructureElement, StructureRect, CaptureEnv, ChangedRegion, Delta, Classification, StyleTag, Flag, StructuralVerdict, Cause, CauseKind, DiffStatus, DiffResult, RunReport, RunGroup, ApprovalMeta, BaselineEntry, BaselineManifest, ProjectConfig, UrlEntry, StorageConfig, BaselineStore, } from './types.js';
|
|
2
2
|
export type { Platform, EnumerateTarget, SettleContext } from './platform.js';
|
|
3
3
|
export { navigateToStory } from './url-platform.js';
|
|
4
|
+
export { createUrlPlatform } from './platforms/urls.js';
|
|
4
5
|
export { waitForSelector } from './capture/settle.js';
|
|
5
6
|
export { GitBaselineStore, encodeStoryId } from './baseline/git-store.js';
|
|
6
7
|
export { hashImage } from './baseline/status.js';
|
|
7
8
|
export type { BaselineStatus, AncestryCheck } from './baseline/status.js';
|
|
8
9
|
export { createAncestryCheck, alwaysAncestor } from './git/ancestry.js';
|
|
10
|
+
export { encodeStructure, decodeStructure } from './capture/structure.js';
|
|
11
|
+
export { approveCapture, readRunStructure, type RunStructure, } from './baseline/approve.js';
|
|
12
|
+
export { structuralDiff, structuralDiffWithCoverage, type StructuralDiffInput, } from './diff/structural.js';
|
|
13
|
+
export { compareSnaps, type SnapSide, type SnapComparison } from './diff/compare.js';
|
|
14
|
+
export { renderCrops, MAX_CROPS, MAX_CROP_SIDE, type Crop } from './diff/crops.js';
|
|
15
|
+
export { describeDelta, describeDeltas } from './diff/structural/summary.js';
|
|
16
|
+
export { compareCodeUnits } from './diff/structural/deltas.js';
|
|
17
|
+
export { shellQuote } from './shell-quote.js';
|
|
9
18
|
export { runCapture, DEFAULT_VIEWPORT, type RunOptions, type RunArtifact, } from './run/run.js';
|
|
19
|
+
export { computeGroups } from './run/groups.js';
|
|
10
20
|
export { phases, formatPhases, type Phases } from './run/phases.js';
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
21
|
+
export { snapPage, snapPages, type SnapOptions, type SnapResult, type SnapPagesOptions, type SnapPageResult, } from './capture/snap.js';
|
|
22
|
+
export { deterministicLaunchOptions, type LaunchOptions } from './browser/flags.js';
|
|
23
|
+
export { chromeArgs, PARITY_CHROMIUM_ARGS } from './browser/flags.js';
|
|
24
|
+
export type { Browser, BrowserContext } from './browser/browser.js';
|
|
25
|
+
export { BrowserDiedError } from './browser/browser.js';
|
|
26
|
+
export { TargetClosedError } from './browser/cdp.js';
|
|
27
|
+
export { PageCrashedError, TimeoutError, type Page } from './browser/page.js';
|
|
28
|
+
export { acquireBrowser, type AcquireOptions } from './browser/acquire.js';
|
|
29
|
+
export { connectWarmBrowser, daemonEnabled, daemonIdleMinutes, daemonKeyFor, daemonStatus, listDaemons, startDaemon, stopAllDaemons, stopDaemon, CI_ENV_VARS, type WarmOptions, type SpawnArgs, type DaemonStop, type StopResult, type CommandReader, } from './browser/daemon/client.js';
|
|
30
|
+
export { daemonSupported, type DaemonState } from './browser/daemon/state.js';
|
|
31
|
+
export { resolveChrome, juxCacheDir, juxStateDir, noBrowserMessage, NO_BROWSER_MESSAGE, type ChromeSource, type ResolvedChrome, } from './browser/resolve.js';
|
|
32
|
+
export { installChrome, proxyReexecArgs, stderrProgress, type InstallOptions, type InstallResult, } from './browser/install.js';
|
|
33
|
+
export { CHROME_VERSION, CHROME_PINS, chromePlatform } from './browser/pins.js';
|
|
34
|
+
export { assertCssSelector } from './browser/selectors.js';
|
|
35
|
+
export { resolveAffected, resolveAffectedFromPaths, gitIsCommit, type AffectedOptions, type AffectedResult, } from './analysis/affected.js';
|
|
36
|
+
export { buildCauseIndex, prepareCause, type CauseIndex, type CauseSources, type ChangedFile, } from './analysis/cause.js';
|
|
37
|
+
export { buildHandoffPrompt, describeCause, type HandoffPayload, } from './agent/handoff.js';
|
|
14
38
|
export { buildComment, type CommentOptions } from './report/comment.js';
|
|
15
39
|
export { buildHtmlReport, type HtmlReportOptions } from './report/html.js';
|
|
16
40
|
export { formatPercent } from './report/format.js';
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// helpers below are what you need. If something is missing for that, the seam
|
|
11
11
|
// needs widening — say so rather than reaching into the package.
|
|
12
12
|
export { navigateToStory } from './url-platform.js';
|
|
13
|
+
export { createUrlPlatform } from './platforms/urls.js';
|
|
13
14
|
export { waitForSelector } from './capture/settle.js';
|
|
14
15
|
// Implementing a baseline store. `encodeStoryId` matters for anyone building
|
|
15
16
|
// keys from a story id — they are platform-supplied and not path-safe.
|
|
@@ -18,14 +19,42 @@ export { GitBaselineStore, encodeStoryId } from './baseline/git-store.js';
|
|
|
18
19
|
// must use the same function the manifest was written with, not its own copy.
|
|
19
20
|
export { hashImage } from './baseline/status.js';
|
|
20
21
|
export { createAncestryCheck, alwaysAncestor } from './git/ancestry.js';
|
|
22
|
+
// Structure sidecars: read and write the gzipped snapshot beside an image.
|
|
23
|
+
export { encodeStructure, decodeStructure } from './capture/structure.js';
|
|
24
|
+
// Approving a run capture with its sidecar: every approval path (CLI approve,
|
|
25
|
+
// init, the review server) goes through this so they cannot disagree.
|
|
26
|
+
export { approveCapture, readRunStructure, } from './baseline/approve.js';
|
|
27
|
+
// Structural diff: two sidecars + a pixel diff → the tier-0 verdict.
|
|
28
|
+
export { structuralDiff, structuralDiffWithCoverage, } from './diff/structural.js';
|
|
29
|
+
export { compareSnaps } from './diff/compare.js';
|
|
30
|
+
// Tier-3 crops: two images + regions → side-by-side PNG strips, no browser.
|
|
31
|
+
export { renderCrops, MAX_CROPS, MAX_CROP_SIDE } from './diff/crops.js';
|
|
32
|
+
export { describeDelta, describeDeltas } from './diff/structural/summary.js';
|
|
33
|
+
export { compareCodeUnits } from './diff/structural/deltas.js';
|
|
34
|
+
export { shellQuote } from './shell-quote.js';
|
|
21
35
|
// Driving a run.
|
|
22
36
|
export { runCapture, DEFAULT_VIEWPORT, } from './run/run.js';
|
|
37
|
+
export { computeGroups } from './run/groups.js';
|
|
23
38
|
// Per-phase timings, so a slow run can say which phase was slow.
|
|
24
39
|
export { phases, formatPhases } from './run/phases.js';
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
40
|
+
export { snapPage, snapPages, } from './capture/snap.js';
|
|
41
|
+
export { deterministicLaunchOptions } from './browser/flags.js';
|
|
42
|
+
export { chromeArgs, PARITY_CHROMIUM_ARGS } from './browser/flags.js';
|
|
43
|
+
export { BrowserDiedError } from './browser/browser.js';
|
|
44
|
+
export { TargetClosedError } from './browser/cdp.js';
|
|
45
|
+
export { PageCrashedError, TimeoutError } from './browser/page.js';
|
|
46
|
+
export { acquireBrowser } from './browser/acquire.js';
|
|
47
|
+
export { connectWarmBrowser, daemonEnabled, daemonIdleMinutes, daemonKeyFor, daemonStatus, listDaemons, startDaemon, stopAllDaemons, stopDaemon, CI_ENV_VARS, } from './browser/daemon/client.js';
|
|
48
|
+
export { daemonSupported } from './browser/daemon/state.js';
|
|
49
|
+
export { resolveChrome, juxCacheDir, juxStateDir, noBrowserMessage, NO_BROWSER_MESSAGE, } from './browser/resolve.js';
|
|
50
|
+
export { installChrome, proxyReexecArgs, stderrProgress, } from './browser/install.js';
|
|
51
|
+
export { CHROME_VERSION, CHROME_PINS, chromePlatform } from './browser/pins.js';
|
|
52
|
+
export { assertCssSelector } from './browser/selectors.js';
|
|
53
|
+
export { resolveAffected, resolveAffectedFromPaths, gitIsCommit, } from './analysis/affected.js';
|
|
54
|
+
// Cause: the story's import closure intersected with the changed files.
|
|
55
|
+
export { buildCauseIndex, prepareCause, } from './analysis/cause.js';
|
|
27
56
|
// Reporting on one.
|
|
28
|
-
export { buildHandoffPrompt } from './agent/handoff.js';
|
|
57
|
+
export { buildHandoffPrompt, describeCause, } from './agent/handoff.js';
|
|
29
58
|
export { buildComment } from './report/comment.js';
|
|
30
59
|
export { buildHtmlReport } from './report/html.js';
|
|
31
60
|
export { formatPercent } from './report/format.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,6DAA6D;AAC7D,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,iEAAiE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// The null platform: an explicit list of URLs, no workbench (issue #11).
|
|
2
|
+
//
|
|
3
|
+
// Everything a workbench adapter contributes — enumeration, a render signal,
|
|
4
|
+
// componentPath — is absent here, which is exactly what the Platform seam was
|
|
5
|
+
// designed to allow: settling falls entirely to core's generic pipeline (DOM
|
|
6
|
+
// quiescence, fonts, images, animation freeze, paint barrier), and affected
|
|
7
|
+
// analysis sees an empty componentPath and falls back to capturing everything.
|
|
8
|
+
//
|
|
9
|
+
// Lives in core rather than its own adapter package because it has no
|
|
10
|
+
// knowledge of any workbench and `jux snap` must always have it.
|
|
11
|
+
export function createUrlPlatform(urls) {
|
|
12
|
+
const notHttp = (u) => new Error(`jux: url '${u.url}' for id '${u.id}' must be http(s)`);
|
|
13
|
+
const isHttp = (url) => url.protocol === 'http:' || url.protocol === 'https:';
|
|
14
|
+
// Ids are baseline keys. A Map would silently keep the last duplicate and
|
|
15
|
+
// two pages would share one baseline, so reject them up front.
|
|
16
|
+
const byId = new Map();
|
|
17
|
+
for (const u of urls) {
|
|
18
|
+
if (!u.id)
|
|
19
|
+
throw new Error('jux: url entry has an empty id');
|
|
20
|
+
// Validate with the same parser navigation uses. A regex disagrees with it:
|
|
21
|
+
// WHATWG strips leading/trailing C0 controls and spaces and removes tabs and
|
|
22
|
+
// newlines, so ' file:///x' or 'fi\tle:///x' looks relative to a regex but
|
|
23
|
+
// navigates to file:. A file:/javascript:/data: url would let whoever
|
|
24
|
+
// controls the config (a fork PR in CI) publish local file contents in the
|
|
25
|
+
// image and structure sidecar. 'localhost:3000/x' (scheme "localhost:")
|
|
26
|
+
// also becomes a clear error instead of a confusing navigation failure.
|
|
27
|
+
let abs = null;
|
|
28
|
+
try {
|
|
29
|
+
abs = new URL(u.url);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// relative; checked again against the origin in resolve()
|
|
33
|
+
}
|
|
34
|
+
if (abs && !isHttp(abs))
|
|
35
|
+
throw notHttp(u);
|
|
36
|
+
if (byId.has(u.id))
|
|
37
|
+
throw new Error(`jux: duplicate url id '${u.id}'`);
|
|
38
|
+
byId.set(u.id, u);
|
|
39
|
+
}
|
|
40
|
+
const resolve = (id, baseUrl) => {
|
|
41
|
+
const entry = byId.get(id);
|
|
42
|
+
if (!entry)
|
|
43
|
+
throw new Error(`jux: no url with id '${id}'`);
|
|
44
|
+
let final;
|
|
45
|
+
try {
|
|
46
|
+
final = new URL(entry.url);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
if (!/^https?:/i.test(baseUrl)) {
|
|
50
|
+
throw new Error(`jux: relative url '${entry.url}' needs --origin`);
|
|
51
|
+
}
|
|
52
|
+
final = new URL(entry.url, baseUrl);
|
|
53
|
+
}
|
|
54
|
+
// Navigate to exactly what was validated.
|
|
55
|
+
if (!isHttp(final))
|
|
56
|
+
throw notHttp(entry);
|
|
57
|
+
return final.href;
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
name: 'urls',
|
|
61
|
+
async detect() {
|
|
62
|
+
return false;
|
|
63
|
+
},
|
|
64
|
+
async enumerate() {
|
|
65
|
+
return urls.map((u) => ({
|
|
66
|
+
storyId: u.id,
|
|
67
|
+
title: u.id,
|
|
68
|
+
name: u.id,
|
|
69
|
+
componentPath: '',
|
|
70
|
+
params: u.params ?? {},
|
|
71
|
+
}));
|
|
72
|
+
},
|
|
73
|
+
async showStory(page, storyId, baseUrl) {
|
|
74
|
+
await page.goto(resolve(storyId, baseUrl));
|
|
75
|
+
},
|
|
76
|
+
previewUrl() {
|
|
77
|
+
return 'about:blank';
|
|
78
|
+
},
|
|
79
|
+
storyUrl(baseUrl, storyId) {
|
|
80
|
+
return resolve(storyId, baseUrl);
|
|
81
|
+
},
|
|
82
|
+
async settle() {
|
|
83
|
+
// No platform render signal. Core's generic settle runs after this.
|
|
84
|
+
},
|
|
85
|
+
configDirs: [],
|
|
86
|
+
storyFileGlobs: [],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/platforms/urls.ts"],"names":[],"mappings":"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"}
|
package/dist/report/comment.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// 2. Images are impossible. GitHub's sanitizer strips `src` from both
|
|
14
14
|
// `<img src="data:...">` and ``; only https:// survives, via
|
|
15
15
|
// camo. So the text has to carry everything and link out for pixels.
|
|
16
|
-
import { formatPercent } from './format.js';
|
|
16
|
+
import { formatPercent, isSubThreshold } from './format.js';
|
|
17
17
|
/**
|
|
18
18
|
* Invisible marker identifying our own comment.
|
|
19
19
|
*
|
|
@@ -248,7 +248,7 @@ function guidance(rows) {
|
|
|
248
248
|
}
|
|
249
249
|
paras.push('Then commit `juxtapose.manifest.json` and `.juxtapose/baselines/` — that is what ' +
|
|
250
250
|
'makes approval a reviewable diff.');
|
|
251
|
-
paras.push('Prefer a UI? Start the run from the **
|
|
251
|
+
paras.push('Prefer a UI? Start the run from the **Visual** panel in Storybook to approve, ' +
|
|
252
252
|
'diff, and copy agent prompts without leaving the browser.');
|
|
253
253
|
return [
|
|
254
254
|
'<details><summary>What these mean, and what to commit</summary>',
|
|
@@ -283,7 +283,13 @@ function detail(r) {
|
|
|
283
283
|
// is a guarantee rather than a guess.
|
|
284
284
|
if (r.status === 'stale')
|
|
285
285
|
return 'pixels identical';
|
|
286
|
-
|
|
286
|
+
// A sub-tolerance colour change has no percentage worth printing: "0%" in
|
|
287
|
+
// a table of changes reads as "nothing changed".
|
|
288
|
+
const parts = [
|
|
289
|
+
isSubThreshold(r)
|
|
290
|
+
? '**subtle**, diff marks no pixels'
|
|
291
|
+
: `**${formatPercent(r.mismatchPercent)}**`,
|
|
292
|
+
];
|
|
287
293
|
const where = regionHint(r);
|
|
288
294
|
if (where)
|
|
289
295
|
parts.push(where);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/report/comment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/report/comment.ts"],"names":[],"mappings":"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"}
|
package/dist/report/format.d.ts
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
1
|
/** Never show "0.00%" next to the word "changed" — it reads as a tool bug. */
|
|
2
2
|
export declare function formatPercent(pct: number): string;
|
|
3
|
+
/**
|
|
4
|
+
* A failure the pixel diff cannot show.
|
|
5
|
+
*
|
|
6
|
+
* Pass/fail is a byte hash; the percentage comes from pixelmatch, which
|
|
7
|
+
* tolerates small colour deltas. A brand colour nudge (#2563eb -> #1d4ed8 on
|
|
8
|
+
* the example Button) fails the hash yet marks zero pixels, and every surface
|
|
9
|
+
* printed "0%" for it: the change a reviewer most needs to look at, labelled
|
|
10
|
+
* as no change. Excludes a crashed capture (it carries `error`, also at 0%)
|
|
11
|
+
* and a dimension change (100%). Structural rather than DiffResult-typed so
|
|
12
|
+
* this module stays importable from the browser.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isSubThreshold(r: {
|
|
15
|
+
mismatchPixels: number;
|
|
16
|
+
mismatchPercent: number;
|
|
17
|
+
error?: string;
|
|
18
|
+
}): boolean;
|
|
19
|
+
/** A failing story's magnitude, in words that stay true for sub-threshold changes. */
|
|
20
|
+
export declare function describeMagnitude(r: Parameters<typeof isSubThreshold>[0]): string;
|
package/dist/report/format.js
CHANGED
|
@@ -9,4 +9,24 @@ export function formatPercent(pct) {
|
|
|
9
9
|
return `${pct.toFixed(2)}%`;
|
|
10
10
|
return pct > 0 ? '<0.01%' : '0%';
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* A failure the pixel diff cannot show.
|
|
14
|
+
*
|
|
15
|
+
* Pass/fail is a byte hash; the percentage comes from pixelmatch, which
|
|
16
|
+
* tolerates small colour deltas. A brand colour nudge (#2563eb -> #1d4ed8 on
|
|
17
|
+
* the example Button) fails the hash yet marks zero pixels, and every surface
|
|
18
|
+
* printed "0%" for it: the change a reviewer most needs to look at, labelled
|
|
19
|
+
* as no change. Excludes a crashed capture (it carries `error`, also at 0%)
|
|
20
|
+
* and a dimension change (100%). Structural rather than DiffResult-typed so
|
|
21
|
+
* this module stays importable from the browser.
|
|
22
|
+
*/
|
|
23
|
+
export function isSubThreshold(r) {
|
|
24
|
+
return !r.error && r.mismatchPixels === 0 && r.mismatchPercent === 0;
|
|
25
|
+
}
|
|
26
|
+
/** A failing story's magnitude, in words that stay true for sub-threshold changes. */
|
|
27
|
+
export function describeMagnitude(r) {
|
|
28
|
+
return isSubThreshold(r)
|
|
29
|
+
? 'subtle change, diff marks no pixels'
|
|
30
|
+
: `${formatPercent(r.mismatchPercent)} changed`;
|
|
31
|
+
}
|
|
12
32
|
//# sourceMappingURL=format.js.map
|