Skip to content

Commit

Permalink
feat: add noIncompleteNsImportDetection assumption to `plugin-trans…
Browse files Browse the repository at this point in the history
…form-modules-commonjs`
  • Loading branch information
fedeci committed May 10, 2021
1 parent fa01fbe commit c7b3bab
Show file tree
Hide file tree
Showing 12 changed files with 64 additions and 11 deletions.
1 change: 1 addition & 0 deletions packages/babel-core/src/config/validation/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ export const assumptionsNames = new Set<string>([
"mutableTemplateObject",
"noClassCalls",
"noDocumentAll",
"noIncompleteNsImportDetection",
"noNewArrows",
"objectRestNoSymbols",
"privateFieldsAsProperties",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export function createClassFeaturePlugin({
feature,
loose,
manipulateOptions,
// TODO(Babel 8): Remove the default falue
// TODO(Babel 8): Remove the default value
api = { assumption: () => {} },
}) {
const setPublicClassFields = api.assumption("setPublicClassFields");
Expand Down
30 changes: 20 additions & 10 deletions packages/babel-helper-module-transforms/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export function rewriteModuleStatementsAndPrepareHeader(

constantReexports = loose,
enumerableModuleMeta = loose,
noIncompleteNsImportDetection,
}: {
exportName?;
strict;
Expand All @@ -57,6 +58,7 @@ export function rewriteModuleStatementsAndPrepareHeader(
esNamespaceOnly?;
constantReexports?;
enumerableModuleMeta?;
noIncompleteNsImportDetection?: boolean;
},
) {
validateImportInteropOption(importInterop);
Expand Down Expand Up @@ -102,7 +104,12 @@ export function rewriteModuleStatementsAndPrepareHeader(

// Create all of the statically known named exports.
headers.push(
...buildExportInitializationStatements(path, meta, constantReexports),
...buildExportInitializationStatements(
path,
meta,
constantReexports,
noIncompleteNsImportDetection,
),
);

return { meta, headers };
Expand Down Expand Up @@ -384,6 +391,7 @@ function buildExportInitializationStatements(
programPath: NodePath,
metadata: ModuleMetadata,
constantReexports: boolean = false,
noIncompleteNsImportDetection = false,
) {
const initStatements = [];

Expand All @@ -409,15 +417,17 @@ function buildExportInitializationStatements(
}
}

initStatements.push(
...chunk(exportNames, 100).map(members => {
return buildInitStatement(
metadata,
members,
programPath.scope.buildUndefinedNode(),
);
}),
);
if (!noIncompleteNsImportDetection) {
initStatements.push(
...chunk(exportNames, 100).map(members => {
return buildInitStatement(
metadata,
members,
programPath.scope.buildUndefinedNode(),
);
}),
);
}

return initStatements;
}
Expand Down
3 changes: 3 additions & 0 deletions packages/babel-plugin-transform-modules-commonjs/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export default declare((api, options) => {
api.assumption("constantReexports") ?? options.loose;
const enumerableModuleMeta =
api.assumption("enumerableModuleMeta") ?? options.loose;
const noIncompleteNsImportDetection =
api.assumption("noIncompleteNsImportDetection") ?? false;

if (
typeof lazy !== "boolean" &&
Expand Down Expand Up @@ -186,6 +188,7 @@ export default declare((api, options) => {
/\.mjs$/.test(state.filename)
? mjsStrictNamespace
: strictNamespace,
noIncompleteNsImportDetection,
},
);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default foo;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
var _default = foo;
exports.default = _default;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { foo } from "foo";
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"assumptions": {
"noIncompleteNsImportDetection": true,
"constantReexports": true
},
"plugins": ["transform-modules-commonjs"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});

var _foo = require("foo");

exports.foo = _foo.foo;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export var foo = 2;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = 2;
exports.foo = foo;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"assumptions": {
"noIncompleteNsImportDetection": true
},
"plugins": ["transform-modules-commonjs"]
}

0 comments on commit c7b3bab

Please sign in to comment.