From cc1c5aa5dabb738e843c47f5e87fc040648c2bb7 Mon Sep 17 00:00:00 2001 From: Maxwell Becker <49575486+mbecker20@users.noreply.github.com> Date: Tue, 11 Aug 2026 13:58:11 -0700 Subject: [PATCH] 2.3.2 (#1578) * UI Tags: remove owner column * 2.3.2 * reporting error includes api message * fix server builder config deserialization issue when server_ids not specified (causing UI failure) * deploy 2.3.2-dev-1 * bump rs / ui dependencies. Breaking fixes: clap (rust), react table (ts), recharts (ts) * improve ui index file from 4.7mb to 1.4mb with proper code splitting * mogh ui 1.0.1 lock * deploy 2.3.2-dev-2 * fix monaco yaml web worker for compose file suggestions * small fix various console logs * deploy 2.3.2-dev-3 * docsite configurable DOCSITE_URL and DOCSITE_BASE_URL * align dockerfile with base url changes * fix docsite docker caddy * 2.3.2 * remove currently unsupported configuration (github webhook app) * bump rust deps again * bump react table --- Cargo.lock | 269 +++---- Cargo.toml | 30 +- bin/cli/src/command/mod.rs | 4 +- bin/core/src/report.rs | 27 +- client/core/rs/src/entities/builder.rs | 14 +- client/core/ts/package.json | 6 +- client/core/ts/yarn.lock | 137 +++- config/core.config.toml | 19 - docsite/Dockerfile | 20 +- docsite/docusaurus.config.ts | 5 +- ui/package.json | 48 +- ui/public/client/lib.d.ts | 4 +- .../components/docker/container-selector.tsx | 8 +- .../components/docker/containers-section.tsx | 8 +- ui/src/components/maintenance-windows.tsx | 6 - .../components/permissions/base-section.tsx | 5 +- .../permissions/specific-section.tsx | 6 +- ui/src/components/stack-service-selector.tsx | 8 +- ui/src/components/swarm/services-section.tsx | 4 - ui/src/components/swarm/tasks-section.tsx | 4 - ui/src/components/terminal/index.tsx | 166 +---- ui/src/components/terminal/xterm.tsx | 169 +++++ ui/src/components/user/table.tsx | 8 +- ui/src/main.tsx | 5 +- ui/src/pages/containers.tsx | 11 +- ui/src/pages/docker/image.tsx | 2 - ui/src/pages/docker/network.tsx | 1 - ui/src/pages/schedules.tsx | 4 - ui/src/pages/settings/onboarding/index.tsx | 17 +- ui/src/pages/settings/providers/index.tsx | 4 - ui/src/pages/settings/tags/index.tsx | 24 +- ui/src/pages/settings/variables/index.tsx | 5 - ui/src/pages/stats.tsx | 2 +- ui/src/pages/terminals/index.tsx | 2 - ui/src/resources/action/table.tsx | 2 +- ui/src/resources/build/table.tsx | 4 - ui/src/resources/builder/instance-type.tsx | 2 +- ui/src/resources/deployment/table.tsx | 6 +- ui/src/resources/procedure/config/stage.tsx | 4 - ui/src/resources/procedure/table.tsx | 2 +- ui/src/resources/repo/table.tsx | 4 - ui/src/resources/selector.tsx | 8 +- ui/src/resources/server/docker/images.tsx | 1 - ui/src/resources/server/docker/networks.tsx | 1 - ui/src/resources/server/docker/volumes.tsx | 1 - ui/src/resources/server/stats/containers.tsx | 6 - ui/src/resources/server/stats/historical.tsx | 2 +- ui/src/resources/server/stats/index.tsx | 10 +- ui/src/resources/server/table/standard.tsx | 7 +- ui/src/resources/stack/services.tsx | 10 - ui/src/resources/stack/table.tsx | 6 +- ui/src/resources/swarm/docker/nodes/index.tsx | 3 - ui/src/resources/swarm/docker/secrets.tsx | 4 - ui/src/resources/swarm/table.tsx | 2 - ui/src/resources/sync/table.tsx | 4 - ui/vite.config.ts | 11 +- ui/yarn.lock | 656 +++++++++--------- 57 files changed, 947 insertions(+), 861 deletions(-) create mode 100644 ui/src/components/terminal/xterm.tsx diff --git a/Cargo.lock b/Cargo.lock index 8a65718df..68b4bbe73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -224,9 +224,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" +checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" dependencies = [ "compression-codecs", "compression-core", @@ -281,9 +281,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701418aa459dac33e50a0f8e818e5662a16bc018a6ac7423659b70f3799d67a8" +checksum = "1b180a3c8b55960db3426d8964b8745e652466a1a49fe1a2eda828046d30b5e4" dependencies = [ "aws-credential-types", "aws-runtime", @@ -347,9 +347,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6b50a43f3ccdf331521c6d6c68b7cc9668b6e09d439ebda9569df5722324d76" +checksum = "c9007227e10b5fed2f3e0a2beff489211e2b5604c400b7a9d5d81ca9d64c24bb" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -372,9 +372,9 @@ dependencies = [ [[package]] name = "aws-sdk-ec2" -version = "1.241.0" +version = "1.246.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36d274d82dfee2c5f8c43c023a32605521ff86a0342ed2279c6c02ed5401cefc" +checksum = "366e913d6ae975b6c0c79c61841026714ed5dd4e3284dac6b9ab00d9f06d96b2" dependencies = [ "arc-swap", "aws-credential-types", @@ -399,9 +399,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.104.0" +version = "1.105.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53416d16c278234845392e38d93bd4481d2f09daa0f005a2277f0aa91f59c22" +checksum = "6ffd0fbe7873cb548a7aa60f9573c268fff94155397fd4f14dc9f1ecaaab8516" dependencies = [ "arc-swap", "aws-credential-types", @@ -425,9 +425,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.106.0" +version = "1.107.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9b706c3305ed0285d5b1b696c747aa34950f830fb03e3e6c76890f99b9f188" +checksum = "175763eb222a46377df7aa257a3bca980ab3e96703fefc8f4d0b8da6ad2e254c" dependencies = [ "arc-swap", "aws-credential-types", @@ -451,9 +451,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.109.0" +version = "1.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d214cdfa5bbe17f117e76a7643fadf32a5234fb597322ef8b1fb4b2f17dbbd" +checksum = "dd8b14781dfbff48984017d57167b6ea0b6471c6920ec52b44a2677c7feb3c13" dependencies = [ "arc-swap", "aws-credential-types", @@ -551,7 +551,7 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-native-certs", "rustls-pki-types", "tokio", @@ -816,7 +816,7 @@ dependencies = [ "hyper 1.9.0", "hyper-util", "pin-project-lite", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -847,6 +847,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + [[package]] name = "base64-simd" version = "0.8.0" @@ -876,11 +882,11 @@ dependencies = [ [[package]] name = "bcrypt" -version = "0.19.2" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f3c067aa24dd4ed5c79cf222a38f260c8f23d3b82a062fba3f28c6fe563b753" +checksum = "a0cd0bd35a28836d528d2b58ad499bc3c5641d59379421b1be9eeb0c2f2b912a" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "blowfish", "getrandom 0.4.2", "subtle", @@ -972,7 +978,7 @@ dependencies = [ "serde_derive", "serde_json", "serde_urlencoded", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tokio-util", "tower-service", @@ -1250,9 +1256,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.4" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -1260,9 +1266,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.2" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -1330,9 +1336,9 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.2.2" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958c5d6ecf1f214b4c2bbbbf6ab9523a864bd136dcf71a7e8904799acfe1ad47" +checksum = "136c8c4c3823846e8ba6d4bda011b4e5d5827b8bb0ac26c31f9ab31abe9f54f2" dependencies = [ "crossterm", "unicode-segmentation", @@ -1341,7 +1347,7 @@ dependencies = [ [[package]] name = "command" -version = "2.3.1" +version = "2.3.2" dependencies = [ "komodo_client", "libc", @@ -1402,9 +1408,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "convert_case" @@ -1710,13 +1716,13 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" [[package]] name = "database" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "async-compression", @@ -2018,7 +2024,7 @@ dependencies = [ [[package]] name = "encoding" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "bytes", @@ -2048,7 +2054,7 @@ dependencies = [ [[package]] name = "environment" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "formatting", @@ -2200,7 +2206,7 @@ dependencies = [ [[package]] name = "formatting" -version = "2.3.1" +version = "2.3.2" dependencies = [ "mogh_error", ] @@ -2244,9 +2250,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -2254,9 +2260,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" @@ -2271,32 +2277,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-macro" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "futures-sink" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-timer" @@ -2306,9 +2312,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -2450,7 +2456,7 @@ dependencies = [ [[package]] name = "git" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "command", @@ -2678,7 +2684,7 @@ dependencies = [ "ipnet", "jni", "rand 0.10.2", - "thiserror 2.0.19", + "thiserror 2.0.20", "tinyvec", "tokio", "tracing", @@ -2699,7 +2705,7 @@ dependencies = [ "prefix-trie", "rand 0.10.2", "ring", - "thiserror 2.0.19", + "thiserror 2.0.20", "tinyvec", "tracing", "url", @@ -2726,7 +2732,7 @@ dependencies = [ "resolv-conf", "smallvec", "system-configuration", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", ] @@ -2925,7 +2931,7 @@ dependencies = [ "http 1.4.0", "hyper 1.9.0", "hyper-util", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-native-certs", "tokio", "tokio-rustls 0.26.4", @@ -3224,7 +3230,7 @@ dependencies = [ [[package]] name = "interpolate" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "komodo_client", @@ -3313,7 +3319,7 @@ dependencies = [ "jni-sys", "log", "simd_cesu8", - "thiserror 2.0.19", + "thiserror 2.0.20", "walkdir", "windows-link", ] @@ -3374,9 +3380,9 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "10.4.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba32bfb4ffdeaca3e34431072faf01745c9b26d25504aa7a6cf5684334fc4fc" +checksum = "881733cbc631fc9e472e24447ce32a64bedf2da498d6d8570b08edc87de71f65" dependencies = [ "aws-lc-rs", "base64 0.22.1", @@ -3392,7 +3398,7 @@ dependencies = [ [[package]] name = "komodo_cli" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "bcrypt", @@ -3410,7 +3416,7 @@ dependencies = [ "mogh_logger", "mogh_pki", "mogh_secret_file", - "rustls 0.23.42", + "rustls 0.23.43", "serde", "serde_json", "serde_qs", @@ -3422,7 +3428,7 @@ dependencies = [ [[package]] name = "komodo_client" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "async_timing_util", @@ -3446,13 +3452,13 @@ dependencies = [ "rand 0.10.2", "regex", "reqwest 0.13.4", - "schemars 1.2.1", + "schemars 1.2.2", "serde", "serde_json", "serde_qs", "strum 0.28.0", "svi", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tokio-tungstenite 0.30.0", "tokio-util", @@ -3464,7 +3470,7 @@ dependencies = [ [[package]] name = "komodo_core" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "arc-swap", @@ -3511,7 +3517,7 @@ dependencies = [ "periphery_client", "regex", "reqwest 0.13.4", - "rustls 0.23.42", + "rustls 0.23.43", "serde", "serde_json", "serde_qs", @@ -3537,7 +3543,7 @@ dependencies = [ [[package]] name = "komodo_periphery" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "arc-swap", @@ -3569,7 +3575,7 @@ dependencies = [ "mogh_server", "periphery_client", "portable-pty", - "rustls 0.23.42", + "rustls 0.23.43", "serde", "serde_json", "serde_yaml_ng", @@ -3787,9 +3793,9 @@ dependencies = [ [[package]] name = "mogh_auth_server" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97971cfe27a593a432d773b37764d37819984fbfaff57c11d55730467f2a6ba" +checksum = "bb93105687970a8489e5e2947b11a3f4d4027603c5a1bb25496a9dd8d8fe3c67" dependencies = [ "anyhow", "arc-swap", @@ -3843,7 +3849,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml_ng", - "thiserror 2.0.19", + "thiserror 2.0.20", "toml", "wildcard", ] @@ -3951,7 +3957,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "713d8731c78a3b867d712e394cef4be52b278e45aeca4b80ceb41b08d1c32334" dependencies = [ - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", ] @@ -4009,7 +4015,7 @@ dependencies = [ "mongo_indexed_derive", "mongodb", "serde", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -4068,7 +4074,7 @@ dependencies = [ "percent-encoding", "rand 0.9.4", "rustc_version_runtime", - "rustls 0.23.42", + "rustls 0.23.43", "serde", "serde_bytes", "serde_with", @@ -4078,7 +4084,7 @@ dependencies = [ "stringprep", "strsim", "take_mut", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tokio-rustls 0.26.4", "tokio-util", @@ -4424,7 +4430,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.19", + "thiserror 2.0.20", "tracing", ] @@ -4454,7 +4460,7 @@ dependencies = [ "opentelemetry_sdk", "prost", "reqwest 0.12.28", - "thiserror 2.0.19", + "thiserror 2.0.20", "tonic", "tracing", ] @@ -4490,7 +4496,7 @@ dependencies = [ "opentelemetry", "percent-encoding", "rand 0.9.4", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tokio-stream", ] @@ -4654,7 +4660,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "periphery_client" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "encoding", @@ -4956,9 +4962,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.42", + "rustls 0.23.43", "socket2 0.6.3", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", "web-time", @@ -4977,10 +4983,10 @@ dependencies = [ "rand 0.9.4", "ring", "rustc-hash", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-pki-types", "slab", - "thiserror 2.0.19", + "thiserror 2.0.20", "tinyvec", "tracing", "web-time", @@ -5227,7 +5233,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-native-certs", "rustls-pki-types", "serde", @@ -5268,7 +5274,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-pki-types", "rustls-platform-verifier", "serde", @@ -5541,9 +5547,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.42" +version = "0.23.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" dependencies = [ "aws-lc-rs", "log", @@ -5588,7 +5594,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki 0.103.13", @@ -5670,9 +5676,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "dyn-clone", "indexmap 2.14.0", @@ -5684,14 +5690,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" +checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -5831,13 +5837,13 @@ dependencies = [ [[package]] name = "serde_derive_internals" -version = "0.29.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -5876,9 +5882,9 @@ dependencies = [ [[package]] name = "serde_qs" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d525c8ff68aa99e5818302259bdd02d86d0303710616f39c0f44846ff6d332" +checksum = "475b9310e272827d34113bf8679b6dfb7fa0023ee049764ba003f8f984e8b5d1" dependencies = [ "itoa", "percent-encoding", @@ -5930,7 +5936,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.14.0", "schemars 0.9.0", - "schemars 1.2.1", + "schemars 1.2.2", "serde_core", "serde_json", "serde_with_macros", @@ -6137,7 +6143,7 @@ checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.19", + "thiserror 2.0.20", "time", ] @@ -6376,7 +6382,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91bb902c47385644774ba89f7e7982d3a32cf1da4e8870bf633cdece450eced1" dependencies = [ - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -6497,11 +6503,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.19", + "thiserror-impl 2.0.20", ] [[package]] @@ -6517,9 +6523,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", @@ -6644,7 +6650,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.42", + "rustls 0.23.43", "tokio", ] @@ -6680,7 +6686,7 @@ checksum = "17a073bfed563fa236697a068031408a93cd9522e08abf9933ead3e73411bd71" dependencies = [ "futures-util", "log", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-native-certs", "rustls-pki-types", "tokio", @@ -6706,9 +6712,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.1.3+spec-1.1.0" +version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap 2.14.0", "serde_core", @@ -6742,9 +6748,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] @@ -6758,7 +6764,7 @@ dependencies = [ "ordered_hash_map", "serde", "serde_json", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -6808,19 +6814,21 @@ dependencies = [ [[package]] name = "totp-rs" -version = "5.7.2" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e69a15e21b2ff22c415446983978bded3244195f17d59cb113551c1e806f91" +checksum = "49d0f9b7aa5def86d3a8d8ba926fe8c1990924dd715d2b5fc54a4aa3788c11c1" dependencies = [ "base32", "constant_time_eq", - "hmac 0.12.1", + "hmac 0.13.0", + "percent-encoding", "qrcodegen-image", + "rand 0.10.2", "serde", - "sha1 0.10.6", - "sha2 0.10.9", + "sha1 0.11.0", + "sha2 0.11.0", "url", - "urlencoding", + "zeroize", ] [[package]] @@ -6930,7 +6938,7 @@ dependencies = [ "rand 0.9.4", "serde", "serde_json", - "thiserror 2.0.19", + "thiserror 2.0.20", "time", "tokio", "tracing", @@ -7037,7 +7045,7 @@ dependencies = [ [[package]] name = "transport" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "axum", @@ -7050,7 +7058,7 @@ dependencies = [ "periphery_client", "pin-project-lite", "rand 0.10.2", - "rustls 0.23.42", + "rustls 0.23.43", "serde", "sha1 0.11.0", "sha2 0.11.0", @@ -7081,7 +7089,7 @@ dependencies = [ "log", "rand 0.9.4", "sha1 0.10.6", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -7096,10 +7104,10 @@ dependencies = [ "httparse", "log", "rand 0.10.2", - "rustls 0.23.42", + "rustls 0.23.43", "rustls-pki-types", "sha1 0.11.0", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -7606,7 +7614,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9b0540e91e49de3817c314da0dd3bc518093ceacc6ea5327cb0e1eb073e5189" dependencies = [ - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -8069,12 +8077,12 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "xtask" -version = "2.3.1" +version = "2.3.2" dependencies = [ "anyhow", "clap", "komodo_client", - "schemars 1.2.1", + "schemars 1.2.2", ] [[package]] @@ -8143,10 +8151,11 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ + "serde", "zeroize_derive", ] diff --git a/Cargo.toml b/Cargo.toml index 953ab28ac..9595eb2fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ members = [ ] [workspace.package] -version = "2.3.1" +version = "2.3.2" edition = "2024" license = "GPL-3.0-or-later" repository = "https://github.com/moghtech/komodo" @@ -34,7 +34,7 @@ mogh_error = { version = "1.0.4", default-features = false } derive_default_builder = "0.1.8" async_timing_util = "1.1.0" mogh_auth_client = "1.7.0" -mogh_auth_server = "1.7.0" +mogh_auth_server = "1.8.0" mogh_secret_file = "1.0.1" mogh_validations = "1.0.1" mogh_rate_limit = "1.0.1" @@ -56,7 +56,7 @@ tokio = { version = "1.53.1", features = ["full"] } tokio-util = { version = "0.7.19", features = ["io", "codec"] } tokio-stream = { version = "0.1.19", features = ["sync"] } pin-project-lite = "0.2.17" -futures-util = "0.3.33" +futures-util = "0.3.34" arc-swap = "1.9.2" # SERVER @@ -74,15 +74,15 @@ indexmap = { version = "2.14.0", features = ["serde"] } serde = { version = "1.0.229", features = ["derive"] } strum = { version = "0.28.0", features = ["derive"] } bson = { version = "2.15.0" } # must keep in sync with mongodb version -toml = "1.1.3" +toml = "1.1.4" serde_yaml_ng = "0.10.0" serde_json = "1.0.151" -serde_qs = "1.1.2" +serde_qs = "1.1.3" url = "2.5.8" # ERROR anyhow = "1.0.104" -thiserror = "2.0.19" +thiserror = "2.0.20" # SYSTEM libc = "0.2.189" @@ -91,16 +91,16 @@ libc = "0.2.189" tracing = "0.1.44" # CONFIG -clap = { version = "4.6.4", features = ["derive"] } +clap = { version = "4.6.6", features = ["derive"] } dotenvy = "0.15.7" envy = "0.4.2" # CRYPTO / AUTH uuid = { version = "1.24.0", features = ["v4", "fast-rng", "serde"] } -rustls = { version = "0.23.42", features = ["aws-lc-rs"] } -data-encoding = "2.11.0" +rustls = { version = "0.23.43", features = ["aws-lc-rs"] } +data-encoding = "2.11.1" urlencoding = "2.1.3" -bcrypt = "0.19.2" +bcrypt = "0.19.3" hmac = "0.13.0" sha1 = "0.11.0" sha2 = "0.11.0" @@ -117,8 +117,8 @@ sysinfo = "0.39.6" shlex = "2.0.1" # CLOUD -aws-config = "1.10.0" -aws-sdk-ec2 = "1.241.0" +aws-config = "1.10.1" +aws-sdk-ec2 = "1.246.0" aws-credential-types = "1.3.0" ## CRON @@ -128,10 +128,10 @@ chrono = "0.4.45" croner = "3.0.1" # MISC -async-compression = { version = "0.4.42", features = ["tokio", "gzip"] } -schemars = { version = "1.2.1", features = ["indexmap2"] } +async-compression = { version = "0.4.43", features = ["tokio", "gzip"] } +schemars = { version = "1.2.2", features = ["indexmap2"] } derive_builder = "0.20.2" -comfy-table = "7.2.2" +comfy-table = "8.0.0" typeshare = "1.0.5" wildcard = "0.3.0" colored = "3.1.1" diff --git a/bin/cli/src/command/mod.rs b/bin/cli/src/command/mod.rs index bf07d2096..5eb0c9e8e 100644 --- a/bin/cli/src/command/mod.rs +++ b/bin/cli/src/command/mod.rs @@ -100,7 +100,7 @@ fn print_items( match format { CliFormat::Table => { let mut table = Table::new(); - let preset = { + let style = { use comfy_table::presets::*; match cli_config().table_borders { None | Some(CliTableBorders::Horizontal) => { @@ -112,7 +112,7 @@ fn print_items( Some(CliTableBorders::All) => UTF8_FULL, } }; - table.load_preset(preset).set_header( + table.load_style(style).set_header( T::header(links) .iter() .map(|h| Cell::new(h).add_attribute(Attribute::Bold)), diff --git a/bin/core/src/report.rs b/bin/core/src/report.rs index 6bcce720a..f84c522c1 100644 --- a/bin/core/src/report.rs +++ b/bin/core/src/report.rs @@ -1,6 +1,6 @@ use std::time::{SystemTime, UNIX_EPOCH}; -use anyhow::Context; +use anyhow::{Context, anyhow}; use async_timing_util::{Timelength, wait_until_timelength}; use komodo_client::entities::{ ResourceTargetVariant, report::KomodoReport, @@ -60,12 +60,12 @@ async fn report( .get("https://mogh.tech/report/public_key") .send() .await - .context("Failed to query for reporting endpoint public key for signature.")? + .context("Failed to query for reporting endpoint public key for signature")? .error_for_status() - .context("Failed response for reporting endpoint public key for signature.")? + .context("Failed response for reporting endpoint public key for signature")? .text() .await - .context("Failed to get reporting endpoint public key for signature.")?; + .context("Failed to get reporting endpoint public key for signature")?; let endpoint_public_key = SpkiPublicKey::maybe_pem_to_raw_bytes(&endpoint_public_key) @@ -138,7 +138,7 @@ async fn report( .generate_signature() .context("Failed to generate report signature")?; - client + let res = client .post("https://mogh.tech/report/komodo") .header("x-api-signature", signature) .header("x-api-timestamp", timestamp) @@ -146,9 +146,18 @@ async fn report( .body(serialized) .send() .await - .context("Failed to post report.")? - .error_for_status() - .context("Failed response for report post.")?; + .context("Failed to post report")?; - Ok(()) + let status = res.status(); + + if status.is_success() { + return Ok(()); + } + + let text = res + .text() + .await + .context("Failed report, and failed to get response body")?; + + Err(anyhow!("{status}: {text}")) } diff --git a/client/core/rs/src/entities/builder.rs b/client/core/rs/src/entities/builder.rs index 2897abeeb..3f7515f9d 100644 --- a/client/core/rs/src/entities/builder.rs +++ b/client/core/rs/src/entities/builder.rs @@ -256,14 +256,14 @@ impl MaybeNone for BuilderConfigDiff { impl From for BuilderConfig { fn from(value: PartialBuilderConfig) -> BuilderConfig { match value { - PartialBuilderConfig::Url(server) => { - BuilderConfig::Url(server.into()) + PartialBuilderConfig::Url(config) => { + BuilderConfig::Url(config.into()) } - PartialBuilderConfig::Server(server) => { - BuilderConfig::Server(server.into()) + PartialBuilderConfig::Server(config) => { + BuilderConfig::Server(config.into()) } - PartialBuilderConfig::Aws(builder) => { - BuilderConfig::Aws(builder.into()) + PartialBuilderConfig::Aws(config) => { + BuilderConfig::Aws(config.into()) } } } @@ -469,11 +469,13 @@ pub struct ServerBuilderConfig { deserialize_with = "string_list_deserializer" )] #[partial_attr(serde( + default, alias = "server_id", alias = "server", alias = "servers", deserialize_with = "option_string_list_deserializer" ))] + #[builder(default)] #[cfg_attr( feature = "schemars", partial_attr(schemars(rename = "servers")) diff --git a/client/core/ts/package.json b/client/core/ts/package.json index 96d134616..35a5850f2 100644 --- a/client/core/ts/package.json +++ b/client/core/ts/package.json @@ -1,6 +1,6 @@ { "name": "komodo_client", - "version": "2.3.1", + "version": "2.3.2", "description": "Komodo client package", "homepage": "https://komo.do", "main": "dist/lib.js", @@ -13,10 +13,10 @@ "build": "tsc" }, "dependencies": { - "mogh_auth_client": "^1.7.0" + "mogh_auth_client": "^1.7.1" }, "devDependencies": { - "typescript": "^6.0.2" + "typescript": "^7.0.2" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/client/core/ts/yarn.lock b/client/core/ts/yarn.lock index 64671311d..29a53c17c 100644 --- a/client/core/ts/yarn.lock +++ b/client/core/ts/yarn.lock @@ -2,19 +2,140 @@ # yarn lockfile v1 +"@typescript/typescript-aix-ppc64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz#cdc7ce81d60f1e09034960ddfb1fb880d7a776b6" + integrity sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ== + +"@typescript/typescript-darwin-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz#a55fdfcfa58df58d27db2237cde6a5c1e35a7235" + integrity sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA== + +"@typescript/typescript-darwin-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz#38d1c9172800a91d707bec64d2a370a016634db4" + integrity sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA== + +"@typescript/typescript-freebsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz#f1ff8810030b35d2b5be0db6a2dc650460ea94fa" + integrity sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ== + +"@typescript/typescript-freebsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz#3d86b03f353c5b1ba95162eb6ce35533bfc294bd" + integrity sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw== + +"@typescript/typescript-linux-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz#d9334d96d6dac6ff85da9c865588948de939e91f" + integrity sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ== + +"@typescript/typescript-linux-arm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz#ad94b41e1aee2a4dcc6a298c7b67c43345fde32e" + integrity sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ== + +"@typescript/typescript-linux-loong64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz#2965aee4fc873360139d893daafe6397a29138ad" + integrity sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ== + +"@typescript/typescript-linux-mips64el@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz#1a887a311bed3a833f80bfd4a9ed37c271936cf0" + integrity sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA== + +"@typescript/typescript-linux-ppc64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz#8b63c9b2f445b393eb4e43ec21da225dade3577d" + integrity sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA== + +"@typescript/typescript-linux-riscv64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz#b6e8a35c289b3ea97a92a41d461aaeed0d3b36e1" + integrity sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ== + +"@typescript/typescript-linux-s390x@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz#2ef96693be4861f6d17965427e5b009cbbed1a3e" + integrity sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw== + +"@typescript/typescript-linux-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz#73269cb0baba50aea0ca060445a6b88e583f1ce2" + integrity sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A== + +"@typescript/typescript-netbsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz#3a3649f97fafa210b4e6e3798c15e06605c8a901" + integrity sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA== + +"@typescript/typescript-netbsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz#47ec59491a40c470d2807dc4d2b825528fd979ab" + integrity sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA== + +"@typescript/typescript-openbsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz#796be8da0bd989d8a3fb96f2801e38a8365b4baf" + integrity sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ== + +"@typescript/typescript-openbsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz#d37fe2a729eb942c076c454ee7f1815faf7d560f" + integrity sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg== + +"@typescript/typescript-sunos-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz#aba8d3464c3565a7044789baba96916bd4ab2c88" + integrity sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g== + +"@typescript/typescript-win32-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz#b9de50a17196383f62620b5f9d0a2f34ad3b60d7" + integrity sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ== + +"@typescript/typescript-win32-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz#cf3b7b0d6ce5635daca4c8e01c189cdcde47ec3c" + integrity sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g== + jwt-decode@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== -mogh_auth_client@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.7.0.tgz#a016c8dafd0f73633098d41aa95889c444e481d9" - integrity sha512-v4TJVNIiFYBLd70yGw/eS37E15he4I5w3poj5X7W75D+m6ry9gbhtlePp5elRbqjDZ/WXkOZ/XYCHqGYb/PQ2A== +mogh_auth_client@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.7.1.tgz#98469ee4cff4c47c991235acd0b96c1b27c5a1e4" + integrity sha512-IWT7ET5QmqNGqrGgNy4oyF4LMb1TeLXQhDw6AXzd5S/WfWC9JJx7xjnIdJFqXpl3zoZ+va773RrPB5ufGPkVVQ== dependencies: jwt-decode "^4.0.0" -typescript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.2.tgz#0b1bfb15f68c64b97032f3d78abbf98bdbba501f" - integrity sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ== +typescript@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-7.0.2.tgz#9ec773d7954a8c182c17cc5bbd575aa28bc51582" + integrity sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA== + optionalDependencies: + "@typescript/typescript-aix-ppc64" "7.0.2" + "@typescript/typescript-darwin-arm64" "7.0.2" + "@typescript/typescript-darwin-x64" "7.0.2" + "@typescript/typescript-freebsd-arm64" "7.0.2" + "@typescript/typescript-freebsd-x64" "7.0.2" + "@typescript/typescript-linux-arm" "7.0.2" + "@typescript/typescript-linux-arm64" "7.0.2" + "@typescript/typescript-linux-loong64" "7.0.2" + "@typescript/typescript-linux-mips64el" "7.0.2" + "@typescript/typescript-linux-ppc64" "7.0.2" + "@typescript/typescript-linux-riscv64" "7.0.2" + "@typescript/typescript-linux-s390x" "7.0.2" + "@typescript/typescript-linux-x64" "7.0.2" + "@typescript/typescript-netbsd-arm64" "7.0.2" + "@typescript/typescript-netbsd-x64" "7.0.2" + "@typescript/typescript-openbsd-arm64" "7.0.2" + "@typescript/typescript-openbsd-x64" "7.0.2" + "@typescript/typescript-sunos-x64" "7.0.2" + "@typescript/typescript-win32-arm64" "7.0.2" + "@typescript/typescript-win32-x64" "7.0.2" diff --git a/config/core.config.toml b/config/core.config.toml index f8c949efa..b063e3012 100644 --- a/config/core.config.toml +++ b/config/core.config.toml @@ -498,25 +498,6 @@ webhook_secret = "a_random_webhook_secret" ## Default: empty (none) webhook_base_url = "" -## Configure Github webhook app. Enables webhook management apis. -## -## Env: KOMODO_GITHUB_WEBHOOK_APP_APP_ID or KOMODO_GITHUB_WEBHOOK_APP_APP_ID_FILE -# github_webhook_app.app_id = 1234455 # Find on the app page. -## Env: -## - KOMODO_GITHUB_WEBHOOK_APP_INSTALLATIONS_IDS or KOMODO_GITHUB_WEBHOOK_APP_INSTALLATIONS_IDS_FILE -## - KOMODO_GITHUB_WEBHOOK_APP_INSTALLATIONS_NAMESPACES -# github_webhook_app.installations = [ -# ## Find the id after installing the app to user / organization. "namespace" is the username / organization name. -# { id = 1234, namespace = "mbecker20" } -# ] - -## The path to Github webhook app private key. -## This is defaulted to `/github/private-key.pem`, and doesn't need to be changed if running core in Docker. -## Just mount the private key pem file on the host to `/github/private-key.pem` in the container. -## Eg. `/your/path/to/key.pem : /github/private-key.pem` -## Env: KOMODO_GITHUB_WEBHOOK_APP_PK_PATH -# github_webhook_app.pk_path = "/path/to/pk.pem" - ########### # LOGGING # ########### diff --git a/docsite/Dockerfile b/docsite/Dockerfile index 110627ae6..2e7fd8b64 100644 --- a/docsite/Dockerfile +++ b/docsite/Dockerfile @@ -1,5 +1,8 @@ FROM node:22.12-alpine AS builder +ARG DOCSITE_URL +ARG DOCSITE_BASE_URL=/ + WORKDIR /builder COPY package.json yarn.lock ./ @@ -13,19 +16,24 @@ COPY ./docusaurus.config.ts ./docusaurus.config.ts COPY ./sidebars.ts ./sidebars.ts COPY ./tsconfig.json ./tsconfig.json -RUN yarn build +RUN DOCSITE_URL=${DOCSITE_URL} DOCSITE_BASE_URL=${DOCSITE_BASE_URL} yarn build FROM caddy:latest -# Copy into caddy image /srv -COPY --from=builder /builder/build /srv +ARG DOCSITE_BASE_URL=/ -# Add a basic caddyfile serving http -RUN < /etc/caddy/Caddyfile +# Copy into caddy image /srv, nested under the base url path +COPY --from=builder /builder/build /srv${DOCSITE_BASE_URL} + +# Add a basic caddyfile serving http. +# BASE is the base url without its trailing slash (empty when base url is "/"), +# used to redirect e.g. /komodo -> /komodo/ so relative urls resolve correctly. +RUN BASE="${DOCSITE_BASE_URL%/}" && cat > /etc/caddy/Caddyfile </ pathname under which your site is served // For GitHub pages deployment, it is often '//' - // baseUrl: "/komodo/", - baseUrl: "/", + baseUrl: process.env.DOCSITE_BASE_URL || "/", // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. diff --git a/ui/package.json b/ui/package.json index 2588f2d35..ea866c82a 100644 --- a/ui/package.json +++ b/ui/package.json @@ -10,48 +10,48 @@ "build-client": "cd ../client/core/ts && yarn && yarn build && yarn link" }, "dependencies": { - "@mantine/core": "^9.4.1", - "@mantine/form": "^9.4.1", - "@mantine/hooks": "^9.4.1", - "@mantine/notifications": "^9.4.1", - "@mantine/spotlight": "^9.4.1", + "@mantine/core": "^9.5.1", + "@mantine/form": "^9.5.1", + "@mantine/hooks": "^9.5.1", + "@mantine/notifications": "^9.5.1", + "@mantine/spotlight": "^9.5.1", "@monaco-editor/react": "^4.7.0", - "@tanstack/react-query": "^5.101.2", - "@tanstack/react-table": "^8.21.3", + "@tanstack/react-query": "^5.101.4", + "@tanstack/react-table": "^9.1.2", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "ansi-to-html": "^0.7.2", - "jotai": "^2.20.1", - "jotai-family": "^1.0.2", + "jotai": "^2.20.2", + "jotai-family": "^1.1.0", "jotai-location": "^0.6.2", - "lucide-react": "^1.22.0", - "mogh_auth_client": "^1.7.0", - "mogh_ui": "^0.7.6", + "lucide-react": "^1.31.0", + "mogh_auth_client": "^1.7.1", + "mogh_ui": "^1.1.1", "monaco-editor": "^0.56.0", "monaco-yaml": "^5.5.1", - "react": "^19.2.7", - "react-dom": "^19.2.7", + "react": "^19.2.8", + "react-dom": "^19.2.8", "react-minimal-pie-chart": "^9.1.2", - "react-router-dom": "^7.18.1", + "react-router-dom": "^7.18.2", "react-xtermjs": "^1.0.12", - "recharts": "^3.9.1", - "sanitize-html": "^2.17.5", - "shell-quote": "^1.9.0" + "recharts": "^3.10.1", + "sanitize-html": "^2.17.6", + "shell-quote": "^1.10.0" }, "devDependencies": { - "@types/node": "^26.0.1", - "@types/react": "^19.2.17", - "@types/react-dom": "^19.2.3", + "@types/node": "^26.2.0", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", "@types/sanitize-html": "^2.16.1", "@types/shell-quote": "^1.7.5", - "@vitejs/plugin-react": "^6.0.3", + "@vitejs/plugin-react": "^6.0.5", "dotenv": "^17.4.2", - "postcss": "^8.5.16", + "postcss": "^8.5.26", "postcss-preset-mantine": "^1.18.0", "postcss-simple-vars": "^7.0.1", "sass-embedded": "^1.100.0", "typescript": "^7.0.2", - "vite": "^8.1.2" + "vite": "^8.2.1" }, "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/ui/public/client/lib.d.ts b/ui/public/client/lib.d.ts index e09470b18..d7f198488 100644 --- a/ui/public/client/lib.d.ts +++ b/ui/public/client/lib.d.ts @@ -120,10 +120,10 @@ export declare function KomodoClient(url: string, options: InitOptions): { */ execute_and_poll: >(type: T, params: Req["params"]) => Promise>(type: T, params: Req["params"]) => Promise<(Update | { status: "Err"; data: import("./types.js").BatchExecutionResponseItemErr; - })[]>; + })[] | Update>; /** * Poll an Update (returned by the `execute` calls) until the `status` is `Complete`. * https://docs.rs/komodo_client/latest/komodo_client/entities/update/struct.Update.html#structfield.status. diff --git a/ui/src/components/docker/container-selector.tsx b/ui/src/components/docker/container-selector.tsx index 387d58b15..fd29c058b 100644 --- a/ui/src/components/docker/container-selector.tsx +++ b/ui/src/components/docker/container-selector.tsx @@ -86,6 +86,7 @@ export default function ContainerSelector({ {clearable && ( diff --git a/ui/src/components/docker/containers-section.tsx b/ui/src/components/docker/containers-section.tsx index 2b40fb5d4..309624466 100644 --- a/ui/src/components/docker/containers-section.tsx +++ b/ui/src/components/docker/containers-section.tsx @@ -94,7 +94,6 @@ export default function ContainersSection({ columns={[ { accessorKey: "name", - size: 260, header: ({ column }) => ( ), @@ -108,7 +107,6 @@ export default function ContainersSection({ }, { accessorKey: "state", - size: 160, header: ({ column }) => ( ), @@ -124,7 +122,6 @@ export default function ContainersSection({ }, { accessorKey: "image", - size: 300, header: ({ column }) => ( ), @@ -139,7 +136,6 @@ export default function ContainersSection({ }, { accessorKey: "networks.0", - size: 200, header: ({ column }) => ( ), @@ -167,8 +163,7 @@ export default function ContainersSection({ }, { accessorKey: "ports.0", - size: 200, - sortingFn: (a, b) => { + sortFn: (a, b) => { const getMinHostPort = (row: typeof a) => { const ports = row.original.ports ?? []; if (!ports.length) return Number.POSITIVE_INFINITY; @@ -197,7 +192,6 @@ export default function ContainersSection({ }, { accessorKey: "volumes.0", - size: 200, header: ({ column }) => ( ), diff --git a/ui/src/components/maintenance-windows.tsx b/ui/src/components/maintenance-windows.tsx index 0228ba0c9..34f4771ad 100644 --- a/ui/src/components/maintenance-windows.tsx +++ b/ui/src/components/maintenance-windows.tsx @@ -88,7 +88,6 @@ export default function ConfigMaintenanceWindows({ {row.original.name} ), - size: 200, }, { accessorKey: "schedule_type", @@ -98,7 +97,6 @@ export default function ConfigMaintenanceWindows({ cell: ({ row }) => ( ), - size: 150, }, { accessorKey: "start_time", @@ -106,7 +104,6 @@ export default function ConfigMaintenanceWindows({ ), cell: ({ row }) => fmtMaintenanceWindowTime(row.original), - size: 180, }, { accessorKey: "duration_minutes", @@ -114,7 +111,6 @@ export default function ConfigMaintenanceWindows({ ), accessorFn: (row) => `${row.duration_minutes} min`, - size: 100, }, { accessorKey: "enabled", @@ -128,7 +124,6 @@ export default function ConfigMaintenanceWindows({ disabled={disabled} /> ), - size: 120, }, { id: "actions", @@ -152,7 +147,6 @@ export default function ConfigMaintenanceWindows({ ), - size: 100, }, ]} /> diff --git a/ui/src/components/permissions/base-section.tsx b/ui/src/components/permissions/base-section.tsx index aab267fb1..c462c6317 100644 --- a/ui/src/components/permissions/base-section.tsx +++ b/ui/src/components/permissions/base-section.tsx @@ -102,7 +102,6 @@ export default function BasePermissionsSection({ columns={[ { accessorKey: "type", - size: 150, header: ({ column }) => ( ), @@ -119,8 +118,7 @@ export default function BasePermissionsSection({ }, { accessorKey: "level", - size: 150, - sortingFn: (a, b) => + sortFn: (a, b) => levelSortingFn(a.original.level, b.original.level), header: ({ column }) => ( @@ -143,7 +141,6 @@ export default function BasePermissionsSection({ }, { header: "Specific", - size: 300, cell: ({ row }) => { return ( ( ), @@ -72,7 +71,6 @@ export default function SpecificPermissionsSection({ }, { accessorKey: "resource_target", - size: 250, header: ({ column }) => ( ), @@ -91,8 +89,7 @@ export default function SpecificPermissionsSection({ }, { accessorKey: "level", - size: 150, - sortingFn: (a, b) => + sortFn: (a, b) => levelSortingFn(a.original.level, b.original.level), header: ({ column }) => ( @@ -115,7 +112,6 @@ export default function SpecificPermissionsSection({ }, { header: "Specific", - size: 300, cell: ({ row: { original: permission } }) => { return ( {clearable && ( diff --git a/ui/src/components/swarm/services-section.tsx b/ui/src/components/swarm/services-section.tsx index bb5019ed1..3ceefa7b6 100644 --- a/ui/src/components/swarm/services-section.tsx +++ b/ui/src/components/swarm/services-section.tsx @@ -66,7 +66,6 @@ export default function SwarmServicesSection({ name={row.original.Name} /> ), - size: 200, }, { accessorKey: "ID", @@ -74,7 +73,6 @@ export default function SwarmServicesSection({ ), cell: ({ row }) => row.original.ID ?? "Unknown", - size: 200, }, { accessorKey: "UpdatedAt", @@ -85,7 +83,6 @@ export default function SwarmServicesSection({ row.original.UpdatedAt ? new Date(row.original.UpdatedAt).toLocaleString() : "Unknown", - size: 200, }, { accessorKey: "CreatedAt", @@ -96,7 +93,6 @@ export default function SwarmServicesSection({ row.original.CreatedAt ? new Date(row.original.CreatedAt).toLocaleString() : "Unknown", - size: 200, }, ]} /> diff --git a/ui/src/components/swarm/tasks-section.tsx b/ui/src/components/swarm/tasks-section.tsx index 058d2634b..ade0244c8 100644 --- a/ui/src/components/swarm/tasks-section.tsx +++ b/ui/src/components/swarm/tasks-section.tsx @@ -86,7 +86,6 @@ export default function SwarmTasksSection({ name={row.original.ID} /> ), - size: 150, }, { accessorKey: "node.Hostname", @@ -101,7 +100,6 @@ export default function SwarmTasksSection({ name={row.original.node?.Hostname} /> ), - size: 200, }, { accessorKey: "service.Name", @@ -116,7 +114,6 @@ export default function SwarmTasksSection({ name={row.original.service?.Name} /> ), - size: 200, }, { accessorKey: "State", @@ -157,7 +154,6 @@ export default function SwarmTasksSection({ row.original.UpdatedAt ? new Date(row.original.UpdatedAt).toLocaleString() : "Unknown", - size: 200, }, // { // accessorKey: "CreatedAt", diff --git a/ui/src/components/terminal/index.tsx b/ui/src/components/terminal/index.tsx index c1a4ed748..71dd1660f 100644 --- a/ui/src/components/terminal/index.tsx +++ b/ui/src/components/terminal/index.tsx @@ -1,169 +1,19 @@ -import { Box, useComputedColorScheme } from "@mantine/core"; -import { useEffect, useMemo, useRef } from "react"; -import { ITheme } from "@xterm/xterm"; -import { FitAddon } from "@xterm/addon-fit"; -import { useXTerm, UseXTermProps } from "react-xtermjs"; import { TerminalCallbacks } from "komodo_client"; +import { lazy, Suspense } from "react"; -const LIGHT_THEME: ITheme = { - background: "#EDEEEF", - foreground: "#000000", - cursor: "#000000", - selectionBackground: "#C8D9FA", - scrollbarSliderBackground: "#D3D3D3", -}; +// The implementation pulls in @xterm / react-xtermjs, +// so it is loaded lazily to keep them out of the entry chunk. +const TerminalInner = lazy(() => import("./xterm")); -const DARK_THEME: ITheme = { - background: "#15171B", - foreground: "#FFFFFF", - cursor: "#FFFFFF", - selectionBackground: "#B4BFD6", - scrollbarSliderBackground: "#232528", -}; - -export default function Terminal({ - makeWs, - selected, - _reconnect, - _clear, -}: { +export default function Terminal(props: { makeWs: (callbacks: TerminalCallbacks) => WebSocket | undefined; selected: boolean; _reconnect: boolean; _clear?: boolean; }) { - const currentTheme = useComputedColorScheme(); - const theme = currentTheme === "dark" ? DARK_THEME : LIGHT_THEME; - const wsRef = useRef(null); - const fitRef = useRef(new FitAddon()); - - const resize = () => { - fitRef.current.fit(); - if (term) { - if (wsRef.current && wsRef.current.readyState === WebSocket.OPEN) { - const json = JSON.stringify({ - rows: term.rows, - cols: term.cols, - }); - const buf = new Uint8Array(json.length + 1); - for (let i = 0; i < json.length; i++) buf[i] = json.charCodeAt(i); - buf[json.length] = 0xff; // resize postfix - wsRef.current.send(buf); - } - term.focus(); - } - }; - - const onStdin = (data: string) => { - // This is data user writes to stdin - if (!wsRef.current || wsRef.current.readyState !== WebSocket.OPEN) return; - - const buf = new Uint8Array(data.length + 1); - for (let i = 0; i < data.length; i++) buf[i] = data.charCodeAt(i); - buf[data.length] = 0x01; // forward data postfix - wsRef.current.send(buf); - }; - - useEffect(resize, [selected]); - - const params: UseXTermProps = useMemo( - () => ({ - options: { - convertEol: false, - cursorBlink: true, - cursorStyle: "block", - fontFamily: "monospace", - scrollback: 5000, - // This is handled in ws on_message handler - scrollOnUserInput: false, - theme, - }, - listeners: { - onResize: resize, - onData: onStdin, - }, - addons: [fitRef.current], - }), - [theme], - ); - - const { instance: term, ref: termRef } = useXTerm(params); - - const viewport = (term as any)?._core?.viewport?._viewportElement as - | HTMLDivElement - | undefined; - - useEffect(() => { - if (!term || !viewport) return; - - let delta = 0; - term.attachCustomWheelEventHandler((e) => { - e.preventDefault(); - // This is used to make touchpad and mousewheel more similar - delta += Math.sign(e.deltaY) * Math.sqrt(Math.abs(e.deltaY)) * 20; - return false; - }); - const int = setInterval(() => { - if (Math.abs(delta) < 1) return; - viewport.scrollTop += delta; - delta = 0; - }, 100); - return () => clearInterval(int); - }, [term, termRef.current]); - - useEffect(() => { - if (!selected || !term) return; - - term.clear(); - - let debounce = -1; - - const callbacks: TerminalCallbacks = { - on_login: () => { - // console.log("Logged into terminal"); - }, - on_open: resize, - on_message: (e: MessageEvent) => { - term.write(new Uint8Array(e.data as ArrayBuffer), () => { - if (viewport) { - viewport.scrollTop = viewport.scrollHeight - viewport.clientHeight; - } - clearTimeout(debounce); - debounce = setTimeout(() => { - if (!viewport) return; - viewport.scrollTop = viewport.scrollHeight - viewport.clientHeight; - }, 500) as any; - }); - }, - on_close: () => { - term.writeln("\r\n\x1b[33m[connection closed]\x1b[0m"); - }, - }; - - const ws = makeWs(callbacks); - - if (!ws) return; - - wsRef.current = ws; - - return () => { - ws.close(); - wsRef.current = null; - }; - }, [term, viewport, makeWs, selected, _reconnect]); - - useEffect(() => term?.clear(), [_clear]); - return ( - - - + + + ); } diff --git a/ui/src/components/terminal/xterm.tsx b/ui/src/components/terminal/xterm.tsx new file mode 100644 index 000000000..c1a4ed748 --- /dev/null +++ b/ui/src/components/terminal/xterm.tsx @@ -0,0 +1,169 @@ +import { Box, useComputedColorScheme } from "@mantine/core"; +import { useEffect, useMemo, useRef } from "react"; +import { ITheme } from "@xterm/xterm"; +import { FitAddon } from "@xterm/addon-fit"; +import { useXTerm, UseXTermProps } from "react-xtermjs"; +import { TerminalCallbacks } from "komodo_client"; + +const LIGHT_THEME: ITheme = { + background: "#EDEEEF", + foreground: "#000000", + cursor: "#000000", + selectionBackground: "#C8D9FA", + scrollbarSliderBackground: "#D3D3D3", +}; + +const DARK_THEME: ITheme = { + background: "#15171B", + foreground: "#FFFFFF", + cursor: "#FFFFFF", + selectionBackground: "#B4BFD6", + scrollbarSliderBackground: "#232528", +}; + +export default function Terminal({ + makeWs, + selected, + _reconnect, + _clear, +}: { + makeWs: (callbacks: TerminalCallbacks) => WebSocket | undefined; + selected: boolean; + _reconnect: boolean; + _clear?: boolean; +}) { + const currentTheme = useComputedColorScheme(); + const theme = currentTheme === "dark" ? DARK_THEME : LIGHT_THEME; + const wsRef = useRef(null); + const fitRef = useRef(new FitAddon()); + + const resize = () => { + fitRef.current.fit(); + if (term) { + if (wsRef.current && wsRef.current.readyState === WebSocket.OPEN) { + const json = JSON.stringify({ + rows: term.rows, + cols: term.cols, + }); + const buf = new Uint8Array(json.length + 1); + for (let i = 0; i < json.length; i++) buf[i] = json.charCodeAt(i); + buf[json.length] = 0xff; // resize postfix + wsRef.current.send(buf); + } + term.focus(); + } + }; + + const onStdin = (data: string) => { + // This is data user writes to stdin + if (!wsRef.current || wsRef.current.readyState !== WebSocket.OPEN) return; + + const buf = new Uint8Array(data.length + 1); + for (let i = 0; i < data.length; i++) buf[i] = data.charCodeAt(i); + buf[data.length] = 0x01; // forward data postfix + wsRef.current.send(buf); + }; + + useEffect(resize, [selected]); + + const params: UseXTermProps = useMemo( + () => ({ + options: { + convertEol: false, + cursorBlink: true, + cursorStyle: "block", + fontFamily: "monospace", + scrollback: 5000, + // This is handled in ws on_message handler + scrollOnUserInput: false, + theme, + }, + listeners: { + onResize: resize, + onData: onStdin, + }, + addons: [fitRef.current], + }), + [theme], + ); + + const { instance: term, ref: termRef } = useXTerm(params); + + const viewport = (term as any)?._core?.viewport?._viewportElement as + | HTMLDivElement + | undefined; + + useEffect(() => { + if (!term || !viewport) return; + + let delta = 0; + term.attachCustomWheelEventHandler((e) => { + e.preventDefault(); + // This is used to make touchpad and mousewheel more similar + delta += Math.sign(e.deltaY) * Math.sqrt(Math.abs(e.deltaY)) * 20; + return false; + }); + const int = setInterval(() => { + if (Math.abs(delta) < 1) return; + viewport.scrollTop += delta; + delta = 0; + }, 100); + return () => clearInterval(int); + }, [term, termRef.current]); + + useEffect(() => { + if (!selected || !term) return; + + term.clear(); + + let debounce = -1; + + const callbacks: TerminalCallbacks = { + on_login: () => { + // console.log("Logged into terminal"); + }, + on_open: resize, + on_message: (e: MessageEvent) => { + term.write(new Uint8Array(e.data as ArrayBuffer), () => { + if (viewport) { + viewport.scrollTop = viewport.scrollHeight - viewport.clientHeight; + } + clearTimeout(debounce); + debounce = setTimeout(() => { + if (!viewport) return; + viewport.scrollTop = viewport.scrollHeight - viewport.clientHeight; + }, 500) as any; + }); + }, + on_close: () => { + term.writeln("\r\n\x1b[33m[connection closed]\x1b[0m"); + }, + }; + + const ws = makeWs(callbacks); + + if (!ws) return; + + wsRef.current = ws; + + return () => { + ws.close(); + wsRef.current = null; + }; + }, [term, viewport, makeWs, selected, _reconnect]); + + useEffect(() => term?.clear(), [_clear]); + + return ( + + + + ); +} diff --git a/ui/src/components/user/table.tsx b/ui/src/components/user/table.tsx index 930f95b6b..a2e136966 100644 --- a/ui/src/components/user/table.tsx +++ b/ui/src/components/user/table.tsx @@ -2,7 +2,7 @@ import { useUser } from "@/lib/hooks"; import { ICONS } from "@/lib/icons"; import { ConfirmButton } from "mogh_ui"; import { ConfirmModal } from "mogh_ui"; -import { DataTable } from "mogh_ui"; +import { DataTable, DataTableFeatures } from "mogh_ui"; import { StatusBadge } from "mogh_ui"; import { Badge, BoxProps } from "@mantine/core"; import { ColumnDef } from "@tanstack/react-table"; @@ -27,7 +27,11 @@ export default function UserTable({ }: UserTableProps) { const user = useUser().data; const nav = useNavigate(); - const columns: ColumnDef[] = [ + const columns: ColumnDef< + DataTableFeatures, + Types.User, + "User" | "Admin" | "Super Admin" + >[] = [ { header: "Username", accessorKey: "username" }, { header: "Type", diff --git a/ui/src/main.tsx b/ui/src/main.tsx index 71ff34d77..2b5a3f674 100644 --- a/ui/src/main.tsx +++ b/ui/src/main.tsx @@ -6,7 +6,6 @@ import { Router } from "@/router"; import { setAuthUrl, ThemeProvider } from "mogh_ui"; import { themeAdditionalColors } from "@/lib/color"; import { Notifications } from "@mantine/notifications"; -import initMonaco from "@/monaco"; import "@mantine/core/styles.css"; // ‼️ import extra package styles after core package styles @@ -17,7 +16,9 @@ import "./index.scss"; // Import mogh_ui scss import "mogh_ui/index.scss"; -initMonaco(); +// Loaded dynamically to keep monaco-editor / monaco-yaml out of the entry chunk. +// Doesn't need to be awaited - applies in background when ready. +import("@/monaco").then(({ default: initMonaco }) => initMonaco()); export const KOMODO_BASE_URL = import.meta.env.VITE_KOMODO_HOST ?? location.origin; diff --git a/ui/src/pages/containers.tsx b/ui/src/pages/containers.tsx index 9428f44e3..c744d216d 100644 --- a/ui/src/pages/containers.tsx +++ b/ui/src/pages/containers.tsx @@ -96,7 +96,6 @@ export default function Containers() { { id: "Name", accessorKey: "name", - size: 260, header: ({ column }) => ( ), @@ -111,8 +110,7 @@ export default function Containers() { { id: "Server", accessorKey: "server_id", - size: 200, - sortingFn: (a, b) => { + sortFn: (a, b) => { const sa = a.original.server_name; const sb = b.original.server_name; @@ -134,7 +132,6 @@ export default function Containers() { { id: "State", accessorKey: "state", - size: 160, header: ({ column }) => ( ), @@ -151,7 +148,6 @@ export default function Containers() { { id: "Image", accessorKey: "image", - size: 300, header: ({ column }) => ( ), @@ -167,7 +163,6 @@ export default function Containers() { { id: "Networks", accessorKey: "networks.0", - size: 200, header: ({ column }) => ( ), @@ -196,8 +191,7 @@ export default function Containers() { { id: "Ports", accessorKey: "ports.0", - size: 200, - sortingFn: (a, b) => { + sortFn: (a, b) => { const getMinHostPort = (row: typeof a) => { const ports = row.original.ports ?? []; if (!ports.length) return Number.POSITIVE_INFINITY; @@ -227,7 +221,6 @@ export default function Containers() { { id: "Volumes", accessorKey: "volumes.0", - size: 200, header: ({ column }) => ( ), diff --git a/ui/src/pages/docker/image.tsx b/ui/src/pages/docker/image.tsx index fecb1af70..7cf1c1662 100644 --- a/ui/src/pages/docker/image.tsx +++ b/ui/src/pages/docker/image.tsx @@ -176,7 +176,6 @@ function ImageInner({ { accessorKey: "CreatedBy", header: "Created By", - size: 400, }, { accessorKey: "Created", @@ -185,7 +184,6 @@ function ImageInner({ fmtDateWithMinutes( new Date(row.original.Created * 1000), ), - size: 200, }, ]} /> diff --git a/ui/src/pages/docker/network.tsx b/ui/src/pages/docker/network.tsx index 2c5e2b732..179de9822 100644 --- a/ui/src/pages/docker/network.tsx +++ b/ui/src/pages/docker/network.tsx @@ -165,7 +165,6 @@ function NetworkInner({ ) : ( "Unknown" ), - size: 200, }, { accessorKey: "IPv4Address", diff --git a/ui/src/pages/schedules.tsx b/ui/src/pages/schedules.tsx index abc05fe87..6bb959240 100644 --- a/ui/src/pages/schedules.tsx +++ b/ui/src/pages/schedules.tsx @@ -100,7 +100,6 @@ export default function Schedules() { }} columns={[ { - size: 200, id: "Name", accessorKey: "name", header: ({ column }) => ( @@ -114,7 +113,6 @@ export default function Schedules() { ), }, { - size: 200, id: "Schedule", accessorKey: "schedule", header: ({ column }) => ( @@ -122,7 +120,6 @@ export default function Schedules() { ), }, { - size: 200, id: "NextRun", accessorKey: "next_scheduled_run", header: ({ column }) => ( @@ -134,7 +131,6 @@ export default function Schedules() { : "Not Scheduled", }, { - size: 100, id: "Enabled", accessorKey: "enabled", header: ({ column }) => ( diff --git a/ui/src/pages/settings/onboarding/index.tsx b/ui/src/pages/settings/onboarding/index.tsx index 2157e545a..52aa62123 100644 --- a/ui/src/pages/settings/onboarding/index.tsx +++ b/ui/src/pages/settings/onboarding/index.tsx @@ -3,7 +3,12 @@ import TagSelector from "@/components/tags/selector"; import { useInvalidate, useRead, useSetTitle, useWrite } from "@/lib/hooks"; import ResourceSelector from "@/resources/selector"; import { ICONS } from "@/lib/icons"; -import { DataTable, fmtDateWithMinutes, SortableHeader } from "mogh_ui"; +import { + DataTable, + DataTableFeatures, + fmtDateWithMinutes, + SortableHeader, +} from "mogh_ui"; import { Badge, Group, Switch, TextInput, useMatches } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { ColumnDef } from "@tanstack/react-table"; @@ -29,13 +34,12 @@ export default function SettingsOnboardingKeys() { xl: "md", }); const columns: ( - | ColumnDef + | ColumnDef | false | undefined )[] = useMemo( () => [ { - size: 150, accessorKey: "name", header: ({ column }) => , cell: ({ row }) => ( @@ -54,7 +58,6 @@ export default function SettingsOnboardingKeys() { ), }, { - size: 150, accessorKey: "copy_server", header: "Template", cell: ({ row }) => ( @@ -69,7 +72,6 @@ export default function SettingsOnboardingKeys() { ), }, { - size: 200, accessorKey: "tags", header: "Tags", cell: ({ row }) => { @@ -116,7 +118,6 @@ export default function SettingsOnboardingKeys() { }, }, { - size: 100, accessorKey: "privileged", header: ({ column }) => ( ( @@ -156,7 +156,6 @@ export default function SettingsOnboardingKeys() { ), }, { - size: 100, accessorKey: "enabled", header: ({ column }) => ( @@ -174,7 +173,6 @@ export default function SettingsOnboardingKeys() { ), }, { - size: 150, accessorKey: "expires", header: ({ column }) => ( @@ -196,7 +194,6 @@ export default function SettingsOnboardingKeys() { ), }, { - size: 100, accessorKey: "public_key", header: "Delete", cell: ({ row }) => ( diff --git a/ui/src/pages/settings/providers/index.tsx b/ui/src/pages/settings/providers/index.tsx index f9ab70ccf..4a5cdc1a1 100644 --- a/ui/src/pages/settings/providers/index.tsx +++ b/ui/src/pages/settings/providers/index.tsx @@ -83,7 +83,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) { columns={[ { accessorKey: "domain", - size: 200, header: ({ column }) => ( ), @@ -141,7 +140,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) { }, { accessorKey: "username", - size: 200, header: ({ column }) => ( ), @@ -180,7 +178,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) { }, { accessorKey: "token", - size: 200, header: ({ column }) => ( ), @@ -220,7 +217,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) { }, { header: "Delete", - maxSize: 200, cell: ({ row }) => ( { return ; @@ -38,7 +36,6 @@ export default function SettingsTags() { }, { header: "Color", - size: 200, cell: ({ row }) => ( ), }, - { - header: "Owner", - size: 200, - cell: ({ row }) => - row.original.owner ? ( - - ) : ( - "Unknown" - ), - }, + // { + // header: "Owner", + // size: 200, + // cell: ({ row }) => + // row.original.owner ? ( + // + // ) : ( + // "Unknown" + // ), + // }, { header: "Delete", - size: 200, cell: ({ row }) => ( ( ), @@ -79,7 +78,6 @@ export default function SettingsVariables() { }, { accessorKey: "value", - size: 300, header: ({ column }) => ( ), @@ -117,7 +115,6 @@ export default function SettingsVariables() { }, { accessorKey: "description", - size: 200, header: ({ column }) => ( ), @@ -153,7 +150,6 @@ export default function SettingsVariables() { }, { header: "Secret", - size: 100, cell: ({ row }) => ( ( ), diff --git a/ui/src/pages/stats.tsx b/ui/src/pages/stats.tsx index 7a8b23a19..15b415cea 100644 --- a/ui/src/pages/stats.tsx +++ b/ui/src/pages/stats.tsx @@ -492,7 +492,7 @@ function MultiServerStatChart({ fontSize: 12, }} labelStyle={{ color: "var(--mantine-color-dimmed)" }} - labelFormatter={(label) => new Date(label).toLocaleString()} + labelFormatter={(label) => new Date(Number(label)).toLocaleString()} // List the busiest server first. itemSorter={(item) => -Number(item.value)} formatter={(value, name) => { diff --git a/ui/src/pages/terminals/index.tsx b/ui/src/pages/terminals/index.tsx index b8995d358..98d4bdb33 100644 --- a/ui/src/pages/terminals/index.tsx +++ b/ui/src/pages/terminals/index.tsx @@ -123,7 +123,6 @@ export default function Terminals() { ), }, { - size: 200, id: "Target", accessorKey: "target", header: ({ column }) => ( @@ -146,7 +145,6 @@ export default function Terminals() { ), }, { - size: 100, id: "Size", accessorKey: "stored_size_kb", header: ({ column }) => ( diff --git a/ui/src/resources/action/table.tsx b/ui/src/resources/action/table.tsx index 18288201b..948b0ea48 100644 --- a/ui/src/resources/action/table.tsx +++ b/ui/src/resources/action/table.tsx @@ -61,7 +61,7 @@ export default function ActionTable({ header: ({ column }) => ( ), - sortingFn: (a, b) => { + sortFn: (a, b) => { const sa = a.original.info.next_scheduled_run; const sb = b.original.info.next_scheduled_run; diff --git a/ui/src/resources/build/table.tsx b/ui/src/resources/build/table.tsx index a082a2367..67e687862 100644 --- a/ui/src/resources/build/table.tsx +++ b/ui/src/resources/build/table.tsx @@ -52,7 +52,6 @@ export default function BuildTable({ id: "Name", accessorKey: "name", cell: ({ row }) => , - size: 200, }, { header: ({ column }) => ( @@ -61,12 +60,10 @@ export default function BuildTable({ id: "Source", accessorKey: "info.repo", cell: ({ row }) => , - size: 200, }, { header: "Version", accessorFn: ({ info }) => fmtVersion(info.version), - size: 120, }, { id: "State", @@ -75,7 +72,6 @@ export default function BuildTable({ ), cell: ({ row }) => , - size: 120, }, { header: "Tags", diff --git a/ui/src/resources/builder/instance-type.tsx b/ui/src/resources/builder/instance-type.tsx index a1dac466a..0565fc037 100644 --- a/ui/src/resources/builder/instance-type.tsx +++ b/ui/src/resources/builder/instance-type.tsx @@ -10,7 +10,7 @@ export default function BuilderInstanceType({ id }: { id: string }) { return ( {info.instance_type?.split(",").map((id) => ( - + ))} ); diff --git a/ui/src/resources/deployment/table.tsx b/ui/src/resources/deployment/table.tsx index 88f8c5498..ed2644206 100644 --- a/ui/src/resources/deployment/table.tsx +++ b/ui/src/resources/deployment/table.tsx @@ -57,7 +57,6 @@ export default function DeploymentTable({ ), - size: 200, }, { id: "Image", @@ -72,7 +71,6 @@ export default function DeploymentTable({ }, }, }) => , - size: 200, }, { header: ({ column }) => ( @@ -80,7 +78,7 @@ export default function DeploymentTable({ ), id: "Host", accessorKey: "info.server_id", - sortingFn: (a, b) => { + sortFn: (a, b) => { const name_a = a.original.info.swarm_id ? a.original.info.swarm_name : a.original.info.server_name; @@ -102,7 +100,6 @@ export default function DeploymentTable({ ) : ( ), - size: 200, }, { id: "State", @@ -113,7 +110,6 @@ export default function DeploymentTable({ cell: ({ row }) => ( ), - size: 120, }, { header: "Tags", diff --git a/ui/src/resources/procedure/config/stage.tsx b/ui/src/resources/procedure/config/stage.tsx index 1da9547c3..31a119353 100644 --- a/ui/src/resources/procedure/config/stage.tsx +++ b/ui/src/resources/procedure/config/stage.tsx @@ -131,7 +131,6 @@ export default function ProcedureStage({ columns={[ { header: "Execution", - size: 250, cell: ({ row: { original, index } }) => ( ( ( ), - sortingFn: (a, b) => { + sortFn: (a, b) => { const sa = a.original.info.next_scheduled_run; const sb = b.original.info.next_scheduled_run; diff --git a/ui/src/resources/repo/table.tsx b/ui/src/resources/repo/table.tsx index f86db9ac7..6a6044dc6 100644 --- a/ui/src/resources/repo/table.tsx +++ b/ui/src/resources/repo/table.tsx @@ -51,7 +51,6 @@ export default function RepoTable({ id: "Name", accessorKey: "name", cell: ({ row }) => , - size: 200, }, { header: ({ column }) => ( @@ -65,7 +64,6 @@ export default function RepoTable({ link={row.original.info.repo_link} /> ), - size: 200, }, { header: ({ column }) => ( @@ -73,7 +71,6 @@ export default function RepoTable({ ), id: "Branch", accessorKey: "info.branch", - size: 200, }, { header: ({ column }) => ( @@ -82,7 +79,6 @@ export default function RepoTable({ id: "State", accessorKey: "info.state", cell: ({ row }) => , - size: 120, }, { header: "Tags", diff --git a/ui/src/resources/selector.tsx b/ui/src/resources/selector.tsx index 52d57db6b..d201077bf 100644 --- a/ui/src/resources/selector.tsx +++ b/ui/src/resources/selector.tsx @@ -123,6 +123,7 @@ export default function ResourceSelector({ {clearable && ( diff --git a/ui/src/resources/server/docker/images.tsx b/ui/src/resources/server/docker/images.tsx index 331d5eba4..b116d39f6 100644 --- a/ui/src/resources/server/docker/images.tsx +++ b/ui/src/resources/server/docker/images.tsx @@ -63,7 +63,6 @@ export default function ServerImages({ } /> ), - size: 200, }, { accessorKey: "id", diff --git a/ui/src/resources/server/docker/networks.tsx b/ui/src/resources/server/docker/networks.tsx index 2b4fb5b82..8ada2acaa 100644 --- a/ui/src/resources/server/docker/networks.tsx +++ b/ui/src/resources/server/docker/networks.tsx @@ -85,7 +85,6 @@ export default function ServerNetworks({ /> ), - size: 300, }, { accessorKey: "driver", diff --git a/ui/src/resources/server/docker/volumes.tsx b/ui/src/resources/server/docker/volumes.tsx index 146007fcd..df726a3d1 100644 --- a/ui/src/resources/server/docker/volumes.tsx +++ b/ui/src/resources/server/docker/volumes.tsx @@ -62,7 +62,6 @@ export default function ServerVolumes({ } /> ), - size: 200, }, { accessorKey: "driver", diff --git a/ui/src/resources/server/stats/containers.tsx b/ui/src/resources/server/stats/containers.tsx index fd261a342..a3a1a628e 100644 --- a/ui/src/resources/server/stats/containers.tsx +++ b/ui/src/resources/server/stats/containers.tsx @@ -58,7 +58,6 @@ export default function ServerContainerStats({ id }: { id: string }) { columns={[ { accessorKey: "name", - size: 200, header: ({ column }) => ( ), @@ -72,14 +71,12 @@ export default function ServerContainerStats({ id }: { id: string }) { }, { accessorKey: "stats.cpu_perc", - size: 100, header: ({ column }) => ( ), }, { accessorKey: "stats.mem_perc", - size: 200, header: ({ column }) => ( ), @@ -94,21 +91,18 @@ export default function ServerContainerStats({ id }: { id: string }) { }, { accessorKey: "stats.net_io", - size: 150, header: ({ column }) => ( ), }, { accessorKey: "stats.block_io", - size: 150, header: ({ column }) => ( ), }, { accessorKey: "stats.pids", - size: 100, header: ({ column }) => ( ), diff --git a/ui/src/resources/server/stats/historical.tsx b/ui/src/resources/server/stats/historical.tsx index 65e222f7e..c3cf78f06 100644 --- a/ui/src/resources/server/stats/historical.tsx +++ b/ui/src/resources/server/stats/historical.tsx @@ -335,7 +335,7 @@ function StatChart({ fontSize: 12, }} labelStyle={{ color: "var(--mantine-color-dimmed)" }} - labelFormatter={(label) => new Date(label).toLocaleString()} + labelFormatter={(label) => new Date(Number(label)).toLocaleString()} // Memory tooltip lists top-of-stack first, matching the chart. itemSorter={ isMemory diff --git a/ui/src/resources/server/stats/index.tsx b/ui/src/resources/server/stats/index.tsx index ec344f413..c357919b8 100644 --- a/ui/src/resources/server/stats/index.tsx +++ b/ui/src/resources/server/stats/index.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from "react"; +import { lazy, ReactNode, Suspense } from "react"; import { usePermissions, useRead } from "@/lib/hooks"; import { Types } from "komodo_client"; import { Section } from "mogh_ui"; @@ -6,10 +6,12 @@ import ServerProcesses from "./processes"; import ServerContainerStats from "./containers"; import ServerDisks from "./disks"; import ServerCurrentStats from "./current"; -import ServerHistoricalStats from "./historical"; import ServerSystemInfo from "./system-info"; import { useIsServerAvailable } from "../hooks"; +// Loaded lazily to keep recharts out of the entry chunk. +const ServerHistoricalStats = lazy(() => import("./historical")); + export default function ServerStats({ id, titleOther, @@ -35,7 +37,9 @@ export default function ServerStats({ - + + + diff --git a/ui/src/resources/server/table/standard.tsx b/ui/src/resources/server/table/standard.tsx index ec04c451d..9d4d7bc1e 100644 --- a/ui/src/resources/server/table/standard.tsx +++ b/ui/src/resources/server/table/standard.tsx @@ -53,7 +53,6 @@ export default function StandardServerTable({ }} columns={[ { - size: 250, id: "Name", accessorKey: "name", header: ({ column }) => ( @@ -64,12 +63,11 @@ export default function StandardServerTable({ ), }, { - size: 100, accessorKey: "id", // The resource count is computed on the client, // it cannot be sorted server side. enableSorting: !onServerSort, - sortingFn: (a, b) => { + sortFn: (a, b) => { const sa = resourcesCount(a.original.id); const sb = resourcesCount(b.original.id); @@ -89,7 +87,6 @@ export default function StandardServerTable({ }, }, { - size: 200, id: "Region", accessorKey: "info.region", header: ({ column }) => ( @@ -97,7 +94,6 @@ export default function StandardServerTable({ ), }, { - size: 150, id: "Version", accessorKey: "info.version", header: ({ column }) => ( @@ -106,7 +102,6 @@ export default function StandardServerTable({ // cell: ({ row }) => , }, { - size: 150, id: "State", accessorKey: "info.state", header: ({ column }) => ( diff --git a/ui/src/resources/stack/services.tsx b/ui/src/resources/stack/services.tsx index 3b197b352..4b43e969b 100644 --- a/ui/src/resources/stack/services.tsx +++ b/ui/src/resources/stack/services.tsx @@ -55,7 +55,6 @@ function StackServicesSwarm({ columns={[ { accessorKey: "service", - size: 200, header: ({ column }) => ( ), @@ -65,7 +64,6 @@ function StackServicesSwarm({ }, { accessorKey: "swarm_service.State", - size: 160, header: ({ column }) => ( ), @@ -87,14 +85,12 @@ function StackServicesSwarm({ }, { accessorKey: "swarm_service.Runtime", - size: 300, header: ({ column }) => ( ), }, { accessorKey: "swarm_service.Image", - size: 300, header: ({ column }) => ( ), @@ -105,7 +101,6 @@ function StackServicesSwarm({ }, { accessorKey: "swarm_service.Replicas", - size: 300, header: ({ column }) => ( ), @@ -132,7 +127,6 @@ function StackServicesServer({ columns={[ { accessorKey: "service", - size: 200, header: ({ column }) => ( ), @@ -142,7 +136,6 @@ function StackServicesServer({ }, { accessorKey: "container.state", - size: 160, header: ({ column }) => ( ), @@ -164,7 +157,6 @@ function StackServicesServer({ }, { accessorKey: "container.image", - size: 300, header: ({ column }) => ( ), @@ -181,7 +173,6 @@ function StackServicesServer({ }, { accessorKey: "container.networks.0", - size: 200, header: ({ column }) => ( ), @@ -215,7 +206,6 @@ function StackServicesServer({ }, { accessorKey: "container.ports.0", - size: 200, header: ({ column }) => ( ), diff --git a/ui/src/resources/stack/table.tsx b/ui/src/resources/stack/table.tsx index a8e8391e2..e960f5696 100644 --- a/ui/src/resources/stack/table.tsx +++ b/ui/src/resources/stack/table.tsx @@ -59,7 +59,6 @@ export default function StackTable({ ); }, - size: 200, }, { header: ({ column }) => ( @@ -68,7 +67,6 @@ export default function StackTable({ id: "Source", accessorKey: "info.repo", cell: ({ row }) => , - size: 200, }, { header: ({ column }) => ( @@ -76,7 +74,7 @@ export default function StackTable({ ), id: "Host", accessorKey: "info.server_id", - sortingFn: (a, b) => { + sortFn: (a, b) => { const name_a = a.original.info.swarm_id ? a.original.info.swarm_name : a.original.info.server_name; @@ -98,7 +96,6 @@ export default function StackTable({ ) : ( ), - size: 200, }, { id: "State", @@ -107,7 +104,6 @@ export default function StackTable({ ), cell: ({ row }) => , - size: 120, }, { header: "Tags", diff --git a/ui/src/resources/swarm/docker/nodes/index.tsx b/ui/src/resources/swarm/docker/nodes/index.tsx index c58a9a4f8..5e04e65f5 100644 --- a/ui/src/resources/swarm/docker/nodes/index.tsx +++ b/ui/src/resources/swarm/docker/nodes/index.tsx @@ -67,7 +67,6 @@ export default function SwarmNodes({ name={row.original.Hostname} /> ), - size: 200, }, { accessorKey: "ID", @@ -75,7 +74,6 @@ export default function SwarmNodes({ ), cell: ({ row }) => row.original.ID ?? "Unknown", - size: 200, }, { accessorKey: "Role", @@ -149,7 +147,6 @@ export default function SwarmNodes({ row.original.UpdatedAt ? new Date(row.original.UpdatedAt).toLocaleString() : "Unknown", - size: 200, }, // { // accessorKey: "CreatedAt", diff --git a/ui/src/resources/swarm/docker/secrets.tsx b/ui/src/resources/swarm/docker/secrets.tsx index 59ecf1c8b..eed55f182 100644 --- a/ui/src/resources/swarm/docker/secrets.tsx +++ b/ui/src/resources/swarm/docker/secrets.tsx @@ -61,7 +61,6 @@ export default function SwarmSecrets({ } /> ), - size: 200, }, { accessorKey: "ID", @@ -69,7 +68,6 @@ export default function SwarmSecrets({ ), cell: ({ row }) => row.original.ID ?? "Unknown", - size: 200, }, { accessorKey: "Driver", @@ -100,7 +98,6 @@ export default function SwarmSecrets({ row.original.UpdatedAt ? new Date(row.original.UpdatedAt).toLocaleString() : "Unknown", - size: 200, }, { accessorKey: "CreatedAt", @@ -111,7 +108,6 @@ export default function SwarmSecrets({ row.original.CreatedAt ? new Date(row.original.CreatedAt).toLocaleString() : "Unknown", - size: 200, }, ]} /> diff --git a/ui/src/resources/swarm/table.tsx b/ui/src/resources/swarm/table.tsx index 1bf080514..0d58c3c45 100644 --- a/ui/src/resources/swarm/table.tsx +++ b/ui/src/resources/swarm/table.tsx @@ -50,7 +50,6 @@ export default function SwarmTable({ id: "Name", accessorKey: "name", cell: ({ row }) => , - size: 200, }, { header: ({ column }) => ( @@ -59,7 +58,6 @@ export default function SwarmTable({ id: "State", accessorKey: "info.state", cell: ({ row }) => , - size: 120, }, { header: "Tags", diff --git a/ui/src/resources/sync/table.tsx b/ui/src/resources/sync/table.tsx index 4599ec120..8fdd7f436 100644 --- a/ui/src/resources/sync/table.tsx +++ b/ui/src/resources/sync/table.tsx @@ -52,7 +52,6 @@ export default function ResourceSyncTable({ cell: ({ row }) => ( ), - size: 200, }, { header: ({ column }) => ( @@ -61,7 +60,6 @@ export default function ResourceSyncTable({ id: "Source", accessorKey: "info.repo", cell: ({ row }) => , - size: 200, }, { header: ({ column }) => ( @@ -69,7 +67,6 @@ export default function ResourceSyncTable({ ), id: "Branch", accessorKey: "info.branch", - size: 200, }, { header: ({ column }) => ( @@ -80,7 +77,6 @@ export default function ResourceSyncTable({ cell: ({ row }) => ( ), - size: 120, }, { header: "Tags", diff --git a/ui/vite.config.ts b/ui/vite.config.ts index 58e1051ab..e2cfb73cb 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -13,7 +13,7 @@ export default defineConfig({ }, resolve: { alias: [ - { find: "@", replacement: path.resolve(__dirname, "./src") }, + { find: "@", replacement: path.resolve(import.meta.dirname, "./src") }, // monaco-editor >= 0.53 has an exports map ("./*.js": "./esm/vs/*.js"), // so legacy deep imports like "monaco-editor/esm/vs/..." no longer // resolve. monaco-worker-manager (used by monaco-yaml's worker) still @@ -40,7 +40,14 @@ export default defineConfig({ "react-router-dom", ], }, - optimizeDeps: { exclude: ["mogh_ui"] }, + optimizeDeps: { + exclude: ["mogh_ui"], + // path-browserify is a CJS dep of monaco-yaml's yaml.worker. Vite's dep + // scanner doesn't traverse `?worker` graphs, so without this it gets + // served raw ("module is not defined" inside the worker). Force it + // through prebundling to get CJS -> ESM interop. + include: ["path-browserify"], + }, css: { preprocessorOptions: { scss: { diff --git a/ui/yarn.lock b/ui/yarn.lock index a441a5469..d0a0ab5be 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -12,28 +12,6 @@ resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.11.0.tgz#3ec3985c9074b23aea337957225fe15a0e845f8e" integrity sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ== -"@emnapi/core@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.1.tgz#b9e1064f3a6b1631e241e638eb48d736bfd372a6" - integrity sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ== - dependencies: - "@emnapi/wasi-threads" "1.2.2" - tslib "^2.4.0" - -"@emnapi/runtime@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.1.tgz#58f1f3d5d81a9b12f793ab688c96371901027c24" - integrity sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz#4c93becf5bfa3b13d1bbdcc06aee38321ad8139a" - integrity sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA== - dependencies: - tslib "^2.4.0" - "@floating-ui/core@^1.7.5": version "1.7.5" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622" @@ -70,50 +48,50 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== -"@mantine/core@^9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/core/-/core-9.4.1.tgz#071684a01ad302116bd3ed2d3727d873f7baabdd" - integrity sha512-lZWEICrum4+vwKxzh/mk4RB1N6BqZ0Cshdl6lhm7OYLiQzmOaxKtOgyaWz+vr65G8mqTXjalZalB+wmMVBYK2Q== +"@mantine/core@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-9.5.1.tgz#954587a496244accf0b7d388f15b8e42dbcecfa2" + integrity sha512-3olDOYJBfW4kR37Aqdy/+FnYG7iNb5SPzOGeCp9dDxnt65K94sEqETDnXGJptOMO2xLm4KLJ/eBt3IIhJA7Z4Q== dependencies: "@floating-ui/react" "^0.27.19" clsx "^2.1.1" react-number-format "^5.4.5" react-remove-scroll "^2.7.2" - type-fest "^5.7.0" + type-fest "^5.8.0" -"@mantine/form@^9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/form/-/form-9.4.1.tgz#e5ef1f08e58ecdcbcea7e77eb910e5770d8cd5fd" - integrity sha512-e4tqC/D8ii7maPySWIWY306MNljPRprHPhu0/jaZrX7sRyJy+C8V9aU+ZFKYliM1CeiH1UX88+q4hWFUWVEdQw== +"@mantine/form@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/form/-/form-9.5.1.tgz#bfab7ec8a09c0e77ca3eebf84c68e15a2bab25d7" + integrity sha512-WsMZGBTsoG2Y/K+6QK0+GmsJxq5KzWHIzo65lRpkq/SwdenV9G+3m0LstlhI9i2/wQF83GfwP7mCbKMfzf00Eg== dependencies: "@standard-schema/spec" "^1.1.0" fast-deep-equal "^3.1.3" klona "^2.0.6" -"@mantine/hooks@^9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-9.4.1.tgz#3d04f2f1d09df3ba962aa2724898fa95a2150973" - integrity sha512-eTI8wmzPx3r98zgKIEuvukmoGTHBhmtI6+9E6o2DbTmEU2eM1bCdjE2vFdf0op2AlRO0KEYEcZhNQi4T/SJk0A== +"@mantine/hooks@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-9.5.1.tgz#54b94e76ca957636d54cf764037408485a65a899" + integrity sha512-2sK9OdWvrzKBOuWxLfQA5qcAJzxpzqNlKumaP7Uq0i7LDBQeY/sYgNiBWLwtW+iZw6fFXwPf0nI7q5VVpvqnNQ== -"@mantine/notifications@^9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-9.4.1.tgz#c730908c11b59f09502153c573d36a05513b34c6" - integrity sha512-Sm1g8E8RkFmesxpNz9zFvOjkTVxOa7dJJjMGoHNIXH+9/wO0s9kInny4mVnxTbLJJsD6nTqIQlk1v8tq2C4Ftw== +"@mantine/notifications@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-9.5.1.tgz#2a09c8027ec06365213869fadb3057d85df17e82" + integrity sha512-/MIGWag8U20HTM4gOGSNVhmQ0n6YM2gdSR1NbtBffSh77nuzwPjr68UmpMc2WHFMi8OBlrSIcw9Xpe3YPfgnvQ== dependencies: - "@mantine/store" "9.4.1" + "@mantine/store" "9.5.1" react-transition-group "4.4.5" -"@mantine/spotlight@^9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-9.4.1.tgz#f67c89bb2fa4a68c47385439c95fd892e74dfd60" - integrity sha512-gJ+7DdnGULeobtGXVGbVgvJSG3TeecxLXNxzpZo+ohl1OetPftCBGJOUrX2tYOOC6nJE1eHSIr/kpB31YIRjhQ== +"@mantine/spotlight@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-9.5.1.tgz#8474b951aca217c026e109a82e768ff95c3bb758" + integrity sha512-fXiaFrlIjhoFh61IbM+tRP7mg1V20mSTVh2AJi4rm/BnoBvnd4fPw33Wdg+O3c5L9HGzPQdA9SHJ6rdDNueoRw== dependencies: - "@mantine/store" "9.4.1" + "@mantine/store" "9.5.1" -"@mantine/store@9.4.1": - version "9.4.1" - resolved "https://registry.yarnpkg.com/@mantine/store/-/store-9.4.1.tgz#c071271624c70acca1cb432d8c26d8a10c2ff452" - integrity sha512-/DCZq0aqqIdm03J0RJ7pbzoau2cwY8ndSOjskHOKHhTeWMnOBdCKXA3oMO5aIDldDqJ9T7Io4Boh4Pt461zNQw== +"@mantine/store@9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@mantine/store/-/store-9.5.1.tgz#873cf6350998ffb8cc96e97f32689def7a69f539" + integrity sha512-nDmA9S+qnQQ61KYgph06Wt2cx1tj3Z6eeyK3HvFeuLb5FcGycbITsVy/+3LltH2qdqkpNeAA9wQ926NFjn5hvA== "@monaco-editor/loader@^1.5.0": version "1.7.0" @@ -129,17 +107,10 @@ dependencies: "@monaco-editor/loader" "^1.5.0" -"@napi-rs/wasm-runtime@^1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz#ed33806d0f9be98dc76d0c3d4fd872fda701b5d5" - integrity sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg== - dependencies: - "@tybys/wasm-util" "^0.10.3" - -"@oxc-project/types@=0.137.0": - version "0.137.0" - resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.137.0.tgz#56e77f8bb221fa05f18b1cd34d73f94f0954a773" - integrity sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA== +"@oxc-project/types@=0.143.0": + version "0.143.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.143.0.tgz#c3e4f3178b7b54e4dd194eac6d45258a60f0092b" + integrity sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA== "@parcel/watcher-android-arm64@2.5.6": version "2.5.6" @@ -242,84 +213,75 @@ redux-thunk "^3.1.0" reselect "^5.1.0" -"@rolldown/binding-android-arm64@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz#cc6153029c3d9afc9caaae2dc362d899ae94ac4f" - integrity sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g== +"@rolldown/binding-android-arm64@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz#001b8b0b01844701efda1bb6bed84b681c4a488b" + integrity sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw== -"@rolldown/binding-darwin-arm64@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz#3af681a5d7610340257b3ac7753353b23e884765" - integrity sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw== +"@rolldown/binding-darwin-arm64@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz#5e87c602ed634a6fef092e2162e24fbfb881c4ec" + integrity sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA== -"@rolldown/binding-darwin-x64@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz#80ada35e9f35efb7e48a887444ce2052f615d645" - integrity sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw== +"@rolldown/binding-darwin-x64@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz#f32e0b286714bd03a421d693415d05d97d265b77" + integrity sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA== -"@rolldown/binding-freebsd-x64@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz#65b2bbb82f005f08aeeff0b6d81e19be68360201" - integrity sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw== +"@rolldown/binding-freebsd-x64@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz#5f38ad5761b6b7b21b57a99566bb52634c60ab19" + integrity sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg== -"@rolldown/binding-linux-arm-gnueabihf@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz#7e8d34ad0c7bcfd3baed268e9798571e3888ca71" - integrity sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg== +"@rolldown/binding-linux-arm-gnueabihf@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz#ab4dcd07f1bd88e8d659ae0c3bb9d2f290adb897" + integrity sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw== -"@rolldown/binding-linux-arm64-gnu@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz#52bbf400ff219bda1e56c042160d96deb08bfecc" - integrity sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA== +"@rolldown/binding-linux-arm64-gnu@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz#d279b7016039a725fb66d82784b9841f42df83da" + integrity sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw== -"@rolldown/binding-linux-arm64-musl@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz#9e82899186f73329f3d8155fa1618ae2e86ffa2a" - integrity sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w== +"@rolldown/binding-linux-arm64-musl@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz#d08bbc93d2742214548c5adf7df7788944e5a89a" + integrity sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q== -"@rolldown/binding-linux-ppc64-gnu@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz#050520177316586ccad816eb466ea11015e17ba7" - integrity sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw== +"@rolldown/binding-linux-ppc64-gnu@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz#6418e63745b3193f26ab3bb88744b3a4a1356d7c" + integrity sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w== -"@rolldown/binding-linux-s390x-gnu@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz#50efa7b20219c6e31235fded0fd3427f36123e5a" - integrity sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA== +"@rolldown/binding-linux-s390x-gnu@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz#77ec30d0704cf4eb1cb4a63f501c9852c6728cf4" + integrity sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg== -"@rolldown/binding-linux-x64-gnu@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz#c5973445113dff50d4077d0edaa4b8a69533dc6f" - integrity sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg== +"@rolldown/binding-linux-x64-gnu@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz#3b9b6e0dd3e86c597f42858748ca25f1dfd58ed8" + integrity sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w== -"@rolldown/binding-linux-x64-musl@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz#ddb023f7fc98ccbb8c1b683545216ca7b4e7ebdd" - integrity sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g== +"@rolldown/binding-linux-x64-musl@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz#f78033c592c8bd2af48284a45f8e4baaa0befbf5" + integrity sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A== -"@rolldown/binding-openharmony-arm64@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz#832a6da3472722427c73d178c75681858b76aeed" - integrity sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ== +"@rolldown/binding-openharmony-arm64@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz#36e951f5a6fca922a5205e283d0a82b9f98199ca" + integrity sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug== -"@rolldown/binding-wasm32-wasi@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz#256cdcc06ad9ada611606526f319642fc0830b0f" - integrity sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg== - dependencies: - "@emnapi/core" "1.11.1" - "@emnapi/runtime" "1.11.1" - "@napi-rs/wasm-runtime" "^1.1.6" +"@rolldown/binding-win32-arm64-msvc@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz#c1e494ac47e13bd857fca0b3ad59c33580241f7e" + integrity sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw== -"@rolldown/binding-win32-arm64-msvc@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz#e735c7024a5e17ebaf13689112fa0bdfc6886c38" - integrity sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g== - -"@rolldown/binding-win32-x64-msvc@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz#f06c09db5c8ad4b6904b4d406c9b6f17f392b5c6" - integrity sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA== +"@rolldown/binding-win32-x64-msvc@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz#b0effffcd6872f8a021373eb437916b1b52283a4" + integrity sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg== "@rolldown/pluginutils@^1.0.0", "@rolldown/pluginutils@^1.0.1": version "1.0.1" @@ -336,36 +298,45 @@ resolved "https://registry.yarnpkg.com/@standard-schema/utils/-/utils-0.3.0.tgz#3d5e608f16c2390c10528e98e59aef6bf73cae7b" integrity sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g== -"@tanstack/query-core@5.101.2": - version "5.101.2" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.101.2.tgz#c901fb76b68169ff5e1e44017404e7e2e90ce1af" - integrity sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw== +"@tanstack/query-core@5.101.4": + version "5.101.4" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.101.4.tgz#c01b4289b3094144d8ef96235aa506242cf83efa" + integrity sha512-gNwcvOJcRbLWPOLG/2OBm+zM+Yv+MKsXKEOWC57USuZDEsI71hEErQsiEGx5wX9rzWWkfwM0fVSPoiIFSsxfiw== -"@tanstack/react-query@^5.101.2": - version "5.101.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.101.2.tgz#d886331bcd29df84bc04c45d93192b8207d17c7f" - integrity sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg== +"@tanstack/react-query@^5.101.4": + version "5.101.4" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.101.4.tgz#044137754d79aaa30a82f6e6c42488be79c86ea7" + integrity sha512-yRg2pfOCxIs4ZJW3XYYHU/WgtD04FHSnfHlpRT7h7pR77hwkdRG4wxbKe4aq6P0RvXUTBSQpQeadS1SUYUe+KA== dependencies: - "@tanstack/query-core" "5.101.2" + "@tanstack/query-core" "5.101.4" -"@tanstack/react-table@^8.21.3": - version "8.21.3" - resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.21.3.tgz#2c38c747a5731c1a07174fda764b9c2b1fb5e91b" - integrity sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww== +"@tanstack/react-store@^0.11.0": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-store/-/react-store-0.11.1.tgz#e1e58036ffffa58f5b5d8826c2389f97502fac2c" + integrity sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ== dependencies: - "@tanstack/table-core" "8.21.3" + "@tanstack/store" "0.11.1" + use-sync-external-store "^1.6.0" -"@tanstack/table-core@8.21.3": - version "8.21.3" - resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.3.tgz#2977727d8fc8dfa079112d9f4d4c019110f1732c" - integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== - -"@tybys/wasm-util@^0.10.3": - version "0.10.3" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.3.tgz#015cba9e9dd47ce14d03d2a8c5d547bfb169665d" - integrity sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg== +"@tanstack/react-table@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-9.1.2.tgz#6848c879ec5379c80b107bc1c19c68110bfb8a1f" + integrity sha512-YQPZFJ1nIi/bjjwsPZVouABgahDcl7Gdm33CdTStUJBn0DjEVJ2uhSTVmIoWt9MVKdQziXGAsXipSzy949Hygg== dependencies: - tslib "^2.4.0" + "@tanstack/react-store" "^0.11.0" + "@tanstack/table-core" "9.1.2" + +"@tanstack/store@0.11.1", "@tanstack/store@^0.11.0": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@tanstack/store/-/store-0.11.1.tgz#063f634fe3cc925ad83704581a7be75301bec612" + integrity sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA== + +"@tanstack/table-core@9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-9.1.2.tgz#75fded10e495fc7215380201f30a05300b157355" + integrity sha512-ONpWQeass1sfg80CWF1NSwQ8r3GiqxA2lT/EdqIcrDEPZ0Z+0mM94eQoFYLPN0Kztzj8TQVb2+PrSZSItqA61g== + dependencies: + "@tanstack/store" "^0.11.0" "@types/d3-array@^3.0.3": version "3.2.2" @@ -418,22 +389,22 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== -"@types/node@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.1.tgz#4a60e2c7a6d68bd261e265f8983bfe1601263ce3" - integrity sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw== +"@types/node@^26.2.0": + version "26.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.2.0.tgz#5a4875a862fda8fdc57de8faa579bb81ecba1685" + integrity sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg== dependencies: undici-types "~8.3.0" -"@types/react-dom@^19.2.3": - version "19.2.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.3.tgz#c1e305d15a52a3e508d54dca770d202cb63abf2c" - integrity sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ== +"@types/react-dom@^19.2.4": + version "19.2.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.4.tgz#165ab5e97dfb081847b0f6755060cf40a3f6666b" + integrity sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw== -"@types/react@^19.2.17": - version "19.2.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" - integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== +"@types/react@^19.2.18": + version "19.2.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.18.tgz#eb0b6a1fb635d1a9692d5f84a3495bd8ad153707" + integrity sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w== dependencies: csstype "^3.2.2" @@ -559,10 +530,10 @@ resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz#cf3b7b0d6ce5635daca4c8e01c189cdcde47ec3c" integrity sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g== -"@vitejs/plugin-react@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz#55f1d7f558534d10aef03c007dc208b7c3771ce4" - integrity sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg== +"@vitejs/plugin-react@^6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz#48ee7951093ff9054952cff9d64e874355cde372" + integrity sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA== dependencies: "@rolldown/pluginutils" "^1.0.1" @@ -738,11 +709,25 @@ dom-serializer@^2.0.0: domhandler "^5.0.2" entities "^4.2.0" +dom-serializer@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-3.1.1.tgz#54be70ee4fcc2da010f488165e62294798dc57d3" + integrity sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw== + dependencies: + domelementtype "^3.0.0" + domhandler "^6.0.0" + entities "^8.0.0" + domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-3.0.0.tgz#e6c0a24bd39ca5eb7ea67a98d2f699497d7bcc55" + integrity sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg== + domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" @@ -750,6 +735,13 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +domhandler@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-6.0.1.tgz#75f351a03a6e10c35e08418f9cf0d287e00797cf" + integrity sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg== + dependencies: + domelementtype "^3.0.0" + dompurify@3.4.8: version "3.4.8" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.8.tgz#6c54f8c207160e7f83fcb7f4fd05a82ac36b1cdc" @@ -766,6 +758,15 @@ domutils@^3.2.2: domelementtype "^2.3.0" domhandler "^5.0.3" +domutils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-4.0.2.tgz#0c1ac1fdbe8f554a60a6f5eb143ee85630327c94" + integrity sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA== + dependencies: + dom-serializer "^3.0.0" + domelementtype "^3.0.0" + domhandler "^6.0.0" + dotenv@^17.4.2: version "17.4.2" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-17.4.2.tgz#c07e54a746e11eba021dd9e1047ced5afdc1c034" @@ -786,6 +787,11 @@ entities@^7.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b" integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== +entities@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-8.0.0.tgz#c1df5fe3602429747fa233d0dd26f142f0ce4743" + integrity sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA== + es-toolkit@^1.39.3: version "1.44.0" resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.44.0.tgz#b363b436b6115c3cc9cc21954c1e08ecdaa51c8c" @@ -826,7 +832,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -htmlparser2@^10.1, htmlparser2@^10.1.0: +htmlparser2@^10.1: version "10.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.1.0.tgz#fe3f2e12c73b6e462d4e10395db9c1119e4d6ae4" integrity sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ== @@ -836,6 +842,16 @@ htmlparser2@^10.1, htmlparser2@^10.1.0: domutils "^3.2.2" entities "^7.0.1" +htmlparser2@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-12.0.0.tgz#6a679d0f57c525990f9cbad8a585b320ecc6d198" + integrity sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw== + dependencies: + domelementtype "^3.0.0" + domhandler "^6.0.0" + domutils "^4.0.2" + entities "^8.0.0" + immer@^11.0.0: version "11.1.4" resolved "https://registry.yarnpkg.com/immer/-/immer-11.1.4.tgz#37aee86890b134a8f1a2fadd44361fb86c6ae67e" @@ -873,20 +889,20 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -jotai-family@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jotai-family/-/jotai-family-1.0.2.tgz#11d9f88a39579aaf0d80dcd8826b8c32cf6b5269" - integrity sha512-U1aTMGxmsmz2Z8gaJD1/ljmMnsmG4/dqrcsfwGbjWV7p6boB9Vy3+75YwUpwPj7GbLNJk9O8rl1VNi8d7+6Rxw== +jotai-family@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jotai-family/-/jotai-family-1.1.0.tgz#87eab9c6e8b241f3bc39b6f04a3b55247ebd40bb" + integrity sha512-T1ACRsLnN5Mu0B8/DIWUW1hW7x1RmpBprm/+CWmUTf4ZZUmIFEQpBJ9PNQtXPjdUD2uu8RvwBxr7nJPdCw5BXg== jotai-location@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/jotai-location/-/jotai-location-0.6.2.tgz#7f90ec768d9aca62ce7d509baa771848225edb39" integrity sha512-D+fqGNNgPHpehOsGBsYsS7F3kNgml099MJrGYt8YlLumcnoTVrBdcO+Y11KyMlyzwPihEN0HPUgke9Iihz9OXw== -jotai@^2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.1.tgz#473274f1b78c60acce1b868be5655b3c706dec8e" - integrity sha512-dnuKfU/GLi8B28RRMjQ3AfoN7kfzP8o41+AX2FmITZqEMY8PHnjABq+VkEooomLwYaGjda+pgy0yFSjaHX/ZPg== +jotai@^2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.2.tgz#fccdc02ee68b314c2a723a8b9c35de6fcca5e644" + integrity sha512-aHB4CNb9qRcyf0mwSB6EO5bCGAjx8cTwFgOFCE2leOnTzqACbnSWG8XoWB3LxCT1Qoj03I1OWAHszDmN4uHb/w== "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" @@ -915,79 +931,79 @@ launder@^1.7.1: dependencies: dayjs "^1.11.7" -lightningcss-android-arm64@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968" - integrity sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg== +lightningcss-android-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907" + integrity sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg== -lightningcss-darwin-arm64@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz#50b71871b01c8199584b649e292547faea7af9b5" - integrity sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ== +lightningcss-darwin-arm64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6" + integrity sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg== -lightningcss-darwin-x64@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e" - integrity sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w== +lightningcss-darwin-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361" + integrity sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ== -lightningcss-freebsd-x64@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575" - integrity sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig== +lightningcss-freebsd-x64@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b" + integrity sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg== -lightningcss-linux-arm-gnueabihf@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d" - integrity sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw== +lightningcss-linux-arm-gnueabihf@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de" + integrity sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ== -lightningcss-linux-arm64-gnu@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335" - integrity sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ== +lightningcss-linux-arm64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa" + integrity sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg== -lightningcss-linux-arm64-musl@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133" - integrity sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg== +lightningcss-linux-arm64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6" + integrity sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ== -lightningcss-linux-x64-gnu@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6" - integrity sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA== +lightningcss-linux-x64-gnu@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55" + integrity sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg== -lightningcss-linux-x64-musl@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b" - integrity sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg== +lightningcss-linux-x64-musl@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf" + integrity sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw== -lightningcss-win32-arm64-msvc@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38" - integrity sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw== +lightningcss-win32-arm64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d" + integrity sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA== -lightningcss-win32-x64-msvc@1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a" - integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q== +lightningcss-win32-x64-msvc@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz#e343ae152eed3609dc6e11949d1a3bf39a1c946f" + integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA== -lightningcss@^1.32.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.32.0.tgz#b85aae96486dcb1bf49a7c8571221273f4f1e4a9" - integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ== +lightningcss@^1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.33.0.tgz#c08867d71a79385c6e190214fd72fef3e5f95f0b" + integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA== dependencies: detect-libc "^2.0.3" optionalDependencies: - lightningcss-android-arm64 "1.32.0" - lightningcss-darwin-arm64 "1.32.0" - lightningcss-darwin-x64 "1.32.0" - lightningcss-freebsd-x64 "1.32.0" - lightningcss-linux-arm-gnueabihf "1.32.0" - lightningcss-linux-arm64-gnu "1.32.0" - lightningcss-linux-arm64-musl "1.32.0" - lightningcss-linux-x64-gnu "1.32.0" - lightningcss-linux-x64-musl "1.32.0" - lightningcss-win32-arm64-msvc "1.32.0" - lightningcss-win32-x64-msvc "1.32.0" + lightningcss-android-arm64 "1.33.0" + lightningcss-darwin-arm64 "1.33.0" + lightningcss-darwin-x64 "1.33.0" + lightningcss-freebsd-x64 "1.33.0" + lightningcss-linux-arm-gnueabihf "1.33.0" + lightningcss-linux-arm64-gnu "1.33.0" + lightningcss-linux-arm64-musl "1.33.0" + lightningcss-linux-x64-gnu "1.33.0" + lightningcss-linux-x64-musl "1.33.0" + lightningcss-win32-arm64-msvc "1.33.0" + lightningcss-win32-x64-msvc "1.33.0" loose-envify@^1.4.0: version "1.4.0" @@ -996,27 +1012,27 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lucide-react@^1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.22.0.tgz#f2930b21a1d3941fbee8a1017a5973d06ec4860b" - integrity sha512-c9o3l0PiNcgOQDW4F31BEYHudE7kgxVt3o30qMl36ZPwTxXlGB4QnLilhERvVM4uh/pl5MDyY1/gzZSYcHDtBg== +lucide-react@^1.31.0: + version "1.31.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.31.0.tgz#1e758f3f86bc0456957d447e6e550b645d96e255" + integrity sha512-G8u2eEtoHUnUa9f8lbvqDhCiORMnYLdUEo06EEG9MQvHQrInKcX3Pa2TH39MM5qyzRcWETxB0+aOwAPI1g1kEg== marked@14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/marked/-/marked-14.0.0.tgz#79a1477358a59e0660276f8fec76de2c33f35d83" integrity sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ== -mogh_auth_client@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.7.0.tgz#a016c8dafd0f73633098d41aa95889c444e481d9" - integrity sha512-v4TJVNIiFYBLd70yGw/eS37E15he4I5w3poj5X7W75D+m6ry9gbhtlePp5elRbqjDZ/WXkOZ/XYCHqGYb/PQ2A== +mogh_auth_client@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/mogh_auth_client/-/mogh_auth_client-1.7.1.tgz#98469ee4cff4c47c991235acd0b96c1b27c5a1e4" + integrity sha512-IWT7ET5QmqNGqrGgNy4oyF4LMb1TeLXQhDw6AXzd5S/WfWC9JJx7xjnIdJFqXpl3zoZ+va773RrPB5ufGPkVVQ== dependencies: jwt-decode "^4.0.0" -mogh_ui@^0.7.6: - version "0.7.6" - resolved "https://registry.yarnpkg.com/mogh_ui/-/mogh_ui-0.7.6.tgz#9c9ab00f6d15a8fc6b31b3176a794eb3ef806bf2" - integrity sha512-THEdqJ/3y6RnHn3eWqxbKj0STx6aUAI4dsWekJFTrGIbE/rEBvWl449eo0v+ZpH2dgo9gIlkwDXBYx8xyBuzLA== +mogh_ui@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/mogh_ui/-/mogh_ui-1.1.1.tgz#762623631587474e5532648b4d35c0cbe4bf3bfd" + integrity sha512-hxVg9cuuRTm9e9UEBB9fNPi/NARa5h/pSl+FvPM9mzNfDIsimQ6YWg1g7lNfkd/EdKg9W9UX+9Ud3HactLLxFA== monaco-editor@^0.56.0: version "0.56.0" @@ -1076,10 +1092,10 @@ nanoid@^3.3.11: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== -nanoid@^3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05" - integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== +nanoid@^3.3.17: + version "3.3.17" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.17.tgz#f1c3aa253c52547956a52c50bff754316f61037a" + integrity sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g== node-addon-api@^7.0.0: version "7.1.1" @@ -1116,6 +1132,11 @@ picomatch@^4.0.4: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== +picomatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.5.tgz#51ea57a17d86f605f81039595fbc40ed06a55fab" + integrity sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A== + postcss-js@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.1.0.tgz#003b63c6edde948766e40f3daf7e997ae43a5ce6" @@ -1170,12 +1191,12 @@ postcss@^8.3.11: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.5.16: - version "8.5.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.16.tgz#1230ce0b5df354c24c0ea45f99ce5f6a88279d28" - integrity sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg== +postcss@^8.5.25, postcss@^8.5.26: + version "8.5.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.26.tgz#6e75135780c7e10df3433bf2266c552d35c8c620" + integrity sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ== dependencies: - nanoid "^3.3.12" + nanoid "^3.3.17" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -1198,10 +1219,10 @@ proxy-disposable@^1.0.0: resolved "https://registry.yarnpkg.com/proxy-disposable/-/proxy-disposable-1.0.0.tgz#c61f2ebcf1215600088de75badf5882873c64382" integrity sha512-Y673BKpFqk8XkYuoK9DGZ1RIzldz5SkzxTKc/+DkpaMdrDEbEalWlO/uMRMdJsXvdbTybJI26XDwN0KJpZDN4w== -react-dom@^19.2.7: - version "19.2.7" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.7.tgz#0450dc9ae9ddbff76ef196401cd8b8c7fb466ccc" - integrity sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ== +react-dom@^19.2.8: + version "19.2.8" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.8.tgz#3b46b9eeda877cdff2cf13d2770fff4ae36c2ec2" + integrity sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ== dependencies: scheduler "^0.27.0" @@ -1249,17 +1270,17 @@ react-remove-scroll@^2.7.2: use-callback-ref "^1.3.3" use-sidecar "^1.1.3" -react-router-dom@^7.18.1: - version "7.18.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.18.1.tgz#0d1b138e291393059ad481c3e10e366385a978a4" - integrity sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg== +react-router-dom@^7.18.2: + version "7.18.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.18.2.tgz#00bf1d0ce8bf17a6d831949aacda72a6120e4926" + integrity sha512-AIKJ/jgGlFb3EbfCXk5Gzshiwt+l3mqbCrNjmEWMMjqQxNJ3svBa6bgzFyCC2Sw3RA0VWF1kg3uQf2OFhxb8hw== dependencies: - react-router "7.18.1" + react-router "7.18.2" -react-router@7.18.1: - version "7.18.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.18.1.tgz#61259d1594b95c1ace299ee4c57453570f0c22f1" - integrity sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg== +react-router@7.18.2: + version "7.18.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.18.2.tgz#a76c46ce9e5edacd4f51289d5a71f71305db9152" + integrity sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg== dependencies: cookie "^1.0.1" set-cookie-parser "^2.6.0" @@ -1287,20 +1308,20 @@ react-xtermjs@^1.0.12: resolved "https://registry.yarnpkg.com/react-xtermjs/-/react-xtermjs-1.0.12.tgz#d678fee0f04315d87613ecbb10b0820c54c4ee38" integrity sha512-8uXBzVF4vP6r2NABxt/9heH1Y5Vx2v2hFrAk1kre+HyY3CjM6Prbc8ViqBRia6EBzI57IFBWOicYV1/k05JBtw== -react@^19.2.7: - version "19.2.7" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.7.tgz#1f47a1bfc06f8ec885752c6f4af14369a9f8260b" - integrity sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ== +react@^19.2.8: + version "19.2.8" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.8.tgz#a80663dbb58d69c6fe3fd291d3cb324e8a7dff2d" + integrity sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw== readdirp@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-5.0.0.tgz#fbf1f71a727891d685bb1786f9ba74084f6e2f91" integrity sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ== -recharts@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-3.9.1.tgz#6fe1b4617147e2016fa6f4cd681c8c818255955e" - integrity sha512-WMcwlXcB7l+BbxiEdyClkG+1sxrMHNZpzT577LEvU4+rXPd8oTAy1wXk72hnk2KOOmxuLvw3z5DtXT7HEAydtg== +recharts@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-3.10.1.tgz#e6f52c2604a38f728b6d47f95881595fa6604c6c" + integrity sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA== dependencies: "@reduxjs/toolkit" "^1.9.0 || 2.x.x" clsx "^2.1.1" @@ -1334,29 +1355,28 @@ reselect@^5.1.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== -rolldown@~1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.1.3.tgz#87072bfd0d1bdd02a66076a261a62e8e49b3f0e2" - integrity sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g== +rolldown@~1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.2.3.tgz#103bdcbbd575d51265277b8b510f080827b6eb6f" + integrity sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A== dependencies: - "@oxc-project/types" "=0.137.0" + "@oxc-project/types" "=0.143.0" "@rolldown/pluginutils" "^1.0.0" optionalDependencies: - "@rolldown/binding-android-arm64" "1.1.3" - "@rolldown/binding-darwin-arm64" "1.1.3" - "@rolldown/binding-darwin-x64" "1.1.3" - "@rolldown/binding-freebsd-x64" "1.1.3" - "@rolldown/binding-linux-arm-gnueabihf" "1.1.3" - "@rolldown/binding-linux-arm64-gnu" "1.1.3" - "@rolldown/binding-linux-arm64-musl" "1.1.3" - "@rolldown/binding-linux-ppc64-gnu" "1.1.3" - "@rolldown/binding-linux-s390x-gnu" "1.1.3" - "@rolldown/binding-linux-x64-gnu" "1.1.3" - "@rolldown/binding-linux-x64-musl" "1.1.3" - "@rolldown/binding-openharmony-arm64" "1.1.3" - "@rolldown/binding-wasm32-wasi" "1.1.3" - "@rolldown/binding-win32-arm64-msvc" "1.1.3" - "@rolldown/binding-win32-x64-msvc" "1.1.3" + "@rolldown/binding-android-arm64" "1.2.3" + "@rolldown/binding-darwin-arm64" "1.2.3" + "@rolldown/binding-darwin-x64" "1.2.3" + "@rolldown/binding-freebsd-x64" "1.2.3" + "@rolldown/binding-linux-arm-gnueabihf" "1.2.3" + "@rolldown/binding-linux-arm64-gnu" "1.2.3" + "@rolldown/binding-linux-arm64-musl" "1.2.3" + "@rolldown/binding-linux-ppc64-gnu" "1.2.3" + "@rolldown/binding-linux-s390x-gnu" "1.2.3" + "@rolldown/binding-linux-x64-gnu" "1.2.3" + "@rolldown/binding-linux-x64-musl" "1.2.3" + "@rolldown/binding-openharmony-arm64" "1.2.3" + "@rolldown/binding-win32-arm64-msvc" "1.2.3" + "@rolldown/binding-win32-x64-msvc" "1.2.3" rxjs@^7.4.0: version "7.8.2" @@ -1365,14 +1385,14 @@ rxjs@^7.4.0: dependencies: tslib "^2.1.0" -sanitize-html@^2.17.5: - version "2.17.5" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.5.tgz#bef1d103773760e1c52a01b1f58178bee9c10556" - integrity sha512-ZmU1joGRrvoyctKIiuwUxqR6moLoU2Wk+2bMccN6f7UwhAmwYDvWziqPxRDDN2Qip62NqnIrVrT9akbL6Wretg== +sanitize-html@^2.17.6: + version "2.17.6" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.6.tgz#c62a2e2e55d03004f3e0ecd6dbb9126d4b985d82" + integrity sha512-M4bo9tfv1yfhQZZKkc6dL07ALrGJtfvNOuhX3hU9AVPR/uPQ+nKOJBqTYc7LfMQblTW04mtSWDJWEyLvygJsLA== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" - htmlparser2 "^10.1.0" + htmlparser2 "^12.0.0" is-plain-object "^5.0.0" launder "^1.7.1" parse-srcset "^1.0.2" @@ -1525,10 +1545,10 @@ set-cookie-parser@^2.6.0: resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz#ccd08673a9ae5d2e44ea2a2de25089e67c7edf68" integrity sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw== -shell-quote@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.9.0.tgz#e108b1a136586d5964edb3300016d4bedba0fe57" - integrity sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA== +shell-quote@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.10.0.tgz#482033e192e4f5c07151521ffa03400ec71b1b0f" + integrity sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA== "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: version "1.2.1" @@ -1600,15 +1620,15 @@ tinyglobby@^0.2.17: fdir "^6.5.0" picomatch "^4.0.4" -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.1.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -type-fest@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.7.0.tgz#bae586d3b7c2596bd9c7e62195f33c7fcada1c91" - integrity sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg== +type-fest@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-5.8.0.tgz#6d517998257c33159db4d4da6f18efa33bd47df3" + integrity sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA== dependencies: tagged-tag "^1.0.0" @@ -1658,7 +1678,7 @@ use-sidecar@^1.1.3: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: +use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0, use-sync-external-store@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== @@ -1693,15 +1713,15 @@ victory-vendor@^37.0.2: d3-time "^3.0.0" d3-timer "^3.0.1" -vite@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-8.1.2.tgz#3ac29b5868ccf28c59321391be1ebe906f135ebd" - integrity sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ== +vite@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-8.2.1.tgz#6fc8d8bb843bd52353091fac978e194d4de5b31d" + integrity sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw== dependencies: - lightningcss "^1.32.0" - picomatch "^4.0.4" - postcss "^8.5.16" - rolldown "~1.1.3" + lightningcss "^1.33.0" + picomatch "^4.0.5" + postcss "^8.5.25" + rolldown "~1.2.1" tinyglobby "^0.2.17" optionalDependencies: fsevents "~2.3.3"