first-chunk-stream
Transform the first chunk in a stream
Last updated 6 years ago by sindresorhus .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install first-chunk-stream 
SYNC missed versions from official npm registry.

first-chunk-stream

Buffer and transform the n first bytes of a stream

Install

npm install first-chunk-stream

Usage

import fs from 'node:fs';
import getStream from 'get-stream';
import FirstChunkStream from 'first-chunk-stream';
import {uint8ArrayToString} from 'uint8array-extras';

// unicorn.txt => unicorn rainbow
const stream = fs.createReadStream('unicorn.txt')
	.pipe(new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
		return uint8ArrayToString(chunk).toUpperCase();
	}));

const data = await getStream(stream);

if (data.length < 7) {
	throw new Error('Couldn\'t get the minimum required first chunk length');
}

console.log(data);
//=> 'UNICORN rainbow'

API

FirstChunkStream(options, transform)

FirstChunkStream constructor.

transform(chunk, encoding)

Type: Function

Async function that receives the required options.chunkSize bytes.

Expected to return an buffer-like object or string or object of form {buffer: Uint8Array, encoding: string} to send to stream or firstChunkStream.stop to end stream right away.

An error thrown from this function will be emitted as stream errors.

Note that the buffer can have a smaller length than the required one. In that case, it will be due to the fact that the complete stream contents has a length less than the options.chunkSize value. You should check for this yourself if you strictly depend on the length.

import FirstChunkStream from 'first-chunk-stream';

new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
	return chunk.toString(encoding).toUpperCase(); // Send string to stream
});

new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
	return chunk; // Send buffer to stream
});

new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
	return {
		buffer: chunk,
		encoding: encoding,
	}; // Send buffer with encoding to stream
});

new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
	return FirstChunkStream.stop; // End the stream early
});

new FirstChunkStream({chunkSize: 7}, async (chunk, encoding) => {
	throw new Error('Unconditional error'); // Emit stream error
});

options

Type: object

The options object is passed to the Duplex stream constructor allowing you to customize your stream behavior. In addition, you can specify the following option:

chunkSize

Type: number

The number of bytes to buffer.

Current Tags

  • 6.0.0                                ...           latest (a year ago)

7 Versions

  • 6.0.0                                ...           a year ago
  • 5.0.0                                ...           3 years ago
  • 4.0.0                                ...           5 years ago
  • 3.0.0                                ...           6 years ago
  • 2.0.0                                ...           9 years ago
  • 1.0.0                                ...           10 years ago
  • 0.1.0                                ...           10 years ago
Maintainers (1)
Downloads
Total 1
Today 1
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 0
Dependencies (0)
None
Dev Dependencies (6)
Dependents (2)

© 2010 - cnpmjs.org x YWFE | Home | YWFE