Compare commits

..
1 Commits
Author SHA1 Message Date
Maxwell BeckerandGitHub cc1c5aa5da 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
2026-08-11 13:58:11 -07:00
57 changed files with 947 additions and 861 deletions
Generated
+139 -130
View File
@@ -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",
]
+15 -15
View File
@@ -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"
+2 -2
View File
@@ -100,7 +100,7 @@ fn print_items<T: PrintTable + Serialize>(
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<T: PrintTable + Serialize>(
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)),
+18 -9
View File
@@ -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}"))
}
+8 -6
View File
@@ -256,14 +256,14 @@ impl MaybeNone for BuilderConfigDiff {
impl From<PartialBuilderConfig> 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"))
+3 -3
View File
@@ -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"
}
+129 -8
View File
@@ -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"
-19
View File
@@ -498,25 +498,6 @@ webhook_secret = "a_random_webhook_secret"
## Default: empty (none)
webhook_base_url = ""
## Configure Github webhook app. Enables webhook management apis.
## <INSERT LINK TO GUIDE>
## 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. <INSERT LINK TO GUIDE>
## 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 #
###########
+14 -6
View File
@@ -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 <<EOF cat > /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 <<EOF
:80 {
root * /srv
${BASE:+redir $BASE $BASE/ 308}
file_server
try_files {path} /index.html
try_files {path} {path}.html ${DOCSITE_BASE_URL}index.html
}
EOF
+2 -3
View File
@@ -11,11 +11,10 @@ const config: Config = {
favicon: "img/favicon.ico",
// Set the production url of your site here
url: "https://komo.do",
url: process.env.DOCSITE_URL || "https://komo.do",
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
// 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.
+24 -24
View File
@@ -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"
}
+2 -2
View File
@@ -120,10 +120,10 @@ export declare function KomodoClient(url: string, options: InitOptions): {
*/
execute_and_poll: <T extends ExecuteRequest["type"], Req extends Extract<ExecuteRequest, {
type: T;
}>>(type: T, params: Req["params"]) => Promise<Update | (Update | {
}>>(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.
@@ -86,6 +86,7 @@ export default function ContainerSelector({
<Group gap="xs" ml="sm" wrap="nowrap">
{clearable && (
<ActionIcon
component="div"
size="sm"
variant="filled"
color="red"
@@ -93,7 +94,12 @@ export default function ContainerSelector({
e.stopPropagation();
onSelect?.("");
}}
disabled={disabled || !selected}
data-disabled={disabled || !selected || undefined}
style={
disabled || !selected
? { pointerEvents: "none" }
: undefined
}
>
<ICONS.Clear size="0.8rem" />
</ActionIcon>
@@ -94,7 +94,6 @@ export default function ContainersSection({
columns={[
{
accessorKey: "name",
size: 260,
header: ({ column }) => (
<SortableHeader column={column} title="Name" />
),
@@ -108,7 +107,6 @@ export default function ContainersSection({
},
{
accessorKey: "state",
size: 160,
header: ({ column }) => (
<SortableHeader column={column} title="State" />
),
@@ -124,7 +122,6 @@ export default function ContainersSection({
},
{
accessorKey: "image",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Image" />
),
@@ -139,7 +136,6 @@ export default function ContainersSection({
},
{
accessorKey: "networks.0",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Networks" />
),
@@ -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 }) => (
<SortableHeader column={column} title="Volumes" />
),
@@ -88,7 +88,6 @@ export default function ConfigMaintenanceWindows({
<Text>{row.original.name}</Text>
</Group>
),
size: 200,
},
{
accessorKey: "schedule_type",
@@ -98,7 +97,6 @@ export default function ConfigMaintenanceWindows({
cell: ({ row }) => (
<ScheduleDescription window={row.original} />
),
size: 150,
},
{
accessorKey: "start_time",
@@ -106,7 +104,6 @@ export default function ConfigMaintenanceWindows({
<SortableHeader column={column} title="Start Time" />
),
cell: ({ row }) => fmtMaintenanceWindowTime(row.original),
size: 180,
},
{
accessorKey: "duration_minutes",
@@ -114,7 +111,6 @@ export default function ConfigMaintenanceWindows({
<SortableHeader column={column} title="Duration" />
),
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({
</ActionIcon>
</Group>
),
size: 100,
},
]}
/>
@@ -102,7 +102,6 @@ export default function BasePermissionsSection({
columns={[
{
accessorKey: "type",
size: 150,
header: ({ column }) => (
<SortableHeader column={column} title="Resource Type" />
),
@@ -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 }) => (
<SortableHeader column={column} title="Level" />
@@ -143,7 +141,6 @@ export default function BasePermissionsSection({
},
{
header: "Specific",
size: 300,
cell: ({ row }) => {
return (
<SpecificPermissionSelector
@@ -53,7 +53,6 @@ export default function SpecificPermissionsSection({
columns={[
{
accessorKey: "resource_target.type",
size: 150,
header: ({ column }) => (
<SortableHeader column={column} title="Resource" />
),
@@ -72,7 +71,6 @@ export default function SpecificPermissionsSection({
},
{
accessorKey: "resource_target",
size: 250,
header: ({ column }) => (
<SortableHeader column={column} title="Target" />
),
@@ -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 }) => (
<SortableHeader column={column} title="Level" />
@@ -115,7 +112,6 @@ export default function SpecificPermissionsSection({
},
{
header: "Specific",
size: 300,
cell: ({ row: { original: permission } }) => {
return (
<SpecificPermissionSelector
+7 -1
View File
@@ -101,6 +101,7 @@ export default function StackServiceSelector({
<Group gap="xs" ml="sm" wrap="nowrap">
{clearable && (
<ActionIcon
component="div"
size="sm"
variant="filled"
color="red"
@@ -108,7 +109,12 @@ export default function StackServiceSelector({
e.stopPropagation();
onSelect?.("");
}}
disabled={disabled || !selected}
data-disabled={disabled || !selected || undefined}
style={
disabled || !selected
? { pointerEvents: "none" }
: undefined
}
>
<ICONS.Clear size="0.8rem" />
</ActionIcon>
@@ -66,7 +66,6 @@ export default function SwarmServicesSection({
name={row.original.Name}
/>
),
size: 200,
},
{
accessorKey: "ID",
@@ -74,7 +73,6 @@ export default function SwarmServicesSection({
<SortableHeader column={column} title="ID" />
),
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,
},
]}
/>
@@ -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",
+8 -158
View File
@@ -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<WebSocket | null>(null);
const fitRef = useRef<FitAddon>(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<any>) => {
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 (
<Box
p="md"
className="bordered-light"
bdrs="md"
style={{
display: selected ? undefined : "none",
}}
>
<Box ref={termRef} h="max(200px, calc(100vh - 320px))" />
</Box>
<Suspense fallback={null}>
<TerminalInner {...props} />
</Suspense>
);
}
+169
View File
@@ -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<WebSocket | null>(null);
const fitRef = useRef<FitAddon>(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<any>) => {
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 (
<Box
p="md"
className="bordered-light"
bdrs="md"
style={{
display: selected ? undefined : "none",
}}
>
<Box ref={termRef} h="max(200px, calc(100vh - 320px))" />
</Box>
);
}
+6 -2
View File
@@ -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<Types.User, "User" | "Admin" | "Super Admin">[] = [
const columns: ColumnDef<
DataTableFeatures,
Types.User,
"User" | "Admin" | "Super Admin"
>[] = [
{ header: "Username", accessorKey: "username" },
{
header: "Type",
+3 -2
View File
@@ -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;
+2 -9
View File
@@ -96,7 +96,6 @@ export default function Containers() {
{
id: "Name",
accessorKey: "name",
size: 260,
header: ({ column }) => (
<SortableHeader column={column} title="Name" />
),
@@ -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 }) => (
<SortableHeader column={column} title="State" />
),
@@ -151,7 +148,6 @@ export default function Containers() {
{
id: "Image",
accessorKey: "image",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Image" />
),
@@ -167,7 +163,6 @@ export default function Containers() {
{
id: "Networks",
accessorKey: "networks.0",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Networks" />
),
@@ -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 }) => (
<SortableHeader column={column} title="Volumes" />
),
-2
View File
@@ -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,
},
]}
/>
-1
View File
@@ -165,7 +165,6 @@ function NetworkInner({
) : (
"Unknown"
),
size: 200,
},
{
accessorKey: "IPv4Address",
-4
View File
@@ -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 }) => (
+7 -10
View File
@@ -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<Types.OnboardingKey, unknown>
| ColumnDef<DataTableFeatures, Types.OnboardingKey, unknown>
| false
| undefined
)[] = useMemo(
() => [
{
size: 150,
accessorKey: "name",
header: ({ column }) => <SortableHeader column={column} title="Name" />,
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 }) => (
<SortableHeader
@@ -138,7 +139,6 @@ export default function SettingsOnboardingKeys() {
),
},
{
size: 100,
accessorKey: "create_builder",
header: ({ column }) => (
<SortableHeader column={column} title="Create Builder" />
@@ -156,7 +156,6 @@ export default function SettingsOnboardingKeys() {
),
},
{
size: 100,
accessorKey: "enabled",
header: ({ column }) => (
<SortableHeader column={column} title="Enabled" />
@@ -174,7 +173,6 @@ export default function SettingsOnboardingKeys() {
),
},
{
size: 150,
accessorKey: "expires",
header: ({ column }) => (
<SortableHeader column={column} title="Expires" />
@@ -196,7 +194,6 @@ export default function SettingsOnboardingKeys() {
),
},
{
size: 100,
accessorKey: "public_key",
header: "Delete",
cell: ({ row }) => (
@@ -83,7 +83,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) {
columns={[
{
accessorKey: "domain",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Domain" />
),
@@ -141,7 +140,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) {
},
{
accessorKey: "username",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Username" />
),
@@ -180,7 +178,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) {
},
{
accessorKey: "token",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Token" />
),
@@ -220,7 +217,6 @@ function Providers({ type }: { type: "GitProvider" | "ImageRegistry" }) {
},
{
header: "Delete",
maxSize: 200,
cell: ({ row }) => (
<DeleteProviderAccount
type={type}
+10 -14
View File
@@ -1,6 +1,5 @@
import NewTag from "@/components/tags/new";
import Tag from "@/components/tags/tag";
import UserAvatar from "@/components/user-avatar";
import { useRead, useSetTitle, useUser } from "@/lib/hooks";
import { DataTable } from "mogh_ui";
import { Group, Stack } from "@mantine/core";
@@ -30,7 +29,6 @@ export default function SettingsTags() {
columns={[
{
header: "Name",
size: 200,
accessorKey: "name",
cell: ({ row }) => {
return <Tag tag={row.original} size="md" fz="md" />;
@@ -38,7 +36,6 @@ export default function SettingsTags() {
},
{
header: "Color",
size: 200,
cell: ({ row }) => (
<TagColorSelector
tagId={row.original._id?.$oid!}
@@ -47,19 +44,18 @@ export default function SettingsTags() {
/>
),
},
{
header: "Owner",
size: 200,
cell: ({ row }) =>
row.original.owner ? (
<UserAvatar userId={row.original.owner} fz="md" />
) : (
"Unknown"
),
},
// {
// header: "Owner",
// size: 200,
// cell: ({ row }) =>
// row.original.owner ? (
// <UserAvatar userId={row.original.owner} fz="md" />
// ) : (
// "Unknown"
// ),
// },
{
header: "Delete",
size: 200,
cell: ({ row }) => (
<DeleteTag
tagId={row.original._id!.$oid}
@@ -67,7 +67,6 @@ export default function SettingsVariables() {
columns={[
{
accessorKey: "name",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Name" />
),
@@ -79,7 +78,6 @@ export default function SettingsVariables() {
},
{
accessorKey: "value",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Value" />
),
@@ -117,7 +115,6 @@ export default function SettingsVariables() {
},
{
accessorKey: "description",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Description" />
),
@@ -153,7 +150,6 @@ export default function SettingsVariables() {
},
{
header: "Secret",
size: 100,
cell: ({ row }) => (
<Switch
checked={row.original.is_secret}
@@ -169,7 +165,6 @@ export default function SettingsVariables() {
},
{
header: "Delete",
size: 200,
cell: ({ row }) => (
<DeleteVariable name={row.original.name} disabled={disabled} />
),
+1 -1
View File
@@ -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) => {
-2
View File
@@ -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 }) => (
+1 -1
View File
@@ -61,7 +61,7 @@ export default function ActionTable({
header: ({ column }) => (
<SortableHeader column={column} title="Next Run" />
),
sortingFn: (a, b) => {
sortFn: (a, b) => {
const sa = a.original.info.next_scheduled_run;
const sb = b.original.info.next_scheduled_run;
-4
View File
@@ -52,7 +52,6 @@ export default function BuildTable({
id: "Name",
accessorKey: "name",
cell: ({ row }) => <ResourceLink type="Build" id={row.original.id} />,
size: 200,
},
{
header: ({ column }) => (
@@ -61,12 +60,10 @@ export default function BuildTable({
id: "Source",
accessorKey: "info.repo",
cell: ({ row }) => <FileSource info={row.original.info} />,
size: 200,
},
{
header: "Version",
accessorFn: ({ info }) => fmtVersion(info.version),
size: 120,
},
{
id: "State",
@@ -75,7 +72,6 @@ export default function BuildTable({
<SortableHeader column={column} title="State" />
),
cell: ({ row }) => <BuildComponents.State id={row.original.id} />,
size: 120,
},
{
header: "Tags",
+1 -1
View File
@@ -10,7 +10,7 @@ export default function BuilderInstanceType({ id }: { id: string }) {
return (
<DividedChildren wrap="nowrap" gap="xs">
{info.instance_type?.split(",").map((id) => (
<ResourceLink type="Server" id={id.trim()} />
<ResourceLink key={id.trim()} type="Server" id={id.trim()} />
))}
</DividedChildren>
);
+1 -5
View File
@@ -57,7 +57,6 @@ export default function DeploymentTable({
<DeploymentUpdateAvailable id={row.original.id} small />
</Group>
),
size: 200,
},
{
id: "Image",
@@ -72,7 +71,6 @@ export default function DeploymentTable({
},
},
}) => <Image buildId={build_id} image={image} />,
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({
) : (
<ResourceLink type="Server" id={row.original.info.server_id} />
),
size: 200,
},
{
id: "State",
@@ -113,7 +110,6 @@ export default function DeploymentTable({
cell: ({ row }) => (
<DeploymentComponents.State id={row.original.id} />
),
size: 120,
},
{
header: "Tags",
@@ -131,7 +131,6 @@ export default function ProcedureStage({
columns={[
{
header: "Execution",
size: 250,
cell: ({ row: { original, index } }) => (
<ProcedureExecutionSelector
disabled={disabled}
@@ -160,7 +159,6 @@ export default function ProcedureStage({
},
{
header: "Target",
size: 250,
cell: ({
row: {
original: {
@@ -195,7 +193,6 @@ export default function ProcedureStage({
},
{
header: "Add / Remove",
size: 150,
cell: ({ row: { index } }) => (
<Group>
<ActionIcon
@@ -232,7 +229,6 @@ export default function ProcedureStage({
},
{
header: "Enabled",
size: 100,
cell: ({
row: {
original: { enabled },
+1 -1
View File
@@ -67,7 +67,7 @@ export default function ProcedureTable({
header: ({ column }) => (
<SortableHeader column={column} title="Next Run" />
),
sortingFn: (a, b) => {
sortFn: (a, b) => {
const sa = a.original.info.next_scheduled_run;
const sb = b.original.info.next_scheduled_run;
-4
View File
@@ -51,7 +51,6 @@ export default function RepoTable({
id: "Name",
accessorKey: "name",
cell: ({ row }) => <ResourceLink type="Repo" id={row.original.id} />,
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 }) => <RepoComponents.State id={row.original.id} />,
size: 120,
},
{
header: "Tags",
+7 -1
View File
@@ -123,6 +123,7 @@ export default function ResourceSelector({
<Group gap="xs" ml="sm" wrap="nowrap">
{clearable && (
<ActionIcon
component="div"
size="sm"
variant="filled"
color="red"
@@ -130,7 +131,12 @@ export default function ResourceSelector({
e.stopPropagation();
onSelect?.("");
}}
disabled={disabled || !selected}
data-disabled={disabled || !selected || undefined}
style={
disabled || !selected
? { pointerEvents: "none" }
: undefined
}
>
<ICONS.Clear size="0.8rem" />
</ActionIcon>
@@ -63,7 +63,6 @@ export default function ServerImages({
}
/>
),
size: 200,
},
{
accessorKey: "id",
@@ -85,7 +85,6 @@ export default function ServerNetworks({
/>
</div>
),
size: 300,
},
{
accessorKey: "driver",
@@ -62,7 +62,6 @@ export default function ServerVolumes({
}
/>
),
size: 200,
},
{
accessorKey: "driver",
@@ -58,7 +58,6 @@ export default function ServerContainerStats({ id }: { id: string }) {
columns={[
{
accessorKey: "name",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Name" />
),
@@ -72,14 +71,12 @@ export default function ServerContainerStats({ id }: { id: string }) {
},
{
accessorKey: "stats.cpu_perc",
size: 100,
header: ({ column }) => (
<SortableHeader column={column} title="CPU" />
),
},
{
accessorKey: "stats.mem_perc",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Memory" />
),
@@ -94,21 +91,18 @@ export default function ServerContainerStats({ id }: { id: string }) {
},
{
accessorKey: "stats.net_io",
size: 150,
header: ({ column }) => (
<SortableHeader column={column} title="Net I/O" />
),
},
{
accessorKey: "stats.block_io",
size: 150,
header: ({ column }) => (
<SortableHeader column={column} title="Block I/O" />
),
},
{
accessorKey: "stats.pids",
size: 100,
header: ({ column }) => (
<SortableHeader column={column} title="PIDs" />
),
+1 -1
View File
@@ -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
+7 -3
View File
@@ -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({
<ServerCurrentStats id={id} stats={stats} />
<ServerHistoricalStats id={id} />
<Suspense fallback={null}>
<ServerHistoricalStats id={id} />
</Suspense>
<ServerContainerStats id={id} />
+1 -6
View File
@@ -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 }) => <ServerVersion id={row.original.id} />,
},
{
size: 150,
id: "State",
accessorKey: "info.state",
header: ({ column }) => (
-10
View File
@@ -55,7 +55,6 @@ function StackServicesSwarm({
columns={[
{
accessorKey: "service",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Service" />
),
@@ -65,7 +64,6 @@ function StackServicesSwarm({
},
{
accessorKey: "swarm_service.State",
size: 160,
header: ({ column }) => (
<SortableHeader column={column} title="State" />
),
@@ -87,14 +85,12 @@ function StackServicesSwarm({
},
{
accessorKey: "swarm_service.Runtime",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Runtime" />
),
},
{
accessorKey: "swarm_service.Image",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Image" />
),
@@ -105,7 +101,6 @@ function StackServicesSwarm({
},
{
accessorKey: "swarm_service.Replicas",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Replicas" />
),
@@ -132,7 +127,6 @@ function StackServicesServer({
columns={[
{
accessorKey: "service",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Service" />
),
@@ -142,7 +136,6 @@ function StackServicesServer({
},
{
accessorKey: "container.state",
size: 160,
header: ({ column }) => (
<SortableHeader column={column} title="State" />
),
@@ -164,7 +157,6 @@ function StackServicesServer({
},
{
accessorKey: "container.image",
size: 300,
header: ({ column }) => (
<SortableHeader column={column} title="Image" />
),
@@ -181,7 +173,6 @@ function StackServicesServer({
},
{
accessorKey: "container.networks.0",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Networks" />
),
@@ -215,7 +206,6 @@ function StackServicesServer({
},
{
accessorKey: "container.ports.0",
size: 200,
header: ({ column }) => (
<SortableHeader column={column} title="Ports" />
),
+1 -5
View File
@@ -59,7 +59,6 @@ export default function StackTable({
</Group>
);
},
size: 200,
},
{
header: ({ column }) => (
@@ -68,7 +67,6 @@ export default function StackTable({
id: "Source",
accessorKey: "info.repo",
cell: ({ row }) => <FileSource info={row.original.info} />,
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({
) : (
<ResourceLink type="Server" id={row.original.info.server_id} />
),
size: 200,
},
{
id: "State",
@@ -107,7 +104,6 @@ export default function StackTable({
<SortableHeader column={column} title="State" />
),
cell: ({ row }) => <StackComponents.State id={row.original.id} />,
size: 120,
},
{
header: "Tags",
@@ -67,7 +67,6 @@ export default function SwarmNodes({
name={row.original.Hostname}
/>
),
size: 200,
},
{
accessorKey: "ID",
@@ -75,7 +74,6 @@ export default function SwarmNodes({
<SortableHeader column={column} title="ID" />
),
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",
@@ -61,7 +61,6 @@ export default function SwarmSecrets({
}
/>
),
size: 200,
},
{
accessorKey: "ID",
@@ -69,7 +68,6 @@ export default function SwarmSecrets({
<SortableHeader column={column} title="ID" />
),
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,
},
]}
/>
-2
View File
@@ -50,7 +50,6 @@ export default function SwarmTable({
id: "Name",
accessorKey: "name",
cell: ({ row }) => <ResourceLink type="Swarm" id={row.original.id} />,
size: 200,
},
{
header: ({ column }) => (
@@ -59,7 +58,6 @@ export default function SwarmTable({
id: "State",
accessorKey: "info.state",
cell: ({ row }) => <SwarmComponents.State id={row.original.id} />,
size: 120,
},
{
header: "Tags",
-4
View File
@@ -52,7 +52,6 @@ export default function ResourceSyncTable({
cell: ({ row }) => (
<ResourceLink type="ResourceSync" id={row.original.id} />
),
size: 200,
},
{
header: ({ column }) => (
@@ -61,7 +60,6 @@ export default function ResourceSyncTable({
id: "Source",
accessorKey: "info.repo",
cell: ({ row }) => <FileSource info={row.original.info} />,
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 }) => (
<ResourceSyncComponents.State id={row.original.id} />
),
size: 120,
},
{
header: "Tags",
+9 -2
View File
@@ -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: {
+338 -318
View File
@@ -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"