You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
8.3 KiB

(function(){"use strict";const x=n=>typeof n.prev=="function"?n.prev:x(n.prev);var $=(n,e,t)=>{const r=e[n][t];return r===void 0?e[t]:x(r)};class M{constructor(e,t,r){this.data={id:e,func:(o,...i)=>r(o,typeof this.prev=="function"?this.prev:this.prev.data.func,i)},this.prev=t}}var L=(n,e,t,r)=>{const o=n[r][e];if(o.data.id===t){if(typeof o.prev=="function"){n[e]=o.prev,delete n[r][e];return}n[r][e]=o.prev,n[e]=o.prev.data.func;return}const i=a=>a&&typeof a.prev=="object"?(a.data=a.prev.data,a.prev=a.prev.prev,i(a.prev)):!0,d=a=>{if(!a)throw new Error("could not find unpatch");return typeof a.prev=="object"&&a.data.id!==t?d(a.prev):i(a)};let s=Object.assign({},o);d(s),n[r][e]=s,n[e]=s.data.func},k=function(n,e,t,r,o){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!o:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?o.call(n,t):o?o.value=t:e.set(n,t),t},u=function(n,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!r:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(n):r?r.value:e.get(n)},P,l,m,R;class U{constructor(e="simian"){P.add(this),l.set(this,void 0),m.set(this,void 0),k(this,l,Symbol(e),"f"),k(this,m,new Set,"f"),this.after=u(this,P,"m",R).call(this,"AFTER"),this.before=u(this,P,"m",R).call(this,"BEFORE"),this.instead=u(this,P,"m",R).call(this,"INSTEAD")}cleanupAll(){for(const e of u(this,m,"f")){for(const t in e[u(this,l,"f")]){const r=$(u(this,l,"f"),e,t);e[t]=r,e[u(this,l,"f")][t]=void 0}e[u(this,l,"f")]=void 0,delete e[u(this,l,"f")]}u(this,m,"f").clear()}}l=new WeakMap,m=new WeakMap,P=new WeakSet,R=function(e){return(t,r,o)=>{const i=r[t];if(typeof i!="function")throw new Error(`${t} is not a function on ${r}`);const d=Symbol();r[u(this,l,"f")]===void 0&&(r[u(this,l,"f")]={});let s;switch(e){case"AFTER":s=(w,S,_)=>{let y=S.apply(w,_);const b=o.apply(w,[_,y]);return typeof b!="undefined"&&(y=b),y};break;case"BEFORE":s=(w,S,_)=>{var y;let b=_;const I=(y=o.apply(w,[_]))!==null&&y!==void 0?y:_;return Array.isArray(I)&&(b=I),S.apply(w,b)};break;case"INSTEAD":s=(w,S,_)=>o.apply(w,[_,S.bind(w)]);break}let a=r[u(this,l,"f")][t];return a===void 0?a=new M(d,i,s):a=new M(d,a,s),r[u(this,l,"f")][t]=a,r[t]=function(){return a.data.func(this,...arguments)},Object.assign(r[t],i),u(this,m,"f").add(r),()=>L(r,t,d,u(this,l,"f"))}};function W(){let n={};return window.webpackChunkdiscord_app.push([[Math.random().toString(36)],{},e=>{n=e}]),n.c}function G(n,e){let t=[];for(const r in e){const o=e[r].exports;o&&(o.default&&o.__esModule&&n(o.default)?t.push(o.default):n(o)&&t.push(o))}return t}let p={modules:W(),filter:G,find:n=>p.filter(n,p.modules)[0],findAll:n=>p.filter(n,p.modules),findByProps:(...n)=>p.find(e=>n.every(t=>e[t]!==void 0)),findByPropsAll:(...n)=>p.findAll(e=>n.every(t=>e[t]!==void 0))};function z(){var n=!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent);if(!n||!indexedDB.databases)return Promise.resolve();var e;return new Promise(function(t){var r=function(){return indexedDB.databases().finally(t)};e=setInterval(r,100),r()}).finally(function(){return clearInterval(e)})}function c(n){return new Promise((e,t)=>{n.oncomplete=n.onsuccess=()=>e(n.result),n.onabort=n.onerror=()=>t(n.error)})}function A(n,e){const t=z().then(()=>{const r=indexedDB.open(n);return r.onupgradeneeded=()=>r.result.createObjectStore(e),c(r)});return(r,o)=>t.then(i=>o(i.transaction(e,r).objectStore(e)))}let O;function f(){return O||(O=A("keyval-store","keyval")),O}function h(n,e=f()){return e("readonly",t=>c(t.get(n)))}function E(n,e,t=f()){return t("readwrite",r=>(r.put(e,n),c(r.transaction)))}function H(n,e=f()){return e("readwrite",t=>(n.forEach(r=>t.put(r[1],r[0])),c(t.transaction)))}function Y(n,e=f()){return e("readonly",t=>Promise.all(n.map(r=>c(t.get(r)))))}function K(n,e,t=f()){return t("readwrite",r=>new Promise((o,i)=>{r.get(n).onsuccess=function(){try{r.put(e(this.result),n),o(c(r.transaction))}catch(d){i(d)}}}))}function J(n,e=f()){return e("readwrite",t=>(t.delete(n),c(t.transaction)))}function Q(n,e=f()){return e("readwrite",t=>(n.forEach(r=>t.delete(r)),c(t.transaction)))}function V(n=f()){return n("readwrite",e=>(e.clear(),c(e.transaction)))}function T(n,e){return n("readonly",t=>(t.openCursor().onsuccess=function(){!this.result||(e(this.result),this.result.continue())},c(t.transaction)))}function X(n=f()){const e=[];return T(n,t=>e.push(t.key)).then(()=>e)}function Z(n=f()){const e=[];return T(n,t=>e.push(t.value)).then(()=>e)}function q(n=f()){const e=[];return T(n,t=>e.push([t.key,t.value])).then(()=>e)}var N=Object.freeze({__proto__:null,clear:V,createStore:A,del:J,delMany:Q,entries:q,get:h,getMany:Y,keys:X,promisifyRequest:c,set:E,setMany:H,update:K,values:Z});const j={React:p.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createElement"),ReactDOM:p.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","hydrate"),idb_keyval:N};function ee(n){n.demon.__commands={},n.demon.patcher.after("sendMessage",n.demon.webpack.findByProps("sendMessage"),(e,t)=>{let r;for(const o of Reflect.ownKeys(n.demon.__commands)){let i=n.demon.__commands[o];if(e[1].content.split(" ")[0]===">"+i.name){r=i.callback(e);break}}return r!==void 0&&(e[1].content=r),e})}function ne(n){let e=Symbol(n.name);return window.demon.__commands[e]=n,()=>{delete window.demon.__commands[e]}}var B={add:ne,init:ee};const C=`
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@700&display=swap');
font-family: 'IBM Plex Mono', monospace;
`,te=`
${C}
color: #1d1131;
background-color: #aa8dd8;
font-weight: 600;
font-size: 0.9em;
padding: 0px 5px 1px 5px;
border-radius: 5px;
`,re=`
${C}
color: #E2EECE;
font-weight: 500;
font-size: 0.9em;
`;function v(n,e=!1){return function(t,r){let o=["Demoncord",...r,t],i=[],d="";e&&o.splice(0,1);for(let s=0;s<o.length;s++)s===o.length-1?(d+="%c"+o[s],i.push(re)):(d+="%c"+o[s]+"%c ",i.push(te,""));console[n](d,...i)}}const oe=v("log"),ie=v("warn"),ae=v("error"),se=v("trace");var g={log:oe,warn:ie,error:ae,trace:se,group:(n,e,t)=>{v("group")(n,e);for(const r of t)v(r.length===3?r[2]:"log",!0)(r[0],r[1]);console.groupEnd()}};async function ue(n){let e=await h("demoncord");e===void 0&&(await E("demoncord",{plugin:{}}),e=await h("demoncord")),n.demon.__plugins={};for(let t in e.plugin)t=e.plugin[t],t.enabled&&F(t.metadata.name);return!0}async function de(n,e){const t={metadata:e,iife:n,enabled:!1},r=await h("demoncord");return r.plugin[e.name]=t,await E("demoncord",r),!0}async function le(n){const e=await h("demoncord");return e.plugin[n]===void 0?(g.error("Cannot remove non-existant plugin!",["Plugins"]),!1):(e.plugin[n]=void 0,delete e.plugin[n],await E("demoncord",e),!0)}async function F(n){const e=await h("demoncord");if(e.plugin[n]===void 0)return g.error("Cannot start non-existant plugin!",["Plugins"]),!1;{g.log(`Starting ${n}...`,["Plugins"]);const t=e.plugin[n],o=(0,eval)(t.iife).onStart;let i={};return o(i),g.log(`Started ${n}!`,["Plugins"]),window.demon.__plugins[n]={status:1,ctx:i},!0}}async function ce(n){const e=await h("demoncord");if(e.plugin[n]===void 0)return g.error("Cannot stop non-existant or non-running plugin!",["Plugins"]),!1;{g.log(`Stopping ${n}...`,["Plugins"]);const t=e.plugin[n];return(0,eval)(t.iife).onStop(window.demon.__plugins[n].ctx),g.log(`Stopped ${n}!`,["Plugins"]),!0}}async function fe(n){const e=await h("demoncord");return e.plugin[n]===void 0?(g.error("Cannot toggle non-existant plugin!",["Plugins"]),!1):(e.plugin[n].enabled=!e.plugin[n].enabled,await E("demoncord",e),!0)}var D={init:ue,addPlugin:de,delPlugin:le,startPlugin:F,stopPlugin:ce,togglePlugin:fe};async function pe(n){const e=new U;n.demon={patcher:{monkeyPatch:function(t,r,o){let[i,d,s]=[()=>{},()=>{},()=>{}];return o.before!==void 0&&(i=e.before(t,r,o.before)),o.instead!==void 0&&(i=e.instead(t,r,o.instead)),o.after!==void 0&&(i=e.after(t,r,o.after)),()=>{i(),d(),s()}},before:e.before,instead:e.instead,after:e.after},webpack:p,common:j,commands:{add:B.add},__DO_NOT_USE_OR_YOU_WILL_BE_FIRED_UNTO_THE_DEPTHS_OF_HELL:{plugins:D},logger:g},B.init(n),D.init(n)}window.demon&&delete window.demon,pe(window)})();