feat: Some refinements

This commit is contained in:
2026-05-22 10:36:41 +02:00
parent d8254773a6
commit 6b53597d03
8 changed files with 859 additions and 36 deletions
Generated
+717 -17
View File
@@ -2,6 +2,12 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 4 version = 4
[[package]]
name = "adler2"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.7.8" version = "0.7.8"
@@ -35,6 +41,12 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "allocator-api2"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]] [[package]]
name = "anstream" name = "anstream"
version = "1.0.0" version = "1.0.0"
@@ -85,6 +97,12 @@ dependencies = [
"windows-sys", "windows-sys",
] ]
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "base64-simd" name = "base64-simd"
version = "0.7.0" version = "0.7.0"
@@ -94,6 +112,16 @@ dependencies = [
"simd-abstraction", "simd-abstraction",
] ]
[[package]]
name = "base64-simd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
dependencies = [
"outref 0.5.2",
"vsimd",
]
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.11.1" version = "2.11.1"
@@ -146,6 +174,15 @@ version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
[[package]]
name = "castaway"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
dependencies = [
"rustversion",
]
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.4" version = "1.0.4"
@@ -192,12 +229,35 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
[[package]]
name = "cobs"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
dependencies = [
"thiserror",
]
[[package]] [[package]]
name = "colorchoice" name = "colorchoice"
version = "1.0.5" version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "compact_str"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
dependencies = [
"castaway",
"cfg-if",
"itoa",
"rustversion",
"ryu",
"static_assertions",
]
[[package]] [[package]]
name = "const-str" name = "const-str"
version = "0.3.2" version = "0.3.2"
@@ -227,6 +287,21 @@ dependencies = [
"unicode-segmentation", "unicode-segmentation",
] ]
[[package]]
name = "cow-utils"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79"
[[package]]
name = "crc32fast"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "crossbeam-deque" name = "crossbeam-deque"
version = "0.8.6" version = "0.8.6"
@@ -261,7 +336,7 @@ dependencies = [
"cssparser-macros", "cssparser-macros",
"dtoa-short", "dtoa-short",
"itoa", "itoa",
"phf", "phf 0.11.3",
"smallvec", "smallvec",
] ]
@@ -312,6 +387,12 @@ dependencies = [
"matches", "matches",
] ]
[[package]]
name = "dragonbox_ecma"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd8e701084c37e7ef62d3f9e453b618130cbc0ef3573847785952a3ac3f746bf"
[[package]] [[package]]
name = "dtoa" name = "dtoa"
version = "1.0.11" version = "1.0.11"
@@ -333,12 +414,40 @@ version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
[[package]]
name = "embedded-io"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
[[package]]
name = "embedded-io"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
[[package]] [[package]]
name = "equivalent" name = "equivalent"
version = "1.0.2" version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "fastrand"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
name = "flate2"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]] [[package]]
name = "funty" name = "funty"
version = "2.0.0" version = "2.0.0"
@@ -422,6 +531,9 @@ name = "hashbrown"
version = "0.17.1" version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
dependencies = [
"allocator-api2",
]
[[package]] [[package]]
name = "heck" name = "heck"
@@ -465,6 +577,15 @@ dependencies = [
"either", "either",
] ]
[[package]]
name = "itertools"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
dependencies = [
"either",
]
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.18" version = "1.0.18"
@@ -483,6 +604,12 @@ dependencies = [
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "json-escape-simd"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35e770254dd7802184595b1d30da2a15cb72569e2aca2b177aef8d22eac8a693"
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.5.0" version = "1.5.0"
@@ -510,7 +637,7 @@ dependencies = [
"data-encoding", "data-encoding",
"getrandom 0.3.4", "getrandom 0.3.4",
"indexmap", "indexmap",
"itertools", "itertools 0.10.5",
"lazy_static", "lazy_static",
"lightningcss-derive", "lightningcss-derive",
"parcel_selectors", "parcel_selectors",
@@ -564,15 +691,58 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
[[package]] [[package]]
name = "minify-js" name = "minify-js"
version = "0.6.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1fa5546ee8bd66024113e506cabe4230e76635a094c06ea2051b66021dda92e" checksum = "22d6c512a82abddbbc13b70609cb2beff01be2c7afff534d6e5e1c85e438fc8b"
dependencies = [ dependencies = [
"aho-corasick",
"lazy_static", "lazy_static",
"parse-js", "parse-js",
] ]
[[package]]
name = "miniz_oxide"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
"simd-adler32",
]
[[package]]
name = "nonmax"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51"
[[package]]
name = "num-bigint"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [
"num-integer",
"num-traits",
]
[[package]]
name = "num-integer"
version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.21.4" version = "1.21.4"
@@ -591,6 +761,379 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
[[package]]
name = "outref"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
[[package]]
name = "owo-colors"
version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
[[package]]
name = "oxc-browserslist"
version = "3.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "939b33dabf9f7f1cf6c7cebd977b95fe8f6ecae0ef00cfc8f25b8da89d52983d"
dependencies = [
"flate2",
"postcard",
"rustc-hash",
"serde",
"thiserror",
]
[[package]]
name = "oxc-miette"
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4356a61f2ed4c9b3610245215fbf48970eb277126919f87db9d0efa93a74245c"
dependencies = [
"cfg-if",
"owo-colors",
"oxc-miette-derive",
"textwrap",
"thiserror",
"unicode-segmentation",
"unicode-width",
]
[[package]]
name = "oxc-miette-derive"
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b237422b014f8f8fff75bb9379e697d13f8d57551a22c88bebb39f073c1bf696"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "oxc_allocator"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b44db8e77f8ead7332d0dd95850d27fb7bb09f288761447e804be05ad2f89d3"
dependencies = [
"allocator-api2",
"hashbrown 0.17.1",
"oxc_data_structures",
"rustc-hash",
]
[[package]]
name = "oxc_ast"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38b7d05623c5fb0a8e65ee6c1971811a6f5e2332711b14abbffd2d90fdb81786"
dependencies = [
"bitflags",
"oxc_allocator",
"oxc_ast_macros",
"oxc_data_structures",
"oxc_diagnostics",
"oxc_estree",
"oxc_regular_expression",
"oxc_span",
"oxc_str",
"oxc_syntax",
]
[[package]]
name = "oxc_ast_macros"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f585aec92e2bdd985857d9bf58ce6896b65ad4410cc24a9533a16b864b5de8d7"
dependencies = [
"phf 0.13.1",
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "oxc_ast_visit"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c56f75c8a3204594b0f2cf3334378de270b7cec98ed336c77f83ae39db5c088b"
dependencies = [
"oxc_allocator",
"oxc_ast",
"oxc_span",
"oxc_syntax",
]
[[package]]
name = "oxc_codegen"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5c6d585bfae4599955634a307955afca907342694c62993a933216a9b6d170b"
dependencies = [
"bitflags",
"cow-utils",
"dragonbox_ecma",
"itoa",
"oxc_allocator",
"oxc_ast",
"oxc_data_structures",
"oxc_index",
"oxc_semantic",
"oxc_sourcemap",
"oxc_span",
"oxc_str",
"oxc_syntax",
"rustc-hash",
]
[[package]]
name = "oxc_compat"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df61ca5b1ae11fcbc50f71c221532b1d16385268c576420faabf1740f85158f9"
dependencies = [
"cow-utils",
"oxc-browserslist",
"oxc_syntax",
"rustc-hash",
"serde",
]
[[package]]
name = "oxc_data_structures"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75a67baa093fb2410302bb5bea3be60c6f4e9d9573fda9d8561691234cd6bfde"
[[package]]
name = "oxc_diagnostics"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd40c6b1e961ee7e9e00ba2c924b11259ad23aa306c349a48539344f266ef5c5"
dependencies = [
"cow-utils",
"oxc-miette",
"percent-encoding",
]
[[package]]
name = "oxc_ecmascript"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32dfc8b140169c70350e98cbfee928be46ae60151c3af6e477521afae8288809"
dependencies = [
"cow-utils",
"num-bigint",
"num-traits",
"oxc_allocator",
"oxc_ast",
"oxc_regular_expression",
"oxc_span",
"oxc_syntax",
]
[[package]]
name = "oxc_estree"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d13f41b137ab39f80c5ab3277e777302bfd8e9b937b760159bb0996e0b2467aa"
[[package]]
name = "oxc_index"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb3e6120999627ec9703025eab7c9f410ebb7e95557632a8902ca48210416c2b"
dependencies = [
"nonmax",
"serde",
]
[[package]]
name = "oxc_mangler"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65bca092ed1567ab44a1dbcfea8fdce169ab8a8310f31ef99ca0130b3ea5b8f4"
dependencies = [
"itertools 0.14.0",
"oxc_allocator",
"oxc_ast",
"oxc_data_structures",
"oxc_index",
"oxc_semantic",
"oxc_span",
"oxc_str",
"oxc_syntax",
"rustc-hash",
]
[[package]]
name = "oxc_minifier"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "277491ec9648e8ffb6c8b886abe243c71e228b1e5a3d5fc544bc2fc259c60dca"
dependencies = [
"cow-utils",
"itoa",
"oxc_allocator",
"oxc_ast",
"oxc_ast_visit",
"oxc_compat",
"oxc_data_structures",
"oxc_ecmascript",
"oxc_index",
"oxc_mangler",
"oxc_parser",
"oxc_regular_expression",
"oxc_semantic",
"oxc_span",
"oxc_str",
"oxc_syntax",
"oxc_traverse",
"rustc-hash",
]
[[package]]
name = "oxc_parser"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da5b9ce5228d670de1bbc5b8c02441d01358c0a97b0037b17c6a5385c0e14442"
dependencies = [
"bitflags",
"cow-utils",
"memchr",
"num-bigint",
"num-traits",
"oxc_allocator",
"oxc_ast",
"oxc_data_structures",
"oxc_diagnostics",
"oxc_ecmascript",
"oxc_regular_expression",
"oxc_span",
"oxc_str",
"oxc_syntax",
"rustc-hash",
"seq-macro",
]
[[package]]
name = "oxc_regular_expression"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "064f938a25efd15884b3e44565b903add1a762398420835a591bf9de41d27ee1"
dependencies = [
"bitflags",
"oxc_allocator",
"oxc_ast_macros",
"oxc_diagnostics",
"oxc_span",
"oxc_str",
"phf 0.13.1",
"rustc-hash",
"unicode-id-start",
]
[[package]]
name = "oxc_semantic"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "278adff6dc2f02cf149b978ff1b326a4c22a2d26dacedb4a21310ee3af6c533d"
dependencies = [
"itertools 0.14.0",
"memchr",
"oxc_allocator",
"oxc_ast",
"oxc_ast_visit",
"oxc_diagnostics",
"oxc_ecmascript",
"oxc_index",
"oxc_span",
"oxc_str",
"oxc_syntax",
"rustc-hash",
"self_cell",
]
[[package]]
name = "oxc_sourcemap"
version = "6.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d378eb8bad20e89d66276aebab51f6a5408571092cac94abdd3eabb773713d6"
dependencies = [
"base64-simd 0.8.0",
"json-escape-simd",
"rustc-hash",
"serde",
"serde_json",
]
[[package]]
name = "oxc_span"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8763b157864021a4a5ded33bd9e620e25d6e20552d11eefa5d3fa707663a3341"
dependencies = [
"compact_str",
"oxc-miette",
"oxc_allocator",
"oxc_ast_macros",
"oxc_estree",
"oxc_str",
]
[[package]]
name = "oxc_str"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf9548a6a9ab4a6227e1d890d7d244a9b5eb427c6b46790c770f5914b565c52b"
dependencies = [
"compact_str",
"hashbrown 0.17.1",
"oxc_allocator",
"oxc_estree",
]
[[package]]
name = "oxc_syntax"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57b3eaa2b28010deb7648dbbbce940ea788164db602e6fe09d81792e97706f07"
dependencies = [
"bitflags",
"cow-utils",
"dragonbox_ecma",
"nonmax",
"oxc_allocator",
"oxc_ast_macros",
"oxc_estree",
"oxc_index",
"oxc_span",
"oxc_str",
"phf 0.13.1",
"unicode-id-start",
]
[[package]]
name = "oxc_traverse"
version = "0.132.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c50dbc89637853b0cab15b93f19504f5d1539dc4ddbd7942f30ac7a43515ab6"
dependencies = [
"itoa",
"oxc_allocator",
"oxc_ast",
"oxc_ast_visit",
"oxc_data_structures",
"oxc_ecmascript",
"oxc_semantic",
"oxc_span",
"oxc_str",
"oxc_syntax",
"rustc-hash",
]
[[package]] [[package]]
name = "parcel_selectors" name = "parcel_selectors"
version = "0.28.2" version = "0.28.2"
@@ -600,7 +1143,7 @@ dependencies = [
"bitflags", "bitflags",
"cssparser", "cssparser",
"log", "log",
"phf", "phf 0.11.3",
"phf_codegen", "phf_codegen",
"precomputed-hash", "precomputed-hash",
"rustc-hash", "rustc-hash",
@@ -613,7 +1156,7 @@ version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb" checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb"
dependencies = [ dependencies = [
"base64-simd", "base64-simd 0.7.0",
"data-url", "data-url",
"rkyv", "rkyv",
"serde", "serde",
@@ -636,9 +1179,9 @@ dependencies = [
[[package]] [[package]]
name = "parse-js" name = "parse-js"
version = "0.20.1" version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2742b5e32dcb5930447ed9f9e401a7dfd883867fc079c4fac44ae8ba3593710e" checksum = "9ec3b11d443640ec35165ee8f6f0559f1c6f41878d70330fe9187012b5935f02"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"bumpalo", "bumpalo",
@@ -659,14 +1202,31 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "percent-encoding"
version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]] [[package]]
name = "phf" name = "phf"
version = "0.11.3" version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
dependencies = [ dependencies = [
"phf_macros", "phf_macros 0.11.3",
"phf_shared", "phf_shared 0.11.3",
]
[[package]]
name = "phf"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
dependencies = [
"phf_macros 0.13.1",
"phf_shared 0.13.1",
"serde",
] ]
[[package]] [[package]]
@@ -675,8 +1235,8 @@ version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
dependencies = [ dependencies = [
"phf_generator", "phf_generator 0.11.3",
"phf_shared", "phf_shared 0.11.3",
] ]
[[package]] [[package]]
@@ -685,18 +1245,41 @@ version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
dependencies = [ dependencies = [
"phf_shared", "phf_shared 0.11.3",
"rand", "rand",
] ]
[[package]]
name = "phf_generator"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
dependencies = [
"fastrand",
"phf_shared 0.13.1",
]
[[package]] [[package]]
name = "phf_macros" name = "phf_macros"
version = "0.11.3" version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
dependencies = [ dependencies = [
"phf_generator", "phf_generator 0.11.3",
"phf_shared", "phf_shared 0.11.3",
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "phf_macros"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
dependencies = [
"phf_generator 0.13.1",
"phf_shared 0.13.1",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.117", "syn 2.0.117",
@@ -711,12 +1294,33 @@ dependencies = [
"siphasher", "siphasher",
] ]
[[package]]
name = "phf_shared"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
dependencies = [
"siphasher",
]
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.17" version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
[[package]]
name = "postcard"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24"
dependencies = [
"cobs",
"embedded-io 0.4.0",
"embedded-io 0.6.1",
"serde",
]
[[package]] [[package]]
name = "ppv-lite86" name = "ppv-lite86"
version = "0.2.21" version = "0.2.21"
@@ -891,6 +1495,12 @@ version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "ryu"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
[[package]] [[package]]
name = "scopeguard" name = "scopeguard"
version = "1.2.0" version = "1.2.0"
@@ -903,6 +1513,18 @@ version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
[[package]]
name = "self_cell"
version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
[[package]]
name = "seq-macro"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.228" version = "1.0.228"
@@ -961,9 +1583,15 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987"
dependencies = [ dependencies = [
"outref", "outref 0.1.0",
] ]
[[package]]
name = "simd-adler32"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
[[package]] [[package]]
name = "simdutf8" name = "simdutf8"
version = "0.1.5" version = "0.1.5"
@@ -988,6 +1616,18 @@ version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "smawk"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
[[package]]
name = "static_assertions"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.11.1" version = "0.11.1"
@@ -1030,10 +1670,46 @@ dependencies = [
"indoc", "indoc",
"lightningcss", "lightningcss",
"minify-js", "minify-js",
"oxc_allocator",
"oxc_codegen",
"oxc_minifier",
"oxc_parser",
"oxc_span",
"rand", "rand",
"serde_json", "serde_json",
] ]
[[package]]
name = "textwrap"
version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
dependencies = [
"smawk",
"unicode-linebreak",
"unicode-width",
]
[[package]]
name = "thiserror"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.11.0" version = "1.11.0"
@@ -1049,18 +1725,36 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "unicode-id-start"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.24" version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-linebreak"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
[[package]] [[package]]
name = "unicode-segmentation" name = "unicode-segmentation"
version = "1.13.2" version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
[[package]]
name = "unicode-width"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
[[package]] [[package]]
name = "utf8parse" name = "utf8parse"
version = "0.2.2" version = "0.2.2"
@@ -1089,6 +1783,12 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff" checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff"
[[package]]
name = "vsimd"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.11.1+wasi-snapshot-preview1" version = "0.11.1+wasi-snapshot-preview1"
+6 -1
View File
@@ -9,4 +9,9 @@ clap = { version = "4.0", features = ["derive"] }
indoc = "2" indoc = "2"
lightningcss = "1.0.0-alpha.71" lightningcss = "1.0.0-alpha.71"
rand = "0.8" rand = "0.8"
minify-js = "0.6.0" minify-js = "0.5.0"
oxc_minifier = "0.132.0"
oxc_allocator = "0.132.0"
oxc_codegen = "0.132.0"
oxc_parser = "0.132.0"
oxc_span = "0.132.0"
+56
View File
@@ -0,0 +1,56 @@
(function() {
if (typeof Handlebars === 'undefined') {
const script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js';
document.head.appendChild(script);
}
const tempDefine = window.define;
window.define = undefined;
const script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js';
script.onload = function() {
window.define = tempDefine;
if (eval("(function() {\n return window.location.pathname === \"\";\n})()\n")) {
(function() {
const parsedData = eval("" || "(() => ({}))");
const template = Handlebars.compile("");
const rendered = template(parsedData);
const targetElement = document.querySelector(".foo { color: red; }");
const temp = document.createElement('template');
temp.innerHTML = rendered;
const newElement = temp.content.firstElementChild;
targetElement.replaceWith(newElement);
newElement.classList.add("template-style-762112231");
(function() {
})();
})();
}
if (eval("(function() {\n return window.location.pathname === \"\";\n})()\n")) {
}
const domReadyEvent = new Event('DOMContentLoaded', {
bubbles: true,
cancelable: true,
});
document.dispatchEvent(domReadyEvent);
window.dispatchEvent(domReadyEvent);
};
document.head.appendChild(script);
})()
+5
View File
@@ -94,6 +94,7 @@ fn construct_template(template_path: &str) -> Template {
let style = fs::read_to_string(&style_path).ok(); let style = fs::read_to_string(&style_path).ok();
let script_path = format!("{}/script.js", template_path); let script_path = format!("{}/script.js", template_path);
let template_html_path = format!("{}/template.html", template_path); let template_html_path = format!("{}/template.html", template_path);
if let Ok(script_content) = fs::read_to_string(&script_path) { if let Ok(script_content) = fs::read_to_string(&script_path) {
@@ -102,6 +103,9 @@ fn construct_template(template_path: &str) -> Template {
style, style,
} }
} else if let Ok(template_content) = fs::read_to_string(&template_html_path) { } else if let Ok(template_content) = fs::read_to_string(&template_html_path) {
let post_script_path = format!("{}/post_script.js", template_path);
let post_script = fs::read_to_string(&post_script_path).ok();
let scraper_path = format!("{}/scrape.js", template_path); let scraper_path = format!("{}/scrape.js", template_path);
let scraper = fs::read_to_string(&scraper_path).ok(); let scraper = fs::read_to_string(&scraper_path).ok();
@@ -117,6 +121,7 @@ fn construct_template(template_path: &str) -> Template {
template: template_content, template: template_content,
replace_selector: replace_selector.trim().to_string(), replace_selector: replace_selector.trim().to_string(),
scraper, scraper,
script: post_script,
style, style,
} }
} else { } else {
+3 -2
View File
@@ -4,7 +4,7 @@ pub struct Project {
pub struct Page { pub struct Page {
pub route: PageRoute, pub route: PageRoute,
pub style: Option<String>, // TODO: Actually use this lmao pub style: Option<String>,
pub content: Vec<Template>, pub content: Vec<Template>,
} }
@@ -29,7 +29,8 @@ pub enum Template {
template: String, template: String,
replace_selector: String, replace_selector: String,
scraper: Option<String>, scraper: Option<String>,
style: Option<String> style: Option<String>,
script: Option<String>,
}, },
} }
+44 -5
View File
@@ -42,9 +42,26 @@ impl Project {
let mut script = String::new(); let mut script = String::new();
for page in &self.pages { for page in &self.pages {
let style_script = page
.style
.as_ref()
.map_or(String::new(), |s| {
format!(
r#"
(function() {{
const styleElement = document.createElement('style');
styleElement.textContent = {style};
document.head.appendChild(styleElement);
}})();
"#,
style = serde_json::to_string(s).unwrap()
)
});
let template_script = indoc! { r#" let template_script = indoc! { r#"
if (eval({page_route})) { if (eval({page_route})) {
{content_script} {content_script}
{style_script}
} }
"# }; "# };
@@ -62,7 +79,8 @@ impl Project {
"{page_route}", "{page_route}",
&serde_json::to_string(&minify_javascript(&route_script)).unwrap(), &serde_json::to_string(&minify_javascript(&route_script)).unwrap(),
) )
.replace("{content_script}", &content_script), .replace("{content_script}", &content_script)
.replace("{style_script}", &style_script),
); );
} }
@@ -122,9 +140,19 @@ impl Template {
template, template,
replace_selector, replace_selector,
scraper, scraper,
script,
style, style,
} => { } => {
let scope_class = format!("template-style-{}", rand::random::<u32>()); let scope_class = format!("template-style-{}", rand::random::<u32>());
let script = if let Some(script) = script {
if script.trim().is_empty() {
String::new()
} else {
script.to_string()
}
} else {
String::new()
};
let style_script = if let Some(style) = style { let style_script = if let Some(style) = style {
if style.trim().is_empty() { if style.trim().is_empty() {
@@ -132,9 +160,12 @@ impl Template {
} else { } else {
format!( format!(
indoc! {r#" indoc! {r#"
const styleElement = document.createElement('style'); (function() {{
styleElement.textContent = {style}; const styleElement = document.createElement('style');
document.head.appendChild(styleElement); styleElement.textContent = {style};
console.log(styleElement.textContent);
document.head.appendChild(styleElement);
}})();
"# }, "# },
style = style =
&serde_json::to_string(&scope_css(&style, &scope_class)).unwrap() &serde_json::to_string(&scope_css(&style, &scope_class)).unwrap()
@@ -161,11 +192,19 @@ impl Template {
targetElement.replaceWith(newElement); targetElement.replaceWith(newElement);
newElement.classList.add({scope_class}); newElement.classList.add({scope_class});
(function() {
{script}
})();
})(); })();
"# }; "# };
script_template script_template
.replace("{style_script}", &style_script) .replace(
"{style_script}",
&style_script.trim(),
)
.replace("{script}", &script)
.replace( .replace(
"{template}", "{template}",
&serde_json::to_string(&template.trim()).unwrap(), &serde_json::to_string(&template.trim()).unwrap(),
+28 -11
View File
@@ -1,16 +1,33 @@
use minify_js::{minify, Session, TopLevelMode}; use oxc_allocator::Allocator;
use oxc_codegen::{Codegen, CodegenOptions};
use oxc_minifier::{Minifier, MinifierOptions};
use oxc_parser::Parser;
use oxc_span::SourceType;
pub fn minify_javascript(raw_js: &str) -> String { pub fn minify_javascript(raw_js: &str) -> String {
let session = Session::new(); let allocator = Allocator::default();
let mut out = Vec::new(); let source_type = SourceType::default();
minify( let ret = Parser::new(&allocator, raw_js, source_type).parse();
&session,
TopLevelMode::Global,
raw_js.as_bytes(),
&mut out,
)
.expect("Failed to minify JavaScript");
String::from_utf8(out).expect("Minifier produced invalid UTF-8") if !ret.errors.is_empty() {
panic!("Failed to parse JavaScript for minification: {:?}", ret.errors);
}
let mut program = ret.program;
let options = MinifierOptions::default();
let minifier = Minifier::new(options);
minifier.minify(&allocator, &mut program);
let codegen_options = CodegenOptions {
minify: true,
..Default::default()
};
Codegen::new()
.with_options(codegen_options)
.build(&program)
.code
} }
View File