Tätä skriptiä ei tulisi asentaa suoraan. Se on kirjasto muita skriptejä varten sisällytettäväksi metadirektiivillä // @require https://update.greasyfork.org/scripts/495339/1657142/Syntax_min.js
.
// ==UserScript==
// @name Syntax
// @version 2025.09.08
// @author Canaan HS
// @description Library for simplifying code logic and syntax
// @namespace https://greasyfork.org/users/989635
// @match *://*/*
// @license MPL-2.0
// ==/UserScript==
const Lib=(()=>{function w(a=document,b,c){if(1!==a?.nodeType&&9!==a?.nodeType)return c?[]:void 0;const d=b[0],e=b.slice(1);if(/[ .#:[\]>+~*,()^$=]/.test(e))return c?a.querySelectorAll(b):a.querySelector(b);if(!c&&"#"===d)return 9===a.nodeType?a.getElementById(e):a.querySelector(b);if("."===b[0])return a=a.getElementsByClassName(e),c?[...a]:a[0];a=a.getElementsByTagName(b);return c?[...a]:a[0]}function Q(...a){if(0!==a.length){var b={},c=a,d={dev:!0,group:null,collapsed:!0};if(1<a.length){const l=
a[0],f=a[a.length-1],g=l.constructor===Object,n=f.constructor===Object;if(n&&!g)b=f,c=a.slice(0,-1);else if(g&&!n)b=l,c=a.slice(1);else if(g&&n){const p=new Set(Object.keys(d));b=Object.keys(l).filter(u=>p.has(u)).length;Object.keys(f).filter(u=>p.has(u)).length>b?(b=f,c=a.slice(0,-1)):(b=l,c=a.slice(1))}}var {dev:e,group:h,collapsed:k}={...d,...b};if(e&&0!==c.length)return new Proxy({},{get(l,f){"count"===f?H.count(c[0]):(l=H[f]||H.log,h?(k?console.groupCollapsed(h):console.group(h),l(...c),console.groupEnd()):
l(...c))}})}}async function R(a,b,c=crypto.randomUUID(),d=!0){if(d||!I.has(c)){var e=document.getElementById(c);e||(e=document.createElement(a),e.id=c,(a=J.head)?a.appendChild(e):S("head").then(h=>{J.head=h;h.appendChild(e)}));e.textContent+=b;I.add(c)}}async function S(a,b=null,c={}){const d=Array.isArray(a)?T.queryMap:T.queryElement,{raf:e=!1,all:h=!1,timeout:k=8,throttle:l=0,debounce:f=50,visibility:g=!0,subtree:n=!0,childList:p=!0,attributes:u=!0,characterData:r=!1,timeoutResult:A=!1,root:y=document}=
c||{};return new Promise((m,t)=>{const q=async function(){let x,v;if(e){let z;const F=()=>{(v=d(a,h))?(cancelAnimationFrame(z),clearTimeout(x),b?.(v),m(v)):z=requestAnimationFrame(F)};z=requestAnimationFrame(F);x=setTimeout(()=>{cancelAnimationFrame(z);A&&(b?.(v),m(v))},1E3*k)}else{const [z,F]=0<l?[K,l]:[L,f],M=new MutationObserver(z(()=>{if(v=d(a,h))M.disconnect(),clearTimeout(x),b?.(v),m(v)},F));M.observe(y,{subtree:n,childList:p,attributes:u,characterData:r});x=setTimeout(()=>{M.disconnect();A&&
(b?.(v),m(v))},1E3*k)}};g&&"hidden"===document.visibilityState?document.addEventListener("visibilitychange",()=>q(),{once:!0}):q()})}function U(a,b,c,d){let e;return null!=c?V[B(c)](b,a,c):(e=b.getItem(a),void 0!=e?V[B(JSON.parse(e))](b,e):d)}function K(a,b){let c=0;return(...d)=>{const e=Date.now();e-c>=b&&(c=e,a(...d))}}function L(a,b){let c=null;return(...d)=>{clearTimeout(c);c=setTimeout(function(){a(...d)},b)}}function W(a){a=new Blob([a],{type:"application/javascript"});const b=URL.createObjectURL(a),
c=new Worker(b),d=c.terminate;c.terminate=function(){d.call(c);URL.revokeObjectURL(b)};return c}const Z=new DOMParser,B=a=>Object.prototype.toString.call(a).slice(8,-1);[Document.prototype,Element.prototype].forEach(a=>{a.$q=function(b){return w(this,b,!1)};a.$qa=function(b){return w(this,b,!0)}});const N={$text(a=null){return null===a?this?.textContent?.trim():this.textContent=a?.trim()??""},$copy(a=!0){return this.cloneNode(a)},$iHtml(a=null){return null===a?this.innerHTML:this.innerHTML=a},$oHtml(a=
null){return null===a?this.outerHTML:this.outerHTML=a},$iAdjacent(a,b="beforeend"){null!=a&&(1===a.nodeType?this.insertAdjacentElement(b,a):this.insertAdjacentHTML(b,a))},$sAttr(a,b){this.setAttribute(a,b)},$dAttr(a){this.removeAttribute(a)},$gAttr(a){return this.getAttribute(a)},$hAttr(a){return this.hasAttribute(a)},$addClass(...a){this.classList.add(...a)},$delClass(...a){this.classList.remove(...a)},$toggleClass(a,b){this.classList.toggle(a,b)},$replaceClass(a,b){this.classList.replace(a,b)},
$hasClass(a){return this.classList.contains(a)}};Object.assign(Node.prototype,N);const X=Object.keys(N)[0];Object.defineProperty(Object.prototype,X,{value:function(a=null){return N[X].call(this,a)},writable:!0,configurable:!0});const J={$q:document.$q.bind(document),$Q:(a,b)=>w(a,b,!1),$qa:document.$qa.bind(document),$Qa:(a,b)=>w(a,b,!0),html:document.documentElement,head:document.head??w(document,"head",!1),body:document.body??w(document,"body",!1),img:document.images,link:document.links,script:document.scripts,
style:document.styleSheets,$url:location.href,get url(){return location.href},$origin:location.origin,get origin(){return location.origin},$domain:location.hostname,get domain(){return location.hostname},$lang:navigator.language,get lang(){return navigator.language},$agen:navigator.userAgent,get agen(){return navigator.userAgent},createDomFragment:a=>document.createRange().createContextualFragment(a),get createFragment(){return document.createDocumentFragment()},title:(a=null)=>null===a?document.title:
document.title=a,cookie:(a=null)=>null===a?document.cookie:document.cookie=a,createUrl:a=>URL.createObjectURL(a),_on:(a,{type:b,listener:c,add:d})=>"string"===typeof b&&"function"===typeof c?(a.addEventListener(b,c,d),{[b]:()=>a.removeEventListener(b,c,d)}):{},createElement(a,b,c){const [d,e,h={}]="string"===typeof a?[null,a,b]:[a,b,c];if(e){var {id:k,title:l,class:f,text:g="",rows:n,cols:p,on:u={},style:r={},attr:A={},...y}=h,m=Object.assign(document.createElement(e),{textContent:g});k&&(m.id=k);
l&&(m.title=l);f&&(m.className=f);void 0!==n&&(m.rowSpan=n);void 0!==p&&(m.colSpan=p);Object.assign(m,y);Object.assign(m.style,"string"===typeof r?{cssText:r}:r);Object.entries(A).forEach(([q,x])=>m.setAttribute(q,x));var t={};Array.isArray(u)?u.forEach(q=>Object.assign(t,this._on(m,q))):"object"===typeof u&&Object.assign(t,this._on(m,u));Object.assign(m,{on(q,x,v){this.addEventListener(q,x,v);Object.assign(t,{[q]:()=>this.removeEventListener(q,x,v)})},off(q){t[q]?.();delete t[q]},offAll(){Object.keys(t).forEach(q=>
{t[q]();delete t[q]})}});return 1===d?.nodeType?d.appendChild(m):m}}},D=new Map,H={log:(...a)=>console.log(...a),warn:(...a)=>console.warn(...a),table:(...a)=>console.table(...a),trace:(...a)=>console.trace(...a),debug:(...a)=>console.debug(...a),error:(...a)=>console.error(...a),count:a=>console.count(a)},I=new Set,G=new Map,T={queryMap:(a,b)=>{a=a.map(c=>w(document,c,b));return b?a.every(c=>0<c.length)&&a:a.every(Boolean)&&a},queryElement:(a,b)=>{a=w(document,a,b);return(b?0<a.length:a)&&a}},V=
{String:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):JSON.parse(b),Number:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):Number(b),Array:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):(b=JSON.parse(b),Array.isArray(b[0])?new Map(b):b),Object:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):JSON.parse(b),Boolean:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):JSON.parse(b),Date:(a,b,c)=>null!=c?(a.setItem(b,JSON.stringify(c)),!0):new Date(b),Map:(a,b,c)=>(a.setItem(b,JSON.stringify([...c])),
!0)},Y={Process:(a,b,c=null)=>{a=a[b.toLowerCase()];return"Function"===B(a)?a(c):a?a:"None"}},O={ko:"Korea","ko-KR":"Korea",ja:"Japan","ja-JP":"Japan",ru:"Russia","ru-RU":"Russia",en:"English","en-US":"English","en-GB":"English","en-AU":"English","en-CA":"English","en-NZ":"English","en-IE":"English","en-ZA":"English","en-IN":"English",zh:"Simplified","zh-CN":"Simplified","zh-SG":"Simplified","zh-MY":"Simplified","zh-TW":"Traditional","zh-HK":"Traditional","zh-MO":"Traditional"},C=new Set,P=a=>void 0===
a||null===a?null:a,E=new Map;return function(...a){const b={};for(const c of a)c&&Object.defineProperties(b,Object.getOwnPropertyDescriptors(c));return b}({get sX(){return window.scrollX},get sY(){return window.scrollY},get iW(){return window.innerWidth},get iH(){return window.innerHeight},_cache:void 0,get platform(){this._cache||(void 0!==navigator.userAgentData?.mobile?this._cache=navigator.userAgentData.mobile?"Mobile":"Desktop":window.matchMedia?.("(max-width: 767px), (pointer: coarse)")?.matches?
this._cache="Mobile":/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?this._cache="Mobile":this._cache="Desktop");return this._cache}},J,{addStyle:(a,b,c)=>R("style",a,b,c),addScript:(a,b,c)=>R("script",a,b,c),session:(a,{value:b=null,error:c}={})=>U(a,sessionStorage,b,c),local:(a,{value:b=null,error:c}={})=>U(a,localStorage,b,c),delV:a=>GM_deleteValue(a),allV:()=>P(GM_listValues()),setV:(a,b)=>GM_setValue(a,b),getV:(a,b)=>P(GM_getValue(a,b)),setJV:(a,b,c=
0)=>GM_setValue(a,JSON.stringify(b,null,c)),getJV(a,b){try{return JSON.parse(P(GM_getValue(a,b)))}catch{return b}},eventRecord:D,addRecord:I,observerRecord:G,$type:B,onE:async function(a,b,c,d={},e=null){try{"string"===typeof a&&(a=w(document,a));let h=b.split(/\s*[,|/]\s*/).filter(Boolean);if(0===h.length)throw Error("No event types provided");if(1===h.length)a.addEventListener(b,c,d);else{let k=null;const l=f=>{clearTimeout(k);k=setTimeout(()=>c(f),15)};h.forEach(f=>a.addEventListener(f,l,d))}e?.(!0)}catch{e?.(!1)}},
onEvent:async function(a,b,c,d={}){const {mark:e,...h}=d;"string"===typeof a&&(a=w(document,a));d=e??a;const k=D.get(d);k?.has(b)||(a.addEventListener(b,c,h),k||D.set(d,new Map),D.get(d).set(b,c))},offEvent:async function(a,b,c){"string"===typeof a&&(a=w(document,a));c=c??a;const d=D.get(c)?.get(b);d&&(a.removeEventListener(b,d),D.get(c).delete(b))},onUrlChange:function(a,b=15){function c(n){clearTimeout(e);k||"urlchange"!==n||(k=!0);e=setTimeout(()=>{k&&d(!1,!0);a({type:n,url:location.href,domain:location.hostname})},
Math.max(15,b))}function d(n=!0,p=!1){p&&h||(clearTimeout(e),history.pushState=l,history.replaceState=f,n&&window.removeEventListener("urlchange",g.urlchange),window.removeEventListener("popstate",g.popstate),window.removeEventListener("hashchange",g.hashchange),h=!0)}let e=null,h=!1,k=!1;const l=history.pushState,f=history.replaceState,g={urlchange:()=>c("urlchange"),popstate:()=>c("popstate"),hashchange:()=>c("hashchange")};window.addEventListener("urlchange",g.urlchange);window.addEventListener("popstate",
g.popstate);window.addEventListener("hashchange",g.hashchange);history.pushState=function(){l.apply(this,arguments);c("pushState")};history.replaceState=function(){f.apply(this,arguments);c("replacestate")};return{off:d}},log:Q,createLog:function(a={}){return(...b)=>Q(...b,a)},$observer:async function(a,b,c={},d=null){const {mark:e="",debounce:h=0,throttle:k=100,subtree:l=!0,childList:f=!0,attributes:g=!0,characterData:n=!1}=c||{};if(e&&(c=G.get(e))){if(c.target===a)return;c.ob.disconnect();G.delete(e)}const [p,
u]=0<h?[L,h]:[K,k];c={subtree:l,childList:f,attributes:g,characterData:n};const r=new MutationObserver(p(()=>{b()},u));r.observe(a,c);e&&G.set(e,{target:a,ob:r});d?.({ob:r,op:c})},waitEl:S,$throttle:K,$debounce:L,scopeParse:function(a,b){if("string"!==typeof a||""===a.trim())return b;const c=b.length;let d=!1;const e=new Set,h=new Set,k=(f,g,n)=>{const p=f<=g;for(;p?f<=g:f>=g;p?f++:f--)n.add(f)};let l;for(l of a.split(/\s*[\.,|/]\s*/))if(/^(!|-)?\d+(~\d+|-\d+)?$/.test(l)){a=l.slice(1);const f=/^[!-]/.test(l),
g=/[~-]/.test(a),[n,p]=f?[h,a]:(d=!0,[e,l]),[u,r]=g?p.split(/-|~/):[p,p];u===r?n.add(+u-1):k(+u-1,+r-1,n)}return(d?[...e]:[...b.keys()]).filter(f=>!h.has(f)&&f<c&&0<=f).sort((f,g)=>f-g).map(f=>b[f])},createWorker:W,formatTemplate:function(a,b){if("Object"!==B(a))return"Template must be an object";a=Object.fromEntries(Object.entries(a).map(([c,d])=>[c.toLowerCase(),d]));return"String"===B(b)?b.replace(/\{\s*([^}\s]+)\s*\}/g,(c,d)=>Y.Process(a,d)):"Object"===B(b)?Object.entries(b).map(([c,d])=>Y.Process(a,
c,d)):{"Unsupported format":b}},createCompressor:function(){let a=W('importScripts("https://cdn.jsdelivr.net/npm/[email protected]/umd/index.min.js");onmessage = function(e) {const { filesWithOptions } = e.data;const fileNames = Object.keys(filesWithOptions);let totalSize = 0;let processedSize = 0;fileNames.forEach(name => {totalSize += filesWithOptions[name].data.length;});const chunks = [];const zip = new fflate.Zip((err, data, final) => {if (err) {postMessage({ type: "error", error: err.message });return;}chunks.push(data);if (final) {let size = 0;let offset = 0;chunks.forEach(c => size += c.length);const zipped = new Uint8Array(size);chunks.forEach(c => {zipped.set(c, offset);offset += c.length;});postMessage({ type: "done", data: zipped }, [zipped.buffer]);}});(async () => {for (const name of fileNames) {const { data, level } = filesWithOptions[name];const fileStream = new fflate.ZipPassThrough(name, { level });zip.add(fileStream);fileStream.push(data, true);processedSize += data.length;postMessage({ type: "progress", loaded: processedSize, total: totalSize });} zip.end();})().catch(err => {postMessage({ type: "error", error: err.message });});}');
const b=new Set("mp4 mov avi mkv flv wmv webm mpg mpeg m4v ogv 3gp asf ts vob rm rmvb m2ts f4v mts zip rar 7z gz bz2 .pg jpeg png gif webp bmp tiff tif svg .eic heif raw ico psd mp3 aac flac wav ogg pdf".split(" "));let c={},d=[];return{async destroyWorker(){a&&(a.terminate(),a=null)},async file(e,h){const k=new Promise(async l=>{const f=await h.arrayBuffer();c[e]=new Uint8Array(f);l()});d.push(k);return k},async generateZip(e={},h){await Promise.all(d);return new Promise((k,l)=>{if(0===Object.keys(c).length)return l("Empty Data Error");
const f={};Object.entries(c).forEach(([g,n])=>{var p=g.split(".").pop().toLowerCase();p=b.has(p)?0:e.level||5;f[g]={data:n,level:p}});a.postMessage({filesWithOptions:f},Object.values(f).map(g=>g.data.buffer));a.onmessage=g=>{g=g.data;"progress"===g.type?h?.(g.loaded/g.total*100):"done"===g.type?(h?.(100),c={},d=[],k(new Blob([g.data],{type:"application/zip"}))):"error"===g.type&&(c={},d=[],l(g.error))}})}}},createNnetworkObserver:function(a={}){function b(){var m=Date.now();if(m-A<g)return y;A=m;
if(navigator.connection){const {effectiveType:t,saveData:q}=navigator.connection;y="4g"!==t||q?"3g"===t||"4g"===t&&q?"normal":"poor":"good"}else 5<=r.length&&(m=r.reduce((t,q)=>t+q,0)/r.length,y=m<h?"good":m>k?"poor":"normal");return y}let {MAX_Delay:c=2E3,MIN_CONCURRENCY:d=1,MAX_CONCURRENCY:e=16,Good_Network_THRESHOLD:h=500,Poor_Network_THRESHOLD:k=1500,adaptiveFactors:l={good:{delayFactor:.8,threadFactor:1.2},normal:{delayFactor:1,threadFactor:1},poor:{delayFactor:1.5,threadFactor:.7}},TIME_THRESHOLD:f=
1E3,Network_Check_Interval:g=1E4,EMA_ALPHA:n=.3,ADJUSTMENT_FACTOR:p=.25,History_Size:u=10}=a||{},{responseHistory:r=[],lastNetworkCheck:A=0,networkCondition:y="normal"}={};return function(m,t,q=null,x=0){m=Date.now()-m;r.push(m);r.length>u&&r.shift();f=!f||1>=r.length?m:n*m+(1-n)*f;f=Math.max(20,Math.min(2E3,f));const {delayFactor:v,threadFactor:z}=l[b()];m/=f;t=Math.max(x,Math.min(t*(1+(m-1)*p*v),c));return null!==q?[Math.round(t),Math.round(Math.max(d,Math.min(q*(1-(m-1)*p*z),e)))]:Math.round(t)}},
outputTXT:async function(a,b,c=null){try{b="string"===typeof b?b.endsWith(".txt")?b:`${b}.txt`:`Untitled-${crypto.randomUUID().slice(9,23)}.txt`;const d=new Blob([a],{type:"text/plain"}),e=document.createElement("a");e.href=URL.createObjectURL(d);e.download=b;e.click();URL.revokeObjectURL(e.href);e.remove();c?.({State:!0})}catch(d){c?.({State:!1,Info:d})}},outputJson:async function(a,b,c=null){try{a="string"===typeof a?a:JSON.stringify(a,null,4);b="string"===typeof b?b.endsWith(".json")?b:`${b}.json`:
`Untitled-${crypto.randomUUID().slice(9,23)}.json`;const d=new Blob([a],{type:"application/json"}),e=document.createElement("a");e.href=URL.createObjectURL(d);e.download=b;e.click();URL.revokeObjectURL(e.href);e.remove();c?.({State:!0})}catch(d){c?.({State:!1,Info:d})}},runTime:function(a=null,{lable:b="Elapsed Time:",log:c=!0,format:d=!0,style:e="\u001b[1m\u001b[36m%s\u001b[0m"}={}){if(!a)return performance.now();a=d?`${((performance.now()-a)/1E3).toPrecision(3)}s`:performance.now()-a;return c?console.log(e,
`${b} ${a}`):a},getDate:function(a=null){const b=new Date,c={year:b.getFullYear(),month:`${b.getMonth()+1}`.padStart(2,"0"),date:`${b.getDate()}`.padStart(2,"0"),hour:`${b.getHours()}`.padStart(2,"0"),minute:`${b.getMinutes()}`.padStart(2,"0"),second:`${b.getSeconds()}`.padStart(2,"0")};return(d=>d.replace(/{([^}]+)}/g,(e,h)=>c[h]??"Error"))("string"===typeof a?a:"{year}-{month}-{date} {hour}:{minute}:{second}")},translMatcher:function(a,b=navigator.language,c="en-US"){return a[O[b]]??a[O[c]]??a[O["en-US"]]},
regMenu:function(a,b={}){let {name:c="regMenu",index:d=1,reset:e=!1}=b||{};e&&([...C].map(h=>GM_unregisterMenuCommand(h)),C.clear());for(let [h,k]of Object.entries(a))a=`${c}-${d++}`,"function"===typeof k&&(k={func:k}),GM_registerMenuCommand(h,()=>{k.func()},{id:a,title:k.desc,autoClose:k.close,accessKey:k.hotkey}),C.add(a)},unMenu:async function(a){null==a?([...C].map(b=>GM_unregisterMenuCommand(b)),C.clear()):Array.isArray(a)?a.forEach(b=>{C.delete(b)&&GM_unregisterMenuCommand(b)}):C.delete(a)&&
GM_unregisterMenuCommand(a)},storeListen:function(a,b){a.forEach(c=>{if(!E.has(c)){const d=GM_addValueChangeListener(c,function(e,h,k,l){b({key:e,ov:h,nv:k,far:l})});E.set(c,d)}});return{off(c){const d=E.get(c);d&&(GM_removeValueChangeListener(d),E.delete(c))},offAll(){for(const c of E.values())GM_removeValueChangeListener(c);E.clear()}}},sleep:a=>new Promise(b=>setTimeout(b,a)),domParse:a=>Z.parseFromString(a,"text/html"),nameFilter:a=>a.replace(/[\/\?<>\\:\*\|":]/g,"").trim(),getFill:a=>Math.max(2,
`${a}`.length),suffixName(a,b="webp"){try{if(!a)return b;const c=new URL(a,location.href);a=/\.([^.]+)$/;return(c.pathname.match(a)?.[1]||c.search.match(a)?.[1])?.toLowerCase().trim()||b}catch{return b}},mantissa(a,b,c="0",d=null){return d?`${++a}`.padStart(b,c)+`.${this.suffixName(d)}`:`${++a}`.padStart(b,c)}})})();