var mime_type_css = mime_types['css'] || mime_type_default
var mime_type_html = mime_types['html'] || mime_type_default
var build_cache_js = new BuildCache()
+var build_cache_json = new BuildCache()
var build_cache_less = new BuildCache()
+var build_cache_text = new BuildCache()
var serve = function(res, status, mime_type, data) {
res.statusCode = status
root: site_root
}
var out = str => {buffers.push(Buffer.from(str))}
- var req = async str => {
+ var req = async (str, type) => {
var key = (
str.length > 0 && str.charAt(0) === '/' ?
site_root :
site_root + dir_name + '/'
- ) + str
- var value = await build_cache_js.get(key)
- if (value === undefined) {
- console.log(site, 'compiling', key)
- value = await jstemplate(key)
- build_cache_js.set(key, value)
+ ) + str, result
+ switch (type) {
+ case undefined:
+ case 'js':
+ var render_func = await build_cache_js.get(key)
+ if (render_func === undefined) {
+ console.log(site, 'compiling', key)
+ render_func = await jstemplate(key)
+ build_cache_js.set(key, render_func)
+ }
+ result = await render_func(env, out, req)
+ break
+ case 'json':
+ result = await build_cache_json.get(key)
+ if (result === undefined) {
+ console.log(site, 'parsing', key)
+ result = JSON.parse(await readFileAsync(key))
+ build_cache_json.set(key, result)
+ }
+ break
+ case 'text':
+ result = await build_cache_text.get(key)
+ if (result === undefined) {
+ console.log(site, 'reading', key)
+ result = await readFileAsync(key, {encoding: 'utf-8'})
+ build_cache_text.set(key, result)
+ }
+ break
+ default:
+ assert(false)
}
- return await value(env, out, req)
+ return result
}
await req(temp)
data = Buffer.concat(buffers)