diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index b311843f..7d6dd265 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -9,6 +9,8 @@ on: env: CARGO_TERM_COLOR: always CMAKE_POLICY_VERSION_MINIMUM: 3.5 + SCCACHE_GHA_ENABLED: "true" + RUSTC_WRAPPER: "sccache" jobs: build: @@ -20,6 +22,8 @@ jobs: run: sudo apt-get update && sudo apt-get install -y protobuf-compiler - name: Set PROTOC Environment Variable run: echo "PROTOC=$(which protoc)" >> $GITHUB_ENV + - name: Setup sccache + uses: mozilla/sccache-action@v0.0.8 - name: Build run: cargo build --verbose - name: Run tests diff --git a/Cargo.lock b/Cargo.lock index b3121399..6a7e153c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adler32" @@ -147,33 +147,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -232,7 +232,7 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arkflow" -version = "0.3.1" +version = "0.4.0-rc1" dependencies = [ "arkflow-core", "arkflow-plugin", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "arkflow-core" -version = "0.3.1" +version = "0.4.0-rc1" dependencies = [ "anyhow", "async-trait", @@ -259,14 +259,14 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tokio-util", - "toml 0.8.22", + "toml 0.8.23", "tracing", "tracing-subscriber", ] [[package]] name = "arkflow-plugin" -version = "0.3.1" +version = "0.4.0-rc1" dependencies = [ "arkflow-core", "arrow-json", @@ -276,10 +276,13 @@ dependencies = [ "axum", "ballista", "base64 0.22.1", + "bzip2 0.5.2", + "chrono", "colored", "datafusion", "datafusion-functions-json", "datafusion-table-providers", + "flate2", "flume", "futures", "futures-util", @@ -290,6 +293,7 @@ dependencies = [ "num_cpus", "object_store", "once_cell", + "parquet 54.3.1", "prost-reflect", "prost-types", "protobuf", @@ -303,6 +307,7 @@ dependencies = [ "sasl2-sys", "serde", "serde_json", + "serde_with", "serde_yaml", "spiceai_duckdb_fork", "sqlx", @@ -312,7 +317,7 @@ dependencies = [ "tokio-stream", "tokio-tungstenite", "tokio-util", - "toml 0.8.22", + "toml 0.8.23", "tower 0.5.2", "tower-http", "tracing", @@ -334,62 +339,89 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1bb018b6960c87fd9d025009820406f74e83281185a8bdcb44880d2aa5c9a87" +checksum = "f3f15b4c6b148206ff3a2b35002e08929c2462467b62b9c02036d9c34f9ef994" dependencies = [ "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-cast 55.2.0", "arrow-csv", - "arrow-data", - "arrow-ipc", + "arrow-data 55.2.0", + "arrow-ipc 55.2.0", "arrow-json", "arrow-ord", + "arrow-pyarrow", "arrow-row", - "arrow-schema", - "arrow-select", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", "arrow-string", - "pyo3", ] [[package]] name = "arrow-arith" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44de76b51473aa888ecd6ad93ceb262fb8d40d1f1154a4df2f069b3590aa7575" +checksum = "30feb679425110209ae35c3fbf82404a39a4c0436bb3ec36164d8bffed2a4ce4" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", "chrono", "num", ] [[package]] name = "arrow-array" -version = "55.1.0" +version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ed77e22744475a9a53d00026cf8e166fe73cf42d89c4c4ae63607ee1cfcc3f" +checksum = "a12fcdb3f1d03f69d3ec26ac67645a8fe3f878d77b5ebb0b15d64a116c212985" dependencies = [ "ahash 0.8.12", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "chrono", + "half", + "hashbrown 0.15.4", + "num", +] + +[[package]] +name = "arrow-array" +version = "55.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70732f04d285d49054a48b72c54f791bb3424abae92d27aafdf776c98af161c8" +dependencies = [ + "ahash 0.8.12", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", "chrono", "chrono-tz", "half", - "hashbrown 0.15.3", + "hashbrown 0.15.4", + "num", +] + +[[package]] +name = "arrow-buffer" +version = "54.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "263f4801ff1839ef53ebd06f99a56cecd1dbaf314ec893d93168e2e860e0291c" +dependencies = [ + "bytes", + "half", "num", ] [[package]] name = "arrow-buffer" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0391c96eb58bf7389171d1e103112d3fc3e5625ca6b372d606f2688f1ea4cce" +checksum = "169b1d5d6cb390dd92ce582b06b23815c7953e9dfaaea75556e89d890d19993d" dependencies = [ "bytes", "half", @@ -398,15 +430,35 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "55.1.0" +version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39e1d774ece9292697fcbe06b5584401b26bd34be1bec25c33edae65c2420ff" +checksum = "ede6175fbc039dfc946a61c1b6d42fd682fcecf5ab5d148fbe7667705798cac9" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", + "atoi", + "base64 0.22.1", + "chrono", + "half", + "lexical-core", + "num", + "ryu", +] + +[[package]] +name = "arrow-cast" +version = "55.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4f12eccc3e1c05a766cafb31f6a60a46c2f8efec9b74c6e0648766d30686af8" +dependencies = [ + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", "atoi", "base64 0.22.1", "chrono", @@ -419,48 +471,59 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9055c972a07bf12c2a827debfd34f88d3b93da1941d36e1d9fee85eebe38a12a" +checksum = "012c9fef3f4a11573b2c74aec53712ff9fdae4a95f4ce452d1bbf088ee00f06b" dependencies = [ - "arrow-array", - "arrow-cast", - "arrow-schema", + "arrow-array 55.2.0", + "arrow-cast 55.2.0", + "arrow-schema 55.2.0", "chrono", "csv", "csv-core", - "lazy_static", "regex", ] [[package]] name = "arrow-data" -version = "55.1.0" +version = "54.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61cfdd7d99b4ff618f167e548b2411e5dd2c98c0ddebedd7df433d34c20a4429" +dependencies = [ + "arrow-buffer 54.3.1", + "arrow-schema 54.3.1", + "half", + "num", +] + +[[package]] +name = "arrow-data" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf75ac27a08c7f48b88e5c923f267e980f27070147ab74615ad85b5c5f90473d" +checksum = "8de1ce212d803199684b658fc4ba55fb2d7e87b213de5af415308d2fee3619c2" dependencies = [ - "arrow-buffer", - "arrow-schema", + "arrow-buffer 55.2.0", + "arrow-schema 55.2.0", "half", "num", ] [[package]] name = "arrow-flight" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91efc67a4f5a438833dd76ef674745c80f6f6b9a428a3b440cbfbf74e32867e6" +checksum = "5cb3e1d2b441e6d1d5988e3f7c4523c9466b18ef77d7c525d92d36d4cad49fbe" dependencies = [ "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-cast 55.2.0", + "arrow-data 55.2.0", + "arrow-ipc 55.2.0", "arrow-ord", "arrow-row", - "arrow-schema", - "arrow-select", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", "arrow-string", "base64 0.22.1", "bytes", @@ -474,33 +537,46 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "55.1.0" +version = "54.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ff528658b521e33905334723b795ee56b393dbe9cf76c8b1f64b648c65a60c" +dependencies = [ + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "flatbuffers 24.12.23", +] + +[[package]] +name = "arrow-ipc" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a222f0d93772bd058d1268f4c28ea421a603d66f7979479048c429292fac7b2e" +checksum = "d9ea5967e8b2af39aff5d9de2197df16e305f47f404781d3230b2dc672da5d92" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "flatbuffers", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", + "flatbuffers 25.2.10", "lz4_flex", "zstd", ] [[package]] name = "arrow-json" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9085342bbca0f75e8cb70513c0807cc7351f1fbf5cb98192a67d5e3044acb033" +checksum = "5709d974c4ea5be96d900c01576c7c0b99705f4a3eec343648cb1ca863988a9c" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-schema", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-cast 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", "chrono", "half", - "indexmap 2.9.0", + "indexmap 2.10.0", "lexical-core", "memchr", "num", @@ -511,65 +587,97 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "55.1.0" +version = "55.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6506e3a059e3be23023f587f79c82ef0bcf6d293587e3272d20f2d30b969b5a7" +dependencies = [ + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", +] + +[[package]] +name = "arrow-pyarrow" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2f1065a5cad7b9efa9e22ce5747ce826aa3855766755d4904535123ef431e7" +checksum = "0e55ecf16b9b61d433f6e63c72fc6afcf2597d7db96583de88ebb887d1822268" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", + "pyo3", ] [[package]] name = "arrow-row" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3703a0e3e92d23c3f756df73d2dc9476873f873a76ae63ef9d3de17fda83b2d8" +checksum = "52bf7393166beaf79b4bed9bfdf19e97472af32ce5b6b48169d321518a08cae2" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", "half", ] [[package]] name = "arrow-schema" -version = "55.1.0" +version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a47aa0c771b5381de2b7f16998d351a6f4eb839f1e13d48353e17e873d969b" +checksum = "39cfaf5e440be44db5413b75b72c2a87c1f8f0627117d110264048f2969b99e9" + +[[package]] +name = "arrow-schema" +version = "55.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7686986a3bf2254c9fb130c623cdcb2f8e1f15763e7c71c310f0834da3d292" dependencies = [ - "bitflags", + "bitflags 2.9.1", "serde", ] [[package]] name = "arrow-select" -version = "55.1.0" +version = "54.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69efcd706420e52cd44f5c4358d279801993846d1c2a8e52111853d61d55a619" +dependencies = [ + "ahash 0.8.12", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-data 54.3.1", + "arrow-schema 54.3.1", + "num", +] + +[[package]] +name = "arrow-select" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b7b85575702b23b85272b01bc1c25a01c9b9852305e5d0078c79ba25d995d4" +checksum = "dd2b45757d6a2373faa3352d02ff5b54b098f5e21dccebc45a21806bc34501e5" dependencies = [ "ahash 0.8.12", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", "num", ] [[package]] name = "arrow-string" -version = "55.1.0" +version = "55.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9260fddf1cdf2799ace2b4c2fc0356a9789fa7551e0953e35435536fecefebbd" +checksum = "0377d532850babb4d927a06294314b316e23311503ed580ec6ce6a0158f49d40" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-data 55.2.0", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", "memchr", "num", "regex", @@ -615,9 +723,9 @@ dependencies = [ [[package]] name = "async-nats" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf0ae68ffe9ef362127a2223b42f57104edb20a50429f8c6e058912212884f7" +checksum = "08f6da6d49a956424ca4e28fe93656f790d748b469eaccbc7488fec545315180" dependencies = [ "base64 0.22.1", "bytes", @@ -668,7 +776,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -679,7 +787,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -699,15 +807,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.6.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a18fd934af6ae7ca52410d4548b98eb895aab0f1ea417d168d85db1434a141" +checksum = "455e9fb7743c6f6267eb2830ccc08686fbb3d13c9a689369562fd4d4ef9ea462" dependencies = [ "aws-credential-types", "aws-runtime", @@ -788,9 +896,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.7" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c4063282c69991e57faab9e5cb21ae557e59f5b0fb285c196335243df8dc25c" +checksum = "4f6c68419d8ba16d9a7463671593c54f81ba58cab466e9b759418da606dcc2e2" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -812,9 +920,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.71.0" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a4fd09d6e863655d99cd2260f271c6d1030dc6bfad68e19e126d2e4c8ceb18" +checksum = "b2ac1674cba7872061a29baaf02209fefe499ff034dfd91bd4cc59e4d7741489" dependencies = [ "aws-credential-types", "aws-runtime", @@ -834,9 +942,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.71.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f9bfbbda5e2b9fe330de098f14558ee8b38346408efe9f2e9cee82dc1636a4" +checksum = "3a6a22f077f5fd3e3c0270d4e1a110346cddf6769e9433eb9e6daceb4ca3b149" dependencies = [ "aws-credential-types", "aws-runtime", @@ -856,9 +964,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.71.0" +version = "1.75.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17b984a66491ec08b4f4097af8911251db79296b3e4a763060b45805746264f" +checksum = "e3258fa707f2f585ee3049d9550954b959002abd59176975150a01d5cf38ae3f" dependencies = [ "aws-credential-types", "aws-runtime", @@ -879,9 +987,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.2" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3734aecf9ff79aa401a6ca099d076535ab465ff76b46440cf567c8e70b65dc13" +checksum = "ddfb9021f581b71870a17eac25b52335b82211cdc092e02b6876b2bcefa61666" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -932,13 +1040,14 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e44697a9bded898dcd0b1cb997430d949b87f4f8940d91023ae9062bf218250" +checksum = "f108f1ca850f3feef3009bdcc977be201bca9a91058864d9de0684e64514bee0" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", + "h2 0.3.26", "h2 0.4.10", "http 0.2.12", "http 1.3.1", @@ -946,11 +1055,11 @@ dependencies = [ "hyper 0.14.32", "hyper 1.6.0", "hyper-rustls 0.24.2", - "hyper-rustls 0.27.5", + "hyper-rustls 0.27.7", "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -960,9 +1069,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.3" +version = "0.61.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07" +checksum = "a16e040799d29c17412943bdbf488fd75db04112d0c0d4b9290bacf5ae0014b9" dependencies = [ "aws-smithy-types", ] @@ -1012,9 +1121,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e5d9e3a80a18afa109391fb5ad09c3daf887b516c6fd805a157c6ea7994a57" +checksum = "bd8531b6d8882fd8f48f82a9754e682e29dd44cff27154af51fa3eb730f59efb" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1029,9 +1138,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40076bd09fadbc12d5e026ae080d0930defa606856186e31d83ccc6a255eeaf3" +checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" dependencies = [ "base64-simd", "bytes", @@ -1055,9 +1164,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.9" +version = "0.60.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" dependencies = [ "xmlparser", ] @@ -1133,9 +1242,9 @@ dependencies = [ [[package]] name = "backon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0b50b1b78dbadd44ab18b3c794e496f3a139abb9fbc27d9c94c4eebbb96496" +checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" dependencies = [ "fastrand", ] @@ -1306,9 +1415,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bb8" @@ -1352,7 +1461,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cexpr", "clang-sys", "itertools 0.12.1", @@ -1365,7 +1474,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.104", "which", ] @@ -1375,7 +1484,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1384,7 +1493,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "shlex", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -1402,6 +1511,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.1" @@ -1483,7 +1598,18 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 4.0.3", ] [[package]] @@ -1494,7 +1620,17 @@ checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 5.0.0", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] @@ -1518,9 +1654,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-unit" @@ -1616,7 +1752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" dependencies = [ "serde", - "toml 0.8.22", + "toml 0.8.23", ] [[package]] @@ -1636,9 +1772,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", @@ -1665,9 +1801,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -1802,9 +1938,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -1812,33 +1948,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cmac" @@ -1873,9 +2009,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -2014,9 +2150,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -2111,9 +2247,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -2194,7 +2330,17 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", ] [[package]] @@ -2203,8 +2349,22 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", ] [[package]] @@ -2217,8 +2377,19 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", - "syn 2.0.101", + "strsim 0.11.1", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", ] [[package]] @@ -2227,9 +2398,9 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2265,8 +2436,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffe060b978f74ab446be722adb8a274e052e005bf6dfd171caadc3abaad10080" dependencies = [ "arrow", - "arrow-ipc", - "arrow-schema", + "arrow-ipc 55.2.0", + "arrow-schema 55.2.0", "async-trait", "bytes", "bzip2 0.5.2", @@ -2302,7 +2473,7 @@ dependencies = [ "log", "object_store", "parking_lot", - "parquet", + "parquet 55.2.0", "rand 0.8.5", "regex", "sqlparser", @@ -2372,15 +2543,15 @@ dependencies = [ "ahash 0.8.12", "apache-avro", "arrow", - "arrow-ipc", + "arrow-ipc 55.2.0", "base64 0.22.1", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "libc", "log", "object_store", - "parquet", + "parquet 55.2.0", "paste", "pyo3", "recursive", @@ -2426,7 +2597,7 @@ dependencies = [ "itertools 0.14.0", "log", "object_store", - "parquet", + "parquet 55.2.0", "rand 0.8.5", "tempfile", "tokio", @@ -2537,7 +2708,7 @@ dependencies = [ "log", "object_store", "parking_lot", - "parquet", + "parquet 55.2.0", "rand 0.8.5", "tokio", ] @@ -2581,7 +2752,7 @@ dependencies = [ "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr-common", - "indexmap 2.9.0", + "indexmap 2.10.0", "paste", "recursive", "serde_json", @@ -2596,7 +2767,7 @@ checksum = "422ac9cf3b22bbbae8cdf8ceb33039107fde1b5492693168f13bd566b1bcc839" dependencies = [ "arrow", "datafusion-common", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "paste", ] @@ -2608,7 +2779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ddf0a0a2db5d2918349c978d42d80926c6aa2459cd8a3c533a84ec4bb63479e" dependencies = [ "arrow", - "arrow-buffer", + "arrow-buffer 55.2.0", "base64 0.22.1", "blake2", "blake3", @@ -2748,7 +2919,7 @@ checksum = "df6f88d7ee27daf8b108ba910f9015176b36fbc72902b1ca5c2a5f1d1717e1a1" dependencies = [ "datafusion-expr", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -2762,7 +2933,7 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", "recursive", @@ -2785,7 +2956,7 @@ dependencies = [ "datafusion-physical-expr-common", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", "paste", @@ -2834,7 +3005,7 @@ dependencies = [ "ahash 0.8.12", "arrow", "arrow-ord", - "arrow-schema", + "arrow-schema 55.2.0", "async-trait", "chrono", "datafusion-common", @@ -2847,7 +3018,7 @@ dependencies = [ "futures", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", "parking_lot", @@ -2916,7 +3087,7 @@ dependencies = [ "bigdecimal", "datafusion-common", "datafusion-expr", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "recursive", "regex", @@ -2931,7 +3102,7 @@ checksum = "1bc4ab3e30508d02ed1666c8ef7e35ce92d1ef51f481878fe98f10fde7bd590b" dependencies = [ "arrow", "arrow-json", - "arrow-schema", + "arrow-schema 55.2.0", "async-stream", "async-trait", "bb8", @@ -2961,7 +3132,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "snafu 0.8.5", + "snafu 0.8.6", "spiceai_duckdb_fork", "time", "tokio", @@ -3032,7 +3203,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3165,7 +3336,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3176,12 +3347,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -3275,21 +3446,31 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +[[package]] +name = "flatbuffers" +version = "24.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096" +dependencies = [ + "bitflags 1.3.2", + "rustc_version", +] + [[package]] name = "flatbuffers" version = "25.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1045398c1bfd89168b5fd3f1fc11f6e70b34f6f66300c87d44d3de849463abf1" dependencies = [ - "bitflags", + "bitflags 2.9.1", "rustc_version", ] [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "libz-rs-sys", @@ -3451,7 +3632,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3493,7 +3674,7 @@ dependencies = [ "g2poly", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -3557,7 +3738,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -3609,7 +3790,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -3628,7 +3809,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -3667,9 +3848,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -3691,7 +3872,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -3702,7 +3883,7 @@ checksum = "fe9a986a98854573dfbc130f42f81e92f6d4581e23060708842fede6edef0f1f" dependencies = [ "aes", "base64 0.22.1", - "bitflags", + "bitflags 2.9.1", "bytes", "cbc", "chrono", @@ -3764,9 +3945,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -3949,15 +4130,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http 1.3.1", "hyper 1.6.0", "hyper-util", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -3996,13 +4176,14 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9f1e950e0d9d1d3c47184416723cf29c0d1f93bd8cccf37e4beb6b44f31710" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", "http-body 1.0.1", @@ -4178,12 +4359,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -4213,7 +4394,7 @@ checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4349,7 +4530,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -4464,9 +4645,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libduckdb-sys" @@ -4515,7 +4696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.53.2", ] [[package]] @@ -4526,9 +4707,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libmimalloc-sys" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9d6fac27761dabcd4ee73571cdb06b7022dc99089acbe5435691edffaac0f4" +checksum = "bf88cd67e9de251c1781dbe2f641a1a3ad66eaae831b8a2c38fbdc5ddae16d4d" dependencies = [ "cc", "libc", @@ -4536,11 +4717,11 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ - "bitflags", + "bitflags 2.9.1", "libc", "redox_syscall", ] @@ -4557,9 +4738,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" dependencies = [ "zlib-rs", ] @@ -4635,7 +4816,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" dependencies = [ - "hashbrown 0.15.3", + "hashbrown 0.15.4", ] [[package]] @@ -4655,11 +4836,11 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lz4_flex" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" dependencies = [ - "twox-hash 1.6.3", + "twox-hash 2.1.1", ] [[package]] @@ -4709,9 +4890,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memoffset" @@ -4724,9 +4905,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.46" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995942f432bbb4822a7e9c3faa87a695185b0d09273ba85f097b54f4e458f2af" +checksum = "b1791cbe101e95af5764f06f20f6760521f7158f69dbf9d6baf941ee1bf6bc40" dependencies = [ "libmimalloc-sys", ] @@ -4745,22 +4926,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -4787,7 +4968,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -4824,14 +5005,14 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" dependencies = [ - "darling", + "darling 0.20.11", "heck 0.5.0", "num-bigint", "proc-macro-crate 3.3.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "termcolor", "thiserror 2.0.12", ] @@ -4862,7 +5043,7 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-util", - "twox-hash 2.1.0", + "twox-hash 2.1.1", "url", ] @@ -4874,7 +5055,7 @@ checksum = "6e0ec195e788c95f36b7cf88127d538465fc2f7773e6e47af01834738eab0aee" dependencies = [ "base64 0.22.1", "bigdecimal", - "bitflags", + "bitflags 2.9.1", "btoi", "byteorder", "bytes", @@ -5078,9 +5259,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -5097,11 +5278,12 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive 0.7.4", + "rustversion", ] [[package]] @@ -5113,19 +5295,19 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5139,9 +5321,9 @@ dependencies = [ [[package]] name = "object_store" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94ac16b433c0ccf75326388c893d2835ab7457ea35ab8ba5d745c053ef5fa16" +checksum = "7781f96d79ed0f961a7021424ab01840efbda64ae7a505aaea195efc91eaaec4" dependencies = [ "async-trait", "base64 0.22.1", @@ -5213,7 +5395,7 @@ version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags", + "bitflags 2.9.1", "libc", "once_cell", "onig_sys", @@ -5241,7 +5423,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -5258,7 +5440,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5337,9 +5519,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -5347,9 +5529,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -5360,26 +5542,59 @@ dependencies = [ [[package]] name = "parquet" -version = "55.1.0" +version = "54.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be7b2d778f6b841d37083ebdf32e33a524acde1266b5884a8ca29bf00dfa1231" +checksum = "bfb15796ac6f56b429fd99e33ba133783ad75b27c36b4b5ce06f1f82cc97754e" dependencies = [ "ahash 0.8.12", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-schema", - "arrow-select", + "arrow-array 54.3.1", + "arrow-buffer 54.3.1", + "arrow-cast 54.3.1", + "arrow-data 54.3.1", + "arrow-ipc 54.3.1", + "arrow-schema 54.3.1", + "arrow-select 54.3.1", "base64 0.22.1", - "brotli", + "brotli 7.0.0", + "bytes", + "chrono", + "flate2", + "half", + "hashbrown 0.15.4", + "lz4_flex", + "num", + "num-bigint", + "paste", + "seq-macro", + "simdutf8", + "snap", + "thrift", + "twox-hash 1.6.3", + "zstd", +] + +[[package]] +name = "parquet" +version = "55.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b17da4150748086bd43352bc77372efa9b6e3dbd06a04831d2a98c041c225cfa" +dependencies = [ + "ahash 0.8.12", + "arrow-array 55.2.0", + "arrow-buffer 55.2.0", + "arrow-cast 55.2.0", + "arrow-data 55.2.0", + "arrow-ipc 55.2.0", + "arrow-schema 55.2.0", + "arrow-select 55.2.0", + "base64 0.22.1", + "brotli 8.0.1", "bytes", "chrono", "flate2", "futures", "half", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "lz4_flex", "num", "num-bigint", @@ -5390,7 +5605,7 @@ dependencies = [ "snap", "thrift", "tokio", - "twox-hash 2.1.0", + "twox-hash 2.1.1", "zstd", ] @@ -5463,9 +5678,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", "thiserror 2.0.12", @@ -5474,9 +5689,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -5484,24 +5699,23 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ - "once_cell", "pest", "sha2", ] @@ -5513,7 +5727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -5571,7 +5785,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5626,9 +5840,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "postgres-native-tls" @@ -5734,12 +5948,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.33" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5758,7 +5972,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] @@ -5780,7 +5994,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5818,7 +6032,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.101", + "syn 2.0.104", "tempfile", ] @@ -5832,7 +6046,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -5873,7 +6087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4aeaa1f2460f1d348eeaeed86aea999ce98c1bded6f089ff8514c9d9dbdc973" dependencies = [ "anyhow", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "protobuf", "protobuf-support", @@ -5893,9 +6107,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.111" +version = "2.1.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded4a997d0aee186c0a763ba1ba0cc0a14bd4c2d427a4e8e8c9b8683dc8f1254" +checksum = "19a87cc491d889736c81c11ad02d91628b7fd2078d66c4e1b3f6d348de8900f4" dependencies = [ "psl-types", ] @@ -5994,7 +6208,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6007,7 +6221,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6038,7 +6252,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", - "rustls 0.23.27", + "rustls 0.23.28", "socket2", "thiserror 2.0.12", "tokio", @@ -6058,7 +6272,7 @@ dependencies = [ "rand 0.9.1", "ring", "rustc-hash 2.1.1", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-pki-types", "slab", "thiserror 2.0.12", @@ -6069,16 +6283,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6098,9 +6312,9 @@ checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "r2d2" @@ -6206,7 +6420,7 @@ dependencies = [ "cmake", "libc", "libz-sys", - "num_enum 0.7.3", + "num_enum 0.7.4", "openssl-sys", "pkg-config", "sasl2-sys", @@ -6230,14 +6444,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "redis" -version = "0.31.0" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bc1ea653e0b2e097db3ebb5b7f678be339620b8041f66b30a308c1d45d36a7f" +checksum = "f2f6fd3fd5bb3a9a48819ae5cbad501968f208c1abd139649e7e2cf5d7f4b40b" dependencies = [ "arc-swap", "backon", @@ -6266,11 +6480,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags", + "bitflags 2.9.1", ] [[package]] @@ -6312,7 +6526,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c11639076bf147be211b90e47790db89f4c22b6c8a9ca6e960833869da67166" dependencies = [ "aho-corasick", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.13.0", "nohash", "regex", @@ -6348,9 +6562,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.19" +version = "0.12.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" dependencies = [ "base64 0.22.1", "bytes", @@ -6362,19 +6576,17 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.6.0", - "hyper-rustls 0.27.5", + "hyper-rustls 0.27.7", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.27", + "rustls 0.23.28", "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", @@ -6506,7 +6718,7 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags", + "bitflags 2.9.1", "fallible-iterator 0.3.0", "fallible-streaming-iterator", "hashlink 0.9.1", @@ -6516,9 +6728,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.37.1" +version = "1.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50" +checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" dependencies = [ "arrayvec", "borsh", @@ -6532,9 +6744,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -6563,11 +6775,11 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6576,11 +6788,11 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6611,9 +6823,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "aws-lc-rs", "once_cell", @@ -6812,9 +7024,9 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.32.5" +version = "0.32.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5506de3a33d9ee4ee161c5847acb87fe4f82ced6649afc9eabeb8df6f40ba94a" +checksum = "64c91783d1514b99754fc6a4079081dcc2c587dadbff65c48c7f62297443536a" dependencies = [ "bigdecimal", "chrono", @@ -6830,11 +7042,11 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bae0cbad6ab996955664982739354128c58d16e126114fe88c2a493642502aab" dependencies = [ - "darling", + "darling 0.20.11", "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "thiserror 2.0.12", ] @@ -6859,7 +7071,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6872,8 +7084,8 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags", - "core-foundation 0.10.0", + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -6927,7 +7139,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -6969,14 +7181,14 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -6993,13 +7205,35 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling 0.13.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "serde_yaml" version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "itoa", "ryu", "serde", @@ -7066,12 +7300,13 @@ dependencies = [ [[package]] name = "shared_child" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e297bd52991bbe0686c086957bee142f13df85d1e79b0b21630a99d374ae9dc" +checksum = "c2778001df1384cf20b6dc5a5a90f48da35539885edaaefd887f8d744e939c0b" dependencies = [ "libc", - "windows-sys 0.59.0", + "sigchld", + "windows-sys 0.60.2", ] [[package]] @@ -7080,6 +7315,27 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "sigchld" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1219ef50fc0fdb04fcc243e6aa27f855553434ffafe4fa26554efb78b5b4bf89" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.5" @@ -7125,18 +7381,15 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -7153,11 +7406,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" dependencies = [ - "snafu-derive 0.8.5", + "snafu-derive 0.8.6", ] [[package]] @@ -7174,14 +7427,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7258,14 +7511,14 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sqlx" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c3a85280daca669cfd3bcb68a337882a8bc57ec882f72c5d13a430613a738e" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -7276,9 +7529,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f743f2a3cea30a58cd479013f75550e879009e3a02f616f18ca699335aa248c3" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ "base64 0.22.1", "bytes", @@ -7290,9 +7543,9 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "hashlink 0.10.0", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "memchr", "native-tls", @@ -7311,22 +7564,22 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4200e0fde19834956d4252347c12a083bdcb237d7a1a1446bffd8768417dce" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "sqlx-macros-core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ceaa29cade31beca7129b6beeb05737f44f82dbe2a9806ecea5a7093d00b7" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", @@ -7342,21 +7595,20 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.101", - "tempfile", + "syn 2.0.104", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0afdd3aa7a629683c2d750c2df343025545087081ab5942593a5288855b1b7a7" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags", + "bitflags 2.9.1", "byteorder", "bytes", "crc", @@ -7392,13 +7644,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bedbe1bbb5e2615ef347a5e9d8cd7680fb63e77d9dafc0f29be15e53f1ebe6" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags", + "bitflags 2.9.1", "byteorder", "crc", "dotenvy", @@ -7429,9 +7681,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c26083e9a520e8eb87a06b12347679b142dc2ea29e6e409f805644a7a979a5bc" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "flume", @@ -7467,7 +7719,7 @@ dependencies = [ "cfg-if", "libc", "psm", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7508,6 +7760,12 @@ dependencies = [ "vte", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strsim" version = "0.11.1" @@ -7539,7 +7797,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7552,7 +7810,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7574,9 +7832,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -7600,7 +7858,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7619,7 +7877,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags", + "bitflags 2.9.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -7673,7 +7931,7 @@ dependencies = [ "getrandom 0.3.3", "once_cell", "rustix 1.0.7", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7727,7 +7985,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7738,17 +7996,16 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -7853,7 +8110,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -7947,7 +8204,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.27", + "rustls 0.23.28", "tokio", ] @@ -7986,7 +8243,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "pin-project-lite", "tokio", ] @@ -8023,21 +8280,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] @@ -8048,30 +8305,30 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", "toml_write", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" @@ -8114,7 +8371,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8159,7 +8416,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags", + "bitflags 2.9.1", "bytes", "futures-util", "http 1.3.1", @@ -8210,20 +8467,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -8325,11 +8582,10 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tryhard" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9f0a709784e86923586cff0d872dba54cd2d2e116b3bc57587d15737cfce9d" +checksum = "9fe58ebd5edd976e0fe0f8a14d2a04b7c81ef153ea9a54eebc42e67c2c23b4e5" dependencies = [ - "futures", "pin-project-lite", "tokio", ] @@ -8364,9 +8620,9 @@ dependencies = [ [[package]] name = "twox-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" +checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56" [[package]] name = "typed-builder" @@ -8385,7 +8641,7 @@ checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8396,9 +8652,9 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ua-parser" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7176a413a0b7e94926d11a2054c6db5ac7fa42bf4ebe7e9571152e3f024ddfd" +checksum = "5c06b979bd5606d182759ff9cd3dda2b034b584a1ed41116407cb92abf3c995a" dependencies = [ "regex", "regex-filtered", @@ -8446,9 +8702,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" @@ -8603,7 +8859,7 @@ dependencies = [ "hostname", "iana-time-zone", "idna 1.0.3", - "indexmap 2.9.0", + "indexmap 2.10.0", "indoc", "influxdb-line-protocol", "itertools 0.14.0", @@ -8638,7 +8894,7 @@ dependencies = [ "sha2", "sha3", "simdutf8", - "snafu 0.8.5", + "snafu 0.8.6", "snap", "strip-ansi-escapes", "syslog_loose", @@ -8691,9 +8947,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -8732,7 +8988,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -8767,7 +9023,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8820,14 +9076,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.0", + "webpki-roots 1.0.1", ] [[package]] name = "webpki-roots" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] @@ -8894,9 +9150,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.61.1" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", "windows-core", @@ -8924,7 +9180,7 @@ dependencies = [ "windows-interface", "windows-link", "windows-result", - "windows-strings 0.4.2", + "windows-strings", ] [[package]] @@ -8946,7 +9202,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -8957,14 +9213,14 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-numerics" @@ -8978,13 +9234,13 @@ dependencies = [ [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ + "windows-link", "windows-result", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-strings", ] [[package]] @@ -8996,15 +9252,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -9041,6 +9288,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -9074,9 +9330,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", @@ -9246,9 +9502,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -9269,7 +9525,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags", + "bitflags 2.9.1", ] [[package]] @@ -9299,9 +9555,9 @@ dependencies = [ [[package]] name = "xattr" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", "rustix 1.0.7", @@ -9342,28 +9598,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.25" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] @@ -9383,7 +9639,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", "synstructure", ] @@ -9423,14 +9679,14 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.104", ] [[package]] name = "zlib-rs" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" [[package]] name = "zstd" diff --git a/Cargo.toml b/Cargo.toml index a6088218..c3d70538 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.3.1" +version = "0.4.0-rc1" edition = "2021" description = "High-performance Rust flow processing engine" authors = ["chenquan "] @@ -21,6 +21,7 @@ futures-util = "0.3" serde = { version = "1", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" +serde_with = "1.6" humantime = "2.1.0" thiserror = "2.0" anyhow = "1.0" @@ -30,6 +31,7 @@ prometheus = "0.13" datafusion = { version = "47", features = ["avro", "pyarrow"] } datafusion-functions-json = "0.47.0" arrow-json = "55" +arrow-csv = "55" prost-reflect = "0.14.7" prost-types = "0.13.5" protobuf-parse = "3.7.2" diff --git a/README.md b/README.md index fd2c4e8b..d99439c0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ArkFlow

- +

English | [中文](README_zh.md) @@ -9,16 +9,20 @@ English | [中文](README_zh.md) [![Rust](https://github.com/arkflow-rs/arkflow/actions/workflows/rust.yml/badge.svg)](https://github.com/arkflow-rs/arkflow/actions/workflows/rust.yml) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) +[Latest docs](https://arkflow-rs.com/docs/intro) | [Dev docs](https://arkflow-rs.com/docs/next/intro) + ArkFlow - High-performance rust stream processing engine | Product Hunt -High-performance Rust stream processing engine, providing powerful data stream processing capabilities, supporting -multiple input/output sources and processors. +High performance Rust stream processing engine seamlessly integrates AI capabilities, +providing powerful real-time data processing and intelligent analysis. +It not only supports multiple input/output sources and processors, but also enables easy loading and execution of machine learning models, +enabling streaming data and inference, anomaly detection, and complex event processing. ## Cloud Native Landscape

-    - +    +

ArkFlow enlisted in the [CNCF Cloud Native Landscape](https://landscape.cncf.io/?item=app-definition-and-development--streaming-messaging--arkflow). diff --git a/README_zh.md b/README_zh.md index 49444255..6fe8fcbe 100644 --- a/README_zh.md +++ b/README_zh.md @@ -1,7 +1,7 @@ # ArkFlow

- +

[English](README.md) | 中文 @@ -9,15 +9,18 @@ [![Rust](https://github.com/arkflow-rs/arkflow/actions/workflows/rust.yml/badge.svg)](https://github.com/arkflow-rs/arkflow/actions/workflows/rust.yml) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) +[最新版文档](https://arkflow-rs.com/docs/intro) | [开发版文档](https://arkflow-rs.com/docs/next/intro) + ArkFlow - High-performance rust stream processing engine | Product Hunt -高性能Rust流处理引擎,提供强大的数据流处理能力,支持多种输入输出源和处理器。 +高性能Rust流处理引擎,无缝集成AI能力,提供强大的实时数据处理与智能分析。 +它不仅支持多种输入/输出源和处理器,更能轻松加载和执行机器学习模型,实现流式数据和推理、异常检测和复杂事件处理。 ## CNCF 云原生技术全景图

-    - +    +

ArkFlow 已收录在 [CNCF Cloud Native 云原生技术全景图](https://landscape.cncf.io/?item=app-definition-and-development--streaming-messaging--arkflow)中。 @@ -25,6 +28,7 @@ ArkFlow 已收录在 [CNCF Cloud Native 云原生技术全景图](https://landsc ## 特性 - **高性能**:基于Rust和Tokio异步运行时构建,提供卓越的性能和低延迟 +- **智能分析**:无缝集成AI模型,提供强大的智能分析功能 - **多种数据源**:支持Kafka、MQTT、HTTP、文件等多种输入输出源 - **强大的处理能力**:内置SQL查询、Python脚本、JSON处理、Protobuf编解码、批处理等多种处理器 - **可扩展**:模块化设计,易于扩展新的输入、缓冲区、输出和处理器组件 @@ -282,4 +286,11 @@ ArkFlow 使用 [Apache License 2.0](LICENSE) 许可证。 Discord: https://discord.gg/CwKhzb8pux +微信社区群: + +wx + +您可以在群内提出任何需要改进的地方,我们会考虑合理性并尽快修改。 +如果您发现 bug 请及时提 [issue](https://github.com/arkflow-rs/arkflow/issues/new?template=bug_report.md),我们会尽快确认并修改。 + 如果你喜欢或正在使用这个项目来学习或开始你的解决方案,请给它一个star⭐。谢谢! diff --git a/crates/arkflow-core/Cargo.toml b/crates/arkflow-core/Cargo.toml index 181deece..d1986276 100644 --- a/crates/arkflow-core/Cargo.toml +++ b/crates/arkflow-core/Cargo.toml @@ -27,4 +27,4 @@ clap = { workspace = true } colored = { workspace = true } flume = { workspace = true } axum = { workspace = true } -num_cpus = "1.16.0" \ No newline at end of file +num_cpus = "1.17.0" \ No newline at end of file diff --git a/crates/arkflow-core/src/cli/mod.rs b/crates/arkflow-core/src/cli/mod.rs index a1300ab6..f2d1686c 100644 --- a/crates/arkflow-core/src/cli/mod.rs +++ b/crates/arkflow-core/src/cli/mod.rs @@ -31,7 +31,7 @@ impl Default for Cli { impl Cli { pub fn parse(&mut self) -> Result<(), Box> { let matches = Command::new("arkflow") - .version("0.3.1") + .version("0.4.0-rc1") .author("chenquan") .about("High-performance Rust stream processing engine, providing powerful data stream processing capabilities, supporting multiple input/output sources and processors.") .arg( diff --git a/crates/arkflow-core/src/codec/mod.rs b/crates/arkflow-core/src/codec/mod.rs index 80cf7200..ef66b72d 100644 --- a/crates/arkflow-core/src/codec/mod.rs +++ b/crates/arkflow-core/src/codec/mod.rs @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -use crate::{Error, MessageBatch, Resource}; +use crate::{Bytes, Error, MessageBatch, Resource}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::sync::{Arc, RwLock}; @@ -21,11 +21,11 @@ lazy_static::lazy_static! { } pub trait Encoder: Send + Sync { - fn encode(&self, b: MessageBatch) -> Result; + fn encode(&self, b: MessageBatch) -> Result, Error>; } pub trait Decoder: Send + Sync { - fn decode(&self, b: MessageBatch) -> Result; + fn decode(&self, b: Vec) -> Result; } pub trait Codec: Encoder + Decoder {} diff --git a/crates/arkflow-core/src/lib.rs b/crates/arkflow-core/src/lib.rs index 2094e4dc..c7f73d0a 100644 --- a/crates/arkflow-core/src/lib.rs +++ b/crates/arkflow-core/src/lib.rs @@ -39,6 +39,7 @@ pub mod stream; pub mod temporary; pub const DEFAULT_BINARY_VALUE_FIELD: &str = "__value__"; +pub const DEFAULT_RECORD_BATCH: usize = 8192; /// Error in the stream processing engine #[derive(Error, Debug)] @@ -250,8 +251,6 @@ impl From for RecordBatch { } } - - impl TryFrom> for MessageBatch { type Error = Error; @@ -281,3 +280,31 @@ impl DerefMut for MessageBatch { &mut self.record_batch } } + +pub fn split_batch(batch_to_split: RecordBatch, size: usize) -> Vec { + let size = size.max(1); + let total_rows = batch_to_split.num_rows(); + if total_rows <= DEFAULT_RECORD_BATCH { + return vec![batch_to_split]; + } + + let (chunk_size, capacity) = if size * DEFAULT_RECORD_BATCH < total_rows { + (total_rows.div_ceil(size), size) + } else { + ( + DEFAULT_RECORD_BATCH, + total_rows.div_ceil(DEFAULT_RECORD_BATCH), + ) + }; + + let mut chunks = Vec::with_capacity(capacity); + let mut offset = 0; + while offset < total_rows { + let length = std::cmp::min(chunk_size, total_rows - offset); + let slice = batch_to_split.slice(offset, length); + chunks.push(slice); + offset += length; + } + + chunks +} diff --git a/crates/arkflow-core/src/stream/mod.rs b/crates/arkflow-core/src/stream/mod.rs index 1a63c1ea..378b9d52 100644 --- a/crates/arkflow-core/src/stream/mod.rs +++ b/crates/arkflow-core/src/stream/mod.rs @@ -238,7 +238,7 @@ impl Stream { error!("Failed to flush buffer: {}", e); } - info!("Buffer flushed=====>"); + info!("Buffer flushed"); match buffer.read().await { Ok(Some(v)) => { diff --git a/crates/arkflow-plugin/Cargo.toml b/crates/arkflow-plugin/Cargo.toml index 30f9958b..ef3bcd2f 100644 --- a/crates/arkflow-plugin/Cargo.toml +++ b/crates/arkflow-plugin/Cargo.toml @@ -17,6 +17,7 @@ futures-util = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } +serde_with = { workspace = true } toml = { workspace = true } humantime = { workspace = true } tracing = { workspace = true } @@ -31,10 +32,12 @@ datafusion-table-providers = { version = "0.5", features = [ ballista = { git = "https://github.com/apache/datafusion-ballista", rev = "97c919274d9de496b630e66c12ad29c3fccd110b" } duckdb = { version = "=1.3.0", package = "spiceai_duckdb_fork" } arrow-json = { workspace = true } +arrow-csv = { workspace = true } prost-reflect = { workspace = true } prost-types = { workspace = true } protobuf-parse = { workspace = true } protobuf = { workspace = true } +parquet = "54" lazy_static = { workspace = true } axum = { workspace = true } reqwest = { workspace = true } @@ -44,7 +47,7 @@ base64 = "0.22" colored = { workspace = true } flume = { workspace = true } rumqttc = "0.24.0" - +chrono= "0.4" # Kafka aws-msk-iam-sasl-signer = "1.0.0" rdkafka = { version = "0.37", features = [ @@ -58,7 +61,7 @@ rdkafka-sys = "4.8.0" sasl2-sys = { version = "0.1.22", features = ["vendored"] } # redis -redis = { version = "0.31", features = ["tokio-native-tls-comp", "aio", "connection-manager", "cluster-async"] } +redis = { version = "0.32", features = ["tokio-native-tls-comp", "aio", "connection-manager", "cluster-async"] } # vrl https://github.com/vectordotdev/vrl vrl = { version = "0.24", features = ["value", "compiler", "stdlib"] } @@ -73,8 +76,11 @@ sqlx = { workspace = true } tokio-tungstenite = { version = "0.26", features = ["native-tls"] } # NATS -async-nats = "0.41" +async-nats = "0.42" +# Compressor +bzip2= "0.5" +flate2= "1.0" # modbus tokio-modbus = { version = "0.16", default-features = false, features = ["tcp"] } @@ -90,7 +96,7 @@ once_cell = "1.19.0" futures = { workspace = true } tokio-stream = "0.1.17" url = "2.5.4" -num_cpus = "1.16.0" +num_cpus = "1.17.0" [dev-dependencies] tempfile = { workspace = true } diff --git a/crates/arkflow-plugin/src/buffer/join.rs b/crates/arkflow-plugin/src/buffer/join.rs index d7e4f4ea..db940df5 100644 --- a/crates/arkflow-plugin/src/buffer/join.rs +++ b/crates/arkflow-plugin/src/buffer/join.rs @@ -12,10 +12,12 @@ * limitations under the License. */ use arkflow_core::codec::{CodecConfig, Decoder}; -use arkflow_core::{Error, MessageBatch}; +use arkflow_core::{split_batch, Error, MessageBatch, DEFAULT_BINARY_VALUE_FIELD}; use datafusion::arrow; use datafusion::arrow::array::RecordBatch; use datafusion::arrow::datatypes::Schema; +use datafusion::common::TableReference; +use datafusion::datasource::MemTable; use datafusion::prelude::SessionContext; use futures_util::{stream, StreamExt}; use serde::{Deserialize, Serialize}; @@ -26,28 +28,38 @@ use tracing::trace; #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct JoinConfig { pub(crate) query: String, + pub(crate) value_field: Option, pub(crate) codec: CodecConfig, + #[serde(default = "default_thread_num")] + pub(crate) thread_num: usize, } -pub struct JoinOperation { +pub(crate) struct JoinOperation { query: String, + value_field: Option, codec: Arc, input_names: HashSet, + thread_num: usize, } + impl JoinOperation { - pub fn new( + pub(crate) fn new( query: String, + value_field: Option, + thread_num: usize, codec: Arc, input_names: HashSet, ) -> Result { Ok(Self { query, + value_field, + thread_num, codec, input_names, }) } - pub async fn join_operation( + pub(crate) async fn join_operation( &self, ctx: &SessionContext, table_sources: Vec, @@ -60,13 +72,30 @@ impl JoinOperation { let mut current_input_names = Vec::with_capacity(table_sources.len()); for x in table_sources { - let x = x?; - let input_name_opt = x.get_input_name(); + let msg_batch = x?; + let input_name_opt = msg_batch.get_input_name(); let Some(input_name) = input_name_opt else { continue; }; - ctx.register_batch(&input_name, x.into()) - .map_err(|e| Error::Process(format!("Failed to register table source: {}", e)))?; + + let vec_rb = split_batch(msg_batch.into(), self.thread_num); + let mut batches = vec_rb.into_iter().peekable(); + let schema = if let Some(batch) = batches.peek() { + batch.schema() + } else { + Arc::new(Schema::empty()) + }; + let batches = batches.map(|b| vec![b]).collect::>(); + let provider = MemTable::try_new(schema, batches) + .map_err(|e| Error::Process(format!("Failed to create MemTable: {}", e)))?; + + ctx.register_table( + TableReference::Bare { + table: input_name.clone().into(), + }, + Arc::new(provider), + ) + .map_err(|e| Error::Process(format!("Failed to register table source: {}", e)))?; current_input_names.push(input_name); } @@ -105,9 +134,18 @@ impl JoinOperation { async fn decode_batch(&self, batch: MessageBatch) -> Result { let codec = Arc::clone(&self.codec); let option = batch.get_input_name(); - - let mut result = codec.decode(batch)?; + let result = batch.to_binary( + self.value_field + .as_deref() + .unwrap_or(DEFAULT_BINARY_VALUE_FIELD), + )?; + let mut result = + codec.decode(result.into_iter().map(|x| x.to_vec()).collect::>())?; result.set_input_name(option); Ok(result) } } + +fn default_thread_num() -> usize { + num_cpus::get() +} diff --git a/crates/arkflow-plugin/src/buffer/window.rs b/crates/arkflow-plugin/src/buffer/window.rs index 0b8a5d1a..5db9fced 100644 --- a/crates/arkflow-plugin/src/buffer/window.rs +++ b/crates/arkflow-plugin/src/buffer/window.rs @@ -74,7 +74,13 @@ impl BaseWindow { .map(|name| name.clone()) .collect::>(); - JoinOperation::new(config.query, codec, input_names) + JoinOperation::new( + config.query, + config.value_field, + config.thread_num, + codec, + input_names, + ) }) .transpose()?; diff --git a/crates/arkflow-plugin/src/codec/json.rs b/crates/arkflow-plugin/src/codec/json.rs index 87c2ef39..c04ff93a 100644 --- a/crates/arkflow-plugin/src/codec/json.rs +++ b/crates/arkflow-plugin/src/codec/json.rs @@ -13,23 +13,15 @@ */ use crate::component; use arkflow_core::codec::{Codec, CodecBuilder, Decoder, Encoder}; -use arkflow_core::{codec, Bytes, Error, MessageBatch, Resource, DEFAULT_BINARY_VALUE_FIELD}; +use arkflow_core::{codec, Bytes, Error, MessageBatch, Resource}; use datafusion::arrow; -use serde::{Deserialize, Serialize}; use serde_json::Value; use std::sync::Arc; -#[derive(Debug, Clone, Serialize, Deserialize)] -struct JsonCodecConfig { - value_field: Option, -} - -struct JsonCodec { - config: JsonCodecConfig, -} +struct JsonCodec; impl Encoder for JsonCodec { - fn encode(&self, batch: MessageBatch) -> Result { + fn encode(&self, batch: MessageBatch) -> Result, Error> { let mut buf = Vec::new(); let mut writer = arrow::json::LineDelimitedWriter::new(&mut buf); writer @@ -41,51 +33,28 @@ impl Encoder for JsonCodec { let json_str = String::from_utf8(buf) .map_err(|e| Error::Process(format!("Conversion to UTF-8 string failed:{}", e)))?; let new_batch: Vec = json_str.lines().map(|s| s.as_bytes().to_vec()).collect(); - - Ok(MessageBatch::new_binary_with_field_name( - new_batch, - self.config.value_field.as_deref(), - )?) + Ok(new_batch) } } impl Decoder for JsonCodec { - fn decode(&self, b: MessageBatch) -> Result { - let result = b.to_binary( - self.config - .value_field - .as_deref() - .unwrap_or(DEFAULT_BINARY_VALUE_FIELD), - )?; - let json_data: Vec = result.join(b"\n" as &[u8]); + fn decode(&self, b: Vec) -> Result { + let json_data: Vec = b.join(b"\n" as &[u8]); let arrow = component::json::try_to_arrow(&json_data, None)?; Ok(MessageBatch::new_arrow(arrow)) } } -impl JsonCodec { - fn new(config: JsonCodecConfig) -> Result { - Ok(JsonCodec { config }) - } -} - struct JsonCodecBuilder; impl CodecBuilder for JsonCodecBuilder { fn build( &self, _name: Option<&String>, - config: &Option, + _config: &Option, _resource: &Resource, ) -> Result, Error> { - if config.is_none() { - return Err(Error::Config( - "Json codec configuration is missing".to_string(), - )); - } - - let config: JsonCodecConfig = serde_json::from_value(config.clone().unwrap())?; - Ok(Arc::new(JsonCodec::new(config)?)) + Ok(Arc::new(JsonCodec)) } } diff --git a/crates/arkflow-plugin/src/input/file.rs b/crates/arkflow-plugin/src/input/file.rs new file mode 100644 index 00000000..d7565315 --- /dev/null +++ b/crates/arkflow-plugin/src/input/file.rs @@ -0,0 +1,424 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +use crate::udf; +use arkflow_core::input::{Ack, Input, InputBuilder, NoopAck}; +use arkflow_core::{input, Error, MessageBatch, Resource}; +use async_trait::async_trait; +use ballista::prelude::SessionContextExt; +use datafusion::datasource::object_store::ObjectStoreUrl; +use datafusion::execution::options::ArrowReadOptions; +use datafusion::execution::SendableRecordBatchStream; +use datafusion::prelude::{ + AvroReadOptions, CsvReadOptions, DataFrame, NdJsonReadOptions, ParquetReadOptions, + SessionContext, +}; +use futures_util::TryStreamExt; +use hdfs_native_object_store::HdfsObjectStore; +use object_store::aws::AmazonS3Builder; +use object_store::azure::MicrosoftAzureBuilder; +use object_store::gcp::GoogleCloudStorageBuilder; +use object_store::http::HttpBuilder; +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use std::collections::HashMap; +use std::sync::Arc; +use tokio::sync::Mutex; +use tokio_util::sync::CancellationToken; +use tracing::error; +use url::Url; + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct FileInputConfig { + input_type: InputType, + ballista: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BallistaConfig { + /// Ballista server url + pub remote_url: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type", rename_all = "snake_case")] +enum InputType { + /// Avro input + Avro(FileFormatConfig), + /// Arrow input + Arrow(FileFormatConfig), + /// JSON input + Json(FileFormatConfig), + /// CSV input + Csv(FileFormatConfig), + /// Parquet input + Parquet(FileFormatConfig), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct FileFormatConfig { + /// file path + path: String, + /// object store config + store: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type", rename_all = "snake_case")] +enum Store { + S3(AwsS3Config), + Gs(GoogleCloudStorageConfig), + Az(MicrosoftAzureConfig), + Http(HttpConfig), + Hdfs(HdfsConfig), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct AwsS3Config { + /// S3 endpoint URL (optional, uses AWS default if not specified) + endpoint: Option, + /// AWS region + region: Option, + /// S3 bucket name + bucket_name: String, + /// AWS access key ID + access_key_id: String, + /// AWS secret access key + secret_access_key: String, + /// Allow HTTP connections (defaults to false for security) + #[serde(default = "default_disallow_http")] + allow_http: bool, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct GoogleCloudStorageConfig { + /// GCS bucket to connect to + bucket_name: String, + /// Optional custom endpoint (defaults to GCS public endpoint if `None`) + url: Option, + /// Path to a service account JSON key file + service_account_path: Option, + /// Raw JSON key contents + service_account_key: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct MicrosoftAzureConfig { + /// Azure blob endpoint URL (optional, uses Azure default if not specified) + url: Option, + endpoint: Option, + /// Azure storage account name + account: String, + /// Azure shared access key + access_key: Option, + /// Azure container name + container_name: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct HttpConfig { + url: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct HdfsConfig { + url: String, + ha_config: Option>, +} + +struct FileInput { + input_name: Option, + config: FileInputConfig, + stream: Arc>>, + cancellation_token: CancellationToken, +} + +impl FileInput { + fn new(name: Option<&String>, config: FileInputConfig) -> Result { + let cancellation_token = CancellationToken::new(); + Ok(Self { + input_name: name.cloned(), + config, + stream: Arc::new(Mutex::new(None)), + cancellation_token, + }) + } + + async fn read_df(&self, ctx: &mut SessionContext) -> Result { + // Register object store if configured + let store = match &self.config.input_type { + InputType::Avro(c) + | InputType::Arrow(c) + | InputType::Json(c) + | InputType::Csv(c) + | InputType::Parquet(c) => &c.store, + }; + + if let Some(object_store) = store { + self.object_store(ctx, object_store)?; + } + + match self.config.input_type { + InputType::Avro(ref c) => ctx.read_avro(&c.path, AvroReadOptions::default()).await, + InputType::Arrow(ref c) => ctx.read_arrow(&c.path, ArrowReadOptions::default()).await, + InputType::Json(ref c) => ctx.read_json(&c.path, NdJsonReadOptions::default()).await, + InputType::Csv(ref c) => ctx.read_csv(&c.path, CsvReadOptions::default()).await, + InputType::Parquet(ref c) => { + ctx.read_parquet(&c.path, ParquetReadOptions::default()) + .await + } + } + .map_err(|e| Error::Process(format!("Read input failed: {}", e))) + } + + /// Create an object store + fn object_store(&self, ctx: &SessionContext, object_store: &Store) -> Result<(), Error> { + match object_store { + Store::S3(config) => self.aws_s3_object_store(ctx, config), + Store::Gs(config) => self.google_cloud_storage(ctx, config), + Store::Az(config) => self.microsoft_azure_store(ctx, config), + Store::Http(config) => self.http_store(ctx, config), + Store::Hdfs(config) => self.hdfs_store(ctx, config), + } + } + + /// Create an AWS S3 object store + fn aws_s3_object_store( + &self, + ctx: &SessionContext, + aws_s3_config: &AwsS3Config, + ) -> Result<(), Error> { + let mut s3_builder = AmazonS3Builder::new() + .with_bucket_name(&aws_s3_config.bucket_name) + .with_access_key_id(&aws_s3_config.access_key_id) + .with_secret_access_key(&aws_s3_config.secret_access_key) + .with_allow_http(aws_s3_config.allow_http); + + if let Some(endpoint) = aws_s3_config.endpoint.as_ref() { + s3_builder = s3_builder.with_endpoint(endpoint); + } + if let Some(region) = aws_s3_config.region.as_ref() { + s3_builder = s3_builder.with_region(region); + } + + let s3 = s3_builder + .build() + .map_err(|e| Error::Config(format!("Failed to create S3 client: {}", e)))?; + + let object_store_url = + ObjectStoreUrl::parse(format!("s3://{}", &aws_s3_config.bucket_name)) + .map_err(|e| Error::Config(format!("Failed to parse S3 URL: {}", e)))?; + let url: &Url = object_store_url.as_ref(); + ctx.register_object_store(url, Arc::new(s3)); + Ok(()) + } + + fn google_cloud_storage( + &self, + ctx: &SessionContext, + config: &GoogleCloudStorageConfig, + ) -> Result<(), Error> { + let mut google_cloud_storage_builder = + GoogleCloudStorageBuilder::new().with_bucket_name(&config.bucket_name); + if let Some(url) = &config.url { + google_cloud_storage_builder = google_cloud_storage_builder.with_url(url); + } + + match (&config.service_account_path, &config.service_account_key) { + (Some(path), None) => { + google_cloud_storage_builder = + google_cloud_storage_builder.with_service_account_path(path) + } + (None, Some(key)) => { + google_cloud_storage_builder = + google_cloud_storage_builder.with_service_account_key(key) + } + (None, None) => return Err(Error::Config("GCS auth is missing".into())), + (Some(_), Some(_)) => { + return Err(Error::Config( + "Specify either service_account_path or service_account_key, not both".into(), + )) + } + }; + + let google_cloud_storage = google_cloud_storage_builder + .build() + .map_err(|e| Error::Config(format!("Failed to create GCS client: {}", e)))?; + + let object_store_url = ObjectStoreUrl::parse(format!("gs://{}", &config.bucket_name)) + .map_err(|e| Error::Config(format!("Failed to parse GCS URL: {}", e)))?; + let url: &Url = object_store_url.as_ref(); + ctx.register_object_store(url, Arc::new(google_cloud_storage)); + Ok(()) + } + + fn microsoft_azure_store( + &self, + ctx: &SessionContext, + config: &MicrosoftAzureConfig, + ) -> Result<(), Error> { + let mut azure_builder = MicrosoftAzureBuilder::new() + .with_account(&config.account) + .with_container_name(&config.container_name); + + if let Some(access_key) = &config.access_key { + azure_builder = azure_builder.with_access_key(access_key); + } + if let Some(url) = &config.url { + azure_builder = azure_builder.with_url(url); + } + if let Some(endpoint) = &config.endpoint { + azure_builder = azure_builder + .with_endpoint(endpoint.clone()) + .with_allow_http(true); + } + + let azure_storage = azure_builder + .build() + .map_err(|e| Error::Config(format!("Failed to create AZ client: {}", e)))?; + + let object_store_url = ObjectStoreUrl::parse(format!("az://{}", &config.container_name)) + .map_err(|e| Error::Config(format!("Failed to parse AZ URL: {}", e)))?; + let url: &Url = object_store_url.as_ref(); + ctx.register_object_store(url, Arc::new(azure_storage)); + Ok(()) + } + + fn http_store(&self, ctx: &SessionContext, config: &HttpConfig) -> Result<(), Error> { + let http_builder = HttpBuilder::new().with_url(&config.url); + let http_storage = http_builder + .build() + .map_err(|e| Error::Config(format!("Failed to create HTTP client: {}", e)))?; + let object_store_url = ObjectStoreUrl::parse(&config.url) + .map_err(|e| Error::Config(format!("Failed to parse HTTP URL: {}", e)))?; + let url: &Url = object_store_url.as_ref(); + ctx.register_object_store(url, Arc::new(http_storage)); + Ok(()) + } + + fn hdfs_store(&self, ctx: &SessionContext, config: &HdfsConfig) -> Result<(), Error> { + let hdfs_storage_result = if let Some(ha_config) = &config.ha_config { + HdfsObjectStore::with_config(&config.url, ha_config.clone()) + } else { + HdfsObjectStore::with_url(&config.url) + }; + let hdfs_storage = hdfs_storage_result + .map_err(|e| Error::Config(format!("Failed to create HDFS client: {}", e)))?; + + let object_store_url = ObjectStoreUrl::parse(&config.url) + .map_err(|e| Error::Config(format!("Failed to parse HDFS URL: {}", e)))?; + let url: &Url = object_store_url.as_ref(); + ctx.register_object_store(url, Arc::new(hdfs_storage)); + Ok(()) + } + + async fn create_session_context(&self) -> Result { + let mut ctx = if let Some(ballista) = &self.config.ballista { + SessionContext::remote(&ballista.remote_url) + .await + .map_err(|e| Error::Process(format!("Create session context failed: {}", e)))? + } else { + SessionContext::new() + }; + + udf::init(&mut ctx)?; + datafusion_functions_json::register_all(&mut ctx) + .map_err(|e| Error::Process(format!("Registration JSON function failed: {}", e)))?; + Ok(ctx) + } +} + +#[async_trait] +impl Input for FileInput { + async fn connect(&self) -> Result<(), Error> { + let stream_arc = self.stream.clone(); + let mut stream_lock = stream_arc.lock().await; + + let mut ctx = self.create_session_context().await?; + let df = self.read_df(&mut ctx).await?; + let stream = df + .execute_stream() + .await + .map_err(|e| Error::Process(format!("Failed to execute file stream: {}", e)))?; + stream_lock.replace(stream); + Ok(()) + } + + async fn read(&self) -> Result<(MessageBatch, Arc), Error> { + let stream_arc = self.stream.clone(); + let mut stream_lock = stream_arc.lock().await; + if stream_lock.is_none() { + return Err(Error::Process("Stream is None".to_string())); + } + + let cancellation_token = self.cancellation_token.clone(); + + let stream_lock = stream_lock.as_mut().unwrap(); + let mut stream_pin = stream_lock.as_mut(); + tokio::select! { + _ = cancellation_token.cancelled() => { + Err(Error::EOF) + } + result = stream_pin.try_next() => { + let value = result.map_err(|e| { + error!("Failed to read: {}:",e); + Error::EOF + })?; + let Some(x) = value else { + return Err(Error::EOF); + }; + let mut msg = MessageBatch::new_arrow(x); + msg.set_input_name(self.input_name.clone()); + + Ok((msg, Arc::new(NoopAck))) + } + + } + } + + async fn close(&self) -> Result<(), Error> { + self.cancellation_token.clone().cancel(); + Ok(()) + } +} + +struct FileBuilder; + +impl InputBuilder for FileBuilder { + fn build( + &self, + name: Option<&String>, + config: &Option, + _resource: &Resource, + ) -> Result, Error> { + if config.is_none() { + return Err(Error::Config( + "File input configuration is missing".to_string(), + )); + } + + let config: FileInputConfig = serde_json::from_value(config.clone().unwrap()) + .map_err(|e| Error::Config(format!("Failed to parse File input config: {}", e)))?; + Ok(Arc::new(FileInput::new(name, config)?)) + } +} + +pub fn init() -> Result<(), Error> { + input::register_input_builder("file", Arc::new(FileBuilder))?; + Ok(()) +} + +fn default_disallow_http() -> bool { + false +} diff --git a/crates/arkflow-plugin/src/input/mod.rs b/crates/arkflow-plugin/src/input/mod.rs index a615fa64..67c35e07 100644 --- a/crates/arkflow-plugin/src/input/mod.rs +++ b/crates/arkflow-plugin/src/input/mod.rs @@ -18,6 +18,7 @@ use arkflow_core::Error; +pub mod file; pub mod generate; pub mod http; pub mod kafka; @@ -42,5 +43,6 @@ pub fn init() -> Result<(), Error> { websocket::init()?; multiple_inputs::init()?; modbus::init()?; + file::init()?; Ok(()) } diff --git a/crates/arkflow-plugin/src/input/sql.rs b/crates/arkflow-plugin/src/input/sql.rs index 44de0415..42e088c7 100644 --- a/crates/arkflow-plugin/src/input/sql.rs +++ b/crates/arkflow-plugin/src/input/sql.rs @@ -20,8 +20,6 @@ use async_trait::async_trait; use crate::udf; use ballista::prelude::SessionContextExt; -use datafusion::datasource::object_store::ObjectStoreUrl; -use datafusion::execution::options::ArrowReadOptions; use datafusion::physical_plan::SendableRecordBatchStream; use datafusion::prelude::*; use datafusion_table_providers::sql::db_connection_pool::duckdbpool::DuckDbConnectionPool; @@ -34,18 +32,12 @@ use datafusion_table_providers::{ }; use duckdb::AccessMode; use futures_util::stream::TryStreamExt; -use hdfs_native_object_store::HdfsObjectStore; -use object_store::aws::AmazonS3Builder; -use object_store::azure::MicrosoftAzureBuilder; -use object_store::gcp::GoogleCloudStorageBuilder; -use object_store::http::HttpBuilder; use serde::{Deserialize, Serialize}; use std::sync::Arc; use std::time::Duration; use tokio::sync::Mutex; use tokio_util::sync::CancellationToken; use tracing::error; -use url::Url; const DEFAULT_NAME: &str = "flow"; @@ -67,16 +59,6 @@ pub struct BallistaConfig { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] enum InputType { - /// Avro input - Avro(AvroConfig), - /// Arrow input - Arrow(ArrowConfig), - /// JSON input - Json(JsonConfig), - /// CSV input - Csv(CsvConfig), - /// Parquet input - Parquet(ParquetConfig), /// Mysql input Mysql(MysqlConfig), /// Duckdb input @@ -87,56 +69,6 @@ enum InputType { Sqlite(SqliteConfig), } -#[derive(Debug, Clone, Serialize, Deserialize)] -struct AvroConfig { - /// Table name (used in SQL queries) - table_name: Option, - /// avro file path - path: String, - /// object store config - object_store: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct ArrowConfig { - /// Table name (used in SQL queries) - table_name: Option, - /// arrow file path - path: String, - /// object store config - object_store: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct JsonConfig { - /// Table name (used in SQL queries) - table_name: Option, - /// json file path - path: String, - /// object store config - object_store: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct CsvConfig { - /// Table name (used in SQL queries) - table_name: Option, - /// csv file path - path: String, - /// object store config - object_store: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct ParquetConfig { - /// Table name (used in SQL queries) - table_name: Option, - /// parquet file path - path: String, - /// object store config - object_store: Option, -} - #[derive(Debug, Clone, Serialize, Deserialize)] struct MysqlConfig { /// Table name (used in SQL queries) @@ -181,69 +113,6 @@ struct PostgresSslConfig { root_cert: Option, } -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "type", rename_all = "snake_case")] -enum ObjectStore { - S3(AwsS3Config), - Gs(GoogleCloudStorageConfig), - Az(MicrosoftAzureConfig), - Http(HttpConfig), - Hdfs(HdfsConfig), -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct AwsS3Config { - /// S3 endpoint URL (optional, uses AWS default if not specified) - endpoint: Option, - /// AWS region - region: Option, - /// S3 bucket name - bucket_name: String, - /// AWS access key ID - access_key_id: String, - /// AWS secret access key - secret_access_key: String, - /// Allow HTTP connections (defaults to false for security) - #[serde(default = "default_allow_http")] - allow_http: bool, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct GoogleCloudStorageConfig { - /// GCS bucket to connect to - bucket_name: String, - /// Optional custom endpoint (defaults to GCS public endpoint if `None`) - url: Option, - /// Path to a service account JSON key file - service_account_path: Option, - /// Raw JSON key contents - service_account_key: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct MicrosoftAzureConfig { - /// Azure blob endpoint URL (optional, uses Azure default if not specified) - url: Option, - endpoint: Option, - /// Azure storage account name - account: String, - /// Azure shared access key - access_key: Option, - /// Azure container name - container_name: String, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct HttpConfig { - url: String, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -struct HdfsConfig { - url: String, - ha_config: Option>, -} - #[derive(Debug, Clone, Serialize, Deserialize)] struct SqliteConfig { /// Table name (used in SQL queries) @@ -339,46 +208,6 @@ impl Input for SqlInput { impl SqlInput { async fn init_connect(&self, ctx: &mut SessionContext) -> Result<(), Error> { match self.sql_config.input_type { - InputType::Avro(ref c) => { - let table_name = c.table_name.as_deref().unwrap_or(DEFAULT_NAME); - if let Some(object_store) = &c.object_store { - self.object_store(ctx, object_store)?; - } - ctx.register_avro(table_name, &c.path, AvroReadOptions::default()) - .await - } - InputType::Arrow(ref c) => { - let table_name = c.table_name.as_deref().unwrap_or(DEFAULT_NAME); - if let Some(object_store) = &c.object_store { - self.object_store(ctx, object_store)?; - } - ctx.register_arrow(table_name, &c.path, ArrowReadOptions::default()) - .await - } - InputType::Json(ref c) => { - let table_name = c.table_name.as_deref().unwrap_or(DEFAULT_NAME); - if let Some(object_store) = &c.object_store { - self.object_store(ctx, object_store)?; - } - ctx.register_json(table_name, &c.path, NdJsonReadOptions::default()) - .await - } - InputType::Csv(ref c) => { - let table_name = c.table_name.as_deref().unwrap_or(DEFAULT_NAME); - if let Some(object_store) = &c.object_store { - self.object_store(ctx, object_store)?; - } - ctx.register_csv(table_name, &c.path, CsvReadOptions::default()) - .await - } - InputType::Parquet(ref c) => { - let table_name = c.table_name.as_deref().unwrap_or(DEFAULT_NAME); - if let Some(object_store) = &c.object_store { - self.object_store(ctx, object_store)?; - } - ctx.register_parquet(table_name, &c.path, ParquetReadOptions::default()) - .await - } InputType::Mysql(ref c) => { let name = c.name.as_deref().unwrap_or(DEFAULT_NAME); let mut params = HashMap::from([ @@ -469,7 +298,6 @@ impl SqlInput { Ok(()) } } - .map_err(|e| Error::Process(format!("Registration input failed: {}", e))) } /// Create a session context @@ -487,147 +315,6 @@ impl SqlInput { .map_err(|e| Error::Process(format!("Registration JSON function failed: {}", e)))?; Ok(ctx) } - - /// Create an object store - fn object_store(&self, ctx: &SessionContext, object_store: &ObjectStore) -> Result<(), Error> { - match object_store { - ObjectStore::S3(config) => self.aws_s3_object_store(ctx, config), - ObjectStore::Gs(config) => self.google_cloud_storage(ctx, config), - ObjectStore::Az(config) => self.microsoft_azure_store(ctx, config), - ObjectStore::Http(config) => self.http_store(ctx, config), - ObjectStore::Hdfs(config) => self.hdfs_store(ctx, config), - } - } - - /// Create an AWS S3 object store - fn aws_s3_object_store( - &self, - ctx: &SessionContext, - aws_s3_config: &AwsS3Config, - ) -> Result<(), Error> { - let mut s3_builder = AmazonS3Builder::new() - .with_bucket_name(&aws_s3_config.bucket_name) - .with_access_key_id(&aws_s3_config.access_key_id) - .with_secret_access_key(&aws_s3_config.secret_access_key) - .with_allow_http(aws_s3_config.allow_http); - - if let Some(endpoint) = aws_s3_config.endpoint.as_ref() { - s3_builder = s3_builder.with_endpoint(endpoint); - } - if let Some(region) = aws_s3_config.region.as_ref() { - s3_builder = s3_builder.with_region(region); - } - - let s3 = s3_builder - .build() - .map_err(|e| Error::Config(format!("Failed to create S3 client: {}", e)))?; - - let object_store_url = - ObjectStoreUrl::parse(format!("s3://{}", &aws_s3_config.bucket_name)) - .map_err(|e| Error::Config(format!("Failed to parse S3 URL: {}", e)))?; - let url: &Url = object_store_url.as_ref(); - ctx.register_object_store(url, Arc::new(s3)); - Ok(()) - } - - fn google_cloud_storage( - &self, - ctx: &SessionContext, - config: &GoogleCloudStorageConfig, - ) -> Result<(), Error> { - let mut google_cloud_storage_builder = - GoogleCloudStorageBuilder::new().with_bucket_name(&config.bucket_name); - if let Some(url) = &config.url { - google_cloud_storage_builder = google_cloud_storage_builder.with_url(url); - } - - match (&config.service_account_path, &config.service_account_key) { - (Some(path), None) => { - google_cloud_storage_builder = - google_cloud_storage_builder.with_service_account_path(path) - } - (None, Some(key)) => { - google_cloud_storage_builder = - google_cloud_storage_builder.with_service_account_key(key) - } - (None, None) => return Err(Error::Config("GCS auth is missing".into())), - (Some(_), Some(_)) => { - return Err(Error::Config( - "Specify either service_account_path or service_account_key, not both".into(), - )) - } - }; - - let google_cloud_storage = google_cloud_storage_builder - .build() - .map_err(|e| Error::Config(format!("Failed to create GCS client: {}", e)))?; - - let object_store_url = ObjectStoreUrl::parse(format!("gs://{}", &config.bucket_name)) - .map_err(|e| Error::Config(format!("Failed to parse GCS URL: {}", e)))?; - let url: &Url = object_store_url.as_ref(); - ctx.register_object_store(url, Arc::new(google_cloud_storage)); - Ok(()) - } - - fn microsoft_azure_store( - &self, - ctx: &SessionContext, - config: &MicrosoftAzureConfig, - ) -> Result<(), Error> { - let mut azure_builder = MicrosoftAzureBuilder::new() - .with_account(&config.account) - .with_container_name(&config.container_name); - - if let Some(access_key) = &config.access_key { - azure_builder = azure_builder.with_access_key(access_key); - } - if let Some(url) = &config.url { - azure_builder = azure_builder.with_url(url); - } - if let Some(endpoint) = &config.endpoint { - azure_builder = azure_builder - .with_endpoint(endpoint.clone()) - .with_allow_http(true); - } - - let azure_storage = azure_builder - .build() - .map_err(|e| Error::Config(format!("Failed to create AZ client: {}", e)))?; - - let object_store_url = ObjectStoreUrl::parse(format!("az://{}", &config.container_name)) - .map_err(|e| Error::Config(format!("Failed to parse AZ URL: {}", e)))?; - let url: &Url = object_store_url.as_ref(); - ctx.register_object_store(url, Arc::new(azure_storage)); - Ok(()) - } - - fn http_store(&self, ctx: &SessionContext, config: &HttpConfig) -> Result<(), Error> { - let http_builder = HttpBuilder::new().with_url(&config.url); - let http_storage = http_builder - .build() - .map_err(|e| Error::Config(format!("Failed to create HTTP client: {}", e)))?; - let object_store_url = ObjectStoreUrl::parse(&config.url) - .map_err(|e| Error::Config(format!("Failed to parse HTTP URL: {}", e)))?; - let url: &Url = object_store_url.as_ref(); - ctx.register_object_store(url, Arc::new(http_storage)); - Ok(()) - } - - fn hdfs_store(&self, ctx: &SessionContext, config: &HdfsConfig) -> Result<(), Error> { - let hdfs_storage_result = if let Some(ha_config) = &config.ha_config { - HdfsObjectStore::with_config(&config.url, ha_config.clone()) - } else { - HdfsObjectStore::with_url(&config.url) - }; - let hdfs_storage = hdfs_storage_result - .map_err(|e| Error::Config(format!("Failed to create HDFS client: {}", e)))?; - - let object_store_url = ObjectStoreUrl::parse(&config.url) - .map_err(|e| Error::Config(format!("Failed to parse HDFS URL: {}", e)))?; - let url: &Url = object_store_url.as_ref(); - ctx.register_object_store(url, Arc::new(hdfs_storage)); - Ok(()) - } } pub(crate) struct SqlInputBuilder; @@ -652,83 +339,3 @@ impl InputBuilder for SqlInputBuilder { pub fn init() -> Result<(), Error> { register_input_builder("sql", Arc::new(SqlInputBuilder)) } - -fn default_allow_http() -> bool { - false -} - -#[cfg(test)] -mod tests { - use super::*; - use datafusion::arrow::array::StringArray; - use tempfile::{tempdir, TempDir}; - fn create_test_data() -> (TempDir, String) { - let temp_dir = tempdir().unwrap(); - let path_buf = temp_dir.path().join("test_path.json"); - let path = path_buf.as_path().to_str().unwrap().to_string(); - - let _ = std::fs::write(path_buf, r#"{"name": "John", "age": 30}"#).unwrap(); - (temp_dir, path) - } - - #[tokio::test] - async fn test_sql_input_connect() { - let (_x, path) = create_test_data(); - let config = SqlInputConfig { - select_sql: "SELECT * FROM test_table".to_string(), - ballista: None, - input_type: InputType::Json(JsonConfig { - table_name: Some("test_table".to_string()), - path, - object_store: None, - }), - }; - let input = SqlInput::new(None, config).unwrap(); - assert!(input.connect().await.is_ok()); - } - - #[tokio::test] - async fn test_sql_input_read() { - let (_x, path) = create_test_data(); - let config = SqlInputConfig { - select_sql: "SELECT * FROM test_table".to_string(), - ballista: None, - input_type: InputType::Json(JsonConfig { - table_name: Some("test_table".to_string()), - path, - object_store: None, - }), - }; - let input = SqlInput::new(None, config).unwrap(); - input.connect().await.unwrap(); - - let (msg, ack) = input.read().await.unwrap(); - let (i, _) = msg.schema().column_with_name("name").unwrap(); - let result = msg - .column(i) - .as_any() - .downcast_ref::() - .unwrap() - .value(0); - assert_eq!(result, "John"); - ack.ack().await; - input.close().await.unwrap(); - } - - #[tokio::test] - async fn test_sql_input_invalid_query() { - let (_x, path) = create_test_data(); - let config = SqlInputConfig { - select_sql: "SELECT invalid_column FROM test_table".to_string(), - ballista: None, - - input_type: InputType::Json(JsonConfig { - table_name: Some("test_table".to_string()), - path, - object_store: None, - }), - }; - let input = SqlInput::new(None, config).unwrap(); - assert!(input.connect().await.is_err()); - } -} diff --git a/crates/arkflow-plugin/src/output/s3.rs b/crates/arkflow-plugin/src/output/s3.rs new file mode 100644 index 00000000..e67edd9e --- /dev/null +++ b/crates/arkflow-plugin/src/output/s3.rs @@ -0,0 +1,442 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +use arkflow_core::output::{register_output_builder, Output, OutputBuilder}; +use arkflow_core::{Error, MessageBatch, Resource}; + +use async_trait::async_trait; +use datafusion::common::parsers::CompressionTypeVariant; +use datafusion::config::{CsvOptions, JsonOptions, ParquetOptions, TableParquetOptions}; +use datafusion::dataframe::DataFrameWriteOptions; +use datafusion::prelude::*; +use serde::{Deserialize, Serialize}; +use serde_with::DeserializeFromStr; + +use object_store::aws::AmazonS3Builder; +use object_store::gcp::GoogleCloudStorageBuilder; +use object_store::ObjectStore; +use std::str::FromStr; +use std::sync::Arc; +use std::sync::Mutex; +use tokio_util::sync::CancellationToken; +use tracing::info; + +use chrono::Local; +use url::Url; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case", untagged)] +pub enum ProviderCredentials { + Aws(AwsCredentials), + Gcp(GcpCredentials), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub struct AwsCredentials { + pub access_key_id: String, + pub secret_access_key: String, +} +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub struct GcpCredentials { + service_account_path: String, +} + +#[derive(Debug, Clone, Serialize, DeserializeFromStr, PartialEq)] +#[serde(rename_all = "snake_case")] +pub enum S3OutputFormat { + Json, + Csv, + Parquet, +} +impl FromStr for S3OutputFormat { + type Err = String; + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "json" => Ok(Self::Json), + "csv" => Ok(Self::Csv), + "parquet" => Ok(Self::Parquet), + _ => Err(format!("Invalid output format: {}", s)), + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub struct S3OutputConfig { + provider: String, + bucket: String, + region: String, + credentials: ProviderCredentials, + prefix_pattern: Option, + format: S3OutputFormat, + format_options: Option, +} + +#[derive(Debug, Clone)] +enum WriterOptions { + Csv(CsvOptions), + Json(JsonOptions), + Parquet(TableParquetOptions), +} + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "snake_case")] +struct FormatOptions { + compression: Option, + //csv + delimiter: Option, + header: Option, + escape: Option, + //parquet + skip_arrow_metadata: Option, + max_row_group_size: Option, + dictionary_enabled: Option, + statistics_enabled: Option, +} + +pub struct S3Output { + config: S3OutputConfig, + s3_client: Arc, + cancellation_token: CancellationToken, + ctx: Arc, + writer_options: Arc>>, +} + +impl S3Output { + pub fn new(config: S3OutputConfig) -> Result { + let builder = Self::create_storage_client(&config)?; + let cancellation_token = CancellationToken::new(); + let ctx = Arc::new(SessionContext::new()); + + Ok(Self { + config, + s3_client: builder, + cancellation_token, + ctx, + writer_options: Arc::new(Mutex::new(None)), + }) + } + fn create_storage_client(config: &S3OutputConfig) -> Result, Error> { + match config.provider.to_lowercase().as_str() { + "aws" => Self::build_aws_client(config), + "gcp" => Self::build_gcp_client(config), + other => Err(Error::Config(format!( + "Unsupported storage provider: {}", + other + ))), + } + } + fn build_aws_client(config: &S3OutputConfig) -> Result, Error> { + match &config.credentials { + ProviderCredentials::Aws(aws_creds) => { + let builder = AmazonS3Builder::new() + .with_bucket_name(&config.bucket) + .with_region(&config.region) + .with_access_key_id(&aws_creds.access_key_id) + .with_secret_access_key(&aws_creds.secret_access_key); + + Ok(Arc::new(builder.build().map_err(|e| { + Error::Config(format!("Failed to build AWS S3 client: {}", e)) + })?)) + } + _ => Err(Error::Config( + "Provider is 'aws', but AWS credentials are not provided or are of the wrong type." + .to_string(), + )), + } + } + fn build_gcp_client(config: &S3OutputConfig) -> Result, Error> { + match &config.credentials { + ProviderCredentials::Gcp(gcp_creds) => { + let builder = GoogleCloudStorageBuilder::new() + .with_bucket_name(&config.bucket) + .with_service_account_path(&gcp_creds.service_account_path); + + Ok(Arc::new(builder.build().map_err(|e| { + Error::Config(format!("Failed to build GCP GCS client: {}", e)) + })?)) + } + _ => Err(Error::Config( + "Provider is 'gcp', but GCP credentials are not provided or are of the wrong type." + .to_string(), + )), + } + } +} +#[async_trait] +impl Output for S3Output { + async fn connect(&self) -> Result<(), Error> { + let url = self.get_url().await?; + info!("Connecting to S3 at URL: {}", url); + self.ctx.register_object_store(&url, self.s3_client.clone()); + let writer_options = self.get_writer_options().await?; + *self.writer_options.lock().unwrap() = Some(writer_options); + Ok(()) + } + async fn write(&self, msg: MessageBatch) -> Result<(), Error> { + self.ctx + .register_batch("batch", msg.into()) + .map_err(|e| Error::Process(format!("Failed to register batch: {}", e)))?; + + let df = self + .ctx + .sql("SELECT * FROM batch") + .await + .map_err(|e| Error::Process(format!("Failed to execute SQL: {}", e)))?; + + let writer_options = match self.writer_options.lock().unwrap().as_ref() { + Some(options) => options.clone(), + None => { + // writer_options가 없으면 기본값으로 생성 + match self.config.format { + S3OutputFormat::Csv => WriterOptions::Csv(CsvOptions::default()), + S3OutputFormat::Json => WriterOptions::Json(JsonOptions::default()), + S3OutputFormat::Parquet => WriterOptions::Parquet(TableParquetOptions::new()), + } + } + }; + + let prefix = self.format_prefix_with_datetime().await; + let url = self.get_url().await?; + let save_path = url + .join(&prefix) + .map_err(|e| Error::Process(format!("Failed to join URL with prefix: {}", e)))? + .to_string(); + let dataframe_options = DataFrameWriteOptions::new(); + + match self.config.format { + S3OutputFormat::Csv => match writer_options { + WriterOptions::Csv(csv_options) => { + df.write_csv(&save_path, dataframe_options, Some(csv_options.clone())) + .await + .map_err(|e| Error::Process(format!("Failed to write CSV: {}", e)))?; + info!("Writing CSV to S3 at path: {}", save_path); + } + _ => { + return Err(Error::Process("Invalid options for CSV format".to_string())); + } + }, + S3OutputFormat::Json => match writer_options { + WriterOptions::Json(json_options) => { + df.write_json(&save_path, dataframe_options, Some(json_options.clone())) + .await + .map_err(|e| Error::Process(format!("Failed to write JSON: {}", e)))?; + } + _ => { + return Err(Error::Process( + "Invalid options for JSON format".to_string(), + )); + } + }, + S3OutputFormat::Parquet => match writer_options { + WriterOptions::Parquet(parquet_options) => { + df.write_parquet(&save_path, dataframe_options, Some(parquet_options.clone())) + .await + .map_err(|e| Error::Process(format!("Failed to write Parquet: {}", e)))?; + } + _ => { + return Err(Error::Process( + "Invalid options for Parquet format".to_string(), + )); + } + }, + }; + let _ = self.ctx.deregister_table("batch"); + Ok(()) + } + + async fn close(&self) -> Result<(), Error> { + self.cancellation_token.cancel(); + Ok(()) + } +} +impl S3Output { + async fn get_writer_options(&self) -> Result { + match self.config.format { + S3OutputFormat::Csv => { + let csv_options = self.build_csv_options().await?; + Ok(WriterOptions::Csv(csv_options)) + } + S3OutputFormat::Json => { + let json_options = self.build_json_options().await?; + Ok(WriterOptions::Json(json_options)) + } + S3OutputFormat::Parquet => { + let parquet_options = self.build_parquet_options().await?; + Ok(WriterOptions::Parquet(parquet_options)) + } + } + } + + async fn build_csv_options(&self) -> Result { + let mut csv_options = CsvOptions::default(); + + if let Some(format_options) = &self.config.format_options { + if let Some(delimiter) = format_options.delimiter { + csv_options = csv_options.with_delimiter(delimiter); + } + if let Some(header) = format_options.header { + csv_options = csv_options.with_has_header(header); + } + if let Some(compression_str) = &format_options.compression { + // 문자열을 CompressionTypeVariant enum으로 변환 + let compression_type = match compression_str.to_lowercase().as_str() { + "gzip" => CompressionTypeVariant::GZIP, + "bzip2" => CompressionTypeVariant::BZIP2, + "xz" => CompressionTypeVariant::XZ, + "zstd" => CompressionTypeVariant::ZSTD, + unsupported => { + return Err(Error::Config(format!( + "Unsupported compression type: {}", + unsupported + ))); + } + }; + csv_options = csv_options.with_compression(compression_type); + } + if let Some(escape) = format_options.escape { + csv_options = csv_options.with_escape(Some(escape)); + } + } + Ok(csv_options) + } + async fn build_json_options(&self) -> Result { + let mut json_options = JsonOptions::default(); + + if let Some(format_options) = &self.config.format_options { + if let Some(compression_str) = &format_options.compression { + // 문자열을 CompressionTypeVariant enum으로 변환 + let compression_type = match compression_str.to_lowercase().as_str() { + "gzip" => CompressionTypeVariant::GZIP, + "bzip2" => CompressionTypeVariant::BZIP2, + "xz" => CompressionTypeVariant::XZ, + "zstd" => CompressionTypeVariant::ZSTD, + unsupported => { + return Err(Error::Config(format!( + "Unsupported compression type: {}", + unsupported + ))); + } + }; + json_options.compression = compression_type; + } + } + Ok(json_options) + } + async fn build_parquet_options(&self) -> Result { + let mut parquet_table_options = TableParquetOptions::new(); + let mut parquet_options = ParquetOptions::default(); + + if let Some(format_options) = &self.config.format_options { + if let Some(compression_str) = &format_options.compression { + parquet_options.compression = Some(compression_str.clone()); + } + if let Some(skip_arrow_metadata) = format_options.skip_arrow_metadata { + parquet_options.skip_arrow_metadata = skip_arrow_metadata; + } + if let Some(max_row_group_size) = format_options.max_row_group_size { + parquet_options.max_row_group_size = max_row_group_size; + } + if let Some(dictionary_enabled) = format_options.dictionary_enabled { + parquet_options.dictionary_enabled = Some(dictionary_enabled); + } + if let Some(statistics_enabled) = &format_options.statistics_enabled { + parquet_options.statistics_enabled = Some(statistics_enabled.clone()); + } + } + + parquet_table_options.global = parquet_options; + + Ok(parquet_table_options) + } + async fn format_prefix_with_datetime(&self) -> String { + let datetime = Local::now(); + let path = if let Some(prefix_pattern) = &self.config.prefix_pattern { + prefix_pattern + .replace("{year}", &datetime.format("%Y").to_string()) + .replace("{month}", &datetime.format("%m").to_string()) + .replace("{day}", &datetime.format("%d").to_string()) + .replace("{hour}", &datetime.format("%H").to_string()) + .replace("{minute}", &datetime.format("%M").to_string()) + .replace("{second}", &datetime.format("%S").to_string()) + .replace("{timestamp}", &datetime.timestamp().to_string()) + } else { + datetime.timestamp().to_string() + }; + + let extension = match self.config.format { + S3OutputFormat::Json => "json", + S3OutputFormat::Csv => "csv", + S3OutputFormat::Parquet => "parquet", + }; + let mut file_path = format!("{}.{}", path, extension); + + if self.config.format != S3OutputFormat::Parquet { + if let Some(format_options) = &self.config.format_options { + if let Some(compression) = &format_options.compression { + let compression_ext = match compression.to_lowercase().as_str() { + "gzip" => ".gz", + "bzip2" => ".bz2", + "xz" => ".xz", + "zstd" => ".zst", + _ => "", + }; + if !compression_ext.is_empty() { + file_path = format!("{}{}", file_path, compression_ext); + } + } + } + } + + file_path + } + + async fn get_url(&self) -> Result { + let url_str = match self.config.provider.to_lowercase().as_str() { + "aws" => format!("s3://{}", self.config.bucket), + "gcp" => format!("gs://{}", self.config.bucket), + provider => { + return Err(Error::Config(format!( + "Unsupported storage provider: {}", + provider + ))) + } + }; + info!("S3 Output URL: {}", url_str); + Url::parse(&url_str).map_err(|e| Error::Config(format!("Invalid URL: {}", e))) + } +} + +pub(crate) struct S3OutputBuilder; +impl OutputBuilder for S3OutputBuilder { + fn build( + &self, + _name: Option<&String>, + config: &Option, + _resource: &Resource, + ) -> Result, Error> { + if config.is_none() { + return Err(Error::Config( + "S3 output configuration is missing".to_string(), + )); + } + + let config: S3OutputConfig = serde_json::from_value(config.clone().unwrap())?; + Ok(Arc::new(S3Output::new(config)?)) + } +} +pub fn init() -> Result<(), Error> { + register_output_builder("s3", Arc::new(S3OutputBuilder)) +} diff --git a/crates/arkflow-plugin/src/output/sql.rs b/crates/arkflow-plugin/src/output/sql.rs index 5f543538..60e6c345 100644 --- a/crates/arkflow-plugin/src/output/sql.rs +++ b/crates/arkflow-plugin/src/output/sql.rs @@ -32,7 +32,7 @@ use sqlx::postgres::{PgConnectOptions, PgSslMode}; use sqlx::{Connection, MySqlConnection, PgConnection, QueryBuilder}; #[derive(Debug, Clone)] -pub enum SqlValue { +enum SqlValue { String(String), Int64(i64), UInt64(u64), @@ -43,21 +43,23 @@ pub enum SqlValue { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] -pub enum DatabaseType { - Mysql, - Postgres, +enum DatabaseType { + Mysql(MysqlConfig), + Postgres(PostgresConfig), // Sqlite, } -pub enum DatabaseConnection { + +enum DatabaseConnection { Mysql(MySqlConnection), Postgres(PgConnection), // Sqlite(SqliteConnection), } + impl DatabaseConnection { /// Executes an INSERT query with the given columns and rows /// Handles type conversion and proper escaping for different database types /// Returns a Result indicating success or detailed error information - pub async fn execute_insert( + async fn execute_insert( &mut self, output_config: &SqlOutputConfig, columns: Vec, @@ -132,26 +134,36 @@ impl DatabaseConnection { /// Configuration for SQL output #[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "snake_case")] -pub struct SqlOutputConfig { +struct SqlOutputConfig { /// SQL query statement output_type: DatabaseType, table_name: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct MysqlConfig { uri: String, ssl: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct SslConfig { +struct PostgresConfig { + uri: String, + ssl: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct SslConfig { ssl_mode: String, root_cert: Option, client_cert: Option, client_key: Option, } + impl SslConfig { pub async fn generate_mysql_ssl_opts( &self, - output_config: &SqlOutputConfig, + config: &MysqlConfig, ) -> Result { let ssl_mode = match self.ssl_mode.to_lowercase().as_str() { "disable" => MySqlSslMode::Disabled, @@ -161,7 +173,7 @@ impl SslConfig { "verify_full" => MySqlSslMode::VerifyIdentity, _ => return Err(Error::Config("Invalid SSL mode".to_string())), }; - let mut opts = MySqlConnectOptions::from_str(&output_config.uri) + let mut opts = MySqlConnectOptions::from_str(&config.uri) .map_err(|e| Error::Config(format!("Invalid MySQL URI: {}", e)))?; opts = opts.ssl_mode(ssl_mode); @@ -181,9 +193,10 @@ impl SslConfig { } Ok(opts) } + async fn generate_postgres_ssl_opts( &self, - output_config: &SqlOutputConfig, + config: &PostgresConfig, ) -> Result { let ssl_mode = match self.ssl_mode.to_lowercase().as_str() { "disable" => PgSslMode::Disable, @@ -193,7 +206,7 @@ impl SslConfig { "verify_full" => PgSslMode::VerifyFull, _ => return Err(Error::Config("Invalid SSL mode".to_string())), }; - let mut opts = PgConnectOptions::from_str(&output_config.uri) + let mut opts = PgConnectOptions::from_str(&config.uri) .map_err(|e| Error::Config(format!("Invalid PostgreSQL URI: {}", e)))?; opts = opts.ssl_mode(ssl_mode); @@ -215,45 +228,37 @@ impl SslConfig { } } -pub struct SqlOutput { +struct SqlOutput { sql_config: SqlOutputConfig, - connected: std::sync::atomic::AtomicBool, conn_lock: Arc>>, cancellation_token: CancellationToken, } impl SqlOutput { - pub fn new(sql_config: SqlOutputConfig) -> Result { + fn new(sql_config: SqlOutputConfig) -> Result { let cancellation_token = CancellationToken::new(); Ok(Self { sql_config, - connected: std::sync::atomic::AtomicBool::new(false), conn_lock: Arc::new(Mutex::new(None)), cancellation_token, }) } } + #[async_trait] impl Output for SqlOutput { async fn connect(&self) -> Result<(), Error> { - if self.connected.load(std::sync::atomic::Ordering::SeqCst) { - return Ok(()); - } - let conn = self.init_connect().await?; let mut conn_guard = self.conn_lock.lock().await; *conn_guard = Some(conn); - self.connected - .store(true, std::sync::atomic::Ordering::SeqCst); Ok(()) } + async fn write(&self, msg: MessageBatch) -> Result<(), Error> { let mut conn_guard = self.conn_lock.lock().await; - let conn = conn_guard - .as_mut() - .ok_or_else(|| Error::Process("Database connection is not initialized".to_string()))?; + let conn = conn_guard.as_mut().ok_or_else(|| Error::Disconnection)?; self.insert_row(conn, &msg).await?; Ok(()) @@ -264,16 +269,18 @@ impl Output for SqlOutput { Ok(()) } } + impl SqlOutput { /// Initialize a new DB connection. /// If `ssl` is configured, apply root certificates to the SSL options. async fn init_connect(&self) -> Result { - let conn = match self.sql_config.output_type { - DatabaseType::Mysql => self.generate_mysql_conn().await?, - DatabaseType::Postgres => self.generate_postgres_conn().await?, + let conn = match &self.sql_config.output_type { + DatabaseType::Mysql(config) => self.generate_mysql_conn(config).await?, + DatabaseType::Postgres(config) => self.generate_postgres_conn(config).await?, }; Ok(conn) } + /// Processes a batch of Arrow data and inserts it into the database /// 1. Extracts schema and column names /// 2. Converts each row to SQL-compatible values @@ -307,6 +314,7 @@ impl SqlOutput { conn.execute_insert(&self.sql_config, columns, rows).await?; Ok(()) } + // Convert Arrow data types to SQL-compatible string representation async fn matching_data_type( &self, @@ -362,29 +370,34 @@ impl SqlOutput { ))), } } + /// Generates MySQL SSL connection options based on configuration /// Validates SSL mode and sets up certificates if provided - async fn generate_mysql_conn(&self) -> Result { - let mysql_conn = if let Some(ssl) = &self.sql_config.ssl { - let opts = ssl.generate_mysql_ssl_opts(&self.sql_config).await?; + async fn generate_mysql_conn(&self, config: &MysqlConfig) -> Result { + let mysql_conn = if let Some(ssl) = &config.ssl { + let opts = ssl.generate_mysql_ssl_opts(config).await?; MySqlConnection::connect_with(&opts) .await .map_err(|e| Error::Config(format!("Failed to connect to MySQL with SSL: {}", e)))? } else { - MySqlConnection::connect(&self.sql_config.uri) + MySqlConnection::connect(&config.uri) .await .map_err(|e| Error::Config(format!("Failed to connect to MySQL: {}", e)))? }; Ok(DatabaseConnection::Mysql(mysql_conn)) } - async fn generate_postgres_conn(&self) -> Result { - let postgres_conn = if let Some(ssl) = &self.sql_config.ssl { - let opts = ssl.generate_postgres_ssl_opts(&self.sql_config).await?; + + async fn generate_postgres_conn( + &self, + config: &PostgresConfig, + ) -> Result { + let postgres_conn = if let Some(ssl) = &config.ssl { + let opts = ssl.generate_postgres_ssl_opts(config).await?; PgConnection::connect_with(&opts).await.map_err(|e| { Error::Config(format!("Failed to connect to PostgreSQL with SSL: {}", e)) })? } else { - PgConnection::connect(&self.sql_config.uri) + PgConnection::connect(&config.uri) .await .map_err(|e| Error::Config(format!("Failed to connect to PostgreSQL: {}", e)))? }; @@ -392,7 +405,8 @@ impl SqlOutput { } } -pub(crate) struct SqlOutputBuilder; +struct SqlOutputBuilder; + impl OutputBuilder for SqlOutputBuilder { fn build( &self, @@ -410,6 +424,7 @@ impl OutputBuilder for SqlOutputBuilder { Ok(Arc::new(SqlOutput::new(config)?)) } } + pub fn init() -> Result<(), Error> { register_output_builder("sql", Arc::new(SqlOutputBuilder)) } diff --git a/crates/arkflow-plugin/src/processor/python.rs b/crates/arkflow-plugin/src/processor/python.rs index d15dc57a..c5715929 100644 --- a/crates/arkflow-plugin/src/processor/python.rs +++ b/crates/arkflow-plugin/src/processor/python.rs @@ -28,10 +28,12 @@ struct PythonProcessorConfig { /// Python code to execute script: Option, /// Python module to import - module: Option, + #[serde(default = "default_module")] + module: String, /// Function name to call for processing function: String, /// Additional Python paths + #[serde(default = "default_python_path")] python_path: Vec, } @@ -45,7 +47,7 @@ impl Processor for PythonProcessor { let func_to_call = Python::with_gil(|py| self.func.clone_ref(py)); let result = tokio::task::spawn_blocking(move || { - Python::with_gil(|py| -> Result, Error> { + Python::with_gil(|py| -> Result, Error> { // Convert MessageBatch to PyArrow let py_batch = batch.to_pyarrow(py).map_err(|e| { Error::Process(format!("Failed to convert MessageBatch to PyArrow: {}", e)) @@ -55,6 +57,7 @@ impl Processor for PythonProcessor { let result = func_bound .call1((py_batch,)) .map_err(|e| Error::Process(format!("Python function call failed: {}", e)))?; + let py_list = result.downcast::().map_err(|_| { Error::Process("Failed to downcast Python result to PyList".to_string()) })?; @@ -69,16 +72,17 @@ impl Processor for PythonProcessor { }) }) .collect::, Error>>()?; - let vec_mb = vec_rb - .into_iter() - .map(|rb| MessageBatch::new_arrow(rb)) - .collect::>(); - Ok(vec_mb) + Ok(vec_rb) }) }) .await - .map_err(|e| Error::Process(format!("Failed to spawn blocking task: {}", e)))?; - result + .map_err(|e| Error::Process(format!("Failed to spawn blocking task: {}", e)))??; + + let vec_mb = result + .into_iter() + .map(|rb| MessageBatch::new_arrow(rb)) + .collect::>(); + Ok(vec_mb) } async fn close(&self) -> Result<(), Error> { @@ -105,16 +109,9 @@ impl PythonProcessor { .for_each(|p| path.insert(0, p).unwrap()); // Get the Python module either from the script or from an imported module - let py_module = if let Some(module_name) = &config.module { - py.import(module_name).map_err(|e| { - Error::Process(format!("Failed to import module {}: {}", module_name, e)) - })? - } else { - // If no module specified, use __main__ - py.import("__main__").map_err(|e| { - Error::Process(format!("Failed to import __main__ module: {}", e)) - })? - }; + let py_module = py.import(&config.module).map_err(|e| { + Error::Process(format!("Failed to import {} module: {}", &config.module, e)) + })?; if let Some(script) = &config.script { let string = CString::new(script.as_str()) @@ -157,6 +154,15 @@ impl ProcessorBuilder for PythonProcessorBuilder { } } +fn default_python_path() -> Vec { + vec![] +} + +fn default_module() -> String { + // If no module specified, use __main__ + "__main__".to_string() +} + pub fn init() -> Result<(), Error> { processor::register_processor_builder("python", Arc::new(PythonProcessorBuilder)) } diff --git a/crates/arkflow-plugin/src/temporary/redis.rs b/crates/arkflow-plugin/src/temporary/redis.rs index 47875742..35dc22c0 100644 --- a/crates/arkflow-plugin/src/temporary/redis.rs +++ b/crates/arkflow-plugin/src/temporary/redis.rs @@ -13,6 +13,7 @@ */ use crate::component; use crate::component::redis::Connection; +use arkflow_core::codec::{Codec, CodecConfig}; use arkflow_core::temporary::{Temporary, TemporaryBuilder}; use arkflow_core::{temporary, Error, MessageBatch, Resource}; use async_trait::async_trait; @@ -30,6 +31,7 @@ use tokio::sync::RwLock; struct RedisTemporaryConfig { mode: component::redis::Mode, redis_type: RedisType, + codec: CodecConfig, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -42,6 +44,7 @@ enum RedisType { struct RedisTemporary { config: RedisTemporaryConfig, cli: Arc>>, + codec: Arc, } #[async_trait] @@ -108,15 +111,13 @@ impl Temporary for RedisTemporary { vec![array] } }; - let data = data .iter() .flatten() - .map(|s| s.as_bytes()) + .map(|s| s.as_bytes().to_vec()) .collect::>(); - let json_data: Vec = data.join(b"\n" as &[u8]); - - component::json::try_to_arrow(&json_data, None).map(|v| Some(v.into())) + let result = self.codec.decode(data)?; + Ok(Some(result)) } async fn close(&self) -> Result<(), Error> { @@ -126,9 +127,10 @@ impl Temporary for RedisTemporary { } impl RedisTemporary { - fn new(config: RedisTemporaryConfig) -> Result { + fn new(config: RedisTemporaryConfig, codec: Arc) -> Result { Ok(RedisTemporary { config, + codec, cli: Arc::new(RwLock::new(None)), }) } @@ -158,15 +160,17 @@ impl TemporaryBuilder for RedisTemporaryBuilder { fn build( &self, config: &Option, - _resource: &Resource, + resource: &Resource, ) -> Result, Error> { if config.is_none() { return Err(Error::Config( "Batch processor configuration is missing".to_string(), )); } + let config: RedisTemporaryConfig = serde_json::from_value(config.clone().unwrap())?; - Ok(Arc::new(RedisTemporary::new(config)?)) + let codec = config.codec.build(resource)?; + Ok(Arc::new(RedisTemporary::new(config, codec)?)) } } diff --git a/docs/blog/2025/06/14-ArkFlow+Python-Easy-Real-time-AI.md b/docs/blog/2025/06/14-ArkFlow+Python-Easy-Real-time-AI.md new file mode 100644 index 00000000..78219433 --- /dev/null +++ b/docs/blog/2025/06/14-ArkFlow+Python-Easy-Real-time-AI.md @@ -0,0 +1,38 @@ +# ArkFlow+Python: Easy Real-time AI + +Today, with great excitement, we proudly introduce a revolutionary update to the ArkFlow stream processing engine: full support for Python processors! This is not just a simple feature iteration; it marks a solid step towards more intelligent, user-friendly, and powerful real-time data processing. We are keenly aware of Python's immense influence and its vast ecosystem in the fields of artificial intelligence and machine learning. Now, with ArkFlow, you can seamlessly integrate all of this into high-performance, real-time stream processing pipelines. + + + +The modern data landscape is characterized by continuous, high-velocity streams of data originating from a multitude of sources, including IoT devices, user interactions, financial trading systems, and sensor networks. While traditional batch processing methods are suitable for historical data analysis, they fall short in scenarios requiring immediate insights and rapid responses. Artificial intelligence (AI) and machine learning (ML) models possess powerful analytical capabilities on their own, but we firmly believe their business value is maximized when applied to real-time, flowing data. The ability to perform inference, detect anomalies, or understand language the moment data arrives has become a key competitive advantage across industries. + +Although some discussions suggest that not all historical application scenarios strictly require true real-time processing, current trends and specific needs clearly point to the importance of real-time AI capabilities. As we agree, "data in motion can generate greater value." Particularly in fields like fraud detection, traditional batch processing methods are "no longer effective," and stream processing platforms (such as Kafka) play a central role in enabling real-time analytics. + +The core of the real-time capability we pursue is not just about speed, but about the *timeliness* of insights. In dynamic operational environments such as fraud detection, algorithmic trading, or critical system monitoring, an insight delayed by even a few seconds can lose all its value. The value of predictions, classifications, or other actionable insights generated by AI models decays rapidly over time in many critical business and operational scenarios. Therefore, we are committed to enabling you to process data and apply AI algorithms simultaneously as the data flows in, which is crucial for maximizing the utility and impact of these insights. This places stringent demands on the underlying technology platform, and it is precisely why we created ArkFlow—to provide a solution that seamlessly integrates high-performance stream processing with the execution of complex AI models. + + +### The Python Processor + +The Python processor significantly lowers the barrier for the large community of data scientists and machine learning engineers, who primarily use Python, to deploy their models and algorithms in high-throughput, low-latency stream processing applications. Previously, this often required developers to have deep expertise in systems languages used for building stream processors, such as Rust or Java/Scala, or to deal with complex integration layers. We believe this newfound accessibility will accelerate the adoption and innovation of real-time AI solutions across various industries. The use of PyArrow is a key technical pillar in achieving this goal, ensuring efficient data exchange between the Rust core and the Python processor, thereby maintaining overall performance. Traditionally, AI model development and real-time stream processing deployment have been complex, requiring expertise in both AI and the internal mechanisms of stream processing systems like Flink or Spark. As the dominant language for AI/ML development, Python boasts a vast talent pool and a rich ecosystem of libraries. By allowing Python to be used directly within a high-performance stream processor, ArkFlow reduces the need for developers to learn new languages (like Rust) or complex integration patterns to implement their AI logic, making it easier for a broader range of developers to build real-time AI applications. PyArrow plays a crucial role in this process by providing an efficient and standardized way to transfer data between ArkFlow's Rust core and the Python processor, minimizing the serialization overhead that typically degrades performance in multi-language systems. + +### How the Python Processor Works in ArkFlow + +A key aspect of this integration is our use of the PyArrow library for data exchange. Apache Arrow and its Python bindings, PyArrow, provide a language-agnostic columnar memory format. This format is designed for efficient data sharing between different processes and systems, often enabling zero-copy (or near-zero-copy) data access. In the context of ArkFlow (a Rust application) and its Python processors, the Arrow format allows structured data (such as record batches or data frames) to be passed from the Rust environment to a Python process (and vice versa) with minimal serialization and deserialization overhead. This is critical for maintaining performance when crossing language boundaries. + +The choice of PyArrow for data exchange between ArkFlow's Rust core and its Python processors strongly demonstrates our project's commitment to maintaining high performance, even when introducing an external language runtime. Without an efficient data exchange mechanism like Apache Arrow, the overhead incurred from passing data between Rust and Python (e.g., by serializing to JSON or pickle and then deserializing) could easily negate the performance benefits of a fast, Rust-based core engine, especially when handling high-volume, low-latency data streams. Inter-process communication (IPC) or foreign function interfaces (FFI) between different programming languages like Rust and Python can introduce significant performance overhead if data needs to be repeatedly copied and converted between the different native memory layouts or data formats of each language. Apache Arrow defines a standardized, language-agnostic columnar memory format optimized for analytical data processing and efficient data movement. When both the producer (ArkFlow's Rust core) and the consumer (the Python processor) can read and write data in the Arrow format, data can often be shared or transferred with zero or minimal copying, significantly reducing the overhead across language boundaries. This data exchange efficiency is crucial for real-time AI applications where every millisecond of latency matters. Therefore, adopting Arrow makes Python suitable not just for trivial in-stream scripting tasks; it opens the door to executing complex AI model inference and other computationally intensive Python code with acceptable performance characteristics. + +### Unlocking the Potential of Python's AI Ecosystem in Stream Processing + +Our explicit strategic intent in introducing Python support in ArkFlow is to enable users to directly "call any Python machine learning/deep learning library (TensorFlow, PyTorch, etc.) and large models" within their stream processing pipelines. This highlights the immense strategic value of Python integration. It means that developers, data scientists, and machine learning engineers can now directly leverage their existing Python skills, familiar tools, pre-trained models, and the vast and mature Python AI ecosystem within ArkFlow's high-performance stream processing environment. We believe this capability will dramatically accelerate the development cycle and deployment of complex real-time AI applications. + +The deep integration of Python within a high-performance stream processor like ArkFlow is poised to give rise to a new class of "stream-native" AI applications. In this paradigm, AI models are no longer just external components applied to data exported in batches from a stream, but are designed and deployed as integral, active components *within* the data stream itself. Traditionally, the worlds of AI model development (primarily in Python) and real-time stream processing (often in Java/Scala) have been somewhat separate. Deploying Python AI models in high-performance streams often involved data batching, using less efficient IPC, or requiring significant custom integration work. ArkFlow's native Python processor support allows AI logic written in Python to become a first-class citizen within the stream processing pipeline—a "processor" that interacts directly with the data flow. This tight integration facilitates the construction of systems where AI is not merely a passive consumer of stream data but an active participant in the processing, decision-making, and even real-time modification of the stream's behavior. + +### ArkFlow: Python-Based Real-Time AI Application Scenarios + +We have noted that user queries explicitly point to the need to run machine learning models (like TensorFlow, ONNX) directly within data streams to achieve millisecond-level prediction and analysis. In ArkFlow, a Python processor instantiated within a pipeline is configured to load a pre-trained machine learning model. These models can be in various standard formats, such as TensorFlow SavedModel, ONNX graph, or PyTorch (.pt or .pth) files. Input data records from the stream, possibly pre-processed by upstream ArkFlow native processors (e.g., for data cleansing, feature extraction, or format conversion), are efficiently passed to the Python process via PyArrow. The script within the Python processor utilizes the runtime of the corresponding AI framework (e.g., TensorFlow's `predict` method, ONNX Runtime session's `run`, PyTorch's `forward` pass) to perform inference on the received data. The inference results—such as predicted values, classification outcomes, embedding vectors, or other model outputs—are then passed back from the Python process to the ArkFlow pipeline using PyArrow for subsequent downstream processing, routing to an output, or triggering further actions. + +This capability makes true millisecond-latency prediction and analysis on real-time data possible. This is crucial for a wide range of applications that require immediate responses, such as identifying objects or events in real-time video frames, flagging potentially fraudulent financial transactions *before* they are completed, making ultra-fast algorithmic trading decisions, or instantly personalizing user experiences. ArkFlow's intent to support these frameworks is clearly stated in our various information sources. To elaborate on how these frameworks are typically optimized for inference (which ArkFlow can now enable in-stream), one can refer to general concepts such as TensorFlow's graph freezing, inference optimization, quantization, JIT/AOT compilation, and ONNX Runtime's cross-platform execution, model export, and hardware acceleration capabilities. AWS Elastic Inference's support for TensorFlow and ONNX also indirectly corroborates the industry application of these technologies for accelerating inference. + +Consider a manufacturing quality control system as an example: a stream of images from products on an assembly line is fed into ArkFlow. Each image is passed to a Python processor. This processor loads a pre-trained ONNX or TensorFlow computer vision model (e.g., a YOLO variant or a ResNet classifier) to detect defects. If a defect is identified, the model's output (e.g., defect type, location, confidence score) is passed back. ArkFlow can then immediately trigger an alert, divert the defective product, or log the issue within milliseconds of the image capture. + +However, we must point out that achieving the sustained "millisecond-level" inference latency desired by users is a significant technical challenge. It largely depends on various factors such as the complexity of the AI model, the size of the input data, the efficiency of the Rust-Python interop layer, and the overall pipeline design. While ArkFlow's Rust core and the use of PyArrow lay the necessary foundation for low latency, users still need to rigorously optimize their AI models for inference speed. Millisecond-level latency sets a very tight time budget for the entire process of data transfer, pre-processing, model inference, and post-processing. Although ArkFlow's core engine is designed for speed, Python execution (especially for complex models) can be slower. Therefore, techniques such as model quantization (reducing numerical precision, e.g., to INT8), graph pruning, or fusion, and selecting lightweight model architectures are necessary. PyArrow is also critical in minimizing the data transfer overhead at the Rust-Python boundary. Consequently, achieving consistent millisecond-level predictions requires a holistic approach that includes model engineering and optimization from the user. \ No newline at end of file diff --git a/docs/docs/components/0-inputs/multiple_inputs.md b/docs/docs/components/0-inputs/multiple_inputs.md new file mode 100644 index 00000000..ed325900 --- /dev/null +++ b/docs/docs/components/0-inputs/multiple_inputs.md @@ -0,0 +1,82 @@ +# Multiple Inputs + +The Multiple Inputs component allows you to combine multiple input sources into a single stream. It reads from multiple input components concurrently and merges their outputs into a unified message stream. + +## Configuration + +### **inputs** + +A list of input configurations to be combined. Each input in the list follows the standard input configuration format. + +type: `array` of `InputConfig` + +required: `true` + +## Features + +- **Concurrent Processing**: All input sources are processed concurrently using async tasks +- **Message Merging**: Messages from different inputs are merged into a single output stream +- **Error Handling**: Handles disconnections and errors from individual inputs gracefully +- **Unique Naming**: Ensures all input names are unique to prevent conflicts +- **Proper Cleanup**: Uses cancellation tokens and task tracking for clean shutdown + +## Internal Mechanism + +- Uses Flume channels for efficient message passing between input tasks and the main reader +- Each input runs in its own async task managed by a TaskTracker +- Messages and errors are sent through a unified channel using an internal Msg enum +- Implements proper cancellation handling using CancellationToken +- Validates input name uniqueness to prevent SQL table name conflicts +- Maintains input name registry for downstream components + +## Examples + +### Basic Multiple Inputs + +```yaml +- input: + type: "multiple_inputs" + inputs: + - name: "kafka_source" + type: "kafka" + brokers: ["localhost:9092"] + topics: ["topic1"] + consumer_group: "group1" + - name: "redis_source" + type: "redis" + url: "redis://localhost:6379" + redis_type: "subscribe" + channels: ["channel1"] +``` + +### Multiple Inputs with Different Types + +```yaml +- input: + type: "multiple_inputs" + inputs: + - name: "http_api" + type: "http" + address: "0.0.0.0:8080" + path: "/webhook" + - name: "file_source" + type: "sql" + select_sql: "SELECT * FROM data" + input_type: + type: "csv" + path: "/path/to/data.csv" + - name: "memory_source" + type: "memory" + messages: + - "static message 1" + - "static message 2" +``` + +## Important Notes + +- All inputs must have unique names when specified +- Empty input names are not allowed +- The component will fail if there are duplicate input names +- Each input maintains its own connection and error handling +- Messages are processed as they arrive from any input source +- The component stops when all input sources are closed or encounter terminal errors \ No newline at end of file diff --git a/docs/docs/components/1-buffers/memory.md b/docs/docs/components/1-buffers/memory.md index 667970db..85910cfb 100644 --- a/docs/docs/components/1-buffers/memory.md +++ b/docs/docs/components/1-buffers/memory.md @@ -1,12 +1,12 @@ # Memory -The Memory buffer component provides an in-memory message queue for temporary message storage and buffering. It implements a FIFO (First-In-First-Out) queue with configurable capacity and timeout settings. +The Memory buffer component provides an in-memory message queue for temporary message storage and buffering. It accumulates messages until either a capacity threshold is reached or a timeout occurs, then releases all accumulated messages as a single batch. ## Configuration ### **capacity** -The maximum number of messages that can be stored in the memory buffer. When this limit is reached, the buffer will trigger processing of the buffered messages to apply backpressure to upstream components. +The maximum number of messages to accumulate before releasing. When this limit is reached, the buffer will trigger processing of the buffered messages to apply backpressure to upstream components. type: `integer` @@ -14,7 +14,7 @@ required: `true` ### **timeout** -The duration to wait before processing buffered messages, even if the buffer is not full. This ensures messages don't stay in the buffer indefinitely. +The maximum time to wait before releasing accumulated messages, even if the buffer is not full. This ensures messages don't stay in the buffer indefinitely. type: `string` @@ -25,10 +25,12 @@ example: `1ms`, `1s`, `1m`, `1h`, `1d` ## Internal Mechanism - Messages are stored in a thread-safe queue using `RwLock` -- Messages are written to the front of the queue and read from the back (FIFO) +- Messages are written to the front of the queue and read from the back - When the total message count reaches the configured capacity, the buffer triggers message processing - A background timer periodically checks the timeout condition to process messages -- Messages are batched and concatenated during processing for better performance +- All accumulated messages are merged into a single batch during processing using Arrow's concat_batches +- Acknowledgments are combined using VecAck to ensure proper message acknowledgment +- Uses Tokio's async runtime with cancellation tokens for efficient resource management - Implements proper backpressure handling to prevent memory overflow ## Examples diff --git a/docs/docs/components/1-buffers/session_window.md b/docs/docs/components/1-buffers/session_window.md index 672dc552..4ca242c6 100644 --- a/docs/docs/components/1-buffers/session_window.md +++ b/docs/docs/components/1-buffers/session_window.md @@ -6,7 +6,7 @@ The Session Window buffer component provides a session-based message grouping me ### **gap** -The duration of inactivity that triggers the closing of a session window. When this period elapses without new messages, the buffer will process the messages in the current session. +The maximum time gap between messages in a session. If no new messages arrive within this duration, the session is considered complete and all accumulated messages are emitted. type: `string` @@ -14,16 +14,54 @@ required: `true` example: `1ms`, `1s`, `1m`, `1h`, `1d` +### **join** + +Optional join configuration for SQL join operations on message batches. When specified, allows joining multiple message sources using SQL queries. + +type: `object` + +required: `false` + +#### **query** + +The SQL query to execute for joining message batches from different input sources. + +type: `string` + +required: `true` (when join is specified) + +#### **value_field** + +The field name to use for binary data values. Defaults to the system default binary value field. + +type: `string` + +required: `false` + +#### **codec** + +The codec configuration for decoding message batches before joining. + +type: `object` + +required: `true` (when join is specified) + ## Internal Mechanism -- Messages are stored in a thread-safe queue using `RwLock` -- Each message arrival resets an inactivity timer -- When the gap duration elapses without new messages, the session window closes and processes messages -- Messages are batched and concatenated during processing for better performance -- Implements proper backpressure handling to prevent memory overflow +- Built on top of the `BaseWindow` component which provides core windowing functionality +- Messages are grouped by session keys using `RwLock>>>` +- Each session maintains its own message queue with independent timeout tracking +- When a session exceeds the configured gap duration without new messages, it triggers window emission +- Messages within the same session are batched and concatenated during processing using Arrow's concat_batches +- Optional SQL join operations are performed using DataFusion's query engine with parallel decoding +- Uses Tokio's async runtime with cancellation tokens for efficient timeout management +- Implements proper session cleanup to prevent memory leaks from inactive sessions +- Join operations validate that all required input tables are present before executing SQL queries ## Examples +### Basic Configuration + ```yaml buffer: type: "session_window" @@ -34,4 +72,22 @@ This example configures a session window buffer that will: - Group messages into sessions - Close the session and process messages when no new messages arrive for 5 seconds -The buffer helps group related messages that occur close together in time while separating unrelated messages that have gaps between them. \ No newline at end of file +The buffer helps group related messages that occur close together in time while separating unrelated messages that have gaps between them. + +### With Join Configuration + +```yaml +buffer: + type: "session_window" + gap: "10s" # Close session after 10 seconds of inactivity + join: + query: "SELECT a.user_id, a.event_type, b.metadata FROM events a JOIN metadata b ON a.user_id = b.user_id" + codec: + type: "json" +``` + +This example configures a session window buffer with SQL join operations that: +- Groups messages into sessions with 10-second inactivity gap +- Joins event data with metadata using SQL +- Uses JSON codec for message decoding +- Processes joined data when session closes \ No newline at end of file diff --git a/docs/docs/components/1-buffers/sliding_window.md b/docs/docs/components/1-buffers/sliding_window.md index df68f88b..9b8d91c3 100644 --- a/docs/docs/components/1-buffers/sliding_window.md +++ b/docs/docs/components/1-buffers/sliding_window.md @@ -24,7 +24,7 @@ example: `1ms`, `1s`, `1m`, `1h`, `1d` ### **slide_size** -The number of messages to slide the window forward by when processing completes. +The number of messages to remove from the window after each emission. This determines how much the window "slides" forward with each processing cycle. Must be greater than 0 and less than or equal to window_size. type: `integer` @@ -33,11 +33,14 @@ required: `true` ## Internal Mechanism - Messages are stored in a thread-safe queue using `RwLock` -- A background timer periodically checks the interval condition to trigger window slides -- When the total message count reaches the configured window_size, the buffer triggers message processing -- After processing, the window slides forward by slide_size messages -- Messages are batched and concatenated during processing for better performance +- A background timer triggers window processing at the configured interval using Tokio's async runtime +- When triggered, the buffer processes up to `window_size` messages from the queue +- Messages are merged and concatenated using Arrow's concat_batches for efficient processing +- After processing, the window slides forward by removing `slide_size` messages from the front of the queue +- Acknowledgments are combined using VecAck to ensure proper message acknowledgment +- Uses cancellation tokens for graceful shutdown and resource cleanup - Implements proper backpressure handling to prevent memory overflow +- The sliding mechanism allows for overlapping windows when slide_size < window_size ## Examples diff --git a/docs/docs/components/1-buffers/tumbling_window.md b/docs/docs/components/1-buffers/tumbling_window.md index f936b4cd..ad7d3574 100644 --- a/docs/docs/components/1-buffers/tumbling_window.md +++ b/docs/docs/components/1-buffers/tumbling_window.md @@ -6,7 +6,7 @@ The Tumbling Window buffer component provides a fixed-size, non-overlapping wind ### **interval** -The duration between window slides. This determines how often the window will process messages regardless of message count. +The fixed duration of each window period. When this interval elapses, all accumulated messages are emitted. type: `string` @@ -14,21 +14,76 @@ required: `true` example: `1ms`, `1s`, `1m`, `1h`, `1d` +### **join** + +Optional join configuration for SQL join operations on message batches. When specified, allows joining multiple message sources using SQL queries. + +type: `object` + +required: `false` + +#### **query** + +The SQL query to execute for joining message batches from different input sources. + +type: `string` + +required: `true` (when join is specified) + +#### **value_field** + +The field name to use for binary data values. Defaults to the system default binary value field. + +type: `string` + +required: `false` + +#### **codec** + +The codec configuration for decoding message batches before joining. + +type: `object` + +required: `true` (when join is specified) + ## Internal Mechanism -- Messages are stored in a thread-safe queue using `RwLock` -- A background timer periodically triggers window processing based on the interval -- When the timer fires, all buffered messages are processed as a batch -- Messages are batched and concatenated during processing for better performance +- Built on top of the `BaseWindow` component which provides core windowing functionality +- Messages are grouped by input name using `RwLock>>>` +- A background timer triggers window processing at the configured interval using Tokio's async runtime +- When the interval elapses, all accumulated messages are processed as a single window +- Messages are batched and concatenated using Arrow's concat_batches for efficient processing +- Optional SQL join operations are performed using DataFusion's query engine with parallel decoding +- Uses cancellation tokens for graceful shutdown and resource cleanup +- Join operations validate that all required input tables are present before executing SQL queries - Implements proper backpressure handling to prevent memory overflow -- Uses Tokio's async runtime for efficient timer handling +- Windows are non-overlapping, with each message belonging to exactly one window ## Examples +### Basic Configuration + ```yaml buffer: type: "tumbling_window" interval: "1s" # Process every 1 second ``` -This example configures a tumbling window buffer that will process messages every 1 second, regardless of message count. \ No newline at end of file +This example configures a tumbling window buffer that will process messages every 1 second, regardless of message count. + +### With Join Configuration + +```yaml +buffer: + type: "tumbling_window" + interval: "5s" # Process every 5 seconds + join: + query: "SELECT a.id, a.name, b.value FROM input1 a JOIN input2 b ON a.id = b.id" + codec: + type: "json" +``` + +This example configures a tumbling window buffer with SQL join operations that: +- Processes messages every 5 seconds +- Joins data from two input sources using SQL +- Uses JSON codec for message decoding \ No newline at end of file diff --git a/docs/docs/components/2-processors/python.md b/docs/docs/components/2-processors/python.md new file mode 100644 index 00000000..b56f18e8 --- /dev/null +++ b/docs/docs/components/2-processors/python.md @@ -0,0 +1,332 @@ +# Python + +The Python processor component allows you to execute Python code to process and transform data. It provides a flexible way to implement custom processing logic using Python, enabling you to leverage Python's rich ecosystem of libraries and tools for data processing. + +## Configuration + +### **script** + +Python code to execute directly. + +type: `string` + +optional: `true` + +### **module** + +Python module to import. If not specified, the code will be executed in the `__main__` module. + +type: `string` + +optional: `true` + +### **function** + +Function name to call for processing. The function should accept a PyArrow batch as input and return a list of PyArrow batches. + +type: `string` + +required: `true` + +### **python_path** + +Additional Python paths to add to `sys.path` for module imports. + +type: `array[string]` + +optional: `true` + +default: `[]` + +## Data Flow + +The Python processor converts the incoming MessageBatch to PyArrow format, passes it to the specified Python function, and then converts the returned PyArrow batches back to MessageBatch format. + +## Examples + +### Using a Python Module + +```yaml +- processor: + type: "python" + function: "process_batch" + module: "example1" + python_path: ["./examples/python"] +``` + +In this example, the processor imports the `example1` module from the `./examples/python` directory and calls the `process_batch` function to process the data. + +### Using Inline Python Script + +```yaml +- processor: + type: "python" + script: | + def process_batch(batch): + # Process the batch here + # For example, you can modify the batch or create a new one + return [batch] + function: "process_batch" +``` + +### Complete Pipeline Example + +```yaml +streams: + - input: + type: "memory" + messages: + - '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }' + - '{ "timestamp": 1625000000000, "value": 19, "sensor": "temp_1" }' + - '{ "timestamp": 1625000000000, "value": 11, "sensor": "temp_2" }' + - '{ "timestamp": 1625000000000, "value": 11, "sensor": "temp_2" }' + + + pipeline: + thread_num: 4 + processors: + - type: "json_to_arrow" + - type: "python" + script: | + import pyarrow as pa + import pyarrow.compute as pc + + def process_batch(batch): + # Get the value field in the batch + value_array = batch.column('value') + + # Do math on the values + doubled_values = pc.multiply(value_array, 2) + + # Create a new field + new_fields = [ + # Leave the original fields + pa.field('timestamp', pa.int64()), + pa.field('value', pa.int64()), + pa.field('sensor', pa.string()), + # Add a new field + pa.field('value_doubled', pa.int64()) + ] + + # Create a new schema + new_schema = pa.schema(new_fields) + + # Create a new batch of records + new_batch = pa.RecordBatch.from_arrays( + [ + batch.column('timestamp'), + batch.column('value'), + batch.column('sensor'), + doubled_values + ], + schema=new_schema + ) + + return [new_batch] + function: "process_batch" + - type: "arrow_to_json" + + output: + type: "stdout" +``` + +This example demonstrates a complete pipeline where: +1. First, it generates a JSON message containing timestamp, value, and sensor information +2. Converts the JSON to Arrow format +3. Uses the Python processor to process the data +4. Converts the processed data back to JSON format +5. Finally outputs to standard output + +### Example Python Module + +```python +def process_batch(batch): + # The batch parameter is a PyArrow batch + # You can perform any processing on the batch here + # For example, you can modify the batch or create a new one + return [batch] # Return a list of PyArrow batches + + +## PyArrow data processing case + +Here are some specific examples of data processing with PyArrow, showing how to leverage PyArrow's capabilities in a Python processor. + +### Data filtering cases + +```python +def filter_data(batch): + import pyarrow as pa + import pyarrow.compute as pc + + # Get the value field in the batch + value_array = batch.column('value') + + # Use the compute feature of PyArrow to filter data + # Create a filter with a value greater than 15 + mask = pc.greater(value_array, 15) + + # Apply filters + filtered_batch = batch.filter(mask) + + return [filtered_batch] +``` + +This example shows how to use PyArrow's compute module to filter data and keep only records with values greater than 15. + +### The case for data transformation + +```python +def transform_data(batch): + import pyarrow as pa + import pyarrow.compute as pc + + # Get the value field in the batch + value_array = batch.column('value') + + # Do math on the values + doubled_values = pc.multiply(value_array, 2) + squared_values = pc.power(value_array, 2) + + # Create a new field + new_fields = [ + # Leave the original fields + pa.field('timestamp', pa.int64()), + pa.field('value', pa.int64()), + pa.field('sensor', pa.string()), + # Add a new field + pa.field('value_doubled', pa.int64()), + pa.field('value_squared', pa.int64()) + ] + + # Create a new schema + new_schema = pa.schema(new_fields) + + # Create a new batch of records + new_batch = pa.RecordBatch.from_arrays( + [ + batch.column('timestamp'), + batch.column('value'), + batch.column('sensor'), + doubled_values, + squared_values + ], + schema=new_schema + ) + + return [new_batch] +``` + +This example shows how to use PyArrow to transform data, create new fields, and build new batches of records. + +### The case for data aggregation + +```python +def aggregate_data(batch): + import pyarrow as pa + import pyarrow.compute as pc + import pandas as pd + + # Convert PyArrow batches to Pandas DataFrames for aggregation operations + df = batch.to_pandas() + + # Group by sensor and calculate aggregate values + aggregated = df.groupby('sensor').agg({ + 'value': ['mean', 'min', 'max', 'sum', 'count'] + }).reset_index() + + # Flatten multi-level listings + aggregated.columns = ['sensor', 'value_mean', 'value_min', 'value_max', 'value_sum', 'value_count'] + + # Convert the aggregate results back into a PyArrow batch + result_batch = pa.RecordBatch.from_pandas(aggregated) + + return [result_batch] +``` + +This example shows how to combine PyArrow and Pandas for data aggregation to calculate statistics by sensor grouping. + +### Time series processing cases + +```python +def process_timeseries(batch): + import pyarrow as pa + import pandas as pd + import numpy as np + from datetime import datetime + + df = batch.to_pandas() + + # Convert timestamps to datetime objects + df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms') + + # Set up a time index + df.set_index('datetime', inplace=True) + + # Calculate the moving average + df['value_ma'] = df['value'].rolling('5s').mean() + + # Calculate the rate of change + df['value_change'] = df['value'].pct_change() + + # Reset the index + df.reset_index(inplace=True) + + # Convert the processed DataFrame back to the PyArrow batch + result_batch = pa.RecordBatch.from_pandas(df) + + return [result_batch] +``` + +This example shows how to work with time series data, including timestamp transformations, moving averages, and rate of change calculations. + +### Data splitting cases + +```python +def split_data(batch): + import pyarrow as pa + import pyarrow.compute as pc + + # Get the value field in the batch + value_array = batch.column('value') + + # Create two filters + high_values_mask = pc.greater_equal(value_array, 50) + low_values_mask = pc.less(value_array, 50) + + # Apply filters to create two batches + high_values_batch = batch.filter(high_values_mask) + low_values_batch = batch.filter(low_values_mask) + + # Two batches are returned + return [high_values_batch, low_values_batch] +``` + +This example shows how to split a data batch into multiple batches to create different data streams based on different criteria. + +### Using Polars for High-Performance Data Manipulation +Polars is a blazingly fast DataFrame library implemented in Rust, using Apache Arrow Columnar Format as its memory model. It provides an easy-to-use and highly performant API for data manipulation. + +```python +def aggregate_with_polars(batch): + import polars as pl + + # Convert a PyArrow RecordBatch to a Polars DataFrame + df = pl.from_arrow(batch) + + # Group by sensor and calculate aggregate values + aggregated_df = df.group_by("sensor").agg([ + pl.col("value").mean().alias("value_mean"), + pl.col("value").min().alias("value_min"), + pl.col("value").max().alias("value_max"), + pl.col("value").sum().alias("value_sum"), + pl.col("value").count().alias("value_count"), + ]) + + # Convert the aggregated Polars DataFrame back to a PyArrow RecordBatch + result_batch = aggregated_df.to_arrow() + + return [result_batch] + +``` + +This example showcases using Polars for a data aggregation task. It's often significantly faster than using Pandas for similar operations, especially on larger datasets, due to its Rust-based backend and efficient query optimization. diff --git a/docs/docs/components/2-processors/sql.md b/docs/docs/components/2-processors/sql.md index ddcc1803..df914bde 100644 --- a/docs/docs/components/2-processors/sql.md +++ b/docs/docs/components/2-processors/sql.md @@ -35,12 +35,88 @@ properties: required: `true` +### **temporary_list** + +Optional list of temporary data sources that can be referenced in SQL queries. Each temporary source allows you to access external data during query execution. + +type: `array` + +required: `false` + +properties: +- `name`: Name of the temporary data source to reference + + type: `string` + + required: `true` + +- `table_name`: Table name to use for this temporary data in SQL queries + + type: `string` + + required: `true` + +- `key`: Key expression or value used to retrieve data from the temporary source + + type: `object` + + required: `true` + + properties: + - `expr`: Expression string to evaluate for the key + + type: `string` + + required: `false` + + - `value`: Static string value to use as the key + + type: `string` + + required: `false` + ## Examples +### Basic SQL Query + ```yaml - processor: type: "sql" query: "SELECT id, name, age FROM users WHERE age > 18" table_name: "users" ``` + +### SQL Query with Temporary Data Sources + +```yaml +- temporary: + - name: user_profiles + type: "redis" + mode: + type: single + url: redis://127.0.0.1:6379 + redis_type: + type: string + + processor: + type: "sql" + query: "SELECT u.id, u.name, p.title FROM users u JOIN profiles p ON u.id = p.user_id" + table_name: "users" + temporary_list: + - name: "user_profiles" + table_name: "profiles" + key: + expr: "user_id" +``` + +### SQL Query with Ballista (Distributed Computing) + +```yaml +- processor: + type: "sql" + query: "SELECT COUNT(*) as total FROM large_dataset" + table_name: "large_dataset" + ballista: + remote_url: "df://localhost:50050" +``` diff --git a/docs/docs/components/4-temporary/_category_.json b/docs/docs/components/4-temporary/_category_.json new file mode 100644 index 00000000..88c3eb29 --- /dev/null +++ b/docs/docs/components/4-temporary/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Temporary", + "link": { + "title": "Temporary", + "type": "generated-index", + "description": "Temporary components provide temporary storage capabilities for data processing pipelines. They can be used to store intermediate results, cache data, or provide lookup tables for SQL queries." + } +} \ No newline at end of file diff --git a/docs/docs/components/4-temporary/redis.md b/docs/docs/components/4-temporary/redis.md new file mode 100644 index 00000000..7df3f349 --- /dev/null +++ b/docs/docs/components/4-temporary/redis.md @@ -0,0 +1,176 @@ +# Redis + +The Redis temporary component provides temporary storage capabilities using Redis as the backend. It supports both list and string data types and can be used in SQL queries as lookup tables. + +## Configuration + +#### **mode** (required) + +Redis connection configuration. Supports both single instance and cluster modes. + +type: `object` + +##### Single Mode + +```yaml +mode: + type: "single" + url: "redis://127.0.0.1:6379" +``` + +###### **type** (required) + +Connection type, must be `"single"` for single instance mode. + +type: `string` + +###### **url** (required) + +Redis server URL in the format `redis://host:port` or `rediss://host:port` for SSL/TLS connections. + +type: `string` + +##### Cluster Mode + +```yaml +mode: + type: "cluster" + urls: + - "redis://127.0.0.1:6379" + - "redis://127.0.0.1:6380" + - "redis://127.0.0.1:6381" +``` + +###### **type** (required) + +Connection type, must be `"cluster"` for cluster mode. + +type: `string` + +###### **urls** (required) + +List of Redis cluster node URLs. + +type: `array` of `string` + +#### **redis_type** (required) + +Redis data type configuration. Supports both list and string types. + +type: `object` + +##### String Type + +```yaml +redis_type: + type: "string" +``` + +Uses Redis string operations (GET/MGET) to retrieve data. + +##### List Type + +```yaml +redis_type: + type: "list" +``` + +Uses Redis list operations (LRANGE) to retrieve data. + +#### **codec** (required) + +Codec configuration for data serialization/deserialization. + +type: `object` + +```yaml +codec: + type: "json" +``` + +Currently supports JSON codec for data encoding/decoding. + +## Usage in SQL Queries + +The Redis temporary component can be used as a lookup table in SQL queries: + +```yaml +temporary: + - name: redis_temporary + type: "redis" + codec: + type: json + mode: + type: single + url: redis://127.0.0.1:6379 + redis_type: + type: string + +pipeline: + processors: + - type: "sql" + query: "SELECT * FROM flow RIGHT JOIN redis_table ON (flow.sensor = redis_table.x)" + temporary_list: + - name: redis_temporary + table_name: redis_table + key: + type: value + value: 'test' +``` + +## Complete Example + +```yaml +logging: + level: info + +streams: + - input: + type: "generate" + context: '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }' + interval: 5s + batch_size: 2 + + temporary: + - name: redis_temporary + type: "redis" + codec: + type: json + mode: + type: single + url: redis://127.0.0.1:6379 + redis_type: + type: string + + pipeline: + thread_num: 10 + processors: + - type: "json_to_arrow" + - type: "sql" + query: "SELECT * FROM flow RIGHT JOIN redis_table ON (flow.sensor = redis_table.x)" + temporary_list: + - name: redis_temporary + table_name: redis_table + key: + type: value + value: 'test' + + output: + type: "stdout" +``` + +## Features + +- **Multiple Redis Types**: Supports both string and list data types +- **Connection Modes**: Works with both single Redis instances and Redis clusters +- **SQL Integration**: Can be used as lookup tables in SQL queries +- **Flexible Codec**: Supports JSON codec for data serialization +- **Async Operations**: Fully asynchronous Redis operations for better performance + +## Notes + +- The component automatically handles connection management and reconnection +- When used in SQL queries, the key parameter determines which Redis key(s) to query +- List type uses LRANGE to get all elements from Redis lists +- String type uses MGET for efficient batch retrieval of multiple keys +- All Redis operations are performed asynchronously for optimal performance \ No newline at end of file diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 5b964269..21a3984c 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -80,7 +80,7 @@ const config: Config = { themeConfig: { // Replace with your project's social card - image: 'img/docusaurus-social-card.jpg', + image: 'img/arkflow.svg', navbar: { title: 'ArkFlow', logo: { diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index c0c4d30b..e7601e5a 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -10,16 +10,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.7.0 - version: 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + version: 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/preset-classic': specifier: 3.7.0 - version: 3.7.0(@algolia/client-search@5.23.1)(@mdx-js/react@3.1.0)(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3) + version: 3.7.0(@algolia/client-search@5.27.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3) '@easyops-cn/docusaurus-search-local': specifier: ^0.49.2 - version: 0.49.2(@docusaurus/theme-common@3.7.0)(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + version: 0.49.2(@docusaurus/theme-common@3.8.1(@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.1.0(@types/react@19.0.12)(react@19.1.0) + version: 3.1.0(@types/react@19.1.8)(react@19.1.0) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -35,13 +35,13 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: 3.7.0 - version: 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + version: 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/tsconfig': specifier: 3.7.0 version: 3.7.0 '@docusaurus/types': specifier: 3.7.0 - version: 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + version: 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) typescript: specifier: ~5.6.2 version: 5.6.3 @@ -68,97 +68,97 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.23.1': - resolution: {integrity: sha512-WZ9vKwHDiTCq6/F2+KHMeojT6MuqtVVvUJorbi6zGeOokKbOeeq7+RIPEezynsfq+Tl6SjuAbOWiQ0qTpJTWQw==} + '@algolia/client-abtesting@5.27.0': + resolution: {integrity: sha512-SITU5umoknxETtw67TxJu9njyMkWiH8pM+Bvw4dzfuIrIAT6Y1rmwV4y0A0didWoT+6xVuammIykbtBMolBcmg==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.23.1': - resolution: {integrity: sha512-Pr/hVwl2YN7xw0R9HS8KzG+R7IQAArdMQIqi/QYRmW6+Mst3cqGqvVJEAYOJUS5lAQ93pkAkc5ns1kFxSfWRIg==} + '@algolia/client-analytics@5.27.0': + resolution: {integrity: sha512-go1b9qIZK5vYEQ7jD2bsfhhhVsoh9cFxQ5xF8TzTsg2WOCZR3O92oXCkq15SOK0ngJfqDU6a/k0oZ4KuEnih1Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.23.1': - resolution: {integrity: sha512-/xJtZl+A7GBNf1jkG/xsemur7JDkBWY8wh58iah1xvJxxxpi+WBYAtVkwS7Mn/D/PJFpuVNSHKkoC8+uT5jYKQ==} + '@algolia/client-common@5.27.0': + resolution: {integrity: sha512-tnFOzdNuMzsz93kOClj3fKfuYoF3oYaEB5bggULSj075GJ7HUNedBEm7a6ScrjtnOaOtipbnT7veUpHA4o4wEQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.23.1': - resolution: {integrity: sha512-tmg7ovakc0uOfp5vZv9CPLuMkIqEEn7Ra3NzU0GOpSjXTgQmcsw7QvzLQtD6u9oFPCMk+OqJ+4V/94P5M0yWSw==} + '@algolia/client-insights@5.27.0': + resolution: {integrity: sha512-y1qgw39qZijjQBXrqZTiwK1cWgWGRiLpJNWBv9w36nVMKfl9kInrfsYmdBAfmlhVgF/+Woe0y1jQ7pa4HyShAw==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.23.1': - resolution: {integrity: sha512-jYsKIiCN5IlWG+F9vbrAXuXPy0u44HDYN3QrX+zfQ8Fr8cpdNHbQTuQAQfWpofhA6hYrrQ66Ms2KbXcdgkyPKw==} + '@algolia/client-personalization@5.27.0': + resolution: {integrity: sha512-XluG9qPZKEbiLoIfXTKbABsWDNOMPx0t6T2ImJTTeuX+U/zBdmfcqqgcgkqXp+vbXof/XX/4of9Eqo1JaqEmKw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.23.1': - resolution: {integrity: sha512-BDFiGQ6UdFsEMEigFlOAeL7VDysqf05qn+yyQUnGuOuzSbsqtlB4W6ZyZC1+jpY2tXGpGOMDh9ej2BQOoji8UQ==} + '@algolia/client-query-suggestions@5.27.0': + resolution: {integrity: sha512-V8/To+SsAl2sdw2AAjeLJuCW1L+xpz+LAGerJK7HKqHzE5yQhWmIWZTzqYQcojkii4iBMYn0y3+uReWqT8XVSQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.23.1': - resolution: {integrity: sha512-5aW3B0F2aALh54rn/LLSZPigA0Wbpl4EZfI8g2KmAWHM3HLQtzFhpmeiItFMUklmmHwse4s/iDmRHlBhdHfFIQ==} + '@algolia/client-search@5.27.0': + resolution: {integrity: sha512-EJJ7WmvmUXZdchueKFCK8UZFyLqy4Hz64snNp0cTc7c0MKaSeDGYEDxVsIJKp15r7ORaoGxSyS4y6BGZMXYuCg==} engines: {node: '>= 14.0.0'} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.23.1': - resolution: {integrity: sha512-YlS7wL1vFGd79/gDXHejfjcbLJHwh5Y9ljA6TEbsHsXeZuN8galpcMIDl9qadHJgx3PgQbwmWV87+EHGiLzXoQ==} + '@algolia/ingestion@1.27.0': + resolution: {integrity: sha512-xNCyWeqpmEo4EdmpG57Fs1fJIQcPwt5NnJ6MBdXnUdMVXF4f5PHgza+HQWQQcYpCsune96jfmR0v7us6gRIlCw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.23.1': - resolution: {integrity: sha512-qD79lqsLv9G/nu6EIo3hjBBQr7rBt7QatdABT59HnQI5exbJBDMbtynu3VdrvvCfZ9XEb7j/HFbglbN7fVYKfA==} + '@algolia/monitoring@1.27.0': + resolution: {integrity: sha512-P0NDiEFyt9UYQLBI0IQocIT7xHpjMpoFN3UDeerbztlkH9HdqT0GGh1SHYmNWpbMWIGWhSJTtz6kSIWvFu4+pw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.23.1': - resolution: {integrity: sha512-kmQtotstkZCCojfqv4//XQhy+Y5rTkNTTadiJf/KsR1wBvLMIYDQtTR+1XZdHdVaJCnvW//gJA3KL84rQ91uPg==} + '@algolia/recommend@5.27.0': + resolution: {integrity: sha512-cqfTMF1d1cc7hg0vITNAFxJZas7MJ4Obc36WwkKpY23NOtGb+4tH9X7UKlQa2PmTgbXIANoJ/DAQTeiVlD2I4Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.23.1': - resolution: {integrity: sha512-BJfxcOWj3vAr3r4Oe9T3O+pg54qRZdeEmp5Lmzocog05rhfH/wgEXv/stFnuB+6MgLOOiXJNP1kdaiAHLzRZYw==} + '@algolia/requester-browser-xhr@5.27.0': + resolution: {integrity: sha512-ErenYTcXl16wYXtf0pxLl9KLVxIztuehqXHfW9nNsD8mz9OX42HbXuPzT7y6JcPiWJpc/UU/LY5wBTB65vsEUg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.23.1': - resolution: {integrity: sha512-YTbslSbEpuCZn15eMx8djR1jYbJdELOIfvo5xLOBeSB/bGReHAOoQ9HHopCB17F40xaPQi6CJMXWx63ImMAN4w==} + '@algolia/requester-fetch@5.27.0': + resolution: {integrity: sha512-CNOvmXsVi+IvT7z1d+6X7FveVkgEQwTNgipjQCHTIbF9KSMfZR7tUsJC+NpELrm10ALdOMauah84ybs9rw1cKQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.23.1': - resolution: {integrity: sha512-Jp/5Fqx+eREpmM179LOQpyvQOdsR3Pq2aVpsuoSdQ/8o4B6v38lmrkbbMrMsNayR59QQ9VkL2ImYKBysqB4Qug==} + '@algolia/requester-node-http@5.27.0': + resolution: {integrity: sha512-Nx9EdLYZDsaYFTthqmc0XcVvsx6jqeEX8fNiYOB5i2HboQwl8pJPj1jFhGqoGd0KG7KFR+sdPO5/e0EDDAru2Q==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + '@babel/compat-data@7.27.5': + resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + '@babel/core@7.27.4': + resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.0': - resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -168,95 +168,95 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.25.9': - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.9': - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + '@babel/helper-wrap-function@7.27.1': + resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': + resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -272,26 +272,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -302,350 +302,350 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.26.8': - resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + '@babel/plugin-transform-async-generator-functions@7.27.1': + resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.0': - resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} + '@babel/plugin-transform-block-scoping@7.27.5': + resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.25.9': - resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + '@babel/plugin-transform-class-static-block@7.27.1': + resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.9': - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + '@babel/plugin-transform-classes@7.27.1': + resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.25.9': - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + '@babel/plugin-transform-destructuring@7.27.3': + resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.26.9': - resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.9': - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.9': - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + '@babel/plugin-transform-object-rest-spread@7.27.3': + resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.25.9': - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + '@babel/plugin-transform-parameters@7.27.1': + resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.25.9': - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-constant-elements@7.25.9': - resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} + '@babel/plugin-transform-react-constant-elements@7.27.1': + resolution: {integrity: sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.25.9': - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + '@babel/plugin-transform-react-display-name@7.27.1': + resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.25.9': - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.9': - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + '@babel/plugin-transform-react-jsx@7.27.1': + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.25.9': - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.0': - resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} + '@babel/plugin-transform-regenerator@7.27.5': + resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.26.10': - resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} + '@babel/plugin-transform-runtime@7.27.4': + resolution: {integrity: sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.25.9': - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.26.8': - resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.27.0': - resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.27.0': - resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -655,83 +655,83 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.26.3': - resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + '@babel/preset-react@7.27.1': + resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.27.0': - resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.27.0': - resolution: {integrity: sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==} + '@babel/runtime-corejs3@7.27.6': + resolution: {integrity: sha512-vDVrlmRAY8z9Ul/HxT+8ceAru95LQgkSKiXkSYZvqtbkPSfhZJgpRp45Cldbh1GJ1kxzQkI70AqyrTI58KpaWQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} engines: {node: '>=6.9.0'} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@csstools/cascade-layer-name-parser@2.0.4': - resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.2': - resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.8': - resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@4.0.2': - resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/postcss-cascade-layers@5.0.1': resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} @@ -739,26 +739,32 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-function@4.0.8': - resolution: {integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==} + '@csstools/postcss-color-function@4.0.10': + resolution: {integrity: sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-function@3.0.8': - resolution: {integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==} + '@csstools/postcss-color-mix-function@3.0.10': + resolution: {integrity: sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-content-alt-text@2.0.4': - resolution: {integrity: sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==} + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0': + resolution: {integrity: sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-exponential-functions@2.0.7': - resolution: {integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==} + '@csstools/postcss-content-alt-text@2.0.6': + resolution: {integrity: sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.9': + resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -769,26 +775,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-gamut-mapping@2.0.8': - resolution: {integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==} + '@csstools/postcss-gamut-mapping@2.0.10': + resolution: {integrity: sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-gradients-interpolation-method@5.0.8': - resolution: {integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==} + '@csstools/postcss-gradients-interpolation-method@5.0.10': + resolution: {integrity: sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-hwb-function@4.0.8': - resolution: {integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==} + '@csstools/postcss-hwb-function@4.0.10': + resolution: {integrity: sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-ic-unit@4.0.0': - resolution: {integrity: sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==} + '@csstools/postcss-ic-unit@4.0.2': + resolution: {integrity: sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -799,14 +805,14 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-is-pseudo-class@5.0.1': - resolution: {integrity: sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==} + '@csstools/postcss-is-pseudo-class@5.0.3': + resolution: {integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-light-dark-function@2.0.7': - resolution: {integrity: sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==} + '@csstools/postcss-light-dark-function@2.0.9': + resolution: {integrity: sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -835,20 +841,20 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-logical-viewport-units@3.0.3': - resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==} + '@csstools/postcss-logical-viewport-units@3.0.4': + resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-minmax@2.0.7': - resolution: {integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==} + '@csstools/postcss-media-minmax@2.0.9': + resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4': - resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==} + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5': + resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -865,26 +871,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-oklab-function@4.0.8': - resolution: {integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==} + '@csstools/postcss-oklab-function@4.0.10': + resolution: {integrity: sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-progressive-custom-properties@4.0.0': - resolution: {integrity: sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==} + '@csstools/postcss-progressive-custom-properties@4.1.0': + resolution: {integrity: sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-random-function@1.0.3': - resolution: {integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==} + '@csstools/postcss-random-function@2.0.1': + resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-relative-color-syntax@3.0.8': - resolution: {integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==} + '@csstools/postcss-relative-color-syntax@3.0.10': + resolution: {integrity: sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -895,14 +901,14 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-sign-functions@1.1.2': - resolution: {integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==} + '@csstools/postcss-sign-functions@1.1.4': + resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-stepped-value-functions@4.0.7': - resolution: {integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==} + '@csstools/postcss-stepped-value-functions@4.0.9': + resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -913,8 +919,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-trigonometric-functions@4.0.7': - resolution: {integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==} + '@csstools/postcss-trigonometric-functions@4.0.9': + resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -925,8 +931,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/selector-resolve-nested@3.0.0': - resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} + '@csstools/selector-resolve-nested@3.1.0': + resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 @@ -971,6 +977,10 @@ packages: resolution: {integrity: sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==} engines: {node: '>=18.0'} + '@docusaurus/babel@3.8.1': + resolution: {integrity: sha512-3brkJrml8vUbn9aeoZUlJfsI/GqyFcDgQJwQkmBtclJgWDEQBKKeagZfOgx0WfUQhagL1sQLNW0iBdxnI863Uw==} + engines: {node: '>=18.0'} + '@docusaurus/bundler@3.7.0': resolution: {integrity: sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==} engines: {node: '>=18.0'} @@ -980,6 +990,15 @@ packages: '@docusaurus/faster': optional: true + '@docusaurus/bundler@3.8.1': + resolution: {integrity: sha512-/z4V0FRoQ0GuSLToNjOSGsk6m2lQUG4FRn8goOVoZSRsTrU8YR2aJacX5K3RG18EaX9b+52pN4m1sL3MQZVsQA==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/faster': '*' + peerDependenciesMeta: + '@docusaurus/faster': + optional: true + '@docusaurus/core@3.7.0': resolution: {integrity: sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==} engines: {node: '>=18.0'} @@ -989,14 +1008,31 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/core@3.8.1': + resolution: {integrity: sha512-ENB01IyQSqI2FLtOzqSI3qxG2B/jP4gQPahl2C3XReiLebcVh5B5cB9KYFvdoOqOWPyr5gXK4sjgTKv7peXCrA==} + engines: {node: '>=18.0'} + hasBin: true + peerDependencies: + '@mdx-js/react': ^3.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/cssnano-preset@3.7.0': resolution: {integrity: sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==} engines: {node: '>=18.0'} + '@docusaurus/cssnano-preset@3.8.1': + resolution: {integrity: sha512-G7WyR2N6SpyUotqhGznERBK+x84uyhfMQM2MmDLs88bw4Flom6TY46HzkRkSEzaP9j80MbTN8naiL1fR17WQug==} + engines: {node: '>=18.0'} + '@docusaurus/logger@3.7.0': resolution: {integrity: sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==} engines: {node: '>=18.0'} + '@docusaurus/logger@3.8.1': + resolution: {integrity: sha512-2wjeGDhKcExEmjX8k1N/MRDiPKXGF2Pg+df/bDDPnnJWHXnVEZxXj80d6jcxp1Gpnksl0hF8t/ZQw9elqj2+ww==} + engines: {node: '>=18.0'} + '@docusaurus/mdx-loader@3.7.0': resolution: {integrity: sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==} engines: {node: '>=18.0'} @@ -1004,12 +1040,25 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/mdx-loader@3.8.1': + resolution: {integrity: sha512-DZRhagSFRcEq1cUtBMo4TKxSNo/W6/s44yhr8X+eoXqCLycFQUylebOMPseHi5tc4fkGJqwqpWJLz6JStU9L4w==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/module-type-aliases@3.7.0': resolution: {integrity: sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==} peerDependencies: react: '*' react-dom: '*' + '@docusaurus/module-type-aliases@3.8.1': + resolution: {integrity: sha512-6xhvAJiXzsaq3JdosS7wbRt/PwEPWHr9eM4YNYqVlbgG1hSK3uQDXTVvQktasp3VO6BmfYWPozueLWuj4gB+vg==} + peerDependencies: + react: '*' + react-dom: '*' + '@docusaurus/plugin-content-blog@3.7.0': resolution: {integrity: sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==} engines: {node: '>=18.0'} @@ -1025,6 +1074,13 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/plugin-content-docs@3.8.1': + resolution: {integrity: sha512-oByRkSZzeGNQByCMaX+kif5Nl2vmtj2IHQI2fWjCfCootsdKZDPFLonhIp5s3IGJO7PLUfe0POyw0Xh/RrGXJA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/plugin-content-pages@3.7.0': resolution: {integrity: sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==} engines: {node: '>=18.0'} @@ -1101,6 +1157,14 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/theme-common@3.8.1': + resolution: {integrity: sha512-UswMOyTnPEVRvN5Qzbo+l8k4xrd5fTFu2VPPfD6FcW/6qUtVLmJTQCktbAL3KJ0BVXGm5aJXz/ZrzqFuZERGPw==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/plugin-content-docs': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/theme-search-algolia@3.7.0': resolution: {integrity: sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==} engines: {node: '>=18.0'} @@ -1112,6 +1176,10 @@ packages: resolution: {integrity: sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==} engines: {node: '>=18.0'} + '@docusaurus/theme-translations@3.8.1': + resolution: {integrity: sha512-OTp6eebuMcf2rJt4bqnvuwmm3NVXfzfYejL+u/Y1qwKhZPrjPoKWfk1CbOP5xH5ZOPkiAsx4dHdQBRJszK3z2g==} + engines: {node: '>=18.0'} + '@docusaurus/tsconfig@3.7.0': resolution: {integrity: sha512-vRsyj3yUZCjscgfgcFYjIsTcAru/4h4YH2/XAE8Rs7wWdnng98PgWKvP5ovVc4rmRpRg2WChVW0uOy2xHDvDBQ==} @@ -1121,18 +1189,36 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/types@3.8.1': + resolution: {integrity: sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + '@docusaurus/utils-common@3.7.0': resolution: {integrity: sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==} engines: {node: '>=18.0'} + '@docusaurus/utils-common@3.8.1': + resolution: {integrity: sha512-zTZiDlvpvoJIrQEEd71c154DkcriBecm4z94OzEE9kz7ikS3J+iSlABhFXM45mZ0eN5pVqqr7cs60+ZlYLewtg==} + engines: {node: '>=18.0'} + '@docusaurus/utils-validation@3.7.0': resolution: {integrity: sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==} engines: {node: '>=18.0'} + '@docusaurus/utils-validation@3.8.1': + resolution: {integrity: sha512-gs5bXIccxzEbyVecvxg6upTwaUbfa0KMmTj7HhHzc016AGyxH2o73k1/aOD0IFrdCsfJNt37MqNI47s2MgRZMA==} + engines: {node: '>=18.0'} + '@docusaurus/utils@3.7.0': resolution: {integrity: sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==} engines: {node: '>=18.0'} + '@docusaurus/utils@3.8.1': + resolution: {integrity: sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ==} + engines: {node: '>=18.0'} + '@easyops-cn/autocomplete.js@0.38.1': resolution: {integrity: sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==} @@ -1144,14 +1230,14 @@ packages: react: ^16.14.0 || ^17 || ^18 || ^19 react-dom: ^16.14.0 || 17 || ^18 || ^19 - '@emnapi/core@1.4.0': - resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} - '@emnapi/runtime@1.4.0': - resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1200,8 +1286,8 @@ packages: '@types/react': '>=16' react: '>=16' - '@napi-rs/wasm-runtime@0.2.7': - resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==} + '@napi-rs/wasm-runtime@0.2.11': + resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} '@node-rs/jieba-android-arm-eabi@1.10.4': resolution: {integrity: sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==} @@ -1244,28 +1330,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@node-rs/jieba-linux-arm64-musl@1.10.4': resolution: {integrity: sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@node-rs/jieba-linux-x64-gnu@1.10.4': resolution: {integrity: sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@node-rs/jieba-linux-x64-musl@1.10.4': resolution: {integrity: sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@node-rs/jieba-wasm32-wasi@1.10.4': resolution: {integrity: sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==} @@ -1318,8 +1400,8 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -1439,8 +1521,8 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} @@ -1463,8 +1545,8 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1472,8 +1554,8 @@ packages: '@types/express-serve-static-core@5.0.6': resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} '@types/gtag.js@0.0.12': resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} @@ -1490,8 +1572,8 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} '@types/http-proxy@1.17.16': resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} @@ -1526,8 +1608,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.13.16': - resolution: {integrity: sha512-15tM+qA4Ypml/N7kyRdvfRjBQT2RL461uF1Bldn06K0Nzn1lY3nAPgHlsVrJxdZ9WhZiW0Fmc1lOYMtDsAuB3w==} + '@types/node@24.0.1': + resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1535,8 +1617,8 @@ packages: '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -1550,8 +1632,8 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - '@types/react@19.0.12': - resolution: {integrity: sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==} + '@types/react@19.1.8': + resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -1559,14 +1641,14 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -1653,8 +1735,8 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1690,13 +1772,13 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch-helper@3.24.3: - resolution: {integrity: sha512-3QKg5lzSfUiPN8Hn1ViHEGv6PjK7i4SFEDLzwlSzPO/4mVOsyos7B7/AsEtFQW5KHHPiCq6DyJl+mzg7CYlEgw==} + algoliasearch-helper@3.25.0: + resolution: {integrity: sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw==} peerDependencies: algoliasearch: '>= 3.1 < 6' - algoliasearch@5.23.1: - resolution: {integrity: sha512-YgOhwpSIQjR/LrEN1FGOzEVhXTdkpfAn+MPGR1s3MQzvPvdTiGQgFDpPeIl5w/KvvXammMXTzazvaJpEie28xQ==} + algoliasearch@5.27.0: + resolution: {integrity: sha512-2PvAgvxxJzA3+dB+ERfS2JPdvUsxNf89Cc2GF5iCcFupTULOwmbfinvqrC4Qj9nHJJDNf494NqEN/1f9177ZTQ==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -1821,15 +1903,15 @@ packages: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1882,8 +1964,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + caniuse-lite@1.0.30001722: + resolution: {integrity: sha512-DCQHBBZtiK6JVkAGw7drvAMK0Q0POD/xZvEmDp6baiMMP6QXXk9HpD6mNYBZWhOPG6LvIDb82ITqtWjhDckHCA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1915,14 +1997,14 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} - cheerio@1.0.0-rc.12: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} + cheerio@1.1.0: + resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} + engines: {node: '>=18.17'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -2065,14 +2147,14 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + core-js-compat@3.43.0: + resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} - core-js-pure@3.41.0: - resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==} + core-js-pure@3.43.0: + resolution: {integrity: sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==} - core-js@3.41.0: - resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==} + core-js@3.43.0: + resolution: {integrity: sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2177,8 +2259,8 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - cssdb@8.2.4: - resolution: {integrity: sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==} + cssdb@8.3.0: + resolution: {integrity: sha512-c7bmItIg38DgGjSwDPZOYF/2o0QU/sSgkWOMyl8votOfgFuyiFKWPesmCGEsrGLxEA9uL540cp8LdaGEjUGsZQ==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -2227,8 +2309,8 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2361,8 +2443,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.129: - resolution: {integrity: sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==} + electron-to-chromium@1.5.166: + resolution: {integrity: sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2388,8 +2470,8 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - encoding-sniffer@0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} @@ -2402,6 +2484,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2413,8 +2499,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -2485,8 +2571,8 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@3.3.2: - resolution: {integrity: sha512-hYH1aSvQI63Cvq3T3loaem6LW4u72F187zW4FHpTrReJSm6W66vYTFNO1vH/chmcOulp1HlAj1pxn8Ag0oXI5Q==} + estree-util-value-to-estree@3.4.0: + resolution: {integrity: sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -2846,17 +2932,17 @@ packages: webpack: optional: true + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -2869,11 +2955,11 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - http-proxy-middleware@2.0.7: - resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + http-proxy-middleware@2.0.9: + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} engines: {node: '>=12.0.0'} peerDependencies: '@types/express': ^4.17.13 @@ -2911,8 +2997,13 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - image-size@1.2.0: - resolution: {integrity: sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==} + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true + + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} hasBin: true @@ -3582,8 +3673,8 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + normalize-url@8.0.2: + resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} engines: {node: '>=14.16'} npm-run-path@4.0.1: @@ -3648,6 +3739,10 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3676,10 +3771,18 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -3711,8 +3814,8 @@ packages: parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -3793,8 +3896,8 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.8: - resolution: {integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==} + postcss-color-functional-notation@7.0.10: + resolution: {integrity: sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -3823,20 +3926,20 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-custom-media@11.0.5: - resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==} + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-properties@14.0.4: - resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==} + postcss-custom-properties@14.0.6: + resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-selectors@8.0.4: - resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==} + postcss-custom-selectors@8.0.5: + resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -3877,8 +3980,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-double-position-gradients@6.0.0: - resolution: {integrity: sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==} + postcss-double-position-gradients@6.0.2: + resolution: {integrity: sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -3912,8 +4015,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-lab-function@7.0.8: - resolution: {integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==} + postcss-lab-function@7.0.10: + resolution: {integrity: sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -3997,8 +4100,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-nesting@13.0.1: - resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} + postcss-nesting@13.0.2: + resolution: {integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -4086,8 +4189,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.1.5: - resolution: {integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==} + postcss-preset-env@10.2.3: + resolution: {integrity: sha512-zlQN1yYmA7lFeM1wzQI14z97mKoM8qGng+198w1+h6sCud/XxOjcKtApY9jWr7pXNS3yHDEafPlClSsWnkY8ow==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -4162,8 +4265,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + postcss@8.5.5: + resolution: {integrity: sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==} engines: {node: ^10 || ^12 || >=14} pretty-error@4.0.0: @@ -4195,8 +4298,8 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - property-information@7.0.0: - resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -4344,12 +4447,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} @@ -4398,8 +4495,8 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -4476,6 +4573,9 @@ packages: scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + schema-dts@1.1.5: + resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==} + schema-utils@2.7.0: resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} engines: {node: '>= 8.9.0'} @@ -4484,8 +4584,8 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} search-insights@2.17.3: @@ -4510,8 +4610,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -4558,8 +4658,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} shelljs@0.8.5: @@ -4660,8 +4760,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.1: - resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4744,8 +4844,8 @@ packages: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} terser-webpack-plugin@5.3.14: @@ -4764,8 +4864,8 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.42.0: + resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} engines: {node: '>=10'} hasBin: true @@ -4781,6 +4881,10 @@ packages: tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinypool@1.1.0: + resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} + engines: {node: ^18.0.0 || >=20.0.0} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4826,12 +4930,12 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - undici@6.21.2: - resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} - engines: {node: '>=18.17'} + undici@7.10.0: + resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} + engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -4943,8 +5047,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -4985,12 +5089,12 @@ packages: resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} engines: {node: '>=18.0.0'} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + webpack-sources@3.3.2: + resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==} engines: {node: '>=10.13.0'} - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + webpack@5.99.9: + resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -5063,8 +5167,8 @@ packages: utf-8-validate: optional: true - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5103,1101 +5207,1107 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1) - '@algolia/client-search': 5.23.1 - algoliasearch: 5.23.1 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0) + '@algolia/client-search': 5.27.0 + algoliasearch: 5.27.0 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)': dependencies: - '@algolia/client-search': 5.23.1 - algoliasearch: 5.23.1 + '@algolia/client-search': 5.27.0 + algoliasearch: 5.27.0 - '@algolia/client-abtesting@5.23.1': + '@algolia/client-abtesting@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-analytics@5.23.1': + '@algolia/client-analytics@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-common@5.23.1': {} + '@algolia/client-common@5.27.0': {} - '@algolia/client-insights@5.23.1': + '@algolia/client-insights@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-personalization@5.23.1': + '@algolia/client-personalization@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-query-suggestions@5.23.1': + '@algolia/client-query-suggestions@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/client-search@5.23.1': + '@algolia/client-search@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 '@algolia/events@4.0.1': {} - '@algolia/ingestion@1.23.1': + '@algolia/ingestion@1.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/monitoring@1.23.1': + '@algolia/monitoring@1.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/recommend@5.23.1': + '@algolia/recommend@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + '@algolia/client-common': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 - '@algolia/requester-browser-xhr@5.23.1': + '@algolia/requester-browser-xhr@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 + '@algolia/client-common': 5.27.0 - '@algolia/requester-fetch@5.23.1': + '@algolia/requester-fetch@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 + '@algolia/client-common': 5.27.0 - '@algolia/requester-node-http@5.23.1': + '@algolia/requester-node-http@5.27.0': dependencies: - '@algolia/client-common': 5.23.1 + '@algolia/client-common': 5.27.0 '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.26.2': + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} + '@babel/compat-data@7.27.5': {} - '@babel/core@7.26.10': + '@babel/core@7.27.4': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.27.0': + '@babel/generator@7.27.5': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.6 - '@babel/helper-compilation-targets@7.27.0': + '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 + '@babel/compat-data': 7.27.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.4 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.0 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.25.9': + '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.25.9': + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.6 - '@babel/helper-plugin-utils@7.26.5': {} + '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.25.9': + '@babel/helper-wrap-function@7.27.1': dependencies: - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.0': + '@babel/helpers@7.27.6': dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 - '@babel/parser@7.27.0': + '@babel/parser@7.27.5': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.6 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.10)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': + '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4) + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/traverse': 7.27.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/types': 7.27.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': + '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - regenerator-transform: 0.15.2 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': + '@babel/plugin-transform-runtime@7.27.4(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.4) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/preset-env@7.26.9(@babel/core@7.26.10)': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.41.0 + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.27.2(@babel/core@7.27.4)': + dependencies: + '@babel/compat-data': 7.27.5 + '@babel/core': 7.27.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.27.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.4) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.4) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.4) + core-js-compat: 3.43.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.27.0 + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.27.6 esutils: 2.0.3 - '@babel/preset-react@7.26.3(@babel/core@7.26.10)': + '@babel/preset-react@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.0(@babel/core@7.26.10)': + '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/runtime-corejs3@7.27.0': + '@babel/runtime-corejs3@7.27.6': dependencies: - core-js-pure: 3.41.0 - regenerator-runtime: 0.14.1 + core-js-pure: 3.43.0 - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.6': {} - '@babel/template@7.27.0': + '@babel/template@7.27.2': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 - '@babel/traverse@7.27.0': + '@babel/traverse@7.27.4': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': + '@babel/types@7.27.6': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 '@colors/colors@1.5.0': optional: true - '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3)': + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/color-helpers@5.0.2': {} - '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3)': + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)': + '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.5)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - '@csstools/postcss-color-function@4.0.8(postcss@8.5.3)': + '@csstools/postcss-color-function@4.0.10(postcss@8.5.5)': + dependencies: + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 + + '@csstools/postcss-color-mix-function@3.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)': + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)': + '@csstools/postcss-content-alt-text@2.0.6(postcss@8.5.5)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)': + '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)': + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.5)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)': + '@csstools/postcss-gamut-mapping@2.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)': + '@csstools/postcss-gradients-interpolation-method@5.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)': + '@csstools/postcss-hwb-function@4.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)': + '@csstools/postcss-ic-unit@4.0.2(postcss@8.5.5)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@2.0.1(postcss@8.5.3)': + '@csstools/postcss-initial@2.0.1(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)': + '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.5)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - '@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)': + '@csstools/postcss-light-dark-function@2.0.9(postcss@8.5.5)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)': + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)': + '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.5)': dependencies: - '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)': + '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.5 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.5)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.5 - '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)': + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.5)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)': + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)': + '@csstools/postcss-oklab-function@4.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)': + '@csstools/postcss-progressive-custom-properties@4.1.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-random-function@1.0.3(postcss@8.5.3)': + '@csstools/postcss-random-function@2.0.1(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)': + '@csstools/postcss-relative-color-syntax@3.0.10(postcss@8.5.5)': dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)': + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - '@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)': + '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)': + '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)': + '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.5)': dependencies: '@csstools/color-helpers': 5.0.2 - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)': + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.5)': dependencies: - '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 - '@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)': + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)': + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)': dependencies: postcss-selector-parser: 7.1.0 @@ -6205,41 +6315,69 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 - '@csstools/utilities@2.0.0(postcss@8.5.3)': + '@csstools/utilities@2.0.0(postcss@8.5.5)': dependencies: - postcss: 8.5.3 + postcss: 8.5.5 '@discoveryjs/json-ext@0.5.7': {} '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.23.1)(@types/react@19.0.12)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.27.0)(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.23.1)(algoliasearch@5.23.1) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.27.0)(algoliasearch@5.27.0) '@docsearch/css': 3.9.0 - '@types/react': 19.0.12 - algoliasearch: 5.23.1 + algoliasearch: 5.27.0 + optionalDependencies: + '@types/react': 19.1.8 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': - dependencies: - '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) - '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - '@babel/preset-react': 7.26.3(@babel/core@7.26.10) - '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) - '@babel/runtime': 7.27.0 - '@babel/runtime-corejs3': 7.27.0 - '@babel/traverse': 7.27.0 + '@docusaurus/babel@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@babel/core': 7.27.4 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-transform-runtime': 7.27.4(@babel/core@7.27.4) + '@babel/preset-env': 7.27.2(@babel/core@7.27.4) + '@babel/preset-react': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/runtime': 7.27.6 + '@babel/runtime-corejs3': 7.27.6 + '@babel/traverse': 7.27.4 '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + babel-plugin-dynamic-import-node: 2.3.3 + fs-extra: 11.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/babel@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@babel/core': 7.27.4 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-transform-runtime': 7.27.4(@babel/core@7.27.4) + '@babel/preset-env': 7.27.2(@babel/core@7.27.4) + '@babel/preset-react': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/runtime': 7.27.6 + '@babel/runtime-corejs3': 7.27.6 + '@babel/traverse': 7.27.4 + '@docusaurus/logger': 3.8.1 + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.0 tslib: 2.8.1 @@ -6253,33 +6391,33 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/bundler@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@babel/core': 7.26.10 - '@docusaurus/babel': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@babel/core': 7.27.4 + '@docusaurus/babel': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/cssnano-preset': 3.7.0 '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + babel-loader: 9.2.1(@babel/core@7.27.4)(webpack@5.99.9) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.98.0) - css-loader: 6.11.0(webpack@5.98.0) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.98.0) - cssnano: 6.1.2(postcss@8.5.3) - file-loader: 6.2.0(webpack@5.98.0) + copy-webpack-plugin: 11.0.0(webpack@5.99.9) + css-loader: 6.11.0(webpack@5.99.9) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.99.9) + cssnano: 6.1.2(postcss@8.5.5) + file-loader: 6.2.0(webpack@5.99.9) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.2(webpack@5.98.0) - null-loader: 4.0.1(webpack@5.98.0) - postcss: 8.5.3 - postcss-loader: 7.3.4(postcss@8.5.3)(typescript@5.6.3)(webpack@5.98.0) - postcss-preset-env: 10.1.5(postcss@8.5.3) - react-dev-utils: 12.0.1(typescript@5.6.3)(webpack@5.98.0) - terser-webpack-plugin: 5.3.14(webpack@5.98.0) + mini-css-extract-plugin: 2.9.2(webpack@5.99.9) + null-loader: 4.0.1(webpack@5.99.9) + postcss: 8.5.5 + postcss-loader: 7.3.4(postcss@8.5.5)(typescript@5.6.3)(webpack@5.99.9) + postcss-preset-env: 10.2.3(postcss@8.5.5) + react-dev-utils: 12.0.1(typescript@5.6.3)(webpack@5.99.9) + terser-webpack-plugin: 5.3.14(webpack@5.99.9) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.98.0) - webpack: 5.98.0 - webpackbar: 6.0.1(webpack@5.98.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) + webpack: 5.99.9 + webpackbar: 6.0.1(webpack@5.99.9) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -6298,23 +6436,65 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/bundler@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/babel': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/bundler': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@babel/core': 7.27.4 + '@docusaurus/babel': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/cssnano-preset': 3.8.1 + '@docusaurus/logger': 3.8.1 + '@docusaurus/types': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + babel-loader: 9.2.1(@babel/core@7.27.4)(webpack@5.99.9) + clean-css: 5.3.3 + copy-webpack-plugin: 11.0.0(webpack@5.99.9) + css-loader: 6.11.0(webpack@5.99.9) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.99.9) + cssnano: 6.1.2(postcss@8.5.5) + file-loader: 6.2.0(webpack@5.99.9) + html-minifier-terser: 7.2.0 + mini-css-extract-plugin: 2.9.2(webpack@5.99.9) + null-loader: 4.0.1(webpack@5.99.9) + postcss: 8.5.5 + postcss-loader: 7.3.4(postcss@8.5.5)(typescript@5.6.3)(webpack@5.99.9) + postcss-preset-env: 10.2.3(postcss@8.5.5) + terser-webpack-plugin: 5.3.14(webpack@5.99.9) + tslib: 2.8.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) + webpack: 5.99.9 + webpackbar: 6.0.1(webpack@5.99.9) + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - csso + - esbuild + - lightningcss + - react + - react-dom + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': + dependencies: + '@docusaurus/babel': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/bundler': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@mdx-js/react': 3.1.0(@types/react@19.0.12)(react@19.1.0) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.1.0) boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.41.0 + core-js: 3.43.0 del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 @@ -6322,28 +6502,28 @@ snapshots: eval: 0.1.8 fs-extra: 11.3.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.3(webpack@5.98.0) + html-webpack-plugin: 5.6.3(webpack@5.99.9) leven: 3.1.0 lodash: 4.17.21 p-map: 4.0.0 prompts: 2.4.2 react: 19.1.0 - react-dev-utils: 12.0.1(typescript@5.6.3)(webpack@5.98.0) + react-dev-utils: 12.0.1(typescript@5.6.3)(webpack@5.99.9) react-dom: 19.1.0(react@19.1.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0)(react@19.1.0)' + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0)(webpack@5.98.0) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.1.0))(webpack@5.99.9) react-router: 5.3.4(react@19.1.0) - react-router-config: 5.1.1(react-router@5.3.4)(react@19.1.0) + react-router-config: 5.1.1(react-router@5.3.4(react@19.1.0))(react@19.1.0) react-router-dom: 5.3.4(react@19.1.0) - semver: 7.7.1 + semver: 7.7.2 serve-handler: 6.1.6 shelljs: 0.8.5 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.98.0 + webpack: 5.99.9 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(debug@4.4.0)(webpack@5.98.0) + webpack-dev-server: 4.15.2(debug@4.4.1)(webpack@5.99.9) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -6365,11 +6545,83 @@ snapshots: - vue-template-compiler - webpack-cli + '@docusaurus/core@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': + dependencies: + '@docusaurus/babel': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/bundler': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/logger': 3.8.1 + '@docusaurus/mdx-loader': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.1.0) + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cli-table3: 0.6.5 + combine-promises: 1.2.0 + commander: 5.1.0 + core-js: 3.43.0 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + eval: 0.1.8 + execa: 5.1.1 + fs-extra: 11.3.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.3(webpack@5.99.9) + leven: 3.1.0 + lodash: 4.17.21 + open: 8.4.2 + p-map: 4.0.0 + prompts: 2.4.2 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.1.0))(webpack@5.99.9) + react-router: 5.3.4(react@19.1.0) + react-router-config: 5.1.1(react-router@5.3.4(react@19.1.0))(react@19.1.0) + react-router-dom: 5.3.4(react@19.1.0) + semver: 7.7.2 + serve-handler: 6.1.6 + tinypool: 1.1.0 + tslib: 2.8.1 + update-notifier: 6.0.2 + webpack: 5.99.9 + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 4.15.2(debug@4.4.1)(webpack@5.99.9) + webpack-merge: 6.0.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + '@docusaurus/cssnano-preset@3.7.0': dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-sort-media-queries: 5.2.0(postcss@8.5.3) + cssnano-preset-advanced: 6.1.2(postcss@8.5.5) + postcss: 8.5.5 + postcss-sort-media-queries: 5.2.0(postcss@8.5.5) + tslib: 2.8.1 + + '@docusaurus/cssnano-preset@3.8.1': + dependencies: + cssnano-preset-advanced: 6.1.2(postcss@8.5.5) + postcss: 8.5.5 + postcss-sort-media-queries: 5.2.0(postcss@8.5.5) tslib: 2.8.1 '@docusaurus/logger@3.7.0': @@ -6377,18 +6629,59 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/logger@3.8.1': + dependencies: + chalk: 4.1.2 + tslib: 2.8.1 + + '@docusaurus/mdx-loader@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@mdx-js/mdx': 3.1.0(acorn@8.14.1) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/mdx': 3.1.0(acorn@8.15.0) + '@slorber/remark-comment': 1.0.0 + escape-html: 1.0.3 + estree-util-value-to-estree: 3.4.0 + file-loader: 6.2.0(webpack@5.99.9) + fs-extra: 11.3.0 + image-size: 1.2.1 + mdast-util-mdx: 3.0.0 + mdast-util-to-string: 4.0.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + rehype-raw: 7.0.0 + remark-directive: 3.0.1 + remark-emoji: 4.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.1 + stringify-object: 3.3.0 + tslib: 2.8.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) + vfile: 6.0.3 + webpack: 5.99.9 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/mdx-loader@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@docusaurus/logger': 3.8.1 + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/mdx': 3.1.0(acorn@8.15.0) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 - estree-util-value-to-estree: 3.3.2 - file-loader: 6.2.0(webpack@5.98.0) + estree-util-value-to-estree: 3.4.0 + file-loader: 6.2.0(webpack@5.99.9) fs-extra: 11.3.0 - image-size: 1.2.0 + image-size: 2.0.2 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 react: 19.1.0 @@ -6402,9 +6695,28 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.98.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) vfile: 6.0.3 - webpack: 5.98.0 + webpack: 5.99.9 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/module-type-aliases@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@types/history': 4.7.11 + '@types/react': 19.1.8 + '@types/react-router-config': 5.0.11 + '@types/react-router-dom': 5.3.3 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' transitivePeerDependencies: - '@swc/core' - acorn @@ -6413,16 +6725,16 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/module-type-aliases@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/types': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0)(react@19.1.0)' + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' transitivePeerDependencies: - '@swc/core' @@ -6432,17 +6744,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0)(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.0 @@ -6454,7 +6766,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.98.0 + webpack: 5.99.9 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -6476,17 +6788,17 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/module-type-aliases': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.0 @@ -6496,7 +6808,7 @@ snapshots: react-dom: 19.1.0(react@19.1.0) tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.98.0 + webpack: 5.99.9 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -6518,18 +6830,59 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': + dependencies: + '@docusaurus/core': 3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/logger': 3.8.1 + '@docusaurus/mdx-loader': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/module-type-aliases': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/types': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.3.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + schema-dts: 1.1.5 + tslib: 2.8.1 + utility-types: 3.11.0 + webpack: 5.99.9 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-content-pages@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fs-extra: 11.3.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tslib: 2.8.1 - webpack: 5.98.0 + webpack: 5.99.9 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -6551,11 +6904,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-debug@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fs-extra: 11.3.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -6582,11 +6935,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-google-analytics@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tslib: 2.8.1 @@ -6611,11 +6964,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-google-gtag@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/gtag.js': 0.0.12 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -6641,11 +6994,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-google-tag-manager@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tslib: 2.8.1 @@ -6670,14 +7023,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-sitemap@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fs-extra: 11.3.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -6704,18 +7057,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/plugin-svgr@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/webpack': 8.1.0(typescript@5.6.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) tslib: 2.8.1 - webpack: 5.98.0 + webpack: 5.99.9 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -6737,22 +7090,22 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.23.1)(@mdx-js/react@3.1.0)(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3)': - dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-classic': 3.7.0(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.23.1)(@mdx-js/react@3.1.0)(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3) - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.27.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3)': + dependencies: + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-debug': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-google-analytics': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-google-gtag': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-google-tag-manager': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-sitemap': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-svgr': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-classic': 3.7.0(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.27.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -6781,31 +7134,31 @@ snapshots: '@docusaurus/react-loadable@6.0.0(react@19.1.0)': dependencies: - '@types/react': 19.0.12 + '@types/react': 19.1.8 react: 19.1.0 - '@docusaurus/theme-classic@3.7.0(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@docusaurus/theme-classic@3.7.0(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/module-type-aliases': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/plugin-content-pages': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@mdx-js/react': 3.1.0(@types/react@19.0.12)(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.1.0) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.45 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.5.3 + postcss: 8.5.5 prism-react-renderer: 2.4.1(react@19.1.0) prismjs: 1.30.0 react: 19.1.0 @@ -6835,15 +7188,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@docusaurus/mdx-loader': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/module-type-aliases': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/mdx-loader': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/module-type-aliases': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 @@ -6860,18 +7213,43 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.23.1)(@mdx-js/react@3.1.0)(@types/react@19.0.12)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3)': + '@docusaurus/theme-common@3.8.1(@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.23.1)(@types/react@19.0.12)(react-dom@19.1.0)(react@19.1.0)(search-insights@2.17.3) - '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) + '@docusaurus/mdx-loader': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/module-type-aliases': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@types/history': 4.7.11 + '@types/react': 19.1.8 + '@types/react-router-config': 5.0.11 + clsx: 2.1.1 + parse-numeric-range: 1.3.0 + prism-react-renderer: 2.4.1(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + tslib: 2.8.1 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.27.0)(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(@types/react@19.1.8)(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3)(typescript@5.6.3)': + dependencies: + '@docsearch/react': 3.9.0(@algolia/client-search@5.27.0)(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(search-insights@2.17.3) + '@docusaurus/core': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) '@docusaurus/logger': 3.7.0 - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - algoliasearch: 5.23.1 - algoliasearch-helper: 3.24.3(algoliasearch@5.23.1) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + algoliasearch: 5.27.0 + algoliasearch-helper: 3.25.0(algoliasearch@5.27.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.0 @@ -6909,20 +7287,25 @@ snapshots: fs-extra: 11.3.0 tslib: 2.8.1 + '@docusaurus/theme-translations@3.8.1': + dependencies: + fs-extra: 11.3.0 + tslib: 2.8.1 + '@docusaurus/tsconfig@3.7.0': {} - '@docusaurus/types@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/types@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.14.1) + '@mdx-js/mdx': 3.1.0(acorn@8.15.0) '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 commander: 5.1.0 joi: 17.13.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0)(react@19.1.0)' + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' utility-types: 3.11.0 - webpack: 5.98.0 + webpack: 5.99.9 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -6932,9 +7315,44 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/types@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@mdx-js/mdx': 3.1.0(acorn@8.15.0) + '@types/history': 4.7.11 + '@types/react': 19.1.8 + commander: 5.1.0 + joi: 17.13.3 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' + utility-types: 3.11.0 + webpack: 5.99.9 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-common@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-common@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/types': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -6946,11 +7364,31 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/utils-validation@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/utils': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fs-extra: 11.3.0 + joi: 17.13.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-validation@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@docusaurus/logger': 3.8.1 + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fs-extra: 11.3.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -6966,13 +7404,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)': + '@docusaurus/utils@3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/types': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.7.0(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.98.0) + file-loader: 6.2.0(webpack@5.99.9) fs-extra: 11.3.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -6985,9 +7423,42 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.98.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) + utility-types: 3.11.0 + webpack: 5.99.9 + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils@3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@docusaurus/logger': 3.8.1 + '@docusaurus/types': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + escape-string-regexp: 4.0.0 + execa: 5.1.1 + file-loader: 6.2.0(webpack@5.99.9) + fs-extra: 11.3.0 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + jiti: 1.21.7 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.8 + p-queue: 6.6.2 + prompts: 2.4.2 + resolve-pathname: 3.0.0 + tslib: 2.8.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9) utility-types: 3.11.0 - webpack: 5.98.0 + webpack: 5.99.9 transitivePeerDependencies: - '@swc/core' - acorn @@ -7003,20 +7474,20 @@ snapshots: cssesc: 3.0.0 immediate: 3.3.0 - '@easyops-cn/docusaurus-search-local@0.49.2(@docusaurus/theme-common@3.7.0)(@mdx-js/react@3.1.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3)': + '@easyops-cn/docusaurus-search-local@0.49.2(@docusaurus/theme-common@3.8.1(@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3)': dependencies: - '@docusaurus/plugin-content-docs': 3.7.0(@mdx-js/react@3.1.0)(acorn@8.14.1)(debug@4.4.0)(react-dom@19.1.0)(react@19.1.0)(typescript@5.6.3) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0)(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/utils': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-common': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) - '@docusaurus/utils-validation': 3.7.0(acorn@8.14.1)(react-dom@19.1.0)(react@19.1.0) + '@docusaurus/plugin-content-docs': 3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))(acorn@8.15.0)(debug@4.4.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.6.3))(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/theme-translations': 3.8.1 + '@docusaurus/utils': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-common': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@docusaurus/utils-validation': 3.8.1(acorn@8.15.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@easyops-cn/autocomplete.js': 0.38.1 '@node-rs/jieba': 1.10.4 - cheerio: 1.0.0 + cheerio: 1.1.0 clsx: 2.1.1 comlink: 4.4.2 - debug: 4.4.0 + debug: 4.4.1 fs-extra: 10.1.0 klaw-sync: 6.0.0 lunr: 2.3.9 @@ -7036,27 +7507,25 @@ snapshots: - bufferutil - csso - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@emnapi/core@1.4.0': + '@emnapi/core@1.4.3': dependencies: - '@emnapi/wasi-threads': 1.0.1 + '@emnapi/wasi-threads': 1.0.2 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.0': + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.1': + '@emnapi/wasi-threads@1.0.2': dependencies: tslib: 2.8.1 optional: true @@ -7076,7 +7545,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -7104,9 +7573,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@mdx-js/mdx@3.1.0(acorn@8.14.1)': + '@mdx-js/mdx@3.1.0(acorn@8.15.0)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -7118,12 +7587,12 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.1) + recma-jsx: 1.0.0(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 @@ -7134,16 +7603,16 @@ snapshots: - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@19.0.12)(react@19.1.0)': + '@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.0.12 + '@types/react': 19.1.8 react: 19.1.0 - '@napi-rs/wasm-runtime@0.2.7': + '@napi-rs/wasm-runtime@0.2.11': dependencies: - '@emnapi/core': 1.4.0 - '@emnapi/runtime': 1.4.0 + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 '@tybys/wasm-util': 0.9.0 optional: true @@ -7179,7 +7648,7 @@ snapshots: '@node-rs/jieba-wasm32-wasi@1.10.4': dependencies: - '@napi-rs/wasm-runtime': 0.2.7 + '@napi-rs/wasm-runtime': 0.2.11 optional: true '@node-rs/jieba-win32-arm64-msvc@1.10.4': @@ -7232,7 +7701,7 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@polka/url@1.0.0-next.28': {} + '@polka/url@1.0.0-next.29': {} '@sideway/address@4.1.5': dependencies: @@ -7248,9 +7717,9 @@ snapshots: '@sindresorhus/is@5.6.0': {} - '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0)(react@19.1.0)': + '@slorber/react-helmet-async@1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 invariant: 2.2.4 prop-types: 15.8.1 react: 19.1.0 @@ -7264,54 +7733,54 @@ snapshots: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.10)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 - '@svgr/babel-preset@8.1.0(@babel/core@7.26.10)': + '@svgr/babel-preset@8.1.0(@babel/core@7.27.4)': dependencies: - '@babel/core': 7.26.10 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.10) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.10) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.27.4) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.27.4) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.27.4) '@svgr/core@8.1.0(typescript@5.6.3)': dependencies: - '@babel/core': 7.26.10 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.27.4) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.6.3) snake-case: 3.0.4 @@ -7321,20 +7790,20 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.6 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0)': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))': dependencies: - '@babel/core': 7.26.10 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.27.4) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.6.3)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3)': dependencies: '@svgr/core': 8.1.0(typescript@5.6.3) cosmiconfig: 8.3.6(typescript@5.6.3) @@ -7345,14 +7814,14 @@ snapshots: '@svgr/webpack@8.1.0(typescript@5.6.3)': dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.10) - '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - '@babel/preset-react': 7.26.3(@babel/core@7.26.10) - '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.27.4) + '@babel/preset-env': 7.27.2(@babel/core@7.27.4) + '@babel/preset-react': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) '@svgr/core': 8.1.0(typescript@5.6.3) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.6.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3))(typescript@5.6.3) transitivePeerDependencies: - supports-color - typescript @@ -7368,23 +7837,23 @@ snapshots: tslib: 2.8.1 optional: true - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/debug@4.1.12': dependencies: @@ -7393,39 +7862,39 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.13.16 - '@types/qs': 6.9.18 + '@types/node': 24.0.1 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 0.17.5 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.13.16 - '@types/qs': 6.9.18 + '@types/node': 24.0.1 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 0.17.5 - '@types/express@4.17.21': + '@types/express@4.17.23': dependencies: - '@types/body-parser': 1.19.5 + '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.8 '@types/gtag.js@0.0.12': {} @@ -7439,11 +7908,11 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/http-errors@2.0.4': {} + '@types/http-errors@2.0.5': {} '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/istanbul-lib-coverage@2.0.6': {} @@ -7469,40 +7938,40 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/node@17.0.45': {} - '@types/node@22.13.16': + '@types/node@24.0.1': dependencies: - undici-types: 6.20.0 + undici-types: 7.8.0 '@types/parse-json@4.0.2': {} '@types/prismjs@1.26.5': {} - '@types/qs@6.9.18': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} '@types/react-router-config@5.0.11': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 '@types/react-router': 5.1.20 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 19.1.8 - '@types/react@19.0.12': + '@types/react@19.1.8': dependencies: csstype: 3.1.3 @@ -7512,24 +7981,24 @@ snapshots: dependencies: '@types/node': 17.0.45 - '@types/send@0.17.4': + '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.21 + '@types/express': 4.17.23 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.8': dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.13.16 - '@types/send': 0.17.4 + '@types/http-errors': 2.0.5 + '@types/node': 24.0.1 + '@types/send': 0.17.5 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/unist@2.0.11': {} @@ -7537,7 +8006,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 '@types/yargs-parser@21.0.3': {} @@ -7632,15 +8101,15 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk@8.3.4: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn@8.14.1: {} + acorn@8.15.0: {} address@1.2.2: {} @@ -7650,7 +8119,7 @@ snapshots: indent-string: 4.0.0 ajv-formats@2.1.1(ajv@8.17.1): - dependencies: + optionalDependencies: ajv: 8.17.1 ajv-keywords@3.5.2(ajv@6.12.6): @@ -7676,26 +8145,26 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch-helper@3.24.3(algoliasearch@5.23.1): + algoliasearch-helper@3.25.0(algoliasearch@5.27.0): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.23.1 - - algoliasearch@5.23.1: - dependencies: - '@algolia/client-abtesting': 5.23.1 - '@algolia/client-analytics': 5.23.1 - '@algolia/client-common': 5.23.1 - '@algolia/client-insights': 5.23.1 - '@algolia/client-personalization': 5.23.1 - '@algolia/client-query-suggestions': 5.23.1 - '@algolia/client-search': 5.23.1 - '@algolia/ingestion': 1.23.1 - '@algolia/monitoring': 1.23.1 - '@algolia/recommend': 5.23.1 - '@algolia/requester-browser-xhr': 5.23.1 - '@algolia/requester-fetch': 5.23.1 - '@algolia/requester-node-http': 5.23.1 + algoliasearch: 5.27.0 + + algoliasearch@5.27.0: + dependencies: + '@algolia/client-abtesting': 5.27.0 + '@algolia/client-analytics': 5.27.0 + '@algolia/client-common': 5.27.0 + '@algolia/client-insights': 5.27.0 + '@algolia/client-personalization': 5.27.0 + '@algolia/client-query-suggestions': 5.27.0 + '@algolia/client-search': 5.27.0 + '@algolia/ingestion': 1.27.0 + '@algolia/monitoring': 1.27.0 + '@algolia/recommend': 5.27.0 + '@algolia/requester-browser-xhr': 5.27.0 + '@algolia/requester-fetch': 5.27.0 + '@algolia/requester-node-http': 5.27.0 ansi-align@3.0.1: dependencies: @@ -7738,48 +8207,48 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.21(postcss@8.5.3): + autoprefixer@10.4.21(postcss@8.5.5): dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + browserslist: 4.25.0 + caniuse-lite: 1.0.30001722 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.98.0): + babel-loader@9.2.1(@babel/core@7.27.4)(webpack@5.99.9): dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 find-cache-dir: 4.0.0 - schema-utils: 4.3.0 - webpack: 5.98.0 + schema-utils: 4.3.2 + webpack: 5.99.9 babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.4): dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + '@babel/compat-data': 7.27.5 + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.4): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.41.0 + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) + core-js-compat: 3.43.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.4): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + '@babel/core': 7.27.4 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) transitivePeerDependencies: - supports-color @@ -7839,7 +8308,7 @@ snapshots: widest-line: 4.0.1 wrap-ansi: 8.1.0 - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -7848,12 +8317,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.4: + browserslist@4.25.0: dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.129 + caniuse-lite: 1.0.30001722 + electron-to-chromium: 1.5.166 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) + update-browserslist-db: 1.1.3(browserslist@4.25.0) buffer-from@1.1.2: {} @@ -7867,10 +8336,10 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 6.0.1 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.1 + normalize-url: 8.0.2 responselike: 3.0.0 call-bind-apply-helpers@1.0.2: @@ -7903,12 +8372,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + browserslist: 4.25.0 + caniuse-lite: 1.0.30001722 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001707: {} + caniuse-lite@1.0.30001722: {} ccount@2.0.1: {} @@ -7938,29 +8407,29 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 - cheerio@1.0.0: + cheerio@1.0.0-rc.12: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 - parse5: 7.2.1 + htmlparser2: 8.0.2 + parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 6.21.2 - whatwg-mimetype: 4.0.0 - cheerio@1.0.0-rc.12: + cheerio@1.1.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 - htmlparser2: 8.0.2 - parse5: 7.2.1 + encoding-sniffer: 0.2.1 + htmlparser2: 10.0.0 + parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.10.0 + whatwg-mimetype: 4.0.0 chokidar@3.6.0: dependencies: @@ -8081,23 +8550,23 @@ snapshots: copy-text-to-clipboard@3.2.0: {} - copy-webpack-plugin@11.0.0(webpack@5.98.0): + copy-webpack-plugin@11.0.0(webpack@5.99.9): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 globby: 13.2.2 normalize-path: 3.0.0 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.98.0 + webpack: 5.99.9 - core-js-compat@3.41.0: + core-js-compat@3.43.0: dependencies: - browserslist: 4.24.4 + browserslist: 4.25.0 - core-js-pure@3.41.0: {} + core-js-pure@3.43.0: {} - core-js@3.41.0: {} + core-js@3.43.0: {} core-util-is@1.0.3: {} @@ -8115,6 +8584,7 @@ snapshots: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + optionalDependencies: typescript: 5.6.3 cross-spawn@7.0.6: @@ -8127,48 +8597,50 @@ snapshots: dependencies: type-fest: 1.4.0 - css-blank-pseudo@7.0.1(postcss@8.5.3): + css-blank-pseudo@7.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - css-declaration-sorter@7.2.0(postcss@8.5.3): + css-declaration-sorter@7.2.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - css-has-pseudo@7.0.2(postcss@8.5.3): + css-has-pseudo@7.0.2(postcss@8.5.5): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.98.0): + css-loader@6.11.0(webpack@5.99.9): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) - postcss-modules-scope: 3.2.1(postcss@8.5.3) - postcss-modules-values: 4.0.0(postcss@8.5.3) + icss-utils: 5.1.0(postcss@8.5.5) + postcss: 8.5.5 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.5) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.5) + postcss-modules-scope: 3.2.1(postcss@8.5.5) + postcss-modules-values: 4.0.0(postcss@8.5.5) postcss-value-parser: 4.2.0 - semver: 7.7.1 - webpack: 5.98.0 + semver: 7.7.2 + optionalDependencies: + webpack: 5.99.9 - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.98.0): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.99.9): dependencies: '@jridgewell/trace-mapping': 0.3.25 - clean-css: 5.3.3 - cssnano: 6.1.2(postcss@8.5.3) + cssnano: 6.1.2(postcss@8.5.5) jest-worker: 29.7.0 - postcss: 8.5.3 - schema-utils: 4.3.0 + postcss: 8.5.5 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.98.0 + webpack: 5.99.9 + optionalDependencies: + clean-css: 5.3.3 - css-prefers-color-scheme@10.0.0(postcss@8.5.3): + css-prefers-color-scheme@10.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 css-select@4.3.0: dependencies: @@ -8198,64 +8670,64 @@ snapshots: css-what@6.1.0: {} - cssdb@8.2.4: {} + cssdb@8.3.0: {} cssesc@3.0.0: {} - cssnano-preset-advanced@6.1.2(postcss@8.5.3): - dependencies: - autoprefixer: 10.4.21(postcss@8.5.3) - browserslist: 4.24.4 - cssnano-preset-default: 6.1.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-discard-unused: 6.0.5(postcss@8.5.3) - postcss-merge-idents: 6.0.3(postcss@8.5.3) - postcss-reduce-idents: 6.0.3(postcss@8.5.3) - postcss-zindex: 6.0.2(postcss@8.5.3) - - cssnano-preset-default@6.1.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 9.0.1(postcss@8.5.3) - postcss-colormin: 6.1.0(postcss@8.5.3) - postcss-convert-values: 6.1.0(postcss@8.5.3) - postcss-discard-comments: 6.0.2(postcss@8.5.3) - postcss-discard-duplicates: 6.0.3(postcss@8.5.3) - postcss-discard-empty: 6.0.3(postcss@8.5.3) - postcss-discard-overridden: 6.0.2(postcss@8.5.3) - postcss-merge-longhand: 6.0.5(postcss@8.5.3) - postcss-merge-rules: 6.1.1(postcss@8.5.3) - postcss-minify-font-values: 6.1.0(postcss@8.5.3) - postcss-minify-gradients: 6.0.3(postcss@8.5.3) - postcss-minify-params: 6.1.0(postcss@8.5.3) - postcss-minify-selectors: 6.0.4(postcss@8.5.3) - postcss-normalize-charset: 6.0.2(postcss@8.5.3) - postcss-normalize-display-values: 6.0.2(postcss@8.5.3) - postcss-normalize-positions: 6.0.2(postcss@8.5.3) - postcss-normalize-repeat-style: 6.0.2(postcss@8.5.3) - postcss-normalize-string: 6.0.2(postcss@8.5.3) - postcss-normalize-timing-functions: 6.0.2(postcss@8.5.3) - postcss-normalize-unicode: 6.1.0(postcss@8.5.3) - postcss-normalize-url: 6.0.2(postcss@8.5.3) - postcss-normalize-whitespace: 6.0.2(postcss@8.5.3) - postcss-ordered-values: 6.0.2(postcss@8.5.3) - postcss-reduce-initial: 6.1.0(postcss@8.5.3) - postcss-reduce-transforms: 6.0.2(postcss@8.5.3) - postcss-svgo: 6.0.3(postcss@8.5.3) - postcss-unique-selectors: 6.0.4(postcss@8.5.3) - - cssnano-utils@4.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - cssnano@6.1.2(postcss@8.5.3): - dependencies: - cssnano-preset-default: 6.1.2(postcss@8.5.3) + cssnano-preset-advanced@6.1.2(postcss@8.5.5): + dependencies: + autoprefixer: 10.4.21(postcss@8.5.5) + browserslist: 4.25.0 + cssnano-preset-default: 6.1.2(postcss@8.5.5) + postcss: 8.5.5 + postcss-discard-unused: 6.0.5(postcss@8.5.5) + postcss-merge-idents: 6.0.3(postcss@8.5.5) + postcss-reduce-idents: 6.0.3(postcss@8.5.5) + postcss-zindex: 6.0.2(postcss@8.5.5) + + cssnano-preset-default@6.1.2(postcss@8.5.5): + dependencies: + browserslist: 4.25.0 + css-declaration-sorter: 7.2.0(postcss@8.5.5) + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 + postcss-calc: 9.0.1(postcss@8.5.5) + postcss-colormin: 6.1.0(postcss@8.5.5) + postcss-convert-values: 6.1.0(postcss@8.5.5) + postcss-discard-comments: 6.0.2(postcss@8.5.5) + postcss-discard-duplicates: 6.0.3(postcss@8.5.5) + postcss-discard-empty: 6.0.3(postcss@8.5.5) + postcss-discard-overridden: 6.0.2(postcss@8.5.5) + postcss-merge-longhand: 6.0.5(postcss@8.5.5) + postcss-merge-rules: 6.1.1(postcss@8.5.5) + postcss-minify-font-values: 6.1.0(postcss@8.5.5) + postcss-minify-gradients: 6.0.3(postcss@8.5.5) + postcss-minify-params: 6.1.0(postcss@8.5.5) + postcss-minify-selectors: 6.0.4(postcss@8.5.5) + postcss-normalize-charset: 6.0.2(postcss@8.5.5) + postcss-normalize-display-values: 6.0.2(postcss@8.5.5) + postcss-normalize-positions: 6.0.2(postcss@8.5.5) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.5) + postcss-normalize-string: 6.0.2(postcss@8.5.5) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.5) + postcss-normalize-unicode: 6.1.0(postcss@8.5.5) + postcss-normalize-url: 6.0.2(postcss@8.5.5) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.5) + postcss-ordered-values: 6.0.2(postcss@8.5.5) + postcss-reduce-initial: 6.1.0(postcss@8.5.5) + postcss-reduce-transforms: 6.0.2(postcss@8.5.5) + postcss-svgo: 6.0.3(postcss@8.5.5) + postcss-unique-selectors: 6.0.4(postcss@8.5.5) + + cssnano-utils@4.0.2(postcss@8.5.5): + dependencies: + postcss: 8.5.5 + + cssnano@6.1.2(postcss@8.5.5): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.5) lilconfig: 3.1.3 - postcss: 8.5.3 + postcss: 8.5.5 csso@5.0.5: dependencies: @@ -8269,7 +8741,7 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 @@ -8336,7 +8808,7 @@ snapshots: detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -8411,7 +8883,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.129: {} + electron-to-chromium@1.5.166: {} emoji-regex@8.0.0: {} @@ -8427,7 +8899,7 @@ snapshots: encodeurl@2.0.0: {} - encoding-sniffer@0.2.0: + encoding-sniffer@0.2.1: dependencies: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 @@ -8435,12 +8907,14 @@ snapshots: enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.2 entities@2.2.0: {} entities@4.5.0: {} + entities@6.0.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -8449,7 +8923,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: @@ -8465,7 +8939,7 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.1 + acorn: 8.15.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 @@ -8498,7 +8972,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx@3.0.1: dependencies: @@ -8511,7 +8985,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -8520,9 +8994,9 @@ snapshots: astring: 1.9.0 source-map: 0.7.4 - estree-util-value-to-estree@3.3.2: + estree-util-value-to-estree@3.4.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-visit@2.0.0: dependencies: @@ -8531,7 +9005,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -8541,7 +9015,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 require-like: 0.1.2 eventemitter3@4.0.7: {} @@ -8636,11 +9110,11 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-loader@6.2.0(webpack@5.98.0): + file-loader@6.2.0(webpack@5.99.9): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.98.0 + webpack: 5.99.9 filesize@8.0.7: {} @@ -8681,13 +9155,13 @@ snapshots: flat@5.0.2: {} - follow-redirects@1.15.9(debug@4.4.0): - dependencies: - debug: 4.4.0 + follow-redirects@1.15.9(debug@4.4.1): + optionalDependencies: + debug: 4.4.1 - fork-ts-checker-webpack-plugin@6.5.3(typescript@5.6.3)(webpack@5.98.0): + fork-ts-checker-webpack-plugin@6.5.3(typescript@5.6.3)(webpack@5.99.9): dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.6.0 @@ -8698,10 +9172,10 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.1 + semver: 7.7.2 tapable: 1.1.3 typescript: 5.6.3 - webpack: 5.98.0 + webpack: 5.99.9 form-data-encoder@2.1.4: {} @@ -8872,7 +9346,7 @@ snapshots: '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 - property-information: 7.0.0 + property-information: 7.1.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 @@ -8890,7 +9364,7 @@ snapshots: hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - parse5: 7.2.1 + parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 @@ -8899,7 +9373,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -8910,7 +9384,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.16 unist-util-position: 5.0.0 @@ -8920,7 +9394,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -8930,7 +9404,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.16 unist-util-position: 5.0.0 @@ -8957,14 +9431,14 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 he@1.2.0: {} history@4.10.1: dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -8994,7 +9468,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.39.0 + terser: 5.42.0 html-minifier-terser@7.2.0: dependencies: @@ -9004,20 +9478,28 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.39.0 + terser: 5.42.0 html-tags@3.3.1: {} html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.3(webpack@5.98.0): + html-webpack-plugin@5.6.3(webpack@5.99.9): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.2.1 - webpack: 5.98.0 + tapable: 2.2.2 + optionalDependencies: + webpack: 5.99.9 + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 htmlparser2@6.1.0: dependencies: @@ -9033,14 +9515,7 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-deceiver@1.2.7: {} @@ -9059,23 +9534,24 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.9: {} + http-parser-js@0.5.10: {} - http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.4.0): + http-proxy-middleware@2.0.9(@types/express@4.17.23)(debug@4.4.1): dependencies: - '@types/express': 4.17.21 '@types/http-proxy': 1.17.16 - http-proxy: 1.18.1(debug@4.4.0) + http-proxy: 1.18.1(debug@4.4.1) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.23 transitivePeerDependencies: - debug - http-proxy@1.18.1(debug@4.4.0): + http-proxy@1.18.1(debug@4.4.1): dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.4.0) + follow-redirects: 1.15.9(debug@4.4.1) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -9095,16 +9571,18 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.3): + icss-utils@5.1.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 ignore@5.3.2: {} - image-size@1.2.0: + image-size@1.2.1: dependencies: queue: 6.0.2 + image-size@2.0.2: {} + immediate@3.3.0: {} immer@9.0.21: {} @@ -9234,7 +9712,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.16 + '@types/node': 24.0.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9242,13 +9720,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.13.16 + '@types/node': 24.0.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9313,7 +9791,7 @@ snapshots: launch-editor@2.10.0: dependencies: picocolors: 1.1.1 - shell-quote: 1.8.2 + shell-quote: 1.8.3 leven@3.1.0: {} @@ -9686,7 +10164,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -9697,7 +10175,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -9714,7 +10192,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -9726,8 +10204,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -9750,7 +10228,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -9824,7 +10302,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -9866,7 +10344,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.1 decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -9912,17 +10390,17 @@ snapshots: mimic-response@4.0.0: {} - mini-css-extract-plugin@2.9.2(webpack@5.98.0): + mini-css-extract-plugin@2.9.2(webpack@5.99.9): dependencies: - schema-utils: 4.3.0 - tapable: 2.2.1 - webpack: 5.98.0 + schema-utils: 4.3.2 + tapable: 2.2.2 + webpack: 5.99.9 minimalistic-assert@1.0.1: {} minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimist@1.2.8: {} @@ -9965,7 +10443,7 @@ snapshots: normalize-range@0.1.2: {} - normalize-url@8.0.1: {} + normalize-url@8.0.2: {} npm-run-path@4.0.1: dependencies: @@ -9977,11 +10455,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.98.0): + null-loader@4.0.1(webpack@5.99.9): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.98.0 + webpack: 5.99.9 object-assign@4.1.1: {} @@ -10024,6 +10502,8 @@ snapshots: p-cancelable@3.0.0: {} + p-finally@1.0.0: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -10052,11 +10532,20 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 retry: 0.13.1 + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + p-try@2.2.0: {} package-json@8.1.1: @@ -10064,7 +10553,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.0 registry-url: 6.0.1 - semver: 7.7.1 + semver: 7.7.2 param-case@3.0.4: dependencies: @@ -10087,7 +10576,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10097,15 +10586,15 @@ snapshots: parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 - parse5: 7.2.1 + parse5: 7.3.0 parse5-parser-stream@7.1.2: dependencies: - parse5: 7.2.1 + parse5: 7.3.0 - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 parseurl@1.3.3: {} @@ -10150,399 +10639,400 @@ snapshots: dependencies: find-up: 3.0.0 - postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-calc@9.0.1(postcss@8.5.3): + postcss-calc@9.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-clamp@4.1.0(postcss@8.5.3): + postcss-clamp@4.1.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.8(postcss@8.5.3): + postcss-color-functional-notation@7.0.10(postcss@8.5.5): dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - postcss-color-hex-alpha@10.0.0(postcss@8.5.3): + postcss-color-hex-alpha@10.0.0(postcss@8.5.5): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): + postcss-color-rebeccapurple@10.0.0(postcss@8.5.5): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-colormin@6.1.0(postcss@8.5.3): + postcss-colormin@6.1.0(postcss@8.5.5): dependencies: - browserslist: 4.24.4 + browserslist: 4.25.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-convert-values@6.1.0(postcss@8.5.3): + postcss-convert-values@6.1.0(postcss@8.5.5): dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 + browserslist: 4.25.0 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.5(postcss@8.5.3): + postcss-custom-media@11.0.6(postcss@8.5.5): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - postcss: 8.5.3 + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.5 - postcss-custom-properties@14.0.4(postcss@8.5.3): + postcss-custom-properties@14.0.6(postcss@8.5.5): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.4(postcss@8.5.3): + postcss-custom-selectors@8.0.5(postcss@8.5.5): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - postcss: 8.5.3 + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): + postcss-dir-pseudo-class@9.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-discard-comments@6.0.2(postcss@8.5.3): + postcss-discard-comments@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-discard-duplicates@6.0.3(postcss@8.5.3): + postcss-discard-duplicates@6.0.3(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-discard-empty@6.0.3(postcss@8.5.3): + postcss-discard-empty@6.0.3(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-discard-overridden@6.0.2(postcss@8.5.3): + postcss-discard-overridden@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-discard-unused@6.0.5(postcss@8.5.3): + postcss-discard-unused@6.0.5(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 6.1.2 - postcss-double-position-gradients@6.0.0(postcss@8.5.3): + postcss-double-position-gradients@6.0.2(postcss@8.5.5): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.1(postcss@8.5.3): + postcss-focus-visible@10.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-focus-within@9.0.1(postcss@8.5.3): + postcss-focus-within@9.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-font-variant@5.0.0(postcss@8.5.3): + postcss-font-variant@5.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-gap-properties@6.0.0(postcss@8.5.3): + postcss-gap-properties@6.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-image-set-function@7.0.0(postcss@8.5.3): + postcss-image-set-function@7.0.0(postcss@8.5.5): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-lab-function@7.0.8(postcss@8.5.3): + postcss-lab-function@7.0.10(postcss@8.5.5): dependencies: - '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/utilities': 2.0.0(postcss@8.5.3) - postcss: 8.5.3 + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/utilities': 2.0.0(postcss@8.5.5) + postcss: 8.5.5 - postcss-loader@7.3.4(postcss@8.5.3)(typescript@5.6.3)(webpack@5.98.0): + postcss-loader@7.3.4(postcss@8.5.5)(typescript@5.6.3)(webpack@5.99.9): dependencies: cosmiconfig: 8.3.6(typescript@5.6.3) jiti: 1.21.7 - postcss: 8.5.3 - semver: 7.7.1 - webpack: 5.98.0 + postcss: 8.5.5 + semver: 7.7.2 + webpack: 5.99.9 transitivePeerDependencies: - typescript - postcss-logical@8.1.0(postcss@8.5.3): + postcss-logical@8.1.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-merge-idents@6.0.3(postcss@8.5.3): + postcss-merge-idents@6.0.3(postcss@8.5.5): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-merge-longhand@6.0.5(postcss@8.5.3): + postcss-merge-longhand@6.0.5(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - stylehacks: 6.1.1(postcss@8.5.3) + stylehacks: 6.1.1(postcss@8.5.5) - postcss-merge-rules@6.1.1(postcss@8.5.3): + postcss-merge-rules@6.1.1(postcss@8.5.5): dependencies: - browserslist: 4.24.4 + browserslist: 4.25.0 caniuse-api: 3.0.0 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@6.1.0(postcss@8.5.3): + postcss-minify-font-values@6.1.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-minify-gradients@6.0.3(postcss@8.5.3): + postcss-minify-gradients@6.0.3(postcss@8.5.5): dependencies: colord: 2.9.3 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-minify-params@6.1.0(postcss@8.5.3): + postcss-minify-params@6.1.0(postcss@8.5.5): dependencies: - browserslist: 4.24.4 - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + browserslist: 4.25.0 + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-minify-selectors@6.0.4(postcss@8.5.3): + postcss-minify-selectors@6.0.4(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + postcss-modules-extract-imports@3.1.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + postcss-modules-local-by-default@4.2.0(postcss@8.5.5): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.5) + postcss: 8.5.5 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.3): + postcss-modules-scope@3.2.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.3): + postcss-modules-values@4.0.0(postcss@8.5.5): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.5) + postcss: 8.5.5 - postcss-nesting@13.0.1(postcss@8.5.3): + postcss-nesting@13.0.2(postcss@8.5.5): dependencies: - '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-normalize-charset@6.0.2(postcss@8.5.3): + postcss-normalize-charset@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-normalize-display-values@6.0.2(postcss@8.5.3): + postcss-normalize-display-values@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-positions@6.0.2(postcss@8.5.3): + postcss-normalize-positions@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@6.0.2(postcss@8.5.3): + postcss-normalize-repeat-style@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-string@6.0.2(postcss@8.5.3): + postcss-normalize-string@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@6.0.2(postcss@8.5.3): + postcss-normalize-timing-functions@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@6.1.0(postcss@8.5.3): + postcss-normalize-unicode@6.1.0(postcss@8.5.5): dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 + browserslist: 4.25.0 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-url@6.0.2(postcss@8.5.3): + postcss-normalize-url@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@6.0.2(postcss@8.5.3): + postcss-normalize-whitespace@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-opacity-percentage@3.0.0(postcss@8.5.3): + postcss-opacity-percentage@3.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-ordered-values@6.0.2(postcss@8.5.3): + postcss-ordered-values@6.0.2(postcss@8.5.5): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 4.0.2(postcss@8.5.5) + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-overflow-shorthand@6.0.0(postcss@8.5.3): + postcss-overflow-shorthand@6.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.5.3): + postcss-page-break@3.0.4(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-place@10.0.0(postcss@8.5.3): + postcss-place@10.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-preset-env@10.1.5(postcss@8.5.3): - dependencies: - '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.3) - '@csstools/postcss-color-function': 4.0.8(postcss@8.5.3) - '@csstools/postcss-color-mix-function': 3.0.8(postcss@8.5.3) - '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.5.3) - '@csstools/postcss-exponential-functions': 2.0.7(postcss@8.5.3) - '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.3) - '@csstools/postcss-gamut-mapping': 2.0.8(postcss@8.5.3) - '@csstools/postcss-gradients-interpolation-method': 5.0.8(postcss@8.5.3) - '@csstools/postcss-hwb-function': 4.0.8(postcss@8.5.3) - '@csstools/postcss-ic-unit': 4.0.0(postcss@8.5.3) - '@csstools/postcss-initial': 2.0.1(postcss@8.5.3) - '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.3) - '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.5.3) - '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.3) - '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.3) - '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.3) - '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.3) - '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.3) - '@csstools/postcss-media-minmax': 2.0.7(postcss@8.5.3) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.3) - '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.3) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.3) - '@csstools/postcss-oklab-function': 4.0.8(postcss@8.5.3) - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) - '@csstools/postcss-random-function': 1.0.3(postcss@8.5.3) - '@csstools/postcss-relative-color-syntax': 3.0.8(postcss@8.5.3) - '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.3) - '@csstools/postcss-sign-functions': 1.1.2(postcss@8.5.3) - '@csstools/postcss-stepped-value-functions': 4.0.7(postcss@8.5.3) - '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.3) - '@csstools/postcss-trigonometric-functions': 4.0.7(postcss@8.5.3) - '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.3) - autoprefixer: 10.4.21(postcss@8.5.3) - browserslist: 4.24.4 - css-blank-pseudo: 7.0.1(postcss@8.5.3) - css-has-pseudo: 7.0.2(postcss@8.5.3) - css-prefers-color-scheme: 10.0.0(postcss@8.5.3) - cssdb: 8.2.4 - postcss: 8.5.3 - postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) - postcss-clamp: 4.1.0(postcss@8.5.3) - postcss-color-functional-notation: 7.0.8(postcss@8.5.3) - postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) - postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) - postcss-custom-media: 11.0.5(postcss@8.5.3) - postcss-custom-properties: 14.0.4(postcss@8.5.3) - postcss-custom-selectors: 8.0.4(postcss@8.5.3) - postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) - postcss-double-position-gradients: 6.0.0(postcss@8.5.3) - postcss-focus-visible: 10.0.1(postcss@8.5.3) - postcss-focus-within: 9.0.1(postcss@8.5.3) - postcss-font-variant: 5.0.0(postcss@8.5.3) - postcss-gap-properties: 6.0.0(postcss@8.5.3) - postcss-image-set-function: 7.0.0(postcss@8.5.3) - postcss-lab-function: 7.0.8(postcss@8.5.3) - postcss-logical: 8.1.0(postcss@8.5.3) - postcss-nesting: 13.0.1(postcss@8.5.3) - postcss-opacity-percentage: 3.0.0(postcss@8.5.3) - postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) - postcss-page-break: 3.0.4(postcss@8.5.3) - postcss-place: 10.0.0(postcss@8.5.3) - postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) - postcss-selector-not: 8.0.1(postcss@8.5.3) - - postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 + postcss-preset-env@10.2.3(postcss@8.5.5): + dependencies: + '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.5) + '@csstools/postcss-color-function': 4.0.10(postcss@8.5.5) + '@csstools/postcss-color-mix-function': 3.0.10(postcss@8.5.5) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.0(postcss@8.5.5) + '@csstools/postcss-content-alt-text': 2.0.6(postcss@8.5.5) + '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.5) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.5) + '@csstools/postcss-gamut-mapping': 2.0.10(postcss@8.5.5) + '@csstools/postcss-gradients-interpolation-method': 5.0.10(postcss@8.5.5) + '@csstools/postcss-hwb-function': 4.0.10(postcss@8.5.5) + '@csstools/postcss-ic-unit': 4.0.2(postcss@8.5.5) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.5) + '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.5) + '@csstools/postcss-light-dark-function': 2.0.9(postcss@8.5.5) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.5) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.5) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.5) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.5) + '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.5) + '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.5) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.5) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.5) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.5) + '@csstools/postcss-oklab-function': 4.0.10(postcss@8.5.5) + '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.5) + '@csstools/postcss-random-function': 2.0.1(postcss@8.5.5) + '@csstools/postcss-relative-color-syntax': 3.0.10(postcss@8.5.5) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.5) + '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.5) + '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.5) + '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.5) + '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.5) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.5) + autoprefixer: 10.4.21(postcss@8.5.5) + browserslist: 4.25.0 + css-blank-pseudo: 7.0.1(postcss@8.5.5) + css-has-pseudo: 7.0.2(postcss@8.5.5) + css-prefers-color-scheme: 10.0.0(postcss@8.5.5) + cssdb: 8.3.0 + postcss: 8.5.5 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.5) + postcss-clamp: 4.1.0(postcss@8.5.5) + postcss-color-functional-notation: 7.0.10(postcss@8.5.5) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.5) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.5) + postcss-custom-media: 11.0.6(postcss@8.5.5) + postcss-custom-properties: 14.0.6(postcss@8.5.5) + postcss-custom-selectors: 8.0.5(postcss@8.5.5) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.5) + postcss-double-position-gradients: 6.0.2(postcss@8.5.5) + postcss-focus-visible: 10.0.1(postcss@8.5.5) + postcss-focus-within: 9.0.1(postcss@8.5.5) + postcss-font-variant: 5.0.0(postcss@8.5.5) + postcss-gap-properties: 6.0.0(postcss@8.5.5) + postcss-image-set-function: 7.0.0(postcss@8.5.5) + postcss-lab-function: 7.0.10(postcss@8.5.5) + postcss-logical: 8.1.0(postcss@8.5.5) + postcss-nesting: 13.0.2(postcss@8.5.5) + postcss-opacity-percentage: 3.0.0(postcss@8.5.5) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.5) + postcss-page-break: 3.0.4(postcss@8.5.5) + postcss-place: 10.0.0(postcss@8.5.5) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.5) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.5) + postcss-selector-not: 8.0.1(postcss@8.5.5) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.5): + dependencies: + postcss: 8.5.5 postcss-selector-parser: 7.1.0 - postcss-reduce-idents@6.0.3(postcss@8.5.3): + postcss-reduce-idents@6.0.3(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-reduce-initial@6.1.0(postcss@8.5.3): + postcss-reduce-initial@6.1.0(postcss@8.5.5): dependencies: - browserslist: 4.24.4 + browserslist: 4.25.0 caniuse-api: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.5 - postcss-reduce-transforms@6.0.2(postcss@8.5.3): + postcss-reduce-transforms@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss-selector-not@8.0.1(postcss@8.5.3): + postcss-selector-not@8.0.1(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 7.1.0 postcss-selector-parser@6.1.2: @@ -10555,29 +11045,29 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sort-media-queries@5.2.0(postcss@8.5.3): + postcss-sort-media-queries@5.2.0(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 sort-css-media-queries: 2.2.0 - postcss-svgo@6.0.3(postcss@8.5.3): + postcss-svgo@6.0.3(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@6.0.4(postcss@8.5.3): + postcss-unique-selectors@6.0.4(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss-zindex@6.0.2(postcss@8.5.3): + postcss-zindex@6.0.2(postcss@8.5.5): dependencies: - postcss: 8.5.3 + postcss: 8.5.5 - postcss@8.5.3: + postcss@8.5.5: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -10613,7 +11103,7 @@ snapshots: property-information@6.5.0: {} - property-information@7.0.0: {} + property-information@7.1.0: {} proto-list@1.2.4: {} @@ -10662,18 +11152,18 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dev-utils@12.0.1(typescript@5.6.3)(webpack@5.98.0): + react-dev-utils@12.0.1(typescript@5.6.3)(webpack@5.99.9): dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 address: 1.2.2 - browserslist: 4.24.4 + browserslist: 4.25.0 chalk: 4.1.2 cross-spawn: 7.0.6 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.6.3)(webpack@5.98.0) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.6.3)(webpack@5.99.9) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -10685,11 +11175,12 @@ snapshots: prompts: 2.4.2 react-error-overlay: 6.1.0 recursive-readdir: 2.2.3 - shell-quote: 1.8.2 + shell-quote: 1.8.3 strip-ansi: 6.0.1 text-table: 0.2.0 + webpack: 5.99.9 + optionalDependencies: typescript: 5.6.3 - webpack: 5.98.0 transitivePeerDependencies: - eslint - supports-color @@ -10710,21 +11201,21 @@ snapshots: dependencies: react: 19.1.0 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0)(webpack@5.98.0): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.1.0))(webpack@5.99.9): dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.1.0)' - webpack: 5.98.0 + webpack: 5.99.9 - react-router-config@5.1.1(react-router@5.3.4)(react@19.1.0): + react-router-config@5.1.1(react-router@5.3.4(react@19.1.0))(react@19.1.0): dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 react: 19.1.0 react-router: 5.3.4(react@19.1.0) react-router-dom@5.3.4(react@19.1.0): dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -10735,7 +11226,7 @@ snapshots: react-router@5.3.4(react@19.1.0): dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.6 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -10776,13 +11267,13 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.14.1): + recma-jsx@1.0.0(acorn@8.15.0): dependencies: - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn-jsx: 5.3.2(acorn@8.15.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -10792,14 +11283,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -10814,12 +11305,6 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.27.0 - regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 @@ -10851,7 +11336,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -10912,7 +11397,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.1: + remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -10970,7 +11455,7 @@ snapshots: dependencies: escalade: 3.2.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.5 strip-json-comments: 3.1.1 run-parallel@1.2.0: @@ -10987,6 +11472,8 @@ snapshots: scheduler@0.26.0: {} + schema-dts@1.1.5: {} + schema-utils@2.7.0: dependencies: '@types/json-schema': 7.0.15 @@ -10999,7 +11486,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.0: + schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -11022,11 +11509,11 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 semver@6.3.1: {} - semver@7.7.1: {} + semver@7.7.2: {} send@0.19.0: dependencies: @@ -11106,7 +11593,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} + shell-quote@1.8.3: {} shelljs@0.8.5: dependencies: @@ -11146,7 +11633,7 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.28 + '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 @@ -11195,7 +11682,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11206,7 +11693,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -11222,7 +11709,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.1: {} + std-env@3.9.0: {} string-width@4.2.3: dependencies: @@ -11279,10 +11766,10 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - stylehacks@6.1.1(postcss@8.5.3): + stylehacks@6.1.1(postcss@8.5.5): dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 + browserslist: 4.25.0 + postcss: 8.5.5 postcss-selector-parser: 6.1.2 supports-color@7.2.0: @@ -11309,21 +11796,21 @@ snapshots: tapable@1.1.3: {} - tapable@2.2.1: {} + tapable@2.2.2: {} - terser-webpack-plugin@5.3.14(webpack@5.98.0): + terser-webpack-plugin@5.3.14(webpack@5.99.9): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.98.0 + terser: 5.42.0 + webpack: 5.99.9 - terser@5.39.0: + terser@5.42.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -11335,6 +11822,8 @@ snapshots: tiny-warning@1.0.3: {} + tinypool@1.1.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -11366,9 +11855,9 @@ snapshots: typescript@5.6.3: {} - undici-types@6.20.0: {} + undici-types@7.8.0: {} - undici@6.21.2: {} + undici@7.10.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -11428,9 +11917,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.24.4): + update-browserslist-db@1.1.3(browserslist@4.25.0): dependencies: - browserslist: 4.24.4 + browserslist: 4.25.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -11447,7 +11936,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.7.1 + semver: 7.7.2 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -11455,13 +11944,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0)(webpack@5.98.0): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.99.9))(webpack@5.99.9): dependencies: - file-loader: 6.2.0(webpack@5.98.0) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.98.0 + webpack: 5.99.9 + optionalDependencies: + file-loader: 6.2.0(webpack@5.99.9) util-deprecate@1.0.2: {} @@ -11492,7 +11982,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - watchpack@2.4.2: + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -11506,7 +11996,7 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 @@ -11521,22 +12011,22 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@5.3.4(webpack@5.98.0): + webpack-dev-middleware@5.3.4(webpack@5.99.9): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.0 - webpack: 5.98.0 + schema-utils: 4.3.2 + webpack: 5.99.9 - webpack-dev-server@4.15.2(debug@4.4.0)(webpack@5.98.0): + webpack-dev-server@4.15.2(debug@4.4.1)(webpack@5.99.9): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 + '@types/express': 4.17.23 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.8 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -11549,20 +12039,21 @@ snapshots: express: 4.21.2 graceful-fs: 4.2.11 html-entities: 2.6.0 - http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.4.0) + http-proxy-middleware: 2.0.9(@types/express@4.17.23)(debug@4.4.1) ipaddr.js: 2.2.0 launch-editor: 2.10.0 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 - schema-utils: 4.3.0 + schema-utils: 4.3.2 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.98.0 - webpack-dev-middleware: 5.3.4(webpack@5.98.0) - ws: 8.18.1 + webpack-dev-middleware: 5.3.4(webpack@5.99.9) + ws: 8.18.2 + optionalDependencies: + webpack: 5.99.9 transitivePeerDependencies: - bufferutil - debug @@ -11581,20 +12072,21 @@ snapshots: flat: 5.0.2 wildcard: 2.0.1 - webpack-sources@3.2.3: {} + webpack-sources@3.3.2: {} - webpack@5.98.0: + webpack@5.99.9: dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.4 + acorn: 8.15.0 + browserslist: 4.25.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 + es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -11603,17 +12095,17 @@ snapshots: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.98.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(webpack@5.99.9) + watchpack: 2.4.4 + webpack-sources: 3.3.2 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.98.0): + webpackbar@6.0.1(webpack@5.99.9): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -11621,13 +12113,13 @@ snapshots: figures: 3.2.0 markdown-table: 2.0.0 pretty-time: 1.1.0 - std-env: 3.8.1 - webpack: 5.98.0 + std-env: 3.9.0 + webpack: 5.99.9 wrap-ansi: 7.0.0 websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.9 + http-parser-js: 0.5.10 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 @@ -11676,7 +12168,7 @@ snapshots: ws@7.5.10: {} - ws@8.18.1: {} + ws@8.18.2: {} xdg-basedir@5.1.0: {} diff --git a/docs/static/img/arkflow.svg b/docs/static/img/arkflow.svg new file mode 100644 index 00000000..ada19bbf --- /dev/null +++ b/docs/static/img/arkflow.svg @@ -0,0 +1,18 @@ + + + + background + + + + Layer 1 + {/* Group and rotate all elements -90 degrees around center (75,75) */} + {/* Original fountain paths, their coordinates are relative to the unrotated state */} + + + + + + ArkFlow + + \ No newline at end of file diff --git a/examples/python_processor_example.yaml b/examples/python_processor_example.yaml index 54b1cb18..292000b0 100644 --- a/examples/python_processor_example.yaml +++ b/examples/python_processor_example.yaml @@ -2,24 +2,61 @@ logging: level: info streams: - input: - type: "generate" - context: '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }' - interval: 1ns - batch_size: 1 - count: 10 + type: "memory" + messages: + - '{ "timestamp": 1625000005000, "value": 10, "sensor": "temp_1" }' + - '{ "timestamp": 1625000006000, "value": 19, "sensor": "temp_1" }' + - '{ "timestamp": 1625000007000, "value": 11, "sensor": "temp_2" }' + - '{ "timestamp": 1625000008000, "value": 11, "sensor": "temp_2" }' + pipeline: thread_num: 10 processors: + - type: "json_to_arrow" - type: "python" -# script: | -# from example1 import add -# def process_batch(batch): -# print(add(1,1)) -# return [batch] - function: "process_batch" - module: example1 - python_path: ["./examples/python"] + script: | + def transform_data(batch): + import pyarrow as pa + import pyarrow.compute as pc + + # Get the value field in the batch + value_array = batch.column('value') + + # Do math on the values + doubled_values = pc.multiply(value_array, 2) + squared_values = pc.power(value_array, 2) + + # Create a new field + new_fields = [ + # Leave the original fields + pa.field('timestamp', pa.int64()), + pa.field('value', pa.int64()), + pa.field('sensor', pa.string()), + # Add a new field + pa.field('value_doubled', pa.int64()), + pa.field('value_squared', pa.int64()) + ] + + # Create a new schema + new_schema = pa.schema(new_fields) + + # Create a new batch of records + new_batch = pa.RecordBatch.from_arrays( + [ + batch.column('timestamp'), + batch.column('value'), + batch.column('sensor'), + doubled_values, + squared_values + ], + schema=new_schema + ) + + return [new_batch] + function: "transform_data" +# module: example1 + python_path: [] output: diff --git a/examples/redis_temporary_example.yaml b/examples/redis_temporary_example.yaml index 91e466f1..42a4cfa9 100644 --- a/examples/redis_temporary_example.yaml +++ b/examples/redis_temporary_example.yaml @@ -10,6 +10,8 @@ streams: temporary: - name: redis_temporary type: "redis" + codec: + type: json mode: type: single url: redis://127.0.0.1:6379 diff --git a/examples/s3_output_example.yaml b/examples/s3_output_example.yaml new file mode 100644 index 00000000..54f5d358 --- /dev/null +++ b/examples/s3_output_example.yaml @@ -0,0 +1,30 @@ +logging: + level: info +streams: + - input: + type: "generate" + context: '{ "timestamp": 1625000000000, "value": 10, "sensor": "temp_1" }' + interval: 1s + batch_size: 10 + + pipeline: + thread_num: 4 + processors: + - type: "json_to_arrow" + - type: "sql" + query: "SELECT * FROM flow WHERE value >= 10" + + output: + type: "s3" + provider: "aws" # /aws/gcp/ + bucket: "arkflow" + region: "ap-northeast-2" + credentials: + access_key_id: "your access key id" + secret_access_key: "secret access key" + format: "csv" #json/csv/parquet + prefix_pattern: "data/{year}/{month}/{day}/{timestamp}" + format_options: + compression: "gzip" + error_output: + type: "stdout" \ No newline at end of file diff --git a/examples/sql_output_example.yaml b/examples/sql_output_example.yaml index 18955ff1..c3a11023 100644 --- a/examples/sql_output_example.yaml +++ b/examples/sql_output_example.yaml @@ -19,7 +19,7 @@ streams: output_type: type: "mysql" uri: "mysql://root:1234@localhost:3306/arkflow" - table_name: "arkflow_test" + table_name: "arkflow_test" error_output: type: "stdout" \ No newline at end of file diff --git a/cncf-landscape-logo.svg b/images/cncf-landscape-logo.svg similarity index 100% rename from cncf-landscape-logo.svg rename to images/cncf-landscape-logo.svg diff --git a/cncf-logo.svg b/images/cncf-logo.svg similarity index 100% rename from cncf-logo.svg rename to images/cncf-logo.svg diff --git a/logo.svg b/images/logo.svg similarity index 100% rename from logo.svg rename to images/logo.svg diff --git a/images/wx-group.png b/images/wx-group.png new file mode 100644 index 00000000..d270ed18 Binary files /dev/null and b/images/wx-group.png differ