Skip to content

Commit

Permalink
chore: merge origin main
Browse files Browse the repository at this point in the history
  • Loading branch information
SyMind committed Oct 10, 2024
2 parents 1540671 + 45d529c commit 6d3d133
Show file tree
Hide file tree
Showing 86 changed files with 1,582 additions and 1,067 deletions.
192 changes: 96 additions & 96 deletions Cargo.lock

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@ napi-derive = { version = "2" }
# Must be pinned with the same swc versions
#rkyv = { version = "=0.7.44" } # synced with swc wasm plugin
swc_config = { version = "=0.1.15" }
swc_core = { version = "=0.106.0", default-features = false }
swc_ecma_minifier = { version = "=0.208.0", default-features = false }
swc_core = { version = "=0.109.1", default-features = false }
swc_ecma_minifier = { version = "=0.209.1", default-features = false }
swc_error_reporters = { version = "=1.0.0" }
swc_html = { version = "=0.153.0" }
swc_html_minifier = { version = "=0.150.0", default-features = false }
swc_html = { version = "=0.154.0" }
swc_html_minifier = { version = "=0.151.0", default-features = false }
swc_node_comments = { version = "=0.27.0" }

rspack_dojang = { version = "0.1.9" }
Expand Down
22 changes: 22 additions & 0 deletions crates/node_binding/binding.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,7 @@ export interface JsModule {
factoryMeta?: JsFactoryMeta
type: string
layer?: string
useSourceMap?: boolean
}

export interface JsModuleDescriptor {
Expand Down Expand Up @@ -712,6 +713,7 @@ export interface JsPathData {
url?: string
id?: string
chunk?: JsChunkPathData
contentHashType?: string
}

export interface JsResolveArgs {
Expand Down Expand Up @@ -1438,6 +1440,26 @@ export interface RawJavascriptParserOptions {
worker?: Array<string>
overrideStrict?: string
importMeta?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
*/
requireAsExpression?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
*/
requireDynamic?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
*/
requireResolve?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
*/
importDynamic?: boolean
}

export interface RawLazyCompilationOption {
Expand Down
2 changes: 1 addition & 1 deletion crates/node_binding/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@rspack/binding",
"version": "1.0.8",
"version": "1.0.9",
"license": "MIT",
"description": "Node binding for rspack",
"main": "binding.js",
Expand Down
16 changes: 16 additions & 0 deletions crates/rspack_binding_options/src/options/raw_module/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,18 @@ pub struct RawJavascriptParserOptions {
pub worker: Option<Vec<String>>,
pub override_strict: Option<String>,
pub import_meta: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub require_as_expression: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub require_dynamic: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub require_resolve: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub import_dynamic: Option<bool>,
}

impl From<RawJavascriptParserOptions> for JavascriptParserOptions {
Expand Down Expand Up @@ -307,6 +319,10 @@ impl From<RawJavascriptParserOptions> for JavascriptParserOptions {
.override_strict
.map(|e| OverrideStrict::from(e.as_str())),
import_meta: value.import_meta,
require_as_expression: value.require_as_expression,
require_dynamic: value.require_dynamic,
require_resolve: value.require_resolve,
import_dynamic: value.import_dynamic,
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions crates/rspack_binding_values/src/compilation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ impl JsCompilation {
let chunk = data.chunk.as_ref().map(|c| c.to_chunk(self.0));
self
.0
.get_asset_path(&filename.into(), data.as_core_path_data(chunk.as_ref()))
.get_asset_path(&filename.into(), data.to_path_data(chunk.as_ref()))
}

#[napi]
Expand All @@ -402,7 +402,7 @@ impl JsCompilation {
let chunk = data.chunk.as_ref().map(|c| c.to_chunk(self.0));
let path_and_asset_info = self
.0
.get_asset_path_with_info(&filename.into(), data.as_core_path_data(chunk.as_ref()))?;
.get_asset_path_with_info(&filename.into(), data.to_path_data(chunk.as_ref()))?;
Ok(path_and_asset_info.into())
}

Expand All @@ -411,7 +411,7 @@ impl JsCompilation {
let chunk = data.chunk.as_ref().map(|c| c.to_chunk(self.0));
self
.0
.get_path(&filename.into(), data.as_core_path_data(chunk.as_ref()))
.get_path(&filename.into(), data.to_path_data(chunk.as_ref()))
}

#[napi]
Expand All @@ -423,7 +423,7 @@ impl JsCompilation {
let chunk = data.chunk.as_ref().map(|c| c.to_chunk(self.0));
let path_and_asset_info = self
.0
.get_path_with_info(&filename.into(), data.as_core_path_data(chunk.as_ref()))?;
.get_path_with_info(&filename.into(), data.to_path_data(chunk.as_ref()))?;
Ok(path_and_asset_info.into())
}

Expand Down
6 changes: 4 additions & 2 deletions crates/rspack_binding_values/src/filename.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,10 @@ impl LocalFilenameFn for ThreadSafeFilenameFn {
&self,
path_data: &PathData,
asset_info: Option<&AssetInfo>,
hash_digest_length: usize,
) -> rspack_error::Result<String> {
self.0.blocking_call_with_sync((
JsPathData::from(*path_data),
JsPathData::from_path_data(*path_data, hash_digest_length),
asset_info.cloned().map(JsAssetInfo::from),
))
}
Expand All @@ -110,8 +111,9 @@ impl LocalFilenameFn for LocalJsFilenameFn {
&self,
path_data: &PathData,
asset_info: Option<&AssetInfo>,
hash_digest_length: usize,
) -> Result<String, Self::Error> {
let js_path_data = JsPathData::from(*path_data);
let js_path_data = JsPathData::from_path_data(*path_data, hash_digest_length);
let js_asset_info = asset_info.cloned().map(JsAssetInfo::from);
self.0.call2(js_path_data, js_asset_info)
}
Expand Down
21 changes: 6 additions & 15 deletions crates/rspack_binding_values/src/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ pub struct JsModule {
pub factory_meta: Option<JsFactoryMeta>,
pub r#type: String,
pub layer: Option<String>,
pub use_source_map: Option<bool>,
}

pub trait ToJsModule {
Expand Down Expand Up @@ -368,20 +369,17 @@ impl ToJsModule for dyn Module {
.map(|factory_meta| JsFactoryMeta {
side_effect_free: factory_meta.side_effect_free,
}),
..Default::default()
})
.or_else(|_| {
self.try_as_raw_module().map(|_| JsModule {
context: context(),
r#type: module_type(),
layer: module_layer(),
original_source: original_source(),
resource: None,
module_identifier: module_identifier(),
name_for_condition: name_for_condition(),
raw_request: None,
user_request: None,
request: None,
factory_meta: None,
..Default::default()
})
})
.or_else(|_| {
Expand All @@ -390,13 +388,9 @@ impl ToJsModule for dyn Module {
original_source: original_source(),
r#type: module_type(),
layer: module_layer(),
resource: None,
module_identifier: module_identifier(),
name_for_condition: name_for_condition(),
raw_request: None,
user_request: None,
request: None,
factory_meta: None,
..Default::default()
})
})
.or_else(|_| {
Expand All @@ -405,13 +399,9 @@ impl ToJsModule for dyn Module {
original_source: original_source(),
r#type: module_type(),
layer: module_layer(),
resource: None,
module_identifier: module_identifier(),
name_for_condition: name_for_condition(),
raw_request: None,
user_request: None,
request: None,
factory_meta: None,
..Default::default()
})
})
.or_else(|_| {
Expand Down Expand Up @@ -443,6 +433,7 @@ impl ToJsModule for CompilerModuleContext {
factory_meta: self.factory_meta.as_ref().map(|fm| JsFactoryMeta {
side_effect_free: fm.side_effect_free,
}),
use_source_map: Some(self.use_source_map),
};
Ok(module)
}
Expand Down
45 changes: 24 additions & 21 deletions crates/rspack_binding_values/src/path_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,22 @@ pub struct JsPathData {
pub url: Option<String>,
pub id: Option<String>,
pub chunk: Option<JsChunkPathData>,
pub content_hash_type: Option<String>,
}

impl From<rspack_core::PathData<'_>> for JsPathData {
fn from(path_data: rspack_core::PathData<'_>) -> Self {
impl JsPathData {
pub fn from_path_data(path_data: rspack_core::PathData, hash_digest_length: usize) -> JsPathData {
Self {
filename: path_data.filename.map(|s| s.to_string()),
hash: path_data.hash.map(|s| s.to_string()),
content_hash: path_data.content_hash.map(|s| s.to_string()),
runtime: path_data.runtime.map(|s| s.to_string()),
url: path_data.url.map(|s| s.to_string()),
id: path_data.id.map(|s| s.to_string()),
chunk: path_data.chunk.map(JsChunkPathData::from),
chunk: path_data
.chunk
.map(|c| JsChunkPathData::from_chunk(c, hash_digest_length)),
content_hash_type: path_data.content_hash_type.map(|c| c.to_string()),
}
}
}
Expand All @@ -37,7 +41,6 @@ pub struct JsChunkPathData {
pub id: Option<String>,
pub name: Option<String>,
pub hash: Option<String>,
// TODO: support custom content hash type
pub content_hash: Option<Either<String, HashMap<String, String>>>,
}

Expand All @@ -48,39 +51,33 @@ impl JsChunkPathData {
chunk.hash = self
.hash
.clone()
.map(|s| RspackHashDigest::new(s.into(), &compilation.options.output.hash_digest));
.map(|s| RspackHashDigest::from(s.as_str()));

chunk.rendered_hash = self.hash.as_ref().map(|d| {
if d.len() < compilation.options.output.hash_digest_length {
d.as_str().into()
} else {
d[..compilation.options.output.hash_digest_length].into()
}
chunk.rendered_hash = chunk.hash.as_ref().map(|h| {
h.rendered(compilation.options.output.hash_digest_length)
.into()
});
if let Some(hash) = self.content_hash.as_ref() {
match hash {
Either::A(hash) => {
chunk.content_hash.insert(
SourceType::Unknown,
RspackHashDigest::new(hash.clone().into(), &compilation.options.output.hash_digest),
);
chunk
.content_hash
.insert(SourceType::Unknown, RspackHashDigest::from(hash.as_str()));
}
Either::B(map) => {
for (key, hash) in map {
chunk.content_hash.insert(
SourceType::from(key.as_str()),
RspackHashDigest::new(hash.clone().into(), &compilation.options.output.hash_digest),
RspackHashDigest::from(hash.as_str()),
);
}
}
}
}
chunk
}
}

impl<'a> From<&'a rspack_core::Chunk> for JsChunkPathData {
fn from(chunk: &'a rspack_core::Chunk) -> Self {
fn from_chunk(chunk: &rspack_core::Chunk, hash_digest_length: usize) -> JsChunkPathData {
Self {
id: chunk.id.clone(),
name: chunk.name.clone(),
Expand All @@ -89,18 +86,23 @@ impl<'a> From<&'a rspack_core::Chunk> for JsChunkPathData {
chunk
.content_hash
.iter()
.map(|(key, v)| (key.to_string(), v.encoded().to_string()))
.map(|(key, v)| (key.to_string(), v.rendered(hash_digest_length).to_string()))
.collect(),
)),
}
}
}

impl JsPathData {
pub fn as_core_path_data<'a>(
pub fn to_path_data<'a>(
&'a self,
chunk: Option<&'a rspack_core::Chunk>,
) -> rspack_core::PathData<'a> {
let content_hash_type = self
.content_hash_type
.as_ref()
.map(|v| SourceType::from(v.as_str()));

rspack_core::PathData {
filename: self.filename.as_deref(),
chunk,
Expand All @@ -112,6 +114,7 @@ impl JsPathData {
runtime: self.runtime.as_deref(),
url: self.url.as_deref(),
id: self.id.as_deref(),
content_hash_type,
}
}
}
Expand Down
16 changes: 12 additions & 4 deletions crates/rspack_core/src/compiler/compilation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1758,7 +1758,7 @@ impl Compilation {
if data.hash.is_none() {
data.hash = self.get_hash();
}
filename.render(data, None)
filename.render(data, None, self.options.output.hash_digest_length)
}

pub fn get_path_with_info<'b, 'a: 'b, F: LocalFilenameFn>(
Expand All @@ -1770,7 +1770,11 @@ impl Compilation {
if data.hash.is_none() {
data.hash = self.get_hash();
}
let path = filename.render(data, Some(&mut info))?;
let path = filename.render(
data,
Some(&mut info),
self.options.output.hash_digest_length,
)?;
Ok((path, info))
}

Expand All @@ -1779,7 +1783,7 @@ impl Compilation {
filename: &Filename<F>,
data: PathData,
) -> Result<String, F::Error> {
filename.render(data, None)
filename.render(data, None, self.options.output.hash_digest_length)
}

pub fn get_asset_path_with_info<F: LocalFilenameFn>(
Expand All @@ -1788,7 +1792,11 @@ impl Compilation {
data: PathData,
) -> Result<(String, AssetInfo), F::Error> {
let mut info = AssetInfo::default();
let path = filename.render(data, Some(&mut info))?;
let path = filename.render(
data,
Some(&mut info),
self.options.output.hash_digest_length,
)?;
Ok((path, info))
}

Expand Down
1 change: 0 additions & 1 deletion crates/rspack_core/src/external_module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ fn resolve_external_type<'a>(
external_type: &'a str,
dependency_meta: &'a DependencyMeta,
) -> &'a str {
// let external_type = self.external_type.as_str();
match external_type {
"module-import" => {
if let Some(external_type) = dependency_meta.external_type.as_ref() {
Expand Down
Loading

0 comments on commit 6d3d133

Please sign in to comment.