@ttsc/metro 0.19.2 → 0.20.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 +1 -1
- package/lib/core/fingerprint.d.ts +12 -9
- package/lib/core/fingerprint.js +183 -36
- package/lib/core/fingerprint.js.map +1 -1
- package/lib/core/fingerprint.mjs +183 -36
- package/lib/core/fingerprint.mjs.map +1 -1
- package/package.json +3 -3
- package/src/core/fingerprint.ts +236 -36
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ The granularity is project-level by necessity: Metro evaluates the transformer k
|
|
|
82
82
|
|
|
83
83
|
- **Within a running dev server**, Metro re-transforms only files its watcher reports changed. Editing a type in file B updates a dependent file A on A's next transform: save A, or restart the dev server (no `--reset-cache` needed).
|
|
84
84
|
- **Files a plugin declares `volatile`** depend on non-file inputs that no fingerprint can represent; while a volatile declaration is recorded, cross-run cache reuse is disabled entirely.
|
|
85
|
-
- **If `node_modules/.cache`
|
|
85
|
+
- **If snapshot persistence fails**, a recovery document beside `node_modules/.cache/ttsc-metro` makes every later key non-reusable until the pending observations are compacted under a fresh epoch; if an older readable snapshot exists and neither the snapshot nor recovery location is writable, the transform fails instead of authorizing stale reuse.
|
|
86
86
|
|
|
87
87
|
## Caveats (v1)
|
|
88
88
|
|
|
@@ -42,8 +42,10 @@ export declare function computeProjectFingerprint(props: {
|
|
|
42
42
|
* unparseable worker file's recordings are unrecoverable, so its removal mints
|
|
43
43
|
* a fresh epoch id — every key that might have depended on the lost recordings
|
|
44
44
|
* is soundly orphaned, and later runs stabilize instead of degrading to a nonce
|
|
45
|
-
* forever.
|
|
46
|
-
*
|
|
45
|
+
* forever. A failed rewrite leaves a recovery document outside the snapshot
|
|
46
|
+
* directory so `getCacheKey` degrades to a nonce until a later compaction
|
|
47
|
+
* succeeds. If an older readable main exists and neither location is writable,
|
|
48
|
+
* preparation throws instead of authorizing stale reuse.
|
|
47
49
|
*/
|
|
48
50
|
export declare function prepareSnapshot(projectRoot: string | undefined): void;
|
|
49
51
|
/**
|
|
@@ -53,13 +55,14 @@ export declare function prepareSnapshot(projectRoot: string | undefined): void;
|
|
|
53
55
|
*/
|
|
54
56
|
export declare function readSnapshotState(base: string): SnapshotState | undefined;
|
|
55
57
|
/**
|
|
56
|
-
* Recorder held by each Metro worker.
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* `withTtsc` compacts the
|
|
58
|
+
* Recorder held by each Metro worker. It persists out-of-walk watch inputs and
|
|
59
|
+
* missing in-walk paths delivered through the transform core's `addWatchFile`
|
|
60
|
+
* hook, plus any volatile declaration. Existing in-walk files stay covered by
|
|
61
|
+
* the project walk; a missing path must be retained because its creation is a
|
|
62
|
+
* state change that the initial walk could not hash. A clean in-walk transform
|
|
63
|
+
* also writes a document so it can clear a volatile declaration from an earlier
|
|
64
|
+
* run. The unique name makes worker writes race-free; `withTtsc` compacts the
|
|
65
|
+
* files on the next run.
|
|
63
66
|
*/
|
|
64
67
|
export declare function createSnapshotRecorder(): {
|
|
65
68
|
record: (props: {
|
package/lib/core/fingerprint.js
CHANGED
|
@@ -40,6 +40,9 @@ var path = require('node:path');
|
|
|
40
40
|
*
|
|
41
41
|
* - No readable snapshot (first run, wiped cache dir, unwritable filesystem)
|
|
42
42
|
* folds a random nonce: that run shares no cache entries with any other run.
|
|
43
|
+
* - A failed snapshot write persists the pending observation beside the snapshot
|
|
44
|
+
* directory. While any such recovery document exists, readers fold a nonce;
|
|
45
|
+
* successful compaction merges it and mints a fresh epoch.
|
|
43
46
|
* - A recreated snapshot carries a fresh epoch id, so it can never alias a key
|
|
44
47
|
* from an older epoch whose recorded set is unknown.
|
|
45
48
|
* - A plugin-declared volatile output (non-file inputs; unrepresentable in any
|
|
@@ -52,10 +55,16 @@ var path = require('node:path');
|
|
|
52
55
|
const SNAPSHOT_VERSION = 1;
|
|
53
56
|
/** Snapshot directory segments under the fingerprint base directory. */
|
|
54
57
|
const SNAPSHOT_DIRECTORY = ["node_modules", ".cache", "ttsc-metro"];
|
|
58
|
+
/** Recovery-document prefix in the parent cache directory. */
|
|
59
|
+
const UNHEALTHY_SNAPSHOT_PREFIX = "ttsc-metro.unhealthy-";
|
|
55
60
|
/** Main snapshot file name (epoch id + compacted recorded inputs). */
|
|
56
61
|
const MAIN_SNAPSHOT = "graph-inputs.json";
|
|
57
62
|
/** Worker snapshot file prefix; each worker appends a unique suffix. */
|
|
58
63
|
const WORKER_SNAPSHOT_PREFIX = "graph-inputs.worker-";
|
|
64
|
+
/** Prefix used after a compactor atomically claims an immutable worker file. */
|
|
65
|
+
const CLAIMED_WORKER_SNAPSHOT_PREFIX = "graph-inputs.worker-claimed-";
|
|
66
|
+
/** Bases whose latest observation is not yet durable in the main snapshot. */
|
|
67
|
+
const unhealthySnapshots = new Set();
|
|
59
68
|
/**
|
|
60
69
|
* Resolve the base directory both fingerprint sides agree on: Metro's
|
|
61
70
|
* `projectRoot` when known (`withTtsc` reads it from the config, `getCacheKey`
|
|
@@ -153,12 +162,20 @@ function nonce() {
|
|
|
153
162
|
* unparseable worker file's recordings are unrecoverable, so its removal mints
|
|
154
163
|
* a fresh epoch id — every key that might have depended on the lost recordings
|
|
155
164
|
* is soundly orphaned, and later runs stabilize instead of degrading to a nonce
|
|
156
|
-
* forever.
|
|
157
|
-
*
|
|
165
|
+
* forever. A failed rewrite leaves a recovery document outside the snapshot
|
|
166
|
+
* directory so `getCacheKey` degrades to a nonce until a later compaction
|
|
167
|
+
* succeeds. If an older readable main exists and neither location is writable,
|
|
168
|
+
* preparation throws instead of authorizing stale reuse.
|
|
158
169
|
*/
|
|
159
170
|
function prepareSnapshot(projectRoot) {
|
|
171
|
+
const base = resolveFingerprintBase(projectRoot);
|
|
172
|
+
let hadReadableMain = false;
|
|
173
|
+
let pending = {
|
|
174
|
+
files: [],
|
|
175
|
+
version: SNAPSHOT_VERSION,
|
|
176
|
+
volatile: false,
|
|
177
|
+
};
|
|
160
178
|
try {
|
|
161
|
-
const base = resolveFingerprintBase(projectRoot);
|
|
162
179
|
// A nonexistent base can never be a working Metro setup (Metro verifies
|
|
163
180
|
// the project root exists), so preparing a snapshot there would only
|
|
164
181
|
// materialize directory trees at arbitrary paths.
|
|
@@ -171,31 +188,44 @@ function prepareSnapshot(projectRoot) {
|
|
|
171
188
|
// comment): a concurrent compactor deletes a worker file only after the
|
|
172
189
|
// merged main is renamed into place, so whatever this enumeration misses
|
|
173
190
|
// is already inside the main read below.
|
|
191
|
+
claimWorkerFiles(directory);
|
|
192
|
+
const recovery = readUnhealthySnapshots(base);
|
|
174
193
|
const workers = readWorkerFiles(directory);
|
|
194
|
+
if (!recovery.readable || !workers.readable) {
|
|
195
|
+
throw new Error("Unable to enumerate Metro snapshot state.");
|
|
196
|
+
}
|
|
175
197
|
const main = readMainDocument(directory);
|
|
198
|
+
hadReadableMain = main !== undefined && typeof main.id === "string";
|
|
176
199
|
const files = new Set(main?.files ?? []);
|
|
177
|
-
const
|
|
200
|
+
const observations = [...recovery.entries, ...workers.entries];
|
|
201
|
+
const volatile = observations.length === 0
|
|
178
202
|
? (main?.volatile ?? false)
|
|
179
203
|
: // Worker files carry the previous run's fresh observations, so they
|
|
180
204
|
// own the volatile verdict: a removed volatile declaration must be
|
|
181
205
|
// able to clear the sticky flag.
|
|
182
|
-
|
|
183
|
-
for (const entry of
|
|
206
|
+
observations.some((entry) => entry.volatile);
|
|
207
|
+
for (const entry of observations) {
|
|
184
208
|
for (const file of entry.files) {
|
|
185
209
|
files.add(file);
|
|
186
210
|
}
|
|
187
211
|
}
|
|
188
|
-
|
|
212
|
+
const recovering = unhealthySnapshots.has(base) ||
|
|
213
|
+
recovery.paths.length !== 0 ||
|
|
214
|
+
recovery.corruptPaths.length !== 0;
|
|
215
|
+
pending = {
|
|
189
216
|
files: [...files].sort(),
|
|
190
|
-
id: workers.corruptPaths.length === 0
|
|
217
|
+
id: !recovering && workers.corruptPaths.length === 0
|
|
191
218
|
? (main?.id ?? node_crypto.randomBytes(16).toString("hex"))
|
|
192
219
|
: node_crypto.randomBytes(16).toString("hex"),
|
|
193
220
|
version: SNAPSHOT_VERSION,
|
|
194
221
|
volatile,
|
|
195
|
-
}
|
|
222
|
+
};
|
|
223
|
+
writeSnapshotDocument(path.join(directory, MAIN_SNAPSHOT), pending);
|
|
196
224
|
for (const file of [
|
|
197
|
-
...workers.paths,
|
|
198
|
-
...workers.corruptPaths,
|
|
225
|
+
...workers.paths.filter(isClaimedWorkerSnapshot),
|
|
226
|
+
...workers.corruptPaths.filter(isClaimedWorkerSnapshot),
|
|
227
|
+
...recovery.paths,
|
|
228
|
+
...recovery.corruptPaths,
|
|
199
229
|
...listTemporaryFiles(directory),
|
|
200
230
|
]) {
|
|
201
231
|
try {
|
|
@@ -206,9 +236,22 @@ function prepareSnapshot(projectRoot) {
|
|
|
206
236
|
// lost, and the next compaction retries.
|
|
207
237
|
}
|
|
208
238
|
}
|
|
239
|
+
const remainingRecovery = readUnhealthySnapshots(base);
|
|
240
|
+
if (remainingRecovery.readable &&
|
|
241
|
+
remainingRecovery.paths.length === 0 &&
|
|
242
|
+
remainingRecovery.corruptPaths.length === 0) {
|
|
243
|
+
unhealthySnapshots.delete(base);
|
|
244
|
+
}
|
|
209
245
|
}
|
|
210
|
-
catch {
|
|
211
|
-
|
|
246
|
+
catch (snapshotError) {
|
|
247
|
+
try {
|
|
248
|
+
persistUnhealthySnapshot(base, pending);
|
|
249
|
+
}
|
|
250
|
+
catch (recoveryError) {
|
|
251
|
+
if (hadReadableMain || hasReadableMainSnapshot(base)) {
|
|
252
|
+
throw new AggregateError([snapshotError, recoveryError], "Unable to persist Metro snapshot state or its recovery record.");
|
|
253
|
+
}
|
|
254
|
+
}
|
|
212
255
|
}
|
|
213
256
|
}
|
|
214
257
|
/**
|
|
@@ -243,10 +286,19 @@ function listTemporaryFiles(directory) {
|
|
|
243
286
|
* recorded set cannot be trusted, so the caller degrades to a nonce).
|
|
244
287
|
*/
|
|
245
288
|
function readSnapshotState(base) {
|
|
289
|
+
if (unhealthySnapshots.has(base)) {
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
const recovery = readUnhealthySnapshots(base);
|
|
293
|
+
if (!recovery.readable ||
|
|
294
|
+
recovery.paths.length !== 0 ||
|
|
295
|
+
recovery.corruptPaths.length !== 0) {
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
246
298
|
const directory = snapshotDirectory(base);
|
|
247
299
|
// Worker files strictly before the main file — see the module doc comment.
|
|
248
300
|
const workers = readWorkerFiles(directory);
|
|
249
|
-
if (workers.corruptPaths.length !== 0) {
|
|
301
|
+
if (!workers.readable || workers.corruptPaths.length !== 0) {
|
|
250
302
|
return undefined;
|
|
251
303
|
}
|
|
252
304
|
const main = readMainDocument(directory);
|
|
@@ -264,13 +316,14 @@ function readSnapshotState(base) {
|
|
|
264
316
|
return { files: [...files].sort(), id: main.id, volatile };
|
|
265
317
|
}
|
|
266
318
|
/**
|
|
267
|
-
* Recorder held by each Metro worker.
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
* `withTtsc` compacts the
|
|
319
|
+
* Recorder held by each Metro worker. It persists out-of-walk watch inputs and
|
|
320
|
+
* missing in-walk paths delivered through the transform core's `addWatchFile`
|
|
321
|
+
* hook, plus any volatile declaration. Existing in-walk files stay covered by
|
|
322
|
+
* the project walk; a missing path must be retained because its creation is a
|
|
323
|
+
* state change that the initial walk could not hash. A clean in-walk transform
|
|
324
|
+
* also writes a document so it can clear a volatile declaration from an earlier
|
|
325
|
+
* run. The unique name makes worker writes race-free; `withTtsc` compacts the
|
|
326
|
+
* files on the next run.
|
|
274
327
|
*/
|
|
275
328
|
function createSnapshotRecorder() {
|
|
276
329
|
const suffix = `${process.pid.toString(36)}-${node_crypto.randomBytes(6).toString("hex")}`;
|
|
@@ -282,6 +335,7 @@ function createSnapshotRecorder() {
|
|
|
282
335
|
state = {
|
|
283
336
|
dirty: false,
|
|
284
337
|
files: new Set(),
|
|
338
|
+
observed: false,
|
|
285
339
|
roots: fingerprintRoots(base, explicitProject),
|
|
286
340
|
volatile: false,
|
|
287
341
|
};
|
|
@@ -293,21 +347,28 @@ function createSnapshotRecorder() {
|
|
|
293
347
|
if (!state.dirty) {
|
|
294
348
|
return;
|
|
295
349
|
}
|
|
350
|
+
const document = {
|
|
351
|
+
files: [...state.files].sort(),
|
|
352
|
+
version: SNAPSHOT_VERSION,
|
|
353
|
+
volatile: state.volatile,
|
|
354
|
+
};
|
|
296
355
|
try {
|
|
297
356
|
const directory = snapshotDirectory(base);
|
|
298
357
|
fs.mkdirSync(directory, { recursive: true });
|
|
299
|
-
writeSnapshotDocument(path.join(directory, `${WORKER_SNAPSHOT_PREFIX}${suffix}.json`),
|
|
300
|
-
files: [...state.files].sort(),
|
|
301
|
-
version: SNAPSHOT_VERSION,
|
|
302
|
-
volatile: state.volatile,
|
|
303
|
-
});
|
|
358
|
+
writeSnapshotDocument(path.join(directory, `${WORKER_SNAPSHOT_PREFIX}${suffix}.json`), document);
|
|
304
359
|
// Cleared only on success so a transient write failure retries on the
|
|
305
360
|
// next recording instead of silently dropping the observed state.
|
|
306
361
|
state.dirty = false;
|
|
307
362
|
}
|
|
308
|
-
catch {
|
|
309
|
-
|
|
310
|
-
|
|
363
|
+
catch (snapshotError) {
|
|
364
|
+
try {
|
|
365
|
+
persistUnhealthySnapshot(base, document);
|
|
366
|
+
}
|
|
367
|
+
catch (recoveryError) {
|
|
368
|
+
if (hasReadableMainSnapshot(base)) {
|
|
369
|
+
throw new AggregateError([snapshotError, recoveryError], "Unable to persist a Metro snapshot observation or its recovery record.");
|
|
370
|
+
}
|
|
371
|
+
}
|
|
311
372
|
}
|
|
312
373
|
}
|
|
313
374
|
return {
|
|
@@ -315,8 +376,18 @@ function createSnapshotRecorder() {
|
|
|
315
376
|
const base = resolveFingerprintBase(props.projectRoot);
|
|
316
377
|
const state = stateFor(props.projectRoot, props.explicitProject);
|
|
317
378
|
const input = path.resolve(props.input);
|
|
379
|
+
const firstObservation = !state.observed;
|
|
380
|
+
state.observed = true;
|
|
318
381
|
if (state.files.has(input) ||
|
|
319
|
-
|
|
382
|
+
(fs.existsSync(input) &&
|
|
383
|
+
state.roots.some((root) => api.isProjectWalkPath(root, input)))) {
|
|
384
|
+
// Even when every input belongs to the project walk, the worker must
|
|
385
|
+
// publish that it performed a clean transform. Otherwise an old main
|
|
386
|
+
// snapshot with `volatile: true` remains sticky forever.
|
|
387
|
+
if (firstObservation || state.dirty) {
|
|
388
|
+
state.dirty = true;
|
|
389
|
+
flush(base, state);
|
|
390
|
+
}
|
|
320
391
|
return;
|
|
321
392
|
}
|
|
322
393
|
state.files.add(input);
|
|
@@ -327,6 +398,7 @@ function createSnapshotRecorder() {
|
|
|
327
398
|
const base = resolveFingerprintBase(props.projectRoot);
|
|
328
399
|
const state = stateFor(props.projectRoot, props.explicitProject);
|
|
329
400
|
if (state.volatile) {
|
|
401
|
+
flush(base, state);
|
|
330
402
|
return;
|
|
331
403
|
}
|
|
332
404
|
state.volatile = true;
|
|
@@ -338,6 +410,64 @@ function createSnapshotRecorder() {
|
|
|
338
410
|
function snapshotDirectory(base) {
|
|
339
411
|
return path.join(base, ...SNAPSHOT_DIRECTORY);
|
|
340
412
|
}
|
|
413
|
+
function snapshotCacheDirectory(base) {
|
|
414
|
+
return path.dirname(snapshotDirectory(base));
|
|
415
|
+
}
|
|
416
|
+
function hasReadableMainSnapshot(base) {
|
|
417
|
+
const main = readMainDocument(snapshotDirectory(base));
|
|
418
|
+
return main !== undefined && typeof main.id === "string";
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Persist a failed observation where a read-only snapshot directory cannot hide
|
|
422
|
+
* it.
|
|
423
|
+
*/
|
|
424
|
+
function persistUnhealthySnapshot(base, document) {
|
|
425
|
+
unhealthySnapshots.add(base);
|
|
426
|
+
const directory = snapshotCacheDirectory(base);
|
|
427
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
428
|
+
writeSnapshotDocument(path.join(directory, `${UNHEALTHY_SNAPSHOT_PREFIX}${process.pid.toString(36)}-${node_crypto.randomBytes(8).toString("hex")}.json`), document);
|
|
429
|
+
}
|
|
430
|
+
function readUnhealthySnapshots(base) {
|
|
431
|
+
return readSnapshotFiles(snapshotCacheDirectory(base), UNHEALTHY_SNAPSHOT_PREFIX);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Move each live worker document to a unique immutable name before reading it.
|
|
435
|
+
* A concurrent worker publishes its next cumulative document at the original
|
|
436
|
+
* name, so deleting the claimed copy after the main write can never erase a
|
|
437
|
+
* newer observation. Claimed names still match the reader prefix, keeping the
|
|
438
|
+
* worker-before-main visibility invariant during compaction.
|
|
439
|
+
*/
|
|
440
|
+
function claimWorkerFiles(directory) {
|
|
441
|
+
let names;
|
|
442
|
+
try {
|
|
443
|
+
names = fs.readdirSync(directory);
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
if (isMissingFileError(error)) {
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
throw error;
|
|
450
|
+
}
|
|
451
|
+
const claim = `${process.pid.toString(36)}-${node_crypto.randomBytes(6).toString("hex")}`;
|
|
452
|
+
for (const name of names) {
|
|
453
|
+
if (!name.startsWith(WORKER_SNAPSHOT_PREFIX) ||
|
|
454
|
+
name.startsWith(CLAIMED_WORKER_SNAPSHOT_PREFIX) ||
|
|
455
|
+
!name.endsWith(".json")) {
|
|
456
|
+
continue;
|
|
457
|
+
}
|
|
458
|
+
try {
|
|
459
|
+
fs.renameSync(path.join(directory, name), path.join(directory, `${CLAIMED_WORKER_SNAPSHOT_PREFIX}${claim}-${name.slice(WORKER_SNAPSHOT_PREFIX.length)}`));
|
|
460
|
+
}
|
|
461
|
+
catch (error) {
|
|
462
|
+
if (!isMissingFileError(error)) {
|
|
463
|
+
throw error;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
function isClaimedWorkerSnapshot(file) {
|
|
469
|
+
return path.basename(file).startsWith(CLAIMED_WORKER_SNAPSHOT_PREFIX);
|
|
470
|
+
}
|
|
341
471
|
/**
|
|
342
472
|
* Read every worker snapshot file in `directory`. A file that disappears
|
|
343
473
|
* mid-read was compacted (merged into the main snapshot first) and is skipped;
|
|
@@ -345,18 +475,26 @@ function snapshotDirectory(base) {
|
|
|
345
475
|
* readers can degrade to a nonce and the compactor can sweep it.
|
|
346
476
|
*/
|
|
347
477
|
function readWorkerFiles(directory) {
|
|
478
|
+
return readSnapshotFiles(directory, WORKER_SNAPSHOT_PREFIX);
|
|
479
|
+
}
|
|
480
|
+
function readSnapshotFiles(directory, prefix) {
|
|
348
481
|
let names;
|
|
349
482
|
try {
|
|
350
483
|
names = fs.readdirSync(directory);
|
|
351
484
|
}
|
|
352
|
-
catch {
|
|
353
|
-
return {
|
|
485
|
+
catch (error) {
|
|
486
|
+
return {
|
|
487
|
+
corruptPaths: [],
|
|
488
|
+
entries: [],
|
|
489
|
+
paths: [],
|
|
490
|
+
readable: isMissingFileError(error),
|
|
491
|
+
};
|
|
354
492
|
}
|
|
355
493
|
const entries = [];
|
|
356
494
|
const paths = [];
|
|
357
495
|
const corruptPaths = [];
|
|
358
496
|
for (const name of names) {
|
|
359
|
-
if (!name.startsWith(
|
|
497
|
+
if (!name.startsWith(prefix) || !name.endsWith(".json")) {
|
|
360
498
|
continue;
|
|
361
499
|
}
|
|
362
500
|
const file = path.join(directory, name);
|
|
@@ -364,7 +502,10 @@ function readWorkerFiles(directory) {
|
|
|
364
502
|
try {
|
|
365
503
|
text = fs.readFileSync(file, "utf8");
|
|
366
504
|
}
|
|
367
|
-
catch {
|
|
505
|
+
catch (error) {
|
|
506
|
+
if (!isMissingFileError(error)) {
|
|
507
|
+
corruptPaths.push(file);
|
|
508
|
+
}
|
|
368
509
|
continue;
|
|
369
510
|
}
|
|
370
511
|
const parsed = parseSnapshotDocument(text);
|
|
@@ -375,7 +516,13 @@ function readWorkerFiles(directory) {
|
|
|
375
516
|
entries.push(parsed);
|
|
376
517
|
paths.push(file);
|
|
377
518
|
}
|
|
378
|
-
return { corruptPaths, entries, paths };
|
|
519
|
+
return { corruptPaths, entries, paths, readable: true };
|
|
520
|
+
}
|
|
521
|
+
function isMissingFileError(error) {
|
|
522
|
+
return (typeof error === "object" &&
|
|
523
|
+
error !== null &&
|
|
524
|
+
"code" in error &&
|
|
525
|
+
error.code === "ENOENT");
|
|
379
526
|
}
|
|
380
527
|
function readMainDocument(directory) {
|
|
381
528
|
let text;
|
|
@@ -412,8 +559,8 @@ function parseSnapshotDocument(text) {
|
|
|
412
559
|
/** Write a snapshot document atomically (unique temp file, then rename). */
|
|
413
560
|
function writeSnapshotDocument(file, document) {
|
|
414
561
|
const temp = `${file}.${node_crypto.randomBytes(6).toString("hex")}.tmp`;
|
|
415
|
-
fs.writeFileSync(temp, JSON.stringify(document), "utf8");
|
|
416
562
|
try {
|
|
563
|
+
fs.writeFileSync(temp, JSON.stringify(document), "utf8");
|
|
417
564
|
fs.renameSync(temp, file);
|
|
418
565
|
}
|
|
419
566
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sources":["../../src/core/fingerprint.ts"],"sourcesContent":[null],"names":["isProjectWalkPath","createHash","collectProjectInputHashes","collectExternalInputHashes","randomBytes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sources":["../../src/core/fingerprint.ts"],"sourcesContent":[null],"names":["isProjectWalkPath","createHash","collectProjectInputHashes","collectExternalInputHashes","randomBytes"],"mappings":"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"}
|