aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTimmy Willison <timmywillisn@gmail.com>2013-07-04 14:00:26 -0400
committerTimmy Willison <timmywillisn@gmail.com>2013-07-04 14:05:30 -0400
commitacdcc6b6a25a2ccddea6b27b2a2fc2b7ef0e2116 (patch)
tree34b0ea2124fae782dff93b78786a5dd8f6ec9025 /src
parent894a6c1a6f0d051158ba208c5eb0e5b5385dec00 (diff)
downloadjquery-acdcc6b6a25a2ccddea6b27b2a2fc2b7ef0e2116.tar.gz
jquery-acdcc6b6a25a2ccddea6b27b2a2fc2b7ef0e2116.zip
Support CommonJS environments by accentuating the need for a window with a document. Fixes #13768.
Diffstat (limited to 'src')
-rw-r--r--src/exports.js21
-rw-r--r--src/intro.js36
-rw-r--r--src/outro.js6
3 files changed, 40 insertions, 23 deletions
diff --git a/src/exports.js b/src/exports.js
deleted file mode 100644
index 61aa9367a..000000000
--- a/src/exports.js
+++ /dev/null
@@ -1,21 +0,0 @@
-if ( typeof module === "object" && module && typeof module.exports === "object" ) {
- // Expose jQuery as module.exports in loaders that implement the Node
- // module pattern (including browserify). Do not create the global, since
- // the user will be storing it themselves locally, and globals are frowned
- // upon in the Node module world.
- module.exports = jQuery;
-} else {
- // Otherwise expose jQuery to the global object as usual
- window.jQuery = window.$ = jQuery;
-
- // Register as a named AMD module, since jQuery can be concatenated with other
- // files that may use define, but not via a proper concatenation script that
- // understands anonymous AMD modules. A named AMD is safest and most robust
- // way to register. Lowercase jquery is used because AMD module names are
- // derived from file names, and jQuery is normally delivered in a lowercase
- // file name. Do this after creating the global so that if an AMD module wants
- // to call noConflict to hide this version of jQuery, it will work.
- if ( typeof define === "function" && define.amd ) {
- define( "jquery", [], function () { return jQuery; } );
- }
-}
diff --git a/src/intro.js b/src/intro.js
index c9b1dcdad..64032d4ca 100644
--- a/src/intro.js
+++ b/src/intro.js
@@ -11,7 +11,41 @@
*
* Date: @DATE
*/
-(function( window, undefined ) {
+
+(function ( window, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // Expose a jQuery-making factory as module.exports in loaders that implement the Node
+ // module pattern (including browserify).
+ // This accentuates the need for a real window in the environment
+ // e.g. var jQuery = require("jquery")(window);
+ module.exports = function( w ) {
+ w = w || window;
+ if ( !w.document ) {
+ throw new Error("jQuery requires a window with a document");
+ }
+ return factory( w );
+ };
+ } else {
+ // Execute the factory to produce jQuery
+ var jQuery = factory( window );
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ });
+ }
+ }
+
+// Pass this, window may not be defined yet
+}(this, function ( window, undefined ) {
// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
diff --git a/src/outro.js b/src/outro.js
index ac484391c..20cec437c 100644
--- a/src/outro.js
+++ b/src/outro.js
@@ -1,2 +1,6 @@
+// Expose jQuery and $ identifiers, even in
+// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+return (window.jQuery = window.$ = jQuery);
-})( window );
+}));