resourceloader: move using() from mediawiki.js to the base module
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 20 Jun 2018 15:05:08 +0000 (16:05 +0100)
committerKrinkle <krinklemail@gmail.com>
Sat, 23 Jun 2018 23:06:07 +0000 (23:06 +0000)
Bug: T192623
Change-Id: I9095749a013cf97bff45d6d11afd9b2cee7e189b

resources/src/mediawiki/mediawiki.base.js
resources/src/mediawiki/mediawiki.js

index 5cec1bb..ed24af3 100644 (file)
                };
        }() );
 
+       /**
+        * Execute a function as soon as one or more required modules are ready.
+        *
+        * Example of inline dependency on OOjs:
+        *
+        *     mw.loader.using( 'oojs', function () {
+        *         OO.compare( [ 1 ], [ 1 ] );
+        *     } );
+        *
+        * Example of inline dependency obtained via `require()`:
+        *
+        *     mw.loader.using( [ 'mediawiki.util' ], function ( require ) {
+        *         var util = require( 'mediawiki.util' );
+        *     } );
+        *
+        * Since MediaWiki 1.23 this also returns a promise.
+        *
+        * Since MediaWiki 1.28 the promise is resolved with a `require` function.
+        *
+        * @member mw.loader
+        * @param {string|Array} dependencies Module name or array of modules names the
+        *  callback depends on to be ready before executing
+        * @param {Function} [ready] Callback to execute when all dependencies are ready
+        * @param {Function} [error] Callback to execute if one or more dependencies failed
+        * @return {jQuery.Promise} With a `require` function
+        */
+       mw.loader.using = function ( dependencies, ready, error ) {
+               var deferred = $.Deferred();
+
+               // Allow calling with a single dependency as a string
+               if ( typeof dependencies === 'string' ) {
+                       dependencies = [ dependencies ];
+               }
+
+               if ( ready ) {
+                       deferred.done( ready );
+               }
+               if ( error ) {
+                       deferred.fail( error );
+               }
+
+               try {
+                       // Resolve entire dependency map
+                       dependencies = mw.loader.resolve( dependencies );
+               } catch ( e ) {
+                       return deferred.reject( e ).promise();
+               }
+
+               mw.loader.enqueue( dependencies, function () {
+                       deferred.resolve( mw.loader.require );
+               }, deferred.reject );
+
+               return deferred.promise();
+       };
+
        // Alias $j to jQuery for backwards compatibility
        // @deprecated since 1.23 Use $ or jQuery instead
        mw.log.deprecate( window, '$j', $, 'Use $ or jQuery instead.' );
index adce33f..68d9d9e 100644 (file)
                                 */
                                addStyleTag: newStyleTag,
 
+                               enqueue: enqueue,
+
+                               resolve: resolve,
+
                                /**
                                 * Start loading of all queued module dependencies.
                                 *
                                        }
                                },
 
-                               /**
-                                * Execute a function as soon as one or more required modules are ready.
-                                *
-                                * Example of inline dependency on OOjs:
-                                *
-                                *     mw.loader.using( 'oojs', function () {
-                                *         OO.compare( [ 1 ], [ 1 ] );
-                                *     } );
-                                *
-                                * Example of inline dependency obtained via `require()`:
-                                *
-                                *     mw.loader.using( [ 'mediawiki.util' ], function ( require ) {
-                                *         var util = require( 'mediawiki.util' );
-                                *     } );
-                                *
-                                * Since MediaWiki 1.23 this also returns a promise.
-                                *
-                                * Since MediaWiki 1.28 the promise is resolved with a `require` function.
-                                *
-                                * @param {string|Array} dependencies Module name or array of modules names the
-                                *  callback depends on to be ready before executing
-                                * @param {Function} [ready] Callback to execute when all dependencies are ready
-                                * @param {Function} [error] Callback to execute if one or more dependencies failed
-                                * @return {jQuery.Promise} With a `require` function
-                                */
-                               using: function ( dependencies, ready, error ) {
-                                       var deferred = $.Deferred();
-
-                                       // Allow calling with a single dependency as a string
-                                       if ( typeof dependencies === 'string' ) {
-                                               dependencies = [ dependencies ];
-                                       }
-
-                                       if ( ready ) {
-                                               deferred.done( ready );
-                                       }
-                                       if ( error ) {
-                                               deferred.fail( error );
-                                       }
-
-                                       try {
-                                               // Resolve entire dependency map
-                                               dependencies = resolve( dependencies );
-                                       } catch ( e ) {
-                                               return deferred.reject( e ).promise();
-                                       }
-
-                                       enqueue( dependencies, function () {
-                                               deferred.resolve( mw.loader.require );
-                                       }, deferred.reject );
-
-                                       return deferred.promise();
-                               },
-
                                /**
                                 * Load an external script or one or more modules.
                                 *