phar-stream

2.0.3 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i phar-stream

Weekly Downloads

0

Version

2.0.3

License

ISC

Unpacked Size

9.57 kB

Total Files

5

Last publish

Collaborators

  • 131
  • frodon