Skip to content

Commit

Permalink
patterns: Add swap for jquery.ui aliases
Browse files Browse the repository at this point in the history
Including some new magic to attempt better de-duplication
after the swapping. This wasn't done for mediawiki.api previously
but I'm doing it here because it's very common for gadgets and
scripts to depend on several of these at once.

Duplicates are fine in mw.loader, but its nicer when tourbot
doesn't produce such confusing output.

Ref https://phabricator.wikimedia.org/T219604.
  • Loading branch information
Krinkle committed Oct 17, 2019
1 parent 6e38465 commit fdfb13a
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 8 deletions.
24 changes: 24 additions & 0 deletions src/patterns.js
Expand Up @@ -344,6 +344,30 @@ module.exports = [
replacement: '$1mediawiki.api$2',
summary: 'Updated deprecated module name'
},
{
// Replace old alias with new name (JS quoted)
regex: /(['"])(?:jquery\.ui\.core|jquery\.ui\.core\.styles|jquery\.ui\.accordion|jquery\.ui\.autocomplete|jquery\.ui\.button|jquery\.ui\.datepicker|jquery\.ui\.dialog|jquery\.ui\.draggable|jquery\.ui\.droppable|jquery\.ui\.menu|jquery\.ui\.mouse|jquery\.ui\.position|jquery\.ui\.progressbar|jquery\.ui\.resizable|jquery\.ui\.selectable|jquery\.ui\.slider|jquery\.ui\.sortable|jquery\.ui\.tabs|jquery\.ui\.tooltip|jquery\.ui\.widget|jquery\.effects\.blind|jquery\.effects\.clip|jquery\.effects\.drop|jquery\.effects\.highlight|jquery\.effects\.scale|jquery\.effects\.shake)(['"])/,
replacement: '$1jquery.ui$2',
summary: 'Updated deprecated module name'
},
{
// Remove duplicate of a new name (JS quoted)
regex: /(['"]jquery\.ui['"].*),\s*['"]jquery\.ui['"]\s*/,
replacement: '$1',
summary: 'Updated deprecated module name'
},
{
// Replace old alias with new name (Gadget definition)
regex: /(dependencies=[^|\]]*)(?:jquery\.ui\.core|jquery\.ui\.core\.styles|jquery\.ui\.accordion|jquery\.ui\.autocomplete|jquery\.ui\.button|jquery\.ui\.datepicker|jquery\.ui\.dialog|jquery\.ui\.draggable|jquery\.ui\.droppable|jquery\.ui\.menu|jquery\.ui\.mouse|jquery\.ui\.position|jquery\.ui\.progressbar|jquery\.ui\.resizable|jquery\.ui\.selectable|jquery\.ui\.slider|jquery\.ui\.sortable|jquery\.ui\.tabs|jquery\.ui\.tooltip|jquery\.ui\.widget|jquery\.effects\.blind|jquery\.effects\.clip|jquery\.effects\.drop|jquery\.effects\.highlight|jquery\.effects\.scale|jquery\.effects\.shake)([\s,|\]])/,
replacement: '$1jquery.ui$2',
summary: 'Updated deprecated module name'
},
{
// Remove duplicate of a new name (Gadget definition)
regex: /(dependencies=[^|\]]*jquery\.ui\s*)(,\s*[^|,]+)?,\s*jquery\.ui([\s,|\]])/g,
replacement: '$1$2$3',
summary: 'Updated deprecated module name'
},
{
regex: /(mw\s*\.\s*user\s*\.\s*tokens\s*\.\s*get\s*\(\s*)(?:(')editToken(')|(")editToken("))(\s*\))/,
replacement: '$1$2$4csrfToken$3$5$6',
Expand Down
17 changes: 13 additions & 4 deletions test/fixture/modules-expect.txt
Expand Up @@ -81,13 +81,22 @@ example[dependencies=x,mediawiki.util|misc]
*/

mw.loader.using('mediawiki.util');
/*
example[dependencies=x,mediawiki.util|misc]
*/

mw.loader.using(['mediawiki.util']);
mw.loader.using(['mediawiki.util']);
/*
example[dependencies=x,mediawiki.util|misc]
example[dependencies=x,mediawiki.util|misc]
example[dependencies=x,mediawiki.util|misc]
*/

mw.loader.using('jquery.ui');
mw.loader.using(['jquery.ui']);
mw.loader.using(['jquery.ui', 'mediawiki.util']);
mw.loader.using(['mediawiki.util', 'jquery.ui']);
mediaWiki.loader.using(['jquery.ui'], fn);
/*
Twinkle-start3[ResourceLoader|dependencies=jquery.ui,jquery.tipsy,moment|rights=autoconfirmed]|Twinkle.js
Twinkle-end1[ResourceLoader|dependencies=mediawiki.user,mediawiki.util,jquery.ui,jquery.tipsy|rights=autoconfirmed]|Twinkle.js
Twinkle-mid2[ResourceLoader|dependencies=mediawiki.user,mediawiki.util,jquery.ui,jquery.tipsy,moment|rights=autoconfirmed]|Twinkle.js
misc-lone[ResourceLoader|default|hidden|dependencies=jquery.ui]
*/
17 changes: 13 additions & 4 deletions test/fixture/modules-input.txt
Expand Up @@ -85,13 +85,22 @@ example[dependencies=x,jquery.accessKeyLabel|misc]
*/

mw.loader.using('mediawiki.RegExp');
/*
example[dependencies=x,mediawiki.RegExp|misc]
*/

mw.loader.using(['mediawiki.util', 'mediawiki.RegExp']);
mw.loader.using(['mediawiki.RegExp', 'mediawiki.util']);
/*
example[dependencies=x,mediawiki.RegExp|misc]
example[dependencies=x,mediawiki.RegExp,mediawiki.util|misc]
example[dependencies=x,mediawiki.util,mediawiki.RegExp|misc]
*/

mw.loader.using('jquery.ui.dialog');
mw.loader.using(['jquery.ui.dialog']);
mw.loader.using(['jquery.ui.dialog', 'mediawiki.util']);
mw.loader.using(['mediawiki.util', 'jquery.ui.dialog']);
mediaWiki.loader.using(['jquery.ui.dialog', 'jquery.ui.autocomplete'], fn);
/*
Twinkle-start3[ResourceLoader|dependencies=jquery.ui.dialog,jquery.ui.button,jquery.ui.core,jquery.tipsy,moment|rights=autoconfirmed]|Twinkle.js
Twinkle-end1[ResourceLoader|dependencies=mediawiki.user,mediawiki.util,jquery.ui.dialog,jquery.tipsy|rights=autoconfirmed]|Twinkle.js
Twinkle-mid2[ResourceLoader|dependencies=mediawiki.user,mediawiki.util,jquery.ui.dialog,jquery.tipsy,jquery.ui.button,moment|rights=autoconfirmed]|Twinkle.js
misc-lone[ResourceLoader|default|hidden|dependencies=jquery.ui.button]
*/

0 comments on commit fdfb13a

Please sign in to comment.