@jacobbubu/pull-stream-protocol-checker
v1.0.0
Published
[![Build Status](https://github.com/jacobbubu/pull-stream-protocol-checker/workflows/Build%20and%20Release/badge.svg)](https://github.com/jacobbubu/pull-stream-protocol-checker/actions?query=workflow%3A%22Build+and+Release%22) [![Coverage Status](https://
Downloads
2,748
Readme
@jacobbubu/pull-stream-protocol-checker
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:
- No ask request (
read(false, ...)
) after termination - Every callback is eventually invoked
- Every callback is invoked only once
- The callbacks are invoked in the order in which they were created
- No value answer (
cb(false, data)
) after termination
Optionally can check:
- That no other request are made after the stream has terminated or was aborted
- 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 tofalse
)enforceStreamTermination
<Boolean>
(Defaults tofalse
)notifyEagerly
<Boolean>
(Defaults totrue
)
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