byte-counter
Count bytes passing through a stream
Last updated 5 months ago by sindresorhus .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install byte-counter 
SYNC missed versions from official npm registry.

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-counter

Usage

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);
//=> 11

API

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]));
//=> 3

data

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);
//=> 11

count

Type: number (read-only)

The number of bytes that have passed through the stream.

Current Tags

  • 0.1.0                                ...           latest (5 months ago)

1 Versions

  • 0.1.0                                ...           5 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 5
Dependencies (0)
None
Dev Dependencies (3)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |