Use 'once' argument from build_cache.git commit 1cc703b, instead of passing the _serv...
authorNick Downing <nick@ndcode.org>
Sun, 2 Dec 2018 00:38:22 +0000 (11:38 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 2 Dec 2018 00:38:22 +0000 (11:38 +1100)
.gitignore
Server.js
Site.js
SiteDefault.js
SiteRedirect.js
SiteRoot.js
package.json

index 2520d42..a8743f0 100644 (file)
@@ -1,3 +1,5 @@
+.*.deps
+.*.less
 .*.jst
 .*.min
 /jst_server-*.tgz
index fc21e3a..cab406c 100644 (file)
--- a/Server.js
+++ b/Server.js
@@ -9,7 +9,7 @@ let fs_readFile = util.promisify(fs.readFile)
 
 let Server = function() {
   if (!this instanceof Server)
-    throw Error('Server is a constructor')
+    throw new Error('Server is a constructor')
 
   this.enable_caching = false
   this.listen = []
@@ -56,9 +56,15 @@ Server.prototype.attach = function(server, protocol) {
 }
 
 Server.prototype.refresh_config = async function() {
+  let config
   try {
-    let config = await this.jst_cache.get('_config/server.jst')
+    config = await this.jst_cache.get('_config/server.jst', true)
+  }
+  catch (err) {
+    console.log(`configuration error: ${err.stack || err.message}`)
+  }
 
+  if (config !== undefined) {
     this.enable_caching = config.enable_caching
 
     let listen = []
@@ -170,9 +176,6 @@ Server.prototype.refresh_config = async function() {
 
     this.sites = config.sites
   }
-  catch (err) {
-    console.log(`configuration error: ${err.stack || err.message}`)
-  }
 }
 
 Server.prototype.serve = function(response, status, mime_type, data, message) {
diff --git a/Site.js b/Site.js
index cf54612..33ab317 100644 (file)
--- a/Site.js
+++ b/Site.js
@@ -1,6 +1,6 @@
 let Site = function(server) {
   if (!this instanceof Site)
-    throw Error('Site is a constructor')
+    throw new Error('Site is a constructor')
   this.server = server
   this.socket_io_connect_listeners = [] // later will use this for destruction
 }
index 6539b35..7c8c7fc 100644 (file)
@@ -2,16 +2,17 @@ let SiteRoot = require('./SiteRoot')
 
 let SiteDefault = function(server, root) {
   if (!this instanceof SiteDefault)
-    throw Error('SiteDefault is a constructor')
+    throw new Error('SiteDefault is a constructor')
   SiteRoot.call(this, server, root)
+  this.site = undefined
 }
 
 SiteDefault.prototype = Object.create(SiteRoot.prototype)
 
 SiteDefault.prototype.respond = async function(env) {
-  let site
+  let config
   try {
-    site = await this.get_jst('/_config/site.jst')
+    config = await this.get_jst('/_config/site.jst', true)
   }
   catch (err) {
     if (!(err instanceof Error) || err.code !== 'ENOENT')
@@ -19,7 +20,9 @@ SiteDefault.prototype.respond = async function(env) {
     // no custom site object, handle the request ourselves
     return SiteRoot.prototype.respond.call(this, env)
   }
-  return site.respond(env)
+  if (config !== undefined)
+    this.site = await config(this.server, this.root, this.site)
+  return this.site.respond(env)
 }
 
 module.exports = SiteDefault
index eeb7ce5..d012635 100644 (file)
@@ -2,7 +2,7 @@ let Site = require('./Site')
 
 let SiteRedirect = function(server, redirect) {
   if (!this instanceof SiteRedirect)
-    throw Error('SiteRedirect is a constructor')
+    throw new Error('SiteRedirect is a constructor')
   Site.call(this, server)
   this.redirect = redirect
 }
index 740fb06..9826db6 100644 (file)
@@ -19,7 +19,7 @@ let fs_stat = util.promisify(fs.stat)
 
 let SiteRoot = function(server, root) {
   if (!this instanceof SiteRoot)
-    throw Error('SiteRoot is a constructor')
+    throw new Error('SiteRoot is a constructor')
   Site.call(this, server)
   this.root = root
 
index 9d868a1..4113238 100644 (file)
@@ -5,14 +5,16 @@
   "main": "index.js",
   "directories": {},
   "dependencies": {
+    "@ndcode/json_cache": "^0.1.2",
+    "@ndcode/json_cache_rw": "^0.1.0",
+    "@ndcode/jst_cache": "^0.1.0",
     "@ndcode/less_css_cache": "^0.1.0",
     "@ndcode/min_css_cache": "^0.1.0",
-    "@ndcode/min_js_cache": "^0.1.0",
     "@ndcode/min_html_cache": "^0.1.0",
+    "@ndcode/min_js_cache": "^0.1.0",
     "@ndcode/min_svg_cache": "^0.1.0",
-    "@ndcode/json_cache": "^0.1.2",
-    "@ndcode/json_cache_rw": "^0.1.0",
-    "@ndcode/jst_cache": "^0.1.0",
+    "@ndcode/text_cache": "^0.1.0",
+    "@ndcode/zip_cache": "^0.1.0",
     "commander": "^2.18.0",
     "fs": "^0.0.1-security",
     "http": "^0.0.0",