@vzn/vx 0.0.425 → 0.0.427

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.425",
3
+ "version": "0.0.427",
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.425",
25
- "@vzn/vx-linux-arm64": "0.0.425",
26
- "@vzn/vx-darwin-x64": "0.0.425",
27
- "@vzn/vx-darwin-arm64": "0.0.425"
24
+ "@vzn/vx-linux-x64": "0.0.427",
25
+ "@vzn/vx-linux-arm64": "0.0.427",
26
+ "@vzn/vx-darwin-x64": "0.0.427",
27
+ "@vzn/vx-darwin-arm64": "0.0.427"
28
28
  },
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -372,13 +372,15 @@ export function buildAdmission(
372
372
  if (!overridden.has(plugin)) {
373
373
  overridden.add(plugin)
374
374
  warn(
375
- `plugin '${plugin.name}' refused ${id} in admit with nothing running; admitting it, since no completion would ask again`,
375
+ `[vx] plugin '${plugin.name}' refused ${id} in admit with nothing running; admitting it, since no completion would ask again`,
376
376
  )
377
377
  }
378
378
  } catch (err) {
379
379
  broken.add(plugin)
380
380
  const m = err instanceof Error ? err.message : String(err)
381
- warn(`plugin '${plugin.name}' failed in admit: ${m}; admitting every task from here on`)
381
+ warn(
382
+ `[vx] plugin '${plugin.name}' failed in admit: ${m}; admitting every task from here on`,
383
+ )
382
384
  }
383
385
  }
384
386
  return true
@@ -470,13 +470,28 @@ async function memberDirs(root: string, pattern: string): Promise<string[]> {
470
470
  // `pack*/*` did not (item 987). Followed only where the depth is bounded:
471
471
  // under `**` the scan would walk every pnpm `node_modules` link.
472
472
  const followSymlinks = !expanded.includes('**')
473
- for await (const rel of glob.scan({ cwd: root, onlyFiles: true, dot: false, followSymlinks })) {
474
- // Skip nested node_modules — workspace package globs shouldn't
475
- // ever reach into them, but a pathological pattern like `**`
476
- // would. Avoid splitting the path on the hot loop.
477
- if (rel.includes(`${path.sep}node_modules${path.sep}`)) continue
478
- if (rel.startsWith(`node_modules${path.sep}`)) continue
479
- dirs.push(path.dirname(path.resolve(root, rel)))
473
+ try {
474
+ for await (const rel of glob.scan({
475
+ cwd: root,
476
+ onlyFiles: true,
477
+ dot: false,
478
+ followSymlinks,
479
+ })) {
480
+ // Skip nested node_modules — workspace package globs shouldn't
481
+ // ever reach into them, but a pathological pattern like `**`
482
+ // would. Avoid splitting the path on the hot loop.
483
+ if (rel.includes(`${path.sep}node_modules${path.sep}`)) continue
484
+ if (rel.startsWith(`node_modules${path.sep}`)) continue
485
+ dirs.push(path.dirname(path.resolve(root, rel)))
486
+ }
487
+ } catch (err) {
488
+ // The scan stops at a directory it may not open and cannot skip it,
489
+ // so the readdir path's skip is not on offer here (D-132).
490
+ if (!isPermissionError(err)) throw err
491
+ const where = relPosix(root, path.resolve(root, err.path ?? ''))
492
+ throw new UserError(
493
+ `${where}: not readable by this user (${err.code}), and the workspace glob "${pattern}" walks into it`,
494
+ )
480
495
  }
481
496
  }
482
497
  return dirs