@paraharness/git 0.2.0 → 0.2.1

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.
@@ -22,7 +22,7 @@ export declare function compileWorktreeExcludeMatcher(excludeGlobs: readonly str
22
22
  /**
23
23
  * Computes a structural SHA-256 digest of `<worktreePath>/node_modules`.
24
24
  *
25
- * Walks regular files and symlinks inside `node_modules` (excluding top-level and nested `.cache`, `.vite`, and `.vitest`)
25
+ * Walks regular files and symlinks inside `node_modules` (excluding transient `.cache`, `.vite*`, `.vitest*`, `.pnpm-task-run-state*` directories and `.pnpm-workspace-state*.json` files)
26
26
  * so `diffEffects` and `restoreCheckpoint` can detect `node_modules` tampering without performing backup I/O.
27
27
  *
28
28
  * @param {string} worktreePath - Worktree root directory path.
@@ -33,7 +33,7 @@ export declare function computeNodeModulesDigest(worktreePath: string): Promise<
33
33
  /**
34
34
  * Mirrors `<worktreePath>/node_modules` into `<backupRootDir>/<digest>` via Copy-on-Write if not already backed up.
35
35
  *
36
- * Skips transient `.cache`, `.vite`, and `.vitest` subdirectories and short-circuits when `digest === 'ABSENT'`
36
+ * Skips transient `.cache`, `.vite*`, `.vitest*`, `.pnpm-task-run-state*` subdirectories and `.pnpm-workspace-state*.json` files, and short-circuits when `digest === 'ABSENT'`
37
37
  * or `<backupRootDir>/<digest>` already exists on disk.
38
38
  *
39
39
  * @param {string} worktreePath - Worktree root directory path.
@@ -1 +1 @@
1
- {"version":3,"file":"file-digest-and-globs.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/file-digest-and-globs.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAqB9B;AAsBD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"file-digest-and-globs.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/file-digest-and-globs.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAqB9B;AA8BD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -3,7 +3,7 @@ import { constants as fsConstants } from 'node:fs';
3
3
  import { chmod, copyFile, lstat, mkdir, readdir, readFile, readlink, rm, symlink, } from 'node:fs/promises';
4
4
  import path from 'node:path';
5
5
  import picomatch from 'picomatch';
6
- import { COMPILED_EXCLUDE_MATCHER_CACHE, IMPLICIT_REPO_EXCLUDE_GLOBS, } from './git-executor.constants.js';
6
+ import { COMPILED_EXCLUDE_MATCHER_CACHE, IMPLICIT_REPO_EXCLUDE_GLOBS, TRANSIENT_NODE_MODULES_DIR_SEGMENT_REGEX, TRANSIENT_NODE_MODULES_FILE_REGEX, } from './git-executor.constants.js';
7
7
  /**
8
8
  * Computes the `${mode}:${sha256}` digest for a worktree path using `lstat(2)` and `readlink(2)` / `readFile(2)`.
9
9
  *
@@ -68,26 +68,37 @@ export function compileWorktreeExcludeMatcher(excludeGlobs) {
68
68
  return compiled;
69
69
  }
70
70
  /**
71
- * Checks whether a relative directory path inside `node_modules` is a transient bundler or test-runner cache directory.
71
+ * Checks whether a relative directory path inside `node_modules` is a transient bundler, test-runner, or pnpm task-run state directory.
72
72
  *
73
- * Matches both top-level and nested `.cache`, `.vite`, and `.vitest` directories.
73
+ * Matches top-level and nested `.cache`, `.vite*`, `.vitest*`, and `.pnpm-task-run-state*` directory segments.
74
74
  *
75
75
  * @param {string} relDir - Forward-slash relative directory path inside `node_modules`.
76
76
  *
77
- * @returns {boolean} `true` when `relDir` is a transient `.cache`, `.vite`, or `.vitest` directory.
77
+ * @returns {boolean} `true` when `relDir` contains a transient cache or state directory segment.
78
78
  */
79
79
  function isTransientNodeModulesCacheDir(relDir) {
80
- return (relDir === '.cache' ||
81
- relDir === '.vite' ||
82
- relDir === '.vitest' ||
83
- relDir.endsWith('/.cache') ||
84
- relDir.endsWith('/.vite') ||
85
- relDir.endsWith('/.vitest'));
80
+ if (relDir.length === 0)
81
+ return false;
82
+ for (const segment of relDir.split('/')) {
83
+ if (TRANSIENT_NODE_MODULES_DIR_SEGMENT_REGEX.test(segment))
84
+ return true;
85
+ }
86
+ return false;
87
+ }
88
+ /**
89
+ * Checks whether a file entry inside `node_modules` is a transient pnpm workspace state file.
90
+ *
91
+ * @param {string} entryName - Basename of the file entry inside `node_modules`.
92
+ *
93
+ * @returns {boolean} `true` when `entryName` matches `.pnpm-workspace-state*.json`.
94
+ */
95
+ function isTransientNodeModulesStateFile(entryName) {
96
+ return TRANSIENT_NODE_MODULES_FILE_REGEX.test(entryName);
86
97
  }
87
98
  /**
88
99
  * Computes a structural SHA-256 digest of `<worktreePath>/node_modules`.
89
100
  *
90
- * Walks regular files and symlinks inside `node_modules` (excluding top-level and nested `.cache`, `.vite`, and `.vitest`)
101
+ * Walks regular files and symlinks inside `node_modules` (excluding transient `.cache`, `.vite*`, `.vitest*`, `.pnpm-task-run-state*` directories and `.pnpm-workspace-state*.json` files)
91
102
  * so `diffEffects` and `restoreCheckpoint` can detect `node_modules` tampering without performing backup I/O.
92
103
  *
93
104
  * @param {string} worktreePath - Worktree root directory path.
@@ -109,9 +120,11 @@ export async function computeNodeModulesDigest(worktreePath) {
109
120
  entries.sort((a, b) => a.name.localeCompare(b.name));
110
121
  for (const entry of entries) {
111
122
  const childRel = relDir.length === 0 ? entry.name : `${relDir}/${entry.name}`;
112
- if (entry.isDirectory())
113
- stack.push(childRel);
114
- else {
123
+ if (entry.isDirectory()) {
124
+ if (!isTransientNodeModulesCacheDir(childRel))
125
+ stack.push(childRel);
126
+ }
127
+ else if (!isTransientNodeModulesStateFile(entry.name)) {
115
128
  const digest = await computePathModeAndSha256(path.join(nmRoot, childRel));
116
129
  hash.update(`${childRel}:${digest}\n`, 'utf8');
117
130
  }
@@ -122,7 +135,7 @@ export async function computeNodeModulesDigest(worktreePath) {
122
135
  /**
123
136
  * Mirrors `<worktreePath>/node_modules` into `<backupRootDir>/<digest>` via Copy-on-Write if not already backed up.
124
137
  *
125
- * Skips transient `.cache`, `.vite`, and `.vitest` subdirectories and short-circuits when `digest === 'ABSENT'`
138
+ * Skips transient `.cache`, `.vite*`, `.vitest*`, `.pnpm-task-run-state*` subdirectories and `.pnpm-workspace-state*.json` files, and short-circuits when `digest === 'ABSENT'`
126
139
  * or `<backupRootDir>/<digest>` already exists on disk.
127
140
  *
128
141
  * @param {string} worktreePath - Worktree root directory path.
@@ -147,9 +160,11 @@ export async function snapshotNodeModulesForCheckpoint(worktreePath, digest, bac
147
160
  const entries = await readdir(path.join(nmRoot, relDir), { withFileTypes: true });
148
161
  for (const entry of entries) {
149
162
  const childRel = relDir.length === 0 ? entry.name : `${relDir}/${entry.name}`;
150
- if (entry.isDirectory())
151
- stack.push(childRel);
152
- else {
163
+ if (entry.isDirectory()) {
164
+ if (!isTransientNodeModulesCacheDir(childRel))
165
+ stack.push(childRel);
166
+ }
167
+ else if (!isTransientNodeModulesStateFile(entry.name)) {
153
168
  await copyFileCowOrValue(path.join(nmRoot, childRel), path.join(digestBackupDir, childRel));
154
169
  }
155
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-digest-and-globs.js","sourceRoot":"","sources":["../../../src/executors/internal/file-digest-and-globs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-digest-and-globs.js","sourceRoot":"","sources":["../../../src/executors/internal/file-digest-and-globs.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,12 @@ export declare const HARNESS_GIT_IDENTITY_ENV: Readonly<Record<string, string>>;
26
26
  * Memoized cache of compiled `picomatch` exclusion predicates keyed by null-delimited glob patterns.
27
27
  */
28
28
  export declare const COMPILED_EXCLUDE_MATCHER_CACHE: Map<string, (relPath: string) => boolean>;
29
+ /**
30
+ * Regular expression matching transient bundler, test-runner, and pnpm task state directory segments inside `node_modules`.
31
+ */
32
+ export declare const TRANSIENT_NODE_MODULES_DIR_SEGMENT_REGEX: RegExp;
33
+ /**
34
+ * Regular expression matching transient pnpm workspace state JSON files inside `node_modules`.
35
+ */
36
+ export declare const TRANSIENT_NODE_MODULES_FILE_REGEX: RegExp;
29
37
  //# sourceMappingURL=git-executor.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-executor.constants.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/git-executor.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAAY,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAW,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAW,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOpE,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAGlF,CAAC"}
1
+ {"version":3,"file":"git-executor.constants.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/git-executor.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qCAAqC,UAAY,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAW,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAW,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOpE,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAGlF,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,wCAAwC,QACI,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,iCAAiC,QAAsC,CAAC"}
@@ -37,4 +37,12 @@ export const HARNESS_GIT_IDENTITY_ENV = Object.freeze({
37
37
  * Memoized cache of compiled `picomatch` exclusion predicates keyed by null-delimited glob patterns.
38
38
  */
39
39
  export const COMPILED_EXCLUDE_MATCHER_CACHE = new Map();
40
+ /**
41
+ * Regular expression matching transient bundler, test-runner, and pnpm task state directory segments inside `node_modules`.
42
+ */
43
+ export const TRANSIENT_NODE_MODULES_DIR_SEGMENT_REGEX = /^\.(cache|vite|vitest|pnpm-task-run-state)(?:$|[-_])/i;
44
+ /**
45
+ * Regular expression matching transient pnpm workspace state JSON files inside `node_modules`.
46
+ */
47
+ export const TRANSIENT_NODE_MODULES_FILE_REGEX = /^\.pnpm-workspace-state.*\.json$/i;
40
48
  //# sourceMappingURL=git-executor.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-executor.constants.js","sourceRoot":"","sources":["../../../src/executors/internal/git-executor.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1E,wBAAwB;IACxB,kBAAkB;IAClB,SAAS;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAqC,MAAM,CAAC,MAAM,CAAC;IACtF,eAAe,EAAE,qBAAqB;IACtC,gBAAgB,EAAE,2BAA2B;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,2BAA2B;IAChD,eAAe,EAAE,kBAAkB;IACnC,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAA8C,IAAI,GAAG,EAG7F,CAAC"}
1
+ {"version":3,"file":"git-executor.constants.js","sourceRoot":"","sources":["../../../src/executors/internal/git-executor.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1E,wBAAwB;IACxB,kBAAkB;IAClB,SAAS;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAqC,MAAM,CAAC,MAAM,CAAC;IACtF,eAAe,EAAE,qBAAqB;IACtC,gBAAgB,EAAE,2BAA2B;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,2BAA2B;IAChD,eAAe,EAAE,kBAAkB;IACnC,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAA8C,IAAI,GAAG,EAG7F,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GACnD,uDAAuD,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraharness/git",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Copy-on-Write (CoW) hierarchical Git worktree isolation scope, git-index checkpointing, stateless 3-way merge-tree reconciliation, and candidate comparison tools for Paraharness.",
5
5
  "keywords": [
6
6
  "paraharness",
@@ -49,7 +49,7 @@
49
49
  "picomatch": "^4.0.3",
50
50
  "write-file-atomic": "^8.0.0",
51
51
  "zod": "^4.6.7",
52
- "@paraharness/core": "0.2.0",
52
+ "@paraharness/core": "0.2.1",
53
53
  "@paraharness/lockfile": "0.2.0"
54
54
  },
55
55
  "devDependencies": {