@stream-toolbox/zero
v1.0.0
Published
Create a readable stream that will continuously generate data, somewhat similar to /dev/zero, but with some extra features.
Downloads
6
Maintainers
Readme
@stream-toolbox/zero
🚰 Create a readable stream that will continuously generate data, somewhat similar to /dev/zero, but with some extra features.
Installation
npm i @stream-toolbox/zero
Quick Start
Create a 1GB size readable stream:
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1073741824); // 1073741824 bytes
let total = 0;
readable
.on("data", (chunk) => {
total += chunk.length;
})
.on("end", () => {
console.log(total); // 1073741824
});
The generation speed is about 12GB/s, and the data is directly from Buffer.allocUnsafe. Note that the data generated by
Buffer.allocUnsafe
is uninitialized (not zeroed-out), this may have some security risks.
Create a 1MB size readable stream, every byte is 97
(01100001
):
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1048576, 97);
readable.on("data", (chunk) => {
console.log(chunk.every((byte) => byte === 97)); // true
});
The generation speed is about 6GB/s, and every byte is reset, so it is safe.
Create a 1MB size readable stream, every byte is between 97
(01100001
) and 122
(01111010
):
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1048576, [97, 122]);
readable.on("data", (chunk) => {
console.log(chunk.every((byte) => byte >= 97 && byte <= 122)); // true
});
The generation speed is about 100MB/s, and every byte is reset, so it is safe.
API
createZero(total: number, fill?: number | [number, number]): Readable
安装
npm i @stream-toolbox/zero
快速开始
创建一个 1GB 大小的可读流:
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1073741824); // 1073741824 bytes
let total = 0;
readable
.on("data", (chunk) => {
total += chunk.length;
})
.on("end", () => {
console.log(total); // 1073741824
});
生成速度大概在 12GB/s,数据由 Buffer.allocUnsafe 直出,注意
Buffer.allocUnsafe
产生的数据是未初始化的(未清零),这可能有一些安全风险。
创建一个 1MB 大小的可读流,每一个字节都是 97
(01100001
):
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1048576, 97);
readable.on("data", (chunk) => {
console.log(chunk.every((byte) => byte === 97)); // true
});
生成速度大概在 6GB/s,每一个字节都被重置了,所以是安全的。
创建一个 1MB 大小的可读流,每一个字节都是 97
(01100001
) 到 122
(01111010
) 之间的数值:
const createZero = require("@stream-toolbox/zero");
const readable = createZero(1048576, [97, 122]);
readable.on("data", (chunk) => {
console.log(chunk.every((byte) => byte >= 97 && byte <= 122)); // true
});
生成速度大概在 100MB/s,每一个字节都被重置了,所以是安全的。
API
createZero(total: number, fill?: number | [number, number]): Readable