diff --git a/example_projects/rust/for_loop/.vscode/launch.json b/example_projects/rust/for_loop/.vscode/launch.json new file mode 100644 index 0000000..01cea3a --- /dev/null +++ b/example_projects/rust/for_loop/.vscode/launch.json @@ -0,0 +1,45 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug executable 'for_loop'", + "cargo": { + "args": [ + "build", + "--bin=for_loop", + "--package=for_loop" + ], + "filter": { + "name": "for_loop", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in executable 'for_loop'", + "cargo": { + "args": [ + "test", + "--no-run", + "--bin=for_loop", + "--package=for_loop" + ], + "filter": { + "name": "for_loop", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/example_projects/rust/for_loop/Cargo.lock b/example_projects/rust/for_loop/Cargo.lock new file mode 100644 index 0000000..d689ab1 --- /dev/null +++ b/example_projects/rust/for_loop/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "for_loop" +version = "0.1.0" diff --git a/example_projects/rust/for_loop/Cargo.toml b/example_projects/rust/for_loop/Cargo.toml new file mode 100644 index 0000000..b434370 --- /dev/null +++ b/example_projects/rust/for_loop/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "for_loop" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/example_projects/rust/for_loop/src/main.rs b/example_projects/rust/for_loop/src/main.rs new file mode 100644 index 0000000..f1e232f --- /dev/null +++ b/example_projects/rust/for_loop/src/main.rs @@ -0,0 +1,8 @@ +fn main() { + println!("Hello, world!"); + let mut index = 0; + while index < 100 { + println!("Index value is: {}", index); + index += 1; + } +} diff --git a/example_projects/rust/for_loop/target/.rustc_info.json b/example_projects/rust/for_loop/target/.rustc_info.json new file mode 100644 index 0000000..b1fe41c --- /dev/null +++ b/example_projects/rust/for_loop/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":14170316736625081058,"outputs":{"5912810005807744388":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n","stderr":""},"17598535894874457435":{"success":true,"status":"","code":0,"stdout":"rustc 1.61.0 (fe5b13d68 2022-05-18)\nbinary: rustc\ncommit-hash: fe5b13d681f25ee6474be29d748c65adcd91f69e\ncommit-date: 2022-05-18\nhost: aarch64-apple-darwin\nrelease: 1.61.0\nLLVM version: 14.0.0\n","stderr":""},"3376809586958156926":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.dylib\nlib___.dylib\nlib___.a\nlib___.dylib\n/Users/nateageek/.rustup/toolchains/stable-aarch64-apple-darwin\ndebug_assertions\nfeature=\"cargo-clippy\"\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"aarch64\"\ntarget_endian=\"little\"\ntarget_env=\"\"\ntarget_family=\"unix\"\ntarget_feature=\"aes\"\ntarget_feature=\"crc\"\ntarget_feature=\"dit\"\ntarget_feature=\"dotprod\"\ntarget_feature=\"dpb\"\ntarget_feature=\"dpb2\"\ntarget_feature=\"fcma\"\ntarget_feature=\"fhm\"\ntarget_feature=\"flagm\"\ntarget_feature=\"fp16\"\ntarget_feature=\"frintts\"\ntarget_feature=\"jsconv\"\ntarget_feature=\"lor\"\ntarget_feature=\"lse\"\ntarget_feature=\"neon\"\ntarget_feature=\"paca\"\ntarget_feature=\"pacg\"\ntarget_feature=\"pan\"\ntarget_feature=\"pmuv3\"\ntarget_feature=\"ras\"\ntarget_feature=\"rcpc\"\ntarget_feature=\"rcpc2\"\ntarget_feature=\"rdm\"\ntarget_feature=\"sb\"\ntarget_feature=\"sha2\"\ntarget_feature=\"sha3\"\ntarget_feature=\"ssbs\"\ntarget_feature=\"vh\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"macos\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"apple\"\nunix\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/CACHEDIR.TAG b/example_projects/rust/for_loop/target/CACHEDIR.TAG new file mode 100644 index 0000000..20d7c31 --- /dev/null +++ b/example_projects/rust/for_loop/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/example_projects/rust/for_loop/target/debug/.cargo-lock b/example_projects/rust/for_loop/target/debug/.cargo-lock new file mode 100644 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop new file mode 100644 index 0000000..f87c83d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop @@ -0,0 +1 @@ +f99de0a9feed7d66 \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop.json b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop.json new file mode 100644 index 0000000..795b3d0 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/bin-for_loop.json @@ -0,0 +1 @@ +{"rustc":5055087155190864114,"features":"[]","target":2507382578171158105,"profile":17483045194147818835,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/for_loop-11a3ecf36a88020d/dep-bin-for_loop"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/invoked.timestamp b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-11a3ecf36a88020d/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop new file mode 100644 index 0000000..2910466 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop @@ -0,0 +1 @@ +819db4b8e5c18929 \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop.json b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop.json new file mode 100644 index 0000000..5b74786 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/bin-for_loop.json @@ -0,0 +1 @@ +{"rustc":5055087155190864114,"features":"[]","target":2507382578171158105,"profile":11736316127369858332,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/for_loop-72ba072149cce268/dep-bin-for_loop"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/dep-bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/dep-bin-for_loop new file mode 100644 index 0000000..5fdf103 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/dep-bin-for_loop differ diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/invoked.timestamp b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-72ba072149cce268/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/invoked.timestamp b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop new file mode 100644 index 0000000..3f68af6 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop @@ -0,0 +1 @@ +14a382e683122091 \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop.json b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop.json new file mode 100644 index 0000000..fd4bdac --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-8d53f5be9f54c502/test-bin-for_loop.json @@ -0,0 +1 @@ +{"rustc":5055087155190864114,"features":"[]","target":2507382578171158105,"profile":11506243869495082934,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/for_loop-8d53f5be9f54c502/dep-test-bin-for_loop"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop new file mode 100644 index 0000000..c3a66f3 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop @@ -0,0 +1 @@ +7b2cb354e804e363 \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop.json b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop.json new file mode 100644 index 0000000..4d1f65f --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/bin-for_loop.json @@ -0,0 +1 @@ +{"rustc":5055087155190864114,"features":"[]","target":2507382578171158105,"profile":17483045194147818835,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/for_loop-91b509657542b0b5/dep-bin-for_loop"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/dep-bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/dep-bin-for_loop new file mode 100644 index 0000000..20847a2 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/dep-bin-for_loop differ diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/invoked.timestamp b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-91b509657542b0b5/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/dep-test-bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/dep-test-bin-for_loop new file mode 100644 index 0000000..20847a2 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/dep-test-bin-for_loop differ diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/invoked.timestamp b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop new file mode 100644 index 0000000..0248c17 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop @@ -0,0 +1 @@ +d2a45c5345d9c692 \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop.json b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop.json new file mode 100644 index 0000000..5eea600 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/.fingerprint/for_loop-f52072bd5f2c1681/test-bin-for_loop.json @@ -0,0 +1 @@ +{"rustc":5055087155190864114,"features":"[]","target":2507382578171158105,"profile":11506243869495082934,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/for_loop-f52072bd5f2c1681/dep-test-bin-for_loop"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0} \ No newline at end of file diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268 b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268 new file mode 100755 index 0000000..0f8ec88 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268 differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.14j30c56r85m3di5.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.14j30c56r85m3di5.rcgu.o new file mode 100644 index 0000000..f27fdbf Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.14j30c56r85m3di5.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.22np6upxrsmes1sa.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.22np6upxrsmes1sa.rcgu.o new file mode 100644 index 0000000..8832317 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.22np6upxrsmes1sa.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.27e6uobvd20n8r7v.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.27e6uobvd20n8r7v.rcgu.o new file mode 100644 index 0000000..a3e41aa Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.27e6uobvd20n8r7v.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.3hgnkbgd4pu5r88k.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.3hgnkbgd4pu5r88k.rcgu.o new file mode 100644 index 0000000..e620761 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.3hgnkbgd4pu5r88k.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.44aevcsafmu282a7.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.44aevcsafmu282a7.rcgu.o new file mode 100644 index 0000000..55d1231 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.44aevcsafmu282a7.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.47neuqhy2rixfhmn.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.47neuqhy2rixfhmn.rcgu.o new file mode 100644 index 0000000..122805c Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.47neuqhy2rixfhmn.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.4w0s6hlzscu8m40y.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.4w0s6hlzscu8m40y.rcgu.o new file mode 100644 index 0000000..ea10aeb Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.4w0s6hlzscu8m40y.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.52e3ehsuiw67dkf1.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.52e3ehsuiw67dkf1.rcgu.o new file mode 100644 index 0000000..1a9a724 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.52e3ehsuiw67dkf1.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.d b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.d new file mode 100644 index 0000000..faf9644 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.d @@ -0,0 +1,5 @@ +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268: src/main.rs + +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.d: src/main.rs + +src/main.rs: diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.s90tc2ef6z76gqs.rcgu.o b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.s90tc2ef6z76gqs.rcgu.o new file mode 100644 index 0000000..6806fdd Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/deps/for_loop-72ba072149cce268.s90tc2ef6z76gqs.rcgu.o differ diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-91b509657542b0b5.d b/example_projects/rust/for_loop/target/debug/deps/for_loop-91b509657542b0b5.d new file mode 100644 index 0000000..9ca9c60 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/deps/for_loop-91b509657542b0b5.d @@ -0,0 +1,7 @@ +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-91b509657542b0b5.rmeta: src/main.rs + +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-91b509657542b0b5.d: src/main.rs + +src/main.rs: + +# env-dep:CLIPPY_ARGS= diff --git a/example_projects/rust/for_loop/target/debug/deps/for_loop-f52072bd5f2c1681.d b/example_projects/rust/for_loop/target/debug/deps/for_loop-f52072bd5f2c1681.d new file mode 100644 index 0000000..8bdafe1 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/deps/for_loop-f52072bd5f2c1681.d @@ -0,0 +1,7 @@ +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-f52072bd5f2c1681.rmeta: src/main.rs + +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/deps/for_loop-f52072bd5f2c1681.d: src/main.rs + +src/main.rs: + +# env-dep:CLIPPY_ARGS= diff --git a/example_projects/rust/for_loop/target/debug/deps/libfor_loop-91b509657542b0b5.rmeta b/example_projects/rust/for_loop/target/debug/deps/libfor_loop-91b509657542b0b5.rmeta new file mode 100644 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/deps/libfor_loop-f52072bd5f2c1681.rmeta b/example_projects/rust/for_loop/target/debug/deps/libfor_loop-f52072bd5f2c1681.rmeta new file mode 100644 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/for_loop b/example_projects/rust/for_loop/target/debug/for_loop new file mode 100755 index 0000000..0f8ec88 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/for_loop differ diff --git a/example_projects/rust/for_loop/target/debug/for_loop.d b/example_projects/rust/for_loop/target/debug/for_loop.d new file mode 100644 index 0000000..3bf0be9 --- /dev/null +++ b/example_projects/rust/for_loop/target/debug/for_loop.d @@ -0,0 +1 @@ +/Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/target/debug/for_loop: /Users/nateageek/Development/VSCodeExtentions/VSCode-Better-Memory-Viewer/example_projects/rust/for_loop/src/main.rs diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt0cv0-jcnagw-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt0cv0-jcnagw-working/dep-graph.part.bin new file mode 100644 index 0000000..28df398 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt0cv0-jcnagw-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt0cv0-jcnagw.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt0cv0-jcnagw.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt6ru8-1y0v48j-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt6ru8-1y0v48j-working/dep-graph.part.bin new file mode 100644 index 0000000..f71da8d Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt6ru8-1y0v48j-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt6ru8-1y0v48j.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztt6ru8-1y0v48j.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztthvi4-3g5x7e-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztthvi4-3g5x7e-working/dep-graph.part.bin new file mode 100644 index 0000000..ff1db2e Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztthvi4-3g5x7e-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztthvi4-3g5x7e.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztthvi4-3g5x7e.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/dep-graph.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/dep-graph.bin new file mode 100644 index 0000000..2563bca Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/dep-graph.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/query-cache.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/query-cache.bin new file mode 100644 index 0000000..6bdc117 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/query-cache.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/work-products.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/work-products.bin new file mode 100644 index 0000000..c57a714 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb-gip6yq8xjrd4/work-products.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-1ionoyhtdpz5m/s-gatztujtpc-73d0tb.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/14j30c56r85m3di5.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/14j30c56r85m3di5.o new file mode 100644 index 0000000..f27fdbf Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/14j30c56r85m3di5.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/22np6upxrsmes1sa.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/22np6upxrsmes1sa.o new file mode 100644 index 0000000..8832317 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/22np6upxrsmes1sa.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/27e6uobvd20n8r7v.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/27e6uobvd20n8r7v.o new file mode 100644 index 0000000..a3e41aa Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/27e6uobvd20n8r7v.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/3hgnkbgd4pu5r88k.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/3hgnkbgd4pu5r88k.o new file mode 100644 index 0000000..e620761 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/3hgnkbgd4pu5r88k.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/44aevcsafmu282a7.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/44aevcsafmu282a7.o new file mode 100644 index 0000000..55d1231 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/44aevcsafmu282a7.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/47neuqhy2rixfhmn.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/47neuqhy2rixfhmn.o new file mode 100644 index 0000000..122805c Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/47neuqhy2rixfhmn.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/4w0s6hlzscu8m40y.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/4w0s6hlzscu8m40y.o new file mode 100644 index 0000000..ea10aeb Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/4w0s6hlzscu8m40y.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/52e3ehsuiw67dkf1.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/52e3ehsuiw67dkf1.o new file mode 100644 index 0000000..1a9a724 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/52e3ehsuiw67dkf1.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/dep-graph.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/dep-graph.bin new file mode 100644 index 0000000..6896c78 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/dep-graph.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/query-cache.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/query-cache.bin new file mode 100644 index 0000000..959705e Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/query-cache.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/s90tc2ef6z76gqs.o b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/s90tc2ef6z76gqs.o new file mode 100644 index 0000000..6806fdd Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/s90tc2ef6z76gqs.o differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/work-products.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/work-products.bin new file mode 100644 index 0000000..7727fa6 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6-39bcpmxda2u9s/work-products.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-39s999f7v80ik/s-gatztzbe84-e5agp6.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt0cwl-ftkf8g-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt0cwl-ftkf8g-working/dep-graph.part.bin new file mode 100644 index 0000000..49fa524 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt0cwl-ftkf8g-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt0cwl-ftkf8g.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt0cwl-ftkf8g.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt6ru8-14627ng-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt6ru8-14627ng-working/dep-graph.part.bin new file mode 100644 index 0000000..dd1486f Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt6ru8-14627ng-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt6ru8-14627ng.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztt6ru8-14627ng.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztthvi4-mes80m-working/dep-graph.part.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztthvi4-mes80m-working/dep-graph.part.bin new file mode 100644 index 0000000..571b891 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztthvi4-mes80m-working/dep-graph.part.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztthvi4-mes80m.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztthvi4-mes80m.lock new file mode 100755 index 0000000..e69de29 diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/dep-graph.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/dep-graph.bin new file mode 100644 index 0000000..ba18f63 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/dep-graph.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/query-cache.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/query-cache.bin new file mode 100644 index 0000000..a2365ea Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/query-cache.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/work-products.bin b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/work-products.bin new file mode 100644 index 0000000..c57a714 Binary files /dev/null and b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3-138i60jif22y6/work-products.bin differ diff --git a/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3.lock b/example_projects/rust/for_loop/target/debug/incremental/for_loop-8lru7gyaz3le/s-gatztujtpc-1s86lw3.lock new file mode 100755 index 0000000..e69de29 diff --git a/src/MemoryViewerViewProvider.ts b/src/MemoryViewerViewProvider.ts index b52de73..0874fb4 100644 --- a/src/MemoryViewerViewProvider.ts +++ b/src/MemoryViewerViewProvider.ts @@ -19,6 +19,9 @@ export class MemoryViewerViewProvider implements WebviewViewProvider { // Set the HTML content that will fill the webview view webviewView.webview.html = this._getWebviewContent(webviewView.webview, this._extensionUri); + vscode.debug.onDidChangeActiveDebugSession((event) => { + console.log("DEBUGGER CHANGED", event); + }); // Sets up an event listener to listen for messages passed from the webview view context // and executes code based on the message that is recieved @@ -60,24 +63,44 @@ export class MemoryViewerViewProvider implements WebviewViewProvider { } private _setWebviewMessageListener(webviewView: WebviewView) { - webviewView.webview.onDidReceiveMessage((message) => { + webviewView.webview.onDidReceiveMessage((message: MemoryViewerReadMemoryRequest) => { console.log("Received message from webview: ", message); switch (message.command) { case "readMemory": const activeDebugSession = vscode.debug.activeDebugSession; if (activeDebugSession !== undefined) { + try { activeDebugSession.customRequest("readMemory", { memoryReference: message.address, - count: 100, - }).then((response) => { + // offset: message.offset, + count: message.bufferSize, + }).then((response: MemoryViewerReadMemoryResponse) => { console.log("Got response", response); + response.direction = message.offset >= 0 ? "POSITIVE" : "NEGATIVE"; webviewView.webview.postMessage(response); }); + } catch (e) { + console.log("THERE WAS AN ERROR",e); + } } else { - console.log("Not is a valid session..."); + console.log("Not is a valid debug session is running..."); } break; } }); } +} + +interface MemoryViewerReadMemoryRequest { + command: "readMemory", + address: string, + offset: number, + bufferSize: number +} + +interface MemoryViewerReadMemoryResponse { + address: string; + unreadableBytes?: number; + data?: string; + direction: "POSITIVE" | "NEGATIVE" } \ No newline at end of file diff --git a/webview/package-lock.json b/webview/package-lock.json index d18b2a1..5ec6054 100644 --- a/webview/package-lock.json +++ b/webview/package-lock.json @@ -9,9 +9,11 @@ "version": "0.0.0", "license": "MIT", "dependencies": { + "@vscode/webview-ui-toolkit": "^1.0.0", "solid-js": "^1.3.12" }, "devDependencies": { + "@types/vscode-webview": "^1.57.0", "typescript": "^4.6.2", "vite": "^2.8.6", "vite-plugin-solid": "^2.2.6" @@ -494,6 +496,61 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@microsoft/fast-element": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.10.2.tgz", + "integrity": "sha512-Nh80AEx/caDe4jhFYNT75sTG4k6MWy1N6XfgyhmejAX0ylivYy0M78WI2JgQOqi2ZRozCiNcpAPLVhYyAVN9sA==" + }, + "node_modules/@microsoft/fast-foundation": { + "version": "2.46.9", + "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.46.9.tgz", + "integrity": "sha512-jgkVT7bAWIV844eDj3V9cmYFsRIcJ8vMuB4h2SlkJ9EmFbCfimvh6RyAhsHv+bC6QZSS0N0bpZHm5A5QsWgi3Q==", + "dependencies": { + "@microsoft/fast-element": "^1.10.2", + "@microsoft/fast-web-utilities": "^5.4.1", + "tabbable": "^5.2.0", + "tslib": "^1.13.0" + } + }, + "node_modules/@microsoft/fast-react-wrapper": { + "version": "0.1.48", + "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz", + "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==", + "dependencies": { + "@microsoft/fast-element": "^1.9.0", + "@microsoft/fast-foundation": "^2.41.1" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/@microsoft/fast-web-utilities": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", + "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", + "dependencies": { + "exenv-es6": "^1.1.1" + } + }, + "node_modules/@types/vscode-webview": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.0.tgz", + "integrity": "sha512-x3Cb/SMa1IwRHfSvKaZDZOTh4cNoG505c3NjTqGlMC082m++x/ETUmtYniDsw6SSmYzZXO8KBNhYxR0+VqymqA==", + "dev": true + }, + "node_modules/@vscode/webview-ui-toolkit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.0.0.tgz", + "integrity": "sha512-/qaHYZXqvIKkao54b7bLzyNH8BC+X4rBmTUx1MvcIiCjqRMxml0BCpqJhnDpfrCb0IOxXRO8cAy1eB5ayzQfBA==", + "dependencies": { + "@microsoft/fast-element": "^1.6.2", + "@microsoft/fast-foundation": "^2.38.0", + "@microsoft/fast-react-wrapper": "^0.1.18" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1018,6 +1075,11 @@ "node": ">=0.8.0" } }, + "node_modules/exenv-es6": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", + "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==" + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -1110,8 +1172,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsesc": { "version": "2.5.2", @@ -1137,6 +1198,18 @@ "node": ">=6" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/merge-anything": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.0.2.tgz", @@ -1213,6 +1286,18 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -1321,6 +1406,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1336,6 +1426,11 @@ "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "dev": true }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/typescript": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", @@ -1756,6 +1851,55 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@microsoft/fast-element": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.10.2.tgz", + "integrity": "sha512-Nh80AEx/caDe4jhFYNT75sTG4k6MWy1N6XfgyhmejAX0ylivYy0M78WI2JgQOqi2ZRozCiNcpAPLVhYyAVN9sA==" + }, + "@microsoft/fast-foundation": { + "version": "2.46.9", + "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.46.9.tgz", + "integrity": "sha512-jgkVT7bAWIV844eDj3V9cmYFsRIcJ8vMuB4h2SlkJ9EmFbCfimvh6RyAhsHv+bC6QZSS0N0bpZHm5A5QsWgi3Q==", + "requires": { + "@microsoft/fast-element": "^1.10.2", + "@microsoft/fast-web-utilities": "^5.4.1", + "tabbable": "^5.2.0", + "tslib": "^1.13.0" + } + }, + "@microsoft/fast-react-wrapper": { + "version": "0.1.48", + "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz", + "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==", + "requires": { + "@microsoft/fast-element": "^1.9.0", + "@microsoft/fast-foundation": "^2.41.1" + } + }, + "@microsoft/fast-web-utilities": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", + "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", + "requires": { + "exenv-es6": "^1.1.1" + } + }, + "@types/vscode-webview": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.0.tgz", + "integrity": "sha512-x3Cb/SMa1IwRHfSvKaZDZOTh4cNoG505c3NjTqGlMC082m++x/ETUmtYniDsw6SSmYzZXO8KBNhYxR0+VqymqA==", + "dev": true + }, + "@vscode/webview-ui-toolkit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.0.0.tgz", + "integrity": "sha512-/qaHYZXqvIKkao54b7bLzyNH8BC+X4rBmTUx1MvcIiCjqRMxml0BCpqJhnDpfrCb0IOxXRO8cAy1eB5ayzQfBA==", + "requires": { + "@microsoft/fast-element": "^1.6.2", + "@microsoft/fast-foundation": "^2.38.0", + "@microsoft/fast-react-wrapper": "^0.1.18" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2046,6 +2190,11 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "exenv-es6": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", + "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==" + }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -2110,8 +2259,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "jsesc": { "version": "2.5.2", @@ -2125,6 +2273,15 @@ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "merge-anything": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.0.2.tgz", @@ -2176,6 +2333,15 @@ "source-map-js": "^1.0.2" } }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -2251,6 +2417,11 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tabbable": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -2263,6 +2434,11 @@ "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "dev": true }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "typescript": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", diff --git a/webview/package.json b/webview/package.json index 7bb6e6d..952090e 100644 --- a/webview/package.json +++ b/webview/package.json @@ -13,9 +13,11 @@ "devDependencies": { "typescript": "^4.6.2", "vite": "^2.8.6", - "vite-plugin-solid": "^2.2.6" + "vite-plugin-solid": "^2.2.6", + "@types/vscode-webview": "^1.57.0" }, "dependencies": { - "solid-js": "^1.3.12" + "solid-js": "^1.3.12", + "@vscode/webview-ui-toolkit": "^1.0.0" } } diff --git a/webview/src/MemoryViewer.tsx b/webview/src/MemoryViewer.tsx index e31057f..160f5d7 100644 --- a/webview/src/MemoryViewer.tsx +++ b/webview/src/MemoryViewer.tsx @@ -1,35 +1,98 @@ -import { createEffect, createSignal } from 'solid-js'; +import { createEffect, createSignal, onCleanup, onMount } from 'solid-js'; import MemoryViewerBufferTable from './componenets/MemoryViewerBufferTable'; import MemoryViewerHeader from './componenets/MemoryViewerHeader'; -// import { VSCodeAPI } from '.'; +import {vscode} from './utilities/vscode'; import styles from './MemoryViewer.module.css'; +const BUFFER_SIZE = 8 * 256; +let ACTIVE_OFFSET_NEGATIVE = 0; +let ACTIVE_OFFSET_POSITIVE = 0; + export default function MemoryViewer() { - const [bytes, setBytes] = createSignal(Array.from({length: (8 * 100)}, _ => Math.floor( - Math.random() * 255 - ))); + const [bytes, setBytes] = createSignal([]); + const [address, setAddress] = createSignal(""); + const [activeNegativeOffset, setActiveNegativeOffset] = createSignal(0); + const [activePositiveOffset, setActivePositiveOffset] = createSignal(0); + const onMessageCallback = (message: any) => { + console.log("Message", message); + var binaryString = window.atob(message.data.data); + var len = binaryString.length; + var collectedBytes = new Array(len); + for (var i = 0; i < len; i++) { + collectedBytes[i] = binaryString.charCodeAt(i); + } + if (message.data.direction === "NEGATIVE") { + console.log("Should have preappended the bytes"); + setBytes([...collectedBytes, ...bytes()]); + } else { + setBytes([...bytes(), ...collectedBytes]); + } + + }; createEffect(() => { - console.log("bytes", bytes()); + vscode.postMessage({ + command: "readMemory", + address: address(), + offset: 0, + bufferSize: BUFFER_SIZE + }); + setActivePositiveOffset(0); + setActiveNegativeOffset(0); + }); + + onMount(() => { + window.addEventListener('message', onMessageCallback); + vscode.postMessage({ + command: "readMemory", + address: address(), + offset: activePositiveOffset(), + bufferSize: BUFFER_SIZE + }); + setActivePositiveOffset(activePositiveOffset() + BUFFER_SIZE); + }); + onCleanup(() => { + window.removeEventListener('message', onMessageCallback); }); return (
- + { + setBytes([]); + vscode.postMessage({ + command: "readMemory", + address: address(), + offset: 0, + bufferSize: BUFFER_SIZE + }); + ACTIVE_OFFSET_POSITIVE = 0; + ACTIVE_OFFSET_NEGATIVE = 0; + }} + onAddressEntered={(address) => { + console.log("Set address", address); + setAddress(address); + }}/> { - console.log('scroll bottom'); - setBytes([...bytes(), ...Array.from({length: (8 * 100)}, _ => Math.floor( - Math.random() * 255 - ))]); - }} onScrollTop={() => { - console.log('scroll top'); - setBytes([...Array.from({length: (8 * 100)}, _ => Math.floor( - Math.random() * 255 - )), ...bytes()]); + // vscode.postMessage({ + // command: "readMemory", + // address: address(), + // offset: activeNegativeOffset(), + // bufferSize: BUFFER_SIZE + // }); + // setActiveNegativeOffset(activeNegativeOffset() - BUFFER_SIZE); + }} + onScrollBottom={() => { + // vscode.postMessage({ + // command: "readMemory", + // address: address(), + // offset: activePositiveOffset(), + // bufferSize: BUFFER_SIZE + // }); + // setActivePositiveOffset(activePositiveOffset() + BUFFER_SIZE); }} />
diff --git a/webview/src/VSCodeToolkit.d.ts b/webview/src/VSCodeToolkit.d.ts new file mode 100644 index 0000000..9662500 --- /dev/null +++ b/webview/src/VSCodeToolkit.d.ts @@ -0,0 +1,37 @@ +import "solid-js"; + +// An important part of getting the Webview UI Toolkit to work with +// Solid + TypeScript + JSX is to extend the solid-js JSX.IntrinsicElements +// type interface to include type annotations for each of the toolkit's components. +// +// Without this, type errors will occur when you try to use any toolkit component +// in your Solid + TypeScript + JSX component code. (Note that this file shouldn't be +// necessary if you're not using TypeScript or are using tagged template literals +// instead of JSX for your Solid component code). +// +// Important: This file should be updated whenever a new component is added to the +// toolkit. You can find a list of currently available toolkit components here: +// +// https://github.com/microsoft/vscode-webview-ui-toolkit/blob/main/docs/components.md +// +declare module "solid-js" { + namespace JSX { + interface IntrinsicElements { + "vscode-badge": any; + "vscode-button": any; + "vscode-checkbox": any; + "vscode-data-grid": any; + "vscode-divider": any; + "vscode-dropdown": any; + "vscode-link": any; + "vscode-option": any; + "vscode-panels": any; + "vscode-progress-ring": any; + "vscode-radio": any; + "vscode-radio-group": any; + "vscode-tag": any; + "vscode-text-area": any; + "vscode-text-field": any; + } + } +} \ No newline at end of file diff --git a/webview/src/componenets/MemoryViewerBufferTable/index.tsx b/webview/src/componenets/MemoryViewerBufferTable/index.tsx index a0298c1..c55e866 100644 --- a/webview/src/componenets/MemoryViewerBufferTable/index.tsx +++ b/webview/src/componenets/MemoryViewerBufferTable/index.tsx @@ -96,7 +96,7 @@ export default function MemoryViewerBufferTable(props: MemoryViewerBufferTablePr 'padding-left': '32px', 'width': '100%', 'background-color': 'var(--vscode-sideBar-background)', - }}>Decoded Text + }}>Decoded ASCII Text diff --git a/webview/src/componenets/MemoryViewerHeader/index.tsx b/webview/src/componenets/MemoryViewerHeader/index.tsx index f77bc70..8f29f0d 100644 --- a/webview/src/componenets/MemoryViewerHeader/index.tsx +++ b/webview/src/componenets/MemoryViewerHeader/index.tsx @@ -1,10 +1,15 @@ +import { createSignal } from "solid-js"; export interface MemoryViewerHeaderProps { - + onAddressEntered: (address: string) => void + onRefresh: () => void } -export default function MemoryViewerHeader({}: MemoryViewerHeaderProps) { +export default function MemoryViewerHeader({ + onAddressEntered, + onRefresh +}: MemoryViewerHeaderProps) { return (
- { + if(e.key === "Enter") { + console.log("e", e); + e.target.blur(); + onAddressEntered(e.target.value); + } + }} + style={{ flex: '1', "margin-right": '4px', - }} placeholder="Enter Hex Address or Variable Name..."/> - + }} placeholder="Enter Hex Address or Variable Name..."> + + + {onRefresh()}} appearance="icon" aria-label="Confirm"> diff --git a/webview/src/types.d.ts b/webview/src/types.d.ts index 57321b8..8010fb3 100644 --- a/webview/src/types.d.ts +++ b/webview/src/types.d.ts @@ -1,10 +1,10 @@ -import * as VSCodeWebviewUIToolkit from '@vscode/webview-ui-toolkit'; -declare module 'solid-js/types/jsx' { - namespace JSX { - interface IntrinsicElements { - ['vscode-text-field']: InputHTMLAttributes; - ['vscode-button']: HTMLAttributes & {appearance: string}; - ['vscode-divider']: HTMLAttributes; - } - } -} \ No newline at end of file +// import * as VSCodeWebviewUIToolkit from '@vscode/webview-ui-toolkit'; +// declare module 'solid-js/types/jsx' { +// namespace JSX { +// interface IntrinsicElements { +// ['vscode-text-field']: InputHTMLAttributes; +// ['vscode-button']: HTMLAttributes & {appearance: string}; +// ['vscode-divider']: HTMLAttributes; +// } +// } +// } \ No newline at end of file diff --git a/webview/src/utilities/vscode.ts b/webview/src/utilities/vscode.ts new file mode 100644 index 0000000..7319e85 --- /dev/null +++ b/webview/src/utilities/vscode.ts @@ -0,0 +1,78 @@ +import type { WebviewApi } from "vscode-webview"; + +/** + * A utility wrapper around the acquireVsCodeApi() function, which enables + * message passing and state management between the webview and extension + * contexts. + * + * This utility also enables webview code to be run in a web browser-based + * dev server by using native web browser features that mock the functionality + * enabled by acquireVsCodeApi. + */ +class VSCodeAPIWrapper { + private readonly vsCodeApi: WebviewApi | undefined; + + constructor() { + // Check if the acquireVsCodeApi function exists in the current development + // context (i.e. VS Code development window or web browser) + if (typeof acquireVsCodeApi === "function") { + this.vsCodeApi = acquireVsCodeApi(); + } + } + + /** + * Post a message (i.e. send arbitrary data) to the owner of the webview. + * + * @remarks When running webview code inside a web browser, postMessage will instead + * log the given message to the console. + * + * @param message Abitrary data (must be JSON serializable) to send to the extension context. + */ + public postMessage(message: unknown) { + if (this.vsCodeApi) { + this.vsCodeApi.postMessage(message); + } else { + console.log(message); + } + } + + /** + * Get the persistent state stored for this webview. + * + * @remarks When running webview source code inside a web browser, getState will retrieve state + * from local storage (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). + * + * @return The current state or `undefined` if no state has been set. + */ + public getState(): unknown | undefined { + if (this.vsCodeApi) { + return this.vsCodeApi.getState(); + } else { + const state = localStorage.getItem("vscodeState"); + return state ? JSON.parse(state) : undefined; + } + } + + /** + * Set the persistent state stored for this webview. + * + * @remarks When running webview source code inside a web browser, setState will set the given + * state using local storage (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). + * + * @param newState New persisted state. This must be a JSON serializable object. Can be retrieved + * using {@link getState}. + * + * @return The new state. + */ + public setState(newState: T): T { + if (this.vsCodeApi) { + return this.vsCodeApi.setState(newState); + } else { + localStorage.setItem("vscodeState", JSON.stringify(newState)); + return newState; + } + } +} + +// Exports class singleton to prevent multiple invocations of acquireVsCodeApi. +export const vscode = new VSCodeAPIWrapper(); \ No newline at end of file