data endpoint for entity 90008 (aka. a website)

move dysnomia out of tree

ptr.pet 79ec1f7c 6f5313bc

verified
0/0
Waiting for spindle ...
+1 -1
deno.json
···
{
-
"workspace": ["./eunomia", "./dysnomia/www"],
+
"workspace": ["./eunomia"],
"nodeModulesDir": "auto"
}
-2
dysnomia/.cargo/config.toml
···
-
[target.wasm32-unknown-unknown]
-
rustflags = ["-C", "target-feature=+atomics,+bulk-memory,+mutable-globals,+simd128"]
-6632
dysnomia/Cargo.lock
···
-
# This file is automatically @generated by Cargo.
-
# It is not intended for manual editing.
-
version = 4
-
-
[[package]]
-
name = "abnf"
-
version = "0.13.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "087113bd50d9adce24850eed5d0476c7d199d532fce8fab5173650331e09033a"
-
dependencies = [
-
"abnf-core",
-
"nom",
-
]
-
-
[[package]]
-
name = "abnf-core"
-
version = "0.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c44e09c43ae1c368fb91a03a566472d0087c26cf7e1b9e8e289c14ede681dd7d"
-
dependencies = [
-
"nom",
-
]
-
-
[[package]]
-
name = "addr2line"
-
version = "0.25.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
-
dependencies = [
-
"gimli",
-
]
-
-
[[package]]
-
name = "adler2"
-
version = "2.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
-
-
[[package]]
-
name = "aho-corasick"
-
version = "1.1.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "aliasable"
-
version = "0.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
-
-
[[package]]
-
name = "alloc-no-stdlib"
-
version = "2.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
-
-
[[package]]
-
name = "alloc-stdlib"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
-
dependencies = [
-
"alloc-no-stdlib",
-
]
-
-
[[package]]
-
name = "allocator-api2"
-
version = "0.2.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
-
-
[[package]]
-
name = "alphanumeric-sort"
-
version = "1.5.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ab31f79a61d3c25cae1d6734a386662e5cf1b6ba5a9720c135b609273c058c15"
-
-
[[package]]
-
name = "android_system_properties"
-
version = "0.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-
dependencies = [
-
"libc",
-
]
-
-
[[package]]
-
name = "ansi-str"
-
version = "0.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "060de1453b69f46304b28274f382132f4e72c55637cf362920926a70d090890d"
-
dependencies = [
-
"ansitok",
-
]
-
-
[[package]]
-
name = "ansi_term"
-
version = "0.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
-
dependencies = [
-
"winapi",
-
]
-
-
[[package]]
-
name = "ansitok"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c0a8acea8c2f1c60f0a92a8cd26bf96ca97db56f10bbcab238bbe0cceba659ee"
-
dependencies = [
-
"nom",
-
"vte",
-
]
-
-
[[package]]
-
name = "anstream"
-
version = "0.6.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
-
dependencies = [
-
"anstyle",
-
"anstyle-parse",
-
"anstyle-query",
-
"anstyle-wincon",
-
"colorchoice",
-
"is_terminal_polyfill",
-
"utf8parse",
-
]
-
-
[[package]]
-
name = "anstyle"
-
version = "1.0.13"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
-
-
[[package]]
-
name = "anstyle-parse"
-
version = "0.2.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
-
dependencies = [
-
"utf8parse",
-
]
-
-
[[package]]
-
name = "anstyle-query"
-
version = "1.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
-
dependencies = [
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "anstyle-wincon"
-
version = "3.0.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
-
dependencies = [
-
"anstyle",
-
"once_cell_polyfill",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "anyhow"
-
version = "1.0.100"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
-
-
[[package]]
-
name = "arbitrary"
-
version = "1.4.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
-
dependencies = [
-
"derive_arbitrary",
-
]
-
-
[[package]]
-
name = "arrayvec"
-
version = "0.7.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
-
-
[[package]]
-
name = "async-compression"
-
version = "0.4.36"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37"
-
dependencies = [
-
"compression-codecs",
-
"compression-core",
-
"futures-core",
-
"pin-project-lite",
-
"tokio",
-
]
-
-
[[package]]
-
name = "atoi_simd"
-
version = "0.16.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c2a49e05797ca52e312a0c658938b7d00693ef037799ef7187678f212d7684cf"
-
dependencies = [
-
"debug_unsafe",
-
]
-
-
[[package]]
-
name = "atomic-polyfill"
-
version = "1.0.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4"
-
dependencies = [
-
"critical-section",
-
]
-
-
[[package]]
-
name = "atomic-waker"
-
version = "1.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
-
-
[[package]]
-
name = "autocfg"
-
version = "1.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
-
-
[[package]]
-
name = "backtrace"
-
version = "0.3.76"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
-
dependencies = [
-
"addr2line",
-
"cfg-if",
-
"libc",
-
"miniz_oxide",
-
"object",
-
"rustc-demangle",
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "backtrace-ext"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50"
-
dependencies = [
-
"backtrace",
-
]
-
-
[[package]]
-
name = "base-x"
-
version = "0.2.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
-
-
[[package]]
-
name = "base16ct"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
-
-
[[package]]
-
name = "base256emoji"
-
version = "1.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c"
-
dependencies = [
-
"const-str",
-
"match-lookup",
-
]
-
-
[[package]]
-
name = "base64"
-
version = "0.22.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-
-
[[package]]
-
name = "base64ct"
-
version = "1.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a"
-
-
[[package]]
-
name = "bindgen"
-
version = "0.72.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
-
dependencies = [
-
"bitflags",
-
"cexpr",
-
"clang-sys",
-
"itertools 0.13.0",
-
"proc-macro2",
-
"quote",
-
"regex",
-
"rustc-hash",
-
"shlex",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "bit-set"
-
version = "0.8.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
-
dependencies = [
-
"bit-vec",
-
]
-
-
[[package]]
-
name = "bit-vec"
-
version = "0.8.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
-
-
[[package]]
-
name = "bitflags"
-
version = "2.10.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
-
-
[[package]]
-
name = "block-buffer"
-
version = "0.10.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-
dependencies = [
-
"generic-array",
-
]
-
-
[[package]]
-
name = "bon"
-
version = "3.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1"
-
dependencies = [
-
"bon-macros",
-
"rustversion",
-
]
-
-
[[package]]
-
name = "bon-macros"
-
version = "3.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645"
-
dependencies = [
-
"darling",
-
"ident_case",
-
"prettyplease",
-
"proc-macro2",
-
"quote",
-
"rustversion",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "borsh"
-
version = "1.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f"
-
dependencies = [
-
"cfg_aliases",
-
]
-
-
[[package]]
-
name = "bracoxide"
-
version = "0.1.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f5a4d25760c1b6f53db7257292236bc20da1215a1004ee330b37976eeac3af31"
-
-
[[package]]
-
name = "brotli"
-
version = "8.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
-
dependencies = [
-
"alloc-no-stdlib",
-
"alloc-stdlib",
-
"brotli-decompressor",
-
]
-
-
[[package]]
-
name = "brotli-decompressor"
-
version = "5.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
-
dependencies = [
-
"alloc-no-stdlib",
-
"alloc-stdlib",
-
]
-
-
[[package]]
-
name = "bstr"
-
version = "1.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
-
dependencies = [
-
"memchr",
-
"regex-automata",
-
"serde",
-
]
-
-
[[package]]
-
name = "btree-range-map"
-
version = "0.7.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1be5c9672446d3800bcbcaabaeba121fe22f1fb25700c4562b22faf76d377c33"
-
dependencies = [
-
"btree-slab",
-
"cc-traits",
-
"range-traits",
-
"serde",
-
"slab",
-
]
-
-
[[package]]
-
name = "btree-slab"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7a2b56d3029f075c4fa892428a098425b86cef5c89ae54073137ece416aef13c"
-
dependencies = [
-
"cc-traits",
-
"slab",
-
"smallvec",
-
]
-
-
[[package]]
-
name = "buf-trait"
-
version = "0.4.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "21eaafc770e8c073d6c3facafe7617e774305d4954aa6351b9c452eb37ee17b4"
-
dependencies = [
-
"zerocopy 0.7.35",
-
]
-
-
[[package]]
-
name = "bumpalo"
-
version = "3.19.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
-
-
[[package]]
-
name = "bytecount"
-
version = "0.6.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
-
-
[[package]]
-
name = "byteorder"
-
version = "1.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
-
[[package]]
-
name = "bytes"
-
version = "1.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "bytesize"
-
version = "2.3.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3"
-
-
[[package]]
-
name = "byteyarn"
-
version = "0.5.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b93e51d26468a15ea59f8525e0c13dc405db43e644a0b1e6d44346c72cf4cf7b"
-
dependencies = [
-
"buf-trait",
-
]
-
-
[[package]]
-
name = "calamine"
-
version = "0.28.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "15e02a18e79de779a78b0a6ec84a3deed1ff0607dd970a11369f993263f99f1a"
-
dependencies = [
-
"atoi_simd",
-
"byteorder",
-
"chrono",
-
"codepage",
-
"encoding_rs",
-
"fast-float2",
-
"log",
-
"quick-xml 0.37.5",
-
"serde",
-
"zip",
-
]
-
-
[[package]]
-
name = "castaway"
-
version = "0.2.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
-
dependencies = [
-
"rustversion",
-
]
-
-
[[package]]
-
name = "cbor4ii"
-
version = "0.2.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "cc"
-
version = "1.2.49"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
-
dependencies = [
-
"find-msvc-tools",
-
"shlex",
-
]
-
-
[[package]]
-
name = "cc-traits"
-
version = "2.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "060303ef31ef4a522737e1b1ab68c67916f2a787bb2f4f54f383279adba962b5"
-
dependencies = [
-
"slab",
-
]
-
-
[[package]]
-
name = "cexpr"
-
version = "0.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
-
dependencies = [
-
"nom",
-
]
-
-
[[package]]
-
name = "cfg-if"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
-
-
[[package]]
-
name = "cfg_aliases"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
-
-
[[package]]
-
name = "chardetng"
-
version = "0.1.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "14b8f0b65b7b08ae3c8187e8d77174de20cb6777864c6b832d8ad365999cf1ea"
-
dependencies = [
-
"cfg-if",
-
"encoding_rs",
-
"memchr",
-
]
-
-
[[package]]
-
name = "chrono"
-
version = "0.4.42"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
-
dependencies = [
-
"iana-time-zone",
-
"js-sys",
-
"num-traits",
-
"pure-rust-locales",
-
"serde",
-
"wasm-bindgen",
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "chrono-humanize"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b"
-
dependencies = [
-
"chrono",
-
]
-
-
[[package]]
-
name = "chrono-tz"
-
version = "0.10.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3"
-
dependencies = [
-
"chrono",
-
"phf 0.12.1",
-
]
-
-
[[package]]
-
name = "ciborium"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
-
dependencies = [
-
"ciborium-io",
-
"ciborium-ll",
-
"serde",
-
]
-
-
[[package]]
-
name = "ciborium-io"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
-
-
[[package]]
-
name = "ciborium-ll"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
-
dependencies = [
-
"ciborium-io",
-
"half",
-
]
-
-
[[package]]
-
name = "cid"
-
version = "0.11.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a"
-
dependencies = [
-
"core2",
-
"multibase",
-
"multihash",
-
"serde",
-
"serde_bytes",
-
"unsigned-varint 0.8.0",
-
]
-
-
[[package]]
-
name = "clang-sys"
-
version = "1.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
-
dependencies = [
-
"glob",
-
"libc",
-
"libloading",
-
]
-
-
[[package]]
-
name = "clap"
-
version = "4.5.53"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
-
dependencies = [
-
"clap_builder",
-
]
-
-
[[package]]
-
name = "clap_builder"
-
version = "4.5.53"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
-
dependencies = [
-
"anstream",
-
"anstyle",
-
"clap_lex",
-
"strsim",
-
"terminal_size",
-
]
-
-
[[package]]
-
name = "clap_lex"
-
version = "0.7.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
-
-
[[package]]
-
name = "cobs"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
-
dependencies = [
-
"thiserror 2.0.17",
-
]
-
-
[[package]]
-
name = "codepage"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4"
-
dependencies = [
-
"encoding_rs",
-
]
-
-
[[package]]
-
name = "colorchoice"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
-
-
[[package]]
-
name = "compression-codecs"
-
version = "0.4.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2"
-
dependencies = [
-
"compression-core",
-
"flate2",
-
"memchr",
-
]
-
-
[[package]]
-
name = "compression-core"
-
version = "0.4.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d"
-
-
[[package]]
-
name = "console"
-
version = "0.15.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
-
dependencies = [
-
"encode_unicode",
-
"libc",
-
"once_cell",
-
"unicode-width 0.2.2",
-
"windows-sys 0.59.0",
-
]
-
-
[[package]]
-
name = "console"
-
version = "0.16.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4"
-
dependencies = [
-
"encode_unicode",
-
"libc",
-
"once_cell",
-
"unicode-width 0.2.2",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "console_error_panic_hook"
-
version = "0.1.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
-
dependencies = [
-
"cfg-if",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "const-oid"
-
version = "0.9.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
-
-
[[package]]
-
name = "const-str"
-
version = "0.4.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3"
-
-
[[package]]
-
name = "const_format"
-
version = "0.2.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad"
-
dependencies = [
-
"const_format_proc_macros",
-
]
-
-
[[package]]
-
name = "const_format_proc_macros"
-
version = "0.2.34"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"unicode-xid",
-
]
-
-
[[package]]
-
name = "cordyceps"
-
version = "0.3.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a"
-
dependencies = [
-
"loom",
-
"tracing",
-
]
-
-
[[package]]
-
name = "core-foundation"
-
version = "0.9.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-
dependencies = [
-
"core-foundation-sys",
-
"libc",
-
]
-
-
[[package]]
-
name = "core-foundation-sys"
-
version = "0.8.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-
-
[[package]]
-
name = "core2"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "cpufeatures"
-
version = "0.2.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
-
dependencies = [
-
"libc",
-
]
-
-
[[package]]
-
name = "crc32fast"
-
version = "1.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
-
dependencies = [
-
"cfg-if",
-
]
-
-
[[package]]
-
name = "critical-section"
-
version = "1.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
-
-
[[package]]
-
name = "crossbeam-channel"
-
version = "0.5.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
-
dependencies = [
-
"crossbeam-utils",
-
]
-
-
[[package]]
-
name = "crossbeam-deque"
-
version = "0.8.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
-
dependencies = [
-
"crossbeam-epoch",
-
"crossbeam-utils",
-
]
-
-
[[package]]
-
name = "crossbeam-epoch"
-
version = "0.9.18"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-
dependencies = [
-
"crossbeam-utils",
-
]
-
-
[[package]]
-
name = "crossbeam-utils"
-
version = "0.8.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
-
-
[[package]]
-
name = "crossterm_winapi"
-
version = "0.9.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
-
dependencies = [
-
"winapi",
-
]
-
-
[[package]]
-
name = "crunchy"
-
version = "0.2.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
-
-
[[package]]
-
name = "crypto-bigint"
-
version = "0.5.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
-
dependencies = [
-
"generic-array",
-
"rand_core 0.6.4",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "crypto-common"
-
version = "0.1.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
-
dependencies = [
-
"generic-array",
-
"typenum",
-
]
-
-
[[package]]
-
name = "csv"
-
version = "1.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938"
-
dependencies = [
-
"csv-core",
-
"itoa",
-
"ryu",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "csv-core"
-
version = "0.1.13"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "curve25519-dalek"
-
version = "4.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
-
dependencies = [
-
"cfg-if",
-
"cpufeatures",
-
"curve25519-dalek-derive",
-
"digest",
-
"fiat-crypto",
-
"rustc_version",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "curve25519-dalek-derive"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "darling"
-
version = "0.21.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
-
dependencies = [
-
"darling_core",
-
"darling_macro",
-
]
-
-
[[package]]
-
name = "darling_core"
-
version = "0.21.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
-
dependencies = [
-
"fnv",
-
"ident_case",
-
"proc-macro2",
-
"quote",
-
"strsim",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "darling_macro"
-
version = "0.21.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
-
dependencies = [
-
"darling_core",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "dashmap"
-
version = "6.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
-
dependencies = [
-
"cfg-if",
-
"crossbeam-utils",
-
"hashbrown 0.14.5",
-
"lock_api",
-
"once_cell",
-
"parking_lot_core",
-
]
-
-
[[package]]
-
name = "data-encoding"
-
version = "2.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
-
-
[[package]]
-
name = "data-encoding-macro"
-
version = "0.1.18"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d"
-
dependencies = [
-
"data-encoding",
-
"data-encoding-macro-internal",
-
]
-
-
[[package]]
-
name = "data-encoding-macro-internal"
-
version = "0.1.16"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976"
-
dependencies = [
-
"data-encoding",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "debug_unsafe"
-
version = "0.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "85d3cef41d236720ed453e102153a53e4cc3d2fde848c0078a50cf249e8e3e5b"
-
-
[[package]]
-
name = "der"
-
version = "0.7.10"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
-
dependencies = [
-
"const-oid",
-
"pem-rfc7468",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "deranged"
-
version = "0.5.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
-
dependencies = [
-
"powerfmt",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "derive_arbitrary"
-
version = "1.4.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "derive_more"
-
version = "1.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
-
dependencies = [
-
"derive_more-impl",
-
]
-
-
[[package]]
-
name = "derive_more-impl"
-
version = "1.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
"unicode-xid",
-
]
-
-
[[package]]
-
name = "devicons"
-
version = "0.6.12"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "830e47e2f330cf4fdd5a958dcef921b9523ffc21ab6713aa5e77ba2cce03904b"
-
dependencies = [
-
"lazy_static",
-
]
-
-
[[package]]
-
name = "dialoguer"
-
version = "0.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
-
dependencies = [
-
"console 0.15.11",
-
"fuzzy-matcher",
-
"shell-words",
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "diatomic-waker"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c"
-
-
[[package]]
-
name = "digest"
-
version = "0.10.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-
dependencies = [
-
"block-buffer",
-
"const-oid",
-
"crypto-common",
-
"subtle",
-
]
-
-
[[package]]
-
name = "dirs"
-
version = "6.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
-
dependencies = [
-
"dirs-sys",
-
]
-
-
[[package]]
-
name = "dirs-sys"
-
version = "0.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
-
dependencies = [
-
"libc",
-
"option-ext",
-
"redox_users",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "displaydoc"
-
version = "0.2.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "dtparse"
-
version = "2.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "23fb403c0926d35af2cc54d961bc2696a10d40725c08360ef69db04a4c201fd7"
-
dependencies = [
-
"chrono",
-
"lazy_static",
-
"num-traits",
-
"rust_decimal",
-
]
-
-
[[package]]
-
name = "dyn-clone"
-
version = "1.0.20"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
-
-
[[package]]
-
name = "dysnomia-sh"
-
version = "0.1.0"
-
dependencies = [
-
"ansi_term",
-
"anyhow",
-
"console_error_panic_hook",
-
"futures",
-
"getrandom 0.3.4",
-
"jacquard",
-
"jacquard-repo",
-
"js-sys",
-
"miette",
-
"nu-cmd-extra",
-
"nu-cmd-lang",
-
"nu-command",
-
"nu-engine",
-
"nu-parser",
-
"nu-protocol",
-
"rapidhash",
-
"reqwest",
-
"scc",
-
"serde",
-
"serde_ipld_dagcbor",
-
"serde_json",
-
"url",
-
"vfs",
-
"wasm-bindgen",
-
"wasm-bindgen-futures",
-
"web-sys",
-
]
-
-
[[package]]
-
name = "ecdsa"
-
version = "0.16.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
-
dependencies = [
-
"der",
-
"digest",
-
"elliptic-curve",
-
"rfc6979",
-
"signature",
-
"spki",
-
]
-
-
[[package]]
-
name = "ed25519"
-
version = "2.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
-
dependencies = [
-
"pkcs8",
-
"signature",
-
]
-
-
[[package]]
-
name = "ed25519-dalek"
-
version = "2.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"
-
dependencies = [
-
"curve25519-dalek",
-
"ed25519",
-
"rand_core 0.6.4",
-
"serde",
-
"sha2",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "either"
-
version = "1.15.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
-
-
[[package]]
-
name = "elliptic-curve"
-
version = "0.13.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
-
dependencies = [
-
"base16ct",
-
"crypto-bigint",
-
"digest",
-
"ff",
-
"generic-array",
-
"group",
-
"pem-rfc7468",
-
"pkcs8",
-
"rand_core 0.6.4",
-
"sec1",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "embedded-io"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
-
-
[[package]]
-
name = "embedded-io"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
-
-
[[package]]
-
name = "encode_unicode"
-
version = "1.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
-
-
[[package]]
-
name = "encoding_rs"
-
version = "0.8.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
-
dependencies = [
-
"cfg-if",
-
]
-
-
[[package]]
-
name = "equivalent"
-
version = "1.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
-
-
[[package]]
-
name = "erased-serde"
-
version = "0.4.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
-
dependencies = [
-
"serde",
-
"serde_core",
-
"typeid",
-
]
-
-
[[package]]
-
name = "errno"
-
version = "0.3.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
-
dependencies = [
-
"libc",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "fancy-regex"
-
version = "0.16.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f"
-
dependencies = [
-
"bit-set",
-
"regex-automata",
-
"regex-syntax",
-
]
-
-
[[package]]
-
name = "fast-float2"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55"
-
-
[[package]]
-
name = "fastrand"
-
version = "2.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
-
-
[[package]]
-
name = "ff"
-
version = "0.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393"
-
dependencies = [
-
"rand_core 0.6.4",
-
"subtle",
-
]
-
-
[[package]]
-
name = "fiat-crypto"
-
version = "0.2.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
-
-
[[package]]
-
name = "filesize"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "12d741e2415d4e2e5bd1c1d00409d1a8865a57892c2d689b504365655d237d43"
-
dependencies = [
-
"winapi",
-
]
-
-
[[package]]
-
name = "filetime"
-
version = "0.2.26"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
-
dependencies = [
-
"cfg-if",
-
"libc",
-
"libredox",
-
"windows-sys 0.60.2",
-
]
-
-
[[package]]
-
name = "find-msvc-tools"
-
version = "0.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
-
-
[[package]]
-
name = "flate2"
-
version = "1.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
-
dependencies = [
-
"crc32fast",
-
"libz-rs-sys",
-
"miniz_oxide",
-
]
-
-
[[package]]
-
name = "fluent"
-
version = "0.17.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8137a6d5a2c50d6b0ebfcb9aaa91a28154e0a70605f112d30cb0cd4a78670477"
-
dependencies = [
-
"fluent-bundle",
-
"unic-langid",
-
]
-
-
[[package]]
-
name = "fluent-bundle"
-
version = "0.16.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4"
-
dependencies = [
-
"fluent-langneg",
-
"fluent-syntax",
-
"intl-memoizer",
-
"intl_pluralrules",
-
"rustc-hash",
-
"self_cell",
-
"smallvec",
-
"unic-langid",
-
]
-
-
[[package]]
-
name = "fluent-langneg"
-
version = "0.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0"
-
dependencies = [
-
"unic-langid",
-
]
-
-
[[package]]
-
name = "fluent-syntax"
-
version = "0.12.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198"
-
dependencies = [
-
"memchr",
-
"thiserror 2.0.17",
-
]
-
-
[[package]]
-
name = "fnv"
-
version = "1.0.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-
[[package]]
-
name = "foldhash"
-
version = "0.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
-
-
[[package]]
-
name = "form_urlencoded"
-
version = "1.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
-
dependencies = [
-
"percent-encoding",
-
]
-
-
[[package]]
-
name = "futf"
-
version = "0.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
-
dependencies = [
-
"mac",
-
"new_debug_unreachable",
-
]
-
-
[[package]]
-
name = "futures"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
-
dependencies = [
-
"futures-channel",
-
"futures-core",
-
"futures-executor",
-
"futures-io",
-
"futures-sink",
-
"futures-task",
-
"futures-util",
-
]
-
-
[[package]]
-
name = "futures-buffered"
-
version = "0.2.12"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a8e0e1f38ec07ba4abbde21eed377082f17ccb988be9d988a5adbf4bafc118fd"
-
dependencies = [
-
"cordyceps",
-
"diatomic-waker",
-
"futures-core",
-
"pin-project-lite",
-
"spin 0.10.0",
-
]
-
-
[[package]]
-
name = "futures-channel"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
-
dependencies = [
-
"futures-core",
-
"futures-sink",
-
]
-
-
[[package]]
-
name = "futures-core"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
-
-
[[package]]
-
name = "futures-executor"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
-
dependencies = [
-
"futures-core",
-
"futures-task",
-
"futures-util",
-
]
-
-
[[package]]
-
name = "futures-io"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
-
-
[[package]]
-
name = "futures-lite"
-
version = "2.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
-
dependencies = [
-
"fastrand",
-
"futures-core",
-
"futures-io",
-
"parking",
-
"pin-project-lite",
-
]
-
-
[[package]]
-
name = "futures-macro"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "futures-sink"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
-
-
[[package]]
-
name = "futures-task"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
-
-
[[package]]
-
name = "futures-util"
-
version = "0.3.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
-
dependencies = [
-
"futures-channel",
-
"futures-core",
-
"futures-io",
-
"futures-macro",
-
"futures-sink",
-
"futures-task",
-
"memchr",
-
"pin-project-lite",
-
"pin-utils",
-
"slab",
-
]
-
-
[[package]]
-
name = "fuzzy-matcher"
-
version = "0.3.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"
-
dependencies = [
-
"thread_local",
-
]
-
-
[[package]]
-
name = "generator"
-
version = "0.8.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2"
-
dependencies = [
-
"cc",
-
"cfg-if",
-
"libc",
-
"log",
-
"rustversion",
-
"windows 0.61.3",
-
]
-
-
[[package]]
-
name = "generic-array"
-
version = "0.14.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
-
dependencies = [
-
"typenum",
-
"version_check",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "getrandom"
-
version = "0.2.16"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
-
dependencies = [
-
"cfg-if",
-
"js-sys",
-
"libc",
-
"wasi",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "getrandom"
-
version = "0.3.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
-
dependencies = [
-
"cfg-if",
-
"js-sys",
-
"libc",
-
"r-efi",
-
"wasip2",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "gimli"
-
version = "0.32.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
-
-
[[package]]
-
name = "glob"
-
version = "0.3.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
-
-
[[package]]
-
name = "gloo-storage"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a"
-
dependencies = [
-
"gloo-utils",
-
"js-sys",
-
"serde",
-
"serde_json",
-
"thiserror 1.0.69",
-
"wasm-bindgen",
-
"web-sys",
-
]
-
-
[[package]]
-
name = "gloo-utils"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
-
dependencies = [
-
"js-sys",
-
"serde",
-
"serde_json",
-
"wasm-bindgen",
-
"web-sys",
-
]
-
-
[[package]]
-
name = "group"
-
version = "0.13.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
-
dependencies = [
-
"ff",
-
"rand_core 0.6.4",
-
"subtle",
-
]
-
-
[[package]]
-
name = "h2"
-
version = "0.4.12"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
-
dependencies = [
-
"atomic-waker",
-
"bytes",
-
"fnv",
-
"futures-core",
-
"futures-sink",
-
"http",
-
"indexmap 2.12.1",
-
"slab",
-
"tokio",
-
"tokio-util",
-
"tracing",
-
]
-
-
[[package]]
-
name = "half"
-
version = "2.7.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
-
dependencies = [
-
"cfg-if",
-
"crunchy",
-
"zerocopy 0.8.31",
-
]
-
-
[[package]]
-
name = "hash32"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
-
dependencies = [
-
"byteorder",
-
]
-
-
[[package]]
-
name = "hashbrown"
-
version = "0.12.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-
-
[[package]]
-
name = "hashbrown"
-
version = "0.14.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-
-
[[package]]
-
name = "hashbrown"
-
version = "0.15.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
-
dependencies = [
-
"allocator-api2",
-
"equivalent",
-
"foldhash",
-
]
-
-
[[package]]
-
name = "hashbrown"
-
version = "0.16.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
-
-
[[package]]
-
name = "heapless"
-
version = "0.7.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f"
-
dependencies = [
-
"atomic-polyfill",
-
"hash32",
-
"rustc_version",
-
"serde",
-
"spin 0.9.8",
-
"stable_deref_trait",
-
]
-
-
[[package]]
-
name = "heck"
-
version = "0.4.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
-
[[package]]
-
name = "heck"
-
version = "0.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-
-
[[package]]
-
name = "hex"
-
version = "0.4.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
-
[[package]]
-
name = "hex_fmt"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f"
-
-
[[package]]
-
name = "hmac"
-
version = "0.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-
dependencies = [
-
"digest",
-
]
-
-
[[package]]
-
name = "html5ever"
-
version = "0.27.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4"
-
dependencies = [
-
"log",
-
"mac",
-
"markup5ever",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "http"
-
version = "1.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
-
dependencies = [
-
"bytes",
-
"itoa",
-
]
-
-
[[package]]
-
name = "http-body"
-
version = "1.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
-
dependencies = [
-
"bytes",
-
"http",
-
]
-
-
[[package]]
-
name = "http-body-util"
-
version = "0.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
-
dependencies = [
-
"bytes",
-
"futures-core",
-
"http",
-
"http-body",
-
"pin-project-lite",
-
]
-
-
[[package]]
-
name = "httparse"
-
version = "1.10.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
-
-
[[package]]
-
name = "human-date-parser"
-
version = "0.3.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "406f83c56de4b2c9183be52ae9a4fefa22c0e0c3d3d7ef80be26eaee11c7110e"
-
dependencies = [
-
"chrono",
-
"pest",
-
"pest_consume",
-
"pest_derive",
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "hyper"
-
version = "1.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
-
dependencies = [
-
"atomic-waker",
-
"bytes",
-
"futures-channel",
-
"futures-core",
-
"h2",
-
"http",
-
"http-body",
-
"httparse",
-
"itoa",
-
"pin-project-lite",
-
"pin-utils",
-
"smallvec",
-
"tokio",
-
"want",
-
]
-
-
[[package]]
-
name = "hyper-rustls"
-
version = "0.27.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
-
dependencies = [
-
"http",
-
"hyper",
-
"hyper-util",
-
"rustls",
-
"rustls-pki-types",
-
"tokio",
-
"tokio-rustls",
-
"tower-service",
-
"webpki-roots",
-
]
-
-
[[package]]
-
name = "hyper-util"
-
version = "0.1.19"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f"
-
dependencies = [
-
"base64",
-
"bytes",
-
"futures-channel",
-
"futures-core",
-
"futures-util",
-
"http",
-
"http-body",
-
"hyper",
-
"ipnet",
-
"libc",
-
"percent-encoding",
-
"pin-project-lite",
-
"socket2",
-
"system-configuration",
-
"tokio",
-
"tower-service",
-
"tracing",
-
"windows-registry",
-
]
-
-
[[package]]
-
name = "iana-time-zone"
-
version = "0.1.64"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
-
dependencies = [
-
"android_system_properties",
-
"core-foundation-sys",
-
"iana-time-zone-haiku",
-
"js-sys",
-
"log",
-
"wasm-bindgen",
-
"windows-core 0.62.2",
-
]
-
-
[[package]]
-
name = "iana-time-zone-haiku"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-
dependencies = [
-
"cc",
-
]
-
-
[[package]]
-
name = "icu_collections"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
-
dependencies = [
-
"displaydoc",
-
"potential_utf",
-
"yoke",
-
"zerofrom",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "icu_locale_core"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
-
dependencies = [
-
"displaydoc",
-
"litemap",
-
"tinystr",
-
"writeable",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "icu_normalizer"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
-
dependencies = [
-
"icu_collections",
-
"icu_normalizer_data",
-
"icu_properties",
-
"icu_provider",
-
"smallvec",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "icu_normalizer_data"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
-
-
[[package]]
-
name = "icu_properties"
-
version = "2.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
-
dependencies = [
-
"icu_collections",
-
"icu_locale_core",
-
"icu_properties_data",
-
"icu_provider",
-
"zerotrie",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "icu_properties_data"
-
version = "2.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
-
-
[[package]]
-
name = "icu_provider"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
-
dependencies = [
-
"displaydoc",
-
"icu_locale_core",
-
"writeable",
-
"yoke",
-
"zerofrom",
-
"zerotrie",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "ident_case"
-
version = "1.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-
-
[[package]]
-
name = "idna"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
-
dependencies = [
-
"idna_adapter",
-
"smallvec",
-
"utf8_iter",
-
]
-
-
[[package]]
-
name = "idna_adapter"
-
version = "1.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
-
dependencies = [
-
"icu_normalizer",
-
"icu_properties",
-
]
-
-
[[package]]
-
name = "indexmap"
-
version = "1.9.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-
dependencies = [
-
"autocfg",
-
"hashbrown 0.12.3",
-
"serde",
-
]
-
-
[[package]]
-
name = "indexmap"
-
version = "2.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
-
dependencies = [
-
"equivalent",
-
"hashbrown 0.16.1",
-
"serde",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "indicatif"
-
version = "0.18.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88"
-
dependencies = [
-
"console 0.16.1",
-
"portable-atomic",
-
"unicode-width 0.2.2",
-
"unit-prefix",
-
"web-time",
-
]
-
-
[[package]]
-
name = "indoc"
-
version = "2.0.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
-
dependencies = [
-
"rustversion",
-
]
-
-
[[package]]
-
name = "intl-memoizer"
-
version = "0.5.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f"
-
dependencies = [
-
"type-map",
-
"unic-langid",
-
]
-
-
[[package]]
-
name = "intl_pluralrules"
-
version = "7.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
-
dependencies = [
-
"unic-langid",
-
]
-
-
[[package]]
-
name = "inventory"
-
version = "0.3.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e"
-
dependencies = [
-
"rustversion",
-
]
-
-
[[package]]
-
name = "ipld-core"
-
version = "0.4.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "104718b1cc124d92a6d01ca9c9258a7df311405debb3408c445a36452f9bf8db"
-
dependencies = [
-
"cid",
-
"serde",
-
"serde_bytes",
-
]
-
-
[[package]]
-
name = "ipnet"
-
version = "2.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
-
-
[[package]]
-
name = "iri-string"
-
version = "0.7.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
-
dependencies = [
-
"memchr",
-
"serde",
-
]
-
-
[[package]]
-
name = "iroh-car"
-
version = "0.5.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cb7f8cd4cb9aa083fba8b52e921764252d0b4dcb1cd6d120b809dbfe1106e81a"
-
dependencies = [
-
"anyhow",
-
"cid",
-
"futures",
-
"serde",
-
"serde_ipld_dagcbor",
-
"thiserror 1.0.69",
-
"tokio",
-
"unsigned-varint 0.7.2",
-
]
-
-
[[package]]
-
name = "is_ci"
-
version = "1.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"
-
-
[[package]]
-
name = "is_debug"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1fe266d2e243c931d8190177f20bf7f24eed45e96f39e87dc49a27b32d12d407"
-
-
[[package]]
-
name = "is_terminal_polyfill"
-
version = "1.70.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
-
-
[[package]]
-
name = "itertools"
-
version = "0.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
-
dependencies = [
-
"either",
-
]
-
-
[[package]]
-
name = "itertools"
-
version = "0.13.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
-
dependencies = [
-
"either",
-
]
-
-
[[package]]
-
name = "itertools"
-
version = "0.14.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
-
dependencies = [
-
"either",
-
]
-
-
[[package]]
-
name = "itoa"
-
version = "1.0.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
-
-
[[package]]
-
name = "jacquard"
-
version = "0.9.4"
-
dependencies = [
-
"bytes",
-
"getrandom 0.2.16",
-
"gloo-storage",
-
"http",
-
"jacquard-api",
-
"jacquard-common",
-
"jacquard-identity",
-
"jacquard-oauth",
-
"jose-jwk",
-
"miette",
-
"regex",
-
"regex-lite",
-
"reqwest",
-
"ring",
-
"serde",
-
"serde_html_form",
-
"serde_json",
-
"smol_str",
-
"thiserror 2.0.17",
-
"tokio",
-
"trait-variant",
-
"url",
-
"webpage",
-
]
-
-
[[package]]
-
name = "jacquard-api"
-
version = "0.9.2"
-
dependencies = [
-
"bon",
-
"bytes",
-
"jacquard-common",
-
"jacquard-derive",
-
"jacquard-lexicon",
-
"miette",
-
"rustversion",
-
"serde",
-
"serde_bytes",
-
"serde_ipld_dagcbor",
-
"thiserror 2.0.17",
-
"unicode-segmentation",
-
]
-
-
[[package]]
-
name = "jacquard-common"
-
version = "0.9.2"
-
dependencies = [
-
"base64",
-
"bon",
-
"bytes",
-
"chrono",
-
"cid",
-
"ed25519-dalek",
-
"getrandom 0.2.16",
-
"getrandom 0.3.4",
-
"http",
-
"ipld-core",
-
"k256",
-
"langtag",
-
"miette",
-
"multibase",
-
"multihash",
-
"ouroboros",
-
"p256",
-
"postcard",
-
"rand 0.9.2",
-
"regex",
-
"regex-lite",
-
"reqwest",
-
"ring",
-
"serde",
-
"serde_bytes",
-
"serde_html_form",
-
"serde_ipld_dagcbor",
-
"serde_json",
-
"signature",
-
"smol_str",
-
"thiserror 2.0.17",
-
"tokio",
-
"tokio-util",
-
"trait-variant",
-
"url",
-
]
-
-
[[package]]
-
name = "jacquard-derive"
-
version = "0.9.4"
-
dependencies = [
-
"heck 0.5.0",
-
"jacquard-lexicon",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "jacquard-identity"
-
version = "0.9.2"
-
dependencies = [
-
"bon",
-
"bytes",
-
"http",
-
"jacquard-api",
-
"jacquard-common",
-
"jacquard-lexicon",
-
"miette",
-
"mini-moka",
-
"n0-future",
-
"percent-encoding",
-
"reqwest",
-
"ring",
-
"serde",
-
"serde_html_form",
-
"serde_json",
-
"thiserror 2.0.17",
-
"tokio",
-
"trait-variant",
-
"url",
-
"urlencoding",
-
]
-
-
[[package]]
-
name = "jacquard-lexicon"
-
version = "0.9.2"
-
dependencies = [
-
"cid",
-
"dashmap",
-
"heck 0.5.0",
-
"inventory",
-
"jacquard-common",
-
"miette",
-
"multihash",
-
"prettyplease",
-
"proc-macro2",
-
"quote",
-
"serde",
-
"serde_ipld_dagcbor",
-
"serde_json",
-
"serde_repr",
-
"serde_with",
-
"sha2",
-
"syn 2.0.111",
-
"thiserror 2.0.17",
-
"unicode-segmentation",
-
]
-
-
[[package]]
-
name = "jacquard-oauth"
-
version = "0.9.2"
-
dependencies = [
-
"base64",
-
"bytes",
-
"chrono",
-
"dashmap",
-
"elliptic-curve",
-
"http",
-
"jacquard-common",
-
"jacquard-identity",
-
"jose-jwa",
-
"jose-jwk",
-
"miette",
-
"p256",
-
"rand 0.8.5",
-
"ring",
-
"serde",
-
"serde_html_form",
-
"serde_json",
-
"sha2",
-
"smol_str",
-
"thiserror 2.0.17",
-
"tokio",
-
"trait-variant",
-
"url",
-
]
-
-
[[package]]
-
name = "jacquard-repo"
-
version = "0.9.4"
-
dependencies = [
-
"bytes",
-
"cid",
-
"ed25519-dalek",
-
"iroh-car",
-
"jacquard-common",
-
"jacquard-derive",
-
"k256",
-
"miette",
-
"multihash",
-
"n0-future",
-
"p256",
-
"serde",
-
"serde_bytes",
-
"serde_ipld_dagcbor",
-
"sha2",
-
"smol_str",
-
"thiserror 2.0.17",
-
"tokio",
-
"trait-variant",
-
]
-
-
[[package]]
-
name = "jose-b64"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bec69375368709666b21c76965ce67549f2d2db7605f1f8707d17c9656801b56"
-
dependencies = [
-
"base64ct",
-
"serde",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "jose-jwa"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9ab78e053fe886a351d67cf0d194c000f9d0dcb92906eb34d853d7e758a4b3a7"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "jose-jwk"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "280fa263807fe0782ecb6f2baadc28dffc04e00558a58e33bfdb801d11fd58e7"
-
dependencies = [
-
"jose-b64",
-
"jose-jwa",
-
"p256",
-
"p384",
-
"rsa",
-
"serde",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "js-sys"
-
version = "0.3.83"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
-
dependencies = [
-
"once_cell",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "k256"
-
version = "0.13.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
-
dependencies = [
-
"cfg-if",
-
"ecdsa",
-
"elliptic-curve",
-
"once_cell",
-
"sha2",
-
"signature",
-
]
-
-
[[package]]
-
name = "langtag"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9ecb4c689a30e48ebeaa14237f34037e300dd072e6ad21a9ec72e810ff3c6600"
-
dependencies = [
-
"serde",
-
"static-regular-grammar",
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "lazy_static"
-
version = "1.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
-
dependencies = [
-
"spin 0.9.8",
-
]
-
-
[[package]]
-
name = "lean_string"
-
version = "0.5.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "962df00ba70ac8d5ca5c064e17e5c3d090c087fd8d21aa45096c716b169da514"
-
dependencies = [
-
"castaway",
-
"itoa",
-
"ryu",
-
"serde",
-
]
-
-
[[package]]
-
name = "libc"
-
version = "0.2.178"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
-
-
[[package]]
-
name = "libloading"
-
version = "0.8.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
-
dependencies = [
-
"cfg-if",
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "libm"
-
version = "0.2.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
-
-
[[package]]
-
name = "libproc"
-
version = "0.14.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757"
-
dependencies = [
-
"bindgen",
-
"errno",
-
"libc",
-
]
-
-
[[package]]
-
name = "libredox"
-
version = "0.1.10"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
-
dependencies = [
-
"bitflags",
-
"libc",
-
"redox_syscall",
-
]
-
-
[[package]]
-
name = "libz-rs-sys"
-
version = "0.5.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c"
-
dependencies = [
-
"zlib-rs",
-
]
-
-
[[package]]
-
name = "linked-hash-map"
-
version = "0.5.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "linux-raw-sys"
-
version = "0.4.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
-
-
[[package]]
-
name = "linux-raw-sys"
-
version = "0.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
-
-
[[package]]
-
name = "litemap"
-
version = "0.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
-
-
[[package]]
-
name = "lock_api"
-
version = "0.4.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
-
dependencies = [
-
"scopeguard",
-
]
-
-
[[package]]
-
name = "log"
-
version = "0.4.29"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
-
-
[[package]]
-
name = "loom"
-
version = "0.7.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
-
dependencies = [
-
"cfg-if",
-
"generator",
-
"scoped-tls",
-
"tracing",
-
"tracing-subscriber",
-
]
-
-
[[package]]
-
name = "lru"
-
version = "0.12.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
-
dependencies = [
-
"hashbrown 0.15.5",
-
]
-
-
[[package]]
-
name = "lru-slab"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
-
-
[[package]]
-
name = "lscolors"
-
version = "0.20.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "61183da5de8ba09a58e330d55e5ea796539d8443bd00fdeb863eac39724aa4ab"
-
dependencies = [
-
"aho-corasick",
-
"nu-ansi-term",
-
]
-
-
[[package]]
-
name = "mac"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
-
-
[[package]]
-
name = "mach2"
-
version = "0.4.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
-
dependencies = [
-
"libc",
-
]
-
-
[[package]]
-
name = "markup5ever"
-
version = "0.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45"
-
dependencies = [
-
"log",
-
"phf 0.11.3",
-
"phf_codegen",
-
"string_cache",
-
"string_cache_codegen",
-
"tendril",
-
]
-
-
[[package]]
-
name = "markup5ever_rcdom"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18"
-
dependencies = [
-
"html5ever",
-
"markup5ever",
-
"tendril",
-
"xml5ever",
-
]
-
-
[[package]]
-
name = "match-lookup"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 1.0.109",
-
]
-
-
[[package]]
-
name = "matchers"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
-
dependencies = [
-
"regex-automata",
-
]
-
-
[[package]]
-
name = "md-5"
-
version = "0.10.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
-
dependencies = [
-
"cfg-if",
-
"digest",
-
]
-
-
[[package]]
-
name = "memchr"
-
version = "2.7.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
-
-
[[package]]
-
name = "memoffset"
-
version = "0.9.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
-
dependencies = [
-
"autocfg",
-
]
-
-
[[package]]
-
name = "miette"
-
version = "7.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7"
-
dependencies = [
-
"backtrace",
-
"backtrace-ext",
-
"cfg-if",
-
"miette-derive",
-
"owo-colors",
-
"supports-color",
-
"supports-hyperlinks",
-
"supports-unicode",
-
"terminal_size",
-
"textwrap",
-
"unicode-width 0.1.14",
-
]
-
-
[[package]]
-
name = "miette-derive"
-
version = "7.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "mime"
-
version = "0.3.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-
[[package]]
-
name = "mime_guess"
-
version = "2.0.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
-
dependencies = [
-
"mime",
-
"unicase",
-
]
-
-
[[package]]
-
name = "mini-moka"
-
version = "0.10.99"
-
dependencies = [
-
"crossbeam-channel",
-
"crossbeam-utils",
-
"dashmap",
-
"smallvec",
-
"tagptr",
-
"triomphe",
-
"web-time",
-
]
-
-
[[package]]
-
name = "minimal-lexical"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
-
[[package]]
-
name = "miniz_oxide"
-
version = "0.8.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
-
dependencies = [
-
"adler2",
-
"simd-adler32",
-
]
-
-
[[package]]
-
name = "mio"
-
version = "1.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
-
dependencies = [
-
"libc",
-
"wasi",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "multibase"
-
version = "0.9.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77"
-
dependencies = [
-
"base-x",
-
"base256emoji",
-
"data-encoding",
-
"data-encoding-macro",
-
]
-
-
[[package]]
-
name = "multihash"
-
version = "0.19.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d"
-
dependencies = [
-
"core2",
-
"serde",
-
"unsigned-varint 0.8.0",
-
]
-
-
[[package]]
-
name = "n0-future"
-
version = "0.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794"
-
dependencies = [
-
"cfg_aliases",
-
"derive_more",
-
"futures-buffered",
-
"futures-lite",
-
"futures-util",
-
"js-sys",
-
"pin-project",
-
"send_wrapper",
-
"tokio",
-
"tokio-util",
-
"wasm-bindgen",
-
"wasm-bindgen-futures",
-
"web-time",
-
]
-
-
[[package]]
-
name = "new_debug_unreachable"
-
version = "1.0.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
-
-
[[package]]
-
name = "nix"
-
version = "0.30.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
-
dependencies = [
-
"bitflags",
-
"cfg-if",
-
"cfg_aliases",
-
"libc",
-
]
-
-
[[package]]
-
name = "nom"
-
version = "7.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-
dependencies = [
-
"memchr",
-
"minimal-lexical",
-
]
-
-
[[package]]
-
name = "ntapi"
-
version = "0.4.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
-
dependencies = [
-
"winapi",
-
]
-
-
[[package]]
-
name = "nu-ansi-term"
-
version = "0.50.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
-
dependencies = [
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "nu-cmd-base"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2460ee389a43b935aa18ef5ed9fa8275bdf617e8c05eba7c2b82f92effd2132b"
-
dependencies = [
-
"indexmap 2.12.1",
-
"miette",
-
"nu-engine",
-
"nu-parser",
-
"nu-path",
-
"nu-protocol",
-
]
-
-
[[package]]
-
name = "nu-cmd-extra"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "96f1ac416cd5182ca427a1007c9d0193feaa746aeb54b5320251faad41481cfe"
-
dependencies = [
-
"fancy-regex",
-
"heck 0.5.0",
-
"itertools 0.14.0",
-
"mime",
-
"nu-ansi-term",
-
"nu-cmd-base",
-
"nu-engine",
-
"nu-json",
-
"nu-parser",
-
"nu-pretty-hex",
-
"nu-protocol",
-
"nu-utils",
-
"num-traits",
-
"rust-embed",
-
"serde",
-
"serde_urlencoded",
-
"v_htmlescape",
-
]
-
-
[[package]]
-
name = "nu-cmd-lang"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5b266674d87b816264f6aff8cca351e6ebb156f34faab45d7d728c2aba005495"
-
dependencies = [
-
"itertools 0.14.0",
-
"nu-cmd-base",
-
"nu-engine",
-
"nu-experimental",
-
"nu-parser",
-
"nu-protocol",
-
"nu-utils",
-
"shadow-rs",
-
]
-
-
[[package]]
-
name = "nu-color-config"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "440a59265caf5468af6ff186e656bc6e6d349c08662ee959b116375597864206"
-
dependencies = [
-
"nu-ansi-term",
-
"nu-engine",
-
"nu-json",
-
"nu-protocol",
-
"serde",
-
]
-
-
[[package]]
-
name = "nu-command"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5380a9cf6ef0f482280b71d6e78fa8d4bc1b2b43aa8f0b1fa786f96087c2d500"
-
dependencies = [
-
"alphanumeric-sort",
-
"base64",
-
"bracoxide",
-
"brotli",
-
"byteorder",
-
"bytesize",
-
"calamine",
-
"chardetng",
-
"chrono",
-
"chrono-humanize",
-
"chrono-tz",
-
"csv",
-
"data-encoding",
-
"devicons",
-
"dialoguer",
-
"digest",
-
"dtparse",
-
"encoding_rs",
-
"fancy-regex",
-
"filesize",
-
"filetime",
-
"fuzzy-matcher",
-
"http",
-
"human-date-parser",
-
"indexmap 2.12.1",
-
"indicatif",
-
"itertools 0.14.0",
-
"log",
-
"lscolors",
-
"md-5",
-
"mime",
-
"mime_guess",
-
"nix",
-
"nu-ansi-term",
-
"nu-cmd-base",
-
"nu-color-config",
-
"nu-engine",
-
"nu-experimental",
-
"nu-glob",
-
"nu-json",
-
"nu-parser",
-
"nu-path",
-
"nu-pretty-hex",
-
"nu-protocol",
-
"nu-system",
-
"nu-table",
-
"nu-term-grid",
-
"nu-utils",
-
"num-format",
-
"num-traits",
-
"nuon",
-
"oem_cp",
-
"pathdiff",
-
"percent-encoding",
-
"print-positions",
-
"procfs 0.17.0",
-
"quick-xml 0.38.4",
-
"rayon",
-
"rmp",
-
"roxmltree",
-
"scopeguard",
-
"serde",
-
"serde_json",
-
"serde_urlencoded",
-
"serde_yaml",
-
"sha2",
-
"strum",
-
"sysinfo",
-
"tabled",
-
"titlecase",
-
"toml",
-
"uds_windows",
-
"umask",
-
"unicode-segmentation",
-
"unicode-width 0.2.2",
-
"url",
-
"uucore",
-
"v_htmlescape",
-
"wax",
-
"web-time",
-
"windows 0.62.2",
-
"winreg",
-
]
-
-
[[package]]
-
name = "nu-derive-value"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1465d2d3ada6004cb6689f269a08c70ba81056231e2b5392d1e0ccf5825f81cb"
-
dependencies = [
-
"heck 0.5.0",
-
"proc-macro-error2",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "nu-engine"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b3b777faf7c5180fe5d7f67d83c44fd14138d91f2938a36494ed6ac66b7160f3"
-
dependencies = [
-
"fancy-regex",
-
"log",
-
"nu-experimental",
-
"nu-glob",
-
"nu-path",
-
"nu-protocol",
-
"nu-utils",
-
]
-
-
[[package]]
-
name = "nu-experimental"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "73dd212a1afdad646a38c00579a0988264880aeb97fee820b349a28cdcc04df2"
-
dependencies = [
-
"itertools 0.14.0",
-
"thiserror 2.0.17",
-
]
-
-
[[package]]
-
name = "nu-glob"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "15aa2c17078926f14e393b4b708e69f228cb6fd4c81136839bde82772bdde1b5"
-
-
[[package]]
-
name = "nu-json"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7ca63927a3c1c4fb889e80dc5cfbe754daed822a7b503cc74e600627c2aa8435"
-
dependencies = [
-
"linked-hash-map",
-
"nu-utils",
-
"num-traits",
-
"serde",
-
"serde_json",
-
]
-
-
[[package]]
-
name = "nu-parser"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "237172636312c3566272511a00c1dc355202406c376e1546a45a33c65e81babe"
-
dependencies = [
-
"bytesize",
-
"chrono",
-
"itertools 0.14.0",
-
"log",
-
"nu-engine",
-
"nu-path",
-
"nu-protocol",
-
"nu-utils",
-
"serde_json",
-
]
-
-
[[package]]
-
name = "nu-path"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dde9d8ba26f62c07176c0237a36f38ce964ab3a0dcfb6aab1feea7515d1c6594"
-
dependencies = [
-
"dirs",
-
"omnipath",
-
"pwd",
-
"ref-cast",
-
]
-
-
[[package]]
-
name = "nu-pretty-hex"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "02561546604ac4c443bad65d9485ab3965154cad0873340e2e9ebe72d4a18aef"
-
dependencies = [
-
"nu-ansi-term",
-
]
-
-
[[package]]
-
name = "nu-protocol"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "038943300ca9de0924fef1c795a7dd16ffc67105629477cf163e8ee6bad95ea6"
-
dependencies = [
-
"bytes",
-
"chrono",
-
"chrono-humanize",
-
"dirs",
-
"dirs-sys",
-
"fancy-regex",
-
"heck 0.5.0",
-
"indexmap 2.12.1",
-
"log",
-
"lru",
-
"memchr",
-
"miette",
-
"nix",
-
"nu-derive-value",
-
"nu-experimental",
-
"nu-glob",
-
"nu-path",
-
"nu-system",
-
"nu-utils",
-
"num-format",
-
"serde",
-
"serde_json",
-
"strum",
-
"strum_macros",
-
"thiserror 2.0.17",
-
"typetag",
-
"web-time",
-
"windows 0.62.2",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "nu-system"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "46be734cc9b19e09a9665769e14360e13e6978490056ba5c8bfad7dd0537ea83"
-
dependencies = [
-
"chrono",
-
"itertools 0.14.0",
-
"libc",
-
"libproc",
-
"log",
-
"mach2",
-
"nix",
-
"ntapi",
-
"procfs 0.17.0",
-
"sysinfo",
-
"web-time",
-
"windows 0.62.2",
-
]
-
-
[[package]]
-
name = "nu-table"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "aa96502adbb69c838d8469715327ba2dacf2c4f5254a4cdee7536e2c6849de1d"
-
dependencies = [
-
"fancy-regex",
-
"nu-ansi-term",
-
"nu-color-config",
-
"nu-engine",
-
"nu-protocol",
-
"nu-utils",
-
"tabled",
-
]
-
-
[[package]]
-
name = "nu-term-grid"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2b6545b361413e88bea37c4b9c7aa97a7fd7a11d84a5d330a72242367fd1d2df"
-
dependencies = [
-
"nu-utils",
-
"unicode-width 0.2.2",
-
]
-
-
[[package]]
-
name = "nu-utils"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3f8eb43c29cc5bce85f87defdadc2cca964fa434d808af37036a7cb78f3c68e9"
-
dependencies = [
-
"byteyarn",
-
"crossterm_winapi",
-
"fancy-regex",
-
"lean_string",
-
"log",
-
"lscolors",
-
"memchr",
-
"nix",
-
"num-format",
-
"serde",
-
"serde_json",
-
"strip-ansi-escapes",
-
"sys-locale",
-
"unicase",
-
]
-
-
[[package]]
-
name = "num-bigint-dig"
-
version = "0.8.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
-
dependencies = [
-
"lazy_static",
-
"libm",
-
"num-integer",
-
"num-iter",
-
"num-traits",
-
"rand 0.8.5",
-
"smallvec",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "num-conv"
-
version = "0.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
-
-
[[package]]
-
name = "num-format"
-
version = "0.4.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3"
-
dependencies = [
-
"arrayvec",
-
"itoa",
-
]
-
-
[[package]]
-
name = "num-integer"
-
version = "0.1.46"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
-
dependencies = [
-
"num-traits",
-
]
-
-
[[package]]
-
name = "num-iter"
-
version = "0.1.45"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
-
dependencies = [
-
"autocfg",
-
"num-integer",
-
"num-traits",
-
]
-
-
[[package]]
-
name = "num-traits"
-
version = "0.2.19"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-
dependencies = [
-
"autocfg",
-
"libm",
-
]
-
-
[[package]]
-
name = "num_threads"
-
version = "0.1.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
-
dependencies = [
-
"libc",
-
]
-
-
[[package]]
-
name = "number_prefix"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
-
-
[[package]]
-
name = "nuon"
-
version = "0.109.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f8c4f2e4460a6cf00e50cddf0840f954874d645be3af5196c5858c70c069d8c0"
-
dependencies = [
-
"nu-engine",
-
"nu-parser",
-
"nu-protocol",
-
"nu-utils",
-
]
-
-
[[package]]
-
name = "objc2-core-foundation"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
-
dependencies = [
-
"bitflags",
-
]
-
-
[[package]]
-
name = "objc2-io-kit"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
-
dependencies = [
-
"libc",
-
"objc2-core-foundation",
-
]
-
-
[[package]]
-
name = "object"
-
version = "0.37.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "oem_cp"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a4b91a3be3b523e58bd7a9d839b0bf65720331db50ddfba5ace0680f8c6f58a1"
-
dependencies = [
-
"phf 0.11.3",
-
]
-
-
[[package]]
-
name = "omnipath"
-
version = "0.1.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "80adb31078122c880307e9cdfd4e3361e6545c319f9b9dcafcb03acd3b51a575"
-
-
[[package]]
-
name = "once_cell"
-
version = "1.21.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
-
-
[[package]]
-
name = "once_cell_polyfill"
-
version = "1.70.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
-
-
[[package]]
-
name = "option-ext"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-
-
[[package]]
-
name = "os_display"
-
version = "0.1.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f"
-
dependencies = [
-
"unicode-width 0.2.2",
-
]
-
-
[[package]]
-
name = "ouroboros"
-
version = "0.18.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59"
-
dependencies = [
-
"aliasable",
-
"ouroboros_macro",
-
"static_assertions",
-
]
-
-
[[package]]
-
name = "ouroboros_macro"
-
version = "0.18.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0"
-
dependencies = [
-
"heck 0.4.1",
-
"proc-macro2",
-
"proc-macro2-diagnostics",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "owo-colors"
-
version = "4.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52"
-
-
[[package]]
-
name = "p256"
-
version = "0.13.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b"
-
dependencies = [
-
"ecdsa",
-
"elliptic-curve",
-
"primeorder",
-
"sha2",
-
]
-
-
[[package]]
-
name = "p384"
-
version = "0.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6"
-
dependencies = [
-
"elliptic-curve",
-
"primeorder",
-
]
-
-
[[package]]
-
name = "papergrid"
-
version = "0.17.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1"
-
dependencies = [
-
"ansi-str",
-
"ansitok",
-
"bytecount",
-
"fnv",
-
"unicode-width 0.2.2",
-
]
-
-
[[package]]
-
name = "parking"
-
version = "2.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
-
-
[[package]]
-
name = "parking_lot"
-
version = "0.12.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
-
dependencies = [
-
"lock_api",
-
"parking_lot_core",
-
]
-
-
[[package]]
-
name = "parking_lot_core"
-
version = "0.9.12"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
-
dependencies = [
-
"cfg-if",
-
"libc",
-
"redox_syscall",
-
"smallvec",
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "paste"
-
version = "1.0.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
-
-
[[package]]
-
name = "pathdiff"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
-
-
[[package]]
-
name = "pem-rfc7468"
-
version = "0.7.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
-
dependencies = [
-
"base64ct",
-
]
-
-
[[package]]
-
name = "percent-encoding"
-
version = "2.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
-
-
[[package]]
-
name = "pest"
-
version = "2.8.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22"
-
dependencies = [
-
"memchr",
-
"ucd-trie",
-
]
-
-
[[package]]
-
name = "pest_consume"
-
version = "1.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "79447402d15d18e7142e14c72f2e63fa3d155be1bc5b70b3ccbb610ac55f536b"
-
dependencies = [
-
"pest",
-
"pest_consume_macros",
-
"pest_derive",
-
]
-
-
[[package]]
-
name = "pest_consume_macros"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9d8630a7a899cb344ec1c16ba0a6b24240029af34bdc0a21f84e411d7f793f29"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 1.0.109",
-
]
-
-
[[package]]
-
name = "pest_derive"
-
version = "2.8.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f"
-
dependencies = [
-
"pest",
-
"pest_generator",
-
]
-
-
[[package]]
-
name = "pest_generator"
-
version = "2.8.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625"
-
dependencies = [
-
"pest",
-
"pest_meta",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "pest_meta"
-
version = "2.8.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82"
-
dependencies = [
-
"pest",
-
"sha2",
-
]
-
-
[[package]]
-
name = "phf"
-
version = "0.11.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
-
dependencies = [
-
"phf_shared 0.11.3",
-
]
-
-
[[package]]
-
name = "phf"
-
version = "0.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7"
-
dependencies = [
-
"phf_shared 0.12.1",
-
]
-
-
[[package]]
-
name = "phf"
-
version = "0.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
-
dependencies = [
-
"phf_shared 0.13.1",
-
"serde",
-
]
-
-
[[package]]
-
name = "phf_codegen"
-
version = "0.11.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
-
dependencies = [
-
"phf_generator",
-
"phf_shared 0.11.3",
-
]
-
-
[[package]]
-
name = "phf_generator"
-
version = "0.11.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
-
dependencies = [
-
"phf_shared 0.11.3",
-
"rand 0.8.5",
-
]
-
-
[[package]]
-
name = "phf_shared"
-
version = "0.11.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
-
dependencies = [
-
"siphasher",
-
]
-
-
[[package]]
-
name = "phf_shared"
-
version = "0.12.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981"
-
dependencies = [
-
"siphasher",
-
]
-
-
[[package]]
-
name = "phf_shared"
-
version = "0.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
-
dependencies = [
-
"siphasher",
-
]
-
-
[[package]]
-
name = "pin-project"
-
version = "1.1.10"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
-
dependencies = [
-
"pin-project-internal",
-
]
-
-
[[package]]
-
name = "pin-project-internal"
-
version = "1.1.10"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "pin-project-lite"
-
version = "0.2.16"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
-
-
[[package]]
-
name = "pin-utils"
-
version = "0.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-
[[package]]
-
name = "pkcs1"
-
version = "0.7.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
-
dependencies = [
-
"der",
-
"pkcs8",
-
"spki",
-
]
-
-
[[package]]
-
name = "pkcs8"
-
version = "0.10.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
-
dependencies = [
-
"der",
-
"spki",
-
]
-
-
[[package]]
-
name = "pori"
-
version = "0.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a4a63d338dec139f56dacc692ca63ad35a6be6a797442479b55acd611d79e906"
-
dependencies = [
-
"nom",
-
]
-
-
[[package]]
-
name = "portable-atomic"
-
version = "1.11.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
-
-
[[package]]
-
name = "postcard"
-
version = "1.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24"
-
dependencies = [
-
"cobs",
-
"embedded-io 0.4.0",
-
"embedded-io 0.6.1",
-
"heapless",
-
"serde",
-
]
-
-
[[package]]
-
name = "potential_utf"
-
version = "0.1.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
-
dependencies = [
-
"zerovec",
-
]
-
-
[[package]]
-
name = "powerfmt"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
-
-
[[package]]
-
name = "ppv-lite86"
-
version = "0.2.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
-
dependencies = [
-
"zerocopy 0.8.31",
-
]
-
-
[[package]]
-
name = "precomputed-hash"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
-
-
[[package]]
-
name = "prettyplease"
-
version = "0.2.37"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
-
dependencies = [
-
"proc-macro2",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "primeorder"
-
version = "0.13.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6"
-
dependencies = [
-
"elliptic-curve",
-
]
-
-
[[package]]
-
name = "print-positions"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1df593470e3ef502e48cb0cfc9a3a61e5f61e967b78e1ed35a67ac615cfbd208"
-
dependencies = [
-
"unicode-segmentation",
-
]
-
-
[[package]]
-
name = "proc-macro-error"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-
dependencies = [
-
"proc-macro-error-attr",
-
"proc-macro2",
-
"quote",
-
"syn 1.0.109",
-
"version_check",
-
]
-
-
[[package]]
-
name = "proc-macro-error-attr"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"version_check",
-
]
-
-
[[package]]
-
name = "proc-macro-error-attr2"
-
version = "2.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
]
-
-
[[package]]
-
name = "proc-macro-error2"
-
version = "2.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
-
dependencies = [
-
"proc-macro-error-attr2",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "proc-macro2"
-
version = "1.0.103"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
-
dependencies = [
-
"unicode-ident",
-
]
-
-
[[package]]
-
name = "proc-macro2-diagnostics"
-
version = "0.10.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
"version_check",
-
"yansi",
-
]
-
-
[[package]]
-
name = "procfs"
-
version = "0.17.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f"
-
dependencies = [
-
"bitflags",
-
"chrono",
-
"flate2",
-
"hex",
-
"procfs-core 0.17.0",
-
"rustix 0.38.44",
-
]
-
-
[[package]]
-
name = "procfs"
-
version = "0.18.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7"
-
dependencies = [
-
"bitflags",
-
"chrono",
-
"flate2",
-
"procfs-core 0.18.0",
-
"rustix 1.1.2",
-
]
-
-
[[package]]
-
name = "procfs-core"
-
version = "0.17.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec"
-
dependencies = [
-
"bitflags",
-
"chrono",
-
"hex",
-
]
-
-
[[package]]
-
name = "procfs-core"
-
version = "0.18.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
-
dependencies = [
-
"bitflags",
-
"chrono",
-
"hex",
-
]
-
-
[[package]]
-
name = "pure-rust-locales"
-
version = "0.8.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d"
-
-
[[package]]
-
name = "pwd"
-
version = "1.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "72c71c0c79b9701efe4e1e4b563b2016dd4ee789eb99badcb09d61ac4b92e4a2"
-
dependencies = [
-
"libc",
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "quick-xml"
-
version = "0.37.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
-
dependencies = [
-
"encoding_rs",
-
"memchr",
-
]
-
-
[[package]]
-
name = "quick-xml"
-
version = "0.38.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "quinn"
-
version = "0.11.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
-
dependencies = [
-
"bytes",
-
"cfg_aliases",
-
"pin-project-lite",
-
"quinn-proto",
-
"quinn-udp",
-
"rustc-hash",
-
"rustls",
-
"socket2",
-
"thiserror 2.0.17",
-
"tokio",
-
"tracing",
-
"web-time",
-
]
-
-
[[package]]
-
name = "quinn-proto"
-
version = "0.11.13"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
-
dependencies = [
-
"bytes",
-
"getrandom 0.3.4",
-
"lru-slab",
-
"rand 0.9.2",
-
"ring",
-
"rustc-hash",
-
"rustls",
-
"rustls-pki-types",
-
"slab",
-
"thiserror 2.0.17",
-
"tinyvec",
-
"tracing",
-
"web-time",
-
]
-
-
[[package]]
-
name = "quinn-udp"
-
version = "0.5.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
-
dependencies = [
-
"cfg_aliases",
-
"libc",
-
"once_cell",
-
"socket2",
-
"tracing",
-
"windows-sys 0.60.2",
-
]
-
-
[[package]]
-
name = "quote"
-
version = "1.0.42"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
-
dependencies = [
-
"proc-macro2",
-
]
-
-
[[package]]
-
name = "r-efi"
-
version = "5.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
-
-
[[package]]
-
name = "rand"
-
version = "0.8.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-
dependencies = [
-
"libc",
-
"rand_chacha 0.3.1",
-
"rand_core 0.6.4",
-
]
-
-
[[package]]
-
name = "rand"
-
version = "0.9.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
-
dependencies = [
-
"rand_chacha 0.9.0",
-
"rand_core 0.9.3",
-
]
-
-
[[package]]
-
name = "rand_chacha"
-
version = "0.3.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-
dependencies = [
-
"ppv-lite86",
-
"rand_core 0.6.4",
-
]
-
-
[[package]]
-
name = "rand_chacha"
-
version = "0.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
-
dependencies = [
-
"ppv-lite86",
-
"rand_core 0.9.3",
-
]
-
-
[[package]]
-
name = "rand_core"
-
version = "0.6.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-
dependencies = [
-
"getrandom 0.2.16",
-
]
-
-
[[package]]
-
name = "rand_core"
-
version = "0.9.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
-
dependencies = [
-
"getrandom 0.3.4",
-
]
-
-
[[package]]
-
name = "range-traits"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d20581732dd76fa913c7dff1a2412b714afe3573e94d41c34719de73337cc8ab"
-
-
[[package]]
-
name = "rapidhash"
-
version = "4.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d8e65c75143ce5d47c55b510297eeb1182f3c739b6043c537670e9fc18612dae"
-
dependencies = [
-
"rustversion",
-
]
-
-
[[package]]
-
name = "rayon"
-
version = "1.11.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
-
dependencies = [
-
"either",
-
"rayon-core",
-
]
-
-
[[package]]
-
name = "rayon-core"
-
version = "1.13.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
-
dependencies = [
-
"crossbeam-deque",
-
"crossbeam-utils",
-
]
-
-
[[package]]
-
name = "redox_syscall"
-
version = "0.5.18"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
-
dependencies = [
-
"bitflags",
-
]
-
-
[[package]]
-
name = "redox_users"
-
version = "0.5.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
-
dependencies = [
-
"getrandom 0.2.16",
-
"libredox",
-
"thiserror 2.0.17",
-
]
-
-
[[package]]
-
name = "ref-cast"
-
version = "1.0.25"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
-
dependencies = [
-
"ref-cast-impl",
-
]
-
-
[[package]]
-
name = "ref-cast-impl"
-
version = "1.0.25"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "regex"
-
version = "1.12.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
-
dependencies = [
-
"aho-corasick",
-
"memchr",
-
"regex-automata",
-
"regex-syntax",
-
]
-
-
[[package]]
-
name = "regex-automata"
-
version = "0.4.13"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
-
dependencies = [
-
"aho-corasick",
-
"memchr",
-
"regex-syntax",
-
]
-
-
[[package]]
-
name = "regex-lite"
-
version = "0.1.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da"
-
-
[[package]]
-
name = "regex-syntax"
-
version = "0.8.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
-
-
[[package]]
-
name = "reqwest"
-
version = "0.12.25"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a"
-
dependencies = [
-
"base64",
-
"bytes",
-
"encoding_rs",
-
"futures-core",
-
"h2",
-
"http",
-
"http-body",
-
"http-body-util",
-
"hyper",
-
"hyper-rustls",
-
"hyper-util",
-
"js-sys",
-
"log",
-
"mime",
-
"percent-encoding",
-
"pin-project-lite",
-
"quinn",
-
"rustls",
-
"rustls-pki-types",
-
"serde",
-
"serde_json",
-
"serde_urlencoded",
-
"sync_wrapper",
-
"tokio",
-
"tokio-rustls",
-
"tower",
-
"tower-http",
-
"tower-service",
-
"url",
-
"wasm-bindgen",
-
"wasm-bindgen-futures",
-
"web-sys",
-
"webpki-roots",
-
]
-
-
[[package]]
-
name = "rfc6979"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
-
dependencies = [
-
"hmac",
-
"subtle",
-
]
-
-
[[package]]
-
name = "ring"
-
version = "0.17.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
-
dependencies = [
-
"cc",
-
"cfg-if",
-
"getrandom 0.2.16",
-
"libc",
-
"untrusted",
-
"windows-sys 0.52.0",
-
]
-
-
[[package]]
-
name = "rmp"
-
version = "0.8.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
-
dependencies = [
-
"byteorder",
-
"num-traits",
-
"paste",
-
]
-
-
[[package]]
-
name = "roxmltree"
-
version = "0.20.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
-
-
[[package]]
-
name = "rsa"
-
version = "0.9.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88"
-
dependencies = [
-
"const-oid",
-
"digest",
-
"num-bigint-dig",
-
"num-integer",
-
"num-traits",
-
"pkcs1",
-
"pkcs8",
-
"rand_core 0.6.4",
-
"signature",
-
"spki",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "rust-embed"
-
version = "8.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "947d7f3fad52b283d261c4c99a084937e2fe492248cb9a68a8435a861b8798ca"
-
dependencies = [
-
"rust-embed-impl",
-
"rust-embed-utils",
-
"walkdir",
-
]
-
-
[[package]]
-
name = "rust-embed-impl"
-
version = "8.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"rust-embed-utils",
-
"syn 2.0.111",
-
"walkdir",
-
]
-
-
[[package]]
-
name = "rust-embed-utils"
-
version = "8.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475"
-
dependencies = [
-
"sha2",
-
"walkdir",
-
]
-
-
[[package]]
-
name = "rust_decimal"
-
version = "1.39.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282"
-
dependencies = [
-
"arrayvec",
-
"num-traits",
-
]
-
-
[[package]]
-
name = "rustc-demangle"
-
version = "0.1.26"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
-
-
[[package]]
-
name = "rustc-hash"
-
version = "2.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
-
-
[[package]]
-
name = "rustc_version"
-
version = "0.4.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
-
dependencies = [
-
"semver",
-
]
-
-
[[package]]
-
name = "rustix"
-
version = "0.38.44"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
-
dependencies = [
-
"bitflags",
-
"errno",
-
"libc",
-
"linux-raw-sys 0.4.15",
-
"windows-sys 0.59.0",
-
]
-
-
[[package]]
-
name = "rustix"
-
version = "1.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
-
dependencies = [
-
"bitflags",
-
"errno",
-
"libc",
-
"linux-raw-sys 0.11.0",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "rustls"
-
version = "0.23.28"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643"
-
dependencies = [
-
"once_cell",
-
"ring",
-
"rustls-pki-types",
-
"rustls-webpki",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "rustls-pki-types"
-
version = "1.13.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c"
-
dependencies = [
-
"web-time",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "rustls-webpki"
-
version = "0.103.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
-
dependencies = [
-
"ring",
-
"rustls-pki-types",
-
"untrusted",
-
]
-
-
[[package]]
-
name = "rustversion"
-
version = "1.0.22"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
-
-
[[package]]
-
name = "ryu"
-
version = "1.0.20"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
-
-
[[package]]
-
name = "saa"
-
version = "5.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3192d99ee2f69effeacef86c9fa80e75b6604e2a5d3ade6856d206b519521e53"
-
-
[[package]]
-
name = "same-file"
-
version = "1.0.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-
dependencies = [
-
"winapi-util",
-
]
-
-
[[package]]
-
name = "scc"
-
version = "3.4.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b6f8686af8563182fc6b63ab7bd7b5cad8f40fbe660675627caedc6c073eca8"
-
dependencies = [
-
"saa",
-
"sdd",
-
]
-
-
[[package]]
-
name = "schemars"
-
version = "0.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
-
dependencies = [
-
"dyn-clone",
-
"ref-cast",
-
"serde",
-
"serde_json",
-
]
-
-
[[package]]
-
name = "schemars"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
-
dependencies = [
-
"dyn-clone",
-
"ref-cast",
-
"serde",
-
"serde_json",
-
]
-
-
[[package]]
-
name = "scoped-tls"
-
version = "1.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
-
-
[[package]]
-
name = "scopeguard"
-
version = "1.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-
[[package]]
-
name = "sdd"
-
version = "4.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7168ecf885fdd3920ade15d50189593b076e1d060b60406a745766380195d65a"
-
-
[[package]]
-
name = "sec1"
-
version = "0.7.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
-
dependencies = [
-
"base16ct",
-
"der",
-
"generic-array",
-
"pkcs8",
-
"subtle",
-
"zeroize",
-
]
-
-
[[package]]
-
name = "self_cell"
-
version = "1.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33"
-
-
[[package]]
-
name = "semver"
-
version = "1.0.27"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
-
-
[[package]]
-
name = "send_wrapper"
-
version = "0.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
-
-
[[package]]
-
name = "serde"
-
version = "1.0.228"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
-
dependencies = [
-
"serde_core",
-
"serde_derive",
-
]
-
-
[[package]]
-
name = "serde_bytes"
-
version = "0.11.19"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"
-
dependencies = [
-
"serde",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "serde_core"
-
version = "1.0.228"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
-
dependencies = [
-
"serde_derive",
-
]
-
-
[[package]]
-
name = "serde_derive"
-
version = "1.0.228"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "serde_html_form"
-
version = "0.2.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b2f2d7ff8a2140333718bb329f5c40fc5f0865b84c426183ce14c97d2ab8154f"
-
dependencies = [
-
"form_urlencoded",
-
"indexmap 2.12.1",
-
"itoa",
-
"ryu",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "serde_ipld_dagcbor"
-
version = "0.6.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "46182f4f08349a02b45c998ba3215d3f9de826246ba02bb9dddfe9a2a2100778"
-
dependencies = [
-
"cbor4ii",
-
"ipld-core",
-
"scopeguard",
-
"serde",
-
]
-
-
[[package]]
-
name = "serde_json"
-
version = "1.0.145"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
-
dependencies = [
-
"indexmap 2.12.1",
-
"itoa",
-
"memchr",
-
"ryu",
-
"serde",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "serde_repr"
-
version = "0.1.20"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "serde_spanned"
-
version = "0.6.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "serde_urlencoded"
-
version = "0.7.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-
dependencies = [
-
"form_urlencoded",
-
"itoa",
-
"ryu",
-
"serde",
-
]
-
-
[[package]]
-
name = "serde_with"
-
version = "3.16.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7"
-
dependencies = [
-
"base64",
-
"chrono",
-
"hex",
-
"indexmap 1.9.3",
-
"indexmap 2.12.1",
-
"schemars 0.9.0",
-
"schemars 1.1.0",
-
"serde_core",
-
"serde_json",
-
"serde_with_macros",
-
"time",
-
]
-
-
[[package]]
-
name = "serde_with_macros"
-
version = "3.16.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c"
-
dependencies = [
-
"darling",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "serde_yaml"
-
version = "0.9.34+deprecated"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
-
dependencies = [
-
"indexmap 2.12.1",
-
"itoa",
-
"ryu",
-
"serde",
-
"unsafe-libyaml",
-
]
-
-
[[package]]
-
name = "sha2"
-
version = "0.10.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
-
dependencies = [
-
"cfg-if",
-
"cpufeatures",
-
"digest",
-
]
-
-
[[package]]
-
name = "shadow-rs"
-
version = "1.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "72d18183cef626bce22836103349c7050d73db799be0171386b80947d157ae32"
-
dependencies = [
-
"const_format",
-
"is_debug",
-
"time",
-
"tzdb",
-
]
-
-
[[package]]
-
name = "sharded-slab"
-
version = "0.1.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-
dependencies = [
-
"lazy_static",
-
]
-
-
[[package]]
-
name = "shell-words"
-
version = "1.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77"
-
-
[[package]]
-
name = "shlex"
-
version = "1.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-
-
[[package]]
-
name = "signature"
-
version = "2.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
-
dependencies = [
-
"digest",
-
"rand_core 0.6.4",
-
]
-
-
[[package]]
-
name = "simd-adler32"
-
version = "0.3.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
-
-
[[package]]
-
name = "siphasher"
-
version = "1.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
-
-
[[package]]
-
name = "slab"
-
version = "0.4.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
-
-
[[package]]
-
name = "smallvec"
-
version = "1.15.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
-
-
[[package]]
-
name = "smol_str"
-
version = "0.3.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3498b0a27f93ef1402f20eefacfaa1691272ac4eca1cdc8c596cb0a245d6cbf5"
-
dependencies = [
-
"borsh",
-
"serde_core",
-
]
-
-
[[package]]
-
name = "socket2"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
-
dependencies = [
-
"libc",
-
"windows-sys 0.60.2",
-
]
-
-
[[package]]
-
name = "spin"
-
version = "0.9.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-
dependencies = [
-
"lock_api",
-
]
-
-
[[package]]
-
name = "spin"
-
version = "0.10.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591"
-
-
[[package]]
-
name = "spki"
-
version = "0.7.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
-
dependencies = [
-
"base64ct",
-
"der",
-
]
-
-
[[package]]
-
name = "stable_deref_trait"
-
version = "1.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
-
-
[[package]]
-
name = "static-regular-grammar"
-
version = "2.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4f4a6c40247579acfbb138c3cd7de3dab113ab4ac6227f1b7de7d626ee667957"
-
dependencies = [
-
"abnf",
-
"btree-range-map",
-
"ciborium",
-
"hex_fmt",
-
"indoc",
-
"proc-macro-error",
-
"proc-macro2",
-
"quote",
-
"serde",
-
"sha2",
-
"syn 2.0.111",
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "static_assertions"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
-
[[package]]
-
name = "string_cache"
-
version = "0.8.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
-
dependencies = [
-
"new_debug_unreachable",
-
"parking_lot",
-
"phf_shared 0.11.3",
-
"precomputed-hash",
-
"serde",
-
]
-
-
[[package]]
-
name = "string_cache_codegen"
-
version = "0.5.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
-
dependencies = [
-
"phf_generator",
-
"phf_shared 0.11.3",
-
"proc-macro2",
-
"quote",
-
]
-
-
[[package]]
-
name = "strip-ansi-escapes"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025"
-
dependencies = [
-
"vte",
-
]
-
-
[[package]]
-
name = "strsim"
-
version = "0.11.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-
-
[[package]]
-
name = "strum"
-
version = "0.26.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
-
-
[[package]]
-
name = "strum_macros"
-
version = "0.27.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
-
dependencies = [
-
"heck 0.5.0",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "subtle"
-
version = "2.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-
-
[[package]]
-
name = "supports-color"
-
version = "3.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6"
-
dependencies = [
-
"is_ci",
-
]
-
-
[[package]]
-
name = "supports-hyperlinks"
-
version = "3.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b"
-
-
[[package]]
-
name = "supports-unicode"
-
version = "3.0.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2"
-
-
[[package]]
-
name = "syn"
-
version = "1.0.109"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"unicode-ident",
-
]
-
-
[[package]]
-
name = "syn"
-
version = "2.0.111"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"unicode-ident",
-
]
-
-
[[package]]
-
name = "sync_wrapper"
-
version = "1.0.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
-
dependencies = [
-
"futures-core",
-
]
-
-
[[package]]
-
name = "synstructure"
-
version = "0.13.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "sys-locale"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
-
dependencies = [
-
"libc",
-
]
-
-
[[package]]
-
name = "sysinfo"
-
version = "0.37.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f"
-
dependencies = [
-
"libc",
-
"memchr",
-
"ntapi",
-
"objc2-core-foundation",
-
"objc2-io-kit",
-
"windows 0.61.3",
-
]
-
-
[[package]]
-
name = "system-configuration"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
-
dependencies = [
-
"bitflags",
-
"core-foundation",
-
"system-configuration-sys",
-
]
-
-
[[package]]
-
name = "system-configuration-sys"
-
version = "0.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-
dependencies = [
-
"core-foundation-sys",
-
"libc",
-
]
-
-
[[package]]
-
name = "tabled"
-
version = "0.20.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d"
-
dependencies = [
-
"ansi-str",
-
"ansitok",
-
"papergrid",
-
"testing_table",
-
]
-
-
[[package]]
-
name = "tagptr"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
-
-
[[package]]
-
name = "tempfile"
-
version = "3.23.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
-
dependencies = [
-
"fastrand",
-
"getrandom 0.3.4",
-
"once_cell",
-
"rustix 1.1.2",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "tendril"
-
version = "0.4.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
-
dependencies = [
-
"futf",
-
"mac",
-
"utf-8",
-
]
-
-
[[package]]
-
name = "terminal_size"
-
version = "0.4.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0"
-
dependencies = [
-
"rustix 1.1.2",
-
"windows-sys 0.60.2",
-
]
-
-
[[package]]
-
name = "testing_table"
-
version = "0.3.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc"
-
dependencies = [
-
"ansitok",
-
"unicode-width 0.2.2",
-
]
-
-
[[package]]
-
name = "textwrap"
-
version = "0.16.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
-
dependencies = [
-
"unicode-linebreak",
-
"unicode-width 0.2.2",
-
]
-
-
[[package]]
-
name = "thiserror"
-
version = "1.0.69"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
-
dependencies = [
-
"thiserror-impl 1.0.69",
-
]
-
-
[[package]]
-
name = "thiserror"
-
version = "2.0.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
-
dependencies = [
-
"thiserror-impl 2.0.17",
-
]
-
-
[[package]]
-
name = "thiserror-impl"
-
version = "1.0.69"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "thiserror-impl"
-
version = "2.0.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "thread_local"
-
version = "1.1.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
-
dependencies = [
-
"cfg-if",
-
]
-
-
[[package]]
-
name = "time"
-
version = "0.3.44"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
-
dependencies = [
-
"deranged",
-
"itoa",
-
"libc",
-
"num-conv",
-
"num_threads",
-
"powerfmt",
-
"serde",
-
"time-core",
-
"time-macros",
-
]
-
-
[[package]]
-
name = "time-core"
-
version = "0.1.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
-
-
[[package]]
-
name = "time-macros"
-
version = "0.2.24"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
-
dependencies = [
-
"num-conv",
-
"time-core",
-
]
-
-
[[package]]
-
name = "tinystr"
-
version = "0.8.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
-
dependencies = [
-
"displaydoc",
-
"serde_core",
-
"zerovec",
-
]
-
-
[[package]]
-
name = "tinyvec"
-
version = "1.10.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
-
dependencies = [
-
"tinyvec_macros",
-
]
-
-
[[package]]
-
name = "tinyvec_macros"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-
[[package]]
-
name = "titlecase"
-
version = "3.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "eb567088a91d59b492520c8149e2be5ce10d5deb2d9a383f3378df3259679d40"
-
dependencies = [
-
"regex",
-
]
-
-
[[package]]
-
name = "tokio"
-
version = "1.48.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
-
dependencies = [
-
"bytes",
-
"libc",
-
"mio",
-
"pin-project-lite",
-
"socket2",
-
"tokio-macros",
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "tokio-macros"
-
version = "2.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "tokio-rustls"
-
version = "0.26.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
-
dependencies = [
-
"rustls",
-
"tokio",
-
]
-
-
[[package]]
-
name = "tokio-util"
-
version = "0.7.17"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
-
dependencies = [
-
"bytes",
-
"futures-core",
-
"futures-sink",
-
"futures-util",
-
"pin-project-lite",
-
"tokio",
-
]
-
-
[[package]]
-
name = "toml"
-
version = "0.8.23"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
-
dependencies = [
-
"indexmap 2.12.1",
-
"serde",
-
"serde_spanned",
-
"toml_datetime",
-
"toml_edit",
-
]
-
-
[[package]]
-
name = "toml_datetime"
-
version = "0.6.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "toml_edit"
-
version = "0.22.27"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
-
dependencies = [
-
"indexmap 2.12.1",
-
"serde",
-
"serde_spanned",
-
"toml_datetime",
-
"toml_write",
-
"winnow",
-
]
-
-
[[package]]
-
name = "toml_write"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
-
-
[[package]]
-
name = "tower"
-
version = "0.5.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
-
dependencies = [
-
"futures-core",
-
"futures-util",
-
"pin-project-lite",
-
"sync_wrapper",
-
"tokio",
-
"tower-layer",
-
"tower-service",
-
]
-
-
[[package]]
-
name = "tower-http"
-
version = "0.6.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
-
dependencies = [
-
"async-compression",
-
"bitflags",
-
"bytes",
-
"futures-core",
-
"futures-util",
-
"http",
-
"http-body",
-
"http-body-util",
-
"iri-string",
-
"pin-project-lite",
-
"tokio",
-
"tokio-util",
-
"tower",
-
"tower-layer",
-
"tower-service",
-
]
-
-
[[package]]
-
name = "tower-layer"
-
version = "0.3.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
-
-
[[package]]
-
name = "tower-service"
-
version = "0.3.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
-
-
[[package]]
-
name = "tracing"
-
version = "0.1.43"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647"
-
dependencies = [
-
"pin-project-lite",
-
"tracing-attributes",
-
"tracing-core",
-
]
-
-
[[package]]
-
name = "tracing-attributes"
-
version = "0.1.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "tracing-core"
-
version = "0.1.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c"
-
dependencies = [
-
"once_cell",
-
"valuable",
-
]
-
-
[[package]]
-
name = "tracing-log"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
-
dependencies = [
-
"log",
-
"once_cell",
-
"tracing-core",
-
]
-
-
[[package]]
-
name = "tracing-subscriber"
-
version = "0.3.22"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
-
dependencies = [
-
"matchers",
-
"nu-ansi-term",
-
"once_cell",
-
"regex-automata",
-
"sharded-slab",
-
"smallvec",
-
"thread_local",
-
"tracing",
-
"tracing-core",
-
"tracing-log",
-
]
-
-
[[package]]
-
name = "trait-variant"
-
version = "0.1.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "triomphe"
-
version = "0.1.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39"
-
-
[[package]]
-
name = "try-lock"
-
version = "0.2.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
-
-
[[package]]
-
name = "type-map"
-
version = "0.5.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90"
-
dependencies = [
-
"rustc-hash",
-
]
-
-
[[package]]
-
name = "typeid"
-
version = "1.0.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
-
-
[[package]]
-
name = "typenum"
-
version = "1.19.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
-
-
[[package]]
-
name = "typetag"
-
version = "0.2.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf"
-
dependencies = [
-
"erased-serde",
-
"inventory",
-
"once_cell",
-
"serde",
-
"typetag-impl",
-
]
-
-
[[package]]
-
name = "typetag-impl"
-
version = "0.2.21"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "tz-rs"
-
version = "0.7.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "14eff19b8dc1ace5bf7e4d920b2628ae3837f422ff42210cb1567cbf68b5accf"
-
-
[[package]]
-
name = "tzdb"
-
version = "0.7.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "56d4e985b6dda743ae7fd4140c28105316ffd75bc58258ee6cc12934e3eb7a0c"
-
dependencies = [
-
"iana-time-zone",
-
"tz-rs",
-
"tzdb_data",
-
]
-
-
[[package]]
-
name = "tzdb_data"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "42302a846dea7ab786f42dc5f519387069045acff793e1178d9368414168fe95"
-
dependencies = [
-
"tz-rs",
-
]
-
-
[[package]]
-
name = "ucd-trie"
-
version = "0.1.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
-
-
[[package]]
-
name = "uds_windows"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
-
dependencies = [
-
"memoffset",
-
"tempfile",
-
"winapi",
-
]
-
-
[[package]]
-
name = "umask"
-
version = "2.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ec9a46c2549e35c054e0ffe281a3a6ec0007793db4df106604d37ed3f4d73d1c"
-
dependencies = [
-
"thiserror 1.0.69",
-
]
-
-
[[package]]
-
name = "unic-langid"
-
version = "0.9.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05"
-
dependencies = [
-
"unic-langid-impl",
-
]
-
-
[[package]]
-
name = "unic-langid-impl"
-
version = "0.9.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658"
-
dependencies = [
-
"tinystr",
-
]
-
-
[[package]]
-
name = "unicase"
-
version = "2.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
-
-
[[package]]
-
name = "unicode-ident"
-
version = "1.0.22"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
-
-
[[package]]
-
name = "unicode-linebreak"
-
version = "0.1.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-
-
[[package]]
-
name = "unicode-segmentation"
-
version = "1.12.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
-
-
[[package]]
-
name = "unicode-width"
-
version = "0.1.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
-
-
[[package]]
-
name = "unicode-width"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
-
-
[[package]]
-
name = "unicode-xid"
-
version = "0.2.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
-
-
[[package]]
-
name = "unit-prefix"
-
version = "0.5.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
-
-
[[package]]
-
name = "unsafe-libyaml"
-
version = "0.2.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
-
-
[[package]]
-
name = "unsigned-varint"
-
version = "0.7.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105"
-
-
[[package]]
-
name = "unsigned-varint"
-
version = "0.8.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06"
-
-
[[package]]
-
name = "untrusted"
-
version = "0.9.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-
-
[[package]]
-
name = "url"
-
version = "2.5.7"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
-
dependencies = [
-
"form_urlencoded",
-
"idna",
-
"percent-encoding",
-
"serde",
-
]
-
-
[[package]]
-
name = "urlencoding"
-
version = "2.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
-
-
[[package]]
-
name = "utf-8"
-
version = "0.7.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-
-
[[package]]
-
name = "utf8_iter"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
-
-
[[package]]
-
name = "utf8parse"
-
version = "0.2.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
-
-
[[package]]
-
name = "uucore"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2003164a38a7f39da1de103a70fa66b745f572f0045ec261481539516c0a8a0e"
-
dependencies = [
-
"bstr",
-
"clap",
-
"fluent",
-
"fluent-bundle",
-
"fluent-syntax",
-
"libc",
-
"nix",
-
"number_prefix",
-
"os_display",
-
"phf 0.13.1",
-
"procfs 0.18.0",
-
"thiserror 2.0.17",
-
"unic-langid",
-
"uucore_procs",
-
"wild",
-
]
-
-
[[package]]
-
name = "uucore_procs"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c76f0308f7810d915246a39748e7f5d64e43e6bb9d6c8107224f9d741aefc375"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
]
-
-
[[package]]
-
name = "v_htmlescape"
-
version = "0.15.8"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c"
-
-
[[package]]
-
name = "valuable"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
-
-
[[package]]
-
name = "version_check"
-
version = "0.9.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
-
[[package]]
-
name = "vfs"
-
version = "0.12.1"
-
source = "git+https://github.com/landaire/rust-vfs?branch=fix%2Fwasm#c4341e8e7c16a019c1a1415fc8a413bf883a08d5"
-
dependencies = [
-
"filetime",
-
]
-
-
[[package]]
-
name = "vte"
-
version = "0.14.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077"
-
dependencies = [
-
"arrayvec",
-
"memchr",
-
]
-
-
[[package]]
-
name = "walkdir"
-
version = "2.5.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-
dependencies = [
-
"same-file",
-
"winapi-util",
-
]
-
-
[[package]]
-
name = "want"
-
version = "0.3.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
-
dependencies = [
-
"try-lock",
-
]
-
-
[[package]]
-
name = "wasi"
-
version = "0.11.1+wasi-snapshot-preview1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
-
-
[[package]]
-
name = "wasip2"
-
version = "1.0.1+wasi-0.2.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
-
dependencies = [
-
"wit-bindgen",
-
]
-
-
[[package]]
-
name = "wasm-bindgen"
-
version = "0.2.106"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
-
dependencies = [
-
"cfg-if",
-
"once_cell",
-
"rustversion",
-
"wasm-bindgen-macro",
-
"wasm-bindgen-shared",
-
]
-
-
[[package]]
-
name = "wasm-bindgen-futures"
-
version = "0.4.56"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
-
dependencies = [
-
"cfg-if",
-
"js-sys",
-
"once_cell",
-
"wasm-bindgen",
-
"web-sys",
-
]
-
-
[[package]]
-
name = "wasm-bindgen-macro"
-
version = "0.2.106"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
-
dependencies = [
-
"quote",
-
"wasm-bindgen-macro-support",
-
]
-
-
[[package]]
-
name = "wasm-bindgen-macro-support"
-
version = "0.2.106"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
-
dependencies = [
-
"bumpalo",
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
"wasm-bindgen-shared",
-
]
-
-
[[package]]
-
name = "wasm-bindgen-shared"
-
version = "0.2.106"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
-
dependencies = [
-
"unicode-ident",
-
]
-
-
[[package]]
-
name = "wax"
-
version = "0.6.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8d12a78aa0bab22d2f26ed1a96df7ab58e8a93506a3e20adb47c51a93b4e1357"
-
dependencies = [
-
"const_format",
-
"itertools 0.11.0",
-
"nom",
-
"pori",
-
"regex",
-
"thiserror 1.0.69",
-
"walkdir",
-
]
-
-
[[package]]
-
name = "web-sys"
-
version = "0.3.83"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
-
dependencies = [
-
"js-sys",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "web-time"
-
version = "1.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
-
dependencies = [
-
"js-sys",
-
"wasm-bindgen",
-
]
-
-
[[package]]
-
name = "webpage"
-
version = "2.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac"
-
dependencies = [
-
"html5ever",
-
"markup5ever_rcdom",
-
"serde_json",
-
"url",
-
]
-
-
[[package]]
-
name = "webpki-roots"
-
version = "1.0.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
-
dependencies = [
-
"rustls-pki-types",
-
]
-
-
[[package]]
-
name = "wild"
-
version = "2.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
-
dependencies = [
-
"glob",
-
]
-
-
[[package]]
-
name = "winapi"
-
version = "0.3.9"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-
dependencies = [
-
"winapi-i686-pc-windows-gnu",
-
"winapi-x86_64-pc-windows-gnu",
-
]
-
-
[[package]]
-
name = "winapi-i686-pc-windows-gnu"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-
[[package]]
-
name = "winapi-util"
-
version = "0.1.11"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
-
dependencies = [
-
"windows-sys 0.61.2",
-
]
-
-
[[package]]
-
name = "winapi-x86_64-pc-windows-gnu"
-
version = "0.4.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-
[[package]]
-
name = "windows"
-
version = "0.61.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
-
dependencies = [
-
"windows-collections 0.2.0",
-
"windows-core 0.61.2",
-
"windows-future 0.2.1",
-
"windows-link 0.1.3",
-
"windows-numerics 0.2.0",
-
]
-
-
[[package]]
-
name = "windows"
-
version = "0.62.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
-
dependencies = [
-
"windows-collections 0.3.2",
-
"windows-core 0.62.2",
-
"windows-future 0.3.2",
-
"windows-numerics 0.3.1",
-
]
-
-
[[package]]
-
name = "windows-collections"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
-
dependencies = [
-
"windows-core 0.61.2",
-
]
-
-
[[package]]
-
name = "windows-collections"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
-
dependencies = [
-
"windows-core 0.62.2",
-
]
-
-
[[package]]
-
name = "windows-core"
-
version = "0.61.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
-
dependencies = [
-
"windows-implement",
-
"windows-interface",
-
"windows-link 0.1.3",
-
"windows-result 0.3.4",
-
"windows-strings 0.4.2",
-
]
-
-
[[package]]
-
name = "windows-core"
-
version = "0.62.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
-
dependencies = [
-
"windows-implement",
-
"windows-interface",
-
"windows-link 0.2.1",
-
"windows-result 0.4.1",
-
"windows-strings 0.5.1",
-
]
-
-
[[package]]
-
name = "windows-future"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
-
dependencies = [
-
"windows-core 0.61.2",
-
"windows-link 0.1.3",
-
"windows-threading 0.1.0",
-
]
-
-
[[package]]
-
name = "windows-future"
-
version = "0.3.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
-
dependencies = [
-
"windows-core 0.62.2",
-
"windows-link 0.2.1",
-
"windows-threading 0.2.1",
-
]
-
-
[[package]]
-
name = "windows-implement"
-
version = "0.60.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "windows-interface"
-
version = "0.59.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "windows-link"
-
version = "0.1.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
-
-
[[package]]
-
name = "windows-link"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
-
-
[[package]]
-
name = "windows-numerics"
-
version = "0.2.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
-
dependencies = [
-
"windows-core 0.61.2",
-
"windows-link 0.1.3",
-
]
-
-
[[package]]
-
name = "windows-numerics"
-
version = "0.3.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
-
dependencies = [
-
"windows-core 0.62.2",
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "windows-registry"
-
version = "0.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
-
dependencies = [
-
"windows-link 0.2.1",
-
"windows-result 0.4.1",
-
"windows-strings 0.5.1",
-
]
-
-
[[package]]
-
name = "windows-result"
-
version = "0.3.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
-
dependencies = [
-
"windows-link 0.1.3",
-
]
-
-
[[package]]
-
name = "windows-result"
-
version = "0.4.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
-
dependencies = [
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "windows-strings"
-
version = "0.4.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
-
dependencies = [
-
"windows-link 0.1.3",
-
]
-
-
[[package]]
-
name = "windows-strings"
-
version = "0.5.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
-
dependencies = [
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "windows-sys"
-
version = "0.48.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-
dependencies = [
-
"windows-targets 0.48.5",
-
]
-
-
[[package]]
-
name = "windows-sys"
-
version = "0.52.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-
dependencies = [
-
"windows-targets 0.52.6",
-
]
-
-
[[package]]
-
name = "windows-sys"
-
version = "0.59.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-
dependencies = [
-
"windows-targets 0.52.6",
-
]
-
-
[[package]]
-
name = "windows-sys"
-
version = "0.60.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
-
dependencies = [
-
"windows-targets 0.53.5",
-
]
-
-
[[package]]
-
name = "windows-sys"
-
version = "0.61.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
-
dependencies = [
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "windows-targets"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-
dependencies = [
-
"windows_aarch64_gnullvm 0.48.5",
-
"windows_aarch64_msvc 0.48.5",
-
"windows_i686_gnu 0.48.5",
-
"windows_i686_msvc 0.48.5",
-
"windows_x86_64_gnu 0.48.5",
-
"windows_x86_64_gnullvm 0.48.5",
-
"windows_x86_64_msvc 0.48.5",
-
]
-
-
[[package]]
-
name = "windows-targets"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-
dependencies = [
-
"windows_aarch64_gnullvm 0.52.6",
-
"windows_aarch64_msvc 0.52.6",
-
"windows_i686_gnu 0.52.6",
-
"windows_i686_gnullvm 0.52.6",
-
"windows_i686_msvc 0.52.6",
-
"windows_x86_64_gnu 0.52.6",
-
"windows_x86_64_gnullvm 0.52.6",
-
"windows_x86_64_msvc 0.52.6",
-
]
-
-
[[package]]
-
name = "windows-targets"
-
version = "0.53.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
-
dependencies = [
-
"windows-link 0.2.1",
-
"windows_aarch64_gnullvm 0.53.1",
-
"windows_aarch64_msvc 0.53.1",
-
"windows_i686_gnu 0.53.1",
-
"windows_i686_gnullvm 0.53.1",
-
"windows_i686_msvc 0.53.1",
-
"windows_x86_64_gnu 0.53.1",
-
"windows_x86_64_gnullvm 0.53.1",
-
"windows_x86_64_msvc 0.53.1",
-
]
-
-
[[package]]
-
name = "windows-threading"
-
version = "0.1.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
-
dependencies = [
-
"windows-link 0.1.3",
-
]
-
-
[[package]]
-
name = "windows-threading"
-
version = "0.2.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
-
dependencies = [
-
"windows-link 0.2.1",
-
]
-
-
[[package]]
-
name = "windows_aarch64_gnullvm"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-
[[package]]
-
name = "windows_aarch64_gnullvm"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-
[[package]]
-
name = "windows_aarch64_gnullvm"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
-
-
[[package]]
-
name = "windows_aarch64_msvc"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-
[[package]]
-
name = "windows_aarch64_msvc"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-
[[package]]
-
name = "windows_aarch64_msvc"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
-
-
[[package]]
-
name = "windows_i686_gnu"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-
[[package]]
-
name = "windows_i686_gnu"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-
[[package]]
-
name = "windows_i686_gnu"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
-
-
[[package]]
-
name = "windows_i686_gnullvm"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-
[[package]]
-
name = "windows_i686_gnullvm"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
-
-
[[package]]
-
name = "windows_i686_msvc"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-
[[package]]
-
name = "windows_i686_msvc"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-
[[package]]
-
name = "windows_i686_msvc"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
-
-
[[package]]
-
name = "windows_x86_64_gnu"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-
[[package]]
-
name = "windows_x86_64_gnu"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-
[[package]]
-
name = "windows_x86_64_gnu"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
-
-
[[package]]
-
name = "windows_x86_64_gnullvm"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-
[[package]]
-
name = "windows_x86_64_gnullvm"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-
[[package]]
-
name = "windows_x86_64_gnullvm"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
-
-
[[package]]
-
name = "windows_x86_64_msvc"
-
version = "0.48.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-
[[package]]
-
name = "windows_x86_64_msvc"
-
version = "0.52.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-
-
[[package]]
-
name = "windows_x86_64_msvc"
-
version = "0.53.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
-
-
[[package]]
-
name = "winnow"
-
version = "0.7.14"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
-
dependencies = [
-
"memchr",
-
]
-
-
[[package]]
-
name = "winreg"
-
version = "0.52.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
-
dependencies = [
-
"cfg-if",
-
"windows-sys 0.48.0",
-
]
-
-
[[package]]
-
name = "wit-bindgen"
-
version = "0.46.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
-
-
[[package]]
-
name = "writeable"
-
version = "0.6.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
-
-
[[package]]
-
name = "xml5ever"
-
version = "0.18.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9bbb26405d8e919bc1547a5aa9abc95cbfa438f04844f5fdd9dc7596b748bf69"
-
dependencies = [
-
"log",
-
"mac",
-
"markup5ever",
-
]
-
-
[[package]]
-
name = "yansi"
-
version = "1.0.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
-
-
[[package]]
-
name = "yoke"
-
version = "0.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
-
dependencies = [
-
"stable_deref_trait",
-
"yoke-derive",
-
"zerofrom",
-
]
-
-
[[package]]
-
name = "yoke-derive"
-
version = "0.8.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
"synstructure",
-
]
-
-
[[package]]
-
name = "zerocopy"
-
version = "0.7.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
-
dependencies = [
-
"byteorder",
-
"zerocopy-derive 0.7.35",
-
]
-
-
[[package]]
-
name = "zerocopy"
-
version = "0.8.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
-
dependencies = [
-
"zerocopy-derive 0.8.31",
-
]
-
-
[[package]]
-
name = "zerocopy-derive"
-
version = "0.7.35"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "zerocopy-derive"
-
version = "0.8.31"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "zerofrom"
-
version = "0.1.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
-
dependencies = [
-
"zerofrom-derive",
-
]
-
-
[[package]]
-
name = "zerofrom-derive"
-
version = "0.1.6"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
"synstructure",
-
]
-
-
[[package]]
-
name = "zeroize"
-
version = "1.8.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
-
dependencies = [
-
"serde",
-
]
-
-
[[package]]
-
name = "zerotrie"
-
version = "0.2.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
-
dependencies = [
-
"displaydoc",
-
"yoke",
-
"zerofrom",
-
]
-
-
[[package]]
-
name = "zerovec"
-
version = "0.11.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
-
dependencies = [
-
"serde",
-
"yoke",
-
"zerofrom",
-
"zerovec-derive",
-
]
-
-
[[package]]
-
name = "zerovec-derive"
-
version = "0.11.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
-
dependencies = [
-
"proc-macro2",
-
"quote",
-
"syn 2.0.111",
-
]
-
-
[[package]]
-
name = "zip"
-
version = "4.6.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1"
-
dependencies = [
-
"arbitrary",
-
"crc32fast",
-
"flate2",
-
"indexmap 2.12.1",
-
"memchr",
-
"zopfli",
-
]
-
-
[[package]]
-
name = "zlib-rs"
-
version = "0.5.4"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235"
-
-
[[package]]
-
name = "zopfli"
-
version = "0.8.3"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
-
dependencies = [
-
"bumpalo",
-
"crc32fast",
-
"log",
-
"simd-adler32",
-
]
-46
dysnomia/Cargo.toml
···
-
[package]
-
name = "dysnomia-sh"
-
version = "0.1.0"
-
edition = "2024"
-
-
[lib]
-
crate-type = ["cdylib"]
-
-
[dependencies]
-
wasm-bindgen = "0.2"
-
wasm-bindgen-futures = "0.4"
-
getrandom = { version = "0.3", features = ["wasm_js"] }
-
web-sys = { version = "0.3", features = ["console", "Window"] }
-
vfs = { version = "0.12" }
-
nu-cmd-lang = { version = "0.109.1", default-features = false }
-
nu-command = { version = "0.109.1", default-features = false }
-
nu-engine = { version = "0.109.1", default-features = false }
-
nu-parser = { version = "0.109.1", default-features = false }
-
nu-protocol = { version = "0.109.1", default-features = false }
-
nu-cmd-extra = { version = "0.109.1", default-features = false }
-
serde = { version = "1.0", features = ["derive"] }
-
serde_json = "1"
-
miette = { version = "7.6", features = ["fancy"] }
-
ansi_term = "0.12.1"
-
-
anyhow = "1"
-
jacquard = { path = "../../jacquard/crates/jacquard", default-features = false, features = ["api", "cache"] }
-
jacquard-repo = { path = "../../jacquard/crates/jacquard-repo" }
-
url = "2"
-
futures = "0.3.31"
-
js-sys = "0.3.83"
-
serde_ipld_dagcbor = "0.6.4"
-
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
-
console_error_panic_hook = "0.1.7"
-
-
scc = "3"
-
rapidhash = { version = "4", features = ["unsafe"] }
-
-
[patch.crates-io]
-
vfs = { git = "https://github.com/landaire/rust-vfs", branch = "fix/wasm" }
-
-
[profile.release]
-
opt-level = 3
-
lto = true
-
codegen-units = 1
-
strip = true
-64
dysnomia/src/cmd/cd.rs
···
-
use crate::globals::{get_pwd, get_vfs, set_pwd, to_shell_err};
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape,
-
engine::{Command, EngineState, Stack},
-
};
-
use std::sync::Arc;
-
use vfs::VfsFileType;
-
-
#[derive(Clone)]
-
pub struct Cd;
-
-
impl Command for Cd {
-
fn name(&self) -> &str {
-
"cd"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("cd")
-
.optional("path", SyntaxShape::String, "the path to change into")
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"change the current directory in the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path_arg: Option<String> = call.opt(engine_state, _stack, 0)?;
-
let path = path_arg.unwrap_or_else(|| "/".to_string());
-
-
let base: Arc<vfs::VfsPath> = if path.starts_with('/') {
-
get_vfs()
-
} else {
-
get_pwd().clone()
-
};
-
-
let target = base
-
.join(path.trim_end_matches('/'))
-
.map_err(to_shell_err(call.head))?;
-
-
// Ensure target exists and is a directory
-
let metadata = target.metadata().map_err(to_shell_err(call.head))?;
-
match metadata.file_type {
-
VfsFileType::Directory => {
-
set_pwd(Arc::new(target));
-
Ok(PipelineData::Empty)
-
}
-
VfsFileType::File => Err(ShellError::GenericError {
-
error: "not a directory".to_string(),
-
msg: format!("'{}' is not a directory", path),
-
span: Some(call.head),
-
help: None,
-
inner: vec![],
-
}),
-
}
-
}
-
}
-338
dysnomia/src/cmd/fetch.rs
···
-
use crate::globals::{get_pwd, print_to_console, register_task, remove_task, to_shell_err};
-
use anyhow::{Result, anyhow};
-
use futures::future::{AbortHandle, Abortable};
-
use jacquard::types::aturi::AtUri;
-
use jacquard::types::ident::AtIdentifier;
-
use jacquard::types::string::Rkey;
-
use jacquard::{
-
api::com_atproto::{
-
repo::{get_record::GetRecord, list_records::ListRecords},
-
sync::get_repo::GetRepo,
-
},
-
client::{Agent, MemorySessionStore, credential_session::CredentialSession},
-
identity::{resolver::IdentityResolver, slingshot_resolver_default},
-
prelude::*,
-
types::{did::Did, nsid::Nsid},
-
};
-
use jacquard_repo::{
-
Repository,
-
car::parse_car_bytes,
-
storage::{BlockStore, MemoryBlockStore},
-
};
-
use nu_engine::CallExt;
-
use nu_protocol::IntoPipelineData;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
use std::io::Write;
-
use std::str::FromStr;
-
use std::sync::Arc;
-
use url::Url;
-
use wasm_bindgen_futures::spawn_local;
-
-
#[derive(Clone)]
-
pub struct Fetch;
-
-
impl Command for Fetch {
-
fn name(&self) -> &str {
-
"fetch"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build(self.name())
-
.required(
-
"uri",
-
SyntaxShape::String,
-
"HTTP URI or AT URI (at://identifier[/collection[/rkey]])",
-
)
-
.named("output", SyntaxShape::Filepath, "output path", Some('o'))
-
.category(Category::Network)
-
}
-
-
fn description(&self) -> &str {
-
"fetch files using HTTP or fetch records from an AT Protocol repository.\nsupports full repo (CAR), collection, or a single record."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let uri_arg: String = call.req(engine_state, stack, 0)?;
-
let output_arg: Option<String> = call.get_flag(engine_state, stack, "output")?;
-
let output_span = call.get_flag_span(stack, "output");
-
-
let at_uri = uri_arg
-
.starts_with("at://")
-
.then(|| {
-
AtUri::from_str(&uri_arg).map_err(|err| ShellError::GenericError {
-
error: "invalid AT URI format".into(),
-
msg: err.to_string(),
-
span: Some(call.arguments_span()),
-
help: None,
-
inner: vec![],
-
})
-
})
-
.transpose()?;
-
let uri = at_uri
-
.is_none()
-
.then(|| {
-
Url::from_str(&uri_arg).map_err(|err| ShellError::GenericError {
-
error: "invalid URI format".into(),
-
msg: err.to_string(),
-
span: Some(call.arguments_span()),
-
help: None,
-
inner: vec![],
-
})
-
})
-
.transpose()?;
-
-
// Determine target directory
-
let pwd = get_pwd();
-
let base_dir = if let Some(out) = output_arg.as_ref() {
-
pwd.join(out.trim_end_matches('/'))
-
.map_err(to_shell_err(output_span.unwrap()))?
-
} else {
-
pwd.join("").unwrap()
-
};
-
-
let final_path = if let Some(at_uri) = at_uri.as_ref() {
-
match (at_uri.collection(), at_uri.rkey()) {
-
(None, _) => base_dir
-
.join(at_uri.authority())
-
.map_err(to_shell_err(call.span()))?,
-
(Some(collection), None) => base_dir
-
.join(collection)
-
.map_err(to_shell_err(call.span()))?,
-
// use rkey as file name
-
(Some(_), Some(rkey)) => output_arg
-
.is_some()
-
.then(|| Ok(base_dir.clone()))
-
.unwrap_or_else(|| base_dir.join(&rkey.0).map_err(to_shell_err(call.span())))?,
-
}
-
} else if let Some(uri) = uri.as_ref() {
-
// choose file name from uri
-
output_arg
-
.is_some()
-
.then(|| Ok(base_dir.clone()))
-
.unwrap_or_else(|| {
-
base_dir
-
.join(
-
uri.path()
-
.split('/')
-
.rfind(|a| !a.is_empty())
-
.unwrap_or("index"),
-
)
-
.map_err(to_shell_err(call.span()))
-
})?
-
} else {
-
// todo: make these into an enum so we dont need this
-
unreachable!("either of at_uri or uri should be set")
-
};
-
-
if !final_path.exists().map_err(to_shell_err(call.span()))? {
-
// if http uri or at uri with rkey, we create parent dir since we'll
-
// write just a single file, otherwise we create this path as directory
-
if at_uri.as_ref().map_or(true, |at| at.rkey().is_some()) {
-
final_path
-
.parent()
-
.create_dir_all()
-
.map_err(to_shell_err(call.span()))?;
-
} else {
-
final_path
-
.create_dir_all()
-
.map_err(to_shell_err(call.span()))?;
-
}
-
}
-
-
let (abort_handle, abort_registration) = AbortHandle::new_pair();
-
let task_desc = format!("{name} {uri_arg}", name = self.name());
-
let task_id = register_task(task_desc.clone(), abort_handle);
-
-
spawn_local(async move {
-
let task_future = async {
-
if let Some(at_uri) = at_uri {
-
let identifier = at_uri.authority().clone();
-
match (at_uri.collection(), at_uri.rkey()) {
-
(Some(coll), Some(key)) => {
-
fetch_record(identifier, coll.clone(), key.0.clone(), final_path).await
-
}
-
(Some(coll), None) => {
-
fetch_collection(identifier, coll.clone(), final_path).await
-
}
-
_ => fetch_repo(identifier, final_path).await,
-
}
-
} else if let Some(uri) = uri {
-
fetch_file(uri, final_path).await
-
} else {
-
Ok(())
-
}
-
};
-
-
let abortable = Abortable::new(task_future, abort_registration);
-
-
match abortable.await {
-
Ok(result) => {
-
remove_task(task_id);
-
match result {
-
Ok(_) => {}
-
Err(e) => {
-
print_to_console(
-
&format!("\x1b[31m✖\x1b[0m ({task_desc}) error: {e}"),
-
false,
-
);
-
}
-
}
-
}
-
Err(_) => {
-
remove_task(task_id);
-
}
-
}
-
});
-
-
Ok(Value::nothing(call.head).into_pipeline_data())
-
}
-
}
-
-
async fn fetch_file(uri: Url, target_path: vfs::VfsPath) -> Result<()> {
-
let response = reqwest::get(uri).await?;
-
let content = response.bytes().await?;
-
target_path.create_file()?.write_all(&content)?;
-
Ok(())
-
}
-
-
async fn resolve_did(identifier: AtIdentifier<'_>) -> Result<Did<'_>> {
-
match identifier {
-
AtIdentifier::Did(did) => Ok(did),
-
AtIdentifier::Handle(handle) => {
-
let did = slingshot_resolver_default().resolve_handle(&handle).await?;
-
Ok(did)
-
}
-
}
-
}
-
-
async fn resolve_pds(did: &Did<'_>) -> Result<Url> {
-
slingshot_resolver_default()
-
.resolve_did_doc(did)
-
.await?
-
.parse()?
-
.pds_endpoint()
-
.ok_or_else(|| anyhow!("no pds endpoint in did doc"))
-
}
-
-
async fn create_agent(pds: Url) -> BasicClient {
-
let store = MemorySessionStore::default();
-
let session = CredentialSession::new(Arc::new(store), Arc::new(slingshot_resolver_default()));
-
session.set_endpoint(pds).await;
-
Agent::new(session)
-
}
-
-
async fn fetch_record(
-
identifier: AtIdentifier<'_>,
-
collection: Nsid<'_>,
-
rkey: Rkey<'_>,
-
target_path: vfs::VfsPath,
-
) -> anyhow::Result<()> {
-
let did = resolve_did(identifier).await?;
-
let pds = resolve_pds(&did).await?;
-
let client = create_agent(pds).await;
-
-
let nsid = Nsid::new(&collection)?;
-
-
let request = GetRecord::new()
-
.repo(did)
-
.collection(nsid)
-
.rkey(rkey.clone());
-
-
let output = client.send(request.build()).await?.into_output()?;
-
let file = target_path.create_file()?;
-
serde_json::to_writer_pretty(file, &output.value)?;
-
-
Ok(())
-
}
-
-
async fn fetch_collection(
-
identifier: AtIdentifier<'_>,
-
collection: Nsid<'_>,
-
target_path: vfs::VfsPath,
-
) -> anyhow::Result<()> {
-
let did = resolve_did(identifier).await?;
-
let pds = resolve_pds(&did).await?;
-
let client = create_agent(pds).await;
-
-
let mut cursor: Option<String> = None;
-
-
loop {
-
let request = ListRecords::new()
-
.repo(did.clone())
-
.collection(collection.clone())
-
.limit(100)
-
.cursor(cursor.map(Into::into));
-
-
let response = client.send(request.build()).await?;
-
-
let output = response.into_output()?;
-
-
for rec in output.records {
-
if let Some(rkey) = rec.uri.rkey() {
-
let file = target_path.join(&rkey.0)?.create_file()?;
-
serde_json::to_writer_pretty(file, &rec.value)?;
-
}
-
}
-
-
if let Some(c) = output.cursor {
-
cursor = Some(c.into());
-
} else {
-
break;
-
}
-
}
-
-
Ok(())
-
}
-
-
async fn fetch_repo(identifier: AtIdentifier<'_>, target_path: vfs::VfsPath) -> Result<()> {
-
let did = resolve_did(identifier).await?;
-
let pds = resolve_pds(&did).await?;
-
let client = create_agent(pds).await;
-
-
let response = client.send(GetRepo::new().did(did).build()).await?;
-
-
// parse the car and create the repo
-
let car_bytes = response.into_output()?.body;
-
let parsed = parse_car_bytes(&car_bytes).await?;
-
let storage = Arc::new(MemoryBlockStore::new_from_blocks(parsed.blocks));
-
let repo = Repository::from_commit(storage, &parsed.root).await?;
-
-
// Iterate over all leaves in the MST
-
// repo.mst() gives us the Mst<S>
-
// mst.leaves() returns Vec<(SmolStr, IpldCid)>
-
let leaves = repo.mst().leaves_sequential().await?;
-
-
for (key, cid) in leaves {
-
// key format: collection/rkey
-
let key_str = key.as_str();
-
-
if let Some((collection, rkey)) = key_str.split_once('/') {
-
// Get the record block from storage
-
// The record data is just a CBOR block. We need to convert it to JSON for readability.
-
if let Some(block_bytes) = repo.storage().get(&cid).await? {
-
// Deserialize DAG-CBOR to generic JSON Value
-
let json_val: jacquard::RawData = serde_ipld_dagcbor::from_slice(&block_bytes)
-
.map_err(|e| anyhow!("failed to deserialize record {}: {}", key, e))?;
-
-
let coll_dir = target_path.join(collection)?;
-
if !coll_dir.exists()? {
-
coll_dir.create_dir_all()?;
-
}
-
let file = coll_dir.join(rkey)?.create_file()?;
-
-
serde_json::to_writer_pretty(file, &json_val)?;
-
}
-
}
-
}
-
-
Ok(())
-
}
-39
dysnomia/src/cmd/job.rs
···
-
use nu_engine::{command_prelude::*, get_full_help};
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, ShellError, Signature, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Job;
-
-
// Top-level `job` command that just prints help (like nu stdlib style)
-
impl Command for Job {
-
fn name(&self) -> &str {
-
"job"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("job")
-
.category(Category::System)
-
.input_output_types(vec![(Type::Nothing, Type::String)])
-
}
-
-
fn description(&self) -> &str {
-
"Various commands for working with background jobs."
-
}
-
-
fn extra_description(&self) -> &str {
-
"You must use one of the following subcommands. Using this command as-is will only produce this help message."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
Ok(Value::string(get_full_help(self, engine_state, stack), call.head).into_pipeline_data())
-
}
-
}
-49
dysnomia/src/cmd/job_kill.rs
···
-
use crate::globals::kill_task_by_id;
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, ShellError, Signature, SyntaxShape, Value,
-
engine::{Call, Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct JobKill;
-
-
impl Command for JobKill {
-
fn name(&self) -> &str {
-
"job kill"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("job kill")
-
.required("id", SyntaxShape::Int, "id of job to kill")
-
.category(Category::System)
-
}
-
-
fn description(&self) -> &str {
-
"Kill a background job by ID."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let id: i64 = call.req(engine_state, stack, 0)?;
-
if id < 0 {
-
return Err(ShellError::GenericError {
-
error: "invalid id".to_string(),
-
msg: format!("task id must be non-negative, got {}", id),
-
span: Some(call.head),
-
help: None,
-
inner: vec![],
-
});
-
}
-
-
let killed = kill_task_by_id(id as usize);
-
-
// Return a boolean indicating whether a task was found & killed.
-
Ok(Value::bool(killed, call.head).into_pipeline_data())
-
}
-
}
-43
dysnomia/src/cmd/job_list.rs
···
-
use crate::globals::get_all_tasks;
-
use nu_protocol::{
-
Category, ListStream, PipelineData, Record, ShellError, Signature, Value,
-
engine::{Call, Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct JobList;
-
-
impl Command for JobList {
-
fn name(&self) -> &str {
-
"job list"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("job list").category(Category::System)
-
}
-
-
fn description(&self) -> &str {
-
"List background jobs."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let tasks = get_all_tasks();
-
let span = call.head;
-
let iter = tasks.into_iter().map(move |(id, desc)| {
-
let mut rec = Record::new();
-
rec.push("id", Value::int(id as i64, span));
-
rec.push("description", Value::string(desc, span));
-
Value::record(rec, span)
-
});
-
Ok(PipelineData::list_stream(
-
ListStream::new(iter, span, engine_state.signals().clone()),
-
None,
-
))
-
}
-
}
-139
dysnomia/src/cmd/ls.rs
···
-
use std::{
-
sync::Arc,
-
time::{SystemTime, UNIX_EPOCH},
-
};
-
-
use crate::globals::{get_pwd, to_shell_err};
-
use jacquard::chrono;
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, ListStream, PipelineData, Record, ShellError, Signature, SyntaxShape, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Ls;
-
-
impl Command for Ls {
-
fn name(&self) -> &str {
-
"ls"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("ls")
-
.optional("path", SyntaxShape::String, "the path to list")
-
.switch(
-
"all",
-
"include hidden paths (that start with a dot)",
-
Some('a'),
-
)
-
.switch(
-
"long",
-
"show detailed information about each file",
-
Some('l'),
-
)
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"list the files in the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path_arg: Option<String> = call.opt(engine_state, stack, 0)?;
-
let all = call.has_flag(engine_state, stack, "all")?;
-
let long = call.has_flag(engine_state, stack, "long")?;
-
-
let mut target_dir = get_pwd();
-
if let Some(path) = path_arg {
-
target_dir = Arc::new(
-
target_dir
-
.join(path.trim_end_matches('/'))
-
.map_err(to_shell_err(call.arguments_span()))?,
-
);
-
}
-
-
let span = call.head;
-
let entries = target_dir.read_dir().map_err(to_shell_err(span))?;
-
-
let make_record = move |name: &str, metadata: &vfs::VfsMetadata| {
-
let type_str = match metadata.file_type {
-
vfs::VfsFileType::Directory => "dir",
-
vfs::VfsFileType::File => "file",
-
};
-
-
let mut record = Record::new();
-
record.push("name", Value::string(name, span));
-
record.push("type", Value::string(type_str, span));
-
record.push("size", Value::filesize(metadata.len as i64, span));
-
let mut add_timestamp = |field: &str, timestamp: Option<SystemTime>| {
-
if let Some(dur) = timestamp.and_then(|s| s.duration_since(UNIX_EPOCH).ok()) {
-
record.push(
-
field,
-
Value::date(
-
chrono::DateTime::from_timestamp_nanos(dur.as_nanos() as i64)
-
.fixed_offset(),
-
span,
-
),
-
);
-
} else {
-
record.push(field, Value::nothing(span));
-
}
-
};
-
add_timestamp("modified", metadata.modified);
-
if long {
-
add_timestamp("created", metadata.created);
-
add_timestamp("accessed", metadata.accessed);
-
}
-
Value::record(record, span)
-
};
-
const DIR_METADATA: vfs::VfsMetadata = vfs::VfsMetadata {
-
file_type: vfs::VfsFileType::Directory,
-
len: 0,
-
modified: None,
-
created: None,
-
accessed: None,
-
};
-
-
let dots = if all {
-
vec![
-
make_record(".", &DIR_METADATA),
-
make_record("..", &DIR_METADATA),
-
]
-
} else {
-
Vec::new()
-
};
-
let entries = dots
-
.into_iter()
-
.chain(entries.into_iter().flat_map(move |entry| {
-
let do_map = move || {
-
let name = entry.filename();
-
if name.starts_with('.') && !all {
-
return Ok(None);
-
}
-
let metadata = entry.metadata().map_err(to_shell_err(span))?;
-
-
Ok(Some(make_record(&name, &metadata)))
-
};
-
do_map()
-
.transpose()
-
.map(|res| res.unwrap_or_else(|err| Value::error(err, span)))
-
}));
-
-
let signals = engine_state.signals().clone();
-
Ok(PipelineData::list_stream(
-
ListStream::new(entries, span, signals.clone()),
-
Some(nu_protocol::PipelineMetadata {
-
data_source: nu_protocol::DataSource::Ls,
-
content_type: None,
-
custom: Record::new(),
-
}),
-
))
-
}
-
}
-46
dysnomia/src/cmd/mkdir.rs
···
-
use crate::globals::{get_pwd, to_shell_err};
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Mkdir;
-
-
impl Command for Mkdir {
-
fn name(&self) -> &str {
-
"mkdir"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("mkdir")
-
.required(
-
"path",
-
SyntaxShape::String,
-
"path of the directory(s) to create",
-
)
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"create a directory in the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path: String = call.req(engine_state, stack, 0)?;
-
let new_dir = get_pwd()
-
.join(path.trim_end_matches('/'))
-
.map_err(to_shell_err(call.head))?;
-
new_dir
-
.create_dir_all()
-
.map_err(to_shell_err(call.head))
-
.map(|_| PipelineData::Empty)
-
}
-
}
-31
dysnomia/src/cmd/mod.rs
···
-
pub mod cd;
-
pub mod fetch;
-
pub mod job;
-
pub mod job_kill;
-
pub mod job_list;
-
pub mod ls;
-
pub mod mkdir;
-
pub mod open;
-
pub mod pwd;
-
pub mod random;
-
pub mod rm;
-
pub mod save;
-
pub mod source;
-
pub mod sys;
-
pub mod version;
-
-
pub use cd::Cd;
-
pub use fetch::Fetch;
-
pub use job::Job;
-
pub use job_kill::JobKill;
-
pub use job_list::JobList;
-
pub use ls::Ls;
-
pub use mkdir::Mkdir;
-
pub use open::Open;
-
pub use pwd::Pwd;
-
pub use random::Random;
-
pub use rm::Rm;
-
pub use save::Save;
-
pub use source::Source;
-
pub use sys::Sys;
-
pub use version::Version;
-88
dysnomia/src/cmd/open.rs
···
-
use std::ops::Not;
-
-
use crate::globals::{get_pwd, to_shell_err};
-
use nu_command::{FromCsv, FromJson, FromOds, FromToml, FromTsv, FromXlsx, FromXml, FromYaml};
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
ByteStream, Category, PipelineData, ShellError, Signature, SyntaxShape,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Open;
-
-
impl Command for Open {
-
fn name(&self) -> &str {
-
"open"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("open")
-
.required("path", SyntaxShape::String, "path to the file")
-
.switch(
-
"raw",
-
"output content as raw string/binary without parsing",
-
Some('r'),
-
)
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"open a file from the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path: String = call.req(engine_state, stack, 0)?;
-
let raw_flag = call.has_flag(engine_state, stack, "raw")?;
-
-
let target_file = get_pwd().join(&path).map_err(to_shell_err(call.head))?;
-
-
let parse_cmd = raw_flag
-
.not()
-
.then(|| {
-
target_file
-
.extension()
-
.and_then(|ext| get_cmd_for_ext(&ext))
-
})
-
.flatten();
-
-
target_file
-
.open_file()
-
.map_err(to_shell_err(call.head))
-
.and_then(|f| {
-
let data = PipelineData::ByteStream(
-
ByteStream::read(
-
f,
-
call.head,
-
engine_state.signals().clone(),
-
nu_protocol::ByteStreamType::String,
-
),
-
None,
-
);
-
if let Some(cmd) = parse_cmd {
-
return cmd.run(engine_state, stack, call, data);
-
}
-
Ok(data)
-
})
-
}
-
}
-
-
fn get_cmd_for_ext(ext: &str) -> Option<Box<dyn Command>> {
-
Some(match ext {
-
"json" => Box::new(FromJson),
-
"yaml" | "yml" => Box::new(FromYaml),
-
"toml" => Box::new(FromToml),
-
"csv" => Box::new(FromCsv),
-
"ods" => Box::new(FromOds),
-
"tsv" => Box::new(FromTsv),
-
"xml" => Box::new(FromXml),
-
"xlsx" => Box::new(FromXlsx),
-
_ => return None,
-
})
-
}
-37
dysnomia/src/cmd/pwd.rs
···
-
use crate::globals::get_pwd;
-
use nu_protocol::engine::Call;
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, ShellError, Signature, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Pwd;
-
-
impl Command for Pwd {
-
fn name(&self) -> &str {
-
"pwd"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("pwd").category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"print the current working directory in the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
_engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let mut pwd = get_pwd().as_str().to_string();
-
if pwd.is_empty() {
-
pwd.push('/');
-
}
-
Ok(Value::string(pwd, call.head).into_pipeline_data())
-
}
-
}
-37
dysnomia/src/cmd/random.rs
···
-
use js_sys::Math;
-
use nu_protocol::Type;
-
use nu_protocol::engine::Call;
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, ShellError, Signature, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Random;
-
-
impl Command for Random {
-
fn name(&self) -> &str {
-
"random"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("random")
-
.category(Category::Math)
-
.input_output_type(Type::Nothing, Type::Float)
-
}
-
-
fn description(&self) -> &str {
-
"returns a random float between 0 and 1."
-
}
-
-
fn run(
-
&self,
-
_engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let v: f64 = Math::random();
-
Ok(Value::float(v, call.head).into_pipeline_data())
-
}
-
}
-80
dysnomia/src/cmd/rm.rs
···
-
use crate::globals::{get_pwd, to_shell_err};
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape,
-
engine::{Command, EngineState, Stack},
-
};
-
use vfs::VfsFileType;
-
-
#[derive(Clone)]
-
pub struct Rm;
-
-
impl Command for Rm {
-
fn name(&self) -> &str {
-
"rm"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("rm")
-
.required(
-
"path",
-
SyntaxShape::String,
-
"path to file or directory to remove",
-
)
-
.switch(
-
"recursive",
-
"remove directories and their contents recursively",
-
Some('r'),
-
)
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"remove a file or directory from the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path: String = call.req(engine_state, stack, 0)?;
-
let recursive = call.has_flag(engine_state, stack, "recursive")?;
-
-
// Prevent removing root
-
if path == "/" {
-
return Err(ShellError::GenericError {
-
error: "cannot remove root".to_string(),
-
msg: "refusing to remove root directory".to_string(),
-
span: Some(call.head),
-
help: None,
-
inner: vec![],
-
});
-
}
-
-
// Resolve target relative to PWD (or absolute if path starts with '/')
-
let target = get_pwd()
-
.join(path.trim_end_matches('/'))
-
.map_err(to_shell_err(call.head))?;
-
-
let meta = target.metadata().map_err(to_shell_err(call.head))?;
-
match meta.file_type {
-
VfsFileType::File => {
-
target.remove_file().map_err(to_shell_err(call.head))?;
-
Ok(PipelineData::Empty)
-
}
-
VfsFileType::Directory => {
-
(if recursive {
-
target.remove_dir_all()
-
} else {
-
// non-recursive: attempt to remove directory (will fail if not empty)
-
target.remove_dir()
-
})
-
.map_err(to_shell_err(call.head))
-
.map(|_| PipelineData::Empty)
-
}
-
}
-
}
-
}
-67
dysnomia/src/cmd/save.rs
···
-
use crate::globals::{get_pwd, to_shell_err};
-
use nu_engine::CallExt;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape, Type, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
use vfs::VfsError;
-
-
#[derive(Clone)]
-
pub struct Save;
-
-
impl Command for Save {
-
fn name(&self) -> &str {
-
"save"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("save")
-
.required("path", SyntaxShape::String, "path to write the data to")
-
.input_output_types(vec![(Type::Any, Type::Nothing)])
-
.category(Category::FileSystem)
-
}
-
-
fn description(&self) -> &str {
-
"save content to a file in the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let path: String = call.req(engine_state, stack, 0)?;
-
-
let value = input.into_value(call.head)?;
-
let contents = match value {
-
Value::String { val, .. } => val.into_bytes(),
-
Value::Binary { val, .. } => val,
-
Value::Bool { val, .. } => val.to_string().into_bytes(),
-
Value::Float { val, .. } => val.to_string().into_bytes(),
-
Value::Int { val, .. } => val.to_string().into_bytes(),
-
Value::Date { val, .. } => val.to_string().into_bytes(),
-
_ => {
-
return Err(ShellError::CantConvert {
-
to_type: "string".to_string(),
-
from_type: value.get_type().to_string(),
-
span: value.span(),
-
help: None,
-
});
-
}
-
};
-
-
let target_file = get_pwd().join(&path).map_err(to_shell_err(call.head))?;
-
-
target_file
-
.create_file()
-
.map_err(to_shell_err(call.head))
-
.and_then(|mut f| {
-
f.write_all(&contents)
-
.map_err(VfsError::from)
-
.map_err(to_shell_err(call.head))
-
})
-
.map(|_| PipelineData::Empty)
-
}
-
}
-89
dysnomia/src/cmd/source.rs
···
-
use crate::globals::{get_pwd, queue_delta, to_shell_err};
-
use nu_engine::{CallExt, command_prelude::IoError, eval_block};
-
use nu_parser::parse;
-
use nu_protocol::{
-
Category, PipelineData, ShellError, Signature, SyntaxShape,
-
debugger::WithoutDebug,
-
engine::{Command, EngineState, Stack, StateWorkingSet},
-
};
-
use std::{io::Read, path::PathBuf, str::FromStr};
-
-
#[derive(Clone)]
-
pub struct Source;
-
-
impl Command for Source {
-
fn name(&self) -> &str {
-
"source"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build(self.name())
-
.required("filename", SyntaxShape::String, "the file to source")
-
.category(Category::Core)
-
}
-
-
fn description(&self) -> &str {
-
"source a file from the virtual filesystem."
-
}
-
-
fn run(
-
&self,
-
engine_state: &EngineState,
-
stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let filename: String = call.req(engine_state, stack, 0)?;
-
-
// 1. Read file from VFS
-
let path = get_pwd().join(&filename).map_err(to_shell_err(call.head))?;
-
let mut file = path.open_file().map_err(to_shell_err(call.head))?;
-
let mut contents = String::new();
-
file.read_to_string(&mut contents).map_err(|e| {
-
ShellError::Io(IoError::new(
-
e,
-
call.head,
-
PathBuf::from_str(path.as_str()).unwrap(),
-
))
-
})?;
-
-
// 2. Parse the content
-
// We create a new working set based on the CURRENT engine state.
-
let mut working_set = StateWorkingSet::new(engine_state);
-
-
// We must add the file to the working set so the parser can track spans correctly
-
let _file_id = working_set.add_file(filename.clone(), contents.as_bytes());
-
-
// Parse the block
-
let block = parse(
-
&mut working_set,
-
Some(&filename),
-
contents.as_bytes(),
-
false,
-
);
-
-
if let Some(err) = working_set.parse_errors.first() {
-
return Err(ShellError::GenericError {
-
error: "Parse error".into(),
-
msg: err.to_string(),
-
span: Some(call.head),
-
help: None,
-
inner: vec![],
-
});
-
}
-
-
// 3. Prepare execution context
-
// We clone the engine state to merge the new definitions (delta) locally.
-
// This ensures the script can call its own defined functions immediately.
-
let mut local_state = engine_state.clone();
-
local_state.merge_delta(working_set.delta.clone())?;
-
-
// 4. Queue the delta for the global engine state
-
// This allows definitions to be available in the next command execution cycle (REPL behavior).
-
queue_delta(working_set.delta);
-
-
// 5. Evaluate the block
-
// We pass the MUTABLE stack, so environment variable changes (PWD, load-env) WILL persist.
-
eval_block::<WithoutDebug>(&local_state, stack, &block, input).map(|data| data.body)
-
}
-
}
-182
dysnomia/src/cmd/sys.rs
···
-
use js_sys::Reflect;
-
use js_sys::global;
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, Record, ShellError, Signature, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
use wasm_bindgen::JsValue;
-
-
#[derive(Clone)]
-
pub struct Sys;
-
-
impl Command for Sys {
-
fn name(&self) -> &str {
-
"sys"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build("sys").category(Category::System)
-
}
-
-
fn description(&self) -> &str {
-
"return information about the browser environment (when running in wasm)"
-
}
-
-
fn run(
-
&self,
-
_engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &nu_protocol::engine::Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
let head = call.head;
-
let mut rec = Record::new();
-
-
let g = global();
-
-
// navigator-derived fields
-
if let Ok(nav) = Reflect::get(&g, &JsValue::from_str("navigator")) {
-
if !nav.is_undefined() && !nav.is_null() {
-
let ua = Reflect::get(&nav, &JsValue::from_str("userAgent"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("user_agent", Value::string(ua, head));
-
-
let platform = Reflect::get(&nav, &JsValue::from_str("platform"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("platform", Value::string(platform, head));
-
-
let vendor = Reflect::get(&nav, &JsValue::from_str("vendor"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("vendor", Value::string(vendor, head));
-
-
let product = Reflect::get(&nav, &JsValue::from_str("product"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("product", Value::string(product, head));
-
-
let app_name = Reflect::get(&nav, &JsValue::from_str("appName"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("app_name", Value::string(app_name, head));
-
-
let language = Reflect::get(&nav, &JsValue::from_str("language"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
rec.push("language", Value::string(language, head));
-
-
// booleans now use Value::bool
-
let online = Reflect::get(&nav, &JsValue::from_str("onLine"))
-
.ok()
-
.and_then(|v| v.as_bool())
-
.unwrap_or(false);
-
rec.push("online", Value::bool(online, head));
-
-
let cookie_enabled = Reflect::get(&nav, &JsValue::from_str("cookieEnabled"))
-
.ok()
-
.and_then(|v| v.as_bool())
-
.unwrap_or(false);
-
rec.push("cookie_enabled", Value::bool(cookie_enabled, head));
-
-
// numeric-ish fields
-
let hardware_concurrency =
-
Reflect::get(&nav, &JsValue::from_str("hardwareConcurrency"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
if let Some(hc) = hardware_concurrency {
-
rec.push("hardware_concurrency", Value::int(hc, head));
-
}
-
-
let device_memory = Reflect::get(&nav, &JsValue::from_str("deviceMemory"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
if let Some(dm) = device_memory {
-
rec.push("device_memory_gb", Value::int(dm, head));
-
}
-
-
let max_touch_points = Reflect::get(&nav, &JsValue::from_str("maxTouchPoints"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
if let Some(tp) = max_touch_points {
-
rec.push("max_touch_points", Value::int(tp, head));
-
}
-
-
let dnt = Reflect::get(&nav, &JsValue::from_str("doNotTrack"))
-
.ok()
-
.and_then(|v| v.as_string())
-
.unwrap_or_default();
-
if !dnt.is_empty() {
-
rec.push("do_not_track", Value::string(dnt, head));
-
}
-
}
-
}
-
-
// screen dimensions (if available)
-
if let Ok(screen) = Reflect::get(&g, &JsValue::from_str("screen")) {
-
if !screen.is_undefined() && !screen.is_null() {
-
let width = Reflect::get(&screen, &JsValue::from_str("width"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
let height = Reflect::get(&screen, &JsValue::from_str("height"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
if let Some(w) = width {
-
rec.push("screen_width", Value::int(w, head));
-
}
-
if let Some(h) = height {
-
rec.push("screen_height", Value::int(h, head));
-
}
-
}
-
}
-
-
// performance.memory (optional)
-
if let Ok(perf) = Reflect::get(&g, &JsValue::from_str("performance")) {
-
if !perf.is_undefined() && !perf.is_null() {
-
if let Ok(mem) = Reflect::get(&perf, &JsValue::from_str("memory")) {
-
if !mem.is_undefined() && !mem.is_null() {
-
let used = Reflect::get(&mem, &JsValue::from_str("usedJSHeapSize"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
let limit = Reflect::get(&mem, &JsValue::from_str("jsHeapSizeLimit"))
-
.ok()
-
.and_then(|v| v.as_f64())
-
.map(|f| f as i64);
-
let mut mrec = Record::new();
-
if let Some(u) = used {
-
mrec.push("used_js_heap_size", Value::filesize(u, head));
-
}
-
if let Some(l) = limit {
-
mrec.push("js_heap_size_limit", Value::filesize(l, head));
-
}
-
if !mrec.is_empty() {
-
rec.push("performance_memory", Value::record(mrec, head));
-
}
-
}
-
}
-
}
-
}
-
-
if rec.is_empty() {
-
rec.push(
-
"error",
-
Value::string("not running in a browser environment", head),
-
);
-
}
-
-
Ok(Value::record(rec, head).into_pipeline_data())
-
}
-
}
-32
dysnomia/src/cmd/version.rs
···
-
use nu_protocol::engine::Call;
-
use nu_protocol::{
-
Category, IntoPipelineData, PipelineData, ShellError, Signature, Value,
-
engine::{Command, EngineState, Stack},
-
};
-
-
#[derive(Clone)]
-
pub struct Version;
-
-
impl Command for Version {
-
fn name(&self) -> &str {
-
"version"
-
}
-
-
fn signature(&self) -> Signature {
-
Signature::build(self.name()).category(Category::System)
-
}
-
-
fn description(&self) -> &str {
-
"print the version of dysnomia."
-
}
-
-
fn run(
-
&self,
-
_engine_state: &EngineState,
-
_stack: &mut Stack,
-
call: &Call,
-
_input: PipelineData,
-
) -> Result<PipelineData, ShellError> {
-
Ok(Value::string("dysnomia.v099.t1765660500", call.head).into_pipeline_data())
-
}
-
}
-213
dysnomia/src/completion.rs
···
-
use super::*;
-
-
#[derive(Debug, Serialize)]
-
struct Suggestion {
-
name: String,
-
description: Option<String>,
-
is_command: bool,
-
rendered: String,
-
span_start: usize, // char index (not byte)
-
span_end: usize, // char index (not byte)
-
}
-
-
impl PartialEq for Suggestion {
-
fn eq(&self, other: &Self) -> bool {
-
self.name == other.name
-
}
-
}
-
impl Eq for Suggestion {}
-
impl PartialOrd for Suggestion {
-
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
-
self.name.partial_cmp(&other.name)
-
}
-
}
-
impl Ord for Suggestion {
-
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
-
self.name.cmp(&other.name)
-
}
-
}
-
-
#[wasm_bindgen]
-
pub fn completion(input: &str, js_cursor_pos: usize) -> String {
-
let engine_guard = ENGINE_STATE
-
.get()
-
.unwrap()
-
.lock()
-
.expect("engine state initialized");
-
let root = get_pwd();
-
-
// Map UTF-16 cursor position (from JS) to Byte index (for Rust)
-
let byte_pos = input
-
.char_indices()
-
.map(|(i, _)| i)
-
.nth(js_cursor_pos)
-
.unwrap_or(input.len());
-
-
// 1. Parse & Flatten
-
let mut working_set = StateWorkingSet::new(&engine_guard);
-
// CRITICAL: Capture the start offset so we can normalize spans later
-
let global_offset = working_set.next_span_start();
-
let block = parse(&mut working_set, None, input.as_bytes(), false);
-
let shapes = flatten_block(&working_set, &block);
-
-
// 2. Identify context
-
let mut is_command_pos = false;
-
let mut current_span = Span::new(byte_pos, byte_pos);
-
let mut prefix = "".to_string();
-
let mut found_shape = false;
-
-
// Check if cursor is inside or touching a shape
-
for (span, shape) in &shapes {
-
// Convert global span to local indices
-
let local_start = span.start.saturating_sub(global_offset);
-
let local_end = span.end.saturating_sub(global_offset);
-
let local_span = Span::new(local_start, local_end);
-
-
if local_span.contains(byte_pos) || local_span.end == byte_pos {
-
current_span = local_span;
-
found_shape = true;
-
let safe_end = std::cmp::min(local_span.end, byte_pos);
-
if local_span.start < input.len() {
-
prefix = input[local_span.start..safe_end].to_string();
-
}
-
-
match shape {
-
FlatShape::External(_) | FlatShape::InternalCall(_) | FlatShape::Keyword => {
-
is_command_pos = true;
-
}
-
FlatShape::Garbage => {
-
// Check if it looks like a flag
-
if prefix.starts_with('-') {
-
is_command_pos = false;
-
} else {
-
// Assume command if it's garbage but not a flag (e.g. typing a new command)
-
is_command_pos = true;
-
}
-
}
-
_ => {
-
is_command_pos = false;
-
}
-
}
-
break;
-
}
-
}
-
-
// Fallback to Lexer if in whitespace
-
if !found_shape {
-
let (tokens, _err) = lex(input.as_bytes(), 0, &[], &[], true);
-
let last_token = tokens.iter().filter(|t| t.span.end <= byte_pos).last();
-
-
if let Some(token) = last_token {
-
match token.contents {
-
TokenContents::Pipe
-
| TokenContents::PipePipe
-
| TokenContents::Semicolon
-
| TokenContents::Eol => {
-
is_command_pos = true;
-
}
-
_ => {
-
let text = &input[token.span.start..token.span.end];
-
if text == "{" || text == "(" || text == ";" || text == "&&" || text == "||" {
-
is_command_pos = true;
-
} else {
-
is_command_pos = false;
-
}
-
}
-
}
-
} else {
-
is_command_pos = true; // Start of input
-
}
-
}
-
-
let mut suggestions: Vec<Suggestion> = Vec::new();
-
-
// Convert byte-spans back to char-spans for JS
-
let to_char_span = |start: usize, end: usize| -> (usize, usize) {
-
let char_start = input[..start].chars().count();
-
let char_end = input[..end].chars().count();
-
(char_start, char_end)
-
};
-
-
let (span_start, span_end) = to_char_span(current_span.start, current_span.end);
-
-
let mut add_cmd_suggestion = |name: Vec<u8>, desc: Option<String>| {
-
let name = String::from_utf8_lossy(&name).to_string();
-
suggestions.push(Suggestion {
-
rendered: {
-
let name = ansi_term::Color::Green.bold().paint(&name);
-
let desc = desc.as_deref().unwrap_or("<no description>");
-
format!("{name} {desc}")
-
},
-
name: name.clone(), // Replacement text is just the name
-
description: desc,
-
is_command: true,
-
span_start,
-
span_end,
-
});
-
};
-
-
let working_set = StateWorkingSet::new(&engine_guard);
-
-
if is_command_pos {
-
for (_, name, desc, _) in working_set
-
.find_commands_by_predicate(|value| value.starts_with(prefix.as_bytes()), true)
-
{
-
add_cmd_suggestion(name, desc);
-
}
-
} else {
-
// File completion
-
// Split prefix into directory and file part
-
let (dir, file_prefix) = if let Some(idx) = prefix.rfind('/') {
-
(&prefix[..idx + 1], &prefix[idx + 1..])
-
} else {
-
("", prefix.as_str())
-
};
-
-
// Fix: Clean up the directory path before joining.
-
// VFS often fails if 'join' is called with a trailing slash (e.g. "a/") because it interprets it as "a" + ""
-
let dir_to_join = if dir.len() > 1 && dir.ends_with('/') {
-
&dir[..dir.len() - 1]
-
} else {
-
dir
-
};
-
-
let target_dir = if !dir.is_empty() {
-
match root.join(dir_to_join) {
-
Ok(d) => {
-
if let Ok(true) = d.is_dir() {
-
Some(d)
-
} else {
-
None
-
}
-
}
-
Err(_) => None,
-
}
-
} else {
-
// If prefix is empty, list current directory
-
Some(root.join("").unwrap())
-
};
-
-
if let Some(d) = target_dir {
-
if let Ok(iterator) = d.read_dir() {
-
for entry in iterator {
-
let name = entry.filename();
-
if name.starts_with(file_prefix) {
-
let full_completion = format!("{}{}", dir, name);
-
suggestions.push(Suggestion {
-
name: full_completion.clone(),
-
description: None,
-
is_command: false,
-
rendered: full_completion,
-
span_start,
-
span_end,
-
})
-
}
-
}
-
}
-
}
-
}
-
-
suggestions.sort();
-
-
serde_json::to_string(&suggestions).unwrap_or_else(|_| "[]".to_string())
-
}
-370
dysnomia/src/default_context.rs
···
-
use nu_command::*;
-
use nu_protocol::engine::{EngineState, StateWorkingSet};
-
-
pub fn add_shell_command_context(mut engine_state: EngineState) -> EngineState {
-
let delta = {
-
let mut working_set = StateWorkingSet::new(&engine_state);
-
-
macro_rules! bind_command {
-
( $( $command:expr ),* $(,)? ) => {
-
$( working_set.add_decl(Box::new($command)); )*
-
};
-
}
-
-
// If there are commands that have the same name as default declarations,
-
// they have to be registered before the main declarations. This helps to make
-
// them only accessible if the correct input value category is used with the
-
// declaration
-
-
// Database-related
-
// Adds all related commands to query databases
-
// add_database_decls(&mut working_set);
-
-
// Charts
-
bind_command! {
-
Histogram
-
}
-
-
// Filters
-
bind_command! {
-
All,
-
Any,
-
Append,
-
Chunks,
-
Columns,
-
Compact,
-
Default,
-
Drop,
-
DropColumn,
-
DropNth,
-
Each,
-
Enumerate,
-
Every,
-
Filter,
-
Find,
-
First,
-
Flatten,
-
Get,
-
GroupBy,
-
Headers,
-
Insert,
-
IsEmpty,
-
IsNotEmpty,
-
Interleave,
-
Items,
-
Join,
-
Take,
-
Merge,
-
MergeDeep,
-
Move,
-
TakeWhile,
-
TakeUntil,
-
Last,
-
Length,
-
Lines,
-
ParEach,
-
ChunkBy,
-
Prepend,
-
Reduce,
-
Reject,
-
Rename,
-
Reverse,
-
Select,
-
Skip,
-
SkipUntil,
-
SkipWhile,
-
Slice,
-
Sort,
-
SortBy,
-
SplitList,
-
Tee,
-
Transpose,
-
Uniq,
-
UniqBy,
-
Upsert,
-
Update,
-
Values,
-
Where,
-
Window,
-
Wrap,
-
Zip,
-
};
-
-
// Misc
-
bind_command! {
-
Panic,
-
};
-
-
// Path
-
bind_command! {
-
Path,
-
PathBasename,
-
PathSelf,
-
PathDirname,
-
PathExists,
-
PathExpand,
-
PathJoin,
-
PathParse,
-
PathRelativeTo,
-
PathSplit,
-
PathType,
-
};
-
-
// Help
-
bind_command! {
-
Help,
-
HelpAliases,
-
HelpExterns,
-
HelpCommands,
-
HelpModules,
-
HelpOperators,
-
HelpPipeAndRedirect,
-
HelpEscapes,
-
};
-
-
// Debug
-
bind_command! {
-
Ast,
-
Debug,
-
DebugEnv,
-
DebugExperimentalOptions,
-
DebugInfo,
-
DebugProfile,
-
Explain,
-
Inspect,
-
Metadata,
-
MetadataAccess,
-
MetadataSet,
-
TimeIt,
-
View,
-
ViewBlocks,
-
ViewFiles,
-
ViewIr,
-
ViewSource,
-
ViewSpan,
-
};
-
-
// Strings
-
bind_command! {
-
Ansi,
-
AnsiLink,
-
AnsiStrip,
-
Char,
-
Decode,
-
Encode,
-
DecodeHex,
-
EncodeHex,
-
DecodeBase32,
-
EncodeBase32,
-
DecodeBase32Hex,
-
EncodeBase32Hex,
-
DecodeBase64,
-
EncodeBase64,
-
Detect,
-
DetectColumns,
-
DetectType,
-
Parse,
-
Split,
-
SplitChars,
-
SplitColumn,
-
SplitRow,
-
SplitWords,
-
Str,
-
StrCapitalize,
-
StrContains,
-
StrDistance,
-
StrDowncase,
-
StrEndswith,
-
StrExpand,
-
StrJoin,
-
StrReplace,
-
StrIndexOf,
-
StrLength,
-
StrReverse,
-
StrStats,
-
StrStartsWith,
-
StrSubstring,
-
StrTrim,
-
StrUpcase,
-
Format,
-
FormatDate,
-
FormatDuration,
-
FormatFilesize,
-
};
-
-
// Date
-
bind_command! {
-
Date,
-
DateFromHuman,
-
DateHumanize,
-
DateListTimezones,
-
DateNow,
-
DateToTimezone,
-
};
-
-
// Formats
-
bind_command! {
-
From,
-
FromCsv,
-
FromJson,
-
FromMsgpack,
-
FromMsgpackz,
-
FromNuon,
-
FromOds,
-
FromSsv,
-
FromToml,
-
FromTsv,
-
FromXlsx,
-
FromXml,
-
FromYaml,
-
FromYml,
-
To,
-
ToCsv,
-
ToJson,
-
ToMd,
-
ToMsgpack,
-
ToMsgpackz,
-
ToNuon,
-
ToText,
-
ToToml,
-
ToTsv,
-
Upsert,
-
Where,
-
ToXml,
-
ToYaml,
-
ToYml,
-
};
-
-
// Viewers
-
bind_command! {
-
Griddle,
-
Table,
-
};
-
-
// Conversions
-
bind_command! {
-
Fill,
-
Into,
-
IntoBool,
-
IntoBinary,
-
IntoCellPath,
-
IntoDatetime,
-
IntoDuration,
-
IntoFloat,
-
IntoFilesize,
-
IntoInt,
-
IntoRecord,
-
IntoString,
-
IntoGlob,
-
IntoValue,
-
SplitCellPath,
-
};
-
-
// Env
-
bind_command! {
-
ExportEnv,
-
LoadEnv,
-
SourceEnv,
-
WithEnv,
-
ConfigNu,
-
ConfigEnv,
-
ConfigFlatten,
-
ConfigMeta,
-
ConfigReset,
-
ConfigUseColors,
-
};
-
-
// Math
-
bind_command! {
-
Math,
-
MathAbs,
-
MathAvg,
-
MathCeil,
-
MathFloor,
-
MathMax,
-
MathMedian,
-
MathMin,
-
MathMode,
-
MathProduct,
-
MathRound,
-
MathSqrt,
-
MathStddev,
-
MathSum,
-
MathVariance,
-
MathLog,
-
};
-
-
// Bytes
-
bind_command! {
-
Bytes,
-
BytesLen,
-
BytesSplit,
-
BytesStartsWith,
-
BytesEndsWith,
-
BytesReverse,
-
BytesReplace,
-
BytesAdd,
-
BytesAt,
-
BytesIndexOf,
-
BytesCollect,
-
BytesRemove,
-
BytesBuild
-
}
-
-
bind_command! {
-
Url,
-
UrlBuildQuery,
-
UrlSplitQuery,
-
UrlDecode,
-
UrlEncode,
-
UrlJoin,
-
UrlParse,
-
}
-
-
// Generators
-
bind_command! {
-
Cal,
-
Seq,
-
SeqDate,
-
SeqChar,
-
Generate,
-
};
-
-
// Hash
-
bind_command! {
-
Hash,
-
HashMd5::default(),
-
HashSha256::default(),
-
};
-
-
// Removed
-
bind_command! {
-
LetEnv,
-
DateFormat,
-
};
-
-
// bind_command! {
-
// Stor,
-
// StorCreate,
-
// StorDelete,
-
// StorExport,
-
// StorImport,
-
// StorInsert,
-
// StorOpen,
-
// StorReset,
-
// StorUpdate,
-
// };
-
-
working_set.render()
-
};
-
-
if let Err(err) = engine_state.merge_delta(delta) {
-
eprintln!("Error creating default context: {err:?}");
-
}
-
-
// Cache the table decl id so we don't have to look it up later
-
let table_decl_id = engine_state.find_decl("table".as_bytes(), &[]);
-
engine_state.table_decl_id = table_decl_id;
-
-
engine_state
-
}
-78
dysnomia/src/error.rs
···
-
use miette::{GraphicalReportHandler, Report, SourceCode, SourceSpan, SpanContents};
-
-
pub struct CommandError {
-
pub error: Report,
-
pub start_offset: usize,
-
}
-
-
pub struct OffsetSource {
-
pub source: String,
-
pub start_offset: usize,
-
}
-
-
pub struct OffsetSpanContents<'a> {
-
inner: Box<dyn SpanContents<'a> + 'a>,
-
global_span: SourceSpan,
-
}
-
-
impl<'a> SpanContents<'a> for OffsetSpanContents<'a> {
-
fn data(&self) -> &'a [u8] {
-
self.inner.data()
-
}
-
fn span(&self) -> &SourceSpan {
-
&self.global_span
-
}
-
fn line(&self) -> usize {
-
self.inner.line()
-
}
-
fn column(&self) -> usize {
-
self.inner.column()
-
}
-
fn line_count(&self) -> usize {
-
self.inner.line_count()
-
}
-
}
-
-
impl SourceCode for OffsetSource {
-
fn read_span<'b>(
-
&'b self,
-
span: &SourceSpan,
-
context_lines_before: usize,
-
context_lines_after: usize,
-
) -> Result<Box<dyn miette::SpanContents<'b> + 'b>, miette::MietteError> {
-
let local_start = span.offset().saturating_sub(self.start_offset);
-
let local_len = std::cmp::min(span.len(), self.source.len().saturating_sub(local_start));
-
let local_span = SourceSpan::new(local_start.into(), local_len);
-
-
let local_contents =
-
self.source
-
.read_span(&local_span, context_lines_before, context_lines_after)?;
-
-
let content_local_span = local_contents.span();
-
let global_start = content_local_span.offset() + self.start_offset;
-
let global_span = SourceSpan::new(global_start.into(), content_local_span.len());
-
-
Ok(Box::new(OffsetSpanContents {
-
inner: local_contents,
-
global_span,
-
}))
-
}
-
}
-
-
pub fn format_error(error: Report, input: String, start_offset: usize) -> String {
-
let handler = GraphicalReportHandler::new()
-
.with_theme(miette::GraphicalTheme::unicode())
-
.with_cause_chain();
-
-
let source = OffsetSource {
-
source: input,
-
start_offset,
-
};
-
-
let report_with_source = error.with_source_code(source);
-
let mut output = String::new();
-
handler
-
.render_report(&mut output, report_with_source.as_ref())
-
.unwrap();
-
output
-
}
-189
dysnomia/src/globals.rs
···
-
use futures::stream::AbortHandle;
-
use nu_protocol::{
-
ShellError, Span,
-
engine::{EngineState, StateDelta},
-
};
-
use std::{
-
collections::HashMap,
-
sync::{
-
Arc, Mutex, OnceLock, RwLock,
-
atomic::{AtomicUsize, Ordering},
-
},
-
time::{Duration, SystemTime, UNIX_EPOCH},
-
};
-
use vfs::{VfsError, VfsPath, error::VfsErrorKind};
-
use wasm_bindgen::prelude::*;
-
-
use crate::memory_fs::MemoryFS;
-
-
static ROOT: OnceLock<Arc<VfsPath>> = OnceLock::new();
-
-
pub fn get_vfs() -> Arc<VfsPath> {
-
ROOT.get_or_init(|| Arc::new(VfsPath::new(MemoryFS::new())))
-
.clone()
-
}
-
-
static PWD: OnceLock<RwLock<Arc<VfsPath>>> = OnceLock::new();
-
-
pub fn get_pwd() -> Arc<VfsPath> {
-
PWD.get_or_init(|| RwLock::new(get_vfs()))
-
.read()
-
.unwrap()
-
.clone()
-
}
-
-
pub fn set_pwd(path: Arc<VfsPath>) {
-
*PWD.get_or_init(|| RwLock::new(get_vfs())).write().unwrap() = path;
-
}
-
-
pub fn to_shell_err(span: Span) -> impl Fn(VfsError) -> ShellError {
-
move |vfs_error: VfsError| ShellError::GenericError {
-
error: (match vfs_error.kind() {
-
VfsErrorKind::DirectoryExists
-
| VfsErrorKind::FileExists
-
| VfsErrorKind::FileNotFound
-
| VfsErrorKind::InvalidPath => "path error",
-
_ => "io error",
-
})
-
.to_string(),
-
msg: vfs_error.to_string(),
-
span: Some(span),
-
help: None,
-
inner: vec![],
-
}
-
}
-
-
pub struct TaskInfo {
-
pub id: usize,
-
pub description: String,
-
pub handle: AbortHandle,
-
}
-
-
pub struct CallbackWrapper(js_sys::Function);
-
unsafe impl Send for CallbackWrapper {}
-
unsafe impl Sync for CallbackWrapper {}
-
-
static NEXT_TASK_ID: AtomicUsize = AtomicUsize::new(1);
-
static TASK_REGISTRY: OnceLock<Mutex<HashMap<usize, TaskInfo>>> = OnceLock::new();
-
static TASK_CALLBACK: OnceLock<Mutex<Option<CallbackWrapper>>> = OnceLock::new();
-
-
pub fn get_registry() -> &'static Mutex<HashMap<usize, TaskInfo>> {
-
TASK_REGISTRY.get_or_init(|| Mutex::new(HashMap::new()))
-
}
-
-
#[wasm_bindgen]
-
pub fn register_task_count_callback(f: js_sys::Function) {
-
let _ = TASK_CALLBACK.get_or_init(|| Mutex::new(None));
-
if let Ok(mut guard) = TASK_CALLBACK.get().unwrap().lock() {
-
*guard = Some(CallbackWrapper(f));
-
}
-
}
-
-
pub fn notify_task_count() {
-
if let Some(mutex) = TASK_CALLBACK.get() {
-
if let Ok(guard) = mutex.lock() {
-
if let Some(cb) = guard.as_ref() {
-
let count = if let Ok(reg) = get_registry().lock() {
-
reg.len()
-
} else {
-
0
-
};
-
let this = JsValue::NULL;
-
let arg = JsValue::from(count as u32);
-
let _ = cb.0.call1(&this, &arg);
-
}
-
}
-
}
-
}
-
-
pub fn register_task(description: String, handle: AbortHandle) -> usize {
-
let id = NEXT_TASK_ID.fetch_add(1, Ordering::Relaxed);
-
if let Ok(mut reg) = get_registry().lock() {
-
reg.insert(
-
id,
-
TaskInfo {
-
id,
-
description,
-
handle,
-
},
-
);
-
}
-
notify_task_count();
-
id
-
}
-
-
pub fn remove_task(id: usize) {
-
if let Ok(mut reg) = get_registry().lock() {
-
reg.remove(&id);
-
}
-
notify_task_count();
-
}
-
-
pub fn get_all_tasks() -> Vec<(usize, String)> {
-
if let Ok(reg) = get_registry().lock() {
-
reg.values()
-
.map(|t| (t.id, t.description.clone()))
-
.collect()
-
} else {
-
vec![]
-
}
-
}
-
-
pub fn kill_task_by_id(id: usize) -> bool {
-
if let Ok(mut reg) = get_registry().lock() {
-
if let Some(task) = reg.remove(&id) {
-
task.handle.abort();
-
drop(reg);
-
notify_task_count();
-
return true;
-
}
-
}
-
false
-
}
-
-
static PENDING_DELTAS: OnceLock<Mutex<Vec<StateDelta>>> = OnceLock::new();
-
-
pub fn queue_delta(delta: StateDelta) {
-
let _ = PENDING_DELTAS.get_or_init(|| Mutex::new(Vec::new()));
-
if let Ok(mut guard) = PENDING_DELTAS.get().unwrap().lock() {
-
guard.push(delta);
-
}
-
}
-
-
pub fn apply_pending_deltas(engine_state: &mut EngineState) -> Result<(), ShellError> {
-
if let Some(mutex) = PENDING_DELTAS.get() {
-
if let Ok(mut guard) = mutex.lock() {
-
for delta in guard.drain(..) {
-
engine_state.merge_delta(delta)?;
-
}
-
}
-
}
-
Ok(())
-
}
-
-
pub static CONSOLE_CALLBACK: OnceLock<Mutex<Option<CallbackWrapper>>> = OnceLock::new();
-
-
#[wasm_bindgen]
-
pub fn register_console_callback(f: js_sys::Function) {
-
let _ = CONSOLE_CALLBACK.get_or_init(|| Mutex::new(None));
-
if let Ok(mut guard) = CONSOLE_CALLBACK.get().unwrap().lock() {
-
*guard = Some(CallbackWrapper(f));
-
}
-
}
-
-
pub fn print_to_console(msg: &str, is_cmd: bool) {
-
if let Some(mutex) = CONSOLE_CALLBACK.get() {
-
if let Ok(guard) = mutex.lock() {
-
if let Some(cb) = guard.as_ref() {
-
let this = JsValue::NULL;
-
let arg = JsValue::from_str(msg);
-
let arg2 = JsValue::from_bool(is_cmd);
-
let _ = cb.0.call2(&this, &arg, &arg2);
-
}
-
}
-
}
-
}
-
-
pub fn current_time() -> Option<SystemTime> {
-
UNIX_EPOCH.checked_add(Duration::from_millis(js_sys::Date::now() as u64))
-
}
-72
dysnomia/src/highlight.rs
···
-
use super::*;
-
-
#[wasm_bindgen]
-
pub fn highlight(input: &str) -> String {
-
let engine_guard = ENGINE_STATE
-
.get()
-
.unwrap()
-
.lock()
-
.expect("engine state initialized");
-
let mut working_set = StateWorkingSet::new(&engine_guard);
-
-
// Capture the global offset before parsing, as parse will generate spans relative to this
-
let global_offset = working_set.next_span_start();
-
-
// Parse the input block using Nushell's full parser
-
let block = parse(&mut working_set, None, input.as_bytes(), false);
-
-
// Flatten the block to get shapes (semantic tokens)
-
let shapes = flatten_block(&working_set, &block);
-
-
let mut output = String::new();
-
let mut last_end = 0;
-
-
for (span, shape) in shapes {
-
// Adjust global span to local byte indices
-
let local_start = span.start.saturating_sub(global_offset);
-
let local_end = span.end.saturating_sub(global_offset);
-
-
if local_start >= input.len() {
-
continue;
-
}
-
let safe_end = std::cmp::min(local_end, input.len());
-
-
if local_start > last_end {
-
output.push_str(&input[last_end..local_start]);
-
}
-
-
let start_index = std::cmp::max(local_start, last_end);
-
if start_index >= safe_end {
-
continue;
-
}
-
-
// Colors corresponding to standard Nushell/Ansi map
-
let color = match shape {
-
FlatShape::Pipe | FlatShape::Redirection => "\x1b[35m", // Magenta
-
FlatShape::Bool | FlatShape::Int | FlatShape::Float => "\x1b[35;1m", // Light Magenta (Numbers/Bool)
-
FlatShape::External(_) | FlatShape::InternalCall(_) | FlatShape::Keyword => {
-
"\x1b[32;1m"
-
} // Green Bold
-
FlatShape::String | FlatShape::StringInterpolation | FlatShape::RawString => "\x1b[36m", // Cyan
-
FlatShape::Variable(_) | FlatShape::Flag => "\x1b[34m", // Blue
-
FlatShape::Garbage => "\x1b[31;1m\x1b[47m", // Red on White
-
FlatShape::Signature => "\x1b[33;1m", // Yellow Bold
-
// Closures, blocks, punctuation often fall here
-
FlatShape::Block => "\x1b[37m", // White
-
FlatShape::Closure => "\x1b[36;1m", // Light Cyan
-
_ => "\x1b[0m",
-
};
-
-
output.push_str(color);
-
output.push_str(&input[start_index..safe_end]);
-
output.push_str("\x1b[0m");
-
-
last_end = safe_end;
-
}
-
-
if last_end < input.len() {
-
output.push_str(&input[last_end..]);
-
}
-
-
output
-
}
-249
dysnomia/src/lib.rs
···
-
use jacquard::chrono;
-
use miette::Report;
-
use nu_cmd_extra::add_extra_command_context;
-
use nu_cmd_lang::create_default_context;
-
use nu_engine::{command_prelude::*, eval_block};
-
use nu_parser::{FlatShape, TokenContents, flatten_block, lex, parse};
-
use nu_protocol::{
-
Config, PipelineData, Span,
-
engine::{Call, EngineState, Stack, StateWorkingSet},
-
};
-
use serde::Serialize;
-
use std::{
-
sync::{Arc, Mutex, OnceLock},
-
time::UNIX_EPOCH,
-
};
-
use vfs::VfsError;
-
use wasm_bindgen::prelude::*;
-
-
pub mod cmd;
-
pub mod completion;
-
pub mod default_context;
-
pub mod error;
-
pub mod globals;
-
pub mod highlight;
-
pub mod memory_fs;
-
-
use crate::{
-
cmd::{
-
Cd, Fetch, Job, JobKill, JobList, Ls, Mkdir, Open, Pwd, Random, Rm, Save, Source, Sys,
-
Version,
-
},
-
default_context::add_shell_command_context,
-
error::format_error,
-
globals::{apply_pending_deltas, current_time, get_pwd, print_to_console},
-
};
-
use error::CommandError;
-
use globals::get_vfs;
-
-
static ENGINE_STATE: OnceLock<Mutex<EngineState>> = OnceLock::new();
-
static STACK: OnceLock<Mutex<Stack>> = OnceLock::new();
-
-
fn init_engine_internal() -> Result<(), Report> {
-
let mut engine_state = create_default_context();
-
engine_state = add_shell_command_context(engine_state);
-
engine_state = add_extra_command_context(engine_state);
-
-
let write_file = |name: &str, contents: &str| {
-
get_vfs()
-
.join(name)
-
.and_then(|p| p.create_file())
-
.and_then(|mut f| f.write_all(contents.as_bytes()).map_err(VfsError::from))
-
.map_err(|e| miette::miette!(e.to_string()))
-
};
-
-
let access_log = format!(
-
r#"/dysnomia.v000 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]//
-
/dysnomia.v002 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]//
-
/dysnomia.v011 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]//
-
[...ENTRIES TRUNCATED...]
-
/dysnomia.v099 /user: anonymous/ /ip: [REDACTED]/ /time: {time}//"#,
-
time = current_time()
-
.and_then(|t| t.duration_since(UNIX_EPOCH).ok())
-
.map_or_else(
-
|| "unknown".to_string(),
-
|time| chrono::DateTime::from_timestamp_nanos(time.as_nanos() as i64)
-
.format("%Y-%m-%dT%H:%M:%SZ")
-
.to_string()
-
)
-
);
-
write_file(".access.log", &access_log)?;
-
-
let welcome_txt = r#"welcome anonymous !
-
-
-
you are interfacing with dysnomia.v099
-
using the nu shell.
-
-
-
a few commands you can try:
-
-
"hello, user!" | save message.txt
-
fetch at://ptr.pet
-
ls --help"#;
-
write_file("welcome.txt", &welcome_txt)?;
-
-
let mut working_set = StateWorkingSet::new(&engine_state);
-
let decls: [Box<dyn Command>; 15] = [
-
Box::new(Ls),
-
Box::new(Open),
-
Box::new(Save),
-
Box::new(Mkdir),
-
Box::new(Pwd),
-
Box::new(Cd),
-
Box::new(Rm),
-
Box::new(Fetch),
-
Box::new(Source),
-
Box::new(Job),
-
Box::new(JobList),
-
Box::new(JobKill),
-
Box::new(Sys),
-
Box::new(Random),
-
Box::new(Version),
-
];
-
for decl in decls {
-
working_set.add_decl(decl);
-
}
-
engine_state.merge_delta(working_set.delta)?;
-
-
let mut config = Config::default();
-
config.use_ansi_coloring = true.into();
-
config.show_banner = nu_protocol::BannerKind::Full;
-
engine_state.config = Arc::new(config);
-
-
ENGINE_STATE
-
.set(Mutex::new(engine_state))
-
.map_err(|_| miette::miette!("ENGINE_STATE was already set!?"))?;
-
STACK
-
.set(Mutex::new(Stack::new()))
-
.map_err(|_| miette::miette!("STACK was already set!?"))?;
-
-
// web_sys::console::log_1(&"Hello, World!".into());
-
-
Ok(())
-
}
-
-
#[wasm_bindgen]
-
pub fn init_engine() -> String {
-
console_error_panic_hook::set_once();
-
init_engine_internal().map_or_else(|err| format!("error: {err}"), |_| String::new())
-
}
-
-
fn run_command_internal(
-
engine_state: &mut EngineState,
-
stack: &mut Stack,
-
input: &str,
-
) -> Result<(), CommandError> {
-
// apply any pending deltas from previous commands (like `source`)
-
apply_pending_deltas(engine_state).map_err(|e| CommandError {
-
error: Report::new(e),
-
start_offset: 0,
-
})?;
-
// set PWD
-
engine_state.add_env_var(
-
"PWD".to_string(),
-
get_pwd_string().into_value(Span::unknown()),
-
);
-
-
let mut working_set = StateWorkingSet::new(engine_state);
-
-
// Capture the start offset *before* adding the file, as this is the global offset
-
// where our file begins.
-
let start_offset = working_set.next_span_start();
-
let block = parse(&mut working_set, Some("entry"), input.as_bytes(), false);
-
-
let cmd_err = |err: ShellError| CommandError {
-
error: Report::new(err),
-
start_offset,
-
};
-
-
if let Some(err) = working_set.parse_errors.into_iter().next() {
-
return Err(CommandError {
-
error: Report::new(err),
-
start_offset,
-
});
-
}
-
if let Some(err) = working_set.compile_errors.into_iter().next() {
-
return Err(CommandError {
-
error: Report::new(err),
-
start_offset,
-
});
-
}
-
-
engine_state
-
.merge_delta(working_set.delta)
-
.map_err(cmd_err)?;
-
let result = eval_block::<nu_protocol::debugger::WithoutDebug>(
-
engine_state,
-
stack,
-
&block,
-
PipelineData::Empty,
-
);
-
-
let pipeline_data = result.map_err(cmd_err)?;
-
let table_command = nu_command::Table;
-
let call = Call::new(pipeline_data.span().unwrap_or_else(Span::unknown));
-
-
let res = table_command
-
.run(engine_state, stack, &call, pipeline_data.body)
-
.map_err(cmd_err)?;
-
-
match res {
-
PipelineData::Empty => {}
-
PipelineData::Value(v, _) => {
-
print_to_console(&v.to_expanded_string("\n", &engine_state.config), true)
-
}
-
PipelineData::ByteStream(s, _) => {
-
for line in s.lines().into_iter().flatten() {
-
let out = line.map_err(|e| CommandError {
-
error: Report::new(e),
-
start_offset,
-
})?;
-
print_to_console(&out, true);
-
}
-
}
-
PipelineData::ListStream(s, _) => {
-
for item in s.into_iter() {
-
let out = item.to_expanded_string("\n", &engine_state.config);
-
print_to_console(&out, true);
-
}
-
}
-
}
-
-
Ok(())
-
}
-
-
#[wasm_bindgen]
-
pub fn run_command(input: &str) -> Option<String> {
-
let (mut engine_guard, mut stack_guard) = (
-
ENGINE_STATE
-
.get()
-
.unwrap()
-
.lock()
-
.expect("engine state initialized"),
-
STACK.get().unwrap().lock().expect("stack initialized"),
-
);
-
-
let result = std::panic::catch_unwind(move || {
-
match run_command_internal(&mut engine_guard, &mut stack_guard, input) {
-
Ok(_) => None,
-
Err(cmd_err) => Some(format_error(
-
cmd_err.error,
-
input.to_owned(),
-
cmd_err.start_offset,
-
)),
-
}
-
});
-
result.unwrap_or_else(|err| Some(format!("panicked: {err:?}")))
-
}
-
-
#[wasm_bindgen]
-
pub fn get_pwd_string() -> String {
-
// web_sys::console::log_1(&"before pwd".into());
-
let pwd = get_pwd();
-
// web_sys::console::log_1(&"after pwd".into());
-
if pwd.is_root() {
-
return "/".to_string();
-
}
-
pwd.as_str().to_string()
-
}
-390
dysnomia/src/memory_fs.rs
···
-
//! An ephemeral in-memory file system, intended mainly for unit tests
-
-
use core::cmp;
-
use std::fmt;
-
use std::fmt::{Debug, Formatter};
-
use std::io::{Cursor, Read, Seek, SeekFrom, Write};
-
use std::mem::swap;
-
use std::sync::Arc;
-
use std::time::SystemTime;
-
use vfs::error::VfsErrorKind;
-
use vfs::{FileSystem, VfsFileType};
-
use vfs::{SeekAndRead, VfsMetadata};
-
use vfs::{SeekAndWrite, VfsResult};
-
-
use crate::globals::current_time;
-
-
type MemoryFsHandle = Arc<MemoryFsImpl>;
-
-
/// An ephemeral in-memory file system, intended mainly for unit tests
-
pub struct MemoryFS {
-
handle: MemoryFsHandle,
-
}
-
-
impl Debug for MemoryFS {
-
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-
f.write_str("In Memory File System")
-
}
-
}
-
-
impl MemoryFS {
-
/// Create a new in-memory filesystem
-
pub fn new() -> Self {
-
MemoryFS {
-
handle: Arc::new(MemoryFsImpl::new()),
-
}
-
}
-
-
fn ensure_has_parent(&self, path: &str) -> VfsResult<()> {
-
let separator = path.rfind('/');
-
if let Some(index) = separator {
-
if self.exists(&path[..index])? {
-
return Ok(());
-
}
-
}
-
Err(VfsErrorKind::Other("Parent path does not exist".into()).into())
-
}
-
}
-
-
impl Default for MemoryFS {
-
fn default() -> Self {
-
Self::new()
-
}
-
}
-
-
struct WritableFile {
-
content: Cursor<Vec<u8>>,
-
destination: String,
-
fs: MemoryFsHandle,
-
}
-
-
impl Seek for WritableFile {
-
fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> {
-
self.content.seek(pos)
-
}
-
}
-
-
impl Write for WritableFile {
-
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
-
self.content.write(buf)
-
}
-
-
fn flush(&mut self) -> std::io::Result<()> {
-
self.content.flush()?;
-
let mut content = self.content.get_ref().clone();
-
swap(&mut content, self.content.get_mut());
-
let content = Arc::new(content);
-
-
let new_file = self
-
.fs
-
.files
-
.peek_with(&self.destination, |_, previous_file| MemoryFile {
-
file_type: VfsFileType::File,
-
content: content.clone(),
-
created: previous_file.created,
-
modified: current_time(),
-
accessed: previous_file.accessed,
-
})
-
.unwrap_or_else(|| {
-
let time = current_time();
-
MemoryFile {
-
file_type: VfsFileType::File,
-
content,
-
created: time,
-
modified: time,
-
accessed: None,
-
}
-
});
-
-
// Remove old entry if it exists, then insert new one
-
self.fs.files.remove_sync(&self.destination);
-
let _ = self
-
.fs
-
.files
-
.insert_sync(self.destination.clone(), new_file);
-
Ok(())
-
}
-
}
-
-
impl Drop for WritableFile {
-
fn drop(&mut self) {
-
self.flush()
-
.expect("Flush failed while dropping in-memory file");
-
}
-
}
-
-
struct ReadableFile {
-
#[allow(clippy::rc_buffer)] // to allow accessing the same object as writable
-
content: Arc<Vec<u8>>,
-
position: u64,
-
}
-
-
impl ReadableFile {
-
fn len(&self) -> u64 {
-
self.content.len() as u64 - self.position
-
}
-
}
-
-
impl Read for ReadableFile {
-
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
-
let amt = cmp::min(buf.len(), self.len() as usize);
-
-
if amt == 1 {
-
buf[0] = self.content[self.position as usize];
-
} else {
-
buf[..amt].copy_from_slice(
-
&self.content.as_slice()[self.position as usize..self.position as usize + amt],
-
);
-
}
-
self.position += amt as u64;
-
Ok(amt)
-
}
-
}
-
-
impl Seek for ReadableFile {
-
fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> {
-
match pos {
-
SeekFrom::Start(offset) => self.position = offset,
-
SeekFrom::Current(offset) => self.position = (self.position as i64 + offset) as u64,
-
SeekFrom::End(offset) => self.position = (self.content.len() as i64 + offset) as u64,
-
}
-
Ok(self.position)
-
}
-
}
-
-
impl FileSystem for MemoryFS {
-
fn read_dir(&self, path: &str) -> VfsResult<Box<dyn Iterator<Item = String> + Send>> {
-
let prefix = format!("{}/", path);
-
-
// Ensure the directory exists
-
if !self.handle.files.contains(path) {
-
return Err(VfsErrorKind::FileNotFound.into());
-
}
-
-
let guard = scc::Guard::new();
-
let mut entries = Vec::new();
-
-
let range_start = prefix.clone();
-
for (candidate_path, _) in self.handle.files.range(range_start.., &guard) {
-
if candidate_path.starts_with(&prefix) {
-
let rest = &candidate_path[prefix.len()..];
-
if !rest.contains('/') {
-
entries.push(rest.to_string());
-
}
-
} else {
-
// we are in a different directory if the prefix doesnt match
-
break;
-
}
-
}
-
-
Ok(Box::new(entries.into_iter()))
-
}
-
-
fn create_dir(&self, path: &str) -> VfsResult<()> {
-
self.ensure_has_parent(path)?;
-
-
// Check if path already exists and return appropriate error
-
if let Some(result) = self
-
.handle
-
.files
-
.peek_with(path, |_, file| match file.file_type {
-
VfsFileType::File => Err(VfsErrorKind::FileExists.into()),
-
VfsFileType::Directory => Err(VfsErrorKind::DirectoryExists.into()),
-
})
-
{
-
return result;
-
}
-
-
let new_dir = MemoryFile {
-
file_type: VfsFileType::Directory,
-
content: Default::default(),
-
created: current_time(),
-
modified: current_time(),
-
accessed: current_time(),
-
};
-
-
self.handle
-
.files
-
.insert_sync(path.to_string(), new_dir)
-
.map_err(|_| VfsErrorKind::DirectoryExists.into())
-
}
-
-
fn open_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndRead + Send>> {
-
if let Some(time) = current_time() {
-
let _ = self.set_access_time(path, time);
-
}
-
-
let content = self
-
.handle
-
.files
-
.peek_with(path, |_, file| {
-
ensure_file(file)?;
-
VfsResult::Ok(file.content.clone())
-
})
-
.ok_or(VfsErrorKind::FileNotFound)??;
-
-
Ok(Box::new(ReadableFile {
-
content,
-
position: 0,
-
}))
-
}
-
-
fn create_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndWrite + Send>> {
-
self.ensure_has_parent(path)?;
-
let content = Arc::new(Vec::<u8>::new());
-
let new_file = MemoryFile {
-
file_type: VfsFileType::File,
-
content,
-
created: current_time(),
-
modified: current_time(),
-
accessed: current_time(),
-
};
-
-
// Remove old entry if it exists, then insert new one
-
self.handle.files.remove_sync(path);
-
let _ = self.handle.files.insert_sync(path.to_string(), new_file);
-
-
let writer = WritableFile {
-
content: Cursor::new(vec![]),
-
destination: path.to_string(),
-
fs: self.handle.clone(),
-
};
-
Ok(Box::new(writer))
-
}
-
-
fn append_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndWrite + Send>> {
-
let content = self
-
.handle
-
.files
-
.peek_with(path, |_, file| file.content.clone())
-
.ok_or(VfsErrorKind::FileNotFound)?;
-
let mut content = Cursor::new(content.as_slice().to_vec());
-
content.seek(SeekFrom::End(0))?;
-
let writer = WritableFile {
-
content,
-
destination: path.to_string(),
-
fs: self.handle.clone(),
-
};
-
Ok(Box::new(writer))
-
}
-
-
fn metadata(&self, path: &str) -> VfsResult<VfsMetadata> {
-
self.handle
-
.files
-
.peek_with(path, |_, file| VfsMetadata {
-
file_type: file.file_type,
-
len: file.content.len() as u64,
-
modified: file.modified,
-
created: file.created,
-
accessed: file.accessed,
-
})
-
.ok_or(VfsErrorKind::FileNotFound.into())
-
}
-
-
fn set_creation_time(&self, path: &str, time: SystemTime) -> VfsResult<()> {
-
let updated = self
-
.handle
-
.files
-
.peek_with(path, |_, file| MemoryFile {
-
created: Some(time),
-
..file.clone()
-
})
-
.ok_or(VfsErrorKind::FileNotFound)?;
-
-
self.handle.files.remove_sync(path);
-
let _ = self.handle.files.insert_sync(path.to_string(), updated);
-
Ok(())
-
}
-
-
fn set_modification_time(&self, path: &str, time: SystemTime) -> VfsResult<()> {
-
let updated = self
-
.handle
-
.files
-
.peek_with(path, |_, file| MemoryFile {
-
modified: Some(time),
-
..file.clone()
-
})
-
.ok_or(VfsErrorKind::FileNotFound)?;
-
-
self.handle.files.remove_sync(path);
-
let _ = self.handle.files.insert_sync(path.to_string(), updated);
-
Ok(())
-
}
-
-
fn set_access_time(&self, path: &str, time: SystemTime) -> VfsResult<()> {
-
let updated = self
-
.handle
-
.files
-
.peek_with(path, |_, file| MemoryFile {
-
accessed: Some(time),
-
..file.clone()
-
})
-
.ok_or(VfsErrorKind::FileNotFound)?;
-
-
self.handle.files.remove_sync(path);
-
let _ = self.handle.files.insert_sync(path.to_string(), updated);
-
Ok(())
-
}
-
-
fn exists(&self, path: &str) -> VfsResult<bool> {
-
Ok(self.handle.files.contains(path))
-
}
-
-
fn remove_file(&self, path: &str) -> VfsResult<()> {
-
self.handle
-
.files
-
.remove_sync(path)
-
.then_some(Ok(()))
-
.unwrap_or_else(|| Err(VfsErrorKind::FileNotFound.into()))
-
}
-
-
fn remove_dir(&self, path: &str) -> VfsResult<()> {
-
if self.read_dir(path)?.next().is_some() {
-
return Err(VfsErrorKind::Other("Directory to remove is not empty".into()).into());
-
}
-
self.handle
-
.files
-
.remove_sync(path)
-
.then_some(Ok(()))
-
.unwrap_or_else(|| Err(VfsErrorKind::FileNotFound.into()))
-
}
-
}
-
-
struct MemoryFsImpl {
-
files: scc::TreeIndex<String, MemoryFile>,
-
}
-
-
impl MemoryFsImpl {
-
pub fn new() -> Self {
-
let files = scc::TreeIndex::new();
-
// Add root directory
-
let _ = files.insert_sync(
-
"".to_string(),
-
MemoryFile {
-
file_type: VfsFileType::Directory,
-
content: Arc::new(vec![]),
-
created: current_time(),
-
modified: None,
-
accessed: None,
-
},
-
);
-
Self { files }
-
}
-
}
-
-
#[derive(Clone)]
-
struct MemoryFile {
-
file_type: VfsFileType,
-
content: Arc<Vec<u8>>,
-
-
created: Option<SystemTime>,
-
modified: Option<SystemTime>,
-
accessed: Option<SystemTime>,
-
}
-
-
fn ensure_file(file: &MemoryFile) -> VfsResult<()> {
-
if file.file_type != VfsFileType::File {
-
return Err(VfsErrorKind::Other("Not a file".into()).into());
-
}
-
Ok(())
-
}
-24
dysnomia/www/.gitignore
···
-
# Logs
-
logs
-
*.log
-
npm-debug.log*
-
yarn-debug.log*
-
yarn-error.log*
-
pnpm-debug.log*
-
lerna-debug.log*
-
-
node_modules
-
dist
-
dist-ssr
-
*.local
-
-
# Editor directories and files
-
.vscode/*
-
!.vscode/extensions.json
-
.idea
-
.DS_Store
-
*.suo
-
*.ntvs*
-
*.njsproj
-
*.sln
-
*.sw?
-13
dysnomia/www/index.html
···
-
<!doctype html>
-
<html lang="en">
-
<head>
-
<meta charset="UTF-8" />
-
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-
<title>dysnomia</title>
-
</head>
-
<body>
-
<div id="app"></div>
-
<script type="module" src="/src/main.ts"></script>
-
</body>
-
</html>
-25
dysnomia/www/package.json
···
-
{
-
"name": "dysnomia",
-
"private": true,
-
"version": "0.0.0",
-
"type": "module",
-
"scripts": {
-
"dev": "vite",
-
"build": "tsc && vite build",
-
"preview": "vite preview"
-
},
-
"devDependencies": {
-
"typescript": "~5.9.3",
-
"vite": "npm:rolldown-vite@7.2.5",
-
"vite-plugin-top-level-await": "^1.6.0",
-
"vite-plugin-wasm": "^3.5.0"
-
},
-
"dependencies": {
-
"@std/toml": "npm:@jsr/std__toml",
-
"@xterm/addon-canvas": "^0.7.0",
-
"@xterm/addon-fit": "^0.10.0",
-
"@xterm/addon-web-links": "^0.11.0",
-
"@xterm/addon-webgl": "^0.18.0",
-
"@xterm/xterm": "^5.5.0"
-
}
-
}
-1
dysnomia/www/public/vite.svg
···
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
-659
dysnomia/www/src/main.ts
···
-
import { Terminal } from "@xterm/xterm";
-
import { FitAddon } from "@xterm/addon-fit";
-
import { WebLinksAddon } from "@xterm/addon-web-links";
-
import { CanvasAddon } from "@xterm/addon-canvas";
-
import { WebglAddon } from "@xterm/addon-webgl";
-
-
// Import the worker using Vite's explicit worker suffix
-
// This fixes the "disallowed MIME type" error by ensuring Vite bundles it correctly
-
import DysnomiaWorker from "./worker?worker";
-
-
import "./style.css";
-
import "@xterm/xterm/css/xterm.css";
-
-
type Candidate = {
-
name: string;
-
description: string;
-
is_command: boolean;
-
rendered: string;
-
span_start: number;
-
span_end: number;
-
};
-
-
type SearchState = "history" | "completion" | "none";
-
-
async function bootstrap() {
-
// Instantiate the worker using the imported class
-
const worker = new DysnomiaWorker();
-
-
// Communication Helpers
-
let msgId = 0;
-
const pending = new Map<
-
number,
-
{ resolve: (value: any) => void; reject: (reason: any) => void }
-
>();
-
-
// State to track if WASM is fully loaded
-
let isWorkerReady = false;
-
-
const callWorker = (type: string, payload?: any): Promise<any> => {
-
return new Promise((resolve, reject) => {
-
const id = ++msgId;
-
pending.set(id, { resolve, reject });
-
worker.postMessage({ id, type, payload });
-
});
-
};
-
-
const term = new Terminal({
-
cursorBlink: true,
-
cursorStyle: "bar",
-
cursorInactiveStyle: "block",
-
fontFamily: '"Comic Mono", monospace',
-
fontSize: 15,
-
scrollback: 100000,
-
theme: {
-
background: "#000000",
-
foreground: "#ffffff",
-
},
-
});
-
-
const fitAddon = new FitAddon();
-
term.loadAddon(fitAddon);
-
term.loadAddon(new WebLinksAddon());
-
-
document.querySelector<HTMLDivElement>("#app")!.innerHTML =
-
`<div id="terminal"></div>`;
-
term.open(document.getElementById("terminal")!);
-
try {
-
term.loadAddon(new WebglAddon());
-
} catch (err) {
-
console.error("WebGL addon failed to load:", err);
-
console.warn("falling back to canvas!");
-
term.loadAddon(new CanvasAddon());
-
}
-
fitAddon.fit();
-
-
let activeTasks = 0;
-
let currentLine = "";
-
let completionBaseLine = "";
-
let cursorPos = 0;
-
let isRunningCommand = false;
-
-
let searchState: SearchState = "none";
-
let completionCandidates: Candidate[] = [];
-
let completionIndex = -1;
-
const history: string[] = [];
-
let historyIndex = 0;
-
-
// Cache PWD to avoid flickering/excessive async calls
-
let cachedPwd = "/";
-
-
let readyPromiseResolve: () => void;
-
const readyPromise = new Promise<void>((resolve) => {
-
readyPromiseResolve = resolve;
-
});
-
-
worker.onmessage = (e) => {
-
const { id, type, payload } = e.data;
-
-
// console.log("Received message:", id, type, payload);
-
-
if (type === "initialized") {
-
isWorkerReady = true;
-
readyPromiseResolve();
-
}
-
-
if (type === "console") {
-
const safeMsg = payload.msg.replace(/\n/g, "\r\n");
-
-
if (!payload.isCmd) {
-
// If we are sitting at a prompt, clear it to show the message
-
term.write("\r\x1b[2K"); // Clear line
-
term.write(safeMsg + "\r\n");
-
refreshPrompt();
-
} else {
-
term.write(safeMsg + "\r\n");
-
}
-
return;
-
}
-
-
if (type === "task_count") {
-
activeTasks = payload;
-
if (!isRunningCommand) {
-
refreshPrompt();
-
}
-
return;
-
}
-
-
if (pending.has(id)) {
-
const resolver = pending.get(id)!;
-
pending.delete(id);
-
if (type === "error") {
-
resolver.reject(payload);
-
} else {
-
resolver.resolve(payload);
-
}
-
}
-
};
-
-
const getPrompt = () => {
-
const indicator =
-
activeTasks > 0 ? `\x1b[33m(${activeTasks} bg)\x1b[0m ` : "";
-
-
let modeIndicator = "";
-
if (searchState === "history") {
-
modeIndicator = "\x1b[7m\x1b[34m(h-search)\x1b[0m ";
-
} else if (searchState === "completion") {
-
modeIndicator = "\x1b[7m\x1b[35m(c-search)\x1b[0m ";
-
}
-
-
const pathColor = isWorkerReady ? "\x1b[33m" : "\x1b[30;1m"; // Yellow (ready) vs Dark Gray (loading)
-
return `${indicator}${pathColor}${cachedPwd}\x1b[32m/\x1b[0m ${modeIndicator}`;
-
};
-
-
// Async Refresh Prompt
-
const refreshPrompt = async () => {
-
// If we are running a command (blocking), don't redraw prompt
-
if (isRunningCommand) return;
-
-
let output = "";
-
output += "\r";
-
output += "\x1b[2K"; // Clear current line
-
output += "\x1b[J"; // Clear everything below
-
-
output += getPrompt();
-
-
try {
-
if (currentLine.length > 0 && isWorkerReady) {
-
const highlighted = await callWorker("highlight", currentLine);
-
output += highlighted;
-
} else {
-
output += currentLine;
-
}
-
} catch (e) {
-
output += currentLine;
-
}
-
-
if (completionCandidates.length > 0) {
-
output += "\x1b7"; // Save cursor position
-
output += "\r\n";
-
-
const MAX_VISIBLE = 10;
-
const total = completionCandidates.length;
-
let start = 0;
-
let end = total;
-
-
if (total > MAX_VISIBLE) {
-
const half = Math.floor(MAX_VISIBLE / 2);
-
if (completionIndex < half) {
-
start = 0;
-
end = MAX_VISIBLE;
-
} else if (completionIndex >= total - half) {
-
start = total - MAX_VISIBLE;
-
end = total;
-
} else {
-
start = completionIndex - half;
-
end = start + MAX_VISIBLE;
-
}
-
}
-
-
if (start > 0) {
-
output += `\x1b[2m... ${start} more\x1b[0m\x1b[K\r\n`;
-
}
-
-
for (let i = start; i < end; i++) {
-
const cand = completionCandidates[i];
-
const isSelected = i === completionIndex;
-
let rendered = cand.rendered;
-
-
if (isSelected) {
-
rendered = rendered.replace(/\x1b\[0m/g, "\x1b[0m\x1b[7m");
-
output += `\x1b[7m${rendered}\x1b[K\x1b[0m\r\n`;
-
} else {
-
output += `${rendered}\x1b[K\r\n`;
-
}
-
}
-
-
if (end < total) {
-
output += `\x1b[2m... ${total - end} more\x1b[0m\x1b[K\r\n`;
-
}
-
-
output += "\x1b8"; // Restore cursor position
-
}
-
-
// Move cursor back to correct position
-
const distance = currentLine.length - cursorPos;
-
if (distance > 0) {
-
output += `\x1b[${distance}D`;
-
}
-
-
// We write the whole block at once to minimize flicker
-
term.write(output);
-
};
-
-
const getLineWithCompletion = (baseLine: string, candidate: Candidate) => {
-
const before = baseLine.slice(0, candidate.span_start);
-
const after = baseLine.slice(candidate.span_end);
-
return before + candidate.name + after;
-
};
-
-
const applyCompletion = (candidate: Candidate) => {
-
currentLine = getLineWithCompletion(currentLine, candidate);
-
const before = currentLine.slice(0, candidate.span_start);
-
cursorPos = (before + candidate.name).length;
-
};
-
-
const updateCompletionCandidates = async () => {
-
// Don't try to get completion if worker isn't loaded
-
if (!isWorkerReady) return;
-
-
try {
-
const json = await callWorker("completion", {
-
line: currentLine,
-
cursor: cursorPos,
-
});
-
const candidates: Candidate[] = JSON.parse(json);
-
completionCandidates = candidates;
-
completionBaseLine = currentLine;
-
-
if (completionCandidates.length > 0) {
-
if (completionIndex >= completionCandidates.length) {
-
completionIndex = 0;
-
}
-
if (completionIndex < 0) {
-
completionIndex = 0;
-
}
-
} else {
-
completionIndex = -1;
-
}
-
} catch (err) {
-
completionCandidates = [];
-
completionIndex = -1;
-
}
-
};
-
-
const updateHistoryCandidates = () => {
-
const query = currentLine.toLowerCase();
-
const matches = history.filter((cmd) => {
-
let i = 0,
-
j = 0;
-
const cmdLower = cmd.toLowerCase();
-
while (i < query.length && j < cmdLower.length) {
-
if (query[i] === cmdLower[j]) i++;
-
j++;
-
}
-
return i === query.length;
-
});
-
-
matches.reverse();
-
-
completionCandidates = matches.map((cmd) => ({
-
name: cmd,
-
description: "",
-
is_command: true,
-
rendered: cmd,
-
span_start: 0,
-
span_end: currentLine.length,
-
}));
-
-
completionBaseLine = currentLine;
-
-
if (completionCandidates.length > 0) {
-
completionIndex = 0;
-
} else {
-
completionIndex = -1;
-
}
-
};
-
-
// 1. Setup Input Handler immediately so terminal isn't blocked
-
term.onData(async (e) => {
-
// SEARCH MODE INPUT
-
if (searchState !== "none" && e >= " " && e <= "~") {
-
if (cursorPos === currentLine.length) {
-
currentLine += e;
-
cursorPos++;
-
} else {
-
currentLine =
-
currentLine.slice(0, cursorPos) + e + currentLine.slice(cursorPos);
-
cursorPos++;
-
}
-
term.write(e);
-
-
if (searchState === "history") updateHistoryCandidates();
-
if (searchState === "completion") await updateCompletionCandidates();
-
-
await refreshPrompt();
-
return;
-
}
-
-
// SEARCH MODE BACKSPACE
-
if (searchState !== "none" && e === "\u007F") {
-
if (cursorPos > 0) {
-
currentLine =
-
currentLine.slice(0, cursorPos - 1) + currentLine.slice(cursorPos);
-
cursorPos--;
-
-
if (searchState === "history") updateHistoryCandidates();
-
if (searchState === "completion") await updateCompletionCandidates();
-
-
await refreshPrompt();
-
}
-
return;
-
}
-
-
// EXIT SEARCH MODE (on non-nav keys)
-
const isTab = e === "\t" || e === "\x1b[Z";
-
const isArrow = e === "\x1b[A" || e === "\x1b[B";
-
-
if (
-
!isTab &&
-
!isArrow &&
-
(completionCandidates.length > 0 || searchState !== "none")
-
) {
-
if (e !== "\r") {
-
completionCandidates = [];
-
completionIndex = -1;
-
searchState = "none";
-
await refreshPrompt();
-
}
-
}
-
-
switch (e) {
-
case "\r": {
-
// ENTER
-
-
// 1. Accept Completion/Search Selection
-
if (completionCandidates.length > 0) {
-
const cand = completionCandidates[completionIndex];
-
if (cand) {
-
currentLine = getLineWithCompletion(completionBaseLine, cand);
-
cursorPos = currentLine.length;
-
}
-
}
-
-
const wasInMode =
-
searchState != "none" || completionCandidates.length > 0;
-
-
completionCandidates = [];
-
searchState = "none";
-
-
if (wasInMode) {
-
await refreshPrompt();
-
break;
-
}
-
-
// 2. Execute Command
-
await refreshPrompt(); // Ensure clean line
-
term.write("\r\n");
-
const trimmed = currentLine.trim();
-
-
if (trimmed.length > 0) {
-
currentLine = "";
-
isRunningCommand = true;
-
try {
-
// Check readiness before executing
-
if (!isWorkerReady) {
-
term.write(
-
"\x1b[33mengine is still loading, please wait (_ _ )zZ...\x1b[0m\r\n",
-
);
-
} else {
-
// ASYNC execution
-
const output: string | undefined = await callWorker(
-
"run",
-
trimmed,
-
);
-
if (output) {
-
term.write(output.replace(/\n/g, "\r\n"));
-
if (output && !output.endsWith("\n")) {
-
term.write("\r\n");
-
}
-
}
-
-
// Update cached PWD after command execution (cd, etc)
-
cachedPwd = await callWorker("get_pwd");
-
-
// Update History
-
const idx = history.indexOf(trimmed);
-
if (idx >= 0) history.splice(idx, 1);
-
history.push(trimmed);
-
historyIndex = history.length;
-
}
-
} catch (err) {
-
term.write(`\x1b[31mfatal: ${err}\x1b[0m\r\n`);
-
} finally {
-
isRunningCommand = false;
-
}
-
}
-
-
term.write(getPrompt());
-
cursorPos = 0;
-
break;
-
}
-
-
case "\u007F": // Backspace
-
if (cursorPos > 0) {
-
currentLine =
-
currentLine.slice(0, cursorPos - 1) + currentLine.slice(cursorPos);
-
cursorPos--;
-
await refreshPrompt();
-
}
-
break;
-
-
case "\x1b[3~": // Delete
-
if (cursorPos < currentLine.length) {
-
currentLine =
-
currentLine.slice(0, cursorPos) + currentLine.slice(cursorPos + 1);
-
await refreshPrompt();
-
}
-
break;
-
-
case "\u0003": // Ctrl+C
-
currentLine = "";
-
cursorPos = 0;
-
completionCandidates = [];
-
searchState = "none";
-
term.write("^C\r\n" + getPrompt());
-
break;
-
-
case "\u000C": // Ctrl+L
-
term.clear();
-
break;
-
-
case "\u0012": // Ctrl+R
-
searchState = "history";
-
updateHistoryCandidates();
-
await refreshPrompt();
-
break;
-
-
// NAVIGATION
-
-
case "\x1b[D": // Left Arrow
-
if (cursorPos > 0) {
-
cursorPos--;
-
term.write(e); // Local echo is fine for navigation
-
}
-
break;
-
-
case "\x1b[C": // Right Arrow
-
if (cursorPos < currentLine.length) {
-
cursorPos++;
-
term.write(e);
-
}
-
break;
-
-
case "\x1b[1;5D": // Ctrl+Left
-
case "\x1b\x1b[D": // Alt+Left
-
{
-
let p = cursorPos;
-
while (p > 0 && currentLine[p - 1] === " ") p--;
-
while (p > 0 && currentLine[p - 1] !== " ") p--;
-
cursorPos = p;
-
await refreshPrompt();
-
}
-
break;
-
-
case "\x1b[1;5C": // Ctrl+Right
-
case "\x1b\x1b[C": // Alt+Right
-
{
-
let p = cursorPos;
-
while (p < currentLine.length && currentLine[p] !== " ") p++;
-
while (p < currentLine.length && currentLine[p] === " ") p++;
-
cursorPos = p;
-
await refreshPrompt();
-
}
-
break;
-
-
case "\x1b[A": // Up Arrow
-
case "\x1b[1;5A": // Ctrl+Up
-
// Cycle Completion
-
if (completionCandidates.length > 0 && e === "\x1b[A") {
-
completionIndex =
-
(completionIndex - 1 + completionCandidates.length) %
-
completionCandidates.length;
-
const candidate = completionCandidates[completionIndex];
-
currentLine = getLineWithCompletion(completionBaseLine, candidate);
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
break;
-
}
-
-
// History
-
if (e === "\x1b[A" || currentLine.length === 0) {
-
if (historyIndex > 0) {
-
historyIndex--;
-
currentLine = history[historyIndex];
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
}
-
} else {
-
cursorPos = 0;
-
await refreshPrompt();
-
}
-
break;
-
-
case "\x1b[H": // Home
-
cursorPos = 0;
-
await refreshPrompt();
-
break;
-
-
case "\x1b[B": // Down Arrow
-
case "\x1b[1;5B": // Ctrl+Down
-
// Cycle Completion
-
if (completionCandidates.length > 0 && e === "\x1b[B") {
-
completionIndex = (completionIndex + 1) % completionCandidates.length;
-
const candidate = completionCandidates[completionIndex];
-
currentLine = getLineWithCompletion(completionBaseLine, candidate);
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
break;
-
}
-
-
// History
-
if (e === "\x1b[B" || currentLine.length === 0) {
-
if (historyIndex < history.length) {
-
historyIndex++;
-
if (historyIndex === history.length) {
-
currentLine = "";
-
} else {
-
currentLine = history[historyIndex];
-
}
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
}
-
} else {
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
}
-
break;
-
-
case "\x1b[F": // End
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
break;
-
-
case "\t": // Tab
-
try {
-
if (completionCandidates.length > 0) {
-
completionIndex =
-
(completionIndex + 1) % completionCandidates.length;
-
-
const candidate = completionCandidates[completionIndex];
-
currentLine = getLineWithCompletion(completionBaseLine, candidate);
-
await refreshPrompt();
-
} else {
-
// Guard: ensure worker is ready
-
if (!isWorkerReady) return;
-
-
const json = await callWorker("completion", {
-
line: currentLine,
-
cursor: cursorPos,
-
});
-
const candidates: Candidate[] = JSON.parse(json);
-
-
if (candidates.length === 1) {
-
const candidate = candidates[0];
-
applyCompletion(candidate);
-
await refreshPrompt();
-
} else if (candidates.length > 1) {
-
completionCandidates = candidates;
-
completionIndex = 0;
-
searchState = "completion";
-
completionBaseLine = currentLine;
-
await refreshPrompt();
-
}
-
}
-
} catch (err) {
-
// ignore
-
}
-
break;
-
-
case "\x1b[Z": // Shift+Tab
-
if (completionCandidates.length > 0) {
-
completionIndex =
-
(completionIndex - 1 + completionCandidates.length) %
-
completionCandidates.length;
-
const candidate = completionCandidates[completionIndex];
-
currentLine = getLineWithCompletion(completionBaseLine, candidate);
-
cursorPos = currentLine.length;
-
await refreshPrompt();
-
}
-
break;
-
-
default:
-
// Typing
-
if (e >= " " && e <= "~") {
-
if (cursorPos === currentLine.length) {
-
currentLine += e;
-
cursorPos++;
-
} else {
-
currentLine =
-
currentLine.slice(0, cursorPos) +
-
e +
-
currentLine.slice(cursorPos);
-
cursorPos++;
-
}
-
await refreshPrompt();
-
}
-
}
-
});
-
-
window.addEventListener("resize", () => fitAddon.fit());
-
-
await readyPromise;
-
-
await callWorker("run", "open welcome.txt");
-
-
term.write(getPrompt());
-
-
callWorker("get_pwd")
-
.then((pwd) => {
-
cachedPwd = pwd;
-
// Re-render prompt to show "ready" state (yellow path) and enable highlighting
-
refreshPrompt();
-
})
-
.catch((e) => {
-
term.write(`\r\n\x1b[31mfatal: failed to load engine: ${e}\x1b[0m\r\n`);
-
});
-
}
-
-
bootstrap().catch(console.error);
-13
dysnomia/www/src/style.css
···
-
body {
-
margin: 0;
-
padding: 0;
-
background-color: #000000;
-
height: 100vh;
-
width: 100vw;
-
overflow: hidden;
-
}
-
-
#terminal {
-
height: 100vh;
-
width: 100vw;
-
}
-54
dysnomia/www/src/worker.ts
···
-
import init, {
-
init_engine,
-
run_command,
-
completion,
-
highlight,
-
get_pwd_string,
-
register_console_callback,
-
register_task_count_callback,
-
} from "../../pkg";
-
-
// Initialize WASM
-
await init();
-
init_engine();
-
-
// Setup Callbacks to proxy messages back to Main Thread
-
register_console_callback((msg: string, isCmd: boolean) => {
-
self.postMessage({ type: "console", payload: { msg, isCmd } });
-
});
-
-
register_task_count_callback((count: number) => {
-
self.postMessage({ type: "task_count", payload: count });
-
});
-
-
// Handle messages from Main Thread
-
self.onmessage = (e) => {
-
const { id, type, payload } = e.data;
-
-
// console.log("Received message:", id, type, payload);
-
-
try {
-
let result;
-
switch (type) {
-
case "run":
-
result = run_command(payload);
-
break;
-
case "completion":
-
result = completion(payload.line, payload.cursor);
-
break;
-
case "highlight":
-
result = highlight(payload);
-
break;
-
case "get_pwd":
-
result = get_pwd_string();
-
break;
-
default:
-
throw new Error(`Unknown message type: ${type}`);
-
}
-
self.postMessage({ id, type: `${type}_result`, payload: result });
-
} catch (err) {
-
self.postMessage({ id, type: "error", payload: String(err) });
-
}
-
};
-
-
self.postMessage({ type: "initialized", payload: true });
-26
dysnomia/www/tsconfig.json
···
-
{
-
"compilerOptions": {
-
"target": "ES2022",
-
"useDefineForClassFields": true,
-
"module": "ESNext",
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
-
"types": ["vite/client"],
-
"skipLibCheck": true,
-
-
/* Bundler mode */
-
"moduleResolution": "bundler",
-
"allowImportingTsExtensions": true,
-
"verbatimModuleSyntax": true,
-
"moduleDetection": "force",
-
"noEmit": true,
-
-
/* Linting */
-
"strict": true,
-
"noUnusedLocals": true,
-
"noUnusedParameters": true,
-
"erasableSyntaxOnly": true,
-
"noFallthroughCasesInSwitch": true,
-
"noUncheckedSideEffectImports": true
-
},
-
"include": ["src"]
-
}
-16
dysnomia/www/vite.config.ts
···
-
import { defineConfig } from "vite";
-
import wasm from "vite-plugin-wasm";
-
import topLevelAwait from "vite-plugin-top-level-await";
-
-
export default defineConfig({
-
plugins: [wasm(), topLevelAwait()],
-
worker: {
-
format: "es",
-
plugins: () => [wasm(), topLevelAwait()],
-
},
-
server: {
-
fs: {
-
allow: [".."],
-
},
-
},
-
});