1.0.0 • Published 1 year ago

@stream-toolbox/zero v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@stream-toolbox/zero

English 中文文档


🚰 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

🚰 创建一个会源源不断产生数据的可读流,有点类似于 /dev/zero,但多了一些额外的功能.

安装

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