Skip to content

Commit

Permalink
Improve coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Aug 12, 2020
1 parent 89136d9 commit 2c02522
Show file tree
Hide file tree
Showing 18 changed files with 289 additions and 8 deletions.
4 changes: 1 addition & 3 deletions src/Chunk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1161,9 +1161,7 @@ export default class Chunk {
}
}
for (const importMeta of module.importMetas) {
if (importMeta.included) {
importMeta.addAccessedGlobals(this.outputOptions.format, accessedGlobalsByScope);
}
importMeta.addAccessedGlobals(this.outputOptions.format, accessedGlobalsByScope);
}
}
}
Expand Down
6 changes: 1 addition & 5 deletions src/ast/scopes/ModuleScope.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,7 @@ export default class ModuleScope extends ChildScope {
return variable;
}

addNamespaceMemberAccess(_name: string, variable: Variable) {
if (variable instanceof GlobalVariable) {
this.accessedOutsideVariables.set(variable.name, variable);
}
}
addNamespaceMemberAccess() {}

deconflict(
format: InternalModuleFormat,
Expand Down
15 changes: 15 additions & 0 deletions test/form/samples/interop-per-dependency-no-freeze/_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module.exports = {
description: 'respects the freeze option',
options: {
external: id => id.startsWith('external'),
output: {
freeze: false,
interop(id) {
return id.split('-')[1];
},
globals(id) {
return id.replace('-', '');
}
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
define(['require', 'external-auto', 'external-default', 'external-defaultOnly', 'external-esModule'], function (require, fooAuto, fooDefault, fooDefaultOnly, fooEsModule) { 'use strict';

function _interopNamespace(e) {
return e && e.__esModule ? e : _interopNamespaceDefault(e);
}

function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return n;
}

function _interopNamespaceDefaultOnly(e) {
return {__proto__: null, 'default': e};
}

var fooAuto__namespace = /*#__PURE__*/_interopNamespace(fooAuto);
var fooDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(fooDefault);
var fooDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(fooDefaultOnly);

console.log(fooAuto__namespace['default'], fooAuto.barAuto, fooAuto__namespace);
console.log(fooDefault, fooDefault.barDefault, fooDefault__namespace);
console.log(fooDefaultOnly, fooDefaultOnly__namespace);
console.log(fooEsModule['default'], fooEsModule.barEsModule, fooEsModule);

new Promise(function (resolve, reject) { require(['external-auto'], function (m) { resolve(/*#__PURE__*/_interopNamespace(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require(['external-default'], function (m) { resolve(/*#__PURE__*/_interopNamespaceDefault(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require(['external-defaultOnly'], function (m) { resolve(/*#__PURE__*/_interopNamespaceDefaultOnly(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require(['external-esModule'], resolve, reject) }).then(console.log);

});
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
'use strict';

var fooAuto = require('external-auto');
var fooDefault = require('external-default');
var fooDefaultOnly = require('external-defaultOnly');
var fooEsModule = require('external-esModule');

function _interopNamespace(e) {
return e && e.__esModule ? e : _interopNamespaceDefault(e);
}

function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return n;
}

function _interopNamespaceDefaultOnly(e) {
return {__proto__: null, 'default': e};
}

var fooAuto__namespace = /*#__PURE__*/_interopNamespace(fooAuto);
var fooDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(fooDefault);
var fooDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(fooDefaultOnly);

console.log(fooAuto__namespace['default'], fooAuto.barAuto, fooAuto__namespace);
console.log(fooDefault, fooDefault.barDefault, fooDefault__namespace);
console.log(fooDefaultOnly, fooDefaultOnly__namespace);
console.log(fooEsModule['default'], fooEsModule.barEsModule, fooEsModule);

Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('external-auto')); }).then(console.log);
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefault(require('external-default')); }).then(console.log);
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('external-defaultOnly')); }).then(console.log);
Promise.resolve().then(function () { return require('external-esModule'); }).then(console.log);
18 changes: 18 additions & 0 deletions test/form/samples/interop-per-dependency-no-freeze/_expected/es.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import * as fooAuto from 'external-auto';
import fooAuto__default, { barAuto } from 'external-auto';
import * as fooDefault from 'external-default';
import fooDefault__default, { barDefault } from 'external-default';
import * as fooDefaultOnly from 'external-defaultOnly';
import fooDefaultOnly__default from 'external-defaultOnly';
import * as fooEsModule from 'external-esModule';
import fooEsModule__default, { barEsModule } from 'external-esModule';

console.log(fooAuto__default, barAuto, fooAuto);
console.log(fooDefault__default, barDefault, fooDefault);
console.log(fooDefaultOnly__default, fooDefaultOnly);
console.log(fooEsModule__default, barEsModule, fooEsModule);

import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
(function (fooAuto, fooDefault, fooDefaultOnly, fooEsModule) {
'use strict';

function _interopNamespace(e) {
return e && e.__esModule ? e : _interopNamespaceDefault(e);
}

function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return n;
}

function _interopNamespaceDefaultOnly(e) {
return {__proto__: null, 'default': e};
}

var fooAuto__namespace = /*#__PURE__*/_interopNamespace(fooAuto);
var fooDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(fooDefault);
var fooDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(fooDefaultOnly);

console.log(fooAuto__namespace['default'], fooAuto.barAuto, fooAuto__namespace);
console.log(fooDefault, fooDefault.barDefault, fooDefault__namespace);
console.log(fooDefaultOnly, fooDefaultOnly__namespace);
console.log(fooEsModule['default'], fooEsModule.barEsModule, fooEsModule);

import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);

}(externalauto, externaldefault, externaldefaultOnly, externalesModule));
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
System.register(['external-auto', 'external-default', 'external-defaultOnly', 'external-esModule'], function (exports, module) {
'use strict';
var fooAuto__default, barAuto, fooAuto, fooDefault__default, barDefault, fooDefault, fooDefaultOnly__default, fooDefaultOnly, fooEsModule__default, barEsModule, fooEsModule;
return {
setters: [function (module) {
fooAuto__default = module.default;
barAuto = module.barAuto;
fooAuto = module;
}, function (module) {
fooDefault__default = module.default;
barDefault = module.barDefault;
fooDefault = module;
}, function (module) {
fooDefaultOnly__default = module.default;
fooDefaultOnly = module;
}, function (module) {
fooEsModule__default = module.default;
barEsModule = module.barEsModule;
fooEsModule = module;
}],
execute: function () {

console.log(fooAuto__default, barAuto, fooAuto);
console.log(fooDefault__default, barDefault, fooDefault);
console.log(fooDefaultOnly__default, fooDefaultOnly);
console.log(fooEsModule__default, barEsModule, fooEsModule);

module.import('external-auto').then(console.log);
module.import('external-default').then(console.log);
module.import('external-defaultOnly').then(console.log);
module.import('external-esModule').then(console.log);

}
};
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('external-auto'), require('external-default'), require('external-defaultOnly'), require('external-esModule')) :
typeof define === 'function' && define.amd ? define(['external-auto', 'external-default', 'external-defaultOnly', 'external-esModule'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.externalauto, global.externaldefault, global.externaldefaultOnly, global.externalesModule));
}(this, (function (fooAuto, fooDefault, fooDefaultOnly, fooEsModule) { 'use strict';

function _interopNamespace(e) {
return e && e.__esModule ? e : _interopNamespaceDefault(e);
}

function _interopNamespaceDefault(e) {
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () {
return e[k];
}
});
}
});
}
n['default'] = e;
return n;
}

function _interopNamespaceDefaultOnly(e) {
return {__proto__: null, 'default': e};
}

var fooAuto__namespace = /*#__PURE__*/_interopNamespace(fooAuto);
var fooDefault__namespace = /*#__PURE__*/_interopNamespaceDefault(fooDefault);
var fooDefaultOnly__namespace = /*#__PURE__*/_interopNamespaceDefaultOnly(fooDefaultOnly);

console.log(fooAuto__namespace['default'], fooAuto.barAuto, fooAuto__namespace);
console.log(fooDefault, fooDefault.barDefault, fooDefault__namespace);
console.log(fooDefaultOnly, fooDefaultOnly__namespace);
console.log(fooEsModule['default'], fooEsModule.barEsModule, fooEsModule);

import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);

})));
18 changes: 18 additions & 0 deletions test/form/samples/interop-per-dependency-no-freeze/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import fooAuto, { barAuto } from 'external-auto';
import fooDefault, { barDefault } from 'external-default';
import fooDefaultOnly from 'external-defaultOnly';
import fooEsModule, { barEsModule } from 'external-esModule';
import * as externalAuto from 'external-auto';
import * as externalDefault from 'external-default';
import * as externalDefaultOnly from 'external-defaultOnly';
import * as externalEsModule from 'external-esModule';

console.log(fooAuto, barAuto, externalAuto);
console.log(fooDefault, barDefault, externalDefault);
console.log(fooDefaultOnly, externalDefaultOnly);
console.log(fooEsModule, barEsModule, externalEsModule);

import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
3 changes: 3 additions & 0 deletions test/form/samples/interop-per-dependency/_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ module.exports = {
external: id => id.startsWith('external'),
output: {
interop(id) {
if (id === null) {
return 'auto';
}
return id.split('-')[1];
},
globals(id) {
Expand Down
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/amd.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,7 @@ define(['require', 'external-auto', 'external-default', 'external-defaultOnly',
new Promise(function (resolve, reject) { require(['external-default'], function (m) { resolve(/*#__PURE__*/_interopNamespaceDefault(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require(['external-defaultOnly'], function (m) { resolve(/*#__PURE__*/_interopNamespaceDefaultOnly(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require(['external-esModule'], resolve, reject) }).then(console.log);
new Promise(function (resolve, reject) { require([globalThis.external1], function (m) { resolve(/*#__PURE__*/_interopNamespace(m)); }, reject) }).then(console.log);
new Promise(function (resolve, reject) { require([globalThis.external2], function (m) { resolve(/*#__PURE__*/_interopNamespace(m)); }, reject) }).then(console.log);

});
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@ Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(requi
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefault(require('external-default')); }).then(console.log);
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('external-defaultOnly')); }).then(console.log);
Promise.resolve().then(function () { return require('external-esModule'); }).then(console.log);
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(globalThis.external1)); }).then(console.log);
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(globalThis.external2)); }).then(console.log);
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
import(globalThis.external1).then(console.log);
import(globalThis.external2).then(console.log);
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/iife.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,7 @@
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
import(globalThis.external1).then(console.log);
import(globalThis.external2).then(console.log);

}(externalauto, externaldefault, externaldefaultOnly, externalesModule));
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/system.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ System.register(['external-auto', 'external-default', 'external-defaultOnly', 'e
module.import('external-default').then(console.log);
module.import('external-defaultOnly').then(console.log);
module.import('external-esModule').then(console.log);
module.import(globalThis.external1).then(console.log);
module.import(globalThis.external2).then(console.log);

}
};
Expand Down
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/_expected/umd.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,7 @@
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
import(globalThis.external1).then(console.log);
import(globalThis.external2).then(console.log);

})));
2 changes: 2 additions & 0 deletions test/form/samples/interop-per-dependency/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ import('external-auto').then(console.log);
import('external-default').then(console.log);
import('external-defaultOnly').then(console.log);
import('external-esModule').then(console.log);
import(globalThis.external1).then(console.log);
import(globalThis.external2).then(console.log);

0 comments on commit 2c02522

Please sign in to comment.