byte-counter
v0.1.0
Published
Count bytes passing through a stream
Downloads
2,311,866
Maintainers
Readme
byte-counter
Count bytes passing through a stream
A transform stream that counts bytes passing through without modifying the data. Useful for tracking data transfer size, monitoring progress, or validating content-length headers.
The main export uses Web Streams. For Node.js streams, use the /node subexport.
Install
npm install byte-counterUsage
Web Streams (default)
import ByteCounterStream from 'byte-counter';
const counter = new ByteCounterStream();
const response = await fetch('https://example.com/large-file.zip');
await response.body
.pipeThrough(counter)
.pipeTo(new WritableStream({
write(chunk) {
// Process chunk
},
close() {
console.log(`Downloaded ${counter.count} bytes`);
}
}));import ByteCounterStream from 'byte-counter';
const counter = new ByteCounterStream();
const encoder = new TextEncoder();
const writer = counter.writable.getWriter();
await writer.write(encoder.encode('Hello '));
await writer.write(encoder.encode('World'));
await writer.close();
console.log(counter.count);
//=> 11API
ByteCounterStream
A TransformStream that counts bytes passing through without modifying the data.
count
Type: number (read-only)
The number of bytes that have passed through the stream.
byteLength(data)
Calculate the byte length of some data.
Strings are measured as UTF-8 bytes.
import {byteLength} from 'byte-counter';
byteLength('Hello');
//=> 5
byteLength('Hello 👋');
//=> 10
byteLength(new Uint8Array([1, 2, 3]));
//=> 3data
Type: string | Uint8Array | ArrayBuffer | SharedArrayBuffer | ArrayBufferView
The data to measure.
Returns: number - The byte length of the data.
ByteCounterStream (byte-counter/node)
A Node.js Transform stream that counts bytes passing through without modifying the data.
import fs from 'node:fs';
import ByteCounterStream from 'byte-counter/node';
const counter = new ByteCounterStream();
fs.createReadStream('file.txt')
.pipe(counter)
.pipe(fs.createWriteStream('output.txt'))
.on('finish', () => {
console.log(`Transferred ${counter.count} bytes`);
});import ByteCounterStream from 'byte-counter/node';
const counter = new ByteCounterStream();
const encoder = new TextEncoder();
counter.write(encoder.encode('Hello '));
counter.write(encoder.encode('World'));
counter.end();
console.log(counter.count);
//=> 11count
Type: number (read-only)
The number of bytes that have passed through the stream.
