Skip to content

Commit

Permalink
Take chunk export mode into account when reexporting default, resolves
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Feb 27, 2019
1 parent c8380cd commit 45518c2
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 37 deletions.
72 changes: 39 additions & 33 deletions src/finalisers/shared/getExportBlock.ts
Expand Up @@ -49,42 +49,48 @@ export default function getExportBlock(
}
});

dependencies.forEach(({ name, imports, reexports, isChunk }) => {
if (reexports && namedExportsMode) {
reexports.forEach(specifier => {
if (specifier.imported === 'default' && !isChunk) {
const exportsNamesOrNamespace =
(imports &&
imports.some(
specifier => specifier.imported === '*' || specifier.imported !== 'default'
)) ||
(reexports &&
reexports.some(
specifier => specifier.imported !== 'default' && specifier.imported !== '*'
));
dependencies.forEach(
({ name, imports, reexports, isChunk, namedExportsMode: depNamedExportsMode }) => {
if (reexports && namedExportsMode) {
reexports.forEach(specifier => {
if (specifier.imported === 'default' && !isChunk) {
const exportsNamesOrNamespace =
(imports &&
imports.some(
specifier => specifier.imported === '*' || specifier.imported !== 'default'
)) ||
(reexports &&
reexports.some(
specifier => specifier.imported !== 'default' && specifier.imported !== '*'
));

const reexportsDefaultAsDefault =
reexports &&
reexports.some(
specifier => specifier.imported === 'default' && specifier.reexported === 'default'
);
const reexportsDefaultAsDefault =
reexports &&
reexports.some(
specifier => specifier.imported === 'default' && specifier.reexported === 'default'
);

if (exportBlock && !compact) exportBlock += '\n';
if (exportsNamesOrNamespace || reexportsDefaultAsDefault)
exportBlock += `exports.${specifier.reexported}${_}=${_}${name}${
interop !== false ? '__default' : '.default'
};`;
else exportBlock += `exports.${specifier.reexported}${_}=${_}${name};`;
} else if (specifier.imported !== '*') {
if (exportBlock && !compact) exportBlock += '\n';
exportBlock += `exports.${specifier.reexported}${_}=${_}${name}.${specifier.imported};`;
} else if (specifier.reexported !== '*') {
if (exportBlock && !compact) exportBlock += '\n';
exportBlock += `exports.${specifier.reexported}${_}=${_}${name};`;
}
});
if (exportBlock && !compact) exportBlock += '\n';
if (exportsNamesOrNamespace || reexportsDefaultAsDefault)
exportBlock += `exports.${specifier.reexported}${_}=${_}${name}${
interop !== false ? '__default' : '.default'
};`;
else exportBlock += `exports.${specifier.reexported}${_}=${_}${name};`;
} else if (specifier.imported !== '*') {
if (exportBlock && !compact) exportBlock += '\n';
const importName =
specifier.imported === 'default' && !depNamedExportsMode
? name
: `${name}.${specifier.imported}`;
exportBlock += `exports.${specifier.reexported}${_}=${_}${importName};`;
} else if (specifier.reexported !== '*') {
if (exportBlock && !compact) exportBlock += '\n';
exportBlock += `exports.${specifier.reexported}${_}=${_}${name};`;
}
});
}
}
});
);

exports.forEach(expt => {
const lhs = `exports.${expt.exported}`;
Expand Down
Expand Up @@ -6,7 +6,7 @@ define(['exports', './m2.js'], function (exports, m2) { 'use strict';
m2: m2
});

exports.m2 = m2.default;
exports.m2 = m2;
exports.ms = ms;

});
Expand Up @@ -2,7 +2,7 @@ define(['exports', './m2.js', './generated-m1.js'], function (exports, m2, m1) {



exports.m2 = m2.default;
exports.m2 = m2;

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

Expand Down
Expand Up @@ -8,5 +8,5 @@ var ms = /*#__PURE__*/Object.freeze({
m2: m2
});

exports.m2 = m2.default;
exports.m2 = m2;
exports.ms = ms;
Expand Up @@ -7,4 +7,4 @@ require('./generated-m1.js');



exports.m2 = m2.default;
exports.m2 = m2;
@@ -0,0 +1,6 @@
module.exports = {
description: 'correctly imports the default from an entry point',
options: {
input: ['main', 'dep']
}
};
@@ -0,0 +1,7 @@
define(function () { 'use strict';

var dep = 42;

return dep;

});
@@ -0,0 +1,9 @@
define(['exports', './dep.js'], function (exports, dep) { 'use strict';



exports.value = dep;

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

});
@@ -0,0 +1,5 @@
'use strict';

var dep = 42;

module.exports = dep;
@@ -0,0 +1,9 @@
'use strict';

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

var dep = require('./dep.js');



exports.value = dep;
@@ -0,0 +1,3 @@
var dep = 42;

export default dep;
@@ -0,0 +1 @@
export { default as value } from './dep.js';
@@ -0,0 +1,10 @@
System.register([], function (exports, module) {
'use strict';
return {
execute: function () {

var dep = exports('default', 42);

}
};
});
@@ -0,0 +1,13 @@
System.register(['./dep.js'], function (exports, module) {
'use strict';
return {
setters: [function (module) {
exports('value', module.default);
}],
execute: function () {



}
};
});
@@ -0,0 +1 @@
export default 42;
@@ -0,0 +1 @@
export {default as value} from './dep';
@@ -0,0 +1,13 @@
const assert = require('assert');

module.exports = {
description: 'correctly imports the default from an entry point',
options: {
input: ['main', 'dep']
},
exports(exports) {
assert.deepStrictEqual(exports, {
value: 42
});
}
};
@@ -0,0 +1 @@
export default 42;
@@ -0,0 +1 @@
export {default as value} from './dep';

0 comments on commit 45518c2

Please sign in to comment.