diff --git a/Cargo.lock b/Cargo.lock index 9aefeb617573..04a54b1a8bab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9879,7 +9879,6 @@ dependencies = [ "regex", "rustc-hash 2.1.1", "serde", - "serde_with", "turbo-bincode", "turbo-rcstr", "turbo-tasks", @@ -9907,6 +9906,7 @@ dependencies = [ "anyhow", "markdown", "mdxjs", + "serde", "turbo-rcstr", "turbo-tasks", "turbo-tasks-fs", diff --git a/crates/next-api/src/app.rs b/crates/next-api/src/app.rs index c0639362a579..06c06dbe24d5 100644 --- a/crates/next-api/src/app.rs +++ b/crates/next-api/src/app.rs @@ -34,7 +34,6 @@ use next_core::{ segment_config::{NextSegmentConfig, ParseSegmentMode}, util::{NextRuntime, app_function_name, module_styles_rule_condition, styles_rule_condition}, }; -use serde::{Deserialize, Serialize}; use tracing::Instrument; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -1069,27 +1068,13 @@ pub fn app_entry_point_to_route( #[turbo_tasks::value(transparent)] struct OutputAssetsWithAvailability((ResolvedVc, AvailabilityInfo)); -#[derive( - Copy, - Clone, - Serialize, - Deserialize, - PartialEq, - Eq, - Debug, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Copy, Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] enum AppPageEndpointType { Html, Rsc, } -#[derive( - Clone, Serialize, Deserialize, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode, -)] +#[derive(Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] enum AppEndpointType { Page { ty: AppPageEndpointType, diff --git a/crates/next-api/src/versioned_content_map.rs b/crates/next-api/src/versioned_content_map.rs index 0c9538149d38..fea961eaaa43 100644 --- a/crates/next-api/src/versioned_content_map.rs +++ b/crates/next-api/src/versioned_content_map.rs @@ -2,7 +2,6 @@ use anyhow::{Result, bail}; use bincode::{Decode, Encode}; use next_core::emit_assets; use rustc_hash::{FxHashMap, FxHashSet}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{ FxIndexSet, NonLocalValue, OperationValue, OperationVc, ResolvedVc, State, TryFlatJoinIterExt, @@ -17,17 +16,7 @@ use turbopack_core::{ }; #[derive( - Clone, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - Serialize, - Deserialize, - Debug, - NonLocalValue, - Encode, - Decode, + Clone, TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Debug, NonLocalValue, Encode, Decode, )] struct MapEntry { assets_operation: OperationVc, @@ -42,17 +31,7 @@ unsafe impl OperationValue for MapEntry {} struct OptionMapEntry(Option); #[derive( - Clone, - TraceRawVcs, - PartialEq, - Eq, - ValueDebugFormat, - Serialize, - Deserialize, - Debug, - NonLocalValue, - Encode, - Decode, + Clone, TraceRawVcs, PartialEq, Eq, ValueDebugFormat, Debug, NonLocalValue, Encode, Decode, )] pub struct PathToOutputOperation( /// We need to use an operation for outputs as it's stored for later usage and we want to @@ -71,8 +50,6 @@ pub struct PathToOutputOperation( PartialEq, Eq, ValueDebugFormat, - Serialize, - Deserialize, Debug, NonLocalValue, Encode, diff --git a/crates/next-core/src/app_structure.rs b/crates/next-core/src/app_structure.rs index 0e39928fd58e..4a680371474d 100644 --- a/crates/next-core/src/app_structure.rs +++ b/crates/next-core/src/app_structure.rs @@ -4,7 +4,6 @@ use anyhow::{Context, Result, bail}; use bincode::{Decode, Encode}; use indexmap::map::{Entry, OccupiedEntry}; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize}; use tracing::Instrument; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ @@ -38,31 +37,18 @@ fn normalize_underscore(string: &str) -> String { #[turbo_tasks::value] #[derive(Default, Debug, Clone)] pub struct AppDirModules { - #[serde(skip_serializing_if = "Option::is_none")] pub page: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub layout: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub error: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub global_error: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub global_not_found: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub loading: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub template: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub forbidden: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub unauthorized: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub not_found: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub default: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub route: Option, - #[serde(skip_serializing_if = "Metadata::is_empty", default)] pub metadata: Metadata, } @@ -87,9 +73,7 @@ impl AppDirModules { } /// A single metadata file plus an optional "alt" text file. -#[derive( - Clone, Debug, Serialize, Deserialize, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode, -)] +#[derive(Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum MetadataWithAltItem { Static { path: FileSystemPath, @@ -102,18 +86,7 @@ pub enum MetadataWithAltItem { /// A single metadata file. #[derive( - Clone, - Debug, - Hash, - Serialize, - Deserialize, - PartialEq, - Eq, - TaskInput, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, + Clone, Debug, Hash, PartialEq, Eq, TaskInput, TraceRawVcs, NonLocalValue, Encode, Decode, )] pub enum MetadataItem { Static { path: FileSystemPath }, @@ -159,29 +132,12 @@ impl From for MetadataItem { } /// Metadata file that can be placed in any segment of the app directory. -#[derive( - Default, - Clone, - Debug, - Serialize, - Deserialize, - PartialEq, - Eq, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Default, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct Metadata { - #[serde(skip_serializing_if = "Vec::is_empty", default)] pub icon: Vec, - #[serde(skip_serializing_if = "Vec::is_empty", default)] pub apple: Vec, - #[serde(skip_serializing_if = "Vec::is_empty", default)] pub twitter: Vec, - #[serde(skip_serializing_if = "Vec::is_empty", default)] pub open_graph: Vec, - #[serde(skip_serializing_if = "Option::is_none")] pub sitemap: Option, // The page indicates where the metadata is defined and captured. // The steps for capturing metadata (get_directory_tree) and constructing @@ -190,7 +146,6 @@ pub struct Metadata { // the actual path incorrectly with fillMetadataSegment. // // This is only being used for the static metadata files. - #[serde(skip_serializing_if = "Option::is_none")] pub base_page: Option, } @@ -216,11 +171,8 @@ impl Metadata { #[turbo_tasks::value] #[derive(Default, Clone, Debug)] pub struct GlobalMetadata { - #[serde(skip_serializing_if = "Option::is_none")] pub favicon: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub robots: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub manifest: Option, } @@ -534,8 +486,6 @@ impl ValueDefault for FileSystemPathVec { PartialEq, Eq, Hash, - Serialize, - Deserialize, TraceRawVcs, ValueDebugFormat, Debug, diff --git a/crates/next-core/src/next_app/app_page_entry.rs b/crates/next-core/src/next_app/app_page_entry.rs index 6cb9c42c12d0..a6832333080c 100644 --- a/crates/next-core/src/next_app/app_page_entry.rs +++ b/crates/next-core/src/next_app/app_page_entry.rs @@ -15,11 +15,10 @@ use turbopack_core::{ }; use turbopack_ecmascript::runtime_functions::{TURBOPACK_LOAD, TURBOPACK_REQUIRE}; -use super::app_entry::AppEntry; use crate::{ app_page_loader_tree::{AppPageLoaderTreeModule, GLOBAL_ERROR}, app_structure::AppPageLoaderTree, - next_app::{AppPage, AppPath}, + next_app::{AppPage, AppPath, app_entry::AppEntry}, next_config::NextConfig, next_edge::entry::wrap_edge_entry, next_server_component::NextServerComponentTransition, diff --git a/crates/next-core/src/next_client/context.rs b/crates/next-core/src/next_client/context.rs index 3ab39e4dc632..c2cdf35c0f18 100644 --- a/crates/next-core/src/next_client/context.rs +++ b/crates/next-core/src/next_client/context.rs @@ -2,7 +2,6 @@ use std::collections::BTreeSet; use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -409,19 +408,7 @@ pub async fn get_client_module_options_context( Ok(module_options_context) } -#[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - TaskInput, - TraceRawVcs, - Serialize, - Deserialize, - Encode, - Decode, -)] +#[derive(Clone, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, Encode, Decode)] pub struct ClientChunkingContextOptions { pub mode: Vc, pub root_path: FileSystemPath, diff --git a/crates/next-core/src/next_config.rs b/crates/next-core/src/next_config.rs index 4a5c543f779d..a51f2c11f0c7 100644 --- a/crates/next-core/src/next_config.rs +++ b/crates/next-core/src/next_config.rs @@ -38,17 +38,6 @@ use crate::{ }, }; -#[turbo_tasks::value] -struct NextConfigAndCustomRoutes { - config: ResolvedVc, - custom_routes: ResolvedVc, -} - -#[turbo_tasks::value] -struct CustomRoutes { - rewrites: ResolvedVc, -} - #[turbo_tasks::value(transparent)] pub struct ModularizeImports( #[bincode(with = "turbo_bincode::indexmap")] FxIndexMap, @@ -76,7 +65,7 @@ impl Default for CacheKinds { } #[turbo_tasks::value(eq = "manual")] -#[derive(Clone, Debug, Default, PartialEq)] +#[derive(Clone, Debug, Default, PartialEq, Deserialize)] #[serde(default, rename_all = "camelCase")] pub struct NextConfig { // IMPORTANT: all fields should be private and access should be wrapped within a turbo-tasks @@ -493,26 +482,17 @@ pub struct Redirect { pub status: RedirectStatus, } -#[derive( - Clone, Debug, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode, -)] -#[serde(rename_all = "camelCase")] +#[derive(Clone, Debug)] pub struct Rewrite { pub source: String, pub destination: String, - #[serde(skip_serializing_if = "Option::is_none")] pub base_path: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub locale: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub has: Option>, - #[serde(skip_serializing_if = "Option::is_none")] pub missing: Option>, } -#[turbo_tasks::value(eq = "manual")] -#[derive(Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] +#[derive(Clone, Debug)] pub struct Rewrites { pub before_files: Vec, pub after_files: Vec, @@ -539,7 +519,7 @@ pub struct TypeScriptConfig { } #[turbo_tasks::value(eq = "manual", operation)] -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ImageConfig { pub device_sizes: Vec, @@ -676,7 +656,6 @@ pub enum RemotePatternProtocol { Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, NonLocalValue, @@ -806,7 +785,7 @@ pub struct RuleConfigItem { pub condition: Option, } -#[derive(Clone, Debug, PartialEq, Eq, Serialize, TraceRawVcs, NonLocalValue, OperationValue)] +#[derive(Clone, Debug, PartialEq, Eq, TraceRawVcs, Serialize, NonLocalValue, OperationValue)] #[serde(transparent)] pub struct RuleConfigCollection(Vec); @@ -845,7 +824,7 @@ pub enum LoaderItem { } #[turbo_tasks::value(operation)] -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub enum ModuleIds { Named, @@ -856,16 +835,7 @@ pub enum ModuleIds { pub struct OptionModuleIds(pub Option); #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum MdxRsOptions { @@ -874,7 +844,7 @@ pub enum MdxRsOptions { } #[turbo_tasks::value(shared, operation)] -#[derive(Clone, Debug, Default)] +#[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub enum ReactCompilerCompilationMode { #[default] @@ -884,7 +854,7 @@ pub enum ReactCompilerCompilationMode { } #[turbo_tasks::value(shared, operation)] -#[derive(Clone, Debug, Default)] +#[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum ReactCompilerPanicThreshold { #[default] @@ -893,9 +863,10 @@ pub enum ReactCompilerPanicThreshold { AllErrors, } -/// Subset of react compiler options +/// Subset of react compiler options, we pass these options through to the webpack loader, so it +/// must be serializable #[turbo_tasks::value(shared, operation)] -#[derive(Clone, Debug, Default)] +#[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ReactCompilerOptions { #[serde(default)] @@ -930,7 +901,6 @@ pub struct OptionalReactCompilerOptions(Option> Debug, Default, PartialEq, - Serialize, Deserialize, TraceRawVcs, ValueDebugFormat, @@ -1274,16 +1244,7 @@ pub enum MiddlewarePrefetchType { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum EmotionTransformOptionsOrBoolean { @@ -1301,16 +1262,7 @@ impl EmotionTransformOptionsOrBoolean { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum StyledComponentsTransformOptionsOrBoolean { @@ -1328,7 +1280,7 @@ impl StyledComponentsTransformOptionsOrBoolean { } #[turbo_tasks::value(eq = "manual")] -#[derive(Clone, Debug, PartialEq, Default, OperationValue)] +#[derive(Clone, Debug, PartialEq, Default, OperationValue, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CompilerConfig { pub react_remove_properties: Option, @@ -1339,16 +1291,7 @@ pub struct CompilerConfig { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged, rename_all = "camelCase")] pub enum ReactRemoveProperties { @@ -1366,16 +1309,7 @@ impl ReactRemoveProperties { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(untagged)] pub enum RemoveConsoleConfig { diff --git a/crates/next-core/src/next_edge/context.rs b/crates/next-core/src/next_edge/context.rs index 347dcf1924b0..4f2fe709003e 100644 --- a/crates/next-core/src/next_edge/context.rs +++ b/crates/next-core/src/next_edge/context.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -197,19 +196,7 @@ pub async fn get_edge_resolve_options_context( .cell()) } -#[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - TaskInput, - TraceRawVcs, - Serialize, - Deserialize, - Encode, - Decode, -)] +#[derive(Clone, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, Encode, Decode)] pub struct EdgeChunkingContextOptions { pub mode: Vc, pub root_path: FileSystemPath, diff --git a/crates/next-core/src/next_font/font_fallback.rs b/crates/next-core/src/next_font/font_fallback.rs index ffa52a079db4..90118e059198 100644 --- a/crates/next-core/src/next_font/font_fallback.rs +++ b/crates/next-core/src/next_font/font_fallback.rs @@ -1,7 +1,7 @@ use anyhow::Result; use bincode::{Decode, Encode}; use once_cell::sync::Lazy; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{NonLocalValue, ResolvedVc, Vc, trace::TraceRawVcs}; @@ -80,7 +80,7 @@ impl FontFallbacks { /// An adjustment to be made to a fallback font to approximate the geometry of /// the main webfont. Rendered as e.g. `ascent-override: 56.8%;` in the /// stylesheet -#[derive(Debug, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] +#[derive(Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, Encode, Decode)] pub(crate) struct FontAdjustment { pub ascent: f64, pub descent: f64, diff --git a/crates/next-core/src/next_font/google/font_fallback.rs b/crates/next-core/src/next_font/google/font_fallback.rs index a830d3f63892..ca0286e19c2c 100644 --- a/crates/next-core/src/next_font/google/font_fallback.rs +++ b/crates/next-core/src/next_font/google/font_fallback.rs @@ -2,7 +2,7 @@ use anyhow::{Context, Result}; use bincode::{Decode, Encode}; use once_cell::sync::Lazy; use regex::Regex; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{FxIndexMap, NonLocalValue, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -22,9 +22,7 @@ use crate::{ }; /// An entry in the Google fonts metrics map -#[derive( - Deserialize, Serialize, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode, -)] +#[derive(Deserialize, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] #[serde(rename_all = "camelCase")] pub(super) struct FontMetricsMapEntry { category: RcStr, @@ -35,13 +33,13 @@ pub(super) struct FontMetricsMapEntry { x_width_avg: u64, } -#[derive(Debug)] +#[derive(Debug, Deserialize)] #[turbo_tasks::value] pub(super) struct FontMetricsMap( #[bincode(with = "turbo_bincode::indexmap")] pub FxIndexMap, ); -#[derive(Debug, PartialEq, Serialize, Deserialize, TraceRawVcs, NonLocalValue)] +#[derive(Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue)] struct Fallback { pub font_family: RcStr, pub adjustment: Option, diff --git a/crates/next-core/src/next_font/google/mod.rs b/crates/next-core/src/next_font/google/mod.rs index ad8d4eb68e3e..4b4a16e7ae72 100644 --- a/crates/next-core/src/next_font/google/mod.rs +++ b/crates/next-core/src/next_font/google/mod.rs @@ -37,22 +37,25 @@ use turbopack_node::{ execution_context::ExecutionContext, }; -use self::{ - font_fallback::get_font_fallback, - options::{FontDataEntry, FontWeights, NextFontGoogleOptions, options_from_request}, - stylesheet::build_stylesheet, - util::{get_font_axes, get_stylesheet_url}, -}; -use super::{ - font_fallback::FontFallback, - util::{ - FontCssProperties, FontFamilyType, can_use_next_font, get_request_hash, get_request_id, - get_scoped_font_family, - }, -}; use crate::{ - embed_js::next_js_file_path, mode::NextMode, next_app::metadata::split_extension, - next_font::issue::NextFontIssue, util::load_next_js_json_file, + embed_js::next_js_file_path, + mode::NextMode, + next_app::metadata::split_extension, + next_font::{ + font_fallback::FontFallback, + google::{ + font_fallback::get_font_fallback, + options::{FontDataEntry, FontWeights, NextFontGoogleOptions, options_from_request}, + stylesheet::build_stylesheet, + util::{get_font_axes, get_stylesheet_url}, + }, + issue::NextFontIssue, + util::{ + FontCssProperties, FontFamilyType, can_use_next_font, get_request_hash, get_request_id, + get_scoped_font_family, + }, + }, + util::load_next_js_json_file, }; pub mod font_fallback; @@ -74,6 +77,7 @@ pub const USER_AGENT_FOR_GOOGLE_FONTS: &str = "Mozilla/5.0 (Macintosh; Intel Mac pub const GOOGLE_FONTS_INTERNAL_PREFIX: &str = "@vercel/turbopack-next/internal/font/google/font"; #[turbo_tasks::value(transparent)] +#[derive(Deserialize)] struct FontData(#[bincode(with = "turbo_bincode::indexmap")] FxIndexMap); #[turbo_tasks::value(shared)] diff --git a/crates/next-core/src/next_server/context.rs b/crates/next-core/src/next_server/context.rs index f21fe05e81eb..ddf19381336e 100644 --- a/crates/next-core/src/next_server/context.rs +++ b/crates/next-core/src/next_server/context.rs @@ -2,7 +2,6 @@ use std::collections::BTreeSet; use anyhow::{Result, bail}; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, TaskInput, Vc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -982,19 +981,7 @@ pub async fn get_server_module_options_context( Ok(module_options_context) } -#[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - TaskInput, - TraceRawVcs, - Serialize, - Deserialize, - Encode, - Decode, -)] +#[derive(Clone, Debug, PartialEq, Eq, Hash, TaskInput, TraceRawVcs, Encode, Decode)] pub struct ServerChunkingContextOptions { pub mode: Vc, pub root_path: FileSystemPath, diff --git a/crates/next-core/src/next_shared/transforms/relay.rs b/crates/next-core/src/next_shared/transforms/relay.rs index 51d22a30b3b7..ad863aa5fe93 100644 --- a/crates/next-core/src/next_shared/transforms/relay.rs +++ b/crates/next-core/src/next_shared/transforms/relay.rs @@ -4,8 +4,10 @@ use turbo_tasks_fs::FileSystemPath; use turbopack::module_options::ModuleRule; use turbopack_ecmascript_plugins::transform::relay::RelayTransformer; -use super::get_ecma_transform_rule; -use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage}; +use crate::{ + next_config::NextConfig, + next_shared::transforms::{EcmascriptTransformStage, get_ecma_transform_rule}, +}; /// Returns a transform rule for the relay graphql transform. pub async fn get_relay_transform_rule( diff --git a/turbopack/crates/turbo-tasks-fs/src/invalidator_map.rs b/turbopack/crates/turbo-tasks-fs/src/invalidator_map.rs index 7381550034d2..827633552dd4 100644 --- a/turbopack/crates/turbo-tasks-fs/src/invalidator_map.rs +++ b/turbopack/crates/turbo-tasks-fs/src/invalidator_map.rs @@ -6,12 +6,11 @@ use std::{ use concurrent_queue::ConcurrentQueue; use rustc_hash::FxHashMap; -use serde::{Deserialize, Serialize, de::Visitor}; use turbo_tasks::{Invalidator, ReadRef}; use crate::{FileContent, LinkContent}; -#[derive(Serialize, Deserialize, PartialEq, Eq)] +#[derive(PartialEq, Eq)] pub enum WriteContent { File(ReadRef), Link(ReadRef), @@ -64,49 +63,3 @@ impl InvalidatorMap { }); } } - -impl Serialize for InvalidatorMap { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - // TODO: This stores absolute `PathBuf`s, which are machine-specific. This should - // normalize/denormalize paths relative to the disk filesystem root. - // - // Potential optimization: We invalidate all fs reads immediately upon resuming from a - // persisted cache, but we don't invalidate the fs writes. Those read invalidations trigger - // re-inserts into the `InvalidatorMap`. If we knew that certain invalidators were only - // needed for reads, we could potentially avoid serializing those paths entirely. - let inner: &LockedInvalidatorMap = &self.lock().unwrap(); - serializer.serialize_newtype_struct("InvalidatorMap", inner) - } -} - -impl<'de> Deserialize<'de> for InvalidatorMap { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - struct V; - - impl<'de> Visitor<'de> for V { - type Value = InvalidatorMap; - - fn expecting(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "an InvalidatorMap") - } - - fn visit_newtype_struct(self, deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - Ok(InvalidatorMap { - queue: ConcurrentQueue::unbounded(), - map: Mutex::new(Deserialize::deserialize(deserializer)?), - }) - } - } - - deserializer.deserialize_newtype_struct("InvalidatorMap", V) - } -} diff --git a/turbopack/crates/turbo-tasks-fs/src/lib.rs b/turbopack/crates/turbo-tasks-fs/src/lib.rs index 0ddd4e3f3d2c..6c3dd82548cb 100644 --- a/turbopack/crates/turbo-tasks-fs/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fs/src/lib.rs @@ -2042,61 +2042,12 @@ impl File { } } -mod mime_option_serde { - use std::{fmt, str::FromStr}; - - use mime::Mime; - use serde::{Deserializer, Serializer, de}; - - pub fn serialize(mime: &Option, serializer: S) -> Result - where - S: Serializer, - { - if let Some(mime) = mime { - serializer.serialize_str(mime.as_ref()) - } else { - serializer.serialize_str("") - } - } - - pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> - where - D: Deserializer<'de>, - { - struct Visitor; - - impl de::Visitor<'_> for Visitor { - type Value = Option; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a valid MIME type or empty string") - } - - fn visit_str(self, value: &str) -> Result, E> - where - E: de::Error, - { - if value.is_empty() { - Ok(None) - } else { - Mime::from_str(value) - .map(Some) - .map_err(|e| E::custom(format!("{e}"))) - } - } - } - - deserializer.deserialize_str(Visitor) - } -} - #[turbo_tasks::value(shared)] #[derive(Debug, Clone, Default)] pub struct FileMeta { // Size of the file // len: u64, permissions: Permissions, - #[serde(with = "mime_option_serde")] #[bincode(with = "turbo_bincode::mime_option")] #[turbo_tasks(trace_ignore)] content_type: Option, @@ -2387,19 +2338,7 @@ pub enum RawDirectoryEntry { Other, } -#[derive( - Hash, - Clone, - Debug, - PartialEq, - Eq, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Hash, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum DirectoryEntry { File(FileSystemPath), Directory(FileSystemPath), diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/derive_non_local_value/fail_contains_vc_inside_generic.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/derive_non_local_value/fail_contains_vc_inside_generic.stderr index b45c439e47b4..c997c4e77d9b 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/derive_non_local_value/fail_contains_vc_inside_generic.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/derive_non_local_value/fail_contains_vc_inside_generic.stderr @@ -16,7 +16,7 @@ error[E0277]: the trait bound `Vc: NonLocalValue` is not satisfied and $N others = note: required for `[Vc; 4]` to implement `NonLocalValue` = note: 2 redundant requirements hidden - = note: required for `std::option::Option; 4]>>` to implement `NonLocalValue` + = note: required for `Option; 4]>>` to implement `NonLocalValue` note: required by a bound in `DeriveNonLocalValueAssertion::assert_impl_NonLocalValue` --> tests/derive_non_local_value/fail_contains_vc_inside_generic.rs:5:10 | diff --git a/turbopack/crates/turbo-tasks-macros/src/value_macro.rs b/turbopack/crates/turbo-tasks-macros/src/value_macro.rs index 82c725a500f2..fbc9f35212bb 100644 --- a/turbopack/crates/turbo-tasks-macros/src/value_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/value_macro.rs @@ -6,7 +6,7 @@ use quote::{ToTokens, quote, quote_spanned}; use regex::Regex; use syn::{ Error, Expr, ExprLit, Fields, FieldsUnnamed, Generics, Item, ItemEnum, ItemStruct, Lit, LitStr, - Meta, MetaNameValue, Result, Token, + Meta, MetaNameValue, Token, parse::{Parse, ParseStream}, parse_macro_input, parse_quote, spanned::Spanned, @@ -20,7 +20,7 @@ enum CellMode { } impl Parse for CellMode { - fn parse(input: ParseStream) -> Result { + fn parse(input: ParseStream) -> syn::Result { let ident = input.parse::()?; Self::try_from(ident) } @@ -29,7 +29,7 @@ impl Parse for CellMode { impl TryFrom for CellMode { type Error = Error; - fn try_from(lit: LitStr) -> std::result::Result { + fn try_from(lit: LitStr) -> Result { match lit.value().as_str() { "compare" => Ok(CellMode::Compare), "new" => Ok(CellMode::New), @@ -45,7 +45,7 @@ enum SerializationMode { } impl Parse for SerializationMode { - fn parse(input: ParseStream) -> Result { + fn parse(input: ParseStream) -> syn::Result { let ident = input.parse::()?; Self::try_from(ident) } @@ -54,7 +54,7 @@ impl Parse for SerializationMode { impl TryFrom for SerializationMode { type Error = Error; - fn try_from(lit: LitStr) -> std::result::Result { + fn try_from(lit: LitStr) -> Result { match lit.value().as_str() { "none" => Ok(SerializationMode::None), "auto" => Ok(SerializationMode::Auto), @@ -78,7 +78,7 @@ struct ValueArguments { } impl Parse for ValueArguments { - fn parse(input: ParseStream) -> Result { + fn parse(input: ParseStream) -> syn::Result { let mut result = ValueArguments { serialization_mode: SerializationMode::Auto, shared: false, @@ -300,19 +300,11 @@ pub fn value(args: TokenStream, input: TokenStream) -> TokenStream { SerializationMode::Auto => { struct_attributes.push(quote! { #[derive( - turbo_tasks::macro_helpers::serde::Serialize, - turbo_tasks::macro_helpers::serde::Deserialize, turbo_tasks::macro_helpers::bincode::Encode, turbo_tasks::macro_helpers::bincode::Decode, )] - #[serde(crate = "turbo_tasks::macro_helpers::serde")] #[bincode(crate = "turbo_tasks::macro_helpers::bincode")] }); - if transparent { - struct_attributes.push(quote! { - #[serde(transparent)] - }); - } } SerializationMode::None | SerializationMode::Custom => {} }; diff --git a/turbopack/crates/turbo-tasks/src/macro_helpers.rs b/turbopack/crates/turbo-tasks/src/macro_helpers.rs index a6f0bef9db73..eea5290e1fb1 100644 --- a/turbopack/crates/turbo-tasks/src/macro_helpers.rs +++ b/turbopack/crates/turbo-tasks/src/macro_helpers.rs @@ -4,7 +4,6 @@ pub use async_trait::async_trait; pub use bincode; pub use once_cell::sync::{Lazy, OnceCell}; use rustc_hash::FxHashMap; -pub use serde; pub use shrink_to_fit; pub use tracing; diff --git a/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs b/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs index b60ce14c6df1..ebf10dfda93d 100644 --- a/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs +++ b/turbopack/crates/turbopack-core/src/chunk/chunking_context.rs @@ -50,7 +50,7 @@ pub enum MangleType { } #[turbo_tasks::value(shared)] -#[derive(Debug, TaskInput, Clone, Copy, Hash, DeterministicHash)] +#[derive(Debug, TaskInput, Clone, Copy, Hash, DeterministicHash, Deserialize)] pub enum MinifyType { // TODO instead of adding a new property here, // refactor that to Minify(MinifyOptions) to allow defaults on MinifyOptions @@ -257,7 +257,7 @@ pub struct ChunkingConfig { pub struct ChunkingConfigs(FxHashMap>, ChunkingConfig>); #[turbo_tasks::value(shared)] -#[derive(Debug, Clone, Copy, Hash, TaskInput, Default)] +#[derive(Debug, Clone, Copy, Hash, TaskInput, Default, Deserialize)] pub enum SourceMapSourceType { AbsoluteFileUri, RelativeUri, diff --git a/turbopack/crates/turbopack-core/src/chunk/mod.rs b/turbopack/crates/turbopack-core/src/chunk/mod.rs index 1d8871ea0d23..76d769194d48 100644 --- a/turbopack/crates/turbopack-core/src/chunk/mod.rs +++ b/turbopack/crates/turbopack-core/src/chunk/mod.rs @@ -52,7 +52,7 @@ use crate::{ /// A module id, which can be a number or string #[turbo_tasks::value(shared, operation)] -#[derive(Debug, Clone, Hash, Ord, PartialOrd, DeterministicHash)] +#[derive(Debug, Clone, Hash, Ord, PartialOrd, DeterministicHash, Serialize)] #[serde(untagged)] pub enum ModuleId { Number(u64), diff --git a/turbopack/crates/turbopack-core/src/compile_time_info.rs b/turbopack/crates/turbopack-core/src/compile_time_info.rs index ee0afc764dec..e2ddb3d8a4b1 100644 --- a/turbopack/crates/turbopack-core/src/compile_time_info.rs +++ b/turbopack/crates/turbopack-core/src/compile_time_info.rs @@ -295,19 +295,7 @@ pub struct FreeVarReferences( pub FxIndexMap, FreeVarReference>, ); -#[derive( - Debug, - Default, - Clone, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Debug, Default, Clone, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct FreeVarReferenceVcs( #[bincode(with = "turbo_bincode::indexmap")] pub FxIndexMap, ResolvedVc>, diff --git a/turbopack/crates/turbopack-core/src/condition.rs b/turbopack/crates/turbopack-core/src/condition.rs index bc2d3af2f669..f3d884ee942b 100644 --- a/turbopack/crates/turbopack-core/src/condition.rs +++ b/turbopack/crates/turbopack-core/src/condition.rs @@ -1,11 +1,8 @@ use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; -#[derive( - Debug, Clone, Serialize, Deserialize, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, Clone, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode)] pub enum ContextCondition { All(Vec), Any(Vec), diff --git a/turbopack/crates/turbopack-core/src/issue/mod.rs b/turbopack/crates/turbopack-core/src/issue/mod.rs index 6cd2a462ef8f..41a1d0ca316b 100644 --- a/turbopack/crates/turbopack-core/src/issue/mod.rs +++ b/turbopack/crates/turbopack-core/src/issue/mod.rs @@ -30,7 +30,9 @@ use crate::{ }; #[turbo_tasks::value(shared)] -#[derive(PartialOrd, Ord, Copy, Clone, Hash, Debug, DeterministicHash, TaskInput)] +#[derive( + PartialOrd, Ord, Copy, Clone, Hash, Debug, DeterministicHash, TaskInput, Serialize, Deserialize, +)] #[serde(rename_all = "camelCase")] pub enum IssueSeverity { Bug, @@ -80,7 +82,7 @@ impl Display for IssueSeverity { /// Represents a section of structured styled text. This can be interpreted and /// rendered by various UIs as appropriate, e.g. HTML for display on the web, /// ANSI sequences in TTYs. -#[derive(Clone, Debug, PartialOrd, Ord, DeterministicHash)] +#[derive(Clone, Debug, PartialOrd, Ord, DeterministicHash, Serialize)] #[turbo_tasks::value(shared)] pub enum StyledString { /// Multiple [StyledString]s concatenated into a single line. Each item is @@ -632,7 +634,7 @@ async fn into_plain_trace(traces: Vec>>) -> Result>) -> Result), Conditional(Vec<(RcStr, ReplacedSubpathValue)>), diff --git a/turbopack/crates/turbopack-core/src/source_map/source_map_asset.rs b/turbopack/crates/turbopack-core/src/source_map/source_map_asset.rs index 1496f50e5b9d..96804bba51bc 100644 --- a/turbopack/crates/turbopack-core/src/source_map/source_map_asset.rs +++ b/turbopack/crates/turbopack-core/src/source_map/source_map_asset.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ FxIndexSet, NonLocalValue, ResolvedVc, ValueToString, Vc, debug::ValueDebugFormat, @@ -17,17 +16,7 @@ use crate::{ source_map::{GenerateSourceMap, SourceMap}, }; -#[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - NonLocalValue, - TraceRawVcs, - ValueDebugFormat, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, NonLocalValue, TraceRawVcs, ValueDebugFormat, Encode, Decode)] enum PathType { Fixed { path: FileSystemPath, diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs index ef1ec7ee9808..ca0af1075347 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs @@ -29,7 +29,6 @@ use turbopack_ecmascript::{CustomTransformer, TransformContext}; Eq, Debug, TraceRawVcs, - Serialize, Deserialize, NonLocalValue, OperationValue, @@ -75,7 +74,7 @@ impl From<&EmotionItemSpecifier> for swc_emotion::ItemSpecifier { pub type EmotionImportMapValue = IndexMap; #[turbo_tasks::value(shared, operation)] -#[derive(Default, Clone, Debug)] +#[derive(Default, Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub struct EmotionTransformConfig { pub sourcemap: Option, diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/relay.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/relay.rs index 2154802db3cb..bcab0ee420c7 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/relay.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/relay.rs @@ -3,7 +3,7 @@ use std::{path::PathBuf, sync::Arc}; use anyhow::{Context, Result}; use async_trait::async_trait; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use swc_core::{common::FileName, ecma::ast::Program}; use swc_relay::RelayLanguageConfig; use turbo_tasks::{NonLocalValue, OperationValue, trace::TraceRawVcs}; @@ -11,16 +11,7 @@ use turbo_tasks_fs::FileSystemPath; use turbopack_ecmascript::{CustomTransformer, TransformContext}; #[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 RelayConfig { @@ -30,16 +21,7 @@ pub struct RelayConfig { } #[derive( - Clone, - Debug, - PartialEq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - OperationValue, - Encode, - Decode, + Clone, Debug, PartialEq, Deserialize, TraceRawVcs, NonLocalValue, OperationValue, Encode, Decode, )] #[serde(rename_all = "lowercase")] pub enum RelayLanguage { diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/styled_components.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/styled_components.rs index dcfb1b93de07..52eb66595948 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/styled_components.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/styled_components.rs @@ -1,11 +1,12 @@ use anyhow::Result; use async_trait::async_trait; +use serde::Deserialize; use swc_core::{atoms::Wtf8Atom, common::comments::NoopComments, ecma::ast::Program}; use turbo_tasks::{ValueDefault, Vc}; use turbopack_ecmascript::{CustomTransformer, TransformContext}; #[turbo_tasks::value(shared, operation)] -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Deserialize)] #[serde(default, rename_all = "camelCase")] pub struct StyledComponentsTransformConfig { pub display_name: bool, diff --git a/turbopack/crates/turbopack-ecmascript-runtime/src/runtime_type.rs b/turbopack/crates/turbopack-ecmascript-runtime/src/runtime_type.rs index ce42cf19bf75..29ce57e034d6 100644 --- a/turbopack/crates/turbopack-ecmascript-runtime/src/runtime_type.rs +++ b/turbopack/crates/turbopack-ecmascript-runtime/src/runtime_type.rs @@ -1,7 +1,8 @@ +use serde::Deserialize; use turbo_tasks::TaskInput; #[turbo_tasks::value(shared)] -#[derive(Debug, Clone, Copy, Hash, TaskInput)] +#[derive(Debug, Clone, Copy, Hash, TaskInput, Deserialize)] pub enum RuntimeType { Development, Production, diff --git a/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs b/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs index 6311b29bf58d..6365411b40c7 100644 --- a/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs +++ b/turbopack/crates/turbopack-ecmascript/src/chunk/item.rs @@ -35,8 +35,6 @@ use crate::{ PartialEq, Eq, Hash, - Serialize, - Deserialize, TraceRawVcs, TaskInput, NonLocalValue, diff --git a/turbopack/crates/turbopack-ecmascript/src/code_gen.rs b/turbopack/crates/turbopack-ecmascript/src/code_gen.rs index 7536b1a13380..0ac5934e5980 100644 --- a/turbopack/crates/turbopack-ecmascript/src/code_gen.rs +++ b/turbopack/crates/turbopack-ecmascript/src/code_gen.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ base::SwcComments, ecma::{ @@ -175,17 +174,7 @@ impl_modify!(visit_mut_switch_case, SwitchCase); impl_modify!(visit_mut_program, Program); #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Hash, - Debug, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Hash, Debug, Encode, Decode, )] pub enum CodeGen { // AMD occurs very rarely and makes the enum much bigger diff --git a/turbopack/crates/turbopack-ecmascript/src/references/constant_value.rs b/turbopack/crates/turbopack-ecmascript/src/references/constant_value.rs index 524eafd3c361..9bf639fc3de8 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/constant_value.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/constant_value.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use swc_core::{ common::{DUMMY_SP, FileName, SourceMap, sync::Lrc}, ecma::{ @@ -20,18 +19,7 @@ use crate::{ }; #[derive( - Clone, - Debug, - PartialEq, - Eq, - Hash, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Encode, - Decode, + Clone, Debug, PartialEq, Eq, Hash, TraceRawVcs, ValueDebugFormat, NonLocalValue, Encode, Decode, )] pub struct ConstantValueCodeGen { value: CompileTimeDefineValue, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs index 97e6df63af99..40672da6ef4c 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/meta.rs @@ -28,17 +28,7 @@ use crate::{ /// /// This singleton behavior must be enforced by the caller! #[derive( - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - ValueDebugFormat, - NonLocalValue, - Debug, - Hash, - Encode, - Decode, + PartialEq, Eq, TraceRawVcs, ValueDebugFormat, NonLocalValue, Debug, Hash, Encode, Decode, )] pub struct ImportMetaBinding { path: FileSystemPath, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs b/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs index d6204e64a4bd..19d9d6d0c05f 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/pattern_mapping.rs @@ -38,17 +38,7 @@ use crate::{ utils::module_id_to_lit, }; -#[derive( - PartialEq, - Eq, - ValueDebugFormat, - TraceRawVcs, - Serialize, - Deserialize, - NonLocalValue, - Encode, - Decode, -)] +#[derive(PartialEq, Eq, ValueDebugFormat, TraceRawVcs, NonLocalValue, Encode, Decode)] pub(crate) enum SinglePatternMapping { /// Invalid request. Invalid, diff --git a/turbopack/crates/turbopack-ecmascript/src/transform/mod.rs b/turbopack/crates/turbopack-ecmascript/src/transform/mod.rs index 2a66ecf2948f..75af038dea4d 100644 --- a/turbopack/crates/turbopack-ecmascript/src/transform/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/transform/mod.rs @@ -33,9 +33,7 @@ pub enum EcmascriptInputTransform { Plugin(ResolvedVc), PresetEnv(ResolvedVc), React { - #[serde(default)] development: bool, - #[serde(default)] refresh: bool, // swc.jsc.transform.react.importSource import_source: ResolvedVc>, @@ -45,17 +43,12 @@ pub enum EcmascriptInputTransform { // These options are subset of swc_core::ecma::transforms::typescript::Config, but // it doesn't derive `Copy` so repeating values in here TypeScript { - #[serde(default)] use_define_for_class_fields: bool, }, Decorators { - #[serde(default)] is_legacy: bool, - #[serde(default)] is_ecma: bool, - #[serde(default)] emit_decorators_metadata: bool, - #[serde(default)] use_define_for_class_fields: bool, }, } diff --git a/turbopack/crates/turbopack-image/Cargo.toml b/turbopack/crates/turbopack-image/Cargo.toml index 94f27b739828..4f01d1a8aaef 100644 --- a/turbopack/crates/turbopack-image/Cargo.toml +++ b/turbopack/crates/turbopack-image/Cargo.toml @@ -35,7 +35,6 @@ once_cell = { workspace = true } regex = { workspace = true } rustc-hash = { workspace = true } serde = { workspace = true } -serde_with = { workspace = true } turbo-bincode = { workspace = true } turbo-rcstr = { workspace = true } turbo-tasks = { workspace = true } diff --git a/turbopack/crates/turbopack-image/src/process/mod.rs b/turbopack/crates/turbopack-image/src/process/mod.rs index 2935f6a37c37..85ed97372e9d 100644 --- a/turbopack/crates/turbopack-image/src/process/mod.rs +++ b/turbopack/crates/turbopack-image/src/process/mod.rs @@ -17,7 +17,6 @@ use image::{ }; use mime::Mime; use serde::{Deserialize, Serialize}; -use serde_with::{DisplayFromStr, serde_as}; use turbo_rcstr::rcstr; use turbo_tasks::{NonLocalValue, ResolvedVc, Vc, debug::ValueDebugFormat, trace::TraceRawVcs}; use turbo_tasks_fs::{File, FileContent, FileSystemPath}; @@ -64,7 +63,6 @@ impl BlurPlaceholder { /// Gathered meta information about an image. #[allow(clippy::manual_non_exhaustive)] -#[serde_as] #[turbo_tasks::value] #[derive(Default)] #[non_exhaustive] @@ -72,7 +70,6 @@ pub struct ImageMetaData { pub width: u32, pub height: u32, #[turbo_tasks(trace_ignore, debug_ignore)] - #[serde_as(as = "Option")] #[bincode(with = "turbo_bincode::mime_option")] pub mime_type: Option, pub blur_placeholder: Option, diff --git a/turbopack/crates/turbopack-mdx/Cargo.toml b/turbopack/crates/turbopack-mdx/Cargo.toml index a91b76a83ccf..2bf88da2115f 100644 --- a/turbopack/crates/turbopack-mdx/Cargo.toml +++ b/turbopack/crates/turbopack-mdx/Cargo.toml @@ -14,13 +14,11 @@ workspace = true [dependencies] anyhow = { workspace = true } - markdown = { workspace = true } mdxjs = { workspace = true } - +serde = { workspace = true } turbo-rcstr = { workspace = true } turbo-tasks = { workspace = true } turbo-tasks-fs = { workspace = true } turbopack-core = { workspace = true } turbopack-ecmascript = { workspace = true } - diff --git a/turbopack/crates/turbopack-mdx/src/lib.rs b/turbopack/crates/turbopack-mdx/src/lib.rs index c771f6e4bbd2..2e9a95d105ad 100644 --- a/turbopack/crates/turbopack-mdx/src/lib.rs +++ b/turbopack/crates/turbopack-mdx/src/lib.rs @@ -4,6 +4,7 @@ use anyhow::Result; use mdxjs::{MdxParseOptions, Options, compile}; +use serde::Deserialize; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ResolvedVc, ValueDefault, Vc}; use turbo_tasks_fs::{File, FileContent, FileSystemPath, rope::Rope}; @@ -20,7 +21,7 @@ use turbopack_core::{ }; #[turbo_tasks::value(shared, operation)] -#[derive(Hash, Debug, Clone)] +#[derive(Hash, Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] pub enum MdxParseConstructs { Commonmark, @@ -31,7 +32,7 @@ pub enum MdxParseConstructs { /// into mdxjs. This is thin, near straightforward subset of mdxjs::Options to /// enable turbo tasks. #[turbo_tasks::value(shared, operation)] -#[derive(Hash, Debug, Clone)] +#[derive(Hash, Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct MdxTransformOptions { pub development: Option, diff --git a/turbopack/crates/turbopack-node/src/source_map/mod.rs b/turbopack/crates/turbopack-node/src/source_map/mod.rs index 78d67cb8f599..43305875b044 100644 --- a/turbopack/crates/turbopack-node/src/source_map/mod.rs +++ b/turbopack/crates/turbopack-node/src/source_map/mod.rs @@ -8,6 +8,7 @@ use anyhow::Result; use const_format::concatcp; use once_cell::sync::Lazy; use regex::Regex; +use serde::Deserialize; use turbo_tasks::{ReadRef, Vc}; use turbo_tasks_fs::{ FileLinesContent, FileSystemPath, source_context::get_source_context, to_sys_path, @@ -264,7 +265,7 @@ async fn resolve_source_mapping( } #[turbo_tasks::value(shared)] -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Deserialize)] pub struct StructuredError { pub name: String, pub message: String, diff --git a/turbopack/crates/turbopack-node/src/transforms/postcss.rs b/turbopack/crates/turbopack-node/src/transforms/postcss.rs index 82b096068288..66159459c143 100644 --- a/turbopack/crates/turbopack-node/src/transforms/postcss.rs +++ b/turbopack/crates/turbopack-node/src/transforms/postcss.rs @@ -36,7 +36,7 @@ use crate::{ }, }; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Deserialize)] #[turbo_tasks::value] #[serde(rename_all = "camelCase")] struct PostCssProcessingResult { diff --git a/turbopack/crates/turbopack-node/src/transforms/webpack.rs b/turbopack/crates/turbopack-node/src/transforms/webpack.rs index 13e4516c2c24..a69e26b9a6c8 100644 --- a/turbopack/crates/turbopack-node/src/transforms/webpack.rs +++ b/turbopack/crates/turbopack-node/src/transforms/webpack.rs @@ -69,7 +69,7 @@ struct BytesBase64 { binary: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[turbo_tasks::value] #[serde(rename_all = "camelCase")] struct WebpackLoadersProcessingResult { @@ -442,19 +442,7 @@ pub enum ResponseMessage { TrackFileRead {}, } -#[derive( - Clone, - PartialEq, - Eq, - Hash, - TaskInput, - Serialize, - Deserialize, - Debug, - TraceRawVcs, - Encode, - Decode, -)] +#[derive(Clone, PartialEq, Eq, Hash, TaskInput, Debug, TraceRawVcs, Encode, Decode)] pub struct WebpackLoaderContext { pub entries: ResolvedVc, pub cwd: FileSystemPath, diff --git a/turbopack/crates/turbopack-resolve/src/resolve_options_context.rs b/turbopack/crates/turbopack-resolve/src/resolve_options_context.rs index 8a3671698232..0d6dcd236a13 100644 --- a/turbopack/crates/turbopack-resolve/src/resolve_options_context.rs +++ b/turbopack/crates/turbopack-resolve/src/resolve_options_context.rs @@ -14,66 +14,48 @@ use turbopack_core::{ #[turbo_tasks::value(shared)] #[derive(Default, Clone)] pub struct ResolveOptionsContext { - #[serde(default)] pub emulate_environment: Option>, - #[serde(default)] pub enable_types: bool, - #[serde(default)] pub enable_typescript: bool, - #[serde(default)] pub enable_react: bool, - #[serde(default)] pub enable_node_native_modules: bool, - #[serde(default)] // Enable resolving of .mjs files without the .mjs extension pub enable_mjs_extension: bool, - #[serde(default)] /// Enable resolving of the node_modules folder when within the provided /// directory pub enable_node_modules: Option, - #[serde(default)] /// A specific path to a tsconfig.json file to use for resolving modules. If `None`, one will /// be looked up through the filesystem pub tsconfig_path: Option, - #[serde(default)] /// Mark well-known Node.js modules as external imports and load them using /// native `require`. e.g. url, querystring, os pub enable_node_externals: bool, /// Mark well-known Edge modules as external imports and load them using /// native `require`. e.g. buffer, events, assert pub enable_edge_node_externals: bool, - #[serde(default)] /// Enables the "browser" field and export condition in package.json pub browser: bool, - #[serde(default)] /// Enables the "module" field and export condition in package.json pub module: bool, - #[serde(default)] pub custom_conditions: Vec, - #[serde(default)] pub custom_extensions: Option>, - #[serde(default)] /// An additional import map to use when resolving modules. /// /// If set, this import map will be applied to `ResolveOption::import_map`. /// It is always applied last, so any mapping defined within will take /// precedence over any other (e.g. tsconfig.json `compilerOptions.paths`). pub import_map: Option>, - #[serde(default)] /// An import map to fall back to when a request could not be resolved. /// /// If set, this import map will be applied to /// `ResolveOption::fallback_import_map`. It is always applied last, so /// any mapping defined within will take precedence over any other. pub fallback_import_map: Option>, - #[serde(default)] /// An additional resolved map to use after modules have been resolved. pub resolved_map: Option>, - #[serde(default)] /// A list of rules to use a different resolve option context for certain /// context paths. The first matching is used. pub rules: Vec<(ContextCondition, ResolvedVc)>, - #[serde(default)] /// Plugins which get applied before and after resolving. pub after_resolve_plugins: Vec>>, pub before_resolve_plugins: Vec>>, @@ -82,7 +64,6 @@ pub struct ResolveOptionsContext { /// Collect affecting sources for each resolve result. Useful for tracing. pub collect_affecting_sources: bool, - #[serde(default)] pub placeholder_for_future_extensions: (), } diff --git a/turbopack/crates/turbopack-tests/tests/execution.rs b/turbopack/crates/turbopack-tests/tests/execution.rs index a2c3f458188e..8f85bd7ae8a8 100644 --- a/turbopack/crates/turbopack-tests/tests/execution.rs +++ b/turbopack/crates/turbopack-tests/tests/execution.rs @@ -69,7 +69,7 @@ struct RunTestResult { } #[turbo_tasks::value] -#[derive(Clone)] +#[derive(Clone, Deserialize)] #[serde(rename_all = "camelCase")] struct JsResult { uncaught_exceptions: Vec, diff --git a/turbopack/crates/turbopack/src/module_options/match_mode.rs b/turbopack/crates/turbopack/src/module_options/match_mode.rs index 861e2505e49a..17bd654d3ff0 100644 --- a/turbopack/crates/turbopack/src/module_options/match_mode.rs +++ b/turbopack/crates/turbopack/src/module_options/match_mode.rs @@ -1,21 +1,8 @@ use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, trace::TraceRawVcs}; use turbopack_core::reference_type::ReferenceType; -#[derive( - Copy, - Clone, - Debug, - PartialEq, - Eq, - Serialize, - Deserialize, - TraceRawVcs, - NonLocalValue, - Encode, - Decode, -)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, TraceRawVcs, NonLocalValue, Encode, Decode)] pub enum MatchMode { // Match all but internal references. NonInternal, 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 591a85b301f5..0432610db917 100644 --- a/turbopack/crates/turbopack/src/module_options/module_options_context.rs +++ b/turbopack/crates/turbopack/src/module_options/module_options_context.rs @@ -22,9 +22,7 @@ use turbopack_node::{ use super::ModuleRule; use crate::module_options::RuleCondition; -#[derive( - Clone, PartialEq, Eq, Debug, TraceRawVcs, Serialize, Deserialize, NonLocalValue, Encode, Decode, -)] +#[derive(Clone, PartialEq, Eq, Debug, TraceRawVcs, NonLocalValue, Encode, Decode)] pub struct LoaderRuleItem { pub loaders: ResolvedVc, pub rename_as: Option, @@ -182,7 +180,6 @@ pub struct ExternalsTracingOptions { #[turbo_tasks::value(shared)] #[derive(Clone, Default)] -#[serde(default)] pub struct ModuleOptionsContext { pub ecmascript: EcmascriptOptionsContext, pub css: CssOptionsContext, @@ -223,7 +220,6 @@ pub struct ModuleOptionsContext { #[turbo_tasks::value(shared)] #[derive(Clone, Default)] -#[serde(default)] pub struct EcmascriptOptionsContext { // TODO this should just be handled via CompileTimeInfo FreeVarReferences, but then it // (currently) wouldn't be possible to have different replacement values in user code vs @@ -260,7 +256,6 @@ pub struct EcmascriptOptionsContext { #[turbo_tasks::value(shared)] #[derive(Clone, Default)] -#[serde(default)] pub struct CssOptionsContext { /// This skips `GlobalCss` and `ModuleCss` module assets from being /// generated in the module graph, generating only `Css` module assets. diff --git a/turbopack/crates/turbopack/src/module_options/module_rule.rs b/turbopack/crates/turbopack/src/module_options/module_rule.rs index 2711e2dde367..0f5ddaecb340 100644 --- a/turbopack/crates/turbopack/src/module_options/module_rule.rs +++ b/turbopack/crates/turbopack/src/module_options/module_rule.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_rcstr::RcStr; use turbo_tasks::{NonLocalValue, ResolvedVc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; @@ -12,11 +11,9 @@ use turbopack_css::CssModuleAssetType; use turbopack_ecmascript::{EcmascriptInputTransforms, EcmascriptOptions}; use turbopack_wasm::source::WebAssemblySourceType; -use super::{CustomModuleType, RuleCondition, match_mode::MatchMode}; +use crate::module_options::{CustomModuleType, RuleCondition, match_mode::MatchMode}; -#[derive( - Debug, Clone, Serialize, Deserialize, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, Clone, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode)] pub struct ModuleRule { condition: RuleCondition, effects: Vec, diff --git a/turbopack/crates/turbopack/src/module_options/rule_condition.rs b/turbopack/crates/turbopack/src/module_options/rule_condition.rs index 51471faa444f..0be522faeb6a 100644 --- a/turbopack/crates/turbopack/src/module_options/rule_condition.rs +++ b/turbopack/crates/turbopack/src/module_options/rule_condition.rs @@ -6,7 +6,6 @@ use std::{ use anyhow::Result; use bincode::{Decode, Encode}; use either::Either; -use serde::{Deserialize, Serialize}; use smallvec::SmallVec; use turbo_esregex::EsRegex; use turbo_tasks::{NonLocalValue, ReadRef, ResolvedVc, trace::TraceRawVcs}; @@ -15,9 +14,7 @@ use turbopack_core::{ asset::Asset, reference_type::ReferenceType, source::Source, virtual_source::VirtualSource, }; -#[derive( - Debug, Clone, Serialize, Deserialize, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, Clone, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode)] pub enum RuleCondition { All(Vec), Any(Vec), diff --git a/turbopack/crates/turbopack/src/module_options/transition_rule.rs b/turbopack/crates/turbopack/src/module_options/transition_rule.rs index 0de49e4da394..12f531b79658 100644 --- a/turbopack/crates/turbopack/src/module_options/transition_rule.rs +++ b/turbopack/crates/turbopack/src/module_options/transition_rule.rs @@ -1,6 +1,5 @@ use anyhow::Result; use bincode::{Decode, Encode}; -use serde::{Deserialize, Serialize}; use turbo_tasks::{NonLocalValue, ResolvedVc, trace::TraceRawVcs}; use turbo_tasks_fs::FileSystemPath; use turbopack_core::{reference_type::ReferenceType, source::Source}; @@ -10,9 +9,7 @@ use crate::{ transition::Transition, }; -#[derive( - Debug, Clone, Serialize, Deserialize, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode, -)] +#[derive(Debug, Clone, TraceRawVcs, PartialEq, Eq, NonLocalValue, Encode, Decode)] pub struct TransitionRule { condition: RuleCondition, transition: ResolvedVc>,