@juangadm/pre-post 0.3.0 → 1.1.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/README.md +174 -233
- package/dist/baseline.d.ts +119 -0
- package/dist/baseline.d.ts.map +1 -0
- package/dist/baseline.js +316 -0
- package/dist/baseline.js.map +1 -0
- package/dist/bin/cli.js +243 -458
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser.d.ts +68 -25
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +500 -105
- package/dist/browser.js.map +1 -1
- package/dist/capture.d.ts +1 -6
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +12 -36
- package/dist/capture.js.map +1 -1
- package/dist/commands/compare.d.ts +18 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +82 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/detect.d.ts +25 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +22 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +42 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +119 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +34 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/pr.d.ts +32 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +259 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/prune.d.ts +10 -0
- package/dist/commands/prune.d.ts.map +1 -0
- package/dist/commands/prune.js +13 -0
- package/dist/commands/prune.js.map +1 -0
- package/dist/comparison.d.ts +104 -0
- package/dist/comparison.d.ts.map +1 -0
- package/dist/comparison.js +236 -0
- package/dist/comparison.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +82 -0
- package/dist/config.js.map +1 -0
- package/dist/deployments.d.ts +71 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +204 -0
- package/dist/deployments.js.map +1 -0
- package/dist/diff-pool.d.ts +17 -0
- package/dist/diff-pool.d.ts.map +1 -0
- package/dist/diff-pool.js +92 -0
- package/dist/diff-pool.js.map +1 -0
- package/dist/diff-worker.d.ts +32 -0
- package/dist/diff-worker.d.ts.map +1 -0
- package/dist/diff-worker.js +39 -0
- package/dist/diff-worker.js.map +1 -0
- package/dist/diff.d.ts +47 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +281 -0
- package/dist/diff.js.map +1 -0
- package/dist/doctor.d.ts +79 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +138 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.d.ts +38 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +59 -0
- package/dist/errors.js.map +1 -0
- package/dist/git.d.ts +61 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +182 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +163 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +411 -0
- package/dist/github.js.map +1 -0
- package/dist/index.d.ts +22 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -67
- package/dist/index.js.map +1 -1
- package/dist/landing.d.ts +48 -0
- package/dist/landing.d.ts.map +1 -0
- package/dist/landing.js +93 -0
- package/dist/landing.js.map +1 -0
- package/dist/pkg.d.ts +17 -0
- package/dist/pkg.d.ts.map +1 -0
- package/dist/pkg.js +49 -0
- package/dist/pkg.js.map +1 -0
- package/dist/report.d.ts +20 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +130 -0
- package/dist/report.js.map +1 -0
- package/dist/routes/imports.d.ts +46 -0
- package/dist/routes/imports.d.ts.map +1 -0
- package/dist/routes/imports.js +208 -0
- package/dist/routes/imports.js.map +1 -0
- package/dist/routes/vite.d.ts +15 -0
- package/dist/routes/vite.d.ts.map +1 -0
- package/dist/routes/vite.js +130 -0
- package/dist/routes/vite.js.map +1 -0
- package/dist/routes.d.ts +65 -11
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +346 -141
- package/dist/routes.js.map +1 -1
- package/dist/run.d.ts +116 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +316 -0
- package/dist/run.js.map +1 -0
- package/dist/sameness.d.ts +91 -0
- package/dist/sameness.d.ts.map +1 -0
- package/dist/sameness.js +157 -0
- package/dist/sameness.js.map +1 -0
- package/dist/sessions.d.ts +50 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +80 -0
- package/dist/sessions.js.map +1 -0
- package/dist/shift.d.ts +67 -0
- package/dist/shift.d.ts.map +1 -0
- package/dist/shift.js +184 -0
- package/dist/shift.js.map +1 -0
- package/dist/types.d.ts +179 -68
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/url.d.ts +12 -0
- package/dist/url.d.ts.map +1 -0
- package/dist/url.js +30 -0
- package/dist/url.js.map +1 -0
- package/dist/viewport.d.ts +6 -1
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +13 -7
- package/dist/viewport.js.map +1 -1
- package/package.json +21 -14
- package/skill/SKILL.md +56 -221
- package/dist/clipboard.d.ts +0 -9
- package/dist/clipboard.d.ts.map +0 -1
- package/dist/clipboard.js +0 -26
- package/dist/clipboard.js.map +0 -1
- package/dist/upload.d.ts +0 -39
- package/dist/upload.d.ts.map +0 -1
- package/dist/upload.js +0 -159
- package/dist/upload.js.map +0 -1
- package/dist/video.d.ts +0 -19
- package/dist/video.d.ts.map +0 -1
- package/dist/video.js +0 -263
- package/dist/video.js.map +0 -1
- package/skill/scripts/adapters/0x0st.sh +0 -36
- package/skill/scripts/adapters/blob.sh +0 -55
- package/skill/scripts/adapters/git-native.sh +0 -51
- package/skill/scripts/upload-and-copy.sh +0 -230
package/dist/types.d.ts
CHANGED
|
@@ -5,6 +5,18 @@ export interface ViewportSize {
|
|
|
5
5
|
export type ViewportPreset = 'desktop' | 'tablet' | 'mobile';
|
|
6
6
|
export type ViewportConfig = ViewportPreset | ViewportSize;
|
|
7
7
|
export declare const VIEWPORT_PRESETS: Record<ViewportPreset, ViewportSize>;
|
|
8
|
+
export interface AuthOptions {
|
|
9
|
+
/** Extra request headers sent with every request (e.g. Vercel bypass). */
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
/** Cookies to set before navigation. */
|
|
12
|
+
cookies?: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
value: string;
|
|
15
|
+
domain?: string;
|
|
16
|
+
path?: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
8
20
|
export interface CaptureOptions {
|
|
9
21
|
/** URL to capture (file://, http://, https://) */
|
|
10
22
|
url: string;
|
|
@@ -14,6 +26,16 @@ export interface CaptureOptions {
|
|
|
14
26
|
viewport?: ViewportConfig;
|
|
15
27
|
/** Capture full scrollable page instead of viewport. Default: false */
|
|
16
28
|
fullPage?: boolean;
|
|
29
|
+
/** Maximum page height (CSS px) for full-page captures. Default: 3× viewport height */
|
|
30
|
+
maxHeight?: number;
|
|
31
|
+
/** Device scale factor. Default: 2 */
|
|
32
|
+
scale?: number;
|
|
33
|
+
/** Hard cap on settle wait (ms). Default: 8000 */
|
|
34
|
+
settleTimeout?: number;
|
|
35
|
+
/** Extra fixed wait after settle (ms). Default: 0 */
|
|
36
|
+
wait?: number;
|
|
37
|
+
/** Auth headers / cookies */
|
|
38
|
+
auth?: AuthOptions;
|
|
17
39
|
}
|
|
18
40
|
export interface CaptureResult {
|
|
19
41
|
/** Raw PNG image data */
|
|
@@ -24,6 +46,18 @@ export interface CaptureResult {
|
|
|
24
46
|
url: string;
|
|
25
47
|
/** CSS selector used, if any */
|
|
26
48
|
selector?: string;
|
|
49
|
+
/** HTTP status of the main document */
|
|
50
|
+
status?: number;
|
|
51
|
+
/** URL the browser ended on, which is not the requested one after a redirect */
|
|
52
|
+
finalUrl?: string;
|
|
53
|
+
/** Document title, used to recognise a sign-in wall that answered with 200 */
|
|
54
|
+
title?: string;
|
|
55
|
+
/** Visible text, used to tell "the same site, changed" from "a different site" */
|
|
56
|
+
text?: string;
|
|
57
|
+
/** Response looked like it came from Vercel (deployment protection) */
|
|
58
|
+
vercel?: boolean;
|
|
59
|
+
/** Wall-clock milliseconds for navigation + settle + screenshot */
|
|
60
|
+
durationMs: number;
|
|
27
61
|
}
|
|
28
62
|
export interface BeforeAfterCaptureOptions {
|
|
29
63
|
before: CaptureOptions | string;
|
|
@@ -35,32 +69,51 @@ export interface BeforeAfterCaptureResult {
|
|
|
35
69
|
before: CaptureResult;
|
|
36
70
|
after: CaptureResult;
|
|
37
71
|
}
|
|
38
|
-
export
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
after: ImageInput;
|
|
44
|
-
/** Labels for markdown output */
|
|
45
|
-
labels?: {
|
|
46
|
-
before?: string;
|
|
47
|
-
after?: string;
|
|
48
|
-
};
|
|
72
|
+
export interface DiffRegion {
|
|
73
|
+
x: number;
|
|
74
|
+
y: number;
|
|
75
|
+
width: number;
|
|
76
|
+
height: number;
|
|
49
77
|
}
|
|
50
|
-
export interface
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
|
|
78
|
+
export interface DiffResult {
|
|
79
|
+
/** Fraction of pixels that differ, 0..1 (over the union canvas) */
|
|
80
|
+
changedRatio: number;
|
|
81
|
+
/** Number of differing pixels */
|
|
82
|
+
changedPixels: number;
|
|
83
|
+
/** Canvas size used for comparison (device pixels) */
|
|
84
|
+
width: number;
|
|
85
|
+
height: number;
|
|
86
|
+
/** Bounding box of all changes in device pixels, or null when identical */
|
|
87
|
+
region: DiffRegion | null;
|
|
88
|
+
/** Whether the two images had different dimensions */
|
|
89
|
+
sizeChanged: boolean;
|
|
90
|
+
/** Highlight image: grayscale page with changed pixels in red (PNG). Absent when identical. */
|
|
91
|
+
highlight?: Buffer;
|
|
92
|
+
/** Crops of before/after around the changed region, when the change is localized */
|
|
93
|
+
crop?: {
|
|
94
|
+
before: Buffer;
|
|
95
|
+
after: Buffer;
|
|
96
|
+
region: DiffRegion;
|
|
97
|
+
};
|
|
98
|
+
/** Vertical displacement explaining most of the difference, when one does */
|
|
99
|
+
shift?: ShiftSummary;
|
|
57
100
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
101
|
+
/**
|
|
102
|
+
* A layout shift: Post content moved down (or up) by a constant amount from a
|
|
103
|
+
* given row, and what remains different once the two sides are put back in
|
|
104
|
+
* register. Plain numbers, so it survives the worker-thread boundary.
|
|
105
|
+
*/
|
|
106
|
+
export interface ShiftSummary {
|
|
107
|
+
/** Device pixels Post content moved down by; negative means up. */
|
|
108
|
+
dy: number;
|
|
109
|
+
/** First row, in Pre coordinates, that moved. Rows above it stayed put. */
|
|
110
|
+
from: number;
|
|
111
|
+
/** Changed pixels once Post is aligned with Pre. */
|
|
112
|
+
alignedChangedPixels: number;
|
|
113
|
+
/** Aligned changed pixels as a fraction of the canvas. */
|
|
114
|
+
alignedChangedRatio: number;
|
|
63
115
|
}
|
|
116
|
+
export type Framework = 'nextjs-app' | 'nextjs-pages' | 'vite' | 'generic';
|
|
64
117
|
export interface DetectedRoute {
|
|
65
118
|
/** Route path, e.g., "/dashboard" */
|
|
66
119
|
path: string;
|
|
@@ -73,54 +126,112 @@ export interface DetectedRoute {
|
|
|
73
126
|
}
|
|
74
127
|
export interface RouteDetectionOptions {
|
|
75
128
|
/** Force a specific framework instead of auto-detecting */
|
|
76
|
-
framework?:
|
|
77
|
-
/** Maximum number of routes to return (default:
|
|
129
|
+
framework?: Framework;
|
|
130
|
+
/** Maximum number of routes to return (default: 6) */
|
|
78
131
|
maxRoutes?: number;
|
|
79
|
-
/**
|
|
80
|
-
|
|
132
|
+
/** Where warnings go. Left unset, they are silent. */
|
|
133
|
+
log?: (msg: string) => void;
|
|
81
134
|
}
|
|
82
|
-
export interface
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
/** Routes to
|
|
88
|
-
routes
|
|
89
|
-
/**
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
|
|
135
|
+
export interface PrePostConfig {
|
|
136
|
+
/** Production base URL — the "before" state */
|
|
137
|
+
before?: string;
|
|
138
|
+
/** Local base URL — the "after" state (auto-detected when omitted) */
|
|
139
|
+
after?: string;
|
|
140
|
+
/** Routes to always include */
|
|
141
|
+
routes?: string[];
|
|
142
|
+
/** Sample URLs for dynamic routes, e.g. { "/blog/[slug]": "/blog/hello" } */
|
|
143
|
+
samples?: Record<string, string>;
|
|
144
|
+
/** Viewports to capture. Default: ["desktop"] */
|
|
145
|
+
viewports?: Array<ViewportPreset | string>;
|
|
146
|
+
/** Extra headers for every request */
|
|
147
|
+
headers?: Record<string, string>;
|
|
148
|
+
/** Change ratio (fraction 0..1) at or above which a route counts as changed. Default 0.001 */
|
|
149
|
+
threshold?: number;
|
|
150
|
+
/** Absolute changed-pixel floor at or above which a route counts as changed, so small edits on tall pages register. Default 40 */
|
|
151
|
+
/** Smallest painted change that counts, in CSS pixels². */
|
|
152
|
+
minChangedArea?: number;
|
|
153
|
+
/** @deprecated device pixels; use minChangedArea. Converted at the capture scale. */
|
|
154
|
+
minChangedPixels?: number;
|
|
155
|
+
/** Max detected routes. Default 6 */
|
|
156
|
+
maxRoutes?: number;
|
|
157
|
+
/** Capture full page. Default true */
|
|
158
|
+
fullPage?: boolean;
|
|
159
|
+
/** Max full-page height in CSS px. Default 2400 */
|
|
160
|
+
maxHeight?: number;
|
|
161
|
+
/** Device scale factor. Default 2 */
|
|
162
|
+
scale?: number;
|
|
163
|
+
/** Assets branch name. Default "pre-post-assets" */
|
|
164
|
+
assetsBranch?: string;
|
|
165
|
+
/** Skip paths (glob-ish prefixes) from route detection */
|
|
166
|
+
ignore?: string[];
|
|
97
167
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
/** CSS selector — scroll element into view before recording */
|
|
108
|
-
selector?: string;
|
|
168
|
+
/** Pre, post, and (when there was a change) diff and crop images, as local paths or URLs. */
|
|
169
|
+
export interface ArtifactSet {
|
|
170
|
+
/** Absent when the route has no baseline (a page this branch adds). */
|
|
171
|
+
before?: string;
|
|
172
|
+
/** Absent when the branch removed the route. */
|
|
173
|
+
after?: string;
|
|
174
|
+
diff?: string;
|
|
175
|
+
cropBefore?: string;
|
|
176
|
+
cropAfter?: string;
|
|
109
177
|
}
|
|
110
|
-
export
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
|
|
178
|
+
export declare const ARTIFACT_KINDS: readonly ["before", "after", "diff", "cropBefore", "cropAfter"];
|
|
179
|
+
export interface RouteCaptureOutcome {
|
|
180
|
+
route: string;
|
|
181
|
+
/** Route actually requested (after sample substitution) */
|
|
182
|
+
resolvedRoute: string;
|
|
183
|
+
viewport: string;
|
|
184
|
+
status: 'changed' | 'unchanged' | 'added' | 'removed' | 'error';
|
|
185
|
+
changedRatio?: number;
|
|
186
|
+
sizeChanged?: boolean;
|
|
187
|
+
error?: string;
|
|
188
|
+
files?: ArtifactSet;
|
|
189
|
+
urls?: ArtifactSet;
|
|
190
|
+
durationMs?: number;
|
|
191
|
+
/** sha1 of the baseline capture, for spotting a host that serves one page for every route */
|
|
192
|
+
baselineHash?: string;
|
|
193
|
+
/** Extra context, e.g. "new page — no baseline (example.com returned 404)" */
|
|
194
|
+
note?: string;
|
|
195
|
+
/** Vertical displacement of Post against Pre, when one explains the change */
|
|
196
|
+
shift?: RouteShift;
|
|
197
|
+
/** A side answered with a sign-in wall, so nothing was really compared */
|
|
198
|
+
blocked?: BlockedSide;
|
|
199
|
+
/**
|
|
200
|
+
* How much of the two sides' wording is shared, or null when neither page
|
|
201
|
+
* had enough text to judge. Near zero on every route means the two sides are
|
|
202
|
+
* different sites, which a pixel ratio cannot tell you — see `sameness.ts`.
|
|
203
|
+
*/
|
|
204
|
+
textOverlap?: number | null;
|
|
205
|
+
/**
|
|
206
|
+
* The same measure over the two titles. A title is where a site names
|
|
207
|
+
* itself, so it corroborates a run that only has one route to judge.
|
|
208
|
+
*/
|
|
209
|
+
titleOverlap?: number | null;
|
|
210
|
+
}
|
|
211
|
+
export interface BlockedSide {
|
|
212
|
+
side: 'before' | 'after';
|
|
213
|
+
/** The sign-in page the capture landed on */
|
|
214
|
+
finalUrl: string;
|
|
215
|
+
/** Deployment protection, so the bypass secret is the fix */
|
|
216
|
+
vercel: boolean;
|
|
217
|
+
}
|
|
218
|
+
export interface RouteShift {
|
|
219
|
+
/** CSS pixels the content moved down by; negative means up. */
|
|
220
|
+
px: number;
|
|
221
|
+
/** Whether anything changed beyond the move, judged by the same rule as any other capture. */
|
|
222
|
+
otherChange: boolean;
|
|
223
|
+
}
|
|
224
|
+
export interface PrRunResult {
|
|
225
|
+
repo: string;
|
|
226
|
+
prNumber?: number;
|
|
227
|
+
commentUrl?: string;
|
|
228
|
+
beforeBase: string;
|
|
229
|
+
afterBase: string;
|
|
230
|
+
outcomes: RouteCaptureOutcome[];
|
|
231
|
+
skippedDynamic: string[];
|
|
232
|
+
durationMs: number;
|
|
233
|
+
markdown: string;
|
|
234
|
+
/** Local directory holding every captured file */
|
|
235
|
+
outputDir: string;
|
|
125
236
|
}
|
|
126
237
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC;AAE3D,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CAIjE,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAW/D,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACpE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACrC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACpC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAW/D,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACpE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACrC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACpC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CACpC,CAAC;AAmMF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAU,CAAC"}
|
package/dist/url.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL helpers shared by the capture layer and the command pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Kept out of run.ts so browser.ts can ask "is this loopback?" without
|
|
5
|
+
* importing the module that imports it.
|
|
6
|
+
*/
|
|
7
|
+
/** Is this URL served from the machine running the command? */
|
|
8
|
+
export declare function isLocalUrl(url: string): boolean;
|
|
9
|
+
export declare function normalizeUrl(url: string): string;
|
|
10
|
+
export declare function hostOf(url: string): string;
|
|
11
|
+
export declare function joinUrl(base: string, route: string): string;
|
|
12
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
package/dist/url.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL helpers shared by the capture layer and the command pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Kept out of run.ts so browser.ts can ask "is this loopback?" without
|
|
5
|
+
* importing the module that imports it.
|
|
6
|
+
*/
|
|
7
|
+
/** Add a scheme to a bare URL (http for loopback hosts, https otherwise) and drop trailing slashes. */
|
|
8
|
+
const LOOPBACK = /^(?:(?:https?|file):\/\/)?(localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\])(:|\/|$)/i;
|
|
9
|
+
/** Is this URL served from the machine running the command? */
|
|
10
|
+
export function isLocalUrl(url) {
|
|
11
|
+
return LOOPBACK.test(url);
|
|
12
|
+
}
|
|
13
|
+
export function normalizeUrl(url) {
|
|
14
|
+
const withScheme = /^(https?|file):\/\//i.test(url)
|
|
15
|
+
? url
|
|
16
|
+
: isLocalUrl(url) ? `http://${url}` : `https://${url}`;
|
|
17
|
+
return withScheme.replace(/\/+$/, '');
|
|
18
|
+
}
|
|
19
|
+
export function hostOf(url) {
|
|
20
|
+
try {
|
|
21
|
+
return new URL(url).host;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return url;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function joinUrl(base, route) {
|
|
28
|
+
return base.replace(/\/+$/, '') + (route.startsWith('/') ? route : `/${route}`);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=url.js.map
|
package/dist/url.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uGAAuG;AACvG,MAAM,QAAQ,GAAG,gFAAgF,CAAC;AAElG,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;QACjD,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;IACzD,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/viewport.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { ViewportConfig, ViewportSize } from './types.js';
|
|
2
|
-
|
|
2
|
+
/** Accepts a preset name, a "WxH" string, or a size object. */
|
|
3
|
+
export declare function parseViewport(spec: ViewportConfig | string): {
|
|
4
|
+
label: string;
|
|
5
|
+
size: ViewportSize;
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveViewport(config?: ViewportConfig | string): ViewportSize;
|
|
3
8
|
//# sourceMappingURL=viewport.d.ts.map
|
package/dist/viewport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAE5F,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAE5F,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAOlG;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,YAAY,CAE9E"}
|
package/dist/viewport.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { VIEWPORT_PRESETS } from './types.js';
|
|
2
|
+
/** Accepts a preset name, a "WxH" string, or a size object. */
|
|
3
|
+
export function parseViewport(spec) {
|
|
4
|
+
if (typeof spec !== 'string')
|
|
5
|
+
return { label: `${spec.width}x${spec.height}`, size: spec };
|
|
6
|
+
const preset = VIEWPORT_PRESETS[spec];
|
|
7
|
+
if (preset)
|
|
8
|
+
return { label: spec, size: preset };
|
|
9
|
+
const m = spec.match(/^(\d+)x(\d+)$/);
|
|
10
|
+
if (!m)
|
|
11
|
+
throw new Error(`Invalid viewport "${spec}". Use desktop, tablet, mobile, or WxH (e.g. 1440x900).`);
|
|
12
|
+
return { label: spec, size: { width: Number(m[1]), height: Number(m[2]) } };
|
|
13
|
+
}
|
|
2
14
|
export function resolveViewport(config) {
|
|
3
|
-
|
|
4
|
-
return VIEWPORT_PRESETS.desktop;
|
|
5
|
-
}
|
|
6
|
-
if (typeof config === 'string') {
|
|
7
|
-
return VIEWPORT_PRESETS[config];
|
|
8
|
-
}
|
|
9
|
-
return config;
|
|
15
|
+
return config ? parseViewport(config).size : VIEWPORT_PRESETS.desktop;
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=viewport.js.map
|
package/dist/viewport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5F,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5F,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,IAA6B;IACzD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3F,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAsB,CAAC,CAAC;IACxD,IAAI,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,yDAAyD,CAAC,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgC;IAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juangadm/pre-post",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Before/after screenshots for pull requests: detect changed routes, capture, pixel-diff, and post a sticky PR comment",
|
|
5
5
|
"author": "Juan Gabriel Delgado (forked from James Clements)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -16,13 +16,12 @@
|
|
|
16
16
|
"screenshot",
|
|
17
17
|
"before-after",
|
|
18
18
|
"visual-diff",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"web",
|
|
22
|
-
"testing",
|
|
23
|
-
"cli",
|
|
19
|
+
"visual-regression",
|
|
20
|
+
"pull-request",
|
|
24
21
|
"playwright",
|
|
25
|
-
"
|
|
22
|
+
"pixelmatch",
|
|
23
|
+
"cli",
|
|
24
|
+
"claude-code-skill"
|
|
26
25
|
],
|
|
27
26
|
"type": "module",
|
|
28
27
|
"main": "dist/index.js",
|
|
@@ -38,23 +37,23 @@
|
|
|
38
37
|
},
|
|
39
38
|
"files": [
|
|
40
39
|
"dist",
|
|
41
|
-
"skill"
|
|
40
|
+
"skill",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE"
|
|
42
43
|
],
|
|
43
44
|
"scripts": {
|
|
44
45
|
"build": "tsc -p tsconfig.pkg.json",
|
|
46
|
+
"prepare": "npm run build",
|
|
45
47
|
"prepublishOnly": "rm -rf dist && npm run build && npm run test:unit",
|
|
46
48
|
"test": "vitest run",
|
|
47
49
|
"test:watch": "vitest",
|
|
48
50
|
"test:unit": "vitest run tests/unit",
|
|
49
|
-
"test:browser": "vitest run tests/browser",
|
|
51
|
+
"test:browser": "TEST_BROWSER=true vitest run tests/browser tests/integration",
|
|
50
52
|
"test:integration": "vitest run tests/integration"
|
|
51
53
|
},
|
|
52
|
-
"dependencies": {
|
|
53
|
-
"gifenc": "^1.0.3",
|
|
54
|
-
"playwright": "^1.50.0"
|
|
55
|
-
},
|
|
56
54
|
"devDependencies": {
|
|
57
55
|
"@types/node": "^22",
|
|
56
|
+
"@types/pngjs": "^6.0.5",
|
|
58
57
|
"typescript": "5.7.3",
|
|
59
58
|
"vitest": "^3.2.1"
|
|
60
59
|
},
|
|
@@ -63,5 +62,13 @@
|
|
|
63
62
|
"@types/react": "19.2.7",
|
|
64
63
|
"@types/react-dom": "19.2.3"
|
|
65
64
|
}
|
|
65
|
+
},
|
|
66
|
+
"dependencies": {
|
|
67
|
+
"pixelmatch": "^7.2.0",
|
|
68
|
+
"playwright-core": "1.58.0",
|
|
69
|
+
"pngjs": "^7.0.0"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=20"
|
|
66
73
|
}
|
|
67
74
|
}
|