From 8832b17650a52b1fd931103bf067d83172003ac2 Mon Sep 17 00:00:00 2001 From: guybedford Date: Sun, 12 Apr 2015 19:47:50 +0200 Subject: [PATCH] default export convenience --- lib/amd.js | 3 +-- lib/register.js | 13 +++++++------ lib/wrapper-start.js | 11 +++++++++++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/lib/amd.js b/lib/amd.js index 5eb5611e..19c1c47b 100644 --- a/lib/amd.js +++ b/lib/amd.js @@ -66,8 +66,7 @@ // commonjs require else if (typeof names == 'string') { - var module = loader.get(names); - return module.__useDefault ? module['default'] : module; + return checkGetDefault(loader.get(names)); } else diff --git a/lib/register.js b/lib/register.js index 67e214b4..6e2ef4d0 100644 --- a/lib/register.js +++ b/lib/register.js @@ -309,8 +309,8 @@ exports = entry.module.exports; } - if ((!entry || entry.declarative) && exports && exports.__useDefault) - return exports['default']; + if ((!entry || entry.declarative)) + return checkGetDefault(exports); return exports; } @@ -357,10 +357,11 @@ else { var hasOwnProperty = exports && exports.hasOwnProperty; entry.esModule = {}; - for (var p in exports) { - if (!hasOwnProperty || exports.hasOwnProperty(p)) - entry.esModule[p] = exports[p]; - } + if (typeof exports == 'object' || typeof exports == 'function') + for (var p in exports) { + if (!hasOwnProperty || exports.hasOwnProperty(p)) + entry.esModule[p] = exports[p]; + } entry.esModule['default'] = exports; entry.esModule.__useDefault = true; } diff --git a/lib/wrapper-start.js b/lib/wrapper-start.js index 0cb1841e..a3720582 100644 --- a/lib/wrapper-start.js +++ b/lib/wrapper-start.js @@ -27,4 +27,15 @@ function dedupe(deps) { if (indexOf.call(newDeps, deps[i]) == -1) newDeps.push(deps[i]) return newDeps; +} + +// if a module only has a default export, then take that as the module value +function checkGetDefault(module) { + if (module && module.__useDefault) + return module['default']; + for (var p in module) { + if (p != 'default') + return module; + } + return 'default' in module ? module['default'] : module; } \ No newline at end of file