@juangadm/pre-post 0.2.0 → 1.0.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 +102 -222
- package/dist/bin/cli.js +199 -347
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser.d.ts +42 -11
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +371 -94
- 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 -35
- 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 +64 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/detect.d.ts +20 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +19 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +10 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +38 -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 +28 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +159 -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/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.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 +89 -0
- package/dist/diff-pool.js.map +1 -0
- package/dist/diff-worker.d.ts +29 -0
- package/dist/diff-worker.d.ts.map +1 -0
- package/dist/diff-worker.js +38 -0
- package/dist/diff-worker.js.map +1 -0
- package/dist/diff.d.ts +37 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +171 -0
- package/dist/diff.js.map +1 -0
- package/dist/doctor.d.ts +38 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +72 -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/filename.d.ts +2 -0
- package/dist/filename.d.ts.map +1 -1
- package/dist/filename.js +2 -1
- package/dist/filename.js.map +1 -1
- package/dist/git.d.ts +23 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +86 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +73 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +240 -0
- package/dist/github.js.map +1 -0
- package/dist/index.d.ts +22 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -66
- package/dist/index.js.map +1 -1
- package/dist/pkg.d.ts +8 -0
- package/dist/pkg.d.ts.map +1 -0
- package/dist/pkg.js +35 -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 +107 -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 +41 -14
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +271 -141
- package/dist/routes.js.map +1 -1
- package/dist/run.d.ts +36 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +128 -0
- package/dist/run.js.map +1 -0
- package/dist/sessions.d.ts +50 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +74 -0
- package/dist/sessions.js.map +1 -0
- package/dist/types.d.ts +118 -41
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- 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 -13
- package/skill/SKILL.md +31 -229
- 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 -149
- package/dist/upload.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/routes.js
CHANGED
|
@@ -1,174 +1,304 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Route detection
|
|
3
|
-
*
|
|
2
|
+
* Route detection: which pages does this branch visually affect?
|
|
3
|
+
*
|
|
4
|
+
* 1. Changed files = diff against the merge base with the default branch,
|
|
5
|
+
* plus staged, unstaged, and untracked files.
|
|
6
|
+
* 2. Pick the app root that owns most of those files (monorepo aware).
|
|
7
|
+
* 3. Framework adapter: direct file → route rules, plus the route entry files.
|
|
8
|
+
* 4. Import graph: any changed file that a page imports, directly or
|
|
9
|
+
* transitively, marks that page.
|
|
10
|
+
* 5. Dedupe, rank by confidence, cap, and substitute samples for dynamic routes.
|
|
4
11
|
*/
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
12
|
import fs from 'fs';
|
|
7
13
|
import path from 'path';
|
|
8
14
|
import { detectAppRouterRoutes, detectPagesRouterRoutes } from './routes/nextjs.js';
|
|
9
15
|
import { detectGenericRoutes } from './routes/generic.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* Get changed files from git diff.
|
|
22
|
-
* Returns paths relative to the repo root.
|
|
23
|
-
*/
|
|
24
|
-
export function getChangedFiles(diffTarget, cwd = process.cwd()) {
|
|
25
|
-
const target = diffTarget || 'HEAD';
|
|
26
|
-
const files = new Set();
|
|
27
|
-
runGitNameOnly(`diff --name-only ${target}`, cwd).forEach((file) => files.add(file));
|
|
28
|
-
runGitNameOnly('diff --name-only --cached', cwd).forEach((file) => files.add(file));
|
|
29
|
-
runGitNameOnly('diff --name-only', cwd).forEach((file) => files.add(file));
|
|
30
|
-
runGitNameOnly('ls-files --others --exclude-standard', cwd).forEach((file) => files.add(file));
|
|
31
|
-
return Array.from(files);
|
|
16
|
+
import { buildImportGraph, findAffectedEntries, readAliases, walkSourceFiles, toPosix, SKIP_DIRS } from './routes/imports.js';
|
|
17
|
+
import { viteRouteEntries, isViteApp } from './routes/vite.js';
|
|
18
|
+
import { changedFiles as gitChangedFiles, repoRoot as gitRepoRoot } from './git.js';
|
|
19
|
+
import { hasDependency } from './pkg.js';
|
|
20
|
+
import { CONFIG_DEFAULTS } from './config.js';
|
|
21
|
+
const NEXT_APP_PAGE = /^app\/(.+\/)?page\.(tsx|ts|jsx|js|mdx|md)$/;
|
|
22
|
+
const NEXT_PAGES_HIGH = /^pages\/(?!api\/|_)(.+)\.(tsx|ts|jsx|js|mdx|md)$/;
|
|
23
|
+
const NEXT_PAGE_FILE = /^(page|layout)\.(tsx|ts|jsx|js|mdx)$/;
|
|
24
|
+
const PAGES_INDEX_FILE = /^(index|_app|_document)\.(tsx|ts|jsx|js|mdx)$/;
|
|
25
|
+
function stripSrc(rel) {
|
|
26
|
+
return rel.replace(/^src\//, '');
|
|
32
27
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return 'nextjs-app';
|
|
28
|
+
function hasNextConfig(root) {
|
|
29
|
+
return ['next.config.js', 'next.config.mjs', 'next.config.ts', 'next-env.d.ts'].some(f => fs.existsSync(path.join(root, f)));
|
|
30
|
+
}
|
|
31
|
+
/** Does `dir` contain a file matching `pattern` within `depth` levels? */
|
|
32
|
+
function containsFile(dir, pattern, depth) {
|
|
33
|
+
let entries;
|
|
34
|
+
try {
|
|
35
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
42
36
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return 'nextjs-pages';
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
46
39
|
}
|
|
47
|
-
|
|
40
|
+
if (entries.some(e => e.isFile() && pattern.test(e.name)))
|
|
41
|
+
return true;
|
|
42
|
+
if (depth === 0)
|
|
43
|
+
return false;
|
|
44
|
+
return entries.some(e => e.isDirectory() && !SKIP_DIRS.has(e.name) && containsFile(path.join(dir, e.name), pattern, depth - 1));
|
|
48
45
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// Cap at maxRoutes
|
|
76
|
-
const maxRoutes = options.maxRoutes ?? 5;
|
|
77
|
-
if (routes.length > maxRoutes) {
|
|
78
|
-
const originalCount = routes.length;
|
|
79
|
-
routes = routes.slice(0, maxRoutes);
|
|
80
|
-
// Add a note about truncation by keeping only the top N
|
|
81
|
-
console.warn(`Detected ${originalCount} routes, capping at ${maxRoutes}. Use --max-routes to increase.`);
|
|
46
|
+
function appDir(root) {
|
|
47
|
+
for (const d of [path.join(root, 'app'), path.join(root, 'src', 'app')])
|
|
48
|
+
if (fs.existsSync(d))
|
|
49
|
+
return d;
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
function pagesDir(root) {
|
|
53
|
+
for (const d of [path.join(root, 'pages'), path.join(root, 'src', 'pages')])
|
|
54
|
+
if (fs.existsSync(d))
|
|
55
|
+
return d;
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
/** Entry files under a Next.js router directory, mapped by a regex-first filter. */
|
|
59
|
+
function nextEntries(appRoot, files, dirName, pattern, rule) {
|
|
60
|
+
const entries = new Map();
|
|
61
|
+
const base = fs.existsSync(path.join(appRoot, 'src', dirName)) ? path.join(appRoot, 'src') : appRoot;
|
|
62
|
+
const prefix = path.join(base, dirName) + path.sep;
|
|
63
|
+
for (const file of files) {
|
|
64
|
+
if (!file.startsWith(prefix))
|
|
65
|
+
continue;
|
|
66
|
+
const rel = toPosix(path.relative(base, file));
|
|
67
|
+
if (!pattern.test(rel))
|
|
68
|
+
continue;
|
|
69
|
+
const route = rule([rel])[0];
|
|
70
|
+
if (route)
|
|
71
|
+
entries.set(file, route.path);
|
|
82
72
|
}
|
|
83
|
-
return
|
|
73
|
+
return entries;
|
|
74
|
+
}
|
|
75
|
+
const FRAMEWORKS = [
|
|
76
|
+
{
|
|
77
|
+
name: 'nextjs-app',
|
|
78
|
+
matches: root => {
|
|
79
|
+
const dir = appDir(root);
|
|
80
|
+
if (!dir)
|
|
81
|
+
return false;
|
|
82
|
+
return hasDependency(root, 'next') || hasNextConfig(root) || containsFile(dir, NEXT_PAGE_FILE, 4);
|
|
83
|
+
},
|
|
84
|
+
normalize: stripSrc,
|
|
85
|
+
directRoutes: detectAppRouterRoutes,
|
|
86
|
+
routeEntries: (appRoot, files) => nextEntries(appRoot, files, 'app', NEXT_APP_PAGE, detectAppRouterRoutes),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'nextjs-pages',
|
|
90
|
+
matches: root => {
|
|
91
|
+
const dir = pagesDir(root);
|
|
92
|
+
if (!dir || hasDependency(root, 'vite'))
|
|
93
|
+
return false;
|
|
94
|
+
return hasDependency(root, 'next') || hasNextConfig(root) || containsFile(dir, PAGES_INDEX_FILE, 1);
|
|
95
|
+
},
|
|
96
|
+
normalize: stripSrc,
|
|
97
|
+
directRoutes: detectPagesRouterRoutes,
|
|
98
|
+
routeEntries: (appRoot, files) => nextEntries(appRoot, files, 'pages', NEXT_PAGES_HIGH, detectPagesRouterRoutes),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'vite',
|
|
102
|
+
matches: isViteApp,
|
|
103
|
+
normalize: rel => rel,
|
|
104
|
+
directRoutes: detectGenericRoutes,
|
|
105
|
+
routeEntries: viteRouteEntries,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'generic',
|
|
109
|
+
matches: () => true,
|
|
110
|
+
normalize: rel => rel,
|
|
111
|
+
directRoutes: detectGenericRoutes,
|
|
112
|
+
routeEntries: () => new Map(),
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
function adapterFor(name) {
|
|
116
|
+
return FRAMEWORKS.find(f => f.name === name) ?? FRAMEWORKS[FRAMEWORKS.length - 1];
|
|
117
|
+
}
|
|
118
|
+
export function frameworkForRoot(root) {
|
|
119
|
+
return FRAMEWORKS.find(f => f.matches(root)).name;
|
|
120
|
+
}
|
|
121
|
+
// ============================================================
|
|
122
|
+
// App roots
|
|
123
|
+
// ============================================================
|
|
124
|
+
const APP_SCAN_DEPTH = 3;
|
|
125
|
+
/** Directories (depth ≤ 3) that look like an app: package.json, or app/ pages/ route folders. */
|
|
126
|
+
export function findAppRoots(baseDir) {
|
|
127
|
+
const roots = [];
|
|
128
|
+
const walk = (dir, depth) => {
|
|
129
|
+
// A package.json marks an app; so do app/ or pages/ route folders, except inside src/
|
|
130
|
+
// (src/app belongs to the package one level up).
|
|
131
|
+
const isSrc = path.basename(dir) === 'src';
|
|
132
|
+
if (fs.existsSync(path.join(dir, 'package.json')) || (!isSrc && (appDir(dir) || pagesDir(dir))))
|
|
133
|
+
roots.push(dir);
|
|
134
|
+
if (depth === 0)
|
|
135
|
+
return;
|
|
136
|
+
let entries;
|
|
137
|
+
try {
|
|
138
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
for (const entry of entries) {
|
|
144
|
+
if (entry.isDirectory() && !SKIP_DIRS.has(entry.name) && !entry.name.startsWith('.')) {
|
|
145
|
+
walk(path.join(dir, entry.name), depth - 1);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
walk(baseDir, APP_SCAN_DEPTH);
|
|
150
|
+
return roots;
|
|
84
151
|
}
|
|
85
152
|
/**
|
|
86
|
-
*
|
|
153
|
+
* Auto-detect the framework used in the project: the most specific framework
|
|
154
|
+
* any app root matches, in adapter order.
|
|
87
155
|
*/
|
|
88
|
-
function
|
|
156
|
+
export function detectFramework(rootDir) {
|
|
157
|
+
const found = findAppRoots(rootDir || process.cwd()).map(frameworkForRoot);
|
|
158
|
+
return FRAMEWORKS.find(f => found.includes(f.name))?.name ?? 'generic';
|
|
159
|
+
}
|
|
160
|
+
// ============================================================
|
|
161
|
+
// Ranking
|
|
162
|
+
// ============================================================
|
|
163
|
+
const CONFIDENCE_ORDER = { high: 0, medium: 1, low: 2 };
|
|
164
|
+
export function deduplicateRoutes(routes) {
|
|
89
165
|
const byPath = new Map();
|
|
90
|
-
const confidenceOrder = { high: 0, medium: 1, low: 2 };
|
|
91
166
|
for (const route of routes) {
|
|
92
167
|
const existing = byPath.get(route.path);
|
|
93
|
-
if (!existing ||
|
|
168
|
+
if (!existing || CONFIDENCE_ORDER[route.confidence] < CONFIDENCE_ORDER[existing.confidence]) {
|
|
94
169
|
byPath.set(route.path, route);
|
|
95
170
|
}
|
|
96
171
|
}
|
|
97
172
|
return Array.from(byPath.values());
|
|
98
173
|
}
|
|
99
|
-
function
|
|
174
|
+
function rankAndCap(routes, maxRoutes, warn = true) {
|
|
175
|
+
let out = deduplicateRoutes(routes);
|
|
176
|
+
out.sort((a, b) => CONFIDENCE_ORDER[a.confidence] - CONFIDENCE_ORDER[b.confidence] || a.path.localeCompare(b.path));
|
|
177
|
+
if (out.length > maxRoutes) {
|
|
178
|
+
const original = out.length;
|
|
179
|
+
out = out.slice(0, maxRoutes);
|
|
180
|
+
if (warn)
|
|
181
|
+
console.warn(`Detected ${original} routes, capping at ${maxRoutes}. Use --max-routes to increase.`);
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
export function isDynamicRoute(route) {
|
|
186
|
+
return /[[\]:*]/.test(route);
|
|
187
|
+
}
|
|
188
|
+
/** Apply a sample URL for a dynamic route; returns the route unchanged when static. */
|
|
189
|
+
export function resolveSample(route, samples = {}) {
|
|
190
|
+
return samples[route] ?? route;
|
|
191
|
+
}
|
|
192
|
+
// ============================================================
|
|
193
|
+
// File-list API (framework rules only, no import graph)
|
|
194
|
+
// ============================================================
|
|
195
|
+
export function getChangedFiles(diffTarget, cwd = process.cwd()) {
|
|
100
196
|
try {
|
|
101
|
-
|
|
102
|
-
encoding: 'utf-8',
|
|
103
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
104
|
-
cwd,
|
|
105
|
-
}).trim();
|
|
106
|
-
return output ? output.split('\n').filter(Boolean) : [];
|
|
197
|
+
return gitChangedFiles(cwd, diffTarget);
|
|
107
198
|
}
|
|
108
199
|
catch {
|
|
109
200
|
return [];
|
|
110
201
|
}
|
|
111
202
|
}
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
203
|
+
export function detectRoutes(changedFiles, options = {}) {
|
|
204
|
+
if (changedFiles.length === 0)
|
|
205
|
+
return [];
|
|
206
|
+
const adapter = adapterFor(options.framework || detectFramework());
|
|
207
|
+
return rankAndCap(adapter.directRoutes(changedFiles.map(adapter.normalize)), options.maxRoutes ?? CONFIG_DEFAULTS.maxRoutes);
|
|
208
|
+
}
|
|
209
|
+
/** For a layout-only route (no page of its own), the closest static page beneath it. */
|
|
210
|
+
function nearestPageRoute(route, knownRoutes) {
|
|
211
|
+
if (knownRoutes.includes(route))
|
|
212
|
+
return route;
|
|
213
|
+
const prefix = route === '/' ? '/' : route + '/';
|
|
214
|
+
return knownRoutes.find(r => r.startsWith(prefix) && !isDynamicRoute(r)) ?? null;
|
|
215
|
+
}
|
|
216
|
+
export function detectRoutesForRepo(options = {}) {
|
|
217
|
+
const started = Date.now();
|
|
218
|
+
const root = gitRepoRoot(options.cwd || process.cwd());
|
|
219
|
+
const config = options.config || {};
|
|
220
|
+
const maxRoutes = options.maxRoutes ?? config.maxRoutes ?? CONFIG_DEFAULTS.maxRoutes;
|
|
221
|
+
const ignore = (config.ignore || []).map(p => p.replace(/^\.?\//, ''));
|
|
222
|
+
const allChanged = (options.changedFiles ?? gitChangedFiles(root, options.diffTarget))
|
|
223
|
+
.filter(f => !ignore.some(prefix => f === prefix || f.startsWith(prefix.replace(/\/?$/, '/'))));
|
|
224
|
+
// Choose the app root that owns the most changed files (deepest wins ties).
|
|
225
|
+
let appRoot = root;
|
|
226
|
+
let best = -1;
|
|
227
|
+
for (const candidate of findAppRoots(root)) {
|
|
228
|
+
const rel = toPosix(path.relative(root, candidate));
|
|
229
|
+
const prefix = rel ? rel + '/' : '';
|
|
230
|
+
const count = allChanged.filter(f => f.startsWith(prefix)).length;
|
|
231
|
+
if (count > best || (count === best && candidate.length > appRoot.length)) {
|
|
232
|
+
best = count;
|
|
233
|
+
appRoot = candidate;
|
|
123
234
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
235
|
+
}
|
|
236
|
+
const adapter = adapterFor(options.framework || frameworkForRoot(appRoot));
|
|
237
|
+
const appPrefix = toPosix(path.relative(root, appRoot));
|
|
238
|
+
const appRel = allChanged
|
|
239
|
+
.filter(f => !appPrefix || f.startsWith(appPrefix + '/'))
|
|
240
|
+
.map(f => (appPrefix ? f.slice(appPrefix.length + 1) : f));
|
|
241
|
+
const routes = [];
|
|
242
|
+
// Always-on routes from config.
|
|
243
|
+
for (const r of config.routes || []) {
|
|
244
|
+
routes.push({ path: r, sourceFile: '.pre-post.json', confidence: 'high', reason: 'Configured route' });
|
|
245
|
+
}
|
|
246
|
+
// Direct framework rules.
|
|
247
|
+
routes.push(...adapter.directRoutes(appRel.map(adapter.normalize)));
|
|
248
|
+
// Import graph: changed files → pages that import them. One walk serves both.
|
|
249
|
+
if (appRel.length) {
|
|
250
|
+
const files = walkSourceFiles(appRoot);
|
|
251
|
+
const aliases = readAliases(appRoot);
|
|
252
|
+
const entries = adapter.routeEntries(appRoot, files, aliases);
|
|
253
|
+
if (entries.size) {
|
|
254
|
+
const graph = buildImportGraph(appRoot, { files, aliases });
|
|
255
|
+
const changedAbs = appRel.map(f => path.join(appRoot, f)).filter(f => graph.files.has(f));
|
|
256
|
+
const affected = findAffectedEntries(graph, changedAbs, f => entries.has(f));
|
|
257
|
+
for (const [entry, { via, depth }] of affected) {
|
|
258
|
+
const viaRel = toPosix(path.relative(appRoot, via));
|
|
259
|
+
const entryRel = toPosix(path.relative(appRoot, entry));
|
|
260
|
+
routes.push({
|
|
261
|
+
path: entries.get(entry),
|
|
262
|
+
sourceFile: viaRel,
|
|
263
|
+
confidence: depth === 0 ? 'high' : depth <= 2 ? 'medium' : 'low',
|
|
264
|
+
reason: depth === 0 ? 'Page file changed' : `${entryRel} imports ${viaRel}${depth > 1 ? ` (${depth} hops)` : ''}`,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// Layout/special-file routes may not have a page of their own; snap them to the nearest page.
|
|
268
|
+
const known = Array.from(new Set(entries.values())).sort((a, b) => a.length - b.length);
|
|
269
|
+
const knownSet = new Set(known);
|
|
270
|
+
for (const r of routes) {
|
|
271
|
+
if (!knownSet.has(r.path)) {
|
|
272
|
+
const snapped = nearestPageRoute(r.path, known);
|
|
273
|
+
if (snapped)
|
|
274
|
+
r.path = snapped;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
132
277
|
}
|
|
133
278
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
'index.ts',
|
|
159
|
-
'index.jsx',
|
|
160
|
-
'index.js',
|
|
161
|
-
'_app.tsx',
|
|
162
|
-
'_app.ts',
|
|
163
|
-
'_app.jsx',
|
|
164
|
-
'_app.js',
|
|
165
|
-
'_document.tsx',
|
|
166
|
-
'_document.ts',
|
|
167
|
-
'_document.jsx',
|
|
168
|
-
'_document.js',
|
|
169
|
-
]);
|
|
170
|
-
}
|
|
171
|
-
function hasAnyFile(dir, filenames) {
|
|
172
|
-
return filenames.some((filename) => fs.existsSync(path.join(dir, filename)));
|
|
279
|
+
// Fallback: something changed in the app but nothing mapped → home page, low confidence.
|
|
280
|
+
if (routes.length === 0 && appRel.length > 0) {
|
|
281
|
+
routes.push({ path: '/', sourceFile: appRel[0], confidence: 'low', reason: 'No route mapping found; defaulting to /' });
|
|
282
|
+
}
|
|
283
|
+
// Dynamic routes: use samples or skip.
|
|
284
|
+
const samples = config.samples || {};
|
|
285
|
+
const skippedDynamic = new Set();
|
|
286
|
+
const resolved = [];
|
|
287
|
+
for (const r of deduplicateRoutes(routes)) {
|
|
288
|
+
if (!isDynamicRoute(r.path))
|
|
289
|
+
resolved.push(r);
|
|
290
|
+
else if (samples[r.path])
|
|
291
|
+
resolved.push({ ...r, reason: `${r.reason} (sample: ${samples[r.path]})` });
|
|
292
|
+
else
|
|
293
|
+
skippedDynamic.add(r.path);
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
framework: adapter.name,
|
|
297
|
+
appRoot,
|
|
298
|
+
changedFiles: allChanged,
|
|
299
|
+
routes: rankAndCap(resolved, maxRoutes, false),
|
|
300
|
+
skippedDynamic: Array.from(skippedDynamic),
|
|
301
|
+
durationMs: Date.now() - started,
|
|
302
|
+
};
|
|
173
303
|
}
|
|
174
304
|
//# sourceMappingURL=routes.js.map
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/run.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capture → diff pipeline shared by `pr` and the two-URL mode.
|
|
3
|
+
* Every route/viewport pair runs concurrently; the browser's page pool bounds it.
|
|
4
|
+
*/
|
|
5
|
+
import { AuthOptions, RouteCaptureOutcome, ViewportSize } from './types.js';
|
|
6
|
+
export interface CaptureTask {
|
|
7
|
+
route: string;
|
|
8
|
+
resolvedRoute: string;
|
|
9
|
+
viewport: string;
|
|
10
|
+
size: ViewportSize;
|
|
11
|
+
beforeUrl: string;
|
|
12
|
+
afterUrl: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PipelineOptions {
|
|
15
|
+
outputDir: string;
|
|
16
|
+
fullPage: boolean;
|
|
17
|
+
maxHeight: number;
|
|
18
|
+
scale: number;
|
|
19
|
+
threshold: number;
|
|
20
|
+
minChangedPixels: number;
|
|
21
|
+
wait?: number;
|
|
22
|
+
auth?: AuthOptions;
|
|
23
|
+
log?: (msg: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function routeSlug(route: string): string;
|
|
26
|
+
export declare function joinUrl(base: string, route: string): string;
|
|
27
|
+
/** Add a scheme to a bare URL (http for loopback hosts, https otherwise) and drop trailing slashes. */
|
|
28
|
+
export declare function normalizeUrl(url: string): string;
|
|
29
|
+
export declare function hostOf(url: string): string;
|
|
30
|
+
/** The one rule for "did this capture change": a ratio for big pages, an absolute floor for small edits. */
|
|
31
|
+
export declare function isChanged(diff: {
|
|
32
|
+
changedRatio: number;
|
|
33
|
+
changedPixels: number;
|
|
34
|
+
}, threshold: number, minChangedPixels: number): boolean;
|
|
35
|
+
export declare function runTasks(tasks: CaptureTask[], opts: PipelineOptions): Promise<RouteCaptureOutcome[]>;
|
|
36
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM5E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM1C;AAED,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAErI;AAqFD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAQ1G"}
|