Update to build_cache.git commit 1cc703b
authorNick Downing <nick@ndcode.org>
Sun, 2 Dec 2018 00:37:19 +0000 (11:37 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 2 Dec 2018 00:37:19 +0000 (11:37 +1100)
ZipCache.js

index 68bce4b..1236482 100644 (file)
@@ -28,65 +28,61 @@ let yauzl = require('yauzl')
 
 let yauzl_open = util.promisify(yauzl.open)
 
-let ZipCache = function(diag) {
+let ZipCache = function(diag1, diag) {
   if (!this instanceof ZipCache)
-    throw Error('ZipCache is a constructor')
-  this.diag = diag || false
-
-  this.build_cache = new BuildCache()
+    throw new Error('ZipCache is a constructor')
+  BuildCache.call(this, diag)
+  this.diag1 = diag1
 }
 
-ZipCache.prototype.get = function(key) {
-  return /*await*/ this.build_cache.get(
-    key,
-    async result => {
-      let zipfile = await yauzl_open(key, {autoClose: false})
-      if (this.diag)
-        console.log(`loading zip file ${key}`)
+ZipCache.prototype = Object.create(BuildCache.prototype)
 
-      let entries = []
-      await new Promise(
-        (resolve, reject) => {
-          zipfile.
-          on('entry', entry => {entries.push(entry)}).
-          on('end', () => resolve())
-        }
-      )
+ZipCache.prototype.build = async function(key, result) {
+  let zipfile = await yauzl_open(key, {autoClose: false})
+  if (this.diag1)
+    console.log(`loading zip file ${key}`)
 
-      result.value = {}
-      for (let i = 0; i < entries.length; ++i) {
-        let read_stream = await new Promise(
-          (resolve, reject) => {
-            zipfile.openReadStream(
-              entries[i],
-              (err, stream) => {
-                if (err)
-                  reject(err)
-                resolve(stream)
-              }
-            )
-          }
-        )
+  let entries = []
+  await new Promise(
+    (resolve, reject) => {
+      zipfile.
+      on('entry', entry => {entries.push(entry)}).
+      on('end', () => resolve())
+    }
+  )
 
-        let write_stream = new stream_buffers.WritableStreamBuffer()
-        let data = new Promise(
-          (resolve, reject) => {
-            write_stream.
-            on('finish', () => {resolve(write_stream.getContents())}).
-            on('error', err => {reject(err)})
+  result.value = {}
+  for (let i = 0; i < entries.length; ++i) {
+    let read_stream = await new Promise(
+      (resolve, reject) => {
+        zipfile.openReadStream(
+          entries[i],
+          (err, stream) => {
+            if (err)
+              reject(err)
+            resolve(stream)
           }
         )
-        read_stream.pipe(write_stream)
-        data = await data
+      }
+    )
 
-        let entry_pathname = '/' + entries[i].fileName
-        if (this.diag)
-          console.log(`entry pathname ${entry_pathname} size ${data.length}`)
-        result.value[entry_pathname] = data
+    let write_stream = new stream_buffers.WritableStreamBuffer()
+    let data = new Promise(
+      (resolve, reject) => {
+        write_stream.
+        on('finish', () => {resolve(write_stream.getContents())}).
+        on('error', err => {reject(err)})
       }
-      await zipfile.close()
-    }
-  )
+    )
+    read_stream.pipe(write_stream)
+    data = await data
+
+    let entry_pathname = '/' + entries[i].fileName
+    if (this.diag1)
+      console.log(`entry pathname ${entry_pathname} size ${data.length}`)
+    result.value[entry_pathname] = data
+  }
+  await zipfile.close()
 }
 
 module.exports = ZipCache