From 3020fcc9bb1af9ae40e84c08c3b44ea66344b27b Mon Sep 17 00:00:00 2001 From: V Date: Wed, 21 Jun 2023 02:00:38 +0200 Subject: [skip ci] Improve typings for settings.withPrivateSettings --- src/api/Settings.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/api/Settings.ts') diff --git a/src/api/Settings.ts b/src/api/Settings.ts index 2f78668..709050f 100644 --- a/src/api/Settings.ts +++ b/src/api/Settings.ts @@ -254,8 +254,12 @@ export function migratePluginSettings(name: string, ...oldNames: string[]) { } } -export function definePluginSettings>(def: D, checks?: C) { - const definedSettings: DefinedSettings = { +export function definePluginSettings< + Def extends SettingsDefinition, + Checks extends SettingsChecks, + PrivateSettings extends object = {} +>(def: Def, checks?: Checks) { + const definedSettings: DefinedSettings = { get store() { if (!definedSettings.pluginName) throw new Error("Cannot access settings before plugin is initialized"); return Settings.plugins[definedSettings.pluginName] as any; @@ -264,11 +268,11 @@ export function definePluginSettings `plugins.${definedSettings.pluginName}.${name}`) as UseSettings[] ).plugins[definedSettings.pluginName] as any, def, - checks: checks ?? {}, + checks: checks ?? {} as any, pluginName: "", - withPrivateSettings() { - return this as DefinedSettings & { store: T; }; + withPrivateSettings() { + return this as DefinedSettings; } }; -- cgit