Home

Awesome

it-block <!-- omit in toc -->

codecov CI

transform input into equally-sized blocks of output using async iterators

Table of contents <!-- omit in toc -->

Install

$ npm i it-block

An async iterators version of block-stream.

Usage

Example

import { block } from 'it-block'
import { pipe } from 'it-pipe'

const chr = s => '\\x' + pad(s.charCodeAt(0).toString(16), 2)
const pad = (s, n) => Array(n - s.length + 1).join('0') + s

pipe(
  process.stdin,
  block({ size: 16 }),
  async source => {
    for await (const buf of source) {
      const str = new TextDecoder().decode(buf.slice()).replace(/[\x00-\x1f]/g, chr)
      console.log('buf[' + buf.byteLength + ']=' + str)
    }
  }
)
$ echo {c,d,f}{a,e,i,o,u}{t,g,r} | node example/stream.js
buf[16]=cat cag car cet
buf[16]=ceg cer cit cig
buf[16]=cir cot cog cor
buf[16]=cut cug cur dat
buf[16]=dag dar det deg
buf[16]=der dit dig dir
buf[16]=dot dog dor dut
buf[16]=dug dur fat fag
buf[16]=far fet feg fer
buf[16]=fit fig fir fot
buf[16]=fog for fut fug
buf[16]=fur\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

API

import { block } from 'it-block'

const b = block(size, opts)

Create a new transform b that yields chunks of length size.

Note: chunks that are output are Uint8ArrayList objects NOT Uint8Arrays.

When opts.noPad is true, do not zero-pad the last chunk.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.