diff --git a/src/plugins/GlobalZeppelinPlugin.ts b/src/plugins/GlobalZeppelinPlugin.ts index 397e8c3f..b1dba184 100644 --- a/src/plugins/GlobalZeppelinPlugin.ts +++ b/src/plugins/GlobalZeppelinPlugin.ts @@ -7,7 +7,7 @@ import { PathReporter } from "io-ts/lib/PathReporter"; import { deepKeyIntersect, isSnowflake, isUnicodeEmoji, resolveMember, resolveUser, UnknownUser } from "../utils"; import { Member, User } from "eris"; import { performance } from "perf_hooks"; -import { decodeAndValidateStrict, StrictValidationErrors } from "../validatorUtils"; +import { decodeAndValidateStrict, StrictValidationError } from "../validatorUtils"; import { mergeConfig } from "knub/dist/configUtils"; const SLOW_RESOLVE_THRESHOLD = 1500; @@ -51,8 +51,8 @@ export class GlobalZeppelinPlugin extend : (options.overrides || []).concat(defaultOptions.overrides || []); const decodedConfig = this.configSchema ? decodeAndValidateStrict(this.configSchema, mergedConfig) : mergedConfig; - if (decodedConfig instanceof StrictValidationErrors) { - throw new Error(decodedConfig.getErrors().join("\n")); + if (decodedConfig instanceof StrictValidationError) { + throw decodedConfig; } const decodedOverrides = []; @@ -61,8 +61,8 @@ export class GlobalZeppelinPlugin extend const decodedOverrideConfig = this.configSchema ? decodeAndValidateStrict(this.configSchema, overrideConfigMergedWithBaseConfig) : overrideConfigMergedWithBaseConfig; - if (decodedOverrideConfig instanceof StrictValidationErrors) { - throw new Error(decodedConfig.getErrors().join("\n")); + if (decodedOverrideConfig instanceof StrictValidationError) { + throw decodedOverrideConfig; } decodedOverrides.push({ ...override, config: deepKeyIntersect(decodedOverrideConfig, override.config) }); } @@ -91,7 +91,15 @@ export class GlobalZeppelinPlugin extend public static validateOptions(options: any): string[] | null { // Validate config values if (this.configSchema) { - this.mergeAndDecodeStaticOptions(options); + try { + this.mergeAndDecodeStaticOptions(options); + } catch (e) { + if (e instanceof StrictValidationError) { + return e.getErrors(); + } + + throw e; + } } // No errors, return null diff --git a/src/plugins/ZeppelinPlugin.ts b/src/plugins/ZeppelinPlugin.ts index c9c596e8..da252d9c 100644 --- a/src/plugins/ZeppelinPlugin.ts +++ b/src/plugins/ZeppelinPlugin.ts @@ -15,7 +15,7 @@ import { } from "../utils"; import { Member, User } from "eris"; import { performance } from "perf_hooks"; -import { decodeAndValidateStrict, StrictValidationErrors } from "../validatorUtils"; +import { decodeAndValidateStrict, StrictValidationError } from "../validatorUtils"; import { mergeConfig } from "knub/dist/configUtils"; const SLOW_RESOLVE_THRESHOLD = 1500; @@ -73,8 +73,8 @@ export class ZeppelinPlugin extends Plug : (options.overrides || []).concat(defaultOptions.overrides || []); const decodedConfig = this.configSchema ? decodeAndValidateStrict(this.configSchema, mergedConfig) : mergedConfig; - if (decodedConfig instanceof StrictValidationErrors) { - throw new Error(decodedConfig.getErrors().join("\n")); + if (decodedConfig instanceof StrictValidationError) { + throw decodedConfig; } const decodedOverrides = []; @@ -83,8 +83,8 @@ export class ZeppelinPlugin extends Plug const decodedOverrideConfig = this.configSchema ? decodeAndValidateStrict(this.configSchema, overrideConfigMergedWithBaseConfig) : overrideConfigMergedWithBaseConfig; - if (decodedOverrideConfig instanceof StrictValidationErrors) { - throw new Error(decodedConfig.getErrors().join("\n")); + if (decodedOverrideConfig instanceof StrictValidationError) { + throw decodedOverrideConfig; } decodedOverrides.push({ ...override, config: deepKeyIntersect(decodedOverrideConfig, override.config || {}) }); } @@ -114,7 +114,15 @@ export class ZeppelinPlugin extends Plug public static validateOptions(options: any): string[] | null { // Validate config values if (this.configSchema) { - this.mergeAndDecodeStaticOptions(options); + try { + this.mergeAndDecodeStaticOptions(options); + } catch (e) { + if (e instanceof StrictValidationError) { + return e.getErrors(); + } + + throw e; + } } // No errors, return null