4 * Copyright (C) 2018-2022 Nick Downing <nick@ndcode.org>
5 * SPDX-License-Identifier: MIT
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to
9 * deal in the Software without restriction, including without limitation the
10 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11 * sell copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
26 // must load index first, to avoid circular dependency issue
27 import jst_server from './index.mjs'
29 import JSTCache from '@ndcode/jst_cache'
30 import Resources from './Resources.mjs'
31 import Server from './Server.mjs'
33 let resources = new Resources()
34 let jst_cache = await resources.ref(
36 async () => new JSTCache('.', {_jst_server: jst_server}, true)
38 let server = undefined
40 // refresh the config every 1 second
43 let config = await jst_cache.get('_config/server.jst', true)
44 if (config !== undefined) {
45 let prev_server = server
46 let new_server = await config(resources, prev_server)
47 await new_server.start() // exception here cancels server change
49 if (prev_server !== undefined)
50 await prev_server.stop() // exception here doesn't cancel change
55 console.error(err.stack || err.message)
57 await new Promise(resolve => setTimeout(resolve, 1000))