UNPKG

@eluvio/elv-js-helpers

Version:

A collection of Javascript helper functions used by several Eluvio libraries.

52 lines (47 loc) 1.4 kB
'use strict' const NumberModel = require('./NumberModel') const passesModelCheck = require('../Boolean/passesModelCheck') const assertAfterCheck = require('../ModelAssertion/assertAfterCheck') /** * An [ObjectModel](http://objectmodel.js.org/) which validates that an input * is: * * * A [Javascript Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) * * An integer * * If input passes validation, will return the input * * Throws an exception if passed in an invalid value. * * @class * @category Model * @sig * -> Integer | THROW * @param {*} - The input to validate * @returns {Integer} The validated input * @example * * 'use strict' * const IntegerModel = require('@eluvio/elv-js-helpers/Model/IntegerModel') * * IntegerModel(42) //=> 42 * * IntegerModel(4.2) //=> EXCEPTION: 'Value must be an integer (got: 4.2)' * * IntegerModel('foo') //=> EXCEPTION: 'expecting Number, got String "foo"' * * IntegerModel(Infinity) //=> EXCEPTION: 'Value must be an integer (got: Infinity)' * * IntegerModel(-Infinity) //=> EXCEPTION: 'Value must be an integer (got: -Infinity)' * */ const IntegerModel = NumberModel .extend() .assert( ...assertAfterCheck( passesModelCheck(NumberModel), n => Number.isInteger(n), 'must be an integer' ) ) .as('Integer') module.exports = IntegerModel