Skip to content

Commit 70d425b

Browse files
committed
refactor!: restructured exports significantly
This has been needed for a long time, and should make the locations of things *much* more logical.
1 parent 6ec4852 commit 70d425b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+356
-530
lines changed

examples/core/custom_server/src/lib.rs

+2-25
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,15 @@ mod templates;
33

44
use perseus::{Html, PerseusApp};
55

6-
// pub fn get_app<G: Html>() -> PerseusApp<G> {
7-
// PerseusApp::new()
8-
// .template(crate::templates::index::get_template)
9-
// .template(crate::templates::about::get_template)
10-
// .error_pages(crate::error_pages::get_error_pages)
11-
// }
12-
13-
// #[perseus::engine_main]
14-
// async fn main() {
15-
// use perseus::builder::{get_op, run_dflt_engine};
16-
17-
// let op = get_op().unwrap();
18-
// let exit_code = run_dflt_engine(op, get_app,
19-
// perseus_warp::dflt_server).await; std::process::exit(exit_code);
20-
// }
21-
22-
// #[perseus::browser_main]
23-
// pub fn main() -> perseus::ClientReturn {
24-
// use perseus::run_client;
25-
26-
// run_client(get_app)
27-
// }
28-
296
// Note: we use fully-qualified paths in the types to this function so we don't
307
// have to target-gate some more imports
318
#[cfg(not(target_arch = "wasm32"))] // We only have access to `warp` etc. on the engine-side, so this function
329
// should only exist there
3310
pub async fn dflt_server<
3411
M: perseus::stores::MutableStore + 'static,
35-
T: perseus::internal::i18n::TranslationsManager + 'static,
12+
T: perseus::i18n::TranslationsManager + 'static,
3613
>(
37-
props: perseus::internal::serve::ServerProps<M, T>,
14+
props: perseus::server::ServerProps<M, T>,
3815
(host, port): (String, u16),
3916
) {
4017
use perseus_warp::perseus_routes;

examples/core/plugins/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ mod error_pages;
22
mod plugin;
33
mod templates;
44

5-
use perseus::{Html, PerseusApp, Plugins};
5+
use perseus::{plugins::Plugins, Html, PerseusApp};
66

77
#[perseus::main(perseus_integration::dflt_server)]
88
pub fn main<G: Html>() -> PerseusApp<G> {

examples/core/router_state/src/templates/index.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use perseus::{templates::RouterLoadState, Html, Template};
1+
use perseus::{router::RouterLoadState, Html, Template};
22
use sycamore::prelude::{create_memo, view, Scope, View};
33

44
#[perseus::template_rx]

examples/demos/fetching/src/templates/index.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub async fn get_build_state(
7373
// We'll cache the result with `try_cache_res`, which means we only make the
7474
// request once, and future builds will use the cached result (speeds up
7575
// development)
76-
let body = perseus::cache_fallible_res(
76+
let body = perseus::utils::cache_fallible_res(
7777
"ipify",
7878
|| async {
7979
// This just gets the IP address of the machine that built the app

packages/perseus-actix-web/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ sycamore = { version = "=0.8.0-beta.7", features = ["ssr"] }
2929

3030
[features]
3131
# Enables the default server configuration, which provides a convenience function if you're not adding any extra routes
32-
dflt-server = [ "perseus/builder" ]
32+
dflt-server = []

packages/perseus-actix-web/src/configurer.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ use crate::translations::translations;
44
use actix_files::{Files, NamedFile};
55
use actix_web::{web, HttpRequest};
66
use perseus::{
7-
internal::{
8-
i18n::TranslationsManager,
9-
serve::{get_render_cfg, ServerOptions, ServerProps},
10-
},
7+
i18n::TranslationsManager,
8+
server::{get_render_cfg, ServerOptions, ServerProps},
119
stores::MutableStore,
1210
};
1311

packages/perseus-actix-web/src/dflt_server.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use crate::configurer;
22
use actix_web::{App, HttpServer};
33
use futures::executor::block_on;
4-
use perseus::{
5-
internal::i18n::TranslationsManager, internal::serve::ServerProps, stores::MutableStore,
6-
};
4+
use perseus::{i18n::TranslationsManager, server::ServerProps, stores::MutableStore};
75

86
/// Creates and starts the default Perseus server using Actix Web. This should
97
/// be run in a `main()` function annotated with `#[tokio::main]` (which

packages/perseus-actix-web/src/initial_load.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ use actix_web::{http::StatusCode, web, HttpRequest, HttpResponse};
33
use fmterr::fmt_err;
44
use perseus::{
55
errors::err_to_status_code,
6-
internal::{
7-
get_path_prefix_server,
8-
i18n::{TranslationsManager, Translator},
9-
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
10-
serve::{
11-
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
12-
ServerOptions,
13-
},
6+
i18n::{TranslationsManager, Translator},
7+
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
8+
server::{
9+
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
10+
ServerOptions,
1411
},
1512
stores::{ImmutableStore, MutableStore},
13+
utils::get_path_prefix_server,
1614
ErrorPages, SsrNode,
1715
};
1816
use std::collections::HashMap;

packages/perseus-actix-web/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ mod translations;
2020
pub use crate::configurer::configurer;
2121
#[cfg(feature = "dflt-server")]
2222
pub use dflt_server::dflt_server;
23-
pub use perseus::internal::serve::ServerOptions;
23+
pub use perseus::server::ServerOptions;

packages/perseus-actix-web/src/page_data.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ use actix_web::{http::StatusCode, web, HttpRequest, HttpResponse};
33
use fmterr::fmt_err;
44
use perseus::{
55
errors::err_to_status_code,
6-
internal::{
7-
i18n::TranslationsManager,
8-
serve::{get_page_for_template, GetPageProps, ServerOptions},
9-
},
6+
i18n::TranslationsManager,
7+
server::{get_page_for_template, GetPageProps, ServerOptions},
108
stores::{ImmutableStore, MutableStore},
119
};
1210
use serde::Deserialize;

packages/perseus-actix-web/src/translations.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use actix_web::{web, HttpRequest, HttpResponse};
22
use fmterr::fmt_err;
3-
use perseus::internal::i18n::TranslationsManager;
4-
use perseus::internal::serve::ServerOptions;
3+
use perseus::i18n::TranslationsManager;
4+
use perseus::server::ServerOptions;
55

66
/// The handler for calls to `.perseus/translations/{locale}`. This will manage
77
/// returning errors and the like. THe JSON body returned from this does NOT

packages/perseus-axum/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ closure = "0.3"
2929

3030
[features]
3131
# Enables the default server configuration, which provides a convenience function if you're not adding any extra routes
32-
dflt-server = [ "perseus/builder" ]
32+
dflt-server = []

packages/perseus-axum/src/dflt_server.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::get_router;
22
use perseus::{
3-
internal::i18n::TranslationsManager, internal::serve::ServerProps, stores::MutableStore,
4-
PerseusAppBase, SsrNode,
3+
i18n::TranslationsManager, server::ServerProps, stores::MutableStore, PerseusAppBase, SsrNode,
54
};
65
use std::net::SocketAddr;
76

packages/perseus-axum/src/initial_load.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@ use axum::{
66
use fmterr::fmt_err;
77
use perseus::{
88
errors::err_to_status_code,
9-
internal::{
10-
get_path_prefix_server,
11-
i18n::{TranslationsManager, Translator},
12-
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
13-
serve::{
14-
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
15-
ServerOptions,
16-
},
9+
i18n::{TranslationsManager, Translator},
10+
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
11+
server::{
12+
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
13+
ServerOptions,
1714
},
1815
stores::{ImmutableStore, MutableStore},
16+
utils::get_path_prefix_server,
1917
ErrorPages, Request, SsrNode,
2018
};
2119
use std::{collections::HashMap, rc::Rc, sync::Arc};

packages/perseus-axum/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ mod translations;
2020
pub use crate::router::get_router;
2121
#[cfg(feature = "dflt-server")]
2222
pub use dflt_server::dflt_server;
23-
pub use perseus::internal::serve::ServerOptions;
23+
pub use perseus::server::ServerOptions;

packages/perseus-axum/src/page_data.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ use axum::{
66
use fmterr::fmt_err;
77
use perseus::{
88
errors::err_to_status_code,
9-
internal::{
10-
i18n::TranslationsManager,
11-
serve::{get_page_for_template, GetPageProps, ServerOptions},
12-
},
9+
i18n::TranslationsManager,
10+
server::{get_page_for_template, GetPageProps, ServerOptions},
1311
stores::{ImmutableStore, MutableStore},
1412
Request,
1513
};

packages/perseus-axum/src/router.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use axum::{
88
Router,
99
};
1010
use closure::closure;
11-
use perseus::internal::serve::{get_render_cfg, ServerProps};
12-
use perseus::{internal::i18n::TranslationsManager, stores::MutableStore};
11+
use perseus::server::{get_render_cfg, ServerProps};
12+
use perseus::{i18n::TranslationsManager, stores::MutableStore};
1313
use std::sync::Arc;
1414
use tower_http::services::{ServeDir, ServeFile};
1515

packages/perseus-axum/src/translations.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use axum::{extract::Path, http::StatusCode};
22
use fmterr::fmt_err;
3-
use perseus::internal::{i18n::TranslationsManager, serve::ServerOptions};
3+
use perseus::{i18n::TranslationsManager, server::ServerOptions};
44
use std::sync::Arc;
55

66
pub async fn translations_handler<T: TranslationsManager>(

packages/perseus-cli/src/cmd.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ pub fn run_cmd(
3939

4040
let exit_code = match output.status.code() {
4141
Some(exit_code) => exit_code, // If we have an exit code, use it
42-
None if output.status.success() => 0, /* If we don't, but we know the command succeeded,
43-
* return 0 (success code) */
42+
None if output.status.success() => 0, /* If we don't, but we know the command succeeded, */
43+
// return 0 (success code)
4444
None => 1, /* If we don't know an exit code but we know that the command failed, return 1
4545
* (general error code) */
4646
};
@@ -141,8 +141,8 @@ pub fn run_cmd_directly(
141141

142142
let exit_code = match output.status.code() {
143143
Some(exit_code) => exit_code, // If we have an exit code, use it
144-
None if output.status.success() => 0, /* If we don't, but we know the command succeeded,
145-
* return 0 (success code) */
144+
None if output.status.success() => 0, /* If we don't, but we know the command succeeded, */
145+
// return 0 (success code)
146146
None => 1, /* If we don't know an exit code but we know that the command failed, return 1
147147
* (general error code) */
148148
};

packages/perseus-cli/src/serve.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ fn run_server(
173173
let output = child.wait_with_output().unwrap();
174174
let exit_code = match output.status.code() {
175175
Some(exit_code) => exit_code, // If we have an exit code, use it
176-
None if output.status.success() => 0, /* If we don't, but we know the command succeeded,
177-
* return 0 (success code) */
176+
None if output.status.success() => 0, /* If we don't, but we know the command succeeded, */
177+
// return 0 (success code)
178178
None => 1, /* If we don't know an exit code but we know that the command failed, return 1
179179
* (general error code) */
180180
};

packages/perseus-macro/Cargo.toml

-6
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,3 @@ regex = "1"
3232
trybuild = { version = "1.0", features = ["diff"] }
3333
sycamore = "=0.8.0-beta.7"
3434
serde = { version = "1", features = [ "derive" ] }
35-
36-
[features]
37-
# Enables live reloading support (which makes the macros listen for live reload events and adjust appropriately). Do NOT enable this here without also enabling it on `perseus`!
38-
live-reload = []
39-
# Enables support for HSR (which makes the macros respond to live reload events by freezing and thawing as appropriate). Do NOT enable this here without also enabling is on `perseus`!
40-
hsr = [ "live-reload" ]

packages/perseus-macro/src/entrypoint.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ pub fn main_impl(input: MainFn, server_fn: Path) -> TokenStream {
174174
#[tokio::main]
175175
async fn main() {
176176
// Get the operation we're supposed to run (serve, build, export, etc.) from an environment variable
177-
let op = ::perseus::builder::get_op().unwrap();
178-
let exit_code = ::perseus::builder::run_dflt_engine(op, __perseus_simple_main, #server_fn).await;
177+
let op = ::perseus::engine::get_op().unwrap();
178+
let exit_code = ::perseus::engine::run_dflt_engine(op, __perseus_simple_main, #server_fn).await;
179179
std::process::exit(exit_code);
180180
}
181181

@@ -213,8 +213,8 @@ pub fn main_export_impl(input: MainFn) -> TokenStream {
213213
#[tokio::main]
214214
async fn main() {
215215
// Get the operation we're supposed to run (serve, build, export, etc.) from an environment variable
216-
let op = ::perseus::builder::get_op().unwrap();
217-
let exit_code = ::perseus::builder::run_dflt_engine_export_only(op, __perseus_simple_main).await;
216+
let op = ::perseus::engine::get_op().unwrap();
217+
let exit_code = ::perseus::engine::run_dflt_engine_export_only(op, __perseus_simple_main).await;
218218
std::process::exit(exit_code);
219219
}
220220

packages/perseus-macro/src/head.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ pub fn head_impl(input: HeadFn) -> TokenStream {
142142
#[cfg(target_arch = "wasm32")]
143143
#vis fn #name() {}
144144
#[cfg(not(target_arch = "wasm32"))]
145-
#vis fn #name(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<::sycamore::prelude::SsrNode> {
145+
#vis fn #name(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<::sycamore::prelude::SsrNode> {
146146
// The user's function, with Sycamore component annotations and the like preserved
147147
// We know this won't be async because Sycamore doesn't allow that
148148
#(#attrs)*
@@ -163,7 +163,7 @@ pub fn head_impl(input: HeadFn) -> TokenStream {
163163
#[cfg(target_arch = "wasm32")]
164164
#vis fn #name() {}
165165
#[cfg(not(target_arch = "wasm32"))]
166-
#vis fn #name(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<::sycamore::prelude::SsrNode> {
166+
#vis fn #name(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<::sycamore::prelude::SsrNode> {
167167
// The user's function, with Sycamore component annotations and the like preserved
168168
// We know this won't be async because Sycamore doesn't allow that
169169
#(#attrs)*

packages/perseus-macro/src/template.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
123123
let arg = &args[1];
124124

125125
quote! {
126-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
126+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
127127
// The user's function, with Sycamore component annotations and the like preserved
128128
// We know this won't be async because Sycamore doesn't allow that
129129
#(#attrs)*
@@ -142,7 +142,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
142142
let cx_arg = &args[0];
143143

144144
quote! {
145-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
145+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
146146
// The user's function, with Sycamore component annotations and the like preserved
147147
// We know this won't be async because Sycamore doesn't allow that
148148
#(#attrs)*

packages/perseus-macro/src/template_rx.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
173173
match rx_props_ty {
174174
// This template takes dummy state and global state
175175
Type::Tuple(TypeTuple { elems, .. }) if elems.is_empty() => quote! {
176-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
176+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
177177
use ::perseus::state::MakeRx;
178178

179179
let render_ctx = ::perseus::get_render_ctx!(cx);
@@ -207,7 +207,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
207207
},
208208
// This template takes its own state and global state
209209
_ => quote! {
210-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
210+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
211211
use ::perseus::state::MakeRx;
212212

213213
let render_ctx = ::perseus::get_render_ctx!(cx).clone();
@@ -269,7 +269,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
269269
};
270270
let name_string = name.to_string();
271271
quote! {
272-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
272+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
273273
use ::perseus::state::MakeRx;
274274

275275
// The user's function, with Sycamore component annotations and the like preserved
@@ -305,7 +305,7 @@ pub fn template_impl(input: TemplateFn) -> TokenStream {
305305
let cx_arg = &fn_args[0];
306306
// There are no arguments except for the scope
307307
quote! {
308-
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::templates::PageProps) -> ::sycamore::prelude::View<G> {
308+
#vis fn #name<G: ::sycamore::prelude::Html>(cx: ::sycamore::prelude::Scope, props: ::perseus::template::PageProps) -> ::sycamore::prelude::View<G> {
309309
use ::perseus::state::MakeRx;
310310

311311
// The user's function, with Sycamore component annotations and the like preserved

packages/perseus-warp/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ sycamore = { version = "=0.8.0-beta.7", features = ["ssr"] }
2727

2828
[features]
2929
# Enables the default server configuration, which provides a convenience function if you're not adding any extra routes
30-
dflt-server = [ "perseus/builder" ]
30+
dflt-server = []

packages/perseus-warp/src/dflt_server.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use crate::perseus_routes;
2-
use perseus::{
3-
internal::{i18n::TranslationsManager, serve::ServerProps},
4-
stores::MutableStore,
5-
};
2+
use perseus::{i18n::TranslationsManager, server::ServerProps, stores::MutableStore};
63
use std::net::SocketAddr;
74

85
/// Creates and starts the default Perseus server with Warp. This should be run

packages/perseus-warp/src/initial_load.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
use fmterr::fmt_err;
22
use perseus::{
33
errors::err_to_status_code,
4-
internal::{
5-
get_path_prefix_server,
6-
i18n::{TranslationsManager, Translator},
7-
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
8-
serve::{
9-
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
10-
ServerOptions,
11-
},
4+
i18n::{TranslationsManager, Translator},
5+
router::{match_route_atomic, RouteInfoAtomic, RouteVerdictAtomic},
6+
server::{
7+
build_error_page, get_page_for_template, get_path_slice, GetPageProps, HtmlShell,
8+
ServerOptions,
129
},
1310
stores::{ImmutableStore, MutableStore},
11+
utils::get_path_prefix_server,
1412
ErrorPages, SsrNode,
1513
};
1614
use std::{collections::HashMap, rc::Rc, sync::Arc};

0 commit comments

Comments
 (0)