From 3a4367f24f3102a38084a042429bf5721d25f2e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 15:45:43 +0900 Subject: [PATCH 01/29] Add fields --- crates/turbopack-core/src/resolve/parse.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index bf72046401398..0395a48de3cf9 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -12,24 +12,29 @@ pub enum Request { path: Pattern, query: Vc, force_in_lookup_dir: bool, + fragment: Pattern, }, Relative { path: Pattern, query: Vc, force_in_lookup_dir: bool, + fragment: Pattern, }, Module { module: String, path: Pattern, query: Vc, + fragment: Pattern, }, ServerRelative { path: Pattern, query: Vc, + fragment: Pattern, }, Windows { path: Pattern, query: Vc, + fragment: Pattern, }, Empty, PackageInternal { @@ -38,6 +43,8 @@ pub enum Request { Uri { protocol: String, remainder: String, + query: Pattern, + fragment: Pattern, }, Unknown { path: Pattern, From cc5038aef2b58dc58bc72ae53860338b8862db0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:04:14 +0900 Subject: [PATCH 02/29] Add args --- crates/turbopack-core/src/resolve/mod.rs | 8 +++++++- crates/turbopack-core/src/resolve/parse.rs | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 52814c039a49a..f768e567c6a9a 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1603,7 +1603,11 @@ async fn resolve_internal_inline( ) .await? } - Request::ServerRelative { path, query } => { + Request::ServerRelative { + path, + query, + fragment, + } => { let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); let relative = Request::relative(Value::new(new_pat), *query, true); @@ -1907,6 +1911,7 @@ async fn apply_in_package( options_value: &ResolveOptions, get_request: impl Fn(&FileSystemPath) -> Option, query: Vc, + fragment: Vc, ) -> Result>> { // Check alias field for module aliases first for in_package in options_value.in_package.iter() { @@ -2255,6 +2260,7 @@ async fn resolved( options_value: &ResolveOptions, options: Vc, query: Vc, + fragment: Vc, ) -> Result> { let RealPathResult { path, symlinks } = &*fs_path.realpath_with_links().await?; diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 0395a48de3cf9..cac48dada0ebb 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -235,11 +235,17 @@ impl Request { } #[turbo_tasks::function] - pub fn raw(request: Value, query: Vc, force_in_lookup_dir: bool) -> Vc { + pub fn raw( + request: Value, + query: Vc, + force_in_lookup_dir: bool, + fragment: Value, + ) -> Vc { Self::cell(Request::Raw { path: request.into_value(), force_in_lookup_dir, query, + fragment: fragment.into_value(), }) } @@ -248,20 +254,28 @@ impl Request { request: Value, query: Vc, force_in_lookup_dir: bool, + fragment: Value, ) -> Vc { Self::cell(Request::Relative { path: request.into_value(), force_in_lookup_dir, query, + fragment: fragment.into_value(), }) } #[turbo_tasks::function] - pub fn module(module: String, path: Value, query: Vc) -> Vc { + pub fn module( + module: String, + path: Value, + query: Vc, + fragment: Value, + ) -> Vc { Self::cell(Request::Module { module, path: path.into_value(), query, + fragment: fragment.into_value(), }) } From b0c0927e9e50a8620b7ffedc2334c22a8cc40431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:05:56 +0900 Subject: [PATCH 03/29] Add args --- crates/turbopack-core/src/resolve/mod.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index f768e567c6a9a..aeee8f6dbadeb 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1534,6 +1534,7 @@ async fn resolve_internal_inline( path, query, force_in_lookup_dir, + fragment, } => { let mut results = Vec::new(); let matches = read_matches( @@ -1556,6 +1557,7 @@ async fn resolve_internal_inline( options_value, options, *query, + Value::new(fragment.clone()), ) .await?, ); @@ -1575,6 +1577,7 @@ async fn resolve_internal_inline( path, query, force_in_lookup_dir, + fragment, } => { resolve_relative_request( lookup_path, @@ -1584,6 +1587,7 @@ async fn resolve_internal_inline( path, *query, *force_in_lookup_dir, + Value::new(fragment.clone()), ) .await? } @@ -1807,6 +1811,7 @@ async fn resolve_relative_request( path_pattern: &Pattern, query: Vc, force_in_lookup_dir: bool, + fragment: Value, ) -> Result> { // Check alias field for aliases first let lookup_path_ref = &*lookup_path.await?; @@ -1821,6 +1826,7 @@ async fn resolve_relative_request( Some(request) }, query, + fragment, ) .await? { @@ -1911,7 +1917,7 @@ async fn apply_in_package( options_value: &ResolveOptions, get_request: impl Fn(&FileSystemPath) -> Option, query: Vc, - fragment: Vc, + fragment: Value, ) -> Result>> { // Check alias field for module aliases first for in_package in options_value.in_package.iter() { @@ -2260,7 +2266,7 @@ async fn resolved( options_value: &ResolveOptions, options: Vc, query: Vc, - fragment: Vc, + fragment: Value, ) -> Result> { let RealPathResult { path, symlinks } = &*fs_path.realpath_with_links().await?; From 9b0611fb2354b997719120a431a76080e20d5ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:06:54 +0900 Subject: [PATCH 04/29] more work --- crates/turbopack-core/src/resolve/mod.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index aeee8f6dbadeb..c089cfdb2867f 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1595,6 +1595,7 @@ async fn resolve_internal_inline( module, path, query, + fragment, } => { resolve_module_request( lookup_path, @@ -1604,6 +1605,7 @@ async fn resolve_internal_inline( module, path, *query, + Value::new(fragment.clone()), ) .await? } @@ -1614,7 +1616,12 @@ async fn resolve_internal_inline( } => { let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); - let relative = Request::relative(Value::new(new_pat), *query, true); + let relative = Request::relative( + Value::new(new_pat), + *query, + true, + Value::new(fragment.clone()), + ); ResolvingIssue { severity: IssueSeverity::Error.cell(), @@ -1639,7 +1646,11 @@ async fn resolve_internal_inline( ) .await? } - Request::Windows { path: _, query: _ } => { + Request::Windows { + path: _, + query: _, + fragment: _, + } => { ResolvingIssue { severity: IssueSeverity::Error.cell(), request_type: "windows import: not implemented yet".to_string(), @@ -2019,6 +2030,7 @@ async fn resolve_module_request( module: &str, path: &Pattern, query: Vc, + fragment: Value, ) -> Result> { // Check alias field for module aliases first if let Some(result) = apply_in_package( @@ -2030,6 +2042,7 @@ async fn resolve_module_request( full_pattern.into_string() }, query, + fragment, ) .await? { From eea03e97396636fe60805469879f2faced29a992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:10:32 +0900 Subject: [PATCH 05/29] more work --- crates/turbopack-core/src/resolve/mod.rs | 2 ++ crates/turbopack-core/src/resolve/parse.rs | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index c089cfdb2867f..75026cff5b9b8 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1888,6 +1888,7 @@ async fn resolve_relative_request( options_value, options, query, + fragment, ) .await?, ); @@ -1905,6 +1906,7 @@ async fn resolve_relative_request( options_value, options, query, + fragment, ) .await?, ); diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index cac48dada0ebb..d648cbbf9f407 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -324,40 +324,56 @@ impl Request { path, query: _, force_in_lookup_dir, + fragment, } => Request::Raw { path: path.clone(), query, force_in_lookup_dir: *force_in_lookup_dir, + fragment: fragment.clone(), } .cell(), Request::Relative { path, query: _, force_in_lookup_dir, + fragment, } => Request::Relative { path: path.clone(), query, force_in_lookup_dir: *force_in_lookup_dir, + fragment: fragment.clone(), } .cell(), Request::Module { module, path, query: _, + fragment, } => Request::Module { module: module.clone(), path: path.clone(), query, + fragment: fragment.clone(), } .cell(), - Request::ServerRelative { path, query: _ } => Request::ServerRelative { + Request::ServerRelative { + path, + query: _, + fragment, + } => Request::ServerRelative { path: path.clone(), query, + fragment: fragment.clone(), } .cell(), - Request::Windows { path, query: _ } => Request::Windows { + Request::Windows { + path, + query: _, + fragment, + } => Request::Windows { path: path.clone(), query, + fragment: fragment.clone(), } .cell(), Request::Empty => self, From 62ff661aa32b98dedae9291d573bdaf0b00546a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:12:00 +0900 Subject: [PATCH 06/29] more work --- crates/turbopack-core/src/resolve/parse.rs | 42 +++++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index d648cbbf9f407..1bed8addbe73f 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -399,44 +399,72 @@ impl Request { path, query, force_in_lookup_dir, + fragment, } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::raw(Value::new(pat), *query, *force_in_lookup_dir) + Self::raw( + Value::new(pat), + *query, + *force_in_lookup_dir, + Value::new(fragment.clone()), + ) } Request::Relative { path, query, force_in_lookup_dir, + fragment, } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::relative(Value::new(pat), *query, *force_in_lookup_dir) + Self::relative( + Value::new(pat), + *query, + *force_in_lookup_dir, + Value::new(fragment), + ) } Request::Module { module, path, query, + fragment, } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::module(module.clone(), Value::new(pat), *query) + Self::module( + module.clone(), + Value::new(pat), + *query, + Value::new(fragment.clone()), + ) } - Request::ServerRelative { path, query } => { + Request::ServerRelative { + path, + query, + fragment, + } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); Self::ServerRelative { path: pat, query: *query, + fragment: fragment.clone(), } .cell() } - Request::Windows { path, query } => { + Request::Windows { + path, + query, + fragment, + } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); Self::Windows { path: pat, query: *query, + fragment: fragment.clone(), } .cell() } @@ -449,11 +477,15 @@ impl Request { Request::Uri { protocol, remainder, + query, + fragment, } => { let remainder = format!("{}{}", remainder, suffix); Self::Uri { protocol: protocol.clone(), remainder, + query: query.clone(), + fragment: fragment.clone(), } .cell() } From 0b7f101fa48fc951c06ddb22188741c48bbedda8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:12:57 +0900 Subject: [PATCH 07/29] more work --- crates/turbopack-core/src/resolve/parse.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 1bed8addbe73f..cad067e353fa7 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -422,7 +422,7 @@ impl Request { Value::new(pat), *query, *force_in_lookup_dir, - Value::new(fragment), + Value::new(fragment.clone()), ) } Request::Module { From 90b6dd5c50c9cfb9acbeb43602224d8b967fee08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:26:07 +0900 Subject: [PATCH 08/29] More work for format! --- crates/turbopack-core/src/resolve/parse.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index cad067e353fa7..efbcbfa4beac8 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -98,7 +98,9 @@ impl Request { Request::Uri { protocol, remainder, - } => format!("{protocol}{remainder}"), + query, + fragment, + } => format!("{protocol}{remainder}?{query}#{fragment}"), Request::Unknown { path: Pattern::Constant(path), } => path.to_string(), @@ -294,6 +296,7 @@ impl Request { module, path, query: _, + fragment: _, } => { let mut pat = Pattern::Constant(format!("./{module}")); pat.push(path.clone()); From 501d102e6bb93c58e341f49dcc473d5cb3ccb2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:38:13 +0900 Subject: [PATCH 09/29] more work --- crates/turbopack-core/src/resolve/parse.rs | 42 +++++++++++++++++----- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index efbcbfa4beac8..ef1be7aa2318b 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -55,14 +55,29 @@ pub enum Request { }, } -fn split_off_query(raw: String) -> (Pattern, Vc) { +fn split_off_query_fragment(raw: String) -> (Pattern, Vc, Pattern) { let Some((raw, query)) = raw.split_once('?') else { - return (Pattern::Constant(raw), Vc::::default()); + if let Some((raw, fragment)) = raw.split_once('#') { + return ( + Pattern::Constant(raw.to_string()), + Vc::::default(), + Pattern::Constant(fragment.to_string()), + ); + } + + return ( + Pattern::Constant(raw), + Vc::::default(), + Pattern::Constant(String::new()), + ); }; + let (query, fragment) = query.split_once('#').unwrap_or((query, "")); + ( Pattern::Constant(raw.to_string()), Vc::cell(format!("?{}", query)), + Pattern::Constant(fragment.to_string()), ) } @@ -116,20 +131,25 @@ impl Request { if r.is_empty() { Request::Empty } else if r.starts_with('/') { - let (path, query) = split_off_query(r); + let (path, query, fragment) = split_off_query_fragment(r); - Request::ServerRelative { path, query } + Request::ServerRelative { + path, + query, + fragment, + } } else if r.starts_with('#') { Request::PackageInternal { path: Pattern::Constant(r), } } else if r.starts_with("./") || r.starts_with("../") || r == "." || r == ".." { - let (path, query) = split_off_query(r); + let (path, query, fragment) = split_off_query_fragment(r); Request::Relative { path, force_in_lookup_dir: false, query, + fragment, } } else { lazy_static! { @@ -140,9 +160,13 @@ impl Request { } if WINDOWS_PATH.is_match(&r) { - let (path, query) = split_off_query(r); + let (path, query, fragment) = split_off_query_fragment(r); - return Request::Windows { path, query }; + return Request::Windows { + path, + query, + fragment, + }; } if let Some(caps) = URI_PATH.captures(&r) { @@ -159,12 +183,14 @@ impl Request { .captures(&r) .and_then(|caps| caps.get(1).zip(caps.get(2))) { - let (path, query) = split_off_query(path.as_str().to_string()); + let (path, query, fragment) = + split_off_query_fragment(path.as_str().to_string()); return Request::Module { module: module.as_str().to_string(), path, query, + fragment, }; } From 0887ee63cfae020ed4cb4fa451afc3bb0ad6620c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 19 Mar 2024 16:38:37 +0900 Subject: [PATCH 10/29] TODO --- crates/turbopack-core/src/resolve/parse.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index ef1be7aa2318b..9779ba4e39e2c 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -175,6 +175,9 @@ impl Request { return Request::Uri { protocol: protocol.as_str().to_string(), remainder: remainder.as_str().to_string(), + // TODO: query and fragment + query: Pattern::Constant(String::new()), + fragment: Pattern::Constant(String::new()), }; } } From 10b76b9f3feb19e7c0e3b35107f1fd5052ea2f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 09:48:40 +0900 Subject: [PATCH 11/29] More --- crates/turbopack-core/src/resolve/mod.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 75026cff5b9b8..aea9fcb21fad5 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1692,8 +1692,10 @@ async fn resolve_internal_inline( Request::Uri { protocol, remainder, + query, + fragment, } => { - let uri = format!("{}{}", protocol, remainder); + let uri = format!("{}{}?{}#{}", protocol, remainder, query, fragment); ResolveResult::primary_with_key( RequestKey::new(uri.clone()), ResolveResultItem::External(uri, ExternalType::Url), @@ -1837,7 +1839,7 @@ async fn resolve_relative_request( Some(request) }, query, - fragment, + fragment.clone(), ) .await? { @@ -1888,7 +1890,7 @@ async fn resolve_relative_request( options_value, options, query, - fragment, + fragment.clone(), ) .await?, ); @@ -1906,7 +1908,7 @@ async fn resolve_relative_request( options_value, options, query, - fragment, + fragment.clone(), ) .await?, ); @@ -2079,6 +2081,7 @@ async fn resolve_module_request( Value::new(path.clone()), package_path, query, + fragment.clone(), options, )); } @@ -2092,6 +2095,7 @@ async fn resolve_module_request( options_value, options, query, + fragment, ) .await?; results.push(resolved) @@ -2114,7 +2118,7 @@ async fn resolve_module_request( "/".to_string().into(), path.clone(), ]); - let relative = Request::relative(Value::new(pattern), query, true); + let relative = Request::relative(Value::new(pattern), query, true, fragment); let relative_result = resolve_internal_boxed(lookup_path, relative.resolve().await?, options).await?; let relative_result = relative_result.with_replaced_request_key( @@ -2133,6 +2137,7 @@ async fn resolve_into_package( path: Value, package_path: Vc, query: Vc, + fragment: Value, options: Vc, ) -> Result> { let path = path.into_value(); @@ -2197,7 +2202,7 @@ async fn resolve_into_package( let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); - let relative = Request::relative(Value::new(new_pat), query, true); + let relative = Request::relative(Value::new(new_pat), query, true, fragment); results .push(resolve_internal_inline(package_path, relative.resolve().await?, options).await?); } @@ -2293,6 +2298,7 @@ async fn resolved( options_value, |package_path| package_path.get_relative_path_to(path_ref), query, + fragment.clone(), ) .await? { From 78d76aef1656a4a895f57dccfd7f63a5c65aa500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 09:51:01 +0900 Subject: [PATCH 12/29] Fix `turbopack-core` --- crates/turbopack-core/src/resolve/mod.rs | 6 +++--- crates/turbopack-core/src/resolve/parse.rs | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index aea9fcb21fad5..0d6396b757b46 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -2046,7 +2046,7 @@ async fn resolve_module_request( full_pattern.into_string() }, query, - fragment, + fragment.clone(), ) .await? { @@ -2095,7 +2095,7 @@ async fn resolve_module_request( options_value, options, query, - fragment, + fragment.clone(), ) .await?; results.push(resolved) @@ -2118,7 +2118,7 @@ async fn resolve_module_request( "/".to_string().into(), path.clone(), ]); - let relative = Request::relative(Value::new(pattern), query, true, fragment); + let relative = Request::relative(Value::new(pattern), query, true, fragment.clone()); let relative_result = resolve_internal_boxed(lookup_path, relative.resolve().await?, options).await?; let relative_result = relative_result.with_replaced_request_key( diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 9779ba4e39e2c..6db41808ae99e 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -597,7 +597,9 @@ impl ValueToString for Request { Request::Uri { protocol, remainder, - } => format!("uri \"{protocol}\" \"{remainder}\""), + query, + fragment, + } => format!("uri \"{protocol}\" \"{remainder}\" ?{query} #{fragment}"), Request::Unknown { path } => format!("unknown {path}"), Request::Dynamic => "dynamic".to_string(), Request::Alternatives { requests } => { From b348ba2ee0f78baec42bada29597c6dc1e578995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 09:53:10 +0900 Subject: [PATCH 13/29] Fix --- crates/turbopack-ecmascript/src/references/typescript.rs | 1 + crates/turbopack-ecmascript/src/typescript/mod.rs | 1 + crates/turbopack-resolve/src/typescript.rs | 2 ++ 3 files changed, 4 insertions(+) diff --git a/crates/turbopack-ecmascript/src/references/typescript.rs b/crates/turbopack-ecmascript/src/references/typescript.rs index ede39fbbcd498..f759557e32782 100644 --- a/crates/turbopack-ecmascript/src/references/typescript.rs +++ b/crates/turbopack-ecmascript/src/references/typescript.rs @@ -131,6 +131,7 @@ impl ModuleReference for TsReferenceTypeAssetReference { self.module.clone(), Value::new("".to_string().into()), Vc::::default(), + Value::default(), ), ) } diff --git a/crates/turbopack-ecmascript/src/typescript/mod.rs b/crates/turbopack-ecmascript/src/typescript/mod.rs index e35afaf795f5a..3b0d27067bc6c 100644 --- a/crates/turbopack-ecmascript/src/typescript/mod.rs +++ b/crates/turbopack-ecmascript/src/typescript/mod.rs @@ -145,6 +145,7 @@ impl Module for TsConfigModuleAsset { name, Value::new("".to_string().into()), Vc::::default(), + Value::default(), ), ))); } diff --git a/crates/turbopack-resolve/src/typescript.rs b/crates/turbopack-resolve/src/typescript.rs index 0f6d614dceff6..5b9e16737a64f 100644 --- a/crates/turbopack-resolve/src/typescript.rs +++ b/crates/turbopack-resolve/src/typescript.rs @@ -374,6 +374,7 @@ pub async fn type_resolve( module: m, path: p, query: _, + fragment: _, } = &*request.await? { let m = if let Some(stripped) = m.strip_prefix('@') { @@ -385,6 +386,7 @@ pub async fn type_resolve( format!("@types/{m}"), Value::new(p.clone()), Vc::::default(), + Value::default(), )) } else { None From 14b16de93ef4d4a86e61b3ddbe7eb0727b9f7ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 13:50:27 +0900 Subject: [PATCH 14/29] fix build --- crates/turbopack-css/src/references/import.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-css/src/references/import.rs b/crates/turbopack-css/src/references/import.rs index 3ca477432f8ce..ab920a247e72a 100644 --- a/crates/turbopack-css/src/references/import.rs +++ b/crates/turbopack-css/src/references/import.rs @@ -264,11 +264,13 @@ impl CodeGenerateable for ImportAssetReference { if let Request::Uri { protocol, remainder, + query, + fragment, } = &*this.request.await? { imports.push(CssImport::External(Vc::cell(format!( - "{}{}", - protocol, remainder + "{}{}?{}#{}", + protocol, remainder, query, fragment )))) } From c186b18be46dfbca826a1c17337534d6d1d6a79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 13:50:33 +0900 Subject: [PATCH 15/29] clippy --- crates/turbopack-core/src/resolve/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 0d6396b757b46..662a330bc3274 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1932,7 +1932,7 @@ async fn apply_in_package( options_value: &ResolveOptions, get_request: impl Fn(&FileSystemPath) -> Option, query: Vc, - fragment: Value, + _fragment: Value, ) -> Result>> { // Check alias field for module aliases first for in_package in options_value.in_package.iter() { From 713a4edc5afc536cd0afb59663e1b61884626fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 20 Mar 2024 13:56:04 +0900 Subject: [PATCH 16/29] with_fragment --- crates/turbopack-core/src/resolve/mod.rs | 5 +- crates/turbopack-core/src/resolve/parse.rs | 75 ++++++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 662a330bc3274..787460326ec0b 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1932,7 +1932,7 @@ async fn apply_in_package( options_value: &ResolveOptions, get_request: impl Fn(&FileSystemPath) -> Option, query: Vc, - _fragment: Value, + fragment: Value, ) -> Result>> { // Check alias field for module aliases first for in_package in options_value.in_package.iter() { @@ -1998,7 +1998,8 @@ async fn apply_in_package( resolve_internal( package_path, Request::parse(Value::new(Pattern::Constant(value.to_string()))) - .with_query(query), + .with_query(query) + .with_fragment(fragment), options, ) .with_replaced_request_key(value.to_string(), Value::new(request_key)) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 6db41808ae99e..d215366731119 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -424,6 +424,81 @@ impl Request { }) } + #[turbo_tasks::function] + pub async fn with_fragment(self: Vc, fragment: Value) -> Result> { + Ok(match &*self.await? { + Request::Raw { + path, + query, + force_in_lookup_dir, + fragment: _, + } => Request::Raw { + path: path.clone(), + query: *query, + force_in_lookup_dir: *force_in_lookup_dir, + fragment: fragment.into_value(), + } + .cell(), + Request::Relative { + path, + query, + force_in_lookup_dir, + fragment: _, + } => Request::Relative { + path: path.clone(), + query: *query, + force_in_lookup_dir: *force_in_lookup_dir, + fragment: fragment.into_value(), + } + .cell(), + Request::Module { + module, + path, + query, + fragment: _, + } => Request::Module { + module: module.clone(), + path: path.clone(), + query: *query, + fragment: fragment.into_value(), + } + .cell(), + Request::ServerRelative { + path, + query, + fragment: _, + } => Request::ServerRelative { + path: path.clone(), + query: *query, + fragment: fragment.into_value(), + } + .cell(), + Request::Windows { + path, + query, + fragment: _, + } => Request::Windows { + path: path.clone(), + query: *query, + fragment: fragment.into_value(), + } + .cell(), + Request::Empty => self, + Request::PackageInternal { .. } => self, + Request::Uri { .. } => self, + Request::Unknown { .. } => self, + Request::Dynamic => self, + Request::Alternatives { requests } => { + let requests = requests + .iter() + .copied() + .map(|req| req.with_fragment(fragment.clone())) + .collect(); + Request::Alternatives { requests }.cell() + } + }) + } + #[turbo_tasks::function] pub async fn append_path(self: Vc, suffix: String) -> Result> { Ok(match &*self.await? { From e4b54fdc290321b86d8400e313afa1a2d39067dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:15:46 +0900 Subject: [PATCH 17/29] Type --- crates/turbopack-core/src/resolve/parse.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index d215366731119..f0f346ffa4228 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -12,29 +12,29 @@ pub enum Request { path: Pattern, query: Vc, force_in_lookup_dir: bool, - fragment: Pattern, + fragment: Vc, }, Relative { path: Pattern, query: Vc, force_in_lookup_dir: bool, - fragment: Pattern, + fragment: Vc, }, Module { module: String, path: Pattern, query: Vc, - fragment: Pattern, + fragment: Vc, }, ServerRelative { path: Pattern, query: Vc, - fragment: Pattern, + fragment: Vc, }, Windows { path: Pattern, query: Vc, - fragment: Pattern, + fragment: Vc, }, Empty, PackageInternal { @@ -43,8 +43,8 @@ pub enum Request { Uri { protocol: String, remainder: String, - query: Pattern, - fragment: Pattern, + query: Vc, + fragment: Vc, }, Unknown { path: Pattern, @@ -177,7 +177,7 @@ impl Request { remainder: remainder.as_str().to_string(), // TODO: query and fragment query: Pattern::Constant(String::new()), - fragment: Pattern::Constant(String::new()), + fragment: Vc::::default(), }; } } From 0bd6f83481b248579424e2cb60306b618acf4060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:16:49 +0900 Subject: [PATCH 18/29] Replace type --- crates/turbopack-core/src/resolve/mod.rs | 14 +++++++------- crates/turbopack-core/src/resolve/parse.rs | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 787460326ec0b..dffd0343650ac 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1557,7 +1557,7 @@ async fn resolve_internal_inline( options_value, options, *query, - Value::new(fragment.clone()), + *fragment, ) .await?, ); @@ -1587,7 +1587,7 @@ async fn resolve_internal_inline( path, *query, *force_in_lookup_dir, - Value::new(fragment.clone()), + *fragment, ) .await? } @@ -1824,7 +1824,7 @@ async fn resolve_relative_request( path_pattern: &Pattern, query: Vc, force_in_lookup_dir: bool, - fragment: Value, + fragment: Vc, ) -> Result> { // Check alias field for aliases first let lookup_path_ref = &*lookup_path.await?; @@ -1932,7 +1932,7 @@ async fn apply_in_package( options_value: &ResolveOptions, get_request: impl Fn(&FileSystemPath) -> Option, query: Vc, - fragment: Value, + fragment: Vc, ) -> Result>> { // Check alias field for module aliases first for in_package in options_value.in_package.iter() { @@ -2035,7 +2035,7 @@ async fn resolve_module_request( module: &str, path: &Pattern, query: Vc, - fragment: Value, + fragment: Vc, ) -> Result> { // Check alias field for module aliases first if let Some(result) = apply_in_package( @@ -2138,7 +2138,7 @@ async fn resolve_into_package( path: Value, package_path: Vc, query: Vc, - fragment: Value, + fragment: Vc, options: Vc, ) -> Result> { let path = path.into_value(); @@ -2287,7 +2287,7 @@ async fn resolved( options_value: &ResolveOptions, options: Vc, query: Vc, - fragment: Value, + fragment: Vc, ) -> Result> { let RealPathResult { path, symlinks } = &*fs_path.realpath_with_links().await?; diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index f0f346ffa4228..d8272e9a91b47 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -270,7 +270,7 @@ impl Request { request: Value, query: Vc, force_in_lookup_dir: bool, - fragment: Value, + fragment: Vc, ) -> Vc { Self::cell(Request::Raw { path: request.into_value(), @@ -285,7 +285,7 @@ impl Request { request: Value, query: Vc, force_in_lookup_dir: bool, - fragment: Value, + fragment: Vc, ) -> Vc { Self::cell(Request::Relative { path: request.into_value(), @@ -300,7 +300,7 @@ impl Request { module: String, path: Value, query: Vc, - fragment: Value, + fragment: Vc, ) -> Vc { Self::cell(Request::Module { module, @@ -425,7 +425,7 @@ impl Request { } #[turbo_tasks::function] - pub async fn with_fragment(self: Vc, fragment: Value) -> Result> { + pub async fn with_fragment(self: Vc, fragment: Vc) -> Result> { Ok(match &*self.await? { Request::Raw { path, From 6fa8c08fabbf32416bf9bd0855fa3f07cc13c11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:17:48 +0900 Subject: [PATCH 19/29] fixup --- crates/turbopack-core/src/resolve/mod.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index dffd0343650ac..44b631cec1ba9 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1605,7 +1605,7 @@ async fn resolve_internal_inline( module, path, *query, - Value::new(fragment.clone()), + *fragment, ) .await? } @@ -1616,12 +1616,7 @@ async fn resolve_internal_inline( } => { let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); - let relative = Request::relative( - Value::new(new_pat), - *query, - true, - Value::new(fragment.clone()), - ); + let relative = Request::relative(Value::new(new_pat), *query, true, *fragment); ResolvingIssue { severity: IssueSeverity::Error.cell(), From 5aa750a52905eb05a186f1da67179991799ab115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:43:03 +0900 Subject: [PATCH 20/29] fix more --- crates/turbopack-core/src/resolve/mod.rs | 6 +++--- crates/turbopack-core/src/resolve/parse.rs | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 44b631cec1ba9..20130e035cf6f 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1687,10 +1687,10 @@ async fn resolve_internal_inline( Request::Uri { protocol, remainder, - query, - fragment, + query: _, + fragment: _, } => { - let uri = format!("{}{}?{}#{}", protocol, remainder, query, fragment); + let uri = format!("{}{}", protocol, remainder); ResolveResult::primary_with_key( RequestKey::new(uri.clone()), ResolveResultItem::External(uri, ExternalType::Url), diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index d8272e9a91b47..da35b330ac05c 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -113,9 +113,8 @@ impl Request { Request::Uri { protocol, remainder, - query, - fragment, - } => format!("{protocol}{remainder}?{query}#{fragment}"), + .. + } => format!("{protocol}{remainder}"), Request::Unknown { path: Pattern::Constant(path), } => path.to_string(), @@ -672,9 +671,8 @@ impl ValueToString for Request { Request::Uri { protocol, remainder, - query, - fragment, - } => format!("uri \"{protocol}\" \"{remainder}\" ?{query} #{fragment}"), + .. + } => format!("uri \"{protocol}\" \"{remainder}\""), Request::Unknown { path } => format!("unknown {path}"), Request::Dynamic => "dynamic".to_string(), Request::Alternatives { requests } => { From 729614b852cd1cb4b1b15ceec12433ec7f4060f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:49:54 +0900 Subject: [PATCH 21/29] fix more --- crates/turbopack-core/src/resolve/parse.rs | 50 ++++++++-------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index da35b330ac05c..5ea1f24f86b02 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -55,20 +55,20 @@ pub enum Request { }, } -fn split_off_query_fragment(raw: String) -> (Pattern, Vc, Pattern) { +fn split_off_query_fragment(raw: String) -> (Pattern, Vc, Vc) { let Some((raw, query)) = raw.split_once('?') else { if let Some((raw, fragment)) = raw.split_once('#') { return ( Pattern::Constant(raw.to_string()), Vc::::default(), - Pattern::Constant(fragment.to_string()), + Vc::cell(fragment.to_string()), ); } return ( Pattern::Constant(raw), Vc::::default(), - Pattern::Constant(String::new()), + Vc::::default(), ); }; @@ -77,7 +77,7 @@ fn split_off_query_fragment(raw: String) -> (Pattern, Vc, Pattern) { ( Pattern::Constant(raw.to_string()), Vc::cell(format!("?{}", query)), - Pattern::Constant(fragment.to_string()), + Vc::cell(format!("#{}", fragment)), ) } @@ -174,8 +174,7 @@ impl Request { return Request::Uri { protocol: protocol.as_str().to_string(), remainder: remainder.as_str().to_string(), - // TODO: query and fragment - query: Pattern::Constant(String::new()), + query: Vc::::default(), fragment: Vc::::default(), }; } @@ -275,7 +274,7 @@ impl Request { path: request.into_value(), force_in_lookup_dir, query, - fragment: fragment.into_value(), + fragment, }) } @@ -290,7 +289,7 @@ impl Request { path: request.into_value(), force_in_lookup_dir, query, - fragment: fragment.into_value(), + fragment, }) } @@ -305,7 +304,7 @@ impl Request { module, path: path.into_value(), query, - fragment: fragment.into_value(), + fragment, }) } @@ -435,7 +434,7 @@ impl Request { path: path.clone(), query: *query, force_in_lookup_dir: *force_in_lookup_dir, - fragment: fragment.into_value(), + fragment, } .cell(), Request::Relative { @@ -447,7 +446,7 @@ impl Request { path: path.clone(), query: *query, force_in_lookup_dir: *force_in_lookup_dir, - fragment: fragment.into_value(), + fragment, } .cell(), Request::Module { @@ -459,7 +458,7 @@ impl Request { module: module.clone(), path: path.clone(), query: *query, - fragment: fragment.into_value(), + fragment, } .cell(), Request::ServerRelative { @@ -469,7 +468,7 @@ impl Request { } => Request::ServerRelative { path: path.clone(), query: *query, - fragment: fragment.into_value(), + fragment, } .cell(), Request::Windows { @@ -479,7 +478,7 @@ impl Request { } => Request::Windows { path: path.clone(), query: *query, - fragment: fragment.into_value(), + fragment, } .cell(), Request::Empty => self, @@ -491,7 +490,7 @@ impl Request { let requests = requests .iter() .copied() - .map(|req| req.with_fragment(fragment.clone())) + .map(|req| req.with_fragment(fragment)) .collect(); Request::Alternatives { requests }.cell() } @@ -509,12 +508,7 @@ impl Request { } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::raw( - Value::new(pat), - *query, - *force_in_lookup_dir, - Value::new(fragment.clone()), - ) + Self::raw(Value::new(pat), *query, *force_in_lookup_dir, *fragment) } Request::Relative { path, @@ -524,12 +518,7 @@ impl Request { } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::relative( - Value::new(pat), - *query, - *force_in_lookup_dir, - Value::new(fragment.clone()), - ) + Self::relative(Value::new(pat), *query, *force_in_lookup_dir, *fragment) } Request::Module { module, @@ -539,12 +528,7 @@ impl Request { } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::module( - module.clone(), - Value::new(pat), - *query, - Value::new(fragment.clone()), - ) + Self::module(module.clone(), Value::new(pat), *query, *fragment) } Request::ServerRelative { path, From 50680bef0266be15663ca4f9c7dd5b03f3f97868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:50:26 +0900 Subject: [PATCH 22/29] fix more --- crates/turbopack-resolve/src/typescript.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/turbopack-resolve/src/typescript.rs b/crates/turbopack-resolve/src/typescript.rs index 5b9e16737a64f..a781287fef8e5 100644 --- a/crates/turbopack-resolve/src/typescript.rs +++ b/crates/turbopack-resolve/src/typescript.rs @@ -386,7 +386,7 @@ pub async fn type_resolve( format!("@types/{m}"), Value::new(p.clone()), Vc::::default(), - Value::default(), + Vc::::default(), )) } else { None From 1eb07bcaa953208c260ec44bef40d41bbce65a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Fri, 22 Mar 2024 14:51:38 +0900 Subject: [PATCH 23/29] fix more --- crates/turbopack-css/src/references/import.rs | 7 +++---- crates/turbopack-ecmascript/src/references/typescript.rs | 2 +- crates/turbopack-ecmascript/src/typescript/mod.rs | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/crates/turbopack-css/src/references/import.rs b/crates/turbopack-css/src/references/import.rs index ab920a247e72a..48607176cdc8d 100644 --- a/crates/turbopack-css/src/references/import.rs +++ b/crates/turbopack-css/src/references/import.rs @@ -264,13 +264,12 @@ impl CodeGenerateable for ImportAssetReference { if let Request::Uri { protocol, remainder, - query, - fragment, + .. } = &*this.request.await? { imports.push(CssImport::External(Vc::cell(format!( - "{}{}?{}#{}", - protocol, remainder, query, fragment + "{}{}", + protocol, remainder )))) } diff --git a/crates/turbopack-ecmascript/src/references/typescript.rs b/crates/turbopack-ecmascript/src/references/typescript.rs index f759557e32782..e481d01c02e28 100644 --- a/crates/turbopack-ecmascript/src/references/typescript.rs +++ b/crates/turbopack-ecmascript/src/references/typescript.rs @@ -131,7 +131,7 @@ impl ModuleReference for TsReferenceTypeAssetReference { self.module.clone(), Value::new("".to_string().into()), Vc::::default(), - Value::default(), + Vc::::default(), ), ) } diff --git a/crates/turbopack-ecmascript/src/typescript/mod.rs b/crates/turbopack-ecmascript/src/typescript/mod.rs index 3b0d27067bc6c..d8cb607ca092c 100644 --- a/crates/turbopack-ecmascript/src/typescript/mod.rs +++ b/crates/turbopack-ecmascript/src/typescript/mod.rs @@ -145,7 +145,7 @@ impl Module for TsConfigModuleAsset { name, Value::new("".to_string().into()), Vc::::default(), - Value::default(), + Vc::::default(), ), ))); } From b9e26973625283b74fefc82922f79ca52081b8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 9 Apr 2024 09:28:59 +0900 Subject: [PATCH 24/29] Update crates/turbopack-core/src/resolve/parse.rs Co-authored-by: Tobias Koppers --- crates/turbopack-core/src/resolve/parse.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 5ea1f24f86b02..6666e534d95ff 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -282,8 +282,8 @@ impl Request { pub fn relative( request: Value, query: Vc, - force_in_lookup_dir: bool, fragment: Vc, + force_in_lookup_dir: bool, ) -> Vc { Self::cell(Request::Relative { path: request.into_value(), From b7825b1c5877eb54841463f8d6e017345dad138c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 9 Apr 2024 09:29:05 +0900 Subject: [PATCH 25/29] Update crates/turbopack-core/src/resolve/parse.rs Co-authored-by: Tobias Koppers --- crates/turbopack-core/src/resolve/parse.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 6666e534d95ff..28970c6902ff8 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -267,8 +267,8 @@ impl Request { pub fn raw( request: Value, query: Vc, - force_in_lookup_dir: bool, fragment: Vc, + force_in_lookup_dir: bool, ) -> Vc { Self::cell(Request::Raw { path: request.into_value(), From 8e721913afbc9a532ab85ae1f13274ef37462050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 9 Apr 2024 09:41:17 +0900 Subject: [PATCH 26/29] review --- crates/turbopack-core/src/resolve/mod.rs | 8 ++++++-- crates/turbopack-core/src/resolve/parse.rs | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index df7ebc561c5d4..f85356542a0df 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1623,7 +1623,7 @@ async fn resolve_internal_inline( } => { let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); - let relative = Request::relative(Value::new(new_pat), *query, true, *fragment); + let relative = Request::relative(Value::new(new_pat), *query, *fragment, true); if !has_alias { ResolvingIssue { @@ -1650,7 +1650,11 @@ async fn resolve_internal_inline( ) .await? } - Request::Windows { path: _, query: _ } => { + Request::Windows { + path: _, + query: _, + fragment: _, + } => { if !has_alias { ResolvingIssue { severity: IssueSeverity::Error.cell(), diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index 28970c6902ff8..f10204d7ff9c1 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -508,7 +508,7 @@ impl Request { } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::raw(Value::new(pat), *query, *force_in_lookup_dir, *fragment) + Self::raw(Value::new(pat), *query, *fragment, *force_in_lookup_dir) } Request::Relative { path, @@ -518,7 +518,7 @@ impl Request { } => { let mut pat = Pattern::concat([path.clone(), suffix.into()]); pat.normalize(); - Self::relative(Value::new(pat), *query, *force_in_lookup_dir, *fragment) + Self::relative(Value::new(pat), *query, *fragment, *force_in_lookup_dir) } Request::Module { module, From 34b8fb8e9227d6f0519bfa754b5bc6e60df757aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 9 Apr 2024 09:41:42 +0900 Subject: [PATCH 27/29] review --- crates/turbopack-core/src/resolve/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index f85356542a0df..383fec7ae39f2 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -2129,7 +2129,7 @@ async fn resolve_module_request( "/".to_string().into(), path.clone(), ]); - let relative = Request::relative(Value::new(pattern), query, true, fragment.clone()); + let relative = Request::relative(Value::new(pattern), query, fragment, true); let relative_result = resolve_internal_boxed(lookup_path, relative.resolve().await?, options).await?; let relative_result = relative_result.with_replaced_request_key( @@ -2213,7 +2213,7 @@ async fn resolve_into_package( let mut new_pat = path.clone(); new_pat.push_front(".".to_string().into()); - let relative = Request::relative(Value::new(new_pat), query, true, fragment); + let relative = Request::relative(Value::new(new_pat), query, fragment, true); results .push(resolve_internal_inline(package_path, relative.resolve().await?, options).await?); } From 5770f8918e371a29e7045757cff16adf5b01181c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 9 Apr 2024 10:06:54 +0900 Subject: [PATCH 28/29] fixup --- crates/turbopack-cli/src/build/mod.rs | 18 ++++++++++++------ crates/turbopack-core/src/resolve/mod.rs | 14 +++++++------- crates/turbopack-core/src/resolve/parse.rs | 18 +++++++++--------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/crates/turbopack-cli/src/build/mod.rs b/crates/turbopack-cli/src/build/mod.rs index 7c8a9b98a2f00..ff5ee97fa7bd5 100644 --- a/crates/turbopack-cli/src/build/mod.rs +++ b/crates/turbopack-cli/src/build/mod.rs @@ -213,12 +213,18 @@ async fn build_internal( .cloned() .map(|r| async move { Ok(match &*r.await? { - EntryRequest::Relative(p) => { - Request::relative(Value::new(p.clone().into()), Default::default(), false) - } - EntryRequest::Module(m, p) => { - Request::module(m.clone(), Value::new(p.clone().into()), Default::default()) - } + EntryRequest::Relative(p) => Request::relative( + Value::new(p.clone().into()), + Default::default(), + Default::default(), + false, + ), + EntryRequest::Module(m, p) => Request::module( + m.clone(), + Value::new(p.clone().into()), + Default::default(), + Default::default(), + ), }) }) .try_join() diff --git a/crates/turbopack-core/src/resolve/mod.rs b/crates/turbopack-core/src/resolve/mod.rs index 383fec7ae39f2..7953886469e03 100644 --- a/crates/turbopack-core/src/resolve/mod.rs +++ b/crates/turbopack-core/src/resolve/mod.rs @@ -1849,7 +1849,7 @@ async fn resolve_relative_request( Some(request) }, query, - fragment.clone(), + fragment, ) .await? { @@ -1900,7 +1900,7 @@ async fn resolve_relative_request( options_value, options, query, - fragment.clone(), + fragment, ) .await?, ); @@ -1918,7 +1918,7 @@ async fn resolve_relative_request( options_value, options, query, - fragment.clone(), + fragment, ) .await?, ); @@ -2057,7 +2057,7 @@ async fn resolve_module_request( full_pattern.into_string() }, query, - fragment.clone(), + fragment, ) .await? { @@ -2092,7 +2092,7 @@ async fn resolve_module_request( Value::new(path.clone()), package_path, query, - fragment.clone(), + fragment, options, )); } @@ -2106,7 +2106,7 @@ async fn resolve_module_request( options_value, options, query, - fragment.clone(), + fragment, ) .await?; results.push(resolved) @@ -2309,7 +2309,7 @@ async fn resolved( options_value, |package_path| package_path.get_relative_path_to(path_ref), query, - fragment.clone(), + fragment, ) .await? { diff --git a/crates/turbopack-core/src/resolve/parse.rs b/crates/turbopack-core/src/resolve/parse.rs index f10204d7ff9c1..baf6256ce752d 100644 --- a/crates/turbopack-core/src/resolve/parse.rs +++ b/crates/turbopack-core/src/resolve/parse.rs @@ -359,7 +359,7 @@ impl Request { path: path.clone(), query, force_in_lookup_dir: *force_in_lookup_dir, - fragment: fragment.clone(), + fragment: *fragment, } .cell(), Request::Relative { @@ -371,7 +371,7 @@ impl Request { path: path.clone(), query, force_in_lookup_dir: *force_in_lookup_dir, - fragment: fragment.clone(), + fragment: *fragment, } .cell(), Request::Module { @@ -383,7 +383,7 @@ impl Request { module: module.clone(), path: path.clone(), query, - fragment: fragment.clone(), + fragment: *fragment, } .cell(), Request::ServerRelative { @@ -393,7 +393,7 @@ impl Request { } => Request::ServerRelative { path: path.clone(), query, - fragment: fragment.clone(), + fragment: *fragment, } .cell(), Request::Windows { @@ -403,7 +403,7 @@ impl Request { } => Request::Windows { path: path.clone(), query, - fragment: fragment.clone(), + fragment: *fragment, } .cell(), Request::Empty => self, @@ -540,7 +540,7 @@ impl Request { Self::ServerRelative { path: pat, query: *query, - fragment: fragment.clone(), + fragment: *fragment, } .cell() } @@ -554,7 +554,7 @@ impl Request { Self::Windows { path: pat, query: *query, - fragment: fragment.clone(), + fragment: *fragment, } .cell() } @@ -574,8 +574,8 @@ impl Request { Self::Uri { protocol: protocol.clone(), remainder, - query: query.clone(), - fragment: fragment.clone(), + query: *query, + fragment: *fragment, } .cell() } From dafd4bf1ad44802d45d8d00533eee97f74474aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Tue, 9 Apr 2024 10:08:17 +0900 Subject: [PATCH 29/29] fiix --- crates/turbopack-cli/src/dev/mod.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/crates/turbopack-cli/src/dev/mod.rs b/crates/turbopack-cli/src/dev/mod.rs index bd3742020b70c..afcfca7a216d2 100644 --- a/crates/turbopack-cli/src/dev/mod.rs +++ b/crates/turbopack-cli/src/dev/mod.rs @@ -268,12 +268,18 @@ async fn source( let entry_requests = entry_requests .iter() .map(|r| match r { - EntryRequest::Relative(p) => { - Request::relative(Value::new(p.clone().into()), Default::default(), false) - } - EntryRequest::Module(m, p) => { - Request::module(m.clone(), Value::new(p.clone().into()), Default::default()) - } + EntryRequest::Relative(p) => Request::relative( + Value::new(p.clone().into()), + Default::default(), + Default::default(), + false, + ), + EntryRequest::Module(m, p) => Request::module( + m.clone(), + Value::new(p.clone().into()), + Default::default(), + Default::default(), + ), }) .collect();