Skip to content

Commit 1889a57

Browse files
authored
fix: factorize hooks avoid update dependency request (#10999)
* fix: factorize hooks avoid update dependency request * add test case * fix: remove useless set_request
1 parent 799e927 commit 1889a57

File tree

47 files changed

+99
-196
lines changed

Some content is hidden

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

47 files changed

+99
-196
lines changed

crates/rspack_binding_api/src/plugins/interceptor.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,13 +1438,10 @@ impl CompilationAfterSeal for CompilationAfterSealTap {
14381438
#[async_trait]
14391439
impl NormalModuleFactoryBeforeResolve for NormalModuleFactoryBeforeResolveTap {
14401440
async fn run(&self, data: &mut ModuleFactoryCreateData) -> rspack_error::Result<Option<bool>> {
1441-
let dependency = data.dependencies[0]
1442-
.as_module_dependency_mut()
1443-
.expect("should be module dependency");
14441441
match self
14451442
.function
14461443
.call_with_promise(JsBeforeResolveArgs {
1447-
request: dependency.request().to_string(),
1444+
request: data.request.clone(),
14481445
context: data.context.to_string(),
14491446
issuer: data
14501447
.issuer
@@ -1456,7 +1453,7 @@ impl NormalModuleFactoryBeforeResolve for NormalModuleFactoryBeforeResolveTap {
14561453
.await
14571454
{
14581455
Ok((ret, resolve_data)) => {
1459-
dependency.set_request(resolve_data.request);
1456+
data.request = resolve_data.request;
14601457
data.context = resolve_data.context.into();
14611458
Ok(ret)
14621459
}
@@ -1475,13 +1472,10 @@ impl NormalModuleFactoryFactorize for NormalModuleFactoryFactorizeTap {
14751472
&self,
14761473
data: &mut ModuleFactoryCreateData,
14771474
) -> rspack_error::Result<Option<BoxModule>> {
1478-
let dependency = data.dependencies[0]
1479-
.as_module_dependency_mut()
1480-
.expect("should be module dependency");
14811475
match self
14821476
.function
14831477
.call_with_promise(JsFactorizeArgs {
1484-
request: dependency.request().to_string(),
1478+
request: data.request.clone(),
14851479
context: data.context.to_string(),
14861480
issuer: data
14871481
.issuer
@@ -1493,7 +1487,7 @@ impl NormalModuleFactoryFactorize for NormalModuleFactoryFactorizeTap {
14931487
.await
14941488
{
14951489
Ok(resolve_data) => {
1496-
dependency.set_request(resolve_data.request);
1490+
data.request = resolve_data.request;
14971491
data.context = resolve_data.context.into();
14981492
// only supports update resolve request for now
14991493
Ok(None)
@@ -1513,13 +1507,10 @@ impl NormalModuleFactoryResolve for NormalModuleFactoryResolveTap {
15131507
&self,
15141508
data: &mut ModuleFactoryCreateData,
15151509
) -> rspack_error::Result<Option<NormalModuleFactoryResolveResult>> {
1516-
let dependency = data.dependencies[0]
1517-
.as_module_dependency_mut()
1518-
.expect("should be module dependency");
15191510
match self
15201511
.function
15211512
.call_with_promise(JsResolveArgs {
1522-
request: dependency.request().to_string(),
1513+
request: data.request.clone(),
15231514
context: data.context.to_string(),
15241515
issuer: data
15251516
.issuer
@@ -1531,7 +1522,7 @@ impl NormalModuleFactoryResolve for NormalModuleFactoryResolveTap {
15311522
.await
15321523
{
15331524
Ok(resolve_data) => {
1534-
dependency.set_request(resolve_data.request);
1525+
data.request = resolve_data.request;
15351526
data.context = resolve_data.context.into();
15361527
// only supports update resolve request for now
15371528
Ok(None)

crates/rspack_core/src/compiler/make/repair/factorize.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ impl Task<MakeTaskContext> for FactorizeTask {
5858
.or(self.issuer_layer.as_ref())
5959
.cloned();
6060

61+
let request = self.dependencies[0]
62+
.as_module_dependency()
63+
.map(|d| d.request().to_string())
64+
.or_else(|| {
65+
self.dependencies[0]
66+
.as_context_dependency()
67+
.map(|d| d.request().to_string())
68+
})
69+
.unwrap_or_default();
6170
// Error and result are not mutually exclusive in webpack module factorization.
6271
// Rspack puts results that need to be shared in both error and ok in [ModuleFactoryCreateData].
6372
let mut create_data = ModuleFactoryCreateData {
@@ -66,6 +75,7 @@ impl Task<MakeTaskContext> for FactorizeTask {
6675
resolve_options: self.resolve_options,
6776
options: self.options.clone(),
6877
context,
78+
request,
6979
dependencies: self.dependencies,
7080
issuer: self.issuer,
7181
issuer_identifier: self.original_module_identifier,

crates/rspack_core/src/dependency/context_dependency.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pub trait ContextDependency: Dependency {
88
fn options(&self) -> &ContextOptions;
99
fn get_context(&self) -> Option<&str>;
1010
fn resource_identifier(&self) -> &str;
11-
fn set_request(&mut self, request: String);
1211

1312
fn get_optional(&self) -> bool {
1413
false

crates/rspack_core/src/dependency/context_element_dependency.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,6 @@ impl ModuleDependency for ContextElementDependency {
157157
)
158158
}
159159

160-
fn set_request(&mut self, request: String) {
161-
self.request = request;
162-
}
163-
164160
fn factorize_info(&self) -> &FactorizeInfo {
165161
&self.factorize_info
166162
}

crates/rspack_core/src/dependency/entry.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,6 @@ impl ModuleDependency for EntryDependency {
9898
&self.request
9999
}
100100

101-
fn set_request(&mut self, request: String) {
102-
self.request = request;
103-
}
104-
105101
fn factorize_info(&self) -> &FactorizeInfo {
106102
&self.factorize_info
107103
}

crates/rspack_core/src/dependency/loader_import.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,6 @@ impl ModuleDependency for LoaderImportDependency {
8787
&self.request
8888
}
8989

90-
fn set_request(&mut self, request: String) {
91-
self.request = request;
92-
}
93-
9490
fn factorize_info(&self) -> &FactorizeInfo {
9591
&self.factorize_info
9692
}

crates/rspack_core/src/dependency/module_dependency.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ pub trait ModuleDependency: Dependency {
2727
false
2828
}
2929

30-
fn set_request(&mut self, _request: String) {}
31-
3230
fn get_optional(&self) -> bool {
3331
false
3432
}

crates/rspack_core/src/module_factory.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub struct ModuleFactoryCreateData {
2121
pub resolve_options: Option<Arc<Resolve>>,
2222
#[cacheable(with=As<FromContext>)]
2323
pub options: Arc<CompilerOptions>,
24+
pub request: String,
2425
pub context: Context,
2526
pub dependencies: Vec<BoxDependency>,
2627
pub issuer: Option<Box<str>>,
@@ -36,17 +37,6 @@ pub struct ModuleFactoryCreateData {
3637
}
3738

3839
impl ModuleFactoryCreateData {
39-
pub fn request(&self) -> Option<&str> {
40-
self.dependencies[0]
41-
.as_module_dependency()
42-
.map(|d| d.request())
43-
.or_else(|| {
44-
self.dependencies[0]
45-
.as_context_dependency()
46-
.map(|d| d.request())
47-
})
48-
}
49-
5040
pub fn add_file_dependency<F: Into<ArcPath>>(&mut self, file: F) {
5141
self.file_dependencies.insert(file.into());
5242
}

crates/rspack_core/src/normal_module_factory.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ impl NormalModuleFactory {
150150
let dependency_optional = dependency.get_optional();
151151

152152
let importer = data.issuer_identifier;
153-
let raw_request = dependency.request().to_owned();
153+
let raw_request = data.request.clone();
154154

155155
let mut file_dependencies = Default::default();
156156
let mut missing_dependencies = Default::default();
@@ -165,11 +165,11 @@ impl NormalModuleFactory {
165165
let mut no_auto_loaders = false;
166166
let mut no_pre_post_auto_loaders = false;
167167

168-
let mut scheme = get_scheme(dependency.request());
168+
let mut scheme = get_scheme(&data.request);
169169
let context_scheme = get_scheme(data.context.as_ref());
170-
let mut unresolved_resource = dependency.request();
170+
let mut unresolved_resource = data.request.as_str();
171171
if scheme.is_none() {
172-
let mut request_without_match_resource = dependency.request();
172+
let mut request_without_match_resource = data.request.as_str();
173173
request_without_match_resource = {
174174
if let Some(m) = MATCH_RESOURCE_REGEX.captures(request_without_match_resource) {
175175
let match_resource = {
@@ -864,20 +864,13 @@ impl NormalModuleFactory {
864864
if let NormalModuleFactoryResolveResult::Module(result) = result {
865865
return Ok(ModuleFactoryResult::new_with_module(result));
866866
} else {
867-
let ident = format!(
868-
"{}/{}",
869-
&data.context,
870-
data.request().expect("normal module should have request")
871-
);
867+
let ident = format!("{}/{}", &data.context, data.request);
872868
let module_identifier = ModuleIdentifier::from(format!("ignored|{ident}"));
873869

874870
let mut raw_module = RawModule::new(
875871
"/* (ignored) */".to_owned(),
876872
module_identifier,
877-
format!(
878-
"{} (ignored)",
879-
data.request().expect("normal module should have request")
880-
),
873+
format!("{} (ignored)", data.request),
881874
Default::default(),
882875
)
883876
.boxed();

crates/rspack_plugin_css/src/dependency/compose.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ impl ModuleDependency for CssComposeDependency {
7878
&self.request
7979
}
8080

81-
fn set_request(&mut self, request: String) {
82-
self.request = request;
83-
}
84-
8581
fn factorize_info(&self) -> &FactorizeInfo {
8682
&self.factorize_info
8783
}

0 commit comments

Comments
 (0)