From 964af829041c555a29c80619cb4ebc3013d084b9 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 26 Apr 2025 09:16:46 +0200 Subject: [PATCH] update to typesafe all-settings provider --- src/helpers/settingsHelper.ts | 9 +++++++-- src/type/settingTypes.ts | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/helpers/settingsHelper.ts b/src/helpers/settingsHelper.ts index c8e27f6..554e0d9 100644 --- a/src/helpers/settingsHelper.ts +++ b/src/helpers/settingsHelper.ts @@ -31,8 +31,13 @@ export default abstract class SettingHelper { email: new EmailConverter(), }; - public static getAllSettings() { - return cloneDeep(this.settings); + public static getAllSettings(): { [key in SettingString]: SettingValueMapping[key] } { + return Object.keys(settingsType).reduce((acc, key) => { + const typedKey = key as SettingString; + //@ts-expect-error + acc[typedKey] = this.getSetting(typedKey); + return acc; + }, {} as { [key in SettingString]: SettingValueMapping[key] }); } /** diff --git a/src/type/settingTypes.ts b/src/type/settingTypes.ts index 568bc64..ff6e728 100644 --- a/src/type/settingTypes.ts +++ b/src/type/settingTypes.ts @@ -50,7 +50,7 @@ export type SettingValueMapping = { // Typsicherer Zugriff auf Settings export type SettingDefinition = { type: T; - default?: string | number | boolean; + default?: string | number | boolean | ms.StringValue; optional?: boolean; min?: T extends "number" | `number/crypt` | `number/rand` ? number : never; };