Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
SyMind committed Feb 13, 2025
1 parent 3950c52 commit 2ada3ac
Show file tree
Hide file tree
Showing 21 changed files with 201 additions and 152 deletions.
3 changes: 2 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion crates/node_binding/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ rspack_plugin_progress = { workspace = true }
rspack_plugin_real_content_hash = { workspace = true }
rspack_plugin_remove_duplicate_modules = { workspace = true }
rspack_plugin_remove_empty_chunks = { workspace = true }
rspack_plugin_runtime = { workspace = true }
rspack_plugin_runtime_chunk = { workspace = true }
rspack_plugin_schemes = { workspace = true }
rspack_plugin_size_limits = { workspace = true }
Expand Down
8 changes: 1 addition & 7 deletions crates/node_binding/src/compilation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -756,19 +756,13 @@ impl JsCompilation {
match module_graph.module_graph_module_by_dependency_id(&dependency_id) {
Some(module) => match module_graph.module_by_identifier(&module.module_identifier) {
Some(module) => {
let dependency = module_graph.dependency_by_id(&dependency_id).unwrap();
let js_dependency = JsDependencyWrapper::new(
dependency.as_ref(),
compilation.id(),
Some(&compilation),
);
let js_module = JsModuleWrapper::new(
module.as_ref(),
compilation.id(),
compilation.compiler_id(),
Some(compilation),
);
Either::B((js_dependency, js_module))
(Either::B(()), Either::B(js_module))
}
None => (
Either::A(format!(
Expand Down
11 changes: 9 additions & 2 deletions crates/node_binding/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
extern crate napi_derive;
extern crate rspack_allocator;

use std::pin::Pin;
use std::str::FromStr;
use std::sync::{Arc, Mutex};
use std::{pin::Pin, str::FromStr as _};

use compiler::{Compiler, CompilerState, CompilerStateGuard};
use napi::bindgen_prelude::*;
Expand Down Expand Up @@ -46,6 +47,7 @@ mod raw_options;
mod resolver;
mod resolver_factory;
mod resource_data;
mod rsdoctor;
mod runtime;
mod source;
mod stats;
Expand Down Expand Up @@ -79,10 +81,15 @@ pub use raw_options::*;
pub use resolver::*;
use resolver_factory::*;
pub use resource_data::*;
use rspack_tracing::chrome::FlushGuard;
pub use rsdoctor::*;
use rspack_tracing::{ChromeTracer, OtelTracer, StdoutTracer, Tracer};
pub use runtime::*;
pub use source::*;
pub use stats::*;
use tracing::Level;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::{EnvFilter, Layer, Registry};
pub use utils::*;

#[napi]
Expand Down
9 changes: 3 additions & 6 deletions crates/node_binding/src/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ use napi::JsString;
use napi_derive::napi;
use rspack_collections::IdentifierMap;
use rspack_core::{
BuildMeta, BuildMetaDefaultObject, BuildMetaExportsType, Compilation, CompilationId, CompilerId,
ExportsArgument, LibIdentOptions, Module, ModuleArgument, ModuleIdentifier, RuntimeModuleStage,
SourceType,
};
use rspack_napi::{
napi::bindgen_prelude::*, threadsafe_function::ThreadsafeFunction, OneShotInstanceRef,
BuildMeta, BuildMetaDefaultObject, BuildMetaExportsType, Compilation, CompilationAsset,
CompilationId, CompilerId, ExportsArgument, LibIdentOptions, Module, ModuleArgument,
ModuleIdentifier, RuntimeModuleStage, SourceType,
};
use rspack_napi::{
napi::bindgen_prelude::*, threadsafe_function::ThreadsafeFunction, OneShotInstanceRef,
Expand Down
11 changes: 7 additions & 4 deletions crates/node_binding/src/plugins/interceptor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,11 @@ use crate::{
JsChunkAssetArgs, JsChunkWrapper, JsCompilationWrapper,
JsContextModuleFactoryAfterResolveDataWrapper, JsContextModuleFactoryAfterResolveResult,
JsContextModuleFactoryBeforeResolveDataWrapper, JsContextModuleFactoryBeforeResolveResult,
JsCreateData, JsExecuteModuleArg, JsFactorizeArgs, JsFactorizeOutput, JsModuleWrapper,
JsNormalModuleFactoryCreateModuleArgs, JsResolveArgs, JsResolveForSchemeArgs,
JsResolveForSchemeOutput, JsResolveOutput, JsRuntimeGlobals, JsRuntimeModule, JsRuntimeModuleArg,
JsCreateData, JsCreateScriptData, JsExecuteModuleArg, JsFactorizeArgs, JsFactorizeOutput,
JsLinkPrefetchData, JsLinkPreloadData, JsModuleWrapper, JsNormalModuleFactoryCreateModuleArgs,
JsResolveArgs, JsResolveForSchemeArgs, JsResolveForSchemeOutput, JsResolveOutput,
JsRsdoctorAssetPatch, JsRsdoctorChunkGraph, JsRsdoctorModuleGraph, JsRsdoctorModuleIdsPatch,
JsRsdoctorModuleSourcesPatch, JsRuntimeGlobals, JsRuntimeModule, JsRuntimeModuleArg,
JsRuntimeRequirementInTreeArg, JsRuntimeRequirementInTreeResult, ToJsCompatSourceOwned,
};

Expand Down Expand Up @@ -1236,6 +1238,7 @@ impl CompilationStillValidModule for CompilationStillValidModuleTap {
impl CompilationSucceedModule for CompilationSucceedModuleTap {
async fn run(
&self,
compiler_id: CompilerId,
compilation_id: CompilationId,
module: &mut BoxModule,
) -> rspack_error::Result<()> {
Expand All @@ -1244,7 +1247,7 @@ impl CompilationSucceedModule for CompilationSucceedModuleTap {
.call_with_sync(JsModuleWrapper::new(
module.as_ref(),
compilation_id,
compilation.compiler_id(),
compiler_id,
None,
))
.await
Expand Down
144 changes: 130 additions & 14 deletions crates/node_binding/src/plugins/js_hooks_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ use rspack_core::CompilerCompilation;
use rspack_core::{ApplyContext, CompilerOptions, PluginContext};
use rspack_hook::plugin;
use rspack_hook::plugin_hook;
use rspack_hook::Hook;
use rspack_hook::Hook as _;
use rspack_plugin_html::HtmlRspackPlugin;
use rspack_plugin_javascript::JsPlugin;
use rspack_plugin_rsdoctor::RsdoctorPlugin;
use rspack_plugin_runtime::RuntimePlugin;

use super::interceptor::*;

Expand All @@ -35,9 +37,10 @@ pub struct JsHooksAdapterPlugin {
register_compilation_after_optimize_modules_taps: RegisterCompilationAfterOptimizeModulesTaps,
register_compilation_optimize_tree_taps: RegisterCompilationOptimizeTreeTaps,
register_compilation_optimize_chunk_modules_taps: RegisterCompilationOptimizeChunkModulesTaps,
register_compilation_additional_tree_runtime_requirements:
register_compilation_additional_tree_runtime_requirements_taps:
RegisterCompilationAdditionalTreeRuntimeRequirementsTaps,
register_compilation_runtime_requirement_in_tree: RegisterCompilationRuntimeRequirementInTreeTaps,
register_compilation_runtime_requirement_in_tree_taps:
RegisterCompilationRuntimeRequirementInTreeTaps,
register_compilation_runtime_module_taps: RegisterCompilationRuntimeModuleTaps,
register_compilation_chunk_hash_taps: RegisterCompilationChunkHashTaps,
register_compilation_chunk_asset_taps: RegisterCompilationChunkAssetTaps,
Expand All @@ -63,6 +66,14 @@ pub struct JsHooksAdapterPlugin {
register_html_plugin_after_template_execution_taps: RegisterHtmlPluginAfterTemplateExecutionTaps,
register_html_plugin_before_emit_taps: RegisterHtmlPluginBeforeEmitTaps,
register_html_plugin_after_emit_taps: RegisterHtmlPluginAfterEmitTaps,
register_runtime_plugin_create_script_taps: RegisterRuntimePluginCreateScriptTaps,
register_runtime_plugin_link_preload_taps: RegisterRuntimePluginLinkPreloadTaps,
register_runtime_plugin_link_prefetch_taps: RegisterRuntimePluginLinkPrefetchTaps,
register_rsdoctor_plugin_module_graph_taps: RegisterRsdoctorPluginModuleGraphTaps,
register_rsdoctor_plugin_chunk_graph_taps: RegisterRsdoctorPluginChunkGraphTaps,
register_rsdoctor_plugin_assets_taps: RegisterRsdoctorPluginAssetsTaps,
register_rsdoctor_plugin_module_ids_taps: RegisterRsdoctorPluginModuleIdsTaps,
register_rsdoctor_plugin_module_sources_taps: RegisterRsdoctorPluginModuleSourcesTaps,
}

impl fmt::Debug for JsHooksAdapterPlugin {
Expand All @@ -77,7 +88,7 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
"rspack.JsHooksAdapterPlugin"
}

#[tracing::instrument(name = "js_hooks_adapter::apply", skip_all)]
// #[tracing::instrument("js_hooks_adapter::apply", skip_all)]
fn apply(
&self,
ctx: PluginContext<&mut ApplyContext>,
Expand Down Expand Up @@ -182,7 +193,7 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
.additional_tree_runtime_requirements
.intercept(
self
.register_compilation_additional_tree_runtime_requirements
.register_compilation_additional_tree_runtime_requirements_taps
.clone(),
);
ctx
Expand All @@ -191,7 +202,7 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
.runtime_requirement_in_tree
.intercept(
self
.register_compilation_runtime_requirement_in_tree
.register_compilation_runtime_requirement_in_tree_taps
.clone(),
);
ctx
Expand Down Expand Up @@ -307,6 +318,18 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
.compilation
.tap(html_hooks_adapter_compilation::new(self));

ctx
.context
.compiler_hooks
.compilation
.tap(runtime_hooks_adapter_compilation::new(self));

ctx
.context
.compiler_hooks
.compilation
.tap(rsdoctor_hooks_adapter_compilation::new(self));

Ok(())
}

Expand Down Expand Up @@ -337,10 +360,10 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
.register_compilation_optimize_chunk_modules_taps
.clear_cache();
self
.register_compilation_additional_tree_runtime_requirements
.register_compilation_additional_tree_runtime_requirements_taps
.clear_cache();
self
.register_compilation_runtime_requirement_in_tree
.register_compilation_runtime_requirement_in_tree_taps
.clear_cache();
self.register_compilation_runtime_module_taps.clear_cache();
self.register_compilation_chunk_hash_taps.clear_cache();
Expand Down Expand Up @@ -392,6 +415,22 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
.clear_cache();
self.register_html_plugin_before_emit_taps.clear_cache();
self.register_html_plugin_after_emit_taps.clear_cache();
self
.register_runtime_plugin_create_script_taps
.clear_cache();
self.register_runtime_plugin_link_preload_taps.clear_cache();
self
.register_runtime_plugin_link_prefetch_taps
.clear_cache();
self
.register_rsdoctor_plugin_module_graph_taps
.clear_cache();
self.register_rsdoctor_plugin_chunk_graph_taps.clear_cache();
self.register_rsdoctor_plugin_assets_taps.clear_cache();
self.register_rsdoctor_plugin_module_ids_taps.clear_cache();
self
.register_rsdoctor_plugin_module_sources_taps
.clear_cache();
}
}

Expand All @@ -401,7 +440,7 @@ async fn js_hooks_adapter_compilation(
compilation: &mut Compilation,
_params: &mut CompilationParams,
) -> rspack_error::Result<()> {
let mut hooks = JsPlugin::get_compilation_hooks_mut(compilation);
let mut hooks = JsPlugin::get_compilation_hooks_mut(compilation.id());
hooks
.chunk_hash
.intercept(self.register_javascript_modules_chunk_hash_taps.clone());
Expand All @@ -415,7 +454,7 @@ async fn html_hooks_adapter_compilation(
compilation: &mut Compilation,
_params: &mut CompilationParams,
) -> rspack_error::Result<()> {
let mut hooks = HtmlRspackPlugin::get_compilation_hooks_mut(compilation);
let mut hooks = HtmlRspackPlugin::get_compilation_hooks_mut(compilation.id());
hooks.before_asset_tag_generation.intercept(
self
.register_html_plugin_before_asset_tag_generation_taps
Expand Down Expand Up @@ -444,6 +483,51 @@ async fn html_hooks_adapter_compilation(
Ok(())
}

#[plugin_hook(CompilerCompilation for JsHooksAdapterPlugin)]
async fn runtime_hooks_adapter_compilation(
&self,
compilation: &mut Compilation,
_params: &mut CompilationParams,
) -> rspack_error::Result<()> {
let mut hooks = RuntimePlugin::get_compilation_hooks_mut(compilation.id());
hooks
.create_script
.intercept(self.register_runtime_plugin_create_script_taps.clone());
hooks
.link_preload
.intercept(self.register_runtime_plugin_link_preload_taps.clone());
hooks
.link_prefetch
.intercept(self.register_runtime_plugin_link_prefetch_taps.clone());
Ok(())
}

#[plugin_hook(CompilerCompilation for JsHooksAdapterPlugin)]
async fn rsdoctor_hooks_adapter_compilation(
&self,
compilation: &mut Compilation,
_params: &mut CompilationParams,
) -> rspack_error::Result<()> {
let mut hooks = RsdoctorPlugin::get_compilation_hooks_mut(compilation.id());
hooks
.module_graph
.intercept(self.register_rsdoctor_plugin_module_graph_taps.clone());
hooks
.chunk_graph
.intercept(self.register_rsdoctor_plugin_chunk_graph_taps.clone());
hooks
.assets
.intercept(self.register_rsdoctor_plugin_assets_taps.clone());
hooks
.module_ids
.intercept(self.register_rsdoctor_plugin_module_ids_taps.clone());
hooks
.module_sources
.intercept(self.register_rsdoctor_plugin_module_sources_taps.clone());

Ok(())
}

impl JsHooksAdapterPlugin {
pub fn from_js_hooks(_env: Env, register_js_taps: RegisterJsTaps) -> Result<Self> {
let non_skippable_registers = NonSkippableRegisters::default();
Expand Down Expand Up @@ -519,14 +603,14 @@ impl JsHooksAdapterPlugin {
register_js_taps.register_compilation_optimize_chunk_modules_taps,
non_skippable_registers.clone(),
),
register_compilation_additional_tree_runtime_requirements:
register_compilation_additional_tree_runtime_requirements_taps:
RegisterCompilationAdditionalTreeRuntimeRequirementsTaps::new(
register_js_taps.register_compilation_additional_tree_runtime_requirements,
register_js_taps.register_compilation_additional_tree_runtime_requirements_taps,
non_skippable_registers.clone(),
),
register_compilation_runtime_requirement_in_tree:
register_compilation_runtime_requirement_in_tree_taps:
RegisterCompilationRuntimeRequirementInTreeTaps::new(
register_js_taps.register_compilation_runtime_requirement_in_tree,
register_js_taps.register_compilation_runtime_requirement_in_tree_taps,
non_skippable_registers.clone(),
),
register_compilation_runtime_module_taps: RegisterCompilationRuntimeModuleTaps::new(
Expand Down Expand Up @@ -628,6 +712,38 @@ impl JsHooksAdapterPlugin {
register_js_taps.register_html_plugin_after_emit_taps,
non_skippable_registers.clone(),
),
register_runtime_plugin_create_script_taps: RegisterRuntimePluginCreateScriptTaps::new(
register_js_taps.register_runtime_plugin_create_script_taps,
non_skippable_registers.clone(),
),
register_runtime_plugin_link_preload_taps: RegisterRuntimePluginLinkPreloadTaps::new(
register_js_taps.register_runtime_plugin_link_preload_taps,
non_skippable_registers.clone(),
),
register_runtime_plugin_link_prefetch_taps: RegisterRuntimePluginLinkPrefetchTaps::new(
register_js_taps.register_runtime_plugin_link_prefetch_taps,
non_skippable_registers.clone(),
),
register_rsdoctor_plugin_module_graph_taps: RegisterRsdoctorPluginModuleGraphTaps::new(
register_js_taps.register_rsdoctor_plugin_module_graph_taps,
non_skippable_registers.clone(),
),
register_rsdoctor_plugin_chunk_graph_taps: RegisterRsdoctorPluginChunkGraphTaps::new(
register_js_taps.register_rsdoctor_plugin_chunk_graph_taps,
non_skippable_registers.clone(),
),
register_rsdoctor_plugin_assets_taps: RegisterRsdoctorPluginAssetsTaps::new(
register_js_taps.register_rsdoctor_plugin_assets_taps,
non_skippable_registers.clone(),
),
register_rsdoctor_plugin_module_ids_taps: RegisterRsdoctorPluginModuleIdsTaps::new(
register_js_taps.register_rsdoctor_plugin_module_ids_taps,
non_skippable_registers.clone(),
),
register_rsdoctor_plugin_module_sources_taps: RegisterRsdoctorPluginModuleSourcesTaps::new(
register_js_taps.register_rsdoctor_plugin_module_sources_taps,
non_skippable_registers.clone(),
),
non_skippable_registers,
}
.into(),
Expand Down
7 changes: 6 additions & 1 deletion crates/node_binding/src/plugins/js_loader/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,12 @@ impl TryFrom<&mut LoaderContext<RunnerContext>> for JsLoaderContext {
Ok(JsLoaderContext {
resource_data: cx.resource_data.as_ref().into(),
module_identifier: module.identifier().to_string(),
module: JsModuleWrapper::new(module, cx.context.compilation_id, None),
module: JsModuleWrapper::new(
module,
cx.context.compilation_id,
cx.context.compiler_id,
None,
),
hot: cx.hot,
content: match cx.content() {
Some(c) => Either::B(c.to_owned().into_bytes().into()),
Expand Down
Loading

0 comments on commit 2ada3ac

Please sign in to comment.