Skip to content

Commit

Permalink
Improve coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Aug 26, 2019
1 parent 8de0832 commit 0871871
Show file tree
Hide file tree
Showing 18 changed files with 134 additions and 57 deletions.
39 changes: 15 additions & 24 deletions src/finalisers/shared/getExportBlock.ts
Expand Up @@ -14,24 +14,16 @@ export default function getExportBlock(

if (!namedExportsMode) {
let local;
for (const expt of exports) {
if (expt.exported === 'default') {
local = expt.local;
break;
}
}
if (!local) {
findReexportedDefault: for (const dep of dependencies) {
if (exports.length > 0) {
local = exports[0].local;
} else {
for (const dep of dependencies) {
if (dep.reexports) {
for (const expt of dep.reexports) {
if (expt.reexported === 'default') {
local =
dep.namedExportsMode && expt.imported !== '*' && expt.imported !== 'default'
? `${dep.name}.${expt.imported}`
: dep.name;
break findReexportedDefault;
}
}
const expt = dep.reexports[0];
local =
dep.namedExportsMode && expt.imported !== '*' && expt.imported !== 'default'
? `${dep.name}.${expt.imported}`
: dep.name;
}
}
}
Expand Down Expand Up @@ -79,12 +71,11 @@ export default function getExportBlock(
if (exportBlock && !compact) exportBlock += '\n';
if (
exportsNames &&
((reexports &&
reexports.some(specifier =>
specifier.imported === 'default'
? specifier.reexported === 'default'
: specifier.imported !== '*'
)) ||
(reexports.some(specifier =>
specifier.imported === 'default'
? specifier.reexported === 'default'
: specifier.imported !== '*'
) ||
(imports && imports.some(specifier => specifier.imported !== 'default')))
) {
exportBlock += `exports.${specifier.reexported}${_}=${_}${name}${
Expand All @@ -106,7 +97,7 @@ export default function getExportBlock(
`${t}${t}return ${importName};${n}${t}}${n}});`
: `exports.${specifier.reexported}${_}=${_}${importName};`;
} else if (specifier.reexported !== '*') {
if (exportBlock && !compact) exportBlock += '\n';
if (exportBlock) exportBlock += n;
exportBlock += `exports.${specifier.reexported}${_}=${_}${name};`;
}
});
Expand Down
10 changes: 2 additions & 8 deletions test/form/samples/reexport-external-default-and-name/_config.js
@@ -1,5 +1,6 @@
module.exports = {
description: 're-exports a named external export as default',
description:
'reexports a an external default as a name and imports another name from that dependency',
expectedWarnings: ['MIXED_EXPORTS'],
options: {
external: ['external'],
Expand All @@ -9,10 +10,3 @@ module.exports = {
}
}
};

// TODO Lukas there seem to be many different interops -> consolidate!
// - function
// - inline
// - inline generating the __default variable
// TODO Lukas also test named and default import from same dependency
// TODO Lukas also test without interop
@@ -0,0 +1,11 @@
module.exports = {
description: 're-exports a named external export as default',
expectedWarnings: ['MIXED_EXPORTS'],
options: {
external: ['external'],
output: {
globals: { external: 'external' },
name: 'bundle'
}
}
};
@@ -0,0 +1,11 @@
define(['exports', 'external'], function (exports, external) { 'use strict';

var external__default = 'default' in external ? external['default'] : external;

console.log(external.value);

exports.reexported = external__default;

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

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

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

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }

var external = require('external');
var external__default = _interopDefault(external);

console.log(external.value);

exports.reexported = external__default;
@@ -0,0 +1,4 @@
import { value } from 'external';
export { default as reexported } from 'external';

console.log(value);
@@ -0,0 +1,12 @@
var bundle = (function (exports, external) {
'use strict';

var external__default = 'default' in external ? external['default'] : external;

console.log(external.value);

exports.reexported = external__default;

return exports;

}({}, external));
@@ -0,0 +1,15 @@
System.register('bundle', ['external'], function (exports) {
'use strict';
var value;
return {
setters: [function (module) {
value = module.value;
exports('reexported', module.default);
}],
execute: function () {

console.log(value);

}
};
});
@@ -0,0 +1,15 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('external')) :
typeof define === 'function' && define.amd ? define(['exports', 'external'], factory) :
(global = global || self, factory(global.bundle = {}, global.external));
}(this, function (exports, external) { 'use strict';

var external__default = 'default' in external ? external['default'] : external;

console.log(external.value);

exports.reexported = external__default;

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

}));
@@ -0,0 +1,3 @@
export { default as reexported } from 'external';
import {value} from 'external';
console.log(value);
4 changes: 2 additions & 2 deletions test/form/samples/reexport-external-default/_config.js
@@ -1,9 +1,9 @@
module.exports = {
description: 'reexports an external default export',
options: {
external: ['external'],
external: ['external1', 'external2'],
output: {
globals: { external: 'external' },
globals: { external1: 'external1', external2: 'external2' },
name: 'bundle'
}
}
Expand Down
8 changes: 4 additions & 4 deletions test/form/samples/reexport-external-default/_expected/amd.js
@@ -1,9 +1,9 @@
define(['external'], function (external) { 'use strict';
define(['external1', 'external2'], function (external1, external2) { 'use strict';

external = external && external.hasOwnProperty('default') ? external['default'] : external;
external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2;

console.log(external1.foo);


return external;
return external2;

});
7 changes: 4 additions & 3 deletions test/form/samples/reexport-external-default/_expected/cjs.js
Expand Up @@ -2,8 +2,9 @@

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }

var external = _interopDefault(require('external'));
var external1 = require('external1');
var external2 = _interopDefault(require('external2'));

console.log(external1.foo);


module.exports = external;
module.exports = external2;
5 changes: 4 additions & 1 deletion test/form/samples/reexport-external-default/_expected/es.js
@@ -1 +1,4 @@
export { default } from 'external';
import { foo } from 'external1';
export { default } from 'external2';

console.log(foo);
10 changes: 5 additions & 5 deletions test/form/samples/reexport-external-default/_expected/iife.js
@@ -1,10 +1,10 @@
var bundle = (function (external) {
var bundle = (function (external1, external2) {
'use strict';

external = external && external.hasOwnProperty('default') ? external['default'] : external;
external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2;

console.log(external1.foo);

return external2;

return external;

}(external));
}(external1, external2));
@@ -1,12 +1,15 @@
System.register('bundle', ['external'], function (exports) {
System.register('bundle', ['external1', 'external2'], function (exports) {
'use strict';
var foo;
return {
setters: [function (module) {
foo = module.foo;
}, function (module) {
exports('default', module.default);
}],
execute: function () {


console.log(foo);

}
};
Expand Down
14 changes: 7 additions & 7 deletions test/form/samples/reexport-external-default/_expected/umd.js
@@ -1,13 +1,13 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('external')) :
typeof define === 'function' && define.amd ? define(['external'], factory) :
(global = global || self, global.bundle = factory(global.external));
}(this, function (external) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('external1'), require('external2')) :
typeof define === 'function' && define.amd ? define(['external1', 'external2'], factory) :
(global = global || self, global.bundle = factory(global.external1, global.external2));
}(this, function (external1, external2) { 'use strict';

external = external && external.hasOwnProperty('default') ? external['default'] : external;
external2 = external2 && external2.hasOwnProperty('default') ? external2['default'] : external2;

console.log(external1.foo);


return external;
return external2;

}));
4 changes: 3 additions & 1 deletion test/form/samples/reexport-external-default/main.js
@@ -1 +1,3 @@
export { default } from 'external';
import { foo } from 'external1';
export { default } from 'external2';
console.log(foo);

0 comments on commit 0871871

Please sign in to comment.