User:Fred Gandt/ambiguousLinks.js

$( document ).ready( => {	"use strict";	if ( mw.config.get( "wgNamespaceNumber" ) === 0 ) {		let article_link_titles_array = [];		const ARTICLE_ID = mw.config.get( "wgArticleId" ),			CONTENT_TEXT = document.getElementById( "mw-content-text" ),			ARTICLE_AMBIGUOUS_LINK_TITLES_ARRAY = [],			apiQuery = ( qd, fnc ) => {				$.ajax( { type: "POST", url: "/w/api.php", dataType: "json", data: Object.assign( {						format: "json",						action: "query"					}, qd ), success: data => fnc( data ), error: data => console.error( data ) } );			},			populateArticleLinkTitlesArray = data => article_link_titles_array.push( ...data.query.pages[ ARTICLE_ID ].links ),			getAllAmbiguousArticleLinkTitles = qd => {				qd.titles = article_link_titles_array.splice( 0, 50 ).join( "|" );				apiQuery( qd, data => { for ( const [key, value] of Object.entries( data.query.pages ) ) { if ( value.pageprops?.hasOwnProperty( "disambiguation" ) ) { ARTICLE_AMBIGUOUS_LINK_TITLES_ARRAY.push( value.title ); }					}					if ( article_link_titles_array.length ) { getAllAmbiguousArticleLinkTitles( qd ); } else if ( ARTICLE_AMBIGUOUS_LINK_TITLES_ARRAY.length ) { CONTENT_TEXT.querySelectorAll( ARTICLE_AMBIGUOUS_LINK_TITLES_ARRAY.map( ttl => `a[title="${ttl}"]` ).join( "," ) ).forEach( link => {							link.style.backgroundColor = "#fd9a35";							link.style.color = "#000000";						} ); }				} );			},			getAllArticleLinks = qd => {				apiQuery( qd, data => { if ( data.continue ) { qd.plcontinue = data.continue.plcontinue; populateArticleLinkTitlesArray( data ); getAllArticleLinks( qd ); } else if ( data.hasOwnProperty( "batchcomplete" ) ) { populateArticleLinkTitlesArray( data ); article_link_titles_array = [ ... new Set( article_link_titles_array.map( link_object => link_object.title ) ) ]; getAllAmbiguousArticleLinkTitles( { prop: "pageprops", ppprop: "disambiguation" } ); }				} );			};		getAllArticleLinks( { prop: "links", pllimit: "max", titles: mw.config.get( "wgTitle" ) } );	} } );