From bfa6d2c8d9bf3ea30a47dc98d323e357bd4c5bde Mon Sep 17 00:00:00 2001 From: rm-dr <96270320+rm-dr@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:25:30 -0800 Subject: [PATCH] Migrate to `servable` --- Cargo.lock | 305 +++---- Cargo.toml | 13 +- README.md | 27 + crates/lib/page/Cargo.toml | 21 - crates/lib/page/htmx/htmx-2.0.8.min.js | 1 - crates/lib/page/htmx/json-enc-1.9.12.js | 11 - crates/lib/page/src/lib.rs | 25 - crates/lib/page/src/route.rs | 275 ------ crates/lib/page/src/servable/asset.rs | 175 ---- crates/lib/page/src/servable/mod.rs | 26 - crates/lib/page/src/servable/page.rs | 309 ------- crates/lib/page/src/servable/redirect.rs | 48 -- crates/lib/page/src/types.rs | 110 --- crates/lib/pixel-transform/Cargo.toml | 16 - crates/lib/pixel-transform/src/chain.rs | 159 ---- crates/lib/pixel-transform/src/lib.rs | 6 - crates/lib/pixel-transform/src/pixeldim.rs | 68 -- .../pixel-transform/src/transformers/crop.rs | 184 ---- .../src/transformers/maxdim.rs | 82 -- .../pixel-transform/src/transformers/mod.rs | 165 ---- crates/lib/toolbox/Cargo.toml | 1 - crates/lib/toolbox/src/lib.rs | 2 - crates/lib/toolbox/src/logging.rs | 2 + crates/lib/toolbox/src/mime.rs | 811 ------------------ crates/lib/toolbox/src/misc.rs | 36 - crates/macro/macro-sass/Cargo.toml | 16 - crates/macro/macro-sass/src/lib.rs | 149 ---- crates/service/service-webpage/Cargo.toml | 5 +- .../service-webpage/assets/lockhart.pdf | Bin 0 -> 400277 bytes .../service-webpage/src/components/md/mod.rs | 2 +- .../service-webpage/src/pages/handouts.rs | 24 +- .../service-webpage/src/pages/index.rs | 29 +- .../service/service-webpage/src/pages/mod.rs | 168 ++-- .../service-webpage/src/pages/notfound.rs | 29 - .../service/service-webpage/src/routes/mod.rs | 421 +++++---- .../service-webpage/css => css}/blocks.scss | 0 .../css => css}/fontawesome/_animated.scss | 0 .../fontawesome/_bordered-pulled.scss | 0 .../css => css}/fontawesome/_core.scss | 0 .../css => css}/fontawesome/_fixed-width.scss | 0 .../css => css}/fontawesome/_functions.scss | 0 .../css => css}/fontawesome/_icons.scss | 0 .../css => css}/fontawesome/_list.scss | 0 .../css => css}/fontawesome/_mixins.scss | 0 .../fontawesome/_rotated-flipped.scss | 0 .../fontawesome/_screen-reader.scss | 0 .../css => css}/fontawesome/_shims.scss | 0 .../css => css}/fontawesome/_sizing.scss | 0 .../css => css}/fontawesome/_stacked.scss | 0 .../css => css}/fontawesome/_variables.scss | 0 .../css => css}/fontawesome/brands.scss | 0 .../css => css}/fontawesome/fontawesome.scss | 0 .../css => css}/fontawesome/regular.scss | 0 .../css => css}/fontawesome/solid.scss | 0 .../css => css}/fontawesome/v4-shims.scss | 0 .../service-webpage/css => css}/images.scss | 0 .../service-webpage/css => css}/main.scss | 0 .../service-webpage/css => css}/special.scss | 0 .../service-webpage/css => css}/text.scss | 0 59 files changed, 559 insertions(+), 3162 deletions(-) delete mode 100644 crates/lib/page/Cargo.toml delete mode 100644 crates/lib/page/htmx/htmx-2.0.8.min.js delete mode 100644 crates/lib/page/htmx/json-enc-1.9.12.js delete mode 100644 crates/lib/page/src/lib.rs delete mode 100644 crates/lib/page/src/route.rs delete mode 100644 crates/lib/page/src/servable/asset.rs delete mode 100644 crates/lib/page/src/servable/mod.rs delete mode 100644 crates/lib/page/src/servable/page.rs delete mode 100644 crates/lib/page/src/servable/redirect.rs delete mode 100644 crates/lib/page/src/types.rs delete mode 100644 crates/lib/pixel-transform/Cargo.toml delete mode 100644 crates/lib/pixel-transform/src/chain.rs delete mode 100644 crates/lib/pixel-transform/src/lib.rs delete mode 100644 crates/lib/pixel-transform/src/pixeldim.rs delete mode 100644 crates/lib/pixel-transform/src/transformers/crop.rs delete mode 100644 crates/lib/pixel-transform/src/transformers/maxdim.rs delete mode 100644 crates/lib/pixel-transform/src/transformers/mod.rs delete mode 100644 crates/lib/toolbox/src/mime.rs delete mode 100644 crates/lib/toolbox/src/misc.rs delete mode 100644 crates/macro/macro-sass/Cargo.toml delete mode 100644 crates/macro/macro-sass/src/lib.rs create mode 100644 crates/service/service-webpage/assets/lockhart.pdf delete mode 100644 crates/service/service-webpage/src/pages/notfound.rs rename {crates/service/service-webpage/css => css}/blocks.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_animated.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_bordered-pulled.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_core.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_fixed-width.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_functions.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_icons.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_list.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_mixins.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_rotated-flipped.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_screen-reader.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_shims.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_sizing.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_stacked.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/_variables.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/brands.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/fontawesome.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/regular.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/solid.scss (100%) rename {crates/service/service-webpage/css => css}/fontawesome/v4-shims.scss (100%) rename {crates/service/service-webpage/css => css}/images.scss (100%) rename {crates/service/service-webpage/css => css}/main.scss (100%) rename {crates/service/service-webpage/css => css}/special.scss (100%) rename {crates/service/service-webpage/css => css}/text.scss (100%) diff --git a/Cargo.lock b/Cargo.lock index 755c5a8..e1a6c6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,6 +29,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "377e4c0ba83e4431b10df45c1d4666f178ea9c552cac93e60c3a88bf32785923" +dependencies = [ + "as-slice", +] + [[package]] name = "aligned-vec" version = "0.6.4" @@ -165,6 +174,15 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "ast_node" version = "5.0.0" @@ -201,6 +219,26 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.17", + "v_frame", + "y4m", +] + [[package]] name = "av1-grain" version = "0.2.5" @@ -226,9 +264,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" dependencies = [ "axum-core", "axum-macros", @@ -342,9 +380,12 @@ checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitstream-io" -version = "2.6.0" +version = "4.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" +checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" +dependencies = [ + "core2", +] [[package]] name = "block-buffer" @@ -378,9 +419,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.7" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" +checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" @@ -466,16 +507,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-if" version = "1.0.4" @@ -640,6 +671,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -965,9 +1005,9 @@ dependencies = [ [[package]] name = "exr" -version = "1.73.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" dependencies = [ "bit_field", "half", @@ -1222,9 +1262,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.13.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +checksum = "f954a9e9159ec994f73a30a12b96a702dde78f5547bcb561174597924f7d4162" dependencies = [ "color_quant", "weezl", @@ -1245,6 +1285,7 @@ dependencies = [ "clap", "getrandom 0.2.16", "grass_compiler", + "include_sass", ] [[package]] @@ -1601,9 +1642,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.8" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", @@ -1619,8 +1660,8 @@ dependencies = [ "rayon", "rgb", "tiff", - "zune-core", - "zune-jpeg", + "zune-core 0.5.0", + "zune-jpeg 0.5.5", ] [[package]] @@ -1639,6 +1680,17 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" +[[package]] +name = "include_sass" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6090ec145f7cf645ff53998a54d3fc77ae02d71651093ee53806769eb40ea1f" +dependencies = [ + "grass_compiler", + "quote", + "syn 2.0.108", +] + [[package]] name = "indexmap" version = "2.12.0" @@ -1695,15 +1747,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -1886,15 +1929,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "macro-sass" -version = "0.0.1" -dependencies = [ - "grass", - "quote", - "syn 2.0.108", -] - [[package]] name = "markdown-it" version = "0.6.1" @@ -2277,22 +2311,6 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" -[[package]] -name = "page" -version = "0.0.1" -dependencies = [ - "axum", - "chrono", - "maud", - "pixel-transform", - "serde", - "serde_urlencoded", - "tokio", - "toolbox", - "tower", - "tracing", -] - [[package]] name = "parking_lot" version = "0.12.5" @@ -2322,6 +2340,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "percent-encoding" version = "2.3.2" @@ -2410,17 +2434,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pixel-transform" -version = "0.0.1" -dependencies = [ - "image", - "serde", - "strum", - "thiserror 2.0.17", - "toolbox", -] - [[package]] name = "pkg-config" version = "0.3.32" @@ -2573,7 +2586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools", "proc-macro2", "quote", "syn 2.0.108", @@ -2778,19 +2791,21 @@ dependencies = [ [[package]] name = "rav1e" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" dependencies = [ + "aligned-vec", "arbitrary", "arg_enum_proc_macro", "arrayvec", + "av-scenechange", "av1-grain", "bitstream-io", "built", "cfg-if", "interpolate_name", - "itertools 0.12.1", + "itertools", "libc", "libfuzzer-sys", "log", @@ -2799,23 +2814,21 @@ dependencies = [ "noop_proc_macro", "num-derive", "num-traits", - "once_cell", "paste", "profiling", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.2", + "rand_chacha 0.9.0", "simd_helpers", - "system-deps", - "thiserror 1.0.69", + "thiserror 2.0.17", "v_frame", "wasm-bindgen", ] [[package]] name = "ravif" -version = "0.11.20" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" +checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" dependencies = [ "avif-serialize", "imgref", @@ -3208,15 +3221,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_spanned" version = "1.0.3" @@ -3238,6 +3242,26 @@ dependencies = [ "serde", ] +[[package]] +name = "servable" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee682f2af773f19ca10ffafc5fe367a6a4f4a0d3b53b8724487677f46df473ae" +dependencies = [ + "axum", + "chrono", + "image", + "maud", + "rand 0.9.2", + "serde", + "serde_urlencoded", + "strum", + "thiserror 2.0.17", + "tokio", + "tower", + "tracing", +] + [[package]] name = "service-webpage" version = "0.0.1" @@ -3245,20 +3269,19 @@ dependencies = [ "axum", "chrono", "emojis", + "grass", "lazy_static", "libservice", - "macro-sass", "markdown-it", "maud", "md-footnote", - "page", "parking_lot", "reqwest", "serde", + "servable", "strum", "tokio", - "toml 0.9.8", - "toolbox", + "toml", "tower-http", "tracing", ] @@ -3592,25 +3615,6 @@ dependencies = [ "yaml-rust", ] -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck", - "pkg-config", - "toml 0.8.23", - "version-compare", -] - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - [[package]] name = "tempfile" version = "3.23.0" @@ -3762,7 +3766,7 @@ dependencies = [ "half", "quick-error", "weezl", - "zune-jpeg", + "zune-jpeg 0.4.21", ] [[package]] @@ -3883,18 +3887,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit", -] - [[package]] name = "toml" version = "0.9.8" @@ -3903,22 +3895,13 @@ checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.3", - "toml_datetime 0.7.3", + "serde_spanned", + "toml_datetime", "toml_parser", "toml_writer", "winnow", ] -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - [[package]] name = "toml_datetime" version = "0.7.3" @@ -3928,19 +3911,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "winnow", -] - [[package]] name = "toml_parser" version = "1.0.4" @@ -3970,7 +3940,6 @@ dependencies = [ "serde", "thiserror 2.0.17", "tokio", - "tracing", "tracing-loki", "tracing-subscriber", "url", @@ -4309,12 +4278,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" -[[package]] -name = "version-compare" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" - [[package]] name = "version_check" version = "0.9.5" @@ -4484,9 +4447,9 @@ dependencies = [ [[package]] name = "weezl" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009936b22a61d342859b5f0ea64681cbb35a358ab548e2a44a8cf0dac2d980b8" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "winapi" @@ -4748,9 +4711,6 @@ name = "winnow" version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" -dependencies = [ - "memchr", -] [[package]] name = "wit-bindgen" @@ -4764,6 +4724,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + [[package]] name = "yaml-rust" version = "0.4.5" @@ -4948,6 +4914,12 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +[[package]] +name = "zune-core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773" + [[package]] name = "zune-inflate" version = "0.2.54" @@ -4963,5 +4935,14 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" dependencies = [ - "zune-core", + "zune-core 0.4.12", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6fb7703e32e9a07fb3f757360338b3a567a5054f21b5f52a666752e333d58e" +dependencies = [ + "zune-core 0.5.0", ] diff --git a/Cargo.toml b/Cargo.toml index 0d992d5..0a49cc3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["crates/bin/*", "crates/lib/*", "crates/macro/*", "crates/service/*"] +members = ["crates/bin/*", "crates/lib/*", "crates/service/*"] resolver = "2" [workspace.package] @@ -64,17 +64,13 @@ type_complexity = "allow" # [workspace.dependencies] -macro-sass = { path = "crates/macro/macro-sass" } libservice = { path = "crates/lib/libservice" } toolbox = { path = "crates/lib/toolbox" } -page = { path = "crates/lib/page" } md-footnote = { path = "crates/lib/md-footnote" } md-dev = { path = "crates/lib/md-dev" } -pixel-transform = { path = "crates/lib/pixel-transform" } service-webpage = { path = "crates/service/service-webpage" } - # # MARK: Server # @@ -89,7 +85,7 @@ utoipa-swagger-ui = { version = "9.0.2", features = [ "vendored", ] } maud = { version = "0.27.0", features = ["axum"] } -grass = "0.13.4" +grass = { version = "0.13.4", features = ["macro"] } markdown-it = "0.6.1" emojis = "0.8.0" reqwest = { version = "0.12.24", default-features = false, features = [ @@ -103,6 +99,11 @@ reqwest = { version = "0.12.24", default-features = false, features = [ "charset", "blocking", ] } +servable = { version = "0.0.3", features = ["image", "htmx-2.0.8"] } +#servable = { path = "../servable/crates/servable", features = [ +# "image", +# "htmx-2.0.8", +#] } # diff --git a/README.md b/README.md index 2cba312..dda3ebd 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,30 @@ This library decouples compiled binaries from the services they provide, and mak - the `StaticAsset` servable serves static assets (css, images, misc files), and provides transformation parameters for image assets (via [`pixel-transform`](./crates/lib/pixel-transform)). - [`service/service-webpage`](./crates/service/service-webpage): A `Service` that runs a `PageServer` that provides the content on [betalupi.com] + + +## Todo: + +This web framework is nowhere near complete. Features are added as they are needed. + + +### Asset server +- generate asset server from dir, detect mime from file +- icon svg +- CORS,timeout, page cache + +### Misc: +- reactive components with react or htmx +- handout search +- self-contained email mangler +- check asset paths at compile-time (or at least in a test) + + +### Content: +- TetrOS: + - https://git.betalupi.com/Mark/tetros + - https://git.betalupi.com/Mark/tetris-os +- Pick: + - https://git.betalupi.com/Mark/pick +- Minimax +- HTWAH diff --git a/crates/lib/page/Cargo.toml b/crates/lib/page/Cargo.toml deleted file mode 100644 index 0ede90c..0000000 --- a/crates/lib/page/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "page" -version = { workspace = true } -rust-version = { workspace = true } -edition = { workspace = true } - -[lints] -workspace = true - -[dependencies] -toolbox = { workspace = true } -pixel-transform = { workspace = true } - -axum = { workspace = true } -tokio = { workspace = true } -tracing = { workspace = true } -maud = { workspace = true } -chrono = { workspace = true } -serde = { workspace = true } -tower = { workspace = true } -serde_urlencoded = { workspace = true } diff --git a/crates/lib/page/htmx/htmx-2.0.8.min.js b/crates/lib/page/htmx/htmx-2.0.8.min.js deleted file mode 100644 index faafa3e..0000000 --- a/crates/lib/page/htmx/htmx-2.0.8.min.js +++ /dev/null @@ -1 +0,0 @@ -var htmx=function(){"use strict";const Q={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){const n=dn(e,t||"post");return n.values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:true,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null,disableInheritance:false,responseHandling:[{code:"204",swap:false},{code:"[23]..",swap:true},{code:"[45]..",swap:false,error:true}],allowNestedOobSwaps:true,historyRestoreAsHxRequest:true,reportValidityOfForms:false},parseInterval:null,location:location,_:null,version:"2.0.8"};Q.onLoad=V;Q.process=Ft;Q.on=xe;Q.off=be;Q.trigger=ae;Q.ajax=Ln;Q.find=f;Q.findAll=x;Q.closest=g;Q.remove=_;Q.addClass=K;Q.removeClass=G;Q.toggleClass=W;Q.takeClass=Z;Q.swap=ze;Q.defineExtension=_n;Q.removeExtension=zn;Q.logAll=j;Q.logNone=$;Q.parseInterval=d;Q._=e;const n={addTriggerHandler:St,bodyContains:se,canAccessLocalStorage:X,findThisElement:Se,filterValues:yn,swap:ze,hasAttribute:s,getAttributeValue:a,getClosestAttributeValue:ne,getClosestMatch:q,getExpressionVars:Rn,getHeaders:mn,getInputValues:dn,getInternalData:oe,getSwapSpecification:bn,getTriggerSpecs:st,getTarget:Ee,makeFragment:D,mergeObjects:le,makeSettleInfo:Sn,oobSwap:Te,querySelectorExt:ue,settleImmediately:Yt,shouldCancel:ht,triggerEvent:ae,triggerErrorEvent:fe,withExtensions:Vt};const de=["get","post","put","delete","patch"];const R=de.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e instanceof Element&&e.getAttribute(t)}function s(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function a(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){const t=e.parentElement;if(!t&&e.parentNode instanceof ShadowRoot)return e.parentNode;return t}function te(){return document}function y(e,t){return e.getRootNode?e.getRootNode({composed:t}):te()}function q(e,t){while(e&&!t(e)){e=u(e)}return e||null}function o(e,t,n){const r=a(t,n);const o=a(t,"hx-disinherit");var i=a(t,"hx-inherit");if(e!==t){if(Q.config.disableInheritance){if(i&&(i==="*"||i.split(" ").indexOf(n)>=0)){return r}else{return null}}if(o&&(o==="*"||o.split(" ").indexOf(n)>=0)){return"unset"}}return r}function ne(t,n){let r=null;q(t,function(e){return!!(r=o(t,ce(e),n))});if(r!=="unset"){return r}}function h(e,t){return e instanceof Element&&e.matches(t)}function A(e){const t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;const n=t.exec(e);if(n){return n[1].toLowerCase()}else{return""}}function L(e){if("parseHTMLUnsafe"in Document){return Document.parseHTMLUnsafe(e)}const t=new DOMParser;return t.parseFromString(e,"text/html")}function N(e,t){while(t.childNodes.length>0){e.append(t.childNodes[0])}}function r(e){const t=te().createElement("script");ie(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}return t}function i(e){return e.matches("script")&&(e.type==="text/javascript"||e.type==="module"||e.type==="")}function I(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(i(e)){const t=r(e);const n=e.parentNode;try{n.insertBefore(t,e)}catch(e){H(e)}finally{e.remove()}}})}function D(e){const t=e.replace(/]*)?>[\s\S]*?<\/head>/i,"");const n=A(t);let r;if(n==="html"){r=new DocumentFragment;const i=L(e);N(r,i.body);r.title=i.title}else if(n==="body"){r=new DocumentFragment;const i=L(t);N(r,i.body);r.title=i.title}else{const i=L('");r=i.querySelector("template").content;r.title=i.title;var o=r.querySelector("title");if(o&&o.parentNode===r){o.remove();r.title=o.innerText}}if(r){if(Q.config.allowScriptTags){I(r)}else{r.querySelectorAll("script").forEach(e=>e.remove())}}return r}function re(e){if(e){e()}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function P(e){return typeof e==="function"}function k(e){return t(e,"Object")}function oe(e){const t="htmx-internal-data";let n=e[t];if(!n){n=e[t]={}}return n}function M(t){const n=[];if(t){for(let e=0;e=0}function se(e){return e.getRootNode({composed:true})===document}function B(e){return e.trim().split(/\s+/)}function le(e,t){for(const n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}return e}function v(e){try{return JSON.parse(e)}catch(e){H(e);return null}}function X(){const e="htmx:sessionStorageTest";try{sessionStorage.setItem(e,e);sessionStorage.removeItem(e);return true}catch(e){return false}}function U(e){const t=new URL(e,"http://x");if(t){e=t.pathname+t.search}if(e!="/"){e=e.replace(/\/+$/,"")}return e}function e(e){return On(te().body,function(){return eval(e)})}function V(t){const e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function j(){Q.logger=function(e,t,n){if(console){console.log(t,e,n)}}}function $(){Q.logger=null}function f(e,t){if(typeof e!=="string"){return e.querySelector(t)}else{return f(te(),e)}}function x(e,t){if(typeof e!=="string"){return e.querySelectorAll(t)}else{return x(te(),e)}}function b(){return window}function _(e,t){e=w(e);if(t){b().setTimeout(function(){_(e);e=null},t)}else{u(e).removeChild(e)}}function ce(e){return e instanceof Element?e:null}function z(e){return e instanceof HTMLElement?e:null}function J(e){return typeof e==="string"?e:null}function p(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function K(e,t,n){e=ce(w(e));if(!e){return}if(n){b().setTimeout(function(){K(e,t);e=null},n)}else{e.classList&&e.classList.add(t)}}function G(e,t,n){let r=ce(w(e));if(!r){return}if(n){b().setTimeout(function(){G(r,t);r=null},n)}else{if(r.classList){r.classList.remove(t);if(r.classList.length===0){r.removeAttribute("class")}}}}function W(e,t){e=w(e);e.classList.toggle(t)}function Z(e,t){e=w(e);ie(e.parentElement.children,function(e){G(e,t)});K(ce(e),t)}function g(e,t){e=ce(w(e));if(e){return e.closest(t)}return null}function l(e,t){return e.substring(0,t.length)===t}function Y(e,t){return e.substring(e.length-t.length)===t}function pe(e){const t=e.trim();if(l(t,"<")&&Y(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function m(t,r,n){if(r.indexOf("global ")===0){return m(t,r.slice(7),true)}t=w(t);const o=[];{let t=0;let n=0;for(let e=0;e"){t--}}if(n0){const r=pe(o.shift());let e;if(r.indexOf("closest ")===0){e=g(ce(t),pe(r.slice(8)))}else if(r.indexOf("find ")===0){e=f(p(t),pe(r.slice(5)))}else if(r==="next"||r==="nextElementSibling"){e=ce(t).nextElementSibling}else if(r.indexOf("next ")===0){e=ge(t,pe(r.slice(5)),!!n)}else if(r==="previous"||r==="previousElementSibling"){e=ce(t).previousElementSibling}else if(r.indexOf("previous ")===0){e=me(t,pe(r.slice(9)),!!n)}else if(r==="document"){e=document}else if(r==="window"){e=window}else if(r==="body"){e=document.body}else if(r==="root"){e=y(t,!!n)}else if(r==="host"){e=t.getRootNode().host}else{s.push(r)}if(e){i.push(e)}}if(s.length>0){const e=s.join(",");const c=p(y(t,!!n));i.push(...M(c.querySelectorAll(e)))}return i}var ge=function(t,e,n){const r=p(y(t,n)).querySelectorAll(e);for(let e=0;e=0;e--){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}};function ue(e,t){if(typeof e!=="string"){return m(e,t)[0]}else{return m(te().body,e)[0]}}function w(e,t){if(typeof e==="string"){return f(p(t)||document,e)}else{return e}}function ye(e,t,n,r){if(P(t)){return{target:te().body,event:J(e),listener:t,options:n}}else{return{target:w(e),event:J(t),listener:n,options:r}}}function xe(t,n,r,o){Gn(function(){const e=ye(t,n,r,o);e.target.addEventListener(e.event,e.listener,e.options)});const e=P(n);return e?n:r}function be(t,n,r){Gn(function(){const e=ye(t,n,r);e.target.removeEventListener(e.event,e.listener)});return P(n)?n:r}const ve=te().createElement("output");function we(t,n){const e=ne(t,n);if(e){if(e==="this"){return[Se(t,n)]}else{const r=m(t,e);const o=/(^|,)(\s*)inherit(\s*)($|,)/.test(e);if(o){const i=ce(q(t,function(e){return e!==t&&s(ce(e),n)}));if(i){r.push(...we(i,n))}}if(r.length===0){H('The selector "'+e+'" on '+n+" returned no matches!");return[ve]}else{return r}}}}function Se(e,t){return ce(q(e,function(e){return a(ce(e),t)!=null}))}function Ee(e){const t=ne(e,"hx-target");if(t){if(t==="this"){return Se(e,"hx-target")}else{return ue(e,t)}}else{const n=oe(e);if(n.boosted){return te().body}else{return e}}}function Ce(e){return Q.config.attributesToSettle.includes(e)}function Oe(t,n){ie(Array.from(t.attributes),function(e){if(!n.hasAttribute(e.name)&&Ce(e.name)){t.removeAttribute(e.name)}});ie(n.attributes,function(e){if(Ce(e.name)){t.setAttribute(e.name,e.value)}})}function He(t,e){const n=Jn(e);for(let e=0;e0){s=e.substring(0,e.indexOf(":"));n=e.substring(e.indexOf(":")+1)}else{s=e}o.removeAttribute("hx-swap-oob");o.removeAttribute("data-hx-swap-oob");const r=m(t,n,false);if(r.length){ie(r,function(e){let t;const n=o.cloneNode(true);t=te().createDocumentFragment();t.appendChild(n);if(!He(s,e)){t=p(n)}const r={shouldSwap:true,target:e,fragment:t};if(!ae(e,"htmx:oobBeforeSwap",r))return;e=r.target;if(r.shouldSwap){qe(t);$e(s,e,e,t,i);Re()}ie(i.elts,function(e){ae(e,"htmx:oobAfterSwap",r)})});o.parentNode.removeChild(o)}else{o.parentNode.removeChild(o);fe(te().body,"htmx:oobErrorNoTarget",{content:o})}return e}function Re(){const e=f("#--htmx-preserve-pantry--");if(e){for(const t of[...e.children]){const n=f("#"+t.id);n.parentNode.moveBefore(t,n);n.remove()}e.remove()}}function qe(e){ie(x(e,"[hx-preserve], [data-hx-preserve]"),function(e){const t=a(e,"id");const n=te().getElementById(t);if(n!=null){if(e.moveBefore){let e=f("#--htmx-preserve-pantry--");if(e==null){te().body.insertAdjacentHTML("afterend","
");e=f("#--htmx-preserve-pantry--")}e.moveBefore(n,null)}else{e.parentNode.replaceChild(n,e)}}})}function Ae(l,e,c){ie(e.querySelectorAll("[id]"),function(t){const n=ee(t,"id");if(n&&n.length>0){const r=n.replace("'","\\'");const o=t.tagName.replace(":","\\:");const e=p(l);const i=e&&e.querySelector(o+"[id='"+r+"']");if(i&&i!==e){const s=t.cloneNode();Oe(t,i);c.tasks.push(function(){Oe(t,s)})}}})}function Le(e){return function(){G(e,Q.config.addedClass);Ft(ce(e));Ne(p(e));ae(e,"htmx:load")}}function Ne(e){const t="[autofocus]";const n=z(h(e,t)?e:e.querySelector(t));if(n!=null){n.focus()}}function c(e,t,n,r){Ae(e,n,r);while(n.childNodes.length>0){const o=n.firstChild;K(ce(o),Q.config.addedClass);e.insertBefore(o,t);if(o.nodeType!==Node.TEXT_NODE&&o.nodeType!==Node.COMMENT_NODE){r.tasks.push(Le(o))}}}function Ie(e,t){let n=0;while(n0}function ze(h,d,p,g){if(!g){g={}}let m=null;let n=null;let e=function(){re(g.beforeSwapCallback);h=w(h);const r=g.contextElement?y(g.contextElement,false):te();const e=document.activeElement;let t={};t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null};const o=Sn(h);if(p.swapStyle==="textContent"){h.textContent=d}else{let n=D(d);o.title=g.title||n.title;if(g.historyRequest){n=n.querySelector("[hx-history-elt],[data-hx-history-elt]")||n}if(g.selectOOB){const i=g.selectOOB.split(",");for(let t=0;t0){b().setTimeout(n,p.settleDelay)}else{n()}};let t=Q.config.globalViewTransitions;if(p.hasOwnProperty("transition")){t=p.transition}const r=g.contextElement||te();if(t&&ae(r,"htmx:beforeTransition",g.eventInfo)&&typeof Promise!=="undefined"&&document.startViewTransition){const o=new Promise(function(e,t){m=e;n=t});const i=e;e=function(){document.startViewTransition(function(){i();return o})}}try{if(p?.swapDelay&&p.swapDelay>0){b().setTimeout(e,p.swapDelay)}else{e()}}catch(e){fe(r,"htmx:swapError",g.eventInfo);re(n);throw e}}function Je(e,t,n){const r=e.getResponseHeader(t);if(r.indexOf("{")===0){const o=v(r);for(const i in o){if(o.hasOwnProperty(i)){let e=o[i];if(k(e)){n=e.target!==undefined?e.target:n}else{e={value:e}}ae(n,i,e)}}}else{const s=r.split(",");for(let e=0;e0){const s=o[0];if(s==="]"){e--;if(e===0){if(n===null){t=t+"true"}o.shift();t+=")})";try{const l=On(r,function(){return Function(t)()},function(){return true});l.source=t;return l}catch(e){fe(te().body,"htmx:syntax:error",{error:e,source:t});return null}}}else if(s==="["){e++}if(tt(s,n,i)){t+="(("+i+"."+s+") ? ("+i+"."+s+") : (window."+s+"))"}else{t=t+s}n=o.shift()}}}function O(e,t){let n="";while(e.length>0&&!t.test(e[0])){n+=e.shift()}return n}function rt(e){let t;if(e.length>0&&Ye.test(e[0])){e.shift();t=O(e,Qe).trim();e.shift()}else{t=O(e,E)}return t}const ot="input, textarea, select";function it(e,t,n){const r=[];const o=et(t);do{O(o,C);const l=o.length;const c=O(o,/[,\[\s]/);if(c!==""){if(c==="every"){const u={trigger:"every"};O(o,C);u.pollInterval=d(O(o,/[,\[\s]/));O(o,C);var i=nt(e,o,"event");if(i){u.eventFilter=i}r.push(u)}else{const f={trigger:c};var i=nt(e,o,"event");if(i){f.eventFilter=i}O(o,C);while(o.length>0&&o[0]!==","){const a=o.shift();if(a==="changed"){f.changed=true}else if(a==="once"){f.once=true}else if(a==="consume"){f.consume=true}else if(a==="delay"&&o[0]===":"){o.shift();f.delay=d(O(o,E))}else if(a==="from"&&o[0]===":"){o.shift();if(Ye.test(o[0])){var s=rt(o)}else{var s=O(o,E);if(s==="closest"||s==="find"||s==="next"||s==="previous"){o.shift();const h=rt(o);if(h.length>0){s+=" "+h}}}f.from=s}else if(a==="target"&&o[0]===":"){o.shift();f.target=rt(o)}else if(a==="throttle"&&o[0]===":"){o.shift();f.throttle=d(O(o,E))}else if(a==="queue"&&o[0]===":"){o.shift();f.queue=O(o,E)}else if(a==="root"&&o[0]===":"){o.shift();f[a]=rt(o)}else if(a==="threshold"&&o[0]===":"){o.shift();f[a]=O(o,E)}else{fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}r.push(f)}}if(o.length===l){fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}while(o[0]===","&&o.shift());if(n){n[t]=r}return r}function st(e){const t=a(e,"hx-trigger");let n=[];if(t){const r=Q.config.triggerSpecsCache;n=r&&r[t]||it(e,t,r)}if(n.length>0){return n}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,ot)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function lt(e){oe(e).cancelled=true}function ct(e,t,n){const r=oe(e);r.timeout=b().setTimeout(function(){if(se(e)&&r.cancelled!==true){if(!pt(n,e,Xt("hx:poll:trigger",{triggerSpec:n,target:e}))){t(e)}ct(e,t,n)}},n.pollInterval)}function ut(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function ft(e){return g(e,Q.config.disableSelector)}function at(t,n,e){if(t instanceof HTMLAnchorElement&&ut(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"&&String(ee(t,"method")).toLowerCase()!=="dialog"){n.boosted=true;let r,o;if(t.tagName==="A"){r="get";o=ee(t,"href")}else{const i=ee(t,"method");r=i?i.toLowerCase():"get";o=ee(t,"action");if(o==null||o===""){o=location.href}if(r==="get"&&o.includes("?")){o=o.replace(/\?[^#]+/,"")}}e.forEach(function(e){gt(t,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)},n,e,true)})}}function ht(e,t){if(e.type==="submit"&&t.tagName==="FORM"){return true}else if(e.type==="click"){const n=t.closest('input[type="submit"], button');if(n&&n.form&&n.type==="submit"){return true}const r=t.closest("a");const o=/^#.+/;if(r&&r.href&&!o.test(r.getAttribute("href"))){return true}}return false}function dt(e,t){return oe(e).boosted&&e instanceof HTMLAnchorElement&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function pt(e,t,n){const r=e.eventFilter;if(r){try{return r.call(t,n)!==true}catch(e){const o=r.source;fe(te().body,"htmx:eventFilter:error",{error:e,source:o});return true}}return false}function gt(l,c,e,u,f){const a=oe(l);let t;if(u.from){t=m(l,u.from)}else{t=[l]}if(u.changed){if(!("lastValue"in a)){a.lastValue=new WeakMap}t.forEach(function(e){if(!a.lastValue.has(u)){a.lastValue.set(u,new WeakMap)}a.lastValue.get(u).set(e,e.value)})}ie(t,function(i){const s=function(e){if(!se(l)){i.removeEventListener(u.trigger,s);return}if(dt(l,e)){return}if(f||ht(e,i)){e.preventDefault()}if(pt(u,l,e)){return}const t=oe(e);t.triggerSpec=u;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(l)<0){t.handledFor.push(l);if(u.consume){e.stopPropagation()}if(u.target&&e.target){if(!h(ce(e.target),u.target)){return}}if(u.once){if(a.triggeredOnce){return}else{a.triggeredOnce=true}}if(u.changed){const n=e.target;const r=n.value;const o=a.lastValue.get(u);if(o.has(n)&&o.get(n)===r){return}o.set(n,r)}if(a.delayed){clearTimeout(a.delayed)}if(a.throttle){return}if(u.throttle>0){if(!a.throttle){ae(l,"htmx:trigger");c(l,e);a.throttle=b().setTimeout(function(){a.throttle=null},u.throttle)}}else if(u.delay>0){a.delayed=b().setTimeout(function(){ae(l,"htmx:trigger");c(l,e)},u.delay)}else{ae(l,"htmx:trigger");c(l,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:u.trigger,listener:s,on:i});i.addEventListener(u.trigger,s)})}let mt=false;let yt=null;function xt(){if(!yt){yt=function(){mt=true};window.addEventListener("scroll",yt);window.addEventListener("resize",yt);setInterval(function(){if(mt){mt=false;ie(te().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){bt(e)})}},200)}}function bt(e){if(!s(e,"data-hx-revealed")&&F(e)){e.setAttribute("data-hx-revealed","true");const t=oe(e);if(t.initHash){ae(e,"revealed")}else{e.addEventListener("htmx:afterProcessNode",function(){ae(e,"revealed")},{once:true})}}}function vt(e,t,n,r){const o=function(){if(!n.loaded){n.loaded=true;ae(e,"htmx:trigger");t(e)}};if(r>0){b().setTimeout(o,r)}else{o()}}function wt(t,n,e){let i=false;ie(de,function(r){if(s(t,"hx-"+r)){const o=a(t,"hx-"+r);i=true;n.path=o;n.verb=r;e.forEach(function(e){St(t,e,n,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)})})}});return i}function St(r,e,t,n){if(e.trigger==="revealed"){xt();gt(r,n,t,e);bt(ce(r))}else if(e.trigger==="intersect"){const o={};if(e.root){o.root=ue(r,e.root)}if(e.threshold){o.threshold=parseFloat(e.threshold)}const i=new IntersectionObserver(function(t){for(let e=0;e0){t.polling=true;ct(ce(r),n,e)}else{gt(r,n,t,e)}}function Et(e){const t=ce(e);if(!t){return false}const n=t.attributes;for(let e=0;e", "+e).join(""));return o}else{return[]}}function Rt(e){const t=At(e.target);const n=Nt(e);if(n){n.lastButtonClicked=t}}function qt(e){const t=Nt(e);if(t){t.lastButtonClicked=null}}function At(e){return g(ce(e),"button, input[type='submit']")}function Lt(e){return e.form||g(e,"form")}function Nt(e){const t=At(e.target);if(!t){return}const n=Lt(t);if(!n){return}return oe(n)}function It(e){e.addEventListener("click",Rt);e.addEventListener("focusin",Rt);e.addEventListener("focusout",qt)}function Dt(t,e,n){const r=oe(t);if(!Array.isArray(r.onHandlers)){r.onHandlers=[]}let o;const i=function(e){On(t,function(){if(ft(t)){return}if(!o){o=new Function("event",n)}o.call(t,e)})};t.addEventListener(e,i);r.onHandlers.push({event:e,listener:i})}function Pt(t){Pe(t);for(let e=0;eQ.config.historyCacheSize){i.shift()}while(i.length>0){try{sessionStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(te().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Jt(t){if(!X()){return null}t=U(t);const n=v(sessionStorage.getItem("htmx-history-cache"))||[];for(let e=0;e=200&&this.status<400){r.response=this.response;ae(te().body,"htmx:historyCacheMissLoad",r);ze(r.historyElt,r.response,n,{contextElement:r.historyElt,historyRequest:true});$t(r.path);ae(te().body,"htmx:historyRestore",{path:e,cacheMiss:true,serverResponse:r.response})}else{fe(te().body,"htmx:historyCacheMissLoadError",r)}};if(ae(te().body,"htmx:historyCacheMiss",r)){t.send()}}function en(e){Gt();e=e||location.pathname+location.search;const t=Jt(e);if(t){const n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0,scroll:t.scroll};const r={path:e,item:t,historyElt:_t(),swapSpec:n};if(ae(te().body,"htmx:historyCacheHit",r)){ze(r.historyElt,t.content,n,{contextElement:r.historyElt,title:t.title});$t(r.path);ae(te().body,"htmx:historyRestore",r)}}else{if(Q.config.refreshOnHistoryMiss){Q.location.reload(true)}else{Qt(e)}}}function tn(e){let t=we(e,"hx-indicator");if(t==null){t=[e]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.classList.add.call(e.classList,Q.config.requestClass)});return t}function nn(e){let t=we(e,"hx-disabled-elt");if(t==null){t=[]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","");e.setAttribute("data-disabled-by-htmx","")});return t}function rn(e,t){ie(e.concat(t),function(e){const t=oe(e);t.requestCount=(t.requestCount||1)-1});ie(e,function(e){const t=oe(e);if(t.requestCount===0){e.classList.remove.call(e.classList,Q.config.requestClass)}});ie(t,function(e){const t=oe(e);if(t.requestCount===0){e.removeAttribute("disabled");e.removeAttribute("data-disabled-by-htmx")}})}function on(t,n){for(let e=0;en.indexOf(e)<0)}else{e=e.filter(e=>e!==n)}r.delete(t);ie(e,e=>r.append(t,e))}}function un(e){if(e instanceof HTMLSelectElement&&e.multiple){return M(e.querySelectorAll("option:checked")).map(function(e){return e.value})}if(e instanceof HTMLInputElement&&e.files){return M(e.files)}return e.value}function fn(t,n,r,e,o){if(e==null||on(t,e)){return}else{t.push(e)}if(sn(e)){const i=ee(e,"name");ln(i,un(e),n);if(o){an(e,r)}}if(e instanceof HTMLFormElement){ie(e.elements,function(e){if(t.indexOf(e)>=0){cn(e.name,un(e),n)}else{t.push(e)}if(o){an(e,r)}});new FormData(e).forEach(function(e,t){if(e instanceof File&&e.name===""){return}ln(t,e,n)})}}function an(e,t){const n=e;if(n.willValidate){ae(n,"htmx:validation:validate");if(!n.checkValidity()){if(ae(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})&&!t.length&&Q.config.reportValidityOfForms){n.reportValidity()}t.push({elt:n,message:n.validationMessage,validity:n.validity})}}}function hn(n,e){for(const t of e.keys()){n.delete(t)}e.forEach(function(e,t){n.append(t,e)});return n}function dn(e,t){const n=[];const r=new FormData;const o=new FormData;const i=[];const s=oe(e);if(s.lastButtonClicked&&!se(s.lastButtonClicked)){s.lastButtonClicked=null}let l=e instanceof HTMLFormElement&&e.noValidate!==true||a(e,"hx-validate")==="true";if(s.lastButtonClicked){l=l&&s.lastButtonClicked.formNoValidate!==true}if(t!=="get"){fn(n,o,i,Lt(e),l)}fn(n,r,i,e,l);if(s.lastButtonClicked||e.tagName==="BUTTON"||e.tagName==="INPUT"&&ee(e,"type")==="submit"){const u=s.lastButtonClicked||e;const f=ee(u,"name");ln(f,u.value,o)}const c=we(e,"hx-include");ie(c,function(e){fn(n,r,i,ce(e),l);if(!h(e,"form")){ie(p(e).querySelectorAll(ot),function(e){fn(n,r,i,e,l)})}});hn(r,o);return{errors:i,formData:r,values:kn(r)}}function pn(e,t,n){if(e!==""){e+="&"}if(String(n)==="[object Object]"){n=JSON.stringify(n)}const r=encodeURIComponent(n);e+=encodeURIComponent(t)+"="+r;return e}function gn(e){e=Dn(e);let n="";e.forEach(function(e,t){n=pn(n,t,e)});return n}function mn(e,t,n){const r={"HX-Request":"true","HX-Trigger":ee(e,"id"),"HX-Trigger-Name":ee(e,"name"),"HX-Target":a(t,"id"),"HX-Current-URL":location.href};Cn(e,"hx-headers",false,r);if(n!==undefined){r["HX-Prompt"]=n}if(oe(e).boosted){r["HX-Boosted"]="true"}return r}function yn(n,e){const t=ne(e,"hx-params");if(t){if(t==="none"){return new FormData}else if(t==="*"){return n}else if(t.indexOf("not ")===0){ie(t.slice(4).split(","),function(e){e=e.trim();n.delete(e)});return n}else{const r=new FormData;ie(t.split(","),function(t){t=t.trim();if(n.has(t)){n.getAll(t).forEach(function(e){r.append(t,e)})}});return r}}else{return n}}function xn(e){return!!ee(e,"href")&&ee(e,"href").indexOf("#")>=0}function bn(e,t){const n=t||ne(e,"hx-swap");const r={swapStyle:oe(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&oe(e).boosted&&!xn(e)){r.show="top"}if(n){const s=B(n);if(s.length>0){for(let e=0;e0?o.join(":"):null;r.scroll=u;r.scrollTarget=i}else if(l.indexOf("show:")===0){const f=l.slice(5);var o=f.split(":");const a=o.pop();var i=o.length>0?o.join(":"):null;r.show=a;r.showTarget=i}else if(l.indexOf("focus-scroll:")===0){const h=l.slice("focus-scroll:".length);r.focusScroll=h=="true"}else if(e==0){r.swapStyle=l}else{H("Unknown modifier in hx-swap: "+l)}}}}return r}function vn(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function wn(t,n,r){let o=null;Vt(n,function(e){if(o==null){o=e.encodeParameters(t,r,n)}});if(o!=null){return o}else{if(vn(n)){return hn(new FormData,Dn(r))}else{return gn(r)}}}function Sn(e){return{tasks:[],elts:[e]}}function En(e,t){const n=e[0];const r=e[e.length-1];if(t.scroll){var o=null;if(t.scrollTarget){o=ce(ue(n,t.scrollTarget))}if(t.scroll==="top"&&(n||o)){o=o||n;o.scrollTop=0}if(t.scroll==="bottom"&&(r||o)){o=o||r;o.scrollTop=o.scrollHeight}if(typeof t.scroll==="number"){b().setTimeout(function(){window.scrollTo(0,t.scroll)},0)}}if(t.show){var o=null;if(t.showTarget){let e=t.showTarget;if(t.showTarget==="window"){e="body"}o=ce(ue(n,e))}if(t.show==="top"&&(n||o)){o=o||n;o.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(r||o)){o=o||r;o.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Cn(r,e,o,i,s){if(i==null){i={}}if(r==null){return i}const l=a(r,e);if(l){let e=l.trim();let t=o;if(e==="unset"){return null}if(e.indexOf("javascript:")===0){e=e.slice(11);t=true}else if(e.indexOf("js:")===0){e=e.slice(3);t=true}if(e.indexOf("{")!==0){e="{"+e+"}"}let n;if(t){n=On(r,function(){if(s){return Function("event","return ("+e+")").call(r,s)}else{return Function("return ("+e+")").call(r)}},{})}else{n=v(e)}for(const c in n){if(n.hasOwnProperty(c)){if(i[c]==null){i[c]=n[c]}}}}return Cn(ce(u(r)),e,o,i,s)}function On(e,t,n){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return n}}function Hn(e,t,n){return Cn(e,"hx-vars",true,n,t)}function Tn(e,t,n){return Cn(e,"hx-vals",false,n,t)}function Rn(e,t){return le(Hn(e,t),Tn(e,t))}function qn(t,n,r){if(r!==null){try{t.setRequestHeader(n,r)}catch(e){t.setRequestHeader(n,encodeURIComponent(r));t.setRequestHeader(n+"-URI-AutoEncoded","true")}}}function An(t){if(t.responseURL){try{const e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(te().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function T(e,t){return t.test(e.getAllResponseHeaders())}function Ln(t,n,r){t=t.toLowerCase();if(r){if(r instanceof Element||typeof r==="string"){return he(t,n,null,null,{targetOverride:w(r)||ve,returnPromise:true})}else{let e=w(r.target);if(r.target&&!e||r.source&&!e&&!w(r.source)){e=ve}return he(t,n,w(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:e,swapOverride:r.swap,select:r.select,returnPromise:true,push:r.push,replace:r.replace,selectOOB:r.selectOOB})}}else{return he(t,n,null,null,{returnPromise:true})}}function Nn(e){const t=[];while(e){t.push(e);e=e.parentElement}return t}function In(e,t,n){const r=new URL(t,location.protocol!=="about:"?location.href:window.origin);const o=location.protocol!=="about:"?location.origin:window.origin;const i=o===r.origin;if(Q.config.selfRequestsOnly){if(!i){return false}}return ae(e,"htmx:validateUrl",le({url:r,sameHost:i},n))}function Dn(e){if(e instanceof FormData)return e;const t=new FormData;for(const n in e){if(e.hasOwnProperty(n)){if(e[n]&&typeof e[n].forEach==="function"){e[n].forEach(function(e){t.append(n,e)})}else if(typeof e[n]==="object"&&!(e[n]instanceof Blob)){t.append(n,JSON.stringify(e[n]))}else{t.append(n,e[n])}}}return t}function Pn(r,o,e){return new Proxy(e,{get:function(t,e){if(typeof e==="number")return t[e];if(e==="length")return t.length;if(e==="push"){return function(e){t.push(e);r.append(o,e)}}if(typeof t[e]==="function"){return function(){t[e].apply(t,arguments);r.delete(o);t.forEach(function(e){r.append(o,e)})}}if(t[e]&&t[e].length===1){return t[e][0]}else{return t[e]}},set:function(e,t,n){e[t]=n;r.delete(o);e.forEach(function(e){r.append(o,e)});return true}})}function kn(o){return new Proxy(o,{get:function(e,t){if(typeof t==="symbol"){const r=Reflect.get(e,t);if(typeof r==="function"){return function(){return r.apply(o,arguments)}}else{return r}}if(t==="toJSON"){return()=>Object.fromEntries(o)}if(t in e){if(typeof e[t]==="function"){return function(){return o[t].apply(o,arguments)}}}const n=o.getAll(t);if(n.length===0){return undefined}else if(n.length===1){return n[0]}else{return Pn(e,t,n)}},set:function(t,n,e){if(typeof n!=="string"){return false}t.delete(n);if(e&&typeof e.forEach==="function"){e.forEach(function(e){t.append(n,e)})}else if(typeof e==="object"&&!(e instanceof Blob)){t.append(n,JSON.stringify(e))}else{t.append(n,e)}return true},deleteProperty:function(e,t){if(typeof t==="string"){e.delete(t)}return true},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function he(t,n,r,o,i,k){let s=null;let l=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var e=new Promise(function(e,t){s=e;l=t})}if(r==null){r=te().body}const M=i.handler||Vn;const F=i.select||null;if(!se(r)){re(s);return e}const c=i.targetOverride||ce(Ee(r));if(c==null||c==ve){fe(r,"htmx:targetError",{target:ne(r,"hx-target")});re(l);return e}let u=oe(r);const f=u.lastButtonClicked;if(f){const A=ee(f,"formaction");if(A!=null){n=A}const L=ee(f,"formmethod");if(L!=null){if(de.includes(L.toLowerCase())){t=L}else{re(s);return e}}}const a=ne(r,"hx-confirm");if(k===undefined){const K=function(e){return he(t,n,r,o,i,!!e)};const G={target:c,elt:r,path:n,verb:t,triggeringEvent:o,etc:i,issueRequest:K,question:a};if(ae(r,"htmx:confirm",G)===false){re(s);return e}}let h=r;let d=ne(r,"hx-sync");let p=null;let B=false;if(d){const N=d.split(":");const I=N[0].trim();if(I==="this"){h=Se(r,"hx-sync")}else{h=ce(ue(r,I))}d=(N[1]||"drop").trim();u=oe(h);if(d==="drop"&&u.xhr&&u.abortable!==true){re(s);return e}else if(d==="abort"){if(u.xhr){re(s);return e}else{B=true}}else if(d==="replace"){ae(h,"htmx:abort")}else if(d.indexOf("queue")===0){const W=d.split(" ");p=(W[1]||"last").trim()}}if(u.xhr){if(u.abortable){ae(h,"htmx:abort")}else{if(p==null){if(o){const D=oe(o);if(D&&D.triggerSpec&&D.triggerSpec.queue){p=D.triggerSpec.queue}}if(p==null){p="last"}}if(u.queuedRequests==null){u.queuedRequests=[]}if(p==="first"&&u.queuedRequests.length===0){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="all"){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="last"){u.queuedRequests=[];u.queuedRequests.push(function(){he(t,n,r,o,i)})}re(s);return e}}const g=new XMLHttpRequest;u.xhr=g;u.abortable=B;const m=function(){u.xhr=null;u.abortable=false;if(u.queuedRequests!=null&&u.queuedRequests.length>0){const e=u.queuedRequests.shift();e()}};const X=ne(r,"hx-prompt");if(X){var y=prompt(X);if(y===null||!ae(r,"htmx:prompt",{prompt:y,target:c})){re(s);m();return e}}if(a&&!k){if(!confirm(a)){re(s);m();return e}}let x=mn(r,c,y);if(t!=="get"&&!vn(r)){x["Content-Type"]="application/x-www-form-urlencoded"}if(i.headers){x=le(x,i.headers)}const U=dn(r,t);let b=U.errors;const V=U.formData;if(i.values){hn(V,Dn(i.values))}const j=Dn(Rn(r,o));const v=hn(V,j);let w=yn(v,r);if(Q.config.getCacheBusterParam&&t==="get"){w.set("org.htmx.cache-buster",ee(c,"id")||"true")}if(n==null||n===""){n=location.href}const S=Cn(r,"hx-request");const $=oe(r).boosted;let E=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;const C={boosted:$,useUrlParams:E,formData:w,parameters:kn(w),unfilteredFormData:v,unfilteredParameters:kn(v),headers:x,elt:r,target:c,verb:t,errors:b,withCredentials:i.credentials||S.credentials||Q.config.withCredentials,timeout:i.timeout||S.timeout||Q.config.timeout,path:n,triggeringEvent:o};if(!ae(r,"htmx:configRequest",C)){re(s);m();return e}n=C.path;t=C.verb;x=C.headers;w=Dn(C.parameters);b=C.errors;E=C.useUrlParams;if(b&&b.length>0){ae(r,"htmx:validation:halted",C);re(s);m();return e}const _=n.split("#");const z=_[0];const O=_[1];let H=n;if(E){H=z;const Z=!w.keys().next().done;if(Z){if(H.indexOf("?")<0){H+="?"}else{H+="&"}H+=gn(w);if(O){H+="#"+O}}}if(!In(r,H,C)){fe(r,"htmx:invalidPath",C);re(l);m();return e}g.open(t.toUpperCase(),H,true);g.overrideMimeType("text/html");g.withCredentials=C.withCredentials;g.timeout=C.timeout;if(S.noHeaders){}else{for(const P in x){if(x.hasOwnProperty(P)){const Y=x[P];qn(g,P,Y)}}}const T={xhr:g,target:c,requestConfig:C,etc:i,boosted:$,select:F,pathInfo:{requestPath:n,finalRequestPath:H,responsePath:null,anchor:O}};g.onload=function(){try{const t=Nn(r);T.pathInfo.responsePath=An(g);M(r,T);if(T.keepIndicators!==true){rn(R,q)}ae(r,"htmx:afterRequest",T);ae(r,"htmx:afterOnLoad",T);if(!se(r)){let e=null;while(t.length>0&&e==null){const n=t.shift();if(se(n)){e=n}}if(e){ae(e,"htmx:afterRequest",T);ae(e,"htmx:afterOnLoad",T)}}re(s)}catch(e){fe(r,"htmx:onLoadError",le({error:e},T));throw e}finally{m()}};g.onerror=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendError",T);re(l);m()};g.onabort=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendAbort",T);re(l);m()};g.ontimeout=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:timeout",T);re(l);m()};if(!ae(r,"htmx:beforeRequest",T)){re(s);m();return e}var R=tn(r);var q=nn(r);ie(["loadstart","loadend","progress","abort"],function(t){ie([g,g.upload],function(e){e.addEventListener(t,function(e){ae(r,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ae(r,"htmx:beforeSend",T);const J=E?null:wn(g,r,w);g.send(J);return e}function Mn(e,t){const n=t.xhr;let r=null;let o=null;if(T(n,/HX-Push:/i)){r=n.getResponseHeader("HX-Push");o="push"}else if(T(n,/HX-Push-Url:/i)){r=n.getResponseHeader("HX-Push-Url");o="push"}else if(T(n,/HX-Replace-Url:/i)){r=n.getResponseHeader("HX-Replace-Url");o="replace"}if(r){if(r==="false"){return{}}else{return{type:o,path:r}}}const i=t.pathInfo.finalRequestPath;const s=t.pathInfo.responsePath;const l=t.etc.push||ne(e,"hx-push-url");const c=t.etc.replace||ne(e,"hx-replace-url");const u=oe(e).boosted;let f=null;let a=null;if(l){f="push";a=l}else if(c){f="replace";a=c}else if(u){f="push";a=s||i}if(a){if(a==="false"){return{}}if(a==="true"){a=s||i}if(t.pathInfo.anchor&&a.indexOf("#")===-1){a=a+"#"+t.pathInfo.anchor}return{type:f,path:a}}else{return{}}}function Fn(e,t){var n=new RegExp(e.code);return n.test(t.toString(10))}function Bn(e){for(var t=0;t`+`.${t}{opacity:0;visibility: hidden} `+`.${n} .${t}, .${n}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}`+"")}}function Zn(){const e=te().querySelector('meta[name="htmx-config"]');if(e){return v(e.content)}else{return null}}function Yn(){const e=Zn();if(e){Q.config=le(Q.config,e)}}Gn(function(){Yn();Wn();let e=te().body;Ft(e);const t=te().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){const t=e.detail.elt||e.target;const n=oe(t);if(n&&n.xhr){n.xhr.abort()}});const n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){en();ie(t,function(e){ae(e,"htmx:restored",{document:te(),triggerEvent:ae})})}else{if(n){n(e)}}};b().setTimeout(function(){ae(e,"htmx:load",{});e=null},0)});return Q}(); \ No newline at end of file diff --git a/crates/lib/page/htmx/json-enc-1.9.12.js b/crates/lib/page/htmx/json-enc-1.9.12.js deleted file mode 100644 index f37a9c5..0000000 --- a/crates/lib/page/htmx/json-enc-1.9.12.js +++ /dev/null @@ -1,11 +0,0 @@ -htmx.defineExtension('json-enc', { - onEvent: function (name, evt) { - if (name === "htmx:configRequest") { - evt.detail.headers['Content-Type'] = "application/json"; - } - }, - encodeParameters: function (xhr, parameters, elt) { - xhr.overrideMimeType('text/json'); - return (JSON.stringify(parameters)); - } -}); \ No newline at end of file diff --git a/crates/lib/page/src/lib.rs b/crates/lib/page/src/lib.rs deleted file mode 100644 index 314daa7..0000000 --- a/crates/lib/page/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -//! A web stack for embedded uis. -//! -//! Featuring: -//! - htmx -//! - axum -//! - rust -//! - and maud - -pub mod servable; - -mod types; -pub use types::*; - -mod route; -pub use route::*; - -pub const HTMX_2_0_8: servable::StaticAsset = servable::StaticAsset { - bytes: include_str!("../htmx/htmx-2.0.8.min.js").as_bytes(), - mime: toolbox::mime::MimeType::Javascript, -}; - -pub const EXT_JSON_1_19_12: servable::StaticAsset = servable::StaticAsset { - bytes: include_str!("../htmx/json-enc-1.9.12.js").as_bytes(), - mime: toolbox::mime::MimeType::Javascript, -}; diff --git a/crates/lib/page/src/route.rs b/crates/lib/page/src/route.rs deleted file mode 100644 index 0853478..0000000 --- a/crates/lib/page/src/route.rs +++ /dev/null @@ -1,275 +0,0 @@ -use axum::{ - Router, - body::Body, - http::{HeaderMap, HeaderValue, Method, Request, StatusCode, header}, - response::{IntoResponse, Response}, -}; -use chrono::TimeDelta; -use std::{ - collections::{BTreeMap, HashMap}, - convert::Infallible, - net::SocketAddr, - pin::Pin, - sync::Arc, - task::{Context, Poll}, - time::Instant, -}; -use toolbox::mime::MimeType; -use tower::Service; -use tracing::trace; - -use crate::{ClientInfo, RenderContext, Rendered, RenderedBody, servable::Servable}; - -struct Default404 {} -impl Servable for Default404 { - fn head<'a>( - &'a self, - _ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - return Rendered { - code: StatusCode::NOT_FOUND, - body: (), - ttl: Some(TimeDelta::days(1)), - immutable: true, - headers: HeaderMap::new(), - mime: Some(MimeType::Html), - }; - }) - } - - fn render<'a>( - &'a self, - ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { self.head(ctx).await.with_body(RenderedBody::Empty) }) - } -} - -/// A set of related [Servable]s under one route. -/// -/// Use as follows: -/// ```ignore -/// -/// // Add compression, for example. -/// // Also consider CORS and timeout. -/// let compression: CompressionLayer = CompressionLayer::new() -/// .br(true) -/// .deflate(true) -/// .gzip(true) -/// .zstd(true) -/// .compress_when(DefaultPredicate::new()); -/// -/// let route = ServableRoute::new() -/// .add_page( -/// "/page", -/// StaticAsset { -/// bytes: "I am a page".as_bytes(), -/// mime: MimeType::Text, -/// }, -/// ); -/// -/// Router::new() -/// .nest_service("/", route) -/// .layer(compression.clone()); -/// ``` -#[derive(Clone)] -pub struct ServableRoute { - pages: Arc>>, - notfound: Arc, -} - -impl ServableRoute { - pub fn new() -> Self { - Self { - pages: Arc::new(HashMap::new()), - notfound: Arc::new(Default404 {}), - } - } - - /// Set this server's "not found" page - pub fn with_404(mut self, page: S) -> Self { - self.notfound = Arc::new(page); - self - } - - /// Add a page to this server at the given route. - /// - panics if route does not start with a `/`, ends with a `/`, or contains `//`. - /// - urls are normalized, routes that violate this condition will never be served. - /// - `/` is an exception, it is valid. - /// - panics if called after this service is started - /// - overwrites existing pages - pub fn add_page(mut self, route: impl Into, page: S) -> Self { - let route = route.into(); - - if !route.starts_with("/") { - panic!("route must start with /") - }; - - if route.ends_with("/") && route != "/" { - panic!("route must not end with /") - }; - - if route.contains("//") { - panic!("route must not contain //") - }; - - #[expect(clippy::expect_used)] - Arc::get_mut(&mut self.pages) - .expect("add_pages called after service was started") - .insert(route, Arc::new(page)); - - self - } - - /// Convenience method. - /// Turns this service into a router. - /// - /// Equivalent to: - /// ```ignore - /// Router::new().fallback_service(self) - /// ``` - pub fn into_router(self) -> Router { - Router::new().fallback_service(self) - } -} - -// -// MARK: impl Service -// - -impl Service> for ServableRoute { - type Response = Response; - type Error = Infallible; - type Future = - Pin> + Send + 'static>>; - - fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { - Poll::Ready(Ok(())) - } - - fn call(&mut self, req: Request) -> Self::Future { - if req.method() != Method::GET && req.method() != Method::HEAD { - let mut headers = HeaderMap::with_capacity(1); - headers.insert(header::ACCEPT, HeaderValue::from_static("GET,HEAD")); - return Box::pin(async { - Ok((StatusCode::METHOD_NOT_ALLOWED, headers).into_response()) - }); - } - - let pages = self.pages.clone(); - let notfound = self.notfound.clone(); - Box::pin(async move { - let addr = req.extensions().get::().copied(); - let route = req.uri().path().to_owned(); - let headers = req.headers().clone(); - let query: BTreeMap = - serde_urlencoded::from_str(req.uri().query().unwrap_or("")).unwrap_or_default(); - - let start = Instant::now(); - let client_info = ClientInfo::from_headers(&headers); - let ua = headers - .get("user-agent") - .and_then(|x| x.to_str().ok()) - .unwrap_or(""); - - trace!( - message = "Serving route", - route, - addr = ?addr, - user_agent = ua, - device_type = ?client_info.device_type - ); - - // Normalize url with redirect - if (route.ends_with('/') && route != "/") || route.contains("//") { - let mut new_route = route.clone(); - while new_route.contains("//") { - new_route = new_route.replace("//", "/"); - } - let new_route = new_route.trim_matches('/'); - - trace!( - message = "Redirecting", - route, - new_route, - addr = ?addr, - user_agent = ua, - device_type = ?client_info.device_type - ); - - let mut headers = HeaderMap::with_capacity(1); - match HeaderValue::from_str(&format!("/{new_route}")) { - Ok(x) => headers.append(header::LOCATION, x), - Err(_) => return Ok(StatusCode::BAD_REQUEST.into_response()), - }; - return Ok((StatusCode::PERMANENT_REDIRECT, headers).into_response()); - } - - let ctx = RenderContext { - client_info, - route, - query, - }; - - let page = pages.get(&ctx.route).unwrap_or(¬found); - let mut rend = match req.method() == Method::HEAD { - true => page.head(&ctx).await.with_body(RenderedBody::Empty), - false => page.render(&ctx).await, - }; - - // Tweak headers - { - if !rend.headers.contains_key(header::CACHE_CONTROL) { - let max_age = rend.ttl.map(|x| x.num_seconds()).unwrap_or(1).max(1); - - let mut value = String::new(); - if rend.immutable { - value.push_str("immutable, "); - } - - value.push_str("public, "); - value.push_str(&format!("max-age={}, ", max_age)); - - #[expect(clippy::unwrap_used)] - rend.headers.insert( - header::CACHE_CONTROL, - HeaderValue::from_str(value.trim().trim_end_matches(',')).unwrap(), - ); - } - - if !rend.headers.contains_key("Accept-CH") { - rend.headers - .insert("Accept-CH", HeaderValue::from_static("Sec-CH-UA-Mobile")); - } - - if !rend.headers.contains_key(header::CONTENT_TYPE) - && let Some(mime) = &rend.mime - { - #[expect(clippy::unwrap_used)] - rend.headers.insert( - header::CONTENT_TYPE, - HeaderValue::from_str(&mime.to_string()).unwrap(), - ); - } - } - - trace!( - message = "Served route", - route = ctx.route, - addr = ?addr, - user_agent = ua, - device_type = ?client_info.device_type, - time_ns = start.elapsed().as_nanos() - ); - - Ok(match rend.body { - RenderedBody::Markup(m) => (rend.code, rend.headers, m.0).into_response(), - RenderedBody::Static(d) => (rend.code, rend.headers, d).into_response(), - RenderedBody::Bytes(d) => (rend.code, rend.headers, d).into_response(), - RenderedBody::String(s) => (rend.code, rend.headers, s).into_response(), - RenderedBody::Empty => (rend.code, rend.headers).into_response(), - }) - }) - } -} diff --git a/crates/lib/page/src/servable/asset.rs b/crates/lib/page/src/servable/asset.rs deleted file mode 100644 index 5739a4a..0000000 --- a/crates/lib/page/src/servable/asset.rs +++ /dev/null @@ -1,175 +0,0 @@ -use axum::http::{HeaderMap, StatusCode}; -use chrono::TimeDelta; -use pixel_transform::TransformerChain; -use std::{pin::Pin, str::FromStr}; -use toolbox::mime::MimeType; -use tracing::{error, trace}; - -use crate::{RenderContext, Rendered, RenderedBody, servable::Servable}; - -pub struct StaticAsset { - pub bytes: &'static [u8], - pub mime: MimeType, -} - -impl Servable for StaticAsset { - fn head<'a>( - &'a self, - ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - let ttl = Some(TimeDelta::days(30)); - let is_image = TransformerChain::mime_is_image(&self.mime); - - let transform = match (is_image, ctx.query.get("t")) { - (false, _) | (_, None) => None, - - (true, Some(x)) => match TransformerChain::from_str(x) { - Ok(x) => Some(x), - Err(_err) => { - return Rendered { - code: StatusCode::BAD_REQUEST, - body: (), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: None, - }; - } - }, - }; - - match transform { - Some(transform) => { - return Rendered { - code: StatusCode::OK, - body: (), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: Some( - transform - .output_mime(&self.mime) - .unwrap_or(self.mime.clone()), - ), - }; - } - - None => { - return Rendered { - code: StatusCode::OK, - body: (), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: Some(self.mime.clone()), - }; - } - } - }) - } - - fn render<'a>( - &'a self, - ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - let ttl = Some(TimeDelta::days(30)); - - // Automatically provide transformation if this is an image - let is_image = TransformerChain::mime_is_image(&self.mime); - - let transform = match (is_image, ctx.query.get("t")) { - (false, _) | (_, None) => None, - - (true, Some(x)) => match TransformerChain::from_str(x) { - Ok(x) => Some(x), - Err(err) => { - return Rendered { - code: StatusCode::BAD_REQUEST, - body: RenderedBody::String(err), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: None, - }; - } - }, - }; - - match transform { - Some(transform) => { - trace!(message = "Transforming image", ?transform); - - let task = { - let mime = Some(self.mime.clone()); - let bytes = self.bytes; - tokio::task::spawn_blocking(move || { - transform.transform_bytes(bytes, mime.as_ref()) - }) - }; - - let res = match task.await { - Ok(x) => x, - Err(error) => { - error!(message = "Error while transforming image", ?error); - return Rendered { - code: StatusCode::INTERNAL_SERVER_ERROR, - body: RenderedBody::String(format!( - "Error while transforming image: {error:?}" - )), - ttl: None, - immutable: true, - - headers: HeaderMap::new(), - mime: None, - }; - } - }; - - match res { - Ok((mime, bytes)) => { - return Rendered { - code: StatusCode::OK, - body: RenderedBody::Bytes(bytes), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: Some(mime), - }; - } - - Err(err) => { - return Rendered { - code: StatusCode::INTERNAL_SERVER_ERROR, - body: RenderedBody::String(format!("{err}")), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: None, - }; - } - } - } - - None => { - return Rendered { - code: StatusCode::OK, - body: RenderedBody::Static(self.bytes), - ttl, - immutable: true, - - headers: HeaderMap::new(), - mime: Some(self.mime.clone()), - }; - } - } - }) - } -} diff --git a/crates/lib/page/src/servable/mod.rs b/crates/lib/page/src/servable/mod.rs deleted file mode 100644 index a550c20..0000000 --- a/crates/lib/page/src/servable/mod.rs +++ /dev/null @@ -1,26 +0,0 @@ -mod asset; -pub use asset::*; - -mod page; -pub use page::*; - -mod redirect; -pub use redirect::*; - -/// Something that may be served over http. -pub trait Servable: Send + Sync { - /// Return the same response as [Servable::render], but with an empty body. - /// Used to respond to `HEAD` requests. - fn head<'a>( - &'a self, - ctx: &'a crate::RenderContext, - ) -> std::pin::Pin> + 'a + Send + Sync>>; - - /// Render this page - fn render<'a>( - &'a self, - ctx: &'a crate::RenderContext, - ) -> std::pin::Pin< - Box> + 'a + Send + Sync>, - >; -} diff --git a/crates/lib/page/src/servable/page.rs b/crates/lib/page/src/servable/page.rs deleted file mode 100644 index 1f07482..0000000 --- a/crates/lib/page/src/servable/page.rs +++ /dev/null @@ -1,309 +0,0 @@ -use axum::http::{HeaderMap, StatusCode}; -use chrono::TimeDelta; -use maud::{DOCTYPE, Markup, PreEscaped, html}; -use serde::Deserialize; -use std::{pin::Pin, sync::Arc}; -use toolbox::mime::MimeType; - -use crate::{RenderContext, Rendered, RenderedBody, servable::Servable}; - -// -// MARK: metadata -// - -#[derive(Debug, Clone, Hash, PartialEq, Eq, Deserialize)] -pub struct PageMetadata { - pub title: String, - pub author: Option, - pub description: Option, - pub image: Option, -} - -impl Default for PageMetadata { - fn default() -> Self { - Self { - title: "Untitled page".into(), - author: None, - description: None, - image: None, - } - } -} - -// -// MARK: page -// - -#[derive(Clone)] -pub struct Page { - pub meta: PageMetadata, - pub immutable: bool, - - /// How long this page's html may be cached. - /// This controls the maximum age of a page shown to the user. - /// - /// If `None`, this page is always rendered from scratch. - pub html_ttl: Option, - - /// A function that generates this page's html. - /// - /// This should return the contents of this page's tag, - /// or the contents of a wrapper element (defined in the page server struct). - /// - /// This closure must never return `` or ``. - pub generate_html: Arc< - dyn Send - + Sync - + 'static - + for<'a> Fn( - &'a Page, - &'a RenderContext, - ) -> Pin + Send + Sync + 'a>>, - >, - - pub response_code: StatusCode, - - pub scripts_inline: Vec, - pub scripts_linked: Vec, - pub styles_linked: Vec, - pub styles_inline: Vec, - - /// `name`, `content` for extra `` tags - pub extra_meta: Vec<(String, String)>, -} - -impl Default for Page { - fn default() -> Self { - Page { - // No cache by default - html_ttl: None, - immutable: false, - - meta: Default::default(), - generate_html: Arc::new(|_, _| Box::pin(async { html!() })), - response_code: StatusCode::OK, - scripts_inline: Vec::new(), - scripts_linked: Vec::new(), - styles_inline: Vec::new(), - styles_linked: Vec::new(), - extra_meta: Vec::new(), - } - } -} - -impl Page { - pub async fn generate_html(&self, ctx: &RenderContext) -> Markup { - (self.generate_html)(self, ctx).await - } - - pub fn immutable(mut self, immutable: bool) -> Self { - self.immutable = immutable; - self - } - - pub fn html_ttl(mut self, html_ttl: Option) -> Self { - self.html_ttl = html_ttl; - self - } - - pub fn response_code(mut self, response_code: StatusCode) -> Self { - self.response_code = response_code; - self - } - - pub fn with_script_inline(mut self, script: impl Into) -> Self { - self.scripts_inline.push(script.into()); - self - } - - pub fn with_script_linked(mut self, url: impl Into) -> Self { - self.scripts_linked.push(url.into()); - self - } - - pub fn with_style_inline(mut self, style: impl Into) -> Self { - self.styles_inline.push(style.into()); - self - } - - pub fn with_style_linked(mut self, url: impl Into) -> Self { - self.styles_linked.push(url.into()); - self - } - - pub fn with_extra_meta(mut self, key: impl Into, value: impl Into) -> Self { - self.extra_meta.push((key.into(), value.into())); - self - } -} - -impl Servable for Page { - fn head<'a>( - &'a self, - _ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - return Rendered { - code: self.response_code, - body: (), - ttl: self.html_ttl, - immutable: self.immutable, - headers: HeaderMap::new(), - mime: Some(MimeType::Html), - }; - }) - } - - fn render<'a>( - &'a self, - ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - let inner_html = self.generate_html(ctx).await; - - let html = html! { - (DOCTYPE) - html { - head { - meta charset="UTF-8"; - meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no"; - meta content="text/html; charset=UTF-8" http-equiv="content-type"; - meta property="og:type" content="website"; - @for (name, content) in &self.extra_meta { - meta name=(name) content=(content); - } - - // - // Metadata - // - title { (PreEscaped(self.meta.title.clone())) } - meta property="og:site_name" content=(self.meta.title); - meta name="title" content=(self.meta.title); - meta property="og:title" content=(self.meta.title); - meta property="twitter:title" content=(self.meta.title); - - @if let Some(author) = &self.meta.author { - meta name="author" content=(author); - } - - @if let Some(desc) = &self.meta.description { - meta name="description" content=(desc); - meta property="og:description" content=(desc); - meta property="twitter:description" content=(desc); - } - - @if let Some(image) = &self.meta.image { - meta content=(image) property="og:image"; - link rel="shortcut icon" href=(image) type="image/x-icon"; - } - - // - // Scripts & styles - // - @for script in &self.scripts_linked { - script src=(script) {} - } - @for style in &self.styles_linked { - link rel="stylesheet" type="text/css" href=(style); - } - - @for script in &self.scripts_inline { - script { (PreEscaped(script)) } - } - @for style in &self.styles_inline { - style { (PreEscaped(style)) } - } - } - - body { main { (inner_html) } } - } - }; - - return self.head(ctx).await.with_body(RenderedBody::Markup(html)); - }) - } -} - -// -// MARK: template -// - -pub struct PageTemplate { - pub immutable: bool, - pub html_ttl: Option, - pub response_code: StatusCode, - - pub scripts_inline: &'static [&'static str], - pub scripts_linked: &'static [&'static str], - pub styles_inline: &'static [&'static str], - pub styles_linked: &'static [&'static str], - pub extra_meta: &'static [(&'static str, &'static str)], -} - -impl Default for PageTemplate { - fn default() -> Self { - Self::const_default() - } -} - -impl PageTemplate { - pub const fn const_default() -> Self { - Self { - html_ttl: Some(TimeDelta::days(1)), - immutable: true, - response_code: StatusCode::OK, - - scripts_inline: &[], - scripts_linked: &[], - styles_inline: &[], - styles_linked: &[], - extra_meta: &[], - } - } - - /// Create a new page using this template, - /// with the given metadata and renderer. - pub fn derive< - R: Send - + Sync - + 'static - + for<'a> Fn( - &'a Page, - &'a RenderContext, - ) -> Pin + Send + Sync + 'a>>, - >( - &self, - meta: PageMetadata, - generate_html: R, - ) -> Page { - Page { - meta, - immutable: self.immutable, - html_ttl: self.html_ttl, - response_code: self.response_code, - - scripts_inline: self - .scripts_inline - .iter() - .map(|x| (*x).to_owned()) - .collect(), - - scripts_linked: self - .scripts_linked - .iter() - .map(|x| (*x).to_owned()) - .collect(), - - styles_inline: self.styles_inline.iter().map(|x| (*x).to_owned()).collect(), - styles_linked: self.styles_linked.iter().map(|x| (*x).to_owned()).collect(), - - extra_meta: self - .extra_meta - .iter() - .map(|(a, b)| ((*a).to_owned(), (*b).to_owned())) - .collect(), - - generate_html: Arc::new(generate_html), - } - } -} diff --git a/crates/lib/page/src/servable/redirect.rs b/crates/lib/page/src/servable/redirect.rs deleted file mode 100644 index c6f044b..0000000 --- a/crates/lib/page/src/servable/redirect.rs +++ /dev/null @@ -1,48 +0,0 @@ -use std::pin::Pin; - -use axum::http::{ - HeaderMap, HeaderValue, StatusCode, - header::{self, InvalidHeaderValue}, -}; - -use crate::{RenderContext, Rendered, RenderedBody, servable::Servable}; - -pub struct Redirect { - to: HeaderValue, -} - -impl Redirect { - pub fn new(to: impl Into) -> Result { - Ok(Self { - to: HeaderValue::from_str(&to.into())?, - }) - } -} - -impl Servable for Redirect { - fn head<'a>( - &'a self, - _ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { - let mut headers = HeaderMap::with_capacity(1); - headers.append(header::LOCATION, self.to.clone()); - - return Rendered { - code: StatusCode::PERMANENT_REDIRECT, - headers, - body: (), - ttl: None, - immutable: true, - mime: None, - }; - }) - } - - fn render<'a>( - &'a self, - ctx: &'a RenderContext, - ) -> Pin> + 'a + Send + Sync>> { - Box::pin(async { self.head(ctx).await.with_body(RenderedBody::Empty) }) - } -} diff --git a/crates/lib/page/src/types.rs b/crates/lib/page/src/types.rs deleted file mode 100644 index c08a139..0000000 --- a/crates/lib/page/src/types.rs +++ /dev/null @@ -1,110 +0,0 @@ -use axum::http::{HeaderMap, StatusCode}; -use chrono::TimeDelta; -use maud::Markup; -use std::collections::BTreeMap; -use toolbox::mime::MimeType; - -// -// MARK: rendered -// - -#[derive(Clone)] -pub enum RenderedBody { - Markup(Markup), - Static(&'static [u8]), - Bytes(Vec), - String(String), - Empty, -} - -pub trait RenderedBodyType {} -impl RenderedBodyType for () {} -impl RenderedBodyType for RenderedBody {} - -#[derive(Clone)] -pub struct Rendered { - pub code: StatusCode, - pub headers: HeaderMap, - pub body: T, - pub mime: Option, - - /// How long to cache this response. - /// If none, don't cache. - pub ttl: Option, - pub immutable: bool, -} - -impl Rendered<()> { - /// Turn this [Rendered] into a [Rendered] with a body. - pub fn with_body(self, body: RenderedBody) -> Rendered { - Rendered { - code: self.code, - headers: self.headers, - body, - mime: self.mime, - ttl: self.ttl, - immutable: self.immutable, - } - } -} - -// -// MARK: context -// - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct RenderContext { - pub client_info: ClientInfo, - pub route: String, - pub query: BTreeMap, -} - -// -// MARK: clientinfo -// - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub enum DeviceType { - Mobile, - Desktop, -} - -impl Default for DeviceType { - fn default() -> Self { - Self::Desktop - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ClientInfo { - /// This is an estimate, but it's probably good enough. - pub device_type: DeviceType, -} - -impl ClientInfo { - pub fn from_headers(headers: &HeaderMap) -> Self { - let ua = headers - .get("user-agent") - .and_then(|x| x.to_str().ok()) - .unwrap_or(""); - - let ch_mobile = headers - .get("Sec-CH-UA-Mobile") - .and_then(|x| x.to_str().ok()) - .unwrap_or(""); - - let mut device_type = None; - - if device_type.is_none() && ch_mobile.contains("1") { - device_type = Some(DeviceType::Mobile); - } - - if device_type.is_none() && ua.contains("Mobile") { - device_type = Some(DeviceType::Mobile); - } - - Self { - device_type: device_type.unwrap_or_default(), - } - } -} diff --git a/crates/lib/pixel-transform/Cargo.toml b/crates/lib/pixel-transform/Cargo.toml deleted file mode 100644 index 10b09f3..0000000 --- a/crates/lib/pixel-transform/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "pixel-transform" -version = { workspace = true } -rust-version = { workspace = true } -edition = { workspace = true } - -[lints] -workspace = true - -[dependencies] -toolbox = { workspace = true } - -serde = { workspace = true } -thiserror = { workspace = true } -image = { workspace = true } -strum = { workspace = true } diff --git a/crates/lib/pixel-transform/src/chain.rs b/crates/lib/pixel-transform/src/chain.rs deleted file mode 100644 index d962940..0000000 --- a/crates/lib/pixel-transform/src/chain.rs +++ /dev/null @@ -1,159 +0,0 @@ -use image::{DynamicImage, ImageFormat}; -use serde::{Deserialize, Deserializer, de}; -use std::{fmt::Display, hash::Hash, io::Cursor, str::FromStr}; -use thiserror::Error; -use toolbox::mime::MimeType; - -use crate::transformers::{ImageTransformer, TransformerEnum}; - -#[derive(Debug, Error)] -pub enum TransformBytesError { - #[error("{0} is not a valid image type")] - NotAnImage(String), - - #[error("error while processing image")] - ImageError(#[from] image::ImageError), -} - -#[derive(Debug, Clone)] -pub struct TransformerChain { - pub steps: Vec, -} - -impl TransformerChain { - #[inline] - pub fn mime_is_image(mime: &MimeType) -> bool { - ImageFormat::from_mime_type(mime.to_string()).is_some() - } - - pub fn transform_image(&self, mut image: DynamicImage) -> DynamicImage { - for step in &self.steps { - match step { - TransformerEnum::Format { .. } => {} - TransformerEnum::MaxDim(t) => t.transform(&mut image), - TransformerEnum::Crop(t) => t.transform(&mut image), - } - } - - return image; - } - - pub fn output_mime(&self, input_mime: &MimeType) -> Option { - let mime = self - .steps - .last() - .and_then(|x| match x { - TransformerEnum::Format { format } => Some(MimeType::from(format.to_mime_type())), - _ => None, - }) - .unwrap_or(input_mime.clone()); - - let fmt = ImageFormat::from_mime_type(mime.to_string()); - fmt.map(|_| mime) - } - - pub fn transform_bytes( - &self, - image_bytes: &[u8], - image_format: Option<&MimeType>, - ) -> Result<(MimeType, Vec), TransformBytesError> { - let format: ImageFormat = match image_format { - Some(x) => ImageFormat::from_mime_type(x.to_string()) - .ok_or(TransformBytesError::NotAnImage(x.to_string()))?, - None => image::guess_format(image_bytes)?, - }; - - let out_format = self - .steps - .last() - .and_then(|x| match x { - TransformerEnum::Format { format } => Some(format), - _ => None, - }) - .unwrap_or(&format); - - let img = image::load_from_memory_with_format(image_bytes, format)?; - let img = self.transform_image(img); - - let out_mime = MimeType::from(out_format.to_mime_type()); - let mut out_bytes = Cursor::new(Vec::new()); - img.write_to(&mut out_bytes, *out_format)?; - - return Ok((out_mime, out_bytes.into_inner())); - } -} - -impl FromStr for TransformerChain { - type Err = String; - fn from_str(s: &str) -> Result { - let steps_str = s.split(";"); - - let mut steps = Vec::new(); - for s in steps_str { - let s = s.trim(); - if s.is_empty() { - continue; - } - - let step = s.parse(); - match step { - Ok(x) => steps.push(x), - Err(msg) => return Err(format!("invalid step `{s}`: {msg}")), - } - } - - let n_format = steps - .iter() - .filter(|x| matches!(x, TransformerEnum::Format { .. })) - .count(); - if n_format > 2 { - return Err("provide at most one format()".to_owned()); - } - - if n_format == 1 && !matches!(steps.last(), Some(TransformerEnum::Format { .. })) { - return Err("format() must be last".to_owned()); - } - - return Ok(Self { steps }); - } -} - -impl<'de> Deserialize<'de> for TransformerChain { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - Self::from_str(&s).map_err(de::Error::custom) - } -} - -impl Display for TransformerChain { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let mut first = true; - for step in &self.steps { - if first { - write!(f, "{step}")?; - first = false - } else { - write!(f, ";{step}")?; - } - } - - return Ok(()); - } -} - -impl PartialEq for TransformerChain { - fn eq(&self, other: &Self) -> bool { - self.to_string() == other.to_string() - } -} - -impl Eq for TransformerChain {} - -impl Hash for TransformerChain { - fn hash(&self, state: &mut H) { - self.to_string().hash(state); - } -} diff --git a/crates/lib/pixel-transform/src/lib.rs b/crates/lib/pixel-transform/src/lib.rs deleted file mode 100644 index b2cb573..0000000 --- a/crates/lib/pixel-transform/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -mod pixeldim; - -pub mod transformers; - -mod chain; -pub use chain::*; diff --git a/crates/lib/pixel-transform/src/pixeldim.rs b/crates/lib/pixel-transform/src/pixeldim.rs deleted file mode 100644 index b742c21..0000000 --- a/crates/lib/pixel-transform/src/pixeldim.rs +++ /dev/null @@ -1,68 +0,0 @@ -use serde::{Deserialize, Deserializer}; -use std::fmt; -use std::str::FromStr; - -// TODO: parse -, + (100vw - 10px) -// TODO: parse 100vw [min] 10 -// TODO: parse 100vw [max] 10 - -#[derive(Debug, Clone, PartialEq)] -pub enum PixelDim { - Pixels(u32), - WidthPercent(f32), - HeightPercent(f32), -} - -impl FromStr for PixelDim { - type Err = String; - - fn from_str(s: &str) -> Result { - let numeric_end = s.find(|c: char| !c.is_ascii_digit() && c != '.'); - - let (quantity, unit) = numeric_end.map(|x| s.split_at(x)).unwrap_or((s, "px")); - let quantity = quantity.trim(); - let unit = unit.trim(); - - match unit { - "vw" => Ok(PixelDim::WidthPercent( - quantity - .parse() - .map_err(|_err| format!("invalid quantity {quantity}"))?, - )), - - "vh" => Ok(PixelDim::HeightPercent( - quantity - .parse() - .map_err(|_err| format!("invalid quantity {quantity}"))?, - )), - - "px" => Ok(PixelDim::Pixels( - quantity - .parse() - .map_err(|_err| format!("invalid quantity {quantity}"))?, - )), - - _ => Err(format!("invalid unit {unit}")), - } - } -} - -impl<'de> Deserialize<'de> for PixelDim { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - FromStr::from_str(&s).map_err(serde::de::Error::custom) - } -} - -impl fmt::Display for PixelDim { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - PixelDim::Pixels(px) => write!(f, "{px}"), - PixelDim::WidthPercent(p) => write!(f, "{p:.2}vw"), - PixelDim::HeightPercent(p) => write!(f, "{p:.2}vh"), - } - } -} diff --git a/crates/lib/pixel-transform/src/transformers/crop.rs b/crates/lib/pixel-transform/src/transformers/crop.rs deleted file mode 100644 index 05943f7..0000000 --- a/crates/lib/pixel-transform/src/transformers/crop.rs +++ /dev/null @@ -1,184 +0,0 @@ -use std::{fmt::Display, str::FromStr}; - -use image::DynamicImage; -use serde::{Deserialize, Serialize}; -use strum::{Display, EnumString}; - -use crate::{pixeldim::PixelDim, transformers::ImageTransformer}; - -#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumString, Serialize, Deserialize, Display)] -pub enum Direction { - #[serde(rename = "n")] - #[strum(to_string = "n")] - #[strum(serialize = "north")] - North, - - #[serde(rename = "e")] - #[strum(serialize = "e")] - #[strum(serialize = "east")] - East, - - #[serde(rename = "s")] - #[strum(serialize = "s")] - #[strum(serialize = "south")] - South, - - #[serde(rename = "w")] - #[strum(to_string = "w")] - #[strum(serialize = "west")] - West, - - #[serde(rename = "c")] - #[strum(serialize = "c")] - #[strum(serialize = "center")] - Center, - - #[serde(rename = "ne")] - #[strum(serialize = "ne")] - #[strum(serialize = "northeast")] - NorthEast, - - #[serde(rename = "se")] - #[strum(serialize = "se")] - #[strum(serialize = "southeast")] - SouthEast, - - #[serde(rename = "nw")] - #[strum(serialize = "nw")] - #[strum(serialize = "northwest")] - NorthWest, - - #[serde(rename = "sw")] - #[strum(serialize = "sw")] - #[strum(serialize = "southwest")] - SouthWest, -} - -/// Crop an image to the given size. -/// - does not crop width if `w` is greater than image width -/// - does not crop height if `h` is greater than image height -/// - does nothing if `w` or `h` are less than or equal to zero. -#[derive(Debug, Clone, PartialEq)] -pub struct CropTransformer { - w: PixelDim, - h: PixelDim, - float: Direction, -} - -impl CropTransformer { - pub fn new(w: PixelDim, h: PixelDim, float: Direction) -> Self { - Self { w, h, float } - } - - fn crop_dim(&self, img_width: u32, img_height: u32) -> (u32, u32) { - let crop_width = match self.w { - PixelDim::Pixels(w) => w, - PixelDim::WidthPercent(pct) => ((img_width as f32) * pct / 100.0) as u32, - PixelDim::HeightPercent(pct) => ((img_height as f32) * pct / 100.0) as u32, - }; - - let crop_height = match self.h { - PixelDim::Pixels(h) => h, - PixelDim::WidthPercent(pct) => ((img_width as f32) * pct / 100.0) as u32, - PixelDim::HeightPercent(pct) => ((img_height as f32) * pct / 100.0) as u32, - }; - - (crop_width, crop_height) - } - - #[expect(clippy::integer_division)] - fn crop_pos( - &self, - img_width: u32, - img_height: u32, - crop_width: u32, - crop_height: u32, - ) -> (u32, u32) { - match self.float { - Direction::North => { - let x = (img_width - crop_width) / 2; - let y = 0; - (x, y) - } - Direction::East => { - let x = img_width - crop_width; - let y = (img_height - crop_height) / 2; - (x, y) - } - Direction::South => { - let x = (img_width - crop_width) / 2; - let y = img_height - crop_height; - (x, y) - } - Direction::West => { - let x = 0; - let y = (img_height - crop_height) / 2; - (x, y) - } - Direction::Center => { - let x = (img_width - crop_width) / 2; - let y = (img_height - crop_height) / 2; - (x, y) - } - Direction::NorthEast => { - let x = img_width - crop_width; - let y = 0; - (x, y) - } - Direction::SouthEast => { - let x = img_width - crop_width; - let y = img_height - crop_height; - (x, y) - } - Direction::NorthWest => { - let x = 0; - let y = 0; - (x, y) - } - Direction::SouthWest => { - let x = 0; - let y = img_height - crop_height; - (x, y) - } - } - } -} - -impl Display for CropTransformer { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "crop({},{},{})", self.w, self.h, self.float) - } -} - -impl ImageTransformer for CropTransformer { - fn parse_args(args: &str) -> Result { - let args: Vec<&str> = args.split(",").collect(); - if args.len() != 3 { - return Err(format!("expected 3 args, got {}", args.len())); - } - - let w = args[0].trim().parse::()?; - let h = args[1].trim().parse::()?; - - let direction = args[2].trim(); - let direction = Direction::from_str(direction) - .map_err(|_err| format!("invalid direction {direction}"))?; - - Ok(Self { - w, - h, - float: direction, - }) - } - - fn transform(&self, input: &mut DynamicImage) { - let (img_width, img_height) = (input.width(), input.height()); - let (crop_width, crop_height) = self.crop_dim(img_width, img_height); - - if (crop_width < img_width || crop_height < img_height) && crop_width > 0 && crop_height > 0 - { - let (x, y) = self.crop_pos(img_width, img_height, crop_width, crop_height); - *input = input.crop(x, y, crop_width, crop_height); - } - } -} diff --git a/crates/lib/pixel-transform/src/transformers/maxdim.rs b/crates/lib/pixel-transform/src/transformers/maxdim.rs deleted file mode 100644 index ccefca8..0000000 --- a/crates/lib/pixel-transform/src/transformers/maxdim.rs +++ /dev/null @@ -1,82 +0,0 @@ -use std::fmt::Display; - -use image::{DynamicImage, imageops::FilterType}; - -use crate::{pixeldim::PixelDim, transformers::ImageTransformer}; - -#[derive(Debug, Clone, PartialEq)] -pub struct MaxDimTransformer { - w: PixelDim, - h: PixelDim, -} - -impl MaxDimTransformer { - pub fn new(w: PixelDim, h: PixelDim) -> Self { - Self { w, h } - } - - fn target_dim(&self, img_width: u32, img_height: u32) -> (u32, u32) { - let max_width = match self.w { - PixelDim::Pixels(w) => Some(w), - PixelDim::WidthPercent(pct) => Some(((img_width as f32) * pct / 100.0) as u32), - PixelDim::HeightPercent(_) => None, - }; - - let max_height = match self.h { - PixelDim::Pixels(h) => Some(h), - PixelDim::HeightPercent(pct) => Some(((img_height as f32) * pct / 100.0) as u32), - PixelDim::WidthPercent(_) => None, - }; - - if max_width.map(|x| img_width <= x).unwrap_or(true) - && max_height.map(|x| img_height <= x).unwrap_or(true) - { - return (img_width, img_height); - } - - let width_ratio = max_width - .map(|x| x as f32 / img_width as f32) - .unwrap_or(1.0); - - let height_ratio = max_height - .map(|x| x as f32 / img_height as f32) - .unwrap_or(1.0); - - let ratio = width_ratio.min(height_ratio); - - ( - (img_width as f32 * ratio) as u32, - (img_height as f32 * ratio) as u32, - ) - } -} - -impl Display for MaxDimTransformer { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "maxdim({},{})", self.w, self.h) - } -} - -impl ImageTransformer for MaxDimTransformer { - fn parse_args(args: &str) -> Result { - let args: Vec<&str> = args.split(",").collect(); - if args.len() != 2 { - return Err(format!("expected 2 args, got {}", args.len())); - } - - let w = args[0].parse::()?; - let h = args[1].parse::()?; - - Ok(Self { w, h }) - } - - fn transform(&self, input: &mut DynamicImage) { - let (img_width, img_height) = (input.width(), input.height()); - let (target_width, target_height) = self.target_dim(img_width, img_height); - - // Only resize if needed - if target_width != img_width || target_height != img_height { - *input = input.resize(target_width, target_height, FilterType::Lanczos3); - } - } -} diff --git a/crates/lib/pixel-transform/src/transformers/mod.rs b/crates/lib/pixel-transform/src/transformers/mod.rs deleted file mode 100644 index 95ef77d..0000000 --- a/crates/lib/pixel-transform/src/transformers/mod.rs +++ /dev/null @@ -1,165 +0,0 @@ -use image::{DynamicImage, ImageFormat}; -use std::fmt; -use std::fmt::{Debug, Display}; -use std::str::FromStr; - -mod crop; -pub use crop::*; - -mod maxdim; -pub use maxdim::*; - -pub trait ImageTransformer -where - Self: PartialEq, - Self: Sized + Clone, - Self: Display + Debug, -{ - /// Transform the given image in place - fn transform(&self, input: &mut DynamicImage); - - /// Parse an arg string. - /// - /// `name({arg_string})` - fn parse_args(args: &str) -> Result; -} - -use serde::{Deserialize, Deserializer}; - -/// An enum of all [`ImageTransformer`]s -#[derive(Debug, Clone, PartialEq)] -pub enum TransformerEnum { - /// Usage: `maxdim(w, h)` - /// - /// Scale the image so its width is smaller than `w` - /// and its height is smaller than `h`. Aspect ratio is preserved. - /// - /// To only limit the size of one dimension, use `vw` or `vh`. - /// For example, `maxdim(50,100vh)` will not limit width. - MaxDim(MaxDimTransformer), - - /// Usage: `crop(w, h, float)` - /// - /// Crop the image to at most `w` by `h` pixels, - /// floating the crop area in the specified direction. - /// - /// Directions are one of: - /// - Cardinal: n,e,s,w - /// - Diagonal: ne,nw,se,sw, - /// - Centered: c - /// - /// Examples: - /// - `crop(100vw, 50)` gets the top 50 pixels of the image \ - /// (or fewer, if the image's height is smaller than 50) - /// - /// To only limit the size of one dimension, use `vw` or `vh`. - /// For example, `maxdim(50,100vh)` will not limit width. - Crop(CropTransformer), - - /// Usage: `format(format)` - /// - /// Transcode the image to the given format. - /// This step must be last, and cannot be provided - /// more than once. - /// - /// Valid formats: - /// - bmp - /// - gif - /// - ico - /// - jpeg or jpg - /// - png - /// - qoi - /// - webp - /// - /// Example: - /// - `format(png)` - /// - /// When transcoding an animated gif, the first frame is taken - /// and all others are thrown away. This happens even if we - /// transcode from a gif to a gif. - Format { format: ImageFormat }, -} - -impl FromStr for TransformerEnum { - type Err = String; - - fn from_str(s: &str) -> Result { - let s = s.trim(); - - let (name, args) = { - let name_len = match s.find('(') { - Some(x) => x + 1, - None => { - return Err(format!( - "invalid transformation {s}. Must look like name(args)." - )); - } - }; - - let mut balance = 1; - let mut end = name_len; - for i in s[name_len..].bytes() { - match i { - b')' => balance -= 1, - b'(' => balance += 1, - _ => {} - } - - if balance == 0 { - break; - } - - end += 1; - } - - if balance != 0 { - return Err(format!("mismatched parenthesis in {s}")); - } - - let name = s[0..name_len - 1].trim(); - let args = s[name_len..end].trim(); - let trail = s[end + 1..].trim(); - if !trail.is_empty() { - return Err(format!( - "invalid transformation {s}. Must look like name(args)." - )); - } - - (name, args) - }; - - match name { - "maxdim" => Ok(Self::MaxDim(MaxDimTransformer::parse_args(args)?)), - "crop" => Ok(Self::Crop(CropTransformer::parse_args(args)?)), - - "format" => Ok(TransformerEnum::Format { - format: ImageFormat::from_extension(args) - .ok_or(format!("invalid image format {args}"))?, - }), - - _ => Err(format!("unknown transformation {name}")), - } - } -} - -impl<'de> Deserialize<'de> for TransformerEnum { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - s.parse().map_err(serde::de::Error::custom) - } -} - -impl Display for TransformerEnum { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - TransformerEnum::MaxDim(x) => Display::fmt(x, f), - TransformerEnum::Crop(x) => Display::fmt(x, f), - TransformerEnum::Format { format } => { - write!(f, "format({})", format.extensions_str()[0]) - } - } - } -} diff --git a/crates/lib/toolbox/Cargo.toml b/crates/lib/toolbox/Cargo.toml index 04a3c57..fb60695 100644 --- a/crates/lib/toolbox/Cargo.toml +++ b/crates/lib/toolbox/Cargo.toml @@ -12,7 +12,6 @@ tokio = { workspace = true } [dependencies] serde = { workspace = true } -tracing = { workspace = true } num = { workspace = true } thiserror = { workspace = true } envy = { workspace = true } diff --git a/crates/lib/toolbox/src/lib.rs b/crates/lib/toolbox/src/lib.rs index 036ddc5..c654cea 100644 --- a/crates/lib/toolbox/src/lib.rs +++ b/crates/lib/toolbox/src/lib.rs @@ -1,8 +1,6 @@ //! This crate contains various bits of useful code that don't fit anywhere else. pub mod env; -pub mod mime; -pub mod misc; pub mod strings; #[cfg(feature = "cli")] diff --git a/crates/lib/toolbox/src/logging.rs b/crates/lib/toolbox/src/logging.rs index 52f9cdc..8e43cb5 100644 --- a/crates/lib/toolbox/src/logging.rs +++ b/crates/lib/toolbox/src/logging.rs @@ -70,6 +70,8 @@ impl From for EnvFilter { format!("tower={}", conf.silence), format!("reqwest={}", conf.silence), format!("axum={}", conf.silence), + format!("selectors={}", conf.silence), + format!("html5ever={}", conf.silence), // // Libs // diff --git a/crates/lib/toolbox/src/mime.rs b/crates/lib/toolbox/src/mime.rs deleted file mode 100644 index 4d99a82..0000000 --- a/crates/lib/toolbox/src/mime.rs +++ /dev/null @@ -1,811 +0,0 @@ -use std::{fmt::Display, str::FromStr}; - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use tracing::debug; - -/// A media type, conveniently parsed -#[derive(Debug, PartialEq, Eq, Clone)] -pub enum MimeType { - /// A mimetype we didn't recognize - Other(String), - - /// An unstructured binary blob - /// Use this whenever a mime type is unknown - Blob, - - // MARK: Audio - /// AAC audio file (audio/aac) - Aac, - /// FLAC audio file (audio/flac) - Flac, - /// MIDI audio file (audio/midi) - Midi, - /// MP3 audio file (audio/mpeg) - Mp3, - /// OGG audio file (audio/ogg) - Oga, - /// Opus audio file in Ogg container (audio/ogg) - Opus, - /// Waveform Audio Format (audio/wav) - Wav, - /// WEBM audio file (audio/webm) - Weba, - - // MARK: Video - /// AVI: Audio Video Interleave (video/x-msvideo) - Avi, - /// MP4 video file (video/mp4) - Mp4, - /// MPEG video file (video/mpeg) - Mpeg, - /// OGG video file (video/ogg) - Ogv, - /// MPEG transport stream (video/mp2t) - Ts, - /// WEBM video file (video/webm) - WebmVideo, - /// 3GPP audio/video container (video/3gpp) - ThreeGp, - /// 3GPP2 audio/video container (video/3gpp2) - ThreeG2, - - // MARK: Images - /// Animated Portable Network Graphics (image/apng) - Apng, - /// AVIF image (image/avif) - Avif, - /// Windows OS/2 Bitmap Graphics (image/bmp) - Bmp, - /// Graphics Interchange Format (image/gif) - Gif, - /// Icon format (image/vnd.microsoft.icon) - Ico, - /// JPEG image (image/jpeg) - Jpg, - /// Portable Network Graphics (image/png) - Png, - /// Quite ok Image Format - Qoi, - /// Scalable Vector Graphics (image/svg+xml) - Svg, - /// Tagged Image File Format (image/tiff) - Tiff, - /// WEBP image (image/webp) - Webp, - - // MARK: Text - /// Plain text (text/plain) - Text, - /// Cascading Style Sheets (text/css) - Css, - /// Comma-separated values (text/csv) - Csv, - /// HyperText Markup Language (text/html) - Html, - /// JavaScript (text/javascript) - Javascript, - /// JSON format (application/json) - Json, - /// JSON-LD format (application/ld+json) - JsonLd, - /// XML (application/xml) - Xml, - - // MARK: Documents - /// Adobe Portable Document Format (application/pdf) - Pdf, - /// Rich Text Format (application/rtf) - Rtf, - - // MARK: Archives - /// Archive document, multiple files embedded (application/x-freearc) - Arc, - /// BZip archive (application/x-bzip) - Bz, - /// BZip2 archive (application/x-bzip2) - Bz2, - /// GZip Compressed Archive (application/gzip) - Gz, - /// Java Archive (application/java-archive) - Jar, - /// OGG (application/ogg) - Ogg, - /// RAR archive (application/vnd.rar) - Rar, - /// 7-zip archive (application/x-7z-compressed) - SevenZ, - /// Tape Archive (application/x-tar) - Tar, - /// ZIP archive (application/zip) - Zip, - - // MARK: Fonts - /// MS Embedded OpenType fonts (application/vnd.ms-fontobject) - Eot, - /// OpenType font (font/otf) - Otf, - /// TrueType Font (font/ttf) - Ttf, - /// Web Open Font Format (font/woff) - Woff, - /// Web Open Font Format 2 (font/woff2) - Woff2, - - // MARK: Applications - /// AbiWord document (application/x-abiword) - Abiword, - /// Amazon Kindle eBook format (application/vnd.amazon.ebook) - Azw, - /// CD audio (application/x-cdf) - Cda, - /// C-Shell script (application/x-csh) - Csh, - /// Microsoft Word (application/msword) - Doc, - /// Microsoft Word OpenXML (application/vnd.openxmlformats-officedocument.wordprocessingml.document) - Docx, - /// Electronic publication (application/epub+zip) - Epub, - /// iCalendar format (text/calendar) - Ics, - /// Apple Installer Package (application/vnd.apple.installer+xml) - Mpkg, - /// OpenDocument presentation (application/vnd.oasis.opendocument.presentation) - Odp, - /// OpenDocument spreadsheet (application/vnd.oasis.opendocument.spreadsheet) - Ods, - /// OpenDocument text document (application/vnd.oasis.opendocument.text) - Odt, - /// Hypertext Preprocessor (application/x-httpd-php) - Php, - /// Microsoft PowerPoint (application/vnd.ms-powerpoint) - Ppt, - /// Microsoft PowerPoint OpenXML (application/vnd.openxmlformats-officedocument.presentationml.presentation) - Pptx, - /// Bourne shell script (application/x-sh) - Sh, - /// Microsoft Visio (application/vnd.visio) - Vsd, - /// XHTML (application/xhtml+xml) - Xhtml, - /// Microsoft Excel (application/vnd.ms-excel) - Xls, - /// Microsoft Excel OpenXML (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) - Xlsx, - /// XUL (application/vnd.mozilla.xul+xml) - Xul, -} - -// MARK: ser/de - -/* -impl utoipa::ToSchema for MimeType { - fn name() -> std::borrow::Cow<'static, str> { - std::borrow::Cow::Borrowed("MimeType") - } -} -impl utoipa::PartialSchema for MimeType { - fn schema() -> utoipa::openapi::RefOr { - utoipa::openapi::Schema::Object( - utoipa::openapi::schema::ObjectBuilder::new() - .schema_type(utoipa::openapi::schema::SchemaType::Type(Type::String)) - .description(Some( - "A media type string (e.g., 'application/json', 'text/plain')", - )) - .examples(Some("application/json")) - .build(), - ) - .into() - } -} -*/ - -impl Serialize for MimeType { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&self.to_string()) - } -} - -impl<'de> Deserialize<'de> for MimeType { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s = String::deserialize(deserializer)?; - Ok(MimeType::from_str(&s).unwrap()) - } -} - -// -// MARK: misc -// - -impl Default for MimeType { - fn default() -> Self { - Self::Blob - } -} - -impl From for MimeType { - fn from(value: String) -> Self { - Self::from_str(&value).unwrap() - } -} - -impl From<&str> for MimeType { - fn from(value: &str) -> Self { - Self::from_str(value).unwrap() - } -} - -impl From<&MimeType> for String { - fn from(value: &MimeType) -> Self { - value.to_string() - } -} - -// -// MARK: fromstr -// - -impl MimeType { - /// Parse a mimetype from a string that may contain - /// whitespace or ";" parameters. - /// - /// Parameters are discarded, write your own parser if you need them. - pub fn from_header(s: &str) -> Result::Err> { - let s = s.trim(); - let semi = s.find(';').unwrap_or(s.len()); - let space = s.find(' ').unwrap_or(s.len()); - let limit = semi.min(space); - let s = &s[0..limit]; - let s = s.trim(); - - return Self::from_str(s); - } -} - -impl FromStr for MimeType { - type Err = std::convert::Infallible; - - // Must match `display` below, but may provide other alternatives. - fn from_str(s: &str) -> Result { - Ok(match s { - "application/octet-stream" => Self::Blob, - - // Audio - "audio/aac" => Self::Aac, - "audio/flac" => Self::Flac, - "audio/midi" | "audio/x-midi" => Self::Midi, - "audio/mpeg" => Self::Mp3, - "audio/ogg" => Self::Oga, - "audio/wav" => Self::Wav, - "audio/webm" => Self::Weba, - - // Video - "video/x-msvideo" => Self::Avi, - "video/mp4" => Self::Mp4, - "video/mpeg" => Self::Mpeg, - "video/ogg" => Self::Ogv, - "video/mp2t" => Self::Ts, - "video/webm" => Self::WebmVideo, - "video/3gpp" => Self::ThreeGp, - "video/3gpp2" => Self::ThreeG2, - - // Images - "image/apng" => Self::Apng, - "image/avif" => Self::Avif, - "image/bmp" => Self::Bmp, - "image/gif" => Self::Gif, - "image/vnd.microsoft.icon" => Self::Ico, - "image/jpeg" | "image/jpg" => Self::Jpg, - "image/png" => Self::Png, - "image/svg+xml" => Self::Svg, - "image/tiff" => Self::Tiff, - "image/webp" => Self::Webp, - "image/qoi" => Self::Qoi, - - // Text - "text/plain" => Self::Text, - "text/css" => Self::Css, - "text/csv" => Self::Csv, - "text/html" => Self::Html, - "text/javascript" => Self::Javascript, - "application/json" => Self::Json, - "application/ld+json" => Self::JsonLd, - "application/xml" | "text/xml" => Self::Xml, - - // Documents - "application/pdf" => Self::Pdf, - "application/rtf" => Self::Rtf, - - // Archives - "application/x-freearc" => Self::Arc, - "application/x-bzip" => Self::Bz, - "application/x-bzip2" => Self::Bz2, - "application/gzip" | "application/x-gzip" => Self::Gz, - "application/java-archive" => Self::Jar, - "application/ogg" => Self::Ogg, - "application/vnd.rar" => Self::Rar, - "application/x-7z-compressed" => Self::SevenZ, - "application/x-tar" => Self::Tar, - "application/zip" | "application/x-zip-compressed" => Self::Zip, - - // Fonts - "application/vnd.ms-fontobject" => Self::Eot, - "font/otf" => Self::Otf, - "font/ttf" => Self::Ttf, - "font/woff" => Self::Woff, - "font/woff2" => Self::Woff2, - - // Applications - "application/x-abiword" => Self::Abiword, - "application/vnd.amazon.ebook" => Self::Azw, - "application/x-cdf" => Self::Cda, - "application/x-csh" => Self::Csh, - "application/msword" => Self::Doc, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" => Self::Docx, - "application/epub+zip" => Self::Epub, - "text/calendar" => Self::Ics, - "application/vnd.apple.installer+xml" => Self::Mpkg, - "application/vnd.oasis.opendocument.presentation" => Self::Odp, - "application/vnd.oasis.opendocument.spreadsheet" => Self::Ods, - "application/vnd.oasis.opendocument.text" => Self::Odt, - "application/x-httpd-php" => Self::Php, - "application/vnd.ms-powerpoint" => Self::Ppt, - "application/vnd.openxmlformats-officedocument.presentationml.presentation" => { - Self::Pptx - } - "application/x-sh" => Self::Sh, - "application/vnd.visio" => Self::Vsd, - "application/xhtml+xml" => Self::Xhtml, - "application/vnd.ms-excel" => Self::Xls, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" => Self::Xlsx, - "application/vnd.mozilla.xul+xml" => Self::Xul, - - _ => { - debug!(message = "Encountered unknown mimetype", mime_string = s); - Self::Other(s.into()) - } - }) - } -} - -// -// MARK: display -// - -impl Display for MimeType { - /// Get a string representation of this mimetype. - /// - /// The following always holds: - /// ```rust - /// # use toolbox::mime::MimeType; - /// # let x = MimeType::Blob; - /// assert_eq!(MimeType::from(x.to_string()), x); - /// ``` - /// - /// The following might not hold: - /// ```rust - /// # use toolbox::mime::MimeType; - /// # let y = "application/custom"; - /// // MimeType::from(y).to_string() may not equal y - /// ``` - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::Blob => write!(f, "application/octet-stream"), - - // Audio - Self::Aac => write!(f, "audio/aac"), - Self::Flac => write!(f, "audio/flac"), - Self::Midi => write!(f, "audio/midi"), - Self::Mp3 => write!(f, "audio/mpeg"), - Self::Oga => write!(f, "audio/ogg"), - Self::Opus => write!(f, "audio/ogg"), - Self::Wav => write!(f, "audio/wav"), - Self::Weba => write!(f, "audio/webm"), - - // Video - Self::Avi => write!(f, "video/x-msvideo"), - Self::Mp4 => write!(f, "video/mp4"), - Self::Mpeg => write!(f, "video/mpeg"), - Self::Ogv => write!(f, "video/ogg"), - Self::Ts => write!(f, "video/mp2t"), - Self::WebmVideo => write!(f, "video/webm"), - Self::ThreeGp => write!(f, "video/3gpp"), - Self::ThreeG2 => write!(f, "video/3gpp2"), - - // Images - Self::Apng => write!(f, "image/apng"), - Self::Avif => write!(f, "image/avif"), - Self::Bmp => write!(f, "image/bmp"), - Self::Gif => write!(f, "image/gif"), - Self::Ico => write!(f, "image/vnd.microsoft.icon"), - Self::Jpg => write!(f, "image/jpeg"), - Self::Png => write!(f, "image/png"), - Self::Svg => write!(f, "image/svg+xml"), - Self::Tiff => write!(f, "image/tiff"), - Self::Webp => write!(f, "image/webp"), - Self::Qoi => write!(f, "image/qoi"), - - // Text - Self::Text => write!(f, "text/plain"), - Self::Css => write!(f, "text/css"), - Self::Csv => write!(f, "text/csv"), - Self::Html => write!(f, "text/html"), - Self::Javascript => write!(f, "text/javascript"), - Self::Json => write!(f, "application/json"), - Self::JsonLd => write!(f, "application/ld+json"), - Self::Xml => write!(f, "application/xml"), - - // Documents - Self::Pdf => write!(f, "application/pdf"), - Self::Rtf => write!(f, "application/rtf"), - - // Archives - Self::Arc => write!(f, "application/x-freearc"), - Self::Bz => write!(f, "application/x-bzip"), - Self::Bz2 => write!(f, "application/x-bzip2"), - Self::Gz => write!(f, "application/gzip"), - Self::Jar => write!(f, "application/java-archive"), - Self::Ogg => write!(f, "application/ogg"), - Self::Rar => write!(f, "application/vnd.rar"), - Self::SevenZ => write!(f, "application/x-7z-compressed"), - Self::Tar => write!(f, "application/x-tar"), - Self::Zip => write!(f, "application/zip"), - - // Fonts - Self::Eot => write!(f, "application/vnd.ms-fontobject"), - Self::Otf => write!(f, "font/otf"), - Self::Ttf => write!(f, "font/ttf"), - Self::Woff => write!(f, "font/woff"), - Self::Woff2 => write!(f, "font/woff2"), - - // Applications - Self::Abiword => write!(f, "application/x-abiword"), - Self::Azw => write!(f, "application/vnd.amazon.ebook"), - Self::Cda => write!(f, "application/x-cdf"), - Self::Csh => write!(f, "application/x-csh"), - Self::Doc => write!(f, "application/msword"), - Self::Docx => write!( - f, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - ), - Self::Epub => write!(f, "application/epub+zip"), - Self::Ics => write!(f, "text/calendar"), - Self::Mpkg => write!(f, "application/vnd.apple.installer+xml"), - Self::Odp => write!(f, "application/vnd.oasis.opendocument.presentation"), - Self::Ods => write!(f, "application/vnd.oasis.opendocument.spreadsheet"), - Self::Odt => write!(f, "application/vnd.oasis.opendocument.text"), - Self::Php => write!(f, "application/x-httpd-php"), - Self::Ppt => write!(f, "application/vnd.ms-powerpoint"), - Self::Pptx => write!( - f, - "application/vnd.openxmlformats-officedocument.presentationml.presentation" - ), - Self::Sh => write!(f, "application/x-sh"), - Self::Vsd => write!(f, "application/vnd.visio"), - Self::Xhtml => write!(f, "application/xhtml+xml"), - Self::Xls => write!(f, "application/vnd.ms-excel"), - Self::Xlsx => write!( - f, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" - ), - Self::Xul => write!(f, "application/vnd.mozilla.xul+xml"), - - Self::Other(x) => write!(f, "{x}"), - } - } -} - -impl MimeType { - // - // MARK: from extension - // - - /// Try to guess a file's mime type from its extension. - /// `ext` should NOT start with a dot. - pub fn from_extension(ext: &str) -> Option { - Some(match ext { - // Audio - "aac" => Self::Aac, - "flac" => Self::Flac, - "mid" | "midi" => Self::Midi, - "mp3" => Self::Mp3, - "oga" => Self::Oga, - "opus" => Self::Opus, - "wav" => Self::Wav, - "weba" => Self::Weba, - - // Video - "avi" => Self::Avi, - "mp4" => Self::Mp4, - "mpeg" => Self::Mpeg, - "ogv" => Self::Ogv, - "ts" => Self::Ts, - "webm" => Self::WebmVideo, - "3gp" => Self::ThreeGp, - "3g2" => Self::ThreeG2, - - // Images - "apng" => Self::Apng, - "avif" => Self::Avif, - "bmp" => Self::Bmp, - "gif" => Self::Gif, - "ico" => Self::Ico, - "jpg" | "jpeg" => Self::Jpg, - "png" => Self::Png, - "svg" => Self::Svg, - "tif" | "tiff" => Self::Tiff, - "webp" => Self::Webp, - "qoi" => Self::Qoi, - - // Text - "txt" => Self::Text, - "css" => Self::Css, - "csv" => Self::Csv, - "htm" | "html" => Self::Html, - "js" | "mjs" => Self::Javascript, - "json" => Self::Json, - "jsonld" => Self::JsonLd, - "xml" => Self::Xml, - - // Documents - "pdf" => Self::Pdf, - "rtf" => Self::Rtf, - - // Archives - "arc" => Self::Arc, - "bz" => Self::Bz, - "bz2" => Self::Bz2, - "gz" => Self::Gz, - "jar" => Self::Jar, - "ogx" => Self::Ogg, - "rar" => Self::Rar, - "7z" => Self::SevenZ, - "tar" => Self::Tar, - "zip" => Self::Zip, - - // Fonts - "eot" => Self::Eot, - "otf" => Self::Otf, - "ttf" => Self::Ttf, - "woff" => Self::Woff, - "woff2" => Self::Woff2, - - // Applications - "abw" => Self::Abiword, - "azw" => Self::Azw, - "cda" => Self::Cda, - "csh" => Self::Csh, - "doc" => Self::Doc, - "docx" => Self::Docx, - "epub" => Self::Epub, - "ics" => Self::Ics, - "mpkg" => Self::Mpkg, - "odp" => Self::Odp, - "ods" => Self::Ods, - "odt" => Self::Odt, - "php" => Self::Php, - "ppt" => Self::Ppt, - "pptx" => Self::Pptx, - "sh" => Self::Sh, - "vsd" => Self::Vsd, - "xhtml" => Self::Xhtml, - "xls" => Self::Xls, - "xlsx" => Self::Xlsx, - "xul" => Self::Xul, - - _ => return None, - }) - } - - // - // MARK: to extension - // - - /// Get the extension we use for files with this type. - /// Never includes a dot. - pub fn extension(&self) -> Option<&'static str> { - match self { - Self::Blob => None, - Self::Other(_) => None, - - // Audio - Self::Aac => Some("aac"), - Self::Flac => Some("flac"), - Self::Midi => Some("midi"), - Self::Mp3 => Some("mp3"), - Self::Oga => Some("oga"), - Self::Opus => Some("opus"), - Self::Wav => Some("wav"), - Self::Weba => Some("weba"), - - // Video - Self::Avi => Some("avi"), - Self::Mp4 => Some("mp4"), - Self::Mpeg => Some("mpeg"), - Self::Ogv => Some("ogv"), - Self::Ts => Some("ts"), - Self::WebmVideo => Some("webm"), - Self::ThreeGp => Some("3gp"), - Self::ThreeG2 => Some("3g2"), - - // Images - Self::Apng => Some("apng"), - Self::Avif => Some("avif"), - Self::Bmp => Some("bmp"), - Self::Gif => Some("gif"), - Self::Ico => Some("ico"), - Self::Jpg => Some("jpg"), - Self::Png => Some("png"), - Self::Svg => Some("svg"), - Self::Tiff => Some("tiff"), - Self::Webp => Some("webp"), - Self::Qoi => Some("qoi"), - - // Text - Self::Text => Some("txt"), - Self::Css => Some("css"), - Self::Csv => Some("csv"), - Self::Html => Some("html"), - Self::Javascript => Some("js"), - Self::Json => Some("json"), - Self::JsonLd => Some("jsonld"), - Self::Xml => Some("xml"), - - // Documents - Self::Pdf => Some("pdf"), - Self::Rtf => Some("rtf"), - - // Archives - Self::Arc => Some("arc"), - Self::Bz => Some("bz"), - Self::Bz2 => Some("bz2"), - Self::Gz => Some("gz"), - Self::Jar => Some("jar"), - Self::Ogg => Some("ogx"), - Self::Rar => Some("rar"), - Self::SevenZ => Some("7z"), - Self::Tar => Some("tar"), - Self::Zip => Some("zip"), - - // Fonts - Self::Eot => Some("eot"), - Self::Otf => Some("otf"), - Self::Ttf => Some("ttf"), - Self::Woff => Some("woff"), - Self::Woff2 => Some("woff2"), - - // Applications - Self::Abiword => Some("abw"), - Self::Azw => Some("azw"), - Self::Cda => Some("cda"), - Self::Csh => Some("csh"), - Self::Doc => Some("doc"), - Self::Docx => Some("docx"), - Self::Epub => Some("epub"), - Self::Ics => Some("ics"), - Self::Mpkg => Some("mpkg"), - Self::Odp => Some("odp"), - Self::Ods => Some("ods"), - Self::Odt => Some("odt"), - Self::Php => Some("php"), - Self::Ppt => Some("ppt"), - Self::Pptx => Some("pptx"), - Self::Sh => Some("sh"), - Self::Vsd => Some("vsd"), - Self::Xhtml => Some("xhtml"), - Self::Xls => Some("xls"), - Self::Xlsx => Some("xlsx"), - Self::Xul => Some("xul"), - } - } - - // - // MARK: is_text - // - - /// Returns true if this MIME type is always plain text. - pub fn is_text(&self) -> bool { - match self { - // Text types - Self::Text => true, - Self::Css => true, - Self::Csv => true, - Self::Html => true, - Self::Javascript => true, - Self::Json => true, - Self::JsonLd => true, - Self::Xml => true, - Self::Svg => true, - Self::Ics => true, - Self::Xhtml => true, - - // Script types - Self::Csh => true, - Self::Php => true, - Self::Sh => true, - - // All other types are not plain text - Self::Other(_) => false, - Self::Blob => false, - - // Audio - Self::Aac => false, - Self::Flac => false, - Self::Midi => false, - Self::Mp3 => false, - Self::Oga => false, - Self::Opus => false, - Self::Wav => false, - Self::Weba => false, - - // Video - Self::Avi => false, - Self::Mp4 => false, - Self::Mpeg => false, - Self::Ogv => false, - Self::Ts => false, - Self::WebmVideo => false, - Self::ThreeGp => false, - Self::ThreeG2 => false, - - // Images - Self::Apng => false, - Self::Avif => false, - Self::Bmp => false, - Self::Gif => false, - Self::Ico => false, - Self::Jpg => false, - Self::Png => false, - Self::Qoi => false, - Self::Tiff => false, - Self::Webp => false, - - // Documents - Self::Pdf => false, - Self::Rtf => false, - - // Archives - Self::Arc => false, - Self::Bz => false, - Self::Bz2 => false, - Self::Gz => false, - Self::Jar => false, - Self::Ogg => false, - Self::Rar => false, - Self::SevenZ => false, - Self::Tar => false, - Self::Zip => false, - - // Fonts - Self::Eot => false, - Self::Otf => false, - Self::Ttf => false, - Self::Woff => false, - Self::Woff2 => false, - - // Applications - Self::Abiword => false, - Self::Azw => false, - Self::Cda => false, - Self::Doc => false, - Self::Docx => false, - Self::Epub => false, - Self::Mpkg => false, - Self::Odp => false, - Self::Ods => false, - Self::Odt => false, - Self::Ppt => false, - Self::Pptx => false, - Self::Vsd => false, - Self::Xls => false, - Self::Xlsx => false, - Self::Xul => false, - } - } -} diff --git a/crates/lib/toolbox/src/misc.rs b/crates/lib/toolbox/src/misc.rs deleted file mode 100644 index 68cb553..0000000 --- a/crates/lib/toolbox/src/misc.rs +++ /dev/null @@ -1,36 +0,0 @@ -/// Normalize a domain. This does the following: -/// - removes protocol prefixes -/// - removes leading `www` -/// - removes query params and path segments. -/// -/// This function is for roach, and should exactly match the ts implementation. -/// -/// ## Examples: -/// ``` -/// # use toolbox::misc::normalize_domain; -/// assert_eq!("domain.com", normalize_domain("domain.com")); -/// assert_eq!("domain.com", normalize_domain("domain.com/")); -/// assert_eq!("domain.com", normalize_domain("domain.com/en/us")); -/// assert_eq!("domain.com", normalize_domain("domain.com/?key=val")); -/// assert_eq!("domain.com", normalize_domain("www.domain.com")); -/// assert_eq!("domain.com", normalize_domain("https://www.domain.com")); -/// assert_eq!("us.domain.com", normalize_domain("us.domain.com")); -/// ``` -pub fn normalize_domain(domain: &str) -> &str { - let mut domain = domain.strip_prefix("http://").unwrap_or(domain); - domain = domain.strip_prefix("https://").unwrap_or(domain); - domain = domain.strip_prefix("www.").unwrap_or(domain); - domain = domain.find("/").map_or(domain, |x| &domain[0..x]); - - return domain; -} - -/* -pub fn random_string(length: usize) -> String { - rand::rng() - .sample_iter(&Alphanumeric) - .take(length) - .map(char::from) - .collect() -} -*/ diff --git a/crates/macro/macro-sass/Cargo.toml b/crates/macro/macro-sass/Cargo.toml deleted file mode 100644 index c2f54ad..0000000 --- a/crates/macro/macro-sass/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "macro-sass" -version = { workspace = true } -rust-version = { workspace = true } -edition = { workspace = true } - -[lints] -workspace = true - -[lib] -proc-macro = true - -[dependencies] -syn = { workspace = true } -quote = { workspace = true } -grass = { workspace = true } diff --git a/crates/macro/macro-sass/src/lib.rs b/crates/macro/macro-sass/src/lib.rs deleted file mode 100644 index a991723..0000000 --- a/crates/macro/macro-sass/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -use proc_macro::TokenStream; -use quote::quote; -use std::path::PathBuf; -use syn::{LitStr, parse_macro_input}; - -/// A macro for parsing Sass/SCSS files at compile time. -/// -/// This macro takes a file path to a Sass/SCSS file, compiles it to CSS at compile time -/// using the `grass` compiler, and returns the resulting CSS as a `&'static str`. -/// -/// # Behavior -/// -/// Similar to `include_str!`, this macro: -/// - Reads the specified file at compile time -/// - Compiles the Sass/SCSS to CSS using `grass::from_path()` with default options -/// - Handles `@import` and `@use` directives, resolving imported files relative to the main file -/// - Embeds the resulting CSS string in the binary -/// - Returns a `&'static str` containing the compiled CSS -/// -/// # Syntax -/// -/// ```notrust -/// sass!("path/to/file.scss") -/// ``` -/// -/// # Arguments -/// -/// - A string literal containing the path to the Sass/SCSS file (relative to the crate root) -/// -/// # Example -/// -/// ```notrust -/// // Relative to crate root: looks for src/routes/css/main.scss -/// const MY_STYLES: &str = sass!("src/routes/css/main.scss"); -/// -/// // Use in HTML generation -/// html! { -/// style { (PreEscaped(MY_STYLES)) } -/// } -/// ``` -/// -/// # Import Support -/// -/// The macro fully supports Sass imports and uses: -/// ```notrust -/// // main.scss -/// @import "variables"; -/// @use "mixins"; -/// -/// .button { -/// color: $primary-color; -/// } -/// ``` -/// -/// All imported files are resolved relative to the location of the main Sass file. -/// -/// # Compile-time vs Runtime -/// -/// Instead of this runtime code: -/// ```notrust -/// let css = grass::from_path( -/// "styles.scss", -/// &grass::Options::default() -/// ).unwrap(); -/// ``` -/// -/// You can use: -/// ```notrust -/// const CSS: &str = sass!("styles.scss"); -/// ``` -/// -/// # Panics -/// -/// This macro will cause a compile error if: -/// - The specified file does not exist -/// - The file path is invalid -/// - The Sass/SCSS file contains syntax errors -/// - Any imported files cannot be found -/// - The grass compiler fails for any reason -/// -/// # Note -/// -/// The file path is relative to the crate root (where `Cargo.toml` is located), determined -/// by the `CARGO_MANIFEST_DIR` environment variable. This is similar to how `include!()` works -/// but differs from `include_str!()` which is relative to the current file. -#[proc_macro] -pub fn sass(input: TokenStream) -> TokenStream { - let input_lit = parse_macro_input!(input as LitStr); - let file_path = PathBuf::from(input_lit.value()); - - // Not stable yet, we have to use crate-relative paths :( - //let span = proc_macro::Span::call_site(); - //let source_file = span.source_file(); - //let path: PathBuf = source_file.path(); - - // Use a combination of include_str! and grass compilation - // include_str! handles the relative path resolution for us - // We generate code that uses include_str! at the user's call site - // and compiles it at macro expansion time - - // First, try to read and compile the file at macro expansion time - // The path is interpreted relative to CARGO_MANIFEST_DIR - let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| ".".to_owned()); - let full_path = std::path::Path::new(&manifest_dir).join(&file_path); - - let css = match grass::from_path(&full_path, &grass::Options::default()) { - Ok(css) => css, - Err(e) => { - return syn::Error::new( - input_lit.span(), - format!( - "Failed to compile Sass file '{}': {}", - file_path.display(), - e, - ), - ) - .to_compile_error() - .into(); - } - }; - - // Generate code that returns the compiled CSS as a string literal - let expanded = quote! { - #css - }; - - TokenStream::from(expanded) -} - -#[proc_macro] -pub fn sass_str(input: TokenStream) -> TokenStream { - let input_lit = parse_macro_input!(input as LitStr); - let sass_str = input_lit.value(); - - let css = match grass::from_string(&sass_str, &grass::Options::default()) { - Ok(css) => css, - Err(e) => { - return syn::Error::new( - input_lit.span(), - format!("Failed to compile Sass string: {e}."), - ) - .to_compile_error() - .into(); - } - }; - - let expanded = quote! { #css }; - TokenStream::from(expanded) -} diff --git a/crates/service/service-webpage/Cargo.toml b/crates/service/service-webpage/Cargo.toml index 732ccc7..f8c90d9 100644 --- a/crates/service/service-webpage/Cargo.toml +++ b/crates/service/service-webpage/Cargo.toml @@ -9,13 +9,11 @@ workspace = true [dependencies] libservice = { workspace = true } -macro-sass = { workspace = true } -toolbox = { workspace = true } -page = { workspace = true } md-footnote = { workspace = true } markdown-it = { workspace = true } +grass = { workspace = true } axum = { workspace = true } tracing = { workspace = true } maud = { workspace = true } @@ -29,3 +27,4 @@ serde = { workspace = true } reqwest = { workspace = true } tokio = { workspace = true } tower-http = { workspace = true } +servable = { workspace = true } diff --git a/crates/service/service-webpage/assets/lockhart.pdf b/crates/service/service-webpage/assets/lockhart.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a0a41a20df03decc73cadfa8d5c0199f4dd0736c GIT binary patch literal 400277 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 z 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

    P~;*X%^l-Sec0 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

    gZY@h|B)ASML$me37K^S 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�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

    94t#FQxEBHUji)bAj$1qN6)(9$rb!LUj> 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

    RY;l-moWd)Uq2sm}41AVli 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

    -P9WjGT9c)Ygm@ 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

    +H^anxsaGXXqYC$n|L&J$uTJYAJS;K4idar; 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 Page { +pub static HANDOUTS: LazyLock = LazyLock::new(|| { let md = Markdown::parse(include_str!("handouts.md")); let index = CachedRequest::new( @@ -188,24 +189,27 @@ pub fn handouts() -> Page { let mut meta = meta_from_markdown(&md).unwrap().unwrap(); if meta.image.is_none() { - meta.image = Some("/assets/img/icon.png".to_owned()); + meta.image = Some(IMG_ICON.route().into()); } let html = PreEscaped(md.render()); - MAIN_TEMPLATE - .derive(meta, move |page, ctx| { + HtmlPage::default() + .with_style_linked(MAIN_CSS.route()) + .with_script_inline(LAZY_IMAGE_JS) + .with_meta(meta) + .with_render(move |page, ctx| { let html = html.clone(); let index = index.clone(); render(html, index, page, ctx) }) - .html_ttl(Some(TimeDelta::seconds(300))) -} + .with_ttl(Some(TimeDelta::seconds(300))) +}); fn render<'a>( html: Markup, index: Arc, reqwest::Error>>>, - _page: &'a Page, + _page: &'a HtmlPage, ctx: &'a RenderContext, ) -> Pin + Send + Sync + 'a>> { Box::pin(async move { diff --git a/crates/service/service-webpage/src/pages/index.rs b/crates/service/service-webpage/src/pages/index.rs index a52c25e..65108f8 100644 --- a/crates/service/service-webpage/src/pages/index.rs +++ b/crates/service/service-webpage/src/pages/index.rs @@ -1,9 +1,6 @@ use maud::{Markup, html}; -use page::{ - RenderContext, - servable::{Page, PageMetadata}, -}; -use std::pin::Pin; +use servable::{HtmlPage, PageMetadata, RenderContext}; +use std::{pin::Pin, sync::LazyLock}; use crate::{ components::{ @@ -12,23 +9,25 @@ use crate::{ md::Markdown, misc::FarLink, }, - pages::{MAIN_TEMPLATE, footer}, + pages::{LAZY_IMAGE_JS, footer}, + routes::{IMG_ICON, MAIN_CSS}, }; -pub fn index() -> Page { - MAIN_TEMPLATE.derive( - PageMetadata { +pub static INDEX: LazyLock = LazyLock::new(|| { + HtmlPage::default() + .with_style_linked(MAIN_CSS.route()) + .with_script_inline(LAZY_IMAGE_JS) + .with_meta(PageMetadata { title: "Betalupi: About".into(), author: Some("Mark".into()), description: None, - image: Some("/assets/img/icon.png".to_owned()), - }, - render, - ) -} + image: Some(IMG_ICON.route().into()), + }) + .with_render(render) +}); fn render<'a>( - _page: &'a Page, + _page: &'a HtmlPage, _ctx: &'a RenderContext, ) -> Pin + Send + Sync + 'a>> { Box::pin(async { diff --git a/crates/service/service-webpage/src/pages/mod.rs b/crates/service/service-webpage/src/pages/mod.rs index c6f2431..6dc34d2 100644 --- a/crates/service/service-webpage/src/pages/mod.rs +++ b/crates/service/service-webpage/src/pages/mod.rs @@ -1,57 +1,29 @@ use chrono::TimeDelta; use maud::{Markup, PreEscaped, html}; -use page::{ - RenderContext, - servable::{Page, PageMetadata, PageTemplate}, -}; +use reqwest::StatusCode; +use servable::{HtmlPage, PageMetadata, RenderContext}; +use std::sync::LazyLock; -use crate::components::{ - fa::FAIcon, - md::{Markdown, meta_from_markdown}, - misc::FarLink, +use crate::{ + components::{ + fa::FAIcon, + md::{Markdown, meta_from_markdown}, + misc::FarLink, + }, + routes::{IMG_ICON, MAIN_CSS}, }; mod handouts; mod index; -mod notfound; -pub use handouts::handouts; -pub use index::index; -pub use notfound::notfound; - -pub fn links() -> Page { - /* - Dead links: - - https://www.commitstrip.com/en/ - http://www.3dprintmath.com/ - */ - - page_from_markdown( - include_str!("links.md"), - Some("/assets/img/icon.png".to_owned()), - ) -} - -pub fn betalupi() -> Page { - page_from_markdown( - include_str!("betalupi.md"), - Some("/assets/img/icon.png".to_owned()), - ) -} - -pub fn htwah_typesetting() -> Page { - page_from_markdown( - include_str!("htwah-typesetting.md"), - Some("/assets/img/icon.png".to_owned()), - ) -} +pub use handouts::HANDOUTS; +pub use index::INDEX; // // MARK: md // -fn page_from_markdown(md: impl Into, default_image: Option) -> Page { +fn page_from_markdown(md: impl Into, default_image: Option) -> HtmlPage { let md: String = md.into(); let md = Markdown::parse(&md); @@ -68,8 +40,11 @@ fn page_from_markdown(md: impl Into, default_image: Option) -> P let html = PreEscaped(md.render()); - MAIN_TEMPLATE - .derive(meta, move |_page, ctx| { + HtmlPage::default() + .with_script_inline(LAZY_IMAGE_JS) + .with_style_linked(MAIN_CSS.route()) + .with_meta(meta) + .with_render(move |_page, ctx| { let html = html.clone(); Box::pin(async move { @@ -86,48 +61,46 @@ fn page_from_markdown(md: impl Into, default_image: Option) -> P } }) }) - .html_ttl(Some(TimeDelta::days(1))) - .immutable(true) + .with_ttl(Some(TimeDelta::days(1))) } // // MARK: components // +const LAZY_IMAGE_JS: &str = " + window.onload = function() { + var imgs = document.querySelectorAll('.img-placeholder'); + + imgs.forEach(img => { + img.style.border = 'none'; + img.style.filter = 'blur(10px)'; + img.style.transition = 'filter 0.3s'; + + var lg = new Image(); + lg.src = img.dataset.large; + lg.onload = function () { + img.src = img.dataset.large; + img.style.filter = 'blur(0px)'; + }; + }) + } + "; + +/* const MAIN_TEMPLATE: PageTemplate = PageTemplate { // Order matters, base htmx goes first - scripts_linked: &["/assets/htmx.js", "/assets/htmx-json.js"], - - // TODO: use htmx for this - scripts_inline: &[" - window.onload = function() { - var imgs = document.querySelectorAll('.img-placeholder'); - - imgs.forEach(img => { - img.style.border = 'none'; - img.style.filter = 'blur(10px)'; - img.style.transition = 'filter 0.3s'; - - var lg = new Image(); - lg.src = img.dataset.large; - lg.onload = function () { - img.src = img.dataset.large; - img.style.filter = 'blur(0px)'; - }; - }) - } - "], - - styles_inline: &[], - styles_linked: &["/assets/css/main.css"], + scripts: &[ + ScriptSource::Linked(&"/assets/htmx-2.0.8.js"), + ScriptSource::Linked(&"/assets/htmx-json-1.19.12.js"), + ], extra_meta: &[( "viewport", "width=device-width,initial-scale=1,user-scalable=no", )], - - ..PageTemplate::const_default() }; +*/ pub fn backlinks(ctx: &RenderContext) -> Option { let mut backlinks = vec![("/", "home")]; @@ -184,3 +157,56 @@ pub fn footer() -> Markup { } ) } + +// +// MARK: pages +// + +pub const LINKS: LazyLock = LazyLock::new(|| { + /* + Dead links: + + https://www.commitstrip.com/en/ + http://www.3dprintmath.com/ + */ + + page_from_markdown(include_str!("links.md"), Some(IMG_ICON.route().into())) +}); + +pub const BETALUPI: LazyLock = LazyLock::new(|| { + page_from_markdown(include_str!("betalupi.md"), Some(IMG_ICON.route().into())) +}); + +pub const HTWAH_TYPESETTING: LazyLock = LazyLock::new(|| { + page_from_markdown( + include_str!("htwah-typesetting.md"), + Some(IMG_ICON.route().into()), + ) +}); + +pub static NOT_FOUND: LazyLock = LazyLock::new(|| { + HtmlPage::default() + .with_style_linked(MAIN_CSS.route()) + .with_meta(PageMetadata { + title: "Page not found".into(), + author: None, + description: None, + image: Some(IMG_ICON.route().into()), + }) + .with_render( + move |_page, _ctx| { + Box::pin(async { + html! { + div class="wrapper" { + div style="display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh" { + p style="font-weight:bold;font-size:50pt;margin:0;" { "404" } + p style="font-size:13pt;margin:0;color:var(--grey);" { "(page not found)" } + a style="font-size:12pt;margin:10pt;padding:5px;" href="/" {"<- Back to site"} + } + } + } + }) + } + ) + .with_code(StatusCode::NOT_FOUND) +}); diff --git a/crates/service/service-webpage/src/pages/notfound.rs b/crates/service/service-webpage/src/pages/notfound.rs deleted file mode 100644 index 4f0d64a..0000000 --- a/crates/service/service-webpage/src/pages/notfound.rs +++ /dev/null @@ -1,29 +0,0 @@ -use maud::html; -use page::servable::{Page, PageMetadata}; -use reqwest::StatusCode; - -use crate::pages::MAIN_TEMPLATE; - -pub fn notfound() -> Page { - MAIN_TEMPLATE.derive( - PageMetadata { - title: "Page not found".into(), - author:None, - description: None, - image: Some("/assets/img/icon.png".to_owned()), - }, - move |_page, _ctx| { - Box::pin(async { - html! { - div class="wrapper" { - div style="display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh" { - p style="font-weight:bold;font-size:50pt;margin:0;" { "404" } - p style="font-size:13pt;margin:0;color:var(--grey);" { "(page not found)" } - a style="font-size:12pt;margin:10pt;padding:5px;" href="/" {"<- Back to site"} - } - } - } - }) - }, - ).response_code(StatusCode::NOT_FOUND) -} diff --git a/crates/service/service-webpage/src/routes/mod.rs b/crates/service/service-webpage/src/routes/mod.rs index e1dd814..417501e 100644 --- a/crates/service/service-webpage/src/routes/mod.rs +++ b/crates/service/service-webpage/src/routes/mod.rs @@ -1,10 +1,7 @@ use axum::Router; -use macro_sass::sass; -use page::{ - ServableRoute, - servable::{Redirect, StaticAsset}, +use servable::{ + CACHE_BUST_STR, Redirect, ServableRouter, ServableWithRoute, StaticAsset, mime::MimeType, }; -use toolbox::mime::MimeType; use tower_http::compression::{CompressionLayer, DefaultPredicate}; use crate::pages; @@ -20,184 +17,270 @@ pub(super) fn router() -> Router<()> { build_server().into_router().layer(compression) } -fn build_server() -> ServableRoute { - ServableRoute::new() - .with_404(pages::notfound()) - .add_page("/", pages::index()) - .add_page("/links", pages::links()) - .add_page("/whats-a-betalupi", pages::betalupi()) - .add_page("/handouts", pages::handouts()) +pub static HTMX: ServableWithRoute = ServableWithRoute::new( + || "/assets/htmx-2.0.8.js".into(), + servable::HTMX_2_0_8.with_ttl(None), +); + +pub static HTMX_JSON: ServableWithRoute = ServableWithRoute::new( + || "/assets/htmx-json-1.19.12.js".into(), + servable::EXT_JSON_1_19_12, +); + +pub static MAIN_CSS: ServableWithRoute = ServableWithRoute::new( + || format!("/assets/{}/css/main.css", *CACHE_BUST_STR), + StaticAsset { + bytes: grass::include!("css/main.scss").as_bytes(), + mime: MimeType::Css, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static IMG_COVER_SMALL: ServableWithRoute = ServableWithRoute::new( + || "/assets/img/cover-small.jpg".into(), + StaticAsset { + bytes: include_bytes!("../../assets/images/cover-small.jpg"), + mime: MimeType::Jpg, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static IMG_BETALUPI: ServableWithRoute = ServableWithRoute::new( + || "/assets/img/betalupi.png".into(), + StaticAsset { + bytes: include_bytes!("../../assets/images/betalupi-map.png"), + mime: MimeType::Png, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static IMG_ICON: ServableWithRoute = ServableWithRoute::new( + || "/assets/img/icon.png".into(), + StaticAsset { + bytes: include_bytes!("../../assets/images/icon.png"), + mime: MimeType::Png, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +// +// MARK: fonts +// + +pub static FONT_FIRACODE_BOLD: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-Bold.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Bold.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FIRACODE_LIGHT: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-Light.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Light.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FIRACODE_MEDIUM: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-Medium.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Medium.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FIRACODE_REGULAR: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-Regular.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Regular.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FIRACODE_SEMIBOLD: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-SemiBold.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-SemiBold.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FIRACODE_VF: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/FiraCode-VF.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fira/FiraCode-VF.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +// +// MARK: icons +// +pub static FONT_FA_BRANDS_WOFF2: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-brands-400.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-brands-400.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FA_REGULAR_WOFF2: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-regular-400.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-regular-400.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FA_SOLID_WOFF2: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-solid-900.woff2".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-solid-900.woff2"), + mime: MimeType::Woff2, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FA_BRANDS_TTF: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-brands-400.ttf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-brands-400.ttf"), + mime: MimeType::Ttf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FA_REGULAR_TTF: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-regular-400.ttf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-regular-400.ttf"), + mime: MimeType::Ttf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static FONT_FA_SOLID_TTF: ServableWithRoute = ServableWithRoute::new( + || "/assets/fonts/fa/fa-solid-900.ttf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/fonts/fa/fa-solid-900.ttf"), + mime: MimeType::Ttf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +// +// MARK: htwah +// +pub static HTWAH_DEFINITIONS: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/definitions.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/definitions.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static HTWAH_NUMBERING: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/numbering.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/numbering.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static HTWAH_SOLS_A: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/sols-a.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/sols-a.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static HTWAH_SOLS_B: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/sols-b.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/sols-b.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static HTWAH_SPACING_A: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/spacing-a.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/spacing-a.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +pub static HTWAH_SPACING_B: ServableWithRoute = ServableWithRoute::new( + || "/assets/htwah/spacing-b.pdf".into(), + StaticAsset { + bytes: include_bytes!("../../assets/htwah/spacing-b.pdf"), + mime: MimeType::Pdf, + ttl: StaticAsset::DEFAULT_TTL, + }, +); + +fn build_server() -> ServableRouter { + ServableRouter::new() + .with_404(&pages::NOT_FOUND) + .add_page("/", &pages::INDEX) + .add_page("/links", pages::LINKS) + .add_page("/whats-a-betalupi", pages::BETALUPI) + .add_page("/handouts", &pages::HANDOUTS) .add_page("/htwah", { #[expect(clippy::unwrap_used)] Redirect::new("/handouts").unwrap() }) - .add_page("/htwah/typesetting", pages::htwah_typesetting()) - .add_page("/assets/htmx.js", page::HTMX_2_0_8) - .add_page("/assets/htmx-json.js", page::EXT_JSON_1_19_12) + .add_page("/htwah/typesetting", pages::HTWAH_TYPESETTING) + .add_page_with_route(&HTMX) + .add_page_with_route(&HTMX_JSON) // - .add_page( - "/assets/css/main.css", - StaticAsset { - bytes: sass!("css/main.scss").as_bytes(), - mime: MimeType::Css, - }, - ) - .add_page( - "/assets/img/cover-small.jpg", - StaticAsset { - bytes: include_bytes!("../../assets/images/cover-small.jpg"), - mime: MimeType::Jpg, - }, - ) - .add_page( - "/assets/img/betalupi.png", - StaticAsset { - bytes: include_bytes!("../../assets/images/betalupi-map.png"), - mime: MimeType::Png, - }, - ) - .add_page( - "/assets/img/icon.png", - StaticAsset { - bytes: include_bytes!("../../assets/images/icon.png"), - mime: MimeType::Png, - }, - ) + .add_page_with_route(&MAIN_CSS) + .add_page_with_route(&IMG_COVER_SMALL) + .add_page_with_route(&IMG_BETALUPI) + .add_page_with_route(&IMG_ICON) // // MARK: fonts // - .add_page( - "/assets/fonts/FiraCode-Bold.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Bold.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/FiraCode-Light.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Light.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/FiraCode-Medium.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Medium.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/FiraCode-Regular.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-Regular.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/FiraCode-SemiBold.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-SemiBold.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/FiraCode-VF.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fira/FiraCode-VF.woff2"), - mime: MimeType::Woff2, - }, - ) + .add_page_with_route(&FONT_FIRACODE_BOLD) + .add_page_with_route(&FONT_FIRACODE_LIGHT) + .add_page_with_route(&FONT_FIRACODE_MEDIUM) + .add_page_with_route(&FONT_FIRACODE_REGULAR) + .add_page_with_route(&FONT_FIRACODE_SEMIBOLD) + .add_page_with_route(&FONT_FIRACODE_VF) // // MARK: icons // - .add_page( - "/assets/fonts/fa/fa-brands-400.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-brands-400.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/fa/fa-regular-400.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-regular-400.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/fa/fa-solid-900.woff2", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-solid-900.woff2"), - mime: MimeType::Woff2, - }, - ) - .add_page( - "/assets/fonts/fa/fa-brands-400.ttf", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-brands-400.ttf"), - mime: MimeType::Ttf, - }, - ) - .add_page( - "/assets/fonts/fa/fa-regular-400.ttf", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-regular-400.ttf"), - mime: MimeType::Ttf, - }, - ) - .add_page( - "/assets/fonts/fa/fa-solid-900.ttf", - StaticAsset { - bytes: include_bytes!("../../assets/fonts/fa/fa-solid-900.ttf"), - mime: MimeType::Ttf, - }, - ) + .add_page_with_route(&FONT_FA_BRANDS_WOFF2) + .add_page_with_route(&FONT_FA_REGULAR_WOFF2) + .add_page_with_route(&FONT_FA_SOLID_WOFF2) + .add_page_with_route(&FONT_FA_BRANDS_TTF) + .add_page_with_route(&FONT_FA_REGULAR_TTF) + .add_page_with_route(&FONT_FA_SOLID_TTF) // // MARK: htwah // - .add_page( - "/assets/htwah/definitions.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/definitions.pdf"), - mime: MimeType::Pdf, - }, - ) - .add_page( - "/assets/htwah/numbering.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/numbering.pdf"), - mime: MimeType::Pdf, - }, - ) - .add_page( - "/assets/htwah/sols-a.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/sols-a.pdf"), - mime: MimeType::Pdf, - }, - ) - .add_page( - "/assets/htwah/sols-b.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/sols-b.pdf"), - mime: MimeType::Pdf, - }, - ) - .add_page( - "/assets/htwah/spacing-a.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/spacing-a.pdf"), - mime: MimeType::Pdf, - }, - ) - .add_page( - "/assets/htwah/spacing-b.pdf", - StaticAsset { - bytes: include_bytes!("../../assets/htwah/spacing-b.pdf"), - mime: MimeType::Pdf, - }, - ) + .add_page_with_route(&HTWAH_DEFINITIONS) + .add_page_with_route(&HTWAH_NUMBERING) + .add_page_with_route(&HTWAH_SOLS_A) + .add_page_with_route(&HTWAH_SOLS_B) + .add_page_with_route(&HTWAH_SPACING_A) + .add_page_with_route(&HTWAH_SPACING_B) } #[test] diff --git a/crates/service/service-webpage/css/blocks.scss b/css/blocks.scss similarity index 100% rename from crates/service/service-webpage/css/blocks.scss rename to css/blocks.scss diff --git a/crates/service/service-webpage/css/fontawesome/_animated.scss b/css/fontawesome/_animated.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_animated.scss rename to css/fontawesome/_animated.scss diff --git a/crates/service/service-webpage/css/fontawesome/_bordered-pulled.scss b/css/fontawesome/_bordered-pulled.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_bordered-pulled.scss rename to css/fontawesome/_bordered-pulled.scss diff --git a/crates/service/service-webpage/css/fontawesome/_core.scss b/css/fontawesome/_core.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_core.scss rename to css/fontawesome/_core.scss diff --git a/crates/service/service-webpage/css/fontawesome/_fixed-width.scss b/css/fontawesome/_fixed-width.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_fixed-width.scss rename to css/fontawesome/_fixed-width.scss diff --git a/crates/service/service-webpage/css/fontawesome/_functions.scss b/css/fontawesome/_functions.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_functions.scss rename to css/fontawesome/_functions.scss diff --git a/crates/service/service-webpage/css/fontawesome/_icons.scss b/css/fontawesome/_icons.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_icons.scss rename to css/fontawesome/_icons.scss diff --git a/crates/service/service-webpage/css/fontawesome/_list.scss b/css/fontawesome/_list.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_list.scss rename to css/fontawesome/_list.scss diff --git a/crates/service/service-webpage/css/fontawesome/_mixins.scss b/css/fontawesome/_mixins.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_mixins.scss rename to css/fontawesome/_mixins.scss diff --git a/crates/service/service-webpage/css/fontawesome/_rotated-flipped.scss b/css/fontawesome/_rotated-flipped.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_rotated-flipped.scss rename to css/fontawesome/_rotated-flipped.scss diff --git a/crates/service/service-webpage/css/fontawesome/_screen-reader.scss b/css/fontawesome/_screen-reader.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_screen-reader.scss rename to css/fontawesome/_screen-reader.scss diff --git a/crates/service/service-webpage/css/fontawesome/_shims.scss b/css/fontawesome/_shims.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_shims.scss rename to css/fontawesome/_shims.scss diff --git a/crates/service/service-webpage/css/fontawesome/_sizing.scss b/css/fontawesome/_sizing.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_sizing.scss rename to css/fontawesome/_sizing.scss diff --git a/crates/service/service-webpage/css/fontawesome/_stacked.scss b/css/fontawesome/_stacked.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_stacked.scss rename to css/fontawesome/_stacked.scss diff --git a/crates/service/service-webpage/css/fontawesome/_variables.scss b/css/fontawesome/_variables.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/_variables.scss rename to css/fontawesome/_variables.scss diff --git a/crates/service/service-webpage/css/fontawesome/brands.scss b/css/fontawesome/brands.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/brands.scss rename to css/fontawesome/brands.scss diff --git a/crates/service/service-webpage/css/fontawesome/fontawesome.scss b/css/fontawesome/fontawesome.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/fontawesome.scss rename to css/fontawesome/fontawesome.scss diff --git a/crates/service/service-webpage/css/fontawesome/regular.scss b/css/fontawesome/regular.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/regular.scss rename to css/fontawesome/regular.scss diff --git a/crates/service/service-webpage/css/fontawesome/solid.scss b/css/fontawesome/solid.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/solid.scss rename to css/fontawesome/solid.scss diff --git a/crates/service/service-webpage/css/fontawesome/v4-shims.scss b/css/fontawesome/v4-shims.scss similarity index 100% rename from crates/service/service-webpage/css/fontawesome/v4-shims.scss rename to css/fontawesome/v4-shims.scss diff --git a/crates/service/service-webpage/css/images.scss b/css/images.scss similarity index 100% rename from crates/service/service-webpage/css/images.scss rename to css/images.scss diff --git a/crates/service/service-webpage/css/main.scss b/css/main.scss similarity index 100% rename from crates/service/service-webpage/css/main.scss rename to css/main.scss diff --git a/crates/service/service-webpage/css/special.scss b/css/special.scss similarity index 100% rename from crates/service/service-webpage/css/special.scss rename to css/special.scss diff --git a/crates/service/service-webpage/css/text.scss b/css/text.scss similarity index 100% rename from crates/service/service-webpage/css/text.scss rename to css/text.scss