@juangadm/pre-post 1.2.0 → 1.3.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 +123 -7
- package/dist/baseline.d.ts +96 -2
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +401 -29
- package/dist/baseline.js.map +1 -1
- package/dist/bin/cli.js +21 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser.d.ts +7 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +13 -4
- package/dist/browser.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/pr.d.ts +13 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +152 -59
- package/dist/commands/pr.js.map +1 -1
- package/dist/comparison.d.ts +9 -0
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +44 -21
- package/dist/comparison.js.map +1 -1
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -1
- package/dist/github.d.ts +34 -3
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +102 -11
- package/dist/github.js.map +1 -1
- package/dist/report.d.ts +7 -0
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +31 -4
- package/dist/report.js.map +1 -1
- package/dist/sheet.d.ts +24 -0
- package/dist/sheet.d.ts.map +1 -0
- package/dist/sheet.js +94 -0
- package/dist/sheet.js.map +1 -0
- package/dist/timings.d.ts +46 -0
- package/dist/timings.d.ts.map +1 -0
- package/dist/timings.js +108 -0
- package/dist/timings.js.map +1 -0
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +21 -6
package/dist/baseline.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* The cost is time: a checkout, an install and a dev-server boot. So callers
|
|
12
12
|
* reach for it after a reachable deployment, not before one.
|
|
13
13
|
*/
|
|
14
|
-
import { spawn, execFileSync } from 'child_process';
|
|
14
|
+
import { spawn, execFile, execFileSync } from 'child_process';
|
|
15
15
|
import fs from 'fs';
|
|
16
16
|
import net from 'net';
|
|
17
17
|
import os from 'os';
|
|
@@ -115,6 +115,10 @@ export function servableDir(treeRoot, appPrefix) {
|
|
|
115
115
|
}
|
|
116
116
|
return null;
|
|
117
117
|
}
|
|
118
|
+
/** Has this app directory been installed? */
|
|
119
|
+
function isInstalled(appDir) {
|
|
120
|
+
return fs.existsSync(path.join(appDir, 'node_modules'));
|
|
121
|
+
}
|
|
118
122
|
/** Local env files, in the order a framework would layer them. */
|
|
119
123
|
const ENV_FILES = ['.env', '.env.local', '.env.development', '.env.development.local'];
|
|
120
124
|
/**
|
|
@@ -150,6 +154,90 @@ export function copyEnvFiles(from, to, appPrefix) {
|
|
|
150
154
|
}
|
|
151
155
|
return copied;
|
|
152
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Prefixes a framework uses to mark a variable as safe to send to the browser.
|
|
159
|
+
* Stripped before the name is matched, so `NEXT_PUBLIC_APP_URL` and `APP_URL`
|
|
160
|
+
* are the same question.
|
|
161
|
+
*/
|
|
162
|
+
const PUBLIC_PREFIXES = ['NEXT_PUBLIC_', 'NUXT_PUBLIC_', 'EXPO_PUBLIC_', 'REACT_APP_', 'GATSBY_', 'VITE_', 'PUBLIC_'];
|
|
163
|
+
/**
|
|
164
|
+
* Names that can only mean "the address this app is served at".
|
|
165
|
+
*
|
|
166
|
+
* Deliberately a list and not a pattern: `*_URL` would sweep up
|
|
167
|
+
* `DATABASE_URL` and an API on a second port, and pointing either of those at
|
|
168
|
+
* the dev server breaks the app more thoroughly than the wrong port ever did.
|
|
169
|
+
*
|
|
170
|
+
* And deliberately a short list. The generic names — `URL`, `BASE_URL`,
|
|
171
|
+
* `SERVER_URL`, `HOST_URL`, `PUBLIC_URL` — read as the app's own address about
|
|
172
|
+
* as often as they read as a backend on another port or, for `BASE_URL` under
|
|
173
|
+
* Vite and `PUBLIC_URL` under CRA, a path prefix that is not a URL at all.
|
|
174
|
+
* Rewriting one of those is the same class of mistake this fix is about: a
|
|
175
|
+
* page that renders and is quietly wrong. Every name here is qualified by what
|
|
176
|
+
* it addresses (`APP_`, `SITE_`, `AUTH_`), which is what makes it answerable.
|
|
177
|
+
*/
|
|
178
|
+
const ORIGIN_KEYS = new Set([
|
|
179
|
+
'APP_URL', 'APP_ORIGIN', 'APP_BASE_URL',
|
|
180
|
+
'SITE_URL', 'SITE_ORIGIN',
|
|
181
|
+
'WEBSITE_URL', 'CANONICAL_URL', 'DEPLOYMENT_URL',
|
|
182
|
+
'AUTH_URL', 'AUTH_ORIGIN', 'AUTH_BASE_URL', 'NEXTAUTH_URL', 'NEXTAUTH_URL_INTERNAL', 'BETTER_AUTH_URL',
|
|
183
|
+
]);
|
|
184
|
+
/** Does this variable name the app's own origin? */
|
|
185
|
+
export function isOriginKey(key) {
|
|
186
|
+
const prefix = PUBLIC_PREFIXES.find(p => key.startsWith(p) && key.length > p.length);
|
|
187
|
+
return ORIGIN_KEYS.has(key) || (prefix ? ORIGIN_KEYS.has(key.slice(prefix.length)) : false);
|
|
188
|
+
}
|
|
189
|
+
/** One env file's text with every origin variable pointed at `origin`. */
|
|
190
|
+
export function rewriteEnvOrigins(text, origin) {
|
|
191
|
+
const keys = [];
|
|
192
|
+
const lines = text.split('\n').map(line => {
|
|
193
|
+
const m = /^(\s*(?:export\s+)?)([A-Za-z_][A-Za-z0-9_]*)(\s*=\s*)(.*)$/.exec(line);
|
|
194
|
+
if (!m || !isOriginKey(m[2]))
|
|
195
|
+
return line;
|
|
196
|
+
keys.push(m[2]);
|
|
197
|
+
// Keep the quoting the author used; drop whatever followed, because a
|
|
198
|
+
// trailing comment about the old address is now wrong.
|
|
199
|
+
const quote = /^["']/.test(m[4]) ? m[4][0] : '';
|
|
200
|
+
return `${m[1]}${m[2]}${m[3]}${quote}${origin}${quote}`;
|
|
201
|
+
});
|
|
202
|
+
return { text: lines.join('\n'), keys };
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Point the worktree's copied env files at the baseline's real origin.
|
|
206
|
+
*
|
|
207
|
+
* The copies name the port the developer's own dev server uses, and the
|
|
208
|
+
* baseline is on an ephemeral one. An app whose auth library is told it lives
|
|
209
|
+
* at :3000 while it is answering on :51234 rejects its own callbacks: the page
|
|
210
|
+
* renders, the session never resolves, and every capture is a loading
|
|
211
|
+
* skeleton. That reads as success — a screenshot came back — which is the
|
|
212
|
+
* failure mode this whole file exists to avoid.
|
|
213
|
+
*
|
|
214
|
+
* Same constraint as the copy: only ever writes inside `dir`, and returns
|
|
215
|
+
* names, never values.
|
|
216
|
+
*/
|
|
217
|
+
export function pointEnvFilesAt(dir, origin, appPrefix) {
|
|
218
|
+
const rewritten = new Set();
|
|
219
|
+
const root = path.resolve(dir);
|
|
220
|
+
for (const sub of appPrefix ? ['', appPrefix] : ['']) {
|
|
221
|
+
for (const name of ENV_FILES) {
|
|
222
|
+
const file = path.resolve(root, sub, name);
|
|
223
|
+
if (file !== root && !file.startsWith(root + path.sep))
|
|
224
|
+
continue;
|
|
225
|
+
try {
|
|
226
|
+
if (!fs.existsSync(file))
|
|
227
|
+
continue;
|
|
228
|
+
const before = fs.readFileSync(file, 'utf-8');
|
|
229
|
+
const { text, keys } = rewriteEnvOrigins(before, origin);
|
|
230
|
+
if (!keys.length || text === before)
|
|
231
|
+
continue;
|
|
232
|
+
fs.writeFileSync(file, text);
|
|
233
|
+
for (const key of keys)
|
|
234
|
+
rewritten.add(key);
|
|
235
|
+
}
|
|
236
|
+
catch { /* best effort: the same as a missing env file */ }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return [...rewritten];
|
|
240
|
+
}
|
|
153
241
|
/** An OS-assigned free port. */
|
|
154
242
|
export function freePort() {
|
|
155
243
|
return new Promise((resolve, reject) => {
|
|
@@ -175,19 +263,27 @@ function tail(text, lines = 24) {
|
|
|
175
263
|
* the buffer is transient and freed as soon as the tail is taken.
|
|
176
264
|
*/
|
|
177
265
|
const MAX_INSTALL_OUTPUT = 64 * 1024 * 1024;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
266
|
+
/**
|
|
267
|
+
* Run one command to completion, keeping the tail of what it said.
|
|
268
|
+
*
|
|
269
|
+
* Shared by the install and the setup step that follows it: they fail the same
|
|
270
|
+
* way, and a reader needs the same thing from both — the end of the output.
|
|
271
|
+
*/
|
|
272
|
+
function runCommand(bin, argv, cwd, timeoutMs, shell = false, signal) {
|
|
273
|
+
// Asynchronous, so the other side's server and the browser download keep
|
|
274
|
+
// moving while this one installs: a synchronous call froze the whole process.
|
|
275
|
+
return new Promise(resolve => {
|
|
276
|
+
execFile(bin, argv, { cwd, shell, signal, timeout: Math.max(1, timeoutMs), encoding: 'utf-8', maxBuffer: MAX_INSTALL_OUTPUT }, (err, stdout, stderr) => {
|
|
277
|
+
// Only a failure has anything to explain, so the successful run's log is
|
|
278
|
+
// dropped rather than split into lines nothing will read.
|
|
279
|
+
if (!err)
|
|
280
|
+
return resolve({ argv, ok: true, output: '' });
|
|
281
|
+
const output = [stdout, stderr].map(part => (part ? String(part) : '')).join('');
|
|
282
|
+
resolve({ argv, ok: false, output: tail(output || err.message || '') });
|
|
283
|
+
}).stdin?.end();
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
const runInstall = (bin, argv, cwd, timeoutMs, signal) => runCommand(bin, argv, cwd, timeoutMs, false, signal);
|
|
191
287
|
/**
|
|
192
288
|
* Does this look like npm refusing to resolve a peer range?
|
|
193
289
|
*
|
|
@@ -208,14 +304,14 @@ export function isPeerConflict(output) {
|
|
|
208
304
|
* the comparison this tool exists to make is between two renders of the same
|
|
209
305
|
* app, not between two dependency trees.
|
|
210
306
|
*/
|
|
211
|
-
export function installDeps(pm, cwd, timeoutMs, run = runInstall) {
|
|
307
|
+
export async function installDeps(pm, cwd, timeoutMs, run = runInstall, signal) {
|
|
212
308
|
const deadline = Date.now() + timeoutMs;
|
|
213
|
-
const first = run(pm.bin, pm.install, cwd, timeoutMs);
|
|
214
|
-
if (first.ok || !pm.retry?.when(first.output))
|
|
309
|
+
const first = await run(pm.bin, pm.install, cwd, timeoutMs, signal);
|
|
310
|
+
if (first.ok || signal?.aborted || !pm.retry?.when(first.output))
|
|
215
311
|
return { ok: first.ok, attempts: [first] };
|
|
216
312
|
// The remainder of the original budget, not a fresh one: a first attempt
|
|
217
313
|
// that burned the clock must not let the retry double the wall time.
|
|
218
|
-
const second = run(pm.bin, pm.retry.argv, cwd, deadline - Date.now());
|
|
314
|
+
const second = await run(pm.bin, pm.retry.argv, cwd, deadline - Date.now(), signal);
|
|
219
315
|
return { ok: second.ok, attempts: [first, second] };
|
|
220
316
|
}
|
|
221
317
|
/**
|
|
@@ -252,6 +348,200 @@ export class BaselineInstallError extends NeedsHumanError {
|
|
|
252
348
|
this.name = 'BaselineInstallError';
|
|
253
349
|
}
|
|
254
350
|
}
|
|
351
|
+
const TURBO_CONFIGS = ['turbo.json', 'turbo.jsonc'];
|
|
352
|
+
/** A binary the install just put in a `node_modules/.bin`, nearest first. */
|
|
353
|
+
function localBin(name, ...dirs) {
|
|
354
|
+
const file = process.platform === 'win32' ? `${name}.cmd` : name;
|
|
355
|
+
for (const dir of dirs) {
|
|
356
|
+
const bin = path.join(dir, 'node_modules', '.bin', file);
|
|
357
|
+
if (fs.existsSync(bin))
|
|
358
|
+
return bin;
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Build the workspace packages the app imports, before the dev server starts.
|
|
364
|
+
*
|
|
365
|
+
* A monorepo app depends on sibling packages that ship compiled output, and a
|
|
366
|
+
* fresh install does not produce it — `turbo dev` normally would, but the dev
|
|
367
|
+
* script this file runs is the app's own. So the app boots against a package
|
|
368
|
+
* with no `dist`, and the baseline is an error page or a shell.
|
|
369
|
+
*
|
|
370
|
+
* `^...` is turbo's "dependencies of, excluding itself": the siblings get
|
|
371
|
+
* built, the app is left to the dev server.
|
|
372
|
+
*/
|
|
373
|
+
export function turboDependencyBuild(treeRoot, appDir) {
|
|
374
|
+
// A single-package repo has no upstream workspace to build; its dev script
|
|
375
|
+
// is the whole thing.
|
|
376
|
+
if (path.resolve(appDir) === path.resolve(treeRoot))
|
|
377
|
+
return null;
|
|
378
|
+
if (!TURBO_CONFIGS.some(name => fs.existsSync(path.join(treeRoot, name))))
|
|
379
|
+
return null;
|
|
380
|
+
const name = readPackage(appDir)?.name;
|
|
381
|
+
if (typeof name !== 'string' || !name)
|
|
382
|
+
return null;
|
|
383
|
+
const bin = localBin('turbo', appDir, treeRoot);
|
|
384
|
+
if (!bin)
|
|
385
|
+
return null;
|
|
386
|
+
const argv = ['run', 'build', `--filter=${name}^...`];
|
|
387
|
+
return { label: `turbo ${argv.join(' ')}`, bin, argv, cwd: treeRoot };
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* What to run between install and dev: `baselineSetup` if the repository
|
|
391
|
+
* configured one, else turbo's dependency build when this is a turborepo.
|
|
392
|
+
*
|
|
393
|
+
* The configured command wins outright. It is the general answer — one line in
|
|
394
|
+
* `.pre-post.json` for a repository whose baseline needs a codegen step, a
|
|
395
|
+
* prisma generate, a build this tool has never heard of — and a repository
|
|
396
|
+
* that names one has already told us the guess is not wanted.
|
|
397
|
+
*/
|
|
398
|
+
export function setupStep(treeRoot, appDir, configured) {
|
|
399
|
+
const command = configured?.trim();
|
|
400
|
+
if (command)
|
|
401
|
+
return { label: command, bin: command, argv: [], cwd: appDir, shell: true };
|
|
402
|
+
return turboDependencyBuild(treeRoot, appDir);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* The configured setup command failed, and nothing else can rescue this run.
|
|
406
|
+
*
|
|
407
|
+
* One sentence, and the output goes to the log above it, for the reason
|
|
408
|
+
* `installFailureHint` gives. The directory named is the caller's own, never
|
|
409
|
+
* the worktree: cleanup has deleted the worktree by the time anyone reads it.
|
|
410
|
+
*/
|
|
411
|
+
export function setupFailureHint(label, ranIn) {
|
|
412
|
+
return `The \`baselineSetup\` command (\`${label}\`) failed while preparing the baseline; run it in ${ranIn} to fix it, or drop it from .pre-post.json.`;
|
|
413
|
+
}
|
|
414
|
+
export class BaselineSetupError extends NeedsHumanError {
|
|
415
|
+
constructor(label, ranIn) {
|
|
416
|
+
super(setupFailureHint(label, ranIn));
|
|
417
|
+
this.name = 'BaselineSetupError';
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Files that decide what an install produces. When none of them differ between
|
|
422
|
+
* the base commit and the working tree, the two installs would be the same
|
|
423
|
+
* dependency tree, so the one already on disk can stand in for a fresh one.
|
|
424
|
+
*/
|
|
425
|
+
const LOCKFILES = [...MANAGERS.map(m => m.lockfile), 'bun.lock', 'npm-shrinkwrap.json'];
|
|
426
|
+
const INSTALL_INPUTS = [
|
|
427
|
+
...LOCKFILES.map(f => `:(glob)**/${f}`),
|
|
428
|
+
':(glob)**/package.json',
|
|
429
|
+
':(glob)**/.npmrc',
|
|
430
|
+
':(glob)**/.yarnrc.yml',
|
|
431
|
+
':(glob)**/.pnpmfile.cjs',
|
|
432
|
+
':(glob)**/pnpm-workspace.yaml',
|
|
433
|
+
];
|
|
434
|
+
/** Run git without blocking the process; resolves null when it exits non-zero. */
|
|
435
|
+
function gitAsync(args, cwd) {
|
|
436
|
+
return new Promise(resolve => {
|
|
437
|
+
execFile('git', args, { cwd, encoding: 'utf-8', maxBuffer: MAX_INSTALL_OUTPUT }, (err, stdout) => resolve(err ? null : stdout));
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Can the base commit use the dependencies this checkout already installed?
|
|
442
|
+
*
|
|
443
|
+
* Only when no install input differs between the base and the working tree,
|
|
444
|
+
* uncommitted edits included, and a lockfile is tracked (without one there is
|
|
445
|
+
* nothing to prove the trees match). Returns the package directories whose
|
|
446
|
+
* node_modules to bring across, or null to install as usual. Once the diff is
|
|
447
|
+
* clean, the index lists the same package.json files the base has, so it
|
|
448
|
+
* answers that without walking the base commit's whole tree.
|
|
449
|
+
*/
|
|
450
|
+
export async function reusableInstall(repoRoot, sha) {
|
|
451
|
+
if (await gitAsync(['diff', '--quiet', sha, '--', ...INSTALL_INPUTS], repoRoot) === null)
|
|
452
|
+
return null;
|
|
453
|
+
// The diff sees tracked files only. A new package.json or lockfile the
|
|
454
|
+
// branch has not added yet is still a different dependency tree.
|
|
455
|
+
const untracked = await gitAsync(['ls-files', '--others', '--exclude-standard', '--', ...INSTALL_INPUTS], repoRoot);
|
|
456
|
+
if (untracked === null || untracked.trim())
|
|
457
|
+
return null;
|
|
458
|
+
const tracked = await gitAsync(['ls-files', '--', ...INSTALL_INPUTS], repoRoot);
|
|
459
|
+
const files = tracked?.split('\n') ?? [];
|
|
460
|
+
if (!files.some(f => LOCKFILES.includes(path.basename(f))))
|
|
461
|
+
return null;
|
|
462
|
+
const dirs = files
|
|
463
|
+
.filter(f => path.basename(f) === 'package.json' && !f.split('/').includes('node_modules'))
|
|
464
|
+
.map(f => path.dirname(f));
|
|
465
|
+
if (dirs.some(dir => generatesDuringInstall(path.join(repoRoot, dir))))
|
|
466
|
+
return null;
|
|
467
|
+
return dirs.filter(dir => {
|
|
468
|
+
try {
|
|
469
|
+
return fs.lstatSync(path.join(repoRoot, dir, 'node_modules')).isDirectory();
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
/** Scripts a package manager runs on the project itself during an install. */
|
|
477
|
+
const INSTALL_HOOKS = ['preinstall', 'install', 'postinstall', 'prepare'];
|
|
478
|
+
/**
|
|
479
|
+
* Could this package's install have written code built from its own source?
|
|
480
|
+
*
|
|
481
|
+
* An install hook can read files no install input covers — `prisma generate`
|
|
482
|
+
* reads a schema — and write the result into node_modules. Copying that into
|
|
483
|
+
* the baseline would render Pre with the branch's generated code, so such a
|
|
484
|
+
* package is installed fresh. Prisma is checked by its output as well, because
|
|
485
|
+
* `@prisma/client` generates from its own postinstall with no project hook.
|
|
486
|
+
*/
|
|
487
|
+
function generatesDuringInstall(dir) {
|
|
488
|
+
const scripts = readPackage(dir)?.scripts ?? {};
|
|
489
|
+
if (INSTALL_HOOKS.some(hook => typeof scripts[hook] === 'string' && scripts[hook].trim()))
|
|
490
|
+
return true;
|
|
491
|
+
return fs.existsSync(path.join(dir, 'node_modules', '.prisma'));
|
|
492
|
+
}
|
|
493
|
+
const COPY_CONCURRENCY = 6;
|
|
494
|
+
/**
|
|
495
|
+
* Installs running in a caller's own checkout, by repository root. The base
|
|
496
|
+
* worktree waits on these before reusing that checkout's node_modules, which
|
|
497
|
+
* lets both sides boot at once even when nothing was installed yet.
|
|
498
|
+
*/
|
|
499
|
+
const installsInFlight = new Map();
|
|
500
|
+
/**
|
|
501
|
+
* Copy one node_modules into the worktree as its own tree.
|
|
502
|
+
*
|
|
503
|
+
* A copy, not a symlink: package managers link workspace packages with
|
|
504
|
+
* relative paths, and through a symlink those would resolve back into this
|
|
505
|
+
* checkout, so Pre would quietly render the branch's own workspace code.
|
|
506
|
+
* Turbopack also refuses a node_modules that points outside the project. The
|
|
507
|
+
* copy keeps those links relative, so they land in the worktree. On macOS
|
|
508
|
+
* (APFS) and on reflink filesystems it is copy-on-write: near-instant and no
|
|
509
|
+
* extra disk.
|
|
510
|
+
*/
|
|
511
|
+
function copyTree(from, to) {
|
|
512
|
+
const argv = process.platform === 'darwin' ? ['-c', '-R', from, to] : ['-a', '--reflink=auto', from, to];
|
|
513
|
+
return new Promise(resolve => {
|
|
514
|
+
execFile('cp', argv, { maxBuffer: MAX_INSTALL_OUTPUT }, err => {
|
|
515
|
+
if (!err)
|
|
516
|
+
return resolve(true);
|
|
517
|
+
// A cp without the clone flag (older macOS, BSD): Node's own copy.
|
|
518
|
+
fs.promises.rm(to, { recursive: true, force: true })
|
|
519
|
+
.then(() => fs.promises.cp(from, to, { recursive: true, verbatimSymlinks: true }))
|
|
520
|
+
.then(() => resolve(true), () => fs.promises.rm(to, { recursive: true, force: true }).then(() => resolve(false)));
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Bring this checkout's installed dependencies into the base worktree.
|
|
526
|
+
* True when every one was copied; on any failure the partial copies are
|
|
527
|
+
* removed so the normal install starts from a clean tree.
|
|
528
|
+
*/
|
|
529
|
+
export async function reuseInstall(repoRoot, worktree, dirs) {
|
|
530
|
+
const targets = dirs.map(dir => ({ from: path.join(repoRoot, dir, 'node_modules'), to: path.join(worktree, dir, 'node_modules') }));
|
|
531
|
+
// A few at a time: a monorepo can have hundreds of packages, and hundreds of
|
|
532
|
+
// concurrent copies thrash the disk the dev servers are reading from.
|
|
533
|
+
const queue = [...targets];
|
|
534
|
+
let ok = true;
|
|
535
|
+
const worker = async () => {
|
|
536
|
+
for (let t = queue.shift(); t && ok; t = queue.shift())
|
|
537
|
+
ok = await copyTree(t.from, t.to) && ok;
|
|
538
|
+
};
|
|
539
|
+
await Promise.all(Array.from({ length: Math.min(COPY_CONCURRENCY, targets.length) }, worker));
|
|
540
|
+
if (ok)
|
|
541
|
+
return true;
|
|
542
|
+
await Promise.all(targets.map(t => fs.promises.rm(t.to, { recursive: true, force: true })));
|
|
543
|
+
return false;
|
|
544
|
+
}
|
|
255
545
|
async function waitForServer(url, timeoutMs, alive) {
|
|
256
546
|
const deadline = Date.now() + timeoutMs;
|
|
257
547
|
while (Date.now() < deadline) {
|
|
@@ -298,6 +588,16 @@ async function serveLocally(opts) {
|
|
|
298
588
|
};
|
|
299
589
|
const timeoutMs = opts.timeoutMs ?? 300_000;
|
|
300
590
|
const deadline = Date.now() + timeoutMs;
|
|
591
|
+
/** True, having cleaned up, when the caller has given up on this side. */
|
|
592
|
+
const aborted = async () => {
|
|
593
|
+
if (!opts.signal?.aborted)
|
|
594
|
+
return false;
|
|
595
|
+
await cleanup();
|
|
596
|
+
return true;
|
|
597
|
+
};
|
|
598
|
+
const side = opts.sha ? 'pre' : 'post';
|
|
599
|
+
const timed = (name, work) => opts.timings ? opts.timings.time(`${side}.${name}`, work) : work;
|
|
600
|
+
const started = Date.now();
|
|
301
601
|
const worktree = opts.sha ? fs.mkdtempSync(path.join(os.tmpdir(), 'pre-post-base-')) : opts.repoRoot;
|
|
302
602
|
let child = null;
|
|
303
603
|
let stopped = false;
|
|
@@ -333,16 +633,16 @@ async function serveLocally(opts) {
|
|
|
333
633
|
}
|
|
334
634
|
};
|
|
335
635
|
if (opts.sha) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
catch {
|
|
636
|
+
// Asynchronous: in a large repository a checkout takes seconds, and the
|
|
637
|
+
// other side is booting meanwhile.
|
|
638
|
+
if (await gitAsync(['worktree', 'add', '--detach', '--force', worktree, opts.sha], opts.repoRoot) === null || await aborted()) {
|
|
340
639
|
await cleanup();
|
|
341
640
|
return skip('the worktree checkout failed.');
|
|
342
641
|
}
|
|
343
642
|
const copied = copyEnvFiles(opts.repoRoot, worktree, opts.appPrefix);
|
|
344
643
|
if (copied.length)
|
|
345
644
|
log(`Using local env file(s) for the baseline: ${copied.join(', ')}`);
|
|
645
|
+
opts.timings?.add(`${side}.checkout`, Date.now() - started);
|
|
346
646
|
}
|
|
347
647
|
const app = servableDir(worktree, opts.appPrefix);
|
|
348
648
|
if (!app) {
|
|
@@ -361,7 +661,7 @@ async function serveLocally(opts) {
|
|
|
361
661
|
await cleanup();
|
|
362
662
|
return skip(`neither ${declared.bin} nor npm is on PATH, so nothing can install ${where}.`);
|
|
363
663
|
}
|
|
364
|
-
const install = !
|
|
664
|
+
const install = !isInstalled(appDir);
|
|
365
665
|
// Substituting npm for the declared manager is safe in a throwaway worktree
|
|
366
666
|
// and not in the caller's own checkout: npm cannot share a node_modules with
|
|
367
667
|
// pnpm, so installing over their tree leaves the working copy broken — the
|
|
@@ -373,12 +673,32 @@ async function serveLocally(opts) {
|
|
|
373
673
|
await cleanup();
|
|
374
674
|
return skip(`${declared.bin} is not on PATH, and installing ${where} with npm instead would leave a node_modules your ${declared.bin} cannot use. Install ${declared.bin}, or run \`${declared.bin} install\` in ${appIn}.`);
|
|
375
675
|
}
|
|
376
|
-
if (pm !== declared) {
|
|
377
|
-
log(`${declared.bin} is not on PATH; installing the baseline with ${pm.bin} instead (it will not honour the ${declared.bin} lockfile).`);
|
|
378
|
-
}
|
|
379
676
|
log(`Starting a dev server for ${what} (${pm.bin} ${script}) ...`);
|
|
380
|
-
|
|
381
|
-
|
|
677
|
+
// The slowest step of a first run, and usually one that would rebuild the
|
|
678
|
+
// exact tree already on disk: most branches change code, not dependencies.
|
|
679
|
+
const tryReuse = async (sha) => {
|
|
680
|
+
// Post may be installing this checkout right now; a half-written
|
|
681
|
+
// node_modules must never be copied, so wait for it to finish.
|
|
682
|
+
await installsInFlight.get(opts.repoRoot);
|
|
683
|
+
const dirs = await reusableInstall(opts.repoRoot, sha);
|
|
684
|
+
if (!dirs?.includes(rel || '.') || !await reuseInstall(opts.repoRoot, worktree, dirs))
|
|
685
|
+
return false;
|
|
686
|
+
log(`Dependencies are unchanged since ${sha.slice(0, 7)}; reusing this checkout's install for the baseline.`);
|
|
687
|
+
return true;
|
|
688
|
+
};
|
|
689
|
+
const reused = install && opts.sha ? await timed('reuse', tryReuse(opts.sha)) : false;
|
|
690
|
+
if (await aborted())
|
|
691
|
+
return null;
|
|
692
|
+
if (install && !reused) {
|
|
693
|
+
if (pm !== declared) {
|
|
694
|
+
log(`${declared.bin} is not on PATH; installing the baseline with ${pm.bin} instead (it will not honour the ${declared.bin} lockfile).`);
|
|
695
|
+
}
|
|
696
|
+
const installing = installDeps(pm, appDir, deadline - Date.now(), runInstall, opts.signal);
|
|
697
|
+
if (worktree === opts.repoRoot)
|
|
698
|
+
installsInFlight.set(opts.repoRoot, installing);
|
|
699
|
+
const result = await timed('install', installing).finally(() => installsInFlight.delete(opts.repoRoot));
|
|
700
|
+
if (await aborted())
|
|
701
|
+
return null;
|
|
382
702
|
if (!result.ok) {
|
|
383
703
|
const tried = result.attempts.map(a => `\`${pm.bin} ${a.argv.join(' ')}\``).join(', then ');
|
|
384
704
|
log(`${tried} failed${worktree === opts.repoRoot ? '' : ' in a throwaway worktree of the base commit'}:`);
|
|
@@ -391,8 +711,51 @@ async function serveLocally(opts) {
|
|
|
391
711
|
log(`\`${pm.bin} ${pm.install.join(' ')}\` hit a peer-dependency conflict; installed the baseline with \`${retried.argv.join(' ')}\` instead.`);
|
|
392
712
|
}
|
|
393
713
|
}
|
|
714
|
+
// Before the setup step, not after it: that step is a build, and a build that
|
|
715
|
+
// reads NEXT_PUBLIC_APP_URL bakes whatever the file says into its output.
|
|
716
|
+
// Rewriting afterwards would leave the compiled copy holding the old port —
|
|
717
|
+
// the same mismatch, now somewhere no later rewrite can reach. The cost is
|
|
718
|
+
// that the port is claimed across the build rather than a moment before the
|
|
719
|
+
// spawn; if something else takes it meanwhile, the server fails to bind and
|
|
720
|
+
// this run says so, which is the failure worth having.
|
|
394
721
|
const port = await freePort();
|
|
395
722
|
const url = `http://localhost:${port}`;
|
|
723
|
+
// Only the throwaway worktree's copies may be edited; the caller's own env
|
|
724
|
+
// files are theirs.
|
|
725
|
+
if (worktree !== opts.repoRoot) {
|
|
726
|
+
const pointed = pointEnvFilesAt(worktree, url, opts.appPrefix);
|
|
727
|
+
if (pointed.length)
|
|
728
|
+
log(`Pointed ${pointed.join(', ')} at ${url} so the baseline agrees with its own address.`);
|
|
729
|
+
}
|
|
730
|
+
// The inferred build follows a fresh install and nothing else: a tree that
|
|
731
|
+
// already had node_modules has its workspace packages built too, and running
|
|
732
|
+
// a repo-wide build over someone's own checkout to take a screenshot is not
|
|
733
|
+
// a trade this tool gets to make. A configured command is different — the
|
|
734
|
+
// repository asked for it, so it runs either way.
|
|
735
|
+
const configured = Boolean(opts.setup?.trim());
|
|
736
|
+
const setup = configured ? setupStep(worktree, appDir, opts.setup) : install ? setupStep(worktree, appDir) : null;
|
|
737
|
+
if (setup) {
|
|
738
|
+
log(`Preparing ${what} before its dev server (${setup.label}) ...`);
|
|
739
|
+
const attempt = await timed('setup', runCommand(setup.bin, setup.argv, setup.cwd, deadline - Date.now(), setup.shell, opts.signal));
|
|
740
|
+
if (await aborted())
|
|
741
|
+
return null;
|
|
742
|
+
if (!attempt.ok) {
|
|
743
|
+
// Loud either way. A dev server started over a half-built workspace
|
|
744
|
+
// serves an error page, and an error page is a baseline that reports a
|
|
745
|
+
// wall of changes this branch never made.
|
|
746
|
+
log(attempt.output);
|
|
747
|
+
await cleanup();
|
|
748
|
+
// A command the repository asked for is the install's case exactly
|
|
749
|
+
// (docs/portability.md §1): yielding here lets the run fall through to a
|
|
750
|
+
// configured production URL and publish a different comparison as if it
|
|
751
|
+
// were this one, or die further along on an error about dev servers that
|
|
752
|
+
// names nothing the reader can fix. Only the inferred build yields —
|
|
753
|
+
// nobody asked for it, so it is allowed to be one option among several.
|
|
754
|
+
if (configured)
|
|
755
|
+
throw new BaselineSetupError(setup.label, appIn);
|
|
756
|
+
return skip(`\`${setup.label}\` failed.`);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
396
759
|
child = spawn(pm.bin, pm.run(script, ['--port', String(port)]), {
|
|
397
760
|
cwd: appDir,
|
|
398
761
|
stdio: 'ignore',
|
|
@@ -400,9 +763,18 @@ async function serveLocally(opts) {
|
|
|
400
763
|
env: { ...process.env, PORT: String(port), BROWSER: 'none' },
|
|
401
764
|
});
|
|
402
765
|
child.unref();
|
|
403
|
-
const ready = await waitForServer(url, Math.max(1, deadline - Date.now()), () => !!child && child.exitCode === null);
|
|
766
|
+
const ready = await timed('boot', waitForServer(url, Math.max(1, deadline - Date.now()), () => !!child && child.exitCode === null && !opts.signal?.aborted));
|
|
767
|
+
if (await aborted())
|
|
768
|
+
return null;
|
|
404
769
|
if (!ready) {
|
|
770
|
+
// A server that died is not one that was slow. Reporting "did not start
|
|
771
|
+
// within 300s" about one that exited after two seconds, as a CI run did,
|
|
772
|
+
// sends the reader to look at timeouts instead of at the crash.
|
|
773
|
+
const exitCode = child?.exitCode ?? null;
|
|
405
774
|
await cleanup();
|
|
775
|
+
if (exitCode !== null) {
|
|
776
|
+
return skip(`${pm.bin} ${script} exited with code ${exitCode} before serving; run it in ${appIn} to see why.`);
|
|
777
|
+
}
|
|
406
778
|
return skip(`${pm.bin} ${script} did not start serving within ${Math.round(timeoutMs / 1000)}s (missing env vars are the usual cause).`);
|
|
407
779
|
}
|
|
408
780
|
process.once('SIGINT', onSignal);
|
package/dist/baseline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
|