codify "platform" into resolution logic, server-fn/fullstack overhaul (#4596)
overhaul dioxus fullstack using a new implementation of server_fn This PR is a complete rewrite of dioxus fullstack designed to improve compatibility with axum and to fix a number of compilation errors based on feature flag unification plumbing through macros.
This commit is contained in:
1 parent
8421c3aef0
commit
f2b1c6d97f
424 files changed
+17284
-6624
No files matched your search
+20
-14
@@ -24,17 +24,17 @@ dioxus-signals = { workspace = true, optional = true }
|
||||
dioxus-router = { workspace = true, optional = true }
|
||||
dioxus-web = { workspace = true, default-features = false, optional = true }
|
||||
dioxus-desktop = { workspace = true, default-features = true, optional = true }
|
||||
dioxus-fullstack = { workspace = true, default-features = true, optional = true }
|
||||
dioxus-liveview = { workspace = true, optional = true }
|
||||
dioxus-server = { workspace = true, optional = true }
|
||||
dioxus-ssr = { workspace = true, optional = true }
|
||||
dioxus-native = { workspace = true, optional = true }
|
||||
dioxus_server_macro = { workspace = true, optional = true }
|
||||
dioxus-server = { workspace = true, default-features = true, optional = true }
|
||||
dioxus-fullstack = { workspace = true, default-features = true, optional = true }
|
||||
dioxus-fullstack-macro = { workspace = true, optional = true }
|
||||
dioxus-asset-resolver = { workspace = true, optional = true }
|
||||
manganis = { workspace = true, features = ["dioxus"], optional = true }
|
||||
dioxus-logger = { workspace = true, optional = true }
|
||||
warnings = { workspace = true, optional = true }
|
||||
wasm-splitter = { workspace = true, package = "wasm-split", optional = true }
|
||||
wasm-splitter = { workspace = true, optional = true }
|
||||
subsecond = { workspace = true }
|
||||
|
||||
serde = { workspace = true, optional = true }
|
||||
@@ -55,7 +55,6 @@ lib = [
|
||||
"signals",
|
||||
"hooks",
|
||||
"mounted",
|
||||
"file_engine",
|
||||
"document",
|
||||
"asset",
|
||||
"warnings",
|
||||
@@ -67,9 +66,8 @@ signals = ["dep:dioxus-signals", "dep:dioxus-stores"]
|
||||
macro = ["dep:dioxus-core-macro"]
|
||||
html = ["dep:dioxus-html"]
|
||||
hooks = ["dep:dioxus-hooks"]
|
||||
devtools = ["dep:dioxus-devtools", "dioxus-web?/devtools", "dioxus-fullstack?/devtools"]
|
||||
devtools = ["dep:dioxus-devtools", "dioxus-web?/devtools"]
|
||||
mounted = ["dioxus-web?/mounted"]
|
||||
file_engine = ["dioxus-web?/file_engine"]
|
||||
asset = ["dep:manganis", "dep:dioxus-asset-resolver"]
|
||||
document = ["dioxus-web?/document", "dep:dioxus-document", "dep:dioxus-history"]
|
||||
logger = ["dep:dioxus-logger"]
|
||||
@@ -84,9 +82,19 @@ launch = ["dep:dioxus-config-macro"]
|
||||
router = ["dep:dioxus-router"]
|
||||
|
||||
# Platforms
|
||||
fullstack = ["dep:dioxus-fullstack", "dioxus-config-macro/fullstack", "dep:serde"]
|
||||
desktop = ["dep:dioxus-desktop", "dioxus-fullstack?/desktop", "dioxus-config-macro/desktop"]
|
||||
mobile = ["dep:dioxus-desktop", "dioxus-fullstack?/mobile", "dioxus-config-macro/mobile"]
|
||||
fullstack = [
|
||||
"dep:dioxus-fullstack",
|
||||
"dioxus-config-macro/fullstack",
|
||||
"dep:serde",
|
||||
"dioxus-web?/document",
|
||||
"dioxus-web?/hydrate",
|
||||
"dioxus-server?/document",
|
||||
"dioxus-web?/devtools",
|
||||
"dioxus-web?/mounted",
|
||||
"dioxus-web?/document"
|
||||
]
|
||||
desktop = ["dep:dioxus-desktop", "dioxus-config-macro/desktop"]
|
||||
mobile = ["dep:dioxus-desktop", "dioxus-config-macro/mobile"]
|
||||
web = [
|
||||
"dep:dioxus-web",
|
||||
"dioxus-fullstack?/web",
|
||||
@@ -100,12 +108,10 @@ liveview = ["dep:dioxus-liveview", "dioxus-config-macro/liveview"]
|
||||
native = ["dep:dioxus-native"] # todo(jon): decompose the desktop crate such that "webview" is the default and native is opt-in
|
||||
server = [
|
||||
"dep:dioxus-server",
|
||||
"dep:dioxus_server_macro",
|
||||
"dioxus_server_macro/server",
|
||||
"dioxus_server_macro/axum",
|
||||
"dioxus-fullstack?/server",
|
||||
"dep:dioxus-fullstack-macro",
|
||||
"ssr",
|
||||
"dioxus-liveview?/axum",
|
||||
"dioxus-fullstack?/server",
|
||||
]
|
||||
|
||||
# This feature just disables the no-renderer-enabled warning
|
||||
|
||||
@@ -40,9 +40,12 @@ use crate::prelude::*;
|
||||
///
|
||||
/// # Example
|
||||
/// ```rust, no_run
|
||||
/// # use dioxus::prelude::*;
|
||||
/// use dioxus::prelude::*;
|
||||
///
|
||||
/// fn main() {
|
||||
/// dioxus::launch(app);
|
||||
/// }
|
||||
///
|
||||
/// dioxus::launch(app);
|
||||
/// fn app() -> Element {
|
||||
/// rsx! {
|
||||
/// div { "Hello, world!" }
|
||||
@@ -299,7 +302,7 @@ impl LaunchBuilder {
|
||||
// Set any flags if we're running under fullstack
|
||||
#[cfg(feature = "fullstack")]
|
||||
{
|
||||
use dioxus_fullstack::server_fn::client::{get_server_url, set_server_url};
|
||||
use dioxus_fullstack::{get_server_url, set_server_url};
|
||||
|
||||
// Make sure to set the server_fn endpoint if the user specified the fullstack feature
|
||||
// We only set this on native targets
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
pub use dioxus_core;
|
||||
#[doc(inline)]
|
||||
pub use dioxus_core::{CapturedError, Ok, Result};
|
||||
pub use dioxus_core::{CapturedError, Error, Ok, Result};
|
||||
|
||||
#[cfg(feature = "launch")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "launch")))]
|
||||
@@ -85,6 +85,9 @@ pub use dioxus_cli_config as cli_config;
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "server")))]
|
||||
pub use dioxus_server as server;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
pub use dioxus_server::serve;
|
||||
|
||||
#[cfg(feature = "devtools")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "devtools")))]
|
||||
pub use dioxus_devtools as devtools;
|
||||
@@ -158,7 +161,7 @@ pub mod prelude {
|
||||
#[cfg(feature = "signals")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "signals")))]
|
||||
#[doc(inline)]
|
||||
pub use dioxus_signals::*;
|
||||
pub use dioxus_signals::{self, *};
|
||||
|
||||
#[cfg(feature = "signals")]
|
||||
pub use dioxus_stores::{self, store, use_store, GlobalStore, ReadStore, Store, WriteStore};
|
||||
@@ -200,14 +203,16 @@ pub mod prelude {
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "fullstack")))]
|
||||
#[doc(inline)]
|
||||
pub use dioxus_fullstack::{
|
||||
server, server_fn, use_server_cached, use_server_future, ServerFnError, ServerFnResult,
|
||||
self as dioxus_fullstack, delete, get, patch, post, put, server, use_loader,
|
||||
use_server_cached, use_server_future, HttpError, OrHttpError, ServerFnError,
|
||||
ServerFnResult,
|
||||
};
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "server")))]
|
||||
#[doc(inline)]
|
||||
pub use dioxus_server::{
|
||||
extract, DioxusRouterExt, DioxusRouterFnExt, FromContext, ServeConfig,
|
||||
self, serve, DioxusRouterExt, DioxusRouterFnExt, ServeConfig, ServerFunction,
|
||||
};
|
||||
|
||||
#[cfg(feature = "router")]
|
||||
@@ -233,9 +238,12 @@ pub mod prelude {
|
||||
|
||||
#[doc(inline)]
|
||||
pub use dioxus_core::{
|
||||
consume_context, provide_context, spawn, suspend, try_consume_context, use_hook, Attribute,
|
||||
Callback, Component, Context, Element, ErrorBoundary, ErrorContext, Event, EventHandler,
|
||||
Fragment, HasAttributes, IntoDynNode, RenderError, ScopeId, SuspenseBoundary,
|
||||
SuspenseContext, SuspenseExtension, VNode, VirtualDom,
|
||||
consume_context, provide_context, spawn, suspend, try_consume_context, use_hook,
|
||||
AnyhowContext, Attribute, Callback, Component, Element, ErrorBoundary, ErrorContext, Event,
|
||||
EventHandler, Fragment, HasAttributes, IntoDynNode, RenderError, Result, ScopeId,
|
||||
SuspenseBoundary, SuspenseContext, VNode, VirtualDom,
|
||||
};
|
||||
|
||||
#[cfg(feature = "logger")]
|
||||
pub use dioxus_logger::tracing::{debug, error, info, trace, warn};
|
||||
}
|
||||
Reference in new issue
Block a user