diff --git a/.ghjk/lock.json b/.ghjk/lock.json index 5143a3e494..712031b228 100644 --- a/.ghjk/lock.json +++ b/.ghjk/lock.json @@ -1115,7 +1115,7 @@ "ty": "denoFile@v1", "key": "test-e2e", "desc": "Shorthand for `tools/test.ts`", - "envKey": "bciqgfkhptprs54tg3wl45acxctzc2lu4v2xlh3slk6w4m5g5ctysv4a" + "envKey": "bciqmgoa4swy4qcnmwuku3qhhsg4mjh3jkw7k5by6s6ytp3hyrhkqr3i" }, "lock-sed": { "ty": "denoFile@v1", @@ -2101,6 +2101,44 @@ } ] }, + "bciqmgoa4swy4qcnmwuku3qhhsg4mjh3jkw7k5by6s6ytp3hyrhkqr3i": { + "provides": [ + { + "ty": "posix.envVar", + "key": "RUST_LOG", + "val": "info,typegate=debug,deno=warn,swc_ecma_codegen=off,tracing::span=off,quaint=off" + }, + { + "ty": "posix.envVar", + "key": "TYPEGRAPH_VERSION", + "val": "0.0.4" + }, + { + "ty": "posix.envVar", + "key": "CLICOLOR_FORCE", + "val": "1" + }, + { + "ty": "posix.envVar", + "key": "CROSS_CONFIG", + "val": "tools/Cross.toml" + }, + { + "ty": "posix.envVar", + "key": "GIT_CLIFF_CONFIG", + "val": "tools/cliff.toml" + }, + { + "ty": "posix.envVar", + "key": "MCLI_NO_UPGRADE_CHECK", + "val": "1" + }, + { + "ty": "ghjk.ports.InstallSetRef", + "setId": "ghjkEnvProvInstSet___ci" + } + ] + }, "bciqoz54u3qtrflsfe3amc2pcmlt6xqnemagw3egggrtlc76tyy6hkua": { "provides": [ { diff --git a/.gitignore b/.gitignore index 2c8c2027e0..4ec0d59753 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__/ *.py[cod] dist/ +!tools/tree/dist/ .ruff_cache **/.terraform/* @@ -55,3 +56,4 @@ examples/typegraphs/**/*.wasm src/pyrt_wit_wire/wit_wire /.metatype/ +/vivavox/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f6eac231c1..c11170d295 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,7 +39,7 @@ repos: - id: deno-lint name: Deno lint language: system - entry: bash -c 'deno lint && ghjk x lint-deno' + entry: bash -c 'ghjk x lint-deno' pass_filenames: false # types: # - javascript diff --git a/Cargo.lock b/Cargo.lock index e605338523..d462a0eb0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 4 +version = 3 [[package]] name = "Inflector" @@ -56,7 +56,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -77,7 +77,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -189,7 +189,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -278,9 +278,9 @@ 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" @@ -434,7 +434,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -539,7 +539,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -579,7 +579,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -596,7 +596,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -668,7 +668,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -880,9 +880,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "better_scoped_tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50fd297a11c709be8348aec039c8b91de16075d2b2bdaee1bd562c0875993664" +checksum = "7cd228125315b132eed175bf47619ac79b945b26e56b848ba203ae4ea8603609" dependencies = [ "scoped-tls", ] @@ -928,9 +928,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.5" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ "bitflags 2.9.1", "cexpr", @@ -943,7 +943,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -963,7 +963,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1098,7 +1098,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "syn_derive", ] @@ -1109,7 +1109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17d4f95e880cfd28c4ca5a006cf7f6af52b4bcb7b5866f573b2faa126fb7affb" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1168,9 +1168,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" dependencies = [ "allocator-api2", ] @@ -1205,9 +1205,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] @@ -1220,7 +1220,7 @@ checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1295,7 +1295,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1409,7 +1409,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b4a6cae9efc04cc6cbb8faf338d2c497c165c83e74509cf4dbedea948bbf6e5" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1574,14 +1574,14 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[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 = "clipboard-win" @@ -1650,7 +1650,7 @@ dependencies = [ "nom 7.1.3", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -1750,7 +1750,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -2263,7 +2263,7 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crosstarget-utils" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "futures", "js-sys", @@ -2408,7 +2408,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -2456,7 +2456,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -2478,7 +2478,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -2523,7 +2523,7 @@ checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" [[package]] name = "datamodel-renderer" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "base64 0.13.1", "once_cell", @@ -2653,7 +2653,7 @@ dependencies = [ "tempfile", "text-size", "text_lines", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util 0.7.11", "tower 0.5.2", @@ -2675,7 +2675,7 @@ checksum = "f9221b99f1cc7c395686b9f2d5652c5855666a9282c8d5a68fabd4b1d4994fa9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -2692,7 +2692,7 @@ dependencies = [ "once_cell", "percent-encoding", "serde", - "sourcemap 9.1.0", + "sourcemap 9.2.2", "string_capacity", "swc_atoms", "swc_bundler", @@ -2719,8 +2719,8 @@ dependencies = [ "swc_visit", "swc_visit_macros", "text_lines", - "thiserror 2.0.11", - "unicode-width 0.2.0", + "thiserror 2.0.12", + "unicode-width 0.2.1", "url", ] @@ -2732,7 +2732,7 @@ dependencies = [ "async-trait", "deno_core", "deno_error", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "uuid", ] @@ -2760,7 +2760,7 @@ dependencies = [ "serde", "sha2 0.10.8", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util 0.7.11", ] @@ -2805,7 +2805,7 @@ dependencies = [ "image", "lcms2", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2831,7 +2831,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -2875,7 +2875,7 @@ dependencies = [ "smallvec", "sourcemap 8.0.1", "static_assertions", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "url", "v8", @@ -2898,7 +2898,7 @@ dependencies = [ "deno_core", "deno_error", "saffron", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -2933,7 +2933,7 @@ dependencies = [ "sha1", "sha2 0.10.8", "spki", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "uuid", "x25519-dalek", @@ -2991,7 +2991,7 @@ checksum = "5abb2556e91848b66f562451fcbcdee2a3b7c88281828908dcf7cca355f5d997" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -3010,7 +3010,7 @@ dependencies = [ "deno_tls", "dyn-clone", "error_reporter", - "h2 0.4.7", + "h2 0.4.10", "hickory-resolver 0.25.0-alpha.5", "http 1.1.0", "http-body-util", @@ -3022,7 +3022,7 @@ dependencies = [ "rustls-webpki 0.102.6", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-rustls 0.26.0", "tokio-socks", @@ -3051,7 +3051,7 @@ dependencies = [ "serde", "serde-value", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "winapi", ] @@ -3076,7 +3076,7 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "winapi", "windows-sys 0.59.0", ] @@ -3109,7 +3109,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "twox-hash", "url", "wasm_dep_analyzer", @@ -3149,7 +3149,7 @@ dependencies = [ "scopeguard", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util 0.7.11", ] @@ -3205,7 +3205,7 @@ dependencies = [ "rand 0.8.5", "rusqlite", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3236,7 +3236,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "twox-hash", "url", ] @@ -3268,7 +3268,7 @@ dependencies = [ "deno_semver", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -3295,7 +3295,7 @@ dependencies = [ "libloading 0.7.4", "log", "napi_sym", - "thiserror 2.0.11", + "thiserror 2.0.12", "windows-sys 0.59.0", ] @@ -3328,8 +3328,8 @@ dependencies = [ "rustls-tokio-stream", "serde", "sha2 0.10.8", - "socket2 0.5.7", - "thiserror 2.0.11", + "socket2 0.5.10", + "thiserror 2.0.12", "tokio", "url", "web-transport-proto", @@ -3371,7 +3371,7 @@ dependencies = [ "elliptic-curve", "errno", "faster-hex", - "h2 0.4.7", + "h2 0.4.10", "hkdf", "http 1.1.0", "http-body-util", @@ -3411,16 +3411,16 @@ dependencies = [ "sm3", "spki", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-eld", "url", - "webpki-root-certs", + "webpki-root-certs 0.26.11", "winapi", "windows-sys 0.59.0", "x25519-dalek", "x509-parser", - "yoke", + "yoke 0.7.4", ] [[package]] @@ -3439,7 +3439,7 @@ dependencies = [ "monch", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3469,7 +3469,7 @@ dependencies = [ "serde_json", "sys_traits", "tar", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3486,8 +3486,8 @@ dependencies = [ "stringcase", "strum 0.25.0", "strum_macros 0.25.3", - "syn 2.0.90", - "thiserror 2.0.11", + "syn 2.0.87", + "thiserror 2.0.12", ] [[package]] @@ -3507,7 +3507,7 @@ dependencies = [ "serde", "signal-hook", "signal-hook-registry", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "winapi", ] @@ -3526,7 +3526,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3539,7 +3539,7 @@ dependencies = [ "deno_error", "percent-encoding", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3559,7 +3559,7 @@ dependencies = [ "once_cell", "percent-encoding", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "which 6.0.1", "winapi", ] @@ -3585,7 +3585,7 @@ dependencies = [ "serde", "simd-json", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "which 6.0.1", "winapi", @@ -3622,7 +3622,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3681,7 +3681,7 @@ dependencies = [ "same-file", "serde", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-metrics", "twox-hash", @@ -3703,7 +3703,7 @@ dependencies = [ "monch", "once_cell", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -3755,7 +3755,7 @@ dependencies = [ "opentelemetry_sdk 0.27.1", "pin-project", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -3782,7 +3782,7 @@ dependencies = [ "rustls-tokio-stream", "rustls-webpki 0.102.6", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "webpki-roots 0.26.3", ] @@ -3812,11 +3812,11 @@ dependencies = [ [[package]] name = "deno_unsync" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d774fd83f26b24f0805a6ab8b26834a0d06ceac0db517b769b1e4633c96a2057" +checksum = "6742a724e8becb372a74c650a1aefb8924a5b8107f7d75b3848763ea24b27a87" dependencies = [ - "futures", + "futures-util", "parking_lot 0.12.3", "tokio", ] @@ -3846,7 +3846,7 @@ dependencies = [ "flate2", "futures", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "uuid", ] @@ -3863,7 +3863,7 @@ dependencies = [ "raw-window-handle", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "wgpu-core", "wgpu-types", @@ -3889,7 +3889,7 @@ dependencies = [ "deno_permissions", "deno_tls", "fastwebsockets", - "h2 0.4.7", + "h2 0.4.10", "http 1.1.0", "http-body-util", "hyper 1.6.0", @@ -3897,7 +3897,7 @@ dependencies = [ "once_cell", "rustls-tokio-stream", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -3909,7 +3909,7 @@ dependencies = [ "deno_core", "deno_error", "rusqlite", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -3957,7 +3957,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util 0.7.11", "url", @@ -3982,7 +3982,7 @@ dependencies = [ "rand 0.8.5", "rusqlite", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "uuid", @@ -4023,7 +4023,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4055,7 +4055,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4097,7 +4097,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4117,7 +4117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core 0.20.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4150,7 +4150,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "unicode-xid", ] @@ -4163,7 +4163,7 @@ checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" [[package]] name = "diagnostics" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "colored 2.1.0", "indoc", @@ -4295,7 +4295,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4324,7 +4324,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4339,7 +4339,7 @@ dependencies = [ [[package]] name = "dmmf" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bigdecimal", "indexmap 2.9.0", @@ -4380,11 +4380,11 @@ checksum = "2c1d827947704a9495f705d6aeed270fa21a67f825f22902c28f38dc3af7a9ae" dependencies = [ "anyhow", "bumpalo", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap 2.9.0", "rustc-hash 2.1.1", "serde", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] @@ -4524,9 +4524,9 @@ dependencies = [ [[package]] name = "ecow" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42fc0a93992b20c58b99e59d61eaf1635a25bfbe49e4275c34ba0aee98119ba" +checksum = "b92b481eb5d59fd8e80e92ff11d057d1ca8d144b2cd8c66cc8d5bd177a3c0dc5" dependencies = [ "serde", ] @@ -4579,7 +4579,7 @@ dependencies = [ "indexmap 2.9.0", "log", "thiserror 1.0.64", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -4727,7 +4727,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4739,7 +4739,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4760,7 +4760,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4816,7 +4816,7 @@ checksum = "d4291f0c7220b67ad15e9d5300ba2f215cee504f0924d60e77c9d1c77e7a69b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -4846,9 +4846,9 @@ dependencies = [ [[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.59.0", @@ -4886,7 +4886,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -5172,7 +5172,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5210,7 +5210,7 @@ checksum = "8d7ccf961415e7aa17ef93dcb6c2441faaa8e768abe09e659b908089546f74c5" dependencies = [ "proc-macro2", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5238,7 +5238,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5250,7 +5250,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5262,7 +5262,7 @@ dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5433,7 +5433,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -5524,20 +5524,21 @@ checksum = "8796f322e43105351a7ec35148807b32b5b6058a539656dafe4a5b456d5ca41f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] name = "generator" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" dependencies = [ + "cc", "cfg-if", "libc", "log", "rustversion", - "windows 0.58.0", + "windows 0.61.3", ] [[package]] @@ -5586,14 +5587,16 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -5746,7 +5749,7 @@ dependencies = [ "log", "presser", "thiserror 1.0.64", - "windows 0.58.0", + "windows 0.56.0", ] [[package]] @@ -5918,9 +5921,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", @@ -5998,9 +6001,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", @@ -6137,9 +6140,9 @@ dependencies = [ "idna 1.0.3", "ipnet", "once_cell", - "rand 0.9.0", + "rand 0.9.1", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tokio", "tracing", @@ -6180,11 +6183,11 @@ dependencies = [ "moka", "once_cell", "parking_lot 0.12.3", - "rand 0.9.0", + "rand 0.9.1", "resolv-conf", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -6251,9 +6254,9 @@ dependencies = [ [[package]] name = "hstr" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71399f53a92ef72ee336a4b30201c6e944827e14e0af23204c291aad9c24cc85" +checksum = "2d1638d2018a21b9ff65d7fc28c2271c76a5af6ff4f621b204d032bc649763a4" dependencies = [ "hashbrown 0.14.5", "new_debug_unreachable", @@ -6363,7 +6366,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -6379,7 +6382,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", + "h2 0.4.10", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -6451,18 +6454,20 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.1.0", "http-body 1.0.1", "hyper 1.6.0", + "libc", "pin-project-lite", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -6493,21 +6498,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", - "yoke", + "potential_utf", + "yoke 0.8.0", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -6516,31 +6522,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -6548,67 +6534,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", - "yoke", + "yoke 0.8.0", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "id-arena" version = "2.2.1" @@ -6655,9 +6628,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -6713,7 +6686,7 @@ dependencies = [ "percent-encoding", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -6760,7 +6733,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "serde", ] @@ -6864,7 +6837,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2 0.5.10", "widestring", "windows-sys 0.48.0", "winreg", @@ -6903,7 +6876,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -6977,9 +6950,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "ittapi" @@ -7029,7 +7002,7 @@ dependencies = [ [[package]] name = "json-rpc-api-build" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "backtrace", "heck 0.3.3", @@ -7207,7 +7180,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -7335,9 +7308,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libffi" @@ -7413,7 +7386,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ - "bindgen 0.69.5", + "bindgen 0.69.4", "cc", "pkg-config", "vcpkg", @@ -7429,7 +7402,7 @@ dependencies = [ "libc", "sha2 0.10.8", "windows-sys 0.48.0", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -7465,9 +7438,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" @@ -7481,7 +7454,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e01cc93c35479eaa65adbf8b9aa933aa3f400d9e4e2fc553f516d4f822c8b13" dependencies = [ - "syn 2.0.90", + "syn 2.0.87", "thiserror 1.0.64", ] @@ -7550,6 +7523,12 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lsp-types" version = "0.95.1" @@ -8135,7 +8114,7 @@ checksum = "b52c1b33ff98142aecea13138bd399b68aa7ab5d9546c300988c345004001eea" [[package]] name = "mongodb" version = "3.0.0" -source = "git+https://github.com/prisma/mongo-rust-driver.git?branch=RUST-1994%2Fhappy-eyeballs#31e0356391a7871bec000ae35fe0edc35582449e" +source = "git+https://github.com/prisma/mongo-rust-driver.git?branch=RUST-1994/happy-eyeballs#31e0356391a7871bec000ae35fe0edc35582449e" dependencies = [ "async-trait", "base64 0.13.1", @@ -8166,7 +8145,7 @@ dependencies = [ "serde_with", "sha-1", "sha2 0.10.8", - "socket2 0.5.7", + "socket2 0.5.10", "stringprep", "strsim 0.11.1", "take_mut", @@ -8182,7 +8161,7 @@ dependencies = [ [[package]] name = "mongodb-client" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "mongodb", "once_cell", @@ -8193,17 +8172,17 @@ dependencies = [ [[package]] name = "mongodb-internal-macros" version = "3.0.0" -source = "git+https://github.com/prisma/mongo-rust-driver.git?branch=RUST-1994%2Fhappy-eyeballs#31e0356391a7871bec000ae35fe0edc35582449e" +source = "git+https://github.com/prisma/mongo-rust-driver.git?branch=RUST-1994/happy-eyeballs#31e0356391a7871bec000ae35fe0edc35582449e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] name = "mongodb-query-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "anyhow", "async-trait", @@ -8237,7 +8216,7 @@ dependencies = [ [[package]] name = "mongodb-schema-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bson", "convert_case 0.6.0", @@ -8261,7 +8240,7 @@ dependencies = [ [[package]] name = "mongodb-schema-describer" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bson", "futures", @@ -8374,7 +8353,7 @@ dependencies = [ "spirv", "strum 0.26.3", "termcolor", - "thiserror 2.0.11", + "thiserror 2.0.12", "unicode-xid", ] @@ -8395,7 +8374,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -8507,7 +8486,7 @@ dependencies = [ "serde", "serde_json", "sys_traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -8753,7 +8732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "crc32fast", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap 2.9.0", "memchr", ] @@ -8813,7 +8792,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9031,11 +9010,22 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.3.0" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-float" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537" +checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01" dependencies = [ "num-traits", + "rand 0.8.5", + "serde", ] [[package]] @@ -9227,7 +9217,7 @@ dependencies = [ [[package]] name = "parser-database" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "diagnostics", "either", @@ -9355,7 +9345,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9429,7 +9419,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9458,7 +9448,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9628,6 +9618,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -9717,7 +9716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9742,7 +9741,7 @@ dependencies = [ [[package]] name = "prisma-value" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "base64 0.13.1", "bigdecimal", @@ -9795,7 +9794,7 @@ checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" dependencies = [ "proc-macro-rules-macros", "proc-macro2", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -9807,14 +9806,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -9822,7 +9821,7 @@ dependencies = [ [[package]] name = "process-wrap" version = "8.0.2" -source = "git+https://github.com/metatypedev/process-wrap?branch=fix%2Fdecrement-tokio-version#5c6aecd60aebcb3390375f9c3a695ee479304db3" +source = "git+https://github.com/metatypedev/process-wrap?branch=fix/decrement-tokio-version#5c6aecd60aebcb3390375f9c3a695ee479304db3" dependencies = [ "futures", "indexmap 2.9.0", @@ -9861,7 +9860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" dependencies = [ "bytes", - "prost-derive 0.13.4", + "prost-derive 0.13.5", ] [[package]] @@ -9901,15 +9900,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -10013,7 +10012,7 @@ dependencies = [ [[package]] name = "psl" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "psl-core", ] @@ -10021,7 +10020,7 @@ dependencies = [ [[package]] name = "psl-core" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bigdecimal", "cfg-if", @@ -10090,7 +10089,7 @@ checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -10123,7 +10122,7 @@ dependencies = [ [[package]] name = "quaint" version = "0.2.0-alpha.13" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "async-trait", "base64 0.12.3", @@ -10185,7 +10184,7 @@ dependencies = [ [[package]] name = "query-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "anyhow", "async-trait", @@ -10205,7 +10204,7 @@ dependencies = [ [[package]] name = "query-core" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "async-trait", "bigdecimal", @@ -10242,7 +10241,7 @@ dependencies = [ [[package]] name = "query-engine-metrics" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "metrics 0.18.1", "metrics-exporter-prometheus", @@ -10259,7 +10258,7 @@ dependencies = [ [[package]] name = "query-structure" version = "0.0.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bigdecimal", "chrono", @@ -10313,37 +10312,40 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases 0.2.1", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.1.1", "rustls 0.23.12", - "socket2 0.5.7", - "thiserror 2.0.11", + "socket2 0.5.10", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom 0.2.15", - "rand 0.8.5", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring 0.17.8", "rustc-hash 2.1.1", "rustls 0.23.12", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -10351,27 +10353,33 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases 0.2.1", "libc", "once_cell", - "socket2 0.5.7", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -10412,7 +10420,7 @@ checksum = "4fdb50eb5bf734fa5a770680a61876a6ec77b99c1e0e52d1f18ad6ebfa85759f" dependencies = [ "heck 0.5.0", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -10437,17 +10445,17 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", + "serde", ] [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.0", - "zerocopy 0.8.17", + "rand_core 0.9.3", ] [[package]] @@ -10477,7 +10485,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -10496,16 +10504,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.15", + "serde", ] [[package]] name = "rand_core" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.1", - "zerocopy 0.8.17", + "getrandom 0.3.3", ] [[package]] @@ -10569,7 +10577,7 @@ dependencies = [ "percent-encoding", "ryu", "sha1_smol", - "socket2 0.5.7", + "socket2 0.5.10", "url", ] @@ -10628,7 +10636,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -10652,7 +10660,7 @@ checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a" dependencies = [ "allocator-api2", "bumpalo", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "log", "rustc-hash 2.1.1", "smallvec", @@ -10720,7 +10728,7 @@ dependencies = [ [[package]] name = "request-handlers" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "bigdecimal", "cfg_aliases 0.2.1", @@ -10757,7 +10765,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.7", + "h2 0.4.10", "http 1.1.0", "http-body 1.0.1", "http-body-util", @@ -11169,11 +11177,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] @@ -11184,7 +11193,7 @@ checksum = "22557157d7395bc30727745b365d923f1ecc230c4c80b176545f3f4f08c46e33" dependencies = [ "futures", "rustls 0.23.12", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", ] @@ -11384,7 +11393,7 @@ dependencies = [ [[package]] name = "schema" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "once_cell", "psl", @@ -11395,7 +11404,7 @@ dependencies = [ [[package]] name = "schema-ast" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "diagnostics", "pest", @@ -11407,7 +11416,7 @@ dependencies = [ [[package]] name = "schema-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "chrono", "enumflags2", @@ -11424,7 +11433,7 @@ dependencies = [ [[package]] name = "schema-core" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "async-trait", "chrono", @@ -11749,7 +11758,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -11773,7 +11782,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -11807,7 +11816,7 @@ dependencies = [ "num-bigint", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "v8", ] @@ -11838,7 +11847,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12041,9 +12050,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simd-json" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1df0290e9bfe79ddd5ff8798ca887cd107b75353d2957efe9777296e17f26b5" +checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" dependencies = [ "getrandom 0.2.15", "halfbrown", @@ -12159,9 +12168,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -12188,17 +12197,16 @@ dependencies = [ [[package]] name = "sourcemap" -version = "9.1.0" +version = "9.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d146f02f4bbbabbbe3da0f9cd3ea2ab779defc4ed1f070b5bd83ea48ed78811" +checksum = "e22afbcb92ce02d23815b9795523c005cb9d3c214f8b7a66318541c240ea7935" dependencies = [ - "base64-simd 0.7.0", + "base64-simd 0.8.0", "bitvec", "data-encoding", "debugid", "if_chain", - "rustc-hash 1.1.0", - "rustc_version 0.2.3", + "rustc-hash 2.1.1", "serde", "serde_json", "unicode-id-start", @@ -12257,12 +12265,12 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" [[package]] name = "sql-ddl" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" [[package]] name = "sql-query-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "anyhow", "async-trait", @@ -12293,7 +12301,7 @@ dependencies = [ [[package]] name = "sql-schema-connector" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "chrono", "connection-string", @@ -12328,7 +12336,7 @@ dependencies = [ [[package]] name = "sql-schema-describer" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "async-trait", "bigdecimal", @@ -12476,7 +12484,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12545,7 +12553,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12558,7 +12566,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12678,7 +12686,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "siphasher", - "sourcemap 9.1.0", + "sourcemap 9.2.2", "swc_allocator", "swc_atoms", "swc_eq_ignore_macros", @@ -12711,7 +12719,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12747,7 +12755,7 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "serde", - "sourcemap 9.1.0", + "sourcemap 9.2.2", "swc_allocator", "swc_atoms", "swc_common", @@ -12765,7 +12773,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12853,7 +12861,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 1.0.0", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -12988,7 +12996,7 @@ checksum = "e96e15288bf385ab85eb83cff7f9e2d834348da58d0a31b33bdb572e66ee413e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13025,7 +13033,7 @@ checksum = "f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13036,7 +13044,7 @@ checksum = "a509f56fca05b39ba6c15f3e58636c3924c78347d63853632ed2ffcb6f5a0ac7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13068,7 +13076,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common 0.3.13", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13084,9 +13092,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -13102,7 +13110,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13140,7 +13148,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13383,12 +13391,23 @@ dependencies = [ "unicode-width 0.1.13", ] +[[package]] +name = "tg_optimize" +version = "0.5.1-rc.4" +dependencies = [ + "color-eyre", + "serde", + "serde_json", + "tg_schema", +] + [[package]] name = "tg_schema" version = "0.5.1-rc.4" dependencies = [ "anyhow", "indexmap 2.9.0", + "ordered-float 5.0.0", "serde", "serde_json", "serde_with", @@ -13405,11 +13424,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -13420,18 +13439,18 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13538,9 +13557,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -13575,7 +13594,7 @@ dependencies = [ "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2 0.5.10", "tokio-macros", "windows-sys 0.48.0", ] @@ -13608,7 +13627,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -13651,7 +13670,7 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", "tokio-util 0.7.11", ] @@ -13843,7 +13862,7 @@ dependencies = [ "axum 0.7.5", "base64 0.22.1", "bytes", - "h2 0.4.7", + "h2 0.4.10", "http 1.1.0", "http-body 1.0.1", "http-body-util", @@ -13853,7 +13872,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost 0.13.2", - "socket2 0.5.7", + "socket2 0.5.10", "tokio", "tokio-stream", "tower 0.4.13", @@ -13912,9 +13931,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.1" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "async-compression", "bitflags 2.9.1", @@ -13962,7 +13981,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -14197,6 +14216,7 @@ dependencies = [ "enum_dispatch", "indexmap 2.9.0", "insta", + "ordered-float 5.0.0", "paste", "serde", "serde_json", @@ -14220,7 +14240,7 @@ dependencies = [ "insta", "metagen", "once_cell", - "ordered-float 4.3.0", + "ordered-float 5.0.0", "paste", "ptree", "regex", @@ -14228,6 +14248,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", + "tg_optimize", "tg_schema", "tracing", "unindent", @@ -14266,7 +14287,7 @@ checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -14453,9 +14474,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[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" @@ -14580,7 +14601,7 @@ dependencies = [ [[package]] name = "user-facing-error-macros" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "proc-macro2", "quote", @@ -14590,7 +14611,7 @@ dependencies = [ [[package]] name = "user-facing-errors" version = "0.1.0" -source = "git+https://github.com/metatypedev/prisma-engines?branch=fix%2Fversion-compat#a320025a443294499435bde84045b8d20e37f649" +source = "git+https://github.com/metatypedev/prisma-engines?branch=fix/version-compat#a320025a443294499435bde84045b8d20e37f649" dependencies = [ "backtrace", "indoc", @@ -14608,12 +14629,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8-width" version = "0.1.7" @@ -14814,11 +14829,11 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ - "wit-bindgen-rt 0.33.0", + "wit-bindgen-rt 0.39.0", ] [[package]] @@ -14849,7 +14864,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -14883,7 +14898,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -14977,7 +14992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eeee3bdea6257cc36d756fa745a70f9d393571e47d69e0ed97581676a5369ca" dependencies = [ "deno_error", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -15141,7 +15156,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser 0.217.0", @@ -15272,7 +15287,7 @@ checksum = "a4b0c1f76891f778db9602ee3fbb4eb7e9a3f511847d1fb1b69eddbcea28303c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -15394,7 +15409,7 @@ checksum = "1814af4572856a29a2d29a56520e86fda994423043b70139ce98e5a32e0d91be" dependencies = [ "bytes", "http 1.1.0", - "thiserror 2.0.11", + "thiserror 2.0.12", "url", ] @@ -15410,9 +15425,18 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "0.26.6" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6dfa3ac045bc517de14c7b1384298de1dbd229d38e08e169d9ae8c170937c" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.1", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" dependencies = [ "rustls-pki-types", ] @@ -15454,7 +15478,7 @@ dependencies = [ "rustc-hash 1.1.0", "serde", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "wgpu-hal", "wgpu-types", ] @@ -15489,14 +15513,14 @@ dependencies = [ "ndk-sys", "objc", "once_cell", - "ordered-float 4.3.0", + "ordered-float 4.6.0", "parking_lot 0.12.3", "profiling", "range-alloc", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "wasm-bindgen", "web-sys", "wgpu-types", @@ -15584,7 +15608,7 @@ dependencies = [ "proc-macro2", "quote", "shellexpand 2.1.2", - "syn 2.0.90", + "syn 2.0.87", "witx", ] @@ -15596,7 +15620,7 @@ checksum = "6e1c266e16c4b24a29e055ec651e27fce1389c886bb00fbe78b8924a253a439b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wiggle-generate", ] @@ -15691,6 +15715,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -15721,10 +15767,34 @@ dependencies = [ "windows-implement 0.58.0", "windows-interface 0.58.0", "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface 0.59.1", + "windows-link", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.56.0" @@ -15733,7 +15803,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -15744,7 +15814,18 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -15755,7 +15836,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -15766,7 +15847,34 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link", ] [[package]] @@ -15776,7 +15884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -15798,6 +15906,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-strings" version = "0.1.0" @@ -15808,6 +15925,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -15866,6 +15992,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -16059,18 +16194,18 @@ checksum = "fcb8738270f32a2d6739973cbbb7c1b6dd8959ce515578a6e19165853272ee64" [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "744845cde309b8fa32408d6fb67456449278c66ea4dcd96de29797b302721f02" dependencies = [ "bitflags 2.9.1", ] [[package]] name = "wit-bindgen-rt" -version = "0.34.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744845cde309b8fa32408d6fb67456449278c66ea4dcd96de29797b302721f02" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags 2.9.1", ] @@ -16099,7 +16234,7 @@ dependencies = [ "heck 0.5.0", "indexmap 2.9.0", "prettyplease 0.2.20", - "syn 2.0.90", + "syn 2.0.87", "wasm-metadata 0.219.0", "wit-bindgen-core 0.34.0", "wit-component 0.219.0", @@ -16114,7 +16249,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wit-bindgen-core 0.22.0", "wit-bindgen-rust 0.22.0", ] @@ -16129,7 +16264,7 @@ dependencies = [ "prettyplease 0.2.20", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "wit-bindgen-core 0.34.0", "wit-bindgen-rust 0.34.0", ] @@ -16238,17 +16373,11 @@ dependencies = [ "wast 35.0.2", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wtf8" @@ -16358,7 +16487,19 @@ checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive", + "yoke-derive 0.7.4", + "zerofrom", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive 0.8.0", "zerofrom", ] @@ -16370,27 +16511,30 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "synstructure 0.13.1", ] [[package]] -name = "zerocopy" -version = "0.7.35" +name = "yoke-derive" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] name = "zerocopy" -version = "0.8.17" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive 0.8.17", + "byteorder", + "zerocopy-derive", ] [[package]] @@ -16401,18 +16545,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -16432,7 +16565,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", "synstructure 0.13.1", ] @@ -16453,14 +16586,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] name = "zeromq" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a4528179201f6eecf211961a7d3276faa61554c82651ecc66387f68fc3004bd" +checksum = "fb0560d00172817b7f7c2265060783519c475702ae290b154115ca75e976d4d0" dependencies = [ "async-trait", "asynchronous-codec 0.7.0", @@ -16483,26 +16616,37 @@ dependencies = [ "uuid", ] +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke 0.8.0", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ - "yoke", + "yoke 0.8.0", "zerofrom", "zerovec-derive", ] [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.87", ] [[package]] @@ -16604,9 +16748,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-jpeg" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4a518c0ea2576f4da876349d7f67a7be489297cd77c2cf9e04c2e05fcd3974" +checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index 936e244f1a..faeb8a4c54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ members = [ "src/typegate_api", "src/typegraph/core", "src/typegraph/graph", + "src/typegraph/optimize", "src/typegraph/schema", "src/utils/archive", "src/utils/grpc", @@ -37,6 +38,7 @@ edition = "2021" # internal crates mt_deno = { path = "src/mt_deno/" } tg_schema = { path = "src/typegraph/schema" } +tg_optimize = { path = "src/typegraph/optimize" } typegraph_core = { path = "src/typegraph/core" } substantial = { path = "src/substantial/" } metagen = { path = "src/metagen/" } @@ -130,7 +132,7 @@ dashmap = "6.1.0" connection-string = "0.2.0" chrono = { version = "0.4.38", features = ["serde"] } tera = { version = "1.20", default-features = false } -ordered-float = "4.3.0" +ordered-float = { version = "5.0.0", features = ["std", "serde"] } graphql-parser = "0.4.0" uuid = "1.10.0" rustpython-parser = "0.4.0" diff --git a/deno.lock b/deno.lock index be03f46dc3..eb90a51fdd 100644 --- a/deno.lock +++ b/deno.lock @@ -3,69 +3,83 @@ "specifiers": { "jsr:@david/dax@0.41.0": "0.41.0", "jsr:@david/which@~0.4.1": "0.4.1", + "jsr:@oak/commons@1": "1.0.1", + "jsr:@oak/oak@*": "17.1.4", "jsr:@std/archive@0.225": "0.225.4", + "jsr:@std/assert@*": "1.0.10", "jsr:@std/assert@0.221": "0.221.0", - "jsr:@std/assert@^1.0.13": "1.0.13", - "jsr:@std/assert@^1.0.3": "1.0.13", - "jsr:@std/assert@^1.0.6": "1.0.13", - "jsr:@std/async@^1.0.3": "1.0.13", + "jsr:@std/assert@1": "1.0.10", + "jsr:@std/assert@^1.0.10": "1.0.10", + "jsr:@std/assert@^1.0.3": "1.0.10", + "jsr:@std/assert@^1.0.6": "1.0.10", + "jsr:@std/async@^1.0.3": "1.0.9", "jsr:@std/bytes@0.221": "0.221.0", - "jsr:@std/bytes@^1.0.2": "1.0.6", - "jsr:@std/bytes@^1.0.5": "1.0.6", - "jsr:@std/cli@^1.0.3": "1.0.17", - "jsr:@std/cli@^1.0.4": "1.0.17", - "jsr:@std/collections@^1.0.5": "1.1.0", - "jsr:@std/crypto@^1.0.2": "1.0.5", - "jsr:@std/crypto@^1.0.4": "1.0.5", - "jsr:@std/encoding@^1.0.2": "1.0.10", + "jsr:@std/bytes@1": "1.0.5", + "jsr:@std/bytes@^1.0.2": "1.0.5", + "jsr:@std/bytes@^1.0.3": "1.0.4", + "jsr:@std/bytes@^1.0.5": "1.0.5", + "jsr:@std/cli@^1.0.3": "1.0.10", + "jsr:@std/cli@^1.0.4": "1.0.10", + "jsr:@std/collections@^1.0.5": "1.0.9", + "jsr:@std/crypto@1": "1.0.3", + "jsr:@std/crypto@^1.0.2": "1.0.3", + "jsr:@std/crypto@^1.0.3": "1.0.3", + "jsr:@std/encoding@1": "1.0.6", + "jsr:@std/encoding@^1.0.2": "1.0.6", + "jsr:@std/encoding@^1.0.5": "1.0.6", "jsr:@std/fmt@0.221": "0.221.0", - "jsr:@std/fmt@1": "1.0.8", - "jsr:@std/fmt@^1.0.5": "1.0.8", + "jsr:@std/fmt@1": "1.0.4", + "jsr:@std/fmt@^1.0.4": "1.0.4", "jsr:@std/fs@0.221.0": "0.221.0", - "jsr:@std/fs@^1.0.1": "1.0.17", - "jsr:@std/fs@^1.0.11": "1.0.17", - "jsr:@std/fs@^1.0.17": "1.0.17", - "jsr:@std/http@^1.0.3": "1.0.16", - "jsr:@std/internal@^1.0.6": "1.0.7", - "jsr:@std/internal@^1.0.7": "1.0.7", + "jsr:@std/fs@^1.0.1": "1.0.16", + "jsr:@std/fs@^1.0.16": "1.0.16", + "jsr:@std/fs@^1.0.9": "1.0.16", + "jsr:@std/http@1": "1.0.12", + "jsr:@std/http@^1.0.3": "1.0.12", + "jsr:@std/internal@^1.0.5": "1.0.5", "jsr:@std/io@0.221": "0.221.0", "jsr:@std/io@0.221.0": "0.221.0", + "jsr:@std/io@0.225": "0.225.0", "jsr:@std/io@~0.224.5": "0.224.9", "jsr:@std/io@~0.224.9": "0.224.9", - "jsr:@std/io@~0.225.2": "0.225.2", - "jsr:@std/log@~0.224.5": "0.224.14", + "jsr:@std/log@~0.224.5": "0.224.13", + "jsr:@std/media-types@1": "1.1.0", + "jsr:@std/path@*": "1.0.8", "jsr:@std/path@0.221": "0.221.0", "jsr:@std/path@0.221.0": "0.221.0", - "jsr:@std/path@^1.0.2": "1.0.9", - "jsr:@std/path@^1.0.9": "1.0.9", - "jsr:@std/semver@^1.0.1": "1.0.5", + "jsr:@std/path@1": "1.0.8", + "jsr:@std/path@^1.0.2": "1.0.8", + "jsr:@std/path@^1.0.8": "1.0.8", + "jsr:@std/semver@^1.0.1": "1.0.3", "jsr:@std/streams@0.221.0": "0.221.0", "jsr:@std/streams@1": "1.0.9", "jsr:@std/streams@^1.0.2": "1.0.9", - "jsr:@std/testing@^1.0.1": "1.0.12", - "jsr:@std/text@^1.0.7": "1.0.14", - "jsr:@std/uuid@^1.0.1": "1.0.7", - "jsr:@std/yaml@^1.0.4": "1.0.6", + "jsr:@std/testing@^1.0.1": "1.0.9", + "jsr:@std/text@^1.0.7": "1.0.10", + "jsr:@std/uuid@^1.0.1": "1.0.4", + "jsr:@std/yaml@^1.0.4": "1.0.5", "npm:@aws-sdk/client-s3@3.821.0": "3.821.0", "npm:@aws-sdk/lib-storage@3.821.0": "3.821.0_@aws-sdk+client-s3@3.821.0", "npm:@aws-sdk/s3-request-presigner@3.821.0": "3.821.0", "npm:@noble/hashes@1.4.0": "1.4.0", "npm:@sentry/node@7.70.0": "7.70.0", "npm:@sinonjs/fake-timers@13.0.5": "13.0.5", - "npm:@types/node@*": "22.12.0", + "npm:@types/node@*": "18.16.19", "npm:big.js@6.2.2": "6.2.2", "npm:chance@1.1.11": "1.1.11", "npm:ffi-rs@1.2.10": "1.2.10", "npm:graphql@16.8.1": "16.8.1", "npm:json-schema-faker@0.5.3": "0.5.3", "npm:lodash@4.17.21": "4.17.21", + "npm:marked@*": "15.0.6", "npm:mathjs@11.11.1": "11.11.1", "npm:multiformats@13.1.0": "13.1.0", + "npm:path-to-regexp@^6.3.0": "6.3.0", "npm:pg@8.12.0": "8.12.0", "npm:tree-sitter-typescript@0.23": "0.23.2_tree-sitter@0.21.1", "npm:tree-sitter@~0.21.1": "0.21.1", "npm:validator@13.12.0": "13.12.0", - "npm:yaml@*": "2.8.0", + "npm:yaml@*": "2.7.0", "npm:zod-validation-error@3.3.0": "3.3.0_zod@3.23.8", "npm:zod@3.23.8": "3.23.8" }, @@ -84,6 +98,29 @@ "@david/which@0.4.1": { "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" }, + "@oak/commons@1.0.1": { + "integrity": "889ff210f0b4292591721be07244ecb1b5c118742f5273c70cf30d7cd4184d0c", + "dependencies": [ + "jsr:@std/assert@1", + "jsr:@std/bytes@1", + "jsr:@std/crypto@1", + "jsr:@std/encoding@1", + "jsr:@std/http@1", + "jsr:@std/media-types" + ] + }, + "@oak/oak@17.1.4": { + "integrity": "60530b582bf276ff741e39cc664026781aa08dd5f2bc5134d756cc427bf2c13e", + "dependencies": [ + "jsr:@oak/commons", + "jsr:@std/assert@1", + "jsr:@std/bytes@1", + "jsr:@std/http@1", + "jsr:@std/media-types", + "jsr:@std/path@1", + "npm:path-to-regexp" + ] + }, "@std/archive@0.225.4": { "integrity": "59fe5d1834cbb6a2a7913b102d41c11d51475328d5b843bea75b94a40b44a115", "dependencies": [ @@ -93,38 +130,41 @@ "@std/assert@0.221.0": { "integrity": "a5f1aa6e7909dbea271754fd4ab3f4e687aeff4873b4cef9a320af813adb489a" }, - "@std/assert@1.0.13": { - "integrity": "ae0d31e41919b12c656c742b22522c32fb26ed0cba32975cb0de2a273cb68b29", + "@std/assert@1.0.10": { + "integrity": "59b5cbac5bd55459a19045d95cc7c2ff787b4f8527c0dd195078ff6f9481fbb3", "dependencies": [ - "jsr:@std/internal@^1.0.6" + "jsr:@std/internal" ] }, - "@std/async@1.0.13": { - "integrity": "1d76ca5d324aef249908f7f7fe0d39aaf53198e5420604a59ab5c035adc97c96" + "@std/async@1.0.9": { + "integrity": "c6472fd0623b3f3daae023cdf7ca5535e1b721dfbf376562c0c12b3fb4867f91" }, "@std/bytes@0.221.0": { "integrity": "64a047011cf833890a4a2ab7293ac55a1b4f5a050624ebc6a0159c357de91966" }, - "@std/bytes@1.0.6": { - "integrity": "f6ac6adbd8ccd99314045f5703e23af0a68d7f7e58364b47d2c7f408aeb5820a" + "@std/bytes@1.0.4": { + "integrity": "11a0debe522707c95c7b7ef89b478c13fb1583a7cfb9a85674cd2cc2e3a28abc" }, - "@std/cli@1.0.17": { - "integrity": "e15b9abe629e17be90cc6216327f03a29eae613365f1353837fa749aad29ce7b" + "@std/bytes@1.0.5": { + "integrity": "4465dd739d7963d964c809202ebea6d5c6b8e3829ef25c6a224290fbb8a1021e" }, - "@std/collections@1.1.0": { - "integrity": "2ee8761c84c3d203f7a4ecd376f9ca88a0c559817a4a54c9150f28c0b948027c" + "@std/cli@1.0.10": { + "integrity": "d047f6f4954a5c2827fe0963765ddd3d8b6cc7b7518682842645b95f571539dc" }, - "@std/crypto@1.0.5": { - "integrity": "0dcfbb319fe0bba1bd3af904ceb4f948cde1b92979ec1614528380ed308a3b40" + "@std/collections@1.0.9": { + "integrity": "4f58104ead08a04a2199374247f07befe50ba01d9cca8cbb23ab9a0419921e71" }, - "@std/encoding@1.0.10": { - "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" + "@std/crypto@1.0.3": { + "integrity": "a2a32f51ddef632d299e3879cd027c630dcd4d1d9a5285d6e6788072f4e51e7f" + }, + "@std/encoding@1.0.6": { + "integrity": "ca87122c196e8831737d9547acf001766618e78cd8c33920776c7f5885546069" }, "@std/fmt@0.221.0": { "integrity": "379fed69bdd9731110f26b9085aeb740606b20428ce6af31ef6bd45ef8efa62a" }, - "@std/fmt@1.0.8": { - "integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7" + "@std/fmt@1.0.4": { + "integrity": "e14fe5bedee26f80877e6705a97a79c7eed599e81bb1669127ef9e8bc1e29a74" }, "@std/fs@0.221.0": { "integrity": "028044450299de8ed5a716ade4e6d524399f035513b85913794f4e81f07da286", @@ -133,17 +173,26 @@ "jsr:@std/path@0.221" ] }, - "@std/fs@1.0.17": { - "integrity": "1c00c632677c1158988ef7a004cb16137f870aafdb8163b9dce86ec652f3952b", + "@std/fs@1.0.9": { + "integrity": "3eef7e3ed3d317b29432c7dcb3b20122820dbc574263f721cb0248ad91bad890", "dependencies": [ - "jsr:@std/path@^1.0.9" + "jsr:@std/path@^1.0.8" ] }, - "@std/http@1.0.16": { - "integrity": "80c8d08c4bfcf615b89978dcefb84f7e880087cf3b6b901703936f3592a06933" + "@std/fs@1.0.16": { + "integrity": "81878f62b6eeda0bf546197fc3daa5327c132fee1273f6113f940784a468b036", + "dependencies": [ + "jsr:@std/path@^1.0.8" + ] }, - "@std/internal@1.0.7": { - "integrity": "39eeb5265190a7bc5d5591c9ff019490bd1f2c3907c044a11b0d545796158a0f" + "@std/http@1.0.12": { + "integrity": "85246d8bfe9c8e2538518725b158bdc31f616e0869255f4a8d9e3de919cab2aa", + "dependencies": [ + "jsr:@std/encoding@^1.0.5" + ] + }, + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" }, "@std/io@0.221.0": { "integrity": "faf7f8700d46ab527fa05cc6167f4b97701a06c413024431c6b4d207caa010da", @@ -158,28 +207,31 @@ "jsr:@std/bytes@^1.0.2" ] }, - "@std/io@0.225.2": { - "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7" + "@std/io@0.225.0": { + "integrity": "c1db7c5e5a231629b32d64b9a53139445b2ca640d828c26bf23e1c55f8c079b3" }, - "@std/log@0.224.14": { - "integrity": "257f7adceee3b53bb2bc86c7242e7d1bc59729e57d4981c4a7e5b876c808f05e", + "@std/log@0.224.13": { + "integrity": "f04d82f676c9eb4306194ca166d296d9f1456fe4b7edf2a404a0d55c94d31df7", "dependencies": [ - "jsr:@std/fmt@^1.0.5", - "jsr:@std/fs@^1.0.11", - "jsr:@std/io@~0.225.2" + "jsr:@std/fmt@^1.0.4", + "jsr:@std/fs@^1.0.9", + "jsr:@std/io@0.225" ] }, + "@std/media-types@1.1.0": { + "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" + }, "@std/path@0.221.0": { "integrity": "0a36f6b17314ef653a3a1649740cc8db51b25a133ecfe838f20b79a56ebe0095", "dependencies": [ "jsr:@std/assert@0.221" ] }, - "@std/path@1.0.9": { - "integrity": "260a49f11edd3db93dd38350bf9cd1b4d1366afa98e81b86167b4e3dd750129e" + "@std/path@1.0.8": { + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" }, - "@std/semver@1.0.5": { - "integrity": "529f79e83705714c105ad0ba55bec0f9da0f24d2f726b6cc1c15e505cc2c0624" + "@std/semver@1.0.3": { + "integrity": "7c139c6076a080eeaa4252c78b95ca5302818d7eafab0470d34cafd9930c13c8" }, "@std/streams@0.221.0": { "integrity": "47f2f74634b47449277c0ee79fe878da4424b66bd8975c032e3afdca88986e61", @@ -193,27 +245,27 @@ "jsr:@std/bytes@^1.0.5" ] }, - "@std/testing@1.0.12": { - "integrity": "fec973a45ccc62c540fb89296199051fee142409138fd6e3eae409366bcd4720", + "@std/testing@1.0.9": { + "integrity": "9bdd4ac07cb13e7594ac30e90f6ceef7254ac83a9aeaa089be0008f33aab5cd4", "dependencies": [ - "jsr:@std/assert@^1.0.13", - "jsr:@std/fs@^1.0.17", - "jsr:@std/internal@^1.0.7", - "jsr:@std/path@^1.0.9" + "jsr:@std/assert@^1.0.10", + "jsr:@std/fs@^1.0.9", + "jsr:@std/internal", + "jsr:@std/path@^1.0.8" ] }, - "@std/text@1.0.14": { - "integrity": "1a810108482414d19112b8b506ad0b7cba826000cd13f74274ffda6dd83d273f" + "@std/text@1.0.10": { + "integrity": "9dcab377450253c0efa9a9a0c731040bfd4e1c03f8303b5934381467b7954338" }, - "@std/uuid@1.0.7": { - "integrity": "6885db5cd60794049d1661b5cf06b1e1ed65b2affd054ec8b06da7d2efd421ca", + "@std/uuid@1.0.4": { + "integrity": "f4233149cc8b4753cc3763fd83a7c4101699491f55c7be78dc7b30281946d7a0", "dependencies": [ - "jsr:@std/bytes@^1.0.5", - "jsr:@std/crypto@^1.0.4" + "jsr:@std/bytes@^1.0.2", + "jsr:@std/crypto@^1.0.3" ] }, - "@std/yaml@1.0.6": { - "integrity": "c9a5a914e1d51c46756cb10e356710035cfa905e713c90d3b711413fd3aead27" + "@std/yaml@1.0.5": { + "integrity": "71ba3d334305ee2149391931508b2c293a8490f94a337eef3a09cade1a2a2742" } }, "npm": { @@ -771,8 +823,11 @@ "tslib" ] }, - "@babel/runtime@7.27.4": { - "integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==" + "@babel/runtime@7.26.0": { + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": [ + "regenerator-runtime" + ] }, "@noble/hashes@1.4.0": { "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" @@ -859,8 +914,8 @@ "tslib" ] }, - "@smithy/core@3.5.1": { - "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", + "@smithy/core@3.5.3": { + "integrity": "sha512-xa5byV9fEguZNofCclv6v9ra0FYh5FATQW/da7FQUVTic94DfrN/NvmKZjrMyzbpqfot9ZjBaO8U1UeTbmSLuA==", "dependencies": [ "@smithy/middleware-serde", "@smithy/protocol-http", @@ -994,8 +1049,8 @@ "tslib" ] }, - "@smithy/middleware-endpoint@4.1.9": { - "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", + "@smithy/middleware-endpoint@4.1.11": { + "integrity": "sha512-zDogwtRLzKl58lVS8wPcARevFZNBOOqnmzWWxVe9XiaXU2CADFjvJ9XfNibgkOWs08sxLuSr81NrpY4mgp9OwQ==", "dependencies": [ "@smithy/core", "@smithy/middleware-serde", @@ -1007,8 +1062,8 @@ "tslib" ] }, - "@smithy/middleware-retry@4.1.10": { - "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", + "@smithy/middleware-retry@4.1.12": { + "integrity": "sha512-wvIH70c4e91NtRxdaLZF+mbLZ/HcC6yg7ySKUiufL6ESp6zJUSnJucZ309AvG9nqCFHSRB5I6T3Ez1Q9wCh0Ww==", "dependencies": [ "@smithy/node-config-provider", "@smithy/protocol-http", @@ -1110,8 +1165,8 @@ "tslib" ] }, - "@smithy/smithy-client@4.4.1": { - "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", + "@smithy/smithy-client@4.4.3": { + "integrity": "sha512-xxzNYgA0HD6ETCe5QJubsxP0hQH3QK3kbpJz3QrosBCuIWyEXLR/CO5hFb2OeawEKUxMNhz3a1nuJNN2np2RMA==", "dependencies": [ "@smithy/core", "@smithy/middleware-endpoint", @@ -1176,8 +1231,8 @@ "tslib" ] }, - "@smithy/util-defaults-mode-browser@4.0.17": { - "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", + "@smithy/util-defaults-mode-browser@4.0.19": { + "integrity": "sha512-mvLMh87xSmQrV5XqnUYEPoiFFeEGYeAKIDDKdhE2ahqitm8OHM3aSvhqL6rrK6wm1brIk90JhxDf5lf2hbrLbQ==", "dependencies": [ "@smithy/property-provider", "@smithy/smithy-client", @@ -1186,8 +1241,8 @@ "tslib" ] }, - "@smithy/util-defaults-mode-node@4.0.17": { - "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", + "@smithy/util-defaults-mode-node@4.0.19": { + "integrity": "sha512-8tYnx+LUfj6m+zkUUIrIQJxPM1xVxfRBvoGHua7R/i6qAxOMjqR6CpEpDwKoIs1o0+hOjGvkKE23CafKL0vJ9w==", "dependencies": [ "@smithy/config-resolver", "@smithy/credential-provider-imds", @@ -1268,11 +1323,8 @@ "tslib" ] }, - "@types/node@22.12.0": { - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", - "dependencies": [ - "undici-types" - ] + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==" }, "@yuuang/ffi-rs-android-arm64@1.2.10": { "integrity": "sha512-jkYl/qJnhlY3sjhkDnerLfCqVpqrmKUruOy2WbYS9Lu8sRIDBEmuWx5JYSMtB7o9dLE4JY+8YhSPulhBTYbANw==" @@ -1347,14 +1399,14 @@ "cookie@0.5.0": { "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, - "debug@4.4.1": { - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "debug@4.4.0": { + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": [ "ms" ] }, - "decimal.js@10.5.0": { - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==" + "decimal.js@10.4.3": { + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "escape-latex@1.2.0": { "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" @@ -1443,6 +1495,9 @@ "lru_map@0.3.3": { "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" }, + "marked@15.0.6": { + "integrity": "sha512-Y07CUOE+HQXbVDCGl3LXggqJDbXDP2pArc2C1N1RRMN0ONiShoSsIInMd5Gsxupe7fKLpgimTV+HOJ9r7bA+pg==" + }, "mathjs@11.11.1": { "integrity": "sha512-uWrwMrhU31TCqHKmm1yFz0C352njGUVr/I1UnpMOxI/VBTTbCktx/mREUXx5Vyg11xrFdg/F3wnMM7Ql/csVsQ==", "dependencies": [ @@ -1463,8 +1518,8 @@ "multiformats@13.1.0": { "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==" }, - "node-addon-api@8.3.1": { - "integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==" + "node-addon-api@8.3.0": { + "integrity": "sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==" }, "node-gyp-build@4.8.4": { "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==" @@ -1475,23 +1530,26 @@ "format-util" ] }, - "pg-cloudflare@1.2.5": { - "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==" + "path-to-regexp@6.3.0": { + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" + }, + "pg-cloudflare@1.1.1": { + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==" }, - "pg-connection-string@2.9.0": { - "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==" + "pg-connection-string@2.7.0": { + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==" }, "pg-int8@1.0.1": { "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, - "pg-pool@3.10.0_pg@8.12.0": { - "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==", + "pg-pool@3.8.0_pg@8.12.0": { + "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", "dependencies": [ "pg" ] }, - "pg-protocol@1.10.0": { - "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==" + "pg-protocol@1.8.0": { + "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==" }, "pg-types@2.2.0": { "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", @@ -1543,6 +1601,9 @@ "util-deprecate" ] }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "safe-buffer@5.2.1": { "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, @@ -1607,9 +1668,6 @@ "typed-function@4.2.1": { "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==" }, - "undici-types@6.20.0": { - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" - }, "util-deprecate@1.0.2": { "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, @@ -1622,8 +1680,8 @@ "xtend@4.0.2": { "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yaml@2.8.0": { - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==" + "yaml@2.7.0": { + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==" }, "zod-validation-error@3.3.0_zod@3.23.8": { "integrity": "sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==", @@ -1636,14 +1694,21 @@ } }, "redirects": { + "https://cdn.pika.dev/big.js/^5.2.2": "https://cdn.skypack.dev/big.js@^5.2.2", + "https://deno.land/x/marked/mod.ts": "https://deno.land/x/marked@1.0.2/mod.ts", "https://esm.sh/@types/core-util-is@~1.0.1/index.d.ts": "https://esm.sh/@types/core-util-is@1.0.1/index.d.ts", "https://esm.sh/@types/immediate@~3.2.2/index.d.ts": "https://esm.sh/@types/immediate@3.2.2/index.d.ts", "https://esm.sh/@types/pako@~1.0.7/index.d.ts": "https://esm.sh/@types/pako@1.0.7/index.d.ts", "https://esm.sh/@types/readable-stream@~2.3.15/index.d.ts": "https://esm.sh/@types/readable-stream@2.3.15/index.d.ts", "https://esm.sh/@types/util-deprecate@~1.0.4/index.d.ts": "https://esm.sh/@types/util-deprecate@1.0.4/index.d.ts", + "https://esm.sh/ajv@^8.0.0/dist/compile/codegen?target=denonext": "https://esm.sh/ajv@8.17.1/dist/compile/codegen?target=denonext", + "https://esm.sh/ajv@^8.0.0?target=denonext": "https://esm.sh/ajv@8.17.1?target=denonext", "https://esm.sh/core-util-is@~1.0.0?target=denonext": "https://esm.sh/core-util-is@1.0.3?target=denonext", + "https://esm.sh/fast-deep-equal@^3.1.3?target=denonext": "https://esm.sh/fast-deep-equal@3.1.3?target=denonext", + "https://esm.sh/fast-uri@^3.0.1?target=denonext": "https://esm.sh/fast-uri@3.0.6?target=denonext", "https://esm.sh/immediate@~3.0.5?target=denonext": "https://esm.sh/immediate@3.0.6?target=denonext", "https://esm.sh/isarray@~1.0.0?target=denonext": "https://esm.sh/isarray@1.0.0?target=denonext", + "https://esm.sh/json-schema-traverse@^1.0.0?target=denonext": "https://esm.sh/json-schema-traverse@1.0.0?target=denonext", "https://esm.sh/lie@~3.3.0?target=denonext": "https://esm.sh/lie@3.3.0?target=denonext", "https://esm.sh/pako@~1.0.2?target=denonext": "https://esm.sh/pako@1.0.11?target=denonext", "https://esm.sh/process-nextick-args@~2.0.0?target=denonext": "https://esm.sh/process-nextick-args@2.0.1?target=denonext", @@ -1652,9 +1717,12 @@ "https://esm.sh/safe-buffer@~5.1.1?target=denonext": "https://esm.sh/safe-buffer@5.1.2?target=denonext", "https://esm.sh/set-immediate-shim@~1.0.1?target=denonext": "https://esm.sh/set-immediate-shim@1.0.1?target=denonext", "https://esm.sh/string_decoder@~1.1.1?target=denonext": "https://esm.sh/string_decoder@1.1.1?target=denonext", - "https://esm.sh/util-deprecate@~1.0.1?target=denonext": "https://esm.sh/util-deprecate@1.0.2?target=denonext" + "https://esm.sh/util-deprecate@~1.0.1?target=denonext": "https://esm.sh/util-deprecate@1.0.2?target=denonext", + "https://github.com/levibostian/deno-udd/raw/ignore-prerelease/mod.ts": "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/mod.ts" }, "remote": { + "https://cdn.skypack.dev/-/big.js@v5.2.2-sUR8fKsGHRxsJyqyvOSP/dist=es2019,mode=imports/optimized/bigjs.js": "b6d8e6af0c1f7bdc7e8cd0890819ecee2dcbb0776ec4089eae281de8ebd7b2bd", + "https://cdn.skypack.dev/big.js@^5.2.2": "f74e8935c06af6664d64a5534d1d6db1ab66649df8164696117ab5a1cd10714e", "https://deno.land/std@0.116.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", "https://deno.land/std@0.116.0/_util/os.ts": "dfb186cc4e968c770ab6cc3288bd65f4871be03b93beecae57d657232ecffcac", "https://deno.land/std@0.116.0/fs/walk.ts": "31464d75099aa3fc7764212576a8772dfabb2692783e6eabb910f874a26eac54", @@ -2185,6 +2253,33 @@ "https://deno.land/x/jszip@0.11.0/mod.ts": "5661ddc18e9ac9c07e3c5d2483bc912a7022b6af0d784bb7b05035973e640ba1", "https://deno.land/x/jszip@0.11.0/types.ts": "1528d1279fbb64dd118c371331c641a3a5eff2b594336fb38a7659cf4c53b2d1", "https://deno.land/x/levenshtein@v1.0.1/mod.ts": "6b632d4a9bb11ba6d5d02a770c7fc9b0a4125f30bd9c668632ff85e7f05ff4f6", + "https://deno.land/x/marked@1.0.2/mod.ts": "57e4fd38be13ae9efd001704eea481570fce83fe502f4fb64aba140fd7fd75cb", + "https://deno.land/x/math@v1.1.0/abs.ts": "d64fe603ae4bb57037f06a1a5004285b99ed016dab6bfcded07c8155efce24b7", + "https://deno.land/x/math@v1.1.0/big/mod.ts": "ba561f56a24ecc9f03542693ed0c81166ed0c921f8017d220ec70c963e935509", + "https://deno.land/x/math@v1.1.0/div.ts": "5dda45b8bb5c1f778f2cfb28cbee648c5c7aa818f915acce336651fd13994f07", + "https://deno.land/x/math@v1.1.0/eq.ts": "145727b71b5bdd993c5d44fd9c9089419dac508527ef3812c590aabcd943236c", + "https://deno.land/x/math@v1.1.0/gt.ts": "6e493f3cc2ecd9be244bb67dde28b1d5ec4d4218747fc9efd6f551a52093aaf7", + "https://deno.land/x/math@v1.1.0/gte.ts": "4eddc58c2b79315974c328d92b512e133796d785e1f570f9e8d232e32d620e66", + "https://deno.land/x/math@v1.1.0/lt.ts": "999e4d118c9a5e8e653bd34a32ef532634a68e0dd4ba6a200ad35cc7fd9ceb31", + "https://deno.land/x/math@v1.1.0/lte.ts": "637c12db7307d33024054d9671f4f932a42dbaad4c60559c47be17c94f39eb1e", + "https://deno.land/x/math@v1.1.0/matrix/eye.ts": "b7b060fc60a6f4ae4e3caa82e5a094cd622bd8519f67ad81e305b197a9d19d1c", + "https://deno.land/x/math@v1.1.0/matrix/identity.ts": "00246e8133f2fac4a1481af7390907cc4cf3e8415a00d29a1e0beb47bdd81074", + "https://deno.land/x/math@v1.1.0/matrix/matrix.ts": "2b80cd4fb8aa0ab9eca31cf6eb1037a2885f37ae7f84e1b7f050fa831089e937", + "https://deno.land/x/math@v1.1.0/matrix/mod.ts": "123212ccd86007864c3400ca3deaa998c7e9453b77538094d06edc1add50f199", + "https://deno.land/x/math@v1.1.0/max.ts": "bf646a3553e8800de240fad977eabbef365c388d33f79ef6fb5f015d8d7ff104", + "https://deno.land/x/math@v1.1.0/min.ts": "9a617f3b2c76045f9169324787399cb709eba81fae8dbd4ff540336ea82eb470", + "https://deno.land/x/math@v1.1.0/minus.ts": "e64bfe637c5d5c790f40dd6681b206dc9996303daacb6cd1533e7dc1969acda6", + "https://deno.land/x/math@v1.1.0/mod.ts": "85f6d29ba8faaae2fb24c4ac3f5772474f1452ee27068714521a7c9aabfd1ee6", + "https://deno.land/x/math@v1.1.0/modulo.ts": "c83ebdc4f4c9ddabf64ade595802502f2333220b1f59010457f4064e4bb94e6c", + "https://deno.land/x/math@v1.1.0/plus.ts": "8d500d86c8f27acc9a754f636c530abe17bdb8f240aea2ece4b29e86ca121f40", + "https://deno.land/x/math@v1.1.0/pow.ts": "47120d27e42fce01572340e724de26039beef6daae25133029af6df6fa7dec4c", + "https://deno.land/x/math@v1.1.0/round.ts": "1b54a5d440f9a0d44d4ff8ba000f59b4895c37a1b2c2aaf5ec59a5fe8081e308", + "https://deno.land/x/math@v1.1.0/sqrt.ts": "50d94b4d1d9077f887eec904d73cf5439c1ef4b724d1949414ba5ec7fb9343b3", + "https://deno.land/x/math@v1.1.0/sum.ts": "6a0fddf3b50a965c79d96edc7fe2e146d4a95915fce90928fb4068abe9d8f059", + "https://deno.land/x/math@v1.1.0/times.ts": "7359e88b8456fc121bdb800543712d637e0ca260777aa1bb0d43724fe576222e", + "https://deno.land/x/math@v1.1.0/to_exponential.ts": "9038215c1cfd430acb835ca5e9c967f1a9da8d0658f7eeab8852662b201596d4", + "https://deno.land/x/math@v1.1.0/to_fixed.ts": "3702a47b14950a9d37f13147e1340b5a3f5f07183d480af59fcdf9d10bb6084e", + "https://deno.land/x/math@v1.1.0/to_precision.ts": "b7fb70b79649c9fd48f3747d285a5086e457487986c0f395a8275302e13a9b5e", "https://deno.land/x/monads@v0.5.10/either/either.ts": "89f539c7d50bd0ee8d9b902f37ef16687c19b62cc9dd23454029c97fbfc15cc6", "https://deno.land/x/monads@v0.5.10/index.ts": "f0e90b8c1dd767efca137d682ac1a19b2dbae4d1990b8a79a40b4e054c69b3d6", "https://deno.land/x/monads@v0.5.10/mod.ts": "f1b16a34d47e58fdf9f1f54c49d2fe6df67b3d2e077e21638f25fbe080eee6cf", @@ -2247,15 +2342,31 @@ "https://deno.land/x/zod@v3.22.2/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", "https://deno.land/x/zod@v3.22.2/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", "https://deno.land/x/zod@v3.22.2/types.ts": "18cbe3d895f42977c43fa9411da214b06d0d682cf2f4c9dd26cc8c3737740d40", + "https://esm.sh/@aws-sdk/client-s3@3.700.0?pin=v135": "c4e66ce2669ce810cd7f060e52e9702a37f02fc0912f69b1dc020a29b4d6e70f", + "https://esm.sh/@aws-sdk/lib-storage@3.700.0?pin=v135": "20499413966c9d494f4bff63361359e095f174c4a41ee79da3a0fbeb62dc947f", + "https://esm.sh/@aws-sdk/s3-request-presigner@3.700.0?pin=v135": "806a2f5f0c65996434f031fbeb3983ee271239e9b22c70cf3624b79b2667cdce", + "https://esm.sh/ajv-formats@3.0.1": "6f020dcf471a8d78d2d8c14fda5c2504c900834b0882db49ec954ba52f66e323", + "https://esm.sh/ajv-formats@3.0.1/denonext/ajv-formats.mjs": "bee9a515ff4223dc79efe320f90c7b060f24281c704b820e286c71a2135aeab9", "https://esm.sh/ajv-formats@3.0.1?pin=v135": "d4eb830ffcadb8a7d19140b3bbd4e78c79bd700deb22e9ce2319437291eedef0", "https://esm.sh/ajv@8.12.0?pin=v131": "f8dc3d8e4d6d69f48381749333cc388e54177f66601125b43246c3e43d3145d6", "https://esm.sh/ajv@8.12.0?pin=v135": "cc1a73af661466c7f4e6a94d93ece78542d700f2165bdb16a531e9db8856c5aa", + "https://esm.sh/ajv@8.17.1": "a04e4f86e082abdcbf765a7f54d9aa96f77e27ef5553254b5b049c7e6c489435", + "https://esm.sh/ajv@8.17.1/denonext/ajv.mjs": "93640b28521b7fca32e34a3534343176c06dd65bdd6ca6a14ec97562f278e949", + "https://esm.sh/ajv@8.17.1/denonext/dist/compile/codegen.mjs": "9c5f9d647acb028079ab5a1cac9f154b518a354b8c70350cacd65308e44a0f68", + "https://esm.sh/ajv@8.17.1/dist/compile/codegen?target=denonext": "f9007ce90ecd16e86c57b1d6cb54e8492bdb4c3c27fb074a1389717296ea572c", + "https://esm.sh/ajv@8.17.1?target=denonext": "a04e4f86e082abdcbf765a7f54d9aa96f77e27ef5553254b5b049c7e6c489435", "https://esm.sh/core-util-is@1.0.3/denonext/core-util-is.mjs": "cfcf1ae63d56751cbe4b3b90b90b7eea577c5380c4adc272ddea4b7db2bdbbf2", "https://esm.sh/core-util-is@1.0.3?target=denonext": "6c72958f8a1c8f42016b48c984a0f3d799ea1e0cd321f499fec0bf8db916c17f", + "https://esm.sh/fast-deep-equal@3.1.3/denonext/fast-deep-equal.mjs": "66e5d717af5e6a08366cc6aa421af1838a773895070bfee46c45102adf7ddc5f", + "https://esm.sh/fast-deep-equal@3.1.3?target=denonext": "2d47696bbd2c43a836e333ae5035542a56eb76e4fd728204c75eaaeea86c3b5c", + "https://esm.sh/fast-uri@3.0.6/denonext/fast-uri.mjs": "ac0e9bda651d725f8fd8605dc61dbf7a70b6d1ff69caf117dca503ab2d1e0fa4", + "https://esm.sh/fast-uri@3.0.6?target=denonext": "7559f8685f8098c63fa5f637561f5b653ee8363f3abde114a3897383bf73c49e", "https://esm.sh/immediate@3.0.6/denonext/immediate.mjs": "7148ba33cb905f7aca49affbacfa6a8257cd6b89e8c3c7c728d2d0387b4cce29", "https://esm.sh/immediate@3.0.6?target=denonext": "fba8d9ddb37f19ff27c0b1c5b4486ab82805114b14959379d92ca05d6351c5d3", "https://esm.sh/isarray@1.0.0/denonext/isarray.mjs": "0f26133cd58fc8580f99bbfd81f6290718328dc2a683c313c36f6b1e8c174edc", "https://esm.sh/isarray@1.0.0?target=denonext": "00e227f6d016cb5a5f832f6f2de91dd8ab092c7ac830c551bfcf0f63284d89e6", + "https://esm.sh/json-schema-traverse@1.0.0/denonext/json-schema-traverse.mjs": "4cd3fc9a056d4498d24e4862b19aa93f72f4f7785a00573b0c579576faa1783b", + "https://esm.sh/json-schema-traverse@1.0.0?target=denonext": "3e60200c0d28b5e081db526a78c7911c094fd64c92484ebe050becb8f69788bb", "https://esm.sh/jszip@3.7.1": "5161d6a228d844791a60ab58360bd3b76c4d3921b4a725616cd7403203519249", "https://esm.sh/jszip@3.7.1/denonext/jszip.mjs": "c012f515eb73de7f7576f4a4756c206b0a98cb7ef698ee7f5bb85a1f07eb3eba", "https://esm.sh/lie@3.3.0/denonext/lie.mjs": "20db2fef139e87d467b7cf24a9e53053e96460fefedde5910f925b1d0ddc0cba", @@ -2274,12 +2385,175 @@ "https://esm.sh/string_decoder@1.1.1?target=denonext": "092c97b62b99368a40fa044c402188472658bc71529415f73c16f66c05aaf6bf", "https://esm.sh/util-deprecate@1.0.2/denonext/util-deprecate.mjs": "083639894972cb68837eef26346c43bdd01357977149e0a4493f76192a4008b8", "https://esm.sh/util-deprecate@1.0.2?target=denonext": "859f4df8ba771a4c33143185d3db6a7edb824fab1ed4f9a4b96ac0e6bc3ef1a4", + "https://esm.sh/v131/ajv@8.12.0/denonext/ajv.mjs": "6ec3e0f3d7a95672c96274f6aece644b6b5541e8c2409aed36b59853529a01cf", + "https://esm.sh/v131/fast-deep-equal@3.1.3/denonext/fast-deep-equal.mjs": "6313b3e05436550e1c0aeb2a282206b9b8d9213b4c6f247964dd7bb4835fb9e5", + "https://esm.sh/v131/json-schema-traverse@1.0.0/denonext/json-schema-traverse.mjs": "c5da8353bc014e49ebbb1a2c0162d29969a14c325da19644e511f96ba670cc45", + "https://esm.sh/v131/uri-js@4.4.1/denonext/uri-js.mjs": "901d462f9db207376b39ec603d841d87e6b9e9568ce97dfaab12aa77d0f99f74", + "https://esm.sh/v135/@aws-crypto/crc32@5.2.0/denonext/crc32.mjs": "6a9bc8418c01e2539665b528ccea843f1319a3b32d759fcbb1d4468156c25100", + "https://esm.sh/v135/@aws-crypto/crc32c@5.2.0/denonext/crc32c.mjs": "1e8985997bd2c0807d349acaf192a54147d779e5349faf6507f51aa8becb85ca", + "https://esm.sh/v135/@aws-crypto/sha1-browser@5.2.0/denonext/sha1-browser.mjs": "d80868d5524769e0334b50124d547ce9875fb05f9924acca4c42ed877b41ce7f", + "https://esm.sh/v135/@aws-crypto/sha256-browser@5.2.0/denonext/sha256-browser.mjs": "84e59b20eb4974a23fafdcf5fcd6513757ad195ca809b80d19a389602cff335a", + "https://esm.sh/v135/@aws-crypto/sha256-js@5.2.0/denonext/sha256-js.mjs": "2e1014e03baf7b5eb5d773c8409af836dacbec2c0a522b789774f76d3eb2e5ad", + "https://esm.sh/v135/@aws-crypto/supports-web-crypto@5.2.0/denonext/supports-web-crypto.mjs": "2ae3bd2aa25db0761277ad0feda7aea68cd829c89b714e8e03e07aac06345d81", + "https://esm.sh/v135/@aws-crypto/util@5.2.0/denonext/util.mjs": "376903ba54e09eed466b45e243cef1133f20bf015c0505e70fc794896d1412d5", + "https://esm.sh/v135/@aws-sdk/client-s3@3.700.0/denonext/client-s3.mjs": "60aec3d8fe60437d2c0976245d2221b81a1b2fda97631dae0602e8ef7f63904e", + "https://esm.sh/v135/@aws-sdk/core@3.696.0/denonext/client.js": "081af7b04c457ca6d306c7fdc99f684fa41c4215d9bb5b38f697ab50b434ca4b", + "https://esm.sh/v135/@aws-sdk/core@3.696.0/denonext/core.mjs": "31c8677be7c08f1147548368fd72ae0ea647852169fb08d992122f748bcea6bc", + "https://esm.sh/v135/@aws-sdk/core@3.696.0/denonext/httpAuthSchemes.js": "dc7a76ce8a356f308dde3712304991013f17ed5c103168002db64b8b17a1ff9a", + "https://esm.sh/v135/@aws-sdk/core@3.696.0/denonext/protocols.js": "6035e9162278403cb66ee7d2af8bca2295f65ac4a940fd226174dfd66aa21875", + "https://esm.sh/v135/@aws-sdk/lib-storage@3.700.0/denonext/lib-storage.mjs": "4283f2821159bc0153775c22c1326a29eef7580ff8c8367747c3bf7c3aa191bf", + "https://esm.sh/v135/@aws-sdk/middleware-expect-continue@3.696.0/denonext/middleware-expect-continue.mjs": "7f94cbe212255472a5f85e267eda2ff2bd11be345b745282c7a494d641bd8fc9", + "https://esm.sh/v135/@aws-sdk/middleware-flexible-checksums@3.697.0/denonext/middleware-flexible-checksums.mjs": "6489da2042f0e1f2160a42502bef8abfc8aba763aade325d2817dd714e14278e", + "https://esm.sh/v135/@aws-sdk/middleware-host-header@3.696.0/denonext/middleware-host-header.mjs": "6b3d43a4662c4e300f331a3cb24c94bcb4a6403e42a937fe1bacb54d3e48e49d", + "https://esm.sh/v135/@aws-sdk/middleware-location-constraint@3.696.0/denonext/middleware-location-constraint.mjs": "bd5dbcc02a1d663a787d91e5275989539951de8f528405d1310305331d855266", + "https://esm.sh/v135/@aws-sdk/middleware-logger@3.696.0/denonext/middleware-logger.mjs": "9f894804d70e4cb1f2ae597476f784eee2854966ad2d1865d6cb4e35487ae75a", + "https://esm.sh/v135/@aws-sdk/middleware-recursion-detection@3.696.0/denonext/middleware-recursion-detection.mjs": "1717239de42416976f566d1d9ef58093dc3ddadaa4e4c1e607ddb6cab6b7667f", + "https://esm.sh/v135/@aws-sdk/middleware-sdk-s3@3.696.0/denonext/middleware-sdk-s3.mjs": "516a561d42dbaa443cf70b0c58582e9c6062f618d819c88c03ee8bc23db7492c", + "https://esm.sh/v135/@aws-sdk/middleware-ssec@3.696.0/denonext/middleware-ssec.mjs": "1cf008b51a30822cd2de033d2330b2c9e9ee09fcd8e8e0ca4b5f1705569203d5", + "https://esm.sh/v135/@aws-sdk/middleware-user-agent@3.696.0/denonext/middleware-user-agent.mjs": "0c98884a901cb6bd6196392c99f32066be4c1bf814e872f63b4c2bbaa64ee1cc", + "https://esm.sh/v135/@aws-sdk/region-config-resolver@3.696.0/denonext/region-config-resolver.mjs": "60a2cd55ec82e34859df65f0071638a6286410fe7144580de85bb1003035e550", + "https://esm.sh/v135/@aws-sdk/s3-request-presigner@3.700.0/denonext/s3-request-presigner.mjs": "614df9a4ff4f4969b50aa6336ddc00c4c37579e683e5021524df989e0b7ce85b", + "https://esm.sh/v135/@aws-sdk/signature-v4-multi-region@3.696.0/denonext/signature-v4-multi-region.mjs": "1a0681be26b7de554e24f01b4330ec9ada26dbb5772d003317fcaa8baedef526", + "https://esm.sh/v135/@aws-sdk/util-arn-parser@3.693.0/denonext/util-arn-parser.mjs": "ff8b16a9bd3f4dde9e7b5540fb4ed42035e2375516f576aaa98f7f4b29c21a96", + "https://esm.sh/v135/@aws-sdk/util-endpoints@3.696.0/denonext/util-endpoints.mjs": "58068b809c541411763e71ae75317e7374ca9acef369859f8075a0ce6ab2ab12", + "https://esm.sh/v135/@aws-sdk/util-format-url@3.696.0/denonext/util-format-url.mjs": "f00d273a637c6ea6d7fb9fcdc0b6d76eca26c5160964156ceb54f2bf46ac8a66", + "https://esm.sh/v135/@aws-sdk/util-locate-window@3.568.0/denonext/util-locate-window.mjs": "44c4acffec7669f2d0e0307ebfca7cac1f85260a6f8238dcbeb5e79f769e6f00", + "https://esm.sh/v135/@aws-sdk/util-user-agent-browser@3.696.0/denonext/util-user-agent-browser.mjs": "206d36305d806415e67e4a4a081873f5eeb58663dd648c6c9bd1bd979056b0e7", + "https://esm.sh/v135/@aws-sdk/xml-builder@3.696.0/denonext/xml-builder.mjs": "ebbc2588e2c605aa412a2ec53658501d4ae73049308d9c9605e3f142edbf0e54", + "https://esm.sh/v135/@smithy/abort-controller@3.1.8/denonext/abort-controller.mjs": "e7b775cb7a418b1010a24e380376fb790f0c2a9fa2b547c1f662a30b53ff91f3", + "https://esm.sh/v135/@smithy/chunked-blob-reader@4.0.0/denonext/chunked-blob-reader.mjs": "e7dbf64e88d08e2448f699dd0b75a7be900dfd94662f3007e76ecc64c2a53adc", + "https://esm.sh/v135/@smithy/config-resolver@3.0.12/denonext/config-resolver.mjs": "301150d69986e7984cf703165680aed4887f244fec1482754965363b5c69dd38", + "https://esm.sh/v135/@smithy/core@2.5.3/denonext/core.mjs": "92847ee65654850579f6468fda321aac3f27cb243da8624fa1b98f1266a9386e", + "https://esm.sh/v135/@smithy/core@2.5.3/denonext/protocols.js": "44cab0b0be393009b573a5d0d7810626ffa7ff3025edd41f73f91dc4a1a13d84", + "https://esm.sh/v135/@smithy/core@2.5.4/denonext/core.mjs": "1e33f4a25a9815539dc61e642d6615bb127737a0d67b2d653f203db70c1124ef", + "https://esm.sh/v135/@smithy/core@2.5.4/denonext/protocols.js": "ee4b0611ba1175a1967d47e079053b4c46cd0a1df44d1d2cdf0884e361352a36", + "https://esm.sh/v135/@smithy/eventstream-codec@3.1.9/denonext/eventstream-codec.mjs": "c9f9ff7c98a32902a0f8618b7d966d9ad712ff5952634af50fb4788daa56ee71", + "https://esm.sh/v135/@smithy/eventstream-serde-browser@3.0.13/denonext/eventstream-serde-browser.mjs": "1e55c70cceca16b410db8cc6d3f8d5efef2348106d5f0329cd01b8b94b3d17dc", + "https://esm.sh/v135/@smithy/eventstream-serde-config-resolver@3.0.10/denonext/eventstream-serde-config-resolver.mjs": "70274710d699d75737449a2067c5523f14b7a062dc1056153ce7d9db5576b33c", + "https://esm.sh/v135/@smithy/eventstream-serde-universal@3.0.12/denonext/eventstream-serde-universal.mjs": "ea5f23e6bb54ec1ac22823a9a2fb661fd463b6da51cba7a6e4412e504073b097", + "https://esm.sh/v135/@smithy/fetch-http-handler@4.1.1/denonext/fetch-http-handler.mjs": "b07c7cfd76ff152ba146cb45ef628ec42c49dac2d07249a077f6df841ed1987a", + "https://esm.sh/v135/@smithy/hash-blob-browser@3.1.9/denonext/hash-blob-browser.mjs": "2488cf9a08d8856142c3c4c16e4aab153c0496730b13232a78a32f3a389ecbee", + "https://esm.sh/v135/@smithy/invalid-dependency@3.0.10/denonext/invalid-dependency.mjs": "a138c5906d34411627d87c7a130f62b2f91a411530487bedcc97f3b56cc0e326", + "https://esm.sh/v135/@smithy/is-array-buffer@3.0.0/denonext/is-array-buffer.mjs": "f8bb7f850b646a10880d4e52c60151913b7d81911b2b1cd1355c9adef56ab3e2", + "https://esm.sh/v135/@smithy/md5-js@3.0.10/denonext/md5-js.mjs": "a43fbe8339e9b06a0939c0578666cc788955b1e3a13d6ca472aca696d2b8aa0a", + "https://esm.sh/v135/@smithy/middleware-content-length@3.0.12/denonext/middleware-content-length.mjs": "a1d88f94b68806dbb9c449917935d5a5b94eedebb4aa784302b24d186f5c33c1", + "https://esm.sh/v135/@smithy/middleware-endpoint@3.2.3/denonext/middleware-endpoint.mjs": "51e33bf0dbfbd49c40749cfecf25853819e929ac159ceec0d15bb103df6247b5", + "https://esm.sh/v135/@smithy/middleware-retry@3.0.27/denonext/middleware-retry.mjs": "74d658624a067684d5d882ab592a16e44c164b15409763c4a912284b2bf1317f", + "https://esm.sh/v135/@smithy/middleware-serde@3.0.10/denonext/middleware-serde.mjs": "3dfa59e712b5223bf8e0348eb681001b1260f318e44447f767913923dbe41ef6", + "https://esm.sh/v135/@smithy/middleware-stack@3.0.10/denonext/middleware-stack.mjs": "709005fd35c3d0e93d3d6e84969f9a0503d7f40d8cbe9b37e5cb2196d1573ee5", + "https://esm.sh/v135/@smithy/property-provider@3.1.10/denonext/property-provider.mjs": "a9da35df4a74b88aef8639e1a921a7230a4581547fdd265c5bc61bb1a2aeb7cb", + "https://esm.sh/v135/@smithy/protocol-http@4.1.6/denonext/protocol-http.mjs": "d06d232767a4967141e08ede9dcfa9446ef9826f54040f4ccafa1c32808ab94c", + "https://esm.sh/v135/@smithy/protocol-http@4.1.7/denonext/protocol-http.mjs": "02f6d00f94be691f820af79d33d306a47acc64e8cb32ca591e9990ea710e4263", + "https://esm.sh/v135/@smithy/querystring-builder@3.0.10/denonext/querystring-builder.mjs": "7727cbd3a793fb235a5504f68a5a3881385fbe1a35bd09cb0fa1393b3d2d35fc", + "https://esm.sh/v135/@smithy/querystring-parser@3.0.10/denonext/querystring-parser.mjs": "15b5c8d5988c1bd240d4f25ad54de86008c0fa15f7b64818f43c38b740d3c5e7", + "https://esm.sh/v135/@smithy/service-error-classification@3.0.10/denonext/service-error-classification.mjs": "c9058b690a551fe39dda20ae06d4691c66a29512b881146be63a89c659533d49", + "https://esm.sh/v135/@smithy/signature-v4@4.2.2/denonext/signature-v4.mjs": "7a4b0bf4e8a6d060dcd398f653178c5c51bc290f6cc9ee5b6163da3ada5939f4", + "https://esm.sh/v135/@smithy/smithy-client@3.4.4/denonext/smithy-client.mjs": "3c9f8650ef0b95947af18a229152d253f16624875ed4f10897557c1fb2fff17f", + "https://esm.sh/v135/@smithy/types@3.7.0/denonext/types.mjs": "a6a32d24d9f1d3673f0fac542c91cc2782cbdf19a0878ded704ba96220f1396d", + "https://esm.sh/v135/@smithy/types@3.7.1/denonext/types.mjs": "b60aac6848b261b81901f88d9b3dcb126aaad298094940ae0300cb991e499094", + "https://esm.sh/v135/@smithy/url-parser@3.0.10/denonext/url-parser.mjs": "ce2722c42ce847e29c9b641a378dae9ffdcd2f5d73808b09ff5bf1167871dd5a", + "https://esm.sh/v135/@smithy/util-base64@3.0.0/denonext/util-base64.mjs": "d6a01faaa94fdbeb4b92b02e91801dfbe241439e37a0edf7d817c59daf66c0e3", + "https://esm.sh/v135/@smithy/util-body-length-browser@3.0.0/denonext/util-body-length-browser.mjs": "d67382004d61919b97a756a454f9b312cfb0011a9727d3d1ca69ebddf1c7843a", + "https://esm.sh/v135/@smithy/util-config-provider@3.0.0/denonext/util-config-provider.mjs": "832c0ab1d3b06a51351ea23b33628bd36a37ef570e02e469f6ab39f71d88d7b1", + "https://esm.sh/v135/@smithy/util-defaults-mode-browser@3.0.27/denonext/util-defaults-mode-browser.mjs": "a67193d0d8e35cef1014aaaae20b4d05354cf940f71fa44247f31e0382e0c919", + "https://esm.sh/v135/@smithy/util-endpoints@2.1.6/denonext/util-endpoints.mjs": "dcfd38eeca677ad66dae39e3f3b7e9ed30c434895c9dfe65918609c7f81ef0ca", + "https://esm.sh/v135/@smithy/util-hex-encoding@3.0.0/denonext/util-hex-encoding.mjs": "cbdd7aabeb3903596980e2903efec3e5501f7e1259fb7b97e327a3b4e635f23c", + "https://esm.sh/v135/@smithy/util-middleware@3.0.10/denonext/util-middleware.mjs": "a2335ac8c8e655bce58853bfda5fd090bac16df94cc4bbf4e416a3eeed16cf46", + "https://esm.sh/v135/@smithy/util-middleware@3.0.9/denonext/util-middleware.mjs": "14b068a8ef2c2fd5ea72afaabfb56bbffa4a3f2e74315b8c207ff860d233bf67", + "https://esm.sh/v135/@smithy/util-retry@3.0.10/denonext/util-retry.mjs": "469002c7c287ebedfc0fd4a52bb3b22f8a0b6a1c5ebee9ba84ac85c7d9a41046", + "https://esm.sh/v135/@smithy/util-stream@3.3.1/denonext/util-stream.mjs": "0f55d86ab6e52188da1f58e2b03bdf52322882e1cf2140c9581410cf450045d3", + "https://esm.sh/v135/@smithy/util-uri-escape@3.0.0/denonext/util-uri-escape.mjs": "df2c80781ede692323dee6e2da3711e7ccc4f7a1cee949b09aba8d1ce15bbe03", + "https://esm.sh/v135/@smithy/util-utf8@2.0.2/denonext/util-utf8.mjs": "d1869dca8a21b3e6c297cb55f90e1b78bf8f365afd1f173c16d719f28245604b", + "https://esm.sh/v135/@smithy/util-utf8@2.3.0/denonext/util-utf8.mjs": "10a9f2014b2b5b2e387e04c1c7974e8219332fa30a6904923f54a46c974c6c84", + "https://esm.sh/v135/@smithy/util-utf8@3.0.0/denonext/util-utf8.mjs": "abe704ed8c4266b29906116ef723b98e8729078537b252c9a213ad373559488a", + "https://esm.sh/v135/@smithy/util-waiter@3.1.9/denonext/util-waiter.mjs": "42a09843870abe258a66a3f381fafdef5fb1ea33d949b760c33451ff5b965d7f", + "https://esm.sh/v135/bowser@2.11.0/denonext/bowser.mjs": "3fd0c5d68c4bb8b3243c1b0ac76442fa90f5e20ee12773ce2b2f476c2e7a3615", + "https://esm.sh/v135/fast-xml-parser@4.4.1/denonext/fast-xml-parser.mjs": "506f0ae0ce83e4664b4e2a3bf3cde30b3d44c019012938ab12b76fa38353e864", + "https://esm.sh/v135/strnum@1.0.5/denonext/strnum.mjs": "1ffef4adec2f74139e36a2bfed8381880541396fe1c315779fb22e081b17468b", + "https://esm.sh/v135/tslib@2.6.2/denonext/tslib.mjs": "29782bcd3139f77ec063dc5a9385c0fff4a8d0a23b6765c73d9edeb169a04bf1", + "https://esm.sh/v135/tslib@2.6.3/denonext/tslib.mjs": "0834c22e9fbf95f6a5659cc2017543f7d41aa880f24ab84cb11d24e6bee99303", + "https://esm.sh/v135/uuid@9.0.1/denonext/uuid.mjs": "7d7d3aa57fa136e2540886654c416d9da10d8cfebe408bae47fd47070f0bfb2a", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/deps.ts": "2b20d8c142749898e0ad5e4adfdc554dbe1411e8e5ef093687767650a1073ff8", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/mod.ts": "3ef8bb10b88541586bae7d92c32f469627d3a6a799fa8a897ac819b2f7dd95e8", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/progress.ts": "bb8eb122f5ac32efc073e05e2c13cceea61458b0e49ac05bddc3a49124dc39e3", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/registry.ts": "fd8e1b05f14cb988fee7a72a51e68131a920f7d4b72f949d9b86794b3c699671", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/search.ts": "52f9a539ca76893c47d01f8c6d401487ea286d54d1305b079b8727598e4c847a", "https://raw.githubusercontent.com/levibostian/deno-udd/ignore-prerelease/semver.ts": "c051a906405dd72b55434eb0f390f678881379d57847abe4ec60d8a02af4f6f2", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/deps/cli.ts": "aac025f9372ad413b9c2663dc7f61affd597820d9448f010a510d541df3b56ea", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/files/mod.ts": "44a8874c6ee9f086b7a521d4956c1802be201d01f9e91329d52a4b96738f7a34", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/host/types.ts": "f450d9b9c0eced2650262d02455aa6f794de0edd6b052aade256882148e5697f", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/install/mod.ts": "aa54eb3e119f28d33e61645c89669da292ee00376068ead8f45be2807e7a9989", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/install/utils.ts": "d4634d4fc0e963f540402b4ca7eb5dcba340eaa0d8fceb43af57d722ad267115", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/mod.ts": "1d31b4f801ae2ebad052d219236699c4f227b6ce53c6e5016deaed5fcd00dbb6", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/envs/inter.ts": "84805fa208754a08f185dca7a5236de3760bbc1d0df96af86ea5fd7778f827a2", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/envs/mod.ts": "5f37b9f155808f8d6d51e1f16f58c07914d8c7d8070bc5c2fb5076ab748798a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/envs/posix.ts": "b22f9564d9773548d537c95265e694a2630c3fe1fd63354d6f4790e275545299", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/envs/reducer.ts": "76ee6974c9d4885da0898e01c498dcfdd99a3652a5a564d679577931a680e781", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/envs/types.ts": "9ff28d47aa60042df42fbb98a46f7689d8111be462237f5fb81771011e429088", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/mod.ts": "fc1cb9176c6557b44ae9c6536fa51c6c4f80ac01fc476d15b0a217e70cb0d176", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/ambient.ts": "823ec8d98702a60e6bfcdbeb64b69dc9f5039e73a1f10e87cd51210c1aaf52d5", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/base.ts": "8ef8a8de372420bddcd63a1b363937f43d898059e99478a58621e8432bcd5891", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/db.ts": "a309d1058f66079a481141c3f1733d928b9af8a37b7ce911b1228f70fd24df0f", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/ghrel.ts": "ebbc30a5c31244131d937eadca73fbc099c9e7bdf0ad4f668766d4388ede143c", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/inter.ts": "b3999e73d73d7f928a8de86e5e2261fe6b1450ceedfb54f24537bf0803532ed0", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/mod.ts": "646cfe12c181f378ffd865890e07ba0a2c92b70cf10687f43de49864ca15c482", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/reducers.ts": "d04e813652101f67f946242df68429ed5540e499fbdb7776b8be5703f16754c8", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/std.ts": "985902519aafef6e8e6aecc8922e70abdea5b8e97d5439bf94338b93242fe11f", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/sync.ts": "a7a297f6b098360d56af168692f3cff96f8ceeb5189e5baa249e094f8d9c42ef", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/types.ts": "f4dbd1a3f4b7f539b3a85418617d25adbf710b54144161880d48f6c4ec032eee", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/types/platform.ts": "0ecffeda71919293f9ffdb6c564ddea4f23bc85c4e640b08ea78225d34387fdc", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/utils.ts": "6b14b331cce66bd46e7aec51f02424327d819150f16d3f72a6b0aaf7aee43c09", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/ports/worker.ts": "6b76ba1efb2e47a82582fc48bcc6264fe153a166beffccde1a9a3a185024c337", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/std.ts": "419d6b04680f73f7b252257ab287d68c1571cee4347301c53278e2b53df21c4a", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/tasks/deno.ts": "75b85d8cdc129e56d7bd1bfbfdc4a6f4685e86933c41908e48fbc51be7a57fee", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/tasks/exec.ts": "ddc6bc7cbed464fdd94038a0df8668138411e94e49ae639615b93e734e37d311", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/tasks/inter.ts": "63e8f2860f7e3b4d95b6f61ca56aeb8567e4f265aa9c22cace6c8075edd6210f", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/tasks/mod.ts": "334b18d7c110cc05483be96353e342425c0033b7410c271a8a47d2b18308c73e", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/tasks/types.ts": "072a34bd0749428bad4d612cc86abe463d4d4f74dc56cf0a48a1f41650e2399b", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/modules/types.ts": "c0f212b686a2721d076e9aeb127596c7cbc939758e2cc32fd1d165a8fb320a87", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/port.ts": "c039a010dee7dfd978478cf4c5e2256c643135e10f33c30a09f8db9915e9d89d", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/act.ts": "2ce6b8fddf61db12ba69b7cad6985237a2962ca79853edbddee5bfb49c47d1ab", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/asdf.ts": "11d41bcad5981e014478343270f05bac265990e801c525e3288113d89bd287be", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/asdf_plugin_git.ts": "a3742fcd994ded231febf33754b087ab56393a799297b26315c2cf8a388a7f82", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/cargo-binstall.ts": "72860580e6f6db9ec7ba74dbe391ad98ed49b4ff43247661b27701f4e683d41b", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/cargobi.ts": "51c95fe47132ee35df2cd34c67d10d2e53dc10edd438c0f4f70eb644e81f2563", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/cmake.ts": "745bcfdbffdd5d7cb0314e4e618b764a3a0f7d19246ec8b9134b1ff981bc2091", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/cpy_bs.ts": "4066e5eb094e72be4dec2428fb7f99231dcc5c4e2db7b5ea2373a9ad9ce28662", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/curl.ts": "58acd2a158187f448d940f45bfcd87c9b4884db127dcbaaaef27258bb4ebce92", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/deno_ghrel.ts": "eca02a93ceb62ad9fb7f395361d32da0d5657aba5f7856c8ae0109135da0e070", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/earthly.ts": "7a3c8cae1631f670105a63bc41c47a49da6fc777968c0e9546c55d43fa418619", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/git.ts": "2e68f1fa5ba534ee32db204bcc357f987437dffe5d87c1a0a9c47850fa654419", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/infisical.ts": "77789ea377250f0e762d01f1a8d378636bc520e7291aa9e82c5321c4059b6205", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/jq_ghrel.ts": "f685342c833c96637732fb28556f411f4537e85292046473f2b0d7f28c66ec8c", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/meta_cli_ghrel.ts": "0d5128cd3a15eece3fdf49c0697f5354e37ede6388e058dde572699634df1464", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/mod.ts": "a25ca4a4ca5e640ef436195cd0b5d0b1be33fa7f770e2d40a8eec6fb2b23838a", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/mold.ts": "b916227b48d7aa307ccc7d54c66724a41baa67be82bd558b5b9a35db4179c2f3", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/node.ts": "a98a095d3405a4907acfb620ff43babb0771d51ecaed87af8d1816c1cecd009b", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/npmi.ts": "056c7e733b1157601647630b9d460f19b5416dccc20415dd275d7ce972f09c39", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/opentofu_ghrel.ts": "46ef05d30772d36b91d88a2dc1aae31e096c59ba6ecf82af08359996c1476725", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/pipi.ts": "a4abf1bd197f01e0fbc68bfb60bdb43849d9719654e1033820d3fb4ce4f36449", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/pnpm.ts": "41e7f473a687123ae96ab14a3a04f67ef0c4b44eea6747448826dbdae00bfdde", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/protoc.ts": "ef93af8f37d8186c2220b6d2f760b5da10decaa3e9fe7768003ee319d32335bf", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/ruff.ts": "2a3246bf3d21482ea62c3e801e58ef760fa6b30d4652e5be55c9051ecf6df72e", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/rust.ts": "e8b58f3ccb5411f0bba4bf3aadc040017da11eab4f6820cee03ab8f764383ca2", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/rustup.ts": "0a8033d24fb6be84585db545b2592b868d36182907565fe23454e9a0262618cc", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/tar.ts": "c3c43a99f8a9b1c160286cbc6240f59658d994856eeacaee479f645ece44d6c4", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/temporal_cli.ts": "a5db59114e294b58715349e72e3d7e868274d4a25d7de027afa0470c5585ed9c", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/terraform.ts": "035fbdd3a6b858bd302c440fc0a588fb40ae57959685af837f8a4e34302b55a7", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/unzip.ts": "c4559c627246f9c051571bbdff8c63ab15780ffd9e71656a9055488cc3bf32c3", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/wasmedge.ts": "b74a35190b79be686d2c8615c291b883da21e0caea36a8a32340fba93694b8e0", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/ports/zstd.ts": "fb8334b7b43ef34ba60ad391460e2fabb62889f77eade7798c823b14842cea45", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/setup_logger.ts": "f8a206bda0595497d6f4718032d4a959000b32ef3346d4b507777eec6a169458", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/std.ts": "74515b1d816e643860b2a94409a49c08d8478d756c1fcae0dce95dde2c5c7162", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/std/copyLock.ts": "a47725f058cc8120914629bd0d4488345f168e80f1b3b286a64d4d1e919d6599", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/std/sedLock.ts": "115bcf40bb13435e579df24919d1a0f9be3d3ec96c442812c9ae4ceb335932aa", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/logger.ts": "fcbafb35ae4b812412b9b301ce6d06b8b9798f94ebebe3f92677e25e4b19af3c", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/mod.ts": "25901b5a03625353cc0d9c024daca806eb2513b153faede5ecad73b428542721", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/unarchive.ts": "f6d0e9e75f470eeef5aecd0089169f4350fc30ebfdc05466bb7b30042294d6d3", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/url.ts": "e1ada6fd30fc796b8918c88456ea1b5bbd87a07d0a0538b092b91fd2bb9b7623", + "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/worker.ts": "ac4caf72a36d2e4af4f4e92f2e0a95f9fc2324b568640f24c7c2ff6dc0c11d62", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.2/deps/cli.ts": "aac025f9372ad413b9c2663dc7f61affd597820d9448f010a510d541df3b56ea", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.2/deps/common.ts": "f775710b66a9099b98651cd3831906466e9b83ef98f2e5c080fd59ee801c28d4", "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.2/deps/ports.ts": "3c60d1f7ab626ffdd81b37f4e83a780910936480da8fe24f4ccceaefa207d339", diff --git a/ghjk.ts b/ghjk.ts index d12f00175b..5be4119cd1 100644 --- a/ghjk.ts +++ b/ghjk.ts @@ -3,6 +3,8 @@ // @ts-nocheck: Deno file +// + import { CURRENT_VERSION, LATEST_PRE_RELEASE_VERSION, @@ -34,13 +36,13 @@ env("main") ...stdDeps(), installs.python_latest, installs.node, - installs.rust_stable, + installs.rust_stable ); env("_rust").install( // use rustup for the actual toolchain ports.protoc({ version: "v28.2" }), - ports.cmake()[0], + ports.cmake()[0] // installs.rust_stable, ); @@ -57,7 +59,7 @@ if (Deno.build.os == "linux" && !Deno.env.has("NO_MOLD")) { env("_ecma").install( installs.node, ports.pnpm({ version: "v10.6.4" }), - ports.npmi({ packageName: "node-gyp", version: "10.0.1" })[0], + ports.npmi({ packageName: "node-gyp", version: "10.0.1" })[0] ); env("_python").install( @@ -69,7 +71,7 @@ env("_python").install( ports.pipi({ packageName: "poetry", version: "1.8.3", - })[0], + })[0] ); env("_wasm").install( @@ -88,7 +90,7 @@ env("_wasm").install( ports.npmi({ packageName: "@bytecodealliance/jco", version: "1.3.0", - })[0], + })[0] ); env("oci").inherit(["_rust", "_wasm"]); @@ -107,7 +109,7 @@ env("ci") crateName: "cross", version: "0.2.5", locked: true, - }), + }) ); env("dev") @@ -121,7 +123,7 @@ env("dev") ports.act(), ports.cargobi({ crateName: "whiz", locked: true }), ports.cargobi({ crateName: "wit-deps-cli", locked: true }), - ports.cargobi({ crateName: "git-cliff", locked: true }), + ports.cargobi({ crateName: "git-cliff", locked: true }) ); task("version-print", () => console.log(CURRENT_VERSION), { @@ -143,7 +145,7 @@ task("version-bump", async ($) => { if (!bumps.includes(bump)) { throw new Error( - `invalid argument "${bump}", valid are: ${bumps.join(", ")}`, + `invalid argument "${bump}", valid are: ${bumps.join(", ")}` ); } @@ -153,8 +155,8 @@ task("version-bump", async ($) => { bump as semver.ReleaseType, { prerelease: "rc", - }, - ), + } + ) ); $.logStep(`Bumping ${CURRENT_VERSION} → ${newVersion}`); @@ -163,7 +165,7 @@ task("version-bump", async ($) => { $.logStep( `Bumping published version ${ LATEST_PRE_RELEASE_VERSION || LATEST_RELEASE_VERSION - } → ${CURRENT_VERSION}`, + } → ${CURRENT_VERSION}` ); // lines.push([ // /^(export const LATEST_RELEASE_VERSION = ").*(";)$/, @@ -191,7 +193,7 @@ task( $`cargo clean`.cwd("tests/metagen/typegraphs/identities/rs"), $`cargo clean`.cwd("./examples/typegraphs/metagen/"), ]), - { inherit: "_rust", desc: "Clean cache of all cargo workspaces in repo." }, + { inherit: "_rust", desc: "Clean cache of all cargo workspaces in repo." } ); task( @@ -207,10 +209,10 @@ task( if (await path.exists()) { await path.remove({ recursive: true }); } - }), + }) ), { inherit: "_ecma", desc: "Remove all node_modules directories in tree and other js artifacts.", - }, + } ); diff --git a/src/meta-cli/src/main.rs b/src/meta-cli/src/main.rs index 5b663c9d53..569a1364aa 100644 --- a/src/meta-cli/src/main.rs +++ b/src/meta-cli/src/main.rs @@ -111,8 +111,13 @@ fn main() -> Result<()> { .unwrap_or_log() }); - if let Err(err) = runner.block_on(upgrade_check()) { - warn!("cannot check for update: {err}"); + let upgrade = std::env::var("MCLI_NO_UPGRADE_CHECK") + .map(|v| v == "1") + .unwrap_or(false); + if upgrade { + if let Err(err) = runner.block_on(upgrade_check()) { + warn!("cannot check for update: {err}"); + } } runner.block_on(async move { diff --git a/src/typegraph/core/Cargo.toml b/src/typegraph/core/Cargo.toml index 5ef4ad2938..aad460dc2c 100644 --- a/src/typegraph/core/Cargo.toml +++ b/src/typegraph/core/Cargo.toml @@ -4,8 +4,8 @@ version = "0.5.1-rc.4" edition = "2021" [dependencies] -# common.workspace = true tg_schema.workspace = true +tg_optimize.workspace = true metagen.workspace = true grpc_utils.workspace = true archive_utils.workspace = true diff --git a/src/typegraph/core/src/global_store.rs b/src/typegraph/core/src/global_store.rs index 3e41584fb8..1b0ab34b48 100644 --- a/src/typegraph/core/src/global_store.rs +++ b/src/typegraph/core/src/global_store.rs @@ -20,8 +20,6 @@ use std::rc::Rc; use std::{cell::RefCell, collections::HashMap}; use tg_schema::runtimes::deno::PredefinedFunctionMatData; -const PLACEHOLDER_TYPE_SUFFIX: &str = "_____PLACEHOLDER_____"; - pub type Policy = Rc; /// As all the store entries are append only, we can set a restore point @@ -49,7 +47,7 @@ pub struct Store { pub types: Vec, // the bool indicates weather the name was from // user or generated placeholder (false) - pub type_by_names: IndexMap, (NamedTypeRef, bool)>, + pub type_by_names: IndexMap, NamedTypeRef>, pub runtimes: Vec, pub materializers: Vec, @@ -148,7 +146,7 @@ impl Store { } pub fn get_type_by_name(name: &str) -> Option { - with_store(|s| s.type_by_names.get(name).map(|id| id.0.clone())) + with_store(|s| s.type_by_names.get(name).cloned()) } pub fn register_type_ref(builder: TypeRefBuilder) -> Result { @@ -162,34 +160,13 @@ impl Store { // allow the ref system to work match &type_ref { TypeRef::Named(name_ref) => { - let (type_ref, name_ref, name, user_named) = - if name_ref.name.ends_with(PLACEHOLDER_TYPE_SUFFIX) { - let name = name_ref.name.strip_suffix(PLACEHOLDER_TYPE_SUFFIX).unwrap(); - let name_ref = NamedTypeRef { - id: name_ref.id, - name: name.into(), - target: name_ref.target.clone(), - }; - ( - TypeRef::Named(name_ref.clone()), - name_ref, - name.to_string().into(), - false, - ) - } else { - ( - type_ref.clone(), - name_ref.clone(), - name_ref.name.clone(), - true, - ) - }; let res = type_ref.clone(); + let type_ref = type_ref.clone(); with_store_mut(move |s| -> Result<()> { s.types.push(Type::Ref(type_ref)); Ok(()) })?; - Self::register_type_name(name, name_ref, user_named)?; + Self::register_type_name(name_ref.clone())?; Ok(res) } _ => { @@ -239,27 +216,17 @@ impl Store { // } } - pub fn register_type_name( - name: Rc, - name_ref: NamedTypeRef, - user_named: bool, - ) -> Result<()> { + pub fn register_type_name(name_ref: NamedTypeRef) -> Result<()> { with_store_mut(move |s| -> Result<()> { - if s.type_by_names.contains_key(&name) { + let name = &name_ref.name; + if s.type_by_names.contains_key(name) { return Err(format!("type with name {:?} already exists", name).into()); } - s.type_by_names.insert(name, (name_ref, user_named)); + s.type_by_names.insert(name.clone(), name_ref); Ok(()) }) } - pub fn is_user_named(name: &str) -> Option { - with_store(|s| { - let (_id, user_named) = s.type_by_names.get(name)?; - Some(*user_named) - }) - } - pub fn get_random_seed() -> Option { with_store(|store| store.random_seed) } @@ -428,7 +395,7 @@ impl Store { /// Generate a pub fn for asserting/unwrapping a Type as a specific TypeDef variant /// e.g.: `as_variant!(Struct)` gives -/// ```rust +/// ```ignore /// pub fn as_struct(&self) -> Result> { /// match self.as_type()? { /// Type::Def(TypeDef::Struct(inner)) => Ok(inner), diff --git a/src/typegraph/core/src/lib.rs b/src/typegraph/core/src/lib.rs index 7d6c4f0858..fd65788d3f 100644 --- a/src/typegraph/core/src/lib.rs +++ b/src/typegraph/core/src/lib.rs @@ -4,6 +4,7 @@ pub mod errors; use tg_schema::runtimes::deno::{ContextCheckX, PredefinedFunctionMatData}; use tg_schema::Injection; +use typegraph::NameSource; pub use types::sdk; mod conversion; @@ -234,7 +235,9 @@ impl sdk::core::Handler for Lib { } fn rename_type(type_id: CoreTypeId, new_name: String) -> Result { - TypeId(type_id).named(new_name).map(|t| t.id().0) + TypeId(type_id) + .named(new_name, NameSource::User) + .map(|t| t.id().0) } fn get_type_repr(type_id: CoreTypeId) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs index b74cf923e8..528f28d4e2 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs @@ -4,7 +4,6 @@ use crate::runtimes::prisma::context::PrismaContext; use crate::runtimes::prisma::model::Property; use crate::t::{self, TypeBuilder}; -use crate::types::Named as _; use crate::{errors::Result, types::TypeId}; use super::TypeGen; @@ -13,11 +12,7 @@ pub struct Take; impl TypeGen for Take { fn generate(&self, context: &PrismaContext) -> Result { - t::integer() - .x_min(0) - .build()? - .named(self.name(context)?) - .map(|t| t.id()) + t::integer().x_min(0).build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -29,7 +24,7 @@ pub struct Skip; impl TypeGen for Skip { fn generate(&self, context: &PrismaContext) -> Result { - t::integer().min(0).build_named(self.name(context)?) + t::integer().min(0).build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -52,7 +47,7 @@ impl TypeGen for Distinct { }) .collect(); - t::listx(t::string().enum_(cols)).build_named(self.name(context)?) + t::listx(t::string().enum_(cols)).build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -89,7 +84,7 @@ impl TypeGen for Cursor { let variant = t::struct_().prop(k, id).build()?; variants.push(variant) } - t::union(variants).build_named(self.name(context)?) + t::union(variants).build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs index 8e8b92d0a6..e332f9c0b7 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs @@ -38,7 +38,7 @@ impl TypeGen for CountOutput { } // TODO union - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -88,7 +88,7 @@ impl TypeGen for NumberAggregateOutput { } } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs index e23a52155d..488dc15090 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs @@ -14,7 +14,7 @@ pub struct Count; impl TypeGen for Count { fn generate(&self, context: &PrismaContext) -> Result { - t::optionalx(t::integer()).build_named(self.name(context)?) + t::optionalx(t::integer()).build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs index 0ef7fda229..4c1d9d2f02 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs @@ -15,7 +15,7 @@ impl TypeGen for CompleteFilter { let inner = context.generate(&self.0)?; // TODO and, or ??? t::optionalx(t::unionx![inner, t::struct_().prop("not", inner)]) - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, context: &PrismaContext) -> Result { @@ -32,7 +32,7 @@ impl TypeGen for BooleanFilter { t::struct_().propx("equals", t::boolean())?, t::struct_().propx("not", t::boolean())?, ] - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -74,7 +74,7 @@ impl TypeGen for NumberFilter { t::struct_().prop("_min", base), t::struct_().prop("_max", base), ] - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } else { let type_id = match self.number_type { NumberType::Integer => t::integer().build()?, @@ -95,7 +95,7 @@ impl TypeGen for NumberFilter { t::struct_().prop("in", list_type_id), t::struct_().prop("notIn", list_type_id), ] - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } } @@ -137,7 +137,7 @@ impl TypeGen for StringFilter { .prop("endsWith", opt_type_id) .min(1), ] - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -164,7 +164,7 @@ impl TypeGen for ScalarListFilter { // TODO "isSet": mongo only t::struct_().propx("equals", t::list(self.0))?, ] - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -336,5 +336,5 @@ fn gen_aggregate_filter (String, NumberType)>( ); } - builder.build_named(name) + builder.build_named_p(name) } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs index 627e4e83d5..6ac441bc9e 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs @@ -33,7 +33,7 @@ impl TypeGen for GroupingFields { }) .collect(); - t::listx(t::string().enum_(fields))?.build_named(self.name(context)?) + t::listx(t::string().enum_(fields))?.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -66,7 +66,7 @@ impl TypeGen for Having { t::struct_().propx("OR", t::list(self_ref))?, t::struct_().prop("NOT", self_ref) ] - .build_named(name) + .build_named_p(name) } fn name(&self, _context: &PrismaContext) -> Result { @@ -112,7 +112,7 @@ impl TypeGen for GroupByResult { ) .build()?, ) - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -164,7 +164,7 @@ impl TypeGen for SelectNumbers { } } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs index 4cada0056b..e5e2ce2366 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs @@ -210,7 +210,7 @@ impl TypeGen for InputType { } } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs index 73a00512a3..8a5e75a7d4 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs @@ -91,7 +91,7 @@ impl TypeGen for OrderBy { } } - t::listx(builder)?.build_named(self.name(context)?) + t::listx(builder)?.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -118,7 +118,7 @@ impl TypeGen for SortOrder { fn generate(&self, context: &PrismaContext) -> Result { t::string() .enum_(vec!["asc".to_string(), "desc".to_string()]) - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -132,7 +132,7 @@ impl TypeGen for NullsOrder { fn generate(&self, context: &PrismaContext) -> Result { t::string() .enum_(vec!["first".to_string(), "last".to_string()]) - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -154,7 +154,7 @@ impl TypeGen for Sort { builder.prop("nulls", nulls_order); } - t::optionalx(t::unionx![builder, sort_order])?.build_named(self.name(context)?) + t::optionalx(t::unionx![builder, sort_order])?.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -175,7 +175,7 @@ impl TypeGen for SortByAggregates { builder.prop("_min", sort); builder.prop("_max", sort); - t::optionalx(builder)?.build_named(self.name(context)?) + t::optionalx(builder)?.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { @@ -245,7 +245,7 @@ impl TypeGen for AggregateSorting { .prop("_sum", others) .prop("_min", others) .prop("_max", others) - .build_named(self.name(context)?) + .build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs index 6938a6f471..38cbc14771 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs @@ -73,7 +73,7 @@ impl TypeGen for OutType { } } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs index 79aef2d345..ec24a68471 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs @@ -69,7 +69,7 @@ impl TypeGen for QueryInputType { )?; } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs index e97229497b..e714c38415 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs @@ -55,7 +55,7 @@ impl TypeGen for QueryWhereExpr { builder.prop("OR", and); builder.propx("NOT", t::optional(self_ref))?; - builder.build_named(name) + builder.build_named_p(name) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs index 13f3d806d1..dca1dd86d0 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs @@ -109,7 +109,7 @@ impl TypeGen for Where { } } - builder.build_named(name) + builder.build_named_p(name) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs index d95d49916b..c886695ed1 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs @@ -91,7 +91,7 @@ impl TypeGen for WithNestedCount { builder.propx("_count", count)?; } - builder.build_named(self.name(context)?) + builder.build_named_p(self.name(context)?) } fn name(&self, _context: &PrismaContext) -> Result { diff --git a/src/typegraph/core/src/runtimes/substantial/type_utils.rs b/src/typegraph/core/src/runtimes/substantial/type_utils.rs index 35cb4a8ce0..f4b3480b88 100644 --- a/src/typegraph/core/src/runtimes/substantial/type_utils.rs +++ b/src/typegraph/core/src/runtimes/substantial/type_utils.rs @@ -94,16 +94,20 @@ fn filter_term_variants() -> Result> { .into_iter() .map(|op| { save(op, |n| { - t::struct_().prop(op, value_to_comp_against).build_named(n) + t::struct_() + .prop(op, value_to_comp_against) + .build_named_subs(n) }) }) .collect::>>()?; - let op_value = save("op", |n| t::either(ops.clone().into_iter()).build_named(n))?; + let op_value = save("op", |n| { + t::either(ops.clone().into_iter()).build_named_subs(n) + })?; let special = ["run_id", "started_at", "ended_at", "status"] .into_iter() - .map(|sp| save(sp, |n| t::struct_().prop(sp, op_value).build_named(n))) + .map(|sp| save(sp, |n| t::struct_().prop(sp, op_value).build_named_subs(n))) .collect::>>()?; let mut variants = vec![]; @@ -124,19 +128,19 @@ pub fn filter_expr_ty() -> Result { loc_ref("not_expr")?, ]); - let expr = save("expr", |n| t::either(op_expr_variants).build_named(n))?; - let expr_list = save("list_expr", |n| t::listx(expr).build_named(n))?; + let expr = save("expr", |n| t::either(op_expr_variants).build_named_subs(n))?; + let expr_list = save("list_expr", |n| t::listx(expr).build_named_subs(n))?; let _and = save("and_expr", |n| { - t::struct_().prop("and", expr_list).build_named(n) + t::struct_().prop("and", expr_list).build_named_subs(n) })?; let _or = save("or_expr", |n| { - t::struct_().prop("or", expr_list).build_named(n) + t::struct_().prop("or", expr_list).build_named_subs(n) })?; let _not = save("not_expr", |n| { - t::struct_().prop("not", expr).build_named(n) + t::struct_().prop("not", expr).build_named_subs(n) })?; t::struct_() diff --git a/src/typegraph/core/src/t.rs b/src/typegraph/core/src/t.rs index 97c971a319..88b80505f1 100644 --- a/src/typegraph/core/src/t.rs +++ b/src/typegraph/core/src/t.rs @@ -7,9 +7,11 @@ use crate::sdk::core::{ Handler, TypeEither, TypeFloat, TypeFunc, TypeInteger, TypeList, TypeOptional, TypeString, TypeStruct, TypeUnion, }; +use crate::typegraph::NameSource; use crate::types::RefAttr; use crate::types::TypeRefBuilder; use crate::types::{Named as _, TypeId, TypeRef}; +use ordered_float::NotNan; #[cfg(test)] use tg_schema::{Injection, InjectionData, SingleValue}; @@ -21,8 +23,21 @@ pub trait TypeBuilder { Ok(optional(self.build()?)) } + fn build_named_p(&self, name: impl Into) -> Result { + Ok(self.build()?.named(name, NameSource::PrismaTypeGen)?.id()) + } + fn build_named_subs(&self, name: impl Into) -> Result { + Ok(self.build()?.named(name, NameSource::Substantial)?.id()) + } + + #[allow(unused)] + fn build_named_s(&self, name: impl Into, name_source: NameSource) -> Result { + Ok(self.build()?.named(name, name_source)?.id()) + } + + #[allow(unused)] fn build_named(&self, name: impl Into) -> Result { - Ok(self.build()?.named(name)?.id()) + Ok(self.build()?.named(name, NameSource::User)?.id()) } #[cfg(test)] @@ -168,25 +183,25 @@ impl Default for TypeFloat { impl FloatBuilder { #[allow(dead_code)] pub fn min(mut self, min: f64) -> Self { - self.data.min = Some(min); + self.data.min = Some(NotNan::new(min).unwrap()); self } #[allow(dead_code)] pub fn max(mut self, max: f64) -> Self { - self.data.max = Some(max); + self.data.max = Some(NotNan::new(max).unwrap()); self } #[allow(dead_code)] pub fn x_min(mut self, min: f64) -> Self { - self.data.exclusive_minimum = Some(min); + self.data.exclusive_minimum = Some(NotNan::new(min).unwrap()); self } #[allow(dead_code)] pub fn x_max(mut self, max: f64) -> Self { - self.data.exclusive_maximum = Some(max); + self.data.exclusive_maximum = Some(NotNan::new(max).unwrap()); self } } diff --git a/src/typegraph/core/src/typedef/float.rs b/src/typegraph/core/src/typedef/float.rs index 60b827c53e..680c7565d3 100644 --- a/src/typegraph/core/src/typedef/float.rs +++ b/src/typegraph/core/src/typedef/float.rs @@ -4,7 +4,6 @@ use std::hash::Hash as _; use errors::Result; -use ordered_float::OrderedFloat; use tg_schema::types::{FloatTypeData, TypeNode}; use crate::{ @@ -71,16 +70,16 @@ impl Hashable for TypeFloat { _tg: &mut TypegraphContext, ) -> Result<()> { "float".hash(hasher); - self.min.map(OrderedFloat).hash(hasher); - self.max.map(OrderedFloat).hash(hasher); - self.exclusive_minimum.map(OrderedFloat).hash(hasher); - self.exclusive_maximum.map(OrderedFloat).hash(hasher); - self.multiple_of.map(OrderedFloat).hash(hasher); + self.min.hash(hasher); + self.max.hash(hasher); + self.exclusive_minimum.hash(hasher); + self.exclusive_maximum.hash(hasher); + self.multiple_of.hash(hasher); if let Some(enumeration) = &self.enumeration { "enum".hash(hasher); for value in enumeration { - OrderedFloat(*value).hash(hasher); + (*value).hash(hasher); } } diff --git a/src/typegraph/core/src/typegraph.rs b/src/typegraph/core/src/typegraph.rs index 98599b1b6b..e61f8a7d2f 100644 --- a/src/typegraph/core/src/typegraph.rs +++ b/src/typegraph/core/src/typegraph.rs @@ -19,7 +19,7 @@ use crate::{ use indexmap::IndexMap; use std::cell::RefCell; use std::collections::hash_map::Entry; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use std::hash::Hasher as _; use std::path::{Path, PathBuf}; use std::rc::Rc; @@ -48,6 +48,13 @@ struct RuntimeContexts { prisma_typegen_cache: Rc>>, } +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum NameSource { + User, + PrismaTypeGen, + Substantial, +} + #[derive(Default)] pub struct TypegraphContext { name: String, @@ -60,7 +67,7 @@ pub struct TypegraphContext { mapping: IdMapping, runtime_contexts: RuntimeContexts, saved_store_state: Option, - user_named_types: HashSet, + named_types: HashMap, } thread_local! { @@ -235,12 +242,28 @@ pub fn serialize(params: SerializeParams) -> Result<(String, Vec)> // dedup_types(&mut tg); + tracing::info!("postprocessing typegraph..."); + TypegraphPostProcessor::new(params).postprocess(&mut tg)?; NamingProcessor { - user_named: ctx.user_named_types, + named_types: &ctx.named_types, } .postprocess(&mut tg)?; + tracing::info!("optimizing typegraph..."); + + let tg = tg_optimize::OptimizeOptions::default() + .preserve( + ctx.named_types + .iter() + .filter_map(|(idx, s)| match s { + NameSource::User => Some(*idx), + _ => None, + }) + .collect(), + ) + .optimize(tg.into()); + let artifacts = tg .meta .artifacts @@ -367,12 +390,17 @@ impl TypegraphContext { // we remove the name before hashing if it's not // user named let xdef = type_id.as_xdef()?; - let is_user_named = if let Some(name) = xdef.name.as_deref() { - Store::is_user_named(name).unwrap_or(false) - } else { - false - }; - let xdef = type_id.as_xdef()?; + let name_source = + xdef.name + .as_deref() + .and_then(Store::get_type_by_name) + .map(|named_type| { + if named_type.name_source == NameSource::User { + NameSource::User + } else { + NameSource::PrismaTypeGen + } + }); let hash = self.hash_type(type_id)?; match self.mapping.hash_to_type.entry(hash) { @@ -391,8 +419,8 @@ impl TypegraphContext { let type_node = xdef.type_def.clone().convert(self, xdef)?; self.types[idx] = Some(type_node); - if is_user_named { - self.user_named_types.insert(idx as u32); + if let Some(name_source) = name_source { + self.named_types.insert(idx as u32, name_source); } Ok((idx as u32).into()) diff --git a/src/typegraph/core/src/types/sdk/aws.rs b/src/typegraph/core/src/types/sdk/aws.rs index 03c6ac11dc..0a26cc2713 100644 --- a/src/typegraph/core/src/types/sdk/aws.rs +++ b/src/typegraph/core/src/types/sdk/aws.rs @@ -2,6 +2,8 @@ // SPDX-License-Identifier: MPL-2.0 use super::core::{MaterializerId, RuntimeId}; +#[allow(unused)] +use ordered_float::NotNan; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/typegraph/core/src/types/sdk/core.rs b/src/typegraph/core/src/types/sdk/core.rs index ded5fbccbe..a688e54623 100644 --- a/src/typegraph/core/src/types/sdk/core.rs +++ b/src/typegraph/core/src/types/sdk/core.rs @@ -1,6 +1,8 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 +#[allow(unused)] +use ordered_float::NotNan; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] @@ -95,12 +97,12 @@ pub struct TypeInteger { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TypeFloat { - pub min: Option, - pub max: Option, - pub exclusive_minimum: Option, - pub exclusive_maximum: Option, - pub multiple_of: Option, - pub enumeration: Option>, + pub min: Option>, + pub max: Option>, + pub exclusive_minimum: Option>, + pub exclusive_maximum: Option>, + pub multiple_of: Option>, + pub enumeration: Option>>, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/typegraph/core/src/types/sdk/runtimes.rs b/src/typegraph/core/src/types/sdk/runtimes.rs index ec9999701a..75340f799c 100644 --- a/src/typegraph/core/src/types/sdk/runtimes.rs +++ b/src/typegraph/core/src/types/sdk/runtimes.rs @@ -2,6 +2,8 @@ // SPDX-License-Identifier: MPL-2.0 use super::core::{FuncParams, MaterializerId, RuntimeId, TypeId}; +#[allow(unused)] +use ordered_float::NotNan; use serde::{Deserialize, Serialize}; pub type Idempotency = bool; diff --git a/src/typegraph/core/src/types/sdk/utils.rs b/src/typegraph/core/src/types/sdk/utils.rs index c4633a6a22..1af39ce56b 100644 --- a/src/typegraph/core/src/types/sdk/utils.rs +++ b/src/typegraph/core/src/types/sdk/utils.rs @@ -2,6 +2,8 @@ // SPDX-License-Identifier: MPL-2.0 use super::core::TypeId; +#[allow(unused)] +use ordered_float::NotNan; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/typegraph/core/src/types/type_ref.rs b/src/typegraph/core/src/types/type_ref.rs index 8514220590..d117b5c618 100644 --- a/src/typegraph/core/src/types/type_ref.rs +++ b/src/typegraph/core/src/types/type_ref.rs @@ -7,6 +7,7 @@ use std::rc::Rc; use super::Type; use crate::errors::Result; use crate::global_store::Store; +use crate::typegraph::NameSource; use crate::types::{TypeDef, TypeDefExt as _, TypeId}; use serde::{Deserialize, Serialize}; use tg_schema::Injection; @@ -78,6 +79,7 @@ pub struct NamedTypeRef { pub id: TypeId, pub name: Rc, pub target: Box, + pub name_source: NameSource, } #[derive(Clone, Debug)] @@ -110,6 +112,7 @@ pub struct IndirectRefBuilder { pub struct NamedRefBuilder { pub name: Rc, target: Type, + name_source: NameSource, } pub enum FlatTypeRefTarget { @@ -207,11 +210,12 @@ impl TypeRef { attributes: attributes.into_iter().map(Rc::new).collect(), }) } - pub fn named(name: impl Into, target: Type) -> TypeRefBuilder { + pub fn named(name: impl Into, target: Type, name_source: NameSource) -> TypeRefBuilder { let name: String = name.into(); TypeRefBuilder::Named(NamedRefBuilder { name: name.into(), target, + name_source, }) } } @@ -238,6 +242,7 @@ impl TypeRefBuilder { id, name: builder.name, target: Box::new(builder.target), + name_source: builder.name_source, }), } } @@ -370,7 +375,7 @@ impl FindAttribute for RefAttrs { } pub trait Named { - fn named(self, name: impl Into) -> Result; + fn named(self, name: impl Into, name_source: NameSource) -> Result; } impl Named for T @@ -378,7 +383,7 @@ where T: TryInto, crate::errors::TgError: From<>::Error>, { - fn named(self, name: impl Into) -> Result { - TypeRef::named(name, self.try_into()?).register() + fn named(self, name: impl Into, name_source: NameSource) -> Result { + TypeRef::named(name, self.try_into()?, name_source).register() } } diff --git a/src/typegraph/core/src/types/type_ref/xdef.rs b/src/typegraph/core/src/types/type_ref/xdef.rs index 613c5c9635..7c11ba9f0f 100644 --- a/src/typegraph/core/src/types/type_ref/xdef.rs +++ b/src/typegraph/core/src/types/type_ref/xdef.rs @@ -27,7 +27,7 @@ impl ExtendedTypeDef { hasher: &mut crate::conversion::hash::Hasher, tg: &mut TypegraphContext, ) -> Result<()> { - if let Some(name) = self.name.as_deref() { + if let Some(name) = self.name.as_ref() { "named".hash(hasher); name.hash(hasher); return Ok(()); diff --git a/src/typegraph/core/src/utils/postprocess/naming.rs b/src/typegraph/core/src/utils/postprocess/naming.rs index 722b6cbb3c..e13a63b514 100644 --- a/src/typegraph/core/src/utils/postprocess/naming.rs +++ b/src/typegraph/core/src/utils/postprocess/naming.rs @@ -13,16 +13,16 @@ use tg_schema::{ StringFormat, TypeNode, Typegraph, }; -use crate::errors::TgError; +use crate::{errors::TgError, typegraph::NameSource}; -pub struct NamingProcessor { - pub user_named: HashSet, +pub struct NamingProcessor<'un> { + pub named_types: &'un HashMap, } -impl super::PostProcessor for NamingProcessor { +impl super::PostProcessor for NamingProcessor<'_> { fn postprocess(self, tg: &mut tg_schema::Typegraph) -> Result<(), crate::errors::TgError> { let cx = VisitContext { tg, - user_named: self.user_named, + named_types: self.named_types.keys().cloned().collect(), }; let TypeNode::Object { @@ -64,9 +64,9 @@ impl super::PostProcessor for NamingProcessor { } } -struct VisitContext<'a> { - tg: &'a Typegraph, - user_named: HashSet, +struct VisitContext<'tg> { + tg: &'tg Typegraph, + named_types: HashSet, } struct VisitCollector { named_types: HashMap>, @@ -262,7 +262,7 @@ fn collect_ref_info( id: u32, visited: &mut HashSet, ) -> anyhow::Result<()> { - if cx.user_named.contains(&id) || visited.contains(&id) { + if cx.named_types.contains(&id) || visited.contains(&id) { return Ok(()); } @@ -320,7 +320,7 @@ fn collect_ref_info( fn gen_name(cx: &VisitContext, acc: &mut VisitCollector, id: u32, ty_name: &str) -> Rc { let node = &cx.tg.types[id as usize]; - let name: Rc = if cx.user_named.contains(&id) { + let name: Rc = if cx.named_types.contains(&id) { node.base().title.clone().into() } else { macro_rules! join_if_ok { diff --git a/src/typegraph/graph/Cargo.toml b/src/typegraph/graph/Cargo.toml index 094cf8c4a3..79f0a9d000 100644 --- a/src/typegraph/graph/Cargo.toml +++ b/src/typegraph/graph/Cargo.toml @@ -13,6 +13,7 @@ paste.workspace = true color-eyre.workspace = true tracing.workspace = true derive_more.workspace = true +ordered-float.workspace = true [dev-dependencies] insta.workspace = true diff --git a/src/typegraph/graph/src/types/float.rs b/src/typegraph/graph/src/types/float.rs index e119b66b1c..7dabc8736a 100644 --- a/src/typegraph/graph/src/types/float.rs +++ b/src/typegraph/graph/src/types/float.rs @@ -2,15 +2,16 @@ // SPDX-License-Identifier: MPL-2.0 use super::interlude::*; +use ordered_float::NotNan; #[derive(Debug)] pub struct FloatType { pub base: TypeBase, - pub minimum: Option, - pub maximum: Option, - pub exclusive_minimum: Option, - pub exclusive_maximum: Option, - pub multiple_of: Option, + pub minimum: Option>, + pub maximum: Option>, + pub exclusive_minimum: Option>, + pub exclusive_maximum: Option>, + pub multiple_of: Option>, } impl TypeNode for Arc { diff --git a/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-2.snap b/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-2.snap index ce2da62c52..d7ca31a05e 100644 --- a/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-2.snap +++ b/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-2.snap @@ -5,5 +5,5 @@ expression: "tg.functions.iter().map(|(idx, func)|\n { (idx, func.nam { 1: "root_one_fn", 8: "root_two_fn", - 10: "root_three_fn", + 9: "root_three_fn", } diff --git a/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-3.snap b/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-3.snap index c98ea77f8d..5cac64a756 100644 --- a/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-3.snap +++ b/src/typegraph/graph/tests/snapshots/expanded__expanded_graph-3.snap @@ -11,12 +11,4 @@ expression: "tg.input_types.iter().map(|(idx, ty)|\n { (idx, (ty.tag( "string", "string_3fb09", ), - Ty_9/0: ( - "object", - "TwoInput", - ), - Ty_11/0: ( - "object", - "root_three_fn_input", - ), } diff --git a/src/typegraph/optimize/Cargo.toml b/src/typegraph/optimize/Cargo.toml new file mode 100644 index 0000000000..6f38169f99 --- /dev/null +++ b/src/typegraph/optimize/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "tg_optimize" +version.workspace = true +edition.workspace = true + +[dependencies] +color-eyre.workspace = true +serde.workspace = true +serde_json.workspace = true +tg_schema.workspace = true diff --git a/src/typegraph/optimize/src/dedup.rs b/src/typegraph/optimize/src/dedup.rs new file mode 100644 index 0000000000..d283143c37 --- /dev/null +++ b/src/typegraph/optimize/src/dedup.rs @@ -0,0 +1,331 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::{ + collections::{BTreeMap, HashMap}, + hash::{DefaultHasher, Hash as _, Hasher as _}, + sync::Arc, +}; +use tg_schema::{ + runtimes::{prisma::Property, KnownRuntime, TGRuntime}, + TypeNode, Typegraph, +}; + +use crate::TypeIdx; + +#[derive(Debug)] +pub struct DedupEngine { + tg: Arc, + components: HashMap>, + component_roots: Vec, + hashes: Vec>, + buckets: HashMap>, +} + +impl From for DedupEngine { + fn from(k: crate::Kosaraju) -> Self { + let mut hashes = Vec::new(); + hashes.resize(k.one.tg.types.len(), None); + let component_roots: Vec<_> = k.component_roots.iter().map(|idx| idx.unwrap()).collect(); + Self { + tg: k.one.tg.clone(), + components: k.components, + component_roots, + hashes, + buckets: HashMap::new(), + } + } +} + +impl DedupEngine { + fn register_hash(&mut self, idx: TypeIdx, hash: u64) -> u64 { + let prev = self.hashes[idx.size()].replace(hash); + assert!(prev.is_none()); + self.buckets + .entry(hash) + .and_modify(|b| b.push(idx)) + .or_insert_with(|| vec![idx]); + hash + } + + fn hash_type(&mut self, idx: TypeIdx) -> u64 { + let i = idx.size(); + if let Some(h) = self.hashes[i] { + return h; + } + + let root_idx = self.component_roots[i]; + let same_component = self.components.get(&root_idx).unwrap().len(); + if same_component > 1 { + let mut hasher = DefaultHasher::new(); + "idx".hash(&mut hasher); + idx.hash(&mut hasher); + let res = hasher.finish(); + return self.register_hash(idx, res); + } + + let tg = self.tg.clone(); + let type_node = &tg.types[idx.size()]; + + use TypeNode as N; + let mut hasher = DefaultHasher::new(); + match &type_node { + N::Boolean { .. } => { + "boolean".hash(&mut hasher); + } + N::Integer { data, base } => { + "integer".hash(&mut hasher); + data.hash(&mut hasher); + let mut enumeration = base.enumeration.clone(); + if let Some(e) = enumeration.as_mut() { + e.sort() + } + enumeration.hash(&mut hasher); + } + N::Float { data, .. } => { + "float".hash(&mut hasher); + data.hash(&mut hasher); + } + N::String { data, base } => { + "string".hash(&mut hasher); + data.hash(&mut hasher); + let mut enumeration = base.enumeration.clone(); + if let Some(e) = enumeration.as_mut() { + e.sort(); + } + enumeration.hash(&mut hasher); + } + N::File { data, .. } => { + "file".hash(&mut hasher); + let mut data = data.clone(); + if let Some(m) = data.mime_types.as_mut() { + m.sort(); + } + data.hash(&mut hasher); + } + + N::Optional { data, .. } => { + "optional".hash(&mut hasher); + data.default_value.hash(&mut hasher); + self.hash_type(data.item.into()).hash(&mut hasher); + } + + N::List { data, .. } => { + "list".hash(&mut hasher); + data.max_items.hash(&mut hasher); + data.min_items.hash(&mut hasher); + data.unique_items.hash(&mut hasher); + self.hash_type(data.items.into()).hash(&mut hasher); + } + + N::Object { data, .. } => { + "object".hash(&mut hasher); + data.id.hash(&mut hasher); + let mut required = data.required.clone(); + required.sort(); + let policies: BTreeMap<_, _> = data.policies.iter().collect(); // TODO + policies.hash(&mut hasher); + data.additional_props.hash(&mut hasher); + for (k, ty) in &data.properties { + k.hash(&mut hasher); + self.hash_type(ty.into()).hash(&mut hasher); + } + } + + N::Union { data, .. } => { + "union".hash(&mut hasher); + let mut variants: Vec<_> = data + .any_of + .iter() + .map(|ty| self.hash_type((*ty).into())) + .collect(); + variants.sort(); + variants.hash(&mut hasher); + } + + N::Either { data, .. } => { + "either".hash(&mut hasher); + let mut variants: Vec<_> = data + .one_of + .iter() + .map(|ty| self.hash_type((*ty).into())) + .collect(); + variants.sort(); + variants.hash(&mut hasher); + } + + N::Function { .. } => { + "function".hash(&mut hasher); + // TODO do we need to deduplication functions?? + idx.hash(&mut hasher); + } + + N::Any { .. } => unreachable!(), + } + + let res = hasher.finish(); + self.register_hash(idx, res) + } + + pub fn hash_types(&mut self) { + for idx in 0..self.tg.types.len() { + let idx = TypeIdx(idx as u32); + self.hash_type(idx); + } + } + + pub fn get_converted_typegraph(&self) -> Typegraph { + let map = self.generate_conversion_map(); + + let types = map + .rev + .iter() + .map(|hash| { + let bucket = self.buckets.get(hash).unwrap(); + let sample_idx = bucket[0]; + // FIXME we have multiple names for the type, but only one is used + // let names: Vec<_> = bucket.iter().map(|idx| { + // let type_node = &self.tg.types[idx.size()]; + // type_node.base().title + // }).collect(); + let type_node = &self.tg.types[sample_idx.size()]; + map.convert_type(type_node) + }) + .collect(); + + let mut runtimes = self.tg.runtimes.clone(); + for rt in &mut runtimes { + if let TGRuntime::Known(KnownRuntime::Prisma(d)) = rt { + for m in &mut d.models { + map.update(&mut m.type_idx); + + for prop in &mut m.props { + match prop { + Property::Scalar(scalar_prop) => { + map.update(&mut scalar_prop.type_idx); + } + Property::Relationship(rel_prop) => { + map.update(&mut rel_prop.type_idx); + } + } + } + } + + for rel in &mut d.relationships { + map.update(&mut rel.left.type_idx); + map.update(&mut rel.right.type_idx); + } + } + } + + let mut auths = self.tg.meta.auths.clone(); + for auth in &mut auths { + auth.auth_data + .entry("profiler".to_string()) + .and_modify(|v| { + let mut idx: u32 = serde_json::from_value(v.clone()).unwrap(); + map.update(&mut idx); + *v = serde_json::to_value(idx).unwrap(); + }); + } + + let mut namespaces = self.tg.meta.namespaces.clone(); + for ns in &mut namespaces { + map.update(ns); + } + + let mut meta = self.tg.meta.clone(); + meta.auths = auths; + meta.namespaces = namespaces; + + Typegraph { + types, + materializers: self.tg.materializers.clone(), + runtimes, + policies: self.tg.policies.clone(), + meta, + path: self.tg.path.clone(), + deps: self.tg.deps.clone(), + } + } + + pub fn generate_conversion_map(&self) -> ConversionMap { + let mut rev = Vec::new(); + let mut hash_to_idx = HashMap::new(); + + let direct: Vec<_> = self + .hashes + .iter() + .map(|h| { + let hash = h.unwrap(); + *hash_to_idx.entry(hash).or_insert_with(|| { + let idx = TypeIdx(rev.len() as u32); + rev.push(hash); + idx + }) + }) + .collect(); + + ConversionMap { direct, rev } + } +} + +pub struct ConversionMap { + direct: Vec, // old index -> new index + rev: Vec, // new index -> hash +} + +impl ConversionMap { + fn convert_type(&self, ty: &TypeNode) -> TypeNode { + let mut type_node = ty.clone(); + use TypeNode as N; + match &mut type_node { + N::Boolean { .. } + | N::Integer { .. } + | N::Float { .. } + | N::String { .. } + | N::File { .. } => (), + + N::Optional { data, .. } => { + self.update(&mut data.item); + } + + N::List { data, .. } => { + self.update(&mut data.items); + } + + N::Object { data, .. } => { + for prop_ty in data.properties.values_mut() { + self.update(prop_ty); + } + } + + N::Union { data, .. } => { + for ty in data.any_of.iter_mut() { + self.update(ty); + } + } + + N::Either { data, .. } => { + for ty in data.one_of.iter_mut() { + self.update(ty); + } + } + + N::Function { data, .. } => { + self.update(&mut data.input); + self.update(&mut data.output); + if let Some(pt) = data.parameter_transform.as_mut() { + self.update(&mut pt.resolver_input); + } + } + + N::Any { .. } => unreachable!(), + } + type_node + } + + fn update(&self, idx: &mut u32) { + *idx = self.direct[*idx as usize].0; + } +} diff --git a/src/typegraph/optimize/src/kosaraju.rs b/src/typegraph/optimize/src/kosaraju.rs new file mode 100644 index 0000000000..433a14a277 --- /dev/null +++ b/src/typegraph/optimize/src/kosaraju.rs @@ -0,0 +1,104 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use crate::{DirectedGraph as _, TypeIdx}; +use std::{collections::HashMap, rc::Rc, sync::Arc}; +use tg_schema::Typegraph; + +pub struct KosarajuOne { + pub tg: Arc, + transpose: Vec>, + list: Vec, + visited: Vec, +} + +impl KosarajuOne { + pub fn new(tg: Arc) -> Self { + let mut transpose = Vec::new(); + transpose.resize_with(tg.types.len(), Vec::new); + let mut visited = Vec::new(); + visited.resize(tg.types.len(), false); + Self { + tg, + transpose, + list: Vec::new(), + visited, + } + } + + fn run(&mut self) { + for idx in 0..self.tg.types.len() { + let idx = TypeIdx(idx as u32); + self.visit(idx); + } + } + + fn visit(&mut self, idx: TypeIdx) { + if !self.is_visited(idx) { + self.set_visited(idx); + for v in self.tg.out_neighbours(&idx) { + self.visit(v); + self.register_in_neighbour(v, idx); + } + self.list.push(idx); + } + } + + fn register_in_neighbour(&mut self, idx: TypeIdx, neighbour: TypeIdx) { + self.transpose[idx.size()].push(neighbour); + } + + fn is_visited(&self, type_idx: TypeIdx) -> bool { + self.visited[type_idx.size()] + } + + fn set_visited(&mut self, type_idx: TypeIdx) { + self.visited[type_idx.size()] = true; + } +} + +pub struct Kosaraju { + pub one: Rc, + pub components: HashMap>, + pub component_roots: Vec>, +} + +impl Kosaraju { + pub fn new(tg: Arc) -> Self { + let mut one = KosarajuOne::new(tg); + one.run(); + let mut assigned = Vec::new(); + assigned.resize(one.tg.types.len(), None); + + Self { + one: one.into(), + components: HashMap::new(), + component_roots: assigned, + } + } + + pub fn run(&mut self) { + let one = self.one.clone(); + for idx in one.list.iter().rev().cloned() { + self.assign(idx, idx); + } + } + + fn assign(&mut self, vertex: TypeIdx, root: TypeIdx) { + if !self.is_assigned(vertex) { + self.component_roots[vertex.size()] = Some(root); + self.components + .entry(root) + .and_modify(|l| l.push(vertex)) + .or_insert_with(|| vec![vertex]); + let one = self.one.clone(); + for idx in &one.transpose[vertex.size()] { + self.assign(*idx, root); + } + } + } + + fn is_assigned(&self, vertex: TypeIdx) -> bool { + self.component_roots[vertex.size()].is_some() + } +} diff --git a/src/typegraph/optimize/src/lib.rs b/src/typegraph/optimize/src/lib.rs new file mode 100644 index 0000000000..9b6131acab --- /dev/null +++ b/src/typegraph/optimize/src/lib.rs @@ -0,0 +1,112 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +/** + * This crate implement the optimization step for the serialized typegraph. + * It runs in three steps. + * - Step 1: We run the Kosaraju's algorithm to partition the graph (only the + * type related vertices) into strongly connected components. + * - Step 2: We assign a bucket for each type, according to its hash. The + * hash function does not currently try to deduplicate types that belong + * in a strongly connected component of size larger than one. + * - Step 3: To each bucket is assigned a type index, then we translate all + * the type references in the typegraph into the new type indices. + */ +mod dedup; +mod kosaraju; + +use std::{ + collections::{BTreeMap, HashSet}, + sync::Arc, +}; + +use kosaraju::Kosaraju; +use tg_schema::{TypeNode, Typegraph}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] +pub struct TypeIdx(u32); + +impl From for TypeIdx { + fn from(value: u32) -> Self { + Self(value) + } +} +impl From<&u32> for TypeIdx { + fn from(value: &u32) -> Self { + Self(*value) + } +} + +impl TypeIdx { + pub fn size(&self) -> usize { + self.0 as usize + } +} + +#[derive(Default)] +pub struct OptimizeOptions { + preserved_types: HashSet, +} + +impl OptimizeOptions { + pub fn preserve(mut self, preserved_types: HashSet) -> Self { + self.preserved_types = preserved_types; + self + } + + pub fn optimize(&self, tg: Arc) -> Typegraph { + let mut k = Kosaraju::new(tg); + k.run(); + + let mut sizes = BTreeMap::new(); + for c in &k.components { + sizes.entry(c.1.len()).and_modify(|l| *l += 1).or_insert(1); + } + + let mut dedup = crate::dedup::DedupEngine::from(k); + dedup.hash_types(); + dedup.get_converted_typegraph() + } +} + +trait DirectedGraph { + type VertexRef; + fn out_neighbours(&self, v: &Self::VertexRef) -> Vec; +} + +impl DirectedGraph for Typegraph { + type VertexRef = TypeIdx; + + fn out_neighbours(&self, v: &TypeIdx) -> Vec { + let type_node = &self.types[v.size()]; + + use TypeNode as N; + match type_node { + N::Boolean { .. } + | N::Integer { .. } + | N::Float { .. } + | N::String { .. } + | N::File { .. } => vec![], + + N::Optional { data, .. } => vec![data.item.into()], + + N::List { data, .. } => vec![data.items.into()], + + N::Object { data, .. } => data.properties.values().map(|v| v.into()).collect(), + + N::Union { data, .. } => data.any_of.iter().map(|v| v.into()).collect(), + + N::Either { data, .. } => data.one_of.iter().map(|v| v.into()).collect(), + + N::Function { data, .. } => { + let mut res = vec![data.input.into(), data.output.into()]; + if let Some(pt) = &data.parameter_transform { + res.push(pt.resolver_input.into()); + } + res + } + + N::Any { .. } => unreachable!(), + } + } +} diff --git a/src/typegraph/optimize/src/main.rs b/src/typegraph/optimize/src/main.rs new file mode 100644 index 0000000000..7fa220a334 --- /dev/null +++ b/src/typegraph/optimize/src/main.rs @@ -0,0 +1,16 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::sync::Arc; + +use tg_schema::Typegraph; + +fn main() -> color_eyre::eyre::Result<()> { + let mut buffer = String::new(); + std::io::stdin().read_line(&mut buffer)?; + let tg: Typegraph = serde_json::from_str(&buffer)?; + let opt_tg = tg_optimize::OptimizeOptions::default().optimize(Arc::new(tg)); + println!("{}", serde_json::to_string(&opt_tg)?); + + Ok(()) +} diff --git a/src/typegraph/schema/Cargo.toml b/src/typegraph/schema/Cargo.toml index 7ad1b411d5..fe32a4530b 100644 --- a/src/typegraph/schema/Cargo.toml +++ b/src/typegraph/schema/Cargo.toml @@ -4,22 +4,9 @@ version.workspace = true edition.workspace = true [dependencies] -# patterns anyhow.workspace = true -# itertools.workspace = true -# indoc.workspace = true -# thiserror.workspace = true - - -# encoding -# base64.workspace = true -# flate2.workspace = true -# tar.workspace = true - serde.workspace = true serde_json = { workspace = true, features = ["preserve_order"] } serde_with.workspace = true - - -# ds indexmap.workspace = true +ordered-float.workspace = true diff --git a/src/typegraph/schema/src/lib.rs b/src/typegraph/schema/src/lib.rs index 266bfae9d5..9f25739c14 100644 --- a/src/typegraph/schema/src/lib.rs +++ b/src/typegraph/schema/src/lib.rs @@ -132,7 +132,7 @@ pub struct Policy { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] pub struct PolicyIndicesByEffect { pub read: Option, pub create: Option, @@ -141,7 +141,7 @@ pub struct PolicyIndicesByEffect { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] #[serde(untagged)] pub enum PolicyIndices { Policy(u32), diff --git a/src/typegraph/schema/src/types.rs b/src/typegraph/schema/src/types.rs index 8338ebbed1..ae6d243e13 100644 --- a/src/typegraph/schema/src/types.rs +++ b/src/typegraph/schema/src/types.rs @@ -5,6 +5,7 @@ use std::collections::BTreeMap; use anyhow::Result; use indexmap::IndexMap; +use ordered_float::NotNan; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use std::hash::Hash; @@ -61,6 +62,7 @@ pub enum Injection { #[skip_serializing_none] #[derive(Serialize, Deserialize, Clone, Debug)] +#[serde(rename_all = "camelCase")] pub struct TypeNodeBase { pub title: String, #[serde(default)] @@ -78,18 +80,18 @@ pub struct OptionalTypeData { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] #[serde(rename_all = "camelCase")] pub struct FloatTypeData { - pub minimum: Option, - pub maximum: Option, - pub exclusive_minimum: Option, - pub exclusive_maximum: Option, - pub multiple_of: Option, + pub minimum: Option>, + pub maximum: Option>, + pub exclusive_minimum: Option>, + pub exclusive_maximum: Option>, + pub multiple_of: Option>, } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] #[serde(rename_all = "camelCase")] pub struct IntegerTypeData { // we use i32 as GraphQL spec only support 32-bit integers (Int) @@ -100,7 +102,7 @@ pub struct IntegerTypeData { pub multiple_of: Option, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash)] #[serde(rename_all = "kebab-case")] pub enum StringFormat { Uuid, @@ -132,7 +134,7 @@ impl core::fmt::Display for StringFormat { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] #[serde(rename_all = "camelCase")] pub struct StringTypeData { pub min_length: Option, @@ -142,7 +144,7 @@ pub struct StringTypeData { } #[skip_serializing_none] -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash)] #[serde(rename_all = "camelCase")] pub struct FileTypeData { pub min_size: Option, diff --git a/src/typegraph/schema/src/validator/types.rs b/src/typegraph/schema/src/validator/types.rs index f60545adb1..e752bac896 100644 --- a/src/typegraph/schema/src/validator/types.rs +++ b/src/typegraph/schema/src/validator/types.rs @@ -174,31 +174,31 @@ impl EnsureSubtypeOf for IntegerTypeData { ) { ensure_subtype_of_for_min( self.minimum.map(|m| m as f64), - other.minimum, + other.minimum.map(|m| m.into_inner()), "minimum", errors, ); ensure_subtype_of_for_max( self.maximum.map(|m| m as f64), - other.maximum, + other.maximum.map(|n| n.into_inner()), "maximum", errors, ); ensure_subtype_of_for_min( self.exclusive_minimum.map(|m| m as f64), - other.exclusive_minimum, + other.exclusive_minimum.map(|n| n.into_inner()), "exclusive_minimum", errors, ); ensure_subtype_of_for_max( self.exclusive_maximum.map(|m| m as f64), - other.exclusive_maximum, + other.exclusive_maximum.map(|n| n.into_inner()), "exclusive_maximum", errors, ); ensure_subtype_of_for_multiple_of( self.multiple_of.map(|m| m as f64), - other.multiple_of, + other.multiple_of.map(|n| n.into_inner()), "multiple_of", errors, ); diff --git a/src/typegraph/schema/src/validator/value.rs b/src/typegraph/schema/src/validator/value.rs index 58d5a57fe4..7c7ea4c4d7 100644 --- a/src/typegraph/schema/src/validator/value.rs +++ b/src/typegraph/schema/src/validator/value.rs @@ -79,19 +79,19 @@ impl Typegraph { bail!("Float value {value:?} cannot be stored in f64"); }; if let Some(min) = data.minimum { - number_validator::expect_min(min, value)?; + number_validator::expect_min(min.into_inner(), value)?; } if let Some(max) = data.maximum { - number_validator::expect_max(max, value)?; + number_validator::expect_max(max.into_inner(), value)?; } if let Some(xmin) = data.exclusive_minimum { - number_validator::expect_xmin(xmin, value)?; + number_validator::expect_xmin(xmin.into_inner(), value)?; } if let Some(xmax) = data.exclusive_maximum { - number_validator::expect_xmax(xmax, value)?; + number_validator::expect_xmax(xmax.into_inner(), value)?; } if let Some(divisor) = data.multiple_of.as_ref() { - let quot = value / divisor; + let quot = value / divisor.into_inner(); if quot.round() != quot { bail!("Expected a multiple of {divisor}, got {value}"); } diff --git a/src/typegraph/specs/codegen/src/lib/rust_lib.ts b/src/typegraph/specs/codegen/src/lib/rust_lib.ts index 26dd1306ba..a556236a65 100644 --- a/src/typegraph/specs/codegen/src/lib/rust_lib.ts +++ b/src/typegraph/specs/codegen/src/lib/rust_lib.ts @@ -15,7 +15,7 @@ import type { const typeMap = { UInt: "u32", SInt: "i32", - Float: "f64", + Float: "NotNan", string: "String", boolean: "bool", void: "()", @@ -39,7 +39,8 @@ class RustLibCodeGenerator extends TypeDefProcessor { } override formatHeaders(_moduleName?: string) { - const baseImport = "use serde::{Deserialize, Serialize};"; + const baseImport = + "use serde::{Deserialize, Serialize};\n#[allow(unused)] use ordered_float::NotNan;"; const imports = this.imports.map( ({ imports, source }) => diff --git a/src/typegraph/specs/codegen/tests/rust_lib.test.ts b/src/typegraph/specs/codegen/tests/rust_lib.test.ts index 5705ddd959..78eaf09d89 100644 --- a/src/typegraph/specs/codegen/tests/rust_lib.test.ts +++ b/src/typegraph/specs/codegen/tests/rust_lib.test.ts @@ -27,7 +27,7 @@ pub struct RecordLike { pub num: u32, pub key: String, pub str_arr: Vec, - pub tup: (f64, f64), + pub tup: (NotNan, NotNan), pub opt: Option, pub comp: Option>, }`; @@ -72,7 +72,8 @@ Deno.test("Rust import codegen", () => { const result = rustcg.formatHeaders(); const expected = `use super::foobar::{Foo, Bar}; -use serde::{Deserialize, Serialize};`; +use serde::{Deserialize, Serialize}; +#[allow(unused)] use ordered_float::NotNan;`; assertEquals(result, expected); }); diff --git a/tests/prisma-migrations/migration-failure-test-dev/main/20250618092719_generated/migration.sql b/tests/prisma-migrations/migration-failure-test-dev/main/20250618092719_generated/migration.sql new file mode 100644 index 0000000000..cd3bdae7b7 --- /dev/null +++ b/tests/prisma-migrations/migration-failure-test-dev/main/20250618092719_generated/migration.sql @@ -0,0 +1,6 @@ +-- CreateTable +CREATE TABLE "Record" ( + "id" SERIAL NOT NULL, + + CONSTRAINT "Record_pkey" PRIMARY KEY ("id") +); diff --git a/tools/tasks/lint.ts b/tools/tasks/lint.ts index ca56ed87fa..df25560815 100644 --- a/tools/tasks/lint.ts +++ b/tools/tasks/lint.ts @@ -20,8 +20,8 @@ export default { }, "lint-deno": { async fn($) { - const files = (await $.co( - [ + const files = ( + await $.co([ Array.fromAsync( $.workingDir.join("src/typegraph/deno").expandGlob("**/*.ts", { exclude: [], @@ -39,15 +39,15 @@ export default { ), Array.fromAsync( $.workingDir.join("tools").expandGlob("**/*.ts", { - exclude: [], + exclude: ["tree"], }), ), - ], - )) + ]) + ) .flat() .map((ref) => ref.path.toString()); await $`bash -c "xargs deno check"`.stdinText(files.join(" ")); - await $`bash -c "deno lint"`; + await $`bash -c "deno lint --ignore=tools/tree --ignore=docs --ignore=tests/runtimes/temporal/worker"`; }, }, } satisfies Record; diff --git a/tools/tasks/test.ts b/tools/tasks/test.ts index b0838e466e..c83a9681c2 100644 --- a/tools/tasks/test.ts +++ b/tools/tasks/test.ts @@ -8,6 +8,9 @@ export default { "test-e2e": { inherit: "ci", desc: "Shorthand for `tools/test.ts`", + vars: { + MCLI_NO_UPGRADE_CHECK: "1", + }, fn: async ($) => { if ((await testE2eCli($.argv)) != 0) { throw new Error("tests failed"); diff --git a/tools/tree-view-web.ts b/tools/tree-view-web.ts index 9fdc7f9b02..4e2ba442c2 100644 --- a/tools/tree-view-web.ts +++ b/tools/tree-view-web.ts @@ -8,15 +8,14 @@ * deno run -A tools/tree-view-web.ts [] */ +import { Application, Router, Status } from "jsr:@oak/oak"; import type { TypeGraphDS } from "../src/typegate/src/typegraph/mod.ts"; import { projectDir } from "./utils.ts"; -import { join, parseArgs } from "./deps.ts"; - -const dirname = import.meta.dirname ?? new URL(".", import.meta.url).pathname; -const indexHtml = join(dirname, "tree-view/index.html"); +import { parseArgs } from "./deps.ts"; const args = parseArgs(Deno.args, { string: ["port"], + boolean: ["json"], }); const argsPort = parseInt(args.port ?? ""); @@ -27,35 +26,51 @@ const files = args._ as string[]; if (files.length === 0) { throw new Error("Path to typegraph definition module is required."); } -const cmdBase = [ - "cargo", - "run", - "--manifest-path", - `${projectDir}/Cargo.toml`, - "-p", - "meta-cli", - "--", - "serialize", - "-vvv", - "-f", -]; + const tgs: TypeGraphDS[] = []; -for (const file of files) { - const cmd = [...cmdBase, file]; - const { stdout, code } = await new Deno.Command(cmd[0], { - args: cmd.slice(1), - stdout: "piped", - stderr: "inherit", - }).output(); - if (code !== 0) { - console.log( - `[error] command ${ - cmd.map((c) => JSON.stringify(c)).join(" ") - } failed with code ${code}`, - ); - continue; + +if (args.json) { + for (const file of files) { + const raw = await Deno.readFile(file); + const str = new TextDecoder().decode(raw); + const parsed = JSON.parse(str); + if (Array.isArray(parsed)) { + tgs.push(...parsed); + } else { + tgs.push(parsed); + } + } +} else { + const cmdBase = [ + "cargo", + "run", + "--manifest-path", + `${projectDir}/Cargo.toml`, + "-p", + "meta-cli", + "--", + "serialize", + "-vvv", + "-f", + ]; + + for (const file of files) { + const cmd = [...cmdBase, file]; + const { stdout, code } = await new Deno.Command(cmd[0], { + args: cmd.slice(1), + stdout: "piped", + stderr: "inherit", + }).output(); + if (code !== 0) { + console.log( + `[error] command ${cmd + .map((c) => JSON.stringify(c)) + .join(" ")} failed with code ${code}` + ); + continue; + } + tgs.push(...JSON.parse(new TextDecoder().decode(stdout))); } - tgs.push(...JSON.parse(new TextDecoder().decode(stdout))); } if (tgs.length === 0) { @@ -63,33 +78,122 @@ if (tgs.length === 0) { Deno.exit(1); } -Deno.serve({ - port, - onListen({ port, hostname }) { +const byName: Map = new Map(); + +for (const tg of tgs) { + const name = tg.types[0].title; + if (byName.has(name)) { console.log( - `server running at http://${hostname ?? "localhost"}:${port}`, + `[warn] Duplicate typegraph name '${name}'. The older one will be dropped` ); - }, -}, async (req) => { - const url = new URL(req.url); - const pathname = url.pathname; - console.log(`[info] method=${req.method} url=${req.url}`); - - if (req.method !== "GET") { - console.log(`[error] method '${req.method}' not allowed`); - return new Response("Method not allowed", { status: 405 }); } - if (pathname === "/") { - return new Response(await Deno.readTextFile(indexHtml), { - headers: { "content-type": "text/html" }, - }); + byName.set(tg.types[0].title, tg); +} + +const router = new Router(); + +const fsCache: Map = new Map(); + +async function getDistFile(path: string) { + const cached = fsCache.get(path); + if (cached != null) { + return cached; + } + const value = await Deno.readFile(`${projectDir}/tools/tree/dist/${path}`); + fsCache.set(path, value); + return value; +} + +router.get("/logo.svg", async (ctx) => { + ctx.response.body = await getDistFile("logo.svg"); + ctx.response.type = "svg"; +}); + +router.get("/assets/:asset", async (ctx) => { + const asset = ctx.params.asset; + if (asset.includes("..") || asset.includes("/")) { + ctx.response.body = `invalid assset name '${asset}'`; + ctx.response.status = Status.BadRequest; + } else { + ctx.response.body = await getDistFile(`assets/${ctx.params.asset}`); + ctx.response.type = ctx.params.asset.split(".").slice(-1)[0]; + } +}); + +router.get("/api/typegraphs", (ctx) => { + ctx.response.body = [...byName.keys()]; + ctx.response.type = "json"; +}); + +router.get("/api/typegraphs/:tgName", (ctx) => { + const tg = byName.get(ctx.params.tgName); + if (tg == null) { + ctx.response.body = `typegraph "${ctx.params.tgName}" not found`; + ctx.response.status = Status.NotFound; + } else { + ctx.response.body = { + stats: { + types: tg.types.length, + runtimes: tg.runtimes.length, + materializers: tg.materializers.length, + policies: tg.policies.length, + }, + }; + ctx.response.type = "json"; } - // TODO typegraph list and typegraph by name - if (pathname === "/tg.json") { - return new Response(JSON.stringify(tgs), { - headers: { "content-type": "application/json" }, - }); +}); + +router.get("/api/typegraphs/:tgName/types/:typeIdx", (ctx) => { + const tg = byName.get(ctx.params.tgName); + if (tg == null) { + ctx.response.body = `typegraph "${ctx.params.tgName}" not found`; + ctx.response.status = Status.NotFound; + } else { + const typeIdx = +ctx.params.typeIdx; + if (Number.isNaN(typeIdx)) { + ctx.response.body = `invalid type index "${ctx.params.typeIdx}"`; + ctx.response.status = Status.BadRequest; + return; + } + const typeNode = tg.types[typeIdx]; + if (typeNode == null) { + ctx.response.body = `type index out of bounds #${typeIdx}`; + ctx.response.status = Status.NotFound; + } else { + ctx.response.body = tg.types[+ctx.params.typeIdx]; + ctx.response.type = "json"; + } } - console.log(`[error] path '${pathname}' not found`); - return new Response("Not found", { status: 404 }); }); + +const app = new Application(); + +app.use(async (ctx, next) => { + await next(); + console.log( + `- ${ctx.request.method} ${ctx.response.status} - ${ctx.request.url.pathname}${ctx.request.url.search}` + ); +}); + +app.use(async (ctx, next) => { + const pathname = ctx.request.url.pathname; + if ( + pathname.startsWith("/api") || + pathname == "/logo.svg" || + pathname.startsWith("/assets") + ) { + await next(); + } else { + ctx.response.body = await getDistFile("index.html"); + ctx.response.type = "html"; + } +}); + +app.use(router.routes()); +app.use(router.allowedMethods()); + +app.addEventListener("listen", (evt) => { + console.log(`[info] server running at http://${evt.hostname}:${evt.port}`); +}); + +app.listen({ port }); diff --git a/tools/tree/.gitignore b/tools/tree/.gitignore new file mode 100644 index 0000000000..cf7ff2f72e --- /dev/null +++ b/tools/tree/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +# dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/tools/tree/.vite/deps/_metadata.json b/tools/tree/.vite/deps/_metadata.json new file mode 100644 index 0000000000..d751e9689f --- /dev/null +++ b/tools/tree/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "f0e17266", + "configHash": "363b4baa", + "lockfileHash": "e5b2b695", + "browserHash": "8900fa32", + "optimized": {}, + "chunks": {} +} diff --git a/tools/tree/.vite/deps/package.json b/tools/tree/.vite/deps/package.json new file mode 100644 index 0000000000..3dbc1ca591 --- /dev/null +++ b/tools/tree/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tools/tree/README.md b/tools/tree/README.md new file mode 100644 index 0000000000..da9844432b --- /dev/null +++ b/tools/tree/README.md @@ -0,0 +1,54 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/tools/tree/dist/assets/index-B7TWQuis.css b/tools/tree/dist/assets/index-B7TWQuis.css new file mode 100644 index 0000000000..508fa6e1e7 --- /dev/null +++ b/tools/tree/dist/assets/index-B7TWQuis.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-500:oklch(70.5% .213 47.604);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-400:oklch(70.7% .165 254.624);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-bold:700;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.flex{display:flex}.h-4{height:calc(var(--spacing)*4)}.w-4{width:calc(var(--spacing)*4)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-shrink-0{flex-shrink:0}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-6{border-left-style:var(--tw-border-style);border-left-width:6px}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-600{border-color:var(--color-gray-600)}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.bg-blue-400\/20{background-color:#54a2ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/20{background-color:color-mix(in oklab,var(--color-blue-400)20%,transparent)}}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-blue-400{color:var(--color-blue-400)}.text-cyan-500{color:var(--color-cyan-500)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-orange-500{color:var(--color-orange-500)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.outline-0{outline-style:var(--tw-outline-style);outline-width:0}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:text-white:hover{color:var(--color-white)}}.focus\:border-white\/20:focus{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.focus\:border-white\/20:focus{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}}:root{color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#242424;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}a{color:#646cff;-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:#535bf2}body{min-width:320px;min-height:100vh;margin:0}#root{flex-direction:column;min-height:100vh;display:flex}@media (prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}main{flex:1;max-width:1280px;display:flex;flex-direction:column;align-items:stretch}h1{font-size:3.2em;line-height:1.1}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888} diff --git a/tools/tree/dist/assets/index-en07UP6E.js b/tools/tree/dist/assets/index-en07UP6E.js new file mode 100644 index 0000000000..836e235cc5 --- /dev/null +++ b/tools/tree/dist/assets/index-en07UP6E.js @@ -0,0 +1,59 @@ +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))f(d);new MutationObserver(d=>{for(const h of d)if(h.type==="childList")for(const b of h.addedNodes)b.tagName==="LINK"&&b.rel==="modulepreload"&&f(b)}).observe(document,{childList:!0,subtree:!0});function o(d){const h={};return d.integrity&&(h.integrity=d.integrity),d.referrerPolicy&&(h.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?h.credentials="include":d.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function f(d){if(d.ep)return;d.ep=!0;const h=o(d);fetch(d.href,h)}})();function zy(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Yf={exports:{}},Qu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hh;function My(){if(hh)return Qu;hh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(f,d,h){var b=null;if(h!==void 0&&(b=""+h),d.key!==void 0&&(b=""+d.key),"key"in d){h={};for(var A in d)A!=="key"&&(h[A]=d[A])}else h=d;return d=h.ref,{$$typeof:i,type:f,key:b,ref:d!==void 0?d:null,props:h}}return Qu.Fragment=r,Qu.jsx=o,Qu.jsxs=o,Qu}var mh;function Uy(){return mh||(mh=1,Yf.exports=My()),Yf.exports}var V=Uy(),wf={exports:{}},at={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var yh;function Ny(){if(yh)return at;yh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),b=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),N=Symbol.iterator;function D(v){return v===null||typeof v!="object"?null:(v=N&&v[N]||v["@@iterator"],typeof v=="function"?v:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,L={};function w(v,B,G){this.props=v,this.context=B,this.refs=L,this.updater=G||j}w.prototype.isReactComponent={},w.prototype.setState=function(v,B){if(typeof v!="object"&&typeof v!="function"&&v!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,v,B,"setState")},w.prototype.forceUpdate=function(v){this.updater.enqueueForceUpdate(this,v,"forceUpdate")};function U(){}U.prototype=w.prototype;function P(v,B,G){this.props=v,this.context=B,this.refs=L,this.updater=G||j}var Q=P.prototype=new U;Q.constructor=P,H(Q,w.prototype),Q.isPureReactComponent=!0;var lt=Array.isArray,Z={H:null,A:null,T:null,S:null,V:null},rt=Object.prototype.hasOwnProperty;function gt(v,B,G,Y,k,it){return G=it.ref,{$$typeof:i,type:v,key:B,ref:G!==void 0?G:null,props:it}}function et(v,B){return gt(v.type,B,void 0,void 0,void 0,v.props)}function ht(v){return typeof v=="object"&&v!==null&&v.$$typeof===i}function Ot(v){var B={"=":"=0",":":"=2"};return"$"+v.replace(/[=:]/g,function(G){return B[G]})}var Xt=/\/+/g;function Dt(v,B){return typeof v=="object"&&v!==null&&v.key!=null?Ot(""+v.key):B.toString(36)}function Qt(){}function se(v){switch(v.status){case"fulfilled":return v.value;case"rejected":throw v.reason;default:switch(typeof v.status=="string"?v.then(Qt,Qt):(v.status="pending",v.then(function(B){v.status==="pending"&&(v.status="fulfilled",v.value=B)},function(B){v.status==="pending"&&(v.status="rejected",v.reason=B)})),v.status){case"fulfilled":return v.value;case"rejected":throw v.reason}}throw v}function Bt(v,B,G,Y,k){var it=typeof v;(it==="undefined"||it==="boolean")&&(v=null);var tt=!1;if(v===null)tt=!0;else switch(it){case"bigint":case"string":case"number":tt=!0;break;case"object":switch(v.$$typeof){case i:case r:tt=!0;break;case O:return tt=v._init,Bt(tt(v._payload),B,G,Y,k)}}if(tt)return k=k(v),tt=Y===""?"."+Dt(v,0):Y,lt(k)?(G="",tt!=null&&(G=tt.replace(Xt,"$&/")+"/"),Bt(k,B,G,"",function(Le){return Le})):k!=null&&(ht(k)&&(k=et(k,G+(k.key==null||v&&v.key===k.key?"":(""+k.key).replace(Xt,"$&/")+"/")+tt)),B.push(k)),1;tt=0;var ae=Y===""?".":Y+":";if(lt(v))for(var xt=0;xt>>1,v=z[yt];if(0>>1;ytd(Y,$))kd(it,Y)?(z[yt]=it,z[k]=$,yt=k):(z[yt]=Y,z[G]=$,yt=G);else if(kd(it,$))z[yt]=it,z[k]=$,yt=k;else break t}}return X}function d(z,X){var $=z.sortIndex-X.sortIndex;return $!==0?$:z.id-X.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;i.unstable_now=function(){return h.now()}}else{var b=Date,A=b.now();i.unstable_now=function(){return b.now()-A}}var g=[],y=[],O=1,N=null,D=3,j=!1,H=!1,L=!1,w=!1,U=typeof setTimeout=="function"?setTimeout:null,P=typeof clearTimeout=="function"?clearTimeout:null,Q=typeof setImmediate<"u"?setImmediate:null;function lt(z){for(var X=o(y);X!==null;){if(X.callback===null)f(y);else if(X.startTime<=z)f(y),X.sortIndex=X.expirationTime,r(g,X);else break;X=o(y)}}function Z(z){if(L=!1,lt(z),!H)if(o(g)!==null)H=!0,rt||(rt=!0,Dt());else{var X=o(y);X!==null&&Bt(Z,X.startTime-z)}}var rt=!1,gt=-1,et=5,ht=-1;function Ot(){return w?!0:!(i.unstable_now()-htz&&Ot());){var yt=N.callback;if(typeof yt=="function"){N.callback=null,D=N.priorityLevel;var v=yt(N.expirationTime<=z);if(z=i.unstable_now(),typeof v=="function"){N.callback=v,lt(z),X=!0;break e}N===o(g)&&f(g),lt(z)}else f(g);N=o(g)}if(N!==null)X=!0;else{var B=o(y);B!==null&&Bt(Z,B.startTime-z),X=!1}}break t}finally{N=null,D=$,j=!1}X=void 0}}finally{X?Dt():rt=!1}}}var Dt;if(typeof Q=="function")Dt=function(){Q(Xt)};else if(typeof MessageChannel<"u"){var Qt=new MessageChannel,se=Qt.port2;Qt.port1.onmessage=Xt,Dt=function(){se.postMessage(null)}}else Dt=function(){U(Xt,0)};function Bt(z,X){gt=U(function(){z(i.unstable_now())},X)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(z){z.callback=null},i.unstable_forceFrameRate=function(z){0>z||125yt?(z.sortIndex=$,r(y,z),o(g)===null&&z===o(y)&&(L?(P(gt),gt=-1):L=!0,Bt(Z,$-yt))):(z.sortIndex=v,r(g,z),H||j||(H=!0,rt||(rt=!0,Dt()))),z},i.unstable_shouldYield=Ot,i.unstable_wrapCallback=function(z){var X=D;return function(){var $=D;D=X;try{return z.apply(this,arguments)}finally{D=$}}}}(Qf)),Qf}var ph;function Hy(){return ph||(ph=1,Xf.exports=Cy()),Xf.exports}var Vf={exports:{}},ie={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Sh;function qy(){if(Sh)return ie;Sh=1;var i=Ai();function r(g){var y="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),Vf.exports=qy(),Vf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Eh;function jy(){if(Eh)return Vu;Eh=1;var i=Hy(),r=Ai(),o=By();function f(t){var e="https://react.dev/errors/"+t;if(1v||(t.current=yt[v],yt[v]=null,v--)}function Y(t,e){v++,yt[v]=t.current,t.current=e}var k=B(null),it=B(null),tt=B(null),ae=B(null);function xt(t,e){switch(Y(tt,e),Y(it,t),Y(k,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?Gd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=Gd(e),t=Xd(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}G(k),Y(k,t)}function Le(){G(k),G(it),G(tt)}function $e(t){t.memoizedState!==null&&Y(ae,t);var e=k.current,l=Xd(e,t.type);e!==l&&(Y(it,t),Y(k,l))}function Yl(t){it.current===t&&(G(k),G(it)),ae.current===t&&(G(ae),Lu._currentValue=$)}var Iu=Object.prototype.hasOwnProperty,pt=i.unstable_scheduleCallback,vt=i.unstable_cancelCallback,Kt=i.unstable_shouldYield,Mt=i.unstable_requestPaint,Ct=i.unstable_now,ml=i.unstable_getCurrentPriorityLevel,Yt=i.unstable_ImmediatePriority,Jt=i.unstable_UserBlockingPriority,oe=i.unstable_NormalPriority,tn=i.unstable_LowPriority,Ka=i.unstable_IdlePriority,en=i.log,de=i.unstable_setDisableYieldValue,fe=null,Pt=null;function Ye(t){if(typeof en=="function"&&de(t),Pt&&typeof Pt.setStrictMode=="function")try{Pt.setStrictMode(fe,t)}catch{}}var It=Math.clz32?Math.clz32:ym,hm=Math.log,mm=Math.LN2;function ym(t){return t>>>=0,t===0?32:31-(hm(t)/mm|0)|0}var ln=256,an=4194304;function wl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function un(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var s=a&134217727;return s!==0?(a=s&~n,a!==0?u=wl(a):(c&=s,c!==0?u=wl(c):l||(l=s&~t,l!==0&&(u=wl(l))))):(s=a&~n,s!==0?u=wl(s):c!==0?u=wl(c):l||(l=a&~t,l!==0&&(u=wl(l)))),u===0?0:e!==0&&e!==u&&(e&n)===0&&(n=u&-u,l=e&-e,n>=l||n===32&&(l&4194048)!==0)?e:u}function Ja(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function vm(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Rr(){var t=ln;return ln<<=1,(ln&4194048)===0&&(ln=256),t}function Ar(){var t=an;return an<<=1,(an&62914560)===0&&(an=4194304),t}function _i(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function $a(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function gm(t,e,l,a,u,n){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var s=t.entanglements,m=t.expirationTimes,T=t.hiddenUpdates;for(l=c&~l;0)":-1u||m[a]!==T[u]){var M=` +`+m[a].replace(" at new "," at ");return t.displayName&&M.includes("")&&(M=M.replace("",t.displayName)),M}while(1<=a&&0<=u);break}}}finally{Ci=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?sa(l):""}function Rm(t){switch(t.tag){case 26:case 27:case 5:return sa(t.type);case 16:return sa("Lazy");case 13:return sa("Suspense");case 19:return sa("SuspenseList");case 0:case 15:return Hi(t.type,!1);case 11:return Hi(t.type.render,!1);case 1:return Hi(t.type,!0);case 31:return sa("Activity");default:return""}}function Hr(t){try{var e="";do e+=Rm(t),t=t.return;while(t);return e}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}function Oe(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function qr(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Am(t){var e=qr(t)?"checked":"value",l=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),a=""+t[e];if(!t.hasOwnProperty(e)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var u=l.get,n=l.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return u.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(t,e,{enumerable:l.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function fn(t){t._valueTracker||(t._valueTracker=Am(t))}function Br(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var l=e.getValue(),a="";return t&&(a=qr(t)?t.checked?"true":"false":t.value),t=a,t!==l?(e.setValue(t),!0):!1}function rn(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Om=/[\n"\\]/g;function xe(t){return t.replace(Om,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function qi(t,e,l,a,u,n,c,s){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),e!=null?c==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Oe(e)):t.value!==""+Oe(e)&&(t.value=""+Oe(e)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),e!=null?Bi(t,c,Oe(e)):l!=null?Bi(t,c,Oe(l)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?t.name=""+Oe(s):t.removeAttribute("name")}function jr(t,e,l,a,u,n,c,s){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),e!=null||l!=null){if(!(n!=="submit"&&n!=="reset"||e!=null))return;l=l!=null?""+Oe(l):"",e=e!=null?""+Oe(e):l,s||e===t.value||(t.value=e),t.defaultValue=e}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=s?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c)}function Bi(t,e,l){e==="number"&&rn(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function oa(t,e,l,a){if(t=t.options,e){e={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Gi=!1;if(We)try{var Pa={};Object.defineProperty(Pa,"passive",{get:function(){Gi=!0}}),window.addEventListener("test",Pa,Pa),window.removeEventListener("test",Pa,Pa)}catch{Gi=!1}var vl=null,Xi=null,on=null;function Vr(){if(on)return on;var t,e=Xi,l=e.length,a,u="value"in vl?vl.value:vl.textContent,n=u.length;for(t=0;t=eu),Wr=" ",Fr=!1;function Pr(t,e){switch(t){case"keyup":return Im.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ir(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ya=!1;function e0(t,e){switch(t){case"compositionend":return Ir(e);case"keypress":return e.which!==32?null:(Fr=!0,Wr);case"textInput":return t=e.data,t===Wr&&Fr?null:t;default:return null}}function l0(t,e){if(ya)return t==="compositionend"||!Ji&&Pr(t,e)?(t=Vr(),on=Xi=vl=null,ya=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=cs(l)}}function rs(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?rs(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function ss(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=rn(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=rn(t.document)}return e}function Wi(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var s0=We&&"documentMode"in document&&11>=document.documentMode,va=null,Fi=null,nu=null,Pi=!1;function os(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Pi||va==null||va!==rn(a)||(a=va,"selectionStart"in a&&Wi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),nu&&uu(nu,a)||(nu=a,a=ei(Fi,"onSelect"),0>=c,u-=c,Pe=1<<32-It(e)+u|l<n?n:8;var c=z.T,s={};z.T=s,jc(t,!1,e,l);try{var m=u(),T=z.S;if(T!==null&&T(s,m),m!==null&&typeof m=="object"&&typeof m.then=="function"){var M=S0(m,a);bu(t,e,M,Re(t))}else bu(t,e,a,Re(t))}catch(q){bu(t,e,{then:function(){},status:"rejected",reason:q},Re())}finally{X.p=n,z.T=c}}function A0(){}function qc(t,e,l,a){if(t.tag!==5)throw Error(f(476));var u=ho(t).queue;oo(t,u,e,$,l===null?A0:function(){return mo(t),l(a)})}function ho(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:$,baseState:$,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:$},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function mo(t){var e=ho(t).next.queue;bu(t,e,{},Re())}function Bc(){return ne(Lu)}function yo(){return Gt().memoizedState}function vo(){return Gt().memoizedState}function O0(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=Re();t=Sl(l);var a=bl(e,t,l);a!==null&&(Ae(a,e,l),mu(a,e,l)),e={cache:dc()},t.payload=e;return}e=e.return}}function x0(t,e,l){var a=Re();l={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null},qn(t)?po(e,l):(l=lc(t,e,l,a),l!==null&&(Ae(l,t,a),So(l,e,a)))}function go(t,e,l){var a=Re();bu(t,e,l,a)}function bu(t,e,l,a){var u={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null};if(qn(t))po(e,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=e.lastRenderedReducer,n!==null))try{var c=e.lastRenderedState,s=n(c,l);if(u.hasEagerState=!0,u.eagerState=s,pe(s,c))return pn(t,e,u,0),_t===null&&gn(),!1}catch{}finally{}if(l=lc(t,e,u,a),l!==null)return Ae(l,t,a),So(l,e,a),!0}return!1}function jc(t,e,l,a){if(a={lane:2,revertLane:vf(),action:a,hasEagerState:!1,eagerState:null,next:null},qn(t)){if(e)throw Error(f(479))}else e=lc(t,l,a,2),e!==null&&Ae(e,t,2)}function qn(t){var e=t.alternate;return t===ut||e!==null&&e===ut}function po(t,e){xa=zn=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function So(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,xr(t,l)}}var Bn={readContext:ne,use:Un,useCallback:jt,useContext:jt,useEffect:jt,useImperativeHandle:jt,useLayoutEffect:jt,useInsertionEffect:jt,useMemo:jt,useReducer:jt,useRef:jt,useState:jt,useDebugValue:jt,useDeferredValue:jt,useTransition:jt,useSyncExternalStore:jt,useId:jt,useHostTransitionStatus:jt,useFormState:jt,useActionState:jt,useOptimistic:jt,useMemoCache:jt,useCacheRefresh:jt},bo={readContext:ne,use:Un,useCallback:function(t,e){return ye().memoizedState=[t,e===void 0?null:e],t},useContext:ne,useEffect:lo,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Hn(4194308,4,io.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Hn(4194308,4,t,e)},useInsertionEffect:function(t,e){Hn(4,2,t,e)},useMemo:function(t,e){var l=ye();e=e===void 0?null:e;var a=t();if(Il){Ye(!0);try{t()}finally{Ye(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=ye();if(l!==void 0){var u=l(e);if(Il){Ye(!0);try{l(e)}finally{Ye(!1)}}}else u=e;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=x0.bind(null,ut,t),[a.memoizedState,t]},useRef:function(t){var e=ye();return t={current:t},e.memoizedState=t},useState:function(t){t=Uc(t);var e=t.queue,l=go.bind(null,ut,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Cc,useDeferredValue:function(t,e){var l=ye();return Hc(l,t,e)},useTransition:function(){var t=Uc(!1);return t=oo.bind(null,ut,t.queue,!0,!1),ye().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=ut,u=ye();if(mt){if(l===void 0)throw Error(f(407));l=l()}else{if(l=e(),_t===null)throw Error(f(349));(st&124)!==0||ws(a,e,l)}u.memoizedState=l;var n={value:l,getSnapshot:e};return u.queue=n,lo(Xs.bind(null,a,n,t),[t]),a.flags|=2048,Da(9,Cn(),Gs.bind(null,a,n,l,e),null),l},useId:function(){var t=ye(),e=_t.identifierPrefix;if(mt){var l=Ie,a=Pe;l=(a&~(1<<32-It(a)-1)).toString(32)+l,e="«"+e+"R"+l,l=Mn++,0F?(Ft=J,J=null):Ft=J.sibling;var dt=R(S,J,E[F],C);if(dt===null){J===null&&(J=Ft);break}t&&J&&dt.alternate===null&&e(S,J),p=n(dt,p,F),nt===null?K=dt:nt.sibling=dt,nt=dt,J=Ft}if(F===E.length)return l(S,J),mt&&Jl(S,F),K;if(J===null){for(;FF?(Ft=J,J=null):Ft=J.sibling;var jl=R(S,J,dt.value,C);if(jl===null){J===null&&(J=Ft);break}t&&J&&jl.alternate===null&&e(S,J),p=n(jl,p,F),nt===null?K=jl:nt.sibling=jl,nt=jl,J=Ft}if(dt.done)return l(S,J),mt&&Jl(S,F),K;if(J===null){for(;!dt.done;F++,dt=E.next())dt=q(S,dt.value,C),dt!==null&&(p=n(dt,p,F),nt===null?K=dt:nt.sibling=dt,nt=dt);return mt&&Jl(S,F),K}for(J=a(J);!dt.done;F++,dt=E.next())dt=x(J,S,F,dt.value,C),dt!==null&&(t&&dt.alternate!==null&&J.delete(dt.key===null?F:dt.key),p=n(dt,p,F),nt===null?K=dt:nt.sibling=dt,nt=dt);return t&&J.forEach(function(Dy){return e(S,Dy)}),mt&&Jl(S,F),K}function Rt(S,p,E,C){if(typeof E=="object"&&E!==null&&E.type===H&&E.key===null&&(E=E.props.children),typeof E=="object"&&E!==null){switch(E.$$typeof){case D:t:{for(var K=E.key;p!==null;){if(p.key===K){if(K=E.type,K===H){if(p.tag===7){l(S,p.sibling),C=u(p,E.props.children),C.return=S,S=C;break t}}else if(p.elementType===K||typeof K=="object"&&K!==null&&K.$$typeof===et&&To(K)===p.type){l(S,p.sibling),C=u(p,E.props),Tu(C,E),C.return=S,S=C;break t}l(S,p);break}else e(S,p);p=p.sibling}E.type===H?(C=Zl(E.props.children,S.mode,C,E.key),C.return=S,S=C):(C=bn(E.type,E.key,E.props,null,S.mode,C),Tu(C,E),C.return=S,S=C)}return c(S);case j:t:{for(K=E.key;p!==null;){if(p.key===K)if(p.tag===4&&p.stateNode.containerInfo===E.containerInfo&&p.stateNode.implementation===E.implementation){l(S,p.sibling),C=u(p,E.children||[]),C.return=S,S=C;break t}else{l(S,p);break}else e(S,p);p=p.sibling}C=nc(E,S.mode,C),C.return=S,S=C}return c(S);case et:return K=E._init,E=K(E._payload),Rt(S,p,E,C)}if(Bt(E))return I(S,p,E,C);if(Dt(E)){if(K=Dt(E),typeof K!="function")throw Error(f(150));return E=K.call(E),W(S,p,E,C)}if(typeof E.then=="function")return Rt(S,p,jn(E),C);if(E.$$typeof===Q)return Rt(S,p,An(S,E),C);Ln(S,E)}return typeof E=="string"&&E!==""||typeof E=="number"||typeof E=="bigint"?(E=""+E,p!==null&&p.tag===6?(l(S,p.sibling),C=u(p,E),C.return=S,S=C):(l(S,p),C=uc(E,S.mode,C),C.return=S,S=C),c(S)):l(S,p)}return function(S,p,E,C){try{Eu=0;var K=Rt(S,p,E,C);return za=null,K}catch(J){if(J===du||J===xn)throw J;var nt=Se(29,J,null,S.mode);return nt.lanes=C,nt.return=S,nt}finally{}}}var Ma=Ro(!0),Ao=Ro(!1),Ue=B(null),Ge=null;function Tl(t){var e=t.alternate;Y(Zt,Zt.current&1),Y(Ue,t),Ge===null&&(e===null||Oa.current!==null||e.memoizedState!==null)&&(Ge=t)}function Oo(t){if(t.tag===22){if(Y(Zt,Zt.current),Y(Ue,t),Ge===null){var e=t.alternate;e!==null&&e.memoizedState!==null&&(Ge=t)}}else Rl()}function Rl(){Y(Zt,Zt.current),Y(Ue,Ue.current)}function al(t){G(Ue),Ge===t&&(Ge=null),G(Zt)}var Zt=B(0);function Yn(t){for(var e=t;e!==null;){if(e.tag===13){var l=e.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||Df(l)))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}function Lc(t,e,l,a){e=t.memoizedState,l=l(a,e),l=l==null?e:O({},e,l),t.memoizedState=l,t.lanes===0&&(t.updateQueue.baseState=l)}var Yc={enqueueSetState:function(t,e,l){t=t._reactInternals;var a=Re(),u=Sl(a);u.payload=e,l!=null&&(u.callback=l),e=bl(t,u,a),e!==null&&(Ae(e,t,a),mu(e,t,a))},enqueueReplaceState:function(t,e,l){t=t._reactInternals;var a=Re(),u=Sl(a);u.tag=1,u.payload=e,l!=null&&(u.callback=l),e=bl(t,u,a),e!==null&&(Ae(e,t,a),mu(e,t,a))},enqueueForceUpdate:function(t,e){t=t._reactInternals;var l=Re(),a=Sl(l);a.tag=2,e!=null&&(a.callback=e),e=bl(t,a,l),e!==null&&(Ae(e,t,l),mu(e,t,l))}};function xo(t,e,l,a,u,n,c){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(a,n,c):e.prototype&&e.prototype.isPureReactComponent?!uu(l,a)||!uu(u,n):!0}function _o(t,e,l,a){t=e.state,typeof e.componentWillReceiveProps=="function"&&e.componentWillReceiveProps(l,a),typeof e.UNSAFE_componentWillReceiveProps=="function"&&e.UNSAFE_componentWillReceiveProps(l,a),e.state!==t&&Yc.enqueueReplaceState(e,e.state,null)}function ta(t,e){var l=e;if("ref"in e){l={};for(var a in e)a!=="ref"&&(l[a]=e[a])}if(t=t.defaultProps){l===e&&(l=O({},l));for(var u in t)l[u]===void 0&&(l[u]=t[u])}return l}var wn=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var e=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(e))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function Do(t){wn(t)}function zo(t){console.error(t)}function Mo(t){wn(t)}function Gn(t,e){try{var l=t.onUncaughtError;l(e.value,{componentStack:e.stack})}catch(a){setTimeout(function(){throw a})}}function Uo(t,e,l){try{var a=t.onCaughtError;a(l.value,{componentStack:l.stack,errorBoundary:e.tag===1?e.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function wc(t,e,l){return l=Sl(l),l.tag=3,l.payload={element:null},l.callback=function(){Gn(t,e)},l}function No(t){return t=Sl(t),t.tag=3,t}function Co(t,e,l,a){var u=l.type.getDerivedStateFromError;if(typeof u=="function"){var n=a.value;t.payload=function(){return u(n)},t.callback=function(){Uo(e,l,a)}}var c=l.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(t.callback=function(){Uo(e,l,a),typeof u!="function"&&(zl===null?zl=new Set([this]):zl.add(this));var s=a.stack;this.componentDidCatch(a.value,{componentStack:s!==null?s:""})})}function D0(t,e,l,a,u){if(l.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(e=l.alternate,e!==null&&ru(e,l,u,!0),l=Ue.current,l!==null){switch(l.tag){case 13:return Ge===null?of():l.alternate===null&&qt===0&&(qt=3),l.flags&=-257,l.flags|=65536,l.lanes=u,a===yc?l.flags|=16384:(e=l.updateQueue,e===null?l.updateQueue=new Set([a]):e.add(a),hf(t,a,u)),!1;case 22:return l.flags|=65536,a===yc?l.flags|=16384:(e=l.updateQueue,e===null?(e={transitions:null,markerInstances:null,retryQueue:new Set([a])},l.updateQueue=e):(l=e.retryQueue,l===null?e.retryQueue=new Set([a]):l.add(a)),hf(t,a,u)),!1}throw Error(f(435,l.tag))}return hf(t,a,u),of(),!1}if(mt)return e=Ue.current,e!==null?((e.flags&65536)===0&&(e.flags|=256),e.flags|=65536,e.lanes=u,a!==fc&&(t=Error(f(422),{cause:a}),fu(_e(t,l)))):(a!==fc&&(e=Error(f(423),{cause:a}),fu(_e(e,l))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,a=_e(a,l),u=wc(t.stateNode,a,u),pc(t,u),qt!==4&&(qt=2)),!1;var n=Error(f(520),{cause:a});if(n=_e(n,l),zu===null?zu=[n]:zu.push(n),qt!==4&&(qt=2),e===null)return!0;a=_e(a,l),l=e;do{switch(l.tag){case 3:return l.flags|=65536,t=u&-u,l.lanes|=t,t=wc(l.stateNode,a,t),pc(l,t),!1;case 1:if(e=l.type,n=l.stateNode,(l.flags&128)===0&&(typeof e.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(zl===null||!zl.has(n))))return l.flags|=65536,u&=-u,l.lanes|=u,u=No(u),Co(u,t,l,a),pc(l,u),!1}l=l.return}while(l!==null);return!1}var Ho=Error(f(461)),kt=!1;function te(t,e,l,a){e.child=t===null?Ao(e,null,l,a):Ma(e,t.child,l,a)}function qo(t,e,l,a,u){l=l.render;var n=e.ref;if("ref"in a){var c={};for(var s in a)s!=="ref"&&(c[s]=a[s])}else c=a;return Fl(e),a=Rc(t,e,l,c,n,u),s=Ac(),t!==null&&!kt?(Oc(t,e,u),ul(t,e,u)):(mt&&s&&ic(e),e.flags|=1,te(t,e,a,u),e.child)}function Bo(t,e,l,a,u){if(t===null){var n=l.type;return typeof n=="function"&&!ac(n)&&n.defaultProps===void 0&&l.compare===null?(e.tag=15,e.type=n,jo(t,e,n,a,u)):(t=bn(l.type,null,a,e,e.mode,u),t.ref=e.ref,t.return=e,e.child=t)}if(n=t.child,!$c(t,u)){var c=n.memoizedProps;if(l=l.compare,l=l!==null?l:uu,l(c,a)&&t.ref===e.ref)return ul(t,e,u)}return e.flags|=1,t=Fe(n,a),t.ref=e.ref,t.return=e,e.child=t}function jo(t,e,l,a,u){if(t!==null){var n=t.memoizedProps;if(uu(n,a)&&t.ref===e.ref)if(kt=!1,e.pendingProps=a=n,$c(t,u))(t.flags&131072)!==0&&(kt=!0);else return e.lanes=t.lanes,ul(t,e,u)}return Gc(t,e,l,a,u)}function Lo(t,e,l){var a=e.pendingProps,u=a.children,n=t!==null?t.memoizedState:null;if(a.mode==="hidden"){if((e.flags&128)!==0){if(a=n!==null?n.baseLanes|l:l,t!==null){for(u=e.child=t.child,n=0;u!==null;)n=n|u.lanes|u.childLanes,u=u.sibling;e.childLanes=n&~a}else e.childLanes=0,e.child=null;return Yo(t,e,a,l)}if((l&536870912)!==0)e.memoizedState={baseLanes:0,cachePool:null},t!==null&&On(e,n!==null?n.cachePool:null),n!==null?Bs(e,n):bc(),Oo(e);else return e.lanes=e.childLanes=536870912,Yo(t,e,n!==null?n.baseLanes|l:l,l)}else n!==null?(On(e,n.cachePool),Bs(e,n),Rl(),e.memoizedState=null):(t!==null&&On(e,null),bc(),Rl());return te(t,e,u,l),e.child}function Yo(t,e,l,a){var u=mc();return u=u===null?null:{parent:Vt._currentValue,pool:u},e.memoizedState={baseLanes:l,cachePool:u},t!==null&&On(e,null),bc(),Oo(e),t!==null&&ru(t,e,a,!0),null}function Xn(t,e){var l=e.ref;if(l===null)t!==null&&t.ref!==null&&(e.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(f(284));(t===null||t.ref!==l)&&(e.flags|=4194816)}}function Gc(t,e,l,a,u){return Fl(e),l=Rc(t,e,l,a,void 0,u),a=Ac(),t!==null&&!kt?(Oc(t,e,u),ul(t,e,u)):(mt&&a&&ic(e),e.flags|=1,te(t,e,l,u),e.child)}function wo(t,e,l,a,u,n){return Fl(e),e.updateQueue=null,l=Ls(e,a,l,u),js(t),a=Ac(),t!==null&&!kt?(Oc(t,e,n),ul(t,e,n)):(mt&&a&&ic(e),e.flags|=1,te(t,e,l,n),e.child)}function Go(t,e,l,a,u){if(Fl(e),e.stateNode===null){var n=ba,c=l.contextType;typeof c=="object"&&c!==null&&(n=ne(c)),n=new l(a,n),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Yc,e.stateNode=n,n._reactInternals=e,n=e.stateNode,n.props=a,n.state=e.memoizedState,n.refs={},vc(e),c=l.contextType,n.context=typeof c=="object"&&c!==null?ne(c):ba,n.state=e.memoizedState,c=l.getDerivedStateFromProps,typeof c=="function"&&(Lc(e,l,c,a),n.state=e.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&Yc.enqueueReplaceState(n,n.state,null),vu(e,a,n,u),yu(),n.state=e.memoizedState),typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!0}else if(t===null){n=e.stateNode;var s=e.memoizedProps,m=ta(l,s);n.props=m;var T=n.context,M=l.contextType;c=ba,typeof M=="object"&&M!==null&&(c=ne(M));var q=l.getDerivedStateFromProps;M=typeof q=="function"||typeof n.getSnapshotBeforeUpdate=="function",s=e.pendingProps!==s,M||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(s||T!==c)&&_o(e,n,a,c),pl=!1;var R=e.memoizedState;n.state=R,vu(e,a,n,u),yu(),T=e.memoizedState,s||R!==T||pl?(typeof q=="function"&&(Lc(e,l,q,a),T=e.memoizedState),(m=pl||xo(e,l,m,a,R,T,c))?(M||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(e.flags|=4194308)):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=a,e.memoizedState=T),n.props=a,n.state=T,n.context=c,a=m):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!1)}else{n=e.stateNode,gc(t,e),c=e.memoizedProps,M=ta(l,c),n.props=M,q=e.pendingProps,R=n.context,T=l.contextType,m=ba,typeof T=="object"&&T!==null&&(m=ne(T)),s=l.getDerivedStateFromProps,(T=typeof s=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==q||R!==m)&&_o(e,n,a,m),pl=!1,R=e.memoizedState,n.state=R,vu(e,a,n,u),yu();var x=e.memoizedState;c!==q||R!==x||pl||t!==null&&t.dependencies!==null&&Rn(t.dependencies)?(typeof s=="function"&&(Lc(e,l,s,a),x=e.memoizedState),(M=pl||xo(e,l,M,a,R,x,m)||t!==null&&t.dependencies!==null&&Rn(t.dependencies))?(T||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,x,m),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,x,m)),typeof n.componentDidUpdate=="function"&&(e.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&R===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&R===t.memoizedState||(e.flags|=1024),e.memoizedProps=a,e.memoizedState=x),n.props=a,n.state=x,n.context=m,a=M):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&R===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&R===t.memoizedState||(e.flags|=1024),a=!1)}return n=a,Xn(t,e),a=(e.flags&128)!==0,n||a?(n=e.stateNode,l=a&&typeof l.getDerivedStateFromError!="function"?null:n.render(),e.flags|=1,t!==null&&a?(e.child=Ma(e,t.child,null,u),e.child=Ma(e,null,l,u)):te(t,e,l,u),e.memoizedState=n.state,t=e.child):t=ul(t,e,u),t}function Xo(t,e,l,a){return cu(),e.flags|=256,te(t,e,l,a),e.child}var Xc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Qc(t){return{baseLanes:t,cachePool:Ds()}}function Vc(t,e,l){return t=t!==null?t.childLanes&~l:0,e&&(t|=Ne),t}function Qo(t,e,l){var a=e.pendingProps,u=!1,n=(e.flags&128)!==0,c;if((c=n)||(c=t!==null&&t.memoizedState===null?!1:(Zt.current&2)!==0),c&&(u=!0,e.flags&=-129),c=(e.flags&32)!==0,e.flags&=-33,t===null){if(mt){if(u?Tl(e):Rl(),mt){var s=Ht,m;if(m=s){t:{for(m=s,s=we;m.nodeType!==8;){if(!s){s=null;break t}if(m=Be(m.nextSibling),m===null){s=null;break t}}s=m}s!==null?(e.memoizedState={dehydrated:s,treeContext:Kl!==null?{id:Pe,overflow:Ie}:null,retryLane:536870912,hydrationErrors:null},m=Se(18,null,null,0),m.stateNode=s,m.return=e,e.child=m,re=e,Ht=null,m=!0):m=!1}m||kl(e)}if(s=e.memoizedState,s!==null&&(s=s.dehydrated,s!==null))return Df(s)?e.lanes=32:e.lanes=536870912,null;al(e)}return s=a.children,a=a.fallback,u?(Rl(),u=e.mode,s=Qn({mode:"hidden",children:s},u),a=Zl(a,u,l,null),s.return=e,a.return=e,s.sibling=a,e.child=s,u=e.child,u.memoizedState=Qc(l),u.childLanes=Vc(t,c,l),e.memoizedState=Xc,a):(Tl(e),Zc(e,s))}if(m=t.memoizedState,m!==null&&(s=m.dehydrated,s!==null)){if(n)e.flags&256?(Tl(e),e.flags&=-257,e=Kc(t,e,l)):e.memoizedState!==null?(Rl(),e.child=t.child,e.flags|=128,e=null):(Rl(),u=a.fallback,s=e.mode,a=Qn({mode:"visible",children:a.children},s),u=Zl(u,s,l,null),u.flags|=2,a.return=e,u.return=e,a.sibling=u,e.child=a,Ma(e,t.child,null,l),a=e.child,a.memoizedState=Qc(l),a.childLanes=Vc(t,c,l),e.memoizedState=Xc,e=u);else if(Tl(e),Df(s)){if(c=s.nextSibling&&s.nextSibling.dataset,c)var T=c.dgst;c=T,a=Error(f(419)),a.stack="",a.digest=c,fu({value:a,source:null,stack:null}),e=Kc(t,e,l)}else if(kt||ru(t,e,l,!1),c=(l&t.childLanes)!==0,kt||c){if(c=_t,c!==null&&(a=l&-l,a=(a&42)!==0?1:Di(a),a=(a&(c.suspendedLanes|l))!==0?0:a,a!==0&&a!==m.retryLane))throw m.retryLane=a,Sa(t,a),Ae(c,t,a),Ho;s.data==="$?"||of(),e=Kc(t,e,l)}else s.data==="$?"?(e.flags|=192,e.child=t.child,e=null):(t=m.treeContext,Ht=Be(s.nextSibling),re=e,mt=!0,$l=null,we=!1,t!==null&&(ze[Me++]=Pe,ze[Me++]=Ie,ze[Me++]=Kl,Pe=t.id,Ie=t.overflow,Kl=e),e=Zc(e,a.children),e.flags|=4096);return e}return u?(Rl(),u=a.fallback,s=e.mode,m=t.child,T=m.sibling,a=Fe(m,{mode:"hidden",children:a.children}),a.subtreeFlags=m.subtreeFlags&65011712,T!==null?u=Fe(T,u):(u=Zl(u,s,l,null),u.flags|=2),u.return=e,a.return=e,a.sibling=u,e.child=a,a=u,u=e.child,s=t.child.memoizedState,s===null?s=Qc(l):(m=s.cachePool,m!==null?(T=Vt._currentValue,m=m.parent!==T?{parent:T,pool:T}:m):m=Ds(),s={baseLanes:s.baseLanes|l,cachePool:m}),u.memoizedState=s,u.childLanes=Vc(t,c,l),e.memoizedState=Xc,a):(Tl(e),l=t.child,t=l.sibling,l=Fe(l,{mode:"visible",children:a.children}),l.return=e,l.sibling=null,t!==null&&(c=e.deletions,c===null?(e.deletions=[t],e.flags|=16):c.push(t)),e.child=l,e.memoizedState=null,l)}function Zc(t,e){return e=Qn({mode:"visible",children:e},t.mode),e.return=t,t.child=e}function Qn(t,e){return t=Se(22,t,null,e),t.lanes=0,t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},t}function Kc(t,e,l){return Ma(e,t.child,null,l),t=Zc(e,e.pendingProps.children),t.flags|=2,e.memoizedState=null,t}function Vo(t,e,l){t.lanes|=e;var a=t.alternate;a!==null&&(a.lanes|=e),sc(t.return,e,l)}function Jc(t,e,l,a,u){var n=t.memoizedState;n===null?t.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:a,tail:l,tailMode:u}:(n.isBackwards=e,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=l,n.tailMode=u)}function Zo(t,e,l){var a=e.pendingProps,u=a.revealOrder,n=a.tail;if(te(t,e,a.children,l),a=Zt.current,(a&2)!==0)a=a&1|2,e.flags|=128;else{if(t!==null&&(t.flags&128)!==0)t:for(t=e.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&Vo(t,l,e);else if(t.tag===19)Vo(t,l,e);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break t;for(;t.sibling===null;){if(t.return===null||t.return===e)break t;t=t.return}t.sibling.return=t.return,t=t.sibling}a&=1}switch(Y(Zt,a),u){case"forwards":for(l=e.child,u=null;l!==null;)t=l.alternate,t!==null&&Yn(t)===null&&(u=l),l=l.sibling;l=u,l===null?(u=e.child,e.child=null):(u=l.sibling,l.sibling=null),Jc(e,!1,u,l,n);break;case"backwards":for(l=null,u=e.child,e.child=null;u!==null;){if(t=u.alternate,t!==null&&Yn(t)===null){e.child=u;break}t=u.sibling,u.sibling=l,l=u,u=t}Jc(e,!0,l,null,n);break;case"together":Jc(e,!1,null,null,void 0);break;default:e.memoizedState=null}return e.child}function ul(t,e,l){if(t!==null&&(e.dependencies=t.dependencies),Dl|=e.lanes,(l&e.childLanes)===0)if(t!==null){if(ru(t,e,l,!1),(l&e.childLanes)===0)return null}else return null;if(t!==null&&e.child!==t.child)throw Error(f(153));if(e.child!==null){for(t=e.child,l=Fe(t,t.pendingProps),e.child=l,l.return=e;t.sibling!==null;)t=t.sibling,l=l.sibling=Fe(t,t.pendingProps),l.return=e;l.sibling=null}return e.child}function $c(t,e){return(t.lanes&e)!==0?!0:(t=t.dependencies,!!(t!==null&&Rn(t)))}function z0(t,e,l){switch(e.tag){case 3:xt(e,e.stateNode.containerInfo),gl(e,Vt,t.memoizedState.cache),cu();break;case 27:case 5:$e(e);break;case 4:xt(e,e.stateNode.containerInfo);break;case 10:gl(e,e.type,e.memoizedProps.value);break;case 13:var a=e.memoizedState;if(a!==null)return a.dehydrated!==null?(Tl(e),e.flags|=128,null):(l&e.child.childLanes)!==0?Qo(t,e,l):(Tl(e),t=ul(t,e,l),t!==null?t.sibling:null);Tl(e);break;case 19:var u=(t.flags&128)!==0;if(a=(l&e.childLanes)!==0,a||(ru(t,e,l,!1),a=(l&e.childLanes)!==0),u){if(a)return Zo(t,e,l);e.flags|=128}if(u=e.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),Y(Zt,Zt.current),a)break;return null;case 22:case 23:return e.lanes=0,Lo(t,e,l);case 24:gl(e,Vt,t.memoizedState.cache)}return ul(t,e,l)}function Ko(t,e,l){if(t!==null)if(t.memoizedProps!==e.pendingProps)kt=!0;else{if(!$c(t,l)&&(e.flags&128)===0)return kt=!1,z0(t,e,l);kt=(t.flags&131072)!==0}else kt=!1,mt&&(e.flags&1048576)!==0&&Es(e,Tn,e.index);switch(e.lanes=0,e.tag){case 16:t:{t=e.pendingProps;var a=e.elementType,u=a._init;if(a=u(a._payload),e.type=a,typeof a=="function")ac(a)?(t=ta(a,t),e.tag=1,e=Go(null,e,a,t,l)):(e.tag=0,e=Gc(null,e,a,t,l));else{if(a!=null){if(u=a.$$typeof,u===lt){e.tag=11,e=qo(null,e,a,t,l);break t}else if(u===gt){e.tag=14,e=Bo(null,e,a,t,l);break t}}throw e=se(a)||a,Error(f(306,e,""))}}return e;case 0:return Gc(t,e,e.type,e.pendingProps,l);case 1:return a=e.type,u=ta(a,e.pendingProps),Go(t,e,a,u,l);case 3:t:{if(xt(e,e.stateNode.containerInfo),t===null)throw Error(f(387));a=e.pendingProps;var n=e.memoizedState;u=n.element,gc(t,e),vu(e,a,null,l);var c=e.memoizedState;if(a=c.cache,gl(e,Vt,a),a!==n.cache&&oc(e,[Vt],l,!0),yu(),a=c.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:c.cache},e.updateQueue.baseState=n,e.memoizedState=n,e.flags&256){e=Xo(t,e,a,l);break t}else if(a!==u){u=_e(Error(f(424)),e),fu(u),e=Xo(t,e,a,l);break t}else{switch(t=e.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(Ht=Be(t.firstChild),re=e,mt=!0,$l=null,we=!0,l=Ao(e,null,a,l),e.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling}else{if(cu(),a===u){e=ul(t,e,l);break t}te(t,e,a,l)}e=e.child}return e;case 26:return Xn(t,e),t===null?(l=Wd(e.type,null,e.pendingProps,null))?e.memoizedState=l:mt||(l=e.type,t=e.pendingProps,a=ai(tt.current).createElement(l),a[ue]=e,a[he]=t,le(a,l,t),$t(a),e.stateNode=a):e.memoizedState=Wd(e.type,t.memoizedProps,e.pendingProps,t.memoizedState),null;case 27:return $e(e),t===null&&mt&&(a=e.stateNode=Jd(e.type,e.pendingProps,tt.current),re=e,we=!0,u=Ht,Nl(e.type)?(zf=u,Ht=Be(a.firstChild)):Ht=u),te(t,e,e.pendingProps.children,l),Xn(t,e),t===null&&(e.flags|=4194304),e.child;case 5:return t===null&&mt&&((u=a=Ht)&&(a=ay(a,e.type,e.pendingProps,we),a!==null?(e.stateNode=a,re=e,Ht=Be(a.firstChild),we=!1,u=!0):u=!1),u||kl(e)),$e(e),u=e.type,n=e.pendingProps,c=t!==null?t.memoizedProps:null,a=n.children,Of(u,n)?a=null:c!==null&&Of(u,c)&&(e.flags|=32),e.memoizedState!==null&&(u=Rc(t,e,E0,null,null,l),Lu._currentValue=u),Xn(t,e),te(t,e,a,l),e.child;case 6:return t===null&&mt&&((t=l=Ht)&&(l=uy(l,e.pendingProps,we),l!==null?(e.stateNode=l,re=e,Ht=null,t=!0):t=!1),t||kl(e)),null;case 13:return Qo(t,e,l);case 4:return xt(e,e.stateNode.containerInfo),a=e.pendingProps,t===null?e.child=Ma(e,null,a,l):te(t,e,a,l),e.child;case 11:return qo(t,e,e.type,e.pendingProps,l);case 7:return te(t,e,e.pendingProps,l),e.child;case 8:return te(t,e,e.pendingProps.children,l),e.child;case 12:return te(t,e,e.pendingProps.children,l),e.child;case 10:return a=e.pendingProps,gl(e,e.type,a.value),te(t,e,a.children,l),e.child;case 9:return u=e.type._context,a=e.pendingProps.children,Fl(e),u=ne(u),a=a(u),e.flags|=1,te(t,e,a,l),e.child;case 14:return Bo(t,e,e.type,e.pendingProps,l);case 15:return jo(t,e,e.type,e.pendingProps,l);case 19:return Zo(t,e,l);case 31:return a=e.pendingProps,l=e.mode,a={mode:a.mode,children:a.children},t===null?(l=Qn(a,l),l.ref=e.ref,e.child=l,l.return=e,e=l):(l=Fe(t.child,a),l.ref=e.ref,e.child=l,l.return=e,e=l),e;case 22:return Lo(t,e,l);case 24:return Fl(e),a=ne(Vt),t===null?(u=mc(),u===null&&(u=_t,n=dc(),u.pooledCache=n,n.refCount++,n!==null&&(u.pooledCacheLanes|=l),u=n),e.memoizedState={parent:a,cache:u},vc(e),gl(e,Vt,u)):((t.lanes&l)!==0&&(gc(t,e),vu(e,null,null,l),yu()),u=t.memoizedState,n=e.memoizedState,u.parent!==a?(u={parent:a,cache:a},e.memoizedState=u,e.lanes===0&&(e.memoizedState=e.updateQueue.baseState=u),gl(e,Vt,a)):(a=n.cache,gl(e,Vt,a),a!==u.cache&&oc(e,[Vt],l,!0))),te(t,e,e.pendingProps.children,l),e.child;case 29:throw e.pendingProps}throw Error(f(156,e.tag))}function nl(t){t.flags|=4}function Jo(t,e){if(e.type!=="stylesheet"||(e.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!eh(e)){if(e=Ue.current,e!==null&&((st&4194048)===st?Ge!==null:(st&62914560)!==st&&(st&536870912)===0||e!==Ge))throw hu=yc,zs;t.flags|=8192}}function Vn(t,e){e!==null&&(t.flags|=4),t.flags&16384&&(e=t.tag!==22?Ar():536870912,t.lanes|=e,Ha|=e)}function Ru(t,e){if(!mt)switch(t.tailMode){case"hidden":e=t.tail;for(var l=null;e!==null;)e.alternate!==null&&(l=e),e=e.sibling;l===null?t.tail=null:l.sibling=null;break;case"collapsed":l=t.tail;for(var a=null;l!==null;)l.alternate!==null&&(a=l),l=l.sibling;a===null?e||t.tail===null?t.tail=null:t.tail.sibling=null:a.sibling=null}}function Ut(t){var e=t.alternate!==null&&t.alternate.child===t.child,l=0,a=0;if(e)for(var u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags&65011712,a|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=a,t.childLanes=l,e}function M0(t,e,l){var a=e.pendingProps;switch(cc(e),e.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ut(e),null;case 1:return Ut(e),null;case 3:return l=e.stateNode,a=null,t!==null&&(a=t.memoizedState.cache),e.memoizedState.cache!==a&&(e.flags|=2048),el(Vt),Le(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(t===null||t.child===null)&&(iu(e)?nl(e):t===null||t.memoizedState.isDehydrated&&(e.flags&256)===0||(e.flags|=1024,As())),Ut(e),null;case 26:return l=e.memoizedState,t===null?(nl(e),l!==null?(Ut(e),Jo(e,l)):(Ut(e),e.flags&=-16777217)):l?l!==t.memoizedState?(nl(e),Ut(e),Jo(e,l)):(Ut(e),e.flags&=-16777217):(t.memoizedProps!==a&&nl(e),Ut(e),e.flags&=-16777217),null;case 27:Yl(e),l=tt.current;var u=e.type;if(t!==null&&e.stateNode!=null)t.memoizedProps!==a&&nl(e);else{if(!a){if(e.stateNode===null)throw Error(f(166));return Ut(e),null}t=k.current,iu(e)?Ts(e):(t=Jd(u,a,l),e.stateNode=t,nl(e))}return Ut(e),null;case 5:if(Yl(e),l=e.type,t!==null&&e.stateNode!=null)t.memoizedProps!==a&&nl(e);else{if(!a){if(e.stateNode===null)throw Error(f(166));return Ut(e),null}if(t=k.current,iu(e))Ts(e);else{switch(u=ai(tt.current),t){case 1:t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":t=u.createElement("div"),t.innerHTML=" + + + +
+ + diff --git a/tools/tree/dist/logo.svg b/tools/tree/dist/logo.svg new file mode 100644 index 0000000000..2c2d92a09a --- /dev/null +++ b/tools/tree/dist/logo.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tools/tree/eslint.config.js b/tools/tree/eslint.config.js new file mode 100644 index 0000000000..092408a9f0 --- /dev/null +++ b/tools/tree/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/tools/tree/index.html b/tools/tree/index.html new file mode 100644 index 0000000000..2fe12f6ce1 --- /dev/null +++ b/tools/tree/index.html @@ -0,0 +1,13 @@ + + + + + + + Typegraph Explorer + + +
+ + + diff --git a/tools/tree/package.json b/tools/tree/package.json new file mode 100644 index 0000000000..f0caddf865 --- /dev/null +++ b/tools/tree/package.json @@ -0,0 +1,34 @@ +{ + "name": "tree", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@tailwindcss/vite": "^4.1.6", + "clsx": "^2.1.1", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.0", + "swr": "^2.3.3", + "tailwindcss": "^4.1.6" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react-swc": "^3.9.0", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5" + } +} diff --git a/tools/tree/pnpm-lock.yaml b/tools/tree/pnpm-lock.yaml new file mode 100644 index 0000000000..560215885e --- /dev/null +++ b/tools/tree/pnpm-lock.yaml @@ -0,0 +1,2913 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@tailwindcss/vite': + specifier: ^4.1.6 + version: 4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + react-router-dom: + specifier: ^7.6.0 + version: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + swr: + specifier: ^2.3.3 + version: 2.3.3(react@19.1.0) + tailwindcss: + specifier: ^4.1.6 + version: 4.1.6 + devDependencies: + '@eslint/js': + specifier: ^9.25.0 + version: 9.26.0 + '@types/react': + specifier: ^19.1.2 + version: 19.1.4 + '@types/react-dom': + specifier: ^19.1.2 + version: 19.1.5(@types/react@19.1.4) + '@vitejs/plugin-react-swc': + specifier: ^3.9.0 + version: 3.9.0(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) + eslint: + specifier: ^9.25.0 + version: 9.26.0(jiti@2.4.2) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.19 + version: 0.4.20(eslint@9.26.0(jiti@2.4.2)) + globals: + specifier: ^16.0.0 + version: 16.1.0 + typescript: + specifier: ~5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.30.1 + version: 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + vite: + specifier: ^6.3.5 + version: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@modelcontextprotocol/sdk@1.11.2': + resolution: {integrity: sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==} + engines: {node: '>=18'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + + '@swc/core-darwin-arm64@1.11.24': + resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.24': + resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.24': + resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.24': + resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.24': + resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.24': + resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.24': + resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.24': + resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.24': + resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.24': + resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.24': + resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@tailwindcss/node@4.1.6': + resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + + '@tailwindcss/oxide-android-arm64@4.1.6': + resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.6': + resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.6': + resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.6': + resolution: {integrity: sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/react-dom@19.1.5': + resolution: {integrity: sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.4': + resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} + + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react-swc@3.9.0': + resolution: {integrity: sha512-jYFUSXhwMCYsh/aQTgSGLIN3Foz5wMbH9ahb0Zva//UzwZYbMiZd7oT3AU9jHT9DLswYDswsRwPU9jVF3yA48Q==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventsource-parser@3.0.2: + resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-router-dom@7.6.0: + resolution: {integrity: sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.6.0: + resolution: {integrity: sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + swr@2.3.3: + resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + tailwindcss@4.1.6: + resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.26.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@modelcontextprotocol/sdk@1.11.2': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - supports-color + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@swc/core-darwin-arm64@1.11.24': + optional: true + + '@swc/core-darwin-x64@1.11.24': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.24': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.24': + optional: true + + '@swc/core-linux-arm64-musl@1.11.24': + optional: true + + '@swc/core-linux-x64-gnu@1.11.24': + optional: true + + '@swc/core-linux-x64-musl@1.11.24': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.24': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.24': + optional: true + + '@swc/core-win32-x64-msvc@1.11.24': + optional: true + + '@swc/core@1.11.24': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.24 + '@swc/core-darwin-x64': 1.11.24 + '@swc/core-linux-arm-gnueabihf': 1.11.24 + '@swc/core-linux-arm64-gnu': 1.11.24 + '@swc/core-linux-arm64-musl': 1.11.24 + '@swc/core-linux-x64-gnu': 1.11.24 + '@swc/core-linux-x64-musl': 1.11.24 + '@swc/core-win32-arm64-msvc': 1.11.24 + '@swc/core-win32-ia32-msvc': 1.11.24 + '@swc/core-win32-x64-msvc': 1.11.24 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.1.6': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.6 + + '@tailwindcss/oxide-android-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide@4.1.6': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-x64': 4.1.6 + '@tailwindcss/oxide-freebsd-x64': 4.1.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-x64-musl': 4.1.6 + '@tailwindcss/oxide-wasm32-wasi': 4.1.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 + + '@tailwindcss/vite@4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.1.6 + '@tailwindcss/oxide': 4.1.6 + tailwindcss: 4.1.6 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + + '@types/estree@1.0.7': {} + + '@types/json-schema@7.0.15': {} + + '@types/react-dom@19.1.5(@types/react@19.1.4)': + dependencies: + '@types/react': 19.1.4 + + '@types/react@19.1.4': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.26.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + + '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.26.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.1': {} + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-react-swc@3.9.0(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@swc/core': 1.11.24 + vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) + transitivePeerDependencies: + - '@swc/helpers' + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + balanced-match@1.0.2: {} + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.1 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chownr@3.0.0: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cookie@1.0.2: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.4: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ee-first@1.1.1: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escape-html@1.0.3: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.20(eslint@9.26.0(jiti@2.4.2)): + dependencies: + eslint: 9.26.0(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.26.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.13.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.26.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@modelcontextprotocol/sdk': 1.11.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + zod: 3.24.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventsource-parser@3.0.2: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.2 + + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@2.1.0: + dependencies: + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.1.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inherits@2.0.4: {} + + ipaddr.js@1.9.1: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-promise@4.0.0: {} + + isexe@2.0.0: {} + + jiti@2.4.2: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + math-intrinsics@1.1.0: {} + + media-typer@1.1.0: {} + + merge-descriptors@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.54.0: {} + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-to-regexp@8.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pkce-challenge@5.0.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + range-parser@1.2.1: {} + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-router-dom@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-router: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + cookie: 1.0.2 + react: 19.1.0 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + + react@19.1.0: {} + + resolve-from@4.0.0: {} + + reusify@1.1.0: {} + + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + + router@2.2.0: + dependencies: + debug: 4.4.1 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + scheduler@0.26.0: {} + + semver@7.7.2: {} + + send@1.2.0: + dependencies: + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + set-cookie-parser@2.7.1: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + source-map-js@1.2.1: {} + + statuses@2.0.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + swr@2.3.3(react@19.1.0): + dependencies: + dequal: 2.0.3 + react: 19.1.0 + use-sync-external-store: 1.5.0(react@19.1.0) + + tailwindcss@4.1.6: {} + + tapable@2.2.1: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typescript-eslint@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + unpipe@1.0.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-sync-external-store@1.5.0(react@19.1.0): + dependencies: + react: 19.1.0 + + vary@1.1.2: {} + + vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + yallist@5.0.0: {} + + yocto-queue@0.1.0: {} + + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.24.4: {} diff --git a/tools/tree/public/logo.svg b/tools/tree/public/logo.svg new file mode 120000 index 0000000000..73e4ef3b87 --- /dev/null +++ b/tools/tree/public/logo.svg @@ -0,0 +1 @@ +../../../docs/metatype.dev/static/images/logo.svg \ No newline at end of file diff --git a/tools/tree/src/App.css b/tools/tree/src/App.css new file mode 100644 index 0000000000..c2d88e5a1b --- /dev/null +++ b/tools/tree/src/App.css @@ -0,0 +1,48 @@ +main { + flex: 1; + max-width: 1280px; + display: flex; + flex-direction: column; + align-items: stretch; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/tools/tree/src/App.tsx b/tools/tree/src/App.tsx new file mode 100644 index 0000000000..4ad264a62b --- /dev/null +++ b/tools/tree/src/App.tsx @@ -0,0 +1,166 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import "./App.css"; +import useSWR, { SWRConfig } from "swr"; +import { BrowserRouter, Routes, Route, useNavigate, useParams } from "react-router-dom"; +import { Type } from "./components/Type"; + +const fetcher = async (url: string): Promise => { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to fetch: ${response.status}`); + } + return response.json(); +}; + +function Header() { + const navigate = useNavigate(); + const { typegraph: currentTypegraph } = useParams(); + const { data: typegraphs, error, isLoading } = useSWR('/api/typegraphs'); + + const handleTypegraphChange = (event: React.ChangeEvent) => { + const selectedTypegraph = event.target.value; + if (selectedTypegraph) { + navigate(`/${selectedTypegraph}`); + } + }; + + return ( +
+ + +
+ ); +} + +type Stats = { + stats: { + types: number; + runtimes: number; + materializers: number; + policies: number; + } +} + +function Status() { + const { typegraph } = useParams(); + const { data: typegraphData, error, isLoading } = useSWR( + typegraph ? `/api/typegraphs/${typegraph}` : null + ); + + if (isLoading) { + return ( +
+ Loading... +
+ ); + } + + if (error) { + return ( +
+ Error: {error.message} +
+ ); + } + + if (!typegraphData) { + return ( +
+ No typegraph selected +
+ ); + } + + return ( +
+ {typegraphData && ( + <> +
+ Type count: + {typegraphData.stats.types} +
+
+ Runtimes: + {typegraphData.stats.runtimes} +
+
+ Materializers: + {typegraphData.stats.materializers} +
+
+ Policies: + {typegraphData.stats.policies} +
+ + )} +
+ ); +} + +function TypegraphView() { + return ( + <> +
+
+ +
+ + ); +} + +function AppContent() { + return ( + <> + + +
+
+ Select a typegraph... +
+ + } /> + + } /> + + + ); +} + +function App() { + return ( + + + + + + ); +} + +export default App; diff --git a/tools/tree/src/components/Type.tsx b/tools/tree/src/components/Type.tsx new file mode 100644 index 0000000000..d0d7a78c30 --- /dev/null +++ b/tools/tree/src/components/Type.tsx @@ -0,0 +1,171 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { useParams } from "react-router-dom"; +import useSWR from "swr"; +import { useMemo, useState } from "react"; +import clsx from "clsx"; +import type { TypeNode } from "../../../../src/typegate/src/typegraph/types"; +import type { ReactNode } from "react"; + +interface ExpandIconProps { + variant: "plus" | "minus" | "disk"; +} + +function ExpandIcon({ variant }: ExpandIconProps) { + return ( + + {variant === "disk" ? ( + + ) : variant === "minus" ? ( + + ) : ( + + )} + + ); +} + +interface ExpandButtonProps { + expanded: boolean; + disabled?: boolean; + onClick: () => void; +} + +function ExpandButton({ expanded, disabled = false, onClick }: ExpandButtonProps) { + return ( + + ); +} + +interface TypeHeaderProps { + idx: number; + tag: string; + typeNode: TypeNode; + expandButton: ReactNode; + isHovered: boolean; + onMouseEnter: () => void; + onMouseLeave: () => void; +} + +function TypeHeader({ + idx, + tag, + typeNode, + expandButton, + isHovered, + onMouseEnter, + onMouseLeave +}: TypeHeaderProps) { + return ( +
+
+ {expandButton} + #{idx} + {tag} + {typeNode.type} + {typeNode.title} +
+
+ ); +} + +interface TypeProps { + idx: number; + tag: string; +} + +export function Type({ idx, tag }: TypeProps) { + const { typegraph } = useParams(); + const { data: typeNode, error, isLoading } = useSWR( + typegraph ? `/api/typegraphs/${typegraph}/types/${idx}` : null + ); + + const [expanded, setExpanded] = useState(false); + const [isHovered, setIsHovered] = useState(false); + const edges = useMemo(() => typeNode ? getTypeEdges(typeNode) : [], [typeNode]); + + if (isLoading) { + return ( +
+ Loading type #{idx}... +
+ ); + } + + if (error) { + return ( +
+ Error: {error.message} +
+ ); + } + + if (!typeNode) { + return null; + } + + return ( + <> + setExpanded(!expanded)} + /> + } + isHovered={isHovered} + onMouseEnter={() => setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + /> +
+
+ {expanded && edges.map(([tag, typeIdx]) => ( + + ))} +
+
+ + ); +} + +function getTypeEdges(typeNode: TypeNode): [tag: string, typeIdx: number][] { + switch (typeNode.type) { + case "object": + return Object.entries(typeNode.properties).map(([key, idx]) => [`.${key}`, idx]); + case "list": + return [["[*]", typeNode.items]]; + case "optional": + return [["?", typeNode.item]]; + case "union": + return typeNode.anyOf.map((idx, i) => [`(${i})`, idx]); + case "either": + return typeNode.oneOf.map((idx, i) => [`(${i})`, idx]); + case "function": + return [["in", typeNode.input], ["out", typeNode.output]]; + default: + return []; + } +} diff --git a/tools/tree/src/index.css b/tools/tree/src/index.css new file mode 100644 index 0000000000..b66d26d8aa --- /dev/null +++ b/tools/tree/src/index.css @@ -0,0 +1,47 @@ +@import "tailwindcss"; + +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + min-width: 320px; + min-height: 100vh; +} + +#root { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } +} diff --git a/tools/tree/src/main.tsx b/tools/tree/src/main.tsx new file mode 100644 index 0000000000..4581bf6f32 --- /dev/null +++ b/tools/tree/src/main.tsx @@ -0,0 +1,13 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/tools/tree/src/vite-env.d.ts b/tools/tree/src/vite-env.d.ts new file mode 100644 index 0000000000..bd5db122cb --- /dev/null +++ b/tools/tree/src/vite-env.d.ts @@ -0,0 +1,4 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +/// diff --git a/tools/tree/tsconfig.app.json b/tools/tree/tsconfig.app.json new file mode 100644 index 0000000000..b464276b26 --- /dev/null +++ b/tools/tree/tsconfig.app.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/tools/tree/tsconfig.json b/tools/tree/tsconfig.json new file mode 100644 index 0000000000..1ffef600d9 --- /dev/null +++ b/tools/tree/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tools/tree/tsconfig.node.json b/tools/tree/tsconfig.node.json new file mode 100644 index 0000000000..c6047864da --- /dev/null +++ b/tools/tree/tsconfig.node.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/tools/tree/vite.config.ts b/tools/tree/vite.config.ts new file mode 100644 index 0000000000..65e01339ec --- /dev/null +++ b/tools/tree/vite.config.ts @@ -0,0 +1,18 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import tailwindcss from "@tailwindcss/vite"; + +export default defineConfig({ + plugins: [react(), tailwindcss()], + server: { + host: "0.0.0.0", + proxy: { + "/api": { + target: "http://localhost:9000", + }, + }, + }, +}); diff --git a/tools/verdaccio/config.yaml b/tools/verdaccio/config.yaml deleted file mode 100644 index 19ed888dd3..0000000000 --- a/tools/verdaccio/config.yaml +++ /dev/null @@ -1,22 +0,0 @@ -storage: ../storage -uplinks: - npmjs: - url: https://registry.npmjs.org/ -packages: - '@typegraph/*': - access: $all - publish: $all - # proxy: npmjs - '@*/*': - access: $all - publish: $authenticated - proxy: npmjs - '**': - access: $all - publish: $authenticated - proxy: npmjs -log: - type: stdout - format: pretty - level: http -max_body_size: 100mb