@smockle/safe v3.0.2
safe
Verifies argument types.
Installation
Run npm install --save @smockle/safe
to add safe
to your project.
Usage
safe
can be called within a function to verify argument types:
const safe = require('./lib/safe').safe
function toUpperAndNotEmpty (xs, x) {
const unsafe = safe([
{ name: 'xs', type: 'array' },
{ name: 'x', type: 'string' }
], arguments)
if (unsafe) throw unsafe
return xs.concat(x ? x.toUpperCase() : [])
}
const a = [ 'aaa', 222, '', 'ccc', '' ]
a.reduce(toUpperAndNotEmpty, [])
// Throws TypeError('x must be a string')
const b = [ 'aaa', 'bbb', '', 'ccc', '' ]
b.reduce(toUpperAndNotEmpty, [])
// [ 'AAA', 'BBB', 'CCC' ]
safe
also includes a wrapper that accepts functions as a callback:
const safe = require('./lib/wrapper').safe
const toUpperAndNotEmpty = safe([
{ name: 'xs', type: 'array' },
{ name: 'x', type: 'string' }
])(
function (xs, x) {
return xs.concat(x ? x.toUpperCase() : [])
}
)
const a = [ 'aaa', 222, '', 'ccc', '' ]
a.reduce(toUpperAndNotEmpty, [])
// Throws TypeError('x must be a string')
const b = [ 'aaa', 'bbb', '', 'ccc', '' ]
b.reduce(toUpperAndNotEmpty, [])
// [ 'AAA', 'BBB', 'CCC' ]
API Reference
- safe
- .IDENTITY : Object.<string, string>
- .identifyTypeClass(type) ⇒ string | null
- .isSafe(type, value) ⇒ Boolean
- .safe(types, value) ⇒ TypeError
safe.IDENTITY : Object.<string, string>
Dictionary of type classes.
Kind: static constant of safe
safe.identifyTypeClass(type) ⇒ string | null
Select type class matching the provided parameter.
Kind: static method of safe
Returns: string | null - Type class.
Param | Type | Description |
---|---|---|
type | string | String representation of a primitive or instantiable type. |
safe.isSafe(type, value) ⇒ Boolean
Whether value is of provided type.
Kind: static method of safe
Returns: Boolean - Value is of provided type.
Param | Type | Description |
---|---|---|
type | string | String representation of a primitive or instantiable type. |
value | * | Value to check. |
safe.safe(types, value) ⇒ TypeError
Create TypeError when an argument doesn’t match provided type.
Kind: static method of safe
Returns: TypeError - Argument doesn’t match provided type.
Param | Type | Description |
---|---|---|
types | Array.<Object.<string, string>> | List of parameter names and types. |
value | * | List of values to check. |
ERROR, Cannot find module.
- instantiable
- .instantiables : Object.<string, (function()|Object|number)>
- .instantiableKeys : Array.<string>
- .isInstantiable(type) ⇒ Boolean
- .instanceOf(type, value) ⇒ Boolean
instantiable.instantiables : Object.<string, (function()|Object|number)>
Dictionary of instantiable names to instantiable types.
Kind: static constant of instantiable
instantiable.instantiableKeys : Array.<string>
List of instantiable types.
Kind: static constant of instantiable
instantiable.isInstantiable(type) ⇒ Boolean
Whether parameter represents an instantiable type.
Kind: static method of instantiable
Returns: Boolean - Parameter represents an instantiable type.
Param | Type | Description |
---|---|---|
type | string | String representation of an instantiable type. |
instantiable.instanceOf(type, value) ⇒ Boolean
Whether value is of provided instantiable type.
Kind: static method of instantiable
Returns: Boolean - Value is of provided instantiable type.
Param | Type | Description |
---|---|---|
type | string | String representation of a instantiable type. |
value | * | Value to check. |
Testing
safe
includes several unit tests. After cloning the safe
repo locally, run npm install
in the project folder to install dependencies. Run npm test
to execute the tests.