@vzn/vx 0.0.566 → 0.0.567

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vzn/vx",
3
- "version": "0.0.566",
3
+ "version": "0.0.567",
4
4
  "description": "The fastest task runner and build cache for JavaScript monorepos.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -21,10 +21,10 @@
21
21
  "node": ">=18"
22
22
  },
23
23
  "optionalDependencies": {
24
- "@vzn/vx-linux-x64": "0.0.566",
25
- "@vzn/vx-linux-arm64": "0.0.566",
26
- "@vzn/vx-darwin-x64": "0.0.566",
27
- "@vzn/vx-darwin-arm64": "0.0.566"
24
+ "@vzn/vx-linux-x64": "0.0.567",
25
+ "@vzn/vx-linux-arm64": "0.0.567",
26
+ "@vzn/vx-darwin-x64": "0.0.567",
27
+ "@vzn/vx-darwin-arm64": "0.0.567"
28
28
  },
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -59,6 +59,8 @@ export interface JudgeContext {
59
59
  held(): boolean
60
60
  /** Projects whose uncached task may read a git-ignored file. */
61
61
  uncached(): ReadonlySet<string>
62
+ /** Whether `abs`, under the project at `ownDir`, lies in a project nested there (`makeFence`). */
63
+ fenced?(ownDir: string, abs: string): boolean
62
64
  /** The files git listed at the arm; absent when git could not answer. */
63
65
  existedAtArm?: ReadonlySet<string>
64
66
  }
@@ -176,10 +178,12 @@ export class ChangeJudge {
176
178
  // it reads what it likes, and its `.env.local` edit re-ran nothing
177
179
  // (item 947). Under such a project an ignored path is judged when the
178
180
  // user wrote it; one the last cycle wrote (the pid file an uncached
179
- // task rewrites every run, the loop the filter exists for) stays out.
181
+ // task rewrites every run, the loop the filter exists for) stays out,
182
+ // as does one in a project nested under it, which it does not own.
180
183
  const editForUncached = (p: string): boolean =>
181
- [...this.ctx.uncached()].some((dir) => p.startsWith(dir + path.sep)) &&
182
- !this.writtenDuringLastCycle(p)
184
+ [...this.ctx.uncached()].some(
185
+ (dir) => p.startsWith(dir + path.sep) && this.ctx.fenced?.(dir, p) !== true,
186
+ ) && !this.writtenDuringLastCycle(p)
183
187
  // A path still there names the cycle before a gone one: an editor or
184
188
  // `sed -i` saving through a temporary file fires that file first, and
185
189
  // the cycle was announced by a name already renamed away.
package/src/cli/watch.ts CHANGED
@@ -462,6 +462,7 @@ async function runWatchLoop(args: WatchLoopArgs): Promise<number> {
462
462
  armedAt,
463
463
  held: () => held !== undefined,
464
464
  uncached: () => uncached,
465
+ fenced: (ownDir, abs) => fenced(ownDir, abs),
465
466
  ...(existedAtArm !== undefined ? { existedAtArm } : {}),
466
467
  })
467
468
  /** Per-project arms by directory, so `rearm` can add and drop them. */