UNPKG

899 BJavaScriptView Raw
1const yaz = require('yauzl')
2const path = require('path')
3const mk = require('mkdirp')
4const fs = require('fs')
5
6const log = console.log
7
8module.exports = (src, dst, done) => {
9 yaz.open(src, { lazyEntries: true }, (err, f) => {
10 if (err) return done(err)
11 f.readEntry()
12 f.on('entry', ent => {
13 if (/\/$/.test(ent.fileName)) {
14 // log('...', path.join(dst, ent.fileName))
15 f.readEntry()
16 } else {
17 // log(' |', path.join(dst, ent.fileName))
18 mk(path.dirname(path.join(dst, ent.fileName)), err => {
19 f.openReadStream(ent, (err, rs) => {
20 if (err) return done(err)
21
22 rs.pipe(fs.createWriteStream(path.join(dst, ent.fileName))).on(
23 'close',
24 () => {
25 f.readEntry()
26 }
27 )
28 })
29 })
30 }
31 }).on('end', () => {
32 done()
33 })
34 })
35}