1.0.0 • Published 4 years ago

@jacobbubu/pull-stream-protocol-checker v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

@jacobbubu/pull-stream-protocol-checker

Build Status Coverage Status npm

Rewriting pull-stream-protocol-checker with TypeScript

pull-stream-protocol-checker

Why rewrite?

  • For other TypeScript projects to have a type-friendly checking library.
  • Easy for my colleagues to port to other strongly typed programming languages

Original readme

Pull-stream module for detecting protocol violations at the interface of two modules.

Report an error if one of the following invariants is violated:

  1. No ask request (read(false, ...)) after termination
  2. Every callback is eventually invoked
  3. Every callback is invoked only once
  4. The callbacks are invoked in the order in which they were created
  5. No value answer (cb(false, data)) after termination

Optionally can check:

  1. That no other request are made after the stream has terminated or was aborted
  2. The stream is eventually terminated

Usage

import * as pull from 'pull-stream'
import checker from '@jacobbubu/pull-stream-protocol-checker'

const probe = checker({
  forbidExtraRequests: true,
  enforceStreamTermination: true,
})

pull(
  pull.count(10),
  probe,
  pull.drain(null, function () {
    probe.terminate()
  })
)

options

const probe = checker({forbidExtraRequests: true, enforceStreamTermination:true, notifyEagerly: true})
  • forbidExtraRequests <Boolean> (Defaults to false)
  • enforceStreamTermination <Boolean> (Defaults to false)
  • notifyEagerly <Boolean> (Defaults to true)

Invariant 6 is activated by setting forbidExtraRequests to true. Invariant 7 is activated by setting enforceStreamTermination to true. If notifyEagerly===true, an invariant violation is reported as an error that is thrown immediately; otherwise all violations are remembered and returned as an error array when invoking errors = probe.terminate().

Other modules with similar goals

https://github.com/dominictarr/pull-spec

https://github.com/nichoth/pull-stream-spec