From: Aaron Schulz Date: Wed, 20 Jun 2018 15:05:08 +0000 (+0100) Subject: resourceloader: move using() from mediawiki.js to the base module X-Git-Tag: 1.34.0-rc.0~4990 X-Git-Url: http://git.cyclocoop.org/%7D%7Cconcat%7B?a=commitdiff_plain;h=0dead475ab85cbd9c106c8fbaa38779b0c16aaea;p=lhc%2Fweb%2Fwiklou.git resourceloader: move using() from mediawiki.js to the base module Bug: T192623 Change-Id: I9095749a013cf97bff45d6d11afd9b2cee7e189b --- diff --git a/resources/src/mediawiki/mediawiki.base.js b/resources/src/mediawiki/mediawiki.base.js index 5cec1bb62f..ed24af3065 100644 --- a/resources/src/mediawiki/mediawiki.base.js +++ b/resources/src/mediawiki/mediawiki.base.js @@ -583,6 +583,61 @@ }; }() ); + /** + * 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.' ); diff --git a/resources/src/mediawiki/mediawiki.js b/resources/src/mediawiki/mediawiki.js index adce33f0ca..68d9d9e018 100644 --- a/resources/src/mediawiki/mediawiki.js +++ b/resources/src/mediawiki/mediawiki.js @@ -1578,6 +1578,10 @@ */ addStyleTag: newStyleTag, + enqueue: enqueue, + + resolve: resolve, + /** * Start loading of all queued module dependencies. * @@ -1805,60 +1809,6 @@ } }, - /** - * 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. *