@scuba-squad/validation

Validation library with several data validation methods

Usage no npm install needed!

<script type="module">
  import scubaSquadValidation from 'https://cdn.skypack.dev/@scuba-squad/validation';
</script>

README

Validation

Build Status Coverage Status

Table of Content

Purpose

Collection of helpful functions for data validation

Installation

Via npm

npm install @scuba-squad/validation

API

isAfter(value: date | number | string | array | object, compare: ?date | number | string | array | object = Date.now()): boolean

Added in: v1.0.0

Check if the value is after the compare

arguments:

  1. value: date | number | string | array | object
  2. compare: ?date | number | string | array | object = Date.now()

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAfter(new Date(2020), new Date(2010)); // true
Validation.isAfter(9, 5); // true
Validation.isAfter('2020-01-01', '2010-01-01'); // true
Validation.isAfter({y: 2020}, {y: 2010}); // true
Validation.isAfter('2030-01-01'); // true / compare defaults to Date.now()

Validation.isAfter(9) // false / compare defaults to Date.now()

isAll(value: mixed, ...callable: function | string | regexp | array): boolean

Added in: v1.0.0

Check if the value passes all the provided callable functions

arguments:

  1. value: mixed
  2. ...callable: function | string | regexp | array
  • function is any function that can be called passing value as the first argument
  • string is name of a @scuba-squad/validation function
  • regexp is a regexp to validate against using a bound test method
  • array allows for additional arguments to be passed to the function

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAll('hello world!', 'isString', ['isLength', {max: 16}]); // true
Validation.isAll('{"a": 5}', 'isJSON', function(value) {
  value = JSON.parse(value);

  return !!value.a;
}); // true

isAlpha(value: string): boolean

Added in: v1.0.0

Check if the value contains only case insensitive ascii characters A-Z

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAlpha('asdf'); // true

Validation.isAlpha('asdf4'); // false

isAlphaNumberic(value: string): boolean

Added in: v1.0.0

Check if the value contains only case insensitive ascii characters A-Z and/or 0-9

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAlphaNumberic('asdf'); // true
Validation.isAlphaNumberic('asdf4'); // true

Validation.isAlphaNumberic('asdf!'); // false

isAmericanExpress(value: string | number): boolean

Added in: v1.0.0

Check if the value is an American Express primary account number

arguments:

  1. value: string | number

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAmericanExpress('378282246310005'); // true

Validation.isAmericanExpress('6011111111111117'); // false

isAny(value: mixed, ...callable: function | string | regexp | array): boolean

Added in: v1.0.0

Check if the value passes any of the provided callable functions

arguments:

  1. value: mixed
  2. ...callable: function | string | regexp | array
  • function is any function that can be called passing value as the first argument
  • string is name of a @scuba-squad/validation function
  • regexp is a regexp to validate against using a bound test method
  • array allows for additional arguments to be passed to the function

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAny(5, 'isUndefined', 'isNull', 'isInteger'); // true
Validation.isAny('6011111111111117', 'isAmericanExpress', 'isDiscover'); // true

isArguments(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Arguments object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

let fn = function() {
  Validation.isArguments(arguments); // true
};

let spread = function(arg, ...rest) {
  Validation.isArguments(arg); // false
  Validation.isArguments(rest); // false
};

isArray(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Array object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isArray([]); // true
Validation.isArray(Array.from(new Set([1, 2]))); // true

Validation.isArray(new Set([1, 2])); // false
let fn = function() {
  Validation.isArray(arguments); // false
};

isAscii(value: string): boolean

Added in: v1.0.0

Check if the value contains only ascii characters

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isAscii('hello world!'); // true
Validation.isAscii('~!@#$%^&*()_+|}{POIUYTREWQASDFGHJKL:"?><MNBVCXZ"}'); // true

Validation.isAscii('Δ'); // false
Validation.isAscii('=adklãjfhsd'); // false

isBase64(value: string): boolean

Added in: v1.0.0

Check if the value is a base64 encoded string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isBase64('aifrledy'); // true
Validation.isBase64('a83k/ts='); // true

Validation.isBase64('we48tuer='); // false
Validation.isBase64('=adkljfhsd'); // false

isBefore(value: date | number | string | array | object, compare: ?date | number | string | array | object = Date.now()): boolean

Added in: v1.0.0

Check if the value is before the compare

arguments:

  1. value: date | number | string | array | object
  2. compare: ?date | number | string | array | object = Date.now()

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isBefore(new Date(2010)); // true / compare defaults to Date.now()
Validation.isBefore(5, 9); // true
Validation.isBefore('2010-01-01', '2020'); // true
Validation.isBefore({y: 2010}, {y: 2020}); // true
Validation.isBefore(9); // true / compare defaults to Date.now()

Validation.isBefore('2030-01-01'); // false / compare defaults to Date.now()

isBoolean(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Boolean object or primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isBoolean(true); // true
Validation.isBoolean(false); // true
Validation.isBoolean(new Boolean()); // true

Validation.isBoolean(1); // false
Validation.isBoolean('true'); // false

isCreditCard(value: string): boolean

Added in: v1.0.0

Check if the value is a credit card primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isCreditCard('378282246310005'); // true
Validation.isCreditCard('6011111111111117'); // true
Validation.isCreditCard('3530111333300000'); // true
Validation.isCreditCard('5555555555554444'); // true
Validation.isCreditCard('4111111111111111'); // true
Validation.isCreditCard('4222222222222'); // true

Validation.isCreditCard('378282246310004'); // false
Validation.isCreditCard('6011161111111117'); // false
Validation.isCreditCard('5555555535554444'); // false

isDataURI(value: string): boolean

Added in: v1.0.0

Check if the value is a data URI string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isDataURI('data:,'); // true
Validation.isDataURI('data:text/vnd-example+xyz;foo=bar;base64,R0lGODdh'); // true
Validation.isDataURI('data:text/plain;charset=UTF-8;page=21,the%20data:1234,5678'); // true

Validation.isDataURI('data:we48tuer'); // false
Validation.isDataURI('data:test,we[foewf]'); // false
Validation.isDataURI('data:34w98uerj,'); // false

isDate(value: date | number | string | array | object): boolean

Added in: v1.0.0

Check if the value is a date object or parsable as 1 via moment.js

arguments:

  1. value: date | number | string | array | object

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isDate(new Date()); // true
Validation.isDate(Date.now()); // true
Validation.isDate('2020-01-01'); // true
Validation.isDate([2020, 1, 1]); // true
Validation.isDate({y: 2020}); // true

isDinersClub(value: string): boolean

Added in: v1.0.0

Check if the value is a Diners Club card primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isDinersClub('30569309025904'); // true
Validation.isDinersClub('38520000023237'); // true

Validation.isDinersClub('378282246310004'); // false
Validation.isDinersClub('6011111111111117'); // false

isDiscover(value: string): boolean

Added in: v1.0.0

Check if the value is Discover card primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isDiscover('6011111111111117'); // true
Validation.isDiscover('6011000990139424'); // true

Validation.isDiscover('378282246310004'); // false
Validation.isDiscover('6011111111111116'); // false

isDomainName(value: mixed, idn: boolean = true): boolean

Added in: v1.0.0

Check if the value is a domain name

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isDomainName('code.google.com'); // true
Validation.isDomainName('例子.测试'); // true

Validation.isDomainName('.foo.com'); // false
Validation.isDomainName('##.$/'); // false

isEmailAddress(value: string): boolean

Added in: v1.0.0

Check if the value is an email address string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isEmailAddress('#!$%&\'*+-/=?^_`{}|~@example.org'); // true
Validation.isEmailAddress('email@123.123.123.123'); // true
Validation.isEmailAddress('email@example.co.jp'); // true

Validation.isEmailAddress('A@b@c@example.com'); // false
Validation.isEmailAddress('a"b(c)d,e:f;g<h>i[j\k]l@example.com'); // false
Validation.isEmailAddress('this\ still\"not\\allowed@example.com'); // false

isEmpty(value: mixed): boolean

Added in: v1.0.0

Check if the value is empty

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isEmpty({}); // true
Validation.isEmpty([]); // true
Validation.isEmpty(''); // true

Validation.isEmpty({a: 5}); // false
Validation.isEmpty([1]); // false
Validation.isEmpty('a'); // false

isEqual(value: mixed, compare: mixed): boolean

Added in: v1.0.0

Check if the value is equal to the compare

arguments:

  1. value: mixed
  2. compare: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isEqual(true, new Boolean(1)); // true
Validation.isEqual({a: 5}, {a: 5}); // true
Validation.isEqual(/asd/, new RegExp('asd')); // true

Validation.isEqual({a: 5}, {a: 5, b: undefined}); // false
Validation.isEqual([1, 2, 3], [1, 3, 2]); // false

isError(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Error object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isError(new Error()); // true
Validation.isError(new TypeError()); // true
Validation.isError(new ReferenceError()); // true

try {
  throw 'this is a string';
} catch (error) {
  Validation.isError(error); // false
}

isExtensible(value: mixed): boolean

Added in: v1.0.0

Check if the value is Extensible

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isExtensible({a: 5}); // true
Validation.isExtensible([1, 2]); // true

Validation.isExtensible(1); // false
Validation.isExtensible(Object.preventExtensions({a: 5})); // false

isFloat(value: mixed, opt: {min: ?number, max: ?number, step: ?number, safe: ?boolean} = {}): boolean

Added in: v1.0.0

Check if the value is a floating point number

arguments:

  1. value: mixed
  2. opt: object = {}
    • min: ?number minimum acceptable value
    • max: ?number maximum acceptable value
    • step: ?number value must be divisible by
    • safe: ?boolean value must be castable to a number without loss of precision

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isFloat('5.6'); // true
Validation.isFloat(4, {min: 0, max: 5, step: .5}); // true
Validation.isFloat('1.7976931348623157e+308'); // true

Validation.isFloat(4.1, {min: 0, max: 5, step: .5}); // false
Validation.isFloat('1.7976931348623157e+309', {safe: true}); // false

isFrozen(value: mixed): boolean

Added in: v1.0.0

Check if the value is Frozen

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isFrozen(Object.freeze({a: 5})); // true
Validation.isFrozen(1); // true

Validation.isFrozen({a: 5}); // false
Validation.isFrozen([1, 2]); // false

isFunction(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Function object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isFunction(function(){}); // true
Validation.isFunction(Validation.isFunction); // true

Validation.isFunction({
  fn: function(){}
}); // false

isGenerator(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Generator object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

Validation.isGenerator(gen()); // true

Validation.isGenerator(gen); // false
Validation.isGenerator(function(){}); // false

isGeneratorFunction(value: mixed): boolean

Added in: v1.0.0

Check if the value is GeneratorFunction object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

Validation.isGeneratorFunction(gen); // true

Validation.isGeneratorFunction(function(){}); // false

isHexadecimal(value: string): boolean

Added in: v1.0.0

Check if the value is Hexadecimal string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isHexadecimal(0x5af); // true
Validation.isHexadecimal(45); // true
Validation.isHexadecimal('ad45'); // true

Validation.isHexadecimal('adsf'); // false
Validation.isHexadecimal(-45); // false

isHexColor(value: string): boolean

Added in: v1.0.0

Check if the value is a Hex triplet color string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isHexColor('#fFfffF'); // true
Validation.isHexColor('#fff'); // true
Validation.isHexColor('fff'); // true

Validation.isHexColor('#asd'); // false
Validation.isHexColor('ffff'); // false

isInteger(value: mixed, opt: {min: ?number, max: ?number, step: ?number, safe: ?boolean} = {}): boolean

Added in: v1.0.0

Check if the value is an integer value

arguments:

  1. value: mixed
  2. opt: object = {}
    • min: ?number minimum acceptable value
    • max: ?number maximum acceptable value
    • step: ?number value must be divisible by
    • safe: ?boolean value must be castable to a number without loss of precision

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isInteger(5); // true
Validation.isInteger(5, {min: 0, max: 5}); // true
Validation.isInteger('9007199254740991', {safe: true}); // true

Validation.isInteger(5.1); // false
Validation.isInteger(6, {min: 0, max: 5}); // false
Validation.isInteger('9007199254740992', {safe: true}); // false

isIP(value: string, version: ?number): boolean

Added in: v1.0.0

Check if the value is an ip address string of the optional version

arguments:

  1. value: string
  2. version: ?number 4 or 6

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isIP('67.213.74.8'); // true
Validation.isIP('67.213.74.8', 4); // true
Validation.isIP('2001:db8::ff00:42:8329'); // true
Validation.isIP('2001:db8::ff00:42:8329', 6); // true

Validation.isIP('67.213.74.8', 6); // false
Validation.isIP('2001:db8::ff00:42:8329', 4); // false

isISBN(value: string, version: ?number): boolean

Added in: v1.0.0

Check if the value is an ISBN string of the optioanl version

arguments:

  1. value: string
  2. version: ?number 10 or 13

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isISBN('99921-58-10-7'); // true
Validation.isISBN('978-3-16-148410-0'); // true

Validation.isISBN('99921-58-10-7', 13); // false
Validation.isISBN('978-3-16-148410-0', 10); // false

isISIN(value: string): boolean

Added in: v1.0.0

Check if the value is an ISIN string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isISIN('US5949181045'); // true
Validation.isISIN('DE000DB7HWY7'); // true

Validation.isISIN('JP3946603008'); // false
Validation.isISIN('DE000CMFVX13'); // false

isISRC(value: string): boolean

Added in: v1.0.0

Check if the value is a ISRC string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isISRC('JMK401400212'); // true
Validation.isISRC('VN9TT7593452'); // true

Validation.isISRC('JMK40140021F'); // false
Validation.isISRC('4Z4KL4789202'); // false

isISSN(value: string): boolean

Added in: v1.0.0

Check if the value is an ISSN string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isISSN('0000-0019'); // true
Validation.isISSN('2434561X'); // true

Validation.isISSN('000-00019'); // false
Validation.isISSN('9083-128X'); // false

isIterable(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Iterable protocol

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isIterable([1, 2, 3]); // true
Validation.isIterable('adsf'); // true

Validation.isIterable({a: 5}); // false

isIterableIterator(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Iterable and Iterator protocol

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

Validation.isIterableIterator(gen()); // true
Validation.isIterableIterator(new Set()[Symbol.iterator]()); // true

Validation.isIterableIterator([1, 2, 3]); // false
Validation.isIterableIterator('adsf'); // false

isIterator(value: mixed): boolean

Added in: v1.0.0

Check if the value is an Iterator protocol

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

Validation.isIterator(gen()); // true
Validation.isIterator(new Set()[Symbol.iterator]()); // true

Validation.isIterator([1, 2, 3]); // false
Validation.isIterator('adsf'); // false

isJCB(value: string): boolean

Added in: v1.0.0

Check if the value is a JCB card primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isJCB('3530111333300000'); // true
Validation.isJCB('3566002020360505'); // true

Validation.isJCB('378282246310004'); // false
Validation.isJCB('6011111111111117'); // false

isJSON(value: string): boolean

Added in: v1.0.0

Check if the value is a JSON string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isJSON('{"a":{"z":true,"x":5.6,"y":"h"},"b":-6}'); // true
Validation.isJSON('true'); // true

Validation.isJSON('{a:false}'); // false
Validation.isJSON('truez'); // false

isLatitude(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Latitude coordinate

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isLatitude(90); // true
Validation.isLatitude(-90); // true

Validation.isLatitude(90.00001); // false
Validation.isLatitude(-90.00001); // false

isLength(value: mixed, length: ?number | {min: ?number = 1, max: ?number}): boolean

Added in: v1.0.0

Check if the value is a specific length

arguments:

  1. value: mixed
  2. length: ?number | {min: ?number = 1, max: ?number}
  • min: ?number = 1 minimum acceptable length
  • max: ?number maximum acceptable length

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isLength([1]); // true / min defaults to 1
Validation.isLength('asd', 3); // true / passing a number checks exact length
Validation.isLength(new Set([1, 2]), {max: 5}); // true / size is checked if length is not defined

Validation.isLength([]); // false / length is not > 1
Validaiton.isLength([1, 2], 3); // false / length is not equal to 3
Validation.isLength({a: 5}); // false / no length or size property

isLongitude(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Longitude coordinate

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isLongitude(180); // true
Validation.isLongitude(-180); // true

Validation.isLongitude(180.00001); // false
Validation.isLongitude(-180.00001); // false

isLuhn(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Luhn number

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isLuhn('378282246310005'); // true
Validation.isLuhn(38520000023237); // true

Validation.isLuhn('30569209025904'); // false
Validation.isLuhn(14); // false

isMACAddress(value: string): boolean

Added in: v1.0.0

Check if the value is a MAC address string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isMACAddress('af:4f:a8:93:01:d2'); // true
Validation.isMACAddress('d2:39:67:bb:5c:f8'); // true

Validation.isMACAddress('af:4f:a8:h3:01:d2'); // false
Validation.isMACAddress('af:4f:a8:93:01'); // false

isMap(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Map object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validaiton.isMap(new Map()); // true

Validation.isMap(new WeakMap()); // false

isMastercard(value: string): boolean

Added in: v1.0.0

Check if the value is a Mastercard primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isMastercard('5555555555554444'); // true
Validation.isMastercard('5105105105105100'); // true

Validation.isMastercard('378282246310004'); // false
Validation.isMastercard('5610591081018250'); // false

isMatch(value: mixed, compare: mixed): boolean

Added in: v1.0.0

Check if the value contains the key: value pairs from the compare object

arguments:

  1. value: mixed
  2. compare: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isMatch({a: 5, b: true}, {b: true}); // true
Validation.isMatch({z: 'hi', x: 'bye'}, {z: 'hi', x: 'bye'}); // true

Validation.isMatch({a: 5, b: true}, {b: false}); // false
Validation.isMatch({z: 'hi', x: 'bye'}, {z: 'hi', g: 'bye'}); // false

isMD5(value: string): boolean

Added in: v1.0.0

Check if the value is a MD5 hash string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isMD5('62c4f0b4dbe2a9cf80e003bdd7011f54'); // true
Validation.isMD5('190102c2743633072e050c8d697faebc'); // true

Validation.isMD5('190102c2743633072e050c8d697faebx'); // false
Validation.isMD5('af:4ff:a8:93:01:d2'); // false

isMongoId(value: string): boolean

Added in: v1.0.0

Check if the value is a mongoDB id string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isMongoId('62c4f0b4dbe2a9cf80e003bd'); // true
Validation.isMongoId('ae898bce08fcd570d7e36d34'); // true

Validation.isMongoId('ae898bce08fcd570d7e36d3g'); // false
Validation.isMongoId('af:hf:a8:93:01:d2'); // false

isNaN(value: mixed): boolean

Added in: v1.0.0

Check if the value is NaN

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isNaN(NaN); // true
Validation.isNaN(1 - 'a'); // true

Validation.isNaN(1 + 3); // false
Validation.isNan('NaN'); // false

isNull(value: mixed): boolean

Added in: v1.0.0

Check if the value is null primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isNull(null); // true

Validation.isNull(undefined); // false
Validation.isNull(void 0); // false

isPhoneNumber(value: string, country: ?string | @scuba-squad/country): boolean

Added in: v1.0.0

Check if the value is a phone number string for the provided country

arguments:

  1. value: string
  2. country: ?string | @scuba-squad/country

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPhoneNumber('2 9282 2833', 'AU'); // true
Validation.isPhoneNumber('499 248-30-03', 'RUS'); // true
Validation.isPhoneNumber('406–692–7753', '840'); // true
Validation.isPhoneNumber('+44 20 7638 4141'); // true / country not required with international calling code

Validation.isPhoneNumber('806-642-7676', 'CN'); // false
Validation.isPhoneNumber('555–692–7753', 'US'); // false
Validation.isPhoneNumber('+44 20 7638 4141', 'US'); // false

isPlural(value: string): boolean

Added in: v1.0.0

Check if the value is a plural word

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPlural('items'); // true
Validation.isPlural('cars'); // true

Validation.isPlural('table'); // false
Validation.isPlural('chair'); // false

isPort(value: mixed): boolean

Added in: v1.0.0

Check if the value is a network port

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPort(26); // true
Validation.isPort('80'); // true
Validation.isPort(65535); //true

Validation.isPort(0); // false
Validation.isPort(65536); // false

isPostalCode(value: string, country: ?string | @scuba-squad/country): boolean

Added in: v1.0.0

Check if the value is a postal code string for the optionally provided country

arguments:

  1. value: string
  2. country: ?string | @scuba-squad/country

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPostalCode('90210'); // true
Validation.isPostalCode('ab5g-9wt', 'GB'); // true
Validation.isPostalCode('ab5g-9wt', 'GBR'); // true
Validation.isPostalCode('ab5g-9wt', '826'); // true

Validation.isPostalCode('90210', 'AU'); // false
Validation.isPostalCode('9115-41034', 'US'); // false

isPrimitive(value: mixed): boolean

Added in: v1.0.0

Check if the value is a primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPrimitive(undefined); // true
Validation.isPrimitive(null); // true
Validation.isPrimitive(false); // true
Validation.isPrimitive(0); // true
Validation.isPrimitive(''); // true
Validation.isPrimitive(NaN); // true
Validation.isPrimitive(Infinity); // true
Validation.isPrimitive(Symbol()); // true

Validation.isPrimitive(new Boolean()); // false
Validation.isPrimitive(new Number(0)); // false
Validation.isPrimitive(new String('')); // false

isPromise(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Promise object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPromise(new Promise(function(resolve, reject){})); // true
Validation.isPromise(Promise.resolve()); // true

Validation.isPromise(function(resolve, reject){}); // false

isPunctuation(value: string): boolean

Added in: v1.0.0

Check if the value contains only ascii punctuation characters

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isPunctuation('!"#%&\'()*,-./:;?@[]_{}'); // true

Validation.isPunctuation('hello world!'); // false

isRegExp(value: mixed): boolean

Added in: v1.0.0

Check if the value is a RegExp object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isRegExp(/asd/); // true
Validation.isRegExp(new RegExp('3')); // true

Validation.isRegExp('/asd/'); // false

isSealed(value: mixed): boolean

Added in: v1.0.0

Check if the value is Sealed

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSealed(Object.seal({a: 5})); // true
Validation.isSealed(1); // true

Validation.isSealed({a: 5}); // false
Validation.isSealed([1, 2]); // false

isSemVer(value: mixed): boolean

Added in: v1.0.0

Check if the value is a semver string

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSemVer('1.0.0'); // true
Validation.isSemVer('1.0.0-beta.0.7+rc.2.6'); // true

Validation.isSemVer('v1.0.5'); // false
Validation.isSemVer('1.0.0-00.1'); // false

isSet(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Set object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSet(new Set([1, 2])); // true

Validation.isSet([1, 2]); // false
Validation.isSet(new Map([['a', 5]])); // false

isSHA1(value: mixed): boolean

Added in: v1.0.0

Check if the value is a SHA1 string

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

isSHA256(value: mixed): boolean

Added in: v1.0.0

Check if the value is a SHA-256 string

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSHA256('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'); // true

Validation.isSHA256('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85'); // false
Validation.isSHA256('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85X'); //false

isSHA384(value: mixed): boolean

Added in: v1.0.0

Check if the value is a SHA-384 string

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSHA384('38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b'); // true

Validation.isSHA384('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'); // false
Validation.isSHA384('38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b9'); //false

isSHA512(value: mixed): boolean

Added in: v1.0.0

Check if the value is a SHA-512 string

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSHA512('cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e'); // true

Validation.isSHA512('38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b'); //false
Validation.isSHA512('cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da'); // false

isSingular(value: string): boolean

Added in: v1.0.0

Check if the value is a singular word

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSingular('item'); // true
Validation.isSingular('car'); // true

Validation.isSingular('tables'); // false
Validation.isSingular('chairs'); // false

isString(value: mixed): boolean

Added in: v1.0.0

Check if the value is a String object or primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isString('hello world!'); // true
Validation.isString(new String('hi')); // true

Validation.isString(true); // false
Validation.isString(/asd/); // false

isSymbol(value: mixed): boolean

Added in: v1.0.0

Check if the value is a Symbol primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isSymbol(Symbol()); // true
Validation.isSymbol(Symbol.iterator); // true

Validation.isSymbol({a: 5}); // false
Validation.isSymbol([1, 2]); // false

isTime(value: string): boolean

Added in: v1.0.0

Check if the value is a time string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isTime('23:59:59.999999999'); // true / 24hr format
Validation.isTime('1:24 P.M.'); // true / meridiem
Validation.isTime('6 AM'); // true / meridiem
Validation.isTime('13:01Z'); // true / Z indicates UTC timezone
Validation.isTime('13:01+3'); // true / time zone offeset from UTC
Validation.isTime('13:01 MST'); // true / timezone abbreviation
Validation.isTime('13:01 Mountain Standard Time'); // true / timezone name
Validation.isTime('13:01 America/Denver'); // true / tzdb name

Validation.isTime('24'); // false / 24 hr is invalid
Validation.isTime('3:60'); // false / 60 min is invalid
Validation.isTime('13:01PM'); // false / meridiem is 12hr format

isUndefined(value: mixed): boolean

Added in: v1.0.0

Check if the value is undefined primitive

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isUndefined(); // true
Validation.isUndefined(undefined); // true

Validation.isUndefined(null); // false

isURL(value: string): boolean

Added in: v1.0.0

Check if the value is a URL string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isURL('http://google.com'); // true
Validation.isURL('http://例子.测试'); // true
Validation.isURL('http://a1-._~!amp;(\')+=*,;%24@example.com'); // true

Validation.isURL('http://-error-.invalid/'); // false
Validation.isURL('http://foo.bar?q=Spaces should be encoded'); // false

isURN(value: string): boolean

Added in: v1.0.0

Check if the value is a URN string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isURN('urn:ietf:rfc:2648'); // true
Validation.isURN('URN:EXAMPLE:a123%2cz456'); // true
Validation.isURN('urn:example:weather?+lang=en-US?=lat=39.56&lon=-104.85#tomorrow'); // true

Validation.isURN('urn:isbn/0451450523'); // false
Validation.isURN('urn:example:weather?=q=this should be percent encoded'); // false

isUUID(value: string): boolean

Added in: v1.0.0

Check if the value is a UUID string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isUUID('2fed40d0-774e-11e7-b5a5-be2e44b06b34'); // true
Validation.isUUID('737e6050-7b96-499b-b71e-efa75d1b90c2'); // true

Validation.isUUID('2fed40d0774e11e7b5a5be2e44b06b34'); // false

isVIN(value: string): boolean

Added in: v1.0.0

Check if the value is a VIN string

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isVIN('4A4MN41S15E063265'); // true
Validation.isVIN('3N1AB51D92L747926'); // true

Validation.isVIN('4A4MN41415E063265'); // false
Validation.isVIN('1GCGC33G6TF039278'); // false

isVisa(value: string): boolean

Added in: v1.0.0

Check if the value is a Visa card primary account number

arguments:

  1. value: string

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isVisa('4111111111111111'); // true
Validation.isVisa('4012888888881881'); // true
Validation.isVisa('4222222222222'); // true

Validation.isVisa('378282246310004'); // false
Validation.isVisa('5610591081018250'); // false

isWeakMap(value: mixed): boolean

Added in: v1.0.0

Check if the value is a WeakMap object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isWeakMap(new WeakMap()); // true
Validation.isWeakMap(new WeakMap([[{a: 4}, 4]])); // true

Validation.isWeakMap(new Map()); // false
Validation.isWeakMap(new WeakSet()); // false

isWeakSet(value: mixed): boolean

Added in: v1.0.0

Check if the value is a WeakSet object

arguments:

  1. value: mixed

returns: boolean

const Validation = require('@scuba-squad/validation');

Validation.isWeakSet(new WeakSet()); // true
Validation.isWeakSet(new WeakSet([{a: 4}])); // true

Validation.isWeakSet(new Set()); // false
Validation.isWeakSet(new WeakMap()); // false

Test

tests

npm install
npm test

License

MIT