From 513335c485da17972ca6ce52c1ad1d9ff191393c Mon Sep 17 00:00:00 2001 From: sepia Date: Mon, 28 Jul 2025 13:39:01 -0500 Subject: [PATCH] Port to TypeScript/Elysia --- .gitignore | 31 + Cargo.lock | 2419 --------------------------------- Cargo.toml | 15 - bun.lockb | Bin 0 -> 29669 bytes data/pages/about.html | 38 +- data/posts/other_post.html | 4 +- data/style/monospace.css | 125 +- data/style/style.css | 6 +- justfile | 25 + package.json | 16 + src/index.tsx | 53 + src/main.rs | 102 -- src/recent-posts.tsx | 92 ++ src/util.tsx | 22 + templates/index.html.hbs | 46 +- templates/posts_list.html.hbs | 7 +- tsconfig.json | 15 + 17 files changed, 413 insertions(+), 2603 deletions(-) create mode 100644 .gitignore delete mode 100644 Cargo.lock delete mode 100644 Cargo.toml create mode 100644 bun.lockb create mode 100644 justfile create mode 100644 package.json create mode 100644 src/index.tsx delete mode 100644 src/main.rs create mode 100644 src/recent-posts.tsx create mode 100644 src/util.tsx create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c12830 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# build outputs +package-lock.json +dist/ +target/ + +# common artifact extensions +**/*.trace +**/*.zip +**/*.tar.gz +**/*.tgz +**/*.log +**/*.bun diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 55ee948..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,2419 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" - -[[package]] -name = "atomic" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "binascii" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "bytemuck" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" - -[[package]] -name = "cc" -version = "1.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.6", -] - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "percent-encoding", - "time", - "version_check", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3df4f93e5fbbe73ec01ec8d3f68bba73107993a5b1e7519273c32db9b0d5be" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa", - "phf 0.11.2", - "smallvec", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "devise" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d90b0c4c777a2cad215e3c7be59ac7c15adf45cf76317009b7d096d46f651d" -dependencies = [ - "devise_codegen", - "devise_core", -] - -[[package]] -name = "devise_codegen" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b28680d8be17a570a2334922518be6adc3f58ecc880cbb404eaeb8624fd867" -dependencies = [ - "devise_core", - "quote", -] - -[[package]] -name = "devise_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b035a542cf7abf01f2e3c4d5a7acbaebfefe120ae4efc7bde3df98186e4b8af7" -dependencies = [ - "bitflags 2.6.0", - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dtoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "ego-tree" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642" - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[package]] -name = "figment" -version = "0.10.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" -dependencies = [ - "atomic 0.6.0", - "pear", - "serde", - "toml", - "uncased", - "version_check", -] - -[[package]] -name = "filetime" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.59.0", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" -dependencies = [ - "libc", -] - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "generator" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getopts" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "handlebars" -version = "5.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08485b96a0e6393e9e4d1b8d48cf74ad6c063cd905eb33f42c1ce3f0377539b" -dependencies = [ - "log", - "pest", - "pest_derive", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "hashbrown" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - -[[package]] -name = "html5ever" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "indexmap" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" -dependencies = [ - "equivalent", - "hashbrown", - "serde", -] - -[[package]] -name = "inlinable_string" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" - -[[package]] -name = "inotify" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "is-terminal" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "kqueue" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.159" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", - "redox_syscall", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "markup5ever" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" -dependencies = [ - "log", - "phf 0.11.2", - "phf_codegen 0.11.2", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http 1.1.0", - "httparse", - "memchr", - "mime", - "spin", - "tokio", - "tokio-util", - "version_check", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "normpath" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "notify" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" -dependencies = [ - "bitflags 2.6.0", - "crossbeam-channel", - "filetime", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "log", - "mio 0.8.11", - "walkdir", - "windows-sys 0.48.0", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "pear" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" -dependencies = [ - "inlinable_string", - "pear_codegen", - "yansi", -] - -[[package]] -name = "pear_codegen" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" -dependencies = [ - "once_cell", - "pest", - "sha2", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared 0.10.0", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - -[[package]] -name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro2" -version = "1.0.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "version_check", - "yansi", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "ref-cast" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "regex" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rocket" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a516907296a31df7dc04310e7043b61d71954d703b603cc6867a026d7e72d73f" -dependencies = [ - "async-stream", - "async-trait", - "atomic 0.5.3", - "binascii", - "bytes", - "either", - "figment", - "futures", - "indexmap", - "log", - "memchr", - "multer", - "num_cpus", - "parking_lot", - "pin-project-lite", - "rand", - "ref-cast", - "rocket_codegen", - "rocket_http", - "serde", - "state", - "tempfile", - "time", - "tokio", - "tokio-stream", - "tokio-util", - "ubyte", - "version_check", - "yansi", -] - -[[package]] -name = "rocket_codegen" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575d32d7ec1a9770108c879fc7c47815a80073f96ca07ff9525a94fcede1dd46" -dependencies = [ - "devise", - "glob", - "indexmap", - "proc-macro2", - "quote", - "rocket_http", - "syn", - "unicode-xid", - "version_check", -] - -[[package]] -name = "rocket_dyn_templates" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bbab919c9e67df3f7ac6624a32ef897df4cd61c0969f4d66f3ced0534660d7a" -dependencies = [ - "handlebars", - "normpath", - "notify", - "rocket", - "walkdir", -] - -[[package]] -name = "rocket_http" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9" -dependencies = [ - "cookie", - "either", - "futures", - "http 0.2.12", - "hyper", - "indexmap", - "log", - "memchr", - "pear", - "percent-encoding", - "pin-project-lite", - "ref-cast", - "serde", - "smallvec", - "stable-pattern", - "state", - "time", - "tokio", - "uncased", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustix" -version = "0.38.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scraper" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90460b31bfe1fc07be8262e42c665ad97118d4585869de9345a84d501a9eaf0" -dependencies = [ - "ahash", - "cssparser", - "ego-tree", - "getopts", - "html5ever", - "once_cell", - "selectors", - "tendril", -] - -[[package]] -name = "selectors" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" -dependencies = [ - "bitflags 2.6.0", - "cssparser", - "derive_more", - "fxhash", - "log", - "new_debug_unreachable", - "phf 0.10.1", - "phf_codegen 0.10.0", - "precomputed-hash", - "servo_arc", - "smallvec", -] - -[[package]] -name = "sepiatones_xyz" -version = "1.0.0" -dependencies = [ - "chrono", - "rocket", - "rocket_dyn_templates", - "scraper", - "serde", -] - -[[package]] -name = "serde" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.128" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "servo_arc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d036d71a959e00c77a63538b90a6c2390969f9772b096ea837205c6bd0491a44" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "stable-pattern" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" -dependencies = [ - "memchr", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "state" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" -dependencies = [ - "loom", -] - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "syn" -version = "2.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tokio" -version = "1.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio 1.0.2", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ubyte" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" -dependencies = [ - "serde", -] - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uncased" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" -dependencies = [ - "serde", - "version_check", -] - -[[package]] -name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -dependencies = [ - "memchr", -] - -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" -dependencies = [ - "is-terminal", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 4fe9fde..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "sepiatones_xyz" -version = "1.0.0" -edition = "2021" - -[dependencies] -# webserver framework -rocket = "0.5.1" -rocket_dyn_templates = { version = "0.2.0", features = ["handlebars"] } -# data serialization -serde = { version = "1.0.210", features = ["derive"] } -# HTML parsing -scraper = "0.20.0" -# handling times/dates -chrono = { version = "0.4.38", features = ["serde"] } diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..8cd5f52420217f158b2ebed7df14e6f96b33239b GIT binary patch literal 29669 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 literal 0 HcmV?d00001 diff --git a/data/pages/about.html b/data/pages/about.html index 3536c84..c741be7 100644 --- a/data/pages/about.html +++ b/data/pages/about.html @@ -1,11 +1,43 @@

About

-

I program sometimes. I can't decide on a language.

-

Lately I'm focused on processing e-sports statistics in rust for degenerate betting purposes, and writing games in zig with raylib.

-

This blog was made with htmx and rust. I will not post the code unless you bother me about it, because I am lazy.

+

bio: mechanist, worldbuilder, hierophant

+

Current Interests/Projects

+
    +
  • + building civ+, a game, a social experiment, + and living world +
  • +
  • building Pantalaimon, an AI agent system (coming soon)
  • +
  • + finishing up a little + gomoku! webapp +
  • +
+

Dormant Interests/Projects

+
    +
  • + esports data analysis, especially for professional League of Legends +
  • +
  • game engine development
  • +
  • programming language design
  • +
  • fiction writing
  • +
+

Favorite Languages/Tools

+
    +
  • Rust
  • +
  • TypeScript
  • +
  • Kotlin
  • +
  • Scala
  • +
  • HTMX
  • +

Socials

+
+

+ This website was made with htmx and rust. I will not post the code unless + you bother me about it, because I am lazy. +

diff --git a/data/posts/other_post.html b/data/posts/other_post.html index c5abe08..51c60b1 100644 --- a/data/posts/other_post.html +++ b/data/posts/other_post.html @@ -1,6 +1,6 @@ - - + +

Welcome to another post!

diff --git a/data/style/monospace.css b/data/style/monospace.css index 00010cb..c41b3b3 100644 --- a/data/style/monospace.css +++ b/data/style/monospace.css @@ -1,8 +1,8 @@ -@import url('https://fonts.cdnfonts.com/css/jetbrains-mono-2'); +@import url("https://fonts.cdnfonts.com/css/jetbrains-mono-2"); :root { --font-family: "JetBrains Mono", monospace; - --line-height: 1.20rem; + --line-height: 1.2rem; --border-thickness: 2px; --text-color: #000; --text-color-alt: #666; @@ -64,17 +64,26 @@ body { } } -h1, h2, h3, h4, h5, h6 { +h1, +h2, +h3, +h4, +h5, +h6 { font-weight: var(--font-weight-bold); margin: 0 0; line-height: var(--line-height); } -h1, h2 { +h1, +h2 { margin-bottom: var(--line-height); } -h3, h4, h5, h6 { +h3, +h4, +h5, +h6 { margin-bottom: 0; } @@ -89,7 +98,7 @@ h2 { } h3 { - font-size: 1.0rem; + font-size: 1rem; text-transform: uppercase; } @@ -116,7 +125,8 @@ a { text-decoration-thickness: var(--border-thickness); } -a:link, a:visited { +a:link, +a:visited { color: var(--text-color); } @@ -138,7 +148,7 @@ sub { vertical-align: sub; line-height: 0; width: calc(1ch / 0.75); - font-size: .75rem; + font-size: 0.75rem; } table { @@ -149,13 +159,12 @@ table { margin: 0 0 calc(var(--line-height) * 2); } -th, td { +th, +td { border: var(--border-thickness) solid var(--text-color); - padding: - calc((var(--line-height) / 2)) + padding: calc((var(--line-height) / 2)) calc(1ch - var(--border-thickness) / 2) - calc((var(--line-height) / 2) - (var(--border-thickness))) - ; + calc((var(--line-height) / 2) - (var(--border-thickness))); line-height: var(--line-height); vertical-align: top; text-align: left; @@ -164,7 +173,6 @@ table tbody tr:first-child > * { padding-top: calc((var(--line-height) / 2) - var(--border-thickness)); } - th { font-weight: 700; } @@ -191,7 +199,8 @@ p { hyphens: auto; } -img, video { +img, +video { display: block; width: 100%; object-fit: contain; @@ -218,11 +227,11 @@ details[open] summary { details ::marker { display: inline-block; - content: '▶'; + content: "▶"; margin: 0; } details[open] ::marker { - content: '▼'; + content: "▼"; } details :last-child { @@ -239,7 +248,8 @@ figure pre { margin: 0; } -pre, code { +pre, +code { font-family: var(--font-family); } @@ -259,7 +269,8 @@ figcaption { margin-top: var(--line-height); } -ul, ol { +ul, +ol { padding: 0; margin: 0 0 var(--line-height); } @@ -296,13 +307,14 @@ li::marker { } ::-webkit-scrollbar { - height: var(--line-height); + height: var(--line-height); } -input, button, textarea { +input, +button, +textarea { border: var(--border-thickness) solid var(--text-color); - padding: - calc(var(--line-height) / 2 - var(--border-thickness)) + padding: calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness)); margin: 0; font: inherit; @@ -318,7 +330,7 @@ input, button, textarea { -webkit-appearance: none; } -input[type=checkbox] { +input[type="checkbox"] { display: inline-grid; place-content: center; vertical-align: top; @@ -326,14 +338,15 @@ input[type=checkbox] { height: var(--line-height); cursor: pointer; } -input[type=checkbox]:checked:before { +input[type="checkbox"]:checked:before { content: ""; width: 1ch; height: calc(var(--line-height) / 2); background: var(--text-color); } -button:focus, input:focus { +button:focus, +input:focus { --border-thickness: 3px; outline: none; } @@ -350,7 +363,7 @@ input { } button::-moz-focus-inner { padding: 0; - border: 0 + border: 0; } button { @@ -379,7 +392,8 @@ label input { width: 100%; } -.tree, .tree ul { +.tree, +.tree ul { position: relative; padding-left: 0; list-style-type: none; @@ -420,28 +434,59 @@ label input { --grid-cells: 0; display: flex; gap: 1ch; - width: calc(round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1))); + width: calc( + round(down, 100%, (1ch * var(--grid-cells)) - (1ch * var(--grid-cells) - 1)) + ); margin-bottom: var(--line-height); } .grid > *, .grid > input { - flex: 0 0 calc(round(down, (100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells), 1ch)); + flex: 0 0 + calc( + round( + down, + (100% - (1ch * (var(--grid-cells) - 1))) / var(--grid-cells), + 1ch + ) + ); +} +.grid:has(> :last-child:nth-child(1)) { + --grid-cells: 1; +} +.grid:has(> :last-child:nth-child(2)) { + --grid-cells: 2; +} +.grid:has(> :last-child:nth-child(3)) { + --grid-cells: 3; +} +.grid:has(> :last-child:nth-child(4)) { + --grid-cells: 4; +} +.grid:has(> :last-child:nth-child(5)) { + --grid-cells: 5; +} +.grid:has(> :last-child:nth-child(6)) { + --grid-cells: 6; +} +.grid:has(> :last-child:nth-child(7)) { + --grid-cells: 7; +} +.grid:has(> :last-child:nth-child(8)) { + --grid-cells: 8; +} +.grid:has(> :last-child:nth-child(9)) { + --grid-cells: 9; } -.grid:has(> :last-child:nth-child(1)) { --grid-cells: 1; } -.grid:has(> :last-child:nth-child(2)) { --grid-cells: 2; } -.grid:has(> :last-child:nth-child(3)) { --grid-cells: 3; } -.grid:has(> :last-child:nth-child(4)) { --grid-cells: 4; } -.grid:has(> :last-child:nth-child(5)) { --grid-cells: 5; } -.grid:has(> :last-child:nth-child(6)) { --grid-cells: 6; } -.grid:has(> :last-child:nth-child(7)) { --grid-cells: 7; } -.grid:has(> :last-child:nth-child(8)) { --grid-cells: 8; } -.grid:has(> :last-child:nth-child(9)) { --grid-cells: 9; } /* DEBUG UTILITIES */ .debug .debug-grid { - --color: color-mix(in srgb, var(--text-color) 10%, var(--background-color) 90%); + --color: color-mix( + in srgb, + var(--text-color) 10%, + var(--background-color) 90% + ); position: absolute; top: 0; left: 0; diff --git a/data/style/style.css b/data/style/style.css index 73d6d03..163addf 100644 --- a/data/style/style.css +++ b/data/style/style.css @@ -6,18 +6,18 @@ --background-overlay: #f2e9e1; } -a { +a:link { color: #56949f; text-decoration: underline; cursor: pointer; } a:hover { - color: #286983; + color: #907aa9; } a:visited { - color: #907aa9; + color: #286983; } ::selection { diff --git a/justfile b/justfile new file mode 100644 index 0000000..8658314 --- /dev/null +++ b/justfile @@ -0,0 +1,25 @@ +install: + bun install + +dev: + bun run --watch src/index.tsx + +build: + bun build --compile --minify --target bun --outfile ./target/sepiatones_xyz ./src/index.tsx + +deploy: build + rsync -avz target/sepiatones_xyz sepiatonesxyz:~/sepiatones_xyz/sepiatones_xyz + rsync -avz --delete public/ sepiatonesxyz:~/sepiatones_xyz/public + +test: + bun test + +check: + bunx tsc --noEmit --skipLibCheck + +clean: + rm -rf node_modules + rm -rf dist + +format: + bun run prettier . --write diff --git a/package.json b/package.json new file mode 100644 index 0000000..d574dd1 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "sepiatones_xyz", + "version": "2.0.0", + "dependencies": { + "@elysiajs/html": "^1.3.0", + "@elysiajs/static": "^1.3.0", + "cheerio": "^1.1.2", + "elysia": "latest", + "handlebars": "^4.7.8" + }, + "devDependencies": { + "bun-types": "latest", + "prettier": "^3.6.2" + }, + "module": "src/index.js" +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..e535059 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,53 @@ +import { Elysia } from "elysia"; +import { html } from "@elysiajs/html"; +import { staticPlugin } from "@elysiajs/static"; +import path from "path"; +import fs from "fs/promises"; + +import { renderTemplate } from "./util"; +import { recentPosts } from "./recent-posts"; + +const app = new Elysia() + .use( + staticPlugin({ + assets: "./data/style", + prefix: "/style", + }), + ) + .use(html()) + .get("/", async ({ set }) => { + try { + const content = await fs.readFile( + path.join(process.cwd(), "data/pages/about.html"), + "utf8", + ); + return renderTemplate("index.html", { content }); + } catch (error) { + console.error("Error serving main page: ", error); + set.status = 500; + set.headers["Content-Type"] = "text/plain"; + return "Internal server error"; + } + }) + .get("/posts/:post_name", async ({ params, set }) => { + try { + const filePath = path.join( + process.cwd(), + "data/posts", + `${params.post_name}.html`, + ); + const fileContent = await fs.readFile(filePath, "utf8"); + return renderTemplate("index.html", { content: fileContent }); + } catch (error) { + console.error(`Error serving post ${params.post_name}: `, error); + set.status = 404; + set.headers["Content-Type"] = "text/plain"; + return "Post not found."; + } + }) + .use(recentPosts); + +const port = Number(process.env.PORT || 3000); +app.listen(port, () => { + console.log(`🦊 Elysia is running at ${app.server?.hostname}:${port}`); +}); diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 9889039..0000000 --- a/src/main.rs +++ /dev/null @@ -1,102 +0,0 @@ -#[macro_use] -extern crate rocket; - -use chrono::{DateTime, Utc}; -use rocket::fs::NamedFile; -use rocket_dyn_templates::{context, Template}; -use scraper::{Html, Selector}; -use serde::Serialize; -use std::collections::HashMap; -use std::path::Path; - -#[get("/")] -fn serve_main() -> Template { - Template::render( - "index", - context! { - content: std::fs::read_to_string("data/pages/about.html").unwrap_or_else(|_| "Error loading about page.".to_string()) - }, - ) -} - -#[get("/posts/")] -async fn serve_post(post_name: &str) -> Template { - let file_path = Path::new("data/posts").join(format!("{}.html", post_name)); - let file_maybe = std::fs::read_to_string(file_path); - let file = match file_maybe.ok() { - Some(s) => s, - None => "404: File not found.".to_string(), - }; - Template::render( - "index", - context! { - content: file - }, - ) -} - -#[get("/style/")] -async fn serve_css(file: &str) -> Option { - let file_path = Path::new("data/style").join(format!("{}", file)); - NamedFile::open(file_path).await.ok() -} - -#[get("/recent_posts")] -fn list_recent_posts() -> Template { - #[derive(Serialize)] - struct Post { - title: String, - path: String, - date: String, - date_utc: DateTime, - } - - let posts_dir = Path::new("data/posts"); - - let mut posts = Vec::new(); - if let Ok(entries) = std::fs::read_dir(posts_dir) { - for entry in entries { - if let Ok(entry) = entry { - if let Some(file_name) = entry.file_name().to_str() { - if file_name.ends_with(".html") { - let file = match std::fs::read_to_string(posts_dir.join(file_name)) { - Ok(s) => s, - Err(_) => continue, - }; - let document = Html::parse_document(file.as_str()); - let mut tags: HashMap<&str, &str> = HashMap::new(); - for meta_tag in document.select(&Selector::parse("meta").unwrap()) { - let name = meta_tag.value().attr("name").unwrap_or(""); - let content = meta_tag.value().attr("content").unwrap_or(""); - tags.insert(name, content); - } - let title = tags.get("title").unwrap_or(&"Untitled Post").to_string(); - let date_utc = tags - .get("date") - .and_then(|s_date| DateTime::parse_from_rfc3339(s_date).ok()) - .map(|dt| dt.with_timezone(&Utc)) - .unwrap_or_else(|| DateTime::from_timestamp(0, 0).unwrap()); - let date = date_utc.format("%d-%m-%Y").to_string(); - posts.push(Post { - title, - date_utc, - date, - path: format!("/posts/{}", file_name.trim_end_matches(".html")), - }); - } - } - } - } - } - - posts.sort_by_key(|post| std::cmp::Reverse(post.date_utc)); - - Template::render("posts_list", context! { posts: posts }) -} - -#[launch] -fn rocket() -> _ { - rocket::build() - .mount("/", routes![serve_post, serve_main, serve_css, list_recent_posts]) - .attach(Template::fairing()) -} diff --git a/src/recent-posts.tsx b/src/recent-posts.tsx new file mode 100644 index 0000000..2115ae4 --- /dev/null +++ b/src/recent-posts.tsx @@ -0,0 +1,92 @@ +import { Elysia } from "elysia"; +import * as cheerio from "cheerio"; +import path from "path"; +import fs from "fs/promises"; +import { renderTemplate } from "./util"; + +interface Post { + title: string; + path: string; + date: string; + date_utc: Date; +} + +export const recentPosts = (app: Elysia) => + app.get("/recent_posts", async ({ set }) => { + const postsDir = path.join(process.cwd(), "data/posts"); + const posts: Post[] = []; + + try { + const entries = await fs.readdir(postsDir, { withFileTypes: true }); + + for (const entry of entries) { + if (entry.isFile() && entry.name.endsWith(".html")) { + const filePath = path.join(postsDir, entry.name); + try { + const fileContent = await fs.readFile(filePath, "utf8"); + const $ = cheerio.load(fileContent); + + // Get a map of the post's metadata tags + const tags: { [key: string]: string } = {}; + $("meta").each((_i, el) => { + const name = $(el).attr("name"); + const content = $(el).attr("content"); + if (name && content) { + tags[name] = content; + } + }); + + const title = tags["title"] || "Untitled Post"; + + const dateStr = tags["date"]; + let date_utc: Date; + if (dateStr) { + try { + date_utc = new Date(dateStr); + if (isNaN(date_utc.getTime())) { + // Check for invalid date + date_utc = new Date(0); // Epoch start if invalid + } + } catch (e) { + console.warn( + `Could not parse date ${dateStr} for ${entry.name}, using epoch.`, + e, + ); + date_utc = new Date(0); // Epoch start if parsing fails + } + } else { + date_utc = new Date(0); // Epoch start if no date provided + } + // dd-mm-yyyy + const date = date_utc.toLocaleDateString("en-GB", { + day: "2-digit", + month: "2-digit", + year: "numeric", + }); + + posts.push({ + title, + date_utc, + date, + path: `/posts/${entry.name.replace(".html", "")}`, + }); + } catch (readError) { + console.error( + `Error reading or processing file ${entry.name}:`, + readError, + ); + continue; + } + } + } + + posts.sort((a, b) => b.date_utc.getTime() - a.date_utc.getTime()); // Sort by date_utc descending + + return renderTemplate("posts_list.html", { posts }); + } catch (error) { + console.error("Error listing recent posts: ", error); + set.status = 500; + set.headers["Content-Type"] = "text/plain"; + return "Internal Server Error"; + } + }); diff --git a/src/util.tsx b/src/util.tsx new file mode 100644 index 0000000..e09255a --- /dev/null +++ b/src/util.tsx @@ -0,0 +1,22 @@ +import Handlebars from "handlebars"; +import path from "path"; +import fs from "fs/promises"; + +export async function renderTemplate( + templateName: string, + context: Record, +) { + try { + const templatePath = path.join( + process.cwd(), + "templates", + `${templateName}.hbs`, + ); + const templateContent = await fs.readFile(templatePath, "utf8"); + const template = Handlebars.compile(templateContent); + return template(context); + } catch (error) { + console.error(`Error rendering template ${templateName}:`, error); + return `Error rendering template ${templateName}`; + } +} diff --git a/templates/index.html.hbs b/templates/index.html.hbs index 6b29c69..4ed227f 100644 --- a/templates/index.html.hbs +++ b/templates/index.html.hbs @@ -1,20 +1,32 @@ - - - - - - -
-

sepiatones.xyz

- -
-
+ + + + + + +
+

sepiatones.xyz

+ +
+
{{{content}}} - +
- - + + \ No newline at end of file diff --git a/templates/posts_list.html.hbs b/templates/posts_list.html.hbs index 866fa74..e191248 100644 --- a/templates/posts_list.html.hbs +++ b/templates/posts_list.html.hbs @@ -1,9 +1,12 @@

Posts - X + X

+ \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..34a8b7c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "module": "ES2022", + "moduleResolution": "node", + "skipLibCheck": true, + "strict": true, + "target": "ES2021", + "types": ["bun-types"], + "jsx": "react", + "jsxFactory": "Html.createElement", + "jsxFragmentFactory": "Html.Fragment" + } +}