fix: default config values were applied before config was loaded

Massimo Melina committed Jan 4, 2022 at 00:13 UTC 8b6e95b59ceb97bf16b2467c9d4b1d78fca1109f
2 files changed +18 -16
src/config.ts
+2 -6
@@ -9,7 +9,7 @@ const emitter = new EventEmitter()
9 watchLoad(PATH, data => {
10 for (const k in data)
11 check(k)
12 - for (const k in state)
12 + for (const k in { ...state, ...configProps })
13 if (!(k in data))
14 check(k)
15
@@ -42,15 +42,11 @@ export function defineConfig(k:string, definition:ConfigProps) {
42 export function subscribeConfig({ k, ...definition }:{ k:string } & ConfigProps, cb:(v:any, was?:any)=>void) {
43 if (definition)
44 defineConfig(k, definition)
45 - const { caster, defaultValue } = configProps[k] ?? {}
45 + const { caster } = configProps[k] ?? {}
46 const a = argv[k]
47 if (a !== undefined)
48 return cb(caster ? caster(a) : a)
49 emitter.on('new.'+k, cb)
50 - if (defaultValue !== undefined) {
51 - state[k] = defaultValue
52 - cb(defaultValue)
53 - }
50 }
51
52 export function getConfig(k:string) {
src/index.ts
+16 -10
@@ -100,19 +100,25 @@ subscribeConfig({ k:'port', defaultValue: 80 }, async (port: number) => {
100 if (!srv)
101 return resolve(null)
102 srv.close(err => {
103 - if (err)
104 - console.debug('failed to stop server', err)
103 + if (err && (err as any).code !== 'ERR_SERVER_NOT_RUNNING')
104 + console.debug('failed to stop server', String(err))
105 resolve(err)
106 })
107 })
108 await new Promise(resolve => {
109 - srv = app.listen(port, () => {
110 - console.log('running on port', port, DEV)
111 - resolve(null)
112 - }).on('error', e => {
113 - const { code } = e as any
114 - if (code === 'EADDRINUSE')
115 - console.error(`couldn't listen on busy port ${port}`)
116 - })
109 + try {
110 + srv = app.listen(port, () => {
111 + console.log('running on port', port, DEV)
112 + resolve(null)
113 + }).on('error', e => {
114 + const { code } = e as any
115 + if (code === 'EADDRINUSE')
116 + console.error(`couldn't listen on busy port ${port}`)
117 + })
118 + }
119 + catch(e) {
120 + console.error("couldn't listen on port", port, String(e))
121 + }
122 +
123 })
124 })