From 531bcb65d000051c77cc37747272e188fa76a1ea Mon Sep 17 00:00:00 2001 From: Ruthenic Date: Sat, 8 Jan 2022 21:26:48 -0500 Subject: [PATCH] honestly this changes so much stuff that i cant write a commit message, but a summary of the Changes - Added flow types - Move to rollup (mostly to support flow types) --- .flowconfig | 11 + build.mjs | 10 - dist/build.js | 2 +- package.json | 13 +- pnpm-lock.yaml | 478 +++++++++++++++++++++++++++++++------------- rollup.config.js | 13 ++ src/api/commands.js | 7 +- src/api/common.js | 3 +- src/api/webpack.js | 24 ++- src/init.js | 3 +- 10 files changed, 391 insertions(+), 173 deletions(-) create mode 100644 .flowconfig delete mode 100644 build.mjs create mode 100644 rollup.config.js diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..1fed445 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,11 @@ +[ignore] + +[include] + +[libs] + +[lints] + +[options] + +[strict] diff --git a/build.mjs b/build.mjs deleted file mode 100644 index fb24965..0000000 --- a/build.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import esbuild from 'esbuild' -import flow from 'esbuild-plugin-flow' - -esbuild.build({ - entryPoints: ['src/index.js'], - outfile: 'dist/build.js', - bundle: true, - minify: true, - plugins: [flow(/\.flow\.jsx\.js?$/)] -}) diff --git a/dist/build.js b/dist/build.js index 8f17084..69418b6 100644 --- a/dist/build.js +++ b/dist/build.js @@ -1 +1 @@ -(()=>{var B=Object.create;var c=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var N=e=>c(e,"__esModule",{value:!0});var T=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var D=(e,n,o,d)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of P(n))!M.call(e,t)&&(o||t!=="default")&&c(e,t,{get:()=>n[t],enumerable:!(d=I(n,t))||d.enumerable});return e},L=(e,n)=>D(N(c(e!=null?B(A(e)):{},"default",!n&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var h=T((z,w)=>{function u(e,n,o){let d=Symbol(),t=o.before,m=o.instead,l=o.after,S={apply:(y,K,[i,s])=>(t!==void 0&&t.apply(i,s),res=o.instead!==void 0?m.apply(i,[y.bind(i),...s]):y.apply(i,s),l===void 0?res:l.apply(i,[res].concat(s)))},b=new Proxy(n[e],S),p=n[e];n[e]=function(){return b(this,arguments)};let _=()=>{n[e]=p};return n[d]={name:e,orig:p,unpatch:_},_}function O(e,n,o){return u(e,n,{before:o})}function x(e,n,o){return u(e,n,{instead:o})}function U(e,n,o){return u(e,n,{after:o})}w.exports={monkeyPatch:u,before:O,instead:x,after:U}});var R=L(h());function C(){let e;return webpackChunkdiscord_app.push([[Math.random().toString(36)],{},n=>{e=n}]),e.c}function v(e,n){let o=[];for(let d in n){let t=n[d].exports;t&&(t.default&&t.__esModule&&e(t.default)?o.push(t.default):e(t)&&o.push(t))}return o}var r={modules:C(),filter:v,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 F={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=F;function W(e){e.demon.__commands={},demon.patcher.after("sendMessage",demon.webpack.findByProps("sendMessage"),(n,o)=>{let d;for(let t of Reflect.ownKeys(e.demon.__commands)){let m=e.demon.__commands[t];if(o[1].content.split(" ")[0]===">"+m.name){d=m.callback(o);break}}return d!==void 0&&(o[1].content=d),o})}function Y(e){let n=Symbol(e.name);return window.demon.__commands[n]=e,()=>{delete window.demon.__commands[n]}}var a={add:Y,init:W};async function g(e){e.demon={patcher:R.default,webpack:f,common:E,commands:{add:a.add}},a.init(e)}var k=g;window.demon&&delete window.demon;k(window);})(); +!function(){"use strict";function t(e,n,d){var o=Symbol();const r=d.before,a=d.instead,i=d.after,t=new Proxy(n[e],{apply:(e,n,[o,t])=>(void 0!==r&&r.apply(o,t),res=void 0!==d.instead?a.apply(o,[e.bind(o),...t]):e.apply(o,t),void 0===i?res:i.apply(o,[res].concat(t)))}),c=n[e];n[e]=function(){return t(this,arguments)};var s=()=>{n[e]=c};return n[o]={name:e,orig:c,unpatch:s},s}var n={monkeyPatch:t,before:function(e,n,o){return t(e,n,{before:o})},instead:function(e,n,o){return t(e,n,{instead:o})},after:function(e,n,o){return t(e,n,{after:o})}};let o={modules:function(){let n={};return window.webpackChunkdiscord_app.push([[Math.random().toString(36)],{},e=>{n=e}]),n.c}(),filter:function(e,n){let o=[];for(const d in n){var t=n[d].exports;t&&(t.default&&t.__esModule&&e(t.default)?o.push(t.default):e(t)&&o.push(t))}return o},find:e=>o.filter(e,o.modules)[0],findAll:e=>o.filter(e,o.modules),findByProps:(...e)=>o.find(n=>e.every(e=>void 0!==n[e])),findByPropsAll:(...e)=>o.findAll(n=>e.every(e=>void 0!==n[e]))};const d={React:o.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createElement"),ReactDOM:o.findByProps("__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","hydrate")};var r={add:function(e){let n=Symbol(e.name);return window.demon.__commands[n]=e,()=>{delete window.demon.__commands[n]}},init:function(d){d.demon.__commands={},d.demon.patcher.after("sendMessage",d.demon.webpack.findByProps("sendMessage"),(e,n)=>{let o;for(const t of Reflect.ownKeys(d.demon.__commands)){let e=d.demon.__commands[t];if(n[1].content.split(" ")[0]===">"+e.name){o=e.callback(n);break}}return void 0!==o&&(n[1].content=o),n})}};window.demon&&delete window.demon,async function(e){e.demon={patcher:n,webpack:o,common:d,commands:{add:r.add}},r.init(e)}(window)}(); diff --git a/package.json b/package.json index 82161ba..dea20dc 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,20 @@ "description": "a devilesque client mod 😈", "main": "src/index.js", "scripts": { - "build": "node build.mjs" + "build": "node build.mjs", + "flow": "flow" }, "author": "Drake", "license": "BSD-3-Clause", "devDependencies": { + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.1.3", "demonpatcher": "^0.0.5", - "esbuild": "^0.14.10", - "esbuild-plugin-flow": "github:dalcib/esbuild-plugin-flow", "flow-bin": "^0.169.0", - "idb-keyval": "^6.0.3" + "flow-remove-types": "^2.169.0", + "idb-keyval": "^6.0.3", + "rollup": "^2.63.0", + "rollup-plugin-flow": "^1.1.1", + "rollup-plugin-uglify": "^6.0.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16edaaf..ad8c7ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,192 +1,190 @@ lockfileVersion: 5.3 specifiers: + '@rollup/plugin-commonjs': ^21.0.1 + '@rollup/plugin-node-resolve': ^13.1.3 demonpatcher: ^0.0.5 - esbuild: ^0.14.10 - esbuild-plugin-flow: github:dalcib/esbuild-plugin-flow flow-bin: ^0.169.0 + flow-remove-types: ^2.169.0 idb-keyval: ^6.0.3 + rollup: ^2.63.0 + rollup-plugin-flow: ^1.1.1 + rollup-plugin-uglify: ^6.0.4 devDependencies: + '@rollup/plugin-commonjs': 21.0.1_rollup@2.63.0 + '@rollup/plugin-node-resolve': 13.1.3_rollup@2.63.0 demonpatcher: 0.0.5 - esbuild: 0.14.10 - esbuild-plugin-flow: github.com/dalcib/esbuild-plugin-flow/56171dea9250e707880a90582f73a82f69af64fb flow-bin: 0.169.0 + flow-remove-types: 2.169.0 idb-keyval: 6.0.3 + rollup: 2.63.0 + rollup-plugin-flow: 1.1.1 + rollup-plugin-uglify: 6.0.4_rollup@2.63.0 packages: - /demonpatcher/0.0.5: - resolution: {integrity: sha512-mpxUOSGl9A1UDyDfXi9PQJbLAMNRP00sUD67nMt7AntzPzYsHVF8hsfOBXlBkVU7CQTDjYPb6i592GXi6NJrpA==} + /@babel/code-frame/7.16.7: + resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.16.7 dev: true - /esbuild-android-arm64/0.14.10: - resolution: {integrity: sha512-vzkTafHKoiMX4uIN1kBnE/HXYLpNT95EgGanVk6DHGeYgDolU0NBxjO7yZpq4ZGFPOx8384eAdDrBYhO11TAlQ==} - cpu: [arm64] - os: [android] - requiresBuild: true + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + engines: {node: '>=6.9.0'} dev: true - optional: true - /esbuild-darwin-64/0.14.10: - resolution: {integrity: sha512-DJwzFVB95ZV7C3PQbf052WqaUuuMFXJeZJ0LKdnP1w+QOU0rlbKfX0tzuhoS//rOXUj1TFIwRuRsd0FX6skR7A==} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@babel/highlight/7.16.7: + resolution: {integrity: sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + chalk: 2.4.2 + js-tokens: 4.0.0 dev: true - optional: true - /esbuild-darwin-arm64/0.14.10: - resolution: {integrity: sha512-RNaaoZDg3nsqs5z56vYCjk/VJ76npf752W0rOaCl5lO5TsgV9zecfdYgt7dtUrIx8b7APhVaNYud+tGsDOVC9g==} - cpu: [arm64] - os: [darwin] - requiresBuild: true + /@rollup/plugin-commonjs/21.0.1_rollup@2.63.0: + resolution: {integrity: sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^2.38.3 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.63.0 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.0 + is-reference: 1.2.1 + magic-string: 0.25.7 + resolve: 1.21.0 + rollup: 2.63.0 dev: true - optional: true - /esbuild-freebsd-64/0.14.10: - resolution: {integrity: sha512-10B3AzW894u6bGZZhWiJOHw1uEHb4AFbUuBdyml1Ht0vIqd+KqWW+iY/yMwQAzILr2WJZqEhbOXRkJtY8aRqOw==} - cpu: [x64] - os: [freebsd] - requiresBuild: true + /@rollup/plugin-node-resolve/13.1.3_rollup@2.63.0: + resolution: {integrity: sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.63.0 + '@types/resolve': 1.17.1 + builtin-modules: 3.2.0 + deepmerge: 4.2.2 + is-module: 1.0.0 + resolve: 1.21.0 + rollup: 2.63.0 dev: true - optional: true - /esbuild-freebsd-arm64/0.14.10: - resolution: {integrity: sha512-mSQrKB7UaWvuryBTCo9leOfY2uEUSimAvcKIaUWbk5Hth9Sg+Try+qNA/NibPgs/vHkX0KFo/Rce6RPea+P15g==} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + /@rollup/pluginutils/3.1.0_rollup@2.63.0: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.63.0 dev: true - optional: true - /esbuild-linux-32/0.14.10: - resolution: {integrity: sha512-lktF09JgJLZ63ANYHIPdYe339PDuVn19Q/FcGKkXWf+jSPkn5xkYzAabboNGZNUgNqSJ/vY7VrOn6UrBbJjgYA==} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true - optional: true - /esbuild-linux-64/0.14.10: - resolution: {integrity: sha512-K+gCQz2oLIIBI8ZM77e9sYD5/DwEpeYCrOQ2SYXx+R4OU2CT9QjJDi4/OpE7ko4AcYMlMW7qrOCuLSgAlEj4Wg==} - cpu: [x64] - os: [linux] - requiresBuild: true + /@types/estree/0.0.50: + resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} dev: true - optional: true - /esbuild-linux-arm/0.14.10: - resolution: {integrity: sha512-BYa60dZ/KPmNKYxtHa3LSEdfKWHcm/RzP0MjB4AeBPhjS0D6/okhaBesZIY9kVIGDyeenKsJNOmnVt4+dhNnvQ==} - cpu: [arm] - os: [linux] - requiresBuild: true + /@types/node/17.0.8: + resolution: {integrity: sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==} dev: true - optional: true - /esbuild-linux-arm64/0.14.10: - resolution: {integrity: sha512-+qocQuQvcp5wo/V+OLXxqHPc+gxHttJEvbU/xrCGE03vIMqraL4wMua8JQx0SWEnJCWP+Nhf//v8OSwz1Xr5kA==} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 17.0.8 dev: true - optional: true - /esbuild-linux-mips64le/0.14.10: - resolution: {integrity: sha512-nmUd2xoBXpGo4NJCEWoaBj+n4EtDoLEvEYc8Z3aSJrY0Oa6s04czD1flmhd0I/d6QEU8b7GQ9U0g/rtBfhtxBg==} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 dev: true - optional: true - /esbuild-linux-ppc64le/0.14.10: - resolution: {integrity: sha512-vsOWZjm0rZix7HSmqwPph9arRVCyPtUpcURdayQDuIhMG2/UxJxpbdRaa//w4zYqcJzAWwuyH2PAlyy0ZNuxqQ==} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /babylon/6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true dev: true - optional: true - /esbuild-linux-s390x/0.14.10: - resolution: {integrity: sha512-knArKKZm0ypIYWOWyOT7+accVwbVV1LZnl2FWWy05u9Tyv5oqJ2F5+X2Vqe/gqd61enJXQWqoufXopvG3zULOg==} - cpu: [s390x] - os: [linux] - requiresBuild: true + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - optional: true - /esbuild-netbsd-64/0.14.10: - resolution: {integrity: sha512-6Gg8neVcLeyq0yt9bZpReb8ntZ8LBEjthxrcYWVrBElcltnDjIy1hrzsujt0+sC2rL+TlSsE9dzgyuvlDdPp2w==} - cpu: [x64] - os: [netbsd] - requiresBuild: true + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 dev: true - optional: true - /esbuild-openbsd-64/0.14.10: - resolution: {integrity: sha512-9rkHZzp10zI90CfKbFrwmQjqZaeDmyQ6s9/hvCwRkbOCHuto6RvMYH9ghQpcr5cUxD5OQIA+sHXi0zokRNXjcg==} - cpu: [x64] - os: [openbsd] - requiresBuild: true + /builtin-modules/3.2.0: + resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} + engines: {node: '>=6'} dev: true - optional: true - /esbuild-sunos-64/0.14.10: - resolution: {integrity: sha512-mEU+pqkhkhbwpJj5DiN3vL0GUFR/yrL3qj8ER1amIVyRibKbj02VM1QaIuk1sy5DRVIKiFXXgCaHvH3RNWCHIw==} - cpu: [x64] - os: [sunos] - requiresBuild: true + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 dev: true - optional: true - /esbuild-windows-32/0.14.10: - resolution: {integrity: sha512-Z5DieUL1N6s78dOSdL95KWf8Y89RtPGxIoMF+LEy8ChDsX+pZpz6uAVCn+YaWpqQXO+2TnrcbgBIoprq2Mco1g==} - cpu: [ia32] - os: [win32] - requiresBuild: true + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 dev: true - optional: true - /esbuild-windows-64/0.14.10: - resolution: {integrity: sha512-LE5Mm62y0Bilu7RDryBhHIX8rK3at5VwJ6IGM3BsASidCfOBTzqcs7Yy0/Vkq39VKeTmy9/66BAfVoZRNznoDw==} - cpu: [x64] - os: [win32] - requiresBuild: true + /color-name/1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} dev: true - optional: true - /esbuild-windows-arm64/0.14.10: - resolution: {integrity: sha512-OJOyxDtabvcUYTc+O4dR0JMzLBz6G9+gXIHA7Oc5d5Fv1xiYa0nUeo8+W5s2e6ZkPRdIwOseYoL70rZz80S5BA==} - cpu: [arm64] - os: [win32] - requiresBuild: true + /commondir/1.0.1: + resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} dev: true - optional: true - /esbuild/0.14.10: - resolution: {integrity: sha512-ibZb+NwFqBwHHJlpnFMtg4aNmVK+LUtYMFC9CuKs6lDCBEvCHpqCFZFEirpqt1jOugwKGx8gALNGvX56lQyfew==} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-arm64: 0.14.10 - esbuild-darwin-64: 0.14.10 - esbuild-darwin-arm64: 0.14.10 - esbuild-freebsd-64: 0.14.10 - esbuild-freebsd-arm64: 0.14.10 - esbuild-linux-32: 0.14.10 - esbuild-linux-64: 0.14.10 - esbuild-linux-arm: 0.14.10 - esbuild-linux-arm64: 0.14.10 - esbuild-linux-mips64le: 0.14.10 - esbuild-linux-ppc64le: 0.14.10 - esbuild-linux-s390x: 0.14.10 - esbuild-netbsd-64: 0.14.10 - esbuild-openbsd-64: 0.14.10 - esbuild-sunos-64: 0.14.10 - esbuild-windows-32: 0.14.10 - esbuild-windows-64: 0.14.10 - esbuild-windows-arm64: 0.14.10 + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /demonpatcher/0.0.5: + resolution: {integrity: sha512-mpxUOSGl9A1UDyDfXi9PQJbLAMNRP00sUD67nMt7AntzPzYsHVF8hsfOBXlBkVU7CQTDjYPb6i592GXi6NJrpA==} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + dev: true + + /estree-walker/0.2.1: + resolution: {integrity: sha1-va/oCVOD2EFNXcLs9MkXO225QS4=} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true /flow-bin/0.169.0: @@ -200,6 +198,14 @@ packages: engines: {node: '>=0.4.0'} dev: true + /flow-remove-types/1.2.3: + resolution: {integrity: sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q==} + hasBin: true + dependencies: + babylon: 6.18.0 + vlq: 0.2.3 + dev: true + /flow-remove-types/2.169.0: resolution: {integrity: sha512-j0ThzmK2gyCc77MokOTgUMB7k1t5QqvN9yoeQcUyWQ+lmIbQBiJlOVgw1IyrI//4OZ4s73qrfKA73pqozEirzQ==} engines: {node: '>=4'} @@ -210,17 +216,131 @@ packages: vlq: 0.2.3 dev: true + /fs.realpath/1.0.0: + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /glob/7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + /idb-keyval/6.0.3: resolution: {integrity: sha512-yh8V7CnE6EQMu9YDwQXhRxwZh4nv+8xm/HV4ZqK4IiYFJBWYGjJuykADJbSP+F/GDXUBwCSSNn/14IpGL81TuA==} dependencies: safari-14-idb-fix: 3.0.0 dev: true + /inflight/1.0.6: + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-core-module/2.8.1: + resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + dependencies: + has: 1.0.3 + dev: true + + /is-module/1.0.0: + resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} + dev: true + + /is-reference/1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 0.0.50 + dev: true + + /jest-worker/24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /magic-string/0.25.7: + resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /node-modules-regexp/1.0.0: resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} engines: {node: '>=0.10.0'} dev: true + /once/1.4.0: + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + dependencies: + wrappy: 1.0.2 + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + /pirates/3.0.2: resolution: {integrity: sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==} engines: {node: '>= 4'} @@ -228,18 +348,90 @@ packages: node-modules-regexp: 1.0.0 dev: true + /resolve/1.21.0: + resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==} + hasBin: true + dependencies: + is-core-module: 2.8.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /rollup-plugin-flow/1.1.1: + resolution: {integrity: sha1-bOVo8d1Vlma3erdrS64lFAdSjbY=} + dependencies: + flow-remove-types: 1.2.3 + rollup-pluginutils: 1.5.2 + dev: true + + /rollup-plugin-uglify/6.0.4_rollup@2.63.0: + resolution: {integrity: sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==} + peerDependencies: + rollup: '>=0.66.0 <2' + dependencies: + '@babel/code-frame': 7.16.7 + jest-worker: 24.9.0 + rollup: 2.63.0 + serialize-javascript: 2.1.2 + uglify-js: 3.14.5 + dev: true + + /rollup-pluginutils/1.5.2: + resolution: {integrity: sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=} + dependencies: + estree-walker: 0.2.1 + minimatch: 3.0.4 + dev: true + + /rollup/2.63.0: + resolution: {integrity: sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /safari-14-idb-fix/3.0.0: resolution: {integrity: sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==} dev: true + /serialize-javascript/2.1.2: + resolution: {integrity: sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /uglify-js/3.14.5: + resolution: {integrity: sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + /vlq/0.2.3: resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} dev: true - github.com/dalcib/esbuild-plugin-flow/56171dea9250e707880a90582f73a82f69af64fb: - resolution: {tarball: https://codeload.github.com/dalcib/esbuild-plugin-flow/tar.gz/56171dea9250e707880a90582f73a82f69af64fb} - name: esbuild-plugin-flow - version: 0.3.2 - dependencies: - flow-remove-types: 2.169.0 + /wrappy/1.0.2: + resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..b8eb42b --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,13 @@ +import flow from 'rollup-plugin-flow' +import { uglify } from 'rollup-plugin-uglify' +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; + +export default { + input: 'src/index.js', + plugins: [flow(), commonjs(), nodeResolve(), uglify()], + output: { + file: 'dist/build.js', + format: "iife" + } +} diff --git a/src/api/commands.js b/src/api/commands.js index da8a1b2..62f1939 100644 --- a/src/api/commands.js +++ b/src/api/commands.js @@ -1,6 +1,7 @@ -function init(obj) { +// @flow +function init(obj: Object) { obj.demon.__commands = {} - demon.patcher.after("sendMessage", demon.webpack.findByProps("sendMessage"), + obj.demon.patcher.after("sendMessage", obj.demon.webpack.findByProps("sendMessage"), (otherRes, args) => { let res; for (const key of Reflect.ownKeys(obj.demon.__commands)) { @@ -20,7 +21,7 @@ function init(obj) { // name: "name", // callback: (args)=>"Hello, world!" // } -function add(command) { +function add(command: {name: string, callback: (args: Array) => string}): ()=>void { let sym = Symbol(command.name); window.demon.__commands[sym] = command; return () => { diff --git a/src/api/common.js b/src/api/common.js index 0e6db86..2ca7ef0 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -1,6 +1,7 @@ +// @flow import webpack from "./webpack.js" -const common = { +const common: {React: Object, ReactDOM: Object} = { React: webpack.findByProps( "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED", "createElement" diff --git a/src/api/webpack.js b/src/api/webpack.js index d707950..83f8f3f 100644 --- a/src/api/webpack.js +++ b/src/api/webpack.js @@ -1,7 +1,11 @@ -function getModules() { - let modules; +// @flow +type ModuleType = {[symbol]: any}; +type FilterFunc = (module: ModuleType) => boolean - webpackChunkdiscord_app.push([ +function getModules(): any { + let modules: {c: mixed[]} = {}; + + window.webpackChunkdiscord_app.push([ [Math.random().toString(36)], {}, (e) => { @@ -12,8 +16,8 @@ function getModules() { return modules.c; } -function filter(filter, moduleList) { - let modules = []; +function filter(filter: FilterFunc, moduleList: any): Array { + let modules: Array = []; for (const mod in moduleList) { const module = moduleList[mod].exports; if (module) { @@ -24,17 +28,17 @@ function filter(filter, moduleList) { return modules; } -let webpack = { +let webpack: Object = { modules: getModules(), filter: filter, - find: (filter)=>webpack.filter(filter, webpack.modules)[0], - findAll: (filter)=>webpack.filter(filter, webpack.modules), - findByProps: (...props) => { + find: (filter: FilterFunc)=>webpack.filter(filter, webpack.modules)[0], + findAll: (filter: FilterFunc)=>webpack.filter(filter, webpack.modules), + findByProps: (...props: Array) => { return webpack.find((module) => { return props.every((prop)=>module[prop]!==undefined) }) }, - findByPropsAll: (...props) => { + findByPropsAll: (...props: Array) => { return webpack.findAll((module) => props.every((prop)=>module[prop]!==undefined) ) diff --git a/src/init.js b/src/init.js index e2326b3..8092b03 100644 --- a/src/init.js +++ b/src/init.js @@ -1,9 +1,10 @@ +// @flow import demonpatcher from "demonpatcher" import webpack from "./api/webpack.js" import common from "./api/common.js" import commands from "./api/commands.js" -async function init(obj) { +async function init(obj: Object): Promise { obj.demon = { patcher: demonpatcher, webpack,