From 80a3cbc3c533232d294cc28335097f71c7f51205 Mon Sep 17 00:00:00 2001 From: wan9chi Date: Mon, 19 Oct 2026 12:26:02 +0800 Subject: [PATCH] chore(deps): bump vite-task to 3395c47 Point the vite-task git dependencies at 3395c47 on the feat/rebuildable-cache-rules branch so the preview workflow produces a Vite+ build with those cache changes. This exists only to generate a preview build and is not meant to be merged. fspy now reports each access as a PathAccess enum instead of a mode bitflag and no longer exports AccessMode, so vp_command folds the variants into its own read/write/read_dir flags, and the NAPI binding, which used fspy only for AccessMode, no longer depends on it directly. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 108 +++++++++++++++++++----------- Cargo.toml | 22 +++--- crates/vp_command/src/lib.rs | 40 +++++++---- packages/cli/binding/Cargo.toml | 1 - packages/cli/binding/src/utils.rs | 7 +- 5 files changed, 109 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8db7bc4ff6..04f6d293ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1918,6 +1918,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + [[package]] name = "errno" version = "0.3.14" @@ -2134,7 +2145,7 @@ dependencies = [ [[package]] name = "fspy" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "anyhow", @@ -2171,7 +2182,7 @@ dependencies = [ [[package]] name = "fspy_client_unix" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "anyhow", @@ -2188,7 +2199,7 @@ dependencies = [ [[package]] name = "fspy_detours_sys" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "cc", "winapi", @@ -2197,7 +2208,7 @@ dependencies = [ [[package]] name = "fspy_nostd" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "atoi", "bitflags 2.13.2", @@ -2211,7 +2222,7 @@ dependencies = [ [[package]] name = "fspy_nostd_alloc" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "bump-scope", @@ -2221,7 +2232,7 @@ dependencies = [ [[package]] name = "fspy_preload_unix" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "ctor", @@ -2233,12 +2244,13 @@ dependencies = [ "libc", "nix 0.31.3", "static_cell", + "syscalls", ] [[package]] name = "fspy_preload_windows" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "constcat", @@ -2258,7 +2270,7 @@ dependencies = [ [[package]] name = "fspy_seccomp_unotify" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "futures-util", "libc", @@ -2275,10 +2287,9 @@ dependencies = [ [[package]] name = "fspy_shared" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", - "bitflags 2.13.2", "bstr", "bumpalo", "bytemuck", @@ -2297,7 +2308,7 @@ dependencies = [ [[package]] name = "fspy_shared_unix" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "anyhow", @@ -2317,7 +2328,7 @@ dependencies = [ [[package]] name = "fspy_shm" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "fspy_nostd", "windows-sys 0.61.2", @@ -6916,6 +6927,18 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -8096,6 +8119,12 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63278e72ed4f207eb3216c944cbafb35bdb656d2eab97ef73c0c165a1cd3e319" +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.20.1" @@ -8305,7 +8334,6 @@ dependencies = [ "clap", "console", "cow-utils", - "fspy", "napi", "napi-build", "napi-derive", @@ -8649,7 +8677,7 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "vt" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anstream", "anyhow", @@ -8658,8 +8686,10 @@ dependencies = [ "clap", "ctrlc", "derive_more", + "dunce", "fspy", "futures-util", + "memchr", "nix 0.31.3", "once_cell", "owo-colors", @@ -8669,7 +8699,6 @@ dependencies = [ "rustc-hash", "serde", "serde_json", - "serde_norway", "supports-color 3.0.2", "tar", "thiserror 2.0.21", @@ -8712,7 +8741,7 @@ dependencies = [ [[package]] name = "vt_casefold" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "ref-cast", "serde", @@ -8721,7 +8750,7 @@ dependencies = [ [[package]] name = "vt_client" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "rustc-hash", "vt_casefold", @@ -8735,7 +8764,7 @@ dependencies = [ [[package]] name = "vt_client_napi" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "napi", "napi-build", @@ -8747,7 +8776,7 @@ dependencies = [ [[package]] name = "vt_glob" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "globset", "thiserror 2.0.21", @@ -8757,13 +8786,14 @@ dependencies = [ [[package]] name = "vt_graph" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anyhow", "async-trait", "petgraph", "rustc-hash", "serde", + "serde-untagged", "serde_json", "thiserror 2.0.21", "tracing", @@ -8778,7 +8808,7 @@ dependencies = [ [[package]] name = "vt_graph_ser" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "petgraph", "serde", @@ -8787,7 +8817,7 @@ dependencies = [ [[package]] name = "vt_ipc_shared" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "rustc-hash", "vt_ipc_str", @@ -8797,7 +8827,7 @@ dependencies = [ [[package]] name = "vt_ipc_str" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "allocator-api2", "bumpalo", @@ -8810,7 +8840,7 @@ dependencies = [ [[package]] name = "vt_materialized_artifact" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "tempfile", "vt_materialized_artifact_macros", @@ -8819,7 +8849,7 @@ dependencies = [ [[package]] name = "vt_materialized_artifact_macros" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "proc-macro2", "quote", @@ -8830,7 +8860,7 @@ dependencies = [ [[package]] name = "vt_path" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "diff-struct", "os_str_bytes", @@ -8845,7 +8875,7 @@ dependencies = [ [[package]] name = "vt_plan" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anyhow", "async-trait", @@ -8874,7 +8904,7 @@ dependencies = [ [[package]] name = "vt_powershell" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "vt_path", "which", @@ -8883,7 +8913,7 @@ dependencies = [ [[package]] name = "vt_pty_terminal" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anyhow", "portable-pty", @@ -8893,7 +8923,7 @@ dependencies = [ [[package]] name = "vt_pty_terminal_test" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anyhow", "portable-pty", @@ -8904,7 +8934,7 @@ dependencies = [ [[package]] name = "vt_pty_terminal_test_client" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "base64 0.22.1", "getrandom 0.4.3", @@ -8914,7 +8944,7 @@ dependencies = [ [[package]] name = "vt_remote_cache" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "base64 0.22.1", "bytes", @@ -8934,7 +8964,7 @@ dependencies = [ [[package]] name = "vt_select" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "anyhow", "crossterm", @@ -8945,7 +8975,7 @@ dependencies = [ [[package]] name = "vt_server" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "futures", "rustc-hash", @@ -8965,7 +8995,7 @@ dependencies = [ [[package]] name = "vt_shell" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "brush-parser", "serde", @@ -8977,7 +9007,7 @@ dependencies = [ [[package]] name = "vt_snapshot_test" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "serde", "serde_json", @@ -8987,7 +9017,7 @@ dependencies = [ [[package]] name = "vt_socket_ipc" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "nix 0.31.3", "tempfile", @@ -9000,7 +9030,7 @@ dependencies = [ [[package]] name = "vt_str" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "compact_str 0.9.1", "diff-struct", @@ -9011,7 +9041,7 @@ dependencies = [ [[package]] name = "vt_workspace" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc#9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=3395c47a0bbc4a241e6d231de9cdff0d4a6b4922#3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" dependencies = [ "clap", "petgraph", diff --git a/Cargo.toml b/Cargo.toml index ddddc9472c..d15a46a246 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -192,7 +192,7 @@ dunce = "1.0.5" fast-glob = "1.0.0" flate2 = { version = "=1.1.9", features = ["zlib-rs"] } form_urlencoded = "1.2.1" -fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } +fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } futures = "0.3.31" futures-util = "0.3.31" glob = "0.3.2" @@ -306,16 +306,16 @@ vp_setup = { path = "crates/vp_setup" } vp_shared = { path = "crates/vp_shared" } vp_static_config = { path = "crates/vp_static_config" } vp_toolchain = { path = "crates/vp_toolchain" } -vt = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_casefold = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_powershell = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_pty_terminal_test = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_pty_terminal_test_client = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_select = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_snapshot_test = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } -vt_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "9ba4cc93379cf2d7a6c7e657285bb8a00e8339dc" } +vt = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_casefold = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_powershell = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_pty_terminal_test = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_pty_terminal_test_client = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_select = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_snapshot_test = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } +vt_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "3395c47a0bbc4a241e6d231de9cdff0d4a6b4922" } walkdir = "2.5.0" webpki-root-certs = "1.0.9" which = "8.0.6" diff --git a/crates/vp_command/src/lib.rs b/crates/vp_command/src/lib.rs index 7f6ebd6099..5e1ebd281b 100644 --- a/crates/vp_command/src/lib.rs +++ b/crates/vp_command/src/lib.rs @@ -13,7 +13,7 @@ use std::{ process::{ExitStatus, Stdio}, }; -use fspy::AccessMode; +use fspy::PathAccess; use tokio::process::Command; use tokio_util::sync::CancellationToken; use vp_error::Error; @@ -29,7 +29,18 @@ pub struct FspyCommandResult { /// The termination status of the command. pub status: ExitStatus, /// The path accesses of the command. - pub path_accesses: HashMap, + pub path_accesses: HashMap, +} + +/// The ways a command accessed one path, merged across all its accesses. +#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] +pub struct AccessModes { + /// Whether the path was read. + pub read: bool, + /// Whether the path was written. + pub write: bool, + /// Whether the path was read as a directory. + pub read_dir: bool, } /// Resolve a binary name to a full path using the `which` crate. @@ -265,11 +276,16 @@ where let termination = child.wait_handle.await?; let tracked_accesses = termination.path_accesses.map_err(|e| Error::Anyhow(e.into()))?; - let mut path_accesses = HashMap::::new(); + let mut path_accesses = HashMap::::new(); for access in tracked_accesses.iter() { tracing::debug!("Path access: {:?}", access); - let relative_path = access - .path + let (path, read, write, read_dir) = match access { + PathAccess::Read(path) => (path, true, false, false), + PathAccess::Write { path, .. } => (path, false, true, false), + PathAccess::ReadWrite { path, .. } => (path, true, true, false), + PathAccess::ReadDir(path) => (path, false, false, true), + }; + let relative_path = path .strip_path_prefix(cwd, |strip_result| { let Ok(stripped_path) = strip_result else { return None; @@ -286,10 +302,10 @@ where let Some(relative_path) = relative_path else { continue; }; - path_accesses - .entry(relative_path) - .and_modify(|mode| *mode |= access.mode) - .or_insert(access.mode); + let modes = path_accesses.entry(relative_path).or_default(); + modes.read |= read; + modes.write |= write; + modes.read_dir |= read_dir; } Ok(FspyCommandResult { status: termination.status, path_accesses }) @@ -621,7 +637,7 @@ mod tests { .path_accesses .get(&RelativePathBuf::new("package.json").unwrap()) .expect("package.json should be in path accesses"); - assert!(path_access.contains(AccessMode::WRITE)); + assert!(path_access.write); // Note: We don't assert !READ because writeFileSync may trigger reads // depending on Node.js internals and OS filesystem behavior } @@ -656,8 +672,8 @@ mod tests { .path_accesses .get(&RelativePathBuf::new("package.json").unwrap()) .expect("package.json should be in path accesses"); - assert!(path_access.contains(AccessMode::WRITE)); - assert!(path_access.contains(AccessMode::READ)); + assert!(path_access.write); + assert!(path_access.read); } #[tokio::test] diff --git a/packages/cli/binding/Cargo.toml b/packages/cli/binding/Cargo.toml index ada567fdff..665175b19e 100644 --- a/packages/cli/binding/Cargo.toml +++ b/packages/cli/binding/Cargo.toml @@ -16,7 +16,6 @@ async-trait = { workspace = true } base64-simd = { workspace = true } clap = { workspace = true, features = ["derive"] } cow-utils = { workspace = true } -fspy = { workspace = true } rustc-hash = { workspace = true } napi = { workspace = true } napi-derive = { workspace = true } diff --git a/packages/cli/binding/src/utils.rs b/packages/cli/binding/src/utils.rs index 27f354b159..cb36c5b24b 100644 --- a/packages/cli/binding/src/utils.rs +++ b/packages/cli/binding/src/utils.rs @@ -1,6 +1,5 @@ use std::{collections::HashMap, path::PathBuf}; -use fspy::AccessMode; use napi::{anyhow, bindgen_prelude::*}; use napi_derive::napi; use vp_command::run_command_with_fspy; @@ -111,11 +110,7 @@ pub async fn run_command(options: RunCommandOptions) -> Result for (path, mode) in result.path_accesses { path_accesses.insert( path.as_str().to_string(), - PathAccess { - read: mode.contains(AccessMode::READ), - write: mode.contains(AccessMode::WRITE), - read_dir: mode.contains(AccessMode::READ_DIR), - }, + PathAccess { read: mode.read, write: mode.write, read_dir: mode.read_dir }, ); }