User:Eejit43/scripts/sync-redirect.js

Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/sync-redirect.ts

"use strict";mw.loader.using(["mediawiki.util"],async()=>{if(!mw.Title.isTalkNamespace(mw.config.get("wgNamespaceNumber")))return;const r=await new mw.Api().get({action:"query",formatversion:"2",prop:["info","revisions"],rvprop:"content",rvslots:"main",titles:`${mw.config.get("wgFormattedNamespaces")[mw.config.get("wgNamespaceNumber")-1]}:${mw.config.get("wgTitle")}`});if(!r.query.pages[0].redirect)return;mw.util.addPortletLink(mw.config.get("skin")==="minerva"?"p-tb":"p-cactions","#","Sync with main page redirect","sync-redirect").addEventListener("click",async g=>{g.preventDefault(),mw.notify("Editing...",{tag:"sync-redirect-notification"});const n=r.query.pages[0].revisions[0].slots.main.content,a=/#redirect:? *\[\[(.+)]]/i.exec(n)?.[1].replaceAll("_"," ").split("|")[0].split("#")[0].trim();if(!a)return mw.notify("Failed to parse redirect target!",{type:"error",tag:"sync-redirect-notification"});const o=new DOMParser().parseFromString(a,"text/html").documentElement.textContent;if(!o)return mw.notify("Failed to parse redirect target!",{type:"error",tag:"sync-redirect-notification"});const i=mw.Title.newFromText(o);if(!i)return mw.notify("Failed to parse redirect target!",{type:"error",tag:"sync-redirect-notification"});const e=i.getMainText(),c=/{{ *r(edirect)?( from)?(( a)? page)? (move|rename|pm) *}}/i.test(n),t=mw.config.get("wgFormattedNamespaces")[i.getNamespaceId()+1];await new mw.Api().edit(mw.config.get("wgPageName"),()=>({text:`#REDIRECT [[${t}:${e}]]${c?`

{{Redirect category shell|
{{R from move}}
}}`:""}`,summary:`Sync redirect with main page, to [[${t}:${e}]] (via [[User:Eejit43/scripts/sync-redirect|script]])`,minor:!0})).catch(async(m,d)=>{m==="nocreate-missing"?await new mw.Api().create(mw.config.get("wgPageName"),{summary:`Create redirect matching main page, to [[${t}:${e}]] (via [[User:Eejit43/scripts/sync-redirect|script]])`},`#REDIRECT [[${t}:${e}]]${c?`

{{Redirect category shell|
{{R from move}}
}}`:""}`).catch((p,w)=>{mw.notify(`Failed to redirect page: ${w?.error.info??"Unknown error"} (${p})`,{type:"error",tag:"sync-redirect-notification"})}):mw.notify(`Failed to redirect page: ${d?.error.info??"Unknown error"} (${m})`,{type:"error",tag:"sync-redirect-notification"})}),mw.notify("Successfully redirected page, reloading...",{type:"success",tag:"sync-redirect-notification"});const s=new URL(window.location.href);s.searchParams.set("redirect","no"),window.location.href=s.href})});

// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9zeW5jLXJlZGlyZWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBcGlRdWVyeUluZm9QYXJhbXMsIEFwaVF1ZXJ5UmV2aXNpb25zUGFyYW1zIH0gZnJvbSAndHlwZXMtbWVkaWF3aWtpL2FwaV9wYXJhbXMnO1xuaW1wb3J0IHsgTWVkaWFXaWtpRGF0YUVycm9yLCBQYWdlUmV2aXNpb25zUmVzdWx0IH0gZnJvbSAnLi4vZ2xvYmFsLXR5cGVzJztcblxubXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnXSwgYXN5bmMgKCkgPT4ge1xuICAgIGlmICghbXcuVGl0bGUuaXNUYWxrTmFtZXNwYWNlKG13LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykpKSByZXR1cm47XG4gICAgY29uc3QgbWFpblBhZ2VJbmZvUmV2aXNpb25zID0gKGF3YWl0IG5ldyBtdy5BcGkoKS5nZXQoe1xuICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgIGZvcm1hdHZlcnNpb246ICcyJyxcbiAgICAgICAgcHJvcDogWydpbmZvJywgJ3JldmlzaW9ucyddLFxuICAgICAgICBydnByb3A6ICdjb250ZW50JyxcbiAgICAgICAgcnZzbG90czogJ21haW4nLFxuICAgICAgICB0aXRsZXM6IGAke213LmNvbmZpZy5nZXQoJ3dnRm9ybWF0dGVkTmFtZXNwYWNlcycpW213LmNvbmZpZy5nZXQoJ3dnTmFtZXNwYWNlTnVtYmVyJykgLSAxXX06JHttdy5jb25maWcuZ2V0KCd3Z1RpdGxlJyl9YCxcbiAgICB9IHNhdGlzZmllcyBBcGlRdWVyeUluZm9QYXJhbXMgJiBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcykpIGFzIFBhZ2VSZXZpc2lvbnNSZXN1bHQgJiB7IHF1ZXJ5OiB7IHBhZ2VzOiB7IHJlZGlyZWN0PzogYm9vbGVhbiB9W10gfSB9O1xuICAgIGlmICghbWFpblBhZ2VJbmZvUmV2aXNpb25zLnF1ZXJ5LnBhZ2VzWzBdLnJlZGlyZWN0KSByZXR1cm47XG5cbiAgICBjb25zdCBsaW5rID0gbXcudXRpbC5hZGRQb3J0bGV0TGluayhtdy5jb25maWcuZ2V0KCdza2luJykgPT09ICdtaW5lcnZhJyA/ICdwLXRiJyA6ICdwLWNhY3Rpb25zJywgJyMnLCAnU3luYyB3aXRoIG1haW4gcGFnZSByZWRpcmVjdCcsICdzeW5jLXJlZGlyZWN0JykhO1xuXG4gICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIG13Lm5vdGlmeSgnRWRpdGluZy4uLicsIHsgdGFnOiAnc3luYy1yZWRpcmVjdC1ub3RpZmljYXRpb24nIH0pO1xuXG4gICAgICAgIGNvbnN0IG1haW5QYWdlQ29udGVudDogc3RyaW5nID0gbWFpblBhZ2VJbmZvUmV2aXNpb25zLnF1ZXJ5LnBhZ2VzWzBdLnJldmlzaW9uc1swXS5zbG90cy5tYWluLmNvbnRlbnQ7XG5cbiAgICAgICAgY29uc3QgcmVkaXJlY3RUYXJnZXQgPSAvI3JlZGlyZWN0Oj8gKlxcW1xcWyguKyldXS9pLmV4ZWMobWFpblBhZ2VDb250ZW50KT8uWzFdLnJlcGxhY2VBbGwoJ18nLCAnICcpLnNwbGl0KCd8JylbMF0uc3BsaXQoJyMnKVswXS50cmltKCk7XG4gICAgICAgIGlmICghcmVkaXJlY3RUYXJnZXQpIHJldHVybiBtdy5ub3RpZnkoJ0ZhaWxlZCB0byBwYXJzZSByZWRpcmVjdCB0YXJnZXQhJywgeyB0eXBlOiAnZXJyb3InLCB0YWc6ICdzeW5jLXJlZGlyZWN0LW5vdGlmaWNhdGlvbicgfSk7XG5cbiAgICAgICAgY29uc3QgcmVkaXJlY3RUYXJnZXRQYXJzZWQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHJlZGlyZWN0VGFyZ2V0LCAndGV4dC9odG1sJykuZG9jdW1lbnRFbGVtZW50LnRleHRDb250ZW50O1xuICAgICAgICBpZiAoIXJlZGlyZWN0VGFyZ2V0UGFyc2VkKSByZXR1cm4gbXcubm90aWZ5KCdGYWlsZWQgdG8gcGFyc2UgcmVkaXJlY3QgdGFyZ2V0IScsIHsgdHlwZTogJ2Vycm9yJywgdGFnOiAnc3luYy1yZWRpcmVjdC1ub3RpZmljYXRpb24nIH0pO1xuXG4gICAgICAgIGNvbnN0IG13UmVkaXJlY3RUYXJnZXQgPSBtdy5UaXRsZS5uZXdGcm9tVGV4dChyZWRpcmVjdFRhcmdldFBhcnNlZCk7XG4gICAgICAgIGlmICghbXdSZWRpcmVjdFRhcmdldCkgcmV0dXJuIG13Lm5vdGlmeSgnRmFpbGVkIHRvIHBhcnNlIHJlZGlyZWN0IHRhcmdldCEnLCB7IHR5cGU6ICdlcnJvcicsIHRhZzogJ3N5bmMtcmVkaXJlY3Qtbm90aWZpY2F0aW9uJyB9KTtcblxuICAgICAgICBjb25zdCBtYWluVGFyZ2V0VGV4dCA9IG13UmVkaXJlY3RUYXJnZXQuZ2V0TWFpblRleHQoKTtcblxuICAgICAgICBjb25zdCBwYWdlTW92ZSA9IC97eyAqcihlZGlyZWN0KT8oIGZyb20pPygoIGEpPyBwYWdlKT8gKG1vdmV8cmVuYW1lfHBtKSAqfX0vaS50ZXN0KG1haW5QYWdlQ29udGVudCk7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uVGFsa05hbWVzcGFjZU5hbWUgPSBtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKVttd1JlZGlyZWN0VGFyZ2V0LmdldE5hbWVzcGFjZUlkKCkgKyAxXTtcbiAgICAgICAgYXdhaXQgbmV3IG13LkFwaSgpXG4gICAgICAgICAgICAuZWRpdChtdy5jb25maWcuZ2V0KCd3Z1BhZ2VOYW1lJyksICgpID0+ICh7XG4gICAgICAgICAgICAgICAgdGV4dDogYCNSRURJUkVDVCBbWyR7ZGVzdGluYXRpb25UYWxrTmFtZXNwYWNlTmFtZX06JHttYWluVGFyZ2V0VGV4dH1dXSR7cGFnZU1vdmUgPyAnXFxuXFxue3tSZWRpcmVjdCBjYXRlZ29yeSBzaGVsbHxcXG57e1IgZnJvbSBtb3ZlfX1cXG59fScgOiAnJ31gLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IGBTeW5jIHJlZGlyZWN0IHdpdGggbWFpbiBwYWdlLCB0byBbWyR7ZGVzdGluYXRpb25UYWxrTmFtZXNwYWNlTmFtZX06JHttYWluVGFyZ2V0VGV4dH1dXSAodmlhIFtbVXNlcjpFZWppdDQzL3NjcmlwdHMvc3luYy1yZWRpcmVjdHxzY3JpcHRdXSlgLFxuICAgICAgICAgICAgICAgIG1pbm9yOiB0cnVlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuY2F0Y2goYXN5bmMgKGVycm9yQ29kZTogc3RyaW5nLCBlcnJvckluZm86IE1lZGlhV2lraURhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvckNvZGUgPT09ICdub2NyZWF0ZS1taXNzaW5nJylcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IG13LkFwaSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN1bW1hcnk6IGBDcmVhdGUgcmVkaXJlY3QgbWF0Y2hpbmcgbWFpbiBwYWdlLCB0byBbWyR7ZGVzdGluYXRpb25UYWxrTmFtZXNwYWNlTmFtZX06JHttYWluVGFyZ2V0VGV4dH1dXSAodmlhIFtbVXNlcjpFZWppdDQzL3NjcmlwdHMvc3luYy1yZWRpcmVjdHxzY3JpcHRdXSlgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCNSRURJUkVDVCBbWyR7ZGVzdGluYXRpb25UYWxrTmFtZXNwYWNlTmFtZX06JHttYWluVGFyZ2V0VGV4dH1dXSR7cGFnZU1vdmUgPyAnXFxuXFxue3tSZWRpcmVjdCBjYXRlZ29yeSBzaGVsbHxcXG57e1IgZnJvbSBtb3ZlfX1cXG59fScgOiAnJ31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGU6IHN0cmluZywgZXJyb3JJbmZvOiBNZWRpYVdpa2lEYXRhRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoYEZhaWxlZCB0byByZWRpcmVjdCBwYWdlOiAke2Vycm9ySW5mbz8uZXJyb3IuaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCwgeyB0eXBlOiAnZXJyb3InLCB0YWc6ICdzeW5jLXJlZGlyZWN0LW5vdGlmaWNhdGlvbicgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIG13Lm5vdGlmeShgRmFpbGVkIHRvIHJlZGlyZWN0IHBhZ2U6ICR7ZXJyb3JJbmZvPy5lcnJvci5pbmZvID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLCB7IHR5cGU6ICdlcnJvcicsIHRhZzogJ3N5bmMtcmVkaXJlY3Qtbm90aWZpY2F0aW9uJyB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG13Lm5vdGlmeSgnU3VjY2Vzc2Z1bGx5IHJlZGlyZWN0ZWQgcGFnZSwgcmVsb2FkaW5nLi4uJywgeyB0eXBlOiAnc3VjY2VzcycsIHRhZzogJ3N5bmMtcmVkaXJlY3Qtbm90aWZpY2F0aW9uJyB9KTtcblxuICAgICAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgbmV3VXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlZGlyZWN0JywgJ25vJyk7XG5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBuZXdVcmwuaHJlZjtcbiAgICB9KTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7O2FBR0EsR0FBRyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRyxTQUFZLENBQzVDLEdBQUksQ0FBQyxHQUFHLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEVBQUcsT0FDbkUsTUFBTUEsRUFBeUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FDbEQsT0FBUSxRQUNSLGNBQWUsSUFDZixLQUFNLENBQUMsT0FBUSxXQUFXLEVBQzFCLE9BQVEsVUFDUixRQUFTLE9BQ1QsT0FBUSxHQUFHLEdBQUcsT0FBTyxJQUFJLHVCQUF1QixFQUFFLEdBQUcsT0FBTyxJQUFJLG1CQUFtQixFQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUN6SCxDQUF3RCxFQUN4RCxHQUFJLENBQUNBLEVBQXNCLE1BQU0sTUFBTSxDQUFDLEVBQUUsU0FBVSxPQUV2QyxHQUFHLEtBQUssZUFBZSxHQUFHLE9BQU8sSUFBSSxNQUFNLElBQU0sVUFBWSxPQUFTLGFBQWMsSUFBSywrQkFBZ0MsZUFBZSxFQUVoSixpQkFBaUIsUUFBUyxNQUFPQyxHQUFVLENBQzVDQSxFQUFNLGVBQWUsRUFFckIsR0FBRyxPQUFPLGFBQWMsQ0FBRSxJQUFLLDRCQUE2QixDQUFDLEVBRTdELE1BQU1DLEVBQTBCRixFQUFzQixNQUFNLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxRQUV2RkcsRUFBaUIsMkJBQTJCLEtBQUtELENBQWUsSUFBSSxDQUFDLEVBQUUsV0FBVyxJQUFLLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFDbkksR0FBSSxDQUFDQyxFQUFnQixPQUFPLEdBQUcsT0FBTyxtQ0FBb0MsQ0FBRSxLQUFNLFFBQVMsSUFBSyw0QkFBNkIsQ0FBQyxFQUU5SCxNQUFNQyxFQUF1QixJQUFJLFVBQVUsRUFBRSxnQkFBZ0JELEVBQWdCLFdBQVcsRUFBRSxnQkFBZ0IsWUFDMUcsR0FBSSxDQUFDQyxFQUFzQixPQUFPLEdBQUcsT0FBTyxtQ0FBb0MsQ0FBRSxLQUFNLFFBQVMsSUFBSyw0QkFBNkIsQ0FBQyxFQUVwSSxNQUFNQyxFQUFtQixHQUFHLE1BQU0sWUFBWUQsQ0FBb0IsRUFDbEUsR0FBSSxDQUFDQyxFQUFrQixPQUFPLEdBQUcsT0FBTyxtQ0FBb0MsQ0FBRSxLQUFNLFFBQVMsSUFBSyw0QkFBNkIsQ0FBQyxFQUVoSSxNQUFNQyxFQUFpQkQsRUFBaUIsWUFBWSxFQUU5Q0UsRUFBVyw2REFBNkQsS0FBS0wsQ0FBZSxFQUM1Rk0sRUFBK0IsR0FBRyxPQUFPLElBQUksdUJBQXVCLEVBQUVILEVBQWlCLGVBQWUsRUFBSSxDQUFDLEVBQ2pILE1BQU0sSUFBSSxHQUFHLElBQUksRUFDWixLQUFLLEdBQUcsT0FBTyxJQUFJLFlBQVksRUFBRyxLQUFPLENBQ3RDLEtBQU0sZUFBZUcsQ0FBNEIsSUFBSUYsQ0FBYyxLQUFLQyxFQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBd0QsRUFBRSxHQUM3SSxRQUFTLHNDQUFzQ0MsQ0FBNEIsSUFBSUYsQ0FBYyx5REFDN0YsTUFBTyxFQUNYLEVBQUUsRUFDRCxNQUFNLE1BQU9HLEVBQW1CQyxJQUFrQyxDQUMzREQsSUFBYyxtQkFDZCxNQUFNLElBQUksR0FBRyxJQUFJLEVBQ1osT0FDRyxHQUFHLE9BQU8sSUFBSSxZQUFZLEVBQzFCLENBQUUsUUFBUyw0Q0FBNENELENBQTRCLElBQUlGLENBQWMsd0RBQXlELEVBQzlKLGVBQWVFLENBQTRCLElBQUlGLENBQWMsS0FBS0MsRUFBVztBQUFBO0FBQUE7QUFBQTtBQUFBLElBQXdELEVBQUUsRUFDM0ksRUFDQyxNQUFNLENBQUNFLEVBQW1CQyxJQUFrQyxDQUN6RCxHQUFHLE9BQU8sNEJBQTRCQSxHQUFXLE1BQU0sTUFBUSxlQUFlLEtBQUtELENBQVMsSUFBSyxDQUFFLEtBQU0sUUFBUyxJQUFLLDRCQUE2QixDQUFDLENBQ3pKLENBQUMsRUFDSixHQUFHLE9BQU8sNEJBQTRCQyxHQUFXLE1BQU0sTUFBUSxlQUFlLEtBQUtELENBQVMsSUFBSyxDQUFFLEtBQU0sUUFBUyxJQUFLLDRCQUE2QixDQUFDLENBQzlKLENBQUMsRUFFTCxHQUFHLE9BQU8sNkNBQThDLENBQUUsS0FBTSxVQUFXLElBQUssNEJBQTZCLENBQUMsRUFFOUcsTUFBTUUsRUFBUyxJQUFJLElBQUksT0FBTyxTQUFTLElBQUksRUFDM0NBLEVBQU8sYUFBYSxJQUFJLFdBQVksSUFBSSxFQUV4QyxPQUFPLFNBQVMsS0FBT0EsRUFBTyxJQUNsQyxDQUFDLENBQ0wsQ0FBQyIsCiAgIm5hbWVzIjogWyJtYWluUGFnZUluZm9SZXZpc2lvbnMiLCAiZXZlbnQiLCAibWFpblBhZ2VDb250ZW50IiwgInJlZGlyZWN0VGFyZ2V0IiwgInJlZGlyZWN0VGFyZ2V0UGFyc2VkIiwgIm13UmVkaXJlY3RUYXJnZXQiLCAibWFpblRhcmdldFRleHQiLCAicGFnZU1vdmUiLCAiZGVzdGluYXRpb25UYWxrTmFtZXNwYWNlTmFtZSIsICJlcnJvckNvZGUiLCAiZXJyb3JJbmZvIiwgIm5ld1VybCJdCn0K