jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/356317 )
Change subject: Update OOjs to v2.1.0 ...................................................................... Update OOjs to v2.1.0 Release notes: https://phabricator.wikimedia.org/diffusion/GOJS/browse/master/History.md;v2.1.0 Change-Id: I63fb9c2145e1c3e63ce1acf5f020e9208ca21f04 --- M maintenance/resources/update-oojs.sh A resources/lib/oojs/AUTHORS.txt A resources/lib/oojs/LICENSE-MIT A resources/lib/oojs/README.md M resources/lib/oojs/oojs.jquery.js 5 files changed, 184 insertions(+), 24 deletions(-) Approvals: Krinkle: Looks good to me, approved jenkins-bot: Verified diff --git a/maintenance/resources/update-oojs.sh b/maintenance/resources/update-oojs.sh index d3e778c..267bd96 100755 --- a/maintenance/resources/update-oojs.sh +++ b/maintenance/resources/update-oojs.sh @@ -38,6 +38,9 @@ # Copy file(s) rsync --force ./node_modules/oojs/dist/oojs.jquery.js "$REPO_DIR/$TARGET_DIR" +rsync --force ./node_modules/oojs/dist/AUTHORS.txt "$REPO_DIR/$TARGET_DIR" +rsync --force ./node_modules/oojs/dist/LICENSE-MIT "$REPO_DIR/$TARGET_DIR" +rsync --force ./node_modules/oojs/dist/README.md "$REPO_DIR/$TARGET_DIR" # Clean up temporary area rm -rf "$NPM_DIR" diff --git a/resources/lib/oojs/AUTHORS.txt b/resources/lib/oojs/AUTHORS.txt new file mode 100644 index 0000000..97fee0a --- /dev/null +++ b/resources/lib/oojs/AUTHORS.txt @@ -0,0 +1,10 @@ +Bartosz DziewoĆski <[email protected]> +C. Scott Ananian <[email protected]> +David Chan <[email protected]> +Ed Sanders <[email protected]> +James D. Forrester <[email protected]> +Moriel Schottlender <[email protected]> +Ori Livneh <[email protected]> +Roan Kattouw <[email protected]> +Timo Tijhof <[email protected]> +Trevor Parscal <[email protected]> diff --git a/resources/lib/oojs/LICENSE-MIT b/resources/lib/oojs/LICENSE-MIT new file mode 100644 index 0000000..c6bbee2 --- /dev/null +++ b/resources/lib/oojs/LICENSE-MIT @@ -0,0 +1,20 @@ +Copyright 2011-2017 OOjs Team and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/resources/lib/oojs/README.md b/resources/lib/oojs/README.md new file mode 100644 index 0000000..ec14576 --- /dev/null +++ b/resources/lib/oojs/README.md @@ -0,0 +1,98 @@ +[](https://www.npmjs.com/package/oojs) [](https://david-dm.org/wikimedia/oojs#info=devDependencies) + +OOjs +================= + +OOjs is a JavaScript library for working with objects. + +Key features include inheritance, mixins and utilities for working with objects. + +<pre lang="javascript"> +/* Example */ +( function ( oo ) { + function Animal() {} + function Magic() {} + function Unicorn() { + Animal.call( this ); + Magic.call( this ); + } + oo.inheritClass( Unicorn, Animal ); + oo.mixinClass( Unicorn, Magic ); +}( OO ) ); +</pre> + +Quick start +---------- + +This library is available as an [npm](https://npmjs.org/) package! Install it right away: +<pre lang="bash"> +npm install oojs +</pre> + +Or clone the repo, `git clone https://phabricator.wikimedia.org/diffusion/GOJS/oojs.git`. + +ECMAScript 5 +---------- + +OOjs requires a modern ECMAScript 5 environment. It is not necessarily compatible with ES3 engines (such as for IE 6-8). For ES3 environments, the old 1.x releases are available but not recommended. + +jQuery +---------- + +If your project uses jQuery, use the optimised `oojs.jquery.js` build instead. + +This build assumes jQuery is present and omits various chunks of code in favour of references to jQuery. + +jQuery 3.0.0 or higher is required. + +Versioning +---------- + +We use the Semantic Versioning guidelines as much as possible. + +Releases will be numbered in the following format: + +`<major>.<minor>.<patch>` + +For more information on SemVer, please visit http://semver.org/. + +Bug tracker +----------- + +Found a bug? Please report it in the [issue tracker](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=OOjs)! + +Release +---------- + +Release process: +<pre lang="bash"> +$ cd path/to/oojs/ +$ git remote update +$ git checkout -B release -t origin/master + +# Ensure tests pass +$ npm install && npm test + +# Avoid using "npm version patch" because that creates +# both a commit and a tag, and we shouldn't tag until after +# the commit is merged. + +# Update release notes +# Copy the resulting list into a new section on History.md +$ git log --format='* %s (%aN)' --no-merges --reverse v$(node -e 'console.log(require("./package.json").version);')...HEAD +$ edit History.md + +# Update the version number +$ edit package.json + +$ git add -p +$ git commit -m "Tag vX.X.X" +$ git review + +# After merging: +$ git remote update +$ git checkout origin/master +$ git tag "vX.X.X" +$ git push --tags +$ npm publish +</pre> diff --git a/resources/lib/oojs/oojs.jquery.js b/resources/lib/oojs/oojs.jquery.js index f93051c..8cc6f11 100644 --- a/resources/lib/oojs/oojs.jquery.js +++ b/resources/lib/oojs/oojs.jquery.js @@ -1,12 +1,12 @@ /*! - * OOjs v2.0.0 optimised for jQuery + * OOjs v2.1.0 optimised for jQuery * https://www.mediawiki.org/wiki/OOjs * * Copyright 2011-2017 OOjs Team and other contributors. * Released under the MIT license * https://oojs.mit-license.org * - * Date: 2017-04-05T02:18:04Z + * Date: 2017-05-30T22:56:52Z */ ( function ( global ) { @@ -683,6 +683,24 @@ } } + /** + * @private + * @param {OO.EventEmitter} ee + * @param {Function|string} method Function or method name + * @param {Object} binding + */ + function addBinding( ee, event, binding ) { + var bindings; + // Auto-initialize bindings list + if ( hasOwn.call( ee.bindings, event ) ) { + bindings = ee.bindings[ event ]; + } else { + bindings = ee.bindings[ event ] = []; + } + // Add binding + bindings.push( binding ); + } + /* Methods */ /** @@ -699,21 +717,14 @@ * @chainable */ oo.EventEmitter.prototype.on = function ( event, method, args, context ) { - var bindings; - validateMethod( method, context ); - if ( hasOwn.call( this.bindings, event ) ) { - bindings = this.bindings[ event ]; - } else { - // Auto-initialize bindings list - bindings = this.bindings[ event ] = []; - } - // Add binding - bindings.push( { + // Ensure consistent object shape (optimisation) + addBinding( this, event, { method: method, args: args, - context: ( arguments.length < 4 ) ? null : context + context: ( arguments.length < 4 ) ? null : context, + once: false } ); return this; }; @@ -726,12 +737,16 @@ * @chainable */ oo.EventEmitter.prototype.once = function ( event, listener ) { - var eventEmitter = this, - wrapper = function () { - eventEmitter.off( event, wrapper ); - return listener.apply( this, arguments ); - }; - return this.on( event, wrapper ); + validateMethod( listener ); + + // Ensure consistent object shape (optimisation) + addBinding( this, event, { + method: listener, + args: undefined, + context: null, + once: true + } ); + return this; }; /** @@ -806,6 +821,11 @@ } else { method = binding.method; } + if ( binding.once ) { + // Must unbind before calling method to avoid + // any nested triggers. + this.off( event, method ); + } method.apply( binding.context, binding.args ? binding.args.concat( args ) : args @@ -823,7 +843,7 @@ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of * event bindings keyed by event name containing either method names, functions or arrays containing * method name or function followed by a list of arguments to be passed to callback before emitted - * arguments + * arguments. * @chainable */ oo.EventEmitter.prototype.connect = function ( context, methods ) { @@ -849,8 +869,13 @@ * * @param {Object} context Object to disconnect methods from * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of - * event bindings keyed by event name. Values can be either method names or functions, but must be - * consistent with those used in the corresponding call to "connect". + * event bindings keyed by event name. Values can be either method names, functions or arrays + * containing a method name. + * NOTE: To allow matching call sites with connect(), array values are allowed to contain the + * parameters as well, but only the method name is used to find bindings. Tt is discouraged to + * have multiple bindings for the same event to the same listener, but if used (and only the + * parameters vary), disconnecting one variation of (event name, event listener, parameters) + * will disconnect other variations as well. * @chainable */ oo.EventEmitter.prototype.disconnect = function ( context, methods ) { @@ -1109,8 +1134,10 @@ // Remove the item from the current index this.items.splice( existingIndex, 1 ); - // Adjust new index after removal - newIndex--; + // If necessary, adjust new index after removal + if ( existingIndex < newIndex ) { + newIndex--; + } // Move the item to the new index this.items.splice( newIndex, 0, item ); @@ -1572,6 +1599,8 @@ }; /* eslint-env node */ + +/* istanbul ignore next */ if ( typeof module !== 'undefined' && module.exports ) { module.exports = oo; } else { -- To view, visit https://gerrit.wikimedia.org/r/356317 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I63fb9c2145e1c3e63ce1acf5f020e9208ca21f04 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Jforrester <[email protected]> Gerrit-Reviewer: Krinkle <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
