@vibe-agent-toolkit/utils 0.1.28-rc.2 → 0.1.28

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.
@@ -35,34 +35,22 @@ export declare function gitLsFiles(options: {
35
35
  /**
36
36
  * Check if a file path is ignored by git
37
37
  *
38
- * Uses git check-ignore which respects .gitignore, .git/info/exclude, and global gitignore
38
+ * Uses git check-ignore which respects .gitignore, .git/info/exclude, and global gitignore.
39
39
  *
40
- * **Performance warning**: This spawns a git subprocess for each file.
41
- * For checking multiple files, use `gitCheckIgnoredBatch()` instead.
40
+ * **Symlink handling**: When `git check-ignore` fails with exit code 128 ("beyond a symbolic
41
+ * link"), this function walks up ancestor directories and checks each one. If any ancestor is
42
+ * gitignored (e.g., `data/` is in `.gitignore`), the file is considered gitignored too. This
43
+ * handles the common pattern where a gitignored directory contains symlinks to external content
44
+ * (e.g., OneDrive, shared drives).
45
+ *
46
+ * **Performance warning**: This spawns a git subprocess for each file (plus up to N ancestor
47
+ * checks when the path traverses a symlink). For checking multiple files, use
48
+ * `gitCheckIgnoredBatch()` instead.
42
49
  *
43
50
  * @param filePath - Absolute or relative path to check
44
51
  * @param cwd - Working directory (defaults to process.cwd())
45
52
  * @returns true if file is gitignored, false otherwise
46
53
  */
47
54
  export declare function isGitIgnored(filePath: string, cwd?: string): boolean;
48
- /**
49
- * Batch check if multiple file paths are ignored by git
50
- *
51
- * Much more efficient than calling `isGitIgnored()` in a loop - uses a single
52
- * git subprocess with stdin instead of N subprocesses.
53
- *
54
- * @param filePaths - Array of absolute or relative paths to check
55
- * @param cwd - Working directory (defaults to process.cwd())
56
- * @returns Map of filePath -> isIgnored (true if gitignored, false otherwise)
57
- *
58
- * @example
59
- * ```typescript
60
- * const files = ['src/foo.ts', 'dist/bar.js', 'node_modules/baz.js'];
61
- * const ignoreMap = gitCheckIgnoredBatch(files, '/project');
62
- * // ignoreMap.get('src/foo.ts') === false
63
- * // ignoreMap.get('dist/bar.js') === true
64
- * // ignoreMap.get('node_modules/baz.js') === true
65
- * ```
66
- */
67
55
  export declare function gitCheckIgnoredBatch(filePaths: string[], cwd?: string): Map<string, boolean>;
68
56
  //# sourceMappingURL=git-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,MAAM,EAAE,GAAG,IAAI,CA0ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAkBnF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,GAAE,MAAsB,GAC1B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CA8DtB"}
1
+ {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,MAAM,EAAE,GAAG,IAAI,CA0ClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAmDnF;AAiDD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,GAAE,MAAsB,GAC1B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CA4CtB"}
package/dist/git-utils.js CHANGED
@@ -84,10 +84,17 @@ export function gitLsFiles(options) {
84
84
  /**
85
85
  * Check if a file path is ignored by git
86
86
  *
87
- * Uses git check-ignore which respects .gitignore, .git/info/exclude, and global gitignore
87
+ * Uses git check-ignore which respects .gitignore, .git/info/exclude, and global gitignore.
88
88
  *
89
- * **Performance warning**: This spawns a git subprocess for each file.
90
- * For checking multiple files, use `gitCheckIgnoredBatch()` instead.
89
+ * **Symlink handling**: When `git check-ignore` fails with exit code 128 ("beyond a symbolic
90
+ * link"), this function walks up ancestor directories and checks each one. If any ancestor is
91
+ * gitignored (e.g., `data/` is in `.gitignore`), the file is considered gitignored too. This
92
+ * handles the common pattern where a gitignored directory contains symlinks to external content
93
+ * (e.g., OneDrive, shared drives).
94
+ *
95
+ * **Performance warning**: This spawns a git subprocess for each file (plus up to N ancestor
96
+ * checks when the path traverses a symlink). For checking multiple files, use
97
+ * `gitCheckIgnoredBatch()` instead.
91
98
  *
92
99
  * @param filePath - Absolute or relative path to check
93
100
  * @param cwd - Working directory (defaults to process.cwd())
@@ -97,14 +104,44 @@ export function isGitIgnored(filePath, cwd = process.cwd()) {
97
104
  try {
98
105
  // Resolve git path using which for security (avoids PATH manipulation)
99
106
  const gitPath = which.sync('git');
107
+ const checkIgnoreArgs = ['check-ignore', '-q'];
100
108
  // git check-ignore returns exit code 0 if file is ignored, 1 if not
101
- const result = spawnSync(gitPath, ['check-ignore', '-q', filePath], {
109
+ const result = spawnSync(gitPath, [...checkIgnoreArgs, filePath], {
102
110
  cwd,
103
111
  encoding: 'utf-8',
104
112
  stdio: 'pipe',
105
113
  shell: false, // No shell interpreter for security
106
114
  });
107
- return result.status === 0;
115
+ if (result.status === 0) {
116
+ return true;
117
+ }
118
+ // Exit code 128 = fatal error (e.g., path beyond a symbolic link).
119
+ // Walk up ancestor directories to check if a parent is gitignored.
120
+ // Example: data/ is gitignored, data/symlink/deep/file.md fails with 128,
121
+ // but checking data/ directly returns 0.
122
+ if (result.status !== 1) {
123
+ const resolvedCwd = safePath.resolve(cwd);
124
+ const resolvedFile = safePath.resolve(cwd, filePath);
125
+ let current = dirname(resolvedFile);
126
+ while (current !== resolvedCwd && !current.endsWith(parse(current).root)) {
127
+ const ancestorResult = spawnSync(gitPath, [...checkIgnoreArgs, current], {
128
+ cwd,
129
+ encoding: 'utf-8',
130
+ stdio: 'pipe',
131
+ shell: false,
132
+ });
133
+ if (ancestorResult.status === 0) {
134
+ return true;
135
+ }
136
+ // If this ancestor check also fails fatally, keep walking up
137
+ // If it returns 1 (not ignored), the parent is tracked — stop walking
138
+ if (ancestorResult.status === 1) {
139
+ break;
140
+ }
141
+ current = dirname(current);
142
+ }
143
+ }
144
+ return false;
108
145
  }
109
146
  catch {
110
147
  // If git is not available or other error, assume not ignored
@@ -117,6 +154,11 @@ export function isGitIgnored(filePath, cwd = process.cwd()) {
117
154
  * Much more efficient than calling `isGitIgnored()` in a loop - uses a single
118
155
  * git subprocess with stdin instead of N subprocesses.
119
156
  *
157
+ * **Symlink handling**: After the batch check, any paths that were not reported as
158
+ * ignored are re-checked individually via `isGitIgnored()`, which handles exit code
159
+ * 128 ("beyond a symbolic link") by walking up ancestor directories. This ensures
160
+ * paths through symlinks in gitignored directories are correctly detected.
161
+ *
120
162
  * @param filePaths - Array of absolute or relative paths to check
121
163
  * @param cwd - Working directory (defaults to process.cwd())
122
164
  * @returns Map of filePath -> isIgnored (true if gitignored, false otherwise)
@@ -130,47 +172,41 @@ export function isGitIgnored(filePath, cwd = process.cwd()) {
130
172
  * // ignoreMap.get('node_modules/baz.js') === true
131
173
  * ```
132
174
  */
133
- export function gitCheckIgnoredBatch(filePaths, cwd = process.cwd()) {
134
- const result = new Map();
135
- // No files to check
136
- if (filePaths.length === 0) {
137
- return result;
138
- }
139
- // Normalize paths to forward slashes for cross-platform consistency
140
- // Git on Windows returns forward slashes, so we normalize input paths to match
175
+ /** Build the normalized→original path map and initialize result map. */
176
+ function initBatchMaps(filePaths) {
141
177
  const normalizedPaths = filePaths.map(p => toForwardSlash(p));
142
- // Create map with normalized paths as keys
143
- const pathMap = new Map(); // normalized -> original
178
+ const pathMap = new Map();
179
+ const result = new Map();
144
180
  for (const [index, normalizedPath] of normalizedPaths.entries()) {
145
181
  const originalPath = filePaths[index];
146
182
  if (originalPath !== undefined) {
147
183
  pathMap.set(normalizedPath, originalPath);
148
184
  }
149
185
  }
150
- // Initialize all as not ignored (using original paths as keys)
151
186
  for (const filePath of filePaths) {
152
187
  result.set(filePath, false);
153
188
  }
189
+ return { normalizedPaths, pathMap, result };
190
+ }
191
+ export function gitCheckIgnoredBatch(filePaths, cwd = process.cwd()) {
192
+ if (filePaths.length === 0) {
193
+ return new Map();
194
+ }
195
+ const { normalizedPaths, pathMap, result } = initBatchMaps(filePaths);
154
196
  try {
155
- // Resolve git path using which for security (avoids PATH manipulation)
156
197
  const gitPath = which.sync('git');
157
- // git check-ignore --stdin reads paths from stdin and outputs ignored ones
158
- // Send normalized paths to git
159
198
  const gitResult = spawnSync(gitPath, ['check-ignore', '--stdin'], {
160
199
  cwd,
161
200
  encoding: 'utf-8',
162
201
  input: normalizedPaths.join('\n'),
163
202
  stdio: 'pipe',
164
- shell: false, // No shell interpreter for security
203
+ shell: false,
165
204
  });
166
- // Exit code 0 = at least one file ignored, 1 = none ignored
167
- // Parse stdout to get which files are ignored
168
205
  if (gitResult.status === 0 && gitResult.stdout) {
169
206
  const ignoredPaths = gitResult.stdout
170
207
  .split('\n')
171
208
  .map((line) => line.trim())
172
209
  .filter((line) => line.length > 0);
173
- // Mark ignored files (convert back to original paths)
174
210
  for (const ignoredPath of ignoredPaths) {
175
211
  const originalPath = pathMap.get(ignoredPath);
176
212
  if (originalPath !== undefined) {
@@ -178,10 +214,16 @@ export function gitCheckIgnoredBatch(filePaths, cwd = process.cwd()) {
178
214
  }
179
215
  }
180
216
  }
217
+ // Fallback: re-check paths that batch reported as not-ignored using isGitIgnored(),
218
+ // which handles symlink traversal (exit code 128) via ancestor walk.
219
+ for (const [filePath, ignored] of result) {
220
+ if (!ignored && isGitIgnored(filePath, cwd)) {
221
+ result.set(filePath, true);
222
+ }
223
+ }
181
224
  return result;
182
225
  }
183
226
  catch {
184
- // If git is not available or other error, return all as not ignored
185
227
  return result;
186
228
  }
187
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/utils",
3
- "version": "0.1.28-rc.2",
3
+ "version": "0.1.28",
4
4
  "type": "module",
5
5
  "description": "Core utility functions with no external dependencies",
6
6
  "keywords": [