fix: settings props not being correctly set

This commit is contained in:
SethBurkart123
2025-03-30 12:04:39 +11:00
parent 19cc1a5600
commit 647a32fbac
9 changed files with 247 additions and 280 deletions
+50
View File
@@ -0,0 +1,50 @@
import type { NumberSetting, BooleanSetting, StringSetting, SelectSetting } from './types';
export function numberSetting(options: Omit<NumberSetting, 'type'>): NumberSetting {
return {
type: 'number',
...options
};
}
export function booleanSetting(options: Omit<BooleanSetting, 'type'>): BooleanSetting {
return {
type: 'boolean',
...options
};
}
export function stringSetting(options: Omit<StringSetting, 'type'>): StringSetting {
return {
type: 'string',
...options
};
}
export function selectSetting<T extends string>(options: Omit<SelectSetting<T>, 'type'>): SelectSetting<T> {
return {
type: 'select',
...options
};
}
export function defineSettings<T extends Record<string, any>>(settings: T): T {
return settings;
}
export function Setting(settingDef: any): PropertyDecorator {
return (target, propertyKey) => {
const proto = target.constructor.prototype;
if (!proto.hasOwnProperty('settings')) {
Object.defineProperty(proto, 'settings', {
value: {},
writable: true,
configurable: true,
enumerable: true
});
}
proto.settings[propertyKey] = settingDef;
};
}