Skip to content

Commit 29edb51

Browse files
committed
fix(transformer): fix module runner transform of export default expression (#9661)
- Closes #9645
1 parent b7c61e9 commit 29edb51

File tree

1 file changed

+9
-39
lines changed

1 file changed

+9
-39
lines changed

crates/oxc_transformer/src/plugins/module_runner_transform.rs

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -530,8 +530,8 @@ impl<'a> ModuleRunnerTransform<'a> {
530530
/// export default function () {}
531531
/// export default {}
532532
/// // to
533-
/// Object.defineProperty(__vite_ssr_exports__, 'default', { enumerable: true, configurable: true, get(){ return expr } });
534-
/// Object.defineProperty(__vite_ssr_exports__, 'default', { enumerable: true, configurable: true, get(){ return {} } });
533+
/// __vite_ssr_exports__.default = function () {}
534+
/// __vite_ssr_exports__.default = {}
535535
/// ```
536536
fn transform_export_default_declaration(
537537
new_stmts: &mut ArenaVec<'a, Statement<'a>>,
@@ -575,7 +575,7 @@ impl<'a> ModuleRunnerTransform<'a> {
575575
expr @ match_expression!(ExportDefaultDeclarationKind) => expr.into_expression(),
576576
};
577577

578-
new_stmts.push(Self::create_export(span, expr, DEFAULT, ctx));
578+
new_stmts.push(Self::create_export_default_assignment(span, expr, ctx));
579579
}
580580

581581
/// Transform import specifiers, and return an imported names object.
@@ -1132,16 +1132,7 @@ Object.defineProperty(__vite_ssr_exports__, 'arbitrary string', {
11321132

11331133
#[test]
11341134
fn export_default() {
1135-
test_same(
1136-
"export default {}",
1137-
"Object.defineProperty(__vite_ssr_exports__, 'default', {
1138-
enumerable: true,
1139-
configurable: true,
1140-
get() {
1141-
return {};
1142-
}
1143-
});",
1144-
);
1135+
test_same("export default {}", "__vite_ssr_exports__.default = {};");
11451136
}
11461137

11471138
#[test]
@@ -1657,27 +1648,12 @@ Object.defineProperty(__vite_ssr_exports__, 'fn2', {
16571648
"export default (function getRandom() {
16581649
return Math.random();
16591650
});",
1660-
"Object.defineProperty(__vite_ssr_exports__, 'default', {
1661-
enumerable: true,
1662-
configurable: true,
1663-
get() {
1664-
return function getRandom() {
1665-
return Math.random();
1666-
};
1667-
}
1668-
});",
1651+
"__vite_ssr_exports__.default = function getRandom() {
1652+
return Math.random();
1653+
};",
16691654
);
16701655

1671-
test_same(
1672-
"export default (class A {});",
1673-
"Object.defineProperty(__vite_ssr_exports__, 'default', {
1674-
enumerable: true,
1675-
configurable: true,
1676-
get() {
1677-
return class A {};
1678-
}
1679-
});",
1680-
);
1656+
test_same("export default (class A {});", "__vite_ssr_exports__.default = class A {};");
16811657
}
16821658

16831659
// https://github.com/vitejs/vite/issues/8002
@@ -1916,13 +1892,7 @@ console.log(__vite_ssr_import_1__.foo + 2);",
19161892
export * as bar from './bar'
19171893
console.log(bar)",
19181894
"const __vite_ssr_import_0__ = await __vite_ssr_import__('./foo', { importedNames: ['foo'] });
1919-
Object.defineProperty(__vite_ssr_exports__, 'default', {
1920-
enumerable: true,
1921-
configurable: true,
1922-
get() {
1923-
return (0, __vite_ssr_import_0__.foo)();
1924-
}
1925-
});
1895+
__vite_ssr_exports__.default = (0, __vite_ssr_import_0__.foo)();
19261896
const __vite_ssr_import_1__ = await __vite_ssr_import__('./bar');
19271897
Object.defineProperty(__vite_ssr_exports__, 'bar', {
19281898
enumerable: true,

0 commit comments

Comments
 (0)