66 lines
2.5 KiB
Markdown
66 lines
2.5 KiB
Markdown
# stream-chunker
|
|
|
|
A transform stream which chunks incoming data into `chunkSize` byte chunks.
|
|
|
|
[![NPM](https://nodei.co/npm/stream-chunker.png)](https://nodei.co/npm/stream-chunker/)
|
|
|
|
[![Build Status](https://travis-ci.org/klyngbaek/stream-chunker.svg?branch=master)](https://travis-ci.org/klyngbaek/stream-chunker)
|
|
[![Coverage Status](https://coveralls.io/repos/github/klyngbaek/stream-chunker/badge.svg?branch=master)](https://coveralls.io/github/klyngbaek/stream-chunker?branch=master)
|
|
[![Dependency Status](https://david-dm.org/klyngbaek/stream-chunker.svg)](https://david-dm.org/klyngbaek/stream-chunker)
|
|
[![devDependency Status](https://david-dm.org/klyngbaek/stream-chunker/dev-status.svg)](https://david-dm.org/klyngbaek/stream-chunker#info=devDependencies)
|
|
|
|
## API
|
|
|
|
#### `var chunker = require('stream-chunker')(chunkSize, [opts])`
|
|
Returns a new chunker. Chunker is a duplex (transform) stream. You can write data into the
|
|
chunker, and regardless of the incoming data, the readable side will emit data
|
|
in `chunkSize` byte chunks. This modules has no notion of `objectMode`, everything
|
|
written to this stream must be a `string` or a `buffer`.
|
|
|
|
- `chunkSize`: `integer` - Size in bytes of the desired chunks.
|
|
- `opts`
|
|
- `flush`: `boolean` - Optional. Flush incomplete chunk data on stream end. Default is `false`.
|
|
- `align`: `boolean` - Optional. Pad incomplete chunk data on stream end. Should be used in combination with `flush`. Default is `false`.
|
|
- `encoding`: `string` - Optional. Encoding of String chunks. Must be a valid Buffer encoding, such as `utf8` or `ascii`.
|
|
|
|
## Simple Example
|
|
```javascript
|
|
var fs = require('fs');
|
|
var chunker = require('stream-chunker');
|
|
|
|
fs.createReadStream('/someFile')
|
|
.pipe(chunker(16))
|
|
.pipe(somethingThatExpects16ByteChunks());
|
|
```
|
|
|
|
## Full Working Example
|
|
```javascript
|
|
// Create sample input stream with 10 byte chunks
|
|
var Lorem = require('loremipstream');
|
|
var sampleStream = new Lorem({
|
|
size: 100,
|
|
dataSize: 10,
|
|
dataInteval: 100
|
|
});
|
|
|
|
// Create stream chunker with 16 byte chunks
|
|
var Chunker = require('stream-chunker');
|
|
var opts = {
|
|
flush: true,
|
|
encoding: 'utf8'
|
|
};
|
|
var chunker = Chunker(16, opts);
|
|
// make sure to add any data event listeners to chunker stream
|
|
// before you write any data to it
|
|
chunker.on('data', function(data) {
|
|
// do something with a chunk of data
|
|
// notice the last chunk is the flushed data
|
|
console.log('Chunk: ' + data);
|
|
});
|
|
sampleStream.pipe(chunker); // write some data to chunker to get chunked
|
|
|
|
```
|
|
|
|
## License
|
|
MIT
|