Add _root parameter, add lightweight immediately awaited async wrapper function
authorNick Downing <downing.nick@gmail.com>
Mon, 15 Oct 2018 02:25:25 +0000 (13:25 +1100)
committerNick Downing <nick@ndcode.org>
Tue, 30 Oct 2018 07:54:35 +0000 (18:54 +1100)
js_template.js
package.json

index e2cfda6..5c82ec3 100644 (file)
@@ -12,9 +12,9 @@ let _fs_readFile = _util.promisify(_fs.readFile)
 
 let _build_cache = new _BuildCache()
 _build_cache.diag = true
-let _js_template = async (_dir, _name) => {
+let _js_template = async (_root, _dir, _name) => {
   while (_name.charAt(0) === '/') {
-    _dir = '.'
+    _dir = _root
     _name = _name.slice(1)
   }
   _name = _path.posix.resolve(_dir, _name)
@@ -22,18 +22,22 @@ let _js_template = async (_dir, _name) => {
     _name,
     async _result => {
       let _dir = _path.posix.dirname(_name)
-      let _req = async _name => _js_template(_dir, _name)
-      _result.value = eval(
-        _astring.generate(
-          _transform.transform(
-            _visitors,
-            _acorn.parse(
-              await _fs_readFile(_name, {encoding: 'utf-8'})
-            )
-          ),
-          {indent: ''}
+      let _req = async _name => _js_template(_root, _dir, _name)
+      _result.value = await (
+         eval(
+          _astring.generate(
+            _transform.transform(
+              _visitors,
+              _acorn.parse(
+                '(async function() {' +
+                await _fs_readFile(_name, {encoding: 'utf-8'}) +
+                '})'
+              )
+            ),
+            {indent: ''}
+          )
         )
-      )
+      )()
     }
   )
 }
index 6d7521e..ed129f6 100644 (file)
@@ -32,7 +32,8 @@
     "prepare": "cd ..; npm run build:main && npm run build:bin"
   },
   "dependencies": {
-    "build_cache": "file:../../build_cache.git/build_cache-1.0.0.tgz",
+    "astring": "^1.3.1",
+    "build_cache": "file:/home/nick/src/build_cache.git/build_cache-1.0.0.tgz",
     "html-escape": "^2.0.0"
   }
 }