update to typesafe all-settings provider

This commit is contained in:
Julian Krauser 2025-04-26 09:16:46 +02:00
parent 99eafcb352
commit 964af82904
2 changed files with 8 additions and 3 deletions

View file

@ -31,8 +31,13 @@ export default abstract class SettingHelper {
email: new EmailConverter(), email: new EmailConverter(),
}; };
public static getAllSettings() { public static getAllSettings(): { [key in SettingString]: SettingValueMapping[key] } {
return cloneDeep(this.settings); 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] });
} }
/** /**

View file

@ -50,7 +50,7 @@ export type SettingValueMapping = {
// Typsicherer Zugriff auf Settings // Typsicherer Zugriff auf Settings
export type SettingDefinition<T extends SettingType | SettingTypeAtom[]> = { export type SettingDefinition<T extends SettingType | SettingTypeAtom[]> = {
type: T; type: T;
default?: string | number | boolean; default?: string | number | boolean | ms.StringValue;
optional?: boolean; optional?: boolean;
min?: T extends "number" | `number/crypt` | `number/rand` ? number : never; min?: T extends "number" | `number/crypt` | `number/rand` ? number : never;
}; };