Add Plugin.start, make Settings actually start/stop plugins

This commit is contained in:
Vendicated 2022-08-31 22:08:05 +02:00
parent bac8a648b6
commit f60ccb766f
No known key found for this signature in database
GPG key ID: EC781ADFB93EFFA3
10 changed files with 146 additions and 58 deletions

View file

@ -1,27 +1,33 @@
export default class Logger {
constructor(public name: string, public color: string) { }
private _log(level: "log" | "error" | "warn" | "info" | "debug", args: any[]) {
console[level](`%c ${this.name} `, `background: ${this.color}; color: black; font-weight: bold`, ...args);
private _log(level: "log" | "error" | "warn" | "info" | "debug", levelColor: string, args: any[]) {
console[level](
`%c Vencord %c %c ${this.name} `,
`background: ${levelColor}; color: black; font-weight: bold; border-radius: 5px;`,
"",
`background: ${this.color}; color: black; font-weight: bold; border-radius: 5px;`
, ...args
);
}
public log(...args: any[]) {
this._log("log", args);
this._log("log", "#a6d189", args);
}
public info(...args: any[]) {
this._log("info", args);
this._log("info", "#a6d189", args);
}
public error(...args: any[]) {
this._log("error", args);
this._log("error", "#e78284", args);
}
public warn(...args: any[]) {
this._log("warn", args);
this._log("warn", "#e5c890", args);
}
public debug(...args: any[]) {
this._log("debug", args);
this._log("debug", "#eebebe", args);
}
}

View file

@ -1,5 +1,5 @@
// exists to export default definePlugin({...})
export default function definePlugin(p: PluginDef) {
export default function definePlugin(p: PluginDef & Record<string, any>) {
return p;
}
@ -14,17 +14,18 @@ export interface Patch {
replacement: PatchReplacement | PatchReplacement[];
}
export interface Plugin {
export interface Plugin extends PluginDef {
patches?: Patch[];
started: boolean;
}
interface PluginDef {
name: string;
description: string;
author: string;
start?(): void;
patches?: Patch[];
stop?(): void;
patches?: Omit<Patch, "plugin">[];
dependencies?: string[],
required?: boolean;
}
// @ts-ignore lole
interface PluginDef extends Plugin {
patches?: Omit<Patch, "plugin">[];
}