From 924792c0020e9f7c4e02cd0335c351d36d4fb553 Mon Sep 17 00:00:00 2001 From: Kaede Hoshikawa Date: Thu, 21 Jul 2022 01:23:22 +0900 Subject: [PATCH 1/2] Enable Dependabot for Examples and Tools (#2785) * Enable dependabot for examples and tools. * Make everything to use Gloo. * Require features for binaries. * Update every Friday. --- .github/dependabot.yml | 14 + Cargo.toml | 2 +- examples/.gitignore | 2 + examples/Cargo.lock | 2748 +++++++++++++++++ examples/Cargo.toml | 6 +- examples/counter/Cargo.toml | 2 +- examples/counter/src/main.rs | 2 +- examples/dyn_create_destroy_apps/Cargo.toml | 1 - examples/dyn_create_destroy_apps/src/main.rs | 2 +- examples/file_upload/Cargo.toml | 2 +- examples/file_upload/src/main.rs | 8 +- examples/function_router/Cargo.toml | 2 +- .../src/components/progress_delay.rs | 2 +- examples/futures/Cargo.toml | 2 +- examples/futures/src/main.rs | 2 +- examples/game_of_life/Cargo.toml | 2 +- examples/game_of_life/src/main.rs | 2 +- examples/inner_html/Cargo.toml | 2 +- examples/inner_html/src/main.rs | 2 +- examples/mount_point/Cargo.toml | 2 +- examples/mount_point/src/main.rs | 2 +- examples/portals/Cargo.toml | 2 +- examples/portals/src/main.rs | 4 +- examples/router/Cargo.toml | 2 +- .../router/src/components/progress_delay.rs | 2 +- examples/simple_ssr/Cargo.toml | 7 + examples/ssr_router/Cargo.toml | 8 + examples/suspense/Cargo.toml | 2 +- examples/suspense/src/use_sleep.rs | 2 +- examples/two_apps/Cargo.toml | 2 +- examples/two_apps/src/main.rs | 2 +- examples/webgl/Cargo.toml | 2 +- examples/webgl/src/main.rs | 2 +- packages/yew/Cargo.toml | 2 - packages/yew/src/dom_bundle/bcomp.rs | 2 +- packages/yew/src/dom_bundle/blist.rs | 2 +- packages/yew/src/dom_bundle/bnode.rs | 2 +- packages/yew/src/dom_bundle/bportal.rs | 8 +- packages/yew/src/dom_bundle/btag/listeners.rs | 2 +- packages/yew/src/dom_bundle/btag/mod.rs | 4 +- packages/yew/src/dom_bundle/btext.rs | 2 +- .../yew/src/functional/hooks/use_effect.rs | 4 +- .../use_prepared_state/feat_hydration.rs | 2 +- packages/yew/src/functional/hooks/use_ref.rs | 2 +- packages/yew/src/html/component/lifecycle.rs | 2 +- packages/yew/src/html/mod.rs | 2 +- packages/yew/src/renderer.rs | 2 +- packages/yew/src/suspense/hooks.rs | 2 +- packages/yew/src/tests/layout_tests.rs | 2 +- packages/yew/tests/common/mod.rs | 4 +- packages/yew/tests/hydration.rs | 30 +- packages/yew/tests/layout.rs | 2 +- packages/yew/tests/mod.rs | 2 +- packages/yew/tests/suspense.rs | 28 +- packages/yew/tests/use_callback.rs | 2 +- packages/yew/tests/use_context.rs | 6 +- packages/yew/tests/use_effect.rs | 8 +- packages/yew/tests/use_memo.rs | 2 +- packages/yew/tests/use_prepared_state.rs | 4 +- packages/yew/tests/use_reducer.rs | 4 +- packages/yew/tests/use_ref.rs | 2 +- packages/yew/tests/use_state.rs | 6 +- packages/yew/tests/use_transitive_state.rs | 2 +- tools/Cargo.lock | 76 +- tools/Cargo.toml | 4 +- 65 files changed, 2925 insertions(+), 145 deletions(-) create mode 100644 examples/Cargo.lock diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 619cfd96e24..2a612b5cb4c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,6 +6,20 @@ updates: interval: "weekly" day: "friday" open-pull-requests-limit: 5 + + - package-ecosystem: "cargo" + directory: "/examples" + schedule: + interval: "weekly" + day: "friday" + open-pull-requests-limit: 5 + + - package-ecosystem: "cargo" + directory: "/tools" + schedule: + interval: "weekly" + day: "friday" + open-pull-requests-limit: 5 - package-ecosystem: "npm" directory: "/website" diff --git a/Cargo.toml b/Cargo.toml index 310161b3b0b..942b5c6b995 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] members = [ - "packages/*", + "packages/*", ] exclude = [ "tools/*", diff --git a/examples/.gitignore b/examples/.gitignore index bd3f0674e53..f17693a688c 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -1,2 +1,4 @@ # trunk output dist/ + +!Cargo.lock diff --git a/examples/Cargo.lock b/examples/Cargo.lock new file mode 100644 index 00000000000..fe4c6885716 --- /dev/null +++ b/examples/Cargo.lock @@ -0,0 +1,2748 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "async-trait" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9496f0c1d1afb7a2af4338bbe1d969cddfead41d87a9fb3aaa6d0bbc7af648" +dependencies = [ + "async-trait", + "axum-core", + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-http", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4f44a0e6200e9d11a1cdc989e4b358f6e3d354fbf48478f345a17f4e43f8635" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", +] + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "base64ct" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + +[[package]] +name = "boids" +version = "0.1.0" +dependencies = [ + "anyhow", + "getrandom", + "gloo", + "rand", + "serde", + "web-sys", + "yew", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "buf_redux" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +dependencies = [ + "memchr", + "safemem", +] + +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "js-sys", + "libc", + "num-integer", + "num-traits", + "time 0.1.44", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "clap" +version = "3.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2bd7a1eb07da9ac757c923f69373deb7bc2ba5efc951b873bcb5e693992dca" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "contexts" +version = "0.1.0" +dependencies = [ + "serde", + "yew", + "yew-agent", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "counter" +version = "0.1.1" +dependencies = [ + "gloo", + "js-sys", + "wasm-bindgen", + "yew", +] + +[[package]] +name = "counter_functional" +version = "0.1.0" +dependencies = [ + "yew", +] + +[[package]] +name = "cpufeatures" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derive_builder" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" +dependencies = [ + "derive_builder_core", + "syn", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", +] + +[[package]] +name = "dyn_create_destroy_apps" +version = "0.1.0" +dependencies = [ + "gloo", + "js-sys", + "slab", + "wasm-bindgen", + "web-sys", + "yew", +] + +[[package]] +name = "either" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "fake" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d68f517805463f3a896a9d29c1d6ff09d3579ded64a7201b4069f8f9c0d52fd" +dependencies = [ + "rand", +] + +[[package]] +name = "fancy-regex" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95b4efe5be9104a4a18a9916e86654319895138be727b229820c39257c30dda" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fastrand" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] + +[[package]] +name = "file_upload" +version = "0.1.0" +dependencies = [ + "gloo", + "js-sys", + "web-sys", + "yew", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "function_memory_game" +version = "0.1.0" +dependencies = [ + "getrandom", + "gloo", + "nanoid", + "rand", + "serde", + "strum", + "strum_macros", + "web-sys", + "yew", +] + +[[package]] +name = "function_router" +version = "0.1.0" +dependencies = [ + "getrandom", + "gloo", + "instant", + "lipsum", + "log", + "once_cell", + "rand", + "serde", + "wasm-logger", + "yew", + "yew-router", +] + +[[package]] +name = "function_todomvc" +version = "0.1.0" +dependencies = [ + "gloo", + "serde", + "strum", + "strum_macros", + "web-sys", + "yew", +] + +[[package]] +name = "futures" +version = "0.1.0" +dependencies = [ + "gloo", + "pulldown-cmark", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew", +] + +[[package]] +name = "futures" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-macro" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "game_of_life" +version = "0.1.4" +dependencies = [ + "getrandom", + "gloo", + "log", + "rand", + "wasm-logger", + "yew", +] + +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gloo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4bef6b277b3ab073253d4bca60761240cf8d6998f4bd142211957b69a61b20" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-history", + "gloo-net", + "gloo-render", + "gloo-storage", + "gloo-timers", + "gloo-utils", + "gloo-worker 0.2.0", +] + +[[package]] +name = "gloo-console" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3907f786f65bbb4f419e918b0c5674175ef1c231ecda93b2dbd65fd1e8882637" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "futures-channel", + "gloo-events", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81af52c0d31e86242eecefe1ed4d066deb79cfb80f9f7da0847fac417396bfe" +dependencies = [ + "gloo-events", + "gloo-utils", + "serde", + "serde-wasm-bindgen", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351e6f94c76579cc9f9323a15f209086fc7bd428bff4288723d3a417851757b2" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa4ba51c99de680dee3ad99c32ca45e9f13311be72079154d222c3f9a6b6f5" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "929c53c913bb7a88d75d9dc3e9705f963d8c2b9001510b25ddaf671b9fb7049d" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09110b5555bcafe508cee0fb94308af9aac7a85f980d3c88b270d117c6c6911d" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "slab", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9caac1b89bbe1e1454bb23e4d046a3fc92438ae2e95fb429c41685789e1fcbaa" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "h2" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util 0.7.3", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "headers" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d" +dependencies = [ + "base64", + "bitflags", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha-1 0.10.0", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "html-escape" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e7479fa1ef38eb49fb6a42c426be515df2d063f06cb8efd3e50af073dbc26c" +dependencies = [ + "utf8-width", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" + +[[package]] +name = "httparse" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "immutable" +version = "0.1.0" +dependencies = [ + "implicit-clone", + "wasm-bindgen", + "web-sys", + "yew", +] + +[[package]] +name = "implicit-clone" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a937e630d3907d421944abd8edb5288936f1fde83aaaf1a8c6c89bb4222f0677" +dependencies = [ + "indexmap", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "inner_html" +version = "0.1.0" +dependencies = [ + "gloo", + "web-sys", + "yew", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" + +[[package]] +name = "js-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "js_callback" +version = "0.1.0" +dependencies = [ + "js-sys", + "once_cell", + "wasm-bindgen", + "wasm-bindgen-futures", + "yew", +] + +[[package]] +name = "keyed_list" +version = "0.1.0" +dependencies = [ + "fake", + "getrandom", + "instant", + "log", + "rand", + "wasm-logger", + "web-sys", + "yew", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" + +[[package]] +name = "lipsum" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8451846f1f337e44486666989fbce40be804da139d5a4477d6b88ece5dc69f4" +dependencies = [ + "rand", + "rand_chacha", +] + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "matchit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "mount_point" +version = "0.1.0" +dependencies = [ + "gloo", + "wasm-bindgen", + "web-sys", + "yew", +] + +[[package]] +name = "multipart" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +dependencies = [ + "buf_redux", + "httparse", + "log", + "mime", + "mime_guess", + "quick-error 1.2.3", + "rand", + "safemem", + "tempfile", + "twoway", +] + +[[package]] +name = "nanoid" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" +dependencies = [ + "rand", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nested_list" +version = "0.1.0" +dependencies = [ + "log", + "wasm-logger", + "yew", +] + +[[package]] +name = "node_refs" +version = "0.1.0" +dependencies = [ + "web-sys", + "yew", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "password_strength" +version = "0.1.0" +dependencies = [ + "chrono", + "js-sys", + "time 0.3.9", + "wasm-bindgen", + "web-sys", + "yew", + "zxcvbn", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "portals" +version = "0.1.0" +dependencies = [ + "gloo", + "wasm-bindgen", + "web-sys", + "yew", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "prettyplease" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da6ffbe862780245013cb1c0a48c4e44b7d665548088f91f6b90876d0625e4c2" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quote" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "router" +version = "0.1.0" +dependencies = [ + "getrandom", + "gloo", + "instant", + "lipsum", + "log", + "once_cell", + "rand", + "serde", + "wasm-logger", + "yew", + "yew-router", +] + +[[package]] +name = "rustversion" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8" + +[[package]] +name = "ryu" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618365e8e586c22123d692b72a7d791d5ee697817b65a218cdf12a98870af0f7" +dependencies = [ + "fnv", + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha-1" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.3", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "simple_ssr" +version = "0.1.0" +dependencies = [ + "bytes", + "clap", + "futures 0.3.21", + "log", + "reqwest", + "serde", + "tokio", + "uuid", + "warp", + "wasm-bindgen-futures", + "wasm-logger", + "yew", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "ssr_router" +version = "0.1.0" +dependencies = [ + "axum", + "clap", + "env_logger", + "function_router", + "futures 0.3.21", + "log", + "tokio", + "tower", + "tower-http", + "wasm-bindgen-futures", + "wasm-logger", + "yew", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum_macros" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4faebde00e8ff94316c01800f9054fd2ba77d30d9e922541913051d1d978918b" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "suspense" +version = "0.1.0" +dependencies = [ + "gloo", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew", +] + +[[package]] +name = "syn" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +dependencies = [ + "libc", + "num_threads", +] + +[[package]] +name = "timer" +version = "0.1.0" +dependencies = [ + "gloo", + "js-sys", + "wasm-bindgen", + "yew", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "todomvc" +version = "0.1.0" +dependencies = [ + "gloo", + "serde", + "serde_derive", + "strum", + "strum_macros", + "web-sys", + "yew", +] + +[[package]] +name = "tokio" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util 0.7.3", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511de3f85caf1c98983545490c3d09685fa8eb634e57eec22bb4db271f46cbd8" +dependencies = [ + "futures-util", + "log", + "pin-project", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "hashbrown", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util 0.7.3", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "tungstenite" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b2d8558abd2e276b0a8df5c05a2ec762609344191e5fd23e292c910e9165b5" +dependencies = [ + "base64", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand", + "sha-1 0.9.8", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "two_apps" +version = "0.1.0" +dependencies = [ + "gloo", + "yew", +] + +[[package]] +name = "twoway" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +dependencies = [ + "memchr", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" + +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "warp" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cef4e1e9114a4b7f1ac799f16ce71c14de5778500c5450ec6b7b920c55b587e" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http", + "hyper", + "log", + "mime", + "mime_guess", + "multipart", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tokio-util 0.6.10", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +dependencies = [ + "cfg-if", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" + +[[package]] +name = "wasm-logger" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webgl" +version = "0.1.0" +dependencies = [ + "gloo", + "js-sys", + "wasm-bindgen", + "web-sys", + "yew", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "yew" +version = "0.19.3" +dependencies = [ + "base64ct", + "bincode", + "console_error_panic_hook", + "futures 0.3.21", + "gloo", + "html-escape", + "implicit-clone", + "indexmap", + "js-sys", + "num_cpus", + "once_cell", + "serde", + "slab", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util 0.7.3", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-agent" +version = "0.1.0" +dependencies = [ + "gloo-worker 0.1.2", + "yew", +] + +[[package]] +name = "yew-macro" +version = "0.19.3" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "yew-router" +version = "0.16.0" +dependencies = [ + "gloo", + "js-sys", + "route-recognizer", + "serde", + "serde_urlencoded", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.16.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "yew-worker-fib" +version = "0.1.0" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", + "yew", + "yew-agent", +] + +[[package]] +name = "zxcvbn" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568becce91e872373a4b33f24ddc67e5280ae2536ccb8c9d22a25d398b72c8b0" +dependencies = [ + "derive_builder", + "fancy-regex", + "itertools", + "js-sys", + "lazy_static", + "quick-error 2.0.1", + "regex", + "time 0.3.9", +] diff --git a/examples/Cargo.toml b/examples/Cargo.toml index b36458c2041..5ac816d1af2 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -1,10 +1,10 @@ [workspace] members = [ - "*", + "*", ] exclude = [ - "target", - ".cargo" + "target", + ".cargo" ] resolver = "2" diff --git a/examples/counter/Cargo.toml b/examples/counter/Cargo.toml index 6710ec24fcd..47bb8f10f92 100644 --- a/examples/counter/Cargo.toml +++ b/examples/counter/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "MIT OR Apache-2.0" [dependencies] -gloo-console = "0.2" +gloo = "0.8" js-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } wasm-bindgen = "0.2" diff --git a/examples/counter/src/main.rs b/examples/counter/src/main.rs index d240ef192f5..e2b6bcc0de1 100644 --- a/examples/counter/src/main.rs +++ b/examples/counter/src/main.rs @@ -1,4 +1,4 @@ -use gloo_console as console; +use gloo::console; use js_sys::Date; use yew::{html, Component, Context, Html}; diff --git a/examples/dyn_create_destroy_apps/Cargo.toml b/examples/dyn_create_destroy_apps/Cargo.toml index 743fdab4838..2b4cc37c463 100644 --- a/examples/dyn_create_destroy_apps/Cargo.toml +++ b/examples/dyn_create_destroy_apps/Cargo.toml @@ -11,7 +11,6 @@ yew = { path = "../../packages/yew", features = ["csr"] } slab = "0.4.3" gloo = "0.8" wasm-bindgen = "0.2" -gloo-utils = "0.1" [dependencies.web-sys] version = "0.3.50" diff --git a/examples/dyn_create_destroy_apps/src/main.rs b/examples/dyn_create_destroy_apps/src/main.rs index 13740365eb4..1dd0408f2ec 100644 --- a/examples/dyn_create_destroy_apps/src/main.rs +++ b/examples/dyn_create_destroy_apps/src/main.rs @@ -1,4 +1,4 @@ -use gloo_utils::document; +use gloo::utils::document; use slab::Slab; use web_sys::Element; use yew::prelude::*; diff --git a/examples/file_upload/Cargo.toml b/examples/file_upload/Cargo.toml index 5f57593a292..962eb2911d8 100644 --- a/examples/file_upload/Cargo.toml +++ b/examples/file_upload/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] js-sys = "0.3" yew = { path = "../../packages/yew", features = ["csr"] } -gloo-file = "0.2" +gloo = "0.8" [dependencies.web-sys] version = "0.3" diff --git a/examples/file_upload/src/main.rs b/examples/file_upload/src/main.rs index 0df42015646..04d67bda54d 100644 --- a/examples/file_upload/src/main.rs +++ b/examples/file_upload/src/main.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; -use gloo_file::callbacks::FileReader; -use gloo_file::File; +use gloo::file::callbacks::FileReader; +use gloo::file::File; use web_sys::{Event, HtmlInputElement}; use yew::html::TargetCast; use yew::{html, Component, Context, Html}; @@ -55,14 +55,14 @@ impl Component for App { let link = ctx.link().clone(); if bytes { - gloo_file::callbacks::read_as_bytes(&file, move |res| { + gloo::file::callbacks::read_as_bytes(&file, move |res| { link.send_message(Msg::LoadedBytes( file_name, res.expect("failed to read file"), )) }) } else { - gloo_file::callbacks::read_as_text(&file, move |res| { + gloo::file::callbacks::read_as_text(&file, move |res| { link.send_message(Msg::Loaded( file_name, res.unwrap_or_else(|e| e.to_string()), diff --git a/examples/function_router/Cargo.toml b/examples/function_router/Cargo.toml index d2b7cf4dd3c..77c7cbdc91f 100644 --- a/examples/function_router/Cargo.toml +++ b/examples/function_router/Cargo.toml @@ -11,7 +11,7 @@ rand = { version = "0.8", features = ["small_rng"] } yew = { path = "../../packages/yew" } yew-router = { path = "../../packages/yew-router" } serde = { version = "1.0", features = ["derive"] } -gloo-timers = "0.2" +gloo = "0.8" wasm-logger = "0.2" instant = { version = "0.1", features = ["wasm-bindgen"] } once_cell = "1" diff --git a/examples/function_router/src/components/progress_delay.rs b/examples/function_router/src/components/progress_delay.rs index f017aa46723..b1be1764e8a 100644 --- a/examples/function_router/src/components/progress_delay.rs +++ b/examples/function_router/src/components/progress_delay.rs @@ -1,6 +1,6 @@ use std::rc::Rc; -use gloo_timers::callback::Interval; +use gloo::timers::callback::Interval; use instant::Instant; use yew::prelude::*; diff --git a/examples/futures/Cargo.toml b/examples/futures/Cargo.toml index 697c051e3c4..7d2b90a09bf 100644 --- a/examples/futures/Cargo.toml +++ b/examples/futures/Cargo.toml @@ -10,7 +10,7 @@ pulldown-cmark = { version = "0.9", default-features = false } wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" yew = { path = "../../packages/yew", features = ["tokio", "csr"] } -gloo-utils = "0.1" +gloo = "0.8" [dependencies.web-sys] version = "0.3" diff --git a/examples/futures/src/main.rs b/examples/futures/src/main.rs index cfd076c71c4..e1e6cb7694c 100644 --- a/examples/futures/src/main.rs +++ b/examples/futures/src/main.rs @@ -49,7 +49,7 @@ async fn fetch_markdown(url: &'static str) -> Result { let request = Request::new_with_str_and_init(url, &opts)?; - let window = gloo_utils::window(); + let window = gloo::utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; let resp: Response = resp_value.dyn_into().unwrap(); diff --git a/examples/game_of_life/Cargo.toml b/examples/game_of_life/Cargo.toml index b5bc69697be..27c053aac5b 100644 --- a/examples/game_of_life/Cargo.toml +++ b/examples/game_of_life/Cargo.toml @@ -15,4 +15,4 @@ log = "0.4" rand = "0.8" wasm-logger = "0.2" yew = { path = "../../packages/yew", features = ["csr"] } -gloo-timers = "0.2" +gloo = "0.8" diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs index 5699d785c6f..25eb8bcfab5 100644 --- a/examples/game_of_life/src/main.rs +++ b/examples/game_of_life/src/main.rs @@ -1,5 +1,5 @@ use cell::Cellule; -use gloo_timers::callback::Interval; +use gloo::timers::callback::Interval; use rand::Rng; use yew::html::Scope; use yew::{classes, html, Component, Context, Html}; diff --git a/examples/inner_html/Cargo.toml b/examples/inner_html/Cargo.toml index adb57cca236..345860ef7bb 100644 --- a/examples/inner_html/Cargo.toml +++ b/examples/inner_html/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo-utils = "0.1" +gloo = "0.8" [dependencies.web-sys] version = "0.3" diff --git a/examples/inner_html/src/main.rs b/examples/inner_html/src/main.rs index 1bd7fa8f752..8ccc7af4ea0 100644 --- a/examples/inner_html/src/main.rs +++ b/examples/inner_html/src/main.rs @@ -16,7 +16,7 @@ impl Component for App { } fn view(&self, _ctx: &Context) -> Html { - let div = gloo_utils::document().create_element("div").unwrap(); + let div = gloo::utils::document().create_element("div").unwrap(); div.set_inner_html(HTML); // See console::log_1(&div); diff --git a/examples/mount_point/Cargo.toml b/examples/mount_point/Cargo.toml index bb55ead5744..cacd672df83 100644 --- a/examples/mount_point/Cargo.toml +++ b/examples/mount_point/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] wasm-bindgen = "0.2" yew = { path = "../../packages/yew", features = ["csr"] } -gloo-utils = "0.1" +gloo = "0.8" [dependencies.web-sys] version = "0.3" diff --git a/examples/mount_point/src/main.rs b/examples/mount_point/src/main.rs index 3354caebe55..1675b0355f7 100644 --- a/examples/mount_point/src/main.rs +++ b/examples/mount_point/src/main.rs @@ -60,7 +60,7 @@ fn create_canvas(document: &Document) -> HtmlCanvasElement { } fn main() { - let document = gloo_utils::document(); + let document = gloo::utils::document(); let body = document.query_selector("body").unwrap().unwrap(); let canvas = create_canvas(&document); diff --git a/examples/portals/Cargo.toml b/examples/portals/Cargo.toml index 308c2f8db5b..00aa66823d9 100644 --- a/examples/portals/Cargo.toml +++ b/examples/portals/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo-utils = "0.1" +gloo = "0.8" wasm-bindgen = "0.2" [dependencies.web-sys] diff --git a/examples/portals/src/main.rs b/examples/portals/src/main.rs index da751f49c28..c8eb6132e44 100644 --- a/examples/portals/src/main.rs +++ b/examples/portals/src/main.rs @@ -33,7 +33,7 @@ impl Component for ShadowDOMHost { .unchecked_into::() .attach_shadow(&ShadowRootInit::new(ShadowRootMode::Open)) .expect("installing shadow root succeeds"); - let inner_host = gloo_utils::document() + let inner_host = gloo::utils::document() .create_element("div") .expect("can create inner wrapper"); shadow_root @@ -82,7 +82,7 @@ impl Component for App { type Properties = (); fn create(_ctx: &Context) -> Self { - let document_head = gloo_utils::document() + let document_head = gloo::utils::document() .head() .expect("head element to be present"); let title_element = document_head diff --git a/examples/router/Cargo.toml b/examples/router/Cargo.toml index 54bba23c24f..23986c52afb 100644 --- a/examples/router/Cargo.toml +++ b/examples/router/Cargo.toml @@ -15,4 +15,4 @@ yew = { path = "../../packages/yew", features = ["csr"] } yew-router = { path = "../../packages/yew-router" } serde = { version = "1.0", features = ["derive"] } once_cell = "1" -gloo-timers = "0.2" +gloo = "0.8" diff --git a/examples/router/src/components/progress_delay.rs b/examples/router/src/components/progress_delay.rs index 888887674c9..01d9a576f0c 100644 --- a/examples/router/src/components/progress_delay.rs +++ b/examples/router/src/components/progress_delay.rs @@ -1,4 +1,4 @@ -use gloo_timers::callback::Interval; +use gloo::timers::callback::Interval; use instant::Instant; use yew::prelude::*; diff --git a/examples/simple_ssr/Cargo.toml b/examples/simple_ssr/Cargo.toml index 1f796fdba61..4bb1b3b549e 100644 --- a/examples/simple_ssr/Cargo.toml +++ b/examples/simple_ssr/Cargo.toml @@ -4,6 +4,13 @@ version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[[bin]] +name = "simple_ssr_hydrate" +required-features = ["hydration"] + +[[bin]] +name = "simple_ssr_server" +required-features = ["ssr"] [dependencies] yew = { path = "../../packages/yew" } diff --git a/examples/ssr_router/Cargo.toml b/examples/ssr_router/Cargo.toml index 8c64e440c2a..3ebc4671e97 100644 --- a/examples/ssr_router/Cargo.toml +++ b/examples/ssr_router/Cargo.toml @@ -5,6 +5,14 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[[bin]] +name = "ssr_router_hydrate" +required-features = ["hydration"] + +[[bin]] +name = "ssr_router_server" +required-features = ["ssr"] + [dependencies] yew = { path = "../../packages/yew" } function_router = { path = "../function_router" } diff --git a/examples/suspense/Cargo.toml b/examples/suspense/Cargo.toml index 67cdd00b790..389bd4b19ba 100644 --- a/examples/suspense/Cargo.toml +++ b/examples/suspense/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo-timers = { version = "0.2.2", features = ["futures"] } +gloo = { version = "0.8", features = ["futures"] } wasm-bindgen-futures = "0.4" wasm-bindgen = "0.2" diff --git a/examples/suspense/src/use_sleep.rs b/examples/suspense/src/use_sleep.rs index 98bf4e60f12..8bf90431260 100644 --- a/examples/suspense/src/use_sleep.rs +++ b/examples/suspense/src/use_sleep.rs @@ -1,7 +1,7 @@ use std::rc::Rc; use std::time::Duration; -use gloo_timers::future::sleep; +use gloo::timers::future::sleep; use yew::prelude::*; use yew::suspense::{Suspension, SuspensionResult}; diff --git a/examples/two_apps/Cargo.toml b/examples/two_apps/Cargo.toml index 509795052ff..9797f473743 100644 --- a/examples/two_apps/Cargo.toml +++ b/examples/two_apps/Cargo.toml @@ -7,4 +7,4 @@ license = "MIT OR Apache-2.0" [dependencies] yew = { path = "../../packages/yew", features = ["csr"] } -gloo-utils = "0.1" +gloo = "0.8" diff --git a/examples/two_apps/src/main.rs b/examples/two_apps/src/main.rs index ef91b2dacb1..24313fdf324 100644 --- a/examples/two_apps/src/main.rs +++ b/examples/two_apps/src/main.rs @@ -70,7 +70,7 @@ impl Component for App { } fn mount_app(selector: &'static str) -> AppHandle { - let document = gloo_utils::document(); + let document = gloo::utils::document(); let element = document.query_selector(selector).unwrap().unwrap(); yew::Renderer::::with_root(element).render() } diff --git a/examples/webgl/Cargo.toml b/examples/webgl/Cargo.toml index f54a08bad9d..aaff0fe8358 100644 --- a/examples/webgl/Cargo.toml +++ b/examples/webgl/Cargo.toml @@ -9,7 +9,7 @@ license = "MIT OR Apache-2.0" js-sys = "0.3" wasm-bindgen = "0.2" yew = { path = "../../packages/yew", features = ["csr"] } -gloo-render = "0.1" +gloo = "0.8" [dependencies.web-sys] version = "0.3" diff --git a/examples/webgl/src/main.rs b/examples/webgl/src/main.rs index cc1166873fb..65f0f4cf898 100644 --- a/examples/webgl/src/main.rs +++ b/examples/webgl/src/main.rs @@ -1,4 +1,4 @@ -use gloo_render::{request_animation_frame, AnimationFrame}; +use gloo::render::{request_animation_frame, AnimationFrame}; use wasm_bindgen::JsCast; use web_sys::{HtmlCanvasElement, WebGlRenderingContext as GL}; use yew::html::Scope; diff --git a/packages/yew/Cargo.toml b/packages/yew/Cargo.toml index 29194e2dae6..12e7d2c7a47 100644 --- a/packages/yew/Cargo.toml +++ b/packages/yew/Cargo.toml @@ -19,7 +19,6 @@ rust-version = "1.60.0" [dependencies] console_error_panic_hook = "0.1" gloo = "0.8" -gloo-utils = "0.1.0" indexmap = { version = "1", features = ["std"] } js-sys = "0.3" slab = "0.4" @@ -82,7 +81,6 @@ once_cell = "1" [dev-dependencies] wasm-bindgen-test = "0.3" gloo = { version = "0.8", features = ["futures"] } -gloo-net = { version = "0.2", features = ["http"] } wasm-bindgen-futures = "0.4" rustversion = "1" trybuild = "1" diff --git a/packages/yew/src/dom_bundle/bcomp.rs b/packages/yew/src/dom_bundle/bcomp.rs index 0710174e7f8..8edce7d21a0 100644 --- a/packages/yew/src/dom_bundle/bcomp.rs +++ b/packages/yew/src/dom_bundle/bcomp.rs @@ -181,7 +181,7 @@ mod feat_hydration { mod tests { use std::ops::Deref; - use gloo_utils::document; + use gloo::utils::document; use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; use web_sys::{Element, Node}; diff --git a/packages/yew/src/dom_bundle/blist.rs b/packages/yew/src/dom_bundle/blist.rs index 0f55824fe00..40908699571 100644 --- a/packages/yew/src/dom_bundle/blist.rs +++ b/packages/yew/src/dom_bundle/blist.rs @@ -652,7 +652,7 @@ mod layout_tests_keys { fn diff() { let mut layouts = vec![]; - let vref_node: Node = gloo_utils::document().create_element("i").unwrap().into(); + let vref_node: Node = gloo::utils::document().create_element("i").unwrap().into(); layouts.push(TestLayout { name: "All VNode types as children", node: html! { diff --git a/packages/yew/src/dom_bundle/bnode.rs b/packages/yew/src/dom_bundle/bnode.rs index 104e803a494..27bb800bce9 100644 --- a/packages/yew/src/dom_bundle/bnode.rs +++ b/packages/yew/src/dom_bundle/bnode.rs @@ -303,7 +303,7 @@ mod layout_tests { #[test] fn diff() { - let document = gloo_utils::document(); + let document = gloo::utils::document(); let vref_node_1 = VNode::VRef(document.create_element("i").unwrap().into()); let vref_node_2 = VNode::VRef(document.create_element("b").unwrap().into()); diff --git a/packages/yew/src/dom_bundle/bportal.rs b/packages/yew/src/dom_bundle/bportal.rs index 669ff6ad2af..496bb9f6283 100644 --- a/packages/yew/src/dom_bundle/bportal.rs +++ b/packages/yew/src/dom_bundle/bportal.rs @@ -135,10 +135,10 @@ mod layout_tests { #[test] fn diff() { let mut layouts = vec![]; - let first_target = gloo_utils::document().create_element("i").unwrap(); - let second_target = gloo_utils::document().create_element("o").unwrap(); - let target_with_child = gloo_utils::document().create_element("i").unwrap(); - let target_child = gloo_utils::document().create_element("s").unwrap(); + let first_target = gloo::utils::document().create_element("i").unwrap(); + let second_target = gloo::utils::document().create_element("o").unwrap(); + let target_with_child = gloo::utils::document().create_element("i").unwrap(); + let target_child = gloo::utils::document().create_element("s").unwrap(); target_with_child.append_child(&target_child).unwrap(); layouts.push(TestLayout { diff --git a/packages/yew/src/dom_bundle/btag/listeners.rs b/packages/yew/src/dom_bundle/btag/listeners.rs index 24edb37f886..df328cfb7ee 100644 --- a/packages/yew/src/dom_bundle/btag/listeners.rs +++ b/packages/yew/src/dom_bundle/btag/listeners.rs @@ -205,7 +205,7 @@ mod tests { use web_sys::{Event, EventInit, FocusEvent, HtmlElement, MouseEvent}; wasm_bindgen_test_configure!(run_in_browser); - use gloo_utils::document; + use gloo::utils::document; use wasm_bindgen::JsCast; use yew::Callback; diff --git a/packages/yew/src/dom_bundle/btag/mod.rs b/packages/yew/src/dom_bundle/btag/mod.rs index d96bb364aeb..cc325f7bc74 100644 --- a/packages/yew/src/dom_bundle/btag/mod.rs +++ b/packages/yew/src/dom_bundle/btag/mod.rs @@ -8,7 +8,7 @@ use std::hint::unreachable_unchecked; use std::ops::DerefMut; use gloo::console; -use gloo_utils::document; +use gloo::utils::document; use listeners::ListenerRegistration; pub use listeners::Registry; use wasm_bindgen::JsCast; @@ -386,7 +386,7 @@ mod feat_hydration { #[cfg(target_arch = "wasm32")] #[cfg(test)] mod tests { - use gloo_utils::document; + use gloo::utils::document; use wasm_bindgen::JsCast; use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; use web_sys::HtmlInputElement as InputElement; diff --git a/packages/yew/src/dom_bundle/btext.rs b/packages/yew/src/dom_bundle/btext.rs index 7e6e0f1a908..2415ca3c679 100644 --- a/packages/yew/src/dom_bundle/btext.rs +++ b/packages/yew/src/dom_bundle/btext.rs @@ -1,7 +1,7 @@ //! This module contains the bundle implementation of text [BText]. use gloo::console; -use gloo_utils::document; +use gloo::utils::document; use web_sys::{Element, Text as TextNode}; use super::{insert_node, BNode, BSubtree, Reconcilable, ReconcileTarget}; diff --git a/packages/yew/src/functional/hooks/use_effect.rs b/packages/yew/src/functional/hooks/use_effect.rs index 57105008c2a..a01cb2cf58f 100644 --- a/packages/yew/src/functional/hooks/use_effect.rs +++ b/packages/yew/src/functional/hooks/use_effect.rs @@ -125,10 +125,10 @@ where /// let counter_one = counter.clone(); /// use_effect(move || { /// // Make a call to DOM API after component is rendered -/// gloo_utils::document().set_title(&format!("You clicked {} times", *counter_one)); +/// gloo::utils::document().set_title(&format!("You clicked {} times", *counter_one)); /// /// // Perform the cleanup -/// || gloo_utils::document().set_title(&format!("You clicked 0 times")) +/// || gloo::utils::document().set_title(&format!("You clicked 0 times")) /// }); /// /// let onclick = { diff --git a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs index c6e6fde3ccf..16609a219d3 100644 --- a/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs +++ b/packages/yew/src/functional/hooks/use_prepared_state/feat_hydration.rs @@ -14,7 +14,7 @@ use crate::suspense::{Suspension, SuspensionResult}; #[cfg(target_arch = "wasm32")] async fn decode_base64(s: &str) -> Result, JsValue> { - use gloo_utils::window; + use gloo::utils::window; use js_sys::Uint8Array; use wasm_bindgen::JsCast; use wasm_bindgen_futures::JsFuture; diff --git a/packages/yew/src/functional/hooks/use_ref.rs b/packages/yew/src/functional/hooks/use_ref.rs index 0c5f41c28ba..6cf1a6d65d8 100644 --- a/packages/yew/src/functional/hooks/use_ref.rs +++ b/packages/yew/src/functional/hooks/use_ref.rs @@ -38,7 +38,7 @@ impl T> Hook for UseMutRef { /// let message_count = use_mut_ref(|| 0); /// /// let onclick = Callback::from(move |e| { -/// let window = gloo_utils::window(); +/// let window = gloo::utils::window(); /// /// if *message_count.borrow_mut() > 3 { /// window.alert_with_message("Message limit reached"); diff --git a/packages/yew/src/html/component/lifecycle.rs b/packages/yew/src/html/component/lifecycle.rs index 75841b65904..89fe2022a04 100644 --- a/packages/yew/src/html/component/lifecycle.rs +++ b/packages/yew/src/html/component/lifecycle.rs @@ -823,7 +823,7 @@ mod tests { } fn test_lifecycle(props: Props, expected: &[&str]) { - let document = gloo_utils::document(); + let document = gloo::utils::document(); let scope = Scope::::new(None); let parent = document.create_element("div").unwrap(); let root = BSubtree::create_root(&parent); diff --git a/packages/yew/src/html/mod.rs b/packages/yew/src/html/mod.rs index a9acab8e6b7..a0a4f8698f6 100644 --- a/packages/yew/src/html/mod.rs +++ b/packages/yew/src/html/mod.rs @@ -220,7 +220,7 @@ pub fn create_portal(child: Html, host: Element) -> Html { #[cfg(target_arch = "wasm32")] #[cfg(test)] mod tests { - use gloo_utils::document; + use gloo::utils::document; use wasm_bindgen_test::{wasm_bindgen_test as test, wasm_bindgen_test_configure}; use super::*; diff --git a/packages/yew/src/renderer.rs b/packages/yew/src/renderer.rs index fd8c5edb49d..442268a281c 100644 --- a/packages/yew/src/renderer.rs +++ b/packages/yew/src/renderer.rs @@ -73,7 +73,7 @@ where /// Creates a [Renderer] that renders into the document body with custom properties. pub fn with_props(props: COMP::Properties) -> Self { Self::with_root_and_props( - gloo_utils::document() + gloo::utils::document() .body() .expect("no body node found") .into(), diff --git a/packages/yew/src/suspense/hooks.rs b/packages/yew/src/suspense/hooks.rs index 611f6ea2535..1afa5385a0f 100644 --- a/packages/yew/src/suspense/hooks.rs +++ b/packages/yew/src/suspense/hooks.rs @@ -44,7 +44,7 @@ impl fmt::Debug for UseFutureHandle { /// ``` /// # use yew::prelude::*; /// # use yew::suspense::use_future; -/// use gloo_net::http::Request; +/// use gloo::net::http::Request; /// /// const URL: &str = "https://en.wikipedia.org/w/api.php?\ /// action=query&origin=*&format=json&generator=search&\ diff --git a/packages/yew/src/tests/layout_tests.rs b/packages/yew/src/tests/layout_tests.rs index 2b0ee690b07..9e5a68e37fe 100644 --- a/packages/yew/src/tests/layout_tests.rs +++ b/packages/yew/src/tests/layout_tests.rs @@ -39,7 +39,7 @@ pub struct TestLayout<'a> { } pub fn diff_layouts(layouts: Vec>) { - let document = gloo_utils::document(); + let document = gloo::utils::document(); let scope: AnyScope = AnyScope::test(); let parent_element = document.create_element("div").unwrap(); let root = BSubtree::create_root(&parent_element); diff --git a/packages/yew/tests/common/mod.rs b/packages/yew/tests/common/mod.rs index 8da829ab7d3..52474e82320 100644 --- a/packages/yew/tests/common/mod.rs +++ b/packages/yew/tests/common/mod.rs @@ -1,14 +1,14 @@ #![allow(dead_code)] pub fn obtain_result() -> String { - gloo_utils::document() + gloo::utils::document() .get_element_by_id("result") .expect("No result found. Most likely, the application crashed and burned") .inner_html() } pub fn obtain_result_by_id(id: &str) -> String { - gloo_utils::document() + gloo::utils::document() .get_element_by_id(id) .expect("No result found. Most likely, the application crashed and burned") .inner_html() diff --git a/packages/yew/tests/hydration.rs b/packages/yew/tests/hydration.rs index 52fb193adcf..097fa5fa948 100644 --- a/packages/yew/tests/hydration.rs +++ b/packages/yew/tests/hydration.rs @@ -63,7 +63,7 @@ async fn hydration_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::ZERO).await; @@ -76,7 +76,7 @@ async fn hydration_works() { r#"
Counter: 0
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -184,7 +184,7 @@ async fn hydration_with_suspense() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::from_millis(10)).await; @@ -207,7 +207,7 @@ async fn hydration_with_suspense() { r#"
0
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -223,7 +223,7 @@ async fn hydration_with_suspense() { r#"
1
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -340,7 +340,7 @@ async fn hydration_with_suspense_not_suspended_at_start() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::from_millis(10)).await; @@ -351,7 +351,7 @@ async fn hydration_with_suspense_not_suspended_at_start() { result.as_str(), r#"
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -471,7 +471,7 @@ async fn hydration_nested_suspense_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); // outer suspense is hydrating... @@ -500,7 +500,7 @@ async fn hydration_nested_suspense_works() { r#"
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -521,7 +521,7 @@ async fn hydration_nested_suspense_works() { r#"
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break2") .unwrap() .unwrap() @@ -608,7 +608,7 @@ async fn hydration_node_ref_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::ZERO).await; @@ -619,7 +619,7 @@ async fn hydration_node_ref_works() { r#"
testtesttesttest
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector("span") .unwrap() .unwrap() @@ -701,7 +701,7 @@ async fn hydration_list_order_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); // Wait until all suspended components becomes revealed. @@ -784,7 +784,7 @@ async fn hydration_suspense_no_flickering() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); // Wait until all suspended components becomes revealed. @@ -897,7 +897,7 @@ async fn hydration_order_issue_nested_suspense() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); // Wait until all suspended components becomes revealed. diff --git a/packages/yew/tests/layout.rs b/packages/yew/tests/layout.rs index 3cdaf918238..41188798b91 100644 --- a/packages/yew/tests/layout.rs +++ b/packages/yew/tests/layout.rs @@ -70,7 +70,7 @@ async fn change_nested_after_append() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); sleep(Duration::from_millis(100)).await; diff --git a/packages/yew/tests/mod.rs b/packages/yew/tests/mod.rs index f61f01d24f8..8480a493058 100644 --- a/packages/yew/tests/mod.rs +++ b/packages/yew/tests/mod.rs @@ -29,7 +29,7 @@ async fn props_are_passed() { } yew::Renderer::::with_root_and_props( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), PropsPassedFunctionProps { value: "props".to_string(), }, diff --git a/packages/yew/tests/suspense.rs b/packages/yew/tests/suspense.rs index eb045a7c37b..ffc1dd15ba0 100644 --- a/packages/yew/tests/suspense.rs +++ b/packages/yew/tests/suspense.rs @@ -97,7 +97,7 @@ async fn suspense_works() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); TimeoutFuture::new(10).await; @@ -114,7 +114,7 @@ async fn suspense_works() { TimeoutFuture::new(10).await; - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -124,7 +124,7 @@ async fn suspense_works() { TimeoutFuture::new(0).await; - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -140,7 +140,7 @@ async fn suspense_works() { r#"
2
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -247,7 +247,7 @@ async fn suspense_not_suspended_at_start() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); TimeoutFuture::new(10).await; @@ -257,7 +257,7 @@ async fn suspense_not_suspended_at_start() { result.as_str(), r#"
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -366,7 +366,7 @@ async fn suspense_nested_suspense_works() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); TimeoutFuture::new(10).await; @@ -389,7 +389,7 @@ async fn suspense_nested_suspense_works() { r#"
"# ); - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break2") .unwrap() .unwrap() @@ -523,7 +523,7 @@ async fn effects_not_run_when_suspended() { }; yew::Renderer::::with_root_and_props( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), props, ) .render(); @@ -544,7 +544,7 @@ async fn effects_not_run_when_suspended() { TimeoutFuture::new(10).await; - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -554,7 +554,7 @@ async fn effects_not_run_when_suspended() { TimeoutFuture::new(0).await; - gloo_utils::document() + gloo::utils::document() .query_selector(".increase") .unwrap() .unwrap() @@ -571,7 +571,7 @@ async fn effects_not_run_when_suspended() { ); assert_eq!(*counter.borrow(), 3); // effects ran 3 times. - gloo_utils::document() + gloo::utils::document() .query_selector(".take-a-break") .unwrap() .unwrap() @@ -622,7 +622,7 @@ async fn use_suspending_future_works() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); TimeoutFuture::new(10).await; @@ -672,7 +672,7 @@ async fn use_suspending_future_with_deps_works() { } } - yew::Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + yew::Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .render(); TimeoutFuture::new(10).await; diff --git a/packages/yew/tests/use_callback.rs b/packages/yew/tests/use_callback.rs index b7f8a45c1f8..4e148d96567 100644 --- a/packages/yew/tests/use_callback.rs +++ b/packages/yew/tests/use_callback.rs @@ -61,7 +61,7 @@ async fn use_callback_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); diff --git a/packages/yew/tests/use_context.rs b/packages/yew/tests/use_context.rs index 19f58f494e1..24bae6f51b3 100644 --- a/packages/yew/tests/use_context.rs +++ b/packages/yew/tests/use_context.rs @@ -65,7 +65,7 @@ async fn use_context_scoping_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); @@ -148,7 +148,7 @@ async fn use_context_works_with_multiple_types() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); @@ -248,7 +248,7 @@ async fn use_context_update_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); diff --git a/packages/yew/tests/use_effect.rs b/packages/yew/tests/use_effect.rs index c7969544be5..4a736c2ff08 100644 --- a/packages/yew/tests/use_effect.rs +++ b/packages/yew/tests/use_effect.rs @@ -68,7 +68,7 @@ async fn use_effect_destroys_on_component_drop() { let destroy_counter = Rc::new(std::cell::RefCell::new(0)); let destroy_counter_c = destroy_counter.clone(); yew::Renderer::::with_root_and_props( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), WrapperProps { destroy_called: Rc::new(move || *destroy_counter_c.borrow_mut().deref_mut() += 1), }, @@ -107,7 +107,7 @@ async fn use_effect_works_many_times() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); @@ -141,7 +141,7 @@ async fn use_effect_works_once() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; @@ -189,7 +189,7 @@ async fn use_effect_refires_on_dependency_change() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); diff --git a/packages/yew/tests/use_memo.rs b/packages/yew/tests/use_memo.rs index c62b71852c6..1b5da6d8e89 100644 --- a/packages/yew/tests/use_memo.rs +++ b/packages/yew/tests/use_memo.rs @@ -50,7 +50,7 @@ async fn use_memo_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); diff --git a/packages/yew/tests/use_prepared_state.rs b/packages/yew/tests/use_prepared_state.rs index 2263aff4f46..1b99a036a92 100644 --- a/packages/yew/tests/use_prepared_state.rs +++ b/packages/yew/tests/use_prepared_state.rs @@ -53,7 +53,7 @@ async fn use_prepared_state_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::from_millis(100)).await; @@ -103,7 +103,7 @@ async fn use_prepared_state_with_suspension_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::from_millis(100)).await; diff --git a/packages/yew/tests/use_reducer.rs b/packages/yew/tests/use_reducer.rs index dddde7c8541..821a4703130 100644 --- a/packages/yew/tests/use_reducer.rs +++ b/packages/yew/tests/use_reducer.rs @@ -5,7 +5,7 @@ use std::rc::Rc; use std::time::Duration; use gloo::timers::future::sleep; -use gloo_utils::document; +use gloo::utils::document; use wasm_bindgen::JsCast; use wasm_bindgen_test::*; use web_sys::HtmlElement; @@ -57,7 +57,7 @@ async fn use_reducer_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; diff --git a/packages/yew/tests/use_ref.rs b/packages/yew/tests/use_ref.rs index d0e34e4dc8a..1297781446f 100644 --- a/packages/yew/tests/use_ref.rs +++ b/packages/yew/tests/use_ref.rs @@ -32,7 +32,7 @@ async fn use_ref_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; diff --git a/packages/yew/tests/use_state.rs b/packages/yew/tests/use_state.rs index 68800dae0f9..b706801f0f6 100644 --- a/packages/yew/tests/use_state.rs +++ b/packages/yew/tests/use_state.rs @@ -29,7 +29,7 @@ async fn use_state_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; @@ -72,7 +72,7 @@ async fn multiple_use_state_setters() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; @@ -101,7 +101,7 @@ async fn use_state_eq_works() { } yew::Renderer::::with_root( - gloo_utils::document().get_element_by_id("output").unwrap(), + gloo::utils::document().get_element_by_id("output").unwrap(), ) .render(); sleep(Duration::ZERO).await; diff --git a/packages/yew/tests/use_transitive_state.rs b/packages/yew/tests/use_transitive_state.rs index 3e180d2187d..90263a1f253 100644 --- a/packages/yew/tests/use_transitive_state.rs +++ b/packages/yew/tests/use_transitive_state.rs @@ -53,7 +53,7 @@ async fn use_transitive_state_works() { sleep(Duration::ZERO).await; - Renderer::::with_root(gloo_utils::document().get_element_by_id("output").unwrap()) + Renderer::::with_root(gloo::utils::document().get_element_by_id("output").unwrap()) .hydrate(); sleep(Duration::from_millis(100)).await; diff --git a/tools/Cargo.lock b/tools/Cargo.lock index 6da17949d10..6d3733f1246 100644 --- a/tools/Cargo.lock +++ b/tools/Cargo.lock @@ -81,9 +81,9 @@ checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "bytes" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" [[package]] name = "cc" @@ -131,9 +131,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.8" +version = "3.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" +checksum = "ac2bd7a1eb07da9ac757c923f69373deb7bc2ba5efc951b873bcb5e693992dca" dependencies = [ "atty", "bitflags", @@ -604,9 +604,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "heck" @@ -668,9 +668,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.19" +version = "0.14.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" dependencies = [ "bytes", "futures-channel", @@ -716,9 +716,9 @@ dependencies = [ [[package]] name = "implicit-clone" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0471b76ef1d0d1d3887a5fab377780566d274dc13dd2a1dfbbf251fa8cb6a3a" +checksum = "a937e630d3907d421944abd8edb5288936f1fde83aaaf1a8c6c89bb4222f0677" dependencies = [ "indexmap", ] @@ -934,15 +934,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "openssl" -version = "0.10.40" +version = "0.10.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb81a6430ac911acb25fe5ac8f1d2af1b4ea8a4fdfda0f1ee4292af2e2d8eb0e" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" dependencies = [ "bitflags", "cfg-if", @@ -972,9 +972,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.74" +version = "0.9.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" dependencies = [ "autocfg", "cc", @@ -985,9 +985,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.1.0" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" +checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" [[package]] name = "percent-encoding" @@ -1041,9 +1041,9 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "prettyplease" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1516508b396cefe095485fdce673007422f5e48e82934b7b423dc26aa5e6a4" +checksum = "da6ffbe862780245013cb1c0a48c4e44b7d665548088f91f6b90876d0625e4c2" dependencies = [ "proc-macro2", "syn", @@ -1141,9 +1141,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.6" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -1152,9 +1152,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "remove_dir_all" @@ -1219,9 +1219,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf" +checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8" [[package]] name = "ryu" @@ -1276,9 +1276,9 @@ checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" [[package]] name = "serde" -version = "1.0.138" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" +checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6" dependencies = [ "serde_derive", ] @@ -1297,9 +1297,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.138" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" +checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb" dependencies = [ "proc-macro2", "quote", @@ -1331,9 +1331,12 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] [[package]] name = "socket2" @@ -1461,10 +1464,11 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.19.2" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" +checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e" dependencies = [ + "autocfg", "bytes", "libc", "memchr", @@ -1564,9 +1568,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" [[package]] name = "unicode-normalization" diff --git a/tools/Cargo.toml b/tools/Cargo.toml index 7f75ef3a32d..65dee655e15 100644 --- a/tools/Cargo.toml +++ b/tools/Cargo.toml @@ -1,8 +1,8 @@ [workspace] members = [ - "*", + "*", ] exclude = [ - "target" + "target" ] resolver = "2" From 544990a6b408109d34b6363740befacae73fd4e4 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Wed, 20 Jul 2022 21:32:26 +0500 Subject: [PATCH 2/2] Remove component NodeRef (#2783) * don't attach noderef to components, add test case * remove node_ref from VNode and VComp * fmt & macro tests * remove uneeded test & todo this test is done at compile time. there's no node_ref field so it can't be set * feature soundness & clippy * add marker field, in an attempt to reduce bundle size * Update migration guide --- examples/nested_list/src/list.rs | 8 +- .../yew-macro/src/html_tree/html_component.rs | 3 +- .../tests/html_macro/component-fail.rs | 16 + .../tests/html_macro/component-fail.stderr | 342 +++++++++++------- .../tests/html_macro/component-pass.rs | 18 +- packages/yew/src/dom_bundle/bcomp.rs | 82 +---- packages/yew/src/html/conversion.rs | 2 +- packages/yew/src/html/mod.rs | 13 - packages/yew/src/virtual_dom/vcomp.rs | 23 +- packages/yew/tests/common/mod.rs | 4 + .../yew/from-0_19_0-to-0_20_0.mdx | 9 + 11 files changed, 279 insertions(+), 241 deletions(-) diff --git a/examples/nested_list/src/list.rs b/examples/nested_list/src/list.rs index 66d999cce9d..53c2101945e 100644 --- a/examples/nested_list/src/list.rs +++ b/examples/nested_list/src/list.rs @@ -1,6 +1,6 @@ use std::rc::Rc; -use yew::html::{ChildrenRenderer, NodeRef}; +use yew::html::ChildrenRenderer; use yew::prelude::*; use yew::virtual_dom::{VChild, VComp}; @@ -46,10 +46,8 @@ where impl From for Html { fn from(variant: ListVariant) -> Html { match variant.props { - Variants::Header(props) => { - VComp::new::(props, NodeRef::default(), None).into() - } - Variants::Item(props) => VComp::new::(props, NodeRef::default(), None).into(), + Variants::Header(props) => VComp::new::(props, None).into(), + Variants::Item(props) => VComp::new::(props, None).into(), } } } diff --git a/packages/yew-macro/src/html_tree/html_component.rs b/packages/yew-macro/src/html_tree/html_component.rs index 3ec0ac4ba2c..0a69eaf979b 100644 --- a/packages/yew-macro/src/html_tree/html_component.rs +++ b/packages/yew-macro/src/html_tree/html_component.rs @@ -106,7 +106,6 @@ impl ToTokens for HtmlComponent { Some(quote! { ::yew::html::ChildrenRenderer::new(#children) }) }; let build_props = props.build_properties_tokens(&props_ty, children_renderer); - let node_ref = props.special().wrap_node_ref_attr(); let key = props.special().wrap_key_attr(); let use_close_tag = close .as_ref() @@ -122,7 +121,7 @@ impl ToTokens for HtmlComponent { { #use_close_tag let __yew_props = #build_props; - ::yew::virtual_dom::VChild::<#ty>::new(__yew_props, #node_ref, #key) + ::yew::virtual_dom::VChild::<#ty>::new(__yew_props, #key) } }); } diff --git a/packages/yew-macro/tests/html_macro/component-fail.rs b/packages/yew-macro/tests/html_macro/component-fail.rs index e5c9e9985be..5da187d2f5e 100644 --- a/packages/yew-macro/tests/html_macro/component-fail.rs +++ b/packages/yew-macro/tests/html_macro/component-fail.rs @@ -65,6 +65,20 @@ fn compile_fail() { html! { }; html! { }; html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; + html! { }; html! { }; html! { }; html! { }; @@ -79,6 +93,8 @@ fn compile_fail() { html! { }; html! { }; html! { }; + html! { }; + html! { }; html! { }; html! { }; html! { }; diff --git a/packages/yew-macro/tests/html_macro/component-fail.stderr b/packages/yew-macro/tests/html_macro/component-fail.stderr index 2e068c63b21..fb02ae65600 100644 --- a/packages/yew-macro/tests/html_macro/component-fail.stderr +++ b/packages/yew-macro/tests/html_macro/component-fail.stderr @@ -148,135 +148,225 @@ error: `ref` can only be specified once 67 | html! { }; | ^^^ +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:68:20 + | +68 | html! { }; + | ^^^^ + error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:69:20 + | +69 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) --> tests/html_macro/component-fail.rs:70:20 | -70 | html! { }; +70 | html! { }; + | ^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:71:20 + | +71 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:72:20 + | +72 | html! { }; + | ^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:73:20 + | +73 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:74:20 + | +74 | html! { }; + | ^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:75:20 + | +75 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:76:28 + | +76 | html! { }; + | ^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:77:28 + | +77 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:78:39 + | +78 | html! { }; + | ^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:79:39 + | +79 | html! { }; + | ^^^^^^^ + +error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes) + --> tests/html_macro/component-fail.rs:80:51 + | +80 | html! { }; + | ^^^^ + +error: `r#ref` can only be specified once but is given here again + --> tests/html_macro/component-fail.rs:81:31 + | +81 | html! { }; + | ^^^^^ + +error: base props expression must appear last in list of props + --> tests/html_macro/component-fail.rs:84:20 + | +84 | html! { }; | ^^^^^^^^ error: expected identifier, found keyword `type` - --> tests/html_macro/component-fail.rs:71:20 + --> tests/html_macro/component-fail.rs:85:20 | -71 | html! { }; +85 | html! { }; | ^^^^ expected identifier, found keyword | help: escape `type` to use it as an identifier | -71 | html! { }; +85 | html! { }; | ++ error: the property value must be either a literal or enclosed in braces. Consider adding braces around your expression. - --> tests/html_macro/component-fail.rs:72:24 + --> tests/html_macro/component-fail.rs:86:24 | -72 | html! { }; +86 | html! { }; | ^^ error: expected a valid Rust identifier - --> tests/html_macro/component-fail.rs:73:20 + --> tests/html_macro/component-fail.rs:87:20 | -73 | html! { }; +87 | html! { }; | ^^^^^^^^^^^^^^^^^ error: expected an expression following this equals sign - --> tests/html_macro/component-fail.rs:75:26 + --> tests/html_macro/component-fail.rs:89:26 | -75 | html! { }; +89 | html! { }; | ^ error: `int` can only be specified once but is given here again - --> tests/html_macro/component-fail.rs:76:26 + --> tests/html_macro/component-fail.rs:90:26 | -76 | html! { }; +90 | html! { }; | ^^^ error: `int` can only be specified once but is given here again - --> tests/html_macro/component-fail.rs:76:32 + --> tests/html_macro/component-fail.rs:90:32 | -76 | html! { }; +90 | html! { }; | ^^^ error: `ref` can only be specified once - --> tests/html_macro/component-fail.rs:81:35 + --> tests/html_macro/component-fail.rs:95:35 | -81 | html! { }; +95 | html! { }; | ^^^ -error: this closing tag has no corresponding opening tag - --> tests/html_macro/component-fail.rs:84:13 +error: `r#ref` can only be specified once but is given here again + --> tests/html_macro/component-fail.rs:97:37 | -84 | html! { }; - | ^^^^^^^^ +97 | html! { }; + | ^^^^^ + +error: this closing tag has no corresponding opening tag + --> tests/html_macro/component-fail.rs:100:13 + | +100 | html! { }; + | ^^^^^^^^ error: this opening tag has no corresponding closing tag - --> tests/html_macro/component-fail.rs:85:13 - | -85 | html! { }; - | ^^^^^^^ + --> tests/html_macro/component-fail.rs:101:13 + | +101 | html! { }; + | ^^^^^^^ error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<>`) - --> tests/html_macro/component-fail.rs:86:28 - | -86 | html! { }; - | ^^^^^^^^^^^^^^^ + --> tests/html_macro/component-fail.rs:102:28 + | +102 | html! { }; + | ^^^^^^^^^^^^^^^ error: the property value must be either a literal or enclosed in braces. Consider adding braces around your expression. - --> tests/html_macro/component-fail.rs:90:24 - | -90 | html! { }; - | ^^^ + --> tests/html_macro/component-fail.rs:106:24 + | +106 | html! { }; + | ^^^ error: cannot specify the `children` prop when the component already has children - --> tests/html_macro/component-fail.rs:108:26 + --> tests/html_macro/component-fail.rs:124:26 | -108 | +124 | | ^^^^^^^^ error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<>`) - --> tests/html_macro/component-fail.rs:115:9 + --> tests/html_macro/component-fail.rs:131:9 | -115 | { 2 } +131 | { 2 } | ^^^^^^^^^^^^^^^^^^ error: only simple identifiers are allowed in the shorthand property syntax - --> tests/html_macro/component-fail.rs:118:21 + --> tests/html_macro/component-fail.rs:134:21 | -118 | html! { }; +134 | html! { }; | ^^^^^^^^^^^^^^^^^^^^ error: missing label for property value. If trying to use the shorthand property syntax, only identifiers may be used - --> tests/html_macro/component-fail.rs:119:21 + --> tests/html_macro/component-fail.rs:135:21 | -119 | html! { }; +135 | html! { }; | ^^^^^ error: missing label for property value. If trying to use the shorthand property syntax, only identifiers may be used - --> tests/html_macro/component-fail.rs:120:21 + --> tests/html_macro/component-fail.rs:136:21 | -120 | html! { }; +136 | html! { }; | ^^^^^^^^^^^^^^ error: only an expression may be assigned as a property - --> tests/html_macro/component-fail.rs:131:34 + --> tests/html_macro/component-fail.rs:147:34 | -131 | html! { }; +147 | html! { }; | ^^^^^^^^^^^^^^^^^^^^^^^^ error: only an expression may be assigned as a property. Consider removing this semicolon - --> tests/html_macro/component-fail.rs:132:61 + --> tests/html_macro/component-fail.rs:148:61 | -132 | html! { }; +148 | html! { }; | ^ error[E0425]: cannot find value `blah` in this scope - --> tests/html_macro/component-fail.rs:68:22 + --> tests/html_macro/component-fail.rs:82:22 | -68 | html! { }; +82 | html! { }; | ^^^^ not found in this scope error[E0425]: cannot find value `props` in this scope - --> tests/html_macro/component-fail.rs:69:30 + --> tests/html_macro/component-fail.rs:83:30 | -69 | html! { }; +83 | html! { }; | ^^^^^ not found in this scope error[E0308]: mismatched types @@ -291,51 +381,51 @@ error[E0308]: mismatched types found struct `std::ops::Range<_>` error[E0609]: no field `value` on type `ChildProperties` - --> tests/html_macro/component-fail.rs:69:20 + --> tests/html_macro/component-fail.rs:83:20 | -69 | html! { }; +83 | html! { }; | ^^^^^ unknown field | = note: available fields are: `string`, `int` error[E0609]: no field `r#type` on type `ChildProperties` - --> tests/html_macro/component-fail.rs:71:20 + --> tests/html_macro/component-fail.rs:85:20 | -71 | html! { }; +85 | html! { }; | ^^^^ unknown field | = note: available fields are: `string`, `int` error[E0599]: no method named `r#type` found for struct `ChildPropertiesBuilder` in the current scope - --> tests/html_macro/component-fail.rs:71:20 + --> tests/html_macro/component-fail.rs:85:20 | 4 | #[derive(Clone, Properties, PartialEq)] | ---------- method `r#type` not found for this ... -71 | html! { }; +85 | html! { }; | ^^^^ method not found in `ChildPropertiesBuilder` error[E0609]: no field `unknown` on type `ChildProperties` - --> tests/html_macro/component-fail.rs:74:20 + --> tests/html_macro/component-fail.rs:88:20 | -74 | html! { }; +88 | html! { }; | ^^^^^^^ unknown field | = note: available fields are: `string`, `int` error[E0599]: no method named `unknown` found for struct `ChildPropertiesBuilder` in the current scope - --> tests/html_macro/component-fail.rs:74:20 + --> tests/html_macro/component-fail.rs:88:20 | 4 | #[derive(Clone, Properties, PartialEq)] | ---------- method `unknown` not found for this ... -74 | html! { }; +88 | html! { }; | ^^^^^^^ method not found in `ChildPropertiesBuilder` error[E0277]: the trait bound `(): IntoPropValue` is not satisfied - --> tests/html_macro/component-fail.rs:77:33 + --> tests/html_macro/component-fail.rs:91:33 | -77 | html! { }; +91 | html! { }; | ------ ^^ the trait `IntoPropValue` is not implemented for `()` | | | required by a bound introduced by this call @@ -351,9 +441,9 @@ note: required by a bound in `ChildPropertiesBuilder::string` = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfied - --> tests/html_macro/component-fail.rs:78:33 + --> tests/html_macro/component-fail.rs:92:33 | -78 | html! { }; +92 | html! { }; | ------ ^ the trait `IntoPropValue` is not implemented for `{integer}` | | | required by a bound introduced by this call @@ -369,9 +459,9 @@ note: required by a bound in `ChildPropertiesBuilder::string` = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `{integer}: IntoPropValue` is not satisfied - --> tests/html_macro/component-fail.rs:79:34 + --> tests/html_macro/component-fail.rs:93:34 | -79 | html! { }; +93 | html! { }; | ------ ^ the trait `IntoPropValue` is not implemented for `{integer}` | | | required by a bound introduced by this call @@ -386,19 +476,27 @@ note: required by a bound in `ChildPropertiesBuilder::string` | ------ required by a bound in this = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0277]: the trait bound `(): IntoPropValue` is not satisfied - --> tests/html_macro/component-fail.rs:80:31 +error[E0609]: no field `r#ref` on type `ChildProperties` + --> tests/html_macro/component-fail.rs:96:26 + | +96 | html! { }; + | ^^^^^ unknown field | -80 | html! { }; - | ^^ - | | - | the trait `IntoPropValue` is not implemented for `()` - | required by a bound introduced by this call + = note: available fields are: `string`, `int` + +error[E0599]: no method named `r#ref` found for struct `ChildPropertiesBuilder` in the current scope + --> tests/html_macro/component-fail.rs:96:26 + | +4 | #[derive(Clone, Properties, PartialEq)] + | ---------- method `r#ref` not found for this +... +96 | html! { }; + | ^^^^^ method not found in `ChildPropertiesBuilder` error[E0277]: the trait bound `u32: IntoPropValue` is not satisfied - --> tests/html_macro/component-fail.rs:82:24 + --> tests/html_macro/component-fail.rs:98:24 | -82 | html! { }; +98 | html! { }; | --- ^^^^ the trait `IntoPropValue` is not implemented for `u32` | | | required by a bound introduced by this call @@ -414,9 +512,9 @@ note: required by a bound in `ChildPropertiesBuilder::int` = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp` is not satisfied - --> tests/html_macro/component-fail.rs:83:14 + --> tests/html_macro/component-fail.rs:99:14 | -83 | html! { }; +99 | html! { }; | ^^^^^ the trait `HasProp` is not implemented for `AssertAllProps` | note: required because of the requirements on the impl of `HasAllProps` for `CheckChildPropertiesAll` @@ -433,57 +531,57 @@ note: required by a bound in `yew::html::component::properties::__macro::PreBuil = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0609]: no field `children` on type `ChildProperties` - --> tests/html_macro/component-fail.rs:87:14 - | -87 | html! { { "Not allowed" } }; - | ^^^^^ unknown field - | - = note: available fields are: `string`, `int` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + --> tests/html_macro/component-fail.rs:103:14 + | +103 | html! { { "Not allowed" } }; + | ^^^^^ unknown field + | + = note: available fields are: `string`, `int` + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0599]: no method named `children` found for struct `ChildPropertiesBuilder` in the current scope - --> tests/html_macro/component-fail.rs:87:14 - | -4 | #[derive(Clone, Properties, PartialEq)] - | ---------- method `children` not found for this + --> tests/html_macro/component-fail.rs:103:14 + | +4 | #[derive(Clone, Properties, PartialEq)] + | ---------- method `children` not found for this ... -87 | html! { { "Not allowed" } }; - | ^^^^^ method not found in `ChildPropertiesBuilder` - | - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) +103 | html! { { "Not allowed" } }; + | ^^^^^ method not found in `ChildPropertiesBuilder` + | + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0609]: no field `children` on type `ChildProperties` - --> tests/html_macro/component-fail.rs:94:10 - | -94 | - | ^^^^^ unknown field - | - = note: available fields are: `string`, `int` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + --> tests/html_macro/component-fail.rs:110:10 + | +110 | + | ^^^^^ unknown field + | + = note: available fields are: `string`, `int` + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties::children, _>` is not satisfied - --> tests/html_macro/component-fail.rs:99:14 - | -99 | html! { }; - | ^^^^^^^^^^^^^^ the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps` - | + --> tests/html_macro/component-fail.rs:115:14 + | +115 | html! { }; + | ^^^^^^^^^^^^^^ the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps` + | note: required because of the requirements on the impl of `HasAllProps` for `CheckChildContainerPropertiesAll` - --> tests/html_macro/component-fail.rs:24:17 - | -24 | #[derive(Clone, Properties, PartialEq)] - | ^^^^^^^^^^ - = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` + --> tests/html_macro/component-fail.rs:24:17 + | +24 | #[derive(Clone, Properties, PartialEq)] + | ^^^^^^^^^^ + = note: required because of the requirements on the impl of `AllPropsFor` for `AssertAllProps` note: required by a bound in `yew::html::component::properties::__macro::PreBuild::::build` - --> $WORKSPACE/packages/yew/src/html/component/properties.rs - | - | Token: AllPropsFor, - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` - = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) + --> $WORKSPACE/packages/yew/src/html/component/properties.rs + | + | Token: AllPropsFor, + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `yew::html::component::properties::__macro::PreBuild::::build` + = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `AssertAllProps: HasProp<_ChildContainerProperties::children, _>` is not satisfied - --> tests/html_macro/component-fail.rs:100:14 + --> tests/html_macro/component-fail.rs:116:14 | -100 | html! { }; +116 | html! { }; | ^^^^^^^^^^^^^^ the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps` | note: required because of the requirements on the impl of `HasAllProps` for `CheckChildContainerPropertiesAll` @@ -500,25 +598,25 @@ note: required by a bound in `yew::html::component::properties::__macro::PreBuil = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `VChild: From` is not satisfied - --> tests/html_macro/component-fail.rs:101:31 + --> tests/html_macro/component-fail.rs:117:31 | -101 | html! { { "Not allowed" } }; +117 | html! { { "Not allowed" } }; | ^^^^^^^^^^^^^ the trait `From` is not implemented for `VChild` | = note: required because of the requirements on the impl of `Into>` for `yew::virtual_dom::VText` error[E0277]: the trait bound `VChild: From` is not satisfied - --> tests/html_macro/component-fail.rs:102:29 + --> tests/html_macro/component-fail.rs:118:29 | -102 | html! { <> }; +118 | html! { <> }; | ^ the trait `From` is not implemented for `VChild` | = note: required because of the requirements on the impl of `Into>` for `VNode` error[E0277]: the trait bound `VChild: From` is not satisfied - --> tests/html_macro/component-fail.rs:103:30 + --> tests/html_macro/component-fail.rs:119:30 | -103 | html! { }; +119 | html! { }; | ^^^^^ the trait `From` is not implemented for `VChild` | = note: required because of the requirements on the impl of `Into>` for `VNode` diff --git a/packages/yew-macro/tests/html_macro/component-pass.rs b/packages/yew-macro/tests/html_macro/component-pass.rs index bc703f9a5f3..dd960dfaecf 100644 --- a/packages/yew-macro/tests/html_macro/component-pass.rs +++ b/packages/yew-macro/tests/html_macro/component-pass.rs @@ -100,6 +100,8 @@ pub struct ChildProperties { pub string: ::std::string::String, #[prop_or_default] pub r#fn: ::std::primitive::i32, + #[prop_or_default] + pub r#ref: ::yew::NodeRef, pub int: ::std::primitive::i32, #[prop_or_default] pub opt_str: ::std::option::Option<::std::string::String>, @@ -181,11 +183,11 @@ fn compile_pass() { <> - - - - ::Properties as ::std::default::Default>::default() /> - ::Properties as ::std::default::Default>::default() /> + + + + ::Properties as ::std::default::Default>::default() /> + ::Properties as ::std::default::Default>::default() /> }; @@ -227,7 +229,7 @@ fn compile_pass() { let node_ref = <::yew::NodeRef as ::std::default::Default>::default(); ::yew::html! { <> - + }; @@ -235,7 +237,7 @@ fn compile_pass() { let node_ref = <::yew::NodeRef as ::std::default::Default>::default(); ::yew::html! { <> - + }; @@ -332,12 +334,10 @@ fn compile_pass() { ::std::vec![ ChildrenVariants::Child(::yew::virtual_dom::VChild::new( ::default(), - <::yew::NodeRef as ::std::default::Default>::default(), ::std::option::Option::None, )), ChildrenVariants::AltChild(::yew::virtual_dom::VChild::new( (), - <::yew::NodeRef as ::std::default::Default>::default(), ::std::option::Option::None )), ] diff --git a/packages/yew/src/dom_bundle/bcomp.rs b/packages/yew/src/dom_bundle/bcomp.rs index 8edce7d21a0..608bcf15076 100644 --- a/packages/yew/src/dom_bundle/bcomp.rs +++ b/packages/yew/src/dom_bundle/bcomp.rs @@ -18,9 +18,6 @@ pub(super) struct BComp { // A internal NodeRef passed around to track this components position. This // is "stable", i.e. does not change when reconciled. internal_ref: NodeRef, - // The user-passed NodeRef from VComp. Might change every time we reconcile. - // Gets linked to the internal ref - node_ref: NodeRef, key: Option, } @@ -64,11 +61,10 @@ impl Reconcilable for VComp { let VComp { type_id, mountable, - node_ref, key, + .. } = self; let internal_ref = NodeRef::default(); - node_ref.link(internal_ref.clone()); let scope = mountable.mount( root, @@ -82,7 +78,6 @@ impl Reconcilable for VComp { internal_ref.clone(), BComp { type_id, - node_ref, internal_ref, key, scope, @@ -117,16 +112,9 @@ impl Reconcilable for VComp { next_sibling: NodeRef, bcomp: &mut Self::Bundle, ) -> NodeRef { - let VComp { - mountable, - node_ref, - key, - type_id: _, - } = self; + let VComp { mountable, key, .. } = self; bcomp.key = key; - let old_ref = std::mem::replace(&mut bcomp.node_ref, node_ref); - bcomp.node_ref.reuse(old_ref); mountable.reuse(bcomp.scope.borrow(), next_sibling); bcomp.internal_ref.clone() } @@ -148,11 +136,10 @@ mod feat_hydration { let VComp { type_id, mountable, - node_ref, key, + .. } = self; let internal_ref = NodeRef::default(); - node_ref.link(internal_ref.clone()); let scoped = mountable.hydrate( root.clone(), @@ -167,7 +154,6 @@ mod feat_hydration { BComp { type_id, scope: scoped, - node_ref, internal_ref, key, }, @@ -282,31 +268,6 @@ mod tests { check_key(html! { }); } - #[test] - fn set_component_node_ref() { - let test_node: Node = document().create_text_node("test").into(); - let test_node_ref = NodeRef::new(test_node); - let check_node_ref = |vnode: VNode| { - let vcomp = match vnode { - VNode::VComp(vcomp) => vcomp, - _ => unreachable!("should be a vcomp"), - }; - assert_eq!(vcomp.node_ref, test_node_ref); - }; - - let props = Props { - field_1: 1, - field_2: 1, - }; - let props_2 = props.clone(); - - check_node_ref(html! { }); - check_node_ref(html! { }); - check_node_ref(html! { }); - check_node_ref(html! { }); - check_node_ref(html! { }); - } - #[test] fn vchild_partialeq() { let vchild1: VChild = VChild::new( @@ -314,7 +275,6 @@ mod tests { field_1: 1, field_2: 1, }, - NodeRef::default(), None, ); @@ -323,7 +283,6 @@ mod tests { field_1: 1, field_2: 1, }, - NodeRef::default(), None, ); @@ -332,7 +291,6 @@ mod tests { field_1: 2, field_2: 2, }, - NodeRef::default(), None, ); @@ -439,45 +397,17 @@ mod tests { } #[test] - fn reset_node_ref() { + fn component_node_ref_stays_none() { let (root, scope, parent) = setup_parent(); let node_ref = NodeRef::default(); let elem = html! { }; let (_, elem) = elem.attach(&root, &scope, &parent, NodeRef::default()); scheduler::start_now(); - let parent_node = parent.deref(); - assert_eq!(node_ref.get(), parent_node.first_child()); + assert!(node_ref.get().is_none(), "components don't have node refs"); elem.detach(&root, &parent, false); scheduler::start_now(); - assert!(node_ref.get().is_none()); - } - - #[test] - fn reset_ancestors_node_ref() { - let (root, scope, parent) = setup_parent(); - - let mut bundle = Bundle::new(); - let node_ref_a = NodeRef::default(); - let node_ref_b = NodeRef::default(); - let elem = html! { }; - let node_a = bundle.reconcile(&root, &scope, &parent, NodeRef::default(), elem); - scheduler::start_now(); - let node_a = node_a.get().unwrap(); - - assert!(node_ref_a.get().is_some(), "node_ref_a should be bound"); - - let elem = html! { }; - let node_b = bundle.reconcile(&root, &scope, &parent, NodeRef::default(), elem); - scheduler::start_now(); - let node_b = node_b.get().unwrap(); - - assert_eq!(node_a, node_b, "Comp should have reused the element"); - assert!(node_ref_b.get().is_some(), "node_ref_b should be bound"); - assert!( - node_ref_a.get().is_none(), - "node_ref_a should have been reset when the element was reused." - ); + assert!(node_ref.get().is_none(), "components don't have node refs"); } } diff --git a/packages/yew/src/html/conversion.rs b/packages/yew/src/html/conversion.rs index 465f0d58563..348c3400f53 100644 --- a/packages/yew/src/html/conversion.rs +++ b/packages/yew/src/html/conversion.rs @@ -318,7 +318,7 @@ mod test { } } - let header = VChild::new((), NodeRef::default(), None); + let header = VChild::new((), None); let footer = html_nested! { }; let children = html! {
{"main"}
}; diff --git a/packages/yew/src/html/mod.rs b/packages/yew/src/html/mod.rs index a0a4f8698f6..68c4f63c5a5 100644 --- a/packages/yew/src/html/mod.rs +++ b/packages/yew/src/html/mod.rs @@ -138,19 +138,6 @@ mod feat_csr { use super::*; impl NodeRef { - /// Reuse an existing `NodeRef` - pub(crate) fn reuse(&self, node_ref: Self) { - // Avoid circular references - if self == &node_ref { - return; - } - - let mut this = self.0.borrow_mut(); - let mut existing = node_ref.0.borrow_mut(); - this.node = existing.node.take(); - this.link = existing.link.take(); - } - /// Link a downstream `NodeRef` pub(crate) fn link(&self, node_ref: Self) { // Avoid circular references diff --git a/packages/yew/src/virtual_dom/vcomp.rs b/packages/yew/src/virtual_dom/vcomp.rs index 55a5603bd88..02f96beb414 100644 --- a/packages/yew/src/virtual_dom/vcomp.rs +++ b/packages/yew/src/virtual_dom/vcomp.rs @@ -14,11 +14,11 @@ use super::Key; use crate::dom_bundle::BSubtree; #[cfg(feature = "hydration")] use crate::dom_bundle::Fragment; -#[cfg(feature = "csr")] -use crate::html::Scoped; +use crate::html::BaseComponent; #[cfg(any(feature = "ssr", feature = "csr"))] use crate::html::{AnyScope, Scope}; -use crate::html::{BaseComponent, NodeRef}; +#[cfg(feature = "csr")] +use crate::html::{NodeRef, Scoped}; #[cfg(feature = "ssr")] use crate::platform::io::BufWriter; @@ -26,15 +26,15 @@ use crate::platform::io::BufWriter; pub struct VComp { pub(crate) type_id: TypeId, pub(crate) mountable: Box, - pub(crate) node_ref: NodeRef, pub(crate) key: Option, + // for some reason, this reduces the bundle size by ~2-3 KBs + _marker: u32, } impl fmt::Debug for VComp { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("VComp") .field("type_id", &self.type_id) - .field("node_ref", &self.node_ref) .field("mountable", &"..") .field("key", &self.key) .finish() @@ -46,8 +46,8 @@ impl Clone for VComp { Self { type_id: self.type_id, mountable: self.mountable.copy(), - node_ref: self.node_ref.clone(), key: self.key.clone(), + _marker: 0, } } } @@ -164,7 +164,6 @@ pub struct VChild { /// The component properties pub props: Rc, /// Reference to the mounted node - node_ref: NodeRef, key: Option, } @@ -172,7 +171,6 @@ impl Clone for VChild { fn clone(&self) -> Self { VChild { props: Rc::clone(&self.props), - node_ref: self.node_ref.clone(), key: self.key.clone(), } } @@ -192,10 +190,9 @@ where COMP: BaseComponent, { /// Creates a child component that can be accessed and modified by its parent. - pub fn new(props: COMP::Properties, node_ref: NodeRef, key: Option) -> Self { + pub fn new(props: COMP::Properties, key: Option) -> Self { Self { props: Rc::new(props), - node_ref, key, } } @@ -206,21 +203,21 @@ where COMP: BaseComponent, { fn from(vchild: VChild) -> Self { - VComp::new::(vchild.props, vchild.node_ref, vchild.key) + VComp::new::(vchild.props, vchild.key) } } impl VComp { /// Creates a new `VComp` instance. - pub fn new(props: Rc, node_ref: NodeRef, key: Option) -> Self + pub fn new(props: Rc, key: Option) -> Self where COMP: BaseComponent, { VComp { type_id: TypeId::of::(), - node_ref, mountable: Box::new(PropsWrapper::::new(props)), key, + _marker: 0, } } } diff --git a/packages/yew/tests/common/mod.rs b/packages/yew/tests/common/mod.rs index 52474e82320..0d56b773930 100644 --- a/packages/yew/tests/common/mod.rs +++ b/packages/yew/tests/common/mod.rs @@ -13,3 +13,7 @@ pub fn obtain_result_by_id(id: &str) -> String { .expect("No result found. Most likely, the application crashed and burned") .inner_html() } + +pub fn output_element() -> web_sys::Element { + gloo_utils::document().get_element_by_id("output").unwrap() +} diff --git a/website/docs/migration-guides/yew/from-0_19_0-to-0_20_0.mdx b/website/docs/migration-guides/yew/from-0_19_0-to-0_20_0.mdx index 27ec305aa7a..d0473857911 100644 --- a/website/docs/migration-guides/yew/from-0_19_0-to-0_20_0.mdx +++ b/website/docs/migration-guides/yew/from-0_19_0-to-0_20_0.mdx @@ -49,3 +49,12 @@ The reducer function can see all previous changes at the time they are run. `start_app*` has been replaced by `yew::Renderer`. You need to enable feature `render` to use `yew::Renderer`. + +## `ref` prop for Components + +Components no longer have a `ref` prop. Trying to add a node ref to a component +will result in a compile error + +Previously node ref passed to a component was bound to the first element rendered by it. +If this behavior is still desired, it is recommended to use add a `r#ref` field to the +component's properties and bind it manually