浏览代码

wip: add .d parser and use it for more accurate hot-reload tracking

Jonathan Kelley 4 月之前
父节点
当前提交
effee11ee4

+ 8 - 0
Cargo.lock

@@ -3267,6 +3267,13 @@ dependencies = [
  "uuid",
 ]
 
+[[package]]
+name = "depinfo"
+version = "0.6.2"
+dependencies = [
+ "thiserror 1.0.69",
+]
+
 [[package]]
 name = "der"
 version = "0.6.1"
@@ -3483,6 +3490,7 @@ dependencies = [
  "convert_case 0.6.0",
  "crossterm",
  "ctrlc",
+ "depinfo",
  "dioxus-autofmt",
  "dioxus-check",
  "dioxus-cli-config",

+ 2 - 0
Cargo.toml

@@ -65,6 +65,7 @@ members = [
     "packages/const-serialize-macro",
     "packages/dx-wire-format",
     "packages/logger",
+    "packages/depinfo",
 
     # Playwright tests
     "packages/playwright-tests/liveview",
@@ -150,6 +151,7 @@ manganis = { path = "packages/manganis/manganis", version = "0.6.2" }
 manganis-core = { path = "packages/manganis/manganis-core", version = "0.6.2" }
 manganis-macro = { path = "packages/manganis/manganis-macro", version = "0.6.2" }
 
+depinfo = { path = "packages/depinfo", version = "0.6.2" }
 warnings = { version = "0.2.1" }
 
 # a fork of pretty please for tests - let's get off of this if we can!

+ 2 - 0
packages/cli/Cargo.toml

@@ -24,6 +24,8 @@ dioxus-cli-opt = { workspace = true }
 dioxus-fullstack = { workspace = true }
 dioxus-dx-wire-format = { workspace = true }
 
+depinfo = { workspace = true }
+
 clap = { workspace = true, features = ["derive", "cargo"] }
 convert_case = { workspace = true }
 thiserror = { workspace = true }

+ 3 - 0
packages/cli/src/serve/mod.rs

@@ -150,6 +150,9 @@ pub(crate) async fn serve_all(mut args: ServeArgs) -> Result<()> {
                 // And then update the websocketed clients with the new build status in case they want it
                 devserver.new_build_update(&update, &builder).await;
 
+                // And then update the watcher with the new build status in case there are new files to watch
+                _ = watcher.new_build_update(&update);
+
                 // And then open the app if it's ready
                 // todo: there might be more things to do here that require coordination with other pieces of the CLI
                 // todo: maybe we want to shuffle the runner around to send an "open" command instead of doing that

+ 2 - 0
packages/cli/src/serve/runner.rs

@@ -335,6 +335,8 @@ impl AppRunner {
         }
     }
 
+    pub fn fill_from_target_dir(&mut self) {}
+
     fn flush_session_cache(&self) {
         let cache_dir = self.krate.session_cache_dir();
         _ = std::fs::remove_dir_all(&cache_dir);

+ 14 - 1
packages/cli/src/serve/watcher.rs

@@ -1,6 +1,8 @@
 use super::detect::is_wsl;
 use super::update::ServeUpdate;
-use crate::{cli::serve::ServeArgs, dioxus_crate::DioxusCrate};
+use crate::Result;
+use crate::{cli::serve::ServeArgs, dioxus_crate::DioxusCrate, BuildUpdate};
+use dioxus_dx_wire_format::BuildStage;
 use futures_channel::mpsc::{UnboundedReceiver, UnboundedSender};
 use futures_util::StreamExt;
 use notify::{
@@ -80,6 +82,17 @@ impl Watcher {
         ServeUpdate::FilesChanged { files }
     }
 
+    pub(crate) fn new_build_update(&mut self, update: &BuildUpdate) -> Result<()> {
+        let BuildUpdate::Progress {
+            stage: BuildStage::BinaryCreated { binary, is_sever },
+        } = update
+        else {
+            return Ok(());
+        };
+
+        Ok(())
+    }
+
     fn watch_filesystem(&mut self) {
         // Watch the folders of the crates that we're interested in
         for path in self.krate.watch_paths() {

+ 7 - 0
packages/depinfo/Cargo.toml

@@ -0,0 +1,7 @@
+[package]
+name = "depinfo"
+edition = "2021"
+version.workspace = true
+
+[dependencies]
+thiserror = { workspace =  true }

+ 4 - 0
packages/depinfo/README.md

@@ -0,0 +1,4 @@
+# Rustc Dep-Info Parser
+
+
+This crate parses the output of rustc's `.d` dep-info file. It is used by the hot-reloading engine and other libraries to provide higher quality dependency analysis for the user's project.

+ 1 - 0
packages/depinfo/src/dx.d

@@ -0,0 +1 @@
+/Users/jonkelley/Development/dioxus/target/debug/dx: /Users/jonkelley/Development/dioxus/packages/autofmt/README.md /Users/jonkelley/Development/dioxus/packages/autofmt/src/buffer.rs /Users/jonkelley/Development/dioxus/packages/autofmt/src/collect_macros.rs /Users/jonkelley/Development/dioxus/packages/autofmt/src/indent.rs /Users/jonkelley/Development/dioxus/packages/autofmt/src/lib.rs /Users/jonkelley/Development/dioxus/packages/autofmt/src/prettier_please.rs /Users/jonkelley/Development/dioxus/packages/autofmt/src/writer.rs /Users/jonkelley/Development/dioxus/packages/check/README.md /Users/jonkelley/Development/dioxus/packages/check/src/check.rs /Users/jonkelley/Development/dioxus/packages/check/src/issues.rs /Users/jonkelley/Development/dioxus/packages/check/src/lib.rs /Users/jonkelley/Development/dioxus/packages/check/src/metadata.rs /Users/jonkelley/Development/dioxus/packages/cli/README.md /Users/jonkelley/Development/dioxus/packages/cli/assets/android/MainActivity.kt.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/build.gradle.kts.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/proguard-rules.pro /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/drawable/ic_launcher_background.xml /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-hdpi/ic_launcher.webp /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-mdpi/ic_launcher.webp /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xhdpi/ic_launcher.webp /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/colors.xml /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/strings.xml.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/styles.xml /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/build.gradle.kts /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle/wrapper/gradle-wrapper.jar /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle/wrapper/gradle-wrapper.properties /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle.properties /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradlew /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradlew.bat /Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/settings.gradle /Users/jonkelley/Development/dioxus/packages/cli/assets/dioxus.toml /Users/jonkelley/Development/dioxus/packages/cli/assets/ios/ios.plist.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/macos/mac.plist.hbs /Users/jonkelley/Development/dioxus/packages/cli/assets/web/index.html /Users/jonkelley/Development/dioxus/packages/cli/assets/web/loading.html /Users/jonkelley/Development/dioxus/packages/cli/assets/web/toast.html /Users/jonkelley/Development/dioxus/packages/cli/build.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/builder.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/bundle.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/mod.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/prerender.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/progress.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/request.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/templates.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/verify.rs /Users/jonkelley/Development/dioxus/packages/cli/src/build/web.rs /Users/jonkelley/Development/dioxus/packages/cli/src/bundle_utils.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/autoformat.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/build.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/bundle.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/check.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/clean.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/config.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/create.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/init.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/link.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/mod.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/run.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/serve.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/target.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/translate.rs /Users/jonkelley/Development/dioxus/packages/cli/src/cli/verbosity.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/app.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/bundle.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/desktop.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/dioxus_config.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/serve.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config/web.rs /Users/jonkelley/Development/dioxus/packages/cli/src/config.rs /Users/jonkelley/Development/dioxus/packages/cli/src/dioxus_crate.rs /Users/jonkelley/Development/dioxus/packages/cli/src/dx_build_info.rs /Users/jonkelley/Development/dioxus/packages/cli/src/error.rs /Users/jonkelley/Development/dioxus/packages/cli/src/fastfs.rs /Users/jonkelley/Development/dioxus/packages/cli/src/filemap.rs /Users/jonkelley/Development/dioxus/packages/cli/src/logging.rs /Users/jonkelley/Development/dioxus/packages/cli/src/main.rs /Users/jonkelley/Development/dioxus/packages/cli/src/metadata.rs /Users/jonkelley/Development/dioxus/packages/cli/src/platform.rs /Users/jonkelley/Development/dioxus/packages/cli/src/rustc.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/ansi_buffer.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/detect.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/handle.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/mod.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/output.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/proxy.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/runner.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/server.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/update.rs /Users/jonkelley/Development/dioxus/packages/cli/src/serve/watcher.rs /Users/jonkelley/Development/dioxus/packages/cli/src/settings.rs /Users/jonkelley/Development/dioxus/packages/cli/src/wasm_bindgen.rs /Users/jonkelley/Development/dioxus/packages/cli-config/src/lib.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/css.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/file.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/folder.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/jpg.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/mod.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/png.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/js.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/json.rs /Users/jonkelley/Development/dioxus/packages/cli-opt/src/lib.rs /Users/jonkelley/Development/dioxus/packages/config-macro/README.md /Users/jonkelley/Development/dioxus/packages/config-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/const-serialize/README.md /Users/jonkelley/Development/dioxus/packages/const-serialize/src/const_buffers.rs /Users/jonkelley/Development/dioxus/packages/const-serialize/src/const_vec.rs /Users/jonkelley/Development/dioxus/packages/const-serialize/src/lib.rs /Users/jonkelley/Development/dioxus/packages/const-serialize-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/core/README.md /Users/jonkelley/Development/dioxus/packages/core/docs/common_spawn_errors.md /Users/jonkelley/Development/dioxus/packages/core/docs/reactivity.md /Users/jonkelley/Development/dioxus/packages/core/src/any_props.rs /Users/jonkelley/Development/dioxus/packages/core/src/arena.rs /Users/jonkelley/Development/dioxus/packages/core/src/diff/component.rs /Users/jonkelley/Development/dioxus/packages/core/src/diff/iterator.rs /Users/jonkelley/Development/dioxus/packages/core/src/diff/mod.rs /Users/jonkelley/Development/dioxus/packages/core/src/diff/node.rs /Users/jonkelley/Development/dioxus/packages/core/src/effect.rs /Users/jonkelley/Development/dioxus/packages/core/src/error_boundary.rs /Users/jonkelley/Development/dioxus/packages/core/src/events.rs /Users/jonkelley/Development/dioxus/packages/core/src/fragment.rs /Users/jonkelley/Development/dioxus/packages/core/src/generational_box.rs /Users/jonkelley/Development/dioxus/packages/core/src/global_context.rs /Users/jonkelley/Development/dioxus/packages/core/src/hotreload_utils.rs /Users/jonkelley/Development/dioxus/packages/core/src/launch.rs /Users/jonkelley/Development/dioxus/packages/core/src/lib.rs /Users/jonkelley/Development/dioxus/packages/core/src/mutations.rs /Users/jonkelley/Development/dioxus/packages/core/src/nodes.rs /Users/jonkelley/Development/dioxus/packages/core/src/properties.rs /Users/jonkelley/Development/dioxus/packages/core/src/reactive_context.rs /Users/jonkelley/Development/dioxus/packages/core/src/render_error.rs /Users/jonkelley/Development/dioxus/packages/core/src/root_wrapper.rs /Users/jonkelley/Development/dioxus/packages/core/src/runtime.rs /Users/jonkelley/Development/dioxus/packages/core/src/scheduler.rs /Users/jonkelley/Development/dioxus/packages/core/src/scope_arena.rs /Users/jonkelley/Development/dioxus/packages/core/src/scope_context.rs /Users/jonkelley/Development/dioxus/packages/core/src/scopes.rs /Users/jonkelley/Development/dioxus/packages/core/src/suspense/component.rs /Users/jonkelley/Development/dioxus/packages/core/src/suspense/mod.rs /Users/jonkelley/Development/dioxus/packages/core/src/tasks.rs /Users/jonkelley/Development/dioxus/packages/core/src/virtual_dom.rs /Users/jonkelley/Development/dioxus/packages/core-macro/README.md /Users/jonkelley/Development/dioxus/packages/core-macro/docs/component.md /Users/jonkelley/Development/dioxus/packages/core-macro/docs/props.md /Users/jonkelley/Development/dioxus/packages/core-macro/docs/rsx.md /Users/jonkelley/Development/dioxus/packages/core-macro/src/component.rs /Users/jonkelley/Development/dioxus/packages/core-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/core-macro/src/props/mod.rs /Users/jonkelley/Development/dioxus/packages/core-macro/src/utils.rs /Users/jonkelley/Development/dioxus/packages/core-types/src/bubbles.rs /Users/jonkelley/Development/dioxus/packages/core-types/src/bundled.rs /Users/jonkelley/Development/dioxus/packages/core-types/src/formatter.rs /Users/jonkelley/Development/dioxus/packages/core-types/src/hr_context.rs /Users/jonkelley/Development/dioxus/packages/core-types/src/lib.rs /Users/jonkelley/Development/dioxus/packages/devtools/src/lib.rs /Users/jonkelley/Development/dioxus/packages/devtools-types/src/lib.rs /Users/jonkelley/Development/dioxus/packages/dioxus-lib/README.md /Users/jonkelley/Development/dioxus/packages/dioxus-lib/src/lib.rs /Users/jonkelley/Development/dioxus/packages/document/build.rs /Users/jonkelley/Development/dioxus/packages/document/docs/eval.md /Users/jonkelley/Development/dioxus/packages/document/docs/head.md /Users/jonkelley/Development/dioxus/packages/document/src/document.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/link.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/meta.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/mod.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/script.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/style.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/stylesheet.rs /Users/jonkelley/Development/dioxus/packages/document/src/elements/title.rs /Users/jonkelley/Development/dioxus/packages/document/src/error.rs /Users/jonkelley/Development/dioxus/packages/document/src/eval.rs /Users/jonkelley/Development/dioxus/packages/document/src/js/head.js /Users/jonkelley/Development/dioxus/packages/document/src/lib.rs /Users/jonkelley/Development/dioxus/packages/document/./src/ts/eval.ts /Users/jonkelley/Development/dioxus/packages/document/./src/ts/head.ts /Users/jonkelley/Development/dioxus/packages/dx-wire-format/src/lib.rs /Users/jonkelley/Development/dioxus/packages/fullstack/README.md /Users/jonkelley/Development/dioxus/packages/fullstack/src/document/mod.rs /Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/mod.rs /Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/server_cached.rs /Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/server_future.rs /Users/jonkelley/Development/dioxus/packages/fullstack/src/html_storage/mod.rs /Users/jonkelley/Development/dioxus/packages/fullstack/src/lib.rs /Users/jonkelley/Development/dioxus/packages/generational-box/README.md /Users/jonkelley/Development/dioxus/packages/generational-box/src/entry.rs /Users/jonkelley/Development/dioxus/packages/generational-box/src/error.rs /Users/jonkelley/Development/dioxus/packages/generational-box/src/lib.rs /Users/jonkelley/Development/dioxus/packages/generational-box/src/references.rs /Users/jonkelley/Development/dioxus/packages/generational-box/src/sync.rs /Users/jonkelley/Development/dioxus/packages/generational-box/src/unsync.rs /Users/jonkelley/Development/dioxus/packages/history/src/lib.rs /Users/jonkelley/Development/dioxus/packages/history/src/memory.rs /Users/jonkelley/Development/dioxus/packages/hooks/README.md /Users/jonkelley/Development/dioxus/packages/hooks/docs/derived_state.md /Users/jonkelley/Development/dioxus/packages/hooks/docs/moving_state_around.md /Users/jonkelley/Development/dioxus/packages/hooks/docs/rules_of_hooks.md /Users/jonkelley/Development/dioxus/packages/hooks/docs/side_effects.md /Users/jonkelley/Development/dioxus/packages/hooks/docs/use_resource.md /Users/jonkelley/Development/dioxus/packages/hooks/src/lib.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_callback.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_context.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_coroutine.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_effect.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_future.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_hook_did_run.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_memo.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_on_destroy.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_reactive.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_resource.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_root_context.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_set_compare.rs /Users/jonkelley/Development/dioxus/packages/hooks/src/use_signal.rs /Users/jonkelley/Development/dioxus/packages/html/README.md /Users/jonkelley/Development/dioxus/packages/html/docs/common_event_handler_errors.md /Users/jonkelley/Development/dioxus/packages/html/docs/event_handlers.md /Users/jonkelley/Development/dioxus/packages/html/src/attribute_groups.rs /Users/jonkelley/Development/dioxus/packages/html/src/elements.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/animation.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/clipboard.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/composition.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/drag.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/focus.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/form.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/image.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/keyboard.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/media.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/mod.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/mounted.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/mouse.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/pointer.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/resize.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/scroll.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/selection.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/toggle.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/touch.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/transition.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/visible.rs /Users/jonkelley/Development/dioxus/packages/html/src/events/wheel.rs /Users/jonkelley/Development/dioxus/packages/html/src/file_data.rs /Users/jonkelley/Development/dioxus/packages/html/src/geometry.rs /Users/jonkelley/Development/dioxus/packages/html/src/input_data.rs /Users/jonkelley/Development/dioxus/packages/html/src/lib.rs /Users/jonkelley/Development/dioxus/packages/html/src/point_interaction.rs /Users/jonkelley/Development/dioxus/packages/html/src/render_template.rs /Users/jonkelley/Development/dioxus/packages/html-internal-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/lazy-js-bundle/src/lib.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis/README.md /Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/hash.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/lib.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/macro_helpers.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/asset.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/css.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/folder.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/hash.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/images.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/js.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/lib.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/linker.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/options.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/README.md /Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/asset.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/linker.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/assign_dyn_ids.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/attribute.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/component.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/diagnostics.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/element.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/expr_node.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/forloop.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/ifchain.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/ifmt.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/lib.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/literal.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/location.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/node.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/partial_closure.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/raw_expr.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/rsx_block.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/rsx_call.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/template_body.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/text_node.rs /Users/jonkelley/Development/dioxus/packages/rsx/src/util.rs /Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/collect.rs /Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/diff.rs /Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/extensions.rs /Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/last_build_state.rs /Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/lib.rs /Users/jonkelley/Development/dioxus/packages/rsx-rosetta/README.md /Users/jonkelley/Development/dioxus/packages/rsx-rosetta/src/lib.rs /Users/jonkelley/Development/dioxus/packages/server-macro/src/lib.rs /Users/jonkelley/Development/dioxus/packages/signals/README.md /Users/jonkelley/Development/dioxus/packages/signals/docs/hoist/error.rs /Users/jonkelley/Development/dioxus/packages/signals/docs/hoist/fixed_list.rs /Users/jonkelley/Development/dioxus/packages/signals/docs/memo.md /Users/jonkelley/Development/dioxus/packages/signals/docs/signals.md /Users/jonkelley/Development/dioxus/packages/signals/src/copy_value.rs /Users/jonkelley/Development/dioxus/packages/signals/src/global/memo.rs /Users/jonkelley/Development/dioxus/packages/signals/src/global/mod.rs /Users/jonkelley/Development/dioxus/packages/signals/src/global/signal.rs /Users/jonkelley/Development/dioxus/packages/signals/src/impls.rs /Users/jonkelley/Development/dioxus/packages/signals/src/lib.rs /Users/jonkelley/Development/dioxus/packages/signals/src/map.rs /Users/jonkelley/Development/dioxus/packages/signals/src/memo.rs /Users/jonkelley/Development/dioxus/packages/signals/src/props.rs /Users/jonkelley/Development/dioxus/packages/signals/src/read.rs /Users/jonkelley/Development/dioxus/packages/signals/src/read_only_signal.rs /Users/jonkelley/Development/dioxus/packages/signals/src/set_compare.rs /Users/jonkelley/Development/dioxus/packages/signals/src/signal.rs /Users/jonkelley/Development/dioxus/packages/signals/src/warnings.rs /Users/jonkelley/Development/dioxus/packages/signals/src/write.rs /Users/jonkelley/Development/dioxus/target/debug/build/dioxus-cli-90993e55e02b7cee/out/built.rs

+ 442 - 0
packages/depinfo/src/lib.rs

@@ -0,0 +1,442 @@
+//! Parse the output of rustc's `.d` dep-info file.
+//!
+//! Used by the hot-reloading engine and other libraries to provide higher quality dependency analysis
+//! for the user's project.
+
+use std::path::PathBuf;
+
+#[non_exhaustive]
+#[derive(Debug, thiserror::Error)]
+pub enum DepInfoParseError {
+    /// The input was malformed - maybe this `.d` format is no longer supported?
+    #[error("Malformed input")]
+    MalformedInput,
+
+    /// An env var could not be escaped or parsed - this might be a bug in rustc.
+    #[error("Failed to parse env var name")]
+    InvalidEnvVarName,
+}
+
+#[non_exhaustive]
+#[derive(Default, Debug)]
+pub struct RustcDepInfo {
+    /// The list of files that the main target in the dep-info file depends on.
+    pub files: Vec<PathBuf>,
+
+    /// The list of environment variables we found that the rustc compilation
+    /// depends on.
+    ///
+    /// The first element of the pair is the name of the env var and the second
+    /// item is the value. `Some` means that the env var was set, and `None`
+    /// means that the env var wasn't actually set and the compilation depends
+    /// on it not being set.
+    pub env: Vec<(String, Option<String>)>,
+}
+
+impl std::str::FromStr for RustcDepInfo {
+    type Err = DepInfoParseError;
+
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::new(s)
+    }
+}
+
+impl RustcDepInfo {
+    /// Parse the `.d` dep-info file generated by rustc.
+    pub fn new(contents: &str) -> Result<RustcDepInfo, DepInfoParseError> {
+        let mut ret = RustcDepInfo::default();
+        let mut found_deps = false;
+
+        for line in contents.lines() {
+            if let Some(rest) = line.strip_prefix("# env-dep:") {
+                let mut parts = rest.splitn(2, '=');
+                let env_var = match parts.next() {
+                    Some(s) => s,
+                    None => continue,
+                };
+                let env_val = match parts.next() {
+                    Some(s) => Some(unescape_env(s)?),
+                    None => None,
+                };
+                ret.env.push((unescape_env(env_var)?, env_val));
+            } else if let Some(pos) = line.find(": ") {
+                if found_deps {
+                    continue;
+                }
+                found_deps = true;
+                let mut deps = line[pos + 2..].split_whitespace();
+
+                while let Some(s) = deps.next() {
+                    let mut file = s.to_string();
+                    while file.ends_with('\\') {
+                        file.pop();
+                        file.push(' ');
+                        file.push_str(
+                            deps.next()
+                                .ok_or_else(|| DepInfoParseError::MalformedInput)?,
+                        );
+                    }
+                    ret.files.push(file.into());
+                }
+            }
+        }
+        return Ok(ret);
+
+        // rustc tries to fit env var names and values all on a single line, which
+        // means it needs to escape `\r` and `\n`. The escape syntax used is "\n"
+        // which means that `\` also needs to be escaped.
+        fn unescape_env(s: &str) -> Result<String, DepInfoParseError> {
+            let mut ret = String::with_capacity(s.len());
+            let mut chars = s.chars();
+            while let Some(c) = chars.next() {
+                if c != '\\' {
+                    ret.push(c);
+                    continue;
+                }
+                match chars.next() {
+                    Some('\\') => ret.push('\\'),
+                    Some('n') => ret.push('\n'),
+                    Some('r') => ret.push('\r'),
+                    Some(_) => return Err(DepInfoParseError::InvalidEnvVarName),
+                    None => return Err(DepInfoParseError::InvalidEnvVarName),
+                }
+            }
+            Ok(ret)
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+
+    use super::*;
+
+    #[test]
+    fn parses_from_path() {
+        let contents = include_str!("./dx.d");
+        let info: RustcDepInfo = contents.parse().unwrap();
+        let answer = vec![
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/buffer.rs",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/collect_macros.rs",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/indent.rs",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/prettier_please.rs",
+            "/Users/jonkelley/Development/dioxus/packages/autofmt/src/writer.rs",
+            "/Users/jonkelley/Development/dioxus/packages/check/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/check/src/check.rs",
+            "/Users/jonkelley/Development/dioxus/packages/check/src/issues.rs",
+            "/Users/jonkelley/Development/dioxus/packages/check/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/check/src/metadata.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/MainActivity.kt.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/build.gradle.kts.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/proguard-rules.pro",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/AndroidManifest.xml.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/drawable/ic_launcher_background.xml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-hdpi/ic_launcher.webp",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-mdpi/ic_launcher.webp",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xhdpi/ic_launcher.webp",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/colors.xml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/strings.xml.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/app/src/main/res/values/styles.xml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/build.gradle.kts",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle/wrapper/gradle-wrapper.jar",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle/wrapper/gradle-wrapper.properties",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradle.properties",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradlew",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/gradlew.bat",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/android/gen/settings.gradle",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/dioxus.toml",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/ios/ios.plist.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/macos/mac.plist.hbs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/web/index.html",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/web/loading.html",
+            "/Users/jonkelley/Development/dioxus/packages/cli/assets/web/toast.html",
+            "/Users/jonkelley/Development/dioxus/packages/cli/build.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/builder.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/bundle.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/prerender.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/progress.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/request.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/templates.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/verify.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/build/web.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/bundle_utils.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/autoformat.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/build.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/bundle.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/check.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/clean.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/config.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/create.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/init.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/link.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/run.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/serve.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/target.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/translate.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/cli/verbosity.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/app.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/bundle.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/desktop.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/dioxus_config.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/serve.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config/web.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/config.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/dioxus_crate.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/dx_build_info.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/error.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/fastfs.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/filemap.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/logging.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/main.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/metadata.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/platform.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/rustc.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/ansi_buffer.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/detect.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/handle.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/output.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/proxy.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/runner.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/server.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/update.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/serve/watcher.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/settings.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli/src/wasm_bindgen.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-config/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/css.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/file.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/folder.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/jpg.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/image/png.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/js.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/json.rs",
+            "/Users/jonkelley/Development/dioxus/packages/cli-opt/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/config-macro/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/config-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/const-serialize/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/const-serialize/src/const_buffers.rs",
+            "/Users/jonkelley/Development/dioxus/packages/const-serialize/src/const_vec.rs",
+            "/Users/jonkelley/Development/dioxus/packages/const-serialize/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/const-serialize-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/core/docs/common_spawn_errors.md",
+            "/Users/jonkelley/Development/dioxus/packages/core/docs/reactivity.md",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/any_props.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/arena.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/diff/component.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/diff/iterator.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/diff/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/diff/node.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/effect.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/error_boundary.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/events.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/fragment.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/generational_box.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/global_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/hotreload_utils.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/launch.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/mutations.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/nodes.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/properties.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/reactive_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/render_error.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/root_wrapper.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/runtime.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/scheduler.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/scope_arena.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/scope_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/scopes.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/suspense/component.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/suspense/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/tasks.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core/src/virtual_dom.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/docs/component.md",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/docs/props.md",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/docs/rsx.md",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/src/component.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/src/props/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-macro/src/utils.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-types/src/bubbles.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-types/src/bundled.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-types/src/formatter.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-types/src/hr_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/core-types/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/devtools/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/devtools-types/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/dioxus-lib/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/dioxus-lib/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/build.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/docs/eval.md",
+            "/Users/jonkelley/Development/dioxus/packages/document/docs/head.md",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/document.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/link.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/meta.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/script.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/style.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/stylesheet.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/elements/title.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/error.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/eval.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/js/head.js",
+            "/Users/jonkelley/Development/dioxus/packages/document/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/document/./src/ts/eval.ts",
+            "/Users/jonkelley/Development/dioxus/packages/document/./src/ts/head.ts",
+            "/Users/jonkelley/Development/dioxus/packages/dx-wire-format/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/document/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/server_cached.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/hooks/server_future.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/html_storage/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/fullstack/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/entry.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/error.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/references.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/sync.rs",
+            "/Users/jonkelley/Development/dioxus/packages/generational-box/src/unsync.rs",
+            "/Users/jonkelley/Development/dioxus/packages/history/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/history/src/memory.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/docs/derived_state.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/docs/moving_state_around.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/docs/rules_of_hooks.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/docs/side_effects.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/docs/use_resource.md",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_callback.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_coroutine.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_effect.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_future.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_hook_did_run.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_memo.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_on_destroy.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_reactive.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_resource.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_root_context.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_set_compare.rs",
+            "/Users/jonkelley/Development/dioxus/packages/hooks/src/use_signal.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/html/docs/common_event_handler_errors.md",
+            "/Users/jonkelley/Development/dioxus/packages/html/docs/event_handlers.md",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/attribute_groups.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/elements.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/animation.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/clipboard.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/composition.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/drag.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/focus.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/form.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/image.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/keyboard.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/media.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/mounted.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/mouse.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/pointer.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/resize.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/scroll.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/selection.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/toggle.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/touch.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/transition.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/visible.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/events/wheel.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/file_data.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/geometry.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/input_data.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/point_interaction.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html/src/render_template.rs",
+            "/Users/jonkelley/Development/dioxus/packages/html-internal-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/lazy-js-bundle/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/hash.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis/src/macro_helpers.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/asset.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/css.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/folder.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/hash.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/images.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/js.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/linker.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-core/src/options.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/asset.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/manganis/manganis-macro/src/linker.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/assign_dyn_ids.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/attribute.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/component.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/diagnostics.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/element.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/expr_node.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/forloop.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/ifchain.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/ifmt.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/literal.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/location.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/node.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/partial_closure.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/raw_expr.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/rsx_block.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/rsx_call.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/template_body.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/text_node.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx/src/util.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/collect.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/diff.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/extensions.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/last_build_state.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-hotreload/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-rosetta/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/rsx-rosetta/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/server-macro/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/README.md",
+            "/Users/jonkelley/Development/dioxus/packages/signals/docs/hoist/error.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/docs/hoist/fixed_list.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/docs/memo.md",
+            "/Users/jonkelley/Development/dioxus/packages/signals/docs/signals.md",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/copy_value.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/global/memo.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/global/mod.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/global/signal.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/impls.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/lib.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/map.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/memo.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/props.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/read.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/read_only_signal.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/set_compare.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/signal.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/warnings.rs",
+            "/Users/jonkelley/Development/dioxus/packages/signals/src/write.rs",
+            "/Users/jonkelley/Development/dioxus/target/debug/build/dioxus-cli-90993e55e02b7cee/out/built.rs",
+        ];
+        assert_eq!(
+            answer.iter().map(PathBuf::from).collect::<Vec<_>>(),
+            info.files
+        );
+    }
+}

+ 4 - 0
packages/dx-wire-format/src/lib.rs

@@ -63,6 +63,10 @@ pub enum BuildStage {
         total: usize,
         path: PathBuf,
     },
+    BinaryCreated {
+        binary: PathBuf,
+        is_sever: bool,
+    },
     Bundling,
     RunningGradle,
     Success,