Tweak free variable module detection so it will work with Component's polyfill. [closes #296]

Former-commit-id: bda6c962dc5e8299689e4c5cf003f6a6c9a4369d
This commit is contained in:
John-David Dalton
2013-06-10 09:24:29 -07:00
parent 6b46dc7e89
commit c20d7f9754
2 changed files with 23 additions and 16 deletions

View File

@@ -584,12 +584,19 @@
var source = [
';(function(window) {',
" var freeExports = typeof exports == 'object' && typeof require == 'function' && exports;",
' var undefined;',
'',
" var freeModule = typeof module == 'object' && module && module.exports == freeExports && module;",
' var objectTypes = {',
" 'function': true,",
" 'object': true",
' };',
'',
" var freeGlobal = typeof global == 'object' && global;",
' if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {',
" var freeExports = objectTypes[typeof exports] && typeof require == 'function' && exports;",
'',
" var freeModule = objectTypes[typeof module] && module && module.exports == freeExports && module;",
'',
" var freeGlobal = objectTypes[typeof global] && global;",
' if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {',
' window = freeGlobal;',
' }',
'',

View File

@@ -11,18 +11,6 @@
/** Used as a safe reference for `undefined` in pre ES5 environments */
var undefined;
/** Detect free variable `exports` */
var freeExports = typeof exports == 'object' && exports;
/** Detect free variable `module` */
var freeModule = typeof module == 'object' && module && module.exports == freeExports && module;
/** Detect free variable `global`, from Node.js or Browserified code, and use it as `window` */
var freeGlobal = typeof global == 'object' && global;
if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
window = freeGlobal;
}
/** Used to pool arrays and objects used internally */
var arrayPool = [],
objectPool = [];
@@ -146,6 +134,18 @@
'\u2029': 'u2029'
};
/** Detect free variable `exports` */
var freeExports = objectTypes[typeof exports] && exports;
/** Detect free variable `module` */
var freeModule = objectTypes[typeof module] && module && module.exports == freeExports && module;
/** Detect free variable `global`, from Node.js or Browserified code, and use it as `window` */
var freeGlobal = objectTypes[typeof global] && global;
if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {
window = freeGlobal;
}
/*--------------------------------------------------------------------------*/
/**