data endpoint for entity 90008 (aka. a website)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

move dysnomia out of tree

dawn 79ec1f7c 6f5313bc

+1 -10434
+1 -1
deno.json
··· 1 1 { 2 - "workspace": ["./eunomia", "./dysnomia/www"], 2 + "workspace": ["./eunomia"], 3 3 "nodeModulesDir": "auto" 4 4 }
-2
dysnomia/.cargo/config.toml
··· 1 - [target.wasm32-unknown-unknown] 2 - rustflags = ["-C", "target-feature=+atomics,+bulk-memory,+mutable-globals,+simd128"]
-6632
dysnomia/Cargo.lock
··· 1 - # This file is automatically @generated by Cargo. 2 - # It is not intended for manual editing. 3 - version = 4 4 - 5 - [[package]] 6 - name = "abnf" 7 - version = "0.13.0" 8 - source = "registry+https://github.com/rust-lang/crates.io-index" 9 - checksum = "087113bd50d9adce24850eed5d0476c7d199d532fce8fab5173650331e09033a" 10 - dependencies = [ 11 - "abnf-core", 12 - "nom", 13 - ] 14 - 15 - [[package]] 16 - name = "abnf-core" 17 - version = "0.5.0" 18 - source = "registry+https://github.com/rust-lang/crates.io-index" 19 - checksum = "c44e09c43ae1c368fb91a03a566472d0087c26cf7e1b9e8e289c14ede681dd7d" 20 - dependencies = [ 21 - "nom", 22 - ] 23 - 24 - [[package]] 25 - name = "addr2line" 26 - version = "0.25.1" 27 - source = "registry+https://github.com/rust-lang/crates.io-index" 28 - checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" 29 - dependencies = [ 30 - "gimli", 31 - ] 32 - 33 - [[package]] 34 - name = "adler2" 35 - version = "2.0.1" 36 - source = "registry+https://github.com/rust-lang/crates.io-index" 37 - checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 38 - 39 - [[package]] 40 - name = "aho-corasick" 41 - version = "1.1.4" 42 - source = "registry+https://github.com/rust-lang/crates.io-index" 43 - checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 44 - dependencies = [ 45 - "memchr", 46 - ] 47 - 48 - [[package]] 49 - name = "aliasable" 50 - version = "0.1.3" 51 - source = "registry+https://github.com/rust-lang/crates.io-index" 52 - checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" 53 - 54 - [[package]] 55 - name = "alloc-no-stdlib" 56 - version = "2.0.4" 57 - source = "registry+https://github.com/rust-lang/crates.io-index" 58 - checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 59 - 60 - [[package]] 61 - name = "alloc-stdlib" 62 - version = "0.2.2" 63 - source = "registry+https://github.com/rust-lang/crates.io-index" 64 - checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 65 - dependencies = [ 66 - "alloc-no-stdlib", 67 - ] 68 - 69 - [[package]] 70 - name = "allocator-api2" 71 - version = "0.2.21" 72 - source = "registry+https://github.com/rust-lang/crates.io-index" 73 - checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 74 - 75 - [[package]] 76 - name = "alphanumeric-sort" 77 - version = "1.5.4" 78 - source = "registry+https://github.com/rust-lang/crates.io-index" 79 - checksum = "ab31f79a61d3c25cae1d6734a386662e5cf1b6ba5a9720c135b609273c058c15" 80 - 81 - [[package]] 82 - name = "android_system_properties" 83 - version = "0.1.5" 84 - source = "registry+https://github.com/rust-lang/crates.io-index" 85 - checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 86 - dependencies = [ 87 - "libc", 88 - ] 89 - 90 - [[package]] 91 - name = "ansi-str" 92 - version = "0.9.0" 93 - source = "registry+https://github.com/rust-lang/crates.io-index" 94 - checksum = "060de1453b69f46304b28274f382132f4e72c55637cf362920926a70d090890d" 95 - dependencies = [ 96 - "ansitok", 97 - ] 98 - 99 - [[package]] 100 - name = "ansi_term" 101 - version = "0.12.1" 102 - source = "registry+https://github.com/rust-lang/crates.io-index" 103 - checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 104 - dependencies = [ 105 - "winapi", 106 - ] 107 - 108 - [[package]] 109 - name = "ansitok" 110 - version = "0.3.0" 111 - source = "registry+https://github.com/rust-lang/crates.io-index" 112 - checksum = "c0a8acea8c2f1c60f0a92a8cd26bf96ca97db56f10bbcab238bbe0cceba659ee" 113 - dependencies = [ 114 - "nom", 115 - "vte", 116 - ] 117 - 118 - [[package]] 119 - name = "anstream" 120 - version = "0.6.21" 121 - source = "registry+https://github.com/rust-lang/crates.io-index" 122 - checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" 123 - dependencies = [ 124 - "anstyle", 125 - "anstyle-parse", 126 - "anstyle-query", 127 - "anstyle-wincon", 128 - "colorchoice", 129 - "is_terminal_polyfill", 130 - "utf8parse", 131 - ] 132 - 133 - [[package]] 134 - name = "anstyle" 135 - version = "1.0.13" 136 - source = "registry+https://github.com/rust-lang/crates.io-index" 137 - checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" 138 - 139 - [[package]] 140 - name = "anstyle-parse" 141 - version = "0.2.7" 142 - source = "registry+https://github.com/rust-lang/crates.io-index" 143 - checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" 144 - dependencies = [ 145 - "utf8parse", 146 - ] 147 - 148 - [[package]] 149 - name = "anstyle-query" 150 - version = "1.1.5" 151 - source = "registry+https://github.com/rust-lang/crates.io-index" 152 - checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" 153 - dependencies = [ 154 - "windows-sys 0.61.2", 155 - ] 156 - 157 - [[package]] 158 - name = "anstyle-wincon" 159 - version = "3.0.11" 160 - source = "registry+https://github.com/rust-lang/crates.io-index" 161 - checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" 162 - dependencies = [ 163 - "anstyle", 164 - "once_cell_polyfill", 165 - "windows-sys 0.61.2", 166 - ] 167 - 168 - [[package]] 169 - name = "anyhow" 170 - version = "1.0.100" 171 - source = "registry+https://github.com/rust-lang/crates.io-index" 172 - checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" 173 - 174 - [[package]] 175 - name = "arbitrary" 176 - version = "1.4.2" 177 - source = "registry+https://github.com/rust-lang/crates.io-index" 178 - checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 179 - dependencies = [ 180 - "derive_arbitrary", 181 - ] 182 - 183 - [[package]] 184 - name = "arrayvec" 185 - version = "0.7.6" 186 - source = "registry+https://github.com/rust-lang/crates.io-index" 187 - checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 188 - 189 - [[package]] 190 - name = "async-compression" 191 - version = "0.4.36" 192 - source = "registry+https://github.com/rust-lang/crates.io-index" 193 - checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" 194 - dependencies = [ 195 - "compression-codecs", 196 - "compression-core", 197 - "futures-core", 198 - "pin-project-lite", 199 - "tokio", 200 - ] 201 - 202 - [[package]] 203 - name = "atoi_simd" 204 - version = "0.16.1" 205 - source = "registry+https://github.com/rust-lang/crates.io-index" 206 - checksum = "c2a49e05797ca52e312a0c658938b7d00693ef037799ef7187678f212d7684cf" 207 - dependencies = [ 208 - "debug_unsafe", 209 - ] 210 - 211 - [[package]] 212 - name = "atomic-polyfill" 213 - version = "1.0.3" 214 - source = "registry+https://github.com/rust-lang/crates.io-index" 215 - checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 216 - dependencies = [ 217 - "critical-section", 218 - ] 219 - 220 - [[package]] 221 - name = "atomic-waker" 222 - version = "1.1.2" 223 - source = "registry+https://github.com/rust-lang/crates.io-index" 224 - checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 225 - 226 - [[package]] 227 - name = "autocfg" 228 - version = "1.5.0" 229 - source = "registry+https://github.com/rust-lang/crates.io-index" 230 - checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 231 - 232 - [[package]] 233 - name = "backtrace" 234 - version = "0.3.76" 235 - source = "registry+https://github.com/rust-lang/crates.io-index" 236 - checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" 237 - dependencies = [ 238 - "addr2line", 239 - "cfg-if", 240 - "libc", 241 - "miniz_oxide", 242 - "object", 243 - "rustc-demangle", 244 - "windows-link 0.2.1", 245 - ] 246 - 247 - [[package]] 248 - name = "backtrace-ext" 249 - version = "0.2.1" 250 - source = "registry+https://github.com/rust-lang/crates.io-index" 251 - checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50" 252 - dependencies = [ 253 - "backtrace", 254 - ] 255 - 256 - [[package]] 257 - name = "base-x" 258 - version = "0.2.11" 259 - source = "registry+https://github.com/rust-lang/crates.io-index" 260 - checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 261 - 262 - [[package]] 263 - name = "base16ct" 264 - version = "0.2.0" 265 - source = "registry+https://github.com/rust-lang/crates.io-index" 266 - checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 267 - 268 - [[package]] 269 - name = "base256emoji" 270 - version = "1.0.2" 271 - source = "registry+https://github.com/rust-lang/crates.io-index" 272 - checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" 273 - dependencies = [ 274 - "const-str", 275 - "match-lookup", 276 - ] 277 - 278 - [[package]] 279 - name = "base64" 280 - version = "0.22.1" 281 - source = "registry+https://github.com/rust-lang/crates.io-index" 282 - checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 283 - 284 - [[package]] 285 - name = "base64ct" 286 - version = "1.8.1" 287 - source = "registry+https://github.com/rust-lang/crates.io-index" 288 - checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" 289 - 290 - [[package]] 291 - name = "bindgen" 292 - version = "0.72.1" 293 - source = "registry+https://github.com/rust-lang/crates.io-index" 294 - checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" 295 - dependencies = [ 296 - "bitflags", 297 - "cexpr", 298 - "clang-sys", 299 - "itertools 0.13.0", 300 - "proc-macro2", 301 - "quote", 302 - "regex", 303 - "rustc-hash", 304 - "shlex", 305 - "syn 2.0.111", 306 - ] 307 - 308 - [[package]] 309 - name = "bit-set" 310 - version = "0.8.0" 311 - source = "registry+https://github.com/rust-lang/crates.io-index" 312 - checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" 313 - dependencies = [ 314 - "bit-vec", 315 - ] 316 - 317 - [[package]] 318 - name = "bit-vec" 319 - version = "0.8.0" 320 - source = "registry+https://github.com/rust-lang/crates.io-index" 321 - checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" 322 - 323 - [[package]] 324 - name = "bitflags" 325 - version = "2.10.0" 326 - source = "registry+https://github.com/rust-lang/crates.io-index" 327 - checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 328 - 329 - [[package]] 330 - name = "block-buffer" 331 - version = "0.10.4" 332 - source = "registry+https://github.com/rust-lang/crates.io-index" 333 - checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 334 - dependencies = [ 335 - "generic-array", 336 - ] 337 - 338 - [[package]] 339 - name = "bon" 340 - version = "3.8.1" 341 - source = "registry+https://github.com/rust-lang/crates.io-index" 342 - checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1" 343 - dependencies = [ 344 - "bon-macros", 345 - "rustversion", 346 - ] 347 - 348 - [[package]] 349 - name = "bon-macros" 350 - version = "3.8.1" 351 - source = "registry+https://github.com/rust-lang/crates.io-index" 352 - checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" 353 - dependencies = [ 354 - "darling", 355 - "ident_case", 356 - "prettyplease", 357 - "proc-macro2", 358 - "quote", 359 - "rustversion", 360 - "syn 2.0.111", 361 - ] 362 - 363 - [[package]] 364 - name = "borsh" 365 - version = "1.6.0" 366 - source = "registry+https://github.com/rust-lang/crates.io-index" 367 - checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" 368 - dependencies = [ 369 - "cfg_aliases", 370 - ] 371 - 372 - [[package]] 373 - name = "bracoxide" 374 - version = "0.1.7" 375 - source = "registry+https://github.com/rust-lang/crates.io-index" 376 - checksum = "f5a4d25760c1b6f53db7257292236bc20da1215a1004ee330b37976eeac3af31" 377 - 378 - [[package]] 379 - name = "brotli" 380 - version = "8.0.2" 381 - source = "registry+https://github.com/rust-lang/crates.io-index" 382 - checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" 383 - dependencies = [ 384 - "alloc-no-stdlib", 385 - "alloc-stdlib", 386 - "brotli-decompressor", 387 - ] 388 - 389 - [[package]] 390 - name = "brotli-decompressor" 391 - version = "5.0.0" 392 - source = "registry+https://github.com/rust-lang/crates.io-index" 393 - checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" 394 - dependencies = [ 395 - "alloc-no-stdlib", 396 - "alloc-stdlib", 397 - ] 398 - 399 - [[package]] 400 - name = "bstr" 401 - version = "1.12.1" 402 - source = "registry+https://github.com/rust-lang/crates.io-index" 403 - checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" 404 - dependencies = [ 405 - "memchr", 406 - "regex-automata", 407 - "serde", 408 - ] 409 - 410 - [[package]] 411 - name = "btree-range-map" 412 - version = "0.7.2" 413 - source = "registry+https://github.com/rust-lang/crates.io-index" 414 - checksum = "1be5c9672446d3800bcbcaabaeba121fe22f1fb25700c4562b22faf76d377c33" 415 - dependencies = [ 416 - "btree-slab", 417 - "cc-traits", 418 - "range-traits", 419 - "serde", 420 - "slab", 421 - ] 422 - 423 - [[package]] 424 - name = "btree-slab" 425 - version = "0.6.1" 426 - source = "registry+https://github.com/rust-lang/crates.io-index" 427 - checksum = "7a2b56d3029f075c4fa892428a098425b86cef5c89ae54073137ece416aef13c" 428 - dependencies = [ 429 - "cc-traits", 430 - "slab", 431 - "smallvec", 432 - ] 433 - 434 - [[package]] 435 - name = "buf-trait" 436 - version = "0.4.1" 437 - source = "registry+https://github.com/rust-lang/crates.io-index" 438 - checksum = "21eaafc770e8c073d6c3facafe7617e774305d4954aa6351b9c452eb37ee17b4" 439 - dependencies = [ 440 - "zerocopy 0.7.35", 441 - ] 442 - 443 - [[package]] 444 - name = "bumpalo" 445 - version = "3.19.0" 446 - source = "registry+https://github.com/rust-lang/crates.io-index" 447 - checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 448 - 449 - [[package]] 450 - name = "bytecount" 451 - version = "0.6.9" 452 - source = "registry+https://github.com/rust-lang/crates.io-index" 453 - checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" 454 - 455 - [[package]] 456 - name = "byteorder" 457 - version = "1.5.0" 458 - source = "registry+https://github.com/rust-lang/crates.io-index" 459 - checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 460 - 461 - [[package]] 462 - name = "bytes" 463 - version = "1.11.0" 464 - source = "registry+https://github.com/rust-lang/crates.io-index" 465 - checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" 466 - dependencies = [ 467 - "serde", 468 - ] 469 - 470 - [[package]] 471 - name = "bytesize" 472 - version = "2.3.1" 473 - source = "registry+https://github.com/rust-lang/crates.io-index" 474 - checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" 475 - 476 - [[package]] 477 - name = "byteyarn" 478 - version = "0.5.1" 479 - source = "registry+https://github.com/rust-lang/crates.io-index" 480 - checksum = "b93e51d26468a15ea59f8525e0c13dc405db43e644a0b1e6d44346c72cf4cf7b" 481 - dependencies = [ 482 - "buf-trait", 483 - ] 484 - 485 - [[package]] 486 - name = "calamine" 487 - version = "0.28.0" 488 - source = "registry+https://github.com/rust-lang/crates.io-index" 489 - checksum = "15e02a18e79de779a78b0a6ec84a3deed1ff0607dd970a11369f993263f99f1a" 490 - dependencies = [ 491 - "atoi_simd", 492 - "byteorder", 493 - "chrono", 494 - "codepage", 495 - "encoding_rs", 496 - "fast-float2", 497 - "log", 498 - "quick-xml 0.37.5", 499 - "serde", 500 - "zip", 501 - ] 502 - 503 - [[package]] 504 - name = "castaway" 505 - version = "0.2.4" 506 - source = "registry+https://github.com/rust-lang/crates.io-index" 507 - checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" 508 - dependencies = [ 509 - "rustversion", 510 - ] 511 - 512 - [[package]] 513 - name = "cbor4ii" 514 - version = "0.2.14" 515 - source = "registry+https://github.com/rust-lang/crates.io-index" 516 - checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4" 517 - dependencies = [ 518 - "serde", 519 - ] 520 - 521 - [[package]] 522 - name = "cc" 523 - version = "1.2.49" 524 - source = "registry+https://github.com/rust-lang/crates.io-index" 525 - checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" 526 - dependencies = [ 527 - "find-msvc-tools", 528 - "shlex", 529 - ] 530 - 531 - [[package]] 532 - name = "cc-traits" 533 - version = "2.0.0" 534 - source = "registry+https://github.com/rust-lang/crates.io-index" 535 - checksum = "060303ef31ef4a522737e1b1ab68c67916f2a787bb2f4f54f383279adba962b5" 536 - dependencies = [ 537 - "slab", 538 - ] 539 - 540 - [[package]] 541 - name = "cexpr" 542 - version = "0.6.0" 543 - source = "registry+https://github.com/rust-lang/crates.io-index" 544 - checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 545 - dependencies = [ 546 - "nom", 547 - ] 548 - 549 - [[package]] 550 - name = "cfg-if" 551 - version = "1.0.4" 552 - source = "registry+https://github.com/rust-lang/crates.io-index" 553 - checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 554 - 555 - [[package]] 556 - name = "cfg_aliases" 557 - version = "0.2.1" 558 - source = "registry+https://github.com/rust-lang/crates.io-index" 559 - checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 560 - 561 - [[package]] 562 - name = "chardetng" 563 - version = "0.1.17" 564 - source = "registry+https://github.com/rust-lang/crates.io-index" 565 - checksum = "14b8f0b65b7b08ae3c8187e8d77174de20cb6777864c6b832d8ad365999cf1ea" 566 - dependencies = [ 567 - "cfg-if", 568 - "encoding_rs", 569 - "memchr", 570 - ] 571 - 572 - [[package]] 573 - name = "chrono" 574 - version = "0.4.42" 575 - source = "registry+https://github.com/rust-lang/crates.io-index" 576 - checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" 577 - dependencies = [ 578 - "iana-time-zone", 579 - "js-sys", 580 - "num-traits", 581 - "pure-rust-locales", 582 - "serde", 583 - "wasm-bindgen", 584 - "windows-link 0.2.1", 585 - ] 586 - 587 - [[package]] 588 - name = "chrono-humanize" 589 - version = "0.2.3" 590 - source = "registry+https://github.com/rust-lang/crates.io-index" 591 - checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" 592 - dependencies = [ 593 - "chrono", 594 - ] 595 - 596 - [[package]] 597 - name = "chrono-tz" 598 - version = "0.10.4" 599 - source = "registry+https://github.com/rust-lang/crates.io-index" 600 - checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" 601 - dependencies = [ 602 - "chrono", 603 - "phf 0.12.1", 604 - ] 605 - 606 - [[package]] 607 - name = "ciborium" 608 - version = "0.2.2" 609 - source = "registry+https://github.com/rust-lang/crates.io-index" 610 - checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" 611 - dependencies = [ 612 - "ciborium-io", 613 - "ciborium-ll", 614 - "serde", 615 - ] 616 - 617 - [[package]] 618 - name = "ciborium-io" 619 - version = "0.2.2" 620 - source = "registry+https://github.com/rust-lang/crates.io-index" 621 - checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" 622 - 623 - [[package]] 624 - name = "ciborium-ll" 625 - version = "0.2.2" 626 - source = "registry+https://github.com/rust-lang/crates.io-index" 627 - checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" 628 - dependencies = [ 629 - "ciborium-io", 630 - "half", 631 - ] 632 - 633 - [[package]] 634 - name = "cid" 635 - version = "0.11.1" 636 - source = "registry+https://github.com/rust-lang/crates.io-index" 637 - checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a" 638 - dependencies = [ 639 - "core2", 640 - "multibase", 641 - "multihash", 642 - "serde", 643 - "serde_bytes", 644 - "unsigned-varint 0.8.0", 645 - ] 646 - 647 - [[package]] 648 - name = "clang-sys" 649 - version = "1.8.1" 650 - source = "registry+https://github.com/rust-lang/crates.io-index" 651 - checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 652 - dependencies = [ 653 - "glob", 654 - "libc", 655 - "libloading", 656 - ] 657 - 658 - [[package]] 659 - name = "clap" 660 - version = "4.5.53" 661 - source = "registry+https://github.com/rust-lang/crates.io-index" 662 - checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" 663 - dependencies = [ 664 - "clap_builder", 665 - ] 666 - 667 - [[package]] 668 - name = "clap_builder" 669 - version = "4.5.53" 670 - source = "registry+https://github.com/rust-lang/crates.io-index" 671 - checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" 672 - dependencies = [ 673 - "anstream", 674 - "anstyle", 675 - "clap_lex", 676 - "strsim", 677 - "terminal_size", 678 - ] 679 - 680 - [[package]] 681 - name = "clap_lex" 682 - version = "0.7.6" 683 - source = "registry+https://github.com/rust-lang/crates.io-index" 684 - checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" 685 - 686 - [[package]] 687 - name = "cobs" 688 - version = "0.3.0" 689 - source = "registry+https://github.com/rust-lang/crates.io-index" 690 - checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 691 - dependencies = [ 692 - "thiserror 2.0.17", 693 - ] 694 - 695 - [[package]] 696 - name = "codepage" 697 - version = "0.1.2" 698 - source = "registry+https://github.com/rust-lang/crates.io-index" 699 - checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4" 700 - dependencies = [ 701 - "encoding_rs", 702 - ] 703 - 704 - [[package]] 705 - name = "colorchoice" 706 - version = "1.0.4" 707 - source = "registry+https://github.com/rust-lang/crates.io-index" 708 - checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" 709 - 710 - [[package]] 711 - name = "compression-codecs" 712 - version = "0.4.35" 713 - source = "registry+https://github.com/rust-lang/crates.io-index" 714 - checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" 715 - dependencies = [ 716 - "compression-core", 717 - "flate2", 718 - "memchr", 719 - ] 720 - 721 - [[package]] 722 - name = "compression-core" 723 - version = "0.4.31" 724 - source = "registry+https://github.com/rust-lang/crates.io-index" 725 - checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" 726 - 727 - [[package]] 728 - name = "console" 729 - version = "0.15.11" 730 - source = "registry+https://github.com/rust-lang/crates.io-index" 731 - checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" 732 - dependencies = [ 733 - "encode_unicode", 734 - "libc", 735 - "once_cell", 736 - "unicode-width 0.2.2", 737 - "windows-sys 0.59.0", 738 - ] 739 - 740 - [[package]] 741 - name = "console" 742 - version = "0.16.1" 743 - source = "registry+https://github.com/rust-lang/crates.io-index" 744 - checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" 745 - dependencies = [ 746 - "encode_unicode", 747 - "libc", 748 - "once_cell", 749 - "unicode-width 0.2.2", 750 - "windows-sys 0.61.2", 751 - ] 752 - 753 - [[package]] 754 - name = "console_error_panic_hook" 755 - version = "0.1.7" 756 - source = "registry+https://github.com/rust-lang/crates.io-index" 757 - checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 758 - dependencies = [ 759 - "cfg-if", 760 - "wasm-bindgen", 761 - ] 762 - 763 - [[package]] 764 - name = "const-oid" 765 - version = "0.9.6" 766 - source = "registry+https://github.com/rust-lang/crates.io-index" 767 - checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 768 - 769 - [[package]] 770 - name = "const-str" 771 - version = "0.4.3" 772 - source = "registry+https://github.com/rust-lang/crates.io-index" 773 - checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 774 - 775 - [[package]] 776 - name = "const_format" 777 - version = "0.2.35" 778 - source = "registry+https://github.com/rust-lang/crates.io-index" 779 - checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" 780 - dependencies = [ 781 - "const_format_proc_macros", 782 - ] 783 - 784 - [[package]] 785 - name = "const_format_proc_macros" 786 - version = "0.2.34" 787 - source = "registry+https://github.com/rust-lang/crates.io-index" 788 - checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" 789 - dependencies = [ 790 - "proc-macro2", 791 - "quote", 792 - "unicode-xid", 793 - ] 794 - 795 - [[package]] 796 - name = "cordyceps" 797 - version = "0.3.4" 798 - source = "registry+https://github.com/rust-lang/crates.io-index" 799 - checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" 800 - dependencies = [ 801 - "loom", 802 - "tracing", 803 - ] 804 - 805 - [[package]] 806 - name = "core-foundation" 807 - version = "0.9.4" 808 - source = "registry+https://github.com/rust-lang/crates.io-index" 809 - checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 810 - dependencies = [ 811 - "core-foundation-sys", 812 - "libc", 813 - ] 814 - 815 - [[package]] 816 - name = "core-foundation-sys" 817 - version = "0.8.7" 818 - source = "registry+https://github.com/rust-lang/crates.io-index" 819 - checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 820 - 821 - [[package]] 822 - name = "core2" 823 - version = "0.4.0" 824 - source = "registry+https://github.com/rust-lang/crates.io-index" 825 - checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" 826 - dependencies = [ 827 - "memchr", 828 - ] 829 - 830 - [[package]] 831 - name = "cpufeatures" 832 - version = "0.2.17" 833 - source = "registry+https://github.com/rust-lang/crates.io-index" 834 - checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 835 - dependencies = [ 836 - "libc", 837 - ] 838 - 839 - [[package]] 840 - name = "crc32fast" 841 - version = "1.5.0" 842 - source = "registry+https://github.com/rust-lang/crates.io-index" 843 - checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 844 - dependencies = [ 845 - "cfg-if", 846 - ] 847 - 848 - [[package]] 849 - name = "critical-section" 850 - version = "1.2.0" 851 - source = "registry+https://github.com/rust-lang/crates.io-index" 852 - checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 853 - 854 - [[package]] 855 - name = "crossbeam-channel" 856 - version = "0.5.15" 857 - source = "registry+https://github.com/rust-lang/crates.io-index" 858 - checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 859 - dependencies = [ 860 - "crossbeam-utils", 861 - ] 862 - 863 - [[package]] 864 - name = "crossbeam-deque" 865 - version = "0.8.6" 866 - source = "registry+https://github.com/rust-lang/crates.io-index" 867 - checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 868 - dependencies = [ 869 - "crossbeam-epoch", 870 - "crossbeam-utils", 871 - ] 872 - 873 - [[package]] 874 - name = "crossbeam-epoch" 875 - version = "0.9.18" 876 - source = "registry+https://github.com/rust-lang/crates.io-index" 877 - checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 878 - dependencies = [ 879 - "crossbeam-utils", 880 - ] 881 - 882 - [[package]] 883 - name = "crossbeam-utils" 884 - version = "0.8.21" 885 - source = "registry+https://github.com/rust-lang/crates.io-index" 886 - checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 887 - 888 - [[package]] 889 - name = "crossterm_winapi" 890 - version = "0.9.1" 891 - source = "registry+https://github.com/rust-lang/crates.io-index" 892 - checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" 893 - dependencies = [ 894 - "winapi", 895 - ] 896 - 897 - [[package]] 898 - name = "crunchy" 899 - version = "0.2.4" 900 - source = "registry+https://github.com/rust-lang/crates.io-index" 901 - checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 902 - 903 - [[package]] 904 - name = "crypto-bigint" 905 - version = "0.5.5" 906 - source = "registry+https://github.com/rust-lang/crates.io-index" 907 - checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 908 - dependencies = [ 909 - "generic-array", 910 - "rand_core 0.6.4", 911 - "subtle", 912 - "zeroize", 913 - ] 914 - 915 - [[package]] 916 - name = "crypto-common" 917 - version = "0.1.6" 918 - source = "registry+https://github.com/rust-lang/crates.io-index" 919 - checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 920 - dependencies = [ 921 - "generic-array", 922 - "typenum", 923 - ] 924 - 925 - [[package]] 926 - name = "csv" 927 - version = "1.4.0" 928 - source = "registry+https://github.com/rust-lang/crates.io-index" 929 - checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" 930 - dependencies = [ 931 - "csv-core", 932 - "itoa", 933 - "ryu", 934 - "serde_core", 935 - ] 936 - 937 - [[package]] 938 - name = "csv-core" 939 - version = "0.1.13" 940 - source = "registry+https://github.com/rust-lang/crates.io-index" 941 - checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" 942 - dependencies = [ 943 - "memchr", 944 - ] 945 - 946 - [[package]] 947 - name = "curve25519-dalek" 948 - version = "4.1.3" 949 - source = "registry+https://github.com/rust-lang/crates.io-index" 950 - checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" 951 - dependencies = [ 952 - "cfg-if", 953 - "cpufeatures", 954 - "curve25519-dalek-derive", 955 - "digest", 956 - "fiat-crypto", 957 - "rustc_version", 958 - "subtle", 959 - "zeroize", 960 - ] 961 - 962 - [[package]] 963 - name = "curve25519-dalek-derive" 964 - version = "0.1.1" 965 - source = "registry+https://github.com/rust-lang/crates.io-index" 966 - checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" 967 - dependencies = [ 968 - "proc-macro2", 969 - "quote", 970 - "syn 2.0.111", 971 - ] 972 - 973 - [[package]] 974 - name = "darling" 975 - version = "0.21.3" 976 - source = "registry+https://github.com/rust-lang/crates.io-index" 977 - checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" 978 - dependencies = [ 979 - "darling_core", 980 - "darling_macro", 981 - ] 982 - 983 - [[package]] 984 - name = "darling_core" 985 - version = "0.21.3" 986 - source = "registry+https://github.com/rust-lang/crates.io-index" 987 - checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" 988 - dependencies = [ 989 - "fnv", 990 - "ident_case", 991 - "proc-macro2", 992 - "quote", 993 - "strsim", 994 - "syn 2.0.111", 995 - ] 996 - 997 - [[package]] 998 - name = "darling_macro" 999 - version = "0.21.3" 1000 - source = "registry+https://github.com/rust-lang/crates.io-index" 1001 - checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" 1002 - dependencies = [ 1003 - "darling_core", 1004 - "quote", 1005 - "syn 2.0.111", 1006 - ] 1007 - 1008 - [[package]] 1009 - name = "dashmap" 1010 - version = "6.1.0" 1011 - source = "registry+https://github.com/rust-lang/crates.io-index" 1012 - checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 1013 - dependencies = [ 1014 - "cfg-if", 1015 - "crossbeam-utils", 1016 - "hashbrown 0.14.5", 1017 - "lock_api", 1018 - "once_cell", 1019 - "parking_lot_core", 1020 - ] 1021 - 1022 - [[package]] 1023 - name = "data-encoding" 1024 - version = "2.9.0" 1025 - source = "registry+https://github.com/rust-lang/crates.io-index" 1026 - checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 1027 - 1028 - [[package]] 1029 - name = "data-encoding-macro" 1030 - version = "0.1.18" 1031 - source = "registry+https://github.com/rust-lang/crates.io-index" 1032 - checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" 1033 - dependencies = [ 1034 - "data-encoding", 1035 - "data-encoding-macro-internal", 1036 - ] 1037 - 1038 - [[package]] 1039 - name = "data-encoding-macro-internal" 1040 - version = "0.1.16" 1041 - source = "registry+https://github.com/rust-lang/crates.io-index" 1042 - checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" 1043 - dependencies = [ 1044 - "data-encoding", 1045 - "syn 2.0.111", 1046 - ] 1047 - 1048 - [[package]] 1049 - name = "debug_unsafe" 1050 - version = "0.1.3" 1051 - source = "registry+https://github.com/rust-lang/crates.io-index" 1052 - checksum = "85d3cef41d236720ed453e102153a53e4cc3d2fde848c0078a50cf249e8e3e5b" 1053 - 1054 - [[package]] 1055 - name = "der" 1056 - version = "0.7.10" 1057 - source = "registry+https://github.com/rust-lang/crates.io-index" 1058 - checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 1059 - dependencies = [ 1060 - "const-oid", 1061 - "pem-rfc7468", 1062 - "zeroize", 1063 - ] 1064 - 1065 - [[package]] 1066 - name = "deranged" 1067 - version = "0.5.5" 1068 - source = "registry+https://github.com/rust-lang/crates.io-index" 1069 - checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" 1070 - dependencies = [ 1071 - "powerfmt", 1072 - "serde_core", 1073 - ] 1074 - 1075 - [[package]] 1076 - name = "derive_arbitrary" 1077 - version = "1.4.2" 1078 - source = "registry+https://github.com/rust-lang/crates.io-index" 1079 - checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" 1080 - dependencies = [ 1081 - "proc-macro2", 1082 - "quote", 1083 - "syn 2.0.111", 1084 - ] 1085 - 1086 - [[package]] 1087 - name = "derive_more" 1088 - version = "1.0.0" 1089 - source = "registry+https://github.com/rust-lang/crates.io-index" 1090 - checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 1091 - dependencies = [ 1092 - "derive_more-impl", 1093 - ] 1094 - 1095 - [[package]] 1096 - name = "derive_more-impl" 1097 - version = "1.0.0" 1098 - source = "registry+https://github.com/rust-lang/crates.io-index" 1099 - checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 1100 - dependencies = [ 1101 - "proc-macro2", 1102 - "quote", 1103 - "syn 2.0.111", 1104 - "unicode-xid", 1105 - ] 1106 - 1107 - [[package]] 1108 - name = "devicons" 1109 - version = "0.6.12" 1110 - source = "registry+https://github.com/rust-lang/crates.io-index" 1111 - checksum = "830e47e2f330cf4fdd5a958dcef921b9523ffc21ab6713aa5e77ba2cce03904b" 1112 - dependencies = [ 1113 - "lazy_static", 1114 - ] 1115 - 1116 - [[package]] 1117 - name = "dialoguer" 1118 - version = "0.11.0" 1119 - source = "registry+https://github.com/rust-lang/crates.io-index" 1120 - checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" 1121 - dependencies = [ 1122 - "console 0.15.11", 1123 - "fuzzy-matcher", 1124 - "shell-words", 1125 - "thiserror 1.0.69", 1126 - ] 1127 - 1128 - [[package]] 1129 - name = "diatomic-waker" 1130 - version = "0.2.3" 1131 - source = "registry+https://github.com/rust-lang/crates.io-index" 1132 - checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" 1133 - 1134 - [[package]] 1135 - name = "digest" 1136 - version = "0.10.7" 1137 - source = "registry+https://github.com/rust-lang/crates.io-index" 1138 - checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1139 - dependencies = [ 1140 - "block-buffer", 1141 - "const-oid", 1142 - "crypto-common", 1143 - "subtle", 1144 - ] 1145 - 1146 - [[package]] 1147 - name = "dirs" 1148 - version = "6.0.0" 1149 - source = "registry+https://github.com/rust-lang/crates.io-index" 1150 - checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" 1151 - dependencies = [ 1152 - "dirs-sys", 1153 - ] 1154 - 1155 - [[package]] 1156 - name = "dirs-sys" 1157 - version = "0.5.0" 1158 - source = "registry+https://github.com/rust-lang/crates.io-index" 1159 - checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" 1160 - dependencies = [ 1161 - "libc", 1162 - "option-ext", 1163 - "redox_users", 1164 - "windows-sys 0.61.2", 1165 - ] 1166 - 1167 - [[package]] 1168 - name = "displaydoc" 1169 - version = "0.2.5" 1170 - source = "registry+https://github.com/rust-lang/crates.io-index" 1171 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1172 - dependencies = [ 1173 - "proc-macro2", 1174 - "quote", 1175 - "syn 2.0.111", 1176 - ] 1177 - 1178 - [[package]] 1179 - name = "dtparse" 1180 - version = "2.0.1" 1181 - source = "registry+https://github.com/rust-lang/crates.io-index" 1182 - checksum = "23fb403c0926d35af2cc54d961bc2696a10d40725c08360ef69db04a4c201fd7" 1183 - dependencies = [ 1184 - "chrono", 1185 - "lazy_static", 1186 - "num-traits", 1187 - "rust_decimal", 1188 - ] 1189 - 1190 - [[package]] 1191 - name = "dyn-clone" 1192 - version = "1.0.20" 1193 - source = "registry+https://github.com/rust-lang/crates.io-index" 1194 - checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" 1195 - 1196 - [[package]] 1197 - name = "dysnomia-sh" 1198 - version = "0.1.0" 1199 - dependencies = [ 1200 - "ansi_term", 1201 - "anyhow", 1202 - "console_error_panic_hook", 1203 - "futures", 1204 - "getrandom 0.3.4", 1205 - "jacquard", 1206 - "jacquard-repo", 1207 - "js-sys", 1208 - "miette", 1209 - "nu-cmd-extra", 1210 - "nu-cmd-lang", 1211 - "nu-command", 1212 - "nu-engine", 1213 - "nu-parser", 1214 - "nu-protocol", 1215 - "rapidhash", 1216 - "reqwest", 1217 - "scc", 1218 - "serde", 1219 - "serde_ipld_dagcbor", 1220 - "serde_json", 1221 - "url", 1222 - "vfs", 1223 - "wasm-bindgen", 1224 - "wasm-bindgen-futures", 1225 - "web-sys", 1226 - ] 1227 - 1228 - [[package]] 1229 - name = "ecdsa" 1230 - version = "0.16.9" 1231 - source = "registry+https://github.com/rust-lang/crates.io-index" 1232 - checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 1233 - dependencies = [ 1234 - "der", 1235 - "digest", 1236 - "elliptic-curve", 1237 - "rfc6979", 1238 - "signature", 1239 - "spki", 1240 - ] 1241 - 1242 - [[package]] 1243 - name = "ed25519" 1244 - version = "2.2.3" 1245 - source = "registry+https://github.com/rust-lang/crates.io-index" 1246 - checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" 1247 - dependencies = [ 1248 - "pkcs8", 1249 - "signature", 1250 - ] 1251 - 1252 - [[package]] 1253 - name = "ed25519-dalek" 1254 - version = "2.2.0" 1255 - source = "registry+https://github.com/rust-lang/crates.io-index" 1256 - checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" 1257 - dependencies = [ 1258 - "curve25519-dalek", 1259 - "ed25519", 1260 - "rand_core 0.6.4", 1261 - "serde", 1262 - "sha2", 1263 - "subtle", 1264 - "zeroize", 1265 - ] 1266 - 1267 - [[package]] 1268 - name = "either" 1269 - version = "1.15.0" 1270 - source = "registry+https://github.com/rust-lang/crates.io-index" 1271 - checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1272 - 1273 - [[package]] 1274 - name = "elliptic-curve" 1275 - version = "0.13.8" 1276 - source = "registry+https://github.com/rust-lang/crates.io-index" 1277 - checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 1278 - dependencies = [ 1279 - "base16ct", 1280 - "crypto-bigint", 1281 - "digest", 1282 - "ff", 1283 - "generic-array", 1284 - "group", 1285 - "pem-rfc7468", 1286 - "pkcs8", 1287 - "rand_core 0.6.4", 1288 - "sec1", 1289 - "subtle", 1290 - "zeroize", 1291 - ] 1292 - 1293 - [[package]] 1294 - name = "embedded-io" 1295 - version = "0.4.0" 1296 - source = "registry+https://github.com/rust-lang/crates.io-index" 1297 - checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 1298 - 1299 - [[package]] 1300 - name = "embedded-io" 1301 - version = "0.6.1" 1302 - source = "registry+https://github.com/rust-lang/crates.io-index" 1303 - checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 1304 - 1305 - [[package]] 1306 - name = "encode_unicode" 1307 - version = "1.0.0" 1308 - source = "registry+https://github.com/rust-lang/crates.io-index" 1309 - checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" 1310 - 1311 - [[package]] 1312 - name = "encoding_rs" 1313 - version = "0.8.35" 1314 - source = "registry+https://github.com/rust-lang/crates.io-index" 1315 - checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 1316 - dependencies = [ 1317 - "cfg-if", 1318 - ] 1319 - 1320 - [[package]] 1321 - name = "equivalent" 1322 - version = "1.0.2" 1323 - source = "registry+https://github.com/rust-lang/crates.io-index" 1324 - checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1325 - 1326 - [[package]] 1327 - name = "erased-serde" 1328 - version = "0.4.9" 1329 - source = "registry+https://github.com/rust-lang/crates.io-index" 1330 - checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" 1331 - dependencies = [ 1332 - "serde", 1333 - "serde_core", 1334 - "typeid", 1335 - ] 1336 - 1337 - [[package]] 1338 - name = "errno" 1339 - version = "0.3.14" 1340 - source = "registry+https://github.com/rust-lang/crates.io-index" 1341 - checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 1342 - dependencies = [ 1343 - "libc", 1344 - "windows-sys 0.61.2", 1345 - ] 1346 - 1347 - [[package]] 1348 - name = "fancy-regex" 1349 - version = "0.16.2" 1350 - source = "registry+https://github.com/rust-lang/crates.io-index" 1351 - checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" 1352 - dependencies = [ 1353 - "bit-set", 1354 - "regex-automata", 1355 - "regex-syntax", 1356 - ] 1357 - 1358 - [[package]] 1359 - name = "fast-float2" 1360 - version = "0.2.3" 1361 - source = "registry+https://github.com/rust-lang/crates.io-index" 1362 - checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" 1363 - 1364 - [[package]] 1365 - name = "fastrand" 1366 - version = "2.3.0" 1367 - source = "registry+https://github.com/rust-lang/crates.io-index" 1368 - checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1369 - 1370 - [[package]] 1371 - name = "ff" 1372 - version = "0.13.1" 1373 - source = "registry+https://github.com/rust-lang/crates.io-index" 1374 - checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" 1375 - dependencies = [ 1376 - "rand_core 0.6.4", 1377 - "subtle", 1378 - ] 1379 - 1380 - [[package]] 1381 - name = "fiat-crypto" 1382 - version = "0.2.9" 1383 - source = "registry+https://github.com/rust-lang/crates.io-index" 1384 - checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 1385 - 1386 - [[package]] 1387 - name = "filesize" 1388 - version = "0.2.0" 1389 - source = "registry+https://github.com/rust-lang/crates.io-index" 1390 - checksum = "12d741e2415d4e2e5bd1c1d00409d1a8865a57892c2d689b504365655d237d43" 1391 - dependencies = [ 1392 - "winapi", 1393 - ] 1394 - 1395 - [[package]] 1396 - name = "filetime" 1397 - version = "0.2.26" 1398 - source = "registry+https://github.com/rust-lang/crates.io-index" 1399 - checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" 1400 - dependencies = [ 1401 - "cfg-if", 1402 - "libc", 1403 - "libredox", 1404 - "windows-sys 0.60.2", 1405 - ] 1406 - 1407 - [[package]] 1408 - name = "find-msvc-tools" 1409 - version = "0.1.5" 1410 - source = "registry+https://github.com/rust-lang/crates.io-index" 1411 - checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" 1412 - 1413 - [[package]] 1414 - name = "flate2" 1415 - version = "1.1.5" 1416 - source = "registry+https://github.com/rust-lang/crates.io-index" 1417 - checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" 1418 - dependencies = [ 1419 - "crc32fast", 1420 - "libz-rs-sys", 1421 - "miniz_oxide", 1422 - ] 1423 - 1424 - [[package]] 1425 - name = "fluent" 1426 - version = "0.17.0" 1427 - source = "registry+https://github.com/rust-lang/crates.io-index" 1428 - checksum = "8137a6d5a2c50d6b0ebfcb9aaa91a28154e0a70605f112d30cb0cd4a78670477" 1429 - dependencies = [ 1430 - "fluent-bundle", 1431 - "unic-langid", 1432 - ] 1433 - 1434 - [[package]] 1435 - name = "fluent-bundle" 1436 - version = "0.16.0" 1437 - source = "registry+https://github.com/rust-lang/crates.io-index" 1438 - checksum = "01203cb8918f5711e73891b347816d932046f95f54207710bda99beaeb423bf4" 1439 - dependencies = [ 1440 - "fluent-langneg", 1441 - "fluent-syntax", 1442 - "intl-memoizer", 1443 - "intl_pluralrules", 1444 - "rustc-hash", 1445 - "self_cell", 1446 - "smallvec", 1447 - "unic-langid", 1448 - ] 1449 - 1450 - [[package]] 1451 - name = "fluent-langneg" 1452 - version = "0.13.1" 1453 - source = "registry+https://github.com/rust-lang/crates.io-index" 1454 - checksum = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0" 1455 - dependencies = [ 1456 - "unic-langid", 1457 - ] 1458 - 1459 - [[package]] 1460 - name = "fluent-syntax" 1461 - version = "0.12.0" 1462 - source = "registry+https://github.com/rust-lang/crates.io-index" 1463 - checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198" 1464 - dependencies = [ 1465 - "memchr", 1466 - "thiserror 2.0.17", 1467 - ] 1468 - 1469 - [[package]] 1470 - name = "fnv" 1471 - version = "1.0.7" 1472 - source = "registry+https://github.com/rust-lang/crates.io-index" 1473 - checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1474 - 1475 - [[package]] 1476 - name = "foldhash" 1477 - version = "0.1.5" 1478 - source = "registry+https://github.com/rust-lang/crates.io-index" 1479 - checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1480 - 1481 - [[package]] 1482 - name = "form_urlencoded" 1483 - version = "1.2.2" 1484 - source = "registry+https://github.com/rust-lang/crates.io-index" 1485 - checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1486 - dependencies = [ 1487 - "percent-encoding", 1488 - ] 1489 - 1490 - [[package]] 1491 - name = "futf" 1492 - version = "0.1.5" 1493 - source = "registry+https://github.com/rust-lang/crates.io-index" 1494 - checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 1495 - dependencies = [ 1496 - "mac", 1497 - "new_debug_unreachable", 1498 - ] 1499 - 1500 - [[package]] 1501 - name = "futures" 1502 - version = "0.3.31" 1503 - source = "registry+https://github.com/rust-lang/crates.io-index" 1504 - checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 1505 - dependencies = [ 1506 - "futures-channel", 1507 - "futures-core", 1508 - "futures-executor", 1509 - "futures-io", 1510 - "futures-sink", 1511 - "futures-task", 1512 - "futures-util", 1513 - ] 1514 - 1515 - [[package]] 1516 - name = "futures-buffered" 1517 - version = "0.2.12" 1518 - source = "registry+https://github.com/rust-lang/crates.io-index" 1519 - checksum = "a8e0e1f38ec07ba4abbde21eed377082f17ccb988be9d988a5adbf4bafc118fd" 1520 - dependencies = [ 1521 - "cordyceps", 1522 - "diatomic-waker", 1523 - "futures-core", 1524 - "pin-project-lite", 1525 - "spin 0.10.0", 1526 - ] 1527 - 1528 - [[package]] 1529 - name = "futures-channel" 1530 - version = "0.3.31" 1531 - source = "registry+https://github.com/rust-lang/crates.io-index" 1532 - checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 1533 - dependencies = [ 1534 - "futures-core", 1535 - "futures-sink", 1536 - ] 1537 - 1538 - [[package]] 1539 - name = "futures-core" 1540 - version = "0.3.31" 1541 - source = "registry+https://github.com/rust-lang/crates.io-index" 1542 - checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 1543 - 1544 - [[package]] 1545 - name = "futures-executor" 1546 - version = "0.3.31" 1547 - source = "registry+https://github.com/rust-lang/crates.io-index" 1548 - checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 1549 - dependencies = [ 1550 - "futures-core", 1551 - "futures-task", 1552 - "futures-util", 1553 - ] 1554 - 1555 - [[package]] 1556 - name = "futures-io" 1557 - version = "0.3.31" 1558 - source = "registry+https://github.com/rust-lang/crates.io-index" 1559 - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1560 - 1561 - [[package]] 1562 - name = "futures-lite" 1563 - version = "2.6.1" 1564 - source = "registry+https://github.com/rust-lang/crates.io-index" 1565 - checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1566 - dependencies = [ 1567 - "fastrand", 1568 - "futures-core", 1569 - "futures-io", 1570 - "parking", 1571 - "pin-project-lite", 1572 - ] 1573 - 1574 - [[package]] 1575 - name = "futures-macro" 1576 - version = "0.3.31" 1577 - source = "registry+https://github.com/rust-lang/crates.io-index" 1578 - checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1579 - dependencies = [ 1580 - "proc-macro2", 1581 - "quote", 1582 - "syn 2.0.111", 1583 - ] 1584 - 1585 - [[package]] 1586 - name = "futures-sink" 1587 - version = "0.3.31" 1588 - source = "registry+https://github.com/rust-lang/crates.io-index" 1589 - checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 1590 - 1591 - [[package]] 1592 - name = "futures-task" 1593 - version = "0.3.31" 1594 - source = "registry+https://github.com/rust-lang/crates.io-index" 1595 - checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1596 - 1597 - [[package]] 1598 - name = "futures-util" 1599 - version = "0.3.31" 1600 - source = "registry+https://github.com/rust-lang/crates.io-index" 1601 - checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1602 - dependencies = [ 1603 - "futures-channel", 1604 - "futures-core", 1605 - "futures-io", 1606 - "futures-macro", 1607 - "futures-sink", 1608 - "futures-task", 1609 - "memchr", 1610 - "pin-project-lite", 1611 - "pin-utils", 1612 - "slab", 1613 - ] 1614 - 1615 - [[package]] 1616 - name = "fuzzy-matcher" 1617 - version = "0.3.7" 1618 - source = "registry+https://github.com/rust-lang/crates.io-index" 1619 - checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94" 1620 - dependencies = [ 1621 - "thread_local", 1622 - ] 1623 - 1624 - [[package]] 1625 - name = "generator" 1626 - version = "0.8.7" 1627 - source = "registry+https://github.com/rust-lang/crates.io-index" 1628 - checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" 1629 - dependencies = [ 1630 - "cc", 1631 - "cfg-if", 1632 - "libc", 1633 - "log", 1634 - "rustversion", 1635 - "windows 0.61.3", 1636 - ] 1637 - 1638 - [[package]] 1639 - name = "generic-array" 1640 - version = "0.14.9" 1641 - source = "registry+https://github.com/rust-lang/crates.io-index" 1642 - checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 1643 - dependencies = [ 1644 - "typenum", 1645 - "version_check", 1646 - "zeroize", 1647 - ] 1648 - 1649 - [[package]] 1650 - name = "getrandom" 1651 - version = "0.2.16" 1652 - source = "registry+https://github.com/rust-lang/crates.io-index" 1653 - checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 1654 - dependencies = [ 1655 - "cfg-if", 1656 - "js-sys", 1657 - "libc", 1658 - "wasi", 1659 - "wasm-bindgen", 1660 - ] 1661 - 1662 - [[package]] 1663 - name = "getrandom" 1664 - version = "0.3.4" 1665 - source = "registry+https://github.com/rust-lang/crates.io-index" 1666 - checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1667 - dependencies = [ 1668 - "cfg-if", 1669 - "js-sys", 1670 - "libc", 1671 - "r-efi", 1672 - "wasip2", 1673 - "wasm-bindgen", 1674 - ] 1675 - 1676 - [[package]] 1677 - name = "gimli" 1678 - version = "0.32.3" 1679 - source = "registry+https://github.com/rust-lang/crates.io-index" 1680 - checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" 1681 - 1682 - [[package]] 1683 - name = "glob" 1684 - version = "0.3.3" 1685 - source = "registry+https://github.com/rust-lang/crates.io-index" 1686 - checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 1687 - 1688 - [[package]] 1689 - name = "gloo-storage" 1690 - version = "0.3.0" 1691 - source = "registry+https://github.com/rust-lang/crates.io-index" 1692 - checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a" 1693 - dependencies = [ 1694 - "gloo-utils", 1695 - "js-sys", 1696 - "serde", 1697 - "serde_json", 1698 - "thiserror 1.0.69", 1699 - "wasm-bindgen", 1700 - "web-sys", 1701 - ] 1702 - 1703 - [[package]] 1704 - name = "gloo-utils" 1705 - version = "0.2.0" 1706 - source = "registry+https://github.com/rust-lang/crates.io-index" 1707 - checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" 1708 - dependencies = [ 1709 - "js-sys", 1710 - "serde", 1711 - "serde_json", 1712 - "wasm-bindgen", 1713 - "web-sys", 1714 - ] 1715 - 1716 - [[package]] 1717 - name = "group" 1718 - version = "0.13.0" 1719 - source = "registry+https://github.com/rust-lang/crates.io-index" 1720 - checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1721 - dependencies = [ 1722 - "ff", 1723 - "rand_core 0.6.4", 1724 - "subtle", 1725 - ] 1726 - 1727 - [[package]] 1728 - name = "h2" 1729 - version = "0.4.12" 1730 - source = "registry+https://github.com/rust-lang/crates.io-index" 1731 - checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" 1732 - dependencies = [ 1733 - "atomic-waker", 1734 - "bytes", 1735 - "fnv", 1736 - "futures-core", 1737 - "futures-sink", 1738 - "http", 1739 - "indexmap 2.12.1", 1740 - "slab", 1741 - "tokio", 1742 - "tokio-util", 1743 - "tracing", 1744 - ] 1745 - 1746 - [[package]] 1747 - name = "half" 1748 - version = "2.7.1" 1749 - source = "registry+https://github.com/rust-lang/crates.io-index" 1750 - checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 1751 - dependencies = [ 1752 - "cfg-if", 1753 - "crunchy", 1754 - "zerocopy 0.8.31", 1755 - ] 1756 - 1757 - [[package]] 1758 - name = "hash32" 1759 - version = "0.2.1" 1760 - source = "registry+https://github.com/rust-lang/crates.io-index" 1761 - checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 1762 - dependencies = [ 1763 - "byteorder", 1764 - ] 1765 - 1766 - [[package]] 1767 - name = "hashbrown" 1768 - version = "0.12.3" 1769 - source = "registry+https://github.com/rust-lang/crates.io-index" 1770 - checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1771 - 1772 - [[package]] 1773 - name = "hashbrown" 1774 - version = "0.14.5" 1775 - source = "registry+https://github.com/rust-lang/crates.io-index" 1776 - checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1777 - 1778 - [[package]] 1779 - name = "hashbrown" 1780 - version = "0.15.5" 1781 - source = "registry+https://github.com/rust-lang/crates.io-index" 1782 - checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1783 - dependencies = [ 1784 - "allocator-api2", 1785 - "equivalent", 1786 - "foldhash", 1787 - ] 1788 - 1789 - [[package]] 1790 - name = "hashbrown" 1791 - version = "0.16.1" 1792 - source = "registry+https://github.com/rust-lang/crates.io-index" 1793 - checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 1794 - 1795 - [[package]] 1796 - name = "heapless" 1797 - version = "0.7.17" 1798 - source = "registry+https://github.com/rust-lang/crates.io-index" 1799 - checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 1800 - dependencies = [ 1801 - "atomic-polyfill", 1802 - "hash32", 1803 - "rustc_version", 1804 - "serde", 1805 - "spin 0.9.8", 1806 - "stable_deref_trait", 1807 - ] 1808 - 1809 - [[package]] 1810 - name = "heck" 1811 - version = "0.4.1" 1812 - source = "registry+https://github.com/rust-lang/crates.io-index" 1813 - checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1814 - 1815 - [[package]] 1816 - name = "heck" 1817 - version = "0.5.0" 1818 - source = "registry+https://github.com/rust-lang/crates.io-index" 1819 - checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1820 - 1821 - [[package]] 1822 - name = "hex" 1823 - version = "0.4.3" 1824 - source = "registry+https://github.com/rust-lang/crates.io-index" 1825 - checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1826 - 1827 - [[package]] 1828 - name = "hex_fmt" 1829 - version = "0.3.0" 1830 - source = "registry+https://github.com/rust-lang/crates.io-index" 1831 - checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" 1832 - 1833 - [[package]] 1834 - name = "hmac" 1835 - version = "0.12.1" 1836 - source = "registry+https://github.com/rust-lang/crates.io-index" 1837 - checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1838 - dependencies = [ 1839 - "digest", 1840 - ] 1841 - 1842 - [[package]] 1843 - name = "html5ever" 1844 - version = "0.27.0" 1845 - source = "registry+https://github.com/rust-lang/crates.io-index" 1846 - checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" 1847 - dependencies = [ 1848 - "log", 1849 - "mac", 1850 - "markup5ever", 1851 - "proc-macro2", 1852 - "quote", 1853 - "syn 2.0.111", 1854 - ] 1855 - 1856 - [[package]] 1857 - name = "http" 1858 - version = "1.4.0" 1859 - source = "registry+https://github.com/rust-lang/crates.io-index" 1860 - checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 1861 - dependencies = [ 1862 - "bytes", 1863 - "itoa", 1864 - ] 1865 - 1866 - [[package]] 1867 - name = "http-body" 1868 - version = "1.0.1" 1869 - source = "registry+https://github.com/rust-lang/crates.io-index" 1870 - checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 1871 - dependencies = [ 1872 - "bytes", 1873 - "http", 1874 - ] 1875 - 1876 - [[package]] 1877 - name = "http-body-util" 1878 - version = "0.1.3" 1879 - source = "registry+https://github.com/rust-lang/crates.io-index" 1880 - checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 1881 - dependencies = [ 1882 - "bytes", 1883 - "futures-core", 1884 - "http", 1885 - "http-body", 1886 - "pin-project-lite", 1887 - ] 1888 - 1889 - [[package]] 1890 - name = "httparse" 1891 - version = "1.10.1" 1892 - source = "registry+https://github.com/rust-lang/crates.io-index" 1893 - checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 1894 - 1895 - [[package]] 1896 - name = "human-date-parser" 1897 - version = "0.3.1" 1898 - source = "registry+https://github.com/rust-lang/crates.io-index" 1899 - checksum = "406f83c56de4b2c9183be52ae9a4fefa22c0e0c3d3d7ef80be26eaee11c7110e" 1900 - dependencies = [ 1901 - "chrono", 1902 - "pest", 1903 - "pest_consume", 1904 - "pest_derive", 1905 - "thiserror 1.0.69", 1906 - ] 1907 - 1908 - [[package]] 1909 - name = "hyper" 1910 - version = "1.8.1" 1911 - source = "registry+https://github.com/rust-lang/crates.io-index" 1912 - checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" 1913 - dependencies = [ 1914 - "atomic-waker", 1915 - "bytes", 1916 - "futures-channel", 1917 - "futures-core", 1918 - "h2", 1919 - "http", 1920 - "http-body", 1921 - "httparse", 1922 - "itoa", 1923 - "pin-project-lite", 1924 - "pin-utils", 1925 - "smallvec", 1926 - "tokio", 1927 - "want", 1928 - ] 1929 - 1930 - [[package]] 1931 - name = "hyper-rustls" 1932 - version = "0.27.7" 1933 - source = "registry+https://github.com/rust-lang/crates.io-index" 1934 - checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 1935 - dependencies = [ 1936 - "http", 1937 - "hyper", 1938 - "hyper-util", 1939 - "rustls", 1940 - "rustls-pki-types", 1941 - "tokio", 1942 - "tokio-rustls", 1943 - "tower-service", 1944 - "webpki-roots", 1945 - ] 1946 - 1947 - [[package]] 1948 - name = "hyper-util" 1949 - version = "0.1.19" 1950 - source = "registry+https://github.com/rust-lang/crates.io-index" 1951 - checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" 1952 - dependencies = [ 1953 - "base64", 1954 - "bytes", 1955 - "futures-channel", 1956 - "futures-core", 1957 - "futures-util", 1958 - "http", 1959 - "http-body", 1960 - "hyper", 1961 - "ipnet", 1962 - "libc", 1963 - "percent-encoding", 1964 - "pin-project-lite", 1965 - "socket2", 1966 - "system-configuration", 1967 - "tokio", 1968 - "tower-service", 1969 - "tracing", 1970 - "windows-registry", 1971 - ] 1972 - 1973 - [[package]] 1974 - name = "iana-time-zone" 1975 - version = "0.1.64" 1976 - source = "registry+https://github.com/rust-lang/crates.io-index" 1977 - checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" 1978 - dependencies = [ 1979 - "android_system_properties", 1980 - "core-foundation-sys", 1981 - "iana-time-zone-haiku", 1982 - "js-sys", 1983 - "log", 1984 - "wasm-bindgen", 1985 - "windows-core 0.62.2", 1986 - ] 1987 - 1988 - [[package]] 1989 - name = "iana-time-zone-haiku" 1990 - version = "0.1.2" 1991 - source = "registry+https://github.com/rust-lang/crates.io-index" 1992 - checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1993 - dependencies = [ 1994 - "cc", 1995 - ] 1996 - 1997 - [[package]] 1998 - name = "icu_collections" 1999 - version = "2.1.1" 2000 - source = "registry+https://github.com/rust-lang/crates.io-index" 2001 - checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" 2002 - dependencies = [ 2003 - "displaydoc", 2004 - "potential_utf", 2005 - "yoke", 2006 - "zerofrom", 2007 - "zerovec", 2008 - ] 2009 - 2010 - [[package]] 2011 - name = "icu_locale_core" 2012 - version = "2.1.1" 2013 - source = "registry+https://github.com/rust-lang/crates.io-index" 2014 - checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" 2015 - dependencies = [ 2016 - "displaydoc", 2017 - "litemap", 2018 - "tinystr", 2019 - "writeable", 2020 - "zerovec", 2021 - ] 2022 - 2023 - [[package]] 2024 - name = "icu_normalizer" 2025 - version = "2.1.1" 2026 - source = "registry+https://github.com/rust-lang/crates.io-index" 2027 - checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" 2028 - dependencies = [ 2029 - "icu_collections", 2030 - "icu_normalizer_data", 2031 - "icu_properties", 2032 - "icu_provider", 2033 - "smallvec", 2034 - "zerovec", 2035 - ] 2036 - 2037 - [[package]] 2038 - name = "icu_normalizer_data" 2039 - version = "2.1.1" 2040 - source = "registry+https://github.com/rust-lang/crates.io-index" 2041 - checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" 2042 - 2043 - [[package]] 2044 - name = "icu_properties" 2045 - version = "2.1.2" 2046 - source = "registry+https://github.com/rust-lang/crates.io-index" 2047 - checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" 2048 - dependencies = [ 2049 - "icu_collections", 2050 - "icu_locale_core", 2051 - "icu_properties_data", 2052 - "icu_provider", 2053 - "zerotrie", 2054 - "zerovec", 2055 - ] 2056 - 2057 - [[package]] 2058 - name = "icu_properties_data" 2059 - version = "2.1.2" 2060 - source = "registry+https://github.com/rust-lang/crates.io-index" 2061 - checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" 2062 - 2063 - [[package]] 2064 - name = "icu_provider" 2065 - version = "2.1.1" 2066 - source = "registry+https://github.com/rust-lang/crates.io-index" 2067 - checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" 2068 - dependencies = [ 2069 - "displaydoc", 2070 - "icu_locale_core", 2071 - "writeable", 2072 - "yoke", 2073 - "zerofrom", 2074 - "zerotrie", 2075 - "zerovec", 2076 - ] 2077 - 2078 - [[package]] 2079 - name = "ident_case" 2080 - version = "1.0.1" 2081 - source = "registry+https://github.com/rust-lang/crates.io-index" 2082 - checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2083 - 2084 - [[package]] 2085 - name = "idna" 2086 - version = "1.1.0" 2087 - source = "registry+https://github.com/rust-lang/crates.io-index" 2088 - checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 2089 - dependencies = [ 2090 - "idna_adapter", 2091 - "smallvec", 2092 - "utf8_iter", 2093 - ] 2094 - 2095 - [[package]] 2096 - name = "idna_adapter" 2097 - version = "1.2.1" 2098 - source = "registry+https://github.com/rust-lang/crates.io-index" 2099 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 2100 - dependencies = [ 2101 - "icu_normalizer", 2102 - "icu_properties", 2103 - ] 2104 - 2105 - [[package]] 2106 - name = "indexmap" 2107 - version = "1.9.3" 2108 - source = "registry+https://github.com/rust-lang/crates.io-index" 2109 - checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 2110 - dependencies = [ 2111 - "autocfg", 2112 - "hashbrown 0.12.3", 2113 - "serde", 2114 - ] 2115 - 2116 - [[package]] 2117 - name = "indexmap" 2118 - version = "2.12.1" 2119 - source = "registry+https://github.com/rust-lang/crates.io-index" 2120 - checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" 2121 - dependencies = [ 2122 - "equivalent", 2123 - "hashbrown 0.16.1", 2124 - "serde", 2125 - "serde_core", 2126 - ] 2127 - 2128 - [[package]] 2129 - name = "indicatif" 2130 - version = "0.18.3" 2131 - source = "registry+https://github.com/rust-lang/crates.io-index" 2132 - checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88" 2133 - dependencies = [ 2134 - "console 0.16.1", 2135 - "portable-atomic", 2136 - "unicode-width 0.2.2", 2137 - "unit-prefix", 2138 - "web-time", 2139 - ] 2140 - 2141 - [[package]] 2142 - name = "indoc" 2143 - version = "2.0.7" 2144 - source = "registry+https://github.com/rust-lang/crates.io-index" 2145 - checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" 2146 - dependencies = [ 2147 - "rustversion", 2148 - ] 2149 - 2150 - [[package]] 2151 - name = "intl-memoizer" 2152 - version = "0.5.3" 2153 - source = "registry+https://github.com/rust-lang/crates.io-index" 2154 - checksum = "310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f" 2155 - dependencies = [ 2156 - "type-map", 2157 - "unic-langid", 2158 - ] 2159 - 2160 - [[package]] 2161 - name = "intl_pluralrules" 2162 - version = "7.0.2" 2163 - source = "registry+https://github.com/rust-lang/crates.io-index" 2164 - checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" 2165 - dependencies = [ 2166 - "unic-langid", 2167 - ] 2168 - 2169 - [[package]] 2170 - name = "inventory" 2171 - version = "0.3.21" 2172 - source = "registry+https://github.com/rust-lang/crates.io-index" 2173 - checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" 2174 - dependencies = [ 2175 - "rustversion", 2176 - ] 2177 - 2178 - [[package]] 2179 - name = "ipld-core" 2180 - version = "0.4.2" 2181 - source = "registry+https://github.com/rust-lang/crates.io-index" 2182 - checksum = "104718b1cc124d92a6d01ca9c9258a7df311405debb3408c445a36452f9bf8db" 2183 - dependencies = [ 2184 - "cid", 2185 - "serde", 2186 - "serde_bytes", 2187 - ] 2188 - 2189 - [[package]] 2190 - name = "ipnet" 2191 - version = "2.11.0" 2192 - source = "registry+https://github.com/rust-lang/crates.io-index" 2193 - checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 2194 - 2195 - [[package]] 2196 - name = "iri-string" 2197 - version = "0.7.9" 2198 - source = "registry+https://github.com/rust-lang/crates.io-index" 2199 - checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" 2200 - dependencies = [ 2201 - "memchr", 2202 - "serde", 2203 - ] 2204 - 2205 - [[package]] 2206 - name = "iroh-car" 2207 - version = "0.5.1" 2208 - source = "registry+https://github.com/rust-lang/crates.io-index" 2209 - checksum = "cb7f8cd4cb9aa083fba8b52e921764252d0b4dcb1cd6d120b809dbfe1106e81a" 2210 - dependencies = [ 2211 - "anyhow", 2212 - "cid", 2213 - "futures", 2214 - "serde", 2215 - "serde_ipld_dagcbor", 2216 - "thiserror 1.0.69", 2217 - "tokio", 2218 - "unsigned-varint 0.7.2", 2219 - ] 2220 - 2221 - [[package]] 2222 - name = "is_ci" 2223 - version = "1.2.0" 2224 - source = "registry+https://github.com/rust-lang/crates.io-index" 2225 - checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" 2226 - 2227 - [[package]] 2228 - name = "is_debug" 2229 - version = "1.1.0" 2230 - source = "registry+https://github.com/rust-lang/crates.io-index" 2231 - checksum = "1fe266d2e243c931d8190177f20bf7f24eed45e96f39e87dc49a27b32d12d407" 2232 - 2233 - [[package]] 2234 - name = "is_terminal_polyfill" 2235 - version = "1.70.2" 2236 - source = "registry+https://github.com/rust-lang/crates.io-index" 2237 - checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 2238 - 2239 - [[package]] 2240 - name = "itertools" 2241 - version = "0.11.0" 2242 - source = "registry+https://github.com/rust-lang/crates.io-index" 2243 - checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 2244 - dependencies = [ 2245 - "either", 2246 - ] 2247 - 2248 - [[package]] 2249 - name = "itertools" 2250 - version = "0.13.0" 2251 - source = "registry+https://github.com/rust-lang/crates.io-index" 2252 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 2253 - dependencies = [ 2254 - "either", 2255 - ] 2256 - 2257 - [[package]] 2258 - name = "itertools" 2259 - version = "0.14.0" 2260 - source = "registry+https://github.com/rust-lang/crates.io-index" 2261 - checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 2262 - dependencies = [ 2263 - "either", 2264 - ] 2265 - 2266 - [[package]] 2267 - name = "itoa" 2268 - version = "1.0.15" 2269 - source = "registry+https://github.com/rust-lang/crates.io-index" 2270 - checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 2271 - 2272 - [[package]] 2273 - name = "jacquard" 2274 - version = "0.9.4" 2275 - dependencies = [ 2276 - "bytes", 2277 - "getrandom 0.2.16", 2278 - "gloo-storage", 2279 - "http", 2280 - "jacquard-api", 2281 - "jacquard-common", 2282 - "jacquard-identity", 2283 - "jacquard-oauth", 2284 - "jose-jwk", 2285 - "miette", 2286 - "regex", 2287 - "regex-lite", 2288 - "reqwest", 2289 - "ring", 2290 - "serde", 2291 - "serde_html_form", 2292 - "serde_json", 2293 - "smol_str", 2294 - "thiserror 2.0.17", 2295 - "tokio", 2296 - "trait-variant", 2297 - "url", 2298 - "webpage", 2299 - ] 2300 - 2301 - [[package]] 2302 - name = "jacquard-api" 2303 - version = "0.9.2" 2304 - dependencies = [ 2305 - "bon", 2306 - "bytes", 2307 - "jacquard-common", 2308 - "jacquard-derive", 2309 - "jacquard-lexicon", 2310 - "miette", 2311 - "rustversion", 2312 - "serde", 2313 - "serde_bytes", 2314 - "serde_ipld_dagcbor", 2315 - "thiserror 2.0.17", 2316 - "unicode-segmentation", 2317 - ] 2318 - 2319 - [[package]] 2320 - name = "jacquard-common" 2321 - version = "0.9.2" 2322 - dependencies = [ 2323 - "base64", 2324 - "bon", 2325 - "bytes", 2326 - "chrono", 2327 - "cid", 2328 - "ed25519-dalek", 2329 - "getrandom 0.2.16", 2330 - "getrandom 0.3.4", 2331 - "http", 2332 - "ipld-core", 2333 - "k256", 2334 - "langtag", 2335 - "miette", 2336 - "multibase", 2337 - "multihash", 2338 - "ouroboros", 2339 - "p256", 2340 - "postcard", 2341 - "rand 0.9.2", 2342 - "regex", 2343 - "regex-lite", 2344 - "reqwest", 2345 - "ring", 2346 - "serde", 2347 - "serde_bytes", 2348 - "serde_html_form", 2349 - "serde_ipld_dagcbor", 2350 - "serde_json", 2351 - "signature", 2352 - "smol_str", 2353 - "thiserror 2.0.17", 2354 - "tokio", 2355 - "tokio-util", 2356 - "trait-variant", 2357 - "url", 2358 - ] 2359 - 2360 - [[package]] 2361 - name = "jacquard-derive" 2362 - version = "0.9.4" 2363 - dependencies = [ 2364 - "heck 0.5.0", 2365 - "jacquard-lexicon", 2366 - "proc-macro2", 2367 - "quote", 2368 - "syn 2.0.111", 2369 - ] 2370 - 2371 - [[package]] 2372 - name = "jacquard-identity" 2373 - version = "0.9.2" 2374 - dependencies = [ 2375 - "bon", 2376 - "bytes", 2377 - "http", 2378 - "jacquard-api", 2379 - "jacquard-common", 2380 - "jacquard-lexicon", 2381 - "miette", 2382 - "mini-moka", 2383 - "n0-future", 2384 - "percent-encoding", 2385 - "reqwest", 2386 - "ring", 2387 - "serde", 2388 - "serde_html_form", 2389 - "serde_json", 2390 - "thiserror 2.0.17", 2391 - "tokio", 2392 - "trait-variant", 2393 - "url", 2394 - "urlencoding", 2395 - ] 2396 - 2397 - [[package]] 2398 - name = "jacquard-lexicon" 2399 - version = "0.9.2" 2400 - dependencies = [ 2401 - "cid", 2402 - "dashmap", 2403 - "heck 0.5.0", 2404 - "inventory", 2405 - "jacquard-common", 2406 - "miette", 2407 - "multihash", 2408 - "prettyplease", 2409 - "proc-macro2", 2410 - "quote", 2411 - "serde", 2412 - "serde_ipld_dagcbor", 2413 - "serde_json", 2414 - "serde_repr", 2415 - "serde_with", 2416 - "sha2", 2417 - "syn 2.0.111", 2418 - "thiserror 2.0.17", 2419 - "unicode-segmentation", 2420 - ] 2421 - 2422 - [[package]] 2423 - name = "jacquard-oauth" 2424 - version = "0.9.2" 2425 - dependencies = [ 2426 - "base64", 2427 - "bytes", 2428 - "chrono", 2429 - "dashmap", 2430 - "elliptic-curve", 2431 - "http", 2432 - "jacquard-common", 2433 - "jacquard-identity", 2434 - "jose-jwa", 2435 - "jose-jwk", 2436 - "miette", 2437 - "p256", 2438 - "rand 0.8.5", 2439 - "ring", 2440 - "serde", 2441 - "serde_html_form", 2442 - "serde_json", 2443 - "sha2", 2444 - "smol_str", 2445 - "thiserror 2.0.17", 2446 - "tokio", 2447 - "trait-variant", 2448 - "url", 2449 - ] 2450 - 2451 - [[package]] 2452 - name = "jacquard-repo" 2453 - version = "0.9.4" 2454 - dependencies = [ 2455 - "bytes", 2456 - "cid", 2457 - "ed25519-dalek", 2458 - "iroh-car", 2459 - "jacquard-common", 2460 - "jacquard-derive", 2461 - "k256", 2462 - "miette", 2463 - "multihash", 2464 - "n0-future", 2465 - "p256", 2466 - "serde", 2467 - "serde_bytes", 2468 - "serde_ipld_dagcbor", 2469 - "sha2", 2470 - "smol_str", 2471 - "thiserror 2.0.17", 2472 - "tokio", 2473 - "trait-variant", 2474 - ] 2475 - 2476 - [[package]] 2477 - name = "jose-b64" 2478 - version = "0.1.2" 2479 - source = "registry+https://github.com/rust-lang/crates.io-index" 2480 - checksum = "bec69375368709666b21c76965ce67549f2d2db7605f1f8707d17c9656801b56" 2481 - dependencies = [ 2482 - "base64ct", 2483 - "serde", 2484 - "subtle", 2485 - "zeroize", 2486 - ] 2487 - 2488 - [[package]] 2489 - name = "jose-jwa" 2490 - version = "0.1.2" 2491 - source = "registry+https://github.com/rust-lang/crates.io-index" 2492 - checksum = "9ab78e053fe886a351d67cf0d194c000f9d0dcb92906eb34d853d7e758a4b3a7" 2493 - dependencies = [ 2494 - "serde", 2495 - ] 2496 - 2497 - [[package]] 2498 - name = "jose-jwk" 2499 - version = "0.1.2" 2500 - source = "registry+https://github.com/rust-lang/crates.io-index" 2501 - checksum = "280fa263807fe0782ecb6f2baadc28dffc04e00558a58e33bfdb801d11fd58e7" 2502 - dependencies = [ 2503 - "jose-b64", 2504 - "jose-jwa", 2505 - "p256", 2506 - "p384", 2507 - "rsa", 2508 - "serde", 2509 - "zeroize", 2510 - ] 2511 - 2512 - [[package]] 2513 - name = "js-sys" 2514 - version = "0.3.83" 2515 - source = "registry+https://github.com/rust-lang/crates.io-index" 2516 - checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" 2517 - dependencies = [ 2518 - "once_cell", 2519 - "wasm-bindgen", 2520 - ] 2521 - 2522 - [[package]] 2523 - name = "k256" 2524 - version = "0.13.4" 2525 - source = "registry+https://github.com/rust-lang/crates.io-index" 2526 - checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" 2527 - dependencies = [ 2528 - "cfg-if", 2529 - "ecdsa", 2530 - "elliptic-curve", 2531 - "once_cell", 2532 - "sha2", 2533 - "signature", 2534 - ] 2535 - 2536 - [[package]] 2537 - name = "langtag" 2538 - version = "0.4.0" 2539 - source = "registry+https://github.com/rust-lang/crates.io-index" 2540 - checksum = "9ecb4c689a30e48ebeaa14237f34037e300dd072e6ad21a9ec72e810ff3c6600" 2541 - dependencies = [ 2542 - "serde", 2543 - "static-regular-grammar", 2544 - "thiserror 1.0.69", 2545 - ] 2546 - 2547 - [[package]] 2548 - name = "lazy_static" 2549 - version = "1.5.0" 2550 - source = "registry+https://github.com/rust-lang/crates.io-index" 2551 - checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2552 - dependencies = [ 2553 - "spin 0.9.8", 2554 - ] 2555 - 2556 - [[package]] 2557 - name = "lean_string" 2558 - version = "0.5.1" 2559 - source = "registry+https://github.com/rust-lang/crates.io-index" 2560 - checksum = "962df00ba70ac8d5ca5c064e17e5c3d090c087fd8d21aa45096c716b169da514" 2561 - dependencies = [ 2562 - "castaway", 2563 - "itoa", 2564 - "ryu", 2565 - "serde", 2566 - ] 2567 - 2568 - [[package]] 2569 - name = "libc" 2570 - version = "0.2.178" 2571 - source = "registry+https://github.com/rust-lang/crates.io-index" 2572 - checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" 2573 - 2574 - [[package]] 2575 - name = "libloading" 2576 - version = "0.8.9" 2577 - source = "registry+https://github.com/rust-lang/crates.io-index" 2578 - checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 2579 - dependencies = [ 2580 - "cfg-if", 2581 - "windows-link 0.2.1", 2582 - ] 2583 - 2584 - [[package]] 2585 - name = "libm" 2586 - version = "0.2.15" 2587 - source = "registry+https://github.com/rust-lang/crates.io-index" 2588 - checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 2589 - 2590 - [[package]] 2591 - name = "libproc" 2592 - version = "0.14.11" 2593 - source = "registry+https://github.com/rust-lang/crates.io-index" 2594 - checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" 2595 - dependencies = [ 2596 - "bindgen", 2597 - "errno", 2598 - "libc", 2599 - ] 2600 - 2601 - [[package]] 2602 - name = "libredox" 2603 - version = "0.1.10" 2604 - source = "registry+https://github.com/rust-lang/crates.io-index" 2605 - checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" 2606 - dependencies = [ 2607 - "bitflags", 2608 - "libc", 2609 - "redox_syscall", 2610 - ] 2611 - 2612 - [[package]] 2613 - name = "libz-rs-sys" 2614 - version = "0.5.4" 2615 - source = "registry+https://github.com/rust-lang/crates.io-index" 2616 - checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c" 2617 - dependencies = [ 2618 - "zlib-rs", 2619 - ] 2620 - 2621 - [[package]] 2622 - name = "linked-hash-map" 2623 - version = "0.5.6" 2624 - source = "registry+https://github.com/rust-lang/crates.io-index" 2625 - checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 2626 - dependencies = [ 2627 - "serde", 2628 - ] 2629 - 2630 - [[package]] 2631 - name = "linux-raw-sys" 2632 - version = "0.4.15" 2633 - source = "registry+https://github.com/rust-lang/crates.io-index" 2634 - checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 2635 - 2636 - [[package]] 2637 - name = "linux-raw-sys" 2638 - version = "0.11.0" 2639 - source = "registry+https://github.com/rust-lang/crates.io-index" 2640 - checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 2641 - 2642 - [[package]] 2643 - name = "litemap" 2644 - version = "0.8.1" 2645 - source = "registry+https://github.com/rust-lang/crates.io-index" 2646 - checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" 2647 - 2648 - [[package]] 2649 - name = "lock_api" 2650 - version = "0.4.14" 2651 - source = "registry+https://github.com/rust-lang/crates.io-index" 2652 - checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 2653 - dependencies = [ 2654 - "scopeguard", 2655 - ] 2656 - 2657 - [[package]] 2658 - name = "log" 2659 - version = "0.4.29" 2660 - source = "registry+https://github.com/rust-lang/crates.io-index" 2661 - checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 2662 - 2663 - [[package]] 2664 - name = "loom" 2665 - version = "0.7.2" 2666 - source = "registry+https://github.com/rust-lang/crates.io-index" 2667 - checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 2668 - dependencies = [ 2669 - "cfg-if", 2670 - "generator", 2671 - "scoped-tls", 2672 - "tracing", 2673 - "tracing-subscriber", 2674 - ] 2675 - 2676 - [[package]] 2677 - name = "lru" 2678 - version = "0.12.5" 2679 - source = "registry+https://github.com/rust-lang/crates.io-index" 2680 - checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 2681 - dependencies = [ 2682 - "hashbrown 0.15.5", 2683 - ] 2684 - 2685 - [[package]] 2686 - name = "lru-slab" 2687 - version = "0.1.2" 2688 - source = "registry+https://github.com/rust-lang/crates.io-index" 2689 - checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 2690 - 2691 - [[package]] 2692 - name = "lscolors" 2693 - version = "0.20.0" 2694 - source = "registry+https://github.com/rust-lang/crates.io-index" 2695 - checksum = "61183da5de8ba09a58e330d55e5ea796539d8443bd00fdeb863eac39724aa4ab" 2696 - dependencies = [ 2697 - "aho-corasick", 2698 - "nu-ansi-term", 2699 - ] 2700 - 2701 - [[package]] 2702 - name = "mac" 2703 - version = "0.1.1" 2704 - source = "registry+https://github.com/rust-lang/crates.io-index" 2705 - checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 2706 - 2707 - [[package]] 2708 - name = "mach2" 2709 - version = "0.4.3" 2710 - source = "registry+https://github.com/rust-lang/crates.io-index" 2711 - checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" 2712 - dependencies = [ 2713 - "libc", 2714 - ] 2715 - 2716 - [[package]] 2717 - name = "markup5ever" 2718 - version = "0.12.1" 2719 - source = "registry+https://github.com/rust-lang/crates.io-index" 2720 - checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" 2721 - dependencies = [ 2722 - "log", 2723 - "phf 0.11.3", 2724 - "phf_codegen", 2725 - "string_cache", 2726 - "string_cache_codegen", 2727 - "tendril", 2728 - ] 2729 - 2730 - [[package]] 2731 - name = "markup5ever_rcdom" 2732 - version = "0.3.0" 2733 - source = "registry+https://github.com/rust-lang/crates.io-index" 2734 - checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" 2735 - dependencies = [ 2736 - "html5ever", 2737 - "markup5ever", 2738 - "tendril", 2739 - "xml5ever", 2740 - ] 2741 - 2742 - [[package]] 2743 - name = "match-lookup" 2744 - version = "0.1.1" 2745 - source = "registry+https://github.com/rust-lang/crates.io-index" 2746 - checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" 2747 - dependencies = [ 2748 - "proc-macro2", 2749 - "quote", 2750 - "syn 1.0.109", 2751 - ] 2752 - 2753 - [[package]] 2754 - name = "matchers" 2755 - version = "0.2.0" 2756 - source = "registry+https://github.com/rust-lang/crates.io-index" 2757 - checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 2758 - dependencies = [ 2759 - "regex-automata", 2760 - ] 2761 - 2762 - [[package]] 2763 - name = "md-5" 2764 - version = "0.10.6" 2765 - source = "registry+https://github.com/rust-lang/crates.io-index" 2766 - checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2767 - dependencies = [ 2768 - "cfg-if", 2769 - "digest", 2770 - ] 2771 - 2772 - [[package]] 2773 - name = "memchr" 2774 - version = "2.7.6" 2775 - source = "registry+https://github.com/rust-lang/crates.io-index" 2776 - checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 2777 - 2778 - [[package]] 2779 - name = "memoffset" 2780 - version = "0.9.1" 2781 - source = "registry+https://github.com/rust-lang/crates.io-index" 2782 - checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 2783 - dependencies = [ 2784 - "autocfg", 2785 - ] 2786 - 2787 - [[package]] 2788 - name = "miette" 2789 - version = "7.6.0" 2790 - source = "registry+https://github.com/rust-lang/crates.io-index" 2791 - checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" 2792 - dependencies = [ 2793 - "backtrace", 2794 - "backtrace-ext", 2795 - "cfg-if", 2796 - "miette-derive", 2797 - "owo-colors", 2798 - "supports-color", 2799 - "supports-hyperlinks", 2800 - "supports-unicode", 2801 - "terminal_size", 2802 - "textwrap", 2803 - "unicode-width 0.1.14", 2804 - ] 2805 - 2806 - [[package]] 2807 - name = "miette-derive" 2808 - version = "7.6.0" 2809 - source = "registry+https://github.com/rust-lang/crates.io-index" 2810 - checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" 2811 - dependencies = [ 2812 - "proc-macro2", 2813 - "quote", 2814 - "syn 2.0.111", 2815 - ] 2816 - 2817 - [[package]] 2818 - name = "mime" 2819 - version = "0.3.17" 2820 - source = "registry+https://github.com/rust-lang/crates.io-index" 2821 - checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2822 - 2823 - [[package]] 2824 - name = "mime_guess" 2825 - version = "2.0.5" 2826 - source = "registry+https://github.com/rust-lang/crates.io-index" 2827 - checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 2828 - dependencies = [ 2829 - "mime", 2830 - "unicase", 2831 - ] 2832 - 2833 - [[package]] 2834 - name = "mini-moka" 2835 - version = "0.10.99" 2836 - dependencies = [ 2837 - "crossbeam-channel", 2838 - "crossbeam-utils", 2839 - "dashmap", 2840 - "smallvec", 2841 - "tagptr", 2842 - "triomphe", 2843 - "web-time", 2844 - ] 2845 - 2846 - [[package]] 2847 - name = "minimal-lexical" 2848 - version = "0.2.1" 2849 - source = "registry+https://github.com/rust-lang/crates.io-index" 2850 - checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2851 - 2852 - [[package]] 2853 - name = "miniz_oxide" 2854 - version = "0.8.9" 2855 - source = "registry+https://github.com/rust-lang/crates.io-index" 2856 - checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 2857 - dependencies = [ 2858 - "adler2", 2859 - "simd-adler32", 2860 - ] 2861 - 2862 - [[package]] 2863 - name = "mio" 2864 - version = "1.1.1" 2865 - source = "registry+https://github.com/rust-lang/crates.io-index" 2866 - checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 2867 - dependencies = [ 2868 - "libc", 2869 - "wasi", 2870 - "windows-sys 0.61.2", 2871 - ] 2872 - 2873 - [[package]] 2874 - name = "multibase" 2875 - version = "0.9.2" 2876 - source = "registry+https://github.com/rust-lang/crates.io-index" 2877 - checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" 2878 - dependencies = [ 2879 - "base-x", 2880 - "base256emoji", 2881 - "data-encoding", 2882 - "data-encoding-macro", 2883 - ] 2884 - 2885 - [[package]] 2886 - name = "multihash" 2887 - version = "0.19.3" 2888 - source = "registry+https://github.com/rust-lang/crates.io-index" 2889 - checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" 2890 - dependencies = [ 2891 - "core2", 2892 - "serde", 2893 - "unsigned-varint 0.8.0", 2894 - ] 2895 - 2896 - [[package]] 2897 - name = "n0-future" 2898 - version = "0.1.3" 2899 - source = "registry+https://github.com/rust-lang/crates.io-index" 2900 - checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 2901 - dependencies = [ 2902 - "cfg_aliases", 2903 - "derive_more", 2904 - "futures-buffered", 2905 - "futures-lite", 2906 - "futures-util", 2907 - "js-sys", 2908 - "pin-project", 2909 - "send_wrapper", 2910 - "tokio", 2911 - "tokio-util", 2912 - "wasm-bindgen", 2913 - "wasm-bindgen-futures", 2914 - "web-time", 2915 - ] 2916 - 2917 - [[package]] 2918 - name = "new_debug_unreachable" 2919 - version = "1.0.6" 2920 - source = "registry+https://github.com/rust-lang/crates.io-index" 2921 - checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 2922 - 2923 - [[package]] 2924 - name = "nix" 2925 - version = "0.30.1" 2926 - source = "registry+https://github.com/rust-lang/crates.io-index" 2927 - checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" 2928 - dependencies = [ 2929 - "bitflags", 2930 - "cfg-if", 2931 - "cfg_aliases", 2932 - "libc", 2933 - ] 2934 - 2935 - [[package]] 2936 - name = "nom" 2937 - version = "7.1.3" 2938 - source = "registry+https://github.com/rust-lang/crates.io-index" 2939 - checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2940 - dependencies = [ 2941 - "memchr", 2942 - "minimal-lexical", 2943 - ] 2944 - 2945 - [[package]] 2946 - name = "ntapi" 2947 - version = "0.4.1" 2948 - source = "registry+https://github.com/rust-lang/crates.io-index" 2949 - checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 2950 - dependencies = [ 2951 - "winapi", 2952 - ] 2953 - 2954 - [[package]] 2955 - name = "nu-ansi-term" 2956 - version = "0.50.3" 2957 - source = "registry+https://github.com/rust-lang/crates.io-index" 2958 - checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 2959 - dependencies = [ 2960 - "windows-sys 0.61.2", 2961 - ] 2962 - 2963 - [[package]] 2964 - name = "nu-cmd-base" 2965 - version = "0.109.1" 2966 - source = "registry+https://github.com/rust-lang/crates.io-index" 2967 - checksum = "2460ee389a43b935aa18ef5ed9fa8275bdf617e8c05eba7c2b82f92effd2132b" 2968 - dependencies = [ 2969 - "indexmap 2.12.1", 2970 - "miette", 2971 - "nu-engine", 2972 - "nu-parser", 2973 - "nu-path", 2974 - "nu-protocol", 2975 - ] 2976 - 2977 - [[package]] 2978 - name = "nu-cmd-extra" 2979 - version = "0.109.1" 2980 - source = "registry+https://github.com/rust-lang/crates.io-index" 2981 - checksum = "96f1ac416cd5182ca427a1007c9d0193feaa746aeb54b5320251faad41481cfe" 2982 - dependencies = [ 2983 - "fancy-regex", 2984 - "heck 0.5.0", 2985 - "itertools 0.14.0", 2986 - "mime", 2987 - "nu-ansi-term", 2988 - "nu-cmd-base", 2989 - "nu-engine", 2990 - "nu-json", 2991 - "nu-parser", 2992 - "nu-pretty-hex", 2993 - "nu-protocol", 2994 - "nu-utils", 2995 - "num-traits", 2996 - "rust-embed", 2997 - "serde", 2998 - "serde_urlencoded", 2999 - "v_htmlescape", 3000 - ] 3001 - 3002 - [[package]] 3003 - name = "nu-cmd-lang" 3004 - version = "0.109.1" 3005 - source = "registry+https://github.com/rust-lang/crates.io-index" 3006 - checksum = "5b266674d87b816264f6aff8cca351e6ebb156f34faab45d7d728c2aba005495" 3007 - dependencies = [ 3008 - "itertools 0.14.0", 3009 - "nu-cmd-base", 3010 - "nu-engine", 3011 - "nu-experimental", 3012 - "nu-parser", 3013 - "nu-protocol", 3014 - "nu-utils", 3015 - "shadow-rs", 3016 - ] 3017 - 3018 - [[package]] 3019 - name = "nu-color-config" 3020 - version = "0.109.1" 3021 - source = "registry+https://github.com/rust-lang/crates.io-index" 3022 - checksum = "440a59265caf5468af6ff186e656bc6e6d349c08662ee959b116375597864206" 3023 - dependencies = [ 3024 - "nu-ansi-term", 3025 - "nu-engine", 3026 - "nu-json", 3027 - "nu-protocol", 3028 - "serde", 3029 - ] 3030 - 3031 - [[package]] 3032 - name = "nu-command" 3033 - version = "0.109.1" 3034 - source = "registry+https://github.com/rust-lang/crates.io-index" 3035 - checksum = "5380a9cf6ef0f482280b71d6e78fa8d4bc1b2b43aa8f0b1fa786f96087c2d500" 3036 - dependencies = [ 3037 - "alphanumeric-sort", 3038 - "base64", 3039 - "bracoxide", 3040 - "brotli", 3041 - "byteorder", 3042 - "bytesize", 3043 - "calamine", 3044 - "chardetng", 3045 - "chrono", 3046 - "chrono-humanize", 3047 - "chrono-tz", 3048 - "csv", 3049 - "data-encoding", 3050 - "devicons", 3051 - "dialoguer", 3052 - "digest", 3053 - "dtparse", 3054 - "encoding_rs", 3055 - "fancy-regex", 3056 - "filesize", 3057 - "filetime", 3058 - "fuzzy-matcher", 3059 - "http", 3060 - "human-date-parser", 3061 - "indexmap 2.12.1", 3062 - "indicatif", 3063 - "itertools 0.14.0", 3064 - "log", 3065 - "lscolors", 3066 - "md-5", 3067 - "mime", 3068 - "mime_guess", 3069 - "nix", 3070 - "nu-ansi-term", 3071 - "nu-cmd-base", 3072 - "nu-color-config", 3073 - "nu-engine", 3074 - "nu-experimental", 3075 - "nu-glob", 3076 - "nu-json", 3077 - "nu-parser", 3078 - "nu-path", 3079 - "nu-pretty-hex", 3080 - "nu-protocol", 3081 - "nu-system", 3082 - "nu-table", 3083 - "nu-term-grid", 3084 - "nu-utils", 3085 - "num-format", 3086 - "num-traits", 3087 - "nuon", 3088 - "oem_cp", 3089 - "pathdiff", 3090 - "percent-encoding", 3091 - "print-positions", 3092 - "procfs 0.17.0", 3093 - "quick-xml 0.38.4", 3094 - "rayon", 3095 - "rmp", 3096 - "roxmltree", 3097 - "scopeguard", 3098 - "serde", 3099 - "serde_json", 3100 - "serde_urlencoded", 3101 - "serde_yaml", 3102 - "sha2", 3103 - "strum", 3104 - "sysinfo", 3105 - "tabled", 3106 - "titlecase", 3107 - "toml", 3108 - "uds_windows", 3109 - "umask", 3110 - "unicode-segmentation", 3111 - "unicode-width 0.2.2", 3112 - "url", 3113 - "uucore", 3114 - "v_htmlescape", 3115 - "wax", 3116 - "web-time", 3117 - "windows 0.62.2", 3118 - "winreg", 3119 - ] 3120 - 3121 - [[package]] 3122 - name = "nu-derive-value" 3123 - version = "0.109.1" 3124 - source = "registry+https://github.com/rust-lang/crates.io-index" 3125 - checksum = "1465d2d3ada6004cb6689f269a08c70ba81056231e2b5392d1e0ccf5825f81cb" 3126 - dependencies = [ 3127 - "heck 0.5.0", 3128 - "proc-macro-error2", 3129 - "proc-macro2", 3130 - "quote", 3131 - "syn 2.0.111", 3132 - ] 3133 - 3134 - [[package]] 3135 - name = "nu-engine" 3136 - version = "0.109.1" 3137 - source = "registry+https://github.com/rust-lang/crates.io-index" 3138 - checksum = "b3b777faf7c5180fe5d7f67d83c44fd14138d91f2938a36494ed6ac66b7160f3" 3139 - dependencies = [ 3140 - "fancy-regex", 3141 - "log", 3142 - "nu-experimental", 3143 - "nu-glob", 3144 - "nu-path", 3145 - "nu-protocol", 3146 - "nu-utils", 3147 - ] 3148 - 3149 - [[package]] 3150 - name = "nu-experimental" 3151 - version = "0.109.1" 3152 - source = "registry+https://github.com/rust-lang/crates.io-index" 3153 - checksum = "73dd212a1afdad646a38c00579a0988264880aeb97fee820b349a28cdcc04df2" 3154 - dependencies = [ 3155 - "itertools 0.14.0", 3156 - "thiserror 2.0.17", 3157 - ] 3158 - 3159 - [[package]] 3160 - name = "nu-glob" 3161 - version = "0.109.1" 3162 - source = "registry+https://github.com/rust-lang/crates.io-index" 3163 - checksum = "15aa2c17078926f14e393b4b708e69f228cb6fd4c81136839bde82772bdde1b5" 3164 - 3165 - [[package]] 3166 - name = "nu-json" 3167 - version = "0.109.1" 3168 - source = "registry+https://github.com/rust-lang/crates.io-index" 3169 - checksum = "7ca63927a3c1c4fb889e80dc5cfbe754daed822a7b503cc74e600627c2aa8435" 3170 - dependencies = [ 3171 - "linked-hash-map", 3172 - "nu-utils", 3173 - "num-traits", 3174 - "serde", 3175 - "serde_json", 3176 - ] 3177 - 3178 - [[package]] 3179 - name = "nu-parser" 3180 - version = "0.109.1" 3181 - source = "registry+https://github.com/rust-lang/crates.io-index" 3182 - checksum = "237172636312c3566272511a00c1dc355202406c376e1546a45a33c65e81babe" 3183 - dependencies = [ 3184 - "bytesize", 3185 - "chrono", 3186 - "itertools 0.14.0", 3187 - "log", 3188 - "nu-engine", 3189 - "nu-path", 3190 - "nu-protocol", 3191 - "nu-utils", 3192 - "serde_json", 3193 - ] 3194 - 3195 - [[package]] 3196 - name = "nu-path" 3197 - version = "0.109.1" 3198 - source = "registry+https://github.com/rust-lang/crates.io-index" 3199 - checksum = "dde9d8ba26f62c07176c0237a36f38ce964ab3a0dcfb6aab1feea7515d1c6594" 3200 - dependencies = [ 3201 - "dirs", 3202 - "omnipath", 3203 - "pwd", 3204 - "ref-cast", 3205 - ] 3206 - 3207 - [[package]] 3208 - name = "nu-pretty-hex" 3209 - version = "0.109.1" 3210 - source = "registry+https://github.com/rust-lang/crates.io-index" 3211 - checksum = "02561546604ac4c443bad65d9485ab3965154cad0873340e2e9ebe72d4a18aef" 3212 - dependencies = [ 3213 - "nu-ansi-term", 3214 - ] 3215 - 3216 - [[package]] 3217 - name = "nu-protocol" 3218 - version = "0.109.1" 3219 - source = "registry+https://github.com/rust-lang/crates.io-index" 3220 - checksum = "038943300ca9de0924fef1c795a7dd16ffc67105629477cf163e8ee6bad95ea6" 3221 - dependencies = [ 3222 - "bytes", 3223 - "chrono", 3224 - "chrono-humanize", 3225 - "dirs", 3226 - "dirs-sys", 3227 - "fancy-regex", 3228 - "heck 0.5.0", 3229 - "indexmap 2.12.1", 3230 - "log", 3231 - "lru", 3232 - "memchr", 3233 - "miette", 3234 - "nix", 3235 - "nu-derive-value", 3236 - "nu-experimental", 3237 - "nu-glob", 3238 - "nu-path", 3239 - "nu-system", 3240 - "nu-utils", 3241 - "num-format", 3242 - "serde", 3243 - "serde_json", 3244 - "strum", 3245 - "strum_macros", 3246 - "thiserror 2.0.17", 3247 - "typetag", 3248 - "web-time", 3249 - "windows 0.62.2", 3250 - "windows-sys 0.61.2", 3251 - ] 3252 - 3253 - [[package]] 3254 - name = "nu-system" 3255 - version = "0.109.1" 3256 - source = "registry+https://github.com/rust-lang/crates.io-index" 3257 - checksum = "46be734cc9b19e09a9665769e14360e13e6978490056ba5c8bfad7dd0537ea83" 3258 - dependencies = [ 3259 - "chrono", 3260 - "itertools 0.14.0", 3261 - "libc", 3262 - "libproc", 3263 - "log", 3264 - "mach2", 3265 - "nix", 3266 - "ntapi", 3267 - "procfs 0.17.0", 3268 - "sysinfo", 3269 - "web-time", 3270 - "windows 0.62.2", 3271 - ] 3272 - 3273 - [[package]] 3274 - name = "nu-table" 3275 - version = "0.109.1" 3276 - source = "registry+https://github.com/rust-lang/crates.io-index" 3277 - checksum = "aa96502adbb69c838d8469715327ba2dacf2c4f5254a4cdee7536e2c6849de1d" 3278 - dependencies = [ 3279 - "fancy-regex", 3280 - "nu-ansi-term", 3281 - "nu-color-config", 3282 - "nu-engine", 3283 - "nu-protocol", 3284 - "nu-utils", 3285 - "tabled", 3286 - ] 3287 - 3288 - [[package]] 3289 - name = "nu-term-grid" 3290 - version = "0.109.1" 3291 - source = "registry+https://github.com/rust-lang/crates.io-index" 3292 - checksum = "2b6545b361413e88bea37c4b9c7aa97a7fd7a11d84a5d330a72242367fd1d2df" 3293 - dependencies = [ 3294 - "nu-utils", 3295 - "unicode-width 0.2.2", 3296 - ] 3297 - 3298 - [[package]] 3299 - name = "nu-utils" 3300 - version = "0.109.1" 3301 - source = "registry+https://github.com/rust-lang/crates.io-index" 3302 - checksum = "3f8eb43c29cc5bce85f87defdadc2cca964fa434d808af37036a7cb78f3c68e9" 3303 - dependencies = [ 3304 - "byteyarn", 3305 - "crossterm_winapi", 3306 - "fancy-regex", 3307 - "lean_string", 3308 - "log", 3309 - "lscolors", 3310 - "memchr", 3311 - "nix", 3312 - "num-format", 3313 - "serde", 3314 - "serde_json", 3315 - "strip-ansi-escapes", 3316 - "sys-locale", 3317 - "unicase", 3318 - ] 3319 - 3320 - [[package]] 3321 - name = "num-bigint-dig" 3322 - version = "0.8.6" 3323 - source = "registry+https://github.com/rust-lang/crates.io-index" 3324 - checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 3325 - dependencies = [ 3326 - "lazy_static", 3327 - "libm", 3328 - "num-integer", 3329 - "num-iter", 3330 - "num-traits", 3331 - "rand 0.8.5", 3332 - "smallvec", 3333 - "zeroize", 3334 - ] 3335 - 3336 - [[package]] 3337 - name = "num-conv" 3338 - version = "0.1.0" 3339 - source = "registry+https://github.com/rust-lang/crates.io-index" 3340 - checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 3341 - 3342 - [[package]] 3343 - name = "num-format" 3344 - version = "0.4.4" 3345 - source = "registry+https://github.com/rust-lang/crates.io-index" 3346 - checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" 3347 - dependencies = [ 3348 - "arrayvec", 3349 - "itoa", 3350 - ] 3351 - 3352 - [[package]] 3353 - name = "num-integer" 3354 - version = "0.1.46" 3355 - source = "registry+https://github.com/rust-lang/crates.io-index" 3356 - checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 3357 - dependencies = [ 3358 - "num-traits", 3359 - ] 3360 - 3361 - [[package]] 3362 - name = "num-iter" 3363 - version = "0.1.45" 3364 - source = "registry+https://github.com/rust-lang/crates.io-index" 3365 - checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 3366 - dependencies = [ 3367 - "autocfg", 3368 - "num-integer", 3369 - "num-traits", 3370 - ] 3371 - 3372 - [[package]] 3373 - name = "num-traits" 3374 - version = "0.2.19" 3375 - source = "registry+https://github.com/rust-lang/crates.io-index" 3376 - checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 3377 - dependencies = [ 3378 - "autocfg", 3379 - "libm", 3380 - ] 3381 - 3382 - [[package]] 3383 - name = "num_threads" 3384 - version = "0.1.7" 3385 - source = "registry+https://github.com/rust-lang/crates.io-index" 3386 - checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" 3387 - dependencies = [ 3388 - "libc", 3389 - ] 3390 - 3391 - [[package]] 3392 - name = "number_prefix" 3393 - version = "0.4.0" 3394 - source = "registry+https://github.com/rust-lang/crates.io-index" 3395 - checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 3396 - 3397 - [[package]] 3398 - name = "nuon" 3399 - version = "0.109.1" 3400 - source = "registry+https://github.com/rust-lang/crates.io-index" 3401 - checksum = "f8c4f2e4460a6cf00e50cddf0840f954874d645be3af5196c5858c70c069d8c0" 3402 - dependencies = [ 3403 - "nu-engine", 3404 - "nu-parser", 3405 - "nu-protocol", 3406 - "nu-utils", 3407 - ] 3408 - 3409 - [[package]] 3410 - name = "objc2-core-foundation" 3411 - version = "0.3.2" 3412 - source = "registry+https://github.com/rust-lang/crates.io-index" 3413 - checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" 3414 - dependencies = [ 3415 - "bitflags", 3416 - ] 3417 - 3418 - [[package]] 3419 - name = "objc2-io-kit" 3420 - version = "0.3.2" 3421 - source = "registry+https://github.com/rust-lang/crates.io-index" 3422 - checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" 3423 - dependencies = [ 3424 - "libc", 3425 - "objc2-core-foundation", 3426 - ] 3427 - 3428 - [[package]] 3429 - name = "object" 3430 - version = "0.37.3" 3431 - source = "registry+https://github.com/rust-lang/crates.io-index" 3432 - checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" 3433 - dependencies = [ 3434 - "memchr", 3435 - ] 3436 - 3437 - [[package]] 3438 - name = "oem_cp" 3439 - version = "2.1.1" 3440 - source = "registry+https://github.com/rust-lang/crates.io-index" 3441 - checksum = "a4b91a3be3b523e58bd7a9d839b0bf65720331db50ddfba5ace0680f8c6f58a1" 3442 - dependencies = [ 3443 - "phf 0.11.3", 3444 - ] 3445 - 3446 - [[package]] 3447 - name = "omnipath" 3448 - version = "0.1.6" 3449 - source = "registry+https://github.com/rust-lang/crates.io-index" 3450 - checksum = "80adb31078122c880307e9cdfd4e3361e6545c319f9b9dcafcb03acd3b51a575" 3451 - 3452 - [[package]] 3453 - name = "once_cell" 3454 - version = "1.21.3" 3455 - source = "registry+https://github.com/rust-lang/crates.io-index" 3456 - checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 3457 - 3458 - [[package]] 3459 - name = "once_cell_polyfill" 3460 - version = "1.70.2" 3461 - source = "registry+https://github.com/rust-lang/crates.io-index" 3462 - checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" 3463 - 3464 - [[package]] 3465 - name = "option-ext" 3466 - version = "0.2.0" 3467 - source = "registry+https://github.com/rust-lang/crates.io-index" 3468 - checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 3469 - 3470 - [[package]] 3471 - name = "os_display" 3472 - version = "0.1.4" 3473 - source = "registry+https://github.com/rust-lang/crates.io-index" 3474 - checksum = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f" 3475 - dependencies = [ 3476 - "unicode-width 0.2.2", 3477 - ] 3478 - 3479 - [[package]] 3480 - name = "ouroboros" 3481 - version = "0.18.5" 3482 - source = "registry+https://github.com/rust-lang/crates.io-index" 3483 - checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" 3484 - dependencies = [ 3485 - "aliasable", 3486 - "ouroboros_macro", 3487 - "static_assertions", 3488 - ] 3489 - 3490 - [[package]] 3491 - name = "ouroboros_macro" 3492 - version = "0.18.5" 3493 - source = "registry+https://github.com/rust-lang/crates.io-index" 3494 - checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" 3495 - dependencies = [ 3496 - "heck 0.4.1", 3497 - "proc-macro2", 3498 - "proc-macro2-diagnostics", 3499 - "quote", 3500 - "syn 2.0.111", 3501 - ] 3502 - 3503 - [[package]] 3504 - name = "owo-colors" 3505 - version = "4.2.3" 3506 - source = "registry+https://github.com/rust-lang/crates.io-index" 3507 - checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" 3508 - 3509 - [[package]] 3510 - name = "p256" 3511 - version = "0.13.2" 3512 - source = "registry+https://github.com/rust-lang/crates.io-index" 3513 - checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 3514 - dependencies = [ 3515 - "ecdsa", 3516 - "elliptic-curve", 3517 - "primeorder", 3518 - "sha2", 3519 - ] 3520 - 3521 - [[package]] 3522 - name = "p384" 3523 - version = "0.13.1" 3524 - source = "registry+https://github.com/rust-lang/crates.io-index" 3525 - checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" 3526 - dependencies = [ 3527 - "elliptic-curve", 3528 - "primeorder", 3529 - ] 3530 - 3531 - [[package]] 3532 - name = "papergrid" 3533 - version = "0.17.0" 3534 - source = "registry+https://github.com/rust-lang/crates.io-index" 3535 - checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" 3536 - dependencies = [ 3537 - "ansi-str", 3538 - "ansitok", 3539 - "bytecount", 3540 - "fnv", 3541 - "unicode-width 0.2.2", 3542 - ] 3543 - 3544 - [[package]] 3545 - name = "parking" 3546 - version = "2.2.1" 3547 - source = "registry+https://github.com/rust-lang/crates.io-index" 3548 - checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 3549 - 3550 - [[package]] 3551 - name = "parking_lot" 3552 - version = "0.12.5" 3553 - source = "registry+https://github.com/rust-lang/crates.io-index" 3554 - checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 3555 - dependencies = [ 3556 - "lock_api", 3557 - "parking_lot_core", 3558 - ] 3559 - 3560 - [[package]] 3561 - name = "parking_lot_core" 3562 - version = "0.9.12" 3563 - source = "registry+https://github.com/rust-lang/crates.io-index" 3564 - checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 3565 - dependencies = [ 3566 - "cfg-if", 3567 - "libc", 3568 - "redox_syscall", 3569 - "smallvec", 3570 - "windows-link 0.2.1", 3571 - ] 3572 - 3573 - [[package]] 3574 - name = "paste" 3575 - version = "1.0.15" 3576 - source = "registry+https://github.com/rust-lang/crates.io-index" 3577 - checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3578 - 3579 - [[package]] 3580 - name = "pathdiff" 3581 - version = "0.2.3" 3582 - source = "registry+https://github.com/rust-lang/crates.io-index" 3583 - checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 3584 - 3585 - [[package]] 3586 - name = "pem-rfc7468" 3587 - version = "0.7.0" 3588 - source = "registry+https://github.com/rust-lang/crates.io-index" 3589 - checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 3590 - dependencies = [ 3591 - "base64ct", 3592 - ] 3593 - 3594 - [[package]] 3595 - name = "percent-encoding" 3596 - version = "2.3.2" 3597 - source = "registry+https://github.com/rust-lang/crates.io-index" 3598 - checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 3599 - 3600 - [[package]] 3601 - name = "pest" 3602 - version = "2.8.4" 3603 - source = "registry+https://github.com/rust-lang/crates.io-index" 3604 - checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" 3605 - dependencies = [ 3606 - "memchr", 3607 - "ucd-trie", 3608 - ] 3609 - 3610 - [[package]] 3611 - name = "pest_consume" 3612 - version = "1.1.3" 3613 - source = "registry+https://github.com/rust-lang/crates.io-index" 3614 - checksum = "79447402d15d18e7142e14c72f2e63fa3d155be1bc5b70b3ccbb610ac55f536b" 3615 - dependencies = [ 3616 - "pest", 3617 - "pest_consume_macros", 3618 - "pest_derive", 3619 - ] 3620 - 3621 - [[package]] 3622 - name = "pest_consume_macros" 3623 - version = "1.1.0" 3624 - source = "registry+https://github.com/rust-lang/crates.io-index" 3625 - checksum = "9d8630a7a899cb344ec1c16ba0a6b24240029af34bdc0a21f84e411d7f793f29" 3626 - dependencies = [ 3627 - "proc-macro2", 3628 - "quote", 3629 - "syn 1.0.109", 3630 - ] 3631 - 3632 - [[package]] 3633 - name = "pest_derive" 3634 - version = "2.8.4" 3635 - source = "registry+https://github.com/rust-lang/crates.io-index" 3636 - checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" 3637 - dependencies = [ 3638 - "pest", 3639 - "pest_generator", 3640 - ] 3641 - 3642 - [[package]] 3643 - name = "pest_generator" 3644 - version = "2.8.4" 3645 - source = "registry+https://github.com/rust-lang/crates.io-index" 3646 - checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" 3647 - dependencies = [ 3648 - "pest", 3649 - "pest_meta", 3650 - "proc-macro2", 3651 - "quote", 3652 - "syn 2.0.111", 3653 - ] 3654 - 3655 - [[package]] 3656 - name = "pest_meta" 3657 - version = "2.8.4" 3658 - source = "registry+https://github.com/rust-lang/crates.io-index" 3659 - checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" 3660 - dependencies = [ 3661 - "pest", 3662 - "sha2", 3663 - ] 3664 - 3665 - [[package]] 3666 - name = "phf" 3667 - version = "0.11.3" 3668 - source = "registry+https://github.com/rust-lang/crates.io-index" 3669 - checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" 3670 - dependencies = [ 3671 - "phf_shared 0.11.3", 3672 - ] 3673 - 3674 - [[package]] 3675 - name = "phf" 3676 - version = "0.12.1" 3677 - source = "registry+https://github.com/rust-lang/crates.io-index" 3678 - checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" 3679 - dependencies = [ 3680 - "phf_shared 0.12.1", 3681 - ] 3682 - 3683 - [[package]] 3684 - name = "phf" 3685 - version = "0.13.1" 3686 - source = "registry+https://github.com/rust-lang/crates.io-index" 3687 - checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" 3688 - dependencies = [ 3689 - "phf_shared 0.13.1", 3690 - "serde", 3691 - ] 3692 - 3693 - [[package]] 3694 - name = "phf_codegen" 3695 - version = "0.11.3" 3696 - source = "registry+https://github.com/rust-lang/crates.io-index" 3697 - checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 3698 - dependencies = [ 3699 - "phf_generator", 3700 - "phf_shared 0.11.3", 3701 - ] 3702 - 3703 - [[package]] 3704 - name = "phf_generator" 3705 - version = "0.11.3" 3706 - source = "registry+https://github.com/rust-lang/crates.io-index" 3707 - checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" 3708 - dependencies = [ 3709 - "phf_shared 0.11.3", 3710 - "rand 0.8.5", 3711 - ] 3712 - 3713 - [[package]] 3714 - name = "phf_shared" 3715 - version = "0.11.3" 3716 - source = "registry+https://github.com/rust-lang/crates.io-index" 3717 - checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 3718 - dependencies = [ 3719 - "siphasher", 3720 - ] 3721 - 3722 - [[package]] 3723 - name = "phf_shared" 3724 - version = "0.12.1" 3725 - source = "registry+https://github.com/rust-lang/crates.io-index" 3726 - checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" 3727 - dependencies = [ 3728 - "siphasher", 3729 - ] 3730 - 3731 - [[package]] 3732 - name = "phf_shared" 3733 - version = "0.13.1" 3734 - source = "registry+https://github.com/rust-lang/crates.io-index" 3735 - checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" 3736 - dependencies = [ 3737 - "siphasher", 3738 - ] 3739 - 3740 - [[package]] 3741 - name = "pin-project" 3742 - version = "1.1.10" 3743 - source = "registry+https://github.com/rust-lang/crates.io-index" 3744 - checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 3745 - dependencies = [ 3746 - "pin-project-internal", 3747 - ] 3748 - 3749 - [[package]] 3750 - name = "pin-project-internal" 3751 - version = "1.1.10" 3752 - source = "registry+https://github.com/rust-lang/crates.io-index" 3753 - checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 3754 - dependencies = [ 3755 - "proc-macro2", 3756 - "quote", 3757 - "syn 2.0.111", 3758 - ] 3759 - 3760 - [[package]] 3761 - name = "pin-project-lite" 3762 - version = "0.2.16" 3763 - source = "registry+https://github.com/rust-lang/crates.io-index" 3764 - checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 3765 - 3766 - [[package]] 3767 - name = "pin-utils" 3768 - version = "0.1.0" 3769 - source = "registry+https://github.com/rust-lang/crates.io-index" 3770 - checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 3771 - 3772 - [[package]] 3773 - name = "pkcs1" 3774 - version = "0.7.5" 3775 - source = "registry+https://github.com/rust-lang/crates.io-index" 3776 - checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 3777 - dependencies = [ 3778 - "der", 3779 - "pkcs8", 3780 - "spki", 3781 - ] 3782 - 3783 - [[package]] 3784 - name = "pkcs8" 3785 - version = "0.10.2" 3786 - source = "registry+https://github.com/rust-lang/crates.io-index" 3787 - checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 3788 - dependencies = [ 3789 - "der", 3790 - "spki", 3791 - ] 3792 - 3793 - [[package]] 3794 - name = "pori" 3795 - version = "0.0.0" 3796 - source = "registry+https://github.com/rust-lang/crates.io-index" 3797 - checksum = "a4a63d338dec139f56dacc692ca63ad35a6be6a797442479b55acd611d79e906" 3798 - dependencies = [ 3799 - "nom", 3800 - ] 3801 - 3802 - [[package]] 3803 - name = "portable-atomic" 3804 - version = "1.11.1" 3805 - source = "registry+https://github.com/rust-lang/crates.io-index" 3806 - checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 3807 - 3808 - [[package]] 3809 - name = "postcard" 3810 - version = "1.1.3" 3811 - source = "registry+https://github.com/rust-lang/crates.io-index" 3812 - checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 3813 - dependencies = [ 3814 - "cobs", 3815 - "embedded-io 0.4.0", 3816 - "embedded-io 0.6.1", 3817 - "heapless", 3818 - "serde", 3819 - ] 3820 - 3821 - [[package]] 3822 - name = "potential_utf" 3823 - version = "0.1.4" 3824 - source = "registry+https://github.com/rust-lang/crates.io-index" 3825 - checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" 3826 - dependencies = [ 3827 - "zerovec", 3828 - ] 3829 - 3830 - [[package]] 3831 - name = "powerfmt" 3832 - version = "0.2.0" 3833 - source = "registry+https://github.com/rust-lang/crates.io-index" 3834 - checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 3835 - 3836 - [[package]] 3837 - name = "ppv-lite86" 3838 - version = "0.2.21" 3839 - source = "registry+https://github.com/rust-lang/crates.io-index" 3840 - checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 3841 - dependencies = [ 3842 - "zerocopy 0.8.31", 3843 - ] 3844 - 3845 - [[package]] 3846 - name = "precomputed-hash" 3847 - version = "0.1.1" 3848 - source = "registry+https://github.com/rust-lang/crates.io-index" 3849 - checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 3850 - 3851 - [[package]] 3852 - name = "prettyplease" 3853 - version = "0.2.37" 3854 - source = "registry+https://github.com/rust-lang/crates.io-index" 3855 - checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 3856 - dependencies = [ 3857 - "proc-macro2", 3858 - "syn 2.0.111", 3859 - ] 3860 - 3861 - [[package]] 3862 - name = "primeorder" 3863 - version = "0.13.6" 3864 - source = "registry+https://github.com/rust-lang/crates.io-index" 3865 - checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 3866 - dependencies = [ 3867 - "elliptic-curve", 3868 - ] 3869 - 3870 - [[package]] 3871 - name = "print-positions" 3872 - version = "0.6.1" 3873 - source = "registry+https://github.com/rust-lang/crates.io-index" 3874 - checksum = "1df593470e3ef502e48cb0cfc9a3a61e5f61e967b78e1ed35a67ac615cfbd208" 3875 - dependencies = [ 3876 - "unicode-segmentation", 3877 - ] 3878 - 3879 - [[package]] 3880 - name = "proc-macro-error" 3881 - version = "1.0.4" 3882 - source = "registry+https://github.com/rust-lang/crates.io-index" 3883 - checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 3884 - dependencies = [ 3885 - "proc-macro-error-attr", 3886 - "proc-macro2", 3887 - "quote", 3888 - "syn 1.0.109", 3889 - "version_check", 3890 - ] 3891 - 3892 - [[package]] 3893 - name = "proc-macro-error-attr" 3894 - version = "1.0.4" 3895 - source = "registry+https://github.com/rust-lang/crates.io-index" 3896 - checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 3897 - dependencies = [ 3898 - "proc-macro2", 3899 - "quote", 3900 - "version_check", 3901 - ] 3902 - 3903 - [[package]] 3904 - name = "proc-macro-error-attr2" 3905 - version = "2.0.0" 3906 - source = "registry+https://github.com/rust-lang/crates.io-index" 3907 - checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" 3908 - dependencies = [ 3909 - "proc-macro2", 3910 - "quote", 3911 - ] 3912 - 3913 - [[package]] 3914 - name = "proc-macro-error2" 3915 - version = "2.0.1" 3916 - source = "registry+https://github.com/rust-lang/crates.io-index" 3917 - checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" 3918 - dependencies = [ 3919 - "proc-macro-error-attr2", 3920 - "proc-macro2", 3921 - "quote", 3922 - "syn 2.0.111", 3923 - ] 3924 - 3925 - [[package]] 3926 - name = "proc-macro2" 3927 - version = "1.0.103" 3928 - source = "registry+https://github.com/rust-lang/crates.io-index" 3929 - checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" 3930 - dependencies = [ 3931 - "unicode-ident", 3932 - ] 3933 - 3934 - [[package]] 3935 - name = "proc-macro2-diagnostics" 3936 - version = "0.10.1" 3937 - source = "registry+https://github.com/rust-lang/crates.io-index" 3938 - checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 3939 - dependencies = [ 3940 - "proc-macro2", 3941 - "quote", 3942 - "syn 2.0.111", 3943 - "version_check", 3944 - "yansi", 3945 - ] 3946 - 3947 - [[package]] 3948 - name = "procfs" 3949 - version = "0.17.0" 3950 - source = "registry+https://github.com/rust-lang/crates.io-index" 3951 - checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" 3952 - dependencies = [ 3953 - "bitflags", 3954 - "chrono", 3955 - "flate2", 3956 - "hex", 3957 - "procfs-core 0.17.0", 3958 - "rustix 0.38.44", 3959 - ] 3960 - 3961 - [[package]] 3962 - name = "procfs" 3963 - version = "0.18.0" 3964 - source = "registry+https://github.com/rust-lang/crates.io-index" 3965 - checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" 3966 - dependencies = [ 3967 - "bitflags", 3968 - "chrono", 3969 - "flate2", 3970 - "procfs-core 0.18.0", 3971 - "rustix 1.1.2", 3972 - ] 3973 - 3974 - [[package]] 3975 - name = "procfs-core" 3976 - version = "0.17.0" 3977 - source = "registry+https://github.com/rust-lang/crates.io-index" 3978 - checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" 3979 - dependencies = [ 3980 - "bitflags", 3981 - "chrono", 3982 - "hex", 3983 - ] 3984 - 3985 - [[package]] 3986 - name = "procfs-core" 3987 - version = "0.18.0" 3988 - source = "registry+https://github.com/rust-lang/crates.io-index" 3989 - checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" 3990 - dependencies = [ 3991 - "bitflags", 3992 - "chrono", 3993 - "hex", 3994 - ] 3995 - 3996 - [[package]] 3997 - name = "pure-rust-locales" 3998 - version = "0.8.2" 3999 - source = "registry+https://github.com/rust-lang/crates.io-index" 4000 - checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" 4001 - 4002 - [[package]] 4003 - name = "pwd" 4004 - version = "1.4.0" 4005 - source = "registry+https://github.com/rust-lang/crates.io-index" 4006 - checksum = "72c71c0c79b9701efe4e1e4b563b2016dd4ee789eb99badcb09d61ac4b92e4a2" 4007 - dependencies = [ 4008 - "libc", 4009 - "thiserror 1.0.69", 4010 - ] 4011 - 4012 - [[package]] 4013 - name = "quick-xml" 4014 - version = "0.37.5" 4015 - source = "registry+https://github.com/rust-lang/crates.io-index" 4016 - checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 4017 - dependencies = [ 4018 - "encoding_rs", 4019 - "memchr", 4020 - ] 4021 - 4022 - [[package]] 4023 - name = "quick-xml" 4024 - version = "0.38.4" 4025 - source = "registry+https://github.com/rust-lang/crates.io-index" 4026 - checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" 4027 - dependencies = [ 4028 - "memchr", 4029 - ] 4030 - 4031 - [[package]] 4032 - name = "quinn" 4033 - version = "0.11.9" 4034 - source = "registry+https://github.com/rust-lang/crates.io-index" 4035 - checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 4036 - dependencies = [ 4037 - "bytes", 4038 - "cfg_aliases", 4039 - "pin-project-lite", 4040 - "quinn-proto", 4041 - "quinn-udp", 4042 - "rustc-hash", 4043 - "rustls", 4044 - "socket2", 4045 - "thiserror 2.0.17", 4046 - "tokio", 4047 - "tracing", 4048 - "web-time", 4049 - ] 4050 - 4051 - [[package]] 4052 - name = "quinn-proto" 4053 - version = "0.11.13" 4054 - source = "registry+https://github.com/rust-lang/crates.io-index" 4055 - checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" 4056 - dependencies = [ 4057 - "bytes", 4058 - "getrandom 0.3.4", 4059 - "lru-slab", 4060 - "rand 0.9.2", 4061 - "ring", 4062 - "rustc-hash", 4063 - "rustls", 4064 - "rustls-pki-types", 4065 - "slab", 4066 - "thiserror 2.0.17", 4067 - "tinyvec", 4068 - "tracing", 4069 - "web-time", 4070 - ] 4071 - 4072 - [[package]] 4073 - name = "quinn-udp" 4074 - version = "0.5.14" 4075 - source = "registry+https://github.com/rust-lang/crates.io-index" 4076 - checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 4077 - dependencies = [ 4078 - "cfg_aliases", 4079 - "libc", 4080 - "once_cell", 4081 - "socket2", 4082 - "tracing", 4083 - "windows-sys 0.60.2", 4084 - ] 4085 - 4086 - [[package]] 4087 - name = "quote" 4088 - version = "1.0.42" 4089 - source = "registry+https://github.com/rust-lang/crates.io-index" 4090 - checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" 4091 - dependencies = [ 4092 - "proc-macro2", 4093 - ] 4094 - 4095 - [[package]] 4096 - name = "r-efi" 4097 - version = "5.3.0" 4098 - source = "registry+https://github.com/rust-lang/crates.io-index" 4099 - checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 4100 - 4101 - [[package]] 4102 - name = "rand" 4103 - version = "0.8.5" 4104 - source = "registry+https://github.com/rust-lang/crates.io-index" 4105 - checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 4106 - dependencies = [ 4107 - "libc", 4108 - "rand_chacha 0.3.1", 4109 - "rand_core 0.6.4", 4110 - ] 4111 - 4112 - [[package]] 4113 - name = "rand" 4114 - version = "0.9.2" 4115 - source = "registry+https://github.com/rust-lang/crates.io-index" 4116 - checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 4117 - dependencies = [ 4118 - "rand_chacha 0.9.0", 4119 - "rand_core 0.9.3", 4120 - ] 4121 - 4122 - [[package]] 4123 - name = "rand_chacha" 4124 - version = "0.3.1" 4125 - source = "registry+https://github.com/rust-lang/crates.io-index" 4126 - checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 4127 - dependencies = [ 4128 - "ppv-lite86", 4129 - "rand_core 0.6.4", 4130 - ] 4131 - 4132 - [[package]] 4133 - name = "rand_chacha" 4134 - version = "0.9.0" 4135 - source = "registry+https://github.com/rust-lang/crates.io-index" 4136 - checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 4137 - dependencies = [ 4138 - "ppv-lite86", 4139 - "rand_core 0.9.3", 4140 - ] 4141 - 4142 - [[package]] 4143 - name = "rand_core" 4144 - version = "0.6.4" 4145 - source = "registry+https://github.com/rust-lang/crates.io-index" 4146 - checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 4147 - dependencies = [ 4148 - "getrandom 0.2.16", 4149 - ] 4150 - 4151 - [[package]] 4152 - name = "rand_core" 4153 - version = "0.9.3" 4154 - source = "registry+https://github.com/rust-lang/crates.io-index" 4155 - checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 4156 - dependencies = [ 4157 - "getrandom 0.3.4", 4158 - ] 4159 - 4160 - [[package]] 4161 - name = "range-traits" 4162 - version = "0.3.2" 4163 - source = "registry+https://github.com/rust-lang/crates.io-index" 4164 - checksum = "d20581732dd76fa913c7dff1a2412b714afe3573e94d41c34719de73337cc8ab" 4165 - 4166 - [[package]] 4167 - name = "rapidhash" 4168 - version = "4.1.1" 4169 - source = "registry+https://github.com/rust-lang/crates.io-index" 4170 - checksum = "d8e65c75143ce5d47c55b510297eeb1182f3c739b6043c537670e9fc18612dae" 4171 - dependencies = [ 4172 - "rustversion", 4173 - ] 4174 - 4175 - [[package]] 4176 - name = "rayon" 4177 - version = "1.11.0" 4178 - source = "registry+https://github.com/rust-lang/crates.io-index" 4179 - checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 4180 - dependencies = [ 4181 - "either", 4182 - "rayon-core", 4183 - ] 4184 - 4185 - [[package]] 4186 - name = "rayon-core" 4187 - version = "1.13.0" 4188 - source = "registry+https://github.com/rust-lang/crates.io-index" 4189 - checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 4190 - dependencies = [ 4191 - "crossbeam-deque", 4192 - "crossbeam-utils", 4193 - ] 4194 - 4195 - [[package]] 4196 - name = "redox_syscall" 4197 - version = "0.5.18" 4198 - source = "registry+https://github.com/rust-lang/crates.io-index" 4199 - checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 4200 - dependencies = [ 4201 - "bitflags", 4202 - ] 4203 - 4204 - [[package]] 4205 - name = "redox_users" 4206 - version = "0.5.2" 4207 - source = "registry+https://github.com/rust-lang/crates.io-index" 4208 - checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" 4209 - dependencies = [ 4210 - "getrandom 0.2.16", 4211 - "libredox", 4212 - "thiserror 2.0.17", 4213 - ] 4214 - 4215 - [[package]] 4216 - name = "ref-cast" 4217 - version = "1.0.25" 4218 - source = "registry+https://github.com/rust-lang/crates.io-index" 4219 - checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" 4220 - dependencies = [ 4221 - "ref-cast-impl", 4222 - ] 4223 - 4224 - [[package]] 4225 - name = "ref-cast-impl" 4226 - version = "1.0.25" 4227 - source = "registry+https://github.com/rust-lang/crates.io-index" 4228 - checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" 4229 - dependencies = [ 4230 - "proc-macro2", 4231 - "quote", 4232 - "syn 2.0.111", 4233 - ] 4234 - 4235 - [[package]] 4236 - name = "regex" 4237 - version = "1.12.2" 4238 - source = "registry+https://github.com/rust-lang/crates.io-index" 4239 - checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" 4240 - dependencies = [ 4241 - "aho-corasick", 4242 - "memchr", 4243 - "regex-automata", 4244 - "regex-syntax", 4245 - ] 4246 - 4247 - [[package]] 4248 - name = "regex-automata" 4249 - version = "0.4.13" 4250 - source = "registry+https://github.com/rust-lang/crates.io-index" 4251 - checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" 4252 - dependencies = [ 4253 - "aho-corasick", 4254 - "memchr", 4255 - "regex-syntax", 4256 - ] 4257 - 4258 - [[package]] 4259 - name = "regex-lite" 4260 - version = "0.1.8" 4261 - source = "registry+https://github.com/rust-lang/crates.io-index" 4262 - checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" 4263 - 4264 - [[package]] 4265 - name = "regex-syntax" 4266 - version = "0.8.8" 4267 - source = "registry+https://github.com/rust-lang/crates.io-index" 4268 - checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" 4269 - 4270 - [[package]] 4271 - name = "reqwest" 4272 - version = "0.12.25" 4273 - source = "registry+https://github.com/rust-lang/crates.io-index" 4274 - checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" 4275 - dependencies = [ 4276 - "base64", 4277 - "bytes", 4278 - "encoding_rs", 4279 - "futures-core", 4280 - "h2", 4281 - "http", 4282 - "http-body", 4283 - "http-body-util", 4284 - "hyper", 4285 - "hyper-rustls", 4286 - "hyper-util", 4287 - "js-sys", 4288 - "log", 4289 - "mime", 4290 - "percent-encoding", 4291 - "pin-project-lite", 4292 - "quinn", 4293 - "rustls", 4294 - "rustls-pki-types", 4295 - "serde", 4296 - "serde_json", 4297 - "serde_urlencoded", 4298 - "sync_wrapper", 4299 - "tokio", 4300 - "tokio-rustls", 4301 - "tower", 4302 - "tower-http", 4303 - "tower-service", 4304 - "url", 4305 - "wasm-bindgen", 4306 - "wasm-bindgen-futures", 4307 - "web-sys", 4308 - "webpki-roots", 4309 - ] 4310 - 4311 - [[package]] 4312 - name = "rfc6979" 4313 - version = "0.4.0" 4314 - source = "registry+https://github.com/rust-lang/crates.io-index" 4315 - checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 4316 - dependencies = [ 4317 - "hmac", 4318 - "subtle", 4319 - ] 4320 - 4321 - [[package]] 4322 - name = "ring" 4323 - version = "0.17.14" 4324 - source = "registry+https://github.com/rust-lang/crates.io-index" 4325 - checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 4326 - dependencies = [ 4327 - "cc", 4328 - "cfg-if", 4329 - "getrandom 0.2.16", 4330 - "libc", 4331 - "untrusted", 4332 - "windows-sys 0.52.0", 4333 - ] 4334 - 4335 - [[package]] 4336 - name = "rmp" 4337 - version = "0.8.14" 4338 - source = "registry+https://github.com/rust-lang/crates.io-index" 4339 - checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" 4340 - dependencies = [ 4341 - "byteorder", 4342 - "num-traits", 4343 - "paste", 4344 - ] 4345 - 4346 - [[package]] 4347 - name = "roxmltree" 4348 - version = "0.20.0" 4349 - source = "registry+https://github.com/rust-lang/crates.io-index" 4350 - checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 4351 - 4352 - [[package]] 4353 - name = "rsa" 4354 - version = "0.9.9" 4355 - source = "registry+https://github.com/rust-lang/crates.io-index" 4356 - checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" 4357 - dependencies = [ 4358 - "const-oid", 4359 - "digest", 4360 - "num-bigint-dig", 4361 - "num-integer", 4362 - "num-traits", 4363 - "pkcs1", 4364 - "pkcs8", 4365 - "rand_core 0.6.4", 4366 - "signature", 4367 - "spki", 4368 - "subtle", 4369 - "zeroize", 4370 - ] 4371 - 4372 - [[package]] 4373 - name = "rust-embed" 4374 - version = "8.9.0" 4375 - source = "registry+https://github.com/rust-lang/crates.io-index" 4376 - checksum = "947d7f3fad52b283d261c4c99a084937e2fe492248cb9a68a8435a861b8798ca" 4377 - dependencies = [ 4378 - "rust-embed-impl", 4379 - "rust-embed-utils", 4380 - "walkdir", 4381 - ] 4382 - 4383 - [[package]] 4384 - name = "rust-embed-impl" 4385 - version = "8.9.0" 4386 - source = "registry+https://github.com/rust-lang/crates.io-index" 4387 - checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2" 4388 - dependencies = [ 4389 - "proc-macro2", 4390 - "quote", 4391 - "rust-embed-utils", 4392 - "syn 2.0.111", 4393 - "walkdir", 4394 - ] 4395 - 4396 - [[package]] 4397 - name = "rust-embed-utils" 4398 - version = "8.9.0" 4399 - source = "registry+https://github.com/rust-lang/crates.io-index" 4400 - checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475" 4401 - dependencies = [ 4402 - "sha2", 4403 - "walkdir", 4404 - ] 4405 - 4406 - [[package]] 4407 - name = "rust_decimal" 4408 - version = "1.39.0" 4409 - source = "registry+https://github.com/rust-lang/crates.io-index" 4410 - checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" 4411 - dependencies = [ 4412 - "arrayvec", 4413 - "num-traits", 4414 - ] 4415 - 4416 - [[package]] 4417 - name = "rustc-demangle" 4418 - version = "0.1.26" 4419 - source = "registry+https://github.com/rust-lang/crates.io-index" 4420 - checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 4421 - 4422 - [[package]] 4423 - name = "rustc-hash" 4424 - version = "2.1.1" 4425 - source = "registry+https://github.com/rust-lang/crates.io-index" 4426 - checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 4427 - 4428 - [[package]] 4429 - name = "rustc_version" 4430 - version = "0.4.1" 4431 - source = "registry+https://github.com/rust-lang/crates.io-index" 4432 - checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 4433 - dependencies = [ 4434 - "semver", 4435 - ] 4436 - 4437 - [[package]] 4438 - name = "rustix" 4439 - version = "0.38.44" 4440 - source = "registry+https://github.com/rust-lang/crates.io-index" 4441 - checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" 4442 - dependencies = [ 4443 - "bitflags", 4444 - "errno", 4445 - "libc", 4446 - "linux-raw-sys 0.4.15", 4447 - "windows-sys 0.59.0", 4448 - ] 4449 - 4450 - [[package]] 4451 - name = "rustix" 4452 - version = "1.1.2" 4453 - source = "registry+https://github.com/rust-lang/crates.io-index" 4454 - checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 4455 - dependencies = [ 4456 - "bitflags", 4457 - "errno", 4458 - "libc", 4459 - "linux-raw-sys 0.11.0", 4460 - "windows-sys 0.61.2", 4461 - ] 4462 - 4463 - [[package]] 4464 - name = "rustls" 4465 - version = "0.23.28" 4466 - source = "registry+https://github.com/rust-lang/crates.io-index" 4467 - checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" 4468 - dependencies = [ 4469 - "once_cell", 4470 - "ring", 4471 - "rustls-pki-types", 4472 - "rustls-webpki", 4473 - "subtle", 4474 - "zeroize", 4475 - ] 4476 - 4477 - [[package]] 4478 - name = "rustls-pki-types" 4479 - version = "1.13.1" 4480 - source = "registry+https://github.com/rust-lang/crates.io-index" 4481 - checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" 4482 - dependencies = [ 4483 - "web-time", 4484 - "zeroize", 4485 - ] 4486 - 4487 - [[package]] 4488 - name = "rustls-webpki" 4489 - version = "0.103.8" 4490 - source = "registry+https://github.com/rust-lang/crates.io-index" 4491 - checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" 4492 - dependencies = [ 4493 - "ring", 4494 - "rustls-pki-types", 4495 - "untrusted", 4496 - ] 4497 - 4498 - [[package]] 4499 - name = "rustversion" 4500 - version = "1.0.22" 4501 - source = "registry+https://github.com/rust-lang/crates.io-index" 4502 - checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 4503 - 4504 - [[package]] 4505 - name = "ryu" 4506 - version = "1.0.20" 4507 - source = "registry+https://github.com/rust-lang/crates.io-index" 4508 - checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 4509 - 4510 - [[package]] 4511 - name = "saa" 4512 - version = "5.4.0" 4513 - source = "registry+https://github.com/rust-lang/crates.io-index" 4514 - checksum = "3192d99ee2f69effeacef86c9fa80e75b6604e2a5d3ade6856d206b519521e53" 4515 - 4516 - [[package]] 4517 - name = "same-file" 4518 - version = "1.0.6" 4519 - source = "registry+https://github.com/rust-lang/crates.io-index" 4520 - checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 4521 - dependencies = [ 4522 - "winapi-util", 4523 - ] 4524 - 4525 - [[package]] 4526 - name = "scc" 4527 - version = "3.4.6" 4528 - source = "registry+https://github.com/rust-lang/crates.io-index" 4529 - checksum = "0b6f8686af8563182fc6b63ab7bd7b5cad8f40fbe660675627caedc6c073eca8" 4530 - dependencies = [ 4531 - "saa", 4532 - "sdd", 4533 - ] 4534 - 4535 - [[package]] 4536 - name = "schemars" 4537 - version = "0.9.0" 4538 - source = "registry+https://github.com/rust-lang/crates.io-index" 4539 - checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" 4540 - dependencies = [ 4541 - "dyn-clone", 4542 - "ref-cast", 4543 - "serde", 4544 - "serde_json", 4545 - ] 4546 - 4547 - [[package]] 4548 - name = "schemars" 4549 - version = "1.1.0" 4550 - source = "registry+https://github.com/rust-lang/crates.io-index" 4551 - checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" 4552 - dependencies = [ 4553 - "dyn-clone", 4554 - "ref-cast", 4555 - "serde", 4556 - "serde_json", 4557 - ] 4558 - 4559 - [[package]] 4560 - name = "scoped-tls" 4561 - version = "1.0.1" 4562 - source = "registry+https://github.com/rust-lang/crates.io-index" 4563 - checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 4564 - 4565 - [[package]] 4566 - name = "scopeguard" 4567 - version = "1.2.0" 4568 - source = "registry+https://github.com/rust-lang/crates.io-index" 4569 - checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 4570 - 4571 - [[package]] 4572 - name = "sdd" 4573 - version = "4.5.0" 4574 - source = "registry+https://github.com/rust-lang/crates.io-index" 4575 - checksum = "7168ecf885fdd3920ade15d50189593b076e1d060b60406a745766380195d65a" 4576 - 4577 - [[package]] 4578 - name = "sec1" 4579 - version = "0.7.3" 4580 - source = "registry+https://github.com/rust-lang/crates.io-index" 4581 - checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 4582 - dependencies = [ 4583 - "base16ct", 4584 - "der", 4585 - "generic-array", 4586 - "pkcs8", 4587 - "subtle", 4588 - "zeroize", 4589 - ] 4590 - 4591 - [[package]] 4592 - name = "self_cell" 4593 - version = "1.2.1" 4594 - source = "registry+https://github.com/rust-lang/crates.io-index" 4595 - checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" 4596 - 4597 - [[package]] 4598 - name = "semver" 4599 - version = "1.0.27" 4600 - source = "registry+https://github.com/rust-lang/crates.io-index" 4601 - checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 4602 - 4603 - [[package]] 4604 - name = "send_wrapper" 4605 - version = "0.6.0" 4606 - source = "registry+https://github.com/rust-lang/crates.io-index" 4607 - checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 4608 - 4609 - [[package]] 4610 - name = "serde" 4611 - version = "1.0.228" 4612 - source = "registry+https://github.com/rust-lang/crates.io-index" 4613 - checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 4614 - dependencies = [ 4615 - "serde_core", 4616 - "serde_derive", 4617 - ] 4618 - 4619 - [[package]] 4620 - name = "serde_bytes" 4621 - version = "0.11.19" 4622 - source = "registry+https://github.com/rust-lang/crates.io-index" 4623 - checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" 4624 - dependencies = [ 4625 - "serde", 4626 - "serde_core", 4627 - ] 4628 - 4629 - [[package]] 4630 - name = "serde_core" 4631 - version = "1.0.228" 4632 - source = "registry+https://github.com/rust-lang/crates.io-index" 4633 - checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 4634 - dependencies = [ 4635 - "serde_derive", 4636 - ] 4637 - 4638 - [[package]] 4639 - name = "serde_derive" 4640 - version = "1.0.228" 4641 - source = "registry+https://github.com/rust-lang/crates.io-index" 4642 - checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 4643 - dependencies = [ 4644 - "proc-macro2", 4645 - "quote", 4646 - "syn 2.0.111", 4647 - ] 4648 - 4649 - [[package]] 4650 - name = "serde_html_form" 4651 - version = "0.2.8" 4652 - source = "registry+https://github.com/rust-lang/crates.io-index" 4653 - checksum = "b2f2d7ff8a2140333718bb329f5c40fc5f0865b84c426183ce14c97d2ab8154f" 4654 - dependencies = [ 4655 - "form_urlencoded", 4656 - "indexmap 2.12.1", 4657 - "itoa", 4658 - "ryu", 4659 - "serde_core", 4660 - ] 4661 - 4662 - [[package]] 4663 - name = "serde_ipld_dagcbor" 4664 - version = "0.6.4" 4665 - source = "registry+https://github.com/rust-lang/crates.io-index" 4666 - checksum = "46182f4f08349a02b45c998ba3215d3f9de826246ba02bb9dddfe9a2a2100778" 4667 - dependencies = [ 4668 - "cbor4ii", 4669 - "ipld-core", 4670 - "scopeguard", 4671 - "serde", 4672 - ] 4673 - 4674 - [[package]] 4675 - name = "serde_json" 4676 - version = "1.0.145" 4677 - source = "registry+https://github.com/rust-lang/crates.io-index" 4678 - checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 4679 - dependencies = [ 4680 - "indexmap 2.12.1", 4681 - "itoa", 4682 - "memchr", 4683 - "ryu", 4684 - "serde", 4685 - "serde_core", 4686 - ] 4687 - 4688 - [[package]] 4689 - name = "serde_repr" 4690 - version = "0.1.20" 4691 - source = "registry+https://github.com/rust-lang/crates.io-index" 4692 - checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 4693 - dependencies = [ 4694 - "proc-macro2", 4695 - "quote", 4696 - "syn 2.0.111", 4697 - ] 4698 - 4699 - [[package]] 4700 - name = "serde_spanned" 4701 - version = "0.6.9" 4702 - source = "registry+https://github.com/rust-lang/crates.io-index" 4703 - checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 4704 - dependencies = [ 4705 - "serde", 4706 - ] 4707 - 4708 - [[package]] 4709 - name = "serde_urlencoded" 4710 - version = "0.7.1" 4711 - source = "registry+https://github.com/rust-lang/crates.io-index" 4712 - checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 4713 - dependencies = [ 4714 - "form_urlencoded", 4715 - "itoa", 4716 - "ryu", 4717 - "serde", 4718 - ] 4719 - 4720 - [[package]] 4721 - name = "serde_with" 4722 - version = "3.16.1" 4723 - source = "registry+https://github.com/rust-lang/crates.io-index" 4724 - checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" 4725 - dependencies = [ 4726 - "base64", 4727 - "chrono", 4728 - "hex", 4729 - "indexmap 1.9.3", 4730 - "indexmap 2.12.1", 4731 - "schemars 0.9.0", 4732 - "schemars 1.1.0", 4733 - "serde_core", 4734 - "serde_json", 4735 - "serde_with_macros", 4736 - "time", 4737 - ] 4738 - 4739 - [[package]] 4740 - name = "serde_with_macros" 4741 - version = "3.16.1" 4742 - source = "registry+https://github.com/rust-lang/crates.io-index" 4743 - checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" 4744 - dependencies = [ 4745 - "darling", 4746 - "proc-macro2", 4747 - "quote", 4748 - "syn 2.0.111", 4749 - ] 4750 - 4751 - [[package]] 4752 - name = "serde_yaml" 4753 - version = "0.9.34+deprecated" 4754 - source = "registry+https://github.com/rust-lang/crates.io-index" 4755 - checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" 4756 - dependencies = [ 4757 - "indexmap 2.12.1", 4758 - "itoa", 4759 - "ryu", 4760 - "serde", 4761 - "unsafe-libyaml", 4762 - ] 4763 - 4764 - [[package]] 4765 - name = "sha2" 4766 - version = "0.10.9" 4767 - source = "registry+https://github.com/rust-lang/crates.io-index" 4768 - checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 4769 - dependencies = [ 4770 - "cfg-if", 4771 - "cpufeatures", 4772 - "digest", 4773 - ] 4774 - 4775 - [[package]] 4776 - name = "shadow-rs" 4777 - version = "1.4.0" 4778 - source = "registry+https://github.com/rust-lang/crates.io-index" 4779 - checksum = "72d18183cef626bce22836103349c7050d73db799be0171386b80947d157ae32" 4780 - dependencies = [ 4781 - "const_format", 4782 - "is_debug", 4783 - "time", 4784 - "tzdb", 4785 - ] 4786 - 4787 - [[package]] 4788 - name = "sharded-slab" 4789 - version = "0.1.7" 4790 - source = "registry+https://github.com/rust-lang/crates.io-index" 4791 - checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 4792 - dependencies = [ 4793 - "lazy_static", 4794 - ] 4795 - 4796 - [[package]] 4797 - name = "shell-words" 4798 - version = "1.1.1" 4799 - source = "registry+https://github.com/rust-lang/crates.io-index" 4800 - checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" 4801 - 4802 - [[package]] 4803 - name = "shlex" 4804 - version = "1.3.0" 4805 - source = "registry+https://github.com/rust-lang/crates.io-index" 4806 - checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 4807 - 4808 - [[package]] 4809 - name = "signature" 4810 - version = "2.2.0" 4811 - source = "registry+https://github.com/rust-lang/crates.io-index" 4812 - checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 4813 - dependencies = [ 4814 - "digest", 4815 - "rand_core 0.6.4", 4816 - ] 4817 - 4818 - [[package]] 4819 - name = "simd-adler32" 4820 - version = "0.3.8" 4821 - source = "registry+https://github.com/rust-lang/crates.io-index" 4822 - checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 4823 - 4824 - [[package]] 4825 - name = "siphasher" 4826 - version = "1.0.1" 4827 - source = "registry+https://github.com/rust-lang/crates.io-index" 4828 - checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 4829 - 4830 - [[package]] 4831 - name = "slab" 4832 - version = "0.4.11" 4833 - source = "registry+https://github.com/rust-lang/crates.io-index" 4834 - checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 4835 - 4836 - [[package]] 4837 - name = "smallvec" 4838 - version = "1.15.1" 4839 - source = "registry+https://github.com/rust-lang/crates.io-index" 4840 - checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 4841 - 4842 - [[package]] 4843 - name = "smol_str" 4844 - version = "0.3.4" 4845 - source = "registry+https://github.com/rust-lang/crates.io-index" 4846 - checksum = "3498b0a27f93ef1402f20eefacfaa1691272ac4eca1cdc8c596cb0a245d6cbf5" 4847 - dependencies = [ 4848 - "borsh", 4849 - "serde_core", 4850 - ] 4851 - 4852 - [[package]] 4853 - name = "socket2" 4854 - version = "0.6.1" 4855 - source = "registry+https://github.com/rust-lang/crates.io-index" 4856 - checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" 4857 - dependencies = [ 4858 - "libc", 4859 - "windows-sys 0.60.2", 4860 - ] 4861 - 4862 - [[package]] 4863 - name = "spin" 4864 - version = "0.9.8" 4865 - source = "registry+https://github.com/rust-lang/crates.io-index" 4866 - checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4867 - dependencies = [ 4868 - "lock_api", 4869 - ] 4870 - 4871 - [[package]] 4872 - name = "spin" 4873 - version = "0.10.0" 4874 - source = "registry+https://github.com/rust-lang/crates.io-index" 4875 - checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" 4876 - 4877 - [[package]] 4878 - name = "spki" 4879 - version = "0.7.3" 4880 - source = "registry+https://github.com/rust-lang/crates.io-index" 4881 - checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 4882 - dependencies = [ 4883 - "base64ct", 4884 - "der", 4885 - ] 4886 - 4887 - [[package]] 4888 - name = "stable_deref_trait" 4889 - version = "1.2.1" 4890 - source = "registry+https://github.com/rust-lang/crates.io-index" 4891 - checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 4892 - 4893 - [[package]] 4894 - name = "static-regular-grammar" 4895 - version = "2.0.2" 4896 - source = "registry+https://github.com/rust-lang/crates.io-index" 4897 - checksum = "4f4a6c40247579acfbb138c3cd7de3dab113ab4ac6227f1b7de7d626ee667957" 4898 - dependencies = [ 4899 - "abnf", 4900 - "btree-range-map", 4901 - "ciborium", 4902 - "hex_fmt", 4903 - "indoc", 4904 - "proc-macro-error", 4905 - "proc-macro2", 4906 - "quote", 4907 - "serde", 4908 - "sha2", 4909 - "syn 2.0.111", 4910 - "thiserror 1.0.69", 4911 - ] 4912 - 4913 - [[package]] 4914 - name = "static_assertions" 4915 - version = "1.1.0" 4916 - source = "registry+https://github.com/rust-lang/crates.io-index" 4917 - checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4918 - 4919 - [[package]] 4920 - name = "string_cache" 4921 - version = "0.8.9" 4922 - source = "registry+https://github.com/rust-lang/crates.io-index" 4923 - checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" 4924 - dependencies = [ 4925 - "new_debug_unreachable", 4926 - "parking_lot", 4927 - "phf_shared 0.11.3", 4928 - "precomputed-hash", 4929 - "serde", 4930 - ] 4931 - 4932 - [[package]] 4933 - name = "string_cache_codegen" 4934 - version = "0.5.4" 4935 - source = "registry+https://github.com/rust-lang/crates.io-index" 4936 - checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 4937 - dependencies = [ 4938 - "phf_generator", 4939 - "phf_shared 0.11.3", 4940 - "proc-macro2", 4941 - "quote", 4942 - ] 4943 - 4944 - [[package]] 4945 - name = "strip-ansi-escapes" 4946 - version = "0.2.1" 4947 - source = "registry+https://github.com/rust-lang/crates.io-index" 4948 - checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025" 4949 - dependencies = [ 4950 - "vte", 4951 - ] 4952 - 4953 - [[package]] 4954 - name = "strsim" 4955 - version = "0.11.1" 4956 - source = "registry+https://github.com/rust-lang/crates.io-index" 4957 - checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4958 - 4959 - [[package]] 4960 - name = "strum" 4961 - version = "0.26.3" 4962 - source = "registry+https://github.com/rust-lang/crates.io-index" 4963 - checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 4964 - 4965 - [[package]] 4966 - name = "strum_macros" 4967 - version = "0.27.2" 4968 - source = "registry+https://github.com/rust-lang/crates.io-index" 4969 - checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" 4970 - dependencies = [ 4971 - "heck 0.5.0", 4972 - "proc-macro2", 4973 - "quote", 4974 - "syn 2.0.111", 4975 - ] 4976 - 4977 - [[package]] 4978 - name = "subtle" 4979 - version = "2.6.1" 4980 - source = "registry+https://github.com/rust-lang/crates.io-index" 4981 - checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4982 - 4983 - [[package]] 4984 - name = "supports-color" 4985 - version = "3.0.2" 4986 - source = "registry+https://github.com/rust-lang/crates.io-index" 4987 - checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" 4988 - dependencies = [ 4989 - "is_ci", 4990 - ] 4991 - 4992 - [[package]] 4993 - name = "supports-hyperlinks" 4994 - version = "3.1.0" 4995 - source = "registry+https://github.com/rust-lang/crates.io-index" 4996 - checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" 4997 - 4998 - [[package]] 4999 - name = "supports-unicode" 5000 - version = "3.0.0" 5001 - source = "registry+https://github.com/rust-lang/crates.io-index" 5002 - checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" 5003 - 5004 - [[package]] 5005 - name = "syn" 5006 - version = "1.0.109" 5007 - source = "registry+https://github.com/rust-lang/crates.io-index" 5008 - checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 5009 - dependencies = [ 5010 - "proc-macro2", 5011 - "quote", 5012 - "unicode-ident", 5013 - ] 5014 - 5015 - [[package]] 5016 - name = "syn" 5017 - version = "2.0.111" 5018 - source = "registry+https://github.com/rust-lang/crates.io-index" 5019 - checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" 5020 - dependencies = [ 5021 - "proc-macro2", 5022 - "quote", 5023 - "unicode-ident", 5024 - ] 5025 - 5026 - [[package]] 5027 - name = "sync_wrapper" 5028 - version = "1.0.2" 5029 - source = "registry+https://github.com/rust-lang/crates.io-index" 5030 - checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 5031 - dependencies = [ 5032 - "futures-core", 5033 - ] 5034 - 5035 - [[package]] 5036 - name = "synstructure" 5037 - version = "0.13.2" 5038 - source = "registry+https://github.com/rust-lang/crates.io-index" 5039 - checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 5040 - dependencies = [ 5041 - "proc-macro2", 5042 - "quote", 5043 - "syn 2.0.111", 5044 - ] 5045 - 5046 - [[package]] 5047 - name = "sys-locale" 5048 - version = "0.3.2" 5049 - source = "registry+https://github.com/rust-lang/crates.io-index" 5050 - checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 5051 - dependencies = [ 5052 - "libc", 5053 - ] 5054 - 5055 - [[package]] 5056 - name = "sysinfo" 5057 - version = "0.37.2" 5058 - source = "registry+https://github.com/rust-lang/crates.io-index" 5059 - checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" 5060 - dependencies = [ 5061 - "libc", 5062 - "memchr", 5063 - "ntapi", 5064 - "objc2-core-foundation", 5065 - "objc2-io-kit", 5066 - "windows 0.61.3", 5067 - ] 5068 - 5069 - [[package]] 5070 - name = "system-configuration" 5071 - version = "0.6.1" 5072 - source = "registry+https://github.com/rust-lang/crates.io-index" 5073 - checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 5074 - dependencies = [ 5075 - "bitflags", 5076 - "core-foundation", 5077 - "system-configuration-sys", 5078 - ] 5079 - 5080 - [[package]] 5081 - name = "system-configuration-sys" 5082 - version = "0.6.0" 5083 - source = "registry+https://github.com/rust-lang/crates.io-index" 5084 - checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 5085 - dependencies = [ 5086 - "core-foundation-sys", 5087 - "libc", 5088 - ] 5089 - 5090 - [[package]] 5091 - name = "tabled" 5092 - version = "0.20.0" 5093 - source = "registry+https://github.com/rust-lang/crates.io-index" 5094 - checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" 5095 - dependencies = [ 5096 - "ansi-str", 5097 - "ansitok", 5098 - "papergrid", 5099 - "testing_table", 5100 - ] 5101 - 5102 - [[package]] 5103 - name = "tagptr" 5104 - version = "0.2.0" 5105 - source = "registry+https://github.com/rust-lang/crates.io-index" 5106 - checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 5107 - 5108 - [[package]] 5109 - name = "tempfile" 5110 - version = "3.23.0" 5111 - source = "registry+https://github.com/rust-lang/crates.io-index" 5112 - checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" 5113 - dependencies = [ 5114 - "fastrand", 5115 - "getrandom 0.3.4", 5116 - "once_cell", 5117 - "rustix 1.1.2", 5118 - "windows-sys 0.61.2", 5119 - ] 5120 - 5121 - [[package]] 5122 - name = "tendril" 5123 - version = "0.4.3" 5124 - source = "registry+https://github.com/rust-lang/crates.io-index" 5125 - checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 5126 - dependencies = [ 5127 - "futf", 5128 - "mac", 5129 - "utf-8", 5130 - ] 5131 - 5132 - [[package]] 5133 - name = "terminal_size" 5134 - version = "0.4.3" 5135 - source = "registry+https://github.com/rust-lang/crates.io-index" 5136 - checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" 5137 - dependencies = [ 5138 - "rustix 1.1.2", 5139 - "windows-sys 0.60.2", 5140 - ] 5141 - 5142 - [[package]] 5143 - name = "testing_table" 5144 - version = "0.3.0" 5145 - source = "registry+https://github.com/rust-lang/crates.io-index" 5146 - checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" 5147 - dependencies = [ 5148 - "ansitok", 5149 - "unicode-width 0.2.2", 5150 - ] 5151 - 5152 - [[package]] 5153 - name = "textwrap" 5154 - version = "0.16.2" 5155 - source = "registry+https://github.com/rust-lang/crates.io-index" 5156 - checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" 5157 - dependencies = [ 5158 - "unicode-linebreak", 5159 - "unicode-width 0.2.2", 5160 - ] 5161 - 5162 - [[package]] 5163 - name = "thiserror" 5164 - version = "1.0.69" 5165 - source = "registry+https://github.com/rust-lang/crates.io-index" 5166 - checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 5167 - dependencies = [ 5168 - "thiserror-impl 1.0.69", 5169 - ] 5170 - 5171 - [[package]] 5172 - name = "thiserror" 5173 - version = "2.0.17" 5174 - source = "registry+https://github.com/rust-lang/crates.io-index" 5175 - checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" 5176 - dependencies = [ 5177 - "thiserror-impl 2.0.17", 5178 - ] 5179 - 5180 - [[package]] 5181 - name = "thiserror-impl" 5182 - version = "1.0.69" 5183 - source = "registry+https://github.com/rust-lang/crates.io-index" 5184 - checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 5185 - dependencies = [ 5186 - "proc-macro2", 5187 - "quote", 5188 - "syn 2.0.111", 5189 - ] 5190 - 5191 - [[package]] 5192 - name = "thiserror-impl" 5193 - version = "2.0.17" 5194 - source = "registry+https://github.com/rust-lang/crates.io-index" 5195 - checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" 5196 - dependencies = [ 5197 - "proc-macro2", 5198 - "quote", 5199 - "syn 2.0.111", 5200 - ] 5201 - 5202 - [[package]] 5203 - name = "thread_local" 5204 - version = "1.1.9" 5205 - source = "registry+https://github.com/rust-lang/crates.io-index" 5206 - checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 5207 - dependencies = [ 5208 - "cfg-if", 5209 - ] 5210 - 5211 - [[package]] 5212 - name = "time" 5213 - version = "0.3.44" 5214 - source = "registry+https://github.com/rust-lang/crates.io-index" 5215 - checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 5216 - dependencies = [ 5217 - "deranged", 5218 - "itoa", 5219 - "libc", 5220 - "num-conv", 5221 - "num_threads", 5222 - "powerfmt", 5223 - "serde", 5224 - "time-core", 5225 - "time-macros", 5226 - ] 5227 - 5228 - [[package]] 5229 - name = "time-core" 5230 - version = "0.1.6" 5231 - source = "registry+https://github.com/rust-lang/crates.io-index" 5232 - checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" 5233 - 5234 - [[package]] 5235 - name = "time-macros" 5236 - version = "0.2.24" 5237 - source = "registry+https://github.com/rust-lang/crates.io-index" 5238 - checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" 5239 - dependencies = [ 5240 - "num-conv", 5241 - "time-core", 5242 - ] 5243 - 5244 - [[package]] 5245 - name = "tinystr" 5246 - version = "0.8.2" 5247 - source = "registry+https://github.com/rust-lang/crates.io-index" 5248 - checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" 5249 - dependencies = [ 5250 - "displaydoc", 5251 - "serde_core", 5252 - "zerovec", 5253 - ] 5254 - 5255 - [[package]] 5256 - name = "tinyvec" 5257 - version = "1.10.0" 5258 - source = "registry+https://github.com/rust-lang/crates.io-index" 5259 - checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 5260 - dependencies = [ 5261 - "tinyvec_macros", 5262 - ] 5263 - 5264 - [[package]] 5265 - name = "tinyvec_macros" 5266 - version = "0.1.1" 5267 - source = "registry+https://github.com/rust-lang/crates.io-index" 5268 - checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 5269 - 5270 - [[package]] 5271 - name = "titlecase" 5272 - version = "3.6.0" 5273 - source = "registry+https://github.com/rust-lang/crates.io-index" 5274 - checksum = "eb567088a91d59b492520c8149e2be5ce10d5deb2d9a383f3378df3259679d40" 5275 - dependencies = [ 5276 - "regex", 5277 - ] 5278 - 5279 - [[package]] 5280 - name = "tokio" 5281 - version = "1.48.0" 5282 - source = "registry+https://github.com/rust-lang/crates.io-index" 5283 - checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" 5284 - dependencies = [ 5285 - "bytes", 5286 - "libc", 5287 - "mio", 5288 - "pin-project-lite", 5289 - "socket2", 5290 - "tokio-macros", 5291 - "windows-sys 0.61.2", 5292 - ] 5293 - 5294 - [[package]] 5295 - name = "tokio-macros" 5296 - version = "2.6.0" 5297 - source = "registry+https://github.com/rust-lang/crates.io-index" 5298 - checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" 5299 - dependencies = [ 5300 - "proc-macro2", 5301 - "quote", 5302 - "syn 2.0.111", 5303 - ] 5304 - 5305 - [[package]] 5306 - name = "tokio-rustls" 5307 - version = "0.26.4" 5308 - source = "registry+https://github.com/rust-lang/crates.io-index" 5309 - checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 5310 - dependencies = [ 5311 - "rustls", 5312 - "tokio", 5313 - ] 5314 - 5315 - [[package]] 5316 - name = "tokio-util" 5317 - version = "0.7.17" 5318 - source = "registry+https://github.com/rust-lang/crates.io-index" 5319 - checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" 5320 - dependencies = [ 5321 - "bytes", 5322 - "futures-core", 5323 - "futures-sink", 5324 - "futures-util", 5325 - "pin-project-lite", 5326 - "tokio", 5327 - ] 5328 - 5329 - [[package]] 5330 - name = "toml" 5331 - version = "0.8.23" 5332 - source = "registry+https://github.com/rust-lang/crates.io-index" 5333 - checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 5334 - dependencies = [ 5335 - "indexmap 2.12.1", 5336 - "serde", 5337 - "serde_spanned", 5338 - "toml_datetime", 5339 - "toml_edit", 5340 - ] 5341 - 5342 - [[package]] 5343 - name = "toml_datetime" 5344 - version = "0.6.11" 5345 - source = "registry+https://github.com/rust-lang/crates.io-index" 5346 - checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 5347 - dependencies = [ 5348 - "serde", 5349 - ] 5350 - 5351 - [[package]] 5352 - name = "toml_edit" 5353 - version = "0.22.27" 5354 - source = "registry+https://github.com/rust-lang/crates.io-index" 5355 - checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 5356 - dependencies = [ 5357 - "indexmap 2.12.1", 5358 - "serde", 5359 - "serde_spanned", 5360 - "toml_datetime", 5361 - "toml_write", 5362 - "winnow", 5363 - ] 5364 - 5365 - [[package]] 5366 - name = "toml_write" 5367 - version = "0.1.2" 5368 - source = "registry+https://github.com/rust-lang/crates.io-index" 5369 - checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 5370 - 5371 - [[package]] 5372 - name = "tower" 5373 - version = "0.5.2" 5374 - source = "registry+https://github.com/rust-lang/crates.io-index" 5375 - checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 5376 - dependencies = [ 5377 - "futures-core", 5378 - "futures-util", 5379 - "pin-project-lite", 5380 - "sync_wrapper", 5381 - "tokio", 5382 - "tower-layer", 5383 - "tower-service", 5384 - ] 5385 - 5386 - [[package]] 5387 - name = "tower-http" 5388 - version = "0.6.8" 5389 - source = "registry+https://github.com/rust-lang/crates.io-index" 5390 - checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 5391 - dependencies = [ 5392 - "async-compression", 5393 - "bitflags", 5394 - "bytes", 5395 - "futures-core", 5396 - "futures-util", 5397 - "http", 5398 - "http-body", 5399 - "http-body-util", 5400 - "iri-string", 5401 - "pin-project-lite", 5402 - "tokio", 5403 - "tokio-util", 5404 - "tower", 5405 - "tower-layer", 5406 - "tower-service", 5407 - ] 5408 - 5409 - [[package]] 5410 - name = "tower-layer" 5411 - version = "0.3.3" 5412 - source = "registry+https://github.com/rust-lang/crates.io-index" 5413 - checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 5414 - 5415 - [[package]] 5416 - name = "tower-service" 5417 - version = "0.3.3" 5418 - source = "registry+https://github.com/rust-lang/crates.io-index" 5419 - checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 5420 - 5421 - [[package]] 5422 - name = "tracing" 5423 - version = "0.1.43" 5424 - source = "registry+https://github.com/rust-lang/crates.io-index" 5425 - checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" 5426 - dependencies = [ 5427 - "pin-project-lite", 5428 - "tracing-attributes", 5429 - "tracing-core", 5430 - ] 5431 - 5432 - [[package]] 5433 - name = "tracing-attributes" 5434 - version = "0.1.31" 5435 - source = "registry+https://github.com/rust-lang/crates.io-index" 5436 - checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 5437 - dependencies = [ 5438 - "proc-macro2", 5439 - "quote", 5440 - "syn 2.0.111", 5441 - ] 5442 - 5443 - [[package]] 5444 - name = "tracing-core" 5445 - version = "0.1.35" 5446 - source = "registry+https://github.com/rust-lang/crates.io-index" 5447 - checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" 5448 - dependencies = [ 5449 - "once_cell", 5450 - "valuable", 5451 - ] 5452 - 5453 - [[package]] 5454 - name = "tracing-log" 5455 - version = "0.2.0" 5456 - source = "registry+https://github.com/rust-lang/crates.io-index" 5457 - checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 5458 - dependencies = [ 5459 - "log", 5460 - "once_cell", 5461 - "tracing-core", 5462 - ] 5463 - 5464 - [[package]] 5465 - name = "tracing-subscriber" 5466 - version = "0.3.22" 5467 - source = "registry+https://github.com/rust-lang/crates.io-index" 5468 - checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" 5469 - dependencies = [ 5470 - "matchers", 5471 - "nu-ansi-term", 5472 - "once_cell", 5473 - "regex-automata", 5474 - "sharded-slab", 5475 - "smallvec", 5476 - "thread_local", 5477 - "tracing", 5478 - "tracing-core", 5479 - "tracing-log", 5480 - ] 5481 - 5482 - [[package]] 5483 - name = "trait-variant" 5484 - version = "0.1.2" 5485 - source = "registry+https://github.com/rust-lang/crates.io-index" 5486 - checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" 5487 - dependencies = [ 5488 - "proc-macro2", 5489 - "quote", 5490 - "syn 2.0.111", 5491 - ] 5492 - 5493 - [[package]] 5494 - name = "triomphe" 5495 - version = "0.1.15" 5496 - source = "registry+https://github.com/rust-lang/crates.io-index" 5497 - checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" 5498 - 5499 - [[package]] 5500 - name = "try-lock" 5501 - version = "0.2.5" 5502 - source = "registry+https://github.com/rust-lang/crates.io-index" 5503 - checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 5504 - 5505 - [[package]] 5506 - name = "type-map" 5507 - version = "0.5.1" 5508 - source = "registry+https://github.com/rust-lang/crates.io-index" 5509 - checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" 5510 - dependencies = [ 5511 - "rustc-hash", 5512 - ] 5513 - 5514 - [[package]] 5515 - name = "typeid" 5516 - version = "1.0.3" 5517 - source = "registry+https://github.com/rust-lang/crates.io-index" 5518 - checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" 5519 - 5520 - [[package]] 5521 - name = "typenum" 5522 - version = "1.19.0" 5523 - source = "registry+https://github.com/rust-lang/crates.io-index" 5524 - checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 5525 - 5526 - [[package]] 5527 - name = "typetag" 5528 - version = "0.2.21" 5529 - source = "registry+https://github.com/rust-lang/crates.io-index" 5530 - checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" 5531 - dependencies = [ 5532 - "erased-serde", 5533 - "inventory", 5534 - "once_cell", 5535 - "serde", 5536 - "typetag-impl", 5537 - ] 5538 - 5539 - [[package]] 5540 - name = "typetag-impl" 5541 - version = "0.2.21" 5542 - source = "registry+https://github.com/rust-lang/crates.io-index" 5543 - checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" 5544 - dependencies = [ 5545 - "proc-macro2", 5546 - "quote", 5547 - "syn 2.0.111", 5548 - ] 5549 - 5550 - [[package]] 5551 - name = "tz-rs" 5552 - version = "0.7.1" 5553 - source = "registry+https://github.com/rust-lang/crates.io-index" 5554 - checksum = "14eff19b8dc1ace5bf7e4d920b2628ae3837f422ff42210cb1567cbf68b5accf" 5555 - 5556 - [[package]] 5557 - name = "tzdb" 5558 - version = "0.7.3" 5559 - source = "registry+https://github.com/rust-lang/crates.io-index" 5560 - checksum = "56d4e985b6dda743ae7fd4140c28105316ffd75bc58258ee6cc12934e3eb7a0c" 5561 - dependencies = [ 5562 - "iana-time-zone", 5563 - "tz-rs", 5564 - "tzdb_data", 5565 - ] 5566 - 5567 - [[package]] 5568 - name = "tzdb_data" 5569 - version = "0.2.3" 5570 - source = "registry+https://github.com/rust-lang/crates.io-index" 5571 - checksum = "42302a846dea7ab786f42dc5f519387069045acff793e1178d9368414168fe95" 5572 - dependencies = [ 5573 - "tz-rs", 5574 - ] 5575 - 5576 - [[package]] 5577 - name = "ucd-trie" 5578 - version = "0.1.7" 5579 - source = "registry+https://github.com/rust-lang/crates.io-index" 5580 - checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" 5581 - 5582 - [[package]] 5583 - name = "uds_windows" 5584 - version = "1.1.0" 5585 - source = "registry+https://github.com/rust-lang/crates.io-index" 5586 - checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 5587 - dependencies = [ 5588 - "memoffset", 5589 - "tempfile", 5590 - "winapi", 5591 - ] 5592 - 5593 - [[package]] 5594 - name = "umask" 5595 - version = "2.1.0" 5596 - source = "registry+https://github.com/rust-lang/crates.io-index" 5597 - checksum = "ec9a46c2549e35c054e0ffe281a3a6ec0007793db4df106604d37ed3f4d73d1c" 5598 - dependencies = [ 5599 - "thiserror 1.0.69", 5600 - ] 5601 - 5602 - [[package]] 5603 - name = "unic-langid" 5604 - version = "0.9.6" 5605 - source = "registry+https://github.com/rust-lang/crates.io-index" 5606 - checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" 5607 - dependencies = [ 5608 - "unic-langid-impl", 5609 - ] 5610 - 5611 - [[package]] 5612 - name = "unic-langid-impl" 5613 - version = "0.9.6" 5614 - source = "registry+https://github.com/rust-lang/crates.io-index" 5615 - checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" 5616 - dependencies = [ 5617 - "tinystr", 5618 - ] 5619 - 5620 - [[package]] 5621 - name = "unicase" 5622 - version = "2.8.1" 5623 - source = "registry+https://github.com/rust-lang/crates.io-index" 5624 - checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 5625 - 5626 - [[package]] 5627 - name = "unicode-ident" 5628 - version = "1.0.22" 5629 - source = "registry+https://github.com/rust-lang/crates.io-index" 5630 - checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" 5631 - 5632 - [[package]] 5633 - name = "unicode-linebreak" 5634 - version = "0.1.5" 5635 - source = "registry+https://github.com/rust-lang/crates.io-index" 5636 - checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 5637 - 5638 - [[package]] 5639 - name = "unicode-segmentation" 5640 - version = "1.12.0" 5641 - source = "registry+https://github.com/rust-lang/crates.io-index" 5642 - checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 5643 - 5644 - [[package]] 5645 - name = "unicode-width" 5646 - version = "0.1.14" 5647 - source = "registry+https://github.com/rust-lang/crates.io-index" 5648 - checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 5649 - 5650 - [[package]] 5651 - name = "unicode-width" 5652 - version = "0.2.2" 5653 - source = "registry+https://github.com/rust-lang/crates.io-index" 5654 - checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" 5655 - 5656 - [[package]] 5657 - name = "unicode-xid" 5658 - version = "0.2.6" 5659 - source = "registry+https://github.com/rust-lang/crates.io-index" 5660 - checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 5661 - 5662 - [[package]] 5663 - name = "unit-prefix" 5664 - version = "0.5.2" 5665 - source = "registry+https://github.com/rust-lang/crates.io-index" 5666 - checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" 5667 - 5668 - [[package]] 5669 - name = "unsafe-libyaml" 5670 - version = "0.2.11" 5671 - source = "registry+https://github.com/rust-lang/crates.io-index" 5672 - checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" 5673 - 5674 - [[package]] 5675 - name = "unsigned-varint" 5676 - version = "0.7.2" 5677 - source = "registry+https://github.com/rust-lang/crates.io-index" 5678 - checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" 5679 - 5680 - [[package]] 5681 - name = "unsigned-varint" 5682 - version = "0.8.0" 5683 - source = "registry+https://github.com/rust-lang/crates.io-index" 5684 - checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" 5685 - 5686 - [[package]] 5687 - name = "untrusted" 5688 - version = "0.9.0" 5689 - source = "registry+https://github.com/rust-lang/crates.io-index" 5690 - checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 5691 - 5692 - [[package]] 5693 - name = "url" 5694 - version = "2.5.7" 5695 - source = "registry+https://github.com/rust-lang/crates.io-index" 5696 - checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 5697 - dependencies = [ 5698 - "form_urlencoded", 5699 - "idna", 5700 - "percent-encoding", 5701 - "serde", 5702 - ] 5703 - 5704 - [[package]] 5705 - name = "urlencoding" 5706 - version = "2.1.3" 5707 - source = "registry+https://github.com/rust-lang/crates.io-index" 5708 - checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 5709 - 5710 - [[package]] 5711 - name = "utf-8" 5712 - version = "0.7.6" 5713 - source = "registry+https://github.com/rust-lang/crates.io-index" 5714 - checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 5715 - 5716 - [[package]] 5717 - name = "utf8_iter" 5718 - version = "1.0.4" 5719 - source = "registry+https://github.com/rust-lang/crates.io-index" 5720 - checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 5721 - 5722 - [[package]] 5723 - name = "utf8parse" 5724 - version = "0.2.2" 5725 - source = "registry+https://github.com/rust-lang/crates.io-index" 5726 - checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 5727 - 5728 - [[package]] 5729 - name = "uucore" 5730 - version = "0.4.0" 5731 - source = "registry+https://github.com/rust-lang/crates.io-index" 5732 - checksum = "2003164a38a7f39da1de103a70fa66b745f572f0045ec261481539516c0a8a0e" 5733 - dependencies = [ 5734 - "bstr", 5735 - "clap", 5736 - "fluent", 5737 - "fluent-bundle", 5738 - "fluent-syntax", 5739 - "libc", 5740 - "nix", 5741 - "number_prefix", 5742 - "os_display", 5743 - "phf 0.13.1", 5744 - "procfs 0.18.0", 5745 - "thiserror 2.0.17", 5746 - "unic-langid", 5747 - "uucore_procs", 5748 - "wild", 5749 - ] 5750 - 5751 - [[package]] 5752 - name = "uucore_procs" 5753 - version = "0.4.0" 5754 - source = "registry+https://github.com/rust-lang/crates.io-index" 5755 - checksum = "c76f0308f7810d915246a39748e7f5d64e43e6bb9d6c8107224f9d741aefc375" 5756 - dependencies = [ 5757 - "proc-macro2", 5758 - "quote", 5759 - ] 5760 - 5761 - [[package]] 5762 - name = "v_htmlescape" 5763 - version = "0.15.8" 5764 - source = "registry+https://github.com/rust-lang/crates.io-index" 5765 - checksum = "4e8257fbc510f0a46eb602c10215901938b5c2a7d5e70fc11483b1d3c9b5b18c" 5766 - 5767 - [[package]] 5768 - name = "valuable" 5769 - version = "0.1.1" 5770 - source = "registry+https://github.com/rust-lang/crates.io-index" 5771 - checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 5772 - 5773 - [[package]] 5774 - name = "version_check" 5775 - version = "0.9.5" 5776 - source = "registry+https://github.com/rust-lang/crates.io-index" 5777 - checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 5778 - 5779 - [[package]] 5780 - name = "vfs" 5781 - version = "0.12.1" 5782 - source = "git+https://github.com/landaire/rust-vfs?branch=fix%2Fwasm#c4341e8e7c16a019c1a1415fc8a413bf883a08d5" 5783 - dependencies = [ 5784 - "filetime", 5785 - ] 5786 - 5787 - [[package]] 5788 - name = "vte" 5789 - version = "0.14.1" 5790 - source = "registry+https://github.com/rust-lang/crates.io-index" 5791 - checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077" 5792 - dependencies = [ 5793 - "arrayvec", 5794 - "memchr", 5795 - ] 5796 - 5797 - [[package]] 5798 - name = "walkdir" 5799 - version = "2.5.0" 5800 - source = "registry+https://github.com/rust-lang/crates.io-index" 5801 - checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 5802 - dependencies = [ 5803 - "same-file", 5804 - "winapi-util", 5805 - ] 5806 - 5807 - [[package]] 5808 - name = "want" 5809 - version = "0.3.1" 5810 - source = "registry+https://github.com/rust-lang/crates.io-index" 5811 - checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 5812 - dependencies = [ 5813 - "try-lock", 5814 - ] 5815 - 5816 - [[package]] 5817 - name = "wasi" 5818 - version = "0.11.1+wasi-snapshot-preview1" 5819 - source = "registry+https://github.com/rust-lang/crates.io-index" 5820 - checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 5821 - 5822 - [[package]] 5823 - name = "wasip2" 5824 - version = "1.0.1+wasi-0.2.4" 5825 - source = "registry+https://github.com/rust-lang/crates.io-index" 5826 - checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 5827 - dependencies = [ 5828 - "wit-bindgen", 5829 - ] 5830 - 5831 - [[package]] 5832 - name = "wasm-bindgen" 5833 - version = "0.2.106" 5834 - source = "registry+https://github.com/rust-lang/crates.io-index" 5835 - checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" 5836 - dependencies = [ 5837 - "cfg-if", 5838 - "once_cell", 5839 - "rustversion", 5840 - "wasm-bindgen-macro", 5841 - "wasm-bindgen-shared", 5842 - ] 5843 - 5844 - [[package]] 5845 - name = "wasm-bindgen-futures" 5846 - version = "0.4.56" 5847 - source = "registry+https://github.com/rust-lang/crates.io-index" 5848 - checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" 5849 - dependencies = [ 5850 - "cfg-if", 5851 - "js-sys", 5852 - "once_cell", 5853 - "wasm-bindgen", 5854 - "web-sys", 5855 - ] 5856 - 5857 - [[package]] 5858 - name = "wasm-bindgen-macro" 5859 - version = "0.2.106" 5860 - source = "registry+https://github.com/rust-lang/crates.io-index" 5861 - checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" 5862 - dependencies = [ 5863 - "quote", 5864 - "wasm-bindgen-macro-support", 5865 - ] 5866 - 5867 - [[package]] 5868 - name = "wasm-bindgen-macro-support" 5869 - version = "0.2.106" 5870 - source = "registry+https://github.com/rust-lang/crates.io-index" 5871 - checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" 5872 - dependencies = [ 5873 - "bumpalo", 5874 - "proc-macro2", 5875 - "quote", 5876 - "syn 2.0.111", 5877 - "wasm-bindgen-shared", 5878 - ] 5879 - 5880 - [[package]] 5881 - name = "wasm-bindgen-shared" 5882 - version = "0.2.106" 5883 - source = "registry+https://github.com/rust-lang/crates.io-index" 5884 - checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" 5885 - dependencies = [ 5886 - "unicode-ident", 5887 - ] 5888 - 5889 - [[package]] 5890 - name = "wax" 5891 - version = "0.6.0" 5892 - source = "registry+https://github.com/rust-lang/crates.io-index" 5893 - checksum = "8d12a78aa0bab22d2f26ed1a96df7ab58e8a93506a3e20adb47c51a93b4e1357" 5894 - dependencies = [ 5895 - "const_format", 5896 - "itertools 0.11.0", 5897 - "nom", 5898 - "pori", 5899 - "regex", 5900 - "thiserror 1.0.69", 5901 - "walkdir", 5902 - ] 5903 - 5904 - [[package]] 5905 - name = "web-sys" 5906 - version = "0.3.83" 5907 - source = "registry+https://github.com/rust-lang/crates.io-index" 5908 - checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" 5909 - dependencies = [ 5910 - "js-sys", 5911 - "wasm-bindgen", 5912 - ] 5913 - 5914 - [[package]] 5915 - name = "web-time" 5916 - version = "1.1.0" 5917 - source = "registry+https://github.com/rust-lang/crates.io-index" 5918 - checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 5919 - dependencies = [ 5920 - "js-sys", 5921 - "wasm-bindgen", 5922 - ] 5923 - 5924 - [[package]] 5925 - name = "webpage" 5926 - version = "2.0.1" 5927 - source = "registry+https://github.com/rust-lang/crates.io-index" 5928 - checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac" 5929 - dependencies = [ 5930 - "html5ever", 5931 - "markup5ever_rcdom", 5932 - "serde_json", 5933 - "url", 5934 - ] 5935 - 5936 - [[package]] 5937 - name = "webpki-roots" 5938 - version = "1.0.4" 5939 - source = "registry+https://github.com/rust-lang/crates.io-index" 5940 - checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" 5941 - dependencies = [ 5942 - "rustls-pki-types", 5943 - ] 5944 - 5945 - [[package]] 5946 - name = "wild" 5947 - version = "2.2.1" 5948 - source = "registry+https://github.com/rust-lang/crates.io-index" 5949 - checksum = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1" 5950 - dependencies = [ 5951 - "glob", 5952 - ] 5953 - 5954 - [[package]] 5955 - name = "winapi" 5956 - version = "0.3.9" 5957 - source = "registry+https://github.com/rust-lang/crates.io-index" 5958 - checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 5959 - dependencies = [ 5960 - "winapi-i686-pc-windows-gnu", 5961 - "winapi-x86_64-pc-windows-gnu", 5962 - ] 5963 - 5964 - [[package]] 5965 - name = "winapi-i686-pc-windows-gnu" 5966 - version = "0.4.0" 5967 - source = "registry+https://github.com/rust-lang/crates.io-index" 5968 - checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 5969 - 5970 - [[package]] 5971 - name = "winapi-util" 5972 - version = "0.1.11" 5973 - source = "registry+https://github.com/rust-lang/crates.io-index" 5974 - checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 5975 - dependencies = [ 5976 - "windows-sys 0.61.2", 5977 - ] 5978 - 5979 - [[package]] 5980 - name = "winapi-x86_64-pc-windows-gnu" 5981 - version = "0.4.0" 5982 - source = "registry+https://github.com/rust-lang/crates.io-index" 5983 - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 5984 - 5985 - [[package]] 5986 - name = "windows" 5987 - version = "0.61.3" 5988 - source = "registry+https://github.com/rust-lang/crates.io-index" 5989 - checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 5990 - dependencies = [ 5991 - "windows-collections 0.2.0", 5992 - "windows-core 0.61.2", 5993 - "windows-future 0.2.1", 5994 - "windows-link 0.1.3", 5995 - "windows-numerics 0.2.0", 5996 - ] 5997 - 5998 - [[package]] 5999 - name = "windows" 6000 - version = "0.62.2" 6001 - source = "registry+https://github.com/rust-lang/crates.io-index" 6002 - checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" 6003 - dependencies = [ 6004 - "windows-collections 0.3.2", 6005 - "windows-core 0.62.2", 6006 - "windows-future 0.3.2", 6007 - "windows-numerics 0.3.1", 6008 - ] 6009 - 6010 - [[package]] 6011 - name = "windows-collections" 6012 - version = "0.2.0" 6013 - source = "registry+https://github.com/rust-lang/crates.io-index" 6014 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 6015 - dependencies = [ 6016 - "windows-core 0.61.2", 6017 - ] 6018 - 6019 - [[package]] 6020 - name = "windows-collections" 6021 - version = "0.3.2" 6022 - source = "registry+https://github.com/rust-lang/crates.io-index" 6023 - checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" 6024 - dependencies = [ 6025 - "windows-core 0.62.2", 6026 - ] 6027 - 6028 - [[package]] 6029 - name = "windows-core" 6030 - version = "0.61.2" 6031 - source = "registry+https://github.com/rust-lang/crates.io-index" 6032 - checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 6033 - dependencies = [ 6034 - "windows-implement", 6035 - "windows-interface", 6036 - "windows-link 0.1.3", 6037 - "windows-result 0.3.4", 6038 - "windows-strings 0.4.2", 6039 - ] 6040 - 6041 - [[package]] 6042 - name = "windows-core" 6043 - version = "0.62.2" 6044 - source = "registry+https://github.com/rust-lang/crates.io-index" 6045 - checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 6046 - dependencies = [ 6047 - "windows-implement", 6048 - "windows-interface", 6049 - "windows-link 0.2.1", 6050 - "windows-result 0.4.1", 6051 - "windows-strings 0.5.1", 6052 - ] 6053 - 6054 - [[package]] 6055 - name = "windows-future" 6056 - version = "0.2.1" 6057 - source = "registry+https://github.com/rust-lang/crates.io-index" 6058 - checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 6059 - dependencies = [ 6060 - "windows-core 0.61.2", 6061 - "windows-link 0.1.3", 6062 - "windows-threading 0.1.0", 6063 - ] 6064 - 6065 - [[package]] 6066 - name = "windows-future" 6067 - version = "0.3.2" 6068 - source = "registry+https://github.com/rust-lang/crates.io-index" 6069 - checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" 6070 - dependencies = [ 6071 - "windows-core 0.62.2", 6072 - "windows-link 0.2.1", 6073 - "windows-threading 0.2.1", 6074 - ] 6075 - 6076 - [[package]] 6077 - name = "windows-implement" 6078 - version = "0.60.2" 6079 - source = "registry+https://github.com/rust-lang/crates.io-index" 6080 - checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 6081 - dependencies = [ 6082 - "proc-macro2", 6083 - "quote", 6084 - "syn 2.0.111", 6085 - ] 6086 - 6087 - [[package]] 6088 - name = "windows-interface" 6089 - version = "0.59.3" 6090 - source = "registry+https://github.com/rust-lang/crates.io-index" 6091 - checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 6092 - dependencies = [ 6093 - "proc-macro2", 6094 - "quote", 6095 - "syn 2.0.111", 6096 - ] 6097 - 6098 - [[package]] 6099 - name = "windows-link" 6100 - version = "0.1.3" 6101 - source = "registry+https://github.com/rust-lang/crates.io-index" 6102 - checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 6103 - 6104 - [[package]] 6105 - name = "windows-link" 6106 - version = "0.2.1" 6107 - source = "registry+https://github.com/rust-lang/crates.io-index" 6108 - checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 6109 - 6110 - [[package]] 6111 - name = "windows-numerics" 6112 - version = "0.2.0" 6113 - source = "registry+https://github.com/rust-lang/crates.io-index" 6114 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 6115 - dependencies = [ 6116 - "windows-core 0.61.2", 6117 - "windows-link 0.1.3", 6118 - ] 6119 - 6120 - [[package]] 6121 - name = "windows-numerics" 6122 - version = "0.3.1" 6123 - source = "registry+https://github.com/rust-lang/crates.io-index" 6124 - checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" 6125 - dependencies = [ 6126 - "windows-core 0.62.2", 6127 - "windows-link 0.2.1", 6128 - ] 6129 - 6130 - [[package]] 6131 - name = "windows-registry" 6132 - version = "0.6.1" 6133 - source = "registry+https://github.com/rust-lang/crates.io-index" 6134 - checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 6135 - dependencies = [ 6136 - "windows-link 0.2.1", 6137 - "windows-result 0.4.1", 6138 - "windows-strings 0.5.1", 6139 - ] 6140 - 6141 - [[package]] 6142 - name = "windows-result" 6143 - version = "0.3.4" 6144 - source = "registry+https://github.com/rust-lang/crates.io-index" 6145 - checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 6146 - dependencies = [ 6147 - "windows-link 0.1.3", 6148 - ] 6149 - 6150 - [[package]] 6151 - name = "windows-result" 6152 - version = "0.4.1" 6153 - source = "registry+https://github.com/rust-lang/crates.io-index" 6154 - checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 6155 - dependencies = [ 6156 - "windows-link 0.2.1", 6157 - ] 6158 - 6159 - [[package]] 6160 - name = "windows-strings" 6161 - version = "0.4.2" 6162 - source = "registry+https://github.com/rust-lang/crates.io-index" 6163 - checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 6164 - dependencies = [ 6165 - "windows-link 0.1.3", 6166 - ] 6167 - 6168 - [[package]] 6169 - name = "windows-strings" 6170 - version = "0.5.1" 6171 - source = "registry+https://github.com/rust-lang/crates.io-index" 6172 - checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 6173 - dependencies = [ 6174 - "windows-link 0.2.1", 6175 - ] 6176 - 6177 - [[package]] 6178 - name = "windows-sys" 6179 - version = "0.48.0" 6180 - source = "registry+https://github.com/rust-lang/crates.io-index" 6181 - checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 6182 - dependencies = [ 6183 - "windows-targets 0.48.5", 6184 - ] 6185 - 6186 - [[package]] 6187 - name = "windows-sys" 6188 - version = "0.52.0" 6189 - source = "registry+https://github.com/rust-lang/crates.io-index" 6190 - checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 6191 - dependencies = [ 6192 - "windows-targets 0.52.6", 6193 - ] 6194 - 6195 - [[package]] 6196 - name = "windows-sys" 6197 - version = "0.59.0" 6198 - source = "registry+https://github.com/rust-lang/crates.io-index" 6199 - checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 6200 - dependencies = [ 6201 - "windows-targets 0.52.6", 6202 - ] 6203 - 6204 - [[package]] 6205 - name = "windows-sys" 6206 - version = "0.60.2" 6207 - source = "registry+https://github.com/rust-lang/crates.io-index" 6208 - checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 6209 - dependencies = [ 6210 - "windows-targets 0.53.5", 6211 - ] 6212 - 6213 - [[package]] 6214 - name = "windows-sys" 6215 - version = "0.61.2" 6216 - source = "registry+https://github.com/rust-lang/crates.io-index" 6217 - checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 6218 - dependencies = [ 6219 - "windows-link 0.2.1", 6220 - ] 6221 - 6222 - [[package]] 6223 - name = "windows-targets" 6224 - version = "0.48.5" 6225 - source = "registry+https://github.com/rust-lang/crates.io-index" 6226 - checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 6227 - dependencies = [ 6228 - "windows_aarch64_gnullvm 0.48.5", 6229 - "windows_aarch64_msvc 0.48.5", 6230 - "windows_i686_gnu 0.48.5", 6231 - "windows_i686_msvc 0.48.5", 6232 - "windows_x86_64_gnu 0.48.5", 6233 - "windows_x86_64_gnullvm 0.48.5", 6234 - "windows_x86_64_msvc 0.48.5", 6235 - ] 6236 - 6237 - [[package]] 6238 - name = "windows-targets" 6239 - version = "0.52.6" 6240 - source = "registry+https://github.com/rust-lang/crates.io-index" 6241 - checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 6242 - dependencies = [ 6243 - "windows_aarch64_gnullvm 0.52.6", 6244 - "windows_aarch64_msvc 0.52.6", 6245 - "windows_i686_gnu 0.52.6", 6246 - "windows_i686_gnullvm 0.52.6", 6247 - "windows_i686_msvc 0.52.6", 6248 - "windows_x86_64_gnu 0.52.6", 6249 - "windows_x86_64_gnullvm 0.52.6", 6250 - "windows_x86_64_msvc 0.52.6", 6251 - ] 6252 - 6253 - [[package]] 6254 - name = "windows-targets" 6255 - version = "0.53.5" 6256 - source = "registry+https://github.com/rust-lang/crates.io-index" 6257 - checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 6258 - dependencies = [ 6259 - "windows-link 0.2.1", 6260 - "windows_aarch64_gnullvm 0.53.1", 6261 - "windows_aarch64_msvc 0.53.1", 6262 - "windows_i686_gnu 0.53.1", 6263 - "windows_i686_gnullvm 0.53.1", 6264 - "windows_i686_msvc 0.53.1", 6265 - "windows_x86_64_gnu 0.53.1", 6266 - "windows_x86_64_gnullvm 0.53.1", 6267 - "windows_x86_64_msvc 0.53.1", 6268 - ] 6269 - 6270 - [[package]] 6271 - name = "windows-threading" 6272 - version = "0.1.0" 6273 - source = "registry+https://github.com/rust-lang/crates.io-index" 6274 - checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 6275 - dependencies = [ 6276 - "windows-link 0.1.3", 6277 - ] 6278 - 6279 - [[package]] 6280 - name = "windows-threading" 6281 - version = "0.2.1" 6282 - source = "registry+https://github.com/rust-lang/crates.io-index" 6283 - checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" 6284 - dependencies = [ 6285 - "windows-link 0.2.1", 6286 - ] 6287 - 6288 - [[package]] 6289 - name = "windows_aarch64_gnullvm" 6290 - version = "0.48.5" 6291 - source = "registry+https://github.com/rust-lang/crates.io-index" 6292 - checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 6293 - 6294 - [[package]] 6295 - name = "windows_aarch64_gnullvm" 6296 - version = "0.52.6" 6297 - source = "registry+https://github.com/rust-lang/crates.io-index" 6298 - checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 6299 - 6300 - [[package]] 6301 - name = "windows_aarch64_gnullvm" 6302 - version = "0.53.1" 6303 - source = "registry+https://github.com/rust-lang/crates.io-index" 6304 - checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 6305 - 6306 - [[package]] 6307 - name = "windows_aarch64_msvc" 6308 - version = "0.48.5" 6309 - source = "registry+https://github.com/rust-lang/crates.io-index" 6310 - checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 6311 - 6312 - [[package]] 6313 - name = "windows_aarch64_msvc" 6314 - version = "0.52.6" 6315 - source = "registry+https://github.com/rust-lang/crates.io-index" 6316 - checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 6317 - 6318 - [[package]] 6319 - name = "windows_aarch64_msvc" 6320 - version = "0.53.1" 6321 - source = "registry+https://github.com/rust-lang/crates.io-index" 6322 - checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 6323 - 6324 - [[package]] 6325 - name = "windows_i686_gnu" 6326 - version = "0.48.5" 6327 - source = "registry+https://github.com/rust-lang/crates.io-index" 6328 - checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 6329 - 6330 - [[package]] 6331 - name = "windows_i686_gnu" 6332 - version = "0.52.6" 6333 - source = "registry+https://github.com/rust-lang/crates.io-index" 6334 - checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 6335 - 6336 - [[package]] 6337 - name = "windows_i686_gnu" 6338 - version = "0.53.1" 6339 - source = "registry+https://github.com/rust-lang/crates.io-index" 6340 - checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 6341 - 6342 - [[package]] 6343 - name = "windows_i686_gnullvm" 6344 - version = "0.52.6" 6345 - source = "registry+https://github.com/rust-lang/crates.io-index" 6346 - checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 6347 - 6348 - [[package]] 6349 - name = "windows_i686_gnullvm" 6350 - version = "0.53.1" 6351 - source = "registry+https://github.com/rust-lang/crates.io-index" 6352 - checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 6353 - 6354 - [[package]] 6355 - name = "windows_i686_msvc" 6356 - version = "0.48.5" 6357 - source = "registry+https://github.com/rust-lang/crates.io-index" 6358 - checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 6359 - 6360 - [[package]] 6361 - name = "windows_i686_msvc" 6362 - version = "0.52.6" 6363 - source = "registry+https://github.com/rust-lang/crates.io-index" 6364 - checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 6365 - 6366 - [[package]] 6367 - name = "windows_i686_msvc" 6368 - version = "0.53.1" 6369 - source = "registry+https://github.com/rust-lang/crates.io-index" 6370 - checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 6371 - 6372 - [[package]] 6373 - name = "windows_x86_64_gnu" 6374 - version = "0.48.5" 6375 - source = "registry+https://github.com/rust-lang/crates.io-index" 6376 - checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 6377 - 6378 - [[package]] 6379 - name = "windows_x86_64_gnu" 6380 - version = "0.52.6" 6381 - source = "registry+https://github.com/rust-lang/crates.io-index" 6382 - checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 6383 - 6384 - [[package]] 6385 - name = "windows_x86_64_gnu" 6386 - version = "0.53.1" 6387 - source = "registry+https://github.com/rust-lang/crates.io-index" 6388 - checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 6389 - 6390 - [[package]] 6391 - name = "windows_x86_64_gnullvm" 6392 - version = "0.48.5" 6393 - source = "registry+https://github.com/rust-lang/crates.io-index" 6394 - checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 6395 - 6396 - [[package]] 6397 - name = "windows_x86_64_gnullvm" 6398 - version = "0.52.6" 6399 - source = "registry+https://github.com/rust-lang/crates.io-index" 6400 - checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 6401 - 6402 - [[package]] 6403 - name = "windows_x86_64_gnullvm" 6404 - version = "0.53.1" 6405 - source = "registry+https://github.com/rust-lang/crates.io-index" 6406 - checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 6407 - 6408 - [[package]] 6409 - name = "windows_x86_64_msvc" 6410 - version = "0.48.5" 6411 - source = "registry+https://github.com/rust-lang/crates.io-index" 6412 - checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 6413 - 6414 - [[package]] 6415 - name = "windows_x86_64_msvc" 6416 - version = "0.52.6" 6417 - source = "registry+https://github.com/rust-lang/crates.io-index" 6418 - checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 6419 - 6420 - [[package]] 6421 - name = "windows_x86_64_msvc" 6422 - version = "0.53.1" 6423 - source = "registry+https://github.com/rust-lang/crates.io-index" 6424 - checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 6425 - 6426 - [[package]] 6427 - name = "winnow" 6428 - version = "0.7.14" 6429 - source = "registry+https://github.com/rust-lang/crates.io-index" 6430 - checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" 6431 - dependencies = [ 6432 - "memchr", 6433 - ] 6434 - 6435 - [[package]] 6436 - name = "winreg" 6437 - version = "0.52.0" 6438 - source = "registry+https://github.com/rust-lang/crates.io-index" 6439 - checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" 6440 - dependencies = [ 6441 - "cfg-if", 6442 - "windows-sys 0.48.0", 6443 - ] 6444 - 6445 - [[package]] 6446 - name = "wit-bindgen" 6447 - version = "0.46.0" 6448 - source = "registry+https://github.com/rust-lang/crates.io-index" 6449 - checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 6450 - 6451 - [[package]] 6452 - name = "writeable" 6453 - version = "0.6.2" 6454 - source = "registry+https://github.com/rust-lang/crates.io-index" 6455 - checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 6456 - 6457 - [[package]] 6458 - name = "xml5ever" 6459 - version = "0.18.1" 6460 - source = "registry+https://github.com/rust-lang/crates.io-index" 6461 - checksum = "9bbb26405d8e919bc1547a5aa9abc95cbfa438f04844f5fdd9dc7596b748bf69" 6462 - dependencies = [ 6463 - "log", 6464 - "mac", 6465 - "markup5ever", 6466 - ] 6467 - 6468 - [[package]] 6469 - name = "yansi" 6470 - version = "1.0.1" 6471 - source = "registry+https://github.com/rust-lang/crates.io-index" 6472 - checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" 6473 - 6474 - [[package]] 6475 - name = "yoke" 6476 - version = "0.8.1" 6477 - source = "registry+https://github.com/rust-lang/crates.io-index" 6478 - checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" 6479 - dependencies = [ 6480 - "stable_deref_trait", 6481 - "yoke-derive", 6482 - "zerofrom", 6483 - ] 6484 - 6485 - [[package]] 6486 - name = "yoke-derive" 6487 - version = "0.8.1" 6488 - source = "registry+https://github.com/rust-lang/crates.io-index" 6489 - checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" 6490 - dependencies = [ 6491 - "proc-macro2", 6492 - "quote", 6493 - "syn 2.0.111", 6494 - "synstructure", 6495 - ] 6496 - 6497 - [[package]] 6498 - name = "zerocopy" 6499 - version = "0.7.35" 6500 - source = "registry+https://github.com/rust-lang/crates.io-index" 6501 - checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 6502 - dependencies = [ 6503 - "byteorder", 6504 - "zerocopy-derive 0.7.35", 6505 - ] 6506 - 6507 - [[package]] 6508 - name = "zerocopy" 6509 - version = "0.8.31" 6510 - source = "registry+https://github.com/rust-lang/crates.io-index" 6511 - checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" 6512 - dependencies = [ 6513 - "zerocopy-derive 0.8.31", 6514 - ] 6515 - 6516 - [[package]] 6517 - name = "zerocopy-derive" 6518 - version = "0.7.35" 6519 - source = "registry+https://github.com/rust-lang/crates.io-index" 6520 - checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 6521 - dependencies = [ 6522 - "proc-macro2", 6523 - "quote", 6524 - "syn 2.0.111", 6525 - ] 6526 - 6527 - [[package]] 6528 - name = "zerocopy-derive" 6529 - version = "0.8.31" 6530 - source = "registry+https://github.com/rust-lang/crates.io-index" 6531 - checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" 6532 - dependencies = [ 6533 - "proc-macro2", 6534 - "quote", 6535 - "syn 2.0.111", 6536 - ] 6537 - 6538 - [[package]] 6539 - name = "zerofrom" 6540 - version = "0.1.6" 6541 - source = "registry+https://github.com/rust-lang/crates.io-index" 6542 - checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 6543 - dependencies = [ 6544 - "zerofrom-derive", 6545 - ] 6546 - 6547 - [[package]] 6548 - name = "zerofrom-derive" 6549 - version = "0.1.6" 6550 - source = "registry+https://github.com/rust-lang/crates.io-index" 6551 - checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 6552 - dependencies = [ 6553 - "proc-macro2", 6554 - "quote", 6555 - "syn 2.0.111", 6556 - "synstructure", 6557 - ] 6558 - 6559 - [[package]] 6560 - name = "zeroize" 6561 - version = "1.8.2" 6562 - source = "registry+https://github.com/rust-lang/crates.io-index" 6563 - checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 6564 - dependencies = [ 6565 - "serde", 6566 - ] 6567 - 6568 - [[package]] 6569 - name = "zerotrie" 6570 - version = "0.2.3" 6571 - source = "registry+https://github.com/rust-lang/crates.io-index" 6572 - checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" 6573 - dependencies = [ 6574 - "displaydoc", 6575 - "yoke", 6576 - "zerofrom", 6577 - ] 6578 - 6579 - [[package]] 6580 - name = "zerovec" 6581 - version = "0.11.5" 6582 - source = "registry+https://github.com/rust-lang/crates.io-index" 6583 - checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" 6584 - dependencies = [ 6585 - "serde", 6586 - "yoke", 6587 - "zerofrom", 6588 - "zerovec-derive", 6589 - ] 6590 - 6591 - [[package]] 6592 - name = "zerovec-derive" 6593 - version = "0.11.2" 6594 - source = "registry+https://github.com/rust-lang/crates.io-index" 6595 - checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" 6596 - dependencies = [ 6597 - "proc-macro2", 6598 - "quote", 6599 - "syn 2.0.111", 6600 - ] 6601 - 6602 - [[package]] 6603 - name = "zip" 6604 - version = "4.6.1" 6605 - source = "registry+https://github.com/rust-lang/crates.io-index" 6606 - checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" 6607 - dependencies = [ 6608 - "arbitrary", 6609 - "crc32fast", 6610 - "flate2", 6611 - "indexmap 2.12.1", 6612 - "memchr", 6613 - "zopfli", 6614 - ] 6615 - 6616 - [[package]] 6617 - name = "zlib-rs" 6618 - version = "0.5.4" 6619 - source = "registry+https://github.com/rust-lang/crates.io-index" 6620 - checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235" 6621 - 6622 - [[package]] 6623 - name = "zopfli" 6624 - version = "0.8.3" 6625 - source = "registry+https://github.com/rust-lang/crates.io-index" 6626 - checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" 6627 - dependencies = [ 6628 - "bumpalo", 6629 - "crc32fast", 6630 - "log", 6631 - "simd-adler32", 6632 - ]
-46
dysnomia/Cargo.toml
··· 1 - [package] 2 - name = "dysnomia-sh" 3 - version = "0.1.0" 4 - edition = "2024" 5 - 6 - [lib] 7 - crate-type = ["cdylib"] 8 - 9 - [dependencies] 10 - wasm-bindgen = "0.2" 11 - wasm-bindgen-futures = "0.4" 12 - getrandom = { version = "0.3", features = ["wasm_js"] } 13 - web-sys = { version = "0.3", features = ["console", "Window"] } 14 - vfs = { version = "0.12" } 15 - nu-cmd-lang = { version = "0.109.1", default-features = false } 16 - nu-command = { version = "0.109.1", default-features = false } 17 - nu-engine = { version = "0.109.1", default-features = false } 18 - nu-parser = { version = "0.109.1", default-features = false } 19 - nu-protocol = { version = "0.109.1", default-features = false } 20 - nu-cmd-extra = { version = "0.109.1", default-features = false } 21 - serde = { version = "1.0", features = ["derive"] } 22 - serde_json = "1" 23 - miette = { version = "7.6", features = ["fancy"] } 24 - ansi_term = "0.12.1" 25 - 26 - anyhow = "1" 27 - jacquard = { path = "../../jacquard/crates/jacquard", default-features = false, features = ["api", "cache"] } 28 - jacquard-repo = { path = "../../jacquard/crates/jacquard-repo" } 29 - url = "2" 30 - futures = "0.3.31" 31 - js-sys = "0.3.83" 32 - serde_ipld_dagcbor = "0.6.4" 33 - reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] } 34 - console_error_panic_hook = "0.1.7" 35 - 36 - scc = "3" 37 - rapidhash = { version = "4", features = ["unsafe"] } 38 - 39 - [patch.crates-io] 40 - vfs = { git = "https://github.com/landaire/rust-vfs", branch = "fix/wasm" } 41 - 42 - [profile.release] 43 - opt-level = 3 44 - lto = true 45 - codegen-units = 1 46 - strip = true
-64
dysnomia/src/cmd/cd.rs
··· 1 - use crate::globals::{get_pwd, get_vfs, set_pwd, to_shell_err}; 2 - use nu_engine::CallExt; 3 - use nu_protocol::{ 4 - Category, PipelineData, ShellError, Signature, SyntaxShape, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - use std::sync::Arc; 8 - use vfs::VfsFileType; 9 - 10 - #[derive(Clone)] 11 - pub struct Cd; 12 - 13 - impl Command for Cd { 14 - fn name(&self) -> &str { 15 - "cd" 16 - } 17 - 18 - fn signature(&self) -> Signature { 19 - Signature::build("cd") 20 - .optional("path", SyntaxShape::String, "the path to change into") 21 - .category(Category::FileSystem) 22 - } 23 - 24 - fn description(&self) -> &str { 25 - "change the current directory in the virtual filesystem." 26 - } 27 - 28 - fn run( 29 - &self, 30 - engine_state: &EngineState, 31 - _stack: &mut Stack, 32 - call: &nu_protocol::engine::Call, 33 - _input: PipelineData, 34 - ) -> Result<PipelineData, ShellError> { 35 - let path_arg: Option<String> = call.opt(engine_state, _stack, 0)?; 36 - let path = path_arg.unwrap_or_else(|| "/".to_string()); 37 - 38 - let base: Arc<vfs::VfsPath> = if path.starts_with('/') { 39 - get_vfs() 40 - } else { 41 - get_pwd().clone() 42 - }; 43 - 44 - let target = base 45 - .join(path.trim_end_matches('/')) 46 - .map_err(to_shell_err(call.head))?; 47 - 48 - // Ensure target exists and is a directory 49 - let metadata = target.metadata().map_err(to_shell_err(call.head))?; 50 - match metadata.file_type { 51 - VfsFileType::Directory => { 52 - set_pwd(Arc::new(target)); 53 - Ok(PipelineData::Empty) 54 - } 55 - VfsFileType::File => Err(ShellError::GenericError { 56 - error: "not a directory".to_string(), 57 - msg: format!("'{}' is not a directory", path), 58 - span: Some(call.head), 59 - help: None, 60 - inner: vec![], 61 - }), 62 - } 63 - } 64 - }
-338
dysnomia/src/cmd/fetch.rs
··· 1 - use crate::globals::{get_pwd, print_to_console, register_task, remove_task, to_shell_err}; 2 - use anyhow::{Result, anyhow}; 3 - use futures::future::{AbortHandle, Abortable}; 4 - use jacquard::types::aturi::AtUri; 5 - use jacquard::types::ident::AtIdentifier; 6 - use jacquard::types::string::Rkey; 7 - use jacquard::{ 8 - api::com_atproto::{ 9 - repo::{get_record::GetRecord, list_records::ListRecords}, 10 - sync::get_repo::GetRepo, 11 - }, 12 - client::{Agent, MemorySessionStore, credential_session::CredentialSession}, 13 - identity::{resolver::IdentityResolver, slingshot_resolver_default}, 14 - prelude::*, 15 - types::{did::Did, nsid::Nsid}, 16 - }; 17 - use jacquard_repo::{ 18 - Repository, 19 - car::parse_car_bytes, 20 - storage::{BlockStore, MemoryBlockStore}, 21 - }; 22 - use nu_engine::CallExt; 23 - use nu_protocol::IntoPipelineData; 24 - use nu_protocol::{ 25 - Category, PipelineData, ShellError, Signature, SyntaxShape, Value, 26 - engine::{Command, EngineState, Stack}, 27 - }; 28 - use std::io::Write; 29 - use std::str::FromStr; 30 - use std::sync::Arc; 31 - use url::Url; 32 - use wasm_bindgen_futures::spawn_local; 33 - 34 - #[derive(Clone)] 35 - pub struct Fetch; 36 - 37 - impl Command for Fetch { 38 - fn name(&self) -> &str { 39 - "fetch" 40 - } 41 - 42 - fn signature(&self) -> Signature { 43 - Signature::build(self.name()) 44 - .required( 45 - "uri", 46 - SyntaxShape::String, 47 - "HTTP URI or AT URI (at://identifier[/collection[/rkey]])", 48 - ) 49 - .named("output", SyntaxShape::Filepath, "output path", Some('o')) 50 - .category(Category::Network) 51 - } 52 - 53 - fn description(&self) -> &str { 54 - "fetch files using HTTP or fetch records from an AT Protocol repository.\nsupports full repo (CAR), collection, or a single record." 55 - } 56 - 57 - fn run( 58 - &self, 59 - engine_state: &EngineState, 60 - stack: &mut Stack, 61 - call: &nu_protocol::engine::Call, 62 - _input: PipelineData, 63 - ) -> Result<PipelineData, ShellError> { 64 - let uri_arg: String = call.req(engine_state, stack, 0)?; 65 - let output_arg: Option<String> = call.get_flag(engine_state, stack, "output")?; 66 - let output_span = call.get_flag_span(stack, "output"); 67 - 68 - let at_uri = uri_arg 69 - .starts_with("at://") 70 - .then(|| { 71 - AtUri::from_str(&uri_arg).map_err(|err| ShellError::GenericError { 72 - error: "invalid AT URI format".into(), 73 - msg: err.to_string(), 74 - span: Some(call.arguments_span()), 75 - help: None, 76 - inner: vec![], 77 - }) 78 - }) 79 - .transpose()?; 80 - let uri = at_uri 81 - .is_none() 82 - .then(|| { 83 - Url::from_str(&uri_arg).map_err(|err| ShellError::GenericError { 84 - error: "invalid URI format".into(), 85 - msg: err.to_string(), 86 - span: Some(call.arguments_span()), 87 - help: None, 88 - inner: vec![], 89 - }) 90 - }) 91 - .transpose()?; 92 - 93 - // Determine target directory 94 - let pwd = get_pwd(); 95 - let base_dir = if let Some(out) = output_arg.as_ref() { 96 - pwd.join(out.trim_end_matches('/')) 97 - .map_err(to_shell_err(output_span.unwrap()))? 98 - } else { 99 - pwd.join("").unwrap() 100 - }; 101 - 102 - let final_path = if let Some(at_uri) = at_uri.as_ref() { 103 - match (at_uri.collection(), at_uri.rkey()) { 104 - (None, _) => base_dir 105 - .join(at_uri.authority()) 106 - .map_err(to_shell_err(call.span()))?, 107 - (Some(collection), None) => base_dir 108 - .join(collection) 109 - .map_err(to_shell_err(call.span()))?, 110 - // use rkey as file name 111 - (Some(_), Some(rkey)) => output_arg 112 - .is_some() 113 - .then(|| Ok(base_dir.clone())) 114 - .unwrap_or_else(|| base_dir.join(&rkey.0).map_err(to_shell_err(call.span())))?, 115 - } 116 - } else if let Some(uri) = uri.as_ref() { 117 - // choose file name from uri 118 - output_arg 119 - .is_some() 120 - .then(|| Ok(base_dir.clone())) 121 - .unwrap_or_else(|| { 122 - base_dir 123 - .join( 124 - uri.path() 125 - .split('/') 126 - .rfind(|a| !a.is_empty()) 127 - .unwrap_or("index"), 128 - ) 129 - .map_err(to_shell_err(call.span())) 130 - })? 131 - } else { 132 - // todo: make these into an enum so we dont need this 133 - unreachable!("either of at_uri or uri should be set") 134 - }; 135 - 136 - if !final_path.exists().map_err(to_shell_err(call.span()))? { 137 - // if http uri or at uri with rkey, we create parent dir since we'll 138 - // write just a single file, otherwise we create this path as directory 139 - if at_uri.as_ref().map_or(true, |at| at.rkey().is_some()) { 140 - final_path 141 - .parent() 142 - .create_dir_all() 143 - .map_err(to_shell_err(call.span()))?; 144 - } else { 145 - final_path 146 - .create_dir_all() 147 - .map_err(to_shell_err(call.span()))?; 148 - } 149 - } 150 - 151 - let (abort_handle, abort_registration) = AbortHandle::new_pair(); 152 - let task_desc = format!("{name} {uri_arg}", name = self.name()); 153 - let task_id = register_task(task_desc.clone(), abort_handle); 154 - 155 - spawn_local(async move { 156 - let task_future = async { 157 - if let Some(at_uri) = at_uri { 158 - let identifier = at_uri.authority().clone(); 159 - match (at_uri.collection(), at_uri.rkey()) { 160 - (Some(coll), Some(key)) => { 161 - fetch_record(identifier, coll.clone(), key.0.clone(), final_path).await 162 - } 163 - (Some(coll), None) => { 164 - fetch_collection(identifier, coll.clone(), final_path).await 165 - } 166 - _ => fetch_repo(identifier, final_path).await, 167 - } 168 - } else if let Some(uri) = uri { 169 - fetch_file(uri, final_path).await 170 - } else { 171 - Ok(()) 172 - } 173 - }; 174 - 175 - let abortable = Abortable::new(task_future, abort_registration); 176 - 177 - match abortable.await { 178 - Ok(result) => { 179 - remove_task(task_id); 180 - match result { 181 - Ok(_) => {} 182 - Err(e) => { 183 - print_to_console( 184 - &format!("\x1b[31m✖\x1b[0m ({task_desc}) error: {e}"), 185 - false, 186 - ); 187 - } 188 - } 189 - } 190 - Err(_) => { 191 - remove_task(task_id); 192 - } 193 - } 194 - }); 195 - 196 - Ok(Value::nothing(call.head).into_pipeline_data()) 197 - } 198 - } 199 - 200 - async fn fetch_file(uri: Url, target_path: vfs::VfsPath) -> Result<()> { 201 - let response = reqwest::get(uri).await?; 202 - let content = response.bytes().await?; 203 - target_path.create_file()?.write_all(&content)?; 204 - Ok(()) 205 - } 206 - 207 - async fn resolve_did(identifier: AtIdentifier<'_>) -> Result<Did<'_>> { 208 - match identifier { 209 - AtIdentifier::Did(did) => Ok(did), 210 - AtIdentifier::Handle(handle) => { 211 - let did = slingshot_resolver_default().resolve_handle(&handle).await?; 212 - Ok(did) 213 - } 214 - } 215 - } 216 - 217 - async fn resolve_pds(did: &Did<'_>) -> Result<Url> { 218 - slingshot_resolver_default() 219 - .resolve_did_doc(did) 220 - .await? 221 - .parse()? 222 - .pds_endpoint() 223 - .ok_or_else(|| anyhow!("no pds endpoint in did doc")) 224 - } 225 - 226 - async fn create_agent(pds: Url) -> BasicClient { 227 - let store = MemorySessionStore::default(); 228 - let session = CredentialSession::new(Arc::new(store), Arc::new(slingshot_resolver_default())); 229 - session.set_endpoint(pds).await; 230 - Agent::new(session) 231 - } 232 - 233 - async fn fetch_record( 234 - identifier: AtIdentifier<'_>, 235 - collection: Nsid<'_>, 236 - rkey: Rkey<'_>, 237 - target_path: vfs::VfsPath, 238 - ) -> anyhow::Result<()> { 239 - let did = resolve_did(identifier).await?; 240 - let pds = resolve_pds(&did).await?; 241 - let client = create_agent(pds).await; 242 - 243 - let nsid = Nsid::new(&collection)?; 244 - 245 - let request = GetRecord::new() 246 - .repo(did) 247 - .collection(nsid) 248 - .rkey(rkey.clone()); 249 - 250 - let output = client.send(request.build()).await?.into_output()?; 251 - let file = target_path.create_file()?; 252 - serde_json::to_writer_pretty(file, &output.value)?; 253 - 254 - Ok(()) 255 - } 256 - 257 - async fn fetch_collection( 258 - identifier: AtIdentifier<'_>, 259 - collection: Nsid<'_>, 260 - target_path: vfs::VfsPath, 261 - ) -> anyhow::Result<()> { 262 - let did = resolve_did(identifier).await?; 263 - let pds = resolve_pds(&did).await?; 264 - let client = create_agent(pds).await; 265 - 266 - let mut cursor: Option<String> = None; 267 - 268 - loop { 269 - let request = ListRecords::new() 270 - .repo(did.clone()) 271 - .collection(collection.clone()) 272 - .limit(100) 273 - .cursor(cursor.map(Into::into)); 274 - 275 - let response = client.send(request.build()).await?; 276 - 277 - let output = response.into_output()?; 278 - 279 - for rec in output.records { 280 - if let Some(rkey) = rec.uri.rkey() { 281 - let file = target_path.join(&rkey.0)?.create_file()?; 282 - serde_json::to_writer_pretty(file, &rec.value)?; 283 - } 284 - } 285 - 286 - if let Some(c) = output.cursor { 287 - cursor = Some(c.into()); 288 - } else { 289 - break; 290 - } 291 - } 292 - 293 - Ok(()) 294 - } 295 - 296 - async fn fetch_repo(identifier: AtIdentifier<'_>, target_path: vfs::VfsPath) -> Result<()> { 297 - let did = resolve_did(identifier).await?; 298 - let pds = resolve_pds(&did).await?; 299 - let client = create_agent(pds).await; 300 - 301 - let response = client.send(GetRepo::new().did(did).build()).await?; 302 - 303 - // parse the car and create the repo 304 - let car_bytes = response.into_output()?.body; 305 - let parsed = parse_car_bytes(&car_bytes).await?; 306 - let storage = Arc::new(MemoryBlockStore::new_from_blocks(parsed.blocks)); 307 - let repo = Repository::from_commit(storage, &parsed.root).await?; 308 - 309 - // Iterate over all leaves in the MST 310 - // repo.mst() gives us the Mst<S> 311 - // mst.leaves() returns Vec<(SmolStr, IpldCid)> 312 - let leaves = repo.mst().leaves_sequential().await?; 313 - 314 - for (key, cid) in leaves { 315 - // key format: collection/rkey 316 - let key_str = key.as_str(); 317 - 318 - if let Some((collection, rkey)) = key_str.split_once('/') { 319 - // Get the record block from storage 320 - // The record data is just a CBOR block. We need to convert it to JSON for readability. 321 - if let Some(block_bytes) = repo.storage().get(&cid).await? { 322 - // Deserialize DAG-CBOR to generic JSON Value 323 - let json_val: jacquard::RawData = serde_ipld_dagcbor::from_slice(&block_bytes) 324 - .map_err(|e| anyhow!("failed to deserialize record {}: {}", key, e))?; 325 - 326 - let coll_dir = target_path.join(collection)?; 327 - if !coll_dir.exists()? { 328 - coll_dir.create_dir_all()?; 329 - } 330 - let file = coll_dir.join(rkey)?.create_file()?; 331 - 332 - serde_json::to_writer_pretty(file, &json_val)?; 333 - } 334 - } 335 - } 336 - 337 - Ok(()) 338 - }
-39
dysnomia/src/cmd/job.rs
··· 1 - use nu_engine::{command_prelude::*, get_full_help}; 2 - use nu_protocol::{ 3 - Category, IntoPipelineData, PipelineData, ShellError, Signature, Value, 4 - engine::{Command, EngineState, Stack}, 5 - }; 6 - 7 - #[derive(Clone)] 8 - pub struct Job; 9 - 10 - // Top-level `job` command that just prints help (like nu stdlib style) 11 - impl Command for Job { 12 - fn name(&self) -> &str { 13 - "job" 14 - } 15 - 16 - fn signature(&self) -> Signature { 17 - Signature::build("job") 18 - .category(Category::System) 19 - .input_output_types(vec![(Type::Nothing, Type::String)]) 20 - } 21 - 22 - fn description(&self) -> &str { 23 - "Various commands for working with background jobs." 24 - } 25 - 26 - fn extra_description(&self) -> &str { 27 - "You must use one of the following subcommands. Using this command as-is will only produce this help message." 28 - } 29 - 30 - fn run( 31 - &self, 32 - engine_state: &EngineState, 33 - stack: &mut Stack, 34 - call: &Call, 35 - _input: PipelineData, 36 - ) -> Result<PipelineData, ShellError> { 37 - Ok(Value::string(get_full_help(self, engine_state, stack), call.head).into_pipeline_data()) 38 - } 39 - }
-49
dysnomia/src/cmd/job_kill.rs
··· 1 - use crate::globals::kill_task_by_id; 2 - use nu_engine::CallExt; 3 - use nu_protocol::{ 4 - Category, IntoPipelineData, PipelineData, ShellError, Signature, SyntaxShape, Value, 5 - engine::{Call, Command, EngineState, Stack}, 6 - }; 7 - 8 - #[derive(Clone)] 9 - pub struct JobKill; 10 - 11 - impl Command for JobKill { 12 - fn name(&self) -> &str { 13 - "job kill" 14 - } 15 - 16 - fn signature(&self) -> Signature { 17 - Signature::build("job kill") 18 - .required("id", SyntaxShape::Int, "id of job to kill") 19 - .category(Category::System) 20 - } 21 - 22 - fn description(&self) -> &str { 23 - "Kill a background job by ID." 24 - } 25 - 26 - fn run( 27 - &self, 28 - engine_state: &EngineState, 29 - stack: &mut Stack, 30 - call: &Call, 31 - _input: PipelineData, 32 - ) -> Result<PipelineData, ShellError> { 33 - let id: i64 = call.req(engine_state, stack, 0)?; 34 - if id < 0 { 35 - return Err(ShellError::GenericError { 36 - error: "invalid id".to_string(), 37 - msg: format!("task id must be non-negative, got {}", id), 38 - span: Some(call.head), 39 - help: None, 40 - inner: vec![], 41 - }); 42 - } 43 - 44 - let killed = kill_task_by_id(id as usize); 45 - 46 - // Return a boolean indicating whether a task was found & killed. 47 - Ok(Value::bool(killed, call.head).into_pipeline_data()) 48 - } 49 - }
-43
dysnomia/src/cmd/job_list.rs
··· 1 - use crate::globals::get_all_tasks; 2 - use nu_protocol::{ 3 - Category, ListStream, PipelineData, Record, ShellError, Signature, Value, 4 - engine::{Call, Command, EngineState, Stack}, 5 - }; 6 - 7 - #[derive(Clone)] 8 - pub struct JobList; 9 - 10 - impl Command for JobList { 11 - fn name(&self) -> &str { 12 - "job list" 13 - } 14 - 15 - fn signature(&self) -> Signature { 16 - Signature::build("job list").category(Category::System) 17 - } 18 - 19 - fn description(&self) -> &str { 20 - "List background jobs." 21 - } 22 - 23 - fn run( 24 - &self, 25 - engine_state: &EngineState, 26 - _stack: &mut Stack, 27 - call: &Call, 28 - _input: PipelineData, 29 - ) -> Result<PipelineData, ShellError> { 30 - let tasks = get_all_tasks(); 31 - let span = call.head; 32 - let iter = tasks.into_iter().map(move |(id, desc)| { 33 - let mut rec = Record::new(); 34 - rec.push("id", Value::int(id as i64, span)); 35 - rec.push("description", Value::string(desc, span)); 36 - Value::record(rec, span) 37 - }); 38 - Ok(PipelineData::list_stream( 39 - ListStream::new(iter, span, engine_state.signals().clone()), 40 - None, 41 - )) 42 - } 43 - }
-139
dysnomia/src/cmd/ls.rs
··· 1 - use std::{ 2 - sync::Arc, 3 - time::{SystemTime, UNIX_EPOCH}, 4 - }; 5 - 6 - use crate::globals::{get_pwd, to_shell_err}; 7 - use jacquard::chrono; 8 - use nu_engine::CallExt; 9 - use nu_protocol::{ 10 - Category, ListStream, PipelineData, Record, ShellError, Signature, SyntaxShape, Value, 11 - engine::{Command, EngineState, Stack}, 12 - }; 13 - 14 - #[derive(Clone)] 15 - pub struct Ls; 16 - 17 - impl Command for Ls { 18 - fn name(&self) -> &str { 19 - "ls" 20 - } 21 - 22 - fn signature(&self) -> Signature { 23 - Signature::build("ls") 24 - .optional("path", SyntaxShape::String, "the path to list") 25 - .switch( 26 - "all", 27 - "include hidden paths (that start with a dot)", 28 - Some('a'), 29 - ) 30 - .switch( 31 - "long", 32 - "show detailed information about each file", 33 - Some('l'), 34 - ) 35 - .category(Category::FileSystem) 36 - } 37 - 38 - fn description(&self) -> &str { 39 - "list the files in the virtual filesystem." 40 - } 41 - 42 - fn run( 43 - &self, 44 - engine_state: &EngineState, 45 - stack: &mut Stack, 46 - call: &nu_protocol::engine::Call, 47 - _input: PipelineData, 48 - ) -> Result<PipelineData, ShellError> { 49 - let path_arg: Option<String> = call.opt(engine_state, stack, 0)?; 50 - let all = call.has_flag(engine_state, stack, "all")?; 51 - let long = call.has_flag(engine_state, stack, "long")?; 52 - 53 - let mut target_dir = get_pwd(); 54 - if let Some(path) = path_arg { 55 - target_dir = Arc::new( 56 - target_dir 57 - .join(path.trim_end_matches('/')) 58 - .map_err(to_shell_err(call.arguments_span()))?, 59 - ); 60 - } 61 - 62 - let span = call.head; 63 - let entries = target_dir.read_dir().map_err(to_shell_err(span))?; 64 - 65 - let make_record = move |name: &str, metadata: &vfs::VfsMetadata| { 66 - let type_str = match metadata.file_type { 67 - vfs::VfsFileType::Directory => "dir", 68 - vfs::VfsFileType::File => "file", 69 - }; 70 - 71 - let mut record = Record::new(); 72 - record.push("name", Value::string(name, span)); 73 - record.push("type", Value::string(type_str, span)); 74 - record.push("size", Value::filesize(metadata.len as i64, span)); 75 - let mut add_timestamp = |field: &str, timestamp: Option<SystemTime>| { 76 - if let Some(dur) = timestamp.and_then(|s| s.duration_since(UNIX_EPOCH).ok()) { 77 - record.push( 78 - field, 79 - Value::date( 80 - chrono::DateTime::from_timestamp_nanos(dur.as_nanos() as i64) 81 - .fixed_offset(), 82 - span, 83 - ), 84 - ); 85 - } else { 86 - record.push(field, Value::nothing(span)); 87 - } 88 - }; 89 - add_timestamp("modified", metadata.modified); 90 - if long { 91 - add_timestamp("created", metadata.created); 92 - add_timestamp("accessed", metadata.accessed); 93 - } 94 - Value::record(record, span) 95 - }; 96 - const DIR_METADATA: vfs::VfsMetadata = vfs::VfsMetadata { 97 - file_type: vfs::VfsFileType::Directory, 98 - len: 0, 99 - modified: None, 100 - created: None, 101 - accessed: None, 102 - }; 103 - 104 - let dots = if all { 105 - vec![ 106 - make_record(".", &DIR_METADATA), 107 - make_record("..", &DIR_METADATA), 108 - ] 109 - } else { 110 - Vec::new() 111 - }; 112 - let entries = dots 113 - .into_iter() 114 - .chain(entries.into_iter().flat_map(move |entry| { 115 - let do_map = move || { 116 - let name = entry.filename(); 117 - if name.starts_with('.') && !all { 118 - return Ok(None); 119 - } 120 - let metadata = entry.metadata().map_err(to_shell_err(span))?; 121 - 122 - Ok(Some(make_record(&name, &metadata))) 123 - }; 124 - do_map() 125 - .transpose() 126 - .map(|res| res.unwrap_or_else(|err| Value::error(err, span))) 127 - })); 128 - 129 - let signals = engine_state.signals().clone(); 130 - Ok(PipelineData::list_stream( 131 - ListStream::new(entries, span, signals.clone()), 132 - Some(nu_protocol::PipelineMetadata { 133 - data_source: nu_protocol::DataSource::Ls, 134 - content_type: None, 135 - custom: Record::new(), 136 - }), 137 - )) 138 - } 139 - }
-46
dysnomia/src/cmd/mkdir.rs
··· 1 - use crate::globals::{get_pwd, to_shell_err}; 2 - use nu_engine::CallExt; 3 - use nu_protocol::{ 4 - Category, PipelineData, ShellError, Signature, SyntaxShape, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - 8 - #[derive(Clone)] 9 - pub struct Mkdir; 10 - 11 - impl Command for Mkdir { 12 - fn name(&self) -> &str { 13 - "mkdir" 14 - } 15 - 16 - fn signature(&self) -> Signature { 17 - Signature::build("mkdir") 18 - .required( 19 - "path", 20 - SyntaxShape::String, 21 - "path of the directory(s) to create", 22 - ) 23 - .category(Category::FileSystem) 24 - } 25 - 26 - fn description(&self) -> &str { 27 - "create a directory in the virtual filesystem." 28 - } 29 - 30 - fn run( 31 - &self, 32 - engine_state: &EngineState, 33 - stack: &mut Stack, 34 - call: &nu_protocol::engine::Call, 35 - _: PipelineData, 36 - ) -> Result<PipelineData, ShellError> { 37 - let path: String = call.req(engine_state, stack, 0)?; 38 - let new_dir = get_pwd() 39 - .join(path.trim_end_matches('/')) 40 - .map_err(to_shell_err(call.head))?; 41 - new_dir 42 - .create_dir_all() 43 - .map_err(to_shell_err(call.head)) 44 - .map(|_| PipelineData::Empty) 45 - } 46 - }
-31
dysnomia/src/cmd/mod.rs
··· 1 - pub mod cd; 2 - pub mod fetch; 3 - pub mod job; 4 - pub mod job_kill; 5 - pub mod job_list; 6 - pub mod ls; 7 - pub mod mkdir; 8 - pub mod open; 9 - pub mod pwd; 10 - pub mod random; 11 - pub mod rm; 12 - pub mod save; 13 - pub mod source; 14 - pub mod sys; 15 - pub mod version; 16 - 17 - pub use cd::Cd; 18 - pub use fetch::Fetch; 19 - pub use job::Job; 20 - pub use job_kill::JobKill; 21 - pub use job_list::JobList; 22 - pub use ls::Ls; 23 - pub use mkdir::Mkdir; 24 - pub use open::Open; 25 - pub use pwd::Pwd; 26 - pub use random::Random; 27 - pub use rm::Rm; 28 - pub use save::Save; 29 - pub use source::Source; 30 - pub use sys::Sys; 31 - pub use version::Version;
-88
dysnomia/src/cmd/open.rs
··· 1 - use std::ops::Not; 2 - 3 - use crate::globals::{get_pwd, to_shell_err}; 4 - use nu_command::{FromCsv, FromJson, FromOds, FromToml, FromTsv, FromXlsx, FromXml, FromYaml}; 5 - use nu_engine::CallExt; 6 - use nu_protocol::{ 7 - ByteStream, Category, PipelineData, ShellError, Signature, SyntaxShape, 8 - engine::{Command, EngineState, Stack}, 9 - }; 10 - 11 - #[derive(Clone)] 12 - pub struct Open; 13 - 14 - impl Command for Open { 15 - fn name(&self) -> &str { 16 - "open" 17 - } 18 - 19 - fn signature(&self) -> Signature { 20 - Signature::build("open") 21 - .required("path", SyntaxShape::String, "path to the file") 22 - .switch( 23 - "raw", 24 - "output content as raw string/binary without parsing", 25 - Some('r'), 26 - ) 27 - .category(Category::FileSystem) 28 - } 29 - 30 - fn description(&self) -> &str { 31 - "open a file from the virtual filesystem." 32 - } 33 - 34 - fn run( 35 - &self, 36 - engine_state: &EngineState, 37 - stack: &mut Stack, 38 - call: &nu_protocol::engine::Call, 39 - _input: PipelineData, 40 - ) -> Result<PipelineData, ShellError> { 41 - let path: String = call.req(engine_state, stack, 0)?; 42 - let raw_flag = call.has_flag(engine_state, stack, "raw")?; 43 - 44 - let target_file = get_pwd().join(&path).map_err(to_shell_err(call.head))?; 45 - 46 - let parse_cmd = raw_flag 47 - .not() 48 - .then(|| { 49 - target_file 50 - .extension() 51 - .and_then(|ext| get_cmd_for_ext(&ext)) 52 - }) 53 - .flatten(); 54 - 55 - target_file 56 - .open_file() 57 - .map_err(to_shell_err(call.head)) 58 - .and_then(|f| { 59 - let data = PipelineData::ByteStream( 60 - ByteStream::read( 61 - f, 62 - call.head, 63 - engine_state.signals().clone(), 64 - nu_protocol::ByteStreamType::String, 65 - ), 66 - None, 67 - ); 68 - if let Some(cmd) = parse_cmd { 69 - return cmd.run(engine_state, stack, call, data); 70 - } 71 - Ok(data) 72 - }) 73 - } 74 - } 75 - 76 - fn get_cmd_for_ext(ext: &str) -> Option<Box<dyn Command>> { 77 - Some(match ext { 78 - "json" => Box::new(FromJson), 79 - "yaml" | "yml" => Box::new(FromYaml), 80 - "toml" => Box::new(FromToml), 81 - "csv" => Box::new(FromCsv), 82 - "ods" => Box::new(FromOds), 83 - "tsv" => Box::new(FromTsv), 84 - "xml" => Box::new(FromXml), 85 - "xlsx" => Box::new(FromXlsx), 86 - _ => return None, 87 - }) 88 - }
-37
dysnomia/src/cmd/pwd.rs
··· 1 - use crate::globals::get_pwd; 2 - use nu_protocol::engine::Call; 3 - use nu_protocol::{ 4 - Category, IntoPipelineData, PipelineData, ShellError, Signature, Value, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - 8 - #[derive(Clone)] 9 - pub struct Pwd; 10 - 11 - impl Command for Pwd { 12 - fn name(&self) -> &str { 13 - "pwd" 14 - } 15 - 16 - fn signature(&self) -> Signature { 17 - Signature::build("pwd").category(Category::FileSystem) 18 - } 19 - 20 - fn description(&self) -> &str { 21 - "print the current working directory in the virtual filesystem." 22 - } 23 - 24 - fn run( 25 - &self, 26 - _engine_state: &EngineState, 27 - _stack: &mut Stack, 28 - call: &Call, 29 - _input: PipelineData, 30 - ) -> Result<PipelineData, ShellError> { 31 - let mut pwd = get_pwd().as_str().to_string(); 32 - if pwd.is_empty() { 33 - pwd.push('/'); 34 - } 35 - Ok(Value::string(pwd, call.head).into_pipeline_data()) 36 - } 37 - }
-37
dysnomia/src/cmd/random.rs
··· 1 - use js_sys::Math; 2 - use nu_protocol::Type; 3 - use nu_protocol::engine::Call; 4 - use nu_protocol::{ 5 - Category, IntoPipelineData, PipelineData, ShellError, Signature, Value, 6 - engine::{Command, EngineState, Stack}, 7 - }; 8 - 9 - #[derive(Clone)] 10 - pub struct Random; 11 - 12 - impl Command for Random { 13 - fn name(&self) -> &str { 14 - "random" 15 - } 16 - 17 - fn signature(&self) -> Signature { 18 - Signature::build("random") 19 - .category(Category::Math) 20 - .input_output_type(Type::Nothing, Type::Float) 21 - } 22 - 23 - fn description(&self) -> &str { 24 - "returns a random float between 0 and 1." 25 - } 26 - 27 - fn run( 28 - &self, 29 - _engine_state: &EngineState, 30 - _stack: &mut Stack, 31 - call: &Call, 32 - _input: PipelineData, 33 - ) -> Result<PipelineData, ShellError> { 34 - let v: f64 = Math::random(); 35 - Ok(Value::float(v, call.head).into_pipeline_data()) 36 - } 37 - }
-80
dysnomia/src/cmd/rm.rs
··· 1 - use crate::globals::{get_pwd, to_shell_err}; 2 - use nu_engine::CallExt; 3 - use nu_protocol::{ 4 - Category, PipelineData, ShellError, Signature, SyntaxShape, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - use vfs::VfsFileType; 8 - 9 - #[derive(Clone)] 10 - pub struct Rm; 11 - 12 - impl Command for Rm { 13 - fn name(&self) -> &str { 14 - "rm" 15 - } 16 - 17 - fn signature(&self) -> Signature { 18 - Signature::build("rm") 19 - .required( 20 - "path", 21 - SyntaxShape::String, 22 - "path to file or directory to remove", 23 - ) 24 - .switch( 25 - "recursive", 26 - "remove directories and their contents recursively", 27 - Some('r'), 28 - ) 29 - .category(Category::FileSystem) 30 - } 31 - 32 - fn description(&self) -> &str { 33 - "remove a file or directory from the virtual filesystem." 34 - } 35 - 36 - fn run( 37 - &self, 38 - engine_state: &EngineState, 39 - stack: &mut Stack, 40 - call: &nu_protocol::engine::Call, 41 - _input: PipelineData, 42 - ) -> Result<PipelineData, ShellError> { 43 - let path: String = call.req(engine_state, stack, 0)?; 44 - let recursive = call.has_flag(engine_state, stack, "recursive")?; 45 - 46 - // Prevent removing root 47 - if path == "/" { 48 - return Err(ShellError::GenericError { 49 - error: "cannot remove root".to_string(), 50 - msg: "refusing to remove root directory".to_string(), 51 - span: Some(call.head), 52 - help: None, 53 - inner: vec![], 54 - }); 55 - } 56 - 57 - // Resolve target relative to PWD (or absolute if path starts with '/') 58 - let target = get_pwd() 59 - .join(path.trim_end_matches('/')) 60 - .map_err(to_shell_err(call.head))?; 61 - 62 - let meta = target.metadata().map_err(to_shell_err(call.head))?; 63 - match meta.file_type { 64 - VfsFileType::File => { 65 - target.remove_file().map_err(to_shell_err(call.head))?; 66 - Ok(PipelineData::Empty) 67 - } 68 - VfsFileType::Directory => { 69 - (if recursive { 70 - target.remove_dir_all() 71 - } else { 72 - // non-recursive: attempt to remove directory (will fail if not empty) 73 - target.remove_dir() 74 - }) 75 - .map_err(to_shell_err(call.head)) 76 - .map(|_| PipelineData::Empty) 77 - } 78 - } 79 - } 80 - }
-67
dysnomia/src/cmd/save.rs
··· 1 - use crate::globals::{get_pwd, to_shell_err}; 2 - use nu_engine::CallExt; 3 - use nu_protocol::{ 4 - Category, PipelineData, ShellError, Signature, SyntaxShape, Type, Value, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - use vfs::VfsError; 8 - 9 - #[derive(Clone)] 10 - pub struct Save; 11 - 12 - impl Command for Save { 13 - fn name(&self) -> &str { 14 - "save" 15 - } 16 - 17 - fn signature(&self) -> Signature { 18 - Signature::build("save") 19 - .required("path", SyntaxShape::String, "path to write the data to") 20 - .input_output_types(vec![(Type::Any, Type::Nothing)]) 21 - .category(Category::FileSystem) 22 - } 23 - 24 - fn description(&self) -> &str { 25 - "save content to a file in the virtual filesystem." 26 - } 27 - 28 - fn run( 29 - &self, 30 - engine_state: &EngineState, 31 - stack: &mut Stack, 32 - call: &nu_protocol::engine::Call, 33 - input: PipelineData, 34 - ) -> Result<PipelineData, ShellError> { 35 - let path: String = call.req(engine_state, stack, 0)?; 36 - 37 - let value = input.into_value(call.head)?; 38 - let contents = match value { 39 - Value::String { val, .. } => val.into_bytes(), 40 - Value::Binary { val, .. } => val, 41 - Value::Bool { val, .. } => val.to_string().into_bytes(), 42 - Value::Float { val, .. } => val.to_string().into_bytes(), 43 - Value::Int { val, .. } => val.to_string().into_bytes(), 44 - Value::Date { val, .. } => val.to_string().into_bytes(), 45 - _ => { 46 - return Err(ShellError::CantConvert { 47 - to_type: "string".to_string(), 48 - from_type: value.get_type().to_string(), 49 - span: value.span(), 50 - help: None, 51 - }); 52 - } 53 - }; 54 - 55 - let target_file = get_pwd().join(&path).map_err(to_shell_err(call.head))?; 56 - 57 - target_file 58 - .create_file() 59 - .map_err(to_shell_err(call.head)) 60 - .and_then(|mut f| { 61 - f.write_all(&contents) 62 - .map_err(VfsError::from) 63 - .map_err(to_shell_err(call.head)) 64 - }) 65 - .map(|_| PipelineData::Empty) 66 - } 67 - }
-89
dysnomia/src/cmd/source.rs
··· 1 - use crate::globals::{get_pwd, queue_delta, to_shell_err}; 2 - use nu_engine::{CallExt, command_prelude::IoError, eval_block}; 3 - use nu_parser::parse; 4 - use nu_protocol::{ 5 - Category, PipelineData, ShellError, Signature, SyntaxShape, 6 - debugger::WithoutDebug, 7 - engine::{Command, EngineState, Stack, StateWorkingSet}, 8 - }; 9 - use std::{io::Read, path::PathBuf, str::FromStr}; 10 - 11 - #[derive(Clone)] 12 - pub struct Source; 13 - 14 - impl Command for Source { 15 - fn name(&self) -> &str { 16 - "source" 17 - } 18 - 19 - fn signature(&self) -> Signature { 20 - Signature::build(self.name()) 21 - .required("filename", SyntaxShape::String, "the file to source") 22 - .category(Category::Core) 23 - } 24 - 25 - fn description(&self) -> &str { 26 - "source a file from the virtual filesystem." 27 - } 28 - 29 - fn run( 30 - &self, 31 - engine_state: &EngineState, 32 - stack: &mut Stack, 33 - call: &nu_protocol::engine::Call, 34 - input: PipelineData, 35 - ) -> Result<PipelineData, ShellError> { 36 - let filename: String = call.req(engine_state, stack, 0)?; 37 - 38 - // 1. Read file from VFS 39 - let path = get_pwd().join(&filename).map_err(to_shell_err(call.head))?; 40 - let mut file = path.open_file().map_err(to_shell_err(call.head))?; 41 - let mut contents = String::new(); 42 - file.read_to_string(&mut contents).map_err(|e| { 43 - ShellError::Io(IoError::new( 44 - e, 45 - call.head, 46 - PathBuf::from_str(path.as_str()).unwrap(), 47 - )) 48 - })?; 49 - 50 - // 2. Parse the content 51 - // We create a new working set based on the CURRENT engine state. 52 - let mut working_set = StateWorkingSet::new(engine_state); 53 - 54 - // We must add the file to the working set so the parser can track spans correctly 55 - let _file_id = working_set.add_file(filename.clone(), contents.as_bytes()); 56 - 57 - // Parse the block 58 - let block = parse( 59 - &mut working_set, 60 - Some(&filename), 61 - contents.as_bytes(), 62 - false, 63 - ); 64 - 65 - if let Some(err) = working_set.parse_errors.first() { 66 - return Err(ShellError::GenericError { 67 - error: "Parse error".into(), 68 - msg: err.to_string(), 69 - span: Some(call.head), 70 - help: None, 71 - inner: vec![], 72 - }); 73 - } 74 - 75 - // 3. Prepare execution context 76 - // We clone the engine state to merge the new definitions (delta) locally. 77 - // This ensures the script can call its own defined functions immediately. 78 - let mut local_state = engine_state.clone(); 79 - local_state.merge_delta(working_set.delta.clone())?; 80 - 81 - // 4. Queue the delta for the global engine state 82 - // This allows definitions to be available in the next command execution cycle (REPL behavior). 83 - queue_delta(working_set.delta); 84 - 85 - // 5. Evaluate the block 86 - // We pass the MUTABLE stack, so environment variable changes (PWD, load-env) WILL persist. 87 - eval_block::<WithoutDebug>(&local_state, stack, &block, input).map(|data| data.body) 88 - } 89 - }
-182
dysnomia/src/cmd/sys.rs
··· 1 - use js_sys::Reflect; 2 - use js_sys::global; 3 - use nu_protocol::{ 4 - Category, IntoPipelineData, PipelineData, Record, ShellError, Signature, Value, 5 - engine::{Command, EngineState, Stack}, 6 - }; 7 - use wasm_bindgen::JsValue; 8 - 9 - #[derive(Clone)] 10 - pub struct Sys; 11 - 12 - impl Command for Sys { 13 - fn name(&self) -> &str { 14 - "sys" 15 - } 16 - 17 - fn signature(&self) -> Signature { 18 - Signature::build("sys").category(Category::System) 19 - } 20 - 21 - fn description(&self) -> &str { 22 - "return information about the browser environment (when running in wasm)" 23 - } 24 - 25 - fn run( 26 - &self, 27 - _engine_state: &EngineState, 28 - _stack: &mut Stack, 29 - call: &nu_protocol::engine::Call, 30 - _input: PipelineData, 31 - ) -> Result<PipelineData, ShellError> { 32 - let head = call.head; 33 - let mut rec = Record::new(); 34 - 35 - let g = global(); 36 - 37 - // navigator-derived fields 38 - if let Ok(nav) = Reflect::get(&g, &JsValue::from_str("navigator")) { 39 - if !nav.is_undefined() && !nav.is_null() { 40 - let ua = Reflect::get(&nav, &JsValue::from_str("userAgent")) 41 - .ok() 42 - .and_then(|v| v.as_string()) 43 - .unwrap_or_default(); 44 - rec.push("user_agent", Value::string(ua, head)); 45 - 46 - let platform = Reflect::get(&nav, &JsValue::from_str("platform")) 47 - .ok() 48 - .and_then(|v| v.as_string()) 49 - .unwrap_or_default(); 50 - rec.push("platform", Value::string(platform, head)); 51 - 52 - let vendor = Reflect::get(&nav, &JsValue::from_str("vendor")) 53 - .ok() 54 - .and_then(|v| v.as_string()) 55 - .unwrap_or_default(); 56 - rec.push("vendor", Value::string(vendor, head)); 57 - 58 - let product = Reflect::get(&nav, &JsValue::from_str("product")) 59 - .ok() 60 - .and_then(|v| v.as_string()) 61 - .unwrap_or_default(); 62 - rec.push("product", Value::string(product, head)); 63 - 64 - let app_name = Reflect::get(&nav, &JsValue::from_str("appName")) 65 - .ok() 66 - .and_then(|v| v.as_string()) 67 - .unwrap_or_default(); 68 - rec.push("app_name", Value::string(app_name, head)); 69 - 70 - let language = Reflect::get(&nav, &JsValue::from_str("language")) 71 - .ok() 72 - .and_then(|v| v.as_string()) 73 - .unwrap_or_default(); 74 - rec.push("language", Value::string(language, head)); 75 - 76 - // booleans now use Value::bool 77 - let online = Reflect::get(&nav, &JsValue::from_str("onLine")) 78 - .ok() 79 - .and_then(|v| v.as_bool()) 80 - .unwrap_or(false); 81 - rec.push("online", Value::bool(online, head)); 82 - 83 - let cookie_enabled = Reflect::get(&nav, &JsValue::from_str("cookieEnabled")) 84 - .ok() 85 - .and_then(|v| v.as_bool()) 86 - .unwrap_or(false); 87 - rec.push("cookie_enabled", Value::bool(cookie_enabled, head)); 88 - 89 - // numeric-ish fields 90 - let hardware_concurrency = 91 - Reflect::get(&nav, &JsValue::from_str("hardwareConcurrency")) 92 - .ok() 93 - .and_then(|v| v.as_f64()) 94 - .map(|f| f as i64); 95 - if let Some(hc) = hardware_concurrency { 96 - rec.push("hardware_concurrency", Value::int(hc, head)); 97 - } 98 - 99 - let device_memory = Reflect::get(&nav, &JsValue::from_str("deviceMemory")) 100 - .ok() 101 - .and_then(|v| v.as_f64()) 102 - .map(|f| f as i64); 103 - if let Some(dm) = device_memory { 104 - rec.push("device_memory_gb", Value::int(dm, head)); 105 - } 106 - 107 - let max_touch_points = Reflect::get(&nav, &JsValue::from_str("maxTouchPoints")) 108 - .ok() 109 - .and_then(|v| v.as_f64()) 110 - .map(|f| f as i64); 111 - if let Some(tp) = max_touch_points { 112 - rec.push("max_touch_points", Value::int(tp, head)); 113 - } 114 - 115 - let dnt = Reflect::get(&nav, &JsValue::from_str("doNotTrack")) 116 - .ok() 117 - .and_then(|v| v.as_string()) 118 - .unwrap_or_default(); 119 - if !dnt.is_empty() { 120 - rec.push("do_not_track", Value::string(dnt, head)); 121 - } 122 - } 123 - } 124 - 125 - // screen dimensions (if available) 126 - if let Ok(screen) = Reflect::get(&g, &JsValue::from_str("screen")) { 127 - if !screen.is_undefined() && !screen.is_null() { 128 - let width = Reflect::get(&screen, &JsValue::from_str("width")) 129 - .ok() 130 - .and_then(|v| v.as_f64()) 131 - .map(|f| f as i64); 132 - let height = Reflect::get(&screen, &JsValue::from_str("height")) 133 - .ok() 134 - .and_then(|v| v.as_f64()) 135 - .map(|f| f as i64); 136 - if let Some(w) = width { 137 - rec.push("screen_width", Value::int(w, head)); 138 - } 139 - if let Some(h) = height { 140 - rec.push("screen_height", Value::int(h, head)); 141 - } 142 - } 143 - } 144 - 145 - // performance.memory (optional) 146 - if let Ok(perf) = Reflect::get(&g, &JsValue::from_str("performance")) { 147 - if !perf.is_undefined() && !perf.is_null() { 148 - if let Ok(mem) = Reflect::get(&perf, &JsValue::from_str("memory")) { 149 - if !mem.is_undefined() && !mem.is_null() { 150 - let used = Reflect::get(&mem, &JsValue::from_str("usedJSHeapSize")) 151 - .ok() 152 - .and_then(|v| v.as_f64()) 153 - .map(|f| f as i64); 154 - let limit = Reflect::get(&mem, &JsValue::from_str("jsHeapSizeLimit")) 155 - .ok() 156 - .and_then(|v| v.as_f64()) 157 - .map(|f| f as i64); 158 - let mut mrec = Record::new(); 159 - if let Some(u) = used { 160 - mrec.push("used_js_heap_size", Value::filesize(u, head)); 161 - } 162 - if let Some(l) = limit { 163 - mrec.push("js_heap_size_limit", Value::filesize(l, head)); 164 - } 165 - if !mrec.is_empty() { 166 - rec.push("performance_memory", Value::record(mrec, head)); 167 - } 168 - } 169 - } 170 - } 171 - } 172 - 173 - if rec.is_empty() { 174 - rec.push( 175 - "error", 176 - Value::string("not running in a browser environment", head), 177 - ); 178 - } 179 - 180 - Ok(Value::record(rec, head).into_pipeline_data()) 181 - } 182 - }
-32
dysnomia/src/cmd/version.rs
··· 1 - use nu_protocol::engine::Call; 2 - use nu_protocol::{ 3 - Category, IntoPipelineData, PipelineData, ShellError, Signature, Value, 4 - engine::{Command, EngineState, Stack}, 5 - }; 6 - 7 - #[derive(Clone)] 8 - pub struct Version; 9 - 10 - impl Command for Version { 11 - fn name(&self) -> &str { 12 - "version" 13 - } 14 - 15 - fn signature(&self) -> Signature { 16 - Signature::build(self.name()).category(Category::System) 17 - } 18 - 19 - fn description(&self) -> &str { 20 - "print the version of dysnomia." 21 - } 22 - 23 - fn run( 24 - &self, 25 - _engine_state: &EngineState, 26 - _stack: &mut Stack, 27 - call: &Call, 28 - _input: PipelineData, 29 - ) -> Result<PipelineData, ShellError> { 30 - Ok(Value::string("dysnomia.v099.t1765660500", call.head).into_pipeline_data()) 31 - } 32 - }
-213
dysnomia/src/completion.rs
··· 1 - use super::*; 2 - 3 - #[derive(Debug, Serialize)] 4 - struct Suggestion { 5 - name: String, 6 - description: Option<String>, 7 - is_command: bool, 8 - rendered: String, 9 - span_start: usize, // char index (not byte) 10 - span_end: usize, // char index (not byte) 11 - } 12 - 13 - impl PartialEq for Suggestion { 14 - fn eq(&self, other: &Self) -> bool { 15 - self.name == other.name 16 - } 17 - } 18 - impl Eq for Suggestion {} 19 - impl PartialOrd for Suggestion { 20 - fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> { 21 - self.name.partial_cmp(&other.name) 22 - } 23 - } 24 - impl Ord for Suggestion { 25 - fn cmp(&self, other: &Self) -> std::cmp::Ordering { 26 - self.name.cmp(&other.name) 27 - } 28 - } 29 - 30 - #[wasm_bindgen] 31 - pub fn completion(input: &str, js_cursor_pos: usize) -> String { 32 - let engine_guard = ENGINE_STATE 33 - .get() 34 - .unwrap() 35 - .lock() 36 - .expect("engine state initialized"); 37 - let root = get_pwd(); 38 - 39 - // Map UTF-16 cursor position (from JS) to Byte index (for Rust) 40 - let byte_pos = input 41 - .char_indices() 42 - .map(|(i, _)| i) 43 - .nth(js_cursor_pos) 44 - .unwrap_or(input.len()); 45 - 46 - // 1. Parse & Flatten 47 - let mut working_set = StateWorkingSet::new(&engine_guard); 48 - // CRITICAL: Capture the start offset so we can normalize spans later 49 - let global_offset = working_set.next_span_start(); 50 - let block = parse(&mut working_set, None, input.as_bytes(), false); 51 - let shapes = flatten_block(&working_set, &block); 52 - 53 - // 2. Identify context 54 - let mut is_command_pos = false; 55 - let mut current_span = Span::new(byte_pos, byte_pos); 56 - let mut prefix = "".to_string(); 57 - let mut found_shape = false; 58 - 59 - // Check if cursor is inside or touching a shape 60 - for (span, shape) in &shapes { 61 - // Convert global span to local indices 62 - let local_start = span.start.saturating_sub(global_offset); 63 - let local_end = span.end.saturating_sub(global_offset); 64 - let local_span = Span::new(local_start, local_end); 65 - 66 - if local_span.contains(byte_pos) || local_span.end == byte_pos { 67 - current_span = local_span; 68 - found_shape = true; 69 - let safe_end = std::cmp::min(local_span.end, byte_pos); 70 - if local_span.start < input.len() { 71 - prefix = input[local_span.start..safe_end].to_string(); 72 - } 73 - 74 - match shape { 75 - FlatShape::External(_) | FlatShape::InternalCall(_) | FlatShape::Keyword => { 76 - is_command_pos = true; 77 - } 78 - FlatShape::Garbage => { 79 - // Check if it looks like a flag 80 - if prefix.starts_with('-') { 81 - is_command_pos = false; 82 - } else { 83 - // Assume command if it's garbage but not a flag (e.g. typing a new command) 84 - is_command_pos = true; 85 - } 86 - } 87 - _ => { 88 - is_command_pos = false; 89 - } 90 - } 91 - break; 92 - } 93 - } 94 - 95 - // Fallback to Lexer if in whitespace 96 - if !found_shape { 97 - let (tokens, _err) = lex(input.as_bytes(), 0, &[], &[], true); 98 - let last_token = tokens.iter().filter(|t| t.span.end <= byte_pos).last(); 99 - 100 - if let Some(token) = last_token { 101 - match token.contents { 102 - TokenContents::Pipe 103 - | TokenContents::PipePipe 104 - | TokenContents::Semicolon 105 - | TokenContents::Eol => { 106 - is_command_pos = true; 107 - } 108 - _ => { 109 - let text = &input[token.span.start..token.span.end]; 110 - if text == "{" || text == "(" || text == ";" || text == "&&" || text == "||" { 111 - is_command_pos = true; 112 - } else { 113 - is_command_pos = false; 114 - } 115 - } 116 - } 117 - } else { 118 - is_command_pos = true; // Start of input 119 - } 120 - } 121 - 122 - let mut suggestions: Vec<Suggestion> = Vec::new(); 123 - 124 - // Convert byte-spans back to char-spans for JS 125 - let to_char_span = |start: usize, end: usize| -> (usize, usize) { 126 - let char_start = input[..start].chars().count(); 127 - let char_end = input[..end].chars().count(); 128 - (char_start, char_end) 129 - }; 130 - 131 - let (span_start, span_end) = to_char_span(current_span.start, current_span.end); 132 - 133 - let mut add_cmd_suggestion = |name: Vec<u8>, desc: Option<String>| { 134 - let name = String::from_utf8_lossy(&name).to_string(); 135 - suggestions.push(Suggestion { 136 - rendered: { 137 - let name = ansi_term::Color::Green.bold().paint(&name); 138 - let desc = desc.as_deref().unwrap_or("<no description>"); 139 - format!("{name} {desc}") 140 - }, 141 - name: name.clone(), // Replacement text is just the name 142 - description: desc, 143 - is_command: true, 144 - span_start, 145 - span_end, 146 - }); 147 - }; 148 - 149 - let working_set = StateWorkingSet::new(&engine_guard); 150 - 151 - if is_command_pos { 152 - for (_, name, desc, _) in working_set 153 - .find_commands_by_predicate(|value| value.starts_with(prefix.as_bytes()), true) 154 - { 155 - add_cmd_suggestion(name, desc); 156 - } 157 - } else { 158 - // File completion 159 - // Split prefix into directory and file part 160 - let (dir, file_prefix) = if let Some(idx) = prefix.rfind('/') { 161 - (&prefix[..idx + 1], &prefix[idx + 1..]) 162 - } else { 163 - ("", prefix.as_str()) 164 - }; 165 - 166 - // Fix: Clean up the directory path before joining. 167 - // VFS often fails if 'join' is called with a trailing slash (e.g. "a/") because it interprets it as "a" + "" 168 - let dir_to_join = if dir.len() > 1 && dir.ends_with('/') { 169 - &dir[..dir.len() - 1] 170 - } else { 171 - dir 172 - }; 173 - 174 - let target_dir = if !dir.is_empty() { 175 - match root.join(dir_to_join) { 176 - Ok(d) => { 177 - if let Ok(true) = d.is_dir() { 178 - Some(d) 179 - } else { 180 - None 181 - } 182 - } 183 - Err(_) => None, 184 - } 185 - } else { 186 - // If prefix is empty, list current directory 187 - Some(root.join("").unwrap()) 188 - }; 189 - 190 - if let Some(d) = target_dir { 191 - if let Ok(iterator) = d.read_dir() { 192 - for entry in iterator { 193 - let name = entry.filename(); 194 - if name.starts_with(file_prefix) { 195 - let full_completion = format!("{}{}", dir, name); 196 - suggestions.push(Suggestion { 197 - name: full_completion.clone(), 198 - description: None, 199 - is_command: false, 200 - rendered: full_completion, 201 - span_start, 202 - span_end, 203 - }) 204 - } 205 - } 206 - } 207 - } 208 - } 209 - 210 - suggestions.sort(); 211 - 212 - serde_json::to_string(&suggestions).unwrap_or_else(|_| "[]".to_string()) 213 - }
-370
dysnomia/src/default_context.rs
··· 1 - use nu_command::*; 2 - use nu_protocol::engine::{EngineState, StateWorkingSet}; 3 - 4 - pub fn add_shell_command_context(mut engine_state: EngineState) -> EngineState { 5 - let delta = { 6 - let mut working_set = StateWorkingSet::new(&engine_state); 7 - 8 - macro_rules! bind_command { 9 - ( $( $command:expr ),* $(,)? ) => { 10 - $( working_set.add_decl(Box::new($command)); )* 11 - }; 12 - } 13 - 14 - // If there are commands that have the same name as default declarations, 15 - // they have to be registered before the main declarations. This helps to make 16 - // them only accessible if the correct input value category is used with the 17 - // declaration 18 - 19 - // Database-related 20 - // Adds all related commands to query databases 21 - // add_database_decls(&mut working_set); 22 - 23 - // Charts 24 - bind_command! { 25 - Histogram 26 - } 27 - 28 - // Filters 29 - bind_command! { 30 - All, 31 - Any, 32 - Append, 33 - Chunks, 34 - Columns, 35 - Compact, 36 - Default, 37 - Drop, 38 - DropColumn, 39 - DropNth, 40 - Each, 41 - Enumerate, 42 - Every, 43 - Filter, 44 - Find, 45 - First, 46 - Flatten, 47 - Get, 48 - GroupBy, 49 - Headers, 50 - Insert, 51 - IsEmpty, 52 - IsNotEmpty, 53 - Interleave, 54 - Items, 55 - Join, 56 - Take, 57 - Merge, 58 - MergeDeep, 59 - Move, 60 - TakeWhile, 61 - TakeUntil, 62 - Last, 63 - Length, 64 - Lines, 65 - ParEach, 66 - ChunkBy, 67 - Prepend, 68 - Reduce, 69 - Reject, 70 - Rename, 71 - Reverse, 72 - Select, 73 - Skip, 74 - SkipUntil, 75 - SkipWhile, 76 - Slice, 77 - Sort, 78 - SortBy, 79 - SplitList, 80 - Tee, 81 - Transpose, 82 - Uniq, 83 - UniqBy, 84 - Upsert, 85 - Update, 86 - Values, 87 - Where, 88 - Window, 89 - Wrap, 90 - Zip, 91 - }; 92 - 93 - // Misc 94 - bind_command! { 95 - Panic, 96 - }; 97 - 98 - // Path 99 - bind_command! { 100 - Path, 101 - PathBasename, 102 - PathSelf, 103 - PathDirname, 104 - PathExists, 105 - PathExpand, 106 - PathJoin, 107 - PathParse, 108 - PathRelativeTo, 109 - PathSplit, 110 - PathType, 111 - }; 112 - 113 - // Help 114 - bind_command! { 115 - Help, 116 - HelpAliases, 117 - HelpExterns, 118 - HelpCommands, 119 - HelpModules, 120 - HelpOperators, 121 - HelpPipeAndRedirect, 122 - HelpEscapes, 123 - }; 124 - 125 - // Debug 126 - bind_command! { 127 - Ast, 128 - Debug, 129 - DebugEnv, 130 - DebugExperimentalOptions, 131 - DebugInfo, 132 - DebugProfile, 133 - Explain, 134 - Inspect, 135 - Metadata, 136 - MetadataAccess, 137 - MetadataSet, 138 - TimeIt, 139 - View, 140 - ViewBlocks, 141 - ViewFiles, 142 - ViewIr, 143 - ViewSource, 144 - ViewSpan, 145 - }; 146 - 147 - // Strings 148 - bind_command! { 149 - Ansi, 150 - AnsiLink, 151 - AnsiStrip, 152 - Char, 153 - Decode, 154 - Encode, 155 - DecodeHex, 156 - EncodeHex, 157 - DecodeBase32, 158 - EncodeBase32, 159 - DecodeBase32Hex, 160 - EncodeBase32Hex, 161 - DecodeBase64, 162 - EncodeBase64, 163 - Detect, 164 - DetectColumns, 165 - DetectType, 166 - Parse, 167 - Split, 168 - SplitChars, 169 - SplitColumn, 170 - SplitRow, 171 - SplitWords, 172 - Str, 173 - StrCapitalize, 174 - StrContains, 175 - StrDistance, 176 - StrDowncase, 177 - StrEndswith, 178 - StrExpand, 179 - StrJoin, 180 - StrReplace, 181 - StrIndexOf, 182 - StrLength, 183 - StrReverse, 184 - StrStats, 185 - StrStartsWith, 186 - StrSubstring, 187 - StrTrim, 188 - StrUpcase, 189 - Format, 190 - FormatDate, 191 - FormatDuration, 192 - FormatFilesize, 193 - }; 194 - 195 - // Date 196 - bind_command! { 197 - Date, 198 - DateFromHuman, 199 - DateHumanize, 200 - DateListTimezones, 201 - DateNow, 202 - DateToTimezone, 203 - }; 204 - 205 - // Formats 206 - bind_command! { 207 - From, 208 - FromCsv, 209 - FromJson, 210 - FromMsgpack, 211 - FromMsgpackz, 212 - FromNuon, 213 - FromOds, 214 - FromSsv, 215 - FromToml, 216 - FromTsv, 217 - FromXlsx, 218 - FromXml, 219 - FromYaml, 220 - FromYml, 221 - To, 222 - ToCsv, 223 - ToJson, 224 - ToMd, 225 - ToMsgpack, 226 - ToMsgpackz, 227 - ToNuon, 228 - ToText, 229 - ToToml, 230 - ToTsv, 231 - Upsert, 232 - Where, 233 - ToXml, 234 - ToYaml, 235 - ToYml, 236 - }; 237 - 238 - // Viewers 239 - bind_command! { 240 - Griddle, 241 - Table, 242 - }; 243 - 244 - // Conversions 245 - bind_command! { 246 - Fill, 247 - Into, 248 - IntoBool, 249 - IntoBinary, 250 - IntoCellPath, 251 - IntoDatetime, 252 - IntoDuration, 253 - IntoFloat, 254 - IntoFilesize, 255 - IntoInt, 256 - IntoRecord, 257 - IntoString, 258 - IntoGlob, 259 - IntoValue, 260 - SplitCellPath, 261 - }; 262 - 263 - // Env 264 - bind_command! { 265 - ExportEnv, 266 - LoadEnv, 267 - SourceEnv, 268 - WithEnv, 269 - ConfigNu, 270 - ConfigEnv, 271 - ConfigFlatten, 272 - ConfigMeta, 273 - ConfigReset, 274 - ConfigUseColors, 275 - }; 276 - 277 - // Math 278 - bind_command! { 279 - Math, 280 - MathAbs, 281 - MathAvg, 282 - MathCeil, 283 - MathFloor, 284 - MathMax, 285 - MathMedian, 286 - MathMin, 287 - MathMode, 288 - MathProduct, 289 - MathRound, 290 - MathSqrt, 291 - MathStddev, 292 - MathSum, 293 - MathVariance, 294 - MathLog, 295 - }; 296 - 297 - // Bytes 298 - bind_command! { 299 - Bytes, 300 - BytesLen, 301 - BytesSplit, 302 - BytesStartsWith, 303 - BytesEndsWith, 304 - BytesReverse, 305 - BytesReplace, 306 - BytesAdd, 307 - BytesAt, 308 - BytesIndexOf, 309 - BytesCollect, 310 - BytesRemove, 311 - BytesBuild 312 - } 313 - 314 - bind_command! { 315 - Url, 316 - UrlBuildQuery, 317 - UrlSplitQuery, 318 - UrlDecode, 319 - UrlEncode, 320 - UrlJoin, 321 - UrlParse, 322 - } 323 - 324 - // Generators 325 - bind_command! { 326 - Cal, 327 - Seq, 328 - SeqDate, 329 - SeqChar, 330 - Generate, 331 - }; 332 - 333 - // Hash 334 - bind_command! { 335 - Hash, 336 - HashMd5::default(), 337 - HashSha256::default(), 338 - }; 339 - 340 - // Removed 341 - bind_command! { 342 - LetEnv, 343 - DateFormat, 344 - }; 345 - 346 - // bind_command! { 347 - // Stor, 348 - // StorCreate, 349 - // StorDelete, 350 - // StorExport, 351 - // StorImport, 352 - // StorInsert, 353 - // StorOpen, 354 - // StorReset, 355 - // StorUpdate, 356 - // }; 357 - 358 - working_set.render() 359 - }; 360 - 361 - if let Err(err) = engine_state.merge_delta(delta) { 362 - eprintln!("Error creating default context: {err:?}"); 363 - } 364 - 365 - // Cache the table decl id so we don't have to look it up later 366 - let table_decl_id = engine_state.find_decl("table".as_bytes(), &[]); 367 - engine_state.table_decl_id = table_decl_id; 368 - 369 - engine_state 370 - }
-78
dysnomia/src/error.rs
··· 1 - use miette::{GraphicalReportHandler, Report, SourceCode, SourceSpan, SpanContents}; 2 - 3 - pub struct CommandError { 4 - pub error: Report, 5 - pub start_offset: usize, 6 - } 7 - 8 - pub struct OffsetSource { 9 - pub source: String, 10 - pub start_offset: usize, 11 - } 12 - 13 - pub struct OffsetSpanContents<'a> { 14 - inner: Box<dyn SpanContents<'a> + 'a>, 15 - global_span: SourceSpan, 16 - } 17 - 18 - impl<'a> SpanContents<'a> for OffsetSpanContents<'a> { 19 - fn data(&self) -> &'a [u8] { 20 - self.inner.data() 21 - } 22 - fn span(&self) -> &SourceSpan { 23 - &self.global_span 24 - } 25 - fn line(&self) -> usize { 26 - self.inner.line() 27 - } 28 - fn column(&self) -> usize { 29 - self.inner.column() 30 - } 31 - fn line_count(&self) -> usize { 32 - self.inner.line_count() 33 - } 34 - } 35 - 36 - impl SourceCode for OffsetSource { 37 - fn read_span<'b>( 38 - &'b self, 39 - span: &SourceSpan, 40 - context_lines_before: usize, 41 - context_lines_after: usize, 42 - ) -> Result<Box<dyn miette::SpanContents<'b> + 'b>, miette::MietteError> { 43 - let local_start = span.offset().saturating_sub(self.start_offset); 44 - let local_len = std::cmp::min(span.len(), self.source.len().saturating_sub(local_start)); 45 - let local_span = SourceSpan::new(local_start.into(), local_len); 46 - 47 - let local_contents = 48 - self.source 49 - .read_span(&local_span, context_lines_before, context_lines_after)?; 50 - 51 - let content_local_span = local_contents.span(); 52 - let global_start = content_local_span.offset() + self.start_offset; 53 - let global_span = SourceSpan::new(global_start.into(), content_local_span.len()); 54 - 55 - Ok(Box::new(OffsetSpanContents { 56 - inner: local_contents, 57 - global_span, 58 - })) 59 - } 60 - } 61 - 62 - pub fn format_error(error: Report, input: String, start_offset: usize) -> String { 63 - let handler = GraphicalReportHandler::new() 64 - .with_theme(miette::GraphicalTheme::unicode()) 65 - .with_cause_chain(); 66 - 67 - let source = OffsetSource { 68 - source: input, 69 - start_offset, 70 - }; 71 - 72 - let report_with_source = error.with_source_code(source); 73 - let mut output = String::new(); 74 - handler 75 - .render_report(&mut output, report_with_source.as_ref()) 76 - .unwrap(); 77 - output 78 - }
-189
dysnomia/src/globals.rs
··· 1 - use futures::stream::AbortHandle; 2 - use nu_protocol::{ 3 - ShellError, Span, 4 - engine::{EngineState, StateDelta}, 5 - }; 6 - use std::{ 7 - collections::HashMap, 8 - sync::{ 9 - Arc, Mutex, OnceLock, RwLock, 10 - atomic::{AtomicUsize, Ordering}, 11 - }, 12 - time::{Duration, SystemTime, UNIX_EPOCH}, 13 - }; 14 - use vfs::{VfsError, VfsPath, error::VfsErrorKind}; 15 - use wasm_bindgen::prelude::*; 16 - 17 - use crate::memory_fs::MemoryFS; 18 - 19 - static ROOT: OnceLock<Arc<VfsPath>> = OnceLock::new(); 20 - 21 - pub fn get_vfs() -> Arc<VfsPath> { 22 - ROOT.get_or_init(|| Arc::new(VfsPath::new(MemoryFS::new()))) 23 - .clone() 24 - } 25 - 26 - static PWD: OnceLock<RwLock<Arc<VfsPath>>> = OnceLock::new(); 27 - 28 - pub fn get_pwd() -> Arc<VfsPath> { 29 - PWD.get_or_init(|| RwLock::new(get_vfs())) 30 - .read() 31 - .unwrap() 32 - .clone() 33 - } 34 - 35 - pub fn set_pwd(path: Arc<VfsPath>) { 36 - *PWD.get_or_init(|| RwLock::new(get_vfs())).write().unwrap() = path; 37 - } 38 - 39 - pub fn to_shell_err(span: Span) -> impl Fn(VfsError) -> ShellError { 40 - move |vfs_error: VfsError| ShellError::GenericError { 41 - error: (match vfs_error.kind() { 42 - VfsErrorKind::DirectoryExists 43 - | VfsErrorKind::FileExists 44 - | VfsErrorKind::FileNotFound 45 - | VfsErrorKind::InvalidPath => "path error", 46 - _ => "io error", 47 - }) 48 - .to_string(), 49 - msg: vfs_error.to_string(), 50 - span: Some(span), 51 - help: None, 52 - inner: vec![], 53 - } 54 - } 55 - 56 - pub struct TaskInfo { 57 - pub id: usize, 58 - pub description: String, 59 - pub handle: AbortHandle, 60 - } 61 - 62 - pub struct CallbackWrapper(js_sys::Function); 63 - unsafe impl Send for CallbackWrapper {} 64 - unsafe impl Sync for CallbackWrapper {} 65 - 66 - static NEXT_TASK_ID: AtomicUsize = AtomicUsize::new(1); 67 - static TASK_REGISTRY: OnceLock<Mutex<HashMap<usize, TaskInfo>>> = OnceLock::new(); 68 - static TASK_CALLBACK: OnceLock<Mutex<Option<CallbackWrapper>>> = OnceLock::new(); 69 - 70 - pub fn get_registry() -> &'static Mutex<HashMap<usize, TaskInfo>> { 71 - TASK_REGISTRY.get_or_init(|| Mutex::new(HashMap::new())) 72 - } 73 - 74 - #[wasm_bindgen] 75 - pub fn register_task_count_callback(f: js_sys::Function) { 76 - let _ = TASK_CALLBACK.get_or_init(|| Mutex::new(None)); 77 - if let Ok(mut guard) = TASK_CALLBACK.get().unwrap().lock() { 78 - *guard = Some(CallbackWrapper(f)); 79 - } 80 - } 81 - 82 - pub fn notify_task_count() { 83 - if let Some(mutex) = TASK_CALLBACK.get() { 84 - if let Ok(guard) = mutex.lock() { 85 - if let Some(cb) = guard.as_ref() { 86 - let count = if let Ok(reg) = get_registry().lock() { 87 - reg.len() 88 - } else { 89 - 0 90 - }; 91 - let this = JsValue::NULL; 92 - let arg = JsValue::from(count as u32); 93 - let _ = cb.0.call1(&this, &arg); 94 - } 95 - } 96 - } 97 - } 98 - 99 - pub fn register_task(description: String, handle: AbortHandle) -> usize { 100 - let id = NEXT_TASK_ID.fetch_add(1, Ordering::Relaxed); 101 - if let Ok(mut reg) = get_registry().lock() { 102 - reg.insert( 103 - id, 104 - TaskInfo { 105 - id, 106 - description, 107 - handle, 108 - }, 109 - ); 110 - } 111 - notify_task_count(); 112 - id 113 - } 114 - 115 - pub fn remove_task(id: usize) { 116 - if let Ok(mut reg) = get_registry().lock() { 117 - reg.remove(&id); 118 - } 119 - notify_task_count(); 120 - } 121 - 122 - pub fn get_all_tasks() -> Vec<(usize, String)> { 123 - if let Ok(reg) = get_registry().lock() { 124 - reg.values() 125 - .map(|t| (t.id, t.description.clone())) 126 - .collect() 127 - } else { 128 - vec![] 129 - } 130 - } 131 - 132 - pub fn kill_task_by_id(id: usize) -> bool { 133 - if let Ok(mut reg) = get_registry().lock() { 134 - if let Some(task) = reg.remove(&id) { 135 - task.handle.abort(); 136 - drop(reg); 137 - notify_task_count(); 138 - return true; 139 - } 140 - } 141 - false 142 - } 143 - 144 - static PENDING_DELTAS: OnceLock<Mutex<Vec<StateDelta>>> = OnceLock::new(); 145 - 146 - pub fn queue_delta(delta: StateDelta) { 147 - let _ = PENDING_DELTAS.get_or_init(|| Mutex::new(Vec::new())); 148 - if let Ok(mut guard) = PENDING_DELTAS.get().unwrap().lock() { 149 - guard.push(delta); 150 - } 151 - } 152 - 153 - pub fn apply_pending_deltas(engine_state: &mut EngineState) -> Result<(), ShellError> { 154 - if let Some(mutex) = PENDING_DELTAS.get() { 155 - if let Ok(mut guard) = mutex.lock() { 156 - for delta in guard.drain(..) { 157 - engine_state.merge_delta(delta)?; 158 - } 159 - } 160 - } 161 - Ok(()) 162 - } 163 - 164 - pub static CONSOLE_CALLBACK: OnceLock<Mutex<Option<CallbackWrapper>>> = OnceLock::new(); 165 - 166 - #[wasm_bindgen] 167 - pub fn register_console_callback(f: js_sys::Function) { 168 - let _ = CONSOLE_CALLBACK.get_or_init(|| Mutex::new(None)); 169 - if let Ok(mut guard) = CONSOLE_CALLBACK.get().unwrap().lock() { 170 - *guard = Some(CallbackWrapper(f)); 171 - } 172 - } 173 - 174 - pub fn print_to_console(msg: &str, is_cmd: bool) { 175 - if let Some(mutex) = CONSOLE_CALLBACK.get() { 176 - if let Ok(guard) = mutex.lock() { 177 - if let Some(cb) = guard.as_ref() { 178 - let this = JsValue::NULL; 179 - let arg = JsValue::from_str(msg); 180 - let arg2 = JsValue::from_bool(is_cmd); 181 - let _ = cb.0.call2(&this, &arg, &arg2); 182 - } 183 - } 184 - } 185 - } 186 - 187 - pub fn current_time() -> Option<SystemTime> { 188 - UNIX_EPOCH.checked_add(Duration::from_millis(js_sys::Date::now() as u64)) 189 - }
-72
dysnomia/src/highlight.rs
··· 1 - use super::*; 2 - 3 - #[wasm_bindgen] 4 - pub fn highlight(input: &str) -> String { 5 - let engine_guard = ENGINE_STATE 6 - .get() 7 - .unwrap() 8 - .lock() 9 - .expect("engine state initialized"); 10 - let mut working_set = StateWorkingSet::new(&engine_guard); 11 - 12 - // Capture the global offset before parsing, as parse will generate spans relative to this 13 - let global_offset = working_set.next_span_start(); 14 - 15 - // Parse the input block using Nushell's full parser 16 - let block = parse(&mut working_set, None, input.as_bytes(), false); 17 - 18 - // Flatten the block to get shapes (semantic tokens) 19 - let shapes = flatten_block(&working_set, &block); 20 - 21 - let mut output = String::new(); 22 - let mut last_end = 0; 23 - 24 - for (span, shape) in shapes { 25 - // Adjust global span to local byte indices 26 - let local_start = span.start.saturating_sub(global_offset); 27 - let local_end = span.end.saturating_sub(global_offset); 28 - 29 - if local_start >= input.len() { 30 - continue; 31 - } 32 - let safe_end = std::cmp::min(local_end, input.len()); 33 - 34 - if local_start > last_end { 35 - output.push_str(&input[last_end..local_start]); 36 - } 37 - 38 - let start_index = std::cmp::max(local_start, last_end); 39 - if start_index >= safe_end { 40 - continue; 41 - } 42 - 43 - // Colors corresponding to standard Nushell/Ansi map 44 - let color = match shape { 45 - FlatShape::Pipe | FlatShape::Redirection => "\x1b[35m", // Magenta 46 - FlatShape::Bool | FlatShape::Int | FlatShape::Float => "\x1b[35;1m", // Light Magenta (Numbers/Bool) 47 - FlatShape::External(_) | FlatShape::InternalCall(_) | FlatShape::Keyword => { 48 - "\x1b[32;1m" 49 - } // Green Bold 50 - FlatShape::String | FlatShape::StringInterpolation | FlatShape::RawString => "\x1b[36m", // Cyan 51 - FlatShape::Variable(_) | FlatShape::Flag => "\x1b[34m", // Blue 52 - FlatShape::Garbage => "\x1b[31;1m\x1b[47m", // Red on White 53 - FlatShape::Signature => "\x1b[33;1m", // Yellow Bold 54 - // Closures, blocks, punctuation often fall here 55 - FlatShape::Block => "\x1b[37m", // White 56 - FlatShape::Closure => "\x1b[36;1m", // Light Cyan 57 - _ => "\x1b[0m", 58 - }; 59 - 60 - output.push_str(color); 61 - output.push_str(&input[start_index..safe_end]); 62 - output.push_str("\x1b[0m"); 63 - 64 - last_end = safe_end; 65 - } 66 - 67 - if last_end < input.len() { 68 - output.push_str(&input[last_end..]); 69 - } 70 - 71 - output 72 - }
-249
dysnomia/src/lib.rs
··· 1 - use jacquard::chrono; 2 - use miette::Report; 3 - use nu_cmd_extra::add_extra_command_context; 4 - use nu_cmd_lang::create_default_context; 5 - use nu_engine::{command_prelude::*, eval_block}; 6 - use nu_parser::{FlatShape, TokenContents, flatten_block, lex, parse}; 7 - use nu_protocol::{ 8 - Config, PipelineData, Span, 9 - engine::{Call, EngineState, Stack, StateWorkingSet}, 10 - }; 11 - use serde::Serialize; 12 - use std::{ 13 - sync::{Arc, Mutex, OnceLock}, 14 - time::UNIX_EPOCH, 15 - }; 16 - use vfs::VfsError; 17 - use wasm_bindgen::prelude::*; 18 - 19 - pub mod cmd; 20 - pub mod completion; 21 - pub mod default_context; 22 - pub mod error; 23 - pub mod globals; 24 - pub mod highlight; 25 - pub mod memory_fs; 26 - 27 - use crate::{ 28 - cmd::{ 29 - Cd, Fetch, Job, JobKill, JobList, Ls, Mkdir, Open, Pwd, Random, Rm, Save, Source, Sys, 30 - Version, 31 - }, 32 - default_context::add_shell_command_context, 33 - error::format_error, 34 - globals::{apply_pending_deltas, current_time, get_pwd, print_to_console}, 35 - }; 36 - use error::CommandError; 37 - use globals::get_vfs; 38 - 39 - static ENGINE_STATE: OnceLock<Mutex<EngineState>> = OnceLock::new(); 40 - static STACK: OnceLock<Mutex<Stack>> = OnceLock::new(); 41 - 42 - fn init_engine_internal() -> Result<(), Report> { 43 - let mut engine_state = create_default_context(); 44 - engine_state = add_shell_command_context(engine_state); 45 - engine_state = add_extra_command_context(engine_state); 46 - 47 - let write_file = |name: &str, contents: &str| { 48 - get_vfs() 49 - .join(name) 50 - .and_then(|p| p.create_file()) 51 - .and_then(|mut f| f.write_all(contents.as_bytes()).map_err(VfsError::from)) 52 - .map_err(|e| miette::miette!(e.to_string())) 53 - }; 54 - 55 - let access_log = format!( 56 - r#"/dysnomia.v000 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]// 57 - /dysnomia.v002 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]// 58 - /dysnomia.v011 /user: 90008/ /ip: [REDACTED]/ /time: [REDACTED]// 59 - [...ENTRIES TRUNCATED...] 60 - /dysnomia.v099 /user: anonymous/ /ip: [REDACTED]/ /time: {time}//"#, 61 - time = current_time() 62 - .and_then(|t| t.duration_since(UNIX_EPOCH).ok()) 63 - .map_or_else( 64 - || "unknown".to_string(), 65 - |time| chrono::DateTime::from_timestamp_nanos(time.as_nanos() as i64) 66 - .format("%Y-%m-%dT%H:%M:%SZ") 67 - .to_string() 68 - ) 69 - ); 70 - write_file(".access.log", &access_log)?; 71 - 72 - let welcome_txt = r#"welcome anonymous ! 73 - 74 - 75 - you are interfacing with dysnomia.v099 76 - using the nu shell. 77 - 78 - 79 - a few commands you can try: 80 - 81 - "hello, user!" | save message.txt 82 - fetch at://ptr.pet 83 - ls --help"#; 84 - write_file("welcome.txt", &welcome_txt)?; 85 - 86 - let mut working_set = StateWorkingSet::new(&engine_state); 87 - let decls: [Box<dyn Command>; 15] = [ 88 - Box::new(Ls), 89 - Box::new(Open), 90 - Box::new(Save), 91 - Box::new(Mkdir), 92 - Box::new(Pwd), 93 - Box::new(Cd), 94 - Box::new(Rm), 95 - Box::new(Fetch), 96 - Box::new(Source), 97 - Box::new(Job), 98 - Box::new(JobList), 99 - Box::new(JobKill), 100 - Box::new(Sys), 101 - Box::new(Random), 102 - Box::new(Version), 103 - ]; 104 - for decl in decls { 105 - working_set.add_decl(decl); 106 - } 107 - engine_state.merge_delta(working_set.delta)?; 108 - 109 - let mut config = Config::default(); 110 - config.use_ansi_coloring = true.into(); 111 - config.show_banner = nu_protocol::BannerKind::Full; 112 - engine_state.config = Arc::new(config); 113 - 114 - ENGINE_STATE 115 - .set(Mutex::new(engine_state)) 116 - .map_err(|_| miette::miette!("ENGINE_STATE was already set!?"))?; 117 - STACK 118 - .set(Mutex::new(Stack::new())) 119 - .map_err(|_| miette::miette!("STACK was already set!?"))?; 120 - 121 - // web_sys::console::log_1(&"Hello, World!".into()); 122 - 123 - Ok(()) 124 - } 125 - 126 - #[wasm_bindgen] 127 - pub fn init_engine() -> String { 128 - console_error_panic_hook::set_once(); 129 - init_engine_internal().map_or_else(|err| format!("error: {err}"), |_| String::new()) 130 - } 131 - 132 - fn run_command_internal( 133 - engine_state: &mut EngineState, 134 - stack: &mut Stack, 135 - input: &str, 136 - ) -> Result<(), CommandError> { 137 - // apply any pending deltas from previous commands (like `source`) 138 - apply_pending_deltas(engine_state).map_err(|e| CommandError { 139 - error: Report::new(e), 140 - start_offset: 0, 141 - })?; 142 - // set PWD 143 - engine_state.add_env_var( 144 - "PWD".to_string(), 145 - get_pwd_string().into_value(Span::unknown()), 146 - ); 147 - 148 - let mut working_set = StateWorkingSet::new(engine_state); 149 - 150 - // Capture the start offset *before* adding the file, as this is the global offset 151 - // where our file begins. 152 - let start_offset = working_set.next_span_start(); 153 - let block = parse(&mut working_set, Some("entry"), input.as_bytes(), false); 154 - 155 - let cmd_err = |err: ShellError| CommandError { 156 - error: Report::new(err), 157 - start_offset, 158 - }; 159 - 160 - if let Some(err) = working_set.parse_errors.into_iter().next() { 161 - return Err(CommandError { 162 - error: Report::new(err), 163 - start_offset, 164 - }); 165 - } 166 - if let Some(err) = working_set.compile_errors.into_iter().next() { 167 - return Err(CommandError { 168 - error: Report::new(err), 169 - start_offset, 170 - }); 171 - } 172 - 173 - engine_state 174 - .merge_delta(working_set.delta) 175 - .map_err(cmd_err)?; 176 - let result = eval_block::<nu_protocol::debugger::WithoutDebug>( 177 - engine_state, 178 - stack, 179 - &block, 180 - PipelineData::Empty, 181 - ); 182 - 183 - let pipeline_data = result.map_err(cmd_err)?; 184 - let table_command = nu_command::Table; 185 - let call = Call::new(pipeline_data.span().unwrap_or_else(Span::unknown)); 186 - 187 - let res = table_command 188 - .run(engine_state, stack, &call, pipeline_data.body) 189 - .map_err(cmd_err)?; 190 - 191 - match res { 192 - PipelineData::Empty => {} 193 - PipelineData::Value(v, _) => { 194 - print_to_console(&v.to_expanded_string("\n", &engine_state.config), true) 195 - } 196 - PipelineData::ByteStream(s, _) => { 197 - for line in s.lines().into_iter().flatten() { 198 - let out = line.map_err(|e| CommandError { 199 - error: Report::new(e), 200 - start_offset, 201 - })?; 202 - print_to_console(&out, true); 203 - } 204 - } 205 - PipelineData::ListStream(s, _) => { 206 - for item in s.into_iter() { 207 - let out = item.to_expanded_string("\n", &engine_state.config); 208 - print_to_console(&out, true); 209 - } 210 - } 211 - } 212 - 213 - Ok(()) 214 - } 215 - 216 - #[wasm_bindgen] 217 - pub fn run_command(input: &str) -> Option<String> { 218 - let (mut engine_guard, mut stack_guard) = ( 219 - ENGINE_STATE 220 - .get() 221 - .unwrap() 222 - .lock() 223 - .expect("engine state initialized"), 224 - STACK.get().unwrap().lock().expect("stack initialized"), 225 - ); 226 - 227 - let result = std::panic::catch_unwind(move || { 228 - match run_command_internal(&mut engine_guard, &mut stack_guard, input) { 229 - Ok(_) => None, 230 - Err(cmd_err) => Some(format_error( 231 - cmd_err.error, 232 - input.to_owned(), 233 - cmd_err.start_offset, 234 - )), 235 - } 236 - }); 237 - result.unwrap_or_else(|err| Some(format!("panicked: {err:?}"))) 238 - } 239 - 240 - #[wasm_bindgen] 241 - pub fn get_pwd_string() -> String { 242 - // web_sys::console::log_1(&"before pwd".into()); 243 - let pwd = get_pwd(); 244 - // web_sys::console::log_1(&"after pwd".into()); 245 - if pwd.is_root() { 246 - return "/".to_string(); 247 - } 248 - pwd.as_str().to_string() 249 - }
-390
dysnomia/src/memory_fs.rs
··· 1 - //! An ephemeral in-memory file system, intended mainly for unit tests 2 - 3 - use core::cmp; 4 - use std::fmt; 5 - use std::fmt::{Debug, Formatter}; 6 - use std::io::{Cursor, Read, Seek, SeekFrom, Write}; 7 - use std::mem::swap; 8 - use std::sync::Arc; 9 - use std::time::SystemTime; 10 - use vfs::error::VfsErrorKind; 11 - use vfs::{FileSystem, VfsFileType}; 12 - use vfs::{SeekAndRead, VfsMetadata}; 13 - use vfs::{SeekAndWrite, VfsResult}; 14 - 15 - use crate::globals::current_time; 16 - 17 - type MemoryFsHandle = Arc<MemoryFsImpl>; 18 - 19 - /// An ephemeral in-memory file system, intended mainly for unit tests 20 - pub struct MemoryFS { 21 - handle: MemoryFsHandle, 22 - } 23 - 24 - impl Debug for MemoryFS { 25 - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { 26 - f.write_str("In Memory File System") 27 - } 28 - } 29 - 30 - impl MemoryFS { 31 - /// Create a new in-memory filesystem 32 - pub fn new() -> Self { 33 - MemoryFS { 34 - handle: Arc::new(MemoryFsImpl::new()), 35 - } 36 - } 37 - 38 - fn ensure_has_parent(&self, path: &str) -> VfsResult<()> { 39 - let separator = path.rfind('/'); 40 - if let Some(index) = separator { 41 - if self.exists(&path[..index])? { 42 - return Ok(()); 43 - } 44 - } 45 - Err(VfsErrorKind::Other("Parent path does not exist".into()).into()) 46 - } 47 - } 48 - 49 - impl Default for MemoryFS { 50 - fn default() -> Self { 51 - Self::new() 52 - } 53 - } 54 - 55 - struct WritableFile { 56 - content: Cursor<Vec<u8>>, 57 - destination: String, 58 - fs: MemoryFsHandle, 59 - } 60 - 61 - impl Seek for WritableFile { 62 - fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> { 63 - self.content.seek(pos) 64 - } 65 - } 66 - 67 - impl Write for WritableFile { 68 - fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> { 69 - self.content.write(buf) 70 - } 71 - 72 - fn flush(&mut self) -> std::io::Result<()> { 73 - self.content.flush()?; 74 - let mut content = self.content.get_ref().clone(); 75 - swap(&mut content, self.content.get_mut()); 76 - let content = Arc::new(content); 77 - 78 - let new_file = self 79 - .fs 80 - .files 81 - .peek_with(&self.destination, |_, previous_file| MemoryFile { 82 - file_type: VfsFileType::File, 83 - content: content.clone(), 84 - created: previous_file.created, 85 - modified: current_time(), 86 - accessed: previous_file.accessed, 87 - }) 88 - .unwrap_or_else(|| { 89 - let time = current_time(); 90 - MemoryFile { 91 - file_type: VfsFileType::File, 92 - content, 93 - created: time, 94 - modified: time, 95 - accessed: None, 96 - } 97 - }); 98 - 99 - // Remove old entry if it exists, then insert new one 100 - self.fs.files.remove_sync(&self.destination); 101 - let _ = self 102 - .fs 103 - .files 104 - .insert_sync(self.destination.clone(), new_file); 105 - Ok(()) 106 - } 107 - } 108 - 109 - impl Drop for WritableFile { 110 - fn drop(&mut self) { 111 - self.flush() 112 - .expect("Flush failed while dropping in-memory file"); 113 - } 114 - } 115 - 116 - struct ReadableFile { 117 - #[allow(clippy::rc_buffer)] // to allow accessing the same object as writable 118 - content: Arc<Vec<u8>>, 119 - position: u64, 120 - } 121 - 122 - impl ReadableFile { 123 - fn len(&self) -> u64 { 124 - self.content.len() as u64 - self.position 125 - } 126 - } 127 - 128 - impl Read for ReadableFile { 129 - fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> { 130 - let amt = cmp::min(buf.len(), self.len() as usize); 131 - 132 - if amt == 1 { 133 - buf[0] = self.content[self.position as usize]; 134 - } else { 135 - buf[..amt].copy_from_slice( 136 - &self.content.as_slice()[self.position as usize..self.position as usize + amt], 137 - ); 138 - } 139 - self.position += amt as u64; 140 - Ok(amt) 141 - } 142 - } 143 - 144 - impl Seek for ReadableFile { 145 - fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> { 146 - match pos { 147 - SeekFrom::Start(offset) => self.position = offset, 148 - SeekFrom::Current(offset) => self.position = (self.position as i64 + offset) as u64, 149 - SeekFrom::End(offset) => self.position = (self.content.len() as i64 + offset) as u64, 150 - } 151 - Ok(self.position) 152 - } 153 - } 154 - 155 - impl FileSystem for MemoryFS { 156 - fn read_dir(&self, path: &str) -> VfsResult<Box<dyn Iterator<Item = String> + Send>> { 157 - let prefix = format!("{}/", path); 158 - 159 - // Ensure the directory exists 160 - if !self.handle.files.contains(path) { 161 - return Err(VfsErrorKind::FileNotFound.into()); 162 - } 163 - 164 - let guard = scc::Guard::new(); 165 - let mut entries = Vec::new(); 166 - 167 - let range_start = prefix.clone(); 168 - for (candidate_path, _) in self.handle.files.range(range_start.., &guard) { 169 - if candidate_path.starts_with(&prefix) { 170 - let rest = &candidate_path[prefix.len()..]; 171 - if !rest.contains('/') { 172 - entries.push(rest.to_string()); 173 - } 174 - } else { 175 - // we are in a different directory if the prefix doesnt match 176 - break; 177 - } 178 - } 179 - 180 - Ok(Box::new(entries.into_iter())) 181 - } 182 - 183 - fn create_dir(&self, path: &str) -> VfsResult<()> { 184 - self.ensure_has_parent(path)?; 185 - 186 - // Check if path already exists and return appropriate error 187 - if let Some(result) = self 188 - .handle 189 - .files 190 - .peek_with(path, |_, file| match file.file_type { 191 - VfsFileType::File => Err(VfsErrorKind::FileExists.into()), 192 - VfsFileType::Directory => Err(VfsErrorKind::DirectoryExists.into()), 193 - }) 194 - { 195 - return result; 196 - } 197 - 198 - let new_dir = MemoryFile { 199 - file_type: VfsFileType::Directory, 200 - content: Default::default(), 201 - created: current_time(), 202 - modified: current_time(), 203 - accessed: current_time(), 204 - }; 205 - 206 - self.handle 207 - .files 208 - .insert_sync(path.to_string(), new_dir) 209 - .map_err(|_| VfsErrorKind::DirectoryExists.into()) 210 - } 211 - 212 - fn open_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndRead + Send>> { 213 - if let Some(time) = current_time() { 214 - let _ = self.set_access_time(path, time); 215 - } 216 - 217 - let content = self 218 - .handle 219 - .files 220 - .peek_with(path, |_, file| { 221 - ensure_file(file)?; 222 - VfsResult::Ok(file.content.clone()) 223 - }) 224 - .ok_or(VfsErrorKind::FileNotFound)??; 225 - 226 - Ok(Box::new(ReadableFile { 227 - content, 228 - position: 0, 229 - })) 230 - } 231 - 232 - fn create_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndWrite + Send>> { 233 - self.ensure_has_parent(path)?; 234 - let content = Arc::new(Vec::<u8>::new()); 235 - let new_file = MemoryFile { 236 - file_type: VfsFileType::File, 237 - content, 238 - created: current_time(), 239 - modified: current_time(), 240 - accessed: current_time(), 241 - }; 242 - 243 - // Remove old entry if it exists, then insert new one 244 - self.handle.files.remove_sync(path); 245 - let _ = self.handle.files.insert_sync(path.to_string(), new_file); 246 - 247 - let writer = WritableFile { 248 - content: Cursor::new(vec![]), 249 - destination: path.to_string(), 250 - fs: self.handle.clone(), 251 - }; 252 - Ok(Box::new(writer)) 253 - } 254 - 255 - fn append_file(&self, path: &str) -> VfsResult<Box<dyn SeekAndWrite + Send>> { 256 - let content = self 257 - .handle 258 - .files 259 - .peek_with(path, |_, file| file.content.clone()) 260 - .ok_or(VfsErrorKind::FileNotFound)?; 261 - let mut content = Cursor::new(content.as_slice().to_vec()); 262 - content.seek(SeekFrom::End(0))?; 263 - let writer = WritableFile { 264 - content, 265 - destination: path.to_string(), 266 - fs: self.handle.clone(), 267 - }; 268 - Ok(Box::new(writer)) 269 - } 270 - 271 - fn metadata(&self, path: &str) -> VfsResult<VfsMetadata> { 272 - self.handle 273 - .files 274 - .peek_with(path, |_, file| VfsMetadata { 275 - file_type: file.file_type, 276 - len: file.content.len() as u64, 277 - modified: file.modified, 278 - created: file.created, 279 - accessed: file.accessed, 280 - }) 281 - .ok_or(VfsErrorKind::FileNotFound.into()) 282 - } 283 - 284 - fn set_creation_time(&self, path: &str, time: SystemTime) -> VfsResult<()> { 285 - let updated = self 286 - .handle 287 - .files 288 - .peek_with(path, |_, file| MemoryFile { 289 - created: Some(time), 290 - ..file.clone() 291 - }) 292 - .ok_or(VfsErrorKind::FileNotFound)?; 293 - 294 - self.handle.files.remove_sync(path); 295 - let _ = self.handle.files.insert_sync(path.to_string(), updated); 296 - Ok(()) 297 - } 298 - 299 - fn set_modification_time(&self, path: &str, time: SystemTime) -> VfsResult<()> { 300 - let updated = self 301 - .handle 302 - .files 303 - .peek_with(path, |_, file| MemoryFile { 304 - modified: Some(time), 305 - ..file.clone() 306 - }) 307 - .ok_or(VfsErrorKind::FileNotFound)?; 308 - 309 - self.handle.files.remove_sync(path); 310 - let _ = self.handle.files.insert_sync(path.to_string(), updated); 311 - Ok(()) 312 - } 313 - 314 - fn set_access_time(&self, path: &str, time: SystemTime) -> VfsResult<()> { 315 - let updated = self 316 - .handle 317 - .files 318 - .peek_with(path, |_, file| MemoryFile { 319 - accessed: Some(time), 320 - ..file.clone() 321 - }) 322 - .ok_or(VfsErrorKind::FileNotFound)?; 323 - 324 - self.handle.files.remove_sync(path); 325 - let _ = self.handle.files.insert_sync(path.to_string(), updated); 326 - Ok(()) 327 - } 328 - 329 - fn exists(&self, path: &str) -> VfsResult<bool> { 330 - Ok(self.handle.files.contains(path)) 331 - } 332 - 333 - fn remove_file(&self, path: &str) -> VfsResult<()> { 334 - self.handle 335 - .files 336 - .remove_sync(path) 337 - .then_some(Ok(())) 338 - .unwrap_or_else(|| Err(VfsErrorKind::FileNotFound.into())) 339 - } 340 - 341 - fn remove_dir(&self, path: &str) -> VfsResult<()> { 342 - if self.read_dir(path)?.next().is_some() { 343 - return Err(VfsErrorKind::Other("Directory to remove is not empty".into()).into()); 344 - } 345 - self.handle 346 - .files 347 - .remove_sync(path) 348 - .then_some(Ok(())) 349 - .unwrap_or_else(|| Err(VfsErrorKind::FileNotFound.into())) 350 - } 351 - } 352 - 353 - struct MemoryFsImpl { 354 - files: scc::TreeIndex<String, MemoryFile>, 355 - } 356 - 357 - impl MemoryFsImpl { 358 - pub fn new() -> Self { 359 - let files = scc::TreeIndex::new(); 360 - // Add root directory 361 - let _ = files.insert_sync( 362 - "".to_string(), 363 - MemoryFile { 364 - file_type: VfsFileType::Directory, 365 - content: Arc::new(vec![]), 366 - created: current_time(), 367 - modified: None, 368 - accessed: None, 369 - }, 370 - ); 371 - Self { files } 372 - } 373 - } 374 - 375 - #[derive(Clone)] 376 - struct MemoryFile { 377 - file_type: VfsFileType, 378 - content: Arc<Vec<u8>>, 379 - 380 - created: Option<SystemTime>, 381 - modified: Option<SystemTime>, 382 - accessed: Option<SystemTime>, 383 - } 384 - 385 - fn ensure_file(file: &MemoryFile) -> VfsResult<()> { 386 - if file.file_type != VfsFileType::File { 387 - return Err(VfsErrorKind::Other("Not a file".into()).into()); 388 - } 389 - Ok(()) 390 - }
-24
dysnomia/www/.gitignore
··· 1 - # Logs 2 - logs 3 - *.log 4 - npm-debug.log* 5 - yarn-debug.log* 6 - yarn-error.log* 7 - pnpm-debug.log* 8 - lerna-debug.log* 9 - 10 - node_modules 11 - dist 12 - dist-ssr 13 - *.local 14 - 15 - # Editor directories and files 16 - .vscode/* 17 - !.vscode/extensions.json 18 - .idea 19 - .DS_Store 20 - *.suo 21 - *.ntvs* 22 - *.njsproj 23 - *.sln 24 - *.sw?
-13
dysnomia/www/index.html
··· 1 - <!doctype html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8" /> 5 - <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 6 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 - <title>dysnomia</title> 8 - </head> 9 - <body> 10 - <div id="app"></div> 11 - <script type="module" src="/src/main.ts"></script> 12 - </body> 13 - </html>
-25
dysnomia/www/package.json
··· 1 - { 2 - "name": "dysnomia", 3 - "private": true, 4 - "version": "0.0.0", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite", 8 - "build": "tsc && vite build", 9 - "preview": "vite preview" 10 - }, 11 - "devDependencies": { 12 - "typescript": "~5.9.3", 13 - "vite": "npm:rolldown-vite@7.2.5", 14 - "vite-plugin-top-level-await": "^1.6.0", 15 - "vite-plugin-wasm": "^3.5.0" 16 - }, 17 - "dependencies": { 18 - "@std/toml": "npm:@jsr/std__toml", 19 - "@xterm/addon-canvas": "^0.7.0", 20 - "@xterm/addon-fit": "^0.10.0", 21 - "@xterm/addon-web-links": "^0.11.0", 22 - "@xterm/addon-webgl": "^0.18.0", 23 - "@xterm/xterm": "^5.5.0" 24 - } 25 - }
-1
dysnomia/www/public/vite.svg
··· 1 - <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
··· 1 - import { Terminal } from "@xterm/xterm"; 2 - import { FitAddon } from "@xterm/addon-fit"; 3 - import { WebLinksAddon } from "@xterm/addon-web-links"; 4 - import { CanvasAddon } from "@xterm/addon-canvas"; 5 - import { WebglAddon } from "@xterm/addon-webgl"; 6 - 7 - // Import the worker using Vite's explicit worker suffix 8 - // This fixes the "disallowed MIME type" error by ensuring Vite bundles it correctly 9 - import DysnomiaWorker from "./worker?worker"; 10 - 11 - import "./style.css"; 12 - import "@xterm/xterm/css/xterm.css"; 13 - 14 - type Candidate = { 15 - name: string; 16 - description: string; 17 - is_command: boolean; 18 - rendered: string; 19 - span_start: number; 20 - span_end: number; 21 - }; 22 - 23 - type SearchState = "history" | "completion" | "none"; 24 - 25 - async function bootstrap() { 26 - // Instantiate the worker using the imported class 27 - const worker = new DysnomiaWorker(); 28 - 29 - // Communication Helpers 30 - let msgId = 0; 31 - const pending = new Map< 32 - number, 33 - { resolve: (value: any) => void; reject: (reason: any) => void } 34 - >(); 35 - 36 - // State to track if WASM is fully loaded 37 - let isWorkerReady = false; 38 - 39 - const callWorker = (type: string, payload?: any): Promise<any> => { 40 - return new Promise((resolve, reject) => { 41 - const id = ++msgId; 42 - pending.set(id, { resolve, reject }); 43 - worker.postMessage({ id, type, payload }); 44 - }); 45 - }; 46 - 47 - const term = new Terminal({ 48 - cursorBlink: true, 49 - cursorStyle: "bar", 50 - cursorInactiveStyle: "block", 51 - fontFamily: '"Comic Mono", monospace', 52 - fontSize: 15, 53 - scrollback: 100000, 54 - theme: { 55 - background: "#000000", 56 - foreground: "#ffffff", 57 - }, 58 - }); 59 - 60 - const fitAddon = new FitAddon(); 61 - term.loadAddon(fitAddon); 62 - term.loadAddon(new WebLinksAddon()); 63 - 64 - document.querySelector<HTMLDivElement>("#app")!.innerHTML = 65 - `<div id="terminal"></div>`; 66 - term.open(document.getElementById("terminal")!); 67 - try { 68 - term.loadAddon(new WebglAddon()); 69 - } catch (err) { 70 - console.error("WebGL addon failed to load:", err); 71 - console.warn("falling back to canvas!"); 72 - term.loadAddon(new CanvasAddon()); 73 - } 74 - fitAddon.fit(); 75 - 76 - let activeTasks = 0; 77 - let currentLine = ""; 78 - let completionBaseLine = ""; 79 - let cursorPos = 0; 80 - let isRunningCommand = false; 81 - 82 - let searchState: SearchState = "none"; 83 - let completionCandidates: Candidate[] = []; 84 - let completionIndex = -1; 85 - const history: string[] = []; 86 - let historyIndex = 0; 87 - 88 - // Cache PWD to avoid flickering/excessive async calls 89 - let cachedPwd = "/"; 90 - 91 - let readyPromiseResolve: () => void; 92 - const readyPromise = new Promise<void>((resolve) => { 93 - readyPromiseResolve = resolve; 94 - }); 95 - 96 - worker.onmessage = (e) => { 97 - const { id, type, payload } = e.data; 98 - 99 - // console.log("Received message:", id, type, payload); 100 - 101 - if (type === "initialized") { 102 - isWorkerReady = true; 103 - readyPromiseResolve(); 104 - } 105 - 106 - if (type === "console") { 107 - const safeMsg = payload.msg.replace(/\n/g, "\r\n"); 108 - 109 - if (!payload.isCmd) { 110 - // If we are sitting at a prompt, clear it to show the message 111 - term.write("\r\x1b[2K"); // Clear line 112 - term.write(safeMsg + "\r\n"); 113 - refreshPrompt(); 114 - } else { 115 - term.write(safeMsg + "\r\n"); 116 - } 117 - return; 118 - } 119 - 120 - if (type === "task_count") { 121 - activeTasks = payload; 122 - if (!isRunningCommand) { 123 - refreshPrompt(); 124 - } 125 - return; 126 - } 127 - 128 - if (pending.has(id)) { 129 - const resolver = pending.get(id)!; 130 - pending.delete(id); 131 - if (type === "error") { 132 - resolver.reject(payload); 133 - } else { 134 - resolver.resolve(payload); 135 - } 136 - } 137 - }; 138 - 139 - const getPrompt = () => { 140 - const indicator = 141 - activeTasks > 0 ? `\x1b[33m(${activeTasks} bg)\x1b[0m ` : ""; 142 - 143 - let modeIndicator = ""; 144 - if (searchState === "history") { 145 - modeIndicator = "\x1b[7m\x1b[34m(h-search)\x1b[0m "; 146 - } else if (searchState === "completion") { 147 - modeIndicator = "\x1b[7m\x1b[35m(c-search)\x1b[0m "; 148 - } 149 - 150 - const pathColor = isWorkerReady ? "\x1b[33m" : "\x1b[30;1m"; // Yellow (ready) vs Dark Gray (loading) 151 - return `${indicator}${pathColor}${cachedPwd}\x1b[32m/\x1b[0m ${modeIndicator}`; 152 - }; 153 - 154 - // Async Refresh Prompt 155 - const refreshPrompt = async () => { 156 - // If we are running a command (blocking), don't redraw prompt 157 - if (isRunningCommand) return; 158 - 159 - let output = ""; 160 - output += "\r"; 161 - output += "\x1b[2K"; // Clear current line 162 - output += "\x1b[J"; // Clear everything below 163 - 164 - output += getPrompt(); 165 - 166 - try { 167 - if (currentLine.length > 0 && isWorkerReady) { 168 - const highlighted = await callWorker("highlight", currentLine); 169 - output += highlighted; 170 - } else { 171 - output += currentLine; 172 - } 173 - } catch (e) { 174 - output += currentLine; 175 - } 176 - 177 - if (completionCandidates.length > 0) { 178 - output += "\x1b7"; // Save cursor position 179 - output += "\r\n"; 180 - 181 - const MAX_VISIBLE = 10; 182 - const total = completionCandidates.length; 183 - let start = 0; 184 - let end = total; 185 - 186 - if (total > MAX_VISIBLE) { 187 - const half = Math.floor(MAX_VISIBLE / 2); 188 - if (completionIndex < half) { 189 - start = 0; 190 - end = MAX_VISIBLE; 191 - } else if (completionIndex >= total - half) { 192 - start = total - MAX_VISIBLE; 193 - end = total; 194 - } else { 195 - start = completionIndex - half; 196 - end = start + MAX_VISIBLE; 197 - } 198 - } 199 - 200 - if (start > 0) { 201 - output += `\x1b[2m... ${start} more\x1b[0m\x1b[K\r\n`; 202 - } 203 - 204 - for (let i = start; i < end; i++) { 205 - const cand = completionCandidates[i]; 206 - const isSelected = i === completionIndex; 207 - let rendered = cand.rendered; 208 - 209 - if (isSelected) { 210 - rendered = rendered.replace(/\x1b\[0m/g, "\x1b[0m\x1b[7m"); 211 - output += `\x1b[7m${rendered}\x1b[K\x1b[0m\r\n`; 212 - } else { 213 - output += `${rendered}\x1b[K\r\n`; 214 - } 215 - } 216 - 217 - if (end < total) { 218 - output += `\x1b[2m... ${total - end} more\x1b[0m\x1b[K\r\n`; 219 - } 220 - 221 - output += "\x1b8"; // Restore cursor position 222 - } 223 - 224 - // Move cursor back to correct position 225 - const distance = currentLine.length - cursorPos; 226 - if (distance > 0) { 227 - output += `\x1b[${distance}D`; 228 - } 229 - 230 - // We write the whole block at once to minimize flicker 231 - term.write(output); 232 - }; 233 - 234 - const getLineWithCompletion = (baseLine: string, candidate: Candidate) => { 235 - const before = baseLine.slice(0, candidate.span_start); 236 - const after = baseLine.slice(candidate.span_end); 237 - return before + candidate.name + after; 238 - }; 239 - 240 - const applyCompletion = (candidate: Candidate) => { 241 - currentLine = getLineWithCompletion(currentLine, candidate); 242 - const before = currentLine.slice(0, candidate.span_start); 243 - cursorPos = (before + candidate.name).length; 244 - }; 245 - 246 - const updateCompletionCandidates = async () => { 247 - // Don't try to get completion if worker isn't loaded 248 - if (!isWorkerReady) return; 249 - 250 - try { 251 - const json = await callWorker("completion", { 252 - line: currentLine, 253 - cursor: cursorPos, 254 - }); 255 - const candidates: Candidate[] = JSON.parse(json); 256 - completionCandidates = candidates; 257 - completionBaseLine = currentLine; 258 - 259 - if (completionCandidates.length > 0) { 260 - if (completionIndex >= completionCandidates.length) { 261 - completionIndex = 0; 262 - } 263 - if (completionIndex < 0) { 264 - completionIndex = 0; 265 - } 266 - } else { 267 - completionIndex = -1; 268 - } 269 - } catch (err) { 270 - completionCandidates = []; 271 - completionIndex = -1; 272 - } 273 - }; 274 - 275 - const updateHistoryCandidates = () => { 276 - const query = currentLine.toLowerCase(); 277 - const matches = history.filter((cmd) => { 278 - let i = 0, 279 - j = 0; 280 - const cmdLower = cmd.toLowerCase(); 281 - while (i < query.length && j < cmdLower.length) { 282 - if (query[i] === cmdLower[j]) i++; 283 - j++; 284 - } 285 - return i === query.length; 286 - }); 287 - 288 - matches.reverse(); 289 - 290 - completionCandidates = matches.map((cmd) => ({ 291 - name: cmd, 292 - description: "", 293 - is_command: true, 294 - rendered: cmd, 295 - span_start: 0, 296 - span_end: currentLine.length, 297 - })); 298 - 299 - completionBaseLine = currentLine; 300 - 301 - if (completionCandidates.length > 0) { 302 - completionIndex = 0; 303 - } else { 304 - completionIndex = -1; 305 - } 306 - }; 307 - 308 - // 1. Setup Input Handler immediately so terminal isn't blocked 309 - term.onData(async (e) => { 310 - // SEARCH MODE INPUT 311 - if (searchState !== "none" && e >= " " && e <= "~") { 312 - if (cursorPos === currentLine.length) { 313 - currentLine += e; 314 - cursorPos++; 315 - } else { 316 - currentLine = 317 - currentLine.slice(0, cursorPos) + e + currentLine.slice(cursorPos); 318 - cursorPos++; 319 - } 320 - term.write(e); 321 - 322 - if (searchState === "history") updateHistoryCandidates(); 323 - if (searchState === "completion") await updateCompletionCandidates(); 324 - 325 - await refreshPrompt(); 326 - return; 327 - } 328 - 329 - // SEARCH MODE BACKSPACE 330 - if (searchState !== "none" && e === "\u007F") { 331 - if (cursorPos > 0) { 332 - currentLine = 333 - currentLine.slice(0, cursorPos - 1) + currentLine.slice(cursorPos); 334 - cursorPos--; 335 - 336 - if (searchState === "history") updateHistoryCandidates(); 337 - if (searchState === "completion") await updateCompletionCandidates(); 338 - 339 - await refreshPrompt(); 340 - } 341 - return; 342 - } 343 - 344 - // EXIT SEARCH MODE (on non-nav keys) 345 - const isTab = e === "\t" || e === "\x1b[Z"; 346 - const isArrow = e === "\x1b[A" || e === "\x1b[B"; 347 - 348 - if ( 349 - !isTab && 350 - !isArrow && 351 - (completionCandidates.length > 0 || searchState !== "none") 352 - ) { 353 - if (e !== "\r") { 354 - completionCandidates = []; 355 - completionIndex = -1; 356 - searchState = "none"; 357 - await refreshPrompt(); 358 - } 359 - } 360 - 361 - switch (e) { 362 - case "\r": { 363 - // ENTER 364 - 365 - // 1. Accept Completion/Search Selection 366 - if (completionCandidates.length > 0) { 367 - const cand = completionCandidates[completionIndex]; 368 - if (cand) { 369 - currentLine = getLineWithCompletion(completionBaseLine, cand); 370 - cursorPos = currentLine.length; 371 - } 372 - } 373 - 374 - const wasInMode = 375 - searchState != "none" || completionCandidates.length > 0; 376 - 377 - completionCandidates = []; 378 - searchState = "none"; 379 - 380 - if (wasInMode) { 381 - await refreshPrompt(); 382 - break; 383 - } 384 - 385 - // 2. Execute Command 386 - await refreshPrompt(); // Ensure clean line 387 - term.write("\r\n"); 388 - const trimmed = currentLine.trim(); 389 - 390 - if (trimmed.length > 0) { 391 - currentLine = ""; 392 - isRunningCommand = true; 393 - try { 394 - // Check readiness before executing 395 - if (!isWorkerReady) { 396 - term.write( 397 - "\x1b[33mengine is still loading, please wait (_ _ )zZ...\x1b[0m\r\n", 398 - ); 399 - } else { 400 - // ASYNC execution 401 - const output: string | undefined = await callWorker( 402 - "run", 403 - trimmed, 404 - ); 405 - if (output) { 406 - term.write(output.replace(/\n/g, "\r\n")); 407 - if (output && !output.endsWith("\n")) { 408 - term.write("\r\n"); 409 - } 410 - } 411 - 412 - // Update cached PWD after command execution (cd, etc) 413 - cachedPwd = await callWorker("get_pwd"); 414 - 415 - // Update History 416 - const idx = history.indexOf(trimmed); 417 - if (idx >= 0) history.splice(idx, 1); 418 - history.push(trimmed); 419 - historyIndex = history.length; 420 - } 421 - } catch (err) { 422 - term.write(`\x1b[31mfatal: ${err}\x1b[0m\r\n`); 423 - } finally { 424 - isRunningCommand = false; 425 - } 426 - } 427 - 428 - term.write(getPrompt()); 429 - cursorPos = 0; 430 - break; 431 - } 432 - 433 - case "\u007F": // Backspace 434 - if (cursorPos > 0) { 435 - currentLine = 436 - currentLine.slice(0, cursorPos - 1) + currentLine.slice(cursorPos); 437 - cursorPos--; 438 - await refreshPrompt(); 439 - } 440 - break; 441 - 442 - case "\x1b[3~": // Delete 443 - if (cursorPos < currentLine.length) { 444 - currentLine = 445 - currentLine.slice(0, cursorPos) + currentLine.slice(cursorPos + 1); 446 - await refreshPrompt(); 447 - } 448 - break; 449 - 450 - case "\u0003": // Ctrl+C 451 - currentLine = ""; 452 - cursorPos = 0; 453 - completionCandidates = []; 454 - searchState = "none"; 455 - term.write("^C\r\n" + getPrompt()); 456 - break; 457 - 458 - case "\u000C": // Ctrl+L 459 - term.clear(); 460 - break; 461 - 462 - case "\u0012": // Ctrl+R 463 - searchState = "history"; 464 - updateHistoryCandidates(); 465 - await refreshPrompt(); 466 - break; 467 - 468 - // NAVIGATION 469 - 470 - case "\x1b[D": // Left Arrow 471 - if (cursorPos > 0) { 472 - cursorPos--; 473 - term.write(e); // Local echo is fine for navigation 474 - } 475 - break; 476 - 477 - case "\x1b[C": // Right Arrow 478 - if (cursorPos < currentLine.length) { 479 - cursorPos++; 480 - term.write(e); 481 - } 482 - break; 483 - 484 - case "\x1b[1;5D": // Ctrl+Left 485 - case "\x1b\x1b[D": // Alt+Left 486 - { 487 - let p = cursorPos; 488 - while (p > 0 && currentLine[p - 1] === " ") p--; 489 - while (p > 0 && currentLine[p - 1] !== " ") p--; 490 - cursorPos = p; 491 - await refreshPrompt(); 492 - } 493 - break; 494 - 495 - case "\x1b[1;5C": // Ctrl+Right 496 - case "\x1b\x1b[C": // Alt+Right 497 - { 498 - let p = cursorPos; 499 - while (p < currentLine.length && currentLine[p] !== " ") p++; 500 - while (p < currentLine.length && currentLine[p] === " ") p++; 501 - cursorPos = p; 502 - await refreshPrompt(); 503 - } 504 - break; 505 - 506 - case "\x1b[A": // Up Arrow 507 - case "\x1b[1;5A": // Ctrl+Up 508 - // Cycle Completion 509 - if (completionCandidates.length > 0 && e === "\x1b[A") { 510 - completionIndex = 511 - (completionIndex - 1 + completionCandidates.length) % 512 - completionCandidates.length; 513 - const candidate = completionCandidates[completionIndex]; 514 - currentLine = getLineWithCompletion(completionBaseLine, candidate); 515 - cursorPos = currentLine.length; 516 - await refreshPrompt(); 517 - break; 518 - } 519 - 520 - // History 521 - if (e === "\x1b[A" || currentLine.length === 0) { 522 - if (historyIndex > 0) { 523 - historyIndex--; 524 - currentLine = history[historyIndex]; 525 - cursorPos = currentLine.length; 526 - await refreshPrompt(); 527 - } 528 - } else { 529 - cursorPos = 0; 530 - await refreshPrompt(); 531 - } 532 - break; 533 - 534 - case "\x1b[H": // Home 535 - cursorPos = 0; 536 - await refreshPrompt(); 537 - break; 538 - 539 - case "\x1b[B": // Down Arrow 540 - case "\x1b[1;5B": // Ctrl+Down 541 - // Cycle Completion 542 - if (completionCandidates.length > 0 && e === "\x1b[B") { 543 - completionIndex = (completionIndex + 1) % completionCandidates.length; 544 - const candidate = completionCandidates[completionIndex]; 545 - currentLine = getLineWithCompletion(completionBaseLine, candidate); 546 - cursorPos = currentLine.length; 547 - await refreshPrompt(); 548 - break; 549 - } 550 - 551 - // History 552 - if (e === "\x1b[B" || currentLine.length === 0) { 553 - if (historyIndex < history.length) { 554 - historyIndex++; 555 - if (historyIndex === history.length) { 556 - currentLine = ""; 557 - } else { 558 - currentLine = history[historyIndex]; 559 - } 560 - cursorPos = currentLine.length; 561 - await refreshPrompt(); 562 - } 563 - } else { 564 - cursorPos = currentLine.length; 565 - await refreshPrompt(); 566 - } 567 - break; 568 - 569 - case "\x1b[F": // End 570 - cursorPos = currentLine.length; 571 - await refreshPrompt(); 572 - break; 573 - 574 - case "\t": // Tab 575 - try { 576 - if (completionCandidates.length > 0) { 577 - completionIndex = 578 - (completionIndex + 1) % completionCandidates.length; 579 - 580 - const candidate = completionCandidates[completionIndex]; 581 - currentLine = getLineWithCompletion(completionBaseLine, candidate); 582 - await refreshPrompt(); 583 - } else { 584 - // Guard: ensure worker is ready 585 - if (!isWorkerReady) return; 586 - 587 - const json = await callWorker("completion", { 588 - line: currentLine, 589 - cursor: cursorPos, 590 - }); 591 - const candidates: Candidate[] = JSON.parse(json); 592 - 593 - if (candidates.length === 1) { 594 - const candidate = candidates[0]; 595 - applyCompletion(candidate); 596 - await refreshPrompt(); 597 - } else if (candidates.length > 1) { 598 - completionCandidates = candidates; 599 - completionIndex = 0; 600 - searchState = "completion"; 601 - completionBaseLine = currentLine; 602 - await refreshPrompt(); 603 - } 604 - } 605 - } catch (err) { 606 - // ignore 607 - } 608 - break; 609 - 610 - case "\x1b[Z": // Shift+Tab 611 - if (completionCandidates.length > 0) { 612 - completionIndex = 613 - (completionIndex - 1 + completionCandidates.length) % 614 - completionCandidates.length; 615 - const candidate = completionCandidates[completionIndex]; 616 - currentLine = getLineWithCompletion(completionBaseLine, candidate); 617 - cursorPos = currentLine.length; 618 - await refreshPrompt(); 619 - } 620 - break; 621 - 622 - default: 623 - // Typing 624 - if (e >= " " && e <= "~") { 625 - if (cursorPos === currentLine.length) { 626 - currentLine += e; 627 - cursorPos++; 628 - } else { 629 - currentLine = 630 - currentLine.slice(0, cursorPos) + 631 - e + 632 - currentLine.slice(cursorPos); 633 - cursorPos++; 634 - } 635 - await refreshPrompt(); 636 - } 637 - } 638 - }); 639 - 640 - window.addEventListener("resize", () => fitAddon.fit()); 641 - 642 - await readyPromise; 643 - 644 - await callWorker("run", "open welcome.txt"); 645 - 646 - term.write(getPrompt()); 647 - 648 - callWorker("get_pwd") 649 - .then((pwd) => { 650 - cachedPwd = pwd; 651 - // Re-render prompt to show "ready" state (yellow path) and enable highlighting 652 - refreshPrompt(); 653 - }) 654 - .catch((e) => { 655 - term.write(`\r\n\x1b[31mfatal: failed to load engine: ${e}\x1b[0m\r\n`); 656 - }); 657 - } 658 - 659 - bootstrap().catch(console.error);
-13
dysnomia/www/src/style.css
··· 1 - body { 2 - margin: 0; 3 - padding: 0; 4 - background-color: #000000; 5 - height: 100vh; 6 - width: 100vw; 7 - overflow: hidden; 8 - } 9 - 10 - #terminal { 11 - height: 100vh; 12 - width: 100vw; 13 - }
-54
dysnomia/www/src/worker.ts
··· 1 - import init, { 2 - init_engine, 3 - run_command, 4 - completion, 5 - highlight, 6 - get_pwd_string, 7 - register_console_callback, 8 - register_task_count_callback, 9 - } from "../../pkg"; 10 - 11 - // Initialize WASM 12 - await init(); 13 - init_engine(); 14 - 15 - // Setup Callbacks to proxy messages back to Main Thread 16 - register_console_callback((msg: string, isCmd: boolean) => { 17 - self.postMessage({ type: "console", payload: { msg, isCmd } }); 18 - }); 19 - 20 - register_task_count_callback((count: number) => { 21 - self.postMessage({ type: "task_count", payload: count }); 22 - }); 23 - 24 - // Handle messages from Main Thread 25 - self.onmessage = (e) => { 26 - const { id, type, payload } = e.data; 27 - 28 - // console.log("Received message:", id, type, payload); 29 - 30 - try { 31 - let result; 32 - switch (type) { 33 - case "run": 34 - result = run_command(payload); 35 - break; 36 - case "completion": 37 - result = completion(payload.line, payload.cursor); 38 - break; 39 - case "highlight": 40 - result = highlight(payload); 41 - break; 42 - case "get_pwd": 43 - result = get_pwd_string(); 44 - break; 45 - default: 46 - throw new Error(`Unknown message type: ${type}`); 47 - } 48 - self.postMessage({ id, type: `${type}_result`, payload: result }); 49 - } catch (err) { 50 - self.postMessage({ id, type: "error", payload: String(err) }); 51 - } 52 - }; 53 - 54 - self.postMessage({ type: "initialized", payload: true });
-26
dysnomia/www/tsconfig.json
··· 1 - { 2 - "compilerOptions": { 3 - "target": "ES2022", 4 - "useDefineForClassFields": true, 5 - "module": "ESNext", 6 - "lib": ["ES2022", "DOM", "DOM.Iterable"], 7 - "types": ["vite/client"], 8 - "skipLibCheck": true, 9 - 10 - /* Bundler mode */ 11 - "moduleResolution": "bundler", 12 - "allowImportingTsExtensions": true, 13 - "verbatimModuleSyntax": true, 14 - "moduleDetection": "force", 15 - "noEmit": true, 16 - 17 - /* Linting */ 18 - "strict": true, 19 - "noUnusedLocals": true, 20 - "noUnusedParameters": true, 21 - "erasableSyntaxOnly": true, 22 - "noFallthroughCasesInSwitch": true, 23 - "noUncheckedSideEffectImports": true 24 - }, 25 - "include": ["src"] 26 - }
-16
dysnomia/www/vite.config.ts
··· 1 - import { defineConfig } from "vite"; 2 - import wasm from "vite-plugin-wasm"; 3 - import topLevelAwait from "vite-plugin-top-level-await"; 4 - 5 - export default defineConfig({ 6 - plugins: [wasm(), topLevelAwait()], 7 - worker: { 8 - format: "es", 9 - plugins: () => [wasm(), topLevelAwait()], 10 - }, 11 - server: { 12 - fs: { 13 - allow: [".."], 14 - }, 15 - }, 16 - });