not entirely sure what i did but PLUGINS WORK!!!!!

master
Drake 2 years ago
parent df460a6248
commit b36c591e61

2
dist/build.js vendored

File diff suppressed because one or more lines are too long

@ -13,10 +13,12 @@
"@rollup/plugin-commonjs": "^21.0.1",
"@rollup/plugin-node-resolve": "^13.1.3",
"demonpatcher": "^0.1.0",
"esbuild": "^0.14.11",
"flow-bin": "^0.169.0",
"flow-remove-types": "^2.169.0",
"idb-keyval": "^6.0.3",
"rollup": "^2.63.0",
"rollup-plugin-esbuild": "^4.8.2",
"rollup-plugin-flow": "^1.1.1",
"rollup-plugin-uglify": "^6.0.4"
}

@ -4,10 +4,12 @@ specifiers:
'@rollup/plugin-commonjs': ^21.0.1
'@rollup/plugin-node-resolve': ^13.1.3
demonpatcher: ^0.1.0
esbuild: ^0.14.11
flow-bin: ^0.169.0
flow-remove-types: ^2.169.0
idb-keyval: ^6.0.3
rollup: ^2.63.0
rollup-plugin-esbuild: ^4.8.2
rollup-plugin-flow: ^1.1.1
rollup-plugin-uglify: ^6.0.4
@ -15,10 +17,12 @@ devDependencies:
'@rollup/plugin-commonjs': 21.0.1_rollup@2.63.0
'@rollup/plugin-node-resolve': 13.1.3_rollup@2.63.0
demonpatcher: 0.1.0
esbuild: 0.14.11
flow-bin: 0.169.0
flow-remove-types: 2.169.0
idb-keyval: 6.0.3
rollup: 2.63.0
rollup-plugin-esbuild: 4.8.2_esbuild@0.14.11+rollup@2.63.0
rollup-plugin-flow: 1.1.1
rollup-plugin-uglify: 6.0.4_rollup@2.63.0
@ -88,6 +92,14 @@ packages:
rollup: 2.63.0
dev: true
/@rollup/pluginutils/4.1.2:
resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
engines: {node: '>= 8.0.0'}
dependencies:
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
/@types/estree/0.0.39:
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
dev: true
@ -161,6 +173,18 @@ packages:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: true
/debug/4.3.3:
resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: true
/deepmerge/4.2.2:
resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
engines: {node: '>=0.10.0'}
@ -170,6 +194,179 @@ packages:
resolution: {integrity: sha512-TSBeIo+CtGxdy8ACmdgaiM1txbaHbmkOiWXF/y7V5IR1DYkXY+0M4Npma381r0fGGlQ2nQa5zY7hXp5qw1wOGQ==}
dev: true
/es-module-lexer/0.9.3:
resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
dev: true
/esbuild-android-arm64/0.14.11:
resolution: {integrity: sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-64/0.14.11:
resolution: {integrity: sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-arm64/0.14.11:
resolution: {integrity: sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-64/0.14.11:
resolution: {integrity: sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-arm64/0.14.11:
resolution: {integrity: sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-32/0.14.11:
resolution: {integrity: sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-64/0.14.11:
resolution: {integrity: sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm/0.14.11:
resolution: {integrity: sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm64/0.14.11:
resolution: {integrity: sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-mips64le/0.14.11:
resolution: {integrity: sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-ppc64le/0.14.11:
resolution: {integrity: sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-s390x/0.14.11:
resolution: {integrity: sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-netbsd-64/0.14.11:
resolution: {integrity: sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-openbsd-64/0.14.11:
resolution: {integrity: sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-sunos-64/0.14.11:
resolution: {integrity: sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-32/0.14.11:
resolution: {integrity: sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-64/0.14.11:
resolution: {integrity: sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-arm64/0.14.11:
resolution: {integrity: sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild/0.14.11:
resolution: {integrity: sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==}
hasBin: true
requiresBuild: true
optionalDependencies:
esbuild-android-arm64: 0.14.11
esbuild-darwin-64: 0.14.11
esbuild-darwin-arm64: 0.14.11
esbuild-freebsd-64: 0.14.11
esbuild-freebsd-arm64: 0.14.11
esbuild-linux-32: 0.14.11
esbuild-linux-64: 0.14.11
esbuild-linux-arm: 0.14.11
esbuild-linux-arm64: 0.14.11
esbuild-linux-mips64le: 0.14.11
esbuild-linux-ppc64le: 0.14.11
esbuild-linux-s390x: 0.14.11
esbuild-netbsd-64: 0.14.11
esbuild-openbsd-64: 0.14.11
esbuild-sunos-64: 0.14.11
esbuild-windows-32: 0.14.11
esbuild-windows-64: 0.14.11
esbuild-windows-arm64: 0.14.11
dev: true
/escape-string-regexp/1.0.5:
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
engines: {node: '>=0.8.0'}
@ -296,10 +493,19 @@ packages:
supports-color: 6.1.0
dev: true
/joycon/3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
dev: true
/js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true
/jsonc-parser/3.0.0:
resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
dev: true
/magic-string/0.25.7:
resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
dependencies:
@ -316,6 +522,10 @@ packages:
brace-expansion: 1.1.11
dev: true
/ms/2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
/node-modules-regexp/1.0.0:
resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=}
engines: {node: '>=0.10.0'}
@ -357,6 +567,24 @@ packages:
supports-preserve-symlinks-flag: 1.0.0
dev: true
/rollup-plugin-esbuild/4.8.2_esbuild@0.14.11+rollup@2.63.0:
resolution: {integrity: sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ==}
engines: {node: '>=12'}
peerDependencies:
esbuild: '>=0.10.1'
rollup: ^1.20.0 || ^2.0.0
dependencies:
'@rollup/pluginutils': 4.1.2
debug: 4.3.3
es-module-lexer: 0.9.3
esbuild: 0.14.11
joycon: 3.1.1
jsonc-parser: 3.0.0
rollup: 2.63.0
transitivePeerDependencies:
- supports-color
dev: true
/rollup-plugin-flow/1.1.1:
resolution: {integrity: sha1-bOVo8d1Vlma3erdrS64lFAdSjbY=}
dependencies:

@ -1,11 +1,11 @@
import flow from 'rollup-plugin-flow'
import { uglify } from 'rollup-plugin-uglify'
import { minify } from 'rollup-plugin-esbuild'
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
export default {
input: 'src/index.js',
plugins: [flow(), commonjs(), nodeResolve(), uglify()],
plugins: [flow(), commonjs(), nodeResolve(), minify()],
output: {
file: 'dist/build.js',
format: "iife"

@ -1,14 +1,16 @@
// @flow
import { get, set } from 'idb-keyval';
async function addPlugin(onStart: (ctx: Object)=>void, onStop: (ctx: Object)=>void, metadata: Object): Promise<boolean> {
async function init(obj: Object): Promise<boolean> {
obj.demon.__plugins = {}
return true
}
async function addPlugin(iife: string, metadata: Object): Promise<boolean> {
// expected metadata: {name: "name", desc: "description", author: "author"}
const obj: Object = { // whether the plugin is started or stopped isn't going to be stored in the iDB, so it can be accessed more easily by all components
metadata: metadata,
code: {
start: onStart.toString(),
stop: onStop.toString() // the hackiest of the hacks
},
iife: iife,
enabled: false // should plugins be enabled by default? not sure
}
const globalSettings: Object = await get("demoncord");
@ -45,10 +47,10 @@ async function startPlugin(name: string): Promise<boolean> {
} else {
console.log(`[Demoncord] Starting ${name}...`)
const plug = globalSettings["plugin"][name]
const onStartStr: string = plug.code.start
const onStart = new Function('ctx', 'eeeeeeee', onStartStr)
const exports: Object = (0, eval)(plug.iife)
const onStart: (ctx: Object)=>void = exports.onStart
let ctx = {} // ctx is how you're going to store things that need to be accessed in both onStart and onStop. dumb, i know
onStart(ctx, {})
onStart(ctx)
console.log(`[Demoncord] Started ${name}!`)
window.demon.__plugins[name] = {status: 1, ctx: ctx}
return true
@ -63,15 +65,18 @@ async function stopPlugin(name: string): Promise<boolean> {
} else {
console.log(`[Demoncord] Stopping ${name}...`)
const plug = globalSettings["plugin"][name]
const onStartStr: string = plug.code.stop
const onStart = new Function('ctx', onStartStr)
onStart()
const exports: Object = (0, eval)(plug.iife)
const onStop: (ctx: Object)=>void = exports.onStop
onStop(window.demon.__plugins[name].ctx)
console.log(`[Demoncord] Stopped ${name}!`)
return true
}
}
export default {
init,
addPlugin,
delPlugin
delPlugin,
startPlugin,
stopPlugin
}

@ -18,6 +18,7 @@ async function init(obj: Object): Promise<void> {
}
}
commands.init(obj)
plugins.init(obj)
}
export default init;

Loading…
Cancel
Save