From ded3566fc046312b10b13c90467278b522129161 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Thu, 1 Dec 2022 13:51:58 +0800 Subject: [PATCH] Split turbopack-node from next-core (#2874) --- Cargo.lock | 31 ++++++++++++++----- Cargo.toml | 1 + crates/next-core/Cargo.toml | 8 +---- crates/next-core/src/app_source.rs | 10 +++--- crates/next-core/src/lib.rs | 5 ++- .../next-core/src/server_rendered_source.rs | 10 +++--- crates/next-core/src/util.rs | 3 +- crates/turbopack-node/Cargo.toml | 31 +++++++++++++++++++ crates/turbopack-node/build.rs | 5 +++ .../src}/bootstrap.rs | 0 .../nodejs => turbopack-node/src}/issue.rs | 0 .../mod.rs => turbopack-node/src/lib.rs} | 29 ++++++++++++----- .../src}/node_api_source.rs | 0 .../src}/node_entry.rs | 0 .../src}/node_rendered_source.rs | 0 .../src/path_regex.rs | 0 .../src/nodejs => turbopack-node/src}/pool.rs | 0 .../src/source_map/content_source.rs | 0 .../src/source_map/mod.rs | 0 .../src/source_map/trace.rs | 0 20 files changed, 96 insertions(+), 37 deletions(-) create mode 100644 crates/turbopack-node/Cargo.toml create mode 100644 crates/turbopack-node/build.rs rename crates/{next-core/src/nodejs => turbopack-node/src}/bootstrap.rs (100%) rename crates/{next-core/src/nodejs => turbopack-node/src}/issue.rs (100%) rename crates/{next-core/src/nodejs/mod.rs => turbopack-node/src/lib.rs} (97%) rename crates/{next-core/src/nodejs => turbopack-node/src}/node_api_source.rs (100%) rename crates/{next-core/src/nodejs => turbopack-node/src}/node_entry.rs (100%) rename crates/{next-core/src/nodejs => turbopack-node/src}/node_rendered_source.rs (100%) rename crates/{next-core => turbopack-node}/src/path_regex.rs (100%) rename crates/{next-core/src/nodejs => turbopack-node/src}/pool.rs (100%) rename crates/{next-core => turbopack-node}/src/source_map/content_source.rs (100%) rename crates/{next-core => turbopack-node}/src/source_map/mod.rs (100%) rename crates/{next-core => turbopack-node}/src/source_map/trace.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 2c04b26ada2a4..0dd55a7e20452 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2912,15 +2912,9 @@ name = "next-core" version = "0.1.0" dependencies = [ "anyhow", - "futures", - "indexmap", - "mime", "rand", - "regex", "serde", "serde_json", - "serde_qs", - "sourcemap", "tokio", "turbo-tasks", "turbo-tasks-build", @@ -2932,7 +2926,7 @@ dependencies = [ "turbopack-dev-server", "turbopack-ecmascript", "turbopack-env", - "url", + "turbopack-node", ] [[package]] @@ -6736,6 +6730,29 @@ dependencies = [ "turbopack-ecmascript", ] +[[package]] +name = "turbopack-node" +version = "0.1.0" +dependencies = [ + "anyhow", + "futures", + "indexmap", + "mime", + "regex", + "serde", + "serde_json", + "serde_qs", + "tokio", + "turbo-tasks", + "turbo-tasks-build", + "turbo-tasks-fs", + "turbopack", + "turbopack-core", + "turbopack-dev-server", + "turbopack-ecmascript", + "url", +] + [[package]] name = "turbopack-static" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 104eb4957dc97..e8e92b649f971 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ members = [ "crates/turbopack-dev-server", "crates/turbopack-ecmascript", "crates/turbopack-env", + "crates/turbopack-node", "crates/turbopack-json", "crates/turbopack-static", "crates/turbopack-swc-utils", diff --git a/crates/next-core/Cargo.toml b/crates/next-core/Cargo.toml index ae931ddc1b953..18efa9083fb9c 100644 --- a/crates/next-core/Cargo.toml +++ b/crates/next-core/Cargo.toml @@ -10,15 +10,9 @@ bench = false [dependencies] anyhow = "1.0.47" -futures = "0.3.21" -indexmap = { workspace = true, features = ["serde"] } -mime = "0.3.16" rand = "0.8.5" -regex = "1.6.0" serde = "1.0.136" serde_json = "1.0.85" -serde_qs = "0.10.1" -sourcemap = "6.0.1" tokio = { version = "1.21.2", features = ["full"] } turbo-tasks = { path = "../turbo-tasks" } turbo-tasks-env = { path = "../turbo-tasks-env" } @@ -29,7 +23,7 @@ turbopack-core = { path = "../turbopack-core" } turbopack-dev-server = { path = "../turbopack-dev-server" } turbopack-ecmascript = { path = "../turbopack-ecmascript" } turbopack-env = { path = "../turbopack-env" } -url = "2.2.2" +turbopack-node = { path = "../turbopack-node" } [build-dependencies] turbo-tasks-build = { path = "../turbo-tasks-build" } diff --git a/crates/next-core/src/app_source.rs b/crates/next-core/src/app_source.rs index f4a79a1fa0e05..4016c5f7d3978 100644 --- a/crates/next-core/src/app_source.rs +++ b/crates/next-core/src/app_source.rs @@ -37,6 +37,11 @@ use turbopack_ecmascript::{ EcmascriptInputTransformsVc, EcmascriptModuleAssetType, EcmascriptModuleAssetVc, }; use turbopack_env::ProcessEnvAssetVc; +use turbopack_node::{ + create_node_rendered_source, + node_entry::{NodeRenderingEntry, NodeRenderingEntryVc}, + NodeEntry, NodeEntryVc, +}; use crate::{ app_render::{ @@ -60,11 +65,6 @@ use crate::{ get_server_environment, get_server_module_options_context, get_server_resolve_options_context, ServerContextType, }, - nodejs::{ - create_node_rendered_source, - node_entry::{NodeRenderingEntry, NodeRenderingEntryVc}, - NodeEntry, NodeEntryVc, - }, util::regular_expression_for_path, }; diff --git a/crates/next-core/src/lib.rs b/crates/next-core/src/lib.rs index 51e22652598db..21cb2b690942a 100644 --- a/crates/next-core/src/lib.rs +++ b/crates/next-core/src/lib.rs @@ -10,17 +10,15 @@ pub mod next_client; mod next_client_component; mod next_import_map; pub mod next_server; -mod nodejs; -mod path_regex; pub mod react_refresh; mod runtime; mod server_rendered_source; -pub mod source_map; mod util; mod web_entry_source; pub use app_source::create_app_source; pub use server_rendered_source::create_server_rendered_source; +pub use turbopack_node::source_map; pub use web_entry_source::create_web_entry_source; pub fn register() { @@ -28,5 +26,6 @@ pub fn register() { turbo_tasks_fs::register(); turbopack_dev_server::register(); turbopack::register(); + turbopack_node::register(); include!(concat!(env!("OUT_DIR"), "/register.rs")); } diff --git a/crates/next-core/src/server_rendered_source.rs b/crates/next-core/src/server_rendered_source.rs index c709846549898..d481f47d8d9be 100644 --- a/crates/next-core/src/server_rendered_source.rs +++ b/crates/next-core/src/server_rendered_source.rs @@ -29,6 +29,11 @@ use turbopack_ecmascript::{ EcmascriptModuleAssetType, EcmascriptModuleAssetVc, }; use turbopack_env::ProcessEnvAssetVc; +use turbopack_node::{ + create_node_api_source, create_node_rendered_source, + node_entry::{NodeRenderingEntry, NodeRenderingEntryVc}, + NodeEntry, NodeEntryVc, +}; use crate::{ embed_js::{next_js_file, wrap_with_next_js_fs}, @@ -45,11 +50,6 @@ use crate::{ get_server_environment, get_server_module_options_context, get_server_resolve_options_context, ServerContextType, }, - nodejs::{ - create_node_api_source, create_node_rendered_source, - node_entry::{NodeRenderingEntry, NodeRenderingEntryVc}, - NodeEntry, NodeEntryVc, - }, util::regular_expression_for_path, }; diff --git a/crates/next-core/src/util.rs b/crates/next-core/src/util.rs index 0b62982a01123..2496147979aa2 100644 --- a/crates/next-core/src/util.rs +++ b/crates/next-core/src/util.rs @@ -1,8 +1,7 @@ use anyhow::{anyhow, bail, Result}; use turbo_tasks::ValueToString; use turbo_tasks_fs::FileSystemPathVc; - -use crate::path_regex::{PathRegexBuilder, PathRegexVc}; +use turbopack_node::path_regex::{PathRegexBuilder, PathRegexVc}; /// Converts a filename within the server root to a regular expression with /// named capture groups for every dynamic segment. diff --git a/crates/turbopack-node/Cargo.toml b/crates/turbopack-node/Cargo.toml new file mode 100644 index 0000000000000..6fa06b89814f4 --- /dev/null +++ b/crates/turbopack-node/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "turbopack-node" +version = "0.1.0" +description = "TBD" +license = "MPL-2.0" +edition = "2021" +autobenches = false + +[lib] +bench = false + +[dependencies] +anyhow = "1.0.47" +futures = "0.3.21" +indexmap = { workspace = true, features = ["serde"] } +mime = "0.3.16" +regex = "1.6.0" +serde = "1.0.136" +serde_json = "1.0.85" +serde_qs = "0.10.1" +tokio = { version = "1.21.2", features = ["full"] } +turbo-tasks = { path = "../turbo-tasks" } +turbo-tasks-fs = { path = "../turbo-tasks-fs" } +turbopack = { path = "../turbopack" } +turbopack-core = { path = "../turbopack-core" } +turbopack-dev-server = { path = "../turbopack-dev-server" } +turbopack-ecmascript = { path = "../turbopack-ecmascript" } +url = "2.2.2" + +[build-dependencies] +turbo-tasks-build = { path = "../turbo-tasks-build" } diff --git a/crates/turbopack-node/build.rs b/crates/turbopack-node/build.rs new file mode 100644 index 0000000000000..1673efed59cce --- /dev/null +++ b/crates/turbopack-node/build.rs @@ -0,0 +1,5 @@ +use turbo_tasks_build::generate_register; + +fn main() { + generate_register(); +} diff --git a/crates/next-core/src/nodejs/bootstrap.rs b/crates/turbopack-node/src/bootstrap.rs similarity index 100% rename from crates/next-core/src/nodejs/bootstrap.rs rename to crates/turbopack-node/src/bootstrap.rs diff --git a/crates/next-core/src/nodejs/issue.rs b/crates/turbopack-node/src/issue.rs similarity index 100% rename from crates/next-core/src/nodejs/issue.rs rename to crates/turbopack-node/src/issue.rs diff --git a/crates/next-core/src/nodejs/mod.rs b/crates/turbopack-node/src/lib.rs similarity index 97% rename from crates/next-core/src/nodejs/mod.rs rename to crates/turbopack-node/src/lib.rs index 10b7642a57976..b0083f2fa2c38 100644 --- a/crates/next-core/src/nodejs/mod.rs +++ b/crates/turbopack-node/src/lib.rs @@ -1,3 +1,6 @@ +#![feature(async_closure)] +#![feature(min_specialization)] + use std::{ collections::{BTreeMap, HashMap, HashSet}, fmt::Write as _, @@ -33,12 +36,14 @@ use self::{ }; use crate::source_map::{SourceMapTraceVc, StackFrame, TraceResult}; -pub(crate) mod bootstrap; -pub(crate) mod issue; -pub(crate) mod node_api_source; -pub(crate) mod node_entry; -pub(crate) mod node_rendered_source; -pub(crate) mod pool; +pub mod bootstrap; +pub mod issue; +pub mod node_api_source; +pub mod node_entry; +pub mod node_rendered_source; +pub mod path_regex; +pub mod pool; +pub mod source_map; #[turbo_tasks::function] async fn emit( @@ -229,7 +234,7 @@ pub async fn get_intermediate_asset( } #[turbo_tasks::value(shared)] -pub(super) struct RenderData { +pub struct RenderData { params: IndexMap, method: String, url: String, @@ -451,7 +456,7 @@ async fn trace_stack( } #[turbo_tasks::value(shared)] -pub(super) struct ResponseHeaders { +pub struct ResponseHeaders { status: u16, headers: Vec, } @@ -614,3 +619,11 @@ async fn proxy_error( } .cell()) } + +pub fn register() { + turbo_tasks::register(); + turbo_tasks_fs::register(); + turbopack_dev_server::register(); + turbopack::register(); + include!(concat!(env!("OUT_DIR"), "/register.rs")); +} diff --git a/crates/next-core/src/nodejs/node_api_source.rs b/crates/turbopack-node/src/node_api_source.rs similarity index 100% rename from crates/next-core/src/nodejs/node_api_source.rs rename to crates/turbopack-node/src/node_api_source.rs diff --git a/crates/next-core/src/nodejs/node_entry.rs b/crates/turbopack-node/src/node_entry.rs similarity index 100% rename from crates/next-core/src/nodejs/node_entry.rs rename to crates/turbopack-node/src/node_entry.rs diff --git a/crates/next-core/src/nodejs/node_rendered_source.rs b/crates/turbopack-node/src/node_rendered_source.rs similarity index 100% rename from crates/next-core/src/nodejs/node_rendered_source.rs rename to crates/turbopack-node/src/node_rendered_source.rs diff --git a/crates/next-core/src/path_regex.rs b/crates/turbopack-node/src/path_regex.rs similarity index 100% rename from crates/next-core/src/path_regex.rs rename to crates/turbopack-node/src/path_regex.rs diff --git a/crates/next-core/src/nodejs/pool.rs b/crates/turbopack-node/src/pool.rs similarity index 100% rename from crates/next-core/src/nodejs/pool.rs rename to crates/turbopack-node/src/pool.rs diff --git a/crates/next-core/src/source_map/content_source.rs b/crates/turbopack-node/src/source_map/content_source.rs similarity index 100% rename from crates/next-core/src/source_map/content_source.rs rename to crates/turbopack-node/src/source_map/content_source.rs diff --git a/crates/next-core/src/source_map/mod.rs b/crates/turbopack-node/src/source_map/mod.rs similarity index 100% rename from crates/next-core/src/source_map/mod.rs rename to crates/turbopack-node/src/source_map/mod.rs diff --git a/crates/next-core/src/source_map/trace.rs b/crates/turbopack-node/src/source_map/trace.rs similarity index 100% rename from crates/next-core/src/source_map/trace.rs rename to crates/turbopack-node/src/source_map/trace.rs