84 Commits

Author SHA1 Message Date
ab40a79b03 Update Rust crate serde to 1.0.225
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-18 00:42:16 +00:00
1af7e5ec55 Merge pull request 'Update Rust crate serde_json to 1.0.145' (#423) from renovate/serde_json-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-17 00:41:38 +00:00
7e539f0e4a Merge pull request 'Update dependency @fontsource/roboto to ^5.2.7' (#422) from renovate/fontsource-roboto-5.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-17 00:41:33 +00:00
c47ebc0504 Update Rust crate serde_json to 1.0.145
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-16 00:41:42 +00:00
29118fb7cd Update dependency @fontsource/roboto to ^5.2.7
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-16 00:41:35 +00:00
0ec546fa63 Merge pull request 'Update dependency typescript-eslint to ^8.43.0' (#421) from renovate/typescript-eslint-8.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-15 00:41:43 +00:00
4861b97bf8 Update dependency typescript-eslint to ^8.43.0
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-14 00:42:24 +00:00
bc8093faf1 Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.53.1' (#420) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-13 00:42:40 +00:00
97933d72f9 Update dependency eslint-plugin-react-dom to ^1.53.1
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-13 00:42:36 +00:00
554edbf84c Merge pull request 'Update dependency @types/react to ^19.1.13' (#419) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-13 00:42:23 +00:00
650a97c836 Update dependency @types/react to ^19.1.13
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-13 00:42:20 +00:00
ff24b10507 Merge pull request 'Update dependency eslint to ^9.35.0' (#418) from renovate/eslint-9.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-12 00:41:38 +00:00
7cbd5a5bbf Update dependency eslint to ^9.35.0
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-12 00:41:37 +00:00
f55cff054c Merge pull request 'Update dependency @mui/x-data-grid to ^8.11.2' (#417) from renovate/mui-x-data-grid-8.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-12 00:41:35 +00:00
a6dd100eb6 Update dependency @mui/x-data-grid to ^8.11.2
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-12 00:41:32 +00:00
8b4b17083d Merge pull request 'Update Rust crate virt to 0.4.3' (#416) from renovate/virt-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-11 00:40:05 +00:00
7dafca91d4 Merge pull request 'Update Rust crate chrono to 0.4.42' (#415) from renovate/chrono-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-11 00:40:04 +00:00
8dfc166033 Update Rust crate virt to 0.4.3
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-10 00:40:23 +00:00
6f70ddef8c Update Rust crate chrono to 0.4.42
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-10 00:40:20 +00:00
809e3c9d4e Merge pull request 'Update dependency vite to ^6.3.6' (#414) from renovate/vite-6.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-09 00:40:41 +00:00
e6a86b0097 Update dependency vite to ^6.3.6
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-09 00:40:30 +00:00
c12f916a94 Merge pull request 'Update dependency @eslint/js to ^9.35.0' (#413) from renovate/eslint-js-9.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-08 00:41:31 +00:00
2c9a2e1ac0 Update dependency @eslint/js to ^9.35.0
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-08 00:41:28 +00:00
99b25fb97e Merge pull request 'Update Rust crate log to 0.4.28' (#412) from renovate/log-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-07 00:41:37 +00:00
ab5f9e1105 Merge pull request 'Update Rust crate image to 0.25.8' (#411) from renovate/image-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-07 00:41:37 +00:00
a867fa311d Update Rust crate log to 0.4.28
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-06 00:41:33 +00:00
5461968282 Update Rust crate image to 0.25.8
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-06 00:41:31 +00:00
a5af85057f Merge pull request 'Update Rust crate clap to 4.5.47' (#410) from renovate/clap-4.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-05 00:27:14 +00:00
79c349ff66 Merge pull request 'Update Rust crate actix-http to 3.11.1' (#409) from renovate/actix-http-3.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-05 00:27:13 +00:00
ced0e4517d Update Rust crate clap to 4.5.47
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-04 00:34:38 +00:00
d0c9c01d63 Update Rust crate actix-http to 3.11.1
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-04 00:34:36 +00:00
04400ec31e Merge pull request 'Update Rust crate quick-xml to 0.38.3' (#408) from renovate/quick-xml-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-03 00:33:16 +00:00
85785d3568 Merge pull request 'Update Rust crate actix-files to 0.6.7' (#407) from renovate/actix-files-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-03 00:33:13 +00:00
8c5814307b Update Rust crate quick-xml to 0.38.3
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-02 00:33:20 +00:00
e2d4b1e3b1 Update Rust crate actix-files to 0.6.7
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-02 00:33:17 +00:00
550e094efe Merge pull request 'Update dependency eslint-plugin-react-x to ^1.52.9' (#406) from renovate/eslint-plugin-react-x-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-01 00:32:07 +00:00
94533e7e71 Update dependency eslint-plugin-react-x to ^1.52.9
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-09-01 00:32:02 +00:00
5cb9bbbc89 Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.52.9' (#405) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-31 00:32:45 +00:00
f7da80f4c0 Update dependency eslint-plugin-react-dom to ^1.52.9
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-31 00:32:42 +00:00
64d095ec5e Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.52.8' (#404) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-30 00:31:47 +00:00
5c6caf150e Update dependency eslint-plugin-react-dom to ^1.52.8
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-30 00:31:43 +00:00
43c09bb0ff Merge pull request 'Update dependency @types/react-dom to ^19.1.9' (#403) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-29 00:33:21 +00:00
93dbad2f41 Update dependency @types/react-dom to ^19.1.9
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-29 00:33:20 +00:00
a1e23efd99 Fix cargo clippy issues
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-28 08:05:22 +02:00
cd4b8af445 Merge pull request 'Update dependency @types/react to ^19.1.12' (#402) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-28 00:33:29 +00:00
3c2470e942 Update dependency @types/react to ^19.1.12
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-28 00:33:26 +00:00
de3a1aab1b Merge pull request 'Update dependency @types/react-dom to ^19.1.8' (#401) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-27 00:33:15 +00:00
0149f93721 Update dependency @types/react-dom to ^19.1.8
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-27 00:33:12 +00:00
8daba3e92f Merge pull request 'Update dependency react-syntax-highlighter to ^15.6.6' (#400) from renovate/react-syntax-highlighter-15.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-26 00:31:59 +00:00
8127bfbdbf Update dependency react-syntax-highlighter to ^15.6.6
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-26 00:31:55 +00:00
7cb9a97025 Merge pull request 'Update Rust crate url to 2.5.7' (#399) from renovate/url-2.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-25 00:31:48 +00:00
a2fa115e38 Merge pull request 'Update Rust crate thiserror to 2.0.16' (#398) from renovate/thiserror-2.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-25 00:31:45 +00:00
b8be645121 Update Rust crate url to 2.5.7
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-24 00:31:39 +00:00
456ffbe062 Update Rust crate thiserror to 2.0.16
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-24 00:31:37 +00:00
5cdd8ba0c5 Merge pull request 'Update dependency @types/react to ^19.1.11' (#397) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-23 00:32:42 +00:00
1e2d499794 Update dependency @types/react to ^19.1.11
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-23 00:32:39 +00:00
144c9af8c7 Merge pull request 'Update dependency react-syntax-highlighter to ^15.6.3' (#396) from renovate/react-syntax-highlighter-15.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-22 00:32:09 +00:00
b7d56880ff Update dependency react-syntax-highlighter to ^15.6.3
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-22 00:32:05 +00:00
20d55be54f Merge pull request 'Update Rust crate serde_json to 1.0.143' (#395) from renovate/serde_json-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-21 00:32:49 +00:00
920ee5d636 Merge pull request 'Update Rust crate quick-xml to 0.38.2' (#394) from renovate/quick-xml-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-21 00:32:46 +00:00
1cb4700ac1 Update Rust crate serde_json to 1.0.143
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-20 00:32:16 +00:00
46de03bcc4 Update Rust crate quick-xml to 0.38.2
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-20 00:32:13 +00:00
8b96d4f0ab Merge pull request 'Update dependency eslint-plugin-react-x to ^1.52.6' (#393) from renovate/eslint-plugin-react-x-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-19 00:32:29 +00:00
48042e2b59 Update dependency eslint-plugin-react-x to ^1.52.6
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-19 00:32:26 +00:00
b2d6f92d47 Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.52.6' (#392) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-19 00:32:23 +00:00
063a7fc830 Update dependency eslint-plugin-react-dom to ^1.52.6
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-19 00:32:21 +00:00
0c12822567 Merge pull request 'Update Rust crate thiserror to 2.0.15' (#391) from renovate/thiserror-2.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-18 00:31:11 +00:00
38f0ac840b Merge pull request 'Update Rust crate reqwest to 0.12.23' (#390) from renovate/reqwest-0.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-18 00:31:11 +00:00
8db4fd740d Update Rust crate thiserror to 2.0.15
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-17 00:32:46 +00:00
456ab796b3 Update Rust crate reqwest to 0.12.23
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-17 00:32:43 +00:00
2fbc5b04a3 Merge pull request 'Update dependency eslint-plugin-react-x to ^1.52.5' (#389) from renovate/eslint-plugin-react-x-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-16 00:31:14 +00:00
5c2aa39196 Update dependency eslint-plugin-react-x to ^1.52.5
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-16 00:31:13 +00:00
513bda8fe7 Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.52.5' (#388) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-16 00:31:11 +00:00
48b4e4bb2f Update dependency eslint-plugin-react-dom to ^1.52.5
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-16 00:31:06 +00:00
e7cb217e5f Merge pull request 'Update dependency eslint-plugin-react-x to ^1.52.4' (#387) from renovate/eslint-plugin-react-x-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-15 00:32:50 +00:00
a672645225 Update dependency eslint-plugin-react-x to ^1.52.4
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-15 00:32:47 +00:00
3428b5b457 Merge pull request 'Update dependency eslint-plugin-react-dom to ^1.52.4' (#386) from renovate/eslint-plugin-react-dom-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-15 00:32:45 +00:00
15eabf7c66 Update dependency eslint-plugin-react-dom to ^1.52.4
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-15 00:32:43 +00:00
8df6b549ac Merge pull request 'Update Rust crate clap to 4.5.45' (#385) from renovate/clap-4.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-14 00:32:20 +00:00
39a896ea20 Merge pull request 'Update Rust crate anyhow to 1.0.99' (#384) from renovate/anyhow-1.x into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-14 00:32:19 +00:00
acc6c680d4 Update Rust crate clap to 4.5.45
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-13 00:32:59 +00:00
3fd9f7cff8 Update Rust crate anyhow to 1.0.99
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2025-08-13 00:32:57 +00:00
a672329501 Merge pull request 'Update dependency @types/react to ^19.1.10' (#383) from renovate/react into master
Some checks failed
continuous-integration/drone/push Build is failing
2025-08-12 00:32:02 +00:00
5f119688a3 Update dependency @types/react to ^19.1.10
Some checks failed
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-08-12 00:31:58 +00:00
12 changed files with 762 additions and 877 deletions

View File

@@ -11,7 +11,7 @@ dependencies = [
"actix-macros", "actix-macros",
"actix-rt", "actix-rt",
"actix_derive", "actix_derive",
"bitflags 2.9.1", "bitflags",
"bytes", "bytes",
"crossbeam-channel", "crossbeam-channel",
"futures-core", "futures-core",
@@ -33,7 +33,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"bytes", "bytes",
"futures-core", "futures-core",
"futures-sink", "futures-sink",
@@ -61,17 +61,17 @@ dependencies = [
[[package]] [[package]]
name = "actix-files" name = "actix-files"
version = "0.6.6" version = "0.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0773d59061dedb49a8aed04c67291b9d8cf2fe0b60130a381aab53c6dd86e9be" checksum = "22c8b5536deb14cd9c3e505bd0e3366e1a12383b659c92f2b4fa4d323d583599"
dependencies = [ dependencies = [
"actix-http", "actix-http",
"actix-service", "actix-service",
"actix-utils", "actix-utils",
"actix-web", "actix-web",
"bitflags 2.9.1", "bitflags",
"bytes", "bytes",
"derive_more 0.99.20", "derive_more 2.0.1",
"futures-core", "futures-core",
"http-range", "http-range",
"log", "log",
@@ -84,16 +84,16 @@ dependencies = [
[[package]] [[package]]
name = "actix-http" name = "actix-http"
version = "3.11.0" version = "3.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" checksum = "44cceded2fb55f3c4b67068fa64962e2ca59614edc5b03167de9ff82ae803da0"
dependencies = [ dependencies = [
"actix-codec", "actix-codec",
"actix-rt", "actix-rt",
"actix-service", "actix-service",
"actix-utils", "actix-utils",
"base64 0.22.1", "base64 0.22.1",
"bitflags 2.9.1", "bitflags",
"brotli", "brotli",
"bytes", "bytes",
"bytestring", "bytestring",
@@ -435,12 +435,6 @@ dependencies = [
"alloc-no-stdlib", "alloc-no-stdlib",
] ]
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]] [[package]]
name = "android_system_properties" name = "android_system_properties"
version = "0.1.5" version = "0.1.5"
@@ -502,9 +496,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.98" version = "1.0.99"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100"
[[package]] [[package]]
name = "arbitrary" name = "arbitrary"
@@ -646,12 +640,6 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.9.1" version = "2.9.1"
@@ -777,16 +765,15 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]] [[package]]
name = "chrono" name = "chrono"
version = "0.4.41" version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
dependencies = [ dependencies = [
"android-tzdata",
"iana-time-zone", "iana-time-zone",
"js-sys", "js-sys",
"num-traits", "num-traits",
"wasm-bindgen", "wasm-bindgen",
"windows-link", "windows-link 0.2.0",
] ]
[[package]] [[package]]
@@ -801,9 +788,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.42" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882" checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@@ -811,9 +798,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.42" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966" checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
@@ -823,9 +810,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.41" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
@@ -1259,6 +1246,26 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "fax"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
dependencies = [
"fax_derive",
]
[[package]]
name = "fax_derive"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "fdeflate" name = "fdeflate"
version = "0.3.7" version = "0.3.7"
@@ -1318,9 +1325,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]] [[package]]
name = "form_urlencoded" name = "form_urlencoded"
version = "1.2.1" version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
dependencies = [ dependencies = [
"percent-encoding", "percent-encoding",
] ]
@@ -1824,9 +1831,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]] [[package]]
name = "idna" name = "idna"
version = "1.0.3" 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 = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
dependencies = [ dependencies = [
"idna_adapter", "idna_adapter",
"smallvec", "smallvec",
@@ -1845,9 +1852,9 @@ dependencies = [
[[package]] [[package]]
name = "image" name = "image"
version = "0.25.6" version = "0.25.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"byteorder-lite", "byteorder-lite",
@@ -1855,6 +1862,7 @@ dependencies = [
"exr", "exr",
"gif", "gif",
"image-webp", "image-webp",
"moxcms",
"num-traits", "num-traits",
"png", "png",
"qoi", "qoi",
@@ -1924,7 +1932,7 @@ version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"cfg-if", "cfg-if",
"libc", "libc",
] ]
@@ -2009,12 +2017,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "jpeg-decoder"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.77" version = "0.3.77"
@@ -2200,9 +2202,9 @@ dependencies = [
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.27" version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]] [[package]]
name = "loop9" name = "loop9"
@@ -2282,6 +2284,16 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "moxcms"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08"
dependencies = [
"num-traits",
"pxfm",
]
[[package]] [[package]]
name = "native-tls" name = "native-tls"
version = "0.2.14" version = "0.2.14"
@@ -2311,7 +2323,7 @@ version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"cfg-if", "cfg-if",
"cfg_aliases", "cfg_aliases",
"libc", "libc",
@@ -2439,7 +2451,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
] ]
[[package]] [[package]]
@@ -2479,7 +2491,7 @@ version = "0.10.72"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"cfg-if", "cfg-if",
"foreign-types", "foreign-types",
"libc", "libc",
@@ -2595,9 +2607,9 @@ dependencies = [
[[package]] [[package]]
name = "percent-encoding" name = "percent-encoding"
version = "2.3.1" version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
@@ -2629,11 +2641,11 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.16" version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags",
"crc32fast", "crc32fast",
"fdeflate", "fdeflate",
"flate2", "flate2",
@@ -2734,6 +2746,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "pxfm"
version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "376f733579ac4d3b9fbf0afca99bf8f6b698d541118affca554d0b86f73c2470"
dependencies = [
"num-traits",
]
[[package]] [[package]]
name = "qoi" name = "qoi"
version = "0.4.1" version = "0.4.1"
@@ -2751,9 +2772,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]] [[package]]
name = "quick-xml" name = "quick-xml"
version = "0.38.1" version = "0.38.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9845d9dccf565065824e69f9f235fafba1587031eda353c1f1561cd6a6be78f4" checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
dependencies = [ dependencies = [
"memchr", "memchr",
"serde", "serde",
@@ -2909,7 +2930,7 @@ version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
] ]
[[package]] [[package]]
@@ -2949,9 +2970,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]] [[package]]
name = "reqwest" name = "reqwest"
version = "0.12.22" version = "0.12.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb"
dependencies = [ dependencies = [
"base64 0.22.1", "base64 0.22.1",
"bytes", "bytes",
@@ -3076,7 +3097,7 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"errno", "errno",
"libc", "libc",
"linux-raw-sys", "linux-raw-sys",
@@ -3172,7 +3193,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"core-foundation", "core-foundation",
"core-foundation-sys", "core-foundation-sys",
"libc", "libc",
@@ -3197,18 +3218,28 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.219" version = "1.0.225"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.225"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.219" version = "1.0.225"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3217,14 +3248,15 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.142" version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [ dependencies = [
"itoa", "itoa",
"memchr", "memchr",
"ryu", "ryu",
"serde", "serde",
"serde_core",
] ]
[[package]] [[package]]
@@ -3342,7 +3374,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
dependencies = [ dependencies = [
"num-bigint", "num-bigint",
"num-traits", "num-traits",
"thiserror 2.0.12", "thiserror 2.0.16",
"time", "time",
] ]
@@ -3461,7 +3493,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"core-foundation", "core-foundation",
"system-configuration-sys", "system-configuration-sys",
] ]
@@ -3519,11 +3551,11 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "2.0.12" version = "2.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
dependencies = [ dependencies = [
"thiserror-impl 2.0.12", "thiserror-impl 2.0.16",
] ]
[[package]] [[package]]
@@ -3539,9 +3571,9 @@ dependencies = [
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "2.0.12" version = "2.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3550,13 +3582,16 @@ dependencies = [
[[package]] [[package]]
name = "tiff" name = "tiff"
version = "0.9.1" version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
dependencies = [ dependencies = [
"fax",
"flate2", "flate2",
"jpeg-decoder", "half",
"quick-error",
"weezl", "weezl",
"zune-jpeg",
] ]
[[package]] [[package]]
@@ -3719,7 +3754,7 @@ version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
"bytes", "bytes",
"futures-util", "futures-util",
"http 1.3.1", "http 1.3.1",
@@ -3829,13 +3864,14 @@ checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
[[package]] [[package]]
name = "url" name = "url"
version = "2.5.4" version = "2.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
dependencies = [ dependencies = [
"form_urlencoded", "form_urlencoded",
"idna", "idna",
"percent-encoding", "percent-encoding",
"serde",
] ]
[[package]] [[package]]
@@ -3905,9 +3941,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]] [[package]]
name = "virt" name = "virt"
version = "0.4.2" version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a05f77c836efa9be343b5419663cf829d75203b813579993cdd9c44f51767e" checksum = "b191deb9f351999588bbd289fd40d5ca0076fd9784d1a1a0af531ec8684093c9"
dependencies = [ dependencies = [
"libc", "libc",
"uuid", "uuid",
@@ -3916,9 +3952,9 @@ dependencies = [
[[package]] [[package]]
name = "virt-sys" name = "virt-sys"
version = "0.3.0" version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c504e459878f09177f41bf2f8bb3e9a8af4fca7a09e73152fee02535d501601c" checksum = "8762dc8eb11b230e7ed6c94152910f8382a128eed861af21047a203e3e2ebb00"
dependencies = [ dependencies = [
"libc", "libc",
"pkg-config", "pkg-config",
@@ -3969,7 +4005,7 @@ dependencies = [
"serde_yml", "serde_yml",
"sysinfo", "sysinfo",
"tempfile", "tempfile",
"thiserror 2.0.12", "thiserror 2.0.16",
"tokio", "tokio",
"url", "url",
"uuid", "uuid",
@@ -4107,9 +4143,9 @@ dependencies = [
[[package]] [[package]]
name = "weezl" name = "weezl"
version = "0.1.8" version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
[[package]] [[package]]
name = "winapi" name = "winapi"
@@ -4151,7 +4187,7 @@ dependencies = [
"windows-collections", "windows-collections",
"windows-core", "windows-core",
"windows-future", "windows-future",
"windows-link", "windows-link 0.1.1",
"windows-numerics", "windows-numerics",
] ]
@@ -4172,7 +4208,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [ dependencies = [
"windows-implement", "windows-implement",
"windows-interface", "windows-interface",
"windows-link", "windows-link 0.1.1",
"windows-result", "windows-result",
"windows-strings 0.4.2", "windows-strings 0.4.2",
] ]
@@ -4184,7 +4220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
dependencies = [ dependencies = [
"windows-core", "windows-core",
"windows-link", "windows-link 0.1.1",
"windows-threading", "windows-threading",
] ]
@@ -4216,6 +4252,12 @@ 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 = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-link"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
[[package]] [[package]]
name = "windows-numerics" name = "windows-numerics"
version = "0.2.0" version = "0.2.0"
@@ -4223,7 +4265,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
dependencies = [ dependencies = [
"windows-core", "windows-core",
"windows-link", "windows-link 0.1.1",
] ]
[[package]] [[package]]
@@ -4243,7 +4285,7 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
dependencies = [ dependencies = [
"windows-link", "windows-link 0.1.1",
] ]
[[package]] [[package]]
@@ -4252,7 +4294,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [ dependencies = [
"windows-link", "windows-link 0.1.1",
] ]
[[package]] [[package]]
@@ -4261,7 +4303,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
dependencies = [ dependencies = [
"windows-link", "windows-link 0.1.1",
] ]
[[package]] [[package]]
@@ -4320,7 +4362,7 @@ 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 = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
dependencies = [ dependencies = [
"windows-link", "windows-link 0.1.1",
] ]
[[package]] [[package]]
@@ -4434,7 +4476,7 @@ version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [ dependencies = [
"bitflags 2.9.1", "bitflags",
] ]
[[package]] [[package]]
@@ -4651,9 +4693,9 @@ dependencies = [
[[package]] [[package]]
name = "zune-jpeg" name = "zune-jpeg"
version = "0.4.14" version = "0.4.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
dependencies = [ dependencies = [
"zune-core", "zune-core",
] ]

View File

@@ -6,9 +6,9 @@ edition = "2024"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
log = "0.4.27" log = "0.4.28"
env_logger = "0.11.8" env_logger = "0.11.8"
clap = { version = "4.5.42", features = ["derive", "env"] } clap = { version = "4.5.47", features = ["derive", "env"] }
light-openid = { version = "1.0.4", features = ["crypto-wrapper"] } light-openid = { version = "1.0.4", features = ["crypto-wrapper"] }
lazy_static = "1.5.0" lazy_static = "1.5.0"
actix = "0.13.5" actix = "0.13.5"
@@ -17,25 +17,25 @@ actix-remote-ip = "0.1.0"
actix-session = { version = "0.10.1", features = ["cookie-session"] } actix-session = { version = "0.10.1", features = ["cookie-session"] }
actix-identity = "0.8.0" actix-identity = "0.8.0"
actix-cors = "0.7.1" actix-cors = "0.7.1"
actix-files = "0.6.6" actix-files = "0.6.7"
actix-ws = "0.3.0" actix-ws = "0.3.0"
actix-http = "3.11.0" actix-http = "3.11.1"
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.225", features = ["derive"] }
serde_json = "1.0.142" serde_json = "1.0.145"
serde_yml = "0.0.12" serde_yml = "0.0.12"
quick-xml = { version = "0.38.1", features = ["serialize", "overlapped-lists"] } quick-xml = { version = "0.38.3", features = ["serialize", "overlapped-lists"] }
futures-util = "0.3.31" futures-util = "0.3.31"
anyhow = "1.0.98" anyhow = "1.0.99"
actix-multipart = "0.7.2" actix-multipart = "0.7.2"
tempfile = "3.20.0" tempfile = "3.20.0"
reqwest = { version = "0.12.22", features = ["stream"] } reqwest = { version = "0.12.23", features = ["stream"] }
url = "2.5.4" url = "2.5.7"
virt = "0.4.2" virt = "0.4.3"
sysinfo = { version = "0.36.1", features = ["serde"] } sysinfo = { version = "0.36.1", features = ["serde"] }
uuid = { version = "1.17.0", features = ["v4", "serde"] } uuid = { version = "1.17.0", features = ["v4", "serde"] }
lazy-regex = "3.4.1" lazy-regex = "3.4.1"
thiserror = "2.0.12" thiserror = "2.0.16"
image = "0.25.6" image = "0.25.8"
rand = "0.9.2" rand = "0.9.2"
tokio = { version = "1.47.1", features = ["rt", "time", "macros"] } tokio = { version = "1.47.1", features = ["rt", "time", "macros"] }
futures = "0.3.31" futures = "0.3.31"
@@ -46,4 +46,4 @@ dotenvy = "0.15.7"
nix = { version = "0.30.1", features = ["net"] } nix = { version = "0.30.1", features = ["net"] }
basic-jwt = "0.3.0" basic-jwt = "0.3.0"
zip = "4.3.0" zip = "4.3.0"
chrono = "0.4.41" chrono = "0.4.42"

View File

@@ -104,11 +104,11 @@ impl Token {
/// Check whether a token is expired or not /// Check whether a token is expired or not
pub fn is_expired(&self) -> bool { pub fn is_expired(&self) -> bool {
if let Some(max_inactivity) = self.max_inactivity { if let Some(max_inactivity) = self.max_inactivity
if max_inactivity + self.last_used < time() { && max_inactivity + self.last_used < time()
{
return true; return true;
} }
}
false false
} }
@@ -188,11 +188,11 @@ impl NewToken {
return Some(err); return Some(err);
} }
if let Some(t) = self.max_inactivity { if let Some(t) = self.max_inactivity
if t < 3600 { && t < 3600
{
return Some("API tokens shall be valid for at least 1 hour!"); return Some("API tokens shall be valid for at least 1 hour!");
} }
}
None None
} }

View File

@@ -31,13 +31,13 @@ pub async fn upload(MultipartForm(mut form): MultipartForm<UploadDiskImageForm>)
} }
// Check file mime type // Check file mime type
if let Some(mime_type) = file.content_type { if let Some(mime_type) = file.content_type
if !constants::ALLOWED_DISK_IMAGES_MIME_TYPES.contains(&mime_type.as_ref()) { && !constants::ALLOWED_DISK_IMAGES_MIME_TYPES.contains(&mime_type.as_ref())
{
return Ok(HttpResponse::BadRequest().json(format!( return Ok(HttpResponse::BadRequest().json(format!(
"Unsupported file type for disk upload: {mime_type}" "Unsupported file type for disk upload: {mime_type}"
))); )));
} }
}
// Extract and check file name // Extract and check file name
let Some(file_name) = file.file_name else { let Some(file_name) = file.file_name else {

View File

@@ -31,12 +31,12 @@ pub async fn upload_file(MultipartForm(mut form): MultipartForm<UploadIsoForm>)
return Ok(HttpResponse::BadRequest().json("File is too large!")); return Ok(HttpResponse::BadRequest().json("File is too large!"));
} }
if let Some(m) = &file.content_type { if let Some(m) = &file.content_type
if !constants::ALLOWED_ISO_MIME_TYPES.contains(&m.to_string().as_str()) { && !constants::ALLOWED_ISO_MIME_TYPES.contains(&m.to_string().as_str())
{
log::error!("Uploaded ISO file has an invalid mimetype!"); log::error!("Uploaded ISO file has an invalid mimetype!");
return Ok(HttpResponse::BadRequest().json("Invalid mimetype!")); return Ok(HttpResponse::BadRequest().json("Invalid mimetype!"));
} }
}
let file_name = match &file.file_name { let file_name = match &file.file_name {
None => { None => {
@@ -87,17 +87,17 @@ pub async fn upload_from_url(req: web::Json<DownloadFromURLReq>) -> HttpResult {
let response = reqwest::get(&req.url).await?; let response = reqwest::get(&req.url).await?;
if let Some(len) = response.content_length() { if let Some(len) = response.content_length()
if len > constants::ISO_MAX_SIZE.as_bytes() as u64 { && len > constants::ISO_MAX_SIZE.as_bytes() as u64
{
return Ok(HttpResponse::BadRequest().json("File is too large!")); return Ok(HttpResponse::BadRequest().json("File is too large!"));
} }
}
if let Some(ct) = response.headers().get("content-type") { if let Some(ct) = response.headers().get("content-type")
if !constants::ALLOWED_ISO_MIME_TYPES.contains(&ct.to_str()?) { && !constants::ALLOWED_ISO_MIME_TYPES.contains(&ct.to_str()?)
{
return Ok(HttpResponse::BadRequest().json("Invalid file mimetype!")); return Ok(HttpResponse::BadRequest().json("Invalid file mimetype!"));
} }
}
let mut stream = response.bytes_stream(); let mut stream = response.bytes_stream();

View File

@@ -128,22 +128,22 @@ impl FromRequest for ApiAuthExtractor {
)); ));
} }
if let Some(ip) = token.ip_restriction { if let Some(ip) = token.ip_restriction
if !ip.contains(remote_ip.0) { && !ip.contains(remote_ip.0)
{
log::error!( log::error!(
"Attempt to use a token for an unauthorized IP! {remote_ip:?} token_id={}", "Attempt to use a token for an unauthorized IP! {remote_ip:?} token_id={}",
token.id.0 token.id.0
); );
return Err(ErrorUnauthorized("Token cannot be used from this IP!")); return Err(ErrorUnauthorized("Token cannot be used from this IP!"));
} }
}
if token.should_update_last_activity() { if token.should_update_last_activity()
if let Err(e) = api_tokens::refresh_last_used(token.id).await { && let Err(e) = api_tokens::refresh_last_used(token.id).await
{
log::error!("Could not update token last activity! {e}"); log::error!("Could not update token last activity! {e}");
return Err(ErrorBadRequest("Couldn't refresh token last activity!")); return Err(ErrorBadRequest("Couldn't refresh token last activity!"));
} }
}
Ok(ApiAuthExtractor { token, claims }) Ok(ApiAuthExtractor { token, claims })
}) })

View File

@@ -96,29 +96,29 @@ impl NetworkInfo {
return Err(StructureExtraction("network name is invalid!").into()); return Err(StructureExtraction("network name is invalid!").into());
} }
if let Some(n) = &self.title { if let Some(n) = &self.title
if n.contains('\n') { && n.contains('\n')
{
return Err(StructureExtraction("Network title contain newline char!").into()); return Err(StructureExtraction("Network title contain newline char!").into());
} }
}
if let Some(dev) = &self.device { if let Some(dev) = &self.device
if !regex!("^[a-zA-Z0-9]+$").is_match(dev) { && !regex!("^[a-zA-Z0-9]+$").is_match(dev)
{
return Err(StructureExtraction("Network device name is invalid!").into()); return Err(StructureExtraction("Network device name is invalid!").into());
} }
}
if let Some(bridge) = &self.bridge_name { if let Some(bridge) = &self.bridge_name
if !regex!("^[a-zA-Z0-9]+$").is_match(bridge) { && !regex!("^[a-zA-Z0-9]+$").is_match(bridge)
{
return Err(StructureExtraction("Network bridge name is invalid!").into()); return Err(StructureExtraction("Network bridge name is invalid!").into());
} }
}
if let Some(domain) = &self.domain { if let Some(domain) = &self.domain
if !regex!("^[a-zA-Z0-9.]+$").is_match(domain) { && !regex!("^[a-zA-Z0-9.]+$").is_match(domain)
{
return Err(StructureExtraction("Domain name is invalid!").into()); return Err(StructureExtraction("Domain name is invalid!").into());
} }
}
let mut ips = Vec::with_capacity(2); let mut ips = Vec::with_capacity(2);
@@ -303,17 +303,17 @@ impl NetworkInfo {
/// Check if at least one NAT definition was specified on this interface /// Check if at least one NAT definition was specified on this interface
pub fn has_nat_def(&self) -> bool { pub fn has_nat_def(&self) -> bool {
if let Some(ipv4) = &self.ip_v4 { if let Some(ipv4) = &self.ip_v4
if ipv4.nat.is_some() { && ipv4.nat.is_some()
{
return true; return true;
} }
}
if let Some(ipv6) = &self.ip_v6 { if let Some(ipv6) = &self.ip_v6
if ipv6.nat.is_some() { && ipv6.nat.is_some()
{
return true; return true;
} }
}
false false
} }

View File

@@ -43,14 +43,12 @@ impl From<&String> for NetworkFilterMacAddressOrVar {
fn extract_mac_address_or_var( fn extract_mac_address_or_var(
n: &Option<NetworkFilterMacAddressOrVar>, n: &Option<NetworkFilterMacAddressOrVar>,
) -> anyhow::Result<Option<String>> { ) -> anyhow::Result<Option<String>> {
if let Some(mac) = n { if let Some(mac) = n
if !mac.is_valid() { && !mac.is_valid()
return Err(NetworkFilterExtraction(format!( {
"Invalid mac address or variable! {}", return Err(
mac.0 NetworkFilterExtraction(format!("Invalid mac address or variable! {}", mac.0)).into(),
)) );
.into());
}
} }
Ok(n.as_ref().map(|n| n.0.to_string())) Ok(n.as_ref().map(|n| n.0.to_string()))
@@ -83,35 +81,35 @@ impl<const V: usize> From<&String> for NetworkFilterIPOrVar<V> {
fn extract_ip_or_var<const V: usize>( fn extract_ip_or_var<const V: usize>(
n: &Option<NetworkFilterIPOrVar<V>>, n: &Option<NetworkFilterIPOrVar<V>>,
) -> anyhow::Result<Option<String>> { ) -> anyhow::Result<Option<String>> {
if let Some(ip) = n { if let Some(ip) = n
if !ip.is_valid() { && !ip.is_valid()
{
return Err(NetworkFilterExtraction(format!( return Err(NetworkFilterExtraction(format!(
"Invalid IPv{V} address or variable! {}", "Invalid IPv{V} address or variable! {}",
ip.0 ip.0
)) ))
.into()); .into());
} }
}
Ok(n.as_ref().map(|n| n.0.to_string())) Ok(n.as_ref().map(|n| n.0.to_string()))
} }
fn extract_ip_mask<const V: usize>(n: Option<u8>) -> anyhow::Result<Option<u8>> { fn extract_ip_mask<const V: usize>(n: Option<u8>) -> anyhow::Result<Option<u8>> {
if let Some(mask) = n { if let Some(mask) = n
if !net_utils::is_mask_valid(V, mask) { && !net_utils::is_mask_valid(V, mask)
{
return Err(NetworkFilterExtraction(format!("Invalid IPv{V} mask! {mask}")).into()); return Err(NetworkFilterExtraction(format!("Invalid IPv{V} mask! {mask}")).into());
} }
}
Ok(n) Ok(n)
} }
fn extract_nw_filter_comment(n: &Option<String>) -> anyhow::Result<Option<String>> { fn extract_nw_filter_comment(n: &Option<String>) -> anyhow::Result<Option<String>> {
if let Some(comment) = n { if let Some(comment) = n
if comment.len() > 256 || comment.contains('\"') || comment.contains('\n') { && (comment.len() > 256 || comment.contains('\"') || comment.contains('\n'))
{
return Err(NetworkFilterExtraction(format!("Invalid comment! {comment}")).into()); return Err(NetworkFilterExtraction(format!("Invalid comment! {comment}")).into());
} }
}
Ok(n.clone()) Ok(n.clone())
} }
@@ -869,12 +867,10 @@ impl NetworkFilter {
); );
} }
if let Some(priority) = self.priority { if let Some(priority) = self.priority
if !(-1000..=1000).contains(&priority) { && !(-1000..=1000).contains(&priority)
return Err( {
NetworkFilterExtraction("Network priority is invalid!".to_string()).into(), return Err(NetworkFilterExtraction("Network priority is invalid!".to_string()).into());
);
}
} }
for fref in &self.join_filters { for fref in &self.join_filters {

View File

@@ -118,23 +118,23 @@ impl VMInfo {
XMLUuid::new_random() XMLUuid::new_random()
}; };
if let Some(n) = &self.genid { if let Some(n) = &self.genid
if !n.is_valid() { && !n.is_valid()
{
return Err(StructureExtraction("VM genid is invalid!").into()); return Err(StructureExtraction("VM genid is invalid!").into());
} }
}
if let Some(n) = &self.title { if let Some(n) = &self.title
if n.contains('\n') { && n.contains('\n')
{
return Err(StructureExtraction("VM title contain newline char!").into()); return Err(StructureExtraction("VM title contain newline char!").into());
} }
}
if let Some(group) = &self.group { if let Some(group) = &self.group
if !regex!("^[a-zA-Z0-9]+$").is_match(&group.0) { && !regex!("^[a-zA-Z0-9]+$").is_match(&group.0)
{
return Err(StructureExtraction("VM group name is invalid!").into()); return Err(StructureExtraction("VM group name is invalid!").into());
} }
}
if self.memory < constants::MIN_VM_MEMORY || self.memory > constants::MAX_VM_MEMORY { if self.memory < constants::MIN_VM_MEMORY || self.memory > constants::MAX_VM_MEMORY {
return Err(StructureExtraction("VM memory is invalid!").into()); return Err(StructureExtraction("VM memory is invalid!").into());

View File

@@ -60,11 +60,11 @@ pub struct Nat<IPv> {
impl<IPv> Nat<IPv> { impl<IPv> Nat<IPv> {
pub fn check(&self) -> anyhow::Result<()> { pub fn check(&self) -> anyhow::Result<()> {
if let NatSourceIP::Interface { name } = &self.host_ip { if let NatSourceIP::Interface { name } = &self.host_ip
if !net_utils::is_net_interface_name_valid(name) { && !net_utils::is_net_interface_name_valid(name)
{
return Err(NatDefError::InvalidNatDef("Invalid nat interface name!").into()); return Err(NatDefError::InvalidNatDef("Invalid nat interface name!").into());
} }
}
if let NatHostPort::Range { start, end } = &self.host_port { if let NatHostPort::Range { start, end } = &self.host_port {
if *start == 0 { if *start == 0 {
@@ -84,11 +84,11 @@ impl<IPv> Nat<IPv> {
return Err(NatDefError::InvalidNatDef("Invalid guest port!").into()); return Err(NatDefError::InvalidNatDef("Invalid guest port!").into());
} }
if let Some(comment) = &self.comment { if let Some(comment) = &self.comment
if comment.len() > constants::NET_NAT_COMMENT_MAX_SIZE { && comment.len() > constants::NET_NAT_COMMENT_MAX_SIZE
{
return Err(NatDefError::InvalidNatDef("Comment is too large!").into()); return Err(NatDefError::InvalidNatDef("Comment is too large!").into());
} }
}
Ok(()) Ok(())
} }

File diff suppressed because it is too large Load Diff

View File

@@ -12,14 +12,14 @@
"dependencies": { "dependencies": {
"@emotion/react": "^11.14.0", "@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1", "@emotion/styled": "^11.14.1",
"@fontsource/roboto": "^5.2.6", "@fontsource/roboto": "^5.2.7",
"@mdi/js": "^7.4.47", "@mdi/js": "^7.4.47",
"@mdi/react": "^1.6.1", "@mdi/react": "^1.6.1",
"@monaco-editor/react": "^4.7.0", "@monaco-editor/react": "^4.7.0",
"@mui/icons-material": "^7.3.1", "@mui/icons-material": "^7.3.1",
"@mui/material": "^7.3.1", "@mui/material": "^7.3.1",
"@mui/x-charts": "^8.10.0", "@mui/x-charts": "^8.3.1",
"@mui/x-data-grid": "^8.10.0", "@mui/x-data-grid": "^8.11.2",
"date-and-time": "^3.6.0", "date-and-time": "^3.6.0",
"filesize": "^10.1.6", "filesize": "^10.1.6",
"humanize-duration": "^3.33.0", "humanize-duration": "^3.33.0",
@@ -28,29 +28,29 @@
"react": "^19.1.1", "react": "^19.1.1",
"react-dom": "^19.1.1", "react-dom": "^19.1.1",
"react-router-dom": "^7.8.0", "react-router-dom": "^7.8.0",
"react-syntax-highlighter": "^15.6.1", "react-syntax-highlighter": "^15.6.6",
"react-vnc": "^3.1.0", "react-vnc": "^3.1.0",
"uuid": "^11.1.0", "uuid": "^11.1.0",
"xml-formatter": "^3.6.6", "xml-formatter": "^3.6.6",
"yaml": "^2.8.1" "yaml": "^2.8.1"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.33.0", "@eslint/js": "^9.35.0",
"@types/humanize-duration": "^3.27.4", "@types/humanize-duration": "^3.27.4",
"@types/jest": "^30.0.0", "@types/jest": "^30.0.0",
"@types/react": "^19.1.9", "@types/react": "^19.1.13",
"@types/react-dom": "^19.1.7", "@types/react-dom": "^19.1.9",
"@types/react-syntax-highlighter": "^15.5.13", "@types/react-syntax-highlighter": "^15.5.13",
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
"@vitejs/plugin-react": "^4.7.0", "@vitejs/plugin-react": "^4.7.0",
"eslint": "^9.33.0", "eslint": "^9.35.0",
"eslint-plugin-react-dom": "^1.52.3", "eslint-plugin-react-dom": "^1.53.1",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20", "eslint-plugin-react-refresh": "^0.4.20",
"eslint-plugin-react-x": "^1.52.3", "eslint-plugin-react-x": "^1.52.9",
"globals": "^16.3.0", "globals": "^16.3.0",
"typescript": "^5.9.2", "typescript": "^5.9.2",
"typescript-eslint": "^8.38.0", "typescript-eslint": "^8.43.0",
"vite": "^6.3.5" "vite": "^6.3.6"
} }
} }