The reign of poor error messages is over!
Expressive runtime invariants for JavaScript.
$ npm install invar --save
import invar from 'invar'
Check for truthiness.
invar(2 + 2 === 5, "I'm sorry Dave, I'm afraid I can't do that.")
Invariant Violation: I'm sorry Dave, I'm afraid I can't do that.
Check for shallow equality.
invar.equal(2 + 2, 5, "Daisy, Daisy, give me your answer do.")
Invariant Violation: Daisy, Daisy, give me your answer do.
actual: 4
expected: 5
Check for shallow unequality.
invar.notEqual(2 + 2, 4, "I've just picked up a fault in the AE35 unit.")
Invariant Violation: I've just picked up a fault in the AE35 unit.
actual: 4
expected: not 4
Always fail. Used for mandatory function arguments.
function myFunction (mandatoryArg = invar.req('mandatoryArg')) {}
myFunction()
Invariant Violation: Required argument 'mandatoryArg' not provided.
Always fail.
invar.fail("I'm afraid. I'm afraid, Dave. Dave, my mind is going.")
Invariant Violation: I'm afraid. I'm afraid, Dave. Dave, my mind is going.
Invar uses JavaScript Standard Style, Babel for ES6+ support, and Jest for testing.
$ git clone git@github.com:pavlovml/invar.git
$ make test
To run the tests on file changes:
$ env WATCH=true make test