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.
demoncord-rewrite/dist/build.js

2 lines
17 KiB

!function(){"use strict";let getModules,modules;window.webpackChunkdiscord_app.push([[Math.random().toString(36)],{},a=>{modules=a}]);let webpack={modules:(getModules=()=>modules.c)(),getModules,filter:function(a,b,c=!1){let d=[],e;for(let f in b){let g=b[f].exports;if(g){if(g.default&&g.__esModule&&a(g.default)){if(c){e=g.default;break}d.push(g.default)}else if(a(g)){if(c){e=g;break}d.push(g)}}}return c?e:d},find:a=>webpack.filter(a,webpack.modules,!0),findAll:a=>webpack.filter(a,webpack.modules),findByProps:(...a)=>webpack.find(b=>a.every(a=>void 0!==b[a])),findByPropsAll:(...a)=>webpack.findAll(b=>a.every(a=>void 0!==b[a])),findByDisplayName:a=>webpack.find(b=>b?.displayName===a),findByDisplayNameAll:a=>webpack.findAll(b=>b?.displayName===a),findByStrings:(...a)=>webpack.find(b=>a.every(a=>b.toString().contains(a))),reloadModules(){webpack.modules=getModules()}};function promisifyRequest(a){return new Promise((b,c)=>{a.oncomplete=a.onsuccess=()=>b(a.result),a.onabort=a.onerror=()=>c(a.error)})}function createStore(a,b){let c=indexedDB.open(a);c.onupgradeneeded=()=>c.result.createObjectStore(b);let d=promisifyRequest(c);return(a,c)=>d.then(d=>c(d.transaction(b,a).objectStore(b)))}let defaultGetStoreFunc;function defaultGetStore(){return defaultGetStoreFunc||(defaultGetStoreFunc=createStore("keyval-store","keyval")),defaultGetStoreFunc}function get(a,b=defaultGetStore()){return b("readonly",b=>promisifyRequest(b.get(a)))}function set(a,b,c=defaultGetStore()){return c("readwrite",c=>(c.put(b,a),promisifyRequest(c.transaction)))}function eachCursor(a,b){return a.openCursor().onsuccess=function(){this.result&&(b(this.result),this.result.continue())},promisifyRequest(a.transaction)}var idb=Object.freeze({__proto__:null,clear:function(a=defaultGetStore()){return a("readwrite",a=>(a.clear(),promisifyRequest(a.transaction)))},createStore:createStore,del:function(a,b=defaultGetStore()){return b("readwrite",b=>(b.delete(a),promisifyRequest(b.transaction)))},delMany:function(a,b=defaultGetStore()){return b("readwrite",b=>(a.forEach(a=>b.delete(a)),promisifyRequest(b.transaction)))},entries:function(a=defaultGetStore()){return a("readonly",b=>{if(b.getAll&&b.getAllKeys)return Promise.all([promisifyRequest(b.getAllKeys()),promisifyRequest(b.getAll()),]).then(([a,b])=>a.map((a,c)=>[a,b[c]]));let c=[];return a("readonly",a=>eachCursor(a,a=>c.push([a.key,a.value])).then(()=>c))})},get:get,getMany:function(a,b=defaultGetStore()){return b("readonly",b=>Promise.all(a.map(a=>promisifyRequest(b.get(a)))))},keys:function(a=defaultGetStore()){return a("readonly",a=>{if(a.getAllKeys)return promisifyRequest(a.getAllKeys());let b=[];return eachCursor(a,a=>b.push(a.key)).then(()=>b)})},promisifyRequest:promisifyRequest,set:set,setMany:function(a,b=defaultGetStore()){return b("readwrite",b=>(a.forEach(a=>b.put(a[1],a[0])),promisifyRequest(b.transaction)))},update:function(a,b,c=defaultGetStore()){return c("readwrite",c=>new Promise((d,e)=>{c.get(a).onsuccess=function(){try{c.put(b(this.result),a),d(promisifyRequest(c.transaction))}catch(f){e(f)}}}))},values:function(a=defaultGetStore()){return a("readonly",a=>{if(a.getAll)return promisifyRequest(a.getAll());let b=[];return eachCursor(a,a=>b.push(a.value)).then(()=>b)})}}),Events=Object.freeze({GET:"GET",SET:"SET",DELETE:"DELETE",UPDATE:"UPDATE"});class EventEmitter{constructor(){for(let a of(this.listeners=Object.values(Events).reduce((a,b)=>(a[b]=new Set,a),{}),this.on=function(a,b){if(this.listeners[a].has(b))throw Error(`This listener on ${a} already exists.`);this.listeners[a].add(b)},this.once=function(a,b){let c=(a,d)=>{this.off(a,c),b(a,d)};this.on(a,c)},this.off=function(a,b){this.listeners[a].delete(b)},this.emit=function(a,b){for(let c of this.listeners[a])c(a,b)},Object.values(Events)))this[a.toLowerCase()]=b=>{this.emit(a,b)}}}function make(a={},{nestArrays:b=!0}={}){let c=new EventEmitter;function d(a,e,f){return new Proxy(a,{get(a,g){let h=[...f,g],i=a[g];return null!=i?(c.get({path:h,value:i}),!b&&Array.isArray(i))?i:"object"==typeof i?d(i,e,h):i:d(a[g]={},e,h)},set:(a,b,d)=>(a[b]=d,c.set({path:[...f,b],value:d}),!0),deleteProperty:(a,b)=>!!delete a[b]&&(c.delete({path:[...f,b]}),!0),has:(a,b)=>("object"!=typeof a[b]||0!==Object.keys(a[b]).length)&&b in a})}return Object.assign({store:d(a,a,[]),ghost:a},c)}var nests=Object.freeze({__proto__:null,Events:Events,make:make});let React$1=webpack.findByProps("createElement"),{useRef,useReducer,useEffect}=React$1;function useNest(a,b=!1,c=()=>!0){useRef(a.ghost);let[,d]=useReducer(a=>~a,0);return useEffect(()=>{function e(a,b){c(a,b)&&d()}return a.on(Events.UPDATE,e),b||(a.on(Events.SET,e),a.on(Events.DELETE,e)),()=>{a.off(Events.UPDATE,e),b||(a.off(Events.SET,e),a.off(Events.DELETE,e))}},[]),a.ghost}let{findByProps:findByProps$1}=webpack,React=findByProps$1("createElement");var common={React,ReactDOM:findByProps$1("hydrate"),idb,nests,lodash:findByProps$1("sample")};let styleBase="@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@700&display=swap'); font-family: 'IBM Plex Mono', monospace;",styleBg=`${styleBase} color: #1d1131; background-color: #aa8dd8; font-weight: 600; font-size: 0.9em; padding: 0px 5px 1px 5px; border-radius: 5px;`,styleTxt=`${styleBase} color: #E2EECE; font-weight: 500; font-size: 0.9em;`;function makeLogger(a,b=!1){return function(c,...d){let e=d.join("");void 0===c&&(c=["Default"],makeLogger(console.warn)(["Logger"],"Requested hierarchy has not been passed to logger function, defaulting to default string")),"string"==typeof c&&(e=c,c=["Default"]);let f=["Demoncord",...c,e],g=[],h="";b&&f.splice(0,1);for(let i=0;i<f.length;i++)i===f.length-1?(h+="%c"+f[i],g.push(styleTxt)):(h+="%c"+f[i]+"%c ",g.push(styleBg,""));a(h,...g)}}let log=makeLogger(console.log),warn=makeLogger(console.warn),error=makeLogger(console.error),trace=makeLogger(console.trace),debug=makeLogger((...a)=>{console.log(...a)});var logger={log,warn,error,trace,debug,makeLogger};function _extends(){return(_extends=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)Object.prototype.hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a}).apply(this,arguments)}let{findByProps,findByDisplayName,findByDisplayNameAll}=webpack,{openModal}=findByProps("openModalLazy"),Colors=findByProps("button","colorRed"),ConfirmModal=findByDisplayName("ConfirmModal"),Markdown=findByDisplayNameAll("Markdown")[1];function rawOpenConfirmModal(a,b,c,d){void 0===c&&(c={}),void 0===d&&(d="");let e;return openModal(f=>3!==f.transitionState&&React.createElement(ConfirmModal,_extends({transitionState:f.transitionState,onClose:()=>e=!1,onCancel(){e=!1,f.onClose()},onConfirm(){e=!0,f.onClose()}},b),React.createElement(a,_extends({},c),d))),e}function leak(a){window.beelzejuice||(window.beelzejuice=[]),window.beelzejuice.push(new Uint8Array(Math.floor(1048576*a)).fill(666))}let ctxNest=make(),pluginNest,pluginEval=iife=>(0,eval)(iife);async function savePlugin(a,{path:b,value:c}){logger.debug(["Plugins"],`Got ${a} event for plugin manager's nest with path ${b} and val ${c}`),await set("demon",{plugins:pluginNest.ghost.plugins})}async function init$1(){pluginNest=demon.summon("internal/nest"),await get("demon")||await set("demon",{plugins:{}}),pluginNest.store.plugins=(await get("demon")).plugins,pluginNest.on(Events.SET,savePlugin),pluginNest.on(Events.DELETE,savePlugin),Object.keys(pluginNest.ghost.plugins).forEach(a=>{if(pluginNest.ghost.plugins[a].enabled){let b=pluginEval(pluginNest.ghost.plugins[a].iife),c=b.onStart();ctxNest.store[a]=c,pluginNest.store.plugins[a].enabled=!0}else pluginNest.store.plugins[a].enabled=!1})}function add$1(a,b={}){let c=pluginEval(a);logger.debug(["Plugins"],`Adding ${c.meta.name}`),pluginNest.store.plugins[c.meta.name]={iife:a,enabled:!1,desc:c.meta.desc},Object.assign(pluginNest.store.plugins[c.meta.name],b)}function del(a){if(pluginNest.ghost.plugins[a])logger.debug(["Plugins"],`Removing ${a}`),delete pluginNest.store.plugins[a];else throw Error("Can't delete plugin that doesn't exist. lol")}function toggle(a){if(pluginNest.ghost.plugins[a]){if(pluginNest.ghost.plugins[a].enabled){logger.debug(["Plugins"],`Disabling ${a}`);let b=pluginEval(pluginNest.ghost.plugins[a].iife);b.onStop(ctxNest.store[a]),pluginNest.store.plugins[a].enabled=!1}else{logger.debug(["Plugins"],`Enabling ${a}`);let c=pluginEval(pluginNest.ghost.plugins[a].iife),d=c.onStart();ctxNest.store[a]=d,pluginNest.store.plugins[a].enabled=!0}}}var plugins$1={init:init$1,add:add$1,del,toggle};function wackyPatch(a,b,c){if("string"==typeof a){let d=a;a=b,b=d}let e=Symbol(),f=c.before,g=c.instead,h=c.after,i={apply(a,b,[d,e]){console.log(b),void 0!==f&&f.apply(d,[e]);let i=void 0!==c.instead?g?.apply(d,[e,a.bind(d),d]):a.apply(d,e);return void 0===h?i:h.apply(d,[e,i])}},j=new Proxy(a[b],i),k=a[b];a[b]=function(){return j(this,arguments)};let l=()=>{a[b]=k};return a[e]={name:b,orig:k,unpatch:l},l}function instead(a,b,c){return wackyPatch(a,b,{instead:c})}function after(a,b,c){return wackyPatch(a,b,{after:c})}let Header$1=webpack.findByProps("Sizes","Tags"),Card=webpack.findByDisplayName("Card");webpack.findByDisplayName("Flex");let FormText=webpack.findByDisplayName("FormText");webpack.findByProps("BorderColors","Colors"),webpack.findByDisplayName("FormDivider");let Switch=webpack.findByDisplayName("Switch");var PlugCard=a=>(useNest(a.nest),a.nest.ghost.plugins[a.name])?React.createElement(React.Fragment,null,React.createElement(Card,{type:"cardPrimary",className:"demon-settings-card-base",outline:!1,editable:!1},React.createElement(Header$1,{className:"demon-settings-card-header",size:Header$1.Sizes.SIZE_20},a.name),React.createElement("hr",{className:"demon-settings-card-divider"}),React.createElement(FormText,{className:"demon-settings-card-desc"},a.nest.ghost.plugins[a.name].desc),React.createElement("svg",{position:"top",async onClick(){del(a.name)},className:"demon-settings-card-delete",viewBox:"0 0 24 24"},React.createElement("path",{fill:"var(--text-muted)",d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12 1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"})),React.createElement(Switch,{className:"demon-settings-card-switch",checked:a.nest.ghost.plugins[a.name].enabled,async onChange(){toggle(a.name)}}))):null;let Header=webpack.findByProps("Sizes","Tags"),FormDivider=webpack.findByDisplayName("FormDivider"),Flex=webpack.findByDisplayName("Flex"),TextInput=webpack.findByDisplayName("TextInput");webpack.findByProps("BorderColors","Colors");var plugins=()=>{let a=demon.summon("internal/nest"),[b,c]=React.useState("");return useNest(a),React.createElement(React.Fragment,null,React.createElement(Header,{size:"demon-settings-header-size30"},"Plugins"),React.createElement(Flex,{basis:"auto",grow:1,shrink:1},React.createElement(TextInput,{className:"demon-settings-url",placeholder:"Raw link to plugin",type:"text",value:b,onChange:c,async onKeyDown(a){if("Enter"===a.key){let d=await (await fetch("https://cors.ruthenic.com/"+b)).text();add$1(d,{url:b}),c("")}}})),React.createElement(FormDivider,{className:"demon-settings-divider"}),Object.keys(a.ghost.plugins).map(b=>React.createElement(React.Fragment,null,React.createElement(PlugCard,{name:b,nest:a}))))};function injectCSS(a){let b=document.createElement("style");b.className="demon-element-css",b.innerHTML=a,document.head.appendChild(b)}var css={injectCSS,createClass:function(a,b){let c=Object.entries(b).map(([a,b])=>`${a}:${b}`).join(";");injectCSS(`.${a} {${c}}`)}};let SettingsView=webpack.findByDisplayName("SettingsView"),pluginSettings=[{section:"HEADER",label:"Demoncord"},{section:"demoncord",label:"Plugins",element:plugins},{section:"DIVIDER"}];var settings={init:function(){css.createClass("demon-settings-url",{"margin-top":"10px",width:"100%"}),css.createClass("demon-settings-divider",{"margin-top":"10px","margin-bottom":"10px",height:"1px"}),css.createClass("demon-settings-card-divider",{"margin-top":"5px","margin-bottom":"5px","margin-left":"10px","margin-right":"10px",height:"1px",border:"thin solid var(--background-modifier-accent)"}),css.createClass("demon-settings-card-base",{"margin-bottom":"10px"}),css.createClass("demon-settings-card-header",{"margin-left":"10px","margin-top":"10px"}),css.createClass("demon-settings-card-desc",{color:"var(--header-secondary)",display:"inline-block","font-size":"15px","line-height":"15px","margin-left":"10px","margin-top":"5px","margin-bottom":"10px"}),css.createClass("demon-settings-card-switch",{"margin-right":"10px","margin-top":"0px","margin-bottom":"10px",float:"right"}),css.createClass("demon-settings-card-delete",{"margin-right":"5px",float:"right",width:"24px",cursor:"pointer"}),css.createClass("demon-settings-header-size30",{"font-size":"30px","line-height":"34px"}),after(SettingsView.prototype,"getPredicateSections",(a,b)=>(b.unshift(...pluginSettings),b))},add:function(a,b){let c=pluginSettings.push({section:"demoncord-plugins",label:a,element:b})-1;return()=>{delete pluginSettings[c]}}};let sins={Lust(){},Pride(){},Greed(){},Wrath(){},Envy(){},Gluttony(){setInterval(()=>{leak(6.66)},500)},Sloth(){instead(webpack.findByProps("_actionHandlers").__proto__,"dispatch",(a,b)=>{let c;return setTimeout(()=>{c=b(...a)},500),c})}},rulers={Asmodeus:"Lust",Lucifer:"Pride",Mammon:"Greed",Satan:"Wrath",Leviathan:"Envy",Beelzebub:"Gluttony",Belphegor:"Sloth"};function ritualFail(a){if(Math.random()>.5)throw"Illegal Invocation of a sin!";a in sins?sins[a]||(()=>{throw"Illegal Invocation of a sin!"})():(console.log("WTF did you do"),console.log(a))}Object.assign(webpack,{findByRitual:function(a){let b=a.split(" ");if("I"!==b.shift()||"call"!==b.shift()||"upon"!==b.shift()||"the"!==b.shift()){ritualFail(Object.keys(sins)[Math.floor(Math.random()*Object.keys(sins).length)]);return}let c=b.shift();if(!("embodiment"===c||"king"===c&&"sin"===b.shift())||"of"!==b.shift())throw ritualFail(Object.keys(sins)[Math.floor(Math.random()*Object.keys(sins).length)]),"Illegal Invocation of a sin!";let d=b.shift()?.replace(",","")??"";if(!(d in sins))throw ritualFail(Object.keys(sins)[Math.floor(Math.random()*Object.keys(sins).length)]),"Illegal Invocation of a sin!";let e=b.shift()?.replace(",","")??"";if(!(e in rulers))throw ritualFail(d),"Illegal Invocation of a sin!";if(rulers[e]!==d)throw ritualFail(rulers[e]),"Illegal Invocation of a sin!";if("to"!==b.shift()||"summon"!==b.shift()||"the"!==b.shift())throw ritualFail(d),"Illegal Invocation of a sin!";let f=b.shift();if("imposing"!==f&&"foreboding"!==f)throw ritualFail(d),"Illegal Invocation of a sin!";let g=b.shift();if("object"!==g&&"element"!==g||"with"!==b.shift()||"a"!==b.shift())throw ritualFail(d),"Illegal Invocation of a sin!";let h=b.shift();if("display"!==h&&"property"!==h||"of"!==b.shift()||"name"!==b.shift())throw ritualFail(d),"Illegal Invocation of a sin!";let i=b.shift()?.slice(0,-1);switch(h){case"display":return webpack.findByDisplayName(i);case"property":return webpack.findByProps(i);default:ritualFail(d)}}});let demon$1={modules:{webpack,common},utils:{logger,modals:{rawOpenConfirmModal,openConfirmModal:function(a,b,c){let d;if(c.color)d=c.color;else switch(b){case"danger":d=Colors.colorRed;break;case"confirm":d=Colors.colorGreen;break;default:d=Colors.colorBrandNew}return rawOpenConfirmModal(Markdown,{header:c.header??"Default Modal Header",confirmText:c.confirmText??"Confirm",cancelText:c.cancelText??"Cancel",confirmButtonColor:d},{editable:!1},a??"Default modal content")}},memory:{leak}},plugins:plugins$1,internal:{nest:common.nests.make()},css,patcher:{instead,before:function(a,b,c){return wackyPatch(a,b,{before:c})},after,regexPatch:function regexPatch(match,replace,obj,prop){let oldFunc=obj[prop],injId=Symbol(),handler={apply(target,thisArg,[ctx,args]){let str=oldFunc.toString();str=str.replaceAll(match,replace),console.log("("+str+")");let newfunc=eval.apply(ctx,["("+str+")"]);return console.log(ctx),newfunc.apply(ctx,args)}},prox=new Proxy(obj[prop],handler),orig=obj[prop];obj[prop]=prox;let unpatch=()=>{obj[prop]=orig};return obj[injId]={name:prop,orig:orig,unpatch:unpatch},unpatch}},stolas:{monologue(){let a=webpack.findByProps("getCurrentUser").getCurrentUser().username;return _.sample([`${a}, you know that when I'm lonely, I become hungry. And when I become hungry, I want to choke on that red **** of yours... **** your ***** and lick all of your *****, before taking out your *****, and **** with more teeth until you're screaming ********** like a FUCKING baby--!`,`Ohhh, ${a}! I'm so excited! I cannot wait to feel your slimy c**k inside of my ****. To ***** the— ...**** use while you and I and **** and jelly sandwiches all night...!`])}},settings};window.demon={summon:function(a){let b=a.split("/"),c=demon$1;return b.forEach(a=>{if(a in c)c=c[a];else throw Error("Module does not exist!")}),c}},plugins$1.init(),settings.init()}()