better wildcard imports and exports - fixes #224

This commit is contained in:
Sebastian McKenzie
2015-01-06 11:48:23 +11:00
parent 7526ae5486
commit 2558a5e12e
7 changed files with 51 additions and 15 deletions

3
NOTES.md Normal file
View File

@@ -0,0 +1,3 @@
# Notes
* Wildcard exports/imports wont normalise if `export default` is a non-object.

View File

@@ -34,7 +34,8 @@ File.helpers = [
"define-property",
"async-to-generator",
"interop-require-wildcard",
"typeof"
"typeof",
"exports-wildcard"
];
File.excludeHelpersFromRuntime = [

View File

@@ -162,9 +162,9 @@ DefaultFormatter.prototype._exportSpecifier = function (getRef, specifier, node,
};
DefaultFormatter.prototype._exportsWildcard = function (objectIdentifier) {
return util.template("exports-wildcard", {
OBJECT: objectIdentifier
}, true);
return t.expressionStatement(t.callExpression(this.file.addHelper("exports-wildcard"), [
t.callExpression(this.file.addHelper("interop-require-wildcard"), [objectIdentifier])
]));
};
DefaultFormatter.prototype._exportsAssign = function (id, init) {

View File

@@ -1,5 +1,7 @@
(function (obj) {
for (var i in obj) {
exports[i] = obj[i];
if (exports[i] !== undefined) {
exports[i] = obj[i];
}
}
})(OBJECT);
})

View File

@@ -5,11 +5,21 @@ define(["exports", "foo"], function (exports, _foo) {
return obj && (obj["default"] || obj);
};
(function (obj) {
var _interopRequireWildcard = function (obj) {
return obj && obj.constructor === Object ? obj : {
"default": obj
};
};
var _exportsWildcard = function (obj) {
for (var i in obj) {
exports[i] = obj[i];
if (exports[i] !== undefined) {
exports[i] = obj[i];
}
}
})(_foo);
};
_exportsWildcard(_interopRequireWildcard(_foo));
exports.foo = _interopRequire(_foo);
exports.foo = _interopRequire(_foo);

View File

@@ -4,11 +4,21 @@ var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
(function (obj) {
var _interopRequireWildcard = function (obj) {
return obj && obj.constructor === Object ? obj : {
"default": obj
};
};
var _exportsWildcard = function (obj) {
for (var i in obj) {
exports[i] = obj[i];
if (exports[i] !== undefined) {
exports[i] = obj[i];
}
}
})(require("foo"));
};
_exportsWildcard(_interopRequireWildcard(require("foo")));
exports.foo = _interopRequire(require("foo"));
exports.foo = _interopRequire(require("foo"));

View File

@@ -11,11 +11,21 @@
return obj && (obj["default"] || obj);
};
(function (obj) {
var _interopRequireWildcard = function (obj) {
return obj && obj.constructor === Object ? obj : {
"default": obj
};
};
var _exportsWildcard = function (obj) {
for (var i in obj) {
exports[i] = obj[i];
if (exports[i] !== undefined) {
exports[i] = obj[i];
}
}
})(_foo);
};
_exportsWildcard(_interopRequireWildcard(_foo));
exports.foo = _interopRequire(_foo);
exports.foo = _interopRequire(_foo);