Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta
// @require https://update.greasyfork.org/scripts/487608/1357519/SyntaxSimplified.js
// ==UserScript==
// @name SyntaxSimplified
// @version 2024/04/10
// @author Canaan HS
// @description Library for simplifying code logic and syntax
// @namespace https://greasyfork.org/users/989635
// @match *://*/*
// ==/UserScript==
class Syntax{constructor(){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,c,b)=>a.getElementById(c.slice(1)),".":(a,c,b)=>{a=a.getElementsByClassName(c.slice(1));return b?Array.from(a):a[0]},tag:(a,c,b)=>{a=a.getElementsByTagName(c);return b?Array.from(a):a[0]},"default":(a,c,b)=>b?a.querySelectorAll(c):a.querySelector(c)};this.formula={Type:a=>Object.prototype.toString.call(a).slice(8,-1),String:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Number:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):Number(c),Array:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):(c=JSON.parse(c),Array.isArray(c[0])?new Map(c):c),Object:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Boolean:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):JSON.parse(c),Date:(a,c,b)=>null!=b?(a.setItem(c,JSON.stringify(b)),!0):new Date(c),Map:(a,c,b)=>(a.setItem(c,JSON.stringify([...b])),!0)}}$$(a,{all:c=!1,source:b=document}={}){const e=this.query.Match.test(a)?this.query.Match.test(a.slice(1))?"default":a[0]:"tag";return this.query[e](b,a,c)}DomParse(a){return this.Parser.parseFromString(a,"text/html")}GetFill(a){return Math.max(2,`${a}`.length)}Mantissa(a,c,b="0"){return`${++a}`.padStart(c,b)}IllegalCharacters(a){return a.replace(/[\/\?<>\\:\*\|":]/g,"")}ExtensionName(a){try{return a.match(/\.([^.]+)$/)[1].toLowerCase()||"png"}catch{return"png"}}WorkerCreation(a){a=new Blob([a],{type:"application/javascript"});return new Worker(URL.createObjectURL(a))}sleep(a){return new Promise(c=>setTimeout(c,a))}async AddStyle(a,c="New-Style"){let b=document.getElementById(c);b||(b=document.createElement("style"),b.id=c,document.head.appendChild(b));b.appendChild(document.createTextNode(a))}async AddScript(a,c="New-Script"){let b=document.getElementById(c);b||(b=document.createElement("script"),b.id=c,document.head.appendChild(b));b.appendChild(document.createTextNode(a))}async AddListener(a,c,b,e={}){this.ListenerRecord[a]?.[c]||(a.addEventListener(c,b,e),this.ListenerRecord[a]||(this.ListenerRecord[a]={}),this.ListenerRecord[a][c]=b)}async RemovListener(a,c){const b=this.ListenerRecord[a]?.[c];b&&(a.removeEventListener(c,b),delete this.ListenerRecord[a][c])}async Listen(a,c,b,e={},d=null){try{a.addEventListener(c,b,e),d&&d(!0)}catch{d&&d(!1)}}async WaitElem(a,c,b,e,{object:d=document.body,throttle:g=0}={}){let f,h,k;const l=new MutationObserver(this.Throttle(()=>{h=c?document.querySelectorAll(a):document.querySelector(a);if(k=c?0<h.length&&Array.from(h).every(m=>null!==m&&"undefined"!==typeof m):h)l.disconnect(),clearTimeout(f),e(h)},g));l.observe(d,{childList:!0,subtree:!0});f=setTimeout(()=>{l.disconnect();e(h)},1E3*b)}async WaitMap(a,c,b,{object:e=document.body,throttle:d=0}={}){let g,f;const h=new MutationObserver(this.Throttle(()=>{f=a.map(k=>document.querySelector(k));f.every(k=>null!==k&&"undefined"!==typeof k)&&(h.disconnect(),clearTimeout(g),b(f))},d));h.observe(e,{childList:!0,subtree:!0});g=setTimeout(()=>{h.disconnect();b(f)},1E3*c)}async log(a=null,c="print",b="log"){b="string"===typeof b&&this.print[b]?b:b="log";if(null==a)this.print[b](c);else console.groupCollapsed(a),this.print[b](c),console.groupEnd()}Runtime(a=null,c="Elapsed Time:",b=!0){return a?b?console.log("\u001b[1m\u001b[36m%s\u001b[0m",`${c} ${(Date.now()-a)/1E3}s`):Date.now()-a:Date.now()}Debounce(a,c=500){let b=null;return(...e)=>{clearTimeout(b);b=setTimeout(function(){a(...e)},c)}}Throttle(a,c){let b=0;return(...e)=>{const d=Date.now();d-b>=c&&(b=d,a(...e))}}ScopeParsing(a,c){const b=new Set,e=new Set,d=c.length;for(const f of a.split(/\s*,\s*/))if(/^\d+$/.test(f))b.add(Number(f)-1);else if(/^\d+(?:~\d+|-\d+)$/.test(f)){var g=f.split(/-|~/);a=Number(g[0]-1);g=Number(g[1]-1);const h=a<=g;for(;h?a<=g:a>=g;h?a++:a--)b.add(a)}else/(!|-)+\d+/.test(f)&&e.add(Number(f.slice(1)-1));return[...b].filter(f=>!e.has(f)&&f<d&&0<=f).sort((f,h)=>f-h).map(f=>c[f])}Storage(a,{storage:c=sessionStorage,value:b=null,error:e}={}){let d;return null!=b?this.formula[this.formula.Type(b)](c,a,b):!!(d=c.getItem(a))&&this.formula[this.formula.Type(JSON.parse(d))](c,d)||e}store(a,c=null,b=null){const e=d=>void 0!==d?d:null;return{del:d=>GM_deleteValue(d),all:()=>e(GM_listValues()),set:(d,g)=>GM_setValue(d,g),get:(d,g)=>e(GM_getValue(d,g)),sjs:(d,g)=>GM_setValue(d,JSON.stringify(g,null,4)),gjs:(d,g)=>JSON.parse(e(GM_getValue(d,g)))}[a](c,b)}async Menu(a,c="Menu",b=1){for(const [e,d]of Object.entries(a))GM_registerMenuCommand(e,()=>{d.func()},{title:d.desc,id:`${c}-${b++}`,autoClose:d.close,accessKey:d.hotkey})}};