first-chunk-stream

WebJar for first-chunk-stream

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

first-chunk-stream
Last Version

Last Version

2.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

first-chunk-stream
WebJar for first-chunk-stream
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/sindresorhus/first-chunk-stream

Download first-chunk-stream

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/first-chunk-stream/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>first-chunk-stream</artifactId>
    <version>2.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/first-chunk-stream/
implementation 'org.webjars.npm:first-chunk-stream:2.0.0'
// https://jarcasting.com/artifacts/org.webjars.npm/first-chunk-stream/
implementation ("org.webjars.npm:first-chunk-stream:2.0.0")
'org.webjars.npm:first-chunk-stream:jar:2.0.0'
<dependency org="org.webjars.npm" name="first-chunk-stream" rev="2.0.0">
  <artifact name="first-chunk-stream" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='first-chunk-stream', version='2.0.0')
)
libraryDependencies += "org.webjars.npm" % "first-chunk-stream" % "2.0.0"
[org.webjars.npm/first-chunk-stream "2.0.0"]

Dependencies

compile (1)

Group / Artifact Type Version
org.webjars.npm : readable-stream jar [2.0.2,3)

Project Modules

There are no modules declared in this project.

first-chunk-stream

Buffer and transform the n first bytes of a stream

Install

$ npm install first-chunk-stream

Usage

const fs = require('fs');
const getStream = require('get-stream');
const FirstChunkStream = require('first-chunk-stream');

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

(async () => {
	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: Buffer, 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.

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

How many bytes you want to buffer.

Versions

Version
2.0.0
1.0.0