Skip to content

Commit

Permalink
refactor: move impl_runtime_module macro to core (#4738)
Browse files Browse the repository at this point in the history
  • Loading branch information
ahabhgk authored Nov 22, 2023
1 parent 3ce9ced commit 56ac83f
Show file tree
Hide file tree
Showing 42 changed files with 136 additions and 166 deletions.
2 changes: 0 additions & 2 deletions Cargo.lock

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

9 changes: 7 additions & 2 deletions crates/rspack_core/src/dependency/module_dependency.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ use crate::{DependencyCondition, ExtendedReferencedExport, ModuleGraph, RuntimeS

pub trait ModuleDependency: Dependency {
fn request(&self) -> &str;
fn user_request(&self) -> &str;

fn user_request(&self) -> &str {
self.request()
}

// TODO: move to ModuleGraphConnection
fn weak(&self) -> bool {
false
}
fn set_request(&mut self, request: String);

fn set_request(&mut self, _request: String) {}

fn get_optional(&self) -> bool {
false
Expand Down
79 changes: 79 additions & 0 deletions crates/rspack_core/src/runtime_module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,82 @@ impl<T: RuntimeModule + 'static> RuntimeModuleExt for T {
Box::new(self)
}
}

#[macro_export]
macro_rules! impl_runtime_module {
($ident: ident) => {
impl rspack_identifier::Identifiable for $ident {
fn identifier(&self) -> rspack_identifier::Identifier {
self.name()
}
}

impl PartialEq for $ident {
fn eq(&self, other: &Self) -> bool {
self.name() == other.name()
}
}

impl std::hash::Hash for $ident {
fn hash<H: std::hash::Hasher>(&self, _state: &mut H) {
unreachable!()
}
}

impl $crate::DependenciesBlock for $ident {
fn add_block_id(&mut self, _: $crate::AsyncDependenciesBlockIdentifier) {
unreachable!()
}

fn get_blocks(&self) -> &[$crate::AsyncDependenciesBlockIdentifier] {
unreachable!()
}

fn add_dependency_id(&mut self, _: $crate::DependencyId) {
unreachable!()
}

fn get_dependencies(&self) -> &[$crate::DependencyId] {
unreachable!()
}
}

impl $crate::Module for $ident {
fn module_type(&self) -> &$crate::ModuleType {
&$crate::ModuleType::Runtime
}

fn source_types(&self) -> &[$crate::SourceType] {
&[$crate::SourceType::JavaScript]
}

fn size(&self, _source_type: &$crate::SourceType) -> f64 {
// TODO
160.0
}

fn readable_identifier(&self, _context: &$crate::Context) -> std::borrow::Cow<str> {
self.name().as_str().into()
}

fn original_source(&self) -> Option<&dyn $crate::rspack_sources::Source> {
None
}

fn code_generation(
&self,
compilation: &$crate::Compilation,
_runtime: Option<&$crate::RuntimeSpec>,
) -> rspack_error::Result<$crate::CodeGenerationResult> {
let mut result = $crate::CodeGenerationResult::default();
result.add($crate::SourceType::JavaScript, self.generate(compilation));
result.set_hash(
&compilation.options.output.hash_function,
&compilation.options.output.hash_digest,
&compilation.options.output.hash_salt,
);
Ok(result)
}
}
};
}
9 changes: 4 additions & 5 deletions crates/rspack_plugin_hmr/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ repository = "https://github.com/web-infra-dev/rspack"
version = "0.1.0"

[dependencies]
rspack_core = { path = "../rspack_core" }
rspack_error = { path = "../rspack_error" }
rspack_hash = { path = "../rspack_hash" }
rspack_identifier = { path = "../rspack_identifier" }
rspack_plugin_runtime = { path = "../rspack_plugin_runtime" }
rspack_core = { path = "../rspack_core" }
rspack_error = { path = "../rspack_error" }
rspack_hash = { path = "../rspack_hash" }
rspack_identifier = { path = "../rspack_identifier" }

async-trait = { workspace = true }
rustc-hash = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion crates/rspack_plugin_hmr/src/hot_module_replacement.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;
use rspack_plugin_runtime::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct HotModuleReplacementRuntimeModule {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct AsyncRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
use rspack_core::{
get_js_chunk_filename_template,
get_js_chunk_filename_template, impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
ChunkUkey, Compilation, OutputOptions, PathData, RuntimeGlobals, RuntimeModule,
RuntimeModuleStage, SourceType,
};
use rspack_identifier::Identifier;

use super::utils::get_undo_path;
use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct AutoPublicPathRuntimeModule {
Expand Down
3 changes: 1 addition & 2 deletions crates/rspack_plugin_runtime/src/runtime_module/base_uri.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
ChunkUkey, Compilation, RuntimeGlobals, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct BaseUriRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct CompatGetDefaultExportRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct CreateFakeNamespaceObjectRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeGlobals, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct CreateScriptUrlRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, ConcatSource, RawSource, SourceExt},
ChunkUkey, Compilation, RuntimeGlobals, RuntimeModule, RuntimeModuleStage,
};
use rspack_identifier::Identifier;
use rustc_hash::FxHashSet as HashSet;

use super::utils::chunk_has_css;
use crate::impl_runtime_module;
use crate::runtime_module::{render_condition_map, stringify_chunks};

#[derive(Debug, Default, Eq)]
pub struct CssLoadingRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct DefinePropertyGettersRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Default, Eq)]
pub struct EnsureChunkRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Default, Eq)]
pub struct ExportWebpackRequireRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
use rspack_core::{
get_css_chunk_filename_template, get_js_chunk_filename_template,
get_css_chunk_filename_template, get_js_chunk_filename_template, impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
stringify_map, ChunkUkey, Compilation, PathData, RuntimeGlobals, RuntimeModule, SourceType,
};
use rspack_identifier::Identifier;
use rustc_hash::FxHashMap as HashMap;

use super::utils::chunk_has_css;
use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct GetChunkFilenameRuntimeModule {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
ChunkUkey, Compilation, PathData, RuntimeGlobals, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

// TODO workaround for get_chunk_update_filename
#[derive(Debug, Eq)]
pub struct GetChunkUpdateFilenameRuntimeModule {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct GetFullHashRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
ChunkUkey, Compilation, PathData, RuntimeGlobals, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct GetMainFilenameRuntimeModule {
chunk: Option<ChunkUkey>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeGlobals, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct GetTrustedTypesPolicyRuntimeModule {
id: Identifier,
Expand Down
3 changes: 1 addition & 2 deletions crates/rspack_plugin_runtime/src/runtime_module/global.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct GlobalRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct HarmonyModuleDecoratorRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, RawSource, SourceExt},
Compilation, RuntimeModule,
};
use rspack_identifier::Identifier;

use crate::impl_runtime_module;

#[derive(Debug, Eq)]
pub struct HasOwnPropertyRuntimeModule {
id: Identifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use rspack_core::{
impl_runtime_module,
rspack_sources::{BoxSource, ConcatSource, RawSource, SourceExt},
Chunk, ChunkUkey, Compilation, RuntimeGlobals, RuntimeModule, RuntimeModuleStage,
};
use rspack_identifier::Identifier;

use super::utils::{chunk_has_js, get_output_dir};
use crate::impl_runtime_module;
use crate::runtime_module::utils::{get_initial_chunk_ids, render_condition_map, stringify_chunks};

#[derive(Debug, Default, Eq)]
Expand Down
Loading

0 comments on commit 56ac83f

Please sign in to comment.