diff --git a/backend/src/configValidator.ts b/backend/src/configValidator.ts index b5543dc4..311d18e7 100644 --- a/backend/src/configValidator.ts +++ b/backend/src/configValidator.ts @@ -36,7 +36,7 @@ export async function validateGuildConfig(config: any): Promise { const plugin = pluginNameToPlugin.get(pluginName)!; try { const mergedOptions = configUtils.mergeConfig(plugin.defaultOptions || {}, pluginOptions); - await plugin.configPreprocessor?.(mergedOptions as unknown as PluginOptions, true); + await plugin.configParser?.(mergedOptions as unknown as PluginOptions, true); } catch (err) { if (err instanceof ConfigValidationError || err instanceof StrictValidationError) { return `${pluginName}: ${err.message}`; diff --git a/backend/src/pluginUtils.ts b/backend/src/pluginUtils.ts index 175367c1..e654f630 100644 --- a/backend/src/pluginUtils.ts +++ b/backend/src/pluginUtils.ts @@ -91,10 +91,7 @@ export function strictValidationErrorToConfigValidationError(err: StrictValidati ); } -export function getPluginConfigPreprocessor( - blueprint: ZeppelinPlugin, - customPreprocessor?: ZeppelinPlugin["configPreprocessor"], -) { +export function getPluginConfigParser(blueprint: ZeppelinPlugin, customParser?: ZeppelinPlugin["configParser"]) { return async (options: PluginOptions, strict?: boolean) => { // 1. Validate the basic structure of plugin config const basicOptionsValidation = validate(BasicPluginStructureType, options); @@ -146,8 +143,8 @@ export function getPluginConfigPreprocessor( } // 3. Run custom preprocessor, if any - if (customPreprocessor) { - options = await customPreprocessor(options); + if (customParser) { + options = await customParser(options); } // 4. Merge with default options and validate/decode the entire config diff --git a/backend/src/plugins/Automod/AutomodPlugin.ts b/backend/src/plugins/Automod/AutomodPlugin.ts index a99f3288..a1a5eb48 100644 --- a/backend/src/plugins/Automod/AutomodPlugin.ts +++ b/backend/src/plugins/Automod/AutomodPlugin.ts @@ -1,5 +1,5 @@ import { configUtils, CooldownManager } from "knub"; -import { ConfigPreprocessorFn } from "knub/dist/config/configTypes"; +import { ConfigParserFn } from "knub/dist/config/configTypes"; import { GuildAntiraidLevels } from "../../data/GuildAntiraidLevels"; import { GuildArchives } from "../../data/GuildArchives"; import { GuildLogs } from "../../data/GuildLogs"; @@ -64,7 +64,8 @@ const defaultOptions = { /** * Config preprocessor to set default values for triggers and perform extra validation */ -const configPreprocessor: ConfigPreprocessorFn = (options) => { +// TODO: Fix `any` typing +const configParser: ConfigParserFn = (options: any) => { if (options.config?.rules) { // Loop through each rule for (const [name, rule] of Object.entries(options.config.rules)) { @@ -199,7 +200,7 @@ export const AutomodPlugin = zeppelinGuildPlugin()({ configSchema: ConfigSchema, defaultOptions, - configPreprocessor, + configParser, customOverrideCriteriaFunctions: { antiraid_level: (pluginData, matchParams, value) => { diff --git a/backend/src/plugins/Counters/CountersPlugin.ts b/backend/src/plugins/Counters/CountersPlugin.ts index 82e7f50d..100869c9 100644 --- a/backend/src/plugins/Counters/CountersPlugin.ts +++ b/backend/src/plugins/Counters/CountersPlugin.ts @@ -1,6 +1,6 @@ import { EventEmitter } from "events"; import { PluginOptions } from "knub"; -import { ConfigPreprocessorFn } from "knub/dist/config/configTypes"; +import { ConfigParserFn } from "knub/dist/config/configTypes"; import { buildCounterConditionString, CounterTrigger, @@ -55,7 +55,8 @@ const defaultOptions: PluginOptions = { ], }; -const configPreprocessor: ConfigPreprocessorFn = (options) => { +// TODO: Fix `any` typing +const configParser: ConfigParserFn = (options: any) => { for (const [counterName, counter] of Object.entries(options.config?.counters || {})) { counter.name = counterName; counter.per_user = counter.per_user ?? false; @@ -117,7 +118,7 @@ export const CountersPlugin = zeppelinGuildPlugin()({ configSchema: ConfigSchema, defaultOptions, - configPreprocessor, + configParser, public: { counterExists: mapToPublicFn(counterExists), diff --git a/backend/src/plugins/RoleButtons/RoleButtonsPlugin.ts b/backend/src/plugins/RoleButtons/RoleButtonsPlugin.ts index dd28c9fc..1f68943e 100644 --- a/backend/src/plugins/RoleButtons/RoleButtonsPlugin.ts +++ b/backend/src/plugins/RoleButtons/RoleButtonsPlugin.ts @@ -32,7 +32,7 @@ export const RoleButtonsPlugin = zeppelinGuildPlugin()({ ], }, - configPreprocessor(options) { + configParser(options) { // Auto-fill "name" property for buttons based on the object key const buttonsArray = Array.isArray(options.config?.buttons) ? options.config.buttons : []; const seenMessages = new Set(); diff --git a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts index b70a6c79..54ab0f82 100644 --- a/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts +++ b/backend/src/plugins/SelfGrantableRoles/SelfGrantableRolesPlugin.ts @@ -70,7 +70,7 @@ export const SelfGrantableRolesPlugin = zeppelinGuildPlugin { + configParser: (options) => { const config = options.config; for (const [key, entry] of Object.entries(config.entries)) { // Apply default entry config diff --git a/backend/src/plugins/Starboard/StarboardPlugin.ts b/backend/src/plugins/Starboard/StarboardPlugin.ts index f8ef1489..5aebace0 100644 --- a/backend/src/plugins/Starboard/StarboardPlugin.ts +++ b/backend/src/plugins/Starboard/StarboardPlugin.ts @@ -124,7 +124,7 @@ export const StarboardPlugin = zeppelinGuildPlugin()({ `), }, - configPreprocessor(options) { + configParser(options) { if (options.config?.boards) { for (const [name, opts] of Object.entries(options.config.boards)) { options.config.boards[name] = Object.assign({}, defaultStarboardOpts, options.config.boards[name]); diff --git a/backend/src/plugins/Tags/TagsPlugin.ts b/backend/src/plugins/Tags/TagsPlugin.ts index 416cc972..d4272eae 100644 --- a/backend/src/plugins/Tags/TagsPlugin.ts +++ b/backend/src/plugins/Tags/TagsPlugin.ts @@ -96,7 +96,7 @@ export const TagsPlugin = zeppelinGuildPlugin()({ findTagByName: mapToPublicFn(findTagByName), }, - configPreprocessor(options) { + configParser(options) { if (options.config.delete_with_command && options.config.auto_delete_command) { throw new StrictValidationError([ `Cannot have both (global) delete_with_command and global_delete_invoke enabled`, diff --git a/backend/src/plugins/ZeppelinPluginBlueprint.ts b/backend/src/plugins/ZeppelinPluginBlueprint.ts index a5f8fec9..6f87d37e 100644 --- a/backend/src/plugins/ZeppelinPluginBlueprint.ts +++ b/backend/src/plugins/ZeppelinPluginBlueprint.ts @@ -10,7 +10,7 @@ import { } from "knub"; import { PluginOptions } from "knub/dist/config/configTypes"; import { Awaitable } from "knub/dist/utils"; -import { getPluginConfigPreprocessor } from "../pluginUtils"; +import { getPluginConfigParser } from "../pluginUtils"; import { TMarkdown } from "../types"; /** @@ -30,7 +30,7 @@ export interface ZeppelinGuildPluginBlueprint, strict?: boolean, ) => Awaitable>; @@ -38,14 +38,14 @@ export interface ZeppelinGuildPluginBlueprint( blueprint: TBlueprint, -): TBlueprint & { configPreprocessor: ZeppelinGuildPluginBlueprint["configPreprocessor"] }; +): TBlueprint & { configParser: ZeppelinGuildPluginBlueprint["configParser"] }; export function zeppelinGuildPlugin(): < TBlueprint extends ZeppelinGuildPluginBlueprint>, >( blueprint: TBlueprint, ) => TBlueprint & { - configPreprocessor: ZeppelinGuildPluginBlueprint>["configPreprocessor"]; + configParser: ZeppelinGuildPluginBlueprint>["configParser"]; }; export function zeppelinGuildPlugin(...args) { @@ -53,7 +53,7 @@ export function zeppelinGuildPlugin(...args) { const blueprint = guildPlugin( ...(args as Parameters), ) as unknown as ZeppelinGuildPluginBlueprint; - blueprint.configPreprocessor = getPluginConfigPreprocessor(blueprint, blueprint.configPreprocessor); + blueprint.configParser = getPluginConfigParser(blueprint, blueprint.configParser); return blueprint; } else { return zeppelinGuildPlugin as (name, blueprint) => ZeppelinGuildPluginBlueprint; @@ -67,19 +67,19 @@ export function zeppelinGuildPlugin(...args) { export interface ZeppelinGlobalPluginBlueprint extends GlobalPluginBlueprint> { configSchema: t.TypeC; - configPreprocessor?: (options: PluginOptions, strict?: boolean) => Awaitable>; + configParser?: (options: PluginOptions, strict?: boolean) => Awaitable>; } export function zeppelinGlobalPlugin( blueprint: TBlueprint, -): TBlueprint & { configPreprocessor: ZeppelinGlobalPluginBlueprint["configPreprocessor"] }; +): TBlueprint & { configParser: ZeppelinGlobalPluginBlueprint["configParser"] }; export function zeppelinGlobalPlugin(): < TBlueprint extends ZeppelinGlobalPluginBlueprint, >( blueprint: TBlueprint, ) => TBlueprint & { - configPreprocessor: ZeppelinGlobalPluginBlueprint["configPreprocessor"]; + configParser: ZeppelinGlobalPluginBlueprint["configParser"]; }; export function zeppelinGlobalPlugin(...args) { @@ -88,7 +88,7 @@ export function zeppelinGlobalPlugin(...args) { ...(args as Parameters), ) as unknown as ZeppelinGlobalPluginBlueprint; // @ts-ignore FIXME: Check the types here - blueprint.configPreprocessor = getPluginConfigPreprocessor(blueprint, blueprint.configPreprocessor); + blueprint.configParser = getPluginConfigParser(blueprint, blueprint.configParser); return blueprint; } else { return zeppelinGlobalPlugin as (name, blueprint) => ZeppelinGlobalPluginBlueprint;