Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

pull-length-prefixed

dignifiedquire295MIT1.3.3

Streaming length prefixed buffers with pull-streams

varint, pull-stream, length-prefixed-stream, length-prefixed

readme

pull-length-prefixed

Coverage Status Travis CI Circle CI Dependency Status js-standard-style standard-readme compliant

Streaming length prefixed buffers with pull-streams

Table of Contents

Installation

$ npm install --save pull-length-prefixed

Usage

var pull = require('pull-stream')
var lp = require('pull-length-prefixed')

// encode
pull(
  pull.values([Buffer.from('hello world')]),
  lp.encode(),
  pull.collect(function (err, encoded) {
    if (err) throw err
    console.log(encoded)
    // => [Buffer <0b 68 65 6c 6c 6f 20 77 6f 72 6c 64>]
  })
)

// decode
pull(
  pull.values(encoded), // e.g. from above
  lp.decode(),
  pull.collect(function (err, decoded) {
    if (err) throw err
    console.log(decoded)
    // => [Buffer <68 65 6c 6c 6f 20 77 6f 72 6c 64>]
  })
)

API

encode([opts])

  • opts: Object, optional
    • fixed: false: If true uses a fixed 4 byte Int32BE prefix instead of varint

By default all messages will be prefixed with a varint. If you want to use a fixed length prefix you can specify this through the opts.

Returns a pull-stream through.

decode([opts])

  • opts: Object, optional
    • fixed: false: If true uses a fixed 4 byte Int32BE prefix instead of varint
    • maxLength: If provided, will not decode messages longer than the size specified, if omitted will use the current default of 4MB.

By default all messages will be prefixed with a varint. If you want to use a fixed length prefix you can specify this through the opts.

Returns a pull-stream through.

decodeFromReader(reader, [opts], cb)

  • reader: [pull-reader](https://github.com/dominictarr/pull-reader)
  • opts: Object, optional. Same as for decode.
  • cb: Function: Callback called with (err, message).

This uses a pull-reader instance to reade and decode a single message. Useful when using pull-handshake with length prefixed messages.

Contribute

PRs and issues gladly accepted! Check out the issues.

License

MIT © 2016 Friedel Ziegelmayer

changelog

1.3.3 (2019-05-03)

Bug Fixes

  • correct encode behavior (a6177e1)
  • empty responses shouldnt end streams (87ae256)

1.3.2 (2019-04-04)

Bug Fixes

  • sync streams and empty streams (33e3a64)

1.3.1 (2018-07-13)

Bug Fixes

  • use default max length properly (182f3ed)

Features

  • improve tests and guards for failure cases (2c43d59)

1.3.0 (2017-05-28)

Features

  • add maxLength to allow controlling max buffer length during decode (7810ade)

1.2.1 (2017-04-11)

1.2.0 (2016-09-05)

Features

  • add fixed prefix length as an option (c93f850)

1.1.0 (2016-09-01)

Bug Fixes

  • properly handle backpressure (cf47d04)

Features

  • decode: add decodeFromReader method (729dc2e)

1.0.0 (2016-06-13)