diff --git a/.gitignore b/.gitignore index 3c3629e..d3f368b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ node_modules +.pnpm* +pnpm* +package-lock.json diff --git a/dist/build.js b/dist/build.js index 2c97d33..06bfd78 100644 --- a/dist/build.js +++ b/dist/build.js @@ -1 +1 @@ -(()=>{var I=Object.create;var a=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var P=e=>a(e,"__esModule",{value:!0});var T=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var g=(e,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of A(n))!N.call(e,t)&&(o||t!=="default")&&a(e,t,{get:()=>n[t],enumerable:!(i=k(n,t))||i.enumerable});return e},x=(e,n)=>g(P(a(e!=null?I(B(e)):{},"default",!n&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var y=T((Y,p)=>{function s(e,n,o){let i=Symbol(),t=o.before===void 0?(...d)=>d:o.before,R=o.instead===void 0?(d,...u)=>d(...u):o.instead,h=o.after===void 0?(d,u)=>u:o.after,S={apply:(d,u,[l,c])=>(t.apply(l,c),res=R(d.bind(l),c),h.apply(l,c.concat([res])))},b=new Proxy(n[e],S),m=n[e];n[e]=function(){return b(this,[arguments])};let _=()=>{n[e]=m};return n[i]={name:e,orig:m,unpatch:_},_}function D(e,n,o){return s(e,n,{before:o})}function L(e,n,o){return s(e,n,{instead:o})}function O(e,n,o){return s(e,n,{after:o})}p.exports={monkeyPatch:s,before:D,instead:L,after:O}});var v=x(y());function M(){let e;return webpackChunkdiscord_app.push([[Math.random().toString(36)],{},n=>{e=n}]),e.c}function U(e,n){let o=[];for(let i in n){let t=n[i].exports;t&&(t.default&&t.__esModule&&e(t.default)?o.push(t.default):e(t)&&o.push(t))}return o}var r={modules:M(),filter:U,find:e=>r.filter(e,r.modules)[0],findAll:e=>r.filter(e,r.modules),findByProps:(...e)=>r.find(n=>e.every(o=>n[o]!==void 0)),findByPropsAll:(...e)=>r.findAll(n=>e.every(o=>n[o]!==void 0))},f=r;var C={React:f.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createElement"),ReactDOM:f.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","hydrate")},E=C;async function F(e){e.demon={patcher:v,webpack:f,common:E}}var w=F;window.demon&&delete window.demon;w(window);})(); +(()=>{var k=Object.create;var a=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var T=e=>a(e,"__esModule",{value:!0});var g=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var x=(e,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of B(n))!P.call(e,t)&&(o||t!=="default")&&a(e,t,{get:()=>n[t],enumerable:!(i=A(n,t))||i.enumerable});return e},D=(e,n)=>x(T(a(e!=null?k(N(e)):{},"default",!n&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var y=g((Y,_)=>{function l(e,n,o){let i=Symbol(),t=o.before===void 0?(...d)=>d:o.before,h=o.instead===void 0?(d,...u)=>d(...u):o.instead,S=o.after===void 0?(d,u)=>u:o.after,b={apply:(d,u,[s,c])=>(t.apply(s,c),res=h(d.bind(s),c),S.apply(s,c.concat([res])))},I=new Proxy(n[e],b),m=n[e];n[e]=function(){return I(this,[arguments])};let p=()=>{n[e]=m};return n[i]={name:e,orig:m,unpatch:p},p}function L(e,n,o){return l(e,n,{before:o})}function O(e,n,o){return l(e,n,{instead:o})}function M(e,n,o){return l(e,n,{after:o})}_.exports={monkeyPatch:l,before:L,instead:O,after:M}});var w=D(y());function U(){let e;return webpackChunkdiscord_app.push([[Math.random().toString(36)],{},n=>{e=n}]),e.c}function C(e,n){let o=[];for(let i in n){let t=n[i].exports;t&&(t.default&&t.__esModule&&e(t.default)?o.push(t.default):e(t)&&o.push(t))}return o}var r={modules:U(),filter:C,find:e=>r.filter(e,r.modules)[0],findAll:e=>r.filter(e,r.modules),findByProps:(...e)=>r.find(n=>e.every(o=>n[o]!==void 0)),findByPropsAll:(...e)=>r.findAll(n=>e.every(o=>n[o]!==void 0))},f=r;var v={React:f.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createElement"),ReactDOM:f.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","hydrate")},E=v;async function F(e){e.demon={patcher:w.default,webpack:f,common:E}}var R=F;window.demon&&delete window.demon;R(window);})(); diff --git a/package.json b/package.json index ea1ce53..456dc1b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ }, "author": "Drake", "license": "BSD-3-Clause", - "dependencies": { - "esbuild": "^0.14.10" + "dependencies": {}, + "devDependencies": { + "esbuild": "^0.14.10", + "demonpatcher": "^0.0.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cf2c1a..1f3df45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,13 +1,21 @@ lockfileVersion: 5.3 specifiers: + demonpatcher: ^0.0.2 esbuild: ^0.14.10 dependencies: esbuild: 0.14.10 +devDependencies: + demonpatcher: 0.0.2 + packages: + /demonpatcher/0.0.2: + resolution: {integrity: sha512-hOrLXqUgRkpCv6dlbB3RkzEUlnggLnHr0x4rvNGppWzK1/g1bXFiVRHv3Mo/mK12AnDkdQiIG8RnzO5uWGfWnQ==} + dev: true + /esbuild-android-arm64/0.14.10: resolution: {integrity: sha512-vzkTafHKoiMX4uIN1kBnE/HXYLpNT95EgGanVk6DHGeYgDolU0NBxjO7yZpq4ZGFPOx8384eAdDrBYhO11TAlQ==} cpu: [arm64] diff --git a/src/api/patcher.js b/src/api/patcher.js deleted file mode 100644 index c110f86..0000000 --- a/src/api/patcher.js +++ /dev/null @@ -1,46 +0,0 @@ -function monkeyPatch(name, parentObj, patches) { - const injId = Symbol() - const before = (patches["before"] === undefined) ? (...args)=>args : patches["before"]; - const instead = (patches["instead"] === undefined) ? (res,...args)=>res(...args) : patches["instead"]; - const after = (patches["after"] === undefined) ? (args, res)=>res : patches["after"]; - const handler = { - apply: (target, thisArg, [ctx, args]) => { - before.apply(ctx, args); - res = instead(target.bind(ctx), args) - return after.apply(ctx, args.concat([res])); - } - }; - const prox = new Proxy(parentObj[name], handler); - const orig = parentObj[name]; - parentObj[name] = function() { - return prox(this, [arguments]); - }; - const unpatch = () => { - parentObj[name] = orig; - } - parentObj[injId] = { - name: name, - orig: orig, - unpatch: unpatch - }; - return unpatch; -} - -function before(name, parentObj, func) { - return monkeyPatch(name, parentObj, {before: func}) -} - -function instead(name, parentObj, func) { - return monkeyPatch(name, parentObj, {instead: func}) -} - -function after(name, parentObj, func) { - return monkeyPatch(name, parentObj, {after: func}) -} - -module.exports = { - monkeyPatch, - before, - instead, - after -} diff --git a/src/init.js b/src/init.js index 151a5b9..416a991 100644 --- a/src/init.js +++ b/src/init.js @@ -1,10 +1,10 @@ -import * as patcher from "./api/patcher.js" +import demonpatcher from "demonpatcher" import webpack from "./api/webpack.js" import common from "./api/common.js" async function init(obj) { obj.demon = { - patcher, + patcher: demonpatcher, webpack, common }