Jump to content

User:SD0001/userscript-load-caching.min.js: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
v6 - drop namespace check + use ES6
restore namespace check but allow protected pages in other namespaces
Line 1: Line 1:
// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 6
// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 7
if(!/\bnocache=\b/.test(location.href)){let e=(e,t,n)=>(e=e.replace(/special:mypage/i,"User:"+mw.config.get("wgUserName")),$.get("https://"+t+"/w/api.php?titles="+e+"&origin=*&format=json&formatversion=2&uselang=content&maxage=86400&smaxage=86400&action=query&prop=revisions|info&rvprop=content&rvlimit=1").then((r=>{let o=r.query.pages[0];if(o.missing)return;let a=o.revisions[0].content;if(n&&"text/javascript"!==n||"javascript"!==o.contentmodel){if("text/css"!==n||"css"!==o.contentmodel)return $.Deferred().reject('Refused to load "'+e+'"@'+t+": content type mismatch");mw.loader.addStyleTag(a)}else{let e=document.createElement("script");e.innerHTML=a,document.head.appendChild(e)}}))),t=e=>{let t=/^(?:(?:https:)?\/\/(.*))?\/w\/index.php/.exec(e),n=/\btitle=([^=?&]*)/.exec(e);return t&&n&&/\baction=raw\b/.test(e)&&/\bctype=/.test(e)?[n[1],t[1]||mw.config.get("wgServerName")]:null};window.importScript=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/javascript")},window.importStyleSheet=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/css")};let n=mw.loader.load;mw.loader.load=function(r,o){let a=t(r);a?e(a[0],a[1],o):n.apply(mw.loader,[...arguments])};let r=mw.loader.getScript;mw.loader.getScript=function(n){let o=t(n);return o?e(o[0],o[1],"text/javascript"):r.apply(mw.loader,[...arguments])}}
if(!/\bnocache=\b/.test(location.href)){let e=(e,t,r)=>(e=e.replace(/special:mypage/i,"User:"+mw.config.get("wgUserName")),$.get("https://"+t+"/w/api.php?titles="+e+"&origin=*&format=json&formatversion=2&uselang=content&maxage=86400&smaxage=86400&action=query&prop=revisions|info&rvprop=content&rvlimit=1&inprop=protection").then(n=>{let i=n.query.pages[0];if(i.missing)return;if(2!==i.ns&&8!==i.ns&&!i.protection.find(e=>"edit"===e.type&&"sysop"===e.level))return $.Deferred().reject('Refused to load "'+e+'"@'+t+": unprotected page");let o=i.revisions[0].content;if(r&&"text/javascript"!==r||"javascript"!==i.contentmodel){if("text/css"!==r||"css"!==i.contentmodel)return $.Deferred().reject('Refused to load "'+e+'"@'+t+": content type mismatch");mw.loader.addStyleTag(o)}else{let a=document.createElement("script");a.innerHTML=o,document.head.appendChild(a)}})),t=e=>{let t=/^(?:(?:https:)?\/\/(.*))?\/w\/index.php/.exec(e),r=/\btitle=([^=?&]*)/.exec(e);return t&&r&&/\baction=raw\b/.test(e)&&/\bctype=/.test(e)?[r[1],t[1]||mw.config.get("wgServerName")]:null};window.importScript=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/javascript")},window.importStyleSheet=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/css")};let r=mw.loader.load;mw.loader.load=function(n,i){let o=t(n);o?e(o[0],o[1],i):r.apply(mw.loader,[...arguments])};let n=mw.loader.getScript;mw.loader.getScript=function(r){let i=t(r);return i?e(i[0],i[1],"text/javascript"):n.apply(mw.loader,[...arguments])}}

Revision as of 21:29, 15 June 2024

// Enable caching for resource loads, see [[User:SD0001/Making_user_scripts_load_faster]], @revision 7
if(!/\bnocache=\b/.test(location.href)){let e=(e,t,r)=>(e=e.replace(/special:mypage/i,"User:"+mw.config.get("wgUserName")),$.get("https://"+t+"/w/api.php?titles="+e+"&origin=*&format=json&formatversion=2&uselang=content&maxage=86400&smaxage=86400&action=query&prop=revisions|info&rvprop=content&rvlimit=1&inprop=protection").then(n=>{let i=n.query.pages[0];if(i.missing)return;if(2!==i.ns&&8!==i.ns&&!i.protection.find(e=>"edit"===e.type&&"sysop"===e.level))return $.Deferred().reject('Refused to load "'+e+'"@'+t+": unprotected page");let o=i.revisions[0].content;if(r&&"text/javascript"!==r||"javascript"!==i.contentmodel){if("text/css"!==r||"css"!==i.contentmodel)return $.Deferred().reject('Refused to load "'+e+'"@'+t+": content type mismatch");mw.loader.addStyleTag(o)}else{let a=document.createElement("script");a.innerHTML=o,document.head.appendChild(a)}})),t=e=>{let t=/^(?:(?:https:)?\/\/(.*))?\/w\/index.php/.exec(e),r=/\btitle=([^=?&]*)/.exec(e);return t&&r&&/\baction=raw\b/.test(e)&&/\bctype=/.test(e)?[r[1],t[1]||mw.config.get("wgServerName")]:null};window.importScript=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/javascript")},window.importStyleSheet=t=>{e(encodeURIComponent(t),mw.config.get("wgServerName"),"text/css")};let r=mw.loader.load;mw.loader.load=function(n,i){let o=t(n);o?e(o[0],o[1],i):r.apply(mw.loader,[...arguments])};let n=mw.loader.getScript;mw.loader.getScript=function(r){let i=t(r);return i?e(i[0],i[1],"text/javascript"):n.apply(mw.loader,[...arguments])}}