0.0.12 • Published 7 years ago

ramda-asserters v0.0.12

Weekly downloads
6
License
MIT
Repository
github
Last release
7 years ago

Greenkeeper badge Build Status

ramda-asserters

Collection of curried assert functions

Usage

assert

import * as R from 'ramda'
import { assert } from 'ramda-asserters'

// use assert with some test function without custom error message and it will try to be smart making error message
assert(R.identity)(1) // returns 1
assert(R.identity)(null) // throws `Unexpected "null" after applying test function "f1" on value "null"`

// note: there is no way to make uncurried version of assert without user message
// so this is not valid
// const validate = assert(R.identity, 1)

// or use assert with custom error message
assert(R.identity, 'Custom message')(null) //  throws error with name 'Assert error'
assert(R.identity, 'Custom message', null) //  throws error with name 'Assert error'

// or overwrite error complitely
class MyError extends Error {
  public name = "MyError";
  constructor (public message = '') {
    // message is `Unexpected "null" after applying test function "f1" on value "null"`
    super(message);
    Object.setPrototypeOf(this, new.target.prototype);
  }
}

assert(R.identity, MyError)(null)
assert(R.identity, MyError, null)

assertNotNil

// chack if null, undefined or NaN
import { assertNotNil } from 'ramda-asserters'

assertNotNil(1) // returns 1
assertNotNil(null) // throws 'Got unexpected null'

assertType

// uses R.type function
// will infer type using this TypeMap
// interface TypeMap {
//   Object: object
//   Number: number
//   Boolean: boolean
//   String: string
//   Null: null
//   Array: Array<any>
//   RegExp: RegExp
//   Function: Function
//   Undefined: undefined
//   Symbol: symbol
// }

import { assertType } from 'ramda-asserters'

const validate = assertType('Object') // returns function (x: any) => object
const result = validate(42) // throws 'Expected 42 to have type Object, but got Number'

Installation

npm i ramda-asserters or yarn add ramda-asserters

Corresponding .babelrc, if you want to use it with babel (using babel-plugin-transform-imports):

{
  "plugins": [
    ["transform-imports", {
      "ramda-asserters": {
        "transform": "ramda-asserters/lib/${member}",
        "preventFullImport": true
      }
    }]
  ]
}
0.0.12

7 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago