better code: better api
Massimo Melina committed
Jun 25, 2023 at 20:14 UTC
b52cde382d7b68271e405ac43bed32c897a062c3
1 file changed
+3
-3
src/config.ts
+3
-3
@@ -66,11 +66,11 @@ const CONFIG_CHANGE_EVENT_PREFIX = 'new.'
66
const currentVersion = new Version(VERSION)
67
const configVersion = defineConfig('version', VERSION, v => new Version(v))
68
69
-type Subscriber<T,R=void> = (v:T, was:T | undefined, version: Version | undefined) => R
69
+type Subscriber<T,R=void> = (v:T, more: { was?: T, version?: Version, defaultValue: T }) => R
70
export function defineConfig<T, CT=T>(k: string, defaultValue: T, compiler?: Subscriber<T,CT>) {
71
configProps[k] = { defaultValue }
72
type Updater = (currentValue:T) => T
73
- let compiled = compiler?.(defaultValue, undefined, currentVersion)
73
+ let compiled = compiler?.(defaultValue, { version: currentVersion, defaultValue })
74
const ret = { // consider a Class
75
key() {
76
return k
@@ -80,7 +80,7 @@ export function defineConfig<T, CT=T>(k: string, defaultValue: T, compiler?: Sub
80
},
81
sub(cb: Subscriber<T>) {
82
if (started) // initial event already passed, we'll make the first call
83
- cb(getConfig(k), defaultValue, configVersion.compiled())
83
+ cb(getConfig(k), { was: defaultValue, defaultValue, version: configVersion.compiled() })
84
const eventName = CONFIG_CHANGE_EVENT_PREFIX + k
85
return onOff(cfgEvents, {
86
[eventName]() {