it-block

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

Usage no npm install needed!

<script type="module">
  import itBlock from 'https://cdn.skypack.dev/it-block';
</script>

README

it-block

Build Status Dependencies Status JavaScript Style Guide

Transform input into equally-sized chunks as output

An async iterators version of block-stream.

Install

npm install it-block

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 = buf.toString().replace(/[\x00-\x1f]/g, chr)
      console.log('buf[' + buf.length + ']=' + 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 BufferList objects NOT Buffers.

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

License

MIT