big rename

+1809 -377
+1
.gitignore
··· 1 1 /target 2 2 result* 3 + /node_modules 3 4 4 5 .direnv 5 6 .env
+12 -1
.zed/settings.json
··· 2 2 // 3 3 // For a full list of overridable settings, and general information on folder-specific settings, 4 4 // see the documentation: https://zed.dev/docs/configuring-zed#settings-files 5 - {} 5 + { 6 + "lsp": { 7 + "nil": { 8 + // or "nixd": 9 + "initialization_options": { 10 + "formatting": { 11 + "command": ["alejandra", "--quiet", "--"] // or ["nixfmt"] 12 + } 13 + } 14 + } 15 + } 16 + }
+1235 -67
Cargo.lock
··· 18 18 checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 19 19 20 20 [[package]] 21 + name = "aho-corasick" 22 + version = "1.1.3" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 25 + dependencies = [ 26 + "memchr", 27 + ] 28 + 29 + [[package]] 30 + name = "anstream" 31 + version = "0.6.18" 32 + source = "registry+https://github.com/rust-lang/crates.io-index" 33 + checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" 34 + dependencies = [ 35 + "anstyle", 36 + "anstyle-parse", 37 + "anstyle-query", 38 + "anstyle-wincon", 39 + "colorchoice", 40 + "is_terminal_polyfill", 41 + "utf8parse", 42 + ] 43 + 44 + [[package]] 45 + name = "anstyle" 46 + version = "1.0.10" 47 + source = "registry+https://github.com/rust-lang/crates.io-index" 48 + checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" 49 + 50 + [[package]] 51 + name = "anstyle-parse" 52 + version = "0.2.6" 53 + source = "registry+https://github.com/rust-lang/crates.io-index" 54 + checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" 55 + dependencies = [ 56 + "utf8parse", 57 + ] 58 + 59 + [[package]] 60 + name = "anstyle-query" 61 + version = "1.1.2" 62 + source = "registry+https://github.com/rust-lang/crates.io-index" 63 + checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" 64 + dependencies = [ 65 + "windows-sys 0.59.0", 66 + ] 67 + 68 + [[package]] 69 + name = "anstyle-wincon" 70 + version = "3.0.7" 71 + source = "registry+https://github.com/rust-lang/crates.io-index" 72 + checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" 73 + dependencies = [ 74 + "anstyle", 75 + "once_cell", 76 + "windows-sys 0.59.0", 77 + ] 78 + 79 + [[package]] 21 80 name = "async-trait" 22 - version = "0.1.83" 81 + version = "0.1.88" 23 82 source = "registry+https://github.com/rust-lang/crates.io-index" 24 - checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" 83 + checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" 25 84 dependencies = [ 26 85 "proc-macro2", 27 86 "quote", ··· 34 93 dependencies = [ 35 94 "atpblog-common", 36 95 "atpblog-workspace-hack", 37 - "tokio", 96 + "clap", 97 + "n0-future", 38 98 ] 39 99 40 100 [[package]] ··· 42 102 version = "0.1.0" 43 103 dependencies = [ 44 104 "atpblog-workspace-hack", 105 + "n0-future", 45 106 "tokio", 46 107 ] 47 108 48 109 [[package]] 49 110 name = "atpblog-renderer" 50 111 version = "0.1.0" 112 + dependencies = [ 113 + "atpblog-common", 114 + "atpblog-workspace-hack", 115 + "n0-future", 116 + ] 51 117 52 118 [[package]] 53 119 name = "atpblog-server" ··· 56 122 "atpblog-common", 57 123 "atpblog-workspace-hack", 58 124 "axum", 125 + "clap", 59 126 "tokio", 60 127 ] 61 128 ··· 63 130 name = "atpblog-workspace-hack" 64 131 version = "0.1.0" 65 132 dependencies = [ 133 + "markdown", 134 + "memchr", 66 135 "proc-macro2", 67 136 "quote", 137 + "serde", 138 + "serde_json", 68 139 "smallvec", 69 140 "syn", 70 - "tokio", 71 141 ] 72 142 73 143 [[package]] ··· 147 217 ] 148 218 149 219 [[package]] 220 + name = "backtrace-ext" 221 + version = "0.2.1" 222 + source = "registry+https://github.com/rust-lang/crates.io-index" 223 + checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50" 224 + dependencies = [ 225 + "backtrace", 226 + ] 227 + 228 + [[package]] 229 + name = "base64" 230 + version = "0.22.1" 231 + source = "registry+https://github.com/rust-lang/crates.io-index" 232 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 233 + 234 + [[package]] 235 + name = "bincode" 236 + version = "1.3.3" 237 + source = "registry+https://github.com/rust-lang/crates.io-index" 238 + checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 239 + dependencies = [ 240 + "serde", 241 + ] 242 + 243 + [[package]] 150 244 name = "bitflags" 151 - version = "2.6.0" 245 + version = "1.3.2" 152 246 source = "registry+https://github.com/rust-lang/crates.io-index" 153 - checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 247 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 248 + 249 + [[package]] 250 + name = "bitflags" 251 + version = "2.9.0" 252 + source = "registry+https://github.com/rust-lang/crates.io-index" 253 + checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 254 + 255 + [[package]] 256 + name = "bumpalo" 257 + version = "3.17.0" 258 + source = "registry+https://github.com/rust-lang/crates.io-index" 259 + checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 154 260 155 261 [[package]] 156 262 name = "bytes" 157 - version = "1.9.0" 263 + version = "1.10.1" 264 + source = "registry+https://github.com/rust-lang/crates.io-index" 265 + checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 266 + 267 + [[package]] 268 + name = "cc" 269 + version = "1.2.19" 158 270 source = "registry+https://github.com/rust-lang/crates.io-index" 159 - checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" 271 + checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" 272 + dependencies = [ 273 + "shlex", 274 + ] 160 275 161 276 [[package]] 162 277 name = "cfg-if" ··· 165 280 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 166 281 167 282 [[package]] 283 + name = "cfg_aliases" 284 + version = "0.2.1" 285 + source = "registry+https://github.com/rust-lang/crates.io-index" 286 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 287 + 288 + [[package]] 289 + name = "clap" 290 + version = "4.5.37" 291 + source = "registry+https://github.com/rust-lang/crates.io-index" 292 + checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" 293 + dependencies = [ 294 + "clap_builder", 295 + "clap_derive", 296 + ] 297 + 298 + [[package]] 299 + name = "clap_builder" 300 + version = "4.5.37" 301 + source = "registry+https://github.com/rust-lang/crates.io-index" 302 + checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" 303 + dependencies = [ 304 + "anstream", 305 + "anstyle", 306 + "clap_lex", 307 + "strsim", 308 + "unicase", 309 + "unicode-width 0.2.0", 310 + ] 311 + 312 + [[package]] 313 + name = "clap_derive" 314 + version = "4.5.32" 315 + source = "registry+https://github.com/rust-lang/crates.io-index" 316 + checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" 317 + dependencies = [ 318 + "heck", 319 + "proc-macro2", 320 + "quote", 321 + "syn", 322 + ] 323 + 324 + [[package]] 325 + name = "clap_lex" 326 + version = "0.7.4" 327 + source = "registry+https://github.com/rust-lang/crates.io-index" 328 + checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" 329 + 330 + [[package]] 331 + name = "colorchoice" 332 + version = "1.0.3" 333 + source = "registry+https://github.com/rust-lang/crates.io-index" 334 + checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" 335 + 336 + [[package]] 337 + name = "cordyceps" 338 + version = "0.3.3" 339 + source = "registry+https://github.com/rust-lang/crates.io-index" 340 + checksum = "a0392f465ceba1713d30708f61c160ebf4dc1cf86bb166039d16b11ad4f3b5b6" 341 + dependencies = [ 342 + "loom", 343 + "tracing", 344 + ] 345 + 346 + [[package]] 347 + name = "crc32fast" 348 + version = "1.4.2" 349 + source = "registry+https://github.com/rust-lang/crates.io-index" 350 + checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 351 + dependencies = [ 352 + "cfg-if", 353 + ] 354 + 355 + [[package]] 356 + name = "deranged" 357 + version = "0.4.0" 358 + source = "registry+https://github.com/rust-lang/crates.io-index" 359 + checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" 360 + dependencies = [ 361 + "powerfmt", 362 + ] 363 + 364 + [[package]] 365 + name = "derive_more" 366 + version = "1.0.0" 367 + source = "registry+https://github.com/rust-lang/crates.io-index" 368 + checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 369 + dependencies = [ 370 + "derive_more-impl", 371 + ] 372 + 373 + [[package]] 374 + name = "derive_more-impl" 375 + version = "1.0.0" 376 + source = "registry+https://github.com/rust-lang/crates.io-index" 377 + checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 378 + dependencies = [ 379 + "proc-macro2", 380 + "quote", 381 + "syn", 382 + "unicode-xid", 383 + ] 384 + 385 + [[package]] 386 + name = "diatomic-waker" 387 + version = "0.2.3" 388 + source = "registry+https://github.com/rust-lang/crates.io-index" 389 + checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" 390 + 391 + [[package]] 392 + name = "equivalent" 393 + version = "1.0.2" 394 + source = "registry+https://github.com/rust-lang/crates.io-index" 395 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 396 + 397 + [[package]] 398 + name = "errno" 399 + version = "0.3.11" 400 + source = "registry+https://github.com/rust-lang/crates.io-index" 401 + checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" 402 + dependencies = [ 403 + "libc", 404 + "windows-sys 0.59.0", 405 + ] 406 + 407 + [[package]] 408 + name = "fastrand" 409 + version = "2.3.0" 410 + source = "registry+https://github.com/rust-lang/crates.io-index" 411 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 412 + 413 + [[package]] 414 + name = "flate2" 415 + version = "1.1.1" 416 + source = "registry+https://github.com/rust-lang/crates.io-index" 417 + checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" 418 + dependencies = [ 419 + "crc32fast", 420 + "miniz_oxide", 421 + ] 422 + 423 + [[package]] 168 424 name = "fnv" 169 425 version = "1.0.7" 170 426 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 180 436 ] 181 437 182 438 [[package]] 439 + name = "futures-buffered" 440 + version = "0.2.11" 441 + source = "registry+https://github.com/rust-lang/crates.io-index" 442 + checksum = "fe940397c8b744b9c2c974791c2c08bca2c3242ce0290393249e98f215a00472" 443 + dependencies = [ 444 + "cordyceps", 445 + "diatomic-waker", 446 + "futures-core", 447 + "pin-project-lite", 448 + "spin", 449 + ] 450 + 451 + [[package]] 183 452 name = "futures-channel" 184 453 version = "0.3.31" 185 454 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 195 464 checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 196 465 197 466 [[package]] 467 + name = "futures-io" 468 + version = "0.3.31" 469 + source = "registry+https://github.com/rust-lang/crates.io-index" 470 + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 471 + 472 + [[package]] 473 + name = "futures-lite" 474 + version = "2.6.0" 475 + source = "registry+https://github.com/rust-lang/crates.io-index" 476 + checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" 477 + dependencies = [ 478 + "fastrand", 479 + "futures-core", 480 + "futures-io", 481 + "parking", 482 + "pin-project-lite", 483 + ] 484 + 485 + [[package]] 486 + name = "futures-macro" 487 + version = "0.3.31" 488 + source = "registry+https://github.com/rust-lang/crates.io-index" 489 + checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 490 + dependencies = [ 491 + "proc-macro2", 492 + "quote", 493 + "syn", 494 + ] 495 + 496 + [[package]] 497 + name = "futures-sink" 498 + version = "0.3.31" 499 + source = "registry+https://github.com/rust-lang/crates.io-index" 500 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 501 + 502 + [[package]] 198 503 name = "futures-task" 199 504 version = "0.3.31" 200 505 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 207 512 checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 208 513 dependencies = [ 209 514 "futures-core", 515 + "futures-macro", 516 + "futures-sink", 210 517 "futures-task", 211 518 "pin-project-lite", 212 519 "pin-utils", 520 + "slab", 521 + ] 522 + 523 + [[package]] 524 + name = "generator" 525 + version = "0.8.4" 526 + source = "registry+https://github.com/rust-lang/crates.io-index" 527 + checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" 528 + dependencies = [ 529 + "cfg-if", 530 + "libc", 531 + "log", 532 + "rustversion", 533 + "windows", 213 534 ] 214 535 215 536 [[package]] ··· 219 540 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 220 541 221 542 [[package]] 543 + name = "hashbrown" 544 + version = "0.15.2" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 547 + 548 + [[package]] 549 + name = "heck" 550 + version = "0.5.0" 551 + source = "registry+https://github.com/rust-lang/crates.io-index" 552 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 553 + 554 + [[package]] 222 555 name = "http" 223 - version = "1.2.0" 556 + version = "1.3.1" 224 557 source = "registry+https://github.com/rust-lang/crates.io-index" 225 - checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" 558 + checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 226 559 dependencies = [ 227 560 "bytes", 228 561 "fnv", ··· 241 574 242 575 [[package]] 243 576 name = "http-body-util" 244 - version = "0.1.2" 577 + version = "0.1.3" 245 578 source = "registry+https://github.com/rust-lang/crates.io-index" 246 - checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" 579 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 247 580 dependencies = [ 248 581 "bytes", 249 - "futures-util", 582 + "futures-core", 250 583 "http", 251 584 "http-body", 252 585 "pin-project-lite", ··· 254 587 255 588 [[package]] 256 589 name = "httparse" 257 - version = "1.9.5" 590 + version = "1.10.1" 258 591 source = "registry+https://github.com/rust-lang/crates.io-index" 259 - checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" 592 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 260 593 261 594 [[package]] 262 595 name = "httpdate" ··· 266 599 267 600 [[package]] 268 601 name = "hyper" 269 - version = "1.5.1" 602 + version = "1.6.0" 270 603 source = "registry+https://github.com/rust-lang/crates.io-index" 271 - checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" 604 + checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" 272 605 dependencies = [ 273 606 "bytes", 274 607 "futures-channel", ··· 285 618 286 619 [[package]] 287 620 name = "hyper-util" 288 - version = "0.1.10" 621 + version = "0.1.11" 289 622 source = "registry+https://github.com/rust-lang/crates.io-index" 290 - checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" 623 + checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" 291 624 dependencies = [ 292 625 "bytes", 293 626 "futures-util", ··· 300 633 ] 301 634 302 635 [[package]] 636 + name = "indexmap" 637 + version = "2.9.0" 638 + source = "registry+https://github.com/rust-lang/crates.io-index" 639 + checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" 640 + dependencies = [ 641 + "equivalent", 642 + "hashbrown", 643 + ] 644 + 645 + [[package]] 646 + name = "is_ci" 647 + version = "1.2.0" 648 + source = "registry+https://github.com/rust-lang/crates.io-index" 649 + checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" 650 + 651 + [[package]] 652 + name = "is_terminal_polyfill" 653 + version = "1.70.1" 654 + source = "registry+https://github.com/rust-lang/crates.io-index" 655 + checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" 656 + 657 + [[package]] 303 658 name = "itoa" 304 - version = "1.0.14" 659 + version = "1.0.15" 660 + source = "registry+https://github.com/rust-lang/crates.io-index" 661 + checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 662 + 663 + [[package]] 664 + name = "js-sys" 665 + version = "0.3.77" 666 + source = "registry+https://github.com/rust-lang/crates.io-index" 667 + checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 668 + dependencies = [ 669 + "once_cell", 670 + "wasm-bindgen", 671 + ] 672 + 673 + [[package]] 674 + name = "lazy_static" 675 + version = "1.5.0" 305 676 source = "registry+https://github.com/rust-lang/crates.io-index" 306 - checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" 677 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 307 678 308 679 [[package]] 309 680 name = "libc" 310 - version = "0.2.168" 681 + version = "0.2.172" 682 + source = "registry+https://github.com/rust-lang/crates.io-index" 683 + checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" 684 + 685 + [[package]] 686 + name = "linked-hash-map" 687 + version = "0.5.6" 311 688 source = "registry+https://github.com/rust-lang/crates.io-index" 312 - checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" 689 + checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 690 + 691 + [[package]] 692 + name = "linux-raw-sys" 693 + version = "0.9.4" 694 + source = "registry+https://github.com/rust-lang/crates.io-index" 695 + checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 313 696 314 697 [[package]] 315 698 name = "lock_api" ··· 323 706 324 707 [[package]] 325 708 name = "log" 326 - version = "0.4.22" 709 + version = "0.4.27" 710 + source = "registry+https://github.com/rust-lang/crates.io-index" 711 + checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 712 + 713 + [[package]] 714 + name = "loom" 715 + version = "0.7.2" 716 + source = "registry+https://github.com/rust-lang/crates.io-index" 717 + checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 718 + dependencies = [ 719 + "cfg-if", 720 + "generator", 721 + "scoped-tls", 722 + "tracing", 723 + "tracing-subscriber", 724 + ] 725 + 726 + [[package]] 727 + name = "markdown" 728 + version = "1.0.0" 327 729 source = "registry+https://github.com/rust-lang/crates.io-index" 328 - checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 730 + checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb" 731 + dependencies = [ 732 + "log", 733 + "serde", 734 + "unicode-id", 735 + ] 736 + 737 + [[package]] 738 + name = "matchers" 739 + version = "0.1.0" 740 + source = "registry+https://github.com/rust-lang/crates.io-index" 741 + checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 742 + dependencies = [ 743 + "regex-automata 0.1.10", 744 + ] 329 745 330 746 [[package]] 331 747 name = "matchit" ··· 340 756 checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 341 757 342 758 [[package]] 759 + name = "miette" 760 + version = "7.5.0" 761 + source = "registry+https://github.com/rust-lang/crates.io-index" 762 + checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" 763 + dependencies = [ 764 + "backtrace", 765 + "backtrace-ext", 766 + "cfg-if", 767 + "miette-derive", 768 + "owo-colors", 769 + "supports-color", 770 + "supports-hyperlinks", 771 + "supports-unicode", 772 + "syntect", 773 + "terminal_size", 774 + "textwrap", 775 + "thiserror 1.0.69", 776 + "unicode-width 0.1.14", 777 + ] 778 + 779 + [[package]] 780 + name = "miette-derive" 781 + version = "7.5.0" 782 + source = "registry+https://github.com/rust-lang/crates.io-index" 783 + checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" 784 + dependencies = [ 785 + "proc-macro2", 786 + "quote", 787 + "syn", 788 + ] 789 + 790 + [[package]] 343 791 name = "mime" 344 792 version = "0.3.17" 345 793 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 347 795 348 796 [[package]] 349 797 name = "miniz_oxide" 350 - version = "0.8.0" 798 + version = "0.8.8" 351 799 source = "registry+https://github.com/rust-lang/crates.io-index" 352 - checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" 800 + checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" 353 801 dependencies = [ 354 802 "adler2", 355 803 ] ··· 362 810 dependencies = [ 363 811 "libc", 364 812 "wasi", 365 - "windows-sys", 813 + "windows-sys 0.52.0", 814 + ] 815 + 816 + [[package]] 817 + name = "n0-future" 818 + version = "0.1.2" 819 + source = "registry+https://github.com/rust-lang/crates.io-index" 820 + checksum = "399e11dc3b0e8d9d65b27170d22f5d779d52d9bed888db70d7e0c2c7ce3dfc52" 821 + dependencies = [ 822 + "cfg_aliases", 823 + "derive_more", 824 + "futures-buffered", 825 + "futures-lite", 826 + "futures-util", 827 + "js-sys", 828 + "pin-project", 829 + "send_wrapper", 830 + "tokio", 831 + "tokio-util", 832 + "wasm-bindgen", 833 + "wasm-bindgen-futures", 834 + "web-time", 835 + ] 836 + 837 + [[package]] 838 + name = "nu-ansi-term" 839 + version = "0.46.0" 840 + source = "registry+https://github.com/rust-lang/crates.io-index" 841 + checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 842 + dependencies = [ 843 + "overload", 844 + "winapi", 366 845 ] 367 846 368 847 [[package]] 848 + name = "num-conv" 849 + version = "0.1.0" 850 + source = "registry+https://github.com/rust-lang/crates.io-index" 851 + checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 852 + 853 + [[package]] 369 854 name = "object" 370 - version = "0.36.5" 855 + version = "0.36.7" 371 856 source = "registry+https://github.com/rust-lang/crates.io-index" 372 - checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" 857 + checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 373 858 dependencies = [ 374 859 "memchr", 375 860 ] 376 861 377 862 [[package]] 378 863 name = "once_cell" 379 - version = "1.20.2" 864 + version = "1.21.3" 380 865 source = "registry+https://github.com/rust-lang/crates.io-index" 381 - checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" 866 + checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 867 + 868 + [[package]] 869 + name = "onig" 870 + version = "6.4.0" 871 + source = "registry+https://github.com/rust-lang/crates.io-index" 872 + checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" 873 + dependencies = [ 874 + "bitflags 1.3.2", 875 + "libc", 876 + "once_cell", 877 + "onig_sys", 878 + ] 879 + 880 + [[package]] 881 + name = "onig_sys" 882 + version = "69.8.1" 883 + source = "registry+https://github.com/rust-lang/crates.io-index" 884 + checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" 885 + dependencies = [ 886 + "cc", 887 + "pkg-config", 888 + ] 889 + 890 + [[package]] 891 + name = "orual-markdown" 892 + version = "0.1.0" 893 + dependencies = [ 894 + "atpblog-workspace-hack", 895 + "markdown", 896 + "miette", 897 + "owo-colors", 898 + "syntect", 899 + "thiserror 2.0.12", 900 + ] 901 + 902 + [[package]] 903 + name = "overload" 904 + version = "0.1.1" 905 + source = "registry+https://github.com/rust-lang/crates.io-index" 906 + checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 907 + 908 + [[package]] 909 + name = "owo-colors" 910 + version = "4.2.0" 911 + source = "registry+https://github.com/rust-lang/crates.io-index" 912 + checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" 913 + 914 + [[package]] 915 + name = "parking" 916 + version = "2.2.1" 917 + source = "registry+https://github.com/rust-lang/crates.io-index" 918 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 382 919 383 920 [[package]] 384 921 name = "parking_lot" ··· 410 947 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 411 948 412 949 [[package]] 950 + name = "pin-project" 951 + version = "1.1.10" 952 + source = "registry+https://github.com/rust-lang/crates.io-index" 953 + checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 954 + dependencies = [ 955 + "pin-project-internal", 956 + ] 957 + 958 + [[package]] 959 + name = "pin-project-internal" 960 + version = "1.1.10" 961 + source = "registry+https://github.com/rust-lang/crates.io-index" 962 + checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 963 + dependencies = [ 964 + "proc-macro2", 965 + "quote", 966 + "syn", 967 + ] 968 + 969 + [[package]] 413 970 name = "pin-project-lite" 414 - version = "0.2.15" 971 + version = "0.2.16" 415 972 source = "registry+https://github.com/rust-lang/crates.io-index" 416 - checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" 973 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 417 974 418 975 [[package]] 419 976 name = "pin-utils" ··· 422 979 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 423 980 424 981 [[package]] 982 + name = "pkg-config" 983 + version = "0.3.32" 984 + source = "registry+https://github.com/rust-lang/crates.io-index" 985 + checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 986 + 987 + [[package]] 988 + name = "plist" 989 + version = "1.7.1" 990 + source = "registry+https://github.com/rust-lang/crates.io-index" 991 + checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" 992 + dependencies = [ 993 + "base64", 994 + "indexmap", 995 + "quick-xml", 996 + "serde", 997 + "time", 998 + ] 999 + 1000 + [[package]] 1001 + name = "powerfmt" 1002 + version = "0.2.0" 1003 + source = "registry+https://github.com/rust-lang/crates.io-index" 1004 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 1005 + 1006 + [[package]] 425 1007 name = "proc-macro2" 426 - version = "1.0.92" 1008 + version = "1.0.95" 427 1009 source = "registry+https://github.com/rust-lang/crates.io-index" 428 - checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" 1010 + checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" 429 1011 dependencies = [ 430 1012 "unicode-ident", 431 1013 ] 432 1014 433 1015 [[package]] 1016 + name = "quick-xml" 1017 + version = "0.32.0" 1018 + source = "registry+https://github.com/rust-lang/crates.io-index" 1019 + checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" 1020 + dependencies = [ 1021 + "memchr", 1022 + ] 1023 + 1024 + [[package]] 434 1025 name = "quote" 435 - version = "1.0.37" 1026 + version = "1.0.40" 436 1027 source = "registry+https://github.com/rust-lang/crates.io-index" 437 - checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" 1028 + checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 438 1029 dependencies = [ 439 1030 "proc-macro2", 440 1031 ] 441 1032 442 1033 [[package]] 443 1034 name = "redox_syscall" 444 - version = "0.5.8" 1035 + version = "0.5.11" 1036 + source = "registry+https://github.com/rust-lang/crates.io-index" 1037 + checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" 1038 + dependencies = [ 1039 + "bitflags 2.9.0", 1040 + ] 1041 + 1042 + [[package]] 1043 + name = "regex" 1044 + version = "1.11.1" 445 1045 source = "registry+https://github.com/rust-lang/crates.io-index" 446 - checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" 1046 + checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 447 1047 dependencies = [ 448 - "bitflags", 1048 + "aho-corasick", 1049 + "memchr", 1050 + "regex-automata 0.4.9", 1051 + "regex-syntax 0.8.5", 449 1052 ] 450 1053 451 1054 [[package]] 1055 + name = "regex-automata" 1056 + version = "0.1.10" 1057 + source = "registry+https://github.com/rust-lang/crates.io-index" 1058 + checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 1059 + dependencies = [ 1060 + "regex-syntax 0.6.29", 1061 + ] 1062 + 1063 + [[package]] 1064 + name = "regex-automata" 1065 + version = "0.4.9" 1066 + source = "registry+https://github.com/rust-lang/crates.io-index" 1067 + checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 1068 + dependencies = [ 1069 + "aho-corasick", 1070 + "memchr", 1071 + "regex-syntax 0.8.5", 1072 + ] 1073 + 1074 + [[package]] 1075 + name = "regex-syntax" 1076 + version = "0.6.29" 1077 + source = "registry+https://github.com/rust-lang/crates.io-index" 1078 + checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 1079 + 1080 + [[package]] 1081 + name = "regex-syntax" 1082 + version = "0.8.5" 1083 + source = "registry+https://github.com/rust-lang/crates.io-index" 1084 + checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 1085 + 1086 + [[package]] 452 1087 name = "rustc-demangle" 453 1088 version = "0.1.24" 454 1089 source = "registry+https://github.com/rust-lang/crates.io-index" 455 1090 checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 456 1091 457 1092 [[package]] 1093 + name = "rustix" 1094 + version = "1.0.5" 1095 + source = "registry+https://github.com/rust-lang/crates.io-index" 1096 + checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" 1097 + dependencies = [ 1098 + "bitflags 2.9.0", 1099 + "errno", 1100 + "libc", 1101 + "linux-raw-sys", 1102 + "windows-sys 0.59.0", 1103 + ] 1104 + 1105 + [[package]] 458 1106 name = "rustversion" 459 - version = "1.0.18" 1107 + version = "1.0.20" 460 1108 source = "registry+https://github.com/rust-lang/crates.io-index" 461 - checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" 1109 + checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 462 1110 463 1111 [[package]] 464 1112 name = "ryu" 465 - version = "1.0.18" 1113 + version = "1.0.20" 1114 + source = "registry+https://github.com/rust-lang/crates.io-index" 1115 + checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 1116 + 1117 + [[package]] 1118 + name = "same-file" 1119 + version = "1.0.6" 1120 + source = "registry+https://github.com/rust-lang/crates.io-index" 1121 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1122 + dependencies = [ 1123 + "winapi-util", 1124 + ] 1125 + 1126 + [[package]] 1127 + name = "scoped-tls" 1128 + version = "1.0.1" 466 1129 source = "registry+https://github.com/rust-lang/crates.io-index" 467 - checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 1130 + checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 468 1131 469 1132 [[package]] 470 1133 name = "scopeguard" ··· 473 1136 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 474 1137 475 1138 [[package]] 1139 + name = "send_wrapper" 1140 + version = "0.6.0" 1141 + source = "registry+https://github.com/rust-lang/crates.io-index" 1142 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 1143 + 1144 + [[package]] 476 1145 name = "serde" 477 - version = "1.0.216" 1146 + version = "1.0.219" 478 1147 source = "registry+https://github.com/rust-lang/crates.io-index" 479 - checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" 1148 + checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 480 1149 dependencies = [ 481 1150 "serde_derive", 482 1151 ] 483 1152 484 1153 [[package]] 485 1154 name = "serde_derive" 486 - version = "1.0.216" 1155 + version = "1.0.219" 487 1156 source = "registry+https://github.com/rust-lang/crates.io-index" 488 - checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" 1157 + checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 489 1158 dependencies = [ 490 1159 "proc-macro2", 491 1160 "quote", ··· 494 1163 495 1164 [[package]] 496 1165 name = "serde_json" 497 - version = "1.0.133" 1166 + version = "1.0.140" 498 1167 source = "registry+https://github.com/rust-lang/crates.io-index" 499 - checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" 1168 + checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 500 1169 dependencies = [ 501 1170 "itoa", 502 1171 "memchr", ··· 506 1175 507 1176 [[package]] 508 1177 name = "serde_path_to_error" 509 - version = "0.1.16" 1178 + version = "0.1.17" 510 1179 source = "registry+https://github.com/rust-lang/crates.io-index" 511 - checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" 1180 + checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" 512 1181 dependencies = [ 513 1182 "itoa", 514 1183 "serde", ··· 527 1196 ] 528 1197 529 1198 [[package]] 1199 + name = "sharded-slab" 1200 + version = "0.1.7" 1201 + source = "registry+https://github.com/rust-lang/crates.io-index" 1202 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 1203 + dependencies = [ 1204 + "lazy_static", 1205 + ] 1206 + 1207 + [[package]] 1208 + name = "shlex" 1209 + version = "1.3.0" 1210 + source = "registry+https://github.com/rust-lang/crates.io-index" 1211 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1212 + 1213 + [[package]] 530 1214 name = "signal-hook-registry" 531 - version = "1.4.2" 1215 + version = "1.4.5" 532 1216 source = "registry+https://github.com/rust-lang/crates.io-index" 533 - checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 1217 + checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" 534 1218 dependencies = [ 535 1219 "libc", 536 1220 ] 537 1221 538 1222 [[package]] 1223 + name = "slab" 1224 + version = "0.4.9" 1225 + source = "registry+https://github.com/rust-lang/crates.io-index" 1226 + checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1227 + dependencies = [ 1228 + "autocfg", 1229 + ] 1230 + 1231 + [[package]] 539 1232 name = "smallvec" 540 - version = "1.13.2" 1233 + version = "1.15.0" 541 1234 source = "registry+https://github.com/rust-lang/crates.io-index" 542 - checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 1235 + checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" 543 1236 544 1237 [[package]] 545 1238 name = "socket2" 546 - version = "0.5.8" 1239 + version = "0.5.9" 547 1240 source = "registry+https://github.com/rust-lang/crates.io-index" 548 - checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 1241 + checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" 549 1242 dependencies = [ 550 1243 "libc", 551 - "windows-sys", 1244 + "windows-sys 0.52.0", 552 1245 ] 553 1246 554 1247 [[package]] 1248 + name = "spin" 1249 + version = "0.9.8" 1250 + source = "registry+https://github.com/rust-lang/crates.io-index" 1251 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1252 + 1253 + [[package]] 1254 + name = "strsim" 1255 + version = "0.11.1" 1256 + source = "registry+https://github.com/rust-lang/crates.io-index" 1257 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 1258 + 1259 + [[package]] 1260 + name = "supports-color" 1261 + version = "3.0.2" 1262 + source = "registry+https://github.com/rust-lang/crates.io-index" 1263 + checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" 1264 + dependencies = [ 1265 + "is_ci", 1266 + ] 1267 + 1268 + [[package]] 1269 + name = "supports-hyperlinks" 1270 + version = "3.1.0" 1271 + source = "registry+https://github.com/rust-lang/crates.io-index" 1272 + checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" 1273 + 1274 + [[package]] 1275 + name = "supports-unicode" 1276 + version = "3.0.0" 1277 + source = "registry+https://github.com/rust-lang/crates.io-index" 1278 + checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" 1279 + 1280 + [[package]] 555 1281 name = "syn" 556 - version = "2.0.90" 1282 + version = "2.0.100" 557 1283 source = "registry+https://github.com/rust-lang/crates.io-index" 558 - checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" 1284 + checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 559 1285 dependencies = [ 560 1286 "proc-macro2", 561 1287 "quote", ··· 569 1295 checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 570 1296 571 1297 [[package]] 1298 + name = "syntect" 1299 + version = "5.2.0" 1300 + source = "registry+https://github.com/rust-lang/crates.io-index" 1301 + checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1" 1302 + dependencies = [ 1303 + "bincode", 1304 + "bitflags 1.3.2", 1305 + "flate2", 1306 + "fnv", 1307 + "once_cell", 1308 + "onig", 1309 + "plist", 1310 + "regex-syntax 0.8.5", 1311 + "serde", 1312 + "serde_derive", 1313 + "serde_json", 1314 + "thiserror 1.0.69", 1315 + "walkdir", 1316 + "yaml-rust", 1317 + ] 1318 + 1319 + [[package]] 1320 + name = "terminal_size" 1321 + version = "0.4.2" 1322 + source = "registry+https://github.com/rust-lang/crates.io-index" 1323 + checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" 1324 + dependencies = [ 1325 + "rustix", 1326 + "windows-sys 0.59.0", 1327 + ] 1328 + 1329 + [[package]] 1330 + name = "textwrap" 1331 + version = "0.16.2" 1332 + source = "registry+https://github.com/rust-lang/crates.io-index" 1333 + checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" 1334 + dependencies = [ 1335 + "unicode-linebreak", 1336 + "unicode-width 0.2.0", 1337 + ] 1338 + 1339 + [[package]] 1340 + name = "thiserror" 1341 + version = "1.0.69" 1342 + source = "registry+https://github.com/rust-lang/crates.io-index" 1343 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 1344 + dependencies = [ 1345 + "thiserror-impl 1.0.69", 1346 + ] 1347 + 1348 + [[package]] 1349 + name = "thiserror" 1350 + version = "2.0.12" 1351 + source = "registry+https://github.com/rust-lang/crates.io-index" 1352 + checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 1353 + dependencies = [ 1354 + "thiserror-impl 2.0.12", 1355 + ] 1356 + 1357 + [[package]] 1358 + name = "thiserror-impl" 1359 + version = "1.0.69" 1360 + source = "registry+https://github.com/rust-lang/crates.io-index" 1361 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 1362 + dependencies = [ 1363 + "proc-macro2", 1364 + "quote", 1365 + "syn", 1366 + ] 1367 + 1368 + [[package]] 1369 + name = "thiserror-impl" 1370 + version = "2.0.12" 1371 + source = "registry+https://github.com/rust-lang/crates.io-index" 1372 + checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 1373 + dependencies = [ 1374 + "proc-macro2", 1375 + "quote", 1376 + "syn", 1377 + ] 1378 + 1379 + [[package]] 1380 + name = "thread_local" 1381 + version = "1.1.8" 1382 + source = "registry+https://github.com/rust-lang/crates.io-index" 1383 + checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 1384 + dependencies = [ 1385 + "cfg-if", 1386 + "once_cell", 1387 + ] 1388 + 1389 + [[package]] 1390 + name = "time" 1391 + version = "0.3.41" 1392 + source = "registry+https://github.com/rust-lang/crates.io-index" 1393 + checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" 1394 + dependencies = [ 1395 + "deranged", 1396 + "itoa", 1397 + "num-conv", 1398 + "powerfmt", 1399 + "serde", 1400 + "time-core", 1401 + "time-macros", 1402 + ] 1403 + 1404 + [[package]] 1405 + name = "time-core" 1406 + version = "0.1.4" 1407 + source = "registry+https://github.com/rust-lang/crates.io-index" 1408 + checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" 1409 + 1410 + [[package]] 1411 + name = "time-macros" 1412 + version = "0.2.22" 1413 + source = "registry+https://github.com/rust-lang/crates.io-index" 1414 + checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" 1415 + dependencies = [ 1416 + "num-conv", 1417 + "time-core", 1418 + ] 1419 + 1420 + [[package]] 572 1421 name = "tokio" 573 - version = "1.43.1" 1422 + version = "1.44.2" 574 1423 source = "registry+https://github.com/rust-lang/crates.io-index" 575 - checksum = "492a604e2fd7f814268a378409e6c92b5525d747d10db9a229723f55a417958c" 1424 + checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" 576 1425 dependencies = [ 577 1426 "backtrace", 578 1427 "bytes", ··· 583 1432 "signal-hook-registry", 584 1433 "socket2", 585 1434 "tokio-macros", 586 - "windows-sys", 1435 + "windows-sys 0.52.0", 587 1436 ] 588 1437 589 1438 [[package]] ··· 595 1444 "proc-macro2", 596 1445 "quote", 597 1446 "syn", 1447 + ] 1448 + 1449 + [[package]] 1450 + name = "tokio-util" 1451 + version = "0.7.15" 1452 + source = "registry+https://github.com/rust-lang/crates.io-index" 1453 + checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" 1454 + dependencies = [ 1455 + "bytes", 1456 + "futures-core", 1457 + "futures-sink", 1458 + "futures-util", 1459 + "hashbrown", 1460 + "pin-project-lite", 1461 + "tokio", 598 1462 ] 599 1463 600 1464 [[package]] ··· 633 1497 dependencies = [ 634 1498 "log", 635 1499 "pin-project-lite", 1500 + "tracing-attributes", 636 1501 "tracing-core", 637 1502 ] 638 1503 639 1504 [[package]] 1505 + name = "tracing-attributes" 1506 + version = "0.1.28" 1507 + source = "registry+https://github.com/rust-lang/crates.io-index" 1508 + checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 1509 + dependencies = [ 1510 + "proc-macro2", 1511 + "quote", 1512 + "syn", 1513 + ] 1514 + 1515 + [[package]] 640 1516 name = "tracing-core" 641 1517 version = "0.1.33" 642 1518 source = "registry+https://github.com/rust-lang/crates.io-index" 643 1519 checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 644 1520 dependencies = [ 645 1521 "once_cell", 1522 + "valuable", 1523 + ] 1524 + 1525 + [[package]] 1526 + name = "tracing-log" 1527 + version = "0.2.0" 1528 + source = "registry+https://github.com/rust-lang/crates.io-index" 1529 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1530 + dependencies = [ 1531 + "log", 1532 + "once_cell", 1533 + "tracing-core", 646 1534 ] 647 1535 648 1536 [[package]] 1537 + name = "tracing-subscriber" 1538 + version = "0.3.19" 1539 + source = "registry+https://github.com/rust-lang/crates.io-index" 1540 + checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" 1541 + dependencies = [ 1542 + "matchers", 1543 + "nu-ansi-term", 1544 + "once_cell", 1545 + "regex", 1546 + "sharded-slab", 1547 + "smallvec", 1548 + "thread_local", 1549 + "tracing", 1550 + "tracing-core", 1551 + "tracing-log", 1552 + ] 1553 + 1554 + [[package]] 1555 + name = "unicase" 1556 + version = "2.8.1" 1557 + source = "registry+https://github.com/rust-lang/crates.io-index" 1558 + checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 1559 + 1560 + [[package]] 1561 + name = "unicode-id" 1562 + version = "0.3.5" 1563 + source = "registry+https://github.com/rust-lang/crates.io-index" 1564 + checksum = "10103c57044730945224467c09f71a4db0071c123a0648cc3e818913bde6b561" 1565 + 1566 + [[package]] 649 1567 name = "unicode-ident" 650 - version = "1.0.14" 1568 + version = "1.0.18" 1569 + source = "registry+https://github.com/rust-lang/crates.io-index" 1570 + checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1571 + 1572 + [[package]] 1573 + name = "unicode-linebreak" 1574 + version = "0.1.5" 1575 + source = "registry+https://github.com/rust-lang/crates.io-index" 1576 + checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 1577 + 1578 + [[package]] 1579 + name = "unicode-width" 1580 + version = "0.1.14" 1581 + source = "registry+https://github.com/rust-lang/crates.io-index" 1582 + checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 1583 + 1584 + [[package]] 1585 + name = "unicode-width" 1586 + version = "0.2.0" 1587 + source = "registry+https://github.com/rust-lang/crates.io-index" 1588 + checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" 1589 + 1590 + [[package]] 1591 + name = "unicode-xid" 1592 + version = "0.2.6" 1593 + source = "registry+https://github.com/rust-lang/crates.io-index" 1594 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 1595 + 1596 + [[package]] 1597 + name = "utf8parse" 1598 + version = "0.2.2" 1599 + source = "registry+https://github.com/rust-lang/crates.io-index" 1600 + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 1601 + 1602 + [[package]] 1603 + name = "valuable" 1604 + version = "0.1.1" 651 1605 source = "registry+https://github.com/rust-lang/crates.io-index" 652 - checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" 1606 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1607 + 1608 + [[package]] 1609 + name = "walkdir" 1610 + version = "2.5.0" 1611 + source = "registry+https://github.com/rust-lang/crates.io-index" 1612 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 1613 + dependencies = [ 1614 + "same-file", 1615 + "winapi-util", 1616 + ] 653 1617 654 1618 [[package]] 655 1619 name = "wasi" ··· 658 1622 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 659 1623 660 1624 [[package]] 1625 + name = "wasm-bindgen" 1626 + version = "0.2.100" 1627 + source = "registry+https://github.com/rust-lang/crates.io-index" 1628 + checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 1629 + dependencies = [ 1630 + "cfg-if", 1631 + "once_cell", 1632 + "rustversion", 1633 + "wasm-bindgen-macro", 1634 + ] 1635 + 1636 + [[package]] 1637 + name = "wasm-bindgen-backend" 1638 + version = "0.2.100" 1639 + source = "registry+https://github.com/rust-lang/crates.io-index" 1640 + checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 1641 + dependencies = [ 1642 + "bumpalo", 1643 + "log", 1644 + "proc-macro2", 1645 + "quote", 1646 + "syn", 1647 + "wasm-bindgen-shared", 1648 + ] 1649 + 1650 + [[package]] 1651 + name = "wasm-bindgen-futures" 1652 + version = "0.4.50" 1653 + source = "registry+https://github.com/rust-lang/crates.io-index" 1654 + checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 1655 + dependencies = [ 1656 + "cfg-if", 1657 + "js-sys", 1658 + "once_cell", 1659 + "wasm-bindgen", 1660 + "web-sys", 1661 + ] 1662 + 1663 + [[package]] 1664 + name = "wasm-bindgen-macro" 1665 + version = "0.2.100" 1666 + source = "registry+https://github.com/rust-lang/crates.io-index" 1667 + checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 1668 + dependencies = [ 1669 + "quote", 1670 + "wasm-bindgen-macro-support", 1671 + ] 1672 + 1673 + [[package]] 1674 + name = "wasm-bindgen-macro-support" 1675 + version = "0.2.100" 1676 + source = "registry+https://github.com/rust-lang/crates.io-index" 1677 + checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 1678 + dependencies = [ 1679 + "proc-macro2", 1680 + "quote", 1681 + "syn", 1682 + "wasm-bindgen-backend", 1683 + "wasm-bindgen-shared", 1684 + ] 1685 + 1686 + [[package]] 1687 + name = "wasm-bindgen-shared" 1688 + version = "0.2.100" 1689 + source = "registry+https://github.com/rust-lang/crates.io-index" 1690 + checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 1691 + dependencies = [ 1692 + "unicode-ident", 1693 + ] 1694 + 1695 + [[package]] 1696 + name = "web-sys" 1697 + version = "0.3.77" 1698 + source = "registry+https://github.com/rust-lang/crates.io-index" 1699 + checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 1700 + dependencies = [ 1701 + "js-sys", 1702 + "wasm-bindgen", 1703 + ] 1704 + 1705 + [[package]] 1706 + name = "web-time" 1707 + version = "1.1.0" 1708 + source = "registry+https://github.com/rust-lang/crates.io-index" 1709 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 1710 + dependencies = [ 1711 + "js-sys", 1712 + "wasm-bindgen", 1713 + ] 1714 + 1715 + [[package]] 1716 + name = "winapi" 1717 + version = "0.3.9" 1718 + source = "registry+https://github.com/rust-lang/crates.io-index" 1719 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1720 + dependencies = [ 1721 + "winapi-i686-pc-windows-gnu", 1722 + "winapi-x86_64-pc-windows-gnu", 1723 + ] 1724 + 1725 + [[package]] 1726 + name = "winapi-i686-pc-windows-gnu" 1727 + version = "0.4.0" 1728 + source = "registry+https://github.com/rust-lang/crates.io-index" 1729 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1730 + 1731 + [[package]] 1732 + name = "winapi-util" 1733 + version = "0.1.9" 1734 + source = "registry+https://github.com/rust-lang/crates.io-index" 1735 + checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 1736 + dependencies = [ 1737 + "windows-sys 0.59.0", 1738 + ] 1739 + 1740 + [[package]] 1741 + name = "winapi-x86_64-pc-windows-gnu" 1742 + version = "0.4.0" 1743 + source = "registry+https://github.com/rust-lang/crates.io-index" 1744 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1745 + 1746 + [[package]] 1747 + name = "windows" 1748 + version = "0.58.0" 1749 + source = "registry+https://github.com/rust-lang/crates.io-index" 1750 + checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 1751 + dependencies = [ 1752 + "windows-core", 1753 + "windows-targets", 1754 + ] 1755 + 1756 + [[package]] 1757 + name = "windows-core" 1758 + version = "0.58.0" 1759 + source = "registry+https://github.com/rust-lang/crates.io-index" 1760 + checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 1761 + dependencies = [ 1762 + "windows-implement", 1763 + "windows-interface", 1764 + "windows-result", 1765 + "windows-strings", 1766 + "windows-targets", 1767 + ] 1768 + 1769 + [[package]] 1770 + name = "windows-implement" 1771 + version = "0.58.0" 1772 + source = "registry+https://github.com/rust-lang/crates.io-index" 1773 + checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" 1774 + dependencies = [ 1775 + "proc-macro2", 1776 + "quote", 1777 + "syn", 1778 + ] 1779 + 1780 + [[package]] 1781 + name = "windows-interface" 1782 + version = "0.58.0" 1783 + source = "registry+https://github.com/rust-lang/crates.io-index" 1784 + checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" 1785 + dependencies = [ 1786 + "proc-macro2", 1787 + "quote", 1788 + "syn", 1789 + ] 1790 + 1791 + [[package]] 1792 + name = "windows-result" 1793 + version = "0.2.0" 1794 + source = "registry+https://github.com/rust-lang/crates.io-index" 1795 + checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 1796 + dependencies = [ 1797 + "windows-targets", 1798 + ] 1799 + 1800 + [[package]] 1801 + name = "windows-strings" 1802 + version = "0.1.0" 1803 + source = "registry+https://github.com/rust-lang/crates.io-index" 1804 + checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 1805 + dependencies = [ 1806 + "windows-result", 1807 + "windows-targets", 1808 + ] 1809 + 1810 + [[package]] 661 1811 name = "windows-sys" 662 1812 version = "0.52.0" 663 1813 source = "registry+https://github.com/rust-lang/crates.io-index" 664 1814 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1815 + dependencies = [ 1816 + "windows-targets", 1817 + ] 1818 + 1819 + [[package]] 1820 + name = "windows-sys" 1821 + version = "0.59.0" 1822 + source = "registry+https://github.com/rust-lang/crates.io-index" 1823 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 665 1824 dependencies = [ 666 1825 "windows-targets", 667 1826 ] ··· 729 1888 version = "0.52.6" 730 1889 source = "registry+https://github.com/rust-lang/crates.io-index" 731 1890 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1891 + 1892 + [[package]] 1893 + name = "yaml-rust" 1894 + version = "0.4.5" 1895 + source = "registry+https://github.com/rust-lang/crates.io-index" 1896 + checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" 1897 + dependencies = [ 1898 + "linked-hash-map", 1899 + ]
+20 -2
Cargo.toml
··· 2 2 resolver = "2" 3 3 # Note that we define member crates with a wildcard here and NOT with explicit 4 4 # paths because the flake.nix is written in a way such that top-level members 5 - # (`my-cli` and `my-server`) are built as different derivations which avoid being 5 + # (`atpblog-cli` and `atpblog-server`) are built as different derivations which avoid being 6 6 # rebuilt if the other package's sources change. 7 7 members = ["crates/*"] 8 8 9 9 [workspace.package] 10 10 version = "0.1.0" 11 - edition = "2021" 11 + edition = "2024" 12 12 license = "MPL-2.0" 13 + authors = ["orual"] 13 14 14 15 [workspace.metadata.crane] 15 16 name = "atpblog-workspace" 17 + 18 + 19 + [workspace.dependencies] 20 + 21 + serde = { version = "1.0", features = ["derive"] } 22 + merde = { version = "10.0.6", features = ["full"] } 23 + facet = { version = "0.9.6", features = ["camino"] } 24 + 25 + minijinja = { version = "2.9.0", default-features = false } 26 + minijinja-contrib = { version = "2.9.0", default-features = false } 27 + miette = { version = "7.5.0" } 28 + owo-colors = { version = "4.2.0" } 29 + thiserror = "2.0" 30 + syntect = "5.2.0" 31 + jane-eyre = "0.6.12" 32 + n0-future = "=0.1.2" 33 + tracing = { version = "0.1.41", default-features = false, features = ["std"] }
-11
crates/atpblog-cli/Cargo.toml
··· 1 - [package] 2 - name = "atpblog-cli" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 7 - 8 - [dependencies] 9 - atpblog-common = { path = "../atpblog-common" } 10 - atpblog-workspace-hack = { version = "0.1", path = "../atpblog-workspace-hack" } 11 - tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
-21
crates/atpblog-cli/src/main.rs
··· 1 - //! A cli which will echo every input argument to stdout 2 - 3 - #[tokio::main] 4 - async fn main() { 5 - let (tx, mut rx, fut) = atpblog_common::echo_task(10, "echo".into()); 6 - let args = std::env::args().skip(1).collect::<Vec<_>>(); 7 - 8 - tokio::spawn(fut); 9 - tokio::spawn(async move { 10 - for arg in args { 11 - if tx.send(arg.into()).await.is_err() { 12 - eprintln!("channel was unexpectedly closed"); 13 - break; 14 - } 15 - } 16 - }); 17 - 18 - while let Some(msg) = rx.recv().await { 19 - println!("{msg}"); 20 - } 21 - }
-13
crates/atpblog-common/Cargo.toml
··· 1 - [package] 2 - name = "atpblog-common" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 7 - 8 - [dependencies] 9 - atpblog-workspace-hack = { version = "0.1", path = "../atpblog-workspace-hack" } 10 - tokio = { version = "1", features = ["sync"] } 11 - 12 - [dev-dependencies] 13 - tokio = { version = "1", features = ["macros", "rt"] }
-42
crates/atpblog-common/src/lib.rs
··· 1 - use std::{borrow::Cow, future::Future}; 2 - use tokio::sync::mpsc; 3 - 4 - /// Echoes messages back with the given prefix 5 - pub fn echo_task( 6 - buffer: usize, 7 - prefix: Cow<'static, str>, 8 - ) -> ( 9 - mpsc::Sender<Cow<'static, str>>, 10 - mpsc::Receiver<String>, 11 - impl Future<Output = ()>, 12 - ) { 13 - let (in_tx, mut in_rx) = mpsc::channel(buffer); 14 - let (out_tx, out_rx) = mpsc::channel(buffer); 15 - 16 - (in_tx, out_rx, async move { 17 - while let Some(msg) = in_rx.recv().await { 18 - let msg = format!("{prefix} {msg}"); 19 - if out_tx.send(msg).await.is_err() { 20 - break; 21 - } 22 - } 23 - }) 24 - } 25 - 26 - #[cfg(test)] 27 - mod test { 28 - use super::echo_task; 29 - 30 - #[tokio::test] 31 - async fn smoke() { 32 - let (tx, mut rx, fut) = echo_task(10, "hello".into()); 33 - 34 - tokio::spawn(fut); 35 - 36 - tx.send("world".into()).await.unwrap(); 37 - assert_eq!("hello world", rx.recv().await.unwrap()); 38 - 39 - tx.send("someone".into()).await.unwrap(); 40 - assert_eq!("hello someone", rx.recv().await.unwrap()); 41 - } 42 - }
-8
crates/atpblog-renderer/Cargo.toml
··· 1 - [package] 2 - name = "atpblog-renderer" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 7 - 8 - [dependencies]
crates/atpblog-renderer/src/lib.rs crates/weaver-renderer/src/lib.rs
-12
crates/atpblog-server/Cargo.toml
··· 1 - [package] 2 - name = "atpblog-server" 3 - version.workspace = true 4 - edition.workspace = true 5 - license.workspace = true 6 - publish = false 7 - 8 - [dependencies] 9 - atpblog-common = { path = "../atpblog-common" } 10 - atpblog-workspace-hack = { version = "0.1", path = "../atpblog-workspace-hack" } 11 - axum = "0.7.5" 12 - tokio = { version = "1.43", features = ["full"] }
-42
crates/atpblog-server/src/main.rs
··· 1 - //! An HTTP server which will echo back query params sent to /ping 2 - 3 - use axum::{extract::Query, response::Html, routing::get, Router}; 4 - use std::collections::HashMap; 5 - 6 - #[tokio::main] 7 - async fn main() { 8 - let app = Router::new() 9 - .route("/", get(handler)) 10 - .route("/ping", get(ping)); 11 - 12 - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") 13 - .await 14 - .unwrap(); 15 - println!("listening on {}", listener.local_addr().unwrap()); 16 - axum::serve(listener, app).await.unwrap(); 17 - } 18 - 19 - async fn handler() -> Html<&'static str> { 20 - Html("<h1>Hello, World!</h1>") 21 - } 22 - 23 - async fn ping(Query(params): Query<HashMap<String, String>>) -> Html<String> { 24 - let (tx, mut rx, fut) = atpblog_common::echo_task(10, "ping".into()); 25 - tokio::spawn(fut); 26 - tokio::spawn(async move { 27 - for (k, v) in params { 28 - if tx.send(format!("{k}: {v}").into()).await.is_err() { 29 - break; 30 - } 31 - } 32 - }); 33 - 34 - let mut body = String::from("<pre>"); 35 - 36 - while let Some(msg) = rx.recv().await { 37 - body.push_str(&msg); 38 - } 39 - 40 - body.push_str("</pre>"); 41 - Html(body) 42 - }
crates/atpblog-workspace-hack/.gitattributes crates/weaver-workspace-hack/.gitattributes
+6 -2
crates/atpblog-workspace-hack/Cargo.toml crates/weaver-workspace-hack/Cargo.toml
··· 3 3 # cargo hakari generate 4 4 5 5 [package] 6 - name = "atpblog-workspace-hack" 6 + name = "weaver-workspace-hack" 7 7 version = "0.1.0" 8 8 description = "workspace-hack package, managed by hakari" 9 9 license.workspace = true 10 + edition.workspace = true 10 11 # You can choose to publish this crate: see https://docs.rs/cargo-hakari/latest/cargo_hakari/publishing. 11 12 publish = false 12 13 ··· 15 16 16 17 ### BEGIN HAKARI SECTION 17 18 [dependencies] 19 + markdown = { version = "1", features = ["json", "log"] } 20 + memchr = { version = "2" } 21 + serde = { version = "1", features = ["derive"] } 22 + serde_json = { version = "1", features = ["raw_value"] } 18 23 smallvec = { version = "1", default-features = false, features = ["const_new"] } 19 - tokio = { version = "1", features = ["full"] } 20 24 21 25 [build-dependencies] 22 26 proc-macro2 = { version = "1" }
crates/atpblog-workspace-hack/build.rs crates/weaver-workspace-hack/build.rs
crates/atpblog-workspace-hack/src/lib.rs crates/weaver-workspace-hack/src/lib.rs
+12
crates/weaver-cli/Cargo.toml
··· 1 + [package] 2 + name = "weaver-cli" 3 + version.workspace = true 4 + edition.workspace = true 5 + license.workspace = true 6 + publish = false 7 + 8 + [dependencies] 9 + clap = { version = "4.5", features = ["derive", "env", "cargo", "unicode"] } 10 + n0-future = { workspace = true } 11 + weaver-common = { path = "../weaver-common" } 12 + weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" }
+3
crates/weaver-cli/src/main.rs
··· 1 + //! A cli which will echo every input argument to stdout 2 + 3 + fn main() {}
+13
crates/weaver-common/Cargo.toml
··· 1 + [package] 2 + name = "weaver-common" 3 + version.workspace = true 4 + edition.workspace = true 5 + license.workspace = true 6 + publish = false 7 + 8 + [dependencies] 9 + n0-future = { workspace = true } 10 + weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 11 + 12 + [dev-dependencies] 13 + tokio = { version = "1", features = ["macros", "rt"] }
+1
crates/weaver-common/src/lib.rs
··· 1 +
+19
crates/weaver-markdown/Cargo.toml
··· 1 + [package] 2 + name = "weaver-markdown" 3 + description = "Custom Markdown parser, built on top of markdown-rs" 4 + version.workspace = true 5 + edition.workspace = true 6 + license.workspace = true 7 + 8 + [features] 9 + default = [] 10 + serde_debug = ["markdown/json"] 11 + 12 + 13 + [dependencies] 14 + atpblog-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 15 + markdown = { version = "1.0", features = ["log"] } 16 + miette = { workspace = true, features = ["fancy", "syntect-highlighter"] } 17 + owo-colors = { workspace = true, features = ["alloc"] } 18 + syntect.workspace = true 19 + thiserror.workspace = true
+14
crates/weaver-markdown/src/lib.rs
··· 1 + pub fn add(left: u64, right: u64) -> u64 { 2 + left + right 3 + } 4 + 5 + #[cfg(test)] 6 + mod tests { 7 + use super::*; 8 + 9 + #[test] 10 + fn it_works() { 11 + let result = add(2, 2); 12 + assert_eq!(result, 4); 13 + } 14 + }
+12
crates/weaver-renderer/Cargo.toml
··· 1 + [package] 2 + name = "weaver-renderer" 3 + version.workspace = true 4 + edition.workspace = true 5 + license.workspace = true 6 + publish = false 7 + 8 + [dependencies] 9 + n0-future = { workspace = true } 10 + 11 + weaver-common = { path = "../weaver-common" } 12 + weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" }
+16
crates/weaver-server/Cargo.toml
··· 1 + [package] 2 + name = "weaver-server" 3 + version.workspace = true 4 + edition.workspace = true 5 + license.workspace = true 6 + publish = false 7 + 8 + [dependencies] 9 + weaver-common = { path = "../weaver-common" } 10 + weaver-workspace-hack = { version = "0.1", path = "../weaver-workspace-hack" } 11 + 12 + axum = "0.7.5" 13 + tokio = { version = "1.44", features = ["full"] } 14 + 15 + 16 + clap = { version = "4.5", features = ["derive", "env", "cargo", "unicode"] }
+2
crates/weaver-server/src/main.rs
··· 1 + #[tokio::main] 2 + async fn main() {}
+1 -1
deny.toml
··· 2 2 multiple-versions = 'allow' 3 3 4 4 [licenses] 5 - allow = ["Apache-2.0", "BSD-3-Clause", "MIT", "Unicode-3.0", "MPL-2.0"] 5 + allow = ["Apache-2.0", "BSD-3-Clause", "MIT", "Unicode-3.0", "MPL-2.0", "ISC"] 6 6 private = { ignore = true }
+22 -23
flake.lock
··· 31 31 "type": "github" 32 32 } 33 33 }, 34 - "fenix": { 35 - "inputs": { 36 - "nixpkgs": [ 37 - "nixpkgs" 38 - ], 39 - "rust-analyzer-src": [] 40 - }, 41 - "locked": { 42 - "lastModified": 1745303921, 43 - "narHash": "sha256-zYucemS2QvJUR5GKJ/u3eZAoe82AKhcxMtNVZDERXsw=", 44 - "owner": "nix-community", 45 - "repo": "fenix", 46 - "rev": "14850d5984f3696a2972f85f19085e5fb46daa95", 47 - "type": "github" 48 - }, 49 - "original": { 50 - "owner": "nix-community", 51 - "repo": "fenix", 52 - "type": "github" 53 - } 54 - }, 55 34 "flake-utils": { 56 35 "inputs": { 57 36 "systems": "systems" ··· 90 69 "inputs": { 91 70 "advisory-db": "advisory-db", 92 71 "crane": "crane", 93 - "fenix": "fenix", 94 72 "flake-utils": "flake-utils", 95 - "nixpkgs": "nixpkgs" 73 + "nixpkgs": "nixpkgs", 74 + "rust-overlay": "rust-overlay" 75 + } 76 + }, 77 + "rust-overlay": { 78 + "inputs": { 79 + "nixpkgs": [ 80 + "nixpkgs" 81 + ] 82 + }, 83 + "locked": { 84 + "lastModified": 1745375696, 85 + "narHash": "sha256-zFRCHNRJ1Ei8GD3iP+wcedkJzLo84OO7JEu/gmhSllU=", 86 + "owner": "oxalica", 87 + "repo": "rust-overlay", 88 + "rev": "19d1b5002d43c019880dd5cc0f8420efd20d5faf", 89 + "type": "github" 90 + }, 91 + "original": { 92 + "owner": "oxalica", 93 + "repo": "rust-overlay", 94 + "type": "github" 96 95 } 97 96 }, 98 97 "systems": {
+203 -132
flake.nix
··· 6 6 7 7 crane.url = "github:ipetkov/crane"; 8 8 9 - fenix = { 10 - url = "github:nix-community/fenix"; 11 - inputs.nixpkgs.follows = "nixpkgs"; 12 - inputs.rust-analyzer-src.follows = ""; 13 - }; 14 - 15 9 flake-utils.url = "github:numtide/flake-utils"; 16 10 17 11 advisory-db = { 18 12 url = "github:rustsec/advisory-db"; 19 13 flake = false; 20 14 }; 15 + rust-overlay = { 16 + url = "github:oxalica/rust-overlay"; 17 + inputs.nixpkgs.follows = "nixpkgs"; 18 + }; 21 19 }; 22 20 23 - outputs = { self, nixpkgs, crane, fenix, flake-utils, advisory-db, ... }: 24 - flake-utils.lib.eachDefaultSystem (system: 25 - let 26 - pkgs = nixpkgs.legacyPackages.${system}; 27 - 28 - inherit (pkgs) lib; 21 + outputs = { 22 + self, 23 + nixpkgs, 24 + crane, 25 + rust-overlay, 26 + flake-utils, 27 + advisory-db, 28 + ... 29 + }: let 30 + name = "weaver"; 31 + in 32 + flake-utils.lib.eachDefaultSystem (system: let 33 + pkgs = import nixpkgs { 34 + inherit system; 35 + overlays = [(import rust-overlay)]; 36 + }; 37 + inherit (pkgs) lib; 29 38 30 - craneLib = crane.mkLib pkgs; 31 - src = craneLib.cleanCargoSource ./.; 39 + rustToolchainFor = p: 40 + p.rust-bin.stable.latest.default.override { 41 + # Set the build targets supported by the toolchain, 42 + # wasm32-unknown-unknown is required for trunk. 43 + targets = ["wasm32-wasi"]; 44 + extensions = ["llvm-tools"]; 45 + }; 46 + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchainFor; 47 + # When filtering sources, we want to allow assets other than .rs files 48 + unfilteredRoot = ./.; # The original, unfiltered source 49 + src = lib.fileset.toSource { 50 + root = unfilteredRoot; 51 + fileset = lib.fileset.unions [ 52 + # Default files from crane (Rust and cargo files) 53 + (craneLib.fileset.commonCargoSources unfilteredRoot) 54 + ( 55 + lib.fileset.fileFilter 56 + (file: lib.any file.hasExt ["html" "scss"]) 57 + unfilteredRoot 58 + ) 59 + # Example of a folder for images, icons, etc 60 + (lib.fileset.maybeMissing ./assets) 61 + ]; 62 + }; 32 63 33 - # Common arguments can be set here to avoid repeating them later 34 - commonArgs = { 35 - inherit src; 36 - strictDeps = true; 64 + # Common arguments can be set here to avoid repeating them later 65 + commonArgs = { 66 + inherit src; 67 + strictDeps = true; 37 68 38 - buildInputs = [ 69 + buildInputs = 70 + [ 39 71 # Add additional build inputs here 40 - ] ++ lib.optionals pkgs.stdenv.isDarwin [ 72 + ] 73 + ++ lib.optionals pkgs.stdenv.isDarwin [ 41 74 # Additional darwin specific inputs can be set here 42 75 pkgs.libiconv 43 76 ]; 44 77 45 - # Additional environment variables can be set directly 46 - # MY_CUSTOM_VAR = "some value"; 78 + # Additional environment variables can be set directly 79 + # MY_CUSTOM_VAR = "some value"; 80 + }; 81 + 82 + # Wasm packages 83 + 84 + # it's not possible to build the server on the 85 + # wasm32 target, so we only build the client. 86 + wasmArgs = 87 + commonArgs 88 + // { 89 + pname = "trunk-workspace-wasm"; 90 + cargoExtraArgs = "--package=client"; 91 + CARGO_BUILD_TARGET = "wasm32-wasi"; 47 92 }; 48 93 49 - craneLibLLvmTools = craneLib.overrideToolchain 50 - (fenix.packages.${system}.complete.withComponents [ 51 - "cargo" 52 - "llvm-tools" 53 - "rustc" 54 - ]); 94 + cargoArtifactsWasm = craneLib.buildDepsOnly (wasmArgs 95 + // { 96 + doCheck = false; 97 + }); 55 98 56 - # Build *just* the cargo dependencies (of the entire workspace), 57 - # so we can reuse all of that work (e.g. via cachix) when running in CI 58 - # It is *highly* recommended to use something like cargo-hakari to avoid 59 - # cache misses when building individual top-level-crates 60 - cargoArtifacts = craneLib.buildDepsOnly commonArgs; 99 + # craneLibLLvmTools = craneLib.overrideToolchain 100 + # (fenix.packages.${system}.complete.withComponents [ 101 + # "cargo" 102 + # "llvm-tools" 103 + # "rustc" 104 + # ]); 105 + 106 + # Build *just* the cargo dependencies (of the entire workspace), 107 + # so we can reuse all of that work (e.g. via cachix) when running in CI 108 + # It is *highly* recommended to use something like cargo-hakari to avoid 109 + # cache misses when building individual top-level-crates 110 + cargoArtifacts = craneLib.buildDepsOnly commonArgs; 61 111 62 - individualCrateArgs = commonArgs // { 112 + individualCrateArgs = 113 + commonArgs 114 + // { 63 115 inherit cargoArtifacts; 64 - inherit (craneLib.crateNameFromCargoToml { inherit src; }) version; 116 + inherit (craneLib.crateNameFromCargoToml {inherit src;}) version; 65 117 # NB: we disable tests since we'll run them all via cargo-nextest 66 118 doCheck = false; 67 119 }; 68 120 69 - fileSetForCrate = crate: lib.fileset.toSource { 121 + fileSetForCrate = crate: 122 + lib.fileset.toSource { 70 123 root = ./.; 71 124 fileset = lib.fileset.unions [ 72 125 ./Cargo.toml 73 126 ./Cargo.lock 74 - (craneLib.fileset.commonCargoSources ./crates/atpblog-common) 75 - (craneLib.fileset.commonCargoSources ./crates/atpblog-workspace-hack) 127 + (craneLib.fileset.commonCargoSources ./crates/weaver-common) 128 + (craneLib.fileset.commonCargoSources ./crates/weaver-workspace-hack) 76 129 (craneLib.fileset.commonCargoSources crate) 77 130 ]; 78 131 }; 79 132 80 - # Build the top-level crates of the workspace as individual derivations. 81 - # This allows consumers to only depend on (and build) only what they need. 82 - # Though it is possible to build the entire workspace as a single derivation, 83 - # so this is left up to you on how to organize things 84 - # 85 - # Note that the cargo workspace must define `workspace.members` using wildcards, 86 - # otherwise, omitting a crate (like we do below) will result in errors since 87 - # cargo won't be able to find the sources for all members. 88 - atpblog-cli = craneLib.buildPackage (individualCrateArgs // { 89 - pname = "atpblog-cli"; 90 - cargoExtraArgs = "-p atpblog-cli"; 91 - src = fileSetForCrate ./crates/atpblog-cli; 133 + # Build the top-level crates of the workspace as individual derivations. 134 + # This allows consumers to only depend on (and build) only what they need. 135 + # Though it is possible to build the entire workspace as a single derivation, 136 + # so this is left up to you on how to organize things 137 + # 138 + # Note that the cargo workspace must define `workspace.members` using wildcards, 139 + # otherwise, omitting a crate (like we do below) will result in errors since 140 + # cargo won't be able to find the sources for all members. 141 + weaver-cli = craneLib.buildPackage (individualCrateArgs 142 + // { 143 + pname = "${name}-cli"; 144 + cargoExtraArgs = "-p ${name}-cli"; 145 + src = fileSetForCrate ./crates/weaver-cli; 92 146 }); 93 - atpblog-server = craneLib.buildPackage (individualCrateArgs // { 94 - pname = "atpblog-server"; 95 - cargoExtraArgs = "-p atpblog-server"; 96 - src = fileSetForCrate ./crates/atpblog-server; 147 + weaver-server = craneLib.buildPackage (individualCrateArgs 148 + // { 149 + pname = "${name}-server"; 150 + cargoExtraArgs = "-p ${name}-server"; 151 + src = fileSetForCrate ./crates/weaver-server; 97 152 }); 98 - atpblog-renderer = craneLib.buildPackage (individualCrateArgs // { 99 - pname = "atpblog-renderer"; 100 - cargoExtraArgs = "-p atpblog-renderer"; 101 - src = fileSetForCrate ./crates/atpblog-renderer; 153 + weaver-renderer = craneLib.buildPackage (individualCrateArgs 154 + // { 155 + pname = "${name}-renderer"; 156 + cargoExtraArgs = "-p ${name}-renderer"; 157 + src = fileSetForCrate ./crates/weaver-renderer; 102 158 }); 103 - in 104 - { 105 - checks = { 106 - # Build the crates as part of `nix flake check` for convenience 107 - inherit atpblog-cli atpblog-server atpblog-renderer; 159 + in { 160 + checks = { 161 + # Build the crates as part of `nix flake check` for convenience 162 + inherit weaver-cli weaver-server weaver-renderer; 108 163 109 - # Run clippy (and deny all warnings) on the workspace source, 110 - # again, reusing the dependency artifacts from above. 111 - # 112 - # Note that this is done as a separate derivation so that 113 - # we can block the CI if there are issues here, but not 114 - # prevent downstream consumers from building our crate by itself. 115 - atpblog-workspace-clippy = craneLib.cargoClippy (commonArgs // { 164 + # Run clippy (and deny all warnings) on the workspace source, 165 + # again, reusing the dependency artifacts from above. 166 + # 167 + # Note that this is done as a separate derivation so that 168 + # we can block the CI if there are issues here, but not 169 + # prevent downstream consumers from building our crate by itself. 170 + "${name}-workspace-clippy" = craneLib.cargoClippy (commonArgs 171 + // { 116 172 inherit cargoArtifacts; 117 173 cargoClippyExtraArgs = "--all-targets -- --deny warnings"; 118 174 }); 119 175 120 - atpblog-workspace-doc = craneLib.cargoDoc (commonArgs // { 176 + "${name}-workspace-doc" = craneLib.cargoDoc (commonArgs 177 + // { 121 178 inherit cargoArtifacts; 122 179 }); 123 180 124 - # Check formatting 125 - atpblog-workspace-fmt = craneLib.cargoFmt { 126 - inherit src; 127 - }; 181 + # Check formatting 182 + "${name}-workspace-fmt" = craneLib.cargoFmt { 183 + inherit src; 184 + }; 128 185 129 - atpblog-workspace-toml-fmt = craneLib.taploFmt { 130 - src = pkgs.lib.sources.sourceFilesBySuffices src [ ".toml" ]; 131 - # taplo arguments can be further customized below as needed 132 - # taploExtraArgs = "--config ./taplo.toml"; 133 - }; 186 + "${name}-workspace-toml-fmt" = craneLib.taploFmt { 187 + src = pkgs.lib.sources.sourceFilesBySuffices src [".toml"]; 188 + # taplo arguments can be further customized below as needed 189 + # taploExtraArgs = "--config ./taplo.toml"; 190 + }; 134 191 135 - # Audit dependencies 136 - atpblog-workspace-audit = craneLib.cargoAudit { 137 - inherit src advisory-db; 138 - }; 192 + # Audit dependencies 193 + "${name}-workspace-audit" = craneLib.cargoAudit { 194 + inherit src advisory-db; 195 + }; 139 196 140 - # Audit licenses 141 - atpblog-workspace-deny = craneLib.cargoDeny { 142 - inherit src; 143 - }; 197 + # Audit licenses 198 + "${name}-workspace-deny" = craneLib.cargoDeny { 199 + inherit src; 200 + }; 144 201 145 - # Run tests with cargo-nextest 146 - # Consider setting `doCheck = false` on other crate derivations 147 - # if you do not want the tests to run twice 148 - atpblog-workspace-nextest = craneLib.cargoNextest (commonArgs // { 202 + # Run tests with cargo-nextest 203 + # Consider setting `doCheck = false` on other crate derivations 204 + # if you do not want the tests to run twice 205 + "${name}-workspace-nextest" = craneLib.cargoNextest (commonArgs 206 + // { 149 207 inherit cargoArtifacts; 150 208 partitions = 1; 151 209 partitionType = "count"; 152 210 cargoNextestPartitionsExtraArgs = "--no-tests=pass"; 153 211 }); 154 212 155 - # Ensure that cargo-hakari is up to date 156 - atpblog-workspace-hakari = craneLib.mkCargoDerivation { 157 - inherit src; 158 - pname = "atpblog-workspace-hakari"; 159 - cargoArtifacts = null; 160 - doInstallCargoArtifacts = false; 213 + # Ensure that cargo-hakari is up to date 214 + "${name}-workspace-hakari" = craneLib.mkCargoDerivation { 215 + inherit src; 216 + pname = "${name}-workspace-hakari"; 217 + cargoArtifacts = null; 218 + doInstallCargoArtifacts = false; 161 219 162 - buildPhaseCargoCommand = '' 163 - cargo hakari generate --diff # workspace-hack Cargo.toml is up-to-date 164 - cargo hakari manage-deps --dry-run # all workspace crates depend on workspace-hack 165 - cargo hakari verify 166 - ''; 220 + buildPhaseCargoCommand = '' 221 + cargo hakari generate --diff # workspace-hack Cargo.toml is up-to-date 222 + cargo hakari manage-deps --dry-run # all workspace crates depend on workspace-hack 223 + cargo hakari verify 224 + ''; 167 225 168 - nativeBuildInputs = [ 169 - pkgs.cargo-hakari 170 - ]; 171 - }; 226 + nativeBuildInputs = [ 227 + pkgs.cargo-hakari 228 + ]; 172 229 }; 230 + }; 173 231 174 - packages = { 175 - inherit atpblog-cli atpblog-server; 176 - } // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { 177 - atpblog-workspace-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { 178 - inherit cargoArtifacts; 179 - }); 232 + packages = 233 + { 234 + inherit weaver-cli weaver-server; 235 + } 236 + // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { 237 + # weaver-workspace-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { 238 + # inherit cargoArtifacts; 239 + # }); 180 240 }; 181 241 182 - apps = { 183 - atpblog-cli = flake-utils.lib.mkApp { 184 - drv = atpblog-cli; 185 - }; 186 - atpblog-server = flake-utils.lib.mkApp { 187 - drv = atpblog-server; 188 - }; 242 + apps = { 243 + "${name}-cli" = flake-utils.lib.mkApp { 244 + drv = "${name}-cli"; 245 + }; 246 + "${name}-server" = flake-utils.lib.mkApp { 247 + drv = "${name}-server"; 189 248 }; 249 + }; 190 250 191 - devShells.default = craneLib.devShell { 192 - # Inherit inputs from checks. 193 - checks = self.checks.${system}; 251 + devShells.default = craneLib.devShell { 252 + inherit name; 253 + # Inherit inputs from checks. 254 + checks = self.checks.${system}; 255 + NIX_LD_LIBRARY_PATH = with pkgs; 256 + lib.makeLibraryPath [ 257 + stdenv.cc.cc 258 + openssl 259 + # ... 260 + ]; 261 + NIX_LD = lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; 262 + 263 + LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:$NIX_LD_LIBRARY_PATH"; 194 264 195 - # Additional dev-shell environment variables can be set directly 196 - # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; 265 + # Additional dev-shell environment variables can be set directly 266 + # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; 197 267 198 - # Extra inputs can be added here; cargo and rustc are provided by default. 199 - packages = with pkgs; [ 200 - cargo-hakari 201 - nixd 202 - ]; 203 - }; 204 - }); 268 + # Extra inputs can be added here; cargo and rustc are provided by default. 269 + packages = with pkgs; [ 270 + cargo-hakari 271 + nixd 272 + alejandra 273 + ]; 274 + }; 275 + }); 205 276 }
+46
lexicons/sh.weaver.blog.defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.weaver.blog.defs", 4 + "defs": { 5 + "postView" :{ 6 + "type": "object", 7 + "required": ["uri", "cid", "author", "record", "indexedAt"], 8 + "authors": { 9 + "type": "array", 10 + "items": { 11 + "type": "union", 12 + "refs": ["app.bsky.actor.defs#profileViewBasic" ] // add own lexicon for this 13 + } 14 + }, 15 + "properties": { 16 + "uri": { "type": "string", "format": "at-uri" }, 17 + "cid": { "type": "string", "format": "cid" }, 18 + }, 19 + 20 + "record": { "type": "unknown" }, 21 + "renderedView": { 22 + "type": "ref", 23 + "ref": "#renderedView" 24 + }, 25 + "indexedAt": { "type": "string", "format": "datetime" }, 26 + }, 27 + 28 + "renderedView": { 29 + "type": "object", 30 + "required": ["html"], 31 + "properties": { 32 + "html": { 33 + "type": "blob", 34 + "accept": ["text/html"], 35 + "maxSize": 1000000 36 + }, 37 + "css": { 38 + "type": "blob", 39 + "accept": ["text/css"], 40 + "maxSize": 1000000 41 + }, 42 + }, 43 + "description": "View of a rendered and cached blog post" 44 + }, 45 + } 46 + }
+57
lexicons/sh.weaver.blog.post.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.weaver.blog.post", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "description": "A blog entry", 8 + "key": "tid", 9 + "record": { 10 + "type": "object", 11 + "required": [ 12 + "content", "title", "createdAt" 13 + ], 14 + "properties": { 15 + "title": { "type": "ref", "ref": "#title" }, 16 + "tags": { "type": "ref", "ref": "#tags" }, 17 + 18 + "content": { 19 + "type": "string", 20 + "maxLength": 200000, 21 + "description": "The content of the blog post. This should be some flavor of Markdown." 22 + }, 23 + 24 + "createdAt": { 25 + "type": "ref", 26 + "ref": "#createdAt" 27 + }, 28 + "images": { 29 + "type": "ref", 30 + "ref": "sh.weaver.blog.embed.images", 31 + "description": "The set of images, if any, embedded in the blog post." 32 + }, 33 + } 34 + } 35 + }, 36 + 37 + "createdAt": { 38 + "type": "string", 39 + "format": "datetime", 40 + "description": "The date and time when the blog post was created. This is used for sorting and displaying the post's creation date." 41 + }, 42 + "title": { 43 + "type": "string", 44 + "maxLength": 420, 45 + "description": "The title of the blog post." 46 + }, 47 + "tags": { 48 + "type": "array", 49 + "items": { 50 + "type": "string", 51 + "maxLength": 64 52 + }, 53 + "maxLength": 10, 54 + "description": "An array of tags associated with the blog post. Tags can help categorize and organize posts." 55 + } 56 + } 57 + }
+30
lexicons/sh.weaver.embed.defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.weaver.embed.defs", 4 + "defs": { 5 + "percentSize": { 6 + "type": "object", 7 + "required": ["width", "height"], 8 + "properties": { 9 + "width": { "type": "integer" }, 10 + "height": { "type": "integer" }, 11 + }, 12 + "description": "Proportional size of the embed relative to the viewport in larger windows. The dimensions are percentage out of 100. Could we use more granularity? Maybe, but come on." 13 + }, 14 + "pixelSize": { 15 + "type": "object", 16 + "required": ["width", "height"], 17 + "properties": { 18 + "width": { "type": "integer" }, 19 + "height": { "type": "integer" }, 20 + }, 21 + "description": "Pixel-exact embed size. The dimensions are logical pixels, subject to scaling, so 200px at X2 scale is 400px." 22 + }, 23 + "record": { 24 + 25 + }, 26 + "externa": { 27 + 28 + } 29 + } 30 + }
+19
lexicons/sh.weaver.embed.external.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.weaver.embed.records", 4 + "description": "A set of records embedded in a blog post.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["records"], 9 + "properties": { 10 + "images": { 11 + "type": "array", 12 + "items": { "type": "ref", "ref": "#sh.weaver.embed.defs#external" }, 13 + "maxLength": 48 14 + } 15 + } 16 + }, 17 + 18 + } 19 + }
+46
lexicons/sh.weaver.embed.images.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.weaver.embed.images", 4 + "description": "A set of images embedded in a blog post.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["images"], 9 + "properties": { 10 + "images": { 11 + "type": "array", 12 + "items": { "type": "ref", "ref": "#image" }, 13 + "maxLength": 48 14 + } 15 + } 16 + }, 17 + "image": { 18 + "type": "object", 19 + "required": ["image"], 20 + "properties": { 21 + "image": { 22 + "type": "blob", 23 + "accept": ["image/*"], 24 + "maxSize": 3000000 25 + }, 26 + "alt": { 27 + "type": "string", 28 + "description": "alt text description of the image" 29 + }, 30 + "blurhash": { 31 + "type": "string", 32 + "maxLength": 32, 33 + "description": "Blurhash string for the image, used for low-resolution placeholders. This must be a valid Blurhash string." 34 + }, 35 + "dimensions": { 36 + "type": "union", 37 + "refs": [ 38 + "app.bsky.embed.defs#aspectRatio", 39 + "sh.weaver.embed.defs#percentSize", 40 + "sh.weaver.embed.defs#pixelSize" 41 + ] 42 + } 43 + } 44 + }, 45 + } 46 + }
+19
lexicons/sh.weaver.embed.record.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "computer.nonbinary.embed.records", 4 + "description": "A set of records embedded in a blog post.", 5 + "defs": { 6 + "main": { 7 + "type": "object", 8 + "required": ["records"], 9 + "properties": { 10 + "images": { 11 + "type": "array", 12 + "items": { "type": "ref", "ref": "#computer.nonbinary.embed.defs#record" }, 13 + "maxLength": 48 14 + } 15 + } 16 + }, 17 + 18 + } 19 + }