@vzn/vx 0.0.231 → 0.0.232

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.231",
3
+ "version": "0.0.232",
4
4
  "description": "A fast, correct task runner and build cache for JavaScript monorepos.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -17,10 +17,10 @@
17
17
  "node": ">=18"
18
18
  },
19
19
  "optionalDependencies": {
20
- "@vzn/vx-linux-x64": "0.0.231",
21
- "@vzn/vx-linux-arm64": "0.0.231",
22
- "@vzn/vx-darwin-x64": "0.0.231",
23
- "@vzn/vx-darwin-arm64": "0.0.231"
20
+ "@vzn/vx-linux-x64": "0.0.232",
21
+ "@vzn/vx-linux-arm64": "0.0.232",
22
+ "@vzn/vx-darwin-x64": "0.0.232",
23
+ "@vzn/vx-darwin-arm64": "0.0.232"
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
package/src/cli/why.ts CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  whyDidThisRerunQuery as whyDidThisRerun,
16
16
  resolveRunId,
17
17
  } from '../orchestrator/index.js'
18
- import { nearMatches, UserError } from '../util/index.js'
18
+ import { nearMatches, printable, UserError } from '../util/index.js'
19
19
  import { findWorkspaceRoot } from '../workspace/index.js'
20
20
  import { cliCacheDir, parseCacheDirFlag, warnToStderr } from './workspace-config.js'
21
21
 
@@ -239,7 +239,9 @@ export async function whyCmd(args: readonly string[]): Promise<number> {
239
239
  : e.change === 'removed'
240
240
  ? `- ${e.before}`
241
241
  : `${e.before} → ${e.after}`
242
- lines.push(` ${e.change.padEnd(7)} ${e.kind.padEnd(kindW)} ${e.name} ${beforeAfter}`)
242
+ lines.push(
243
+ ` ${e.change.padEnd(7)} ${e.kind.padEnd(kindW)} ${printable(e.name)} ${beforeAfter}`,
244
+ )
243
245
  }
244
246
  const kinds = [...new Set(diff.entries.map((e) => e.kind))].filter((k) => k in WHAT_TO_DO)
245
247
  if (kinds.length > 0) {
@@ -35,7 +35,7 @@ import {
35
35
  PersistentReadyError,
36
36
  } from '../exec/index.js'
37
37
  import { isGroupTask, RestoreDemoted, type TaskNode, type TaskOutcome } from '../graph/index.js'
38
- import { killGraceMs, maskedEmitter, relPosix, secretMask, span } from '../util/index.js'
38
+ import { killGraceMs, maskedEmitter, printable, relPosix, secretMask, span } from '../util/index.js'
39
39
  import { SIGNAL_SHUTDOWN_GRACE_MS } from './signals.js'
40
40
  import { executorLabel } from './plugin-host.js'
41
41
  import {
@@ -1145,7 +1145,8 @@ async function executeCachedTask(args: ExecuteArgs): Promise<TaskOutcome> {
1145
1145
  const moved = await movedSinceKey()
1146
1146
  endCheck()
1147
1147
  if (moved === undefined) return true
1148
- const what = moved === null ? 'its inputs' : `\`${relPosix(args.workspaceRoot, moved)}\``
1148
+ const what =
1149
+ moved === null ? 'its inputs' : `\`${printable(relPosix(args.workspaceRoot, moved))}\``
1149
1150
  // A task that regenerates its own input (TanStack Router's committed
1150
1151
  // `routeTree.gen.ts`, rewritten to the same bytes by every build) is
1151
1152
  // never saved (item 1015), and the line said so without the way out.
package/src/util/index.ts CHANGED
@@ -29,6 +29,7 @@ export {
29
29
  normalizeBunGlob,
30
30
  normalizeGlob,
31
31
  outputMatcher,
32
+ printable,
32
33
  relPosix,
33
34
  splitNegations,
34
35
  staticPrefix,
package/src/util/paths.ts CHANGED
@@ -297,3 +297,15 @@ export function slashBraceExpansions(pattern: string): string[] {
297
297
  }
298
298
  return [pattern]
299
299
  }
300
+
301
+ // oxlint-disable-next-line no-control-regex
302
+ const CONTROL = /[\x00-\x1f\x7f-\x9f]/g
303
+
304
+ /**
305
+ * `s` with every C0/C1 control and DEL written as `\xNN`: a file name is
306
+ * anyone's bytes, and one holding `ESC ]` or `\r` printed raw retitled
307
+ * the terminal or overwrote the line vx printed before it (L-31).
308
+ */
309
+ export function printable(s: string): string {
310
+ return s.replace(CONTROL, (c) => `\\x${c.charCodeAt(0).toString(16).padStart(2, '0')}`)
311
+ }