Initial commit

Co-authored-by: Tymon <nomyTx@users.noreply.github.com>
pull/1/head
Drake 2 years ago
commit 2bf11c113a

1
.gitignore vendored

@ -0,0 +1 @@
node_modules

@ -0,0 +1,11 @@
Copyright 2022 Ruthenic
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

1
dist/build.js vendored

File diff suppressed because one or more lines are too long

@ -0,0 +1,24 @@
{
"name": "demoncord-rewrite",
"version": "0.0.1",
"description": "A client mod for sinners.",
"main": "src/index.js",
"scripts": {
"build": "rollup --config rollup.config.js",
"watch": "rollup --config rollup.config.js --watch"
},
"author": "Drake",
"license": "BSD-3-Clause",
"dependencies": {
"@rollup/plugin-alias": "^3.1.9",
"@rollup/plugin-node-resolve": "^13.3.0",
"@rollup/plugin-sucrase": "^4.0.4",
"idb-keyval": "^6.1.0",
"nests": "^2.3.1",
"rollup": "^2.73.0",
"rollup-plugin-swc": "^0.2.1",
"rollup-plugin-uglify": "^6.0.4",
"spitroast": "^1.4.2",
"uglify-js": "^3.15.5"
}
}

@ -0,0 +1,450 @@
lockfileVersion: 5.4
specifiers:
'@rollup/plugin-alias': ^3.1.9
'@rollup/plugin-node-resolve': ^13.3.0
'@rollup/plugin-sucrase': ^4.0.4
idb-keyval: ^6.1.0
nests: ^2.3.1
rollup: ^2.73.0
rollup-plugin-swc: ^0.2.1
rollup-plugin-uglify: ^6.0.4
spitroast: ^1.4.2
uglify-js: ^3.15.5
dependencies:
'@rollup/plugin-alias': 3.1.9_rollup@2.73.0
'@rollup/plugin-node-resolve': 13.3.0_rollup@2.73.0
'@rollup/plugin-sucrase': 4.0.4_rollup@2.73.0
idb-keyval: 6.1.0
nests: 2.3.1
rollup: 2.73.0
rollup-plugin-swc: 0.2.1_rollup@2.73.0
rollup-plugin-uglify: 6.0.4_rollup@2.73.0
spitroast: 1.4.2
uglify-js: 3.15.5
packages:
/@babel/code-frame/7.16.7:
resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.17.9
dev: false
/@babel/helper-validator-identifier/7.16.7:
resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/highlight/7.17.9:
resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.16.7
chalk: 2.4.2
js-tokens: 4.0.0
dev: false
/@rollup/plugin-alias/3.1.9_rollup@2.73.0:
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0
dependencies:
rollup: 2.73.0
slash: 3.0.0
dev: false
/@rollup/plugin-node-resolve/13.3.0_rollup@2.73.0:
resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==}
engines: {node: '>= 10.0.0'}
peerDependencies:
rollup: ^2.42.0
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.73.0
'@types/resolve': 1.17.1
deepmerge: 4.2.2
is-builtin-module: 3.1.0
is-module: 1.0.0
resolve: 1.22.0
rollup: 2.73.0
dev: false
/@rollup/plugin-sucrase/4.0.4_rollup@2.73.0:
resolution: {integrity: sha512-YH4J8yoJb5EVnLhAwWxYAQNh2SJOR+SdZ6XdgoKEv6Kxm33riYkM8MlMaggN87UoISP52qAFyZ5ey56wu6umGg==}
engines: {node: '>=12.0.0'}
peerDependencies:
rollup: ^2.53.1
dependencies:
'@rollup/pluginutils': 4.2.1
rollup: 2.73.0
sucrase: 3.23.0
dev: false
/@rollup/pluginutils/3.1.0_rollup@2.73.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.73.0
dev: false
/@rollup/pluginutils/4.2.1:
resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
engines: {node: '>= 8.0.0'}
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
dev: false
/@types/estree/0.0.39:
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
dev: false
/@types/node/17.0.33:
resolution: {integrity: sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==}
dev: false
/@types/resolve/1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies:
'@types/node': 17.0.33
dev: false
/ansi-styles/3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
dependencies:
color-convert: 1.9.3
dev: false
/any-promise/1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: false
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: false
/brace-expansion/1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
dev: false
/builtin-modules/3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
dev: false
/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: false
/color-convert/1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
dev: false
/color-name/1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
dev: false
/commander/4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
dev: false
/concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: false
/deepmerge/4.2.2:
resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
engines: {node: '>=0.10.0'}
dev: false
/escape-string-regexp/1.0.5:
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
engines: {node: '>=0.8.0'}
dev: false
/estree-walker/1.0.1:
resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
dev: false
/estree-walker/2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
dev: false
/fs.realpath/1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: false
/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: false
optional: true
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: false
/glob/7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: false
/has-flag/3.0.0:
resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
engines: {node: '>=4'}
dev: false
/has/1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.1
dev: false
/idb-keyval/6.1.0:
resolution: {integrity: sha512-u/qHZ75rlD3gH+Zah8dAJVJcGW/RfCnfNrFkElC5RpRCnpsCXXhqjVk+6MoVKJ3WhmNbRYdI6IIVP88e+5sxGw==}
dependencies:
safari-14-idb-fix: 3.0.0
dev: false
/inflight/1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
once: 1.4.0
wrappy: 1.0.2
dev: false
/inherits/2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: false
/is-builtin-module/3.1.0:
resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==}
engines: {node: '>=6'}
dependencies:
builtin-modules: 3.3.0
dev: false
/is-core-module/2.9.0:
resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
dependencies:
has: 1.0.3
dev: false
/is-module/1.0.0:
resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=}
dev: false
/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: false
/js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: false
/lines-and-columns/1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: false
/merge-stream/2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: false
/minimatch/3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
brace-expansion: 1.1.11
dev: false
/mz/2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
dev: false
/nests/2.3.1:
resolution: {integrity: sha512-mq9g10tzsaGbS/c5RUJVwiJVqo89JA/KIYPpBDQlKnyviJ7EDUaboIWsuWx0Abe49nys8MjnB6vK53KF1m6MUQ==}
peerDependencies:
react: '>=16.8'
solid-js: '>=1.0.0'
dev: false
/object-assign/4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: false
/once/1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: false
/path-is-absolute/1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
dev: false
/path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: false
/picomatch/2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: false
/pirates/4.0.5:
resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
engines: {node: '>= 6'}
dev: false
/resolve/1.22.0:
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
hasBin: true
dependencies:
is-core-module: 2.9.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
/rollup-plugin-swc/0.2.1_rollup@2.73.0:
resolution: {integrity: sha512-wWRYt9tC0aIBvRQHNnVtwJ6DRPDj9XYpOAcOyFB11sKSkR/R+NAmbrjBACCPNVmZcxg6joV29wXgb5mU1DI7eA==}
peerDependencies:
'@swc/core': '>=1.0'
rollup: '>=1.5.0'
dependencies:
'@rollup/pluginutils': 4.2.1
rollup: 2.73.0
dev: false
/rollup-plugin-uglify/6.0.4_rollup@2.73.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.73.0
serialize-javascript: 2.1.2
uglify-js: 3.15.5
dev: false
/rollup/2.73.0:
resolution: {integrity: sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: false
/safari-14-idb-fix/3.0.0:
resolution: {integrity: sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==}
dev: false
/serialize-javascript/2.1.2:
resolution: {integrity: sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==}
dev: false
/slash/3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
dev: false
/spitroast/1.4.2:
resolution: {integrity: sha512-iEBsKg3EXTQj2nikYIMtOE5YSqbI5CtRxVYI+Gh+9HeQxf4u86UWF5yC5eTVAoReZSogbD2M37JYG8TYGBnFTg==}
dev: false
/sucrase/3.23.0:
resolution: {integrity: sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ==}
engines: {node: '>=8'}
hasBin: true
dependencies:
commander: 4.1.1
glob: 7.1.6
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.5
ts-interface-checker: 0.1.13
dev: false
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
dev: false
/supports-color/6.1.0:
resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==}
engines: {node: '>=6'}
dependencies:
has-flag: 3.0.0
dev: false
/supports-preserve-symlinks-flag/1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: false
/thenify-all/1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
dev: false
/thenify/3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
dev: false
/ts-interface-checker/0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: false
/uglify-js/3.15.5:
resolution: {integrity: sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==}
engines: {node: '>=0.8.0'}
hasBin: true
dev: false
/wrappy/1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: false

@ -0,0 +1,22 @@
import pkjs from "./package.json"
import { defineConfig } from "rollup";
import { uglify } from "rollup-plugin-uglify"
import { nodeResolve } from '@rollup/plugin-node-resolve'
import sucrase from '@rollup/plugin-sucrase';
import alias from '@rollup/plugin-alias'
export default defineConfig({
input: pkjs.main,
output: {
file: "dist/build.js",
format: "iife"
},
plugins: [alias({
entries: [
{ find: "nests", replacement: "../../node_modules/nests/esm/index.js" }
]
}), nodeResolve(), sucrase({
exclude: ["node_modules/**"],
transforms: ["jsx"]
}), uglify()]
})

@ -0,0 +1,23 @@
import webpack from "./webpack"
import * as idb from "idb-keyval"
import * as nests from "nests"
const { findByProps } = webpack
const React = findByProps(
"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED",
"createElement"
)
export default {
React,
ReactDOM: findByProps(
"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED",
"hydrate"
),
dispatch: findByProps("dirtyDispatch").__proto__,
idb,
nests
}
export { idb, nests, React }

@ -0,0 +1,5 @@
//NOTE: this isn't even a wrapper around spitroast, it's more a convienence for importing patcher internally
import * as spitroast from "spitroast"
export * from "spitroast"
export default spitroast

@ -0,0 +1,83 @@
import { idb, nests } from "./common"
const nest = nests.make()
async function init() {
const extNest = demon.require("internal/nest")
if (!window.__demon) { // this *shouldn't* be required but if we magically run into a race condition it's better to be safe
window.__demon = {}
}
if (!(await idb.get("demon"))) {
await idb.set("demon", {
status: {
},
plugins: {
}
})
}
const currdemon = await idb.get("demon")
currdemon.status = {}
Object.keys(currdemon.plugins).forEach(key => {
const plug = currdemon.plugins[key]
const exports = (0, eval)(plug.initialize)
const ret = exports.onStart()
nest.store[plug.meta.name].ctx = ret
currdemon.status[plug.meta.name] = {
running: true
}
})
extNest.store.pluginsList = currdemon.plugins
await idb.set("demon", currdemon)
}
async function add(iife, meta) {
const currdemon = await idb.get("demon")
currdemon.plugins[meta.name] = {
initialize: iife,
meta: meta
}
extNest.store.pluginsList = currdemon.plugins
await idb.set("demon", currdemon)
}
async function del(name) {
const currdemon = await idb.get("demon")
if (!!currdemon.plugins[name])
if (currdemon.status[name].running) {
const ctx = nest.store[name].ctx;
(0, eval)(currdemon.plugins[name].initialize).onStop(ctx)
}
delete currdemon.status[name]
delete currdemon.plugins[name]
extNest.store.pluginsList = currdemon.plugins
await idb.set("demon", currdemon)
}
async function toggle(name) {
const currdemon = await idb.get("demon")
if (!!currdemon.plugins[name]) {
if (currdemon.status[name]?.running) {
console.log(currdemon.status[name].ctx)
const ctx = nest.store[name].ctx;
(0, eval)(currdemon.plugins[name].initialize).onStop(ctx)
currdemon.status[name].running = false
}
else {
const ret = (0, eval)(currdemon.plugins[name].initialize).onStart()
nest.store[name].ctx = ret
currdemon.status[name] = {
running: true
}
}
}
await idb.set("demon", currdemon)
}
export default {
init,
add,
del,
toggle
}

@ -0,0 +1,26 @@
import webpack from "../../webpack"
import { after } from "../../patcher"
import test from "./test.jsx"
const SettingsView = webpack.findByDisplayName("SettingsView")
function init() {
after("getPredicateSections", SettingsView.default.prototype, (args, sections) => {
sections.unshift(
{
section: "HEADER",
label: "Demoncord"
},
{
section: "demoncord",
label: "Plugins",
element: test
},
{
section: "DIVIDER"
})
return sections;
})
}
export default { init }

@ -0,0 +1,9 @@
import { React, nests } from "../../common"
export default () => {
const extNest = demon.require("internal/nest")
const pluginList = Object.keys(extNest.ghost.pluginsList)
return (
<h1>{pluginList}</h1>
)
}

@ -0,0 +1,5 @@
import logger from "./logger"
export default {
logger
}

@ -0,0 +1,84 @@
// hopefully separating out styles like this is more readable -- sink
const styleBase = `
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@700&display=swap');
font-family: 'IBM Plex Mono', monospace;
`;
const styleBg = `
${styleBase}
color: #1d1131;
background-color: #aa8dd8;
font-weight: 600;
font-size: 0.9em;
padding: 0px 5px 1px 5px;
border-radius: 5px;
`;
const styleTxt = `
${styleBase}
color: #E2EECE;
font-weight: 500;
font-size: 0.9em;
`;
//TODO: make setting to save logs in idb, for debugging and troubleshooting purposes
function makeLogger(print, noDemoncord = false) {
return function (locs, ...message) {
message = message.join("")
if (locs === undefined) {
locs = ["Default"]
makeLogger("warn")("Requested hierarchy has not been passed to logger function, defaulting to default string", ["Logger"])
}
if (typeof(locs) === "string") {
message = locs
locs = ["Default"]
}
let rawParts = ["Demoncord", ...locs, message];
let styleParts = [];
let content = "";
if (noDemoncord) rawParts.splice(0, 1);
for (let i = 0; i < rawParts.length; i++) {
if (i === rawParts.length - 1) {
// last item
content += "%c" + rawParts[i];
styleParts.push(styleTxt);
} else {
content += "%c" + rawParts[i] + "%c ";
styleParts.push(styleBg, "");
}
}
print(content, ...styleParts);
};
}
const log = makeLogger(console.log);
const warn = makeLogger(console.warn);
const error = makeLogger(console.error);
const trace = makeLogger(console.trace);
/*const group = (msg, loc, sublogs) => {
// start group
getLogger(console.group)(msg, loc);
for (const sublog of sublogs) {
const logFunc = getLogger(
sublog.length === 3 ? sublog[2] : "log",
true
);
logFunc(sublog[0], sublog[1]);
}
console.groupEnd();
};*/
export default {
log,
warn,
error,
trace,
makeLogger
};

@ -0,0 +1,58 @@
function getModules() {
let modules = {};
window.webpackChunkdiscord_app.push([
[Math.random().toString(36)],
{},
(e) => {
modules = e;
}
]);
return modules.c;
}
function filter(filter, moduleList) {
let modules = [];
for (const mod in moduleList) {
const module = moduleList[mod].exports;
if (module) {
if (module.default && module.__esModule && filter(module.default)) {
modules.push(module.default);
} else if (filter(module)) {
modules.push(module);
}
}
}
return modules;
}
let webpack = {
modules: getModules(),
filter: filter,
find: (filter) => webpack.filter(filter, webpack.modules)[0],
findAll: (filter) => webpack.filter(filter, webpack.modules),
findByProps: (...props) => {
return webpack.find((module) => {
return props.every((prop) => module[prop] !== undefined);
});
},
findByPropsAll: (...props) => {
return webpack.findAll((module) =>
props.every((prop) => module[prop] !== undefined)
);
},
findByDisplayName: (prop) => {
return webpack.find((m) => m?.default?.displayName === prop);
},
findByStrings: (...props) => {
return webpack.find((module) =>
props.every((prop) => module.toString().contains(prop)))
},
reloadModules: () => {
//NOTE: i have no idea why this could even feasibly need to be used, but i'm adding it anyways
webpack.modules = getModules();
}
};
export default webpack;

@ -0,0 +1 @@
//TODO: funny websocket control api

@ -0,0 +1,49 @@
import webpack from "./api/webpack.js"
import common from "./api/common.js"
import utils from "./api/utils/index.js"
import plugins from "./api/plugin.js"
import settings from "./api/ui/settings/settings.js"
if (!window.DiscordNative) {
throw new Error("Sorry, Demoncord cannot be used on web!")
}
const demon = {
modules: {
webpack,
common
},
utils,
plugins,
internal: {
nest: common.nests.make()
}
}
function isAllowed(mod) {
//TODO: actually implement permissions
return true
}
function require(mod) {
if (!isAllowed(mod)) {
throw new Error("Not allowed!"); //TODO: make this not irrepairably error out
}
const mods = mod.split("/");
let res = demon;
mods.forEach((m) => {
if (m in res) {
res = res[m];
} else {
throw new Error("Module does not exist!");
}
});
return res;
}
window.demon = {
require
}
plugins.init()
settings.init()
Loading…
Cancel
Save