From 71ea25fe0eb877ce8a645072e937f8db9b2ae5f7 Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 6 Feb 2026 18:57:29 -0600 Subject: [PATCH] Upgrade dependencies and refactor serialization in build.rs - Updated `bincode` to version 2.0.1, modifying serialization calls to use the new API with `serde` support. - Added new dependencies in `Cargo.lock`, including `alloca`, `atomic-waker`, and `aws-lc-rs`, ensuring compatibility with the latest features. - Refactored file creation and serialization logic in `build.rs` for improved clarity and performance. - Updated various dependencies in `Cargo.toml` to their latest versions, enhancing overall project stability and functionality. --- ...cargo_dependency_upgrades_9b14d945.plan.md | 162 ++++ Cargo.lock | 843 +++++++++++------- Cargo.toml | 21 +- build.rs | 16 +- crates/rojo-insta-ext/Cargo.toml | 2 +- rbx-dom | 2 +- ...to_end__tests__serve__edit_init_all-2.snap | 4 +- ...d_to_end__tests__serve__edit_init_all.snap | 2 +- ...nd__tests__serve__edit_init_subscribe.snap | 2 +- ..._tests__serve__empty_json_model_all-2.snap | 2 +- ...ts__serve__empty_json_model_subscribe.snap | 2 +- ...d__tests__serve__meshpart_with_id_all.snap | 10 +- ...s__serve__model_pivot_migration_all-2.snap | 8 +- ...sts__serve__model_pivot_migration_all.snap | 2 +- ...ts__serve__move_folder_of_stuff_all-2.snap | 22 +- ...serve__move_folder_of_stuff_subscribe.snap | 20 +- ...s__serve__no_name_default_project_all.snap | 3 +- ...nd__tests__serve__no_name_project_all.snap | 4 +- ...erve__no_name_top_level_project_all-2.snap | 3 +- ..._serve__no_name_top_level_project_all.snap | 4 +- ...nd__tests__serve__pivot_migration_all.snap | 6 +- ...d__tests__serve__ref_properties_all-2.snap | 28 +- ...end__tests__serve__ref_properties_all.snap | 20 +- ...ve__ref_properties_patch_update_all-2.snap | 22 +- ...erve__ref_properties_patch_update_all.snap | 20 +- ...ref_properties_patch_update_subscribe.snap | 6 +- ...s__serve__ref_properties_remove_all-2.snap | 4 +- ...sts__serve__ref_properties_remove_all.snap | 6 +- ...ests__serve__ref_properties_subscribe.snap | 14 +- ...to_end__tests__serve__remove_file_all.snap | 4 +- ...d_to_end__tests__serve__scripts_all-2.snap | 6 +- ...end_to_end__tests__serve__scripts_all.snap | 6 +- ..._end__tests__serve__scripts_subscribe.snap | 2 +- ...nd__tests__serve__sync_rule_alone_all.snap | 2 +- ...__tests__serve__sync_rule_complex_all.snap | 14 +- ...ts__serve__sync_rule_no_extension_all.snap | 4 +- ..._serve__sync_rule_no_name_project_all.snap | 5 +- src/cli/init.rs | 5 +- src/cli/plugin.rs | 5 +- ...napshot__tests__apply__add_property-2.snap | 4 +- ..._snapshot__tests__apply__add_property.snap | 2 +- ...tests__apply__remove_property_initial.snap | 2 +- ...napshot__tests__compute__set_property.snap | 4 +- src/web/api.rs | 27 +- src/web/mod.rs | 55 +- src/web/ui.rs | 25 +- src/web/util.rs | 18 +- 47 files changed, 933 insertions(+), 517 deletions(-) create mode 100644 .cursor/plans/cargo_dependency_upgrades_9b14d945.plan.md diff --git a/.cursor/plans/cargo_dependency_upgrades_9b14d945.plan.md b/.cursor/plans/cargo_dependency_upgrades_9b14d945.plan.md new file mode 100644 index 00000000..311d9265 --- /dev/null +++ b/.cursor/plans/cargo_dependency_upgrades_9b14d945.plan.md @@ -0,0 +1,162 @@ +--- +name: Cargo Dependency Upgrades +overview: Upgrade all 11 incompatible cargo dependencies across the rojo workspace and the rbx-dom submodule, organized into tiers by risk and complexity. +todos: + - id: tier1-rand + content: Upgrade rand 0.8 -> 0.9 in rbx_types (thread_rng -> rng rename) + status: completed + - id: tier1-bitflags + content: Upgrade bitflags 1.x -> 2.x in rbx_types (faces.rs, axes.rs macro syntax) + status: completed + - id: tier2-winreg + content: Upgrade winreg 0.10 -> 0.55 in rojo (auth_cookie.rs, winapi -> windows-sys) + status: completed + - id: tier2-serde-yaml + content: Upgrade serde_yaml 0.8 -> 0.9 in rojo, rojo-insta-ext, rbx_util, rbx_reflector. Run cargo insta review for snapshot diffs. + status: completed + - id: tier3-criterion + content: Upgrade criterion 0.3/0.5 -> 0.8 in rojo and rbx_binary benchmarks + status: completed + - id: tier3-xml-rs + content: Upgrade xml-rs 0.8 -> 1.0 in rbx_xml (deserializer_core.rs, serializer_core.rs) + status: completed + - id: tier3-reqwest + content: Upgrade reqwest 0.11 -> 0.13 in rojo and rbx_reflector (blocking feature still supported) + status: completed + - id: tier4-bincode + content: Upgrade bincode 1.x -> 3.0 in rojo and rbx_types (build.rs embedding, runtime deserialize, config::legacy for compat) + status: completed + - id: tier4-hyper + content: Upgrade hyper 0.14 -> 1.x + hyper-tungstenite 0.11 -> 0.19. Add hyper-util, http-body-util. Rewrite server setup and body handling. + status: completed + - id: final-verify + content: Run cargo test, cargo clippy, cargo fmt --check across entire workspace to verify + status: completed +isProject: false +--- + +# Cargo Incompatible Dependency Upgrade Plan + +## Inventory + +11 packages across 8 `Cargo.toml` files need incompatible (semver-breaking) upgrades: + + +| Package | From | To | Location(s) | Risk | +| ----------------- | ------- | ------ | --------------------------------------------- | ----------- | +| rand | 0.8.5 | 0.9.2 | rbx_types | Low | +| bitflags | 1.3.2 | 2.10.0 | rbx_types | Low | +| winreg | 0.10.1 | 0.55.0 | rojo (Windows) | Low | +| serde_yaml | 0.8.26 | 0.9.34 | rojo, rojo-insta-ext, rbx_util, rbx_reflector | Low | +| criterion | 0.3/0.5 | 0.8.2 | rojo, rbx_binary | Medium | +| xml-rs | 0.8.28 | 1.0.0 | rbx_xml | Medium | +| reqwest | 0.11.27 | 0.13.2 | rojo, rbx_reflector | Medium | +| bincode | 1.3.3 | 3.0.0 | rojo, rbx_types | Medium-High | +| hyper | 0.14.32 | 1.8.1 | rojo | High | +| hyper-tungstenite | 0.11.1 | 0.19.0 | rojo | High | + + +**Note:** 6 of these packages live in the `rbx-dom/` submodule (separate git repo). Those changes must be committed to the submodule first, then the submodule pointer updated in rojo. + +--- + +## Tier 1 -- Low Risk (rbx-dom submodule) + +### 1a. rand 0.8 to 0.9 + +- **File:** [rbx-dom/rbx_types/Cargo.toml](rbx-dom/rbx_types/Cargo.toml) +- **Code change:** [rbx-dom/rbx_types/src/unique_id.rs](rbx-dom/rbx_types/src/unique_id.rs) -- 1 file, ~2 lines +- `thread_rng()` renamed to `rng()` in rand 0.9. `gen_range(0..i64::MAX)` syntax remains valid. + +### 1b. bitflags 1.x to 2.x + +- **File:** [rbx-dom/rbx_types/Cargo.toml](rbx-dom/rbx_types/Cargo.toml) +- **Code changes:** [rbx-dom/rbx_types/src/faces.rs](rbx-dom/rbx_types/src/faces.rs) and [rbx-dom/rbx_types/src/axes.rs](rbx-dom/rbx_types/src/axes.rs) -- 2 files +- bitflags 2.x keeps the `bitflags!` macro but struct visibility syntax changes slightly. Manual serde impls and `.bits()` / `.from_bits()` remain but some trait impls (like `Hash`) are now auto-derived. + +--- + +## Tier 2 -- Low Risk (rojo main + crates) + +### 2a. winreg 0.10 to 0.55 + +- **File:** [Cargo.toml](Cargo.toml) (Windows target dep) +- **Code change:** [src/auth_cookie.rs](src/auth_cookie.rs) -- 1 file, ~6 lines +- Core API (`RegKey::predef`, `open_subkey`, `get_value`) is preserved. Main change is the backend switched from `winapi` to `windows-sys`. + +### 2b. serde_yaml 0.8 to 0.9 + +- **Files:** + - [Cargo.toml](Cargo.toml) (dev-deps) + - [crates/rojo-insta-ext/Cargo.toml](crates/rojo-insta-ext/Cargo.toml) + - [rbx-dom/rbx_util/Cargo.toml](rbx-dom/rbx_util/Cargo.toml) + - [rbx-dom/rbx_reflector/Cargo.toml](rbx-dom/rbx_reflector/Cargo.toml) +- **Code changes:** [crates/rojo-insta-ext/src/redaction_map.rs](crates/rojo-insta-ext/src/redaction_map.rs), [rbx-dom/rbx_util/src/view_binary.rs](rbx-dom/rbx_util/src/view_binary.rs), [rbx-dom/rbx_reflector/src/patches.rs](rbx-dom/rbx_reflector/src/patches.rs) -- 3 files +- serde_yaml 0.9 renames `Value::Mapping` internals and changes error types. The basic `from_str`, `to_writer`, `to_value` APIs are largely the same. May also affect insta snapshot test output formatting. + +--- + +## Tier 3 -- Medium Risk + +### 3a. criterion 0.3/0.5 to 0.8 + +- **Files:** + - [Cargo.toml](Cargo.toml) (dev-deps: `0.3.6`) + - [rbx-dom/rbx_binary/Cargo.toml](rbx-dom/rbx_binary/Cargo.toml) (dev-deps: `0.5.1`) +- **Code changes:** [benches/build.rs](benches/build.rs), [rbx-dom/rbx_binary/benches/suite/main.rs](rbx-dom/rbx_binary/benches/suite/main.rs), [rbx-dom/rbx_binary/benches/suite/util.rs](rbx-dom/rbx_binary/benches/suite/util.rs) -- 3 files +- criterion 0.8 removed `criterion_group!` / `criterion_main!` macros in favor of a new runner. Benchmark functions remain similar but setup code will change. + +### 3b. xml-rs 0.8 to 1.0 + +- **File:** [rbx-dom/rbx_xml/Cargo.toml](rbx-dom/rbx_xml/Cargo.toml) +- **Code changes:** [rbx-dom/rbx_xml/src/deserializer_core.rs](rbx-dom/rbx_xml/src/deserializer_core.rs), [rbx-dom/rbx_xml/src/serializer_core.rs](rbx-dom/rbx_xml/src/serializer_core.rs), and [rbx-dom/rbx_xml/src/types/physical_properties.rs](rbx-dom/rbx_xml/src/types/physical_properties.rs) -- 3 files, ~300 lines +- xml-rs 1.0 rebrands to the `xml` crate. The event-based reader/writer API has the same structure but types/namespaces changed. `ParserConfig`, `EventReader`, `EmitterConfig`, `EventWriter` all have equivalents but may be renamed or restructured. + +### 3c. reqwest 0.11 to 0.13 + +- **Files:** [Cargo.toml](Cargo.toml), [rbx-dom/rbx_reflector/Cargo.toml](rbx-dom/rbx_reflector/Cargo.toml) +- **Code changes:** [src/cli/studio.rs](src/cli/studio.rs), [src/cli/syncback.rs](src/cli/syncback.rs), [src/cli/upload.rs](src/cli/upload.rs) -- 3 files +- reqwest 0.13 **still supports `blocking**`. Main breaking changes: internal HTTP client changes, some header/feature reorganization. The `reqwest::blocking::Client` API is preserved. + +--- + +## Tier 4 -- High Risk + +### 4a. bincode 1.x to 3.0 + +- **Files:** [Cargo.toml](Cargo.toml) (deps + build-deps), [rbx-dom/rbx_types/Cargo.toml](rbx-dom/rbx_types/Cargo.toml) (dev-deps) +- **Code changes:** + - [build.rs](build.rs) -- `bincode::serialize_into` calls + - [src/cli/plugin.rs](src/cli/plugin.rs) -- `bincode::deserialize` call + - [src/cli/init.rs](src/cli/init.rs) -- `bincode::deserialize` call + - ~16 test usages across `rbx-dom/rbx_types/src/` (serialization roundtrips) +- bincode 3.0 completely rewrites the API. Serde support is opt-in via the `serde` feature. `serialize`/`deserialize` become `bincode::serde::encode_to_vec` / `bincode::serde::decode_from_slice` with an explicit `Configuration`. For backward compatibility with existing bincode 1.x-encoded data (embedded plugin/template snapshots), use `config::legacy()`. +- **Critical concern:** The build.rs embeds snapshots at compile time that are deserialized at runtime. The format must remain compatible across the upgrade, or the embedded blobs must be regenerated. + +### 4b. hyper 0.14 to 1.x + hyper-tungstenite 0.11 to 0.19 + +- **Files:** [Cargo.toml](Cargo.toml) +- **New dependency needed:** `hyper-util` (provides the server and service utilities removed from hyper core) +- **Code changes:** + - [src/web/mod.rs](src/web/mod.rs) -- Server setup (~25 lines). `hyper::Server::bind` replaced by `hyper_util::server::conn::auto::Builder` + a TCP accept loop. + - [src/web/api.rs](src/web/api.rs) -- Request/response handling (~50 lines). `hyper::Body` becomes a trait; use `http_body_util::Full` or `BoxBody`. + - [src/web/ui.rs](src/web/ui.rs) -- Same Body/Response changes (~20 lines). + - [src/web/util.rs](src/web/util.rs) -- Response builder helpers (~30 lines). `Body::from()` becomes `Full::new(Bytes::from(...))`. + - [tests/rojo_test/serve_util.rs](tests/rojo_test/serve_util.rs) -- Test WebSocket client (~15 lines). +- **New dependencies:** `hyper-util`, `http-body-util`, `bytes` (if not already present) +- This is the most architecturally impactful change. The server accept loop, body type system, and service pattern all change fundamentally. + +--- + +## Execution Strategy + +Work in this order so each tier builds on stable ground: + +1. **Tier 1** (rbx-dom: rand, bitflags) -- Isolated to rbx_types, no downstream API changes +2. **Tier 2** (winreg, serde_yaml) -- Simple API surface, low blast radius +3. **Tier 3** (criterion, xml-rs, reqwest) -- More code changes but well-scoped +4. **Tier 4** (bincode, hyper stack) -- Architectural changes, do last + +After each tier: run `cargo test` and `cargo clippy` to verify. For rbx-dom changes, commit to the submodule first, then update the submodule pointer in the main repo. + +**serde_yaml snapshot tests:** The 0.8 to 0.9 upgrade may change YAML serialization output slightly (e.g., tag formatting). Run `cargo insta review` after upgrading to accept snapshot diffs. \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 58d78d0a..d9178f93 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,6 +54,15 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + [[package]] name = "anes" version = "0.1.6" @@ -161,6 +170,12 @@ dependencies = [ "tokio", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -178,6 +193,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "backtrace" version = "0.3.76" @@ -205,12 +242,6 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -219,11 +250,22 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" -version = "1.3.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" dependencies = [ + "bincode_derive", "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", ] [[package]] @@ -346,6 +388,12 @@ dependencies = [ "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cfg-if" version = "0.1.10" @@ -358,6 +406,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "ciborium" version = "0.2.2" @@ -382,7 +436,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", - "half 2.7.1", + "half", ] [[package]] @@ -440,12 +494,31 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + [[package]] name = "colorchoice" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "compression-codecs" version = "0.4.36" @@ -506,9 +579,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -540,51 +613,24 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.6" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" -dependencies = [ - "atty", - "cast", - "clap 2.34.0", - "criterion-plot 0.4.5", - "csv", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" dependencies = [ + "alloca", "anes", "cast", "ciborium", "clap 4.5.57", - "criterion-plot 0.5.0", - "is-terminal", + "criterion-plot", "itertools", "num-traits", - "once_cell", "oorandom", + "page_size", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -592,19 +638,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" -dependencies = [ - "cast", - "itertools", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" dependencies = [ "cast", "itertools", @@ -782,6 +818,12 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "either" version = "1.15.0" @@ -909,12 +951,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foldhash" version = "0.2.0" @@ -939,6 +975,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "fsevent-sys" version = "4.1.0" @@ -1080,8 +1122,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if 1.0.4", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1091,9 +1135,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if 1.0.4", + "js-sys", "libc", "r-efi", "wasip2", + "wasm-bindgen", ] [[package]] @@ -1115,31 +1161,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" - [[package]] name = "half" version = "2.7.1" @@ -1151,12 +1172,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.16.1" @@ -1172,7 +1187,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" dependencies = [ - "hashbrown 0.16.1", + "hashbrown", ] [[package]] @@ -1204,23 +1219,34 @@ checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" [[package]] name = "http" -version = "0.2.12" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", "pin-project-lite", ] @@ -1244,55 +1270,80 @@ checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" -version = "0.14.32" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", "futures-core", - "futures-util", - "h2", "http", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.10", + "pin-utils", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", + "hyper-util", "rustls", + "rustls-pki-types", "tokio", "tokio-rustls", + "tower-service", ] [[package]] name = "hyper-tungstenite" -version = "0.11.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc7dcb1ab67cd336f468a12491765672e61a3b6b148634dbfe2fe8acd3fe7d9" +checksum = "bc778da281a749ed28d2be73a9f2cd13030680a1574bc729debd1195e44f00e9" dependencies = [ + "http-body-util", "hyper", + "hyper-util", "pin-project-lite", "tokio", "tokio-tungstenite", "tungstenite", ] +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + [[package]] name = "icu_collections" version = "2.1.1" @@ -1395,16 +1446,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.13.0" @@ -1412,7 +1453,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown", "serde", "serde_core", ] @@ -1459,14 +1500,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "is-terminal" -version = "0.4.17" +name = "iri-string" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ - "hermit-abi 0.5.2", - "libc", - "windows-sys 0.61.2", + "memchr", + "serde", ] [[package]] @@ -1477,9 +1517,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.10.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -1514,6 +1554,28 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if 1.0.4", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jobserver" version = "0.1.34" @@ -1592,12 +1654,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -1638,6 +1694,12 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lz4_flex" version = "0.12.0" @@ -1681,12 +1743,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1830,12 +1886,28 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1939,7 +2011,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64 0.22.1", - "indexmap 2.13.0", + "indexmap", "quick-xml", "serde", "time 0.3.47", @@ -2081,6 +2153,62 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "0.6.13" @@ -2107,20 +2235,19 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" -version = "0.8.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -2128,11 +2255,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.3.4", ] [[package]] @@ -2160,7 +2287,7 @@ name = "rbx_binary" version = "2.0.1" dependencies = [ "ahash", - "criterion 0.5.1", + "criterion", "env_logger 0.11.8", "heck", "insta", @@ -2229,7 +2356,7 @@ version = "3.1.0" dependencies = [ "base64 0.22.1", "bincode", - "bitflags 1.3.2", + "bitflags 2.10.0", "blake3", "insta", "lazy_static", @@ -2334,45 +2461,41 @@ checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" dependencies = [ - "async-compression", - "base64 0.21.7", + "base64 0.22.1", "bytes", - "encoding_rs", + "futures-channel", "futures-core", "futures-util", - "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-rustls", - "ipnet", + "hyper-util", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", + "quinn", "rustls", - "rustls-pemfile", + "rustls-pki-types", + "rustls-platform-verifier", "serde", "serde_json", - "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-rustls", - "tokio-util", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", - "winreg 0.50.0", ] [[package]] @@ -2451,8 +2574,9 @@ dependencies = [ "backtrace", "bincode", "blake3", + "bytes", "clap 4.5.57", - "criterion 0.3.6", + "criterion", "crossbeam-channel", "csv", "data-encoding", @@ -2462,10 +2586,12 @@ dependencies = [ "fs-err", "futures", "globset", + "http-body-util", "humantime", "hyper", "hyper-tungstenite", - "indexmap 2.13.0", + "hyper-util", + "indexmap", "insta", "jod-thread", "json5", @@ -2503,7 +2629,7 @@ dependencies = [ "toml", "uuid", "walkdir", - "winreg 0.10.1", + "winreg 0.55.0", "yaml-rust2", ] @@ -2533,6 +2659,12 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc_version" version = "0.2.3" @@ -2566,32 +2698,76 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.12" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ - "log", - "ring", + "aws-lc-rs", + "once_cell", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-native-certs" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "base64 0.21.7", + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", ] +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ + "aws-lc-rs", "ring", + "rustls-pki-types", "untrusted", ] @@ -2616,6 +2792,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -2629,13 +2814,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "sct" -version = "0.7.1" +name = "security-framework" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "ring", - "untrusted", + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -2679,16 +2877,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half 1.8.3", - "serde", -] - [[package]] name = "serde_core" version = "1.0.228" @@ -2732,27 +2920,16 @@ dependencies = [ ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "serde_yaml" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "form_urlencoded", + "indexmap", "itoa", "ryu", "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" -dependencies = [ - "indexmap 1.9.3", - "ryu", - "serde", - "yaml-rust", + "unsafe-libyaml", ] [[package]] @@ -2840,16 +3017,6 @@ dependencies = [ "proc-macro2 0.4.30", ] -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "socket2" version = "0.6.2" @@ -2957,6 +3124,12 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "1.0.109" @@ -2981,9 +3154,12 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -2996,27 +3172,6 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tempfile" version = "3.24.0" @@ -3186,6 +3341,21 @@ dependencies = [ "serde_json", ] +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.49.0" @@ -3196,7 +3366,7 @@ dependencies = [ "libc", "mio", "pin-project-lite", - "socket2 0.6.2", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] @@ -3214,9 +3384,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", "tokio", @@ -3224,9 +3394,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", @@ -3253,7 +3423,7 @@ version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ - "indexmap 2.13.0", + "indexmap", "serde_core", "serde_spanned", "toml_datetime", @@ -3286,6 +3456,50 @@ version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "iri-string", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -3370,11 +3584,10 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ - "byteorder 1.5.0", "bytes", "data-encoding", "http", @@ -3382,8 +3595,7 @@ dependencies = [ "log", "rand", "sha1 0.10.6", - "thiserror 1.0.69", - "url", + "thiserror 2.0.18", "utf-8", ] @@ -3423,12 +3635,24 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.8" @@ -3502,6 +3726,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "vswhom" version = "0.1.0" @@ -3632,10 +3862,23 @@ dependencies = [ ] [[package]] -name = "webpki-roots" -version = "0.25.4" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "winapi" @@ -3685,11 +3928,11 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.42.2", ] [[package]] @@ -3730,17 +3973,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -3778,9 +4021,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" @@ -3796,9 +4039,9 @@ checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" @@ -3814,9 +4057,9 @@ checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" @@ -3844,9 +4087,9 @@ checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" @@ -3862,9 +4105,9 @@ checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" @@ -3880,9 +4123,9 @@ checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" @@ -3898,9 +4141,9 @@ checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" @@ -3938,16 +4181,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if 1.0.4", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.55.0" @@ -3971,18 +4204,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] -name = "xml-rs" -version = "0.8.28" +name = "xml" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +checksum = "b8aa498d22c9bbaf482329839bc5620c46be275a19a812e9a22a2b07529a642a" [[package]] -name = "yaml-rust" -version = "0.4.5" +name = "xml-rs" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "c3a56132a0d6ecbe77352edc10232f788fc4ceefefff4cab784a98e0e16b6b51" dependencies = [ - "linked-hash-map", + "xml", ] [[package]] @@ -4066,6 +4299,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + [[package]] name = "zerotrie" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index 35f5dbf8..52f1f419 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,7 +57,7 @@ rbx_xml = { path = "rbx-dom/rbx_xml" } anyhow = "1.0.101" backtrace = "0.3.76" -bincode = "1.3.3" +bincode = { version = "2", features = ["serde"] } crossbeam-channel = "0.5.15" csv = "1.4.0" env_logger = "0.11" @@ -65,18 +65,21 @@ fs-err = "3" futures = "0.3.31" globset = "0.4.18" humantime = "2.3.0" -hyper = { version = "0.14.32", features = ["server", "tcp", "http1"] } -hyper-tungstenite = "0.11.1" +hyper = { version = "1", features = ["server", "http1"] } +hyper-util = { version = "0.1", features = ["tokio"] } +http-body-util = "0.1" +bytes = "1" +hyper-tungstenite = "0.19" jod-thread = "1.0.0" log = "0.4.29" num_cpus = "1.17.0" opener = "0.8.4" rayon = "1.11.0" rbx_cookie = "0.1.5" -reqwest = { version = "0.11.27", default-features = false, features = [ +reqwest = { version = "0.13", default-features = false, features = [ "blocking", "json", - "rustls-tls", + "rustls", "gzip", "brotli", "deflate", @@ -105,14 +108,14 @@ rmp-serde = "1.3.1" serde_bytes = "0.11.19" [target.'cfg(windows)'.dependencies] -winreg = "0.10.1" +winreg = "0.55" [build-dependencies] memofs = { version = "0.3.0", path = "crates/memofs" } embed-resource = "3.0.6" anyhow = "1.0.101" -bincode = "1.3.3" +bincode = { version = "2", features = ["serde"] } fs-err = "3" maplit = "1.0.2" semver = "1.0.27" @@ -120,10 +123,10 @@ semver = "1.0.27" [dev-dependencies] rojo-insta-ext = { path = "crates/rojo-insta-ext" } -criterion = "0.3.6" +criterion = "0.8" insta = { version = "1.46.3", features = ["redactions", "yaml"] } paste = "1.0.15" pretty_assertions = "1.4.1" regex = "1" -serde_yaml = "0.8.26" +serde_yaml = "0.9" walkdir = "2.5.0" diff --git a/build.rs b/build.rs index 21d96e69..b03589d0 100644 --- a/build.rs +++ b/build.rs @@ -99,11 +99,19 @@ fn main() -> Result<(), anyhow::Error> { }), }); - let template_file = File::create(Path::new(&out_dir).join("templates.bincode"))?; - let plugin_file = File::create(Path::new(&out_dir).join("plugin.bincode"))?; + let mut template_file = File::create(Path::new(&out_dir).join("templates.bincode"))?; + let mut plugin_file = File::create(Path::new(&out_dir).join("plugin.bincode"))?; - bincode::serialize_into(plugin_file, &plugin_snapshot)?; - bincode::serialize_into(template_file, &template_snapshot)?; + bincode::serde::encode_into_std_write( + &plugin_snapshot, + &mut plugin_file, + bincode::config::standard(), + )?; + bincode::serde::encode_into_std_write( + &template_snapshot, + &mut template_file, + bincode::config::standard(), + )?; println!("cargo:rerun-if-changed=build/windows/rojo-manifest.rc"); println!("cargo:rerun-if-changed=build/windows/rojo.manifest"); diff --git a/crates/rojo-insta-ext/Cargo.toml b/crates/rojo-insta-ext/Cargo.toml index 85c316c7..643184c5 100644 --- a/crates/rojo-insta-ext/Cargo.toml +++ b/crates/rojo-insta-ext/Cargo.toml @@ -7,4 +7,4 @@ publish = false [dependencies] serde = "1.0.228" -serde_yaml = "0.8.26" +serde_yaml = "0.9" diff --git a/rbx-dom b/rbx-dom index a5bc66e3..258802d5 160000 --- a/rbx-dom +++ b/rbx-dom @@ -1 +1 @@ -Subproject commit a5bc66e39f1d51469d8190cd4233850ea96f519b +Subproject commit 258802d5619fefec7a8558465c0c872e8b7968ed diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all-2.snap index 0229179a..95a1f872 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all-2.snap @@ -1,7 +1,6 @@ --- source: tests/tests/serve.rs expression: "read_response.intern_and_redact(&mut redactions, root_id)" - --- instances: id-2: @@ -14,7 +13,6 @@ instances: Parent: "00000000000000000000000000000000" Properties: Source: - String: "-- Edited contents" + "!String": "-- Edited contents" messageCursor: 1 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all.snap index 22b21e0a..9f1df411 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_all.snap @@ -13,6 +13,6 @@ instances: Parent: "00000000000000000000000000000000" Properties: Source: - String: "-- Original contents" + "!String": "-- Original contents" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_subscribe.snap index 32a266ea..c9d93dd7 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__edit_init_subscribe.snap @@ -13,7 +13,7 @@ body: changedName: ~ changedProperties: Source: - String: "-- Edited contents" + "!String": "-- Edited contents" id: id-2 packetType: messages sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_all-2.snap index b6ccce20..21fb4b8a 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_all-2.snap @@ -23,6 +23,6 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false messageCursor: 1 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_subscribe.snap index 74ce73a2..3c1e34e4 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__empty_json_model_subscribe.snap @@ -16,7 +16,7 @@ body: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false removed: [] updated: [] packetType: messages diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__meshpart_with_id_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__meshpart_with_id_all.snap index cd654f22..48871d6e 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__meshpart_with_id_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__meshpart_with_id_all.snap @@ -25,7 +25,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: ObjectValue @@ -36,9 +36,9 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 9893f640faccb9150197026b0ca91712 id-5: Children: [] ClassName: MeshPart @@ -49,8 +49,8 @@ instances: Parent: id-3 Properties: MeshId: - ContentId: "rbxasset://fonts/sword.mesh" + "!ContentId": "rbxasset://fonts/sword.mesh" TextureID: - ContentId: "rbxasset://textures/SwordTexture.png" + "!ContentId": "rbxasset://textures/SwordTexture.png" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all-2.snap index e69d71f4..c8ddeb4a 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all-2.snap @@ -26,7 +26,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: Model @@ -37,7 +37,7 @@ instances: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-5: Children: [] ClassName: Tool @@ -48,7 +48,7 @@ instances: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-6: Children: [] ClassName: Actor @@ -59,6 +59,6 @@ instances: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false messageCursor: 1 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all.snap index 9b7a6045..2717d135 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__model_pivot_migration_all.snap @@ -16,7 +16,7 @@ body: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false removed: [] updated: - changedClassName: ~ diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_all-2.snap index 9b4c47f7..fed2c9d8 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_all-2.snap @@ -1,7 +1,6 @@ --- source: tests/tests/serve.rs expression: "read_response.intern_and_redact(&mut redactions, root_id)" - --- instances: id-10: @@ -14,7 +13,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #6" + "!String": "File #6" id-11: Children: [] ClassName: StringValue @@ -25,7 +24,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #7" + "!String": "File #7" id-12: Children: [] ClassName: StringValue @@ -36,7 +35,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #8" + "!String": "File #8" id-13: Children: [] ClassName: StringValue @@ -47,7 +46,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #9" + "!String": "File #9" id-2: Children: - id-3 @@ -87,7 +86,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #0" + "!String": "File #0" id-5: Children: [] ClassName: StringValue @@ -98,7 +97,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #1" + "!String": "File #1" id-6: Children: [] ClassName: StringValue @@ -109,7 +108,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #2" + "!String": "File #2" id-7: Children: [] ClassName: StringValue @@ -120,7 +119,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #3" + "!String": "File #3" id-8: Children: [] ClassName: StringValue @@ -131,7 +130,7 @@ instances: Parent: id-3 Properties: Value: - String: "File #4" + "!String": "File #4" id-9: Children: [] ClassName: StringValue @@ -142,7 +141,6 @@ instances: Parent: id-3 Properties: Value: - String: "File #5" + "!String": "File #5" messageCursor: 1 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_subscribe.snap index 547ddd58..294f2df4 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__move_folder_of_stuff_subscribe.snap @@ -16,7 +16,7 @@ body: Parent: id-3 Properties: Value: - String: "File #6" + "!String": "File #6" id-11: Children: [] ClassName: StringValue @@ -27,7 +27,7 @@ body: Parent: id-3 Properties: Value: - String: "File #7" + "!String": "File #7" id-12: Children: [] ClassName: StringValue @@ -38,7 +38,7 @@ body: Parent: id-3 Properties: Value: - String: "File #8" + "!String": "File #8" id-13: Children: [] ClassName: StringValue @@ -49,7 +49,7 @@ body: Parent: id-3 Properties: Value: - String: "File #9" + "!String": "File #9" id-3: Children: - id-4 @@ -79,7 +79,7 @@ body: Parent: id-3 Properties: Value: - String: "File #0" + "!String": "File #0" id-5: Children: [] ClassName: StringValue @@ -90,7 +90,7 @@ body: Parent: id-3 Properties: Value: - String: "File #1" + "!String": "File #1" id-6: Children: [] ClassName: StringValue @@ -101,7 +101,7 @@ body: Parent: id-3 Properties: Value: - String: "File #2" + "!String": "File #2" id-7: Children: [] ClassName: StringValue @@ -112,7 +112,7 @@ body: Parent: id-3 Properties: Value: - String: "File #3" + "!String": "File #3" id-8: Children: [] ClassName: StringValue @@ -123,7 +123,7 @@ body: Parent: id-3 Properties: Value: - String: "File #4" + "!String": "File #4" id-9: Children: [] ClassName: StringValue @@ -134,7 +134,7 @@ body: Parent: id-3 Properties: Value: - String: "File #5" + "!String": "File #5" removed: [] updated: [] packetType: messages diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap index a8179a91..5de16b2c 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap @@ -33,7 +33,6 @@ instances: Parent: id-3 Properties: Value: - Int64: 1337 + "!Int64": 1337 messageCursor: 0 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap index 1b398a92..0995ce60 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap @@ -1,6 +1,5 @@ --- source: tests/tests/serve.rs -assertion_line: 338 expression: "read_response.intern_and_redact(&mut redactions, root_id)" --- instances: @@ -34,7 +33,6 @@ instances: Parent: id-3 Properties: Value: - Bool: true + "!Bool": true messageCursor: 0 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap index 2941eea8..a9ee6695 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap @@ -1,6 +1,5 @@ --- source: tests/tests/serve.rs -assertion_line: 370 expression: "read_response.intern_and_redact(&mut redactions, root_id)" --- instances: @@ -14,6 +13,6 @@ instances: Parent: "00000000000000000000000000000000" Properties: Value: - String: "If this isn't named `no_name_top_level_project`, something went wrong!" + "!String": "If this isn't named `no_name_top_level_project`, something went wrong!" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap index ea52fe4b..a9ee6695 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap @@ -1,6 +1,5 @@ --- source: tests/tests/serve.rs -assertion_line: 357 expression: "read_response.intern_and_redact(&mut redactions, root_id)" --- instances: @@ -14,7 +13,6 @@ instances: Parent: "00000000000000000000000000000000" Properties: Value: - String: "If this isn't named `no_name_top_level_project`, something went wrong!" + "!String": "If this isn't named `no_name_top_level_project`, something went wrong!" messageCursor: 0 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__pivot_migration_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__pivot_migration_all.snap index 7e47619d..dd74e191 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__pivot_migration_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__pivot_migration_all.snap @@ -25,7 +25,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: Model @@ -36,7 +36,7 @@ instances: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-5: Children: [] ClassName: Tool @@ -47,6 +47,6 @@ instances: Parent: id-3 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap index eb971880..9af0526c 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap @@ -13,9 +13,9 @@ instances: Parent: id-9 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-9 + "!Ref": a014b12bf90014847f564374c73a5f38 id-11: Children: [] ClassName: Model @@ -26,11 +26,11 @@ instances: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-9 + "!Ref": a014b12bf90014847f564374c73a5f38 id-2: Children: - id-3 @@ -55,7 +55,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: ObjectValue @@ -66,9 +66,9 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 4d3455270f6618409e7d40dbcad9e25b id-5: Children: - id-6 @@ -89,9 +89,9 @@ instances: Parent: id-5 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 4d3455270f6618409e7d40dbcad9e25b id-7: Children: - id-8 @@ -104,7 +104,7 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} id-8: Children: [] ClassName: Model @@ -115,11 +115,11 @@ instances: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-7 + "!Ref": 4536e7ddde75409951458987be6ccfb5 id-9: Children: - id-10 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap index 1acb38e8..e77712b4 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap @@ -13,9 +13,9 @@ instances: Parent: id-9 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-9 + "!Ref": a014b12bf90014847f564374c73a5f38 id-2: Children: - id-3 @@ -40,7 +40,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: ObjectValue @@ -51,9 +51,9 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 4d3455270f6618409e7d40dbcad9e25b id-5: Children: - id-6 @@ -74,9 +74,9 @@ instances: Parent: id-5 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 4d3455270f6618409e7d40dbcad9e25b id-7: Children: - id-8 @@ -97,11 +97,11 @@ instances: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-7 + "!Ref": 4536e7ddde75409951458987be6ccfb5 id-9: Children: - id-10 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap index 2c39c698..03c867cf 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap @@ -13,9 +13,9 @@ instances: Parent: id-9 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-9 + "!Ref": a2c2197b7d6e19e64b8991926744f3a6 id-2: Children: - id-3 @@ -40,7 +40,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: ObjectValue @@ -51,9 +51,9 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 75d2ce9353a6c62f29130f18c35c89ce id-5: Children: - id-6 @@ -74,9 +74,9 @@ instances: Parent: id-5 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 75d2ce9353a6c62f29130f18c35c89ce id-7: Children: - id-8 @@ -97,13 +97,13 @@ instances: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-7 + "!Ref": 103b2053eb8c4ea0a65500d5c20bd84f Scale: - Float32: 1 + "!Float32": 1 id-9: Children: - id-10 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap index 1acb38e8..0d614977 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap @@ -13,9 +13,9 @@ instances: Parent: id-9 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-9 + "!Ref": a2c2197b7d6e19e64b8991926744f3a6 id-2: Children: - id-3 @@ -40,7 +40,7 @@ instances: Parent: id-2 Properties: NeedsPivotMigration: - Bool: false + "!Bool": false id-4: Children: [] ClassName: ObjectValue @@ -51,9 +51,9 @@ instances: Parent: id-3 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 75d2ce9353a6c62f29130f18c35c89ce id-5: Children: - id-6 @@ -74,9 +74,9 @@ instances: Parent: id-5 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-5 + "!Ref": 75d2ce9353a6c62f29130f18c35c89ce id-7: Children: - id-8 @@ -97,11 +97,11 @@ instances: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-7 + "!Ref": 103b2053eb8c4ea0a65500d5c20bd84f id-9: Children: - id-10 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_subscribe.snap index 0020025f..ee536870 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_subscribe.snap @@ -13,11 +13,11 @@ body: changedName: ~ changedProperties: Attributes: - Attributes: + "!Attributes": Rojo_Target_PrimaryPart: - String: model target + "!String": model target Scale: - Float32: 1 + "!Float32": 1 id: id-8 packetType: messages sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap index bc9e5020..a79506bc 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap @@ -23,8 +23,8 @@ instances: Parent: id-2 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-4 + "!Ref": ca113df936e8659c00936176b40b02ae messageCursor: 1 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap index c40cd6ca..80309891 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap @@ -24,9 +24,9 @@ instances: Parent: id-2 Properties: Attributes: - Attributes: {} + "!Attributes": {} Value: - Ref: id-4 + "!Ref": ca113df936e8659c00936176b40b02ae id-4: Children: [] ClassName: ObjectValue @@ -37,6 +37,6 @@ instances: Parent: id-2 Properties: Attributes: - Attributes: {} + "!Attributes": {} messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap index c2a17bd2..826732e0 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap @@ -16,11 +16,11 @@ body: Parent: id-7 Properties: Attributes: - Attributes: {} + "!Attributes": {} NeedsPivotMigration: - Bool: false + "!Bool": false PrimaryPart: - Ref: id-9 + "!Ref": a014b12bf90014847f564374c73a5f38 removed: [] updated: - changedClassName: ~ @@ -29,18 +29,18 @@ body: changedName: ~ changedProperties: Attributes: - Attributes: + "!Attributes": Rojo_Id: - String: model target 2 + "!String": model target 2 id: id-7 - changedClassName: ~ changedMetadata: ~ changedName: ~ changedProperties: Attributes: - Attributes: + "!Attributes": Rojo_Target_PrimaryPart: - String: model target 2 + "!String": model target 2 PrimaryPart: ~ id: id-8 packetType: messages diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__remove_file_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__remove_file_all.snap index 4ec6ce4c..67f634d0 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__remove_file_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__remove_file_all.snap @@ -1,7 +1,6 @@ --- source: tests/tests/serve.rs expression: "read_response.intern_and_redact(&mut redactions, root_id)" - --- instances: id-2: @@ -24,7 +23,6 @@ instances: Parent: id-2 Properties: Value: - String: This file will be removed! + "!String": This file will be removed! messageCursor: 0 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all-2.snap index d344efbd..4e4ddc7f 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all-2.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all-2.snap @@ -24,9 +24,9 @@ instances: Parent: id-2 Properties: RunContext: - Enum: 1 + "!Enum": 1 Source: - String: "-- Hello, from bar!" + "!String": "-- Hello, from bar!" id-4: Children: [] ClassName: ModuleScript @@ -37,6 +37,6 @@ instances: Parent: id-2 Properties: Source: - String: Updated foo! + "!String": Updated foo! messageCursor: 1 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all.snap index 2671f94b..73e89bee 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_all.snap @@ -24,9 +24,9 @@ instances: Parent: id-2 Properties: RunContext: - Enum: 1 + "!Enum": 1 Source: - String: "-- Hello, from bar!" + "!String": "-- Hello, from bar!" id-4: Children: [] ClassName: ModuleScript @@ -37,6 +37,6 @@ instances: Parent: id-2 Properties: Source: - String: "-- Hello, from foo!" + "!String": "-- Hello, from foo!" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_subscribe.snap index d4050101..9b468ffa 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_subscribe.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__scripts_subscribe.snap @@ -13,7 +13,7 @@ body: changedName: ~ changedProperties: Source: - String: Updated foo! + "!String": Updated foo! id: id-4 packetType: messages sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_alone_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_alone_all.snap index 79c94d6e..e3311819 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_alone_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_alone_all.snap @@ -23,6 +23,6 @@ instances: Parent: id-2 Properties: Value: - String: "Hello, world!" + "!String": "Hello, world!" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_complex_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_complex_all.snap index 87cb8b5e..bae46f4c 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_complex_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_complex_all.snap @@ -27,9 +27,9 @@ instances: Parent: id-2 Properties: RunContext: - Enum: 1 + "!Enum": 1 Source: - String: "-- Hello, from bar (a Script)!" + "!String": "-- Hello, from bar (a Script)!" id-4: Children: [] ClassName: Script @@ -40,9 +40,9 @@ instances: Parent: id-2 Properties: RunContext: - Enum: 2 + "!Enum": 2 Source: - String: "-- Hello, from baz (a LocalScript)!" + "!String": "-- Hello, from baz (a LocalScript)!" id-5: Children: [] ClassName: StringValue @@ -53,7 +53,7 @@ instances: Parent: id-2 Properties: Value: - String: "Hello, from cat (a StringValue)!" + "!String": "Hello, from cat (a StringValue)!" id-6: Children: [] ClassName: ModuleScript @@ -64,7 +64,7 @@ instances: Parent: id-2 Properties: Source: - String: "-- Hello, from foo (a ModuleScript)!" + "!String": "-- Hello, from foo (a ModuleScript)!" id-7: Children: [] ClassName: StringValue @@ -75,6 +75,6 @@ instances: Parent: id-2 Properties: Value: - String: "Hello, from qux (a .rojo file that's turned into a StringValue)!" + "!String": "Hello, from qux (a .rojo file that's turned into a StringValue)!" messageCursor: 0 sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_extension_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_extension_all.snap index f3210d3c..dd3196a8 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_extension_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_extension_all.snap @@ -1,6 +1,5 @@ --- source: tests/tests/serve.rs -assertion_line: 303 expression: "read_response.intern_and_redact(&mut redactions, root_id)" --- instances: @@ -24,7 +23,6 @@ instances: Parent: id-2 Properties: Source: - String: "return {\"This file has no extension but should be a ModuleScript named `no_extension`\"}" + "!String": "return {\"This file has no extension but should be a ModuleScript named `no_extension`\"}" messageCursor: 0 sessionId: id-1 - diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap index 0b25468a..918d12a7 100644 --- a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap @@ -1,6 +1,5 @@ --- source: tests/tests/serve.rs -assertion_line: 389 expression: "read_response.intern_and_redact(&mut redactions, root_id)" --- instances: @@ -15,7 +14,7 @@ instances: Parent: "00000000000000000000000000000000" Properties: Value: - String: "This should be named `sync_rule_no_name_project` and have a child at `src/not_a_project`" + "!String": "This should be named `sync_rule_no_name_project` and have a child at `src/not_a_project`" id-3: Children: - id-4 @@ -36,6 +35,6 @@ instances: Parent: id-3 Properties: Value: - String: "If this isn't named `not_a_project`, something has gone wrong!" + "!String": "If this isn't named `not_a_project`, something has gone wrong!" messageCursor: 0 sessionId: id-1 diff --git a/src/cli/init.rs b/src/cli/init.rs index 768b0a46..413ca89b 100644 --- a/src/cli/init.rs +++ b/src/cli/init.rs @@ -229,8 +229,9 @@ impl InitKind { Self::Plugin => "plugin", }; - let snapshot: VfsSnapshot = bincode::deserialize(TEMPLATE_BINCODE) - .expect("Rojo's templates were not properly packed into Rojo's binary"); + let (snapshot, _): (VfsSnapshot, usize) = + bincode::serde::decode_from_slice(TEMPLATE_BINCODE, bincode::config::standard()) + .expect("Rojo's templates were not properly packed into Rojo's binary"); if let VfsSnapshot::Dir { mut children } = snapshot { if let Some(template) = children.remove(template_path) { diff --git a/src/cli/plugin.rs b/src/cli/plugin.rs index 03177654..4c2e209c 100644 --- a/src/cli/plugin.rs +++ b/src/cli/plugin.rs @@ -47,8 +47,9 @@ impl PluginSubcommand { } fn initialize_plugin() -> anyhow::Result { - let plugin_snapshot: VfsSnapshot = bincode::deserialize(PLUGIN_BINCODE) - .expect("Rojo's plugin was not properly packed into Rojo's binary"); + let (plugin_snapshot, _): (VfsSnapshot, usize) = + bincode::serde::decode_from_slice(PLUGIN_BINCODE, bincode::config::standard()) + .expect("Rojo's plugin was not properly packed into Rojo's binary"); let mut in_memory_fs = InMemoryFs::new(); in_memory_fs.load_snapshot("/plugin", plugin_snapshot)?; diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property-2.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property-2.snap index 4fc4f9ab..04dd09a8 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property-2.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property-2.snap @@ -1,7 +1,6 @@ --- source: src/snapshot/tests/apply.rs expression: applied_patch_value - --- removed: [] added: [] @@ -11,6 +10,5 @@ updated: changed_class_name: ~ changed_properties: Foo: - String: Value of Foo + "!String": Value of Foo changed_metadata: ~ - diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap index ee1d0ab1..80730e29 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap @@ -7,7 +7,7 @@ name: ROOT class_name: ROOT properties: Foo: - String: Value of Foo + "!String": Value of Foo metadata: ignore_unknown_instances: false relevant_paths: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap index ba8afe2a..abfbd69f 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap @@ -7,7 +7,7 @@ name: ROOT class_name: ROOT properties: Foo: - String: Should be removed + "!String": Should be removed metadata: ignore_unknown_instances: false relevant_paths: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__set_property.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__set_property.snap index fbaae3b9..f7603e87 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__set_property.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__set_property.snap @@ -1,7 +1,6 @@ --- source: src/snapshot/tests/compute.rs expression: patch_value - --- removed_instances: [] added_instances: [] @@ -11,6 +10,5 @@ updated_instances: changed_class_name: ~ changed_properties: PropertyName: - String: "Hello, world!" + "!String": "Hello, world!" changed_metadata: ~ - diff --git a/src/web/api.rs b/src/web/api.rs index eda15afb..14e59412 100644 --- a/src/web/api.rs +++ b/src/web/api.rs @@ -9,8 +9,10 @@ use std::{ sync::{Arc, Mutex}, }; +use bytes::Bytes; use futures::{sink::SinkExt, stream::StreamExt}; -use hyper::{body, Body, Method, Request, Response, StatusCode}; +use http_body_util::{BodyExt, Full}; +use hyper::{body::Incoming, Method, Request, Response, StatusCode}; use hyper_tungstenite::{is_upgrade_request, tungstenite::Message, upgrade, HyperWebsocket}; use opener::OpenError; use rbx_dom_weak::{ @@ -116,7 +118,10 @@ fn variant_to_json(variant: &Variant) -> Option { } } -pub async fn call(serve_session: Arc, mut request: Request) -> Response { +pub async fn call( + serve_session: Arc, + mut request: Request, +) -> Response> { let service = ApiService::new(serve_session); match (request.method(), request.uri().path()) { @@ -253,7 +258,7 @@ impl ApiService { } /// Get a summary of information about the server - async fn handle_api_rojo(&self) -> Response { + async fn handle_api_rojo(&self) -> Response> { let tree = self.serve_session.tree(); let root_instance_id = tree.get_root_id(); @@ -281,7 +286,7 @@ impl ApiService { } /// Handle WebSocket upgrade for real-time message streaming - async fn handle_api_socket(&self, request: &mut Request) -> Response { + async fn handle_api_socket(&self, request: &mut Request) -> Response> { let argument = &request.uri().path()["/api/socket/".len()..]; let input_cursor: u32 = match argument.parse() { Ok(v) => v, @@ -318,11 +323,11 @@ impl ApiService { response } - async fn handle_api_write(&self, request: Request) -> Response { + async fn handle_api_write(&self, request: Request) -> Response> { let session_id = self.serve_session.session_id(); let tree_mutation_sender = self.serve_session.tree_mutation_sender(); - let body = body::to_bytes(request.into_body()).await.unwrap(); + let body = request.into_body().collect().await.unwrap().to_bytes(); let request: WriteRequest = match deserialize_msgpack(&body) { Ok(request) => request, @@ -2411,7 +2416,7 @@ impl ApiService { } } - async fn handle_api_read(&self, request: Request) -> Response { + async fn handle_api_read(&self, request: Request) -> Response> { let argument = &request.uri().path()["/api/read/".len()..]; let requested_ids: Result, _> = argument.split(',').map(Ref::from_str).collect(); @@ -2496,7 +2501,7 @@ impl ApiService { /// The returned model is a folder that contains ObjectValues with names /// that correspond to the requested Instances. These values have their /// `Value` property set to point to the requested Instance. - async fn handle_api_serialize(&self, request: Request) -> Response { + async fn handle_api_serialize(&self, request: Request) -> Response> { let argument = &request.uri().path()["/api/serialize/".len()..]; let requested_ids: Result, _> = argument.split(',').map(Ref::from_str).collect(); @@ -2558,7 +2563,7 @@ impl ApiService { /// provided IDs. Used because the plugin does not store a RojoTree, /// and referent properties need to be updated after the serialize /// endpoint is used. - async fn handle_api_ref_patch(&self, request: Request) -> Response { + async fn handle_api_ref_patch(&self, request: Request) -> Response> { let argument = &request.uri().path()["/api/ref-patch/".len()..]; let requested_ids: Result, _> = argument.split(',').map(Ref::from_str).collect(); @@ -2613,7 +2618,7 @@ impl ApiService { } /// Open a script with the given ID in the user's default text editor. - async fn handle_api_open(&self, request: Request) -> Response { + async fn handle_api_open(&self, request: Request) -> Response> { let argument = &request.uri().path()["/api/open/".len()..]; let requested_id = match Ref::from_str(argument) { Ok(id) => id, @@ -2786,7 +2791,7 @@ async fn handle_websocket_subscription( log::debug!("Sending batch of messages over WebSocket subscription"); - if websocket.send(Message::Binary(msgpack_message)).await.is_err() { + if websocket.send(Message::Binary(msgpack_message.into())).await.is_err() { // Client disconnected log::debug!("WebSocket subscription closed by client"); break; diff --git a/src/web/mod.rs b/src/web/mod.rs index d6df4b15..22121be2 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -12,11 +12,12 @@ use std::convert::Infallible; use std::net::SocketAddr; use std::sync::Arc; -use hyper::{ - server::Server, - service::{make_service_fn, service_fn}, - Body, Request, -}; +use hyper::body::Incoming; +use hyper::server::conn::http1; +use hyper::service::service_fn; +use hyper::Request; +use hyper_util::rt::TokioIo; +use tokio::net::TcpListener; use tokio::runtime::Runtime; use crate::serve_session::ServeSession; @@ -33,29 +34,37 @@ impl LiveServer { pub fn start(self, address: SocketAddr) { let serve_session = Arc::clone(&self.serve_session); - let make_service = make_service_fn(move |_conn| { - let serve_session = Arc::clone(&serve_session); + let rt = Runtime::new().unwrap(); + rt.block_on(async move { + let listener = TcpListener::bind(address).await.unwrap(); - async { - let service = move |req: Request| { - let serve_session = Arc::clone(&serve_session); + loop { + let (stream, _) = listener.accept().await.unwrap(); + let io = TokioIo::new(stream); + let serve_session = Arc::clone(&serve_session); - async move { - if req.uri().path().starts_with("/api") { - Ok::<_, Infallible>(api::call(serve_session, req).await) - } else { - Ok::<_, Infallible>(ui::call(serve_session, req).await) + tokio::spawn(async move { + let service = service_fn(move |req: Request| { + let serve_session = Arc::clone(&serve_session); + + async move { + if req.uri().path().starts_with("/api") { + Ok::<_, Infallible>(api::call(serve_session, req).await) + } else { + Ok::<_, Infallible>(ui::call(serve_session, req).await) + } } - } - }; + }); - Ok::<_, Infallible>(service_fn(service)) + if let Err(err) = http1::Builder::new() + .serve_connection(io, service) + .with_upgrades() + .await + { + log::error!("Error serving connection: {err}"); + } + }); } }); - - let rt = Runtime::new().unwrap(); - let _guard = rt.enter(); - let server = Server::bind(&address).serve(make_service); - rt.block_on(server).unwrap(); } } diff --git a/src/web/ui.rs b/src/web/ui.rs index 4d63eaad..43fdf2ad 100644 --- a/src/web/ui.rs +++ b/src/web/ui.rs @@ -6,7 +6,9 @@ use std::{borrow::Cow, sync::Arc, time::Duration}; -use hyper::{header, Body, Method, Request, Response, StatusCode}; +use bytes::Bytes; +use http_body_util::Full; +use hyper::{body::Incoming, header, Method, Request, Response, StatusCode}; use rbx_dom_weak::types::{Ref, Variant}; use ritz::{html, Fragment, HtmlContent, HtmlSelfClosingTag}; @@ -20,7 +22,10 @@ use crate::{ }, }; -pub async fn call(serve_session: Arc, request: Request) -> Response { +pub async fn call( + serve_session: Arc, + request: Request, +) -> Response> { let service = UiService::new(serve_session); match (request.method(), request.uri().path()) { @@ -44,21 +49,21 @@ impl UiService { UiService { serve_session } } - fn handle_logo(&self) -> Response { + fn handle_logo(&self) -> Response> { Response::builder() .header(header::CONTENT_TYPE, "image/png") - .body(Body::from(assets::logo())) + .body(Full::new(Bytes::from(assets::logo()))) .unwrap() } - fn handle_icon(&self) -> Response { + fn handle_icon(&self) -> Response> { Response::builder() .header(header::CONTENT_TYPE, "image/png") - .body(Body::from(assets::icon())) + .body(Full::new(Bytes::from(assets::icon()))) .unwrap() } - fn handle_home(&self) -> Response { + fn handle_home(&self) -> Response> { let page = self.normal_page(html! {
{ Self::button("Rojo Documentation", "https://rojo.space/docs") } @@ -68,11 +73,11 @@ impl UiService { Response::builder() .header(header::CONTENT_TYPE, "text/html") - .body(Body::from(format!("{}", page))) + .body(Full::new(Bytes::from(format!("{}", page)))) .unwrap() } - fn handle_show_instances(&self) -> Response { + fn handle_show_instances(&self) -> Response> { let tree = self.serve_session.tree(); let root_id = tree.get_root_id(); @@ -82,7 +87,7 @@ impl UiService { Response::builder() .header(header::CONTENT_TYPE, "text/html") - .body(Body::from(format!("{}", page))) + .body(Full::new(Bytes::from(format!("{}", page)))) .unwrap() } diff --git a/src/web/util.rs b/src/web/util.rs index 1c1cbb50..b26e3b70 100644 --- a/src/web/util.rs +++ b/src/web/util.rs @@ -1,11 +1,13 @@ -use hyper::{header::CONTENT_TYPE, Body, Response, StatusCode}; +use bytes::Bytes; +use http_body_util::Full; +use hyper::{header::CONTENT_TYPE, Response, StatusCode}; use serde::{Deserialize, Serialize}; -pub fn msgpack_ok(value: T) -> Response { +pub fn msgpack_ok(value: T) -> Response> { msgpack(value, StatusCode::OK) } -pub fn msgpack(value: T, code: StatusCode) -> Response { +pub fn msgpack(value: T, code: StatusCode) -> Response> { let mut serialized = Vec::new(); let mut serializer = rmp_serde::Serializer::new(&mut serialized) .with_human_readable() @@ -15,14 +17,14 @@ pub fn msgpack(value: T, code: StatusCode) -> Response { return Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .header(CONTENT_TYPE, "text/plain") - .body(Body::from(err.to_string())) + .body(Full::new(Bytes::from(err.to_string()))) .unwrap(); }; Response::builder() .status(code) .header(CONTENT_TYPE, "application/msgpack") - .body(Body::from(serialized)) + .body(Full::new(Bytes::from(serialized))) .unwrap() } @@ -45,14 +47,14 @@ pub fn deserialize_msgpack<'a, T: Deserialize<'a>>( T::deserialize(&mut deserializer) } -pub fn json(value: T, code: StatusCode) -> Response { +pub fn json(value: T, code: StatusCode) -> Response> { let serialized = match serde_json::to_string(&value) { Ok(v) => v, Err(err) => { return Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .header(CONTENT_TYPE, "text/plain") - .body(Body::from(err.to_string())) + .body(Full::new(Bytes::from(err.to_string()))) .unwrap(); } }; @@ -60,6 +62,6 @@ pub fn json(value: T, code: StatusCode) -> Response { Response::builder() .status(code) .header(CONTENT_TYPE, "application/json") - .body(Body::from(serialized)) + .body(Full::new(Bytes::from(serialized))) .unwrap() }