SyntaxSimplified

Library for simplifying code logic and syntax

Versione datata 15/04/2024. Vedi la nuova versione l'ultima versione.

Questo script non dovrebbe essere installato direttamente. È una libreria per altri script da includere con la chiave // @require https://update.greasyfork.org/scripts/487608/1360859/SyntaxSimplified.js

// ==UserScript==
// @name         SyntaxSimplified
// @version      2024/04/15
// @author       Canaan HS
// @description  Library for simplifying code logic and syntax
// @namespace    https://greasyfork.org/users/989635
// @match        *://*/*
// @license      MIT
// ==/UserScript==
class Syntax{constructor(){this.Mark={};this.ListenerRecord={};this.Parser=new DOMParser;this.Buffer=document.createDocumentFragment();this.print={log:a=>console.log(a),warn:a=>console.warn(a),error:a=>console.error(a),count:a=>console.count(a)};this.query={Match:/[ .#=:]/,"#":(a,b)=>a.getElementById(b.slice(1)),".":(a,b,c)=>{a=a.getElementsByClassName(b.slice(1));return c?Array.from(a):a[0]},tag:(a,b,c)=>{a=a.getElementsByTagName(b);return c?Array.from(a):a[0]},"default":(a,b,c)=>c?a.querySelectorAll(b):a.querySelector(b)};this.StorageMatch={Type:a=>Object.prototype.toString.call(a).slice(8,-1),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)}}$$(a,{all:b=!1,root:c=document}={}){const d=this.query.Match.test(a)?this.query.Match.test(a.slice(1))?"default":a[0]:"tag";return this.query[d](c,a,b)}DomParse(a){return this.Parser.parseFromString(a,"text/html")}NameFilter(a){return a.replace(/[\/\?<>\\:\*\|":]/g,"")}GetFill(a){return Math.max(2,`${a}`.length)}ExtensionName(a){try{return a.match(/\.([^.]+)$/)[1].toLowerCase()||"png"}catch{return"png"}}Mantissa(a,b,c="0",d=null){return d?`${++a}.${this.ExtensionName(d)}`.padStart(b,c):`${++a}`.padStart(b,c)}WorkerCreation(a){a=new Blob([a],{type:"application/javascript"});return new Worker(URL.createObjectURL(a))}sleep(a){return new Promise(b=>setTimeout(b,a))}async AddStyle(a,b="New-Style"){let c=document.getElementById(b);c||(c=document.createElement("style"),c.id=b,document.head.appendChild(c));c.textContent+=a}async AddScript(a,b="New-Script"){a=document.getElementById(b);a||(a=document.createElement("script"),a.id=b,document.head.appendChild(a))}async AddListener(a,b,c,d={}){this.ListenerRecord[a]?.[b]||(a.addEventListener(b,c,d),this.ListenerRecord[a]||(this.ListenerRecord[a]={}),this.ListenerRecord[a][b]=c)}async RemovListener(a,b){const c=this.ListenerRecord[a]?.[b];c&&(a.removeEventListener(b,c),delete this.ListenerRecord[a][b])}async Listen(a,b,c,d={},e=null){try{a.addEventListener(b,c,d),e&&e(!0)}catch{e&&e(!1)}}async Observer(a,b,{mark:c=!1,throttle:d=0,subtree:e=!0,childList:f=!0,characterData:g=!1}={},m=null){if(c){if(this.Mark[c])return;this.Mark[c]=!0}c={subtree:e,childList:f,characterData:g};d=new MutationObserver(this.Throttle(()=>{b()},d));d.observe(a,c);m&&m({ob:d,op:c})}async WaitElem(a,b,{raf:c=!1,all:d=!1,timeout:e=8,throttle:f=50,subtree:g=!0,childList:m=!0,characterData:q=!1,timeoutResult:r=!1,object:p=document.body}={}){let k,h,n;if(c){let l;const t=()=>{h=d?document.querySelectorAll(a):document.querySelector(a);(n=d?0<h.length:h)?(cancelAnimationFrame(l),clearTimeout(k),b(h)):l=requestAnimationFrame(t)};l=requestAnimationFrame(t);k=setTimeout(()=>{cancelAnimationFrame(l);r&&b(h)},1E3*e)}else{const l=new MutationObserver(this.Throttle(()=>{h=d?document.querySelectorAll(a):document.querySelector(a);if(n=d?0<h.length:h)l.disconnect(),clearTimeout(k),b(h)},f));l.observe(p,{subtree:g,childList:m,characterData:q});k=setTimeout(()=>{l.disconnect();r&&b(h)},1E3*e)}}async WaitMap(a,b,{raf:c=!1,timeout:d=8,throttle:e=50,subtree:f=!0,childList:g=!0,characterData:m=!1,timeoutResult:q=!1,object:r=document.body}={}){let p,k;if(c){let h;const n=()=>{k=a.map(l=>document.querySelector(l));k.every(l=>null!==l&&"undefined"!==typeof l)?(cancelAnimationFrame(h),clearTimeout(p),b(k)):h=requestAnimationFrame(n)};h=requestAnimationFrame(n);p=setTimeout(()=>{cancelAnimationFrame(h);q&&b(k)},1E3*d)}else{const h=new MutationObserver(this.Throttle(()=>{k=a.map(n=>document.querySelector(n));k.every(n=>null!==n&&"undefined"!==typeof n)&&(h.disconnect(),clearTimeout(p),b(k))},e));h.observe(r,{subtree:f,childList:g,characterData:m});p=setTimeout(()=>{h.disconnect();q&&b(k)},1E3*d)}}async log(a=null,b="print",c="log"){c="string"===typeof c&&this.print[c]?c:c="log";if(null==a)this.print[c](b);else console.groupCollapsed(a),this.print[c](b),console.groupEnd()}Runtime(a=null,b="Elapsed Time:",{style:c="\u001b[1m\u001b[36m%s\u001b[0m",log:d=!0}={}){return a?d?console.log(c,`${b} ${(Date.now()-a)/1E3}s`):Date.now()-a:Date.now()}Debounce(a,b=500){let c=null;return(...d)=>{clearTimeout(c);c=setTimeout(function(){a(...d)},b)}}Throttle(a,b){let c=0;return(...d)=>{const e=Date.now();e-c>=b&&(c=e,a(...d))}}ScopeParsing(a,b){const c=new Set,d=new Set,e=b.length;for(const g of a.split(/\s*,\s*/))if(/^\d+$/.test(g))c.add(Number(g)-1);else if(/^\d+(?:~\d+|-\d+)$/.test(g)){var f=g.split(/-|~/);a=Number(f[0]-1);f=Number(f[1]-1);const m=a<=f;for(;m?a<=f:a>=f;m?a++:a--)c.add(a)}else/(!|-)+\d+/.test(g)&&d.add(Number(g.slice(1)-1));return[...c].filter(g=>!d.has(g)&&g<e&&0<=g).sort((g,m)=>g-m).map(g=>b[g])}Storage(a,{type:b=sessionStorage,value:c=null,error:d}={}){let e;return null!=c?this.StorageMatch[this.StorageMatch.Type(c)](b,a,c):(e=b.getItem(a),void 0!=e?this.StorageMatch[this.StorageMatch.Type(JSON.parse(e))](b,e):d)}store(a,b=null,c=null){const d={verify:e=>void 0!==e?e:!1,de:e=>GM_deleteValue(e),al:()=>d.verify(GM_listValues()),s:(e,f)=>GM_setValue(e,f),g:(e,f)=>d.verify(GM_getValue(e,f)),sj:(e,f)=>GM_setValue(e,JSON.stringify(f,null,4)),gj:(e,f)=>JSON.parse(d.verify(GM_getValue(e,f)))};return d[a](b,c)}async storeListen(a,b){a.forEach(c=>{this.Mark[c]||(this.Mark[c]=!0,GM_addValueChangeListener(c,function(d,e,f,g){b({key:d,ov:e,nv:f,far:g})}))})}async Menu(a,b="Menu",c=1){for(const [d,e]of Object.entries(a))GM_registerMenuCommand(d,()=>{e.func()},{title:e.desc,id:`${b}-${c++}`,autoClose:e.close,accessKey:e.hotkey})}};