diff --git a/Cargo.lock b/Cargo.lock index 1c6e6b6ba49b..b4294c67bc57 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6542,15 +6542,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_test" -version = "1.0.177" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f901ee573cab6b3060453d2d5f0bae4e6d628c23c0a962ff9b5f1d7c8d4f1ed" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -9124,8 +9115,6 @@ dependencies = [ "bincode 2.0.1", "regex", "regress", - "serde", - "serde_json", "turbo-tasks", ] @@ -9325,8 +9314,6 @@ dependencies = [ "bytes", "futures", "serde", - "serde_bytes", - "serde_test", "turbo-tasks", ] @@ -9385,7 +9372,6 @@ dependencies = [ "rstest", "rustc-hash 2.1.1", "serde", - "serde_bytes", "serde_json", "serde_path_to_error", "sha2", @@ -9665,7 +9651,6 @@ dependencies = [ "rstest", "rustc-hash 2.1.1", "serde", - "serde_bytes", "serde_json", "smallvec", "swc_core", diff --git a/Cargo.toml b/Cargo.toml index d802ae61f761..eb39a1f6b900 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -448,7 +448,6 @@ rstest = "0.16.0" rustc-hash = "2.1.1" semver = "1.0.16" serde = { version = "1.0.217", features = ["derive"] } -serde_bytes = "0.11.15" serde_json = "1.0.138" serde_path_to_error = "0.1.16" serde_qs = "0.13.0" diff --git a/crates/napi/src/minify.rs b/crates/napi/src/minify.rs index 0049d6a0d859..b44f39f4a5a0 100644 --- a/crates/napi/src/minify.rs +++ b/crates/napi/src/minify.rs @@ -29,7 +29,6 @@ DEALINGS IN THE SOFTWARE. use anyhow::Context; use napi::bindgen_prelude::*; use napi_derive::napi; -use serde::Serialize; use swc_core::{ base::{config::JsMinifyOptions, try_with_handler}, common::{FileName, GLOBALS, errors::ColorConfig}, @@ -46,13 +45,11 @@ pub struct MinifyTask { // Same as the swc_core::base::TransformOutput, but using our napi-rs v2's derived #[napi], while // swc is already on napi-rs v3. #[napi_derive::napi(object)] -#[derive(Debug, Serialize)] +#[derive(Debug)] pub struct TransformOutput { pub code: String, - #[serde(skip_serializing_if = "Option::is_none")] pub map: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub output: Option, pub diagnostics: std::vec::Vec, } diff --git a/crates/napi/src/next_api/project.rs b/crates/napi/src/next_api/project.rs index 8072d62ebebe..bc052b877554 100644 --- a/crates/napi/src/next_api/project.rs +++ b/crates/napi/src/next_api/project.rs @@ -30,7 +30,7 @@ use next_core::tracing_presets::{ }; use once_cell::sync::Lazy; use rand::Rng; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use tokio::{io::AsyncWriteExt, runtime::Handle, time::Instant}; use tracing::Instrument; use tracing_subscriber::{Registry, layer::SubscriberExt, util::SubscriberInitExt}; @@ -1520,13 +1520,11 @@ pub fn project_compilation_events_subscribe( #[derive( Clone, Debug, - Deserialize, Eq, Hash, NonLocalValue, OperationValue, PartialEq, - Serialize, TaskInput, TraceRawVcs, Encode, diff --git a/crates/next-api/src/analyze.rs b/crates/next-api/src/analyze.rs index 37082a41b747..7fd7b1354ecc 100644 --- a/crates/next-api/src/analyze.rs +++ b/crates/next-api/src/analyze.rs @@ -3,12 +3,9 @@ use std::{borrow::Cow, io::Write}; use anyhow::Result; use byteorder::{BE, WriteBytesExt}; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use turbo_rcstr::RcStr; -use turbo_tasks::{ - FxIndexSet, NonLocalValue, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, ValueToString, Vc, - trace::TraceRawVcs, -}; +use turbo_tasks::{FxIndexSet, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, ValueToString, Vc}; use turbo_tasks_fs::{ File, FileContent, FileSystemPath, rope::{Rope, RopeBuilder}, @@ -25,9 +22,6 @@ use turbopack_core::{ use crate::route::ModuleGraphs; -#[derive( - Default, Clone, Debug, Deserialize, Eq, NonLocalValue, PartialEq, Serialize, TraceRawVcs, -)] pub struct EdgesData { pub offsets: Vec, pub data: Vec, diff --git a/crates/next-api/src/app.rs b/crates/next-api/src/app.rs index 06c06dbe24d5..4f2a4346a821 100644 --- a/crates/next-api/src/app.rs +++ b/crates/next-api/src/app.rs @@ -69,10 +69,8 @@ use turbopack_core::{ source_map::SourceMapAsset, virtual_output::VirtualOutputAsset, }; -use turbopack_ecmascript::{ - resolve::cjs_resolve, single_file_ecmascript_output::SingleFileEcmascriptOutput, -}; -use turbopack_resolve::resolve_options_context::ResolveOptionsContext; +use turbopack_ecmascript::single_file_ecmascript_output::SingleFileEcmascriptOutput; +use turbopack_resolve::{ecmascript::cjs_resolve, resolve_options_context::ResolveOptionsContext}; use crate::{ dynamic_imports::{NextDynamicChunkAvailability, collect_next_dynamic_chunks}, diff --git a/crates/next-api/src/client_references.rs b/crates/next-api/src/client_references.rs index 1d1f5dc84bd7..f37d22296750 100644 --- a/crates/next-api/src/client_references.rs +++ b/crates/next-api/src/client_references.rs @@ -5,7 +5,6 @@ use next_core::{ next_server_component::server_component_module::NextServerComponentModule, }; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; use turbo_tasks::{ NonLocalValue, ResolvedVc, TryFlatJoinIterExt, Vc, debug::ValueDebugFormat, trace::TraceRawVcs, }; @@ -13,17 +12,7 @@ use turbopack_core::{module::Module, module_graph::SingleModuleGraph}; use turbopack_css::chunk::CssChunkPlaceable; #[derive( - Copy, - Clone, - Serialize, - Deserialize, - Eq, - PartialEq, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, + Copy, Clone, Eq, PartialEq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Encode, Decode, )] pub enum ClientManifestEntryType { EcmascriptClientReference { diff --git a/crates/next-api/src/dynamic_imports.rs b/crates/next-api/src/dynamic_imports.rs index 42cc6be791f2..de4e53480d4a 100644 --- a/crates/next-api/src/dynamic_imports.rs +++ b/crates/next-api/src/dynamic_imports.rs @@ -25,7 +25,6 @@ use next_core::{ next_app::ClientReferencesChunks, next_client_reference::EcmascriptClientReferenceModule, next_dynamic::NextDynamicEntryModule, }; -use serde::{Deserialize, Serialize}; use turbo_tasks::{ FxIndexMap, NonLocalValue, ReadRef, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, Vc, debug::ValueDebugFormat, trace::TraceRawVcs, @@ -110,18 +109,7 @@ pub struct DynamicImportedChunks( >, ); -#[derive( - Clone, - PartialEq, - Eq, - ValueDebugFormat, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Clone, PartialEq, Eq, ValueDebugFormat, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum DynamicImportEntriesMapType { DynamicEntry(ResolvedVc), ClientReference(ResolvedVc), diff --git a/crates/next-api/src/next_server_nft.rs b/crates/next-api/src/next_server_nft.rs index f201bf4d7a3c..30c5749a2d6b 100644 --- a/crates/next-api/src/next_server_nft.rs +++ b/crates/next-api/src/next_server_nft.rs @@ -4,7 +4,6 @@ use anyhow::{Context, Result, bail}; use bincode::{Decode, Encode}; use either::Either; use next_core::{get_next_package, next_server::get_tracing_compile_time_info}; -use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; use turbo_rcstr::RcStr; use turbo_tasks::{ @@ -24,7 +23,7 @@ use turbopack_core::{ resolve::{origin::PlainResolveOrigin, parse::Request}, traced_asset::TracedAsset, }; -use turbopack_ecmascript::resolve::cjs_resolve; +use turbopack_resolve::ecmascript::cjs_resolve; use crate::{ nft_json::{all_assets_from_entries_filtered, relativize_glob}, @@ -32,18 +31,7 @@ use crate::{ }; #[derive( - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Deserialize, - Serialize, - Debug, - Clone, - Hash, - TaskInput, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, NonLocalValue, Debug, Clone, Hash, TaskInput, Encode, Decode, )] enum ServerNftType { Minimal, diff --git a/crates/next-api/src/operation.rs b/crates/next-api/src/operation.rs index 69db45d68927..a72636d6de23 100644 --- a/crates/next-api/src/operation.rs +++ b/crates/next-api/src/operation.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ CollectiblesSource, FxIndexMap, NonLocalValue, OperationValue, OperationVc, ResolvedVc, @@ -114,8 +113,6 @@ fn pick_route(entrypoints: OperationVc, key: RcStr, route: &Route) Debug, Clone, TaskInput, - Serialize, - Deserialize, TraceRawVcs, PartialEq, Eq, @@ -208,33 +205,13 @@ async fn pick_endpoint( Ok(Vc::cell(endpoint)) } -#[derive( - Serialize, - Deserialize, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, PartialEq, Eq, ValueDebugFormat, NonLocalValue, Encode, Decode)] pub struct InstrumentationOperation { pub node_js: OperationVc, pub edge: OperationVc, } -#[derive( - Serialize, - Deserialize, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, PartialEq, Eq, ValueDebugFormat, NonLocalValue, Encode, Decode)] pub struct MiddlewareOperation { pub endpoint: OperationVc, pub is_proxy: bool, @@ -259,17 +236,7 @@ pub enum RouteOperation { } #[derive( - TraceRawVcs, - Serialize, - Deserialize, - PartialEq, - Eq, - ValueDebugFormat, - Clone, - Debug, - NonLocalValue, - Encode, - Decode, + TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Clone, Debug, NonLocalValue, Encode, Decode, )] pub struct AppPageRouteOperation { pub original_name: RcStr, diff --git a/crates/next-api/src/pages.rs b/crates/next-api/src/pages.rs index b22e209135fa..3b057ba0f66d 100644 --- a/crates/next-api/src/pages.rs +++ b/crates/next-api/src/pages.rs @@ -27,7 +27,6 @@ use next_core::{ segment_config::ParseSegmentMode, util::{NextRuntime, get_asset_prefix_from_pathname, pages_function_name}, }; -use serde::{Deserialize, Serialize}; use tracing::Instrument; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -64,9 +63,8 @@ use turbopack_core::{ source::Source, virtual_output::VirtualOutputAsset, }; -use turbopack_ecmascript::resolve::esm_resolve; use turbopack_nodejs::NodeJsChunkingContext; -use turbopack_resolve::resolve_options_context::ResolveOptionsContext; +use turbopack_resolve::{ecmascript::esm_resolve, resolve_options_context::ResolveOptionsContext}; use crate::{ dynamic_imports::{ @@ -587,19 +585,7 @@ struct PageEndpoint { } #[derive( - Copy, - Clone, - Serialize, - Deserialize, - PartialEq, - Eq, - Hash, - Debug, - TaskInput, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Copy, Clone, PartialEq, Eq, Hash, Debug, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] enum PageEndpointType { Api, @@ -611,40 +597,14 @@ enum PageEndpointType { SsrOnly, } -#[derive( - Copy, - Clone, - Serialize, - Deserialize, - PartialEq, - Eq, - Hash, - Debug, - TaskInput, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, TaskInput, TraceRawVcs, Encode, Decode)] enum SsrChunkType { Page, Data, Api, } -#[derive( - Copy, - Clone, - Debug, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TaskInput, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, Encode, Decode)] enum EmitManifests { /// Don't emit any manifests None, diff --git a/crates/next-api/src/project.rs b/crates/next-api/src/project.rs index d686ee592944..e6bbfb73d741 100644 --- a/crates/next-api/src/project.rs +++ b/crates/next-api/src/project.rs @@ -276,33 +276,13 @@ pub struct DefineEnv { pub nodejs: Vec<(RcStr, Option)>, } -#[derive( - Serialize, - Deserialize, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, PartialEq, Eq, ValueDebugFormat, NonLocalValue, Encode, Decode)] pub struct Middleware { pub endpoint: ResolvedVc>, pub is_proxy: bool, } -#[derive( - Serialize, - Deserialize, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, PartialEq, Eq, ValueDebugFormat, NonLocalValue, Encode, Decode)] pub struct Instrumentation { pub node_js: ResolvedVc>, pub edge: ResolvedVc>, diff --git a/crates/next-api/src/route.rs b/crates/next-api/src/route.rs index 3fcebe19f5f9..b82e806c7e4a 100644 --- a/crates/next-api/src/route.rs +++ b/crates/next-api/src/route.rs @@ -2,7 +2,6 @@ use std::fmt::Display; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ Completion, FxIndexMap, FxIndexSet, NonLocalValue, OperationVc, ResolvedVc, TryFlatJoinIterExt, @@ -16,17 +15,7 @@ use turbopack_core::{ use crate::{operation::OptionEndpoint, paths::ServerPath, project::Project}; #[derive( - TraceRawVcs, - Serialize, - Deserialize, - PartialEq, - Eq, - ValueDebugFormat, - Clone, - Debug, - NonLocalValue, - Encode, - Decode, + TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Clone, Debug, NonLocalValue, Encode, Decode, )] pub struct AppPageRoute { pub original_name: RcStr, @@ -78,17 +67,7 @@ pub trait Endpoint { } #[derive( - TraceRawVcs, - Serialize, - Deserialize, - PartialEq, - Eq, - ValueDebugFormat, - Clone, - Debug, - NonLocalValue, - Encode, - Decode, + TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Clone, Debug, NonLocalValue, Encode, Decode, )] pub enum EndpointGroupKey { Instrumentation, @@ -129,17 +108,7 @@ impl Display for EndpointGroupKey { } #[derive( - TraceRawVcs, - Serialize, - Deserialize, - PartialEq, - Eq, - ValueDebugFormat, - Clone, - Debug, - NonLocalValue, - Encode, - Decode, + TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Clone, Debug, NonLocalValue, Encode, Decode, )] pub struct EndpointGroupEntry { pub endpoint: ResolvedVc>, @@ -147,17 +116,7 @@ pub struct EndpointGroupEntry { } #[derive( - TraceRawVcs, - Serialize, - Deserialize, - PartialEq, - Eq, - ValueDebugFormat, - Clone, - Debug, - NonLocalValue, - Encode, - Decode, + TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Clone, Debug, NonLocalValue, Encode, Decode, )] pub struct EndpointGroup { pub primary: Vec, diff --git a/crates/next-core/src/next_app/mod.rs b/crates/next-core/src/next_app/mod.rs index b804fe2e78e9..db14172938e4 100644 --- a/crates/next-core/src/next_app/mod.rs +++ b/crates/next-core/src/next_app/mod.rs @@ -13,7 +13,6 @@ use std::{ use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; @@ -30,8 +29,6 @@ pub use crate::next_app::{ Clone, Debug, Hash, - Serialize, - Deserialize, PartialEq, Eq, PartialOrd, @@ -137,8 +134,6 @@ impl Display for PageSegment { Clone, Debug, Hash, - Serialize, - Deserialize, PartialEq, Eq, PartialOrd, @@ -173,8 +168,6 @@ impl Display for PageType { PartialEq, Eq, Default, - Serialize, - Deserialize, TaskInput, TraceRawVcs, NonLocalValue, @@ -355,8 +348,6 @@ impl PartialOrd for AppPage { Clone, Debug, Hash, - Serialize, - Deserialize, PartialEq, Eq, PartialOrd, @@ -413,8 +404,6 @@ impl Display for PathSegment { PartialEq, Eq, Default, - Serialize, - Deserialize, TaskInput, TraceRawVcs, NonLocalValue, diff --git a/crates/next-core/src/next_client/runtime_entry.rs b/crates/next-core/src/next_client/runtime_entry.rs index da7db70acd49..bdd488c7749c 100644 --- a/crates/next-core/src/next_client/runtime_entry.rs +++ b/crates/next-core/src/next_client/runtime_entry.rs @@ -9,7 +9,7 @@ use turbopack_core::{ resolve::{origin::PlainResolveOrigin, parse::Request}, source::Source, }; -use turbopack_ecmascript::resolve::cjs_resolve; +use turbopack_resolve::ecmascript::cjs_resolve; #[turbo_tasks::value(shared)] pub enum RuntimeEntry { diff --git a/crates/next-core/src/next_client_reference/visit_client_reference.rs b/crates/next-core/src/next_client_reference/visit_client_reference.rs index f73113024209..636b1aafc510 100644 --- a/crates/next-core/src/next_client_reference/visit_client_reference.rs +++ b/crates/next-core/src/next_client_reference/visit_client_reference.rs @@ -2,7 +2,6 @@ use std::future::Future; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use tracing::{Instrument, Level, Span}; use turbo_rcstr::RcStr; use turbo_tasks::{ @@ -31,8 +30,6 @@ use crate::{ Eq, PartialEq, Hash, - Serialize, - Deserialize, Debug, ValueDebugFormat, TraceRawVcs, @@ -51,8 +48,6 @@ pub struct ClientReference { Eq, PartialEq, Hash, - Serialize, - Deserialize, Debug, ValueDebugFormat, TraceRawVcs, @@ -144,18 +139,7 @@ struct FindServerEntries { include_binding_usage: bool, } -#[derive( - Clone, - Eq, - PartialEq, - Hash, - Serialize, - Deserialize, - Debug, - ValueDebugFormat, - TraceRawVcs, - NonLocalValue, -)] +#[derive(Clone, Eq, PartialEq, Hash, Debug, ValueDebugFormat, TraceRawVcs, NonLocalValue)] enum FindServerEntriesNode { ClientReference, ServerComponentEntry( diff --git a/crates/next-core/src/next_config.rs b/crates/next-core/src/next_config.rs index a51f2c11f0c7..912615887077 100644 --- a/crates/next-core/src/next_config.rs +++ b/crates/next-core/src/next_config.rs @@ -154,6 +154,7 @@ pub struct NextConfig { cache_components: Option, // // These are never used by Turbopack, and potentially non-serializable anyway: + // cache_life: (), // export_path_map: Option, // generate_build_id: Option, // webpack: Option, @@ -197,7 +198,6 @@ pub struct OptionCrossOriginConfig(Option); Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -216,7 +216,6 @@ struct EslintConfig { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -238,7 +237,6 @@ pub enum BuildActivityPositions { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -253,16 +251,7 @@ pub struct DevIndicatorsOptions { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum DevIndicatorsConfig { @@ -275,7 +264,6 @@ pub enum DevIndicatorsConfig { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -294,7 +282,6 @@ struct OnDemandEntriesConfig { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -312,7 +299,6 @@ struct HttpAgentConfig { Debug, PartialEq, Eq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -333,7 +319,6 @@ pub struct DomainLocale { Debug, PartialEq, Eq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -357,7 +342,6 @@ pub struct OptionI18NConfig(Option); Debug, PartialEq, Eq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -413,39 +397,26 @@ pub enum RouteHas { }, } -#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue)] +#[derive(Clone, Debug, Default, PartialEq, Deserialize, TraceRawVcs, NonLocalValue)] #[serde(rename_all = "camelCase")] pub struct HeaderValue { pub key: RcStr, pub value: RcStr, } -#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue)] +#[derive(Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue)] #[serde(rename_all = "camelCase")] pub struct Header { pub source: String, - #[serde(skip_serializing_if = "Option::is_none")] pub base_path: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub locale: Option, pub headers: Vec, - #[serde(skip_serializing_if = "Option::is_none")] pub has: Option>, - #[serde(skip_serializing_if = "Option::is_none")] pub missing: Option>, } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "camelCase")] pub enum RedirectStatus { @@ -454,16 +425,7 @@ pub enum RedirectStatus { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "camelCase")] pub struct Redirect { @@ -504,7 +466,6 @@ pub struct Rewrites { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -570,16 +531,7 @@ impl Default for ImageConfig { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "kebab-case")] pub enum ImageLoader { @@ -591,16 +543,7 @@ pub enum ImageLoader { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] pub enum ImageFormat { #[serde(rename = "image/webp")] @@ -614,7 +557,6 @@ pub enum ImageFormat { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -634,16 +576,7 @@ pub struct RemotePattern { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "kebab-case")] pub enum RemotePatternProtocol { @@ -665,8 +598,9 @@ pub enum RemotePatternProtocol { )] #[serde(rename_all = "camelCase")] pub struct TurbopackConfig { - #[bincode(with = "turbo_bincode::serde_self_describing")] - pub rules: Option>, + #[serde(default)] + #[bincode(with = "turbo_bincode::indexmap")] + pub rules: FxIndexMap, #[bincode(with = "turbo_bincode::serde_self_describing")] pub resolve_alias: Option>, pub resolve_extensions: Option>, @@ -674,7 +608,16 @@ pub struct TurbopackConfig { } #[derive( - Serialize, Deserialize, Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, OperationValue, + Deserialize, + Clone, + PartialEq, + Eq, + Debug, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] #[serde(deny_unknown_fields)] pub struct RegexComponents { @@ -687,7 +630,16 @@ pub struct RegexComponents { /// /// This is needed because `RegExp` objects are not otherwise serializable. #[derive( - Clone, PartialEq, Eq, Debug, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, + Clone, + PartialEq, + Eq, + Debug, + Deserialize, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] #[serde( tag = "type", @@ -722,7 +674,16 @@ impl TryFrom for EsRegex { } #[derive( - Serialize, Deserialize, Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, OperationValue, + Deserialize, + Clone, + PartialEq, + Eq, + Debug, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] // We can end up with confusing behaviors if we silently ignore extra properties, since `Base` will // match nearly every object, since it has no required field. @@ -774,7 +735,16 @@ impl TryFrom for ConditionItem { } #[derive( - Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, + Clone, + Debug, + PartialEq, + Eq, + Deserialize, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] #[serde(rename_all = "camelCase")] pub struct RuleConfigItem { @@ -785,8 +755,9 @@ pub struct RuleConfigItem { pub condition: Option, } -#[derive(Clone, Debug, PartialEq, Eq, TraceRawVcs, Serialize, NonLocalValue, OperationValue)] -#[serde(transparent)] +#[derive( + Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, +)] pub struct RuleConfigCollection(Vec); impl<'de> Deserialize<'de> for RuleConfigCollection { @@ -806,7 +777,16 @@ impl<'de> Deserialize<'de> for RuleConfigCollection { } #[derive( - Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, + Clone, + Debug, + PartialEq, + Eq, + Deserialize, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] #[serde(untagged)] pub enum RuleConfigCollectionItem { @@ -815,7 +795,16 @@ pub enum RuleConfigCollectionItem { } #[derive( - Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, + Clone, + Debug, + PartialEq, + Eq, + Deserialize, + TraceRawVcs, + NonLocalValue, + OperationValue, + Encode, + Decode, )] #[serde(untagged)] pub enum LoaderItem { @@ -876,16 +865,7 @@ pub struct ReactCompilerOptions { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum ReactCompilerOptionsOrBoolean { @@ -952,8 +932,6 @@ pub struct ExperimentalConfig { adjust_font_fallbacks_with_size_adjust: Option, after: Option, app_document_preloading: Option, - #[bincode(with = "turbo_bincode::serde_self_describing")] - cache_life: Option>, case_sensitive_routes: Option, cpus: Option, cra_compat: Option, @@ -1031,69 +1009,11 @@ pub struct ExperimentalConfig { devtool_segment_explorer: Option, } -#[derive( - Clone, Debug, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, -)] -#[serde(rename_all = "camelCase")] -pub struct CacheLifeProfile { - #[serde(skip_serializing_if = "Option::is_none")] - pub stale: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub revalidate: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub expire: Option, -} - -#[test] -fn test_cache_life_profiles() { - let json = serde_json::json!({ - "cacheLife": { - "frequent": { - "stale": 19, - "revalidate": 100, - }, - } - }); - - let config: ExperimentalConfig = serde_json::from_value(json).unwrap(); - let mut expected_cache_life = FxIndexMap::default(); - - expected_cache_life.insert( - "frequent".to_string(), - CacheLifeProfile { - stale: Some(19), - revalidate: Some(100), - expire: None, - }, - ); - - assert_eq!(config.cache_life, Some(expected_cache_life)); -} - -#[test] -fn test_cache_life_profiles_invalid() { - let json = serde_json::json!({ - "cacheLife": { - "invalid": { - "stale": "invalid_value", - }, - } - }); - - let result: Result = serde_json::from_value(json); - - assert!( - result.is_err(), - "Deserialization should fail due to invalid 'stale' value type" - ); -} - #[derive( Clone, Debug, PartialEq, Eq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -1107,16 +1027,7 @@ pub struct SubResourceIntegrity { } #[derive( - Clone, - Debug, - PartialEq, - Deserialize, - Serialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum ServerActionsOrLegacyBool { @@ -1129,16 +1040,7 @@ pub enum ServerActionsOrLegacyBool { } #[derive( - Clone, - Debug, - PartialEq, - Deserialize, - Serialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "kebab-case")] pub enum EsmExternalsValue { @@ -1146,16 +1048,7 @@ pub enum EsmExternalsValue { } #[derive( - Clone, - Debug, - PartialEq, - Deserialize, - Serialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum EsmExternals { @@ -1189,7 +1082,6 @@ fn test_esm_externals_deserialization() { PartialEq, Eq, Deserialize, - Serialize, TraceRawVcs, NonLocalValue, OperationValue, @@ -1202,9 +1094,7 @@ pub struct ServerActions { pub body_size_limit: Option, } -#[derive( - Clone, Debug, Serialize, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, -)] +#[derive(Clone, Debug, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode)] #[serde(untagged)] pub enum SizeLimit { Number(f64), @@ -1226,16 +1116,7 @@ impl PartialEq for SizeLimit { impl Eq for SizeLimit {} #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "kebab-case")] pub enum MiddlewarePrefetchType { @@ -1402,7 +1283,6 @@ impl Issue for InvalidLoaderRuleRenameAsIssue { #[turbo_tasks::value(shared)] struct InvalidLoaderRuleConditionIssue { - #[bincode(with = "turbo_bincode::serde_self_describing")] condition: ConfigConditionItem, config_file_path: FileSystemPath, } @@ -1427,11 +1307,7 @@ impl Issue for InvalidLoaderRuleConditionIssue { #[turbo_tasks::function] async fn description(&self) -> Result> { Ok(Vc::cell(Some( - StyledString::Text(RcStr::from( - serde_json::to_string_pretty(&self.condition) - .expect("condition must be serializable"), - )) - .resolved_cell(), + StyledString::Text(RcStr::from(format!("{:#?}", self.condition))).resolved_cell(), ))) } @@ -1559,7 +1435,7 @@ impl NextConfig { project_path: FileSystemPath, ) -> Result> { let this = self.await?; - let Some(turbo_rules) = this.turbopack.as_ref().and_then(|t| t.rules.as_ref()) else { + let Some(turbo_rules) = this.turbopack.as_ref().map(|t| &t.rules) else { return Ok(Vc::cell(Vec::new())); }; if turbo_rules.is_empty() { @@ -2149,7 +2025,7 @@ impl NextConfig { /// A subset of ts/jsconfig that next.js implicitly /// interops with. #[turbo_tasks::value(serialization = "custom", eq = "manual")] -#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, Encode, Decode)] +#[derive(Clone, Debug, Default, PartialEq, Deserialize, Encode, Decode)] #[serde(rename_all = "camelCase")] pub struct JsConfig { #[bincode(with = "turbo_bincode::serde_self_describing")] diff --git a/crates/next-core/src/next_font/google/options.rs b/crates/next-core/src/next_font/google/options.rs index ecb1ebbe2e30..00d738b7e843 100644 --- a/crates/next-core/src/next_font/google/options.rs +++ b/crates/next-core/src/next_font/google/options.rs @@ -1,6 +1,6 @@ use anyhow::{Context, Result}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ FxIndexMap, FxIndexSet, NonLocalValue, TaskInput, Vc, fxindexset, trace::TraceRawVcs, @@ -52,7 +52,6 @@ impl NextFontGoogleOptions { PartialOrd, Ord, Hash, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -65,16 +64,14 @@ pub(super) enum FontWeights { Fixed(Vec), } -#[derive( - Debug, PartialEq, Eq, Deserialize, Serialize, TraceRawVcs, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, PartialEq, Eq, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] pub(super) struct FontDataEntry { pub weights: Vec, pub styles: Vec, pub axes: Option>, } -#[derive(Debug, PartialEq, Deserialize, Serialize, TraceRawVcs, NonLocalValue, Encode, Decode)] +#[derive(Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] #[serde(rename_all = "camelCase")] pub(super) struct Axis { pub tag: RcStr, diff --git a/crates/next-core/src/next_font/local/errors.rs b/crates/next-core/src/next_font/local/errors.rs index 97e85013e455..0332dc6fe776 100644 --- a/crates/next-core/src/next_font/local/errors.rs +++ b/crates/next-core/src/next_font/local/errors.rs @@ -1,7 +1,6 @@ -use std::fmt::Display; +use std::fmt::{self, Display}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, trace::TraceRawVcs}; @@ -10,13 +9,11 @@ pub(crate) enum FontResult { FontFileNotFound(FontFileNotFound), } -#[derive( - Debug, Eq, PartialEq, Serialize, Deserialize, NonLocalValue, TraceRawVcs, Encode, Decode, -)] +#[derive(Debug, Eq, PartialEq, NonLocalValue, TraceRawVcs, Encode, Decode)] pub(crate) struct FontFileNotFound(pub RcStr); impl Display for FontFileNotFound { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Font file not found: Can't resolve {}'", self.0) } } diff --git a/crates/next-core/src/next_font/local/mod.rs b/crates/next-core/src/next_font/local/mod.rs index 766fd8143ad0..6743f93ae3f4 100644 --- a/crates/next-core/src/next_font/local/mod.rs +++ b/crates/next-core/src/next_font/local/mod.rs @@ -1,5 +1,4 @@ use anyhow::{Context, Result, bail}; -use font_fallback::FontFallbackResult; use indoc::formatdoc; use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; @@ -21,21 +20,17 @@ use turbopack_core::{ virtual_source::VirtualSource, }; -use self::{ - font_fallback::get_font_fallbacks, - options::{FontDescriptors, NextFontLocalOptions, options_from_request}, - stylesheet::build_stylesheet, - util::build_font_family_string, -}; -use super::{ - font_fallback::FontFallbacks, - util::{FontCssProperties, can_use_next_font}, -}; use crate::{ next_app::metadata::split_extension, next_font::{ - local::options::FontWeight, - util::{get_request_hash, get_request_id}, + font_fallback::FontFallbacks, + local::{ + font_fallback::{FontFallbackResult, get_font_fallbacks}, + options::{FontDescriptors, FontWeight, NextFontLocalOptions, options_from_request}, + stylesheet::build_stylesheet, + util::build_font_family_string, + }, + util::{FontCssProperties, can_use_next_font, get_request_hash, get_request_id}, }, }; diff --git a/crates/next-core/src/next_font/local/options.rs b/crates/next-core/src/next_font/local/options.rs index 95f66e07425e..9a3b6dcfa92a 100644 --- a/crates/next-core/src/next_font/local/options.rs +++ b/crates/next-core/src/next_font/local/options.rs @@ -2,15 +2,13 @@ use std::{fmt::Display, str::FromStr}; use anyhow::{Context, Result}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, TaskInput, Vc, trace::TraceRawVcs}; -use super::request::{ - AdjustFontFallback, NextFontLocalRequest, NextFontLocalRequestArguments, SrcDescriptor, - SrcRequest, +use crate::next_font::local::request::{ + AdjustFontFallback, NextFontLocalDeclaration, NextFontLocalRequest, + NextFontLocalRequestArguments, SrcDescriptor, SrcRequest, }; -use crate::next_font::local::request::NextFontLocalDeclaration; /// A normalized, Vc-friendly struct derived from validating and transforming /// [[NextFontLocalRequest]] @@ -57,13 +55,11 @@ impl NextFontLocalOptions { #[derive( Clone, Debug, - Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash, - Serialize, TraceRawVcs, NonLocalValue, TaskInput, @@ -101,13 +97,11 @@ impl FontDescriptor { #[derive( Clone, Debug, - Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash, - Serialize, TraceRawVcs, NonLocalValue, TaskInput, @@ -130,8 +124,6 @@ pub(super) enum FontDescriptors { Eq, PartialOrd, Ord, - Deserialize, - Serialize, Hash, TraceRawVcs, NonLocalValue, diff --git a/crates/next-core/src/next_font/local/request.rs b/crates/next-core/src/next_font/local/request.rs index 193c4ac79719..aaa2442a895a 100644 --- a/crates/next-core/src/next_font/local/request.rs +++ b/crates/next-core/src/next_font/local/request.rs @@ -22,7 +22,6 @@ pub(super) struct NextFontLocalRequest { Ord, Hash, TaskInput, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, diff --git a/crates/next-core/src/next_image/module.rs b/crates/next-core/src/next_image/module.rs index bf867b01e634..8e4b8a5b446f 100644 --- a/crates/next-core/src/next_image/module.rs +++ b/crates/next-core/src/next_image/module.rs @@ -1,6 +1,5 @@ use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::rcstr; use turbo_tasks::{NonLocalValue, ResolvedVc, TaskInput, Vc, fxindexmap, trace::TraceRawVcs}; use turbopack::{ModuleAssetContext, module_options::CustomModuleType}; @@ -25,8 +24,6 @@ use super::source_asset::StructuredImageFileSource; TaskInput, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Encode, Decode, )] diff --git a/crates/next-core/src/next_manifests/mod.rs b/crates/next-core/src/next_manifests/mod.rs index 48567b5e2173..03a839a1ed40 100644 --- a/crates/next-core/src/next_manifests/mod.rs +++ b/crates/next-core/src/next_manifests/mod.rs @@ -252,7 +252,7 @@ impl Default for MiddlewaresManifest { )] #[serde(rename_all = "camelCase", default)] pub struct ProxyMatcher { - // When skipped next.js with fill that during merging. + // When skipped, next.js will fill the field during merging. #[serde(skip_serializing_if = "Option::is_none")] pub regexp: Option, #[serde(skip_serializing_if = "bool_is_true")] diff --git a/crates/next-core/src/next_server/resolve.rs b/crates/next-core/src/next_server/resolve.rs index ff399dd6e85c..af9b3ee7ca68 100644 --- a/crates/next-core/src/next_server/resolve.rs +++ b/crates/next-core/src/next_server/resolve.rs @@ -1,7 +1,6 @@ use anyhow::Result; use bincode::{Decode, Encode}; use next_taskless::NEVER_EXTERNAL_RE; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, ResolvedVc, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{ @@ -334,9 +333,7 @@ impl AfterResolvePlugin for ExternalCjsModulesResolvePlugin { } } -#[derive( - Serialize, Deserialize, TraceRawVcs, PartialEq, Eq, Debug, NonLocalValue, Encode, Decode, -)] +#[derive(TraceRawVcs, PartialEq, Eq, Debug, NonLocalValue, Encode, Decode)] pub struct PackagesGlobs { path_glob: ResolvedVc, request_glob: ResolvedVc, diff --git a/crates/next-core/src/next_shared/transforms/modularize_imports.rs b/crates/next-core/src/next_shared/transforms/modularize_imports.rs index 8a4b4999def4..13ea79e307f1 100644 --- a/crates/next-core/src/next_shared/transforms/modularize_imports.rs +++ b/crates/next-core/src/next_shared/transforms/modularize_imports.rs @@ -10,7 +10,7 @@ use turbo_tasks::{FxIndexMap, NonLocalValue, OperationValue, ResolvedVc, trace:: use turbopack::module_options::{ModuleRule, ModuleRuleEffect}; use turbopack_ecmascript::{CustomTransformer, EcmascriptInputTransform, TransformContext}; -use super::module_rule_match_js_no_url; +use crate::next_shared::transforms::module_rule_match_js_no_url; #[derive( Clone, diff --git a/crates/next-core/src/next_shared/webpack_rules/mod.rs b/crates/next-core/src/next_shared/webpack_rules/mod.rs index 48e112221d95..fa944a9c33cb 100644 --- a/crates/next-core/src/next_shared/webpack_rules/mod.rs +++ b/crates/next-core/src/next_shared/webpack_rules/mod.rs @@ -2,7 +2,7 @@ use std::{collections::BTreeSet, str::FromStr}; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, OperationValue, ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -42,7 +42,6 @@ pub(crate) mod sass; Ord, Hash, Deserialize, - Serialize, TaskInput, TraceRawVcs, NonLocalValue, diff --git a/crates/next-core/src/segment_config.rs b/crates/next-core/src/segment_config.rs index a194e87e9d7f..2cab60a7713b 100644 --- a/crates/next-core/src/segment_config.rs +++ b/crates/next-core/src/segment_config.rs @@ -2,7 +2,7 @@ use std::{borrow::Cow, future::Future}; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use serde_json::Value; use swc_core::{ common::{DUMMY_SP, GLOBALS, Span, Spanned, source_map::SmallPos}, @@ -50,7 +50,6 @@ use crate::{ Copy, Debug, TraceRawVcs, - Serialize, Deserialize, NonLocalValue, Encode, @@ -73,7 +72,6 @@ pub enum NextSegmentDynamic { Copy, Debug, TraceRawVcs, - Serialize, Deserialize, NonLocalValue, Encode, @@ -92,18 +90,7 @@ pub enum NextSegmentFetchCache { } #[derive( - Default, - PartialEq, - Eq, - Clone, - Copy, - Debug, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, + Default, PartialEq, Eq, Clone, Copy, Debug, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub enum NextRevalidate { #[default] @@ -308,19 +295,7 @@ impl Issue for NextSegmentConfigParsingIssue { } #[derive( - Debug, - Clone, - Copy, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TaskInput, - NonLocalValue, - TraceRawVcs, - Encode, - Decode, + Debug, Clone, Copy, PartialEq, Eq, Hash, TaskInput, NonLocalValue, TraceRawVcs, Encode, Decode, )] pub enum ParseSegmentMode { Base, diff --git a/crates/next-core/src/util.rs b/crates/next-core/src/util.rs index 2c42b87912dc..14eefb80f797 100644 --- a/crates/next-core/src/util.rs +++ b/crates/next-core/src/util.rs @@ -3,7 +3,7 @@ use std::{fmt::Display, str::FromStr}; use anyhow::{Result, anyhow, bail}; use bincode::{Decode, Encode}; use next_taskless::{expand_next_js_template, expand_next_js_template_no_imports}; -use serde::{Deserialize, Serialize, de::DeserializeOwned}; +use serde::{Deserialize, de::DeserializeOwned}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{FxIndexMap, NonLocalValue, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{File, FileContent, FileJsonContent, FileSystem, FileSystemPath, rope::Rope}; @@ -58,20 +58,7 @@ pub fn defines(define_env: &FxIndexMap>) -> CompileTimeDefi CompileTimeDefines(defines) } -#[derive( - Debug, - Clone, - Copy, - PartialEq, - Eq, - Hash, - TaskInput, - Serialize, - Deserialize, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, Encode, Decode)] pub enum PathType { PagesPage, PagesApi, @@ -205,7 +192,6 @@ pub fn pages_function_name(page: impl Display) -> String { Copy, Debug, TraceRawVcs, - Serialize, Deserialize, Hash, PartialOrd, @@ -244,9 +230,7 @@ impl NextRuntime { } } -#[derive( - PartialEq, Eq, Clone, Debug, TraceRawVcs, Serialize, Deserialize, NonLocalValue, Encode, Decode, -)] +#[derive(PartialEq, Eq, Clone, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum MiddlewareMatcherKind { Str(String), Matcher(ProxyMatcher), diff --git a/turbopack/crates/turbo-esregex/Cargo.toml b/turbopack/crates/turbo-esregex/Cargo.toml index 78e7aa28cc7f..90dcff8d844e 100644 --- a/turbopack/crates/turbo-esregex/Cargo.toml +++ b/turbopack/crates/turbo-esregex/Cargo.toml @@ -9,10 +9,7 @@ anyhow = { workspace = true } bincode = { workspace = true } regex = { workspace = true } regress = { workspace = true } -serde = { workspace = true } -serde_json = { workspace = true } turbo-tasks = { workspace = true } - [lints] workspace = true diff --git a/turbopack/crates/turbo-esregex/src/lib.rs b/turbopack/crates/turbo-esregex/src/lib.rs index 02dadca4bbec..917ef282574a 100644 --- a/turbopack/crates/turbo-esregex/src/lib.rs +++ b/turbopack/crates/turbo-esregex/src/lib.rs @@ -10,14 +10,12 @@ use bincode::{ error::{DecodeError, EncodeError}, impl_borrow_decode, }; -use serde::{Deserialize, Serialize}; /// A simple regular expression implementation following ecmascript semantics /// /// Delegates to the `regex` crate when possible and `regress` otherwise. -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone)] #[turbo_tasks::value(eq = "manual", shared, serialization = "custom")] -#[serde(into = "RegexForm", try_from = "RegexForm")] pub struct EsRegex { #[turbo_tasks(trace_ignore)] delegate: EsRegexImpl, @@ -44,30 +42,6 @@ impl PartialEq for EsRegex { } impl Eq for EsRegex {} -impl TryFrom for EsRegex { - type Error = anyhow::Error; - - fn try_from(value: RegexForm) -> std::result::Result { - EsRegex::new(&value.pattern, &value.flags) - } -} - -/// This is the serializable form for the `EsRegex` struct -#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)] -struct RegexForm { - pattern: String, - flags: String, -} - -impl From for RegexForm { - fn from(value: EsRegex) -> Self { - Self { - pattern: value.pattern, - flags: value.flags, - } - } -} - impl Encode for EsRegex { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { self.pattern.encode(encoder)?; @@ -235,11 +209,13 @@ mod tests { use super::{EsRegex, EsRegexImpl}; #[test] - fn round_trip_serialize() { + fn round_trip_bincode() { let regex = EsRegex::new("[a-z]", "i").unwrap(); - let serialized = serde_json::to_string(®ex).unwrap(); - let parsed = serde_json::from_str::(&serialized).unwrap(); - assert_eq!(regex, parsed); + let config = bincode::config::standard(); + let encoded = bincode::encode_to_vec(®ex, config).unwrap(); + let (decoded, len) = bincode::decode_from_slice::(&encoded, config).unwrap(); + assert_eq!(regex, decoded); + assert_eq!(len, encoded.len()); } #[test] diff --git a/turbopack/crates/turbo-static/src/identifier.rs b/turbopack/crates/turbo-static/src/identifier.rs index c92a3da7bb5d..428629585d52 100644 --- a/turbopack/crates/turbo-static/src/identifier.rs +++ b/turbopack/crates/turbo-static/src/identifier.rs @@ -1,16 +1,17 @@ use std::{fs, path::PathBuf}; use lsp_types::{CallHierarchyIncomingCall, CallHierarchyItem, Range}; +use serde::{Deserialize, Serialize}; /// A task that references another, with the range of the reference -#[derive(Hash, PartialEq, Eq, serde::Deserialize, serde::Serialize, Clone, Debug)] +#[derive(Hash, PartialEq, Eq, Deserialize, Serialize, Clone, Debug)] pub struct IdentifierReference { pub identifier: Identifier, pub references: Vec, // the places where this identifier is used } /// identifies a task by its file, and range in the file -#[derive(Hash, PartialEq, Eq, serde::Deserialize, serde::Serialize, Clone)] +#[derive(Hash, PartialEq, Eq, Deserialize, Serialize, Clone)] pub struct Identifier { pub path: String, // technically you can derive this from the name and range but it's easier to just store it diff --git a/turbopack/crates/turbo-tasks-backend/fuzz/src/graph.rs b/turbopack/crates/turbo-tasks-backend/fuzz/src/graph.rs index d4f25897d920..70b4ed532316 100644 --- a/turbopack/crates/turbo-tasks-backend/fuzz/src/graph.rs +++ b/turbopack/crates/turbo-tasks-backend/fuzz/src/graph.rs @@ -4,7 +4,6 @@ use anyhow::Result; use arbitrary::Arbitrary; use bincode::{Decode, Encode}; use once_cell::sync::Lazy; -use serde::{Deserialize, Serialize}; use turbo_tasks::{self, NonLocalValue, State, TaskInput, TurboTasks, Vc, trace::TraceRawVcs}; use turbo_tasks_malloc::TurboMalloc; @@ -16,8 +15,6 @@ use turbo_tasks_malloc::TurboMalloc; Eq, Hash, NonLocalValue, - Serialize, - Deserialize, TraceRawVcs, TaskInput, Encode, @@ -38,8 +35,6 @@ pub struct TaskReferenceSpec { Eq, Hash, NonLocalValue, - Serialize, - Deserialize, TraceRawVcs, TaskInput, Encode, diff --git a/turbopack/crates/turbo-tasks-backend/src/data.rs b/turbopack/crates/turbo-tasks-backend/src/data.rs index a88854f0b26a..f374f869cdef 100644 --- a/turbopack/crates/turbo-tasks-backend/src/data.rs +++ b/turbopack/crates/turbo-tasks-backend/src/data.rs @@ -1,6 +1,5 @@ use bincode::{Decode, Encode}; use rustc_hash::FxHashSet; -use serde::{Deserialize, Serialize}; use turbo_tasks::{ CellId, KeyValuePair, SharedReference, TaskExecutionReason, TaskId, TraitTypeId, TypedSharedReference, ValueTypeId, @@ -206,7 +205,7 @@ impl InProgressCellState { } } -#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] +#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Encode, Decode)] pub struct AggregationNumber { pub base: u32, pub distance: u32, diff --git a/turbopack/crates/turbo-tasks-backend/tests/bug.rs b/turbopack/crates/turbo-tasks-backend/tests/bug.rs index b0c0c537a88f..25cab32f71ee 100644 --- a/turbopack/crates/turbo-tasks-backend/tests/bug.rs +++ b/turbopack/crates/turbo-tasks-backend/tests/bug.rs @@ -4,24 +4,19 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, Vc, trace::TraceRawVcs}; use turbo_tasks_testing::{Registration, register, run_once}; static REGISTRATION: Registration = register!(); -#[derive( - Debug, Clone, PartialEq, Eq, NonLocalValue, Serialize, Deserialize, TraceRawVcs, Encode, Decode, -)] +#[derive(Debug, Clone, PartialEq, Eq, NonLocalValue, TraceRawVcs, Encode, Decode)] struct TaskReferenceSpec { task: u16, read: bool, read_strongly_consistent: bool, } -#[derive( - Debug, Clone, PartialEq, Eq, NonLocalValue, Serialize, Deserialize, TraceRawVcs, Encode, Decode, -)] +#[derive(Debug, Clone, PartialEq, Eq, NonLocalValue, TraceRawVcs, Encode, Decode)] struct TaskSpec { references: Vec, } diff --git a/turbopack/crates/turbo-tasks-backend/tests/bug2.rs b/turbopack/crates/turbo-tasks-backend/tests/bug2.rs index 041dd6e7f52e..7b97b28964df 100644 --- a/turbopack/crates/turbo-tasks-backend/tests/bug2.rs +++ b/turbopack/crates/turbo-tasks-backend/tests/bug2.rs @@ -6,25 +6,13 @@ use std::sync::Arc; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, State, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_testing::{Registration, register, run_once}; static REGISTRATION: Registration = register!(); #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - NonLocalValue, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, NonLocalValue, TraceRawVcs, TaskInput, Encode, Decode, )] pub struct TaskReferenceSpec { task: u16, @@ -34,18 +22,7 @@ pub struct TaskReferenceSpec { } #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - NonLocalValue, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, NonLocalValue, TraceRawVcs, TaskInput, Encode, Decode, )] pub struct TaskSpec { references: Vec, diff --git a/turbopack/crates/turbo-tasks-bytes/Cargo.toml b/turbopack/crates/turbo-tasks-bytes/Cargo.toml index d4fe5390a198..2c92b6c8fcc5 100644 --- a/turbopack/crates/turbo-tasks-bytes/Cargo.toml +++ b/turbopack/crates/turbo-tasks-bytes/Cargo.toml @@ -17,8 +17,4 @@ bincode = { workspace = true } bytes = { workspace = true } futures = { workspace = true } serde = { workspace = true } -serde_bytes = "0.11.9" turbo-tasks = { workspace = true } - -[dev-dependencies] -serde_test = "1.0.157" diff --git a/turbopack/crates/turbo-tasks-bytes/src/bytes.rs b/turbopack/crates/turbo-tasks-bytes/src/bytes.rs index 4f2ff83b613a..5aec326a9964 100644 --- a/turbopack/crates/turbo-tasks-bytes/src/bytes.rs +++ b/turbopack/crates/turbo-tasks-bytes/src/bytes.rs @@ -12,10 +12,9 @@ use bincode::{ impl_borrow_decode, }; use bytes::Bytes as CBytes; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; /// Bytes is a thin wrapper around [bytes::Bytes], implementing easy -/// conversion to/from, ser/de support, and Vc containers. +/// conversion to/from, bincode support, and Vc containers. #[derive(Clone, Debug, Default)] #[turbo_tasks::value(transparent, serialization = "custom")] pub struct Bytes(#[turbo_tasks(trace_ignore)] CBytes); @@ -26,19 +25,6 @@ impl Bytes { } } -impl Serialize for Bytes { - fn serialize(&self, serializer: S) -> Result { - serde_bytes::Bytes::new(&self.0).serialize(serializer) - } -} - -impl<'de> Deserialize<'de> for Bytes { - fn deserialize>(deserializer: D) -> Result { - let bytes = serde_bytes::ByteBuf::deserialize(deserializer)?; - Ok(Bytes(bytes.into_vec().into())) - } -} - impl Encode for Bytes { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { self[..].encode(encoder) @@ -92,10 +78,8 @@ impl From for CBytes { #[cfg(test)] mod tests { - use bytes::Bytes as CBytes; - use serde_test::{Token, assert_tokens}; + use super::*; - use super::Bytes; impl PartialEq<&str> for Bytes { fn eq(&self, other: &&str) -> bool { self.0 == other @@ -112,12 +96,6 @@ mod tests { assert_eq!(Bytes::from(s), "foo"); } - #[test] - fn serde() { - let s = Bytes::from("test"); - assert_tokens(&s, &[Token::Bytes(b"test")]) - } - #[test] fn bincode() { let s = Bytes::from("test"); diff --git a/turbopack/crates/turbo-tasks-bytes/src/stream.rs b/turbopack/crates/turbo-tasks-bytes/src/stream.rs index cd7ace8bb252..dab0c072949e 100644 --- a/turbopack/crates/turbo-tasks-bytes/src/stream.rs +++ b/turbopack/crates/turbo-tasks-bytes/src/stream.rs @@ -13,7 +13,6 @@ use bincode::{ error::{DecodeError, EncodeError}, }; use futures::{Stream as StreamTrait, StreamExt, TryStreamExt}; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; /// Streams allow for streaming values from source to sink. /// @@ -153,27 +152,6 @@ impl PartialEq for Stream { } impl Eq for Stream {} -impl Serialize for Stream { - fn serialize(&self, serializer: S) -> Result { - use serde::ser::Error; - let lock = self.inner.lock().map_err(Error::custom)?; - match &*lock { - StreamState { - pulled, - source: None, - } => pulled.serialize(serializer), - _ => Err(Error::custom("cannot serialize open stream")), - } - } -} - -impl<'de, T: Clone + Send + Deserialize<'de>> Deserialize<'de> for Stream { - fn deserialize>(deserializer: D) -> Result { - let data = >::deserialize(deserializer)?; - Ok(Stream::new_closed(data)) - } -} - impl Encode for Stream { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { let lock = self diff --git a/turbopack/crates/turbo-tasks-fetch/src/client.rs b/turbopack/crates/turbo-tasks-fetch/src/client.rs index 1f3e285040de..eb07a85aec89 100644 --- a/turbopack/crates/turbo-tasks-fetch/src/client.rs +++ b/turbopack/crates/turbo-tasks-fetch/src/client.rs @@ -2,11 +2,8 @@ use std::{hash::Hash, sync::LazyLock}; use anyhow::Result; use quick_cache::sync::Cache; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; -use turbo_tasks::{ - NonLocalValue, ReadRef, Vc, duration_span, mark_session_dependent, trace::TraceRawVcs, -}; +use turbo_tasks::{ReadRef, Vc, duration_span, mark_session_dependent}; use crate::{FetchError, FetchResult, HttpResponse, HttpResponseBody}; @@ -14,12 +11,6 @@ const MAX_CLIENTS: usize = 16; static CLIENT_CACHE: LazyLock, reqwest::Client>> = LazyLock::new(|| Cache::new(MAX_CLIENTS)); -#[derive(Hash, PartialEq, Eq, Serialize, Deserialize, NonLocalValue, Debug, TraceRawVcs)] -pub enum ProxyConfig { - Http(RcStr), - Https(RcStr), -} - /// Represents the configuration needed to construct a [`reqwest::Client`]. /// /// This is used to cache clients keyed by their configuration, so the configuration should contain diff --git a/turbopack/crates/turbo-tasks-fetch/src/lib.rs b/turbopack/crates/turbo-tasks-fetch/src/lib.rs index 2a9444b3f0b5..8b037cf9c00e 100644 --- a/turbopack/crates/turbo-tasks-fetch/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fetch/src/lib.rs @@ -9,7 +9,7 @@ mod response; pub use crate::{ client::{ __test_only_reqwest_client_cache_clear, __test_only_reqwest_client_cache_len, - FetchClientConfig, ProxyConfig, + FetchClientConfig, }, error::{FetchError, FetchErrorKind, FetchIssue}, response::{FetchResult, HttpResponse, HttpResponseBody}, diff --git a/turbopack/crates/turbo-tasks-fs/Cargo.toml b/turbopack/crates/turbo-tasks-fs/Cargo.toml index 1d42455d80fb..9de72429caba 100644 --- a/turbopack/crates/turbo-tasks-fs/Cargo.toml +++ b/turbopack/crates/turbo-tasks-fs/Cargo.toml @@ -41,7 +41,6 @@ parking_lot = { workspace = true } regex = { workspace = true } rustc-hash = { workspace = true } serde = { workspace = true, features = ["rc"] } -serde_bytes = { workspace = true } serde_json = { workspace = true } serde_path_to_error = { workspace = true } tokio = { workspace = true } diff --git a/turbopack/crates/turbo-tasks-fs/src/glob.rs b/turbopack/crates/turbo-tasks-fs/src/glob.rs index 7504c43be3bd..98462fd7fecb 100644 --- a/turbopack/crates/turbo-tasks-fs/src/glob.rs +++ b/turbopack/crates/turbo-tasks-fs/src/glob.rs @@ -8,7 +8,6 @@ use bincode::{ error::{DecodeError, EncodeError}, }; use regex::bytes::{Regex, RegexBuilder}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{TaskInput, Vc, trace::TraceRawVcs}; @@ -27,8 +26,7 @@ use crate::globset::parse; // separators #[turbo_tasks::value(eq = "manual", serialization = "custom")] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(into = "GlobForm", try_from = "GlobForm")] +#[derive(Debug, Clone)] pub struct Glob { glob: RcStr, #[turbo_tasks(trace_ignore)] @@ -70,19 +68,7 @@ impl Decode for Glob { } #[derive( - Serialize, - Deserialize, - Copy, - Clone, - PartialEq, - Eq, - Hash, - Default, - TaskInput, - TraceRawVcs, - Debug, - Encode, - Decode, + Copy, Clone, PartialEq, Eq, Hash, Default, TaskInput, TraceRawVcs, Debug, Encode, Decode, )] pub struct GlobOptions { @@ -94,28 +80,6 @@ pub struct GlobOptions { pub contains: bool, } -#[derive(Serialize, Deserialize)] -struct GlobForm { - glob: RcStr, - opts: GlobOptions, -} - -impl From for GlobForm { - fn from(value: Glob) -> Self { - Self { - glob: value.glob, - opts: value.opts, - } - } -} - -impl TryFrom for Glob { - type Error = anyhow::Error; - fn try_from(value: GlobForm) -> Result { - Glob::parse(value.glob, value.opts) - } -} - impl Glob { // Returns true if the glob matches the given path. pub fn matches(&self, path: &str) -> bool { diff --git a/turbopack/crates/turbo-tasks-fs/src/json.rs b/turbopack/crates/turbo-tasks-fs/src/json.rs index bb3450e4e329..eab740287012 100644 --- a/turbopack/crates/turbo-tasks-fs/src/json.rs +++ b/turbopack/crates/turbo-tasks-fs/src/json.rs @@ -1,13 +1,13 @@ use std::fmt::{Display, Formatter, Write}; use anyhow::Result; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, trace::TraceRawVcs}; use crate::{rope::Rope, source_context::get_source_context}; -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, TraceRawVcs, NonLocalValue)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, TraceRawVcs, NonLocalValue)] pub struct UnparsableJson { pub message: RcStr, pub path: Option, diff --git a/turbopack/crates/turbo-tasks-fs/src/lib.rs b/turbopack/crates/turbo-tasks-fs/src/lib.rs index 6c3dd82548cb..4058c4ea4a2b 100644 --- a/turbopack/crates/turbo-tasks-fs/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fs/src/lib.rs @@ -51,7 +51,6 @@ use indexmap::IndexSet; use jsonc_parser::{ParseOptions, parse_to_serde_value}; use mime::Mime; use rustc_hash::FxHashSet; -use serde::{Deserialize, Serialize}; use serde_json::Value; use tokio::sync::{RwLock, RwLockReadGuard}; use tracing::Instrument; @@ -253,36 +252,30 @@ struct DiskFileSystemApplyContext { created_directories: FxHashSet, } -#[derive(Serialize, Deserialize, TraceRawVcs, ValueDebugFormat, NonLocalValue, Encode, Decode)] +#[derive(TraceRawVcs, ValueDebugFormat, NonLocalValue, Encode, Decode)] struct DiskFileSystemInner { pub name: RcStr, pub root: RcStr, #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip)] #[bincode(skip)] mutex_map: MutexMap, #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip)] #[bincode(skip)] invalidator_map: InvalidatorMap, #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip)] #[bincode(skip)] dir_invalidator_map: InvalidatorMap, /// Lock that makes invalidation atomic. It will keep a write lock during /// watcher invalidation and a read lock during other operations. #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip)] #[bincode(skip)] invalidation_lock: RwLock<()>, /// Semaphore to limit the maximum number of concurrent file operations. #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip, default = "create_read_semaphore")] #[bincode(skip, default = "create_read_semaphore")] read_semaphore: tokio::sync::Semaphore, /// Semaphore to limit the maximum number of concurrent file operations. #[turbo_tasks(debug_ignore, trace_ignore)] - #[serde(skip, default = "create_write_semaphore")] #[bincode(skip, default = "create_write_semaphore")] write_semaphore: tokio::sync::Semaphore, @@ -1702,19 +1695,7 @@ pub struct RealPathResult { /// Errors that can occur when resolving a path with symlinks. /// Many of these can be transient conditions that might happen when package managers are running. -#[derive( - Debug, - Clone, - Hash, - Eq, - PartialEq, - Serialize, - Deserialize, - NonLocalValue, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Debug, Clone, Hash, Eq, PartialEq, NonLocalValue, TraceRawVcs, Encode, Decode)] pub enum RealPathResultError { TooManySymlinks, CycleDetected, @@ -1880,8 +1861,6 @@ impl FileContent { bitflags! { #[derive( Default, - Serialize, - Deserialize, TraceRawVcs, NonLocalValue, DeterministicHash, @@ -2317,19 +2296,7 @@ pub enum FileLinesContent { NotFound, } -#[derive( - Hash, - Clone, - Debug, - PartialEq, - Eq, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Hash, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum RawDirectoryEntry { File, Directory, diff --git a/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs b/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs index b12645a650ef..ab92ceb87366 100644 --- a/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs +++ b/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs @@ -1,8 +1,7 @@ -use std::{collections::hash_map::Entry, hash::Hash, marker::PhantomData}; +use std::{collections::hash_map::Entry, hash::Hash}; use parking_lot::Mutex; use rustc_hash::FxHashMap; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; use turbo_tasks::event::Event; pub struct MutexMap { @@ -81,25 +80,3 @@ impl Drop for MutexMapGuard<'_, K> { } } } - -impl Serialize for MutexMap { - fn serialize(&self, serializer: S) -> Result { - serializer.serialize_unit() - } -} - -impl<'de, K> Deserialize<'de> for MutexMap { - fn deserialize>(deserializer: D) -> Result { - struct Visitor(PhantomData>); - impl serde::de::Visitor<'_> for Visitor { - type Value = MutexMap; - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str("a unit") - } - fn visit_unit(self) -> Result { - Ok(MutexMap::default()) - } - } - deserializer.deserialize_unit(Visitor(std::marker::PhantomData)) - } -} diff --git a/turbopack/crates/turbo-tasks-fs/src/rope.rs b/turbopack/crates/turbo-tasks-fs/src/rope.rs index 9f7ed4140152..e54e8e84f172 100644 --- a/turbopack/crates/turbo-tasks-fs/src/rope.rs +++ b/turbopack/crates/turbo-tasks-fs/src/rope.rs @@ -20,8 +20,6 @@ use bincode::{ }; use bytes::Bytes; use futures::Stream; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use serde_bytes::ByteBuf; use tokio::io::{AsyncRead, ReadBuf}; use triomphe::Arc; use turbo_tasks_hash::{DeterministicHash, DeterministicHasher}; @@ -393,27 +391,6 @@ impl DeterministicHash for Rope { } } -impl Serialize for Rope { - /// Ropes are always serialized into contiguous strings, because - /// deserialization won't deduplicate and share the Arcs (being the only - /// possible owner of a individual "shared" data doesn't make sense). - fn serialize(&self, serializer: S) -> Result { - let bytes = self.to_bytes(); - match bytes { - Cow::Borrowed(b) => serde_bytes::Bytes::new(b).serialize(serializer), - Cow::Owned(b) => ByteBuf::from(b).serialize(serializer), - } - } -} - -impl<'de> Deserialize<'de> for Rope { - /// Deserializes strings into a contiguous, immutable Rope. - fn deserialize>(deserializer: D) -> Result { - let bytes = ByteBuf::deserialize(deserializer)?.into_vec(); - Ok(Rope::from(bytes)) - } -} - /// Encode as a len + raw bytes format using the encoder's [`bincode::enc::write::Writer`]. Encoding /// [`Rope::to_bytes`] instead would be easier, but would require copying to an intermediate buffer. /// diff --git a/turbopack/crates/turbo-tasks-fs/src/watcher.rs b/turbopack/crates/turbo-tasks-fs/src/watcher.rs index 7172b80dd414..02a0e1d21f9b 100644 --- a/turbopack/crates/turbo-tasks-fs/src/watcher.rs +++ b/turbopack/crates/turbo-tasks-fs/src/watcher.rs @@ -18,7 +18,6 @@ use notify::{ event::{MetadataKind, ModifyKind, RenameMode}, }; use rustc_hash::FxHashSet; -use serde::{Deserialize, Serialize}; use tracing::instrument; use turbo_rcstr::RcStr; use turbo_tasks::{ @@ -61,9 +60,8 @@ static WATCH_RECURSIVE_MODE: LazyLock = LazyLock::new(|| { } }); -#[derive(Serialize, Deserialize, Encode, Decode)] +#[derive(Encode, Decode)] pub(crate) struct DiskWatcher { - #[serde(skip)] #[bincode(skip)] state: State, } diff --git a/turbopack/crates/turbo-tasks/src/graph/adjacency_map.rs b/turbopack/crates/turbo-tasks/src/graph/adjacency_map.rs index 7aabd45b733b..81db63467b80 100644 --- a/turbopack/crates/turbo-tasks/src/graph/adjacency_map.rs +++ b/turbopack/crates/turbo-tasks/src/graph/adjacency_map.rs @@ -1,18 +1,15 @@ use std::{collections::VecDeque, hash::Hash}; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; use turbo_tasks_macros::{TraceRawVcs, ValueDebugFormat}; -use super::graph_store::{GraphNode, GraphStore}; -use crate::{self as turbo_tasks, NonLocalValue}; +use crate::{ + self as turbo_tasks, NonLocalValue, + graph::graph_store::{GraphNode, GraphStore}, +}; /// A graph traversal that builds an adjacency map -#[derive(Debug, Clone, Serialize, Deserialize, TraceRawVcs, ValueDebugFormat)] -#[serde(bound( - serialize = "T: Serialize + Eq + Hash", - deserialize = "T: Deserialize<'de> + Eq + Hash" -))] +#[derive(Debug, Clone, TraceRawVcs, ValueDebugFormat)] pub struct AdjacencyMap { adjacency_map: FxHashMap>, roots: Vec, diff --git a/turbopack/crates/turbo-tasks/src/invalidation.rs b/turbopack/crates/turbo-tasks/src/invalidation.rs index 7b1ee82d01e4..4b671ca68093 100644 --- a/turbopack/crates/turbo-tasks/src/invalidation.rs +++ b/turbopack/crates/turbo-tasks/src/invalidation.rs @@ -14,7 +14,6 @@ use bincode::{ impl_borrow_decode, }; use indexmap::map::Entry; -use serde::{Deserialize, Serialize, de::Visitor}; use tokio::runtime::Handle; use turbo_dyn_eq_hash::{ DynEq, DynHash, impl_eq_for_dyn, impl_hash_for_dyn, impl_partial_eq_for_dyn, @@ -113,44 +112,6 @@ impl TraceRawVcs for Invalidator { } } -impl Serialize for Invalidator { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_newtype_struct("Invalidator", &self.task) - } -} - -impl<'de> Deserialize<'de> for Invalidator { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - struct V; - - impl<'de> Visitor<'de> for V { - type Value = Invalidator; - - fn expecting(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "an Invalidator") - } - - fn visit_newtype_struct(self, deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - Ok(Invalidator { - task: TaskId::deserialize(deserializer)?, - turbo_tasks: with_turbo_tasks(Arc::downgrade), - handle: tokio::runtime::Handle::current(), - }) - } - } - deserializer.deserialize_newtype_struct("Invalidator", V) - } -} - impl Encode for Invalidator { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { Encode::encode(&self.task, encoder) diff --git a/turbopack/crates/turbo-tasks/src/manager.rs b/turbopack/crates/turbo-tasks/src/manager.rs index 9e3614cfbca0..43929c38f02d 100644 --- a/turbopack/crates/turbo-tasks/src/manager.rs +++ b/turbopack/crates/turbo-tasks/src/manager.rs @@ -1738,7 +1738,7 @@ pub(crate) async fn read_task_cell( /// /// Mutations should not outside of the task that that owns this cell. Doing so /// is a logic error, and may lead to incorrect caching behavior. -#[derive(Clone, Copy, Serialize, Deserialize)] +#[derive(Clone, Copy)] pub struct CurrentCellRef { current_task: TaskId, index: CellId, diff --git a/turbopack/crates/turbo-tasks/src/message_queue.rs b/turbopack/crates/turbo-tasks/src/message_queue.rs index f4d7ca8dc33b..6482335e044f 100644 --- a/turbopack/crates/turbo-tasks/src/message_queue.rs +++ b/turbopack/crates/turbo-tasks/src/message_queue.rs @@ -1,6 +1,7 @@ use std::{any::Any, collections::VecDeque, fmt::Display, sync::Arc, time::Duration}; use dashmap::DashMap; +use serde::Serialize; use tokio::sync::{Mutex, mpsc}; pub trait CompilationEvent: Sync + Send + Any { @@ -132,7 +133,7 @@ impl CompilationEventQueue { } } -#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Serialize)] pub enum Severity { Info, Trace, @@ -155,7 +156,7 @@ impl Display for Severity { } } -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[derive(Debug, Clone, Serialize)] /// Compilation event that is used to log the duration of a task pub struct TimingEvent { /// Message of the event without the timing information @@ -205,7 +206,7 @@ impl CompilationEvent for TimingEvent { } } -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[derive(Debug, Clone, Serialize)] pub struct DiagnosticEvent { pub message: String, pub severity: Severity, diff --git a/turbopack/crates/turbo-tasks/src/state.rs b/turbopack/crates/turbo-tasks/src/state.rs index ca498c121ed9..00594b54339a 100644 --- a/turbopack/crates/turbo-tasks/src/state.rs +++ b/turbopack/crates/turbo-tasks/src/state.rs @@ -8,7 +8,6 @@ use std::{ use auto_hash_map::AutoSet; use bincode::{Decode, Encode}; use parking_lot::{Mutex, MutexGuard}; -use serde::{Deserialize, Serialize}; use tracing::trace_span; use crate::{ @@ -16,7 +15,7 @@ use crate::{ mark_stateful, trace::TraceRawVcs, }; -#[derive(Serialize, Deserialize, Encode, Decode)] +#[derive(Encode, Decode)] struct StateInner { value: T, invalidators: AutoSet, @@ -161,7 +160,7 @@ mod parking_lot_mutex_bincode { /// [strong consistency]: crate::OperationVc::read_strongly_consistent /// [`OperationVc`]: crate::OperationVc /// [`OperationValue`]: crate::OperationValue -#[derive(Serialize, Deserialize, Encode, Decode)] +#[derive(Encode, Decode)] pub struct State { serialization_invalidator: SerializationInvalidator, #[bincode(with = "parking_lot_mutex_bincode")] @@ -272,10 +271,9 @@ impl State { } } -#[derive(Serialize, Deserialize, Encode, Decode)] +#[derive(Encode, Decode)] #[bincode(bounds = "")] pub struct TransientState { - #[serde(skip, default = "default_transient_state_inner")] #[bincode(skip, default = "default_transient_state_inner")] inner: Mutex>>, } diff --git a/turbopack/crates/turbo-tasks/src/util.rs b/turbopack/crates/turbo-tasks/src/util.rs index 260a8797f8e7..d379877a2cb5 100644 --- a/turbopack/crates/turbo-tasks/src/util.rs +++ b/turbopack/crates/turbo-tasks/src/util.rs @@ -21,7 +21,6 @@ use bincode::{ error::{DecodeError, EncodeError}, }; use pin_project_lite::pin_project; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; pub use crate::{ id_factory::{IdFactory, IdFactoryWithReuse}, @@ -79,33 +78,6 @@ impl PartialEq for SharedError { impl Eq for SharedError {} -impl Serialize for SharedError { - fn serialize(&self, serializer: S) -> Result { - let mut v = vec![self.to_string()]; - let mut source = self.source(); - while let Some(s) = source { - v.push(s.to_string()); - source = s.source(); - } - Serialize::serialize(&v, serializer) - } -} - -impl<'de> Deserialize<'de> for SharedError { - fn deserialize>(deserializer: D) -> Result { - use serde::de::Error; - let mut messages = >::deserialize(deserializer)?; - let msg = messages - .pop() - .ok_or_else(|| Error::custom("expected at least 1 error message"))?; - let mut e = anyhow!(msg); - while let Some(message) = messages.pop() { - e = e.context(message); - } - Ok(SharedError::new(e)) - } -} - impl Encode for SharedError { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { let mut v = vec![self.to_string()]; diff --git a/turbopack/crates/turbopack-analyze/src/split_chunk.rs b/turbopack/crates/turbopack-analyze/src/split_chunk.rs index da706a7bdc8c..d05c964b4330 100644 --- a/turbopack/crates/turbopack-analyze/src/split_chunk.rs +++ b/turbopack/crates/turbopack-analyze/src/split_chunk.rs @@ -2,7 +2,6 @@ use std::mem::replace; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{FxIndexMap, NonLocalValue, ValueToString, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{FileContent, FileLine, FileLinesContent, rope::Rope}; @@ -12,18 +11,14 @@ use turbopack_core::{ source_map::{GenerateSourceMap, OriginalToken, SourceMap, SyntheticToken, Token}, }; -#[derive( - Clone, Debug, Deserialize, Eq, NonLocalValue, PartialEq, Serialize, TraceRawVcs, Encode, Decode, -)] +#[derive(Clone, Debug, Eq, NonLocalValue, PartialEq, TraceRawVcs, Encode, Decode)] pub struct ChunkPartRange { pub line: u32, pub start_column: u32, pub end_column: u32, } -#[derive( - Clone, Debug, Deserialize, Eq, NonLocalValue, PartialEq, Serialize, TraceRawVcs, Encode, Decode, -)] +#[derive(Clone, Debug, Eq, NonLocalValue, PartialEq, TraceRawVcs, Encode, Decode)] pub struct ChunkPart { pub source: RcStr, pub real_size: u32, diff --git a/turbopack/crates/turbopack-browser/src/chunking_context.rs b/turbopack/crates/turbopack-browser/src/chunking_context.rs index 1f8f2d9a9d87..5bd719044e56 100644 --- a/turbopack/crates/turbopack-browser/src/chunking_context.rs +++ b/turbopack/crates/turbopack-browser/src/chunking_context.rs @@ -1,6 +1,5 @@ use anyhow::{Context, Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use tracing::Instrument; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -61,8 +60,6 @@ pub const CURRENT_CHUNK_METHOD_DOCUMENT_CURRENT_SCRIPT_EXPR: &str = PartialEq, Eq, Hash, - Serialize, - Deserialize, TraceRawVcs, DeterministicHash, NonLocalValue, diff --git a/turbopack/crates/turbopack-cli/src/arguments.rs b/turbopack/crates/turbopack-cli/src/arguments.rs index b3a2228192fd..4f9d98c88647 100644 --- a/turbopack/crates/turbopack-cli/src/arguments.rs +++ b/turbopack/crates/turbopack-cli/src/arguments.rs @@ -7,7 +7,6 @@ use std::{ use anyhow::anyhow; use bincode::{Decode, Encode}; use clap::{Args, Parser, ValueEnum}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; use turbopack_core::issue::IssueSeverity; @@ -43,8 +42,6 @@ impl Arguments { ValueEnum, PartialEq, Eq, - Serialize, - Deserialize, Hash, TaskInput, NonLocalValue, @@ -167,20 +164,6 @@ pub struct BuildArguments { #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub struct IssueSeverityCliOption(pub IssueSeverity); -impl serde::Serialize for IssueSeverityCliOption { - fn serialize(&self, serializer: S) -> Result { - serializer.serialize_str(&self.0.to_string()) - } -} - -impl<'de> serde::Deserialize<'de> for IssueSeverityCliOption { - fn deserialize>(deserializer: D) -> Result { - let s = String::deserialize(deserializer)?; - ::from_str(&s) - .map_err(serde::de::Error::custom) - } -} - impl ValueEnum for IssueSeverityCliOption { fn value_variants<'a>() -> &'a [Self] { const VARIANTS: [IssueSeverityCliOption; 8] = [ diff --git a/turbopack/crates/turbopack-cli/src/util.rs b/turbopack/crates/turbopack-cli/src/util.rs index 3219d566c663..643bd90e282a 100644 --- a/turbopack/crates/turbopack-cli/src/util.rs +++ b/turbopack/crates/turbopack-cli/src/util.rs @@ -3,24 +3,12 @@ use std::{env::current_dir, path::PathBuf}; use anyhow::{Context, Result}; use bincode::{Decode, Encode}; use dunce::canonicalize; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{DiskFileSystem, FileSystem}; #[derive( - Clone, - Debug, - TaskInput, - Hash, - PartialEq, - Eq, - NonLocalValue, - Serialize, - Deserialize, - TraceRawVcs, - Encode, - Decode, + Clone, Debug, TaskInput, Hash, PartialEq, Eq, NonLocalValue, TraceRawVcs, Encode, Decode, )] pub enum EntryRequest { Relative(RcStr), diff --git a/turbopack/crates/turbopack-core/Cargo.toml b/turbopack/crates/turbopack-core/Cargo.toml index 9ee2324fa143..b60c14dc71b9 100644 --- a/turbopack/crates/turbopack-core/Cargo.toml +++ b/turbopack/crates/turbopack-core/Cargo.toml @@ -32,7 +32,6 @@ ref-cast = "1.0.20" rustc-hash = { workspace = true } regex = { workspace = true } serde = { workspace = true, features = ["rc"] } -serde_bytes = { workspace = true } serde_json = { workspace = true, features = ["preserve_order", "raw_value"] } smallvec = { workspace = true } swc_sourcemap = { workspace = true } diff --git a/turbopack/crates/turbopack-core/src/chunk/availability_info.rs b/turbopack/crates/turbopack-core/src/chunk/availability_info.rs index 56d151d5687c..03c369bc3ccb 100644 --- a/turbopack/crates/turbopack-core/src/chunk/availability_info.rs +++ b/turbopack/crates/turbopack-core/src/chunk/availability_info.rs @@ -1,33 +1,20 @@ use anyhow::Result; use bincode::{Decode, Encode}; use bitfield::bitfield; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use crate::chunk::available_modules::{AvailableModules, AvailableModulesSet}; bitfield! { - #[derive(Clone, Copy, Default, TaskInput, TraceRawVcs, NonLocalValue, Serialize, Deserialize, PartialEq, Eq, Hash, Encode, Decode)] + #[derive(Clone, Copy, Default, TaskInput, TraceRawVcs, NonLocalValue, PartialEq, Eq, Hash, Encode, Decode)] pub struct AvailabilityFlags(u8); impl Debug; pub is_in_async_module, set_is_in_async_module: 0; } #[derive( - Eq, - PartialEq, - Hash, - Clone, - Copy, - Debug, - TaskInput, - TraceRawVcs, - NonLocalValue, - Serialize, - Deserialize, - Encode, - Decode, + Eq, PartialEq, Hash, Clone, Copy, Debug, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub struct AvailabilityInfo { flags: AvailabilityFlags, diff --git a/turbopack/crates/turbopack-core/src/chunk/available_modules.rs b/turbopack/crates/turbopack-core/src/chunk/available_modules.rs index da3e6b7ab853..bc06fea887bc 100644 --- a/turbopack/crates/turbopack-core/src/chunk/available_modules.rs +++ b/turbopack/crates/turbopack-core/src/chunk/available_modules.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{ FxIndexSet, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, ValueToString, Vc, trace::TraceRawVcs, @@ -14,19 +13,7 @@ use crate::{ }; #[derive( - Debug, - Copy, - Clone, - Hash, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Encode, - Decode, + Debug, Copy, Clone, Hash, PartialEq, Eq, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] pub enum AvailableModuleItem { Module(ResolvedVc>), diff --git a/turbopack/crates/turbopack-core/src/chunk/chunk_item_batch.rs b/turbopack/crates/turbopack-core/src/chunk/chunk_item_batch.rs index e8f7a7aface8..45744f81e88e 100644 --- a/turbopack/crates/turbopack-core/src/chunk/chunk_item_batch.rs +++ b/turbopack/crates/turbopack-core/src/chunk/chunk_item_batch.rs @@ -4,7 +4,6 @@ use anyhow::Result; use bincode::{Decode, Encode}; use either::Either; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; use smallvec::{SmallVec, smallvec}; use turbo_tasks::{ FxIndexMap, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryFlatJoinIterExt, TryJoinIterExt, @@ -50,18 +49,7 @@ pub async fn attach_async_info_to_chunkable_module( } #[derive( - Debug, - Clone, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Encode, - Decode, + Debug, Clone, PartialEq, Eq, Hash, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] pub enum ChunkItemOrBatchWithAsyncModuleInfo { ChunkItem(ChunkItemWithAsyncModuleInfo), diff --git a/turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs b/turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs index 5d0621cd4334..9c33240c76bc 100644 --- a/turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs +++ b/turbopack/crates/turbopack-core/src/chunk/chunking/mod.rs @@ -3,7 +3,6 @@ use std::future::IntoFuture; use anyhow::Result; use bincode::{Decode, Encode}; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; use smallvec::{SmallVec, smallvec}; use tracing::{Instrument, Level}; use turbo_rcstr::RcStr; @@ -12,10 +11,9 @@ use turbo_tasks::{ debug::ValueDebugFormat, trace::TraceRawVcs, }; -use super::{Chunk, ChunkItem, ChunkItemWithAsyncModuleInfo, ChunkType, ChunkingContext}; use crate::{ chunk::{ - batch_info, + Chunk, ChunkItem, ChunkItemWithAsyncModuleInfo, ChunkType, ChunkingContext, batch_info, chunk_item_batch::{ ChunkItemBatchGroup, ChunkItemBatchWithAsyncModuleInfo, ChunkItemOrBatchWithAsyncModuleInfo, @@ -50,18 +48,7 @@ struct BatchChunkItemsWithInfo( FxHashMap>, ); -#[derive( - Clone, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - ValueDebugFormat, - Encode, - Decode, -)] +#[derive(Clone, PartialEq, Eq, TraceRawVcs, NonLocalValue, ValueDebugFormat, Encode, Decode)] enum ChunkItemOrBatchWithInfo { ChunkItem { chunk_item: ChunkItemWithAsyncModuleInfo, diff --git a/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs b/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs index ebf10dfda93d..70c1e380c0ed 100644 --- a/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs +++ b/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs @@ -35,7 +35,6 @@ use crate::{ PartialEq, Eq, Hash, - Serialize, Deserialize, TraceRawVcs, DeterministicHash, @@ -228,8 +227,6 @@ pub struct EntryChunkGroupResult { PartialEq, Eq, Hash, - Serialize, - Deserialize, TraceRawVcs, NonLocalValue, TaskInput, diff --git a/turbopack/crates/turbopack-core/src/chunk/mod.rs b/turbopack/crates/turbopack-core/src/chunk/mod.rs index 76d769194d48..d98a6e05e5fb 100644 --- a/turbopack/crates/turbopack-core/src/chunk/mod.rs +++ b/turbopack/crates/turbopack-core/src/chunk/mod.rs @@ -23,7 +23,7 @@ use turbo_tasks::{ }; use turbo_tasks_hash::DeterministicHash; -pub use self::{ +pub use crate::chunk::{ chunk_item_batch::{ ChunkItemBatchGroup, ChunkItemBatchWithAsyncModuleInfo, ChunkItemOrBatchWithAsyncModuleInfo, batch_info, @@ -149,19 +149,7 @@ impl MergeableModules { /// Whether a given module needs to be exposed (depending on how it is imported by other modules) #[derive( - Copy, - Clone, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Hash, - Encode, - Decode, + Copy, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, TaskInput, Hash, Encode, Decode, )] pub enum MergeableModuleExposure { // This module is only used from within the current group, and only individual exports are @@ -513,18 +501,7 @@ impl AsyncModuleInfo { } #[derive( - Serialize, - Deserialize, - Debug, - Clone, - PartialEq, - Eq, - Hash, - TraceRawVcs, - TaskInput, - NonLocalValue, - Encode, - Decode, + Debug, Clone, PartialEq, Eq, Hash, TraceRawVcs, TaskInput, NonLocalValue, Encode, Decode, )] pub struct ChunkItemWithAsyncModuleInfo { pub chunk_item: ResolvedVc>, diff --git a/turbopack/crates/turbopack-core/src/compile_time_info.rs b/turbopack/crates/turbopack-core/src/compile_time_info.rs index e2ddb3d8a4b1..15b24cb79e8b 100644 --- a/turbopack/crates/turbopack-core/src/compile_time_info.rs +++ b/turbopack/crates/turbopack-core/src/compile_time_info.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{FxIndexMap, NonLocalValue, ResolvedVc, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -224,19 +223,7 @@ impl CompileTimeDefines { } } -#[derive( - Debug, - Clone, - Copy, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum InputRelativeConstant { // The project relative directory name of the source file DirName, diff --git a/turbopack/crates/turbopack-core/src/ident.rs b/turbopack/crates/turbopack-core/src/ident.rs index 91eca4b7710e..c61600e71438 100644 --- a/turbopack/crates/turbopack-core/src/ident.rs +++ b/turbopack/crates/turbopack-core/src/ident.rs @@ -4,7 +4,6 @@ use anyhow::Result; use bincode::{Decode, Encode}; use once_cell::sync::Lazy; use regex::Regex; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ NonLocalValue, ReadRef, ResolvedVc, TaskInput, ValueToString, Vc, trace::TraceRawVcs, @@ -24,8 +23,6 @@ use crate::resolve::ModulePart; Eq, PartialEq, TraceRawVcs, - Serialize, - Deserialize, NonLocalValue, Encode, Decode, diff --git a/turbopack/crates/turbopack-core/src/issue/mod.rs b/turbopack/crates/turbopack-core/src/issue/mod.rs index 41a1d0ca316b..0bfa56b44ae6 100644 --- a/turbopack/crates/turbopack-core/src/issue/mod.rs +++ b/turbopack/crates/turbopack-core/src/issue/mod.rs @@ -282,19 +282,7 @@ impl CapturedIssues { } #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - Hash, - TaskInput, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Clone, Copy, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub struct IssueSource { source: ResolvedVc>, @@ -303,19 +291,7 @@ pub struct IssueSource { /// The end position is the first character after the range #[derive( - Clone, - Copy, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - Hash, - TaskInput, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Clone, Copy, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] enum SourceRange { LineColumn(SourcePos, SourcePos), diff --git a/turbopack/crates/turbopack-core/src/module_graph/chunk_group_info.rs b/turbopack/crates/turbopack-core/src/module_graph/chunk_group_info.rs index 05ab22e01e0f..e54e2220cd56 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/chunk_group_info.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/chunk_group_info.rs @@ -9,7 +9,6 @@ use either::Either; use indexmap::map::Entry; use roaring::RoaringBitmap; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; use tracing::Instrument; use turbo_rcstr::RcStr; use turbo_tasks::{ @@ -23,18 +22,7 @@ use crate::{ module_graph::{GraphTraversalAction, ModuleGraphRef, RefData}, }; -#[derive( - Clone, - Debug, - Default, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - Encode, - Decode, -)] +#[derive(Clone, Debug, Default, PartialEq, TraceRawVcs, ValueDebugFormat, Encode, Decode)] #[repr(transparent)] pub struct RoaringBitmapWrapper( #[turbo_tasks(trace_ignore)] @@ -127,18 +115,7 @@ impl ChunkGroupInfo { } #[derive( - Debug, - Clone, - Hash, - TaskInput, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Debug, Clone, Hash, TaskInput, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub enum ChunkGroupEntry { /// e.g. a page @@ -175,19 +152,7 @@ impl ChunkGroupEntry { } } -#[derive( - Debug, - Clone, - Hash, - TaskInput, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Debug, Clone, Hash, TaskInput, PartialEq, Eq, TraceRawVcs, Encode, Decode)] pub enum ChunkGroup { /// e.g. a page Entry(Vec>>), @@ -305,7 +270,7 @@ impl ChunkGroup { } } -#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] +#[derive(Debug, Clone, Hash, PartialEq, Eq, Encode, Decode)] pub enum ChunkGroupKey { /// e.g. a page Entry(Vec>>), @@ -368,7 +333,7 @@ impl ChunkGroupKey { } } -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, Encode, Decode)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Encode, Decode)] pub struct ChunkGroupId(u32); impl From for ChunkGroupId { diff --git a/turbopack/crates/turbopack-core/src/module_graph/mod.rs b/turbopack/crates/turbopack-core/src/module_graph/mod.rs index 4e098c2f1135..99005cf32423 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/mod.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/mod.rs @@ -96,8 +96,6 @@ unsafe impl NonLocalValue for GraphNodeIndex {} Ord, Hash, PartialEq, - Serialize, - Deserialize, TraceRawVcs, NonLocalValue, Encode, @@ -953,18 +951,7 @@ impl ModuleGraph { } #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TaskInput, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub struct SingleModuleGraphWithBindingUsage { pub graph: ResolvedVc, @@ -1631,7 +1618,7 @@ impl SingleModuleGraph { } } -#[derive(Clone, Debug, Serialize, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] +#[derive(Clone, Debug, Serialize, Deserialize, TraceRawVcs, NonLocalValue)] pub enum SingleModuleGraphNode { Module(ResolvedVc>), // Models a module that is referenced but has already been visited by an earlier graph. diff --git a/turbopack/crates/turbopack-core/src/module_graph/module_batch.rs b/turbopack/crates/turbopack-core/src/module_graph/module_batch.rs index 20fe9a3fda21..fe6c5a829be3 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/module_batch.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/module_batch.rs @@ -47,19 +47,7 @@ impl ModuleOrBatch { } #[derive( - Debug, - Copy, - Clone, - Hash, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Encode, - Decode, + Debug, Copy, Clone, Hash, PartialEq, Eq, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] pub enum ChunkableModuleOrBatch { Module(ResolvedVc>), diff --git a/turbopack/crates/turbopack-core/src/module_graph/module_batches.rs b/turbopack/crates/turbopack-core/src/module_graph/module_batches.rs index 2655947f6365..702377372014 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/module_batches.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/module_batches.rs @@ -49,7 +49,7 @@ pub struct ModuleBatchesGraphEdge { pub module: Option>>, } -#[derive(Debug, Clone, Serialize, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] +#[derive(Debug, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] struct EntriesList( #[bincode(with = "turbo_bincode::indexset")] pub FxIndexSet>>, ); diff --git a/turbopack/crates/turbopack-core/src/module_graph/style_groups.rs b/turbopack/crates/turbopack-core/src/module_graph/style_groups.rs index ce5f068fd563..bdbc451f901e 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/style_groups.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/style_groups.rs @@ -4,7 +4,6 @@ use anyhow::Result; use bincode::{Decode, Encode}; use indexmap::map::Entry; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ FxIndexMap, FxIndexSet, NonLocalValue, ResolvedVc, TaskInput, TryJoinIterExt, ValueToString, @@ -24,18 +23,7 @@ use crate::{ }; #[derive( - TaskInput, - Debug, - Clone, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - NonLocalValue, - TraceRawVcs, - Encode, - Decode, + TaskInput, Debug, Clone, PartialEq, Eq, Hash, NonLocalValue, TraceRawVcs, Encode, Decode, )] pub struct StyleGroupsConfig { pub max_chunk_size: usize, diff --git a/turbopack/crates/turbopack-core/src/reference_type.rs b/turbopack/crates/turbopack-core/src/reference_type.rs index f3d9c1d7a331..cddcf2bf21b4 100644 --- a/turbopack/crates/turbopack-core/src/reference_type.rs +++ b/turbopack/crates/turbopack-core/src/reference_type.rs @@ -2,7 +2,6 @@ use std::fmt::Display; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{FxIndexMap, NonLocalValue, ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; @@ -36,8 +35,6 @@ impl InnerAssets { Eq, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Debug, Default, Clone, @@ -54,19 +51,7 @@ pub enum CommonJsReferenceSubType { } #[derive( - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Serialize, - Deserialize, - Debug, - Clone, - Copy, - Hash, - TaskInput, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, NonLocalValue, Debug, Clone, Copy, Hash, TaskInput, Encode, Decode, )] pub enum ImportWithType { Json, @@ -78,8 +63,6 @@ pub enum ImportWithType { Eq, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Debug, Default, Clone, @@ -220,8 +203,6 @@ impl ImportContext { Eq, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Debug, Default, Clone, @@ -250,8 +231,6 @@ pub enum CssReferenceSubType { Eq, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Debug, Default, Clone, @@ -270,19 +249,7 @@ pub enum UrlReferenceSubType { } #[derive( - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Serialize, - Deserialize, - Debug, - Clone, - Copy, - Hash, - TaskInput, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, NonLocalValue, Debug, Clone, Copy, Hash, TaskInput, Encode, Decode, )] pub enum TypeScriptReferenceSubType { Custom(u8), @@ -290,19 +257,7 @@ pub enum TypeScriptReferenceSubType { } #[derive( - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Serialize, - Deserialize, - Debug, - Clone, - Copy, - Hash, - TaskInput, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, NonLocalValue, Debug, Clone, Copy, Hash, TaskInput, Encode, Decode, )] pub enum WorkerReferenceSubType { WebWorker, @@ -316,19 +271,7 @@ pub enum WorkerReferenceSubType { // TODO(sokra) this was next.js specific values. We want to solve this in a // different way. #[derive( - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Serialize, - Deserialize, - Debug, - Clone, - Copy, - Hash, - TaskInput, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, NonLocalValue, Debug, Clone, Copy, Hash, TaskInput, Encode, Decode, )] pub enum EntryReferenceSubType { Web, @@ -352,8 +295,6 @@ pub enum EntryReferenceSubType { Eq, TraceRawVcs, NonLocalValue, - Serialize, - Deserialize, Debug, Default, Clone, diff --git a/turbopack/crates/turbopack-core/src/resolve/alias_map.rs b/turbopack/crates/turbopack-core/src/resolve/alias_map.rs index dfa9f569bd58..cbcc233d72db 100644 --- a/turbopack/crates/turbopack-core/src/resolve/alias_map.rs +++ b/turbopack/crates/turbopack-core/src/resolve/alias_map.rs @@ -15,7 +15,7 @@ use turbo_tasks::{ trace::{TraceRawVcs, TraceRawVcsContext}, }; -use super::pattern::Pattern; +use crate::resolve::pattern::Pattern; /// A map of [`AliasPattern`]s to the [`Template`]s they resolve to. /// @@ -25,8 +25,7 @@ use super::pattern::Pattern; /// /// If the pattern does not have a wildcard character, it will only match the /// exact string, and return the template as-is. -#[derive(Clone, Serialize, Deserialize, Encode, Decode)] -#[serde(transparent)] +#[derive(Clone, Encode, Decode)] #[bincode( encode_bounds = "T: Serialize", decode_bounds = "T: DeserializeOwned", diff --git a/turbopack/crates/turbopack-core/src/resolve/options.rs b/turbopack/crates/turbopack-core/src/resolve/options.rs index 249ab434383f..6e6463d20c5c 100644 --- a/turbopack/crates/turbopack-core/src/resolve/options.rs +++ b/turbopack/crates/turbopack-core/src/resolve/options.rs @@ -2,7 +2,6 @@ use std::{collections::BTreeMap, future::Future, pin::Pin}; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ FxIndexSet, NonLocalValue, ResolvedVc, TryJoinIterExt, ValueToString, Vc, @@ -41,20 +40,7 @@ pub enum ResolveModules { }, } -#[derive( - TraceRawVcs, - Hash, - PartialEq, - Eq, - Clone, - Copy, - Debug, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, Hash, PartialEq, Eq, Clone, Copy, Debug, NonLocalValue, Encode, Decode)] pub enum ConditionValue { Set, Unset, @@ -74,19 +60,7 @@ impl From for ConditionValue { pub type ResolutionConditions = BTreeMap; /// The different ways to resolve a package, as described in package.json. -#[derive( - TraceRawVcs, - Hash, - PartialEq, - Eq, - Clone, - Debug, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, Hash, PartialEq, Eq, Clone, Debug, NonLocalValue, Encode, Decode)] pub enum ResolveIntoPackage { /// Using the [exports] field. /// @@ -104,19 +78,7 @@ pub enum ResolveIntoPackage { } // The different ways to resolve a request within a package -#[derive( - TraceRawVcs, - Hash, - PartialEq, - Eq, - Clone, - Debug, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(TraceRawVcs, Hash, PartialEq, Eq, Clone, Debug, NonLocalValue, Encode, Decode)] pub enum ResolveInPackage { /// Using a alias field which allows to map requests AliasField(RcStr), diff --git a/turbopack/crates/turbopack-core/src/resolve/remap.rs b/turbopack/crates/turbopack-core/src/resolve/remap.rs index 72b9e4896ea7..3cc87a786b9a 100644 --- a/turbopack/crates/turbopack-core/src/resolve/remap.rs +++ b/turbopack/crates/turbopack-core/src/resolve/remap.rs @@ -8,12 +8,11 @@ use serde_json::Value; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::FxIndexMap; -use super::{ - alias_map::{AliasMap, AliasMapIter, AliasPattern, AliasTemplate}, +use crate::resolve::{ + alias_map::{AliasKey, AliasMap, AliasMapIter, AliasPattern, AliasTemplate}, options::ConditionValue, pattern::Pattern, }; -use crate::resolve::alias_map::AliasKey; /// A small helper type to differentiate parsing exports and imports fields. #[derive(Copy, Clone)] @@ -364,7 +363,7 @@ impl<'a> Iterator for ResultsIterMut<'a> { } /// Content of an "exports" field in a package.json -#[derive(PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] +#[derive(PartialEq, Eq, Encode, Decode)] pub struct ExportsField(AliasMap); impl TryFrom<&Value> for ExportsField { @@ -458,7 +457,7 @@ impl Deref for ExportsField { } /// Content of an "imports" field in a package.json -#[derive(PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] +#[derive(PartialEq, Eq, Encode, Decode)] pub struct ImportsField(AliasMap); impl TryFrom<&Value> for ImportsField { diff --git a/turbopack/crates/turbopack-core/src/source_map/mod.rs b/turbopack/crates/turbopack-core/src/source_map/mod.rs index b041b40e3d80..59181997ebee 100644 --- a/turbopack/crates/turbopack-core/src/source_map/mod.rs +++ b/turbopack/crates/turbopack-core/src/source_map/mod.rs @@ -12,7 +12,6 @@ use either::Either; use once_cell::sync::Lazy; use ref_cast::RefCast; use regex::Regex; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; use swc_sourcemap::{DecodedMap, SourceMap as RegularMap, SourceMapBuilder, SourceMapIndex}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc}; @@ -682,24 +681,6 @@ impl Deref for CrateMapWrapper { } } -impl Serialize for CrateMapWrapper { - fn serialize(&self, serializer: S) -> Result { - use serde::ser::Error; - let mut bytes = vec![]; - self.0.to_writer(&mut bytes).map_err(Error::custom)?; - serializer.serialize_bytes(bytes.as_slice()) - } -} - -impl<'de> Deserialize<'de> for CrateMapWrapper { - fn deserialize>(deserializer: D) -> Result { - use serde::de::Error; - let bytes = <&[u8]>::deserialize(deserializer)?; - let map = DecodedMap::from_reader(bytes).map_err(Error::custom)?; - Ok(CrateMapWrapper(map)) - } -} - impl Encode for CrateMapWrapper { fn encode(&self, encoder: &mut E) -> Result<(), EncodeError> { let mut bytes = Vec::new(); diff --git a/turbopack/crates/turbopack-core/src/source_pos.rs b/turbopack/crates/turbopack-core/src/source_pos.rs index 321ddee8d563..c2be88f55333 100644 --- a/turbopack/crates/turbopack-core/src/source_pos.rs +++ b/turbopack/crates/turbopack-core/src/source_pos.rs @@ -1,5 +1,5 @@ use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; use turbo_tasks_hash::DeterministicHash; @@ -21,7 +21,6 @@ const U8_CR: u8 = 0x0D; TaskInput, TraceRawVcs, Serialize, - Deserialize, DeterministicHash, NonLocalValue, Encode, diff --git a/turbopack/crates/turbopack-core/src/target.rs b/turbopack/crates/turbopack-core/src/target.rs index 6d2274e09b97..941ee5b41dcc 100644 --- a/turbopack/crates/turbopack-core/src/target.rs +++ b/turbopack/crates/turbopack-core/src/target.rs @@ -1,7 +1,6 @@ use std::fmt::Display; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, Vc, trace::TraceRawVcs}; #[turbo_tasks::value(shared)] @@ -174,20 +173,7 @@ impl CompileTarget { } } -#[derive( - PartialEq, - Eq, - Hash, - Debug, - Copy, - Clone, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Hash, Debug, Copy, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] #[repr(u8)] #[non_exhaustive] pub enum Arch { @@ -228,20 +214,7 @@ impl Display for Arch { } } -#[derive( - PartialEq, - Eq, - Hash, - Debug, - Copy, - Clone, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Hash, Debug, Copy, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] #[repr(u8)] #[non_exhaustive] pub enum Platform { @@ -278,20 +251,7 @@ impl Display for Platform { } } -#[derive( - PartialEq, - Eq, - Hash, - Debug, - Copy, - Clone, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Hash, Debug, Copy, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] #[repr(u8)] pub enum Endianness { Big, @@ -313,20 +273,7 @@ impl Display for Endianness { } } -#[derive( - PartialEq, - Eq, - Hash, - Debug, - Copy, - Clone, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Hash, Debug, Copy, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] #[repr(u8)] pub enum Libc { Glibc, diff --git a/turbopack/crates/turbopack-css/src/lib.rs b/turbopack/crates/turbopack-css/src/lib.rs index 7c1cdf0dc0dc..26bbf96cf4d7 100644 --- a/turbopack/crates/turbopack-css/src/lib.rs +++ b/turbopack/crates/turbopack-css/src/lib.rs @@ -15,14 +15,11 @@ pub(crate) mod process; pub(crate) mod references; pub(crate) mod util; -pub use asset::CssModuleAsset; use bincode::{Decode, Encode}; -pub use module_asset::ModuleCssAsset; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; -pub use self::process::*; use crate::references::import::ImportAssetReference; +pub use crate::{asset::CssModuleAsset, module_asset::ModuleCssAsset, process::*}; #[derive( PartialOrd, @@ -34,8 +31,6 @@ use crate::references::import::ImportAssetReference; Copy, Clone, Default, - Serialize, - Deserialize, TaskInput, TraceRawVcs, NonLocalValue, diff --git a/turbopack/crates/turbopack-dev-server/src/html.rs b/turbopack/crates/turbopack-dev-server/src/html.rs index 502e151073ef..fffcd06a9ead 100644 --- a/turbopack/crates/turbopack-dev-server/src/html.rs +++ b/turbopack/crates/turbopack-dev-server/src/html.rs @@ -1,7 +1,6 @@ use anyhow::Result; use bincode::{Decode, Encode}; use mime_guess::mime::TEXT_HTML_UTF_8; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, Vc, trace::TraceRawVcs, @@ -21,18 +20,7 @@ use turbopack_core::{ }; #[derive( - Clone, - Debug, - Deserialize, - Eq, - Hash, - NonLocalValue, - PartialEq, - Serialize, - TaskInput, - TraceRawVcs, - Encode, - Decode, + Clone, Debug, Eq, Hash, NonLocalValue, PartialEq, TaskInput, TraceRawVcs, Encode, Decode, )] pub struct DevHtmlEntry { pub chunkable_module: ResolvedVc>, diff --git a/turbopack/crates/turbopack-dev-server/src/source/asset_graph.rs b/turbopack/crates/turbopack-dev-server/src/source/asset_graph.rs index 3a5475705b2d..2a6a2d271a43 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/asset_graph.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/asset_graph.rs @@ -13,7 +13,7 @@ use turbopack_core::{ output::{OutputAsset, OutputAssetsReference, OutputAssetsSet}, }; -use super::{ +use crate::source::{ ContentSource, ContentSourceContent, ContentSourceData, ContentSourceSideEffect, GetContentSourceContent, route_tree::{BaseSegment, RouteTree, RouteTrees, RouteType}, diff --git a/turbopack/crates/turbopack-dev-server/src/source/combined.rs b/turbopack/crates/turbopack-dev-server/src/source/combined.rs index ed2b96d946f7..b6799d0004b7 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/combined.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/combined.rs @@ -3,11 +3,10 @@ use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc}; use turbopack_core::introspect::{Introspectable, IntrospectableChildren}; -use super::{ - ContentSource, +use crate::source::{ + ContentSource, ContentSources, route_tree::{RouteTree, RouteTrees}, }; -use crate::source::ContentSources; /// Combines multiple [ContentSource]s by trying all content sources in order. /// diff --git a/turbopack/crates/turbopack-dev-server/src/source/conditional.rs b/turbopack/crates/turbopack-dev-server/src/source/conditional.rs index ac58c108815a..92e3ae972fcc 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/conditional.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/conditional.rs @@ -3,12 +3,11 @@ use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{Completion, ResolvedVc, State, Vc}; use turbopack_core::introspect::{Introspectable, IntrospectableChildren}; -use super::{ - ContentSource, ContentSourceData, ContentSourceDataVary, ContentSourceSideEffect, - GetContentSourceContent, +use crate::source::{ + ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataVary, + ContentSourceSideEffect, ContentSources, GetContentSourceContent, route_tree::{MapGetContentSourceContent, RouteTree, RouteTrees}, }; -use crate::source::{ContentSourceContent, ContentSources}; /// Combines two [ContentSource]s like the [CombinedContentSource], but only /// allows to serve from the second source when the first source has diff --git a/turbopack/crates/turbopack-dev-server/src/source/headers.rs b/turbopack/crates/turbopack-dev-server/src/source/headers.rs index 311cfcebdf10..98ff12dcb9c1 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/headers.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/headers.rs @@ -1,7 +1,6 @@ use std::{collections::BTreeMap, hash::Hash, mem::replace, ops::DerefMut}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; /// A parsed query string from a http request @@ -13,33 +12,18 @@ use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; Default, Hash, TraceRawVcs, - Serialize, - Deserialize, NonLocalValue, TaskInput, Encode, Decode, )] -#[serde(transparent)] pub struct Headers(BTreeMap); /// The value of an http header. HTTP headers might contain non-utf-8 bytes. An /// header might also occur multiple times. #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - TaskInput, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] -#[serde(untagged)] pub enum HeaderValue { SingleString(String), SingleBytes(Vec), diff --git a/turbopack/crates/turbopack-dev-server/src/source/issue_context.rs b/turbopack/crates/turbopack-dev-server/src/source/issue_context.rs index 32fa2a9f6823..78fb290fe386 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/issue_context.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/issue_context.rs @@ -4,7 +4,7 @@ use turbo_tasks::{ResolvedVc, Vc}; use turbo_tasks_fs::FileSystemPath; use turbopack_core::introspect::{Introspectable, IntrospectableChildren}; -use super::{ +use crate::source::{ ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataVary, ContentSources, GetContentSourceContent, route_tree::{MapGetContentSourceContent, RouteTree}, diff --git a/turbopack/crates/turbopack-dev-server/src/source/lazy_instantiated.rs b/turbopack/crates/turbopack-dev-server/src/source/lazy_instantiated.rs index 45e04d3949c2..17cd173364f3 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/lazy_instantiated.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/lazy_instantiated.rs @@ -3,7 +3,7 @@ use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, Vc}; use turbopack_core::introspect::{Introspectable, IntrospectableChildren}; -use super::{ContentSource, route_tree::RouteTree}; +use crate::source::{ContentSource, route_tree::RouteTree}; /// A functor to get a [ContentSource]. Will be invoked when needed when using /// [LazyInstantiatedContentSource]. diff --git a/turbopack/crates/turbopack-dev-server/src/source/mod.rs b/turbopack/crates/turbopack-dev-server/src/source/mod.rs index 24eb3d43086e..30b6862ecf48 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/mod.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/mod.rs @@ -17,7 +17,6 @@ use std::collections::BTreeSet; use anyhow::Result; use bincode::{Decode, Encode}; use futures::{TryStreamExt, stream::Stream as StreamTrait}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ Completion, NonLocalValue, OperationVc, ResolvedVc, TaskInput, Upcast, ValueDefault, Vc, @@ -185,8 +184,6 @@ impl HeaderList { Eq, NonLocalValue, TraceRawVcs, - Serialize, - Deserialize, Clone, Debug, Hash, @@ -264,19 +261,7 @@ impl ValueDefault for Body { } /// Filter function that describes which information is required. -#[derive( - Debug, - Clone, - PartialEq, - Eq, - TraceRawVcs, - Hash, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Debug, Clone, PartialEq, Eq, TraceRawVcs, Hash, NonLocalValue, Encode, Decode)] pub enum ContentSourceDataFilter { All, Subset(BTreeSet), @@ -501,9 +486,7 @@ impl ContentSource for NoContentSource { } } -#[derive( - Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, Clone, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum RewriteType { Location { /// The new path and query used to lookup content. This _does not_ need to be the original diff --git a/turbopack/crates/turbopack-dev-server/src/source/query.rs b/turbopack/crates/turbopack-dev-server/src/source/query.rs index 1733d3a2c654..d483453812e9 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/query.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/query.rs @@ -1,7 +1,7 @@ use std::{collections::BTreeMap, hash::Hash, ops::DerefMut}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_tasks::{NonLocalValue, TaskInput, trace::TraceRawVcs}; use crate::source::ContentSourceDataFilter; @@ -15,13 +15,11 @@ use crate::source::ContentSourceDataFilter; Default, Hash, TraceRawVcs, - Serialize, Deserialize, NonLocalValue, Encode, Decode, )] -#[serde(transparent)] pub struct Query(BTreeMap); // This type contains no VCs so the default implementation works. @@ -57,17 +55,7 @@ impl DerefMut for Query { } #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, TraceRawVcs, Deserialize, NonLocalValue, Encode, Decode, )] #[serde(untagged)] pub enum QueryValue { diff --git a/turbopack/crates/turbopack-dev-server/src/source/request.rs b/turbopack/crates/turbopack-dev-server/src/source/request.rs index 2ec367d4fd19..55873d8813d2 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/request.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/request.rs @@ -1,7 +1,7 @@ use hyper::{HeaderMap, Uri}; use turbo_tasks::{NonLocalValue, trace::TraceRawVcs}; -use super::Body; +use crate::source::Body; /// A request to a content source. #[derive(Debug, Clone, NonLocalValue, TraceRawVcs)] diff --git a/turbopack/crates/turbopack-dev-server/src/source/resolve.rs b/turbopack/crates/turbopack-dev-server/src/source/resolve.rs index cd0c3e7b12e8..4a7691b2c21a 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/resolve.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/resolve.rs @@ -11,7 +11,7 @@ use hyper::{ use turbo_rcstr::RcStr; use turbo_tasks::{OperationVc, ResolvedVc, TransientInstance, Vc}; -use super::{ +use crate::source::{ ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataVary, GetContentSourceContent, GetContentSourceContents, HeaderList, ProxyResult, RewriteType, StaticContent, diff --git a/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs b/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs index f2821ee77a63..ecb1260fa710 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs @@ -2,7 +2,6 @@ use std::{fmt::Write, mem::replace}; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ FxIndexMap, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, ValueToString, Vc, @@ -14,18 +13,7 @@ use crate::source::{GetContentSourceContent, GetContentSourceContents}; /// The type of the route. This will decide about the remaining segments of the /// route after the base. #[derive( - TaskInput, - Clone, - Debug, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + TaskInput, Clone, Debug, PartialEq, Eq, Hash, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub enum RouteType { Exact, @@ -36,18 +24,7 @@ pub enum RouteType { /// Some normal segment of a route. #[derive( - TaskInput, - Clone, - Debug, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + TaskInput, Clone, Debug, PartialEq, Eq, Hash, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub enum BaseSegment { Static(RcStr), diff --git a/turbopack/crates/turbopack-dev-server/src/source/router.rs b/turbopack/crates/turbopack-dev-server/src/source/router.rs index 6e89565d75e1..c87fb94b9e4b 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/router.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/router.rs @@ -5,12 +5,11 @@ use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc}; use turbopack_core::introspect::{Introspectable, IntrospectableChildren}; -use super::{ - ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataVary, +use crate::source::{ + ContentSource, ContentSourceContent, ContentSourceData, ContentSourceDataVary, ContentSources, GetContentSourceContent, - route_tree::{BaseSegment, RouteTree, RouteTrees}, + route_tree::{BaseSegment, MapGetContentSourceContent, RouteTree, RouteTrees}, }; -use crate::source::{ContentSources, route_tree::MapGetContentSourceContent}; /// Binds different ContentSources to different subpaths. /// diff --git a/turbopack/crates/turbopack-dev-server/src/source/static_assets.rs b/turbopack/crates/turbopack-dev-server/src/source/static_assets.rs index d55cce69596f..bf87b154852a 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/static_assets.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/static_assets.rs @@ -9,7 +9,7 @@ use turbopack_core::{ version::VersionedContentExt, }; -use super::{ +use crate::source::{ ContentSource, ContentSourceContent, ContentSourceData, GetContentSourceContent, route_tree::{BaseSegment, RouteTree, RouteTrees, RouteType}, }; diff --git a/turbopack/crates/turbopack-dev-server/src/source/wrapping_source.rs b/turbopack/crates/turbopack-dev-server/src/source/wrapping_source.rs index e175b246ae68..38aa1b7d94d3 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/wrapping_source.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/wrapping_source.rs @@ -2,7 +2,7 @@ use anyhow::Result; use turbo_rcstr::RcStr; use turbo_tasks::{OperationVc, ResolvedVc, TryJoinIterExt, Vc}; -use super::{ +use crate::source::{ ContentSourceContent, ContentSourceData, ContentSourceDataVary, GetContentSourceContent, GetContentSourceContents, Rewrite, RewriteType, }; diff --git a/turbopack/crates/turbopack-ecmascript/src/chunk/batch.rs b/turbopack/crates/turbopack-ecmascript/src/chunk/batch.rs index c2c06c08b3ae..5da8288a98ff 100644 --- a/turbopack/crates/turbopack-ecmascript/src/chunk/batch.rs +++ b/turbopack/crates/turbopack-ecmascript/src/chunk/batch.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, ResolvedVc, TaskInput, TryJoinIterExt, Vc, trace::TraceRawVcs}; use turbopack_core::{ chunk::{ @@ -12,18 +11,7 @@ use turbopack_core::{ use crate::chunk::EcmascriptChunkItemWithAsyncInfo; #[derive( - Debug, - Clone, - Hash, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Encode, - Decode, + Debug, Clone, Hash, PartialEq, Eq, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] pub enum EcmascriptChunkItemOrBatchWithAsyncInfo { ChunkItem(EcmascriptChunkItemWithAsyncInfo), diff --git a/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs b/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs index 6365411b40c7..00b467b6c0d5 100644 --- a/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs +++ b/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs @@ -2,7 +2,6 @@ use std::io::Write; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use smallvec::SmallVec; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -177,19 +176,7 @@ impl EcmascriptChunkItemContent { } } -#[derive( - PartialEq, - Eq, - Default, - Debug, - Clone, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Default, Debug, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct EcmascriptChunkItemOptions { /// Whether this chunk item should be in "use strict" mode. pub strict: bool, @@ -206,18 +193,7 @@ pub struct EcmascriptChunkItemOptions { } #[derive( - Serialize, - Deserialize, - Debug, - Clone, - PartialEq, - Eq, - Hash, - TraceRawVcs, - TaskInput, - NonLocalValue, - Encode, - Decode, + Debug, Clone, PartialEq, Eq, Hash, TraceRawVcs, TaskInput, NonLocalValue, Encode, Decode, )] pub struct EcmascriptChunkItemWithAsyncInfo { pub chunk_item: ResolvedVc>, diff --git a/turbopack/crates/turbopack-ecmascript/src/lib.rs b/turbopack/crates/turbopack-ecmascript/src/lib.rs index e0758076b87d..415ea02f9841 100644 --- a/turbopack/crates/turbopack-ecmascript/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript/src/lib.rs @@ -46,18 +46,11 @@ use std::{ use anyhow::{Context, Result, anyhow, bail}; use bincode::{Decode, Encode}; -use chunk::EcmascriptChunkItem; -use code_gen::{CodeGeneration, CodeGenerationHoistedStmt}; use either::Either; use itertools::Itertools; -use parse::{ParseResult, parse}; -use path_visitor::ApplyVisitors; -use references::esm::UrlRewriteBehavior; -pub use references::{AnalyzeEcmascriptModuleResult, TURBOPACK_HELPER}; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use smallvec::SmallVec; -pub use static_code::StaticEcmascriptCode; use swc_core::{ atoms::Atom, base::SwcComments, @@ -80,10 +73,6 @@ use swc_core::{ quote, }; use tracing::{Instrument, Level, instrument}; -pub use transform::{ - CustomTransformer, EcmascriptInputTransform, EcmascriptInputTransforms, TransformContext, - TransformPlugin, -}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ FxDashMap, FxIndexMap, IntoTraitRef, NonLocalValue, ReadRef, ResolvedVc, TaskInput, @@ -112,28 +101,35 @@ use turbopack_core::{ source::Source, source_map::GenerateSourceMap, }; -// TODO remove this -pub use turbopack_resolve::ecmascript as resolve; -use self::chunk::{EcmascriptChunkItemContent, EcmascriptChunkType, EcmascriptExports}; use crate::{ analyzer::graph::EvalContext, chunk::{ - EcmascriptChunkPlaceable, + EcmascriptChunkItem, EcmascriptChunkItemContent, EcmascriptChunkPlaceable, + EcmascriptChunkType, EcmascriptExports, placeable::{SideEffectsDeclaration, get_side_effect_free_declaration}, }, - code_gen::{CodeGens, ModifiableAst}, + code_gen::{CodeGeneration, CodeGenerationHoistedStmt, CodeGens, ModifiableAst}, merged_module::MergedEcmascriptModule, - parse::generate_js_source_map, + parse::{ParseResult, generate_js_source_map, parse}, + path_visitor::ApplyVisitors, references::{ analyze_ecmascript_module, async_module::OptionAsyncModule, - esm::{base::EsmAssetReferences, export}, + esm::{UrlRewriteBehavior, base::EsmAssetReferences, export}, }, side_effect_optimization::reference::EcmascriptModulePartReference, swc_comments::{CowComments, ImmutableComments}, transform::{remove_directives, remove_shebang}, }; +pub use crate::{ + references::{AnalyzeEcmascriptModuleResult, TURBOPACK_HELPER}, + static_code::StaticEcmascriptCode, + transform::{ + CustomTransformer, EcmascriptInputTransform, EcmascriptInputTransforms, TransformContext, + TransformPlugin, + }, +}; #[derive( Eq, @@ -146,7 +142,6 @@ use crate::{ TaskInput, TraceRawVcs, NonLocalValue, - Serialize, Deserialize, Encode, Decode, @@ -168,7 +163,6 @@ pub enum SpecifiedModuleType { Clone, Copy, Default, - Serialize, Deserialize, TaskInput, TraceRawVcs, @@ -193,7 +187,6 @@ pub enum TreeShakingMode { Clone, Copy, Default, - Serialize, Deserialize, TaskInput, TraceRawVcs, @@ -232,19 +225,7 @@ pub struct OptionTreeShaking(pub Option); /// The constant to replace `typeof window` with. #[derive( - Copy, - Clone, - PartialEq, - Eq, - Debug, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - TaskInput, - Encode, - Decode, + Copy, Clone, PartialEq, Eq, Debug, Hash, TraceRawVcs, NonLocalValue, TaskInput, Encode, Decode, )] pub enum TypeofWindow { Object, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/amd.rs b/turbopack/crates/turbopack-ecmascript/src/references/amd.rs index 931835b37825..29efb77e5f04 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/amd.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/amd.rs @@ -2,7 +2,6 @@ use std::mem::take; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::{ @@ -90,18 +89,7 @@ impl ValueToString for AmdDefineAssetReference { impl ChunkableModuleReference for AmdDefineAssetReference {} #[derive( - ValueDebugFormat, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - Clone, - NonLocalValue, - Hash, - Encode, - Decode, + ValueDebugFormat, Debug, PartialEq, Eq, TraceRawVcs, Clone, NonLocalValue, Hash, Encode, Decode, )] pub enum AmdDefineDependencyElement { Request { @@ -118,8 +106,6 @@ pub enum AmdDefineDependencyElement { Debug, PartialEq, Eq, - Serialize, - Deserialize, TraceRawVcs, Copy, Clone, @@ -135,17 +121,7 @@ pub enum AmdDefineFactoryType { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct AmdDefineWithDependenciesCodeGen { dependencies_requests: Vec, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/async_module.rs b/turbopack/crates/turbopack-ecmascript/src/references/async_module.rs index ea789b9bbab9..8108a5da7352 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/async_module.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/async_module.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{ArrayLit, ArrayPat, Expr, Ident}, @@ -26,19 +25,7 @@ use crate::{ /// Information needed for generating the async module wrapper for /// [EcmascriptChunkItem](crate::chunk::EcmascriptChunkItem)s. -#[derive( - PartialEq, - Eq, - Default, - Debug, - Clone, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, Default, Debug, Clone, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct AsyncModuleOptions { pub has_top_level_await: bool, } diff --git a/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs b/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs index 236a45182936..8562dad39bf0 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::util::take::Take, ecma::ast::{CallExpr, Expr, ExprOrSpread, Lit}, @@ -152,17 +151,7 @@ impl IntoCodeGenReference for CjsRequireAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct CjsRequireAssetReferenceCodeGen { reference: ResolvedVc, @@ -288,17 +277,7 @@ impl IntoCodeGenReference for CjsRequireResolveAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct CjsRequireResolveAssetReferenceCodeGen { reference: ResolvedVc, @@ -360,17 +339,7 @@ impl CjsRequireResolveAssetReferenceCodeGen { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct CjsRequireCacheAccess { pub path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/constant_condition.rs b/turbopack/crates/turbopack-ecmascript/src/references/constant_condition.rs index b55c1708c24b..6a8504c2b941 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/constant_condition.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/constant_condition.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::quote; use turbo_tasks::{NonLocalValue, Vc, debug::ValueDebugFormat, trace::TraceRawVcs}; use turbopack_core::chunk::ChunkingContext; @@ -11,20 +10,7 @@ use crate::{ references::AstPath, }; -#[derive( - Copy, - Clone, - Hash, - PartialEq, - Eq, - Debug, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Copy, Clone, Hash, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum ConstantConditionValue { Truthy, Falsy, @@ -32,17 +18,7 @@ pub enum ConstantConditionValue { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct ConstantConditionCodeGen { value: ConstantConditionValue, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/dynamic_expression.rs b/turbopack/crates/turbopack-ecmascript/src/references/dynamic_expression.rs index ac3e27e76174..04892c4d57a2 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/dynamic_expression.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/dynamic_expression.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::quote; use turbo_tasks::{NonLocalValue, Vc, debug::ValueDebugFormat, trace::TraceRawVcs}; use turbopack_core::chunk::ChunkingContext; @@ -12,17 +11,7 @@ use crate::{ }; #[derive( - PartialEq, - Eq, - TraceRawVcs, - Serialize, - Deserialize, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] enum DynamicExpressionType { Promise, @@ -30,17 +19,7 @@ enum DynamicExpressionType { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct DynamicExpression { path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs index 3b60b50157ab..79ffaa1e4da8 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::ecma::{ ast::{Expr, KeyValueProp, Prop, PropName, SimpleAssignTarget}, visit::fields::{CalleeField, PropField}, @@ -22,19 +21,7 @@ use crate::{ }, }; -#[derive( - Hash, - Clone, - Debug, - Serialize, - Deserialize, - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Hash, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct EsmBinding { reference: ResolvedVc, export: Option, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/dynamic.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/dynamic.rs index 597fcbf409df..722c64d26662 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/dynamic.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/dynamic.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::{DUMMY_SP, util::take::Take}, ecma::ast::{CallExpr, Callee, Expr, ExprOrSpread, Lit}, @@ -125,17 +124,7 @@ impl IntoCodeGenReference for EsmAsyncAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct EsmAsyncAssetReferenceCodeGen { path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/export.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/export.rs index 5868741e85a0..d09dfef3e7da 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/export.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/export.rs @@ -3,7 +3,6 @@ use std::{borrow::Cow, collections::BTreeMap, ops::ControlFlow}; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; use rustc_hash::FxHashSet; -use serde::{Deserialize, Serialize}; use swc_core::{ common::{DUMMY_SP, SyntaxContext}, ecma::ast::{ @@ -41,20 +40,7 @@ use crate::{ /// Models the 'liveness' of an esm export /// All ESM exports are technically live but many never change and we can optimize representation to /// support that, this enum tracks the actual behavior of the export binding. -#[derive( - Copy, - Clone, - Hash, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Copy, Clone, Hash, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum Liveness { // The binding never changes after module evaluation Constant, @@ -66,19 +52,7 @@ pub enum Liveness { Mutable, } -#[derive( - Clone, - Hash, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Clone, Hash, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum EsmExport { /// A local binding that is exported (export { a } or export const a = 1) /// @@ -157,19 +131,7 @@ pub async fn all_known_export_names( Ok(Vc::cell(export_names.esm_exports.keys().cloned().collect())) } -#[derive( - Copy, - Clone, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum FoundExportType { Found, Dynamic, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs index 40672da6ef4c..57f52d2e4759 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs @@ -2,7 +2,6 @@ use std::borrow::Cow; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{Expr, Ident}, @@ -89,17 +88,7 @@ impl From for CodeGen { /// There can be many references to import.meta, and they appear at any nesting /// in the file. But all references refer to the same mutable object. #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct ImportMetaRef { ast_path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/module_id.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/module_id.rs index 80a970e48662..3e6fcf05501b 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/module_id.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/module_id.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::quote; use turbo_rcstr::RcStr; use turbo_tasks::{ @@ -77,17 +76,7 @@ impl IntoCodeGenReference for EsmModuleIdAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct EsmModuleIdAssetReferenceCodeGen { path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/module_item.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/module_item.rs index fb99c51faa3b..977eca1fa716 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/module_item.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/module_item.rs @@ -2,7 +2,6 @@ use std::mem::replace; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{ @@ -24,17 +23,7 @@ use crate::{ /// expr/decl in a normal statement. Unnamed expr/decl will be named with the /// magic identifier "export default" #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct EsmModuleItem { pub path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/url.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/url.rs index a4fc63ec1595..7662c5bca699 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/url.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/url.rs @@ -1,6 +1,5 @@ use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ ecma::ast::{Expr, ExprOrSpread, NewExpr}, quote, @@ -38,19 +37,7 @@ use crate::{ /// This allows to construct url depends on the different building context, /// e.g. SSR, CSR, or Node.js. #[derive( - Copy, - Clone, - Debug, - Eq, - PartialEq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - NonLocalValue, - Encode, - Decode, + Copy, Clone, Debug, Eq, PartialEq, Hash, TraceRawVcs, TaskInput, NonLocalValue, Encode, Decode, )] pub enum UrlRewriteBehavior { /// Omits base, resulting in a relative URL. @@ -149,17 +136,7 @@ impl IntoCodeGenReference for UrlAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct UrlAssetReferenceCodeGen { reference: ResolvedVc, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/exports_info.rs b/turbopack/crates/turbopack-ecmascript/src/references/exports_info.rs index 2f9fafe9e933..552f8599d414 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/exports_info.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/exports_info.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{Expr, Ident, KeyValueProp, ObjectLit, PropName, PropOrSpread}, @@ -25,17 +24,7 @@ use crate::{ /// /// This singleton behavior must be enforced by the caller! #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct ExportsInfoBinding {} @@ -103,17 +92,7 @@ impl From for CodeGen { /// There can be many references, and they appear at any nesting in the file. But all references /// refer to the same mutable object. #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct ExportsInfoRef { ast_path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs index d3e300476d3f..508076076295 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs @@ -2,7 +2,6 @@ use std::{borrow::Cow, fmt::Display, io::Write}; use anyhow::{Context, Result}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, ResolvedVc, TaskInput, TryJoinIterExt, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{ @@ -44,19 +43,7 @@ use crate::{ }; #[derive( - Copy, - Clone, - Debug, - Eq, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - Hash, - NonLocalValue, - Encode, - Decode, + Copy, Clone, Debug, Eq, PartialEq, TraceRawVcs, TaskInput, Hash, NonLocalValue, Encode, Decode, )] pub enum CachedExternalType { CommonJs, @@ -67,18 +54,7 @@ pub enum CachedExternalType { } #[derive( - Clone, - Debug, - Eq, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - Hash, - NonLocalValue, - Encode, - Decode, + Clone, Debug, Eq, PartialEq, TraceRawVcs, TaskInput, Hash, NonLocalValue, Encode, Decode, )] /// Whether to add a traced reference to the external module using the given context and resolve /// origin. diff --git a/turbopack/crates/turbopack-ecmascript/src/references/ident.rs b/turbopack/crates/turbopack-ecmascript/src/references/ident.rs index d3d75dbbaff1..171efed8da5c 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/ident.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/ident.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ecma::ast::Expr, quote}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, Vc, debug::ValueDebugFormat, trace::TraceRawVcs}; @@ -13,17 +12,7 @@ use crate::{ }; #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct IdentReplacement { value: RcStr, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/member.rs b/turbopack/crates/turbopack-ecmascript/src/references/member.rs index d27d0617285d..d5527c181095 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/member.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/member.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ atoms::atom, base::SwcComments, @@ -22,17 +21,7 @@ use crate::{ }; #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct MemberReplacement { key: RcStr, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs index b4259c349812..fa8f6df7b78f 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs @@ -39,7 +39,6 @@ use once_cell::sync::Lazy; use parking_lot::Mutex; use regex::Regex; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; use swc_core::{ atoms::{Atom, Wtf8Atom, atom}, common::{ @@ -3934,9 +3933,7 @@ async fn resolve_as_webpack_runtime( } } -#[derive( - Hash, Debug, Clone, Eq, Serialize, Deserialize, PartialEq, TraceRawVcs, Encode, Decode, -)] +#[derive(Hash, Debug, Clone, Eq, PartialEq, TraceRawVcs, Encode, Decode)] pub struct AstPath( #[bincode(with_serde)] #[turbo_tasks(trace_ignore)] diff --git a/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs b/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs index 19d9d6d0c05f..bfb1fb6987a2 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs @@ -2,7 +2,6 @@ use std::{borrow::Cow, collections::HashSet}; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{ @@ -28,9 +27,10 @@ use turbopack_core::{ }, }; -use super::util::{request_to_string, throw_module_not_found_expr}; use crate::{ - references::util::throw_module_not_found_error_expr, + references::util::{ + request_to_string, throw_module_not_found_error_expr, throw_module_not_found_expr, + }, runtime_functions::{ TURBOPACK_ASYNC_LOADER, TURBOPACK_EXTERNAL_IMPORT, TURBOPACK_EXTERNAL_REQUIRE, TURBOPACK_IMPORT, TURBOPACK_MODULE_CONTEXT, TURBOPACK_REQUIRE, @@ -88,19 +88,7 @@ pub(crate) enum PatternMapping { } #[derive( - Copy, - Clone, - Debug, - Eq, - PartialEq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - TaskInput, - NonLocalValue, - Encode, - Decode, + Copy, Clone, Debug, Eq, PartialEq, Hash, TraceRawVcs, TaskInput, NonLocalValue, Encode, Decode, )] pub(crate) enum ResolveType { AsyncChunkLoader, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs b/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs index 260128e83921..f4f708b03ef9 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs @@ -2,7 +2,6 @@ use std::{borrow::Cow, collections::VecDeque, sync::Arc}; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::{ @@ -325,17 +324,7 @@ impl IntoCodeGenReference for RequireContextAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct RequireContextAssetReferenceCodeGen { path: AstPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs b/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs index 6106e481bfff..274f02b98480 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs @@ -2,7 +2,6 @@ use std::mem::take; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ atoms::{Atom, atom}, base::SwcComments, @@ -33,17 +32,7 @@ use crate::{ }; #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct Unreachable { range: AstPathRange, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/worker.rs b/turbopack/crates/turbopack-ecmascript/src/references/worker.rs index 95f5fa839533..cb158aca5f68 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/worker.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/worker.rs @@ -1,6 +1,5 @@ use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::util::take::Take, ecma::ast::{Expr, ExprOrSpread, Lit, NewExpr}, @@ -127,17 +126,7 @@ impl IntoCodeGenReference for WorkerAssetReference { } #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub struct WorkerAssetReferenceCodeGen { reference: ResolvedVc, diff --git a/turbopack/crates/turbopack-ecmascript/src/side_effect_optimization/reference.rs b/turbopack/crates/turbopack-ecmascript/src/side_effect_optimization/reference.rs index 2872c1911153..a4c1eae6abb4 100644 --- a/turbopack/crates/turbopack-ecmascript/src/side_effect_optimization/reference.rs +++ b/turbopack/crates/turbopack-ecmascript/src/side_effect_optimization/reference.rs @@ -1,6 +1,5 @@ use anyhow::{Context, Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::DUMMY_SP, ecma::ast::{Ident, Lit}, @@ -30,19 +29,7 @@ use crate::{ utils::module_id_to_lit, }; -#[derive( - Debug, - Clone, - Eq, - PartialEq, - Hash, - Serialize, - Deserialize, - NonLocalValue, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Debug, Clone, Eq, PartialEq, Hash, NonLocalValue, TraceRawVcs, Encode, Decode)] enum EcmascriptModulePartReferenceMode { Synthesize, Normal, diff --git a/turbopack/crates/turbopack-ecmascript/src/utils.rs b/turbopack/crates/turbopack-ecmascript/src/utils.rs index eee825e35183..ff40627e66a2 100644 --- a/turbopack/crates/turbopack-ecmascript/src/utils.rs +++ b/turbopack/crates/turbopack-ecmascript/src/utils.rs @@ -1,7 +1,7 @@ use std::ops::Deref; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use swc_core::{ common::{DUMMY_SP, SyntaxContext}, ecma::{ @@ -179,19 +179,7 @@ format_iter!(std::fmt::Pointer); format_iter!(std::fmt::UpperExp); format_iter!(std::fmt::UpperHex); -#[derive( - Clone, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - Debug, - NonLocalValue, - Hash, - Encode, - Decode, -)] +#[derive(Clone, PartialEq, Eq, TraceRawVcs, Debug, NonLocalValue, Hash, Encode, Decode)] pub enum AstPathRange { /// The ast path to the block or expression. Exact( @@ -247,9 +235,7 @@ pub fn module_value_to_well_known_object(module_value: &ModuleValue) -> Option, } -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Deserialize)] #[turbo_tasks::value] #[serde(rename_all = "camelCase")] struct WebpackLoadersProcessingResult { @@ -340,7 +340,7 @@ pub(crate) async fn evaluate_webpack_loader( custom_evaluate(webpack_loader_context).await } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Encode, Decode)] +#[derive(Deserialize, Debug, PartialEq, Eq, Encode, Decode)] #[serde(rename_all = "camelCase")] enum LogType { Error, @@ -359,7 +359,7 @@ enum LogType { Status, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Encode, Decode)] +#[derive(Deserialize, Debug, PartialEq, Eq, Encode, Decode)] #[serde(rename_all = "camelCase")] pub struct LogInfo { time: u64, @@ -396,17 +396,7 @@ pub enum InfoMessage { } #[derive( - Debug, - Clone, - TaskInput, - Hash, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - Encode, - Decode, + Debug, Clone, TaskInput, Hash, PartialEq, Eq, Deserialize, TraceRawVcs, Encode, Decode, )] #[serde(rename_all = "camelCase")] pub struct WebpackResolveOptions { diff --git a/turbopack/crates/turbopack-resolve/src/node_native_binding.rs b/turbopack/crates/turbopack-resolve/src/node_native_binding.rs index bf0dc0ce6ad6..350fda22152e 100644 --- a/turbopack/crates/turbopack-resolve/src/node_native_binding.rs +++ b/turbopack/crates/turbopack-resolve/src/node_native_binding.rs @@ -2,7 +2,7 @@ use std::sync::LazyLock; use anyhow::{Result, bail}; use regex::Regex; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{FxIndexMap, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, ValueToString, Vc}; use turbo_tasks_fs::{ @@ -19,16 +19,16 @@ use turbopack_core::{ target::{CompileTarget, Platform}, }; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] struct NodePreGypConfigJson { binary: NodePreGypConfig, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] struct NodePreGypConfig { module_name: String, module_path: String, - napi_versions: Vec, + napi_versions: Vec, } #[turbo_tasks::value] @@ -124,7 +124,7 @@ async fn resolve_node_pre_gyp_files( for version in node_pre_gyp_config.binary.napi_versions.iter() { let native_binding_path = NAPI_VERSION_TEMPLATE.replace( node_pre_gyp_config.binary.module_path.as_str(), - format!("{version}"), + version.to_string(), ); let platform = compile_target.platform; let native_binding_path = diff --git a/turbopack/crates/turbopack-test-utils/src/jest.rs b/turbopack/crates/turbopack-test-utils/src/jest.rs index aa78b8c70027..39838e7a4b21 100644 --- a/turbopack/crates/turbopack-test-utils/src/jest.rs +++ b/turbopack/crates/turbopack-test-utils/src/jest.rs @@ -1,18 +1,18 @@ use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; // Defines common structures returned by jest/jest-circus. Shared across turbo // and next.js repos. /// The serialized form of the JS object returned from jest.run() /// describing results. -#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq, Encode, Decode)] +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Encode, Decode)] #[serde(rename_all = "camelCase")] pub struct JestRunResult { pub test_results: Vec, } -#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq, Encode, Decode)] +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Encode, Decode)] #[serde(rename_all = "camelCase")] pub struct JestTestResult { pub test_path: Vec, diff --git a/turbopack/crates/turbopack-tests/tests/execution.rs b/turbopack/crates/turbopack-tests/tests/execution.rs index 8f85bd7ae8a8..75d5b57606bc 100644 --- a/turbopack/crates/turbopack-tests/tests/execution.rs +++ b/turbopack/crates/turbopack-tests/tests/execution.rs @@ -10,7 +10,7 @@ use std::{env, path::PathBuf}; use anyhow::{Context, Result}; use bincode::{Decode, Encode}; use dunce::canonicalize; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use tracing_subscriber::{Registry, layer::SubscriberExt, util::SubscriberInitExt}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -234,16 +234,7 @@ async fn run_inner_operation( } #[derive( - PartialEq, - Eq, - Debug, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, + PartialEq, Eq, Debug, Deserialize, TraceRawVcs, ValueDebugFormat, NonLocalValue, Encode, Decode, )] #[serde(rename_all = "camelCase", deny_unknown_fields)] struct TestOptions { diff --git a/turbopack/crates/turbopack-trace-server/src/server.rs b/turbopack/crates/turbopack-trace-server/src/server.rs index f48e9cfaffda..2526db4b6cd4 100644 --- a/turbopack/crates/turbopack-trace-server/src/server.rs +++ b/turbopack/crates/turbopack-trace-server/src/server.rs @@ -16,7 +16,7 @@ use crate::{ viewer::{Update, ViewLineUpdate, ViewMode, Viewer}, }; -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Debug)] #[serde(tag = "type")] #[serde(rename_all = "kebab-case")] pub enum ServerToClientMessage { @@ -46,7 +46,7 @@ pub enum ServerToClientMessage { }, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] #[serde(tag = "type")] #[serde(rename_all = "kebab-case")] pub enum ClientToServerMessage { @@ -72,20 +72,20 @@ pub enum ClientToServerMessage { CheckForMoreData, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] pub struct Filter { pub op: Op, pub value: u64, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] #[serde(rename_all = "snake_case")] pub enum Op { Gt, Lt, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ViewRect { pub x: u64, diff --git a/turbopack/crates/turbopack-trace-server/src/timestamp.rs b/turbopack/crates/turbopack-trace-server/src/timestamp.rs index fcc3ae40f067..0256e9b958c6 100644 --- a/turbopack/crates/turbopack-trace-server/src/timestamp.rs +++ b/turbopack/crates/turbopack-trace-server/src/timestamp.rs @@ -4,11 +4,11 @@ use std::{ ops::{Add, AddAssign, Deref, Div, DivAssign, Mul, MulAssign, Sub, SubAssign}, }; -use serde::{Deserialize, Serialize}; +use serde::Serialize; const DUR_VALUE_MICROSECOND: u64 = 100; -#[derive(Clone, Copy, Default, Serialize, Deserialize)] +#[derive(Clone, Copy, Default, Serialize)] pub struct Timestamp(u64); impl Timestamp { diff --git a/turbopack/crates/turbopack-trace-server/src/u64_empty_string.rs b/turbopack/crates/turbopack-trace-server/src/u64_empty_string.rs index b58b2ffc076d..87dda8a9f853 100644 --- a/turbopack/crates/turbopack-trace-server/src/u64_empty_string.rs +++ b/turbopack/crates/turbopack-trace-server/src/u64_empty_string.rs @@ -11,6 +11,7 @@ where } } +#[allow(dead_code)] pub fn deserialize<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, diff --git a/turbopack/crates/turbopack-trace-server/src/viewer.rs b/turbopack/crates/turbopack-trace-server/src/viewer.rs index 5bc1e25bc4ac..b7b0ee53ec06 100644 --- a/turbopack/crates/turbopack-trace-server/src/viewer.rs +++ b/turbopack/crates/turbopack-trace-server/src/viewer.rs @@ -4,7 +4,7 @@ use either::Either; use itertools::Itertools; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use crate::{ server::ViewRect, @@ -252,14 +252,14 @@ pub struct Update { pub max: u64, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ViewLineUpdate { y: u64, spans: Vec, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ViewSpan { #[serde(with = "u64_empty_string")] diff --git a/turbopack/crates/turbopack-tracing/tests/node-file-trace.rs b/turbopack/crates/turbopack-tracing/tests/node-file-trace.rs index 0e92b249e975..ef28f002dde5 100644 --- a/turbopack/crates/turbopack-tracing/tests/node-file-trace.rs +++ b/turbopack/crates/turbopack-tracing/tests/node-file-trace.rs @@ -24,7 +24,7 @@ use rstest::*; use rstest_reuse::{ *, {self}, }; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use tokio::{process::Command, time::timeout}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -705,7 +705,7 @@ fn assert_output( }) } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize)] struct BenchSuite { suite: String, node_duration: String, diff --git a/turbopack/crates/turbopack-wasm/src/source.rs b/turbopack/crates/turbopack-wasm/src/source.rs index 85507454a3b5..403bae2a5323 100644 --- a/turbopack/crates/turbopack-wasm/src/source.rs +++ b/turbopack/crates/turbopack-wasm/src/source.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::{File, FileContent}; use turbopack_core::{ @@ -18,8 +17,6 @@ use turbopack_core::{ Debug, Copy, Clone, - Serialize, - Deserialize, TaskInput, TraceRawVcs, NonLocalValue, diff --git a/turbopack/crates/turbopack/src/module_options/module_options_context.rs b/turbopack/crates/turbopack/src/module_options/module_options_context.rs index beed1f8ffd0e..c9e5d217fb24 100644 --- a/turbopack/crates/turbopack/src/module_options/module_options_context.rs +++ b/turbopack/crates/turbopack/src/module_options/module_options_context.rs @@ -2,7 +2,6 @@ use std::fmt::Debug; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_esregex::EsRegex; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, ResolvedVc, ValueDefault, Vc, trace::TraceRawVcs}; @@ -42,9 +41,7 @@ pub struct LoaderRuleItem { #[turbo_tasks::value(transparent)] pub struct WebpackRules(Vec<(RcStr, LoaderRuleItem)>); -#[derive( - Clone, PartialEq, Eq, Debug, TraceRawVcs, Serialize, Deserialize, NonLocalValue, Encode, Decode, -)] +#[derive(Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum ConditionPath { Glob(RcStr), Regex(ResolvedVc), @@ -111,9 +108,7 @@ impl WebpackLoaderBuiltinConditionSet for EmptyWebpackLoaderBuiltinConditionSet /// The kind of decorators transform to use. /// [TODO]: might need bikeshed for the name (Ecma) -#[derive( - Clone, PartialEq, Eq, Debug, TraceRawVcs, Serialize, Deserialize, NonLocalValue, Encode, Decode, -)] +#[derive(Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum DecoratorsKind { Legacy, Ecma,