phar-stream
php PHAR archive streaming parser for nodejs
Last updated 2 months ago by 131 .
ISC · Repository · Bugs · Original npm · Tarball
$ cnpm install phar-stream 
SYNC missed versions from official npm registry.

phar-stream

phar-stream is a streaming phar archive (PHP archive) parser for nodejs. It is streams2 and operates purely using streams which means you can easily extract/parse phar without ever hitting the file system. phar-stream use es7 async/await syntax and require node 8+.

npm install phar-stream

Build Status Coverage Status Version License

Usage

phar-stream exposes a single stream, extract which extracts phar.

Related

If you want to unpack directories on the file system check out phar-fs which provides file system bindings to this module.

Extracting

To extract a stream use phar.extract() and listen for extract.on('entry', (header, stream, next) )

const phar  = require('phar-stream');
const extract = new phar.extract()

extract.on('entry', function(header, stream, next) {
  // header is the phar header
  // stream is the content body (might be an empty stream)
  // call next when you are done with this entry

  stream.on('end', function() {
    next() // ready for next entry
  })

  stream.resume() // just auto drain the stream
})

extract.on('finish', function() {
  // all entries read
})


// archive = fs.createReadStream('somepath.phar');
archive.pipe(extract)

The phar archive is streamed sequentially, meaning you must drain each entry's stream as you get them or else the main extract stream will receive backpressure and stop reading.

Headers

The header object using in entry should contain the following properties. Most of these values can be found by stat'ing a file.

{
  entry_name: 'path/to/this/entry.txt',
  entry_size: 1314,        // entry size. defaults to 0
  entry_mtime: new Date(), // last modified date for entry
  entry_crc32: 15151, // entry CRC32 checksum
}

Todo

  • Implement phar-stream.pack to create phar archive (no need for now)
  • Get rich or die tryin'

Credits / related

License

MIT

Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (3)
Dev Dependencies (3)
Dependents (1)

Copyright 2014 - 2016 © taobao.org |