Skip to content

Commit

Permalink
Do not use interop logic on proxy modules (#4761)
Browse files Browse the repository at this point in the history
### Description

Proxy modules must not use interop logic, otherwise only the `default`
export works correctly

next.js PR: vercel/next.js#49033
  • Loading branch information
sokra committed May 1, 2023
1 parent 6aee9e5 commit cfa8027
Show file tree
Hide file tree
Showing 89 changed files with 386 additions and 79 deletions.
9 changes: 9 additions & 0 deletions crates/turbopack-dev/js/src/runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,14 @@ function exportValue(module, value) {
module.exports = value;
}

/**
* @param {Module} module
* @param {any} namespace
*/
function exportNamespace(module, namespace) {
module.exports = module.namespaceObject = namespace;
}

/**
* @param {Record<string, any>} obj
* @param {string} key
Expand Down Expand Up @@ -467,6 +475,7 @@ function instantiateModule(id, source) {
s: makeEsm.bind(null, module),
j: cjs.bind(null, module.exports),
v: exportValue.bind(null, module),
n: exportNamespace.bind(null, module),
m: module,
c: moduleCache,
l: loadChunk.bind(null, { type: SourceTypeParent, parentId: id }),
Expand Down
1 change: 1 addition & 0 deletions crates/turbopack-dev/src/ecmascript/module_factory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ pub(super) async fn module_factory(content: EcmascriptChunkItemContentVc) -> Res
"i: __turbopack_import__",
"s: __turbopack_esm__",
"v: __turbopack_export_value__",
"n: __turbopack_export_namespace__",
"c: __turbopack_cache__",
"l: __turbopack_load__",
"j: __turbopack_cjs__",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub fn create_proxy_module(transition_name: &str, target_import: &str) -> Progra
span: DUMMY_SP,
})),
ModuleItem::Stmt(quote!(
"__turbopack_export_value__($proxy);" as Stmt,
"__turbopack_export_namespace__($proxy);" as Stmt,
proxy = ident,
)),
],
Expand Down

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 comments on commit cfa8027

Please sign in to comment.