Skip to content

Commit 1c0a097

Browse files
authored
fix: align amd option behavior with webpack (#9011)
1 parent 92f6cff commit 1c0a097

File tree

69 files changed

+157
-175
lines changed

Some content is hidden

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

69 files changed

+157
-175
lines changed

β€Žcrates/rspack_plugin_javascript/src/dependency/amd/amd_require_dependency.rsβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl DependencyTemplate for AMDRequireDependency {
8181
{
8282
let start_block = promise + ".then(function() {";
8383
let end_block = format!(
84-
";}})['catch']{}",
84+
";}})['catch']({})",
8585
RuntimeGlobals::UNCAUGHT_ERROR_HANDLER.name()
8686
);
8787
code_generatable_context

β€Žcrates/rspack_plugin_javascript/src/parser_plugin/api_plugin.rsβ€Ž

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,6 @@ impl JavascriptParserPlugin for APIPlugin {
355355
not_supported_expr!(is_require_extensions, expr, "require.extensions");
356356
not_supported_expr!(is_require_config, expr, "require.config");
357357
not_supported_expr!(is_require_version, expr, "require.version");
358-
not_supported_expr!(is_require_amd, expr, "require.amd");
359358
not_supported_expr!(is_require_include, expr, "require.include");
360359
not_supported_expr!(is_require_onerror, expr, "require.onError");
361360
not_supported_expr!(is_require_main_require, expr, "require.main.require");

β€Žcrates/rspack_plugin_javascript/src/parser_plugin/esm_detection_parser_plugin.rsβ€Ž

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ impl ESMDetectionParserPlugin {
4343
}
4444
}
4545

46+
// nonHarmonyIdentifiers
47+
fn is_non_esm_identifier(name: &str) -> bool {
48+
name == "exports" || name == "define"
49+
}
50+
4651
// Port from https://github.com/webpack/webpack/blob/main/lib/dependencies/HarmonyDetectionParserPlugin.js
4752
impl JavascriptParserPlugin for ESMDetectionParserPlugin {
4853
fn program(&self, parser: &mut JavascriptParser, ast: &Program) -> Option<bool> {
@@ -97,17 +102,35 @@ impl JavascriptParserPlugin for ESMDetectionParserPlugin {
97102
expr: &UnaryExpr,
98103
for_name: &str,
99104
) -> Option<BasicEvaluatedExpression> {
100-
(parser.is_esm && for_name == "exports")
105+
(parser.is_esm && is_non_esm_identifier(for_name))
101106
.then(|| BasicEvaluatedExpression::with_range(expr.span().real_lo(), expr.span_hi().0))
102107
}
103108

109+
fn r#typeof(
110+
&self,
111+
parser: &mut JavascriptParser,
112+
_expr: &UnaryExpr,
113+
for_name: &str,
114+
) -> Option<bool> {
115+
(parser.is_esm && is_non_esm_identifier(for_name)).then_some(true)
116+
}
117+
104118
fn identifier(
105119
&self,
106120
parser: &mut JavascriptParser,
107121
_ident: &Ident,
108122
for_name: &str,
109123
) -> Option<bool> {
110-
(parser.is_esm && for_name == "exports").then_some(true)
124+
(parser.is_esm && is_non_esm_identifier(for_name)).then_some(true)
125+
}
126+
127+
fn call(
128+
&self,
129+
parser: &mut JavascriptParser,
130+
_expr: &swc_core::ecma::ast::CallExpr,
131+
for_name: &str,
132+
) -> Option<bool> {
133+
(parser.is_esm && is_non_esm_identifier(for_name)).then_some(true)
111134
}
112135
}
113136

β€Žpackages/rspack-test-tools/tests/__snapshots__/Defaults.test.js.snapβ€Ž

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,26 @@ Object {
340340
resolve: Object {
341341
aliasFields: Array [],
342342
byDependency: Object {
343+
amd: Object {
344+
aliasFields: Array [
345+
browser,
346+
],
347+
conditionNames: Array [
348+
require,
349+
module,
350+
...,
351+
],
352+
extensions: Array [
353+
.js,
354+
.json,
355+
.wasm,
356+
],
357+
mainFields: Array [
358+
browser,
359+
module,
360+
...,
361+
],
362+
},
343363
commonjs: Object {
344364
aliasFields: Array [
345365
browser,

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-function/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-object/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-others/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-with-deps/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-with-name/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žpackages/rspack-test-tools/tests/configCases/amd/define-wrapper/rspack.config.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
Β (0)