
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Input validation with configured, custom 'valid' patterns definitions (pre-ES6 version).
Input validation with configured, custom 'valid' patterns definitions - for ES6 version check valdi-es6.
| Version | Published | By | URL |
|---|---|---|---|
| 0.0.374 | 2017-03-27 | codebloke | npm |
In order to install please run in your project path:
npm install --save valdi
var Valdi = require('valdi');
var ww1 = Valdi.simple.new('WW1').integer().greaterThan(1913).lessThan(1919);
console.log(ww1.value(1918));
console.log(ww1.value(2000));
console.log(ww1.value(1900));
shows following output:
true
false
false
var Valdi = require('valdi');
var ww1 = Valdi.simple.new('WW1').integer().greaterThan(1913).lessThan(1919),
ww2 = Valdi.simple.new('WW2').integer().greaterThan(1938).lessThan(1946);
console.log(
Valdi.expression.factory().setOperator('OR')
.add('WW1', ww1.value(1944))
.add('WW2', ww2.value(1944))
.result()
);
console.log(
Valdi.expression.factory().setOperator('OR')
.add('WW1', ww1.value(1984))
.add('WW2', ww2.value(1984))
.result()
);
shows following output:
true
false
var War = Valdi.simple.new()
.or().inList('1914,1915,1916,1917,1918')
.inList('1939,1940,1941,1942,1943,1944,1945');
console.log(War.value(1905));
console.log(War.value(1918));
console.log(War.value('ABC'));
console.log(War.value(1944));
console.log(War.value('Make peace not war'));
outputs following:
false
true
true
false
true
true
false
more about this approach here.
The example above can be asserted with a simple whitelist scenario that makes the code much neater (@spooky-monkey):
// include module in your project
var Valdi = require('valdi');
// include module in your project
var warYear = Valdi.simple.new('WW1 & WW2 years via native Array')
.integer().inList([1914,
1915,
1916,
1917,
1918,
1939,
1940,
1941,
1942,
1943,
1944,
1945]);
console.log(warYear.desc);
console.log(warYear.value(1944));
console.log(warYear.value(1984));
// true
// false
// include module in your project
var warYearJson = Valdi.simple.new('WW1 & WW2 years with whitelist in JSON')
.integer().inList('[1914, 1915, 1916, 1917, 1918, 1939, 1940, 1941, 1942, 1943, 1944, 1945]');
console.log(warYearJson.desc);
console.log(warYearJson.value(1944));
console.log(warYearJson.value(1984));
// true
// false
// include module in your project
var warYearCsv = Valdi.simple.new('WW1 & WW2 years with whitelist in CSV')
.integer().inList('1914,1915,1916,1917,1918,1939,1940,1941,1942,1943,1944,1945');
console.log(warYearCsv.desc);
console.log(warYearCsv.value(1944));
console.log(warYearCsv.value(1984));
// true
// false
// include module in your project
var warYearCsv2 = Valdi.simple.new(
'WW1 & WW2 years with whitelist in CSV w. doublequote delimiters'
).integer().inList(
'"1914","1915","1916","1917","1918","1939","1940","1941","1942","1943","1944","1945"'
);
console.log(warYearCsv2.desc);
console.log(warYearCsv2.value(1944));
console.log(warYearCsv2.value(1984));
Please note:
Simple is providing only conjuntions (assertions joined by AND only)!
var Valdi = require('valdi'),
simple = Valdi.simple; // simple validators all rules in conjunction (AND)
console.log( simple.new('A number').number().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number').number().value('ABC') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number').number().value('') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number').number().value({ obj: true }) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number').number().value(1234) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number').number().value(10.11) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number as string').numberAsString().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number as string').numberAsString().value('67.14') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number as string').numberAsString().value('334567') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An integer').integer().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer').integer().value(14.56) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer').integer().value(1234) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An integer with min').integer().min(23).value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with min').integer().min(23).value(100) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An integer with min').integer().min(123).value(100) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with max').integer().max(23).value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with max').integer().max(23).value(22) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An integer with max').integer().max(23).value(55) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with max & max').integer().min(5).max(15).value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with max & max').integer().min(5).max(15).value(14) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An integer with max & max').integer().min(5).max(15).value(-1) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer with max & max').integer().min(5).max(15).value(16) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer as string').integerAsString().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An integer as string').integerAsString().value('2345') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A real number').real().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A real number').real().value(2.15) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A real number').real().value('2.56') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A real number as string').realAsString().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A real number as string').realAsString().value('3.14') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A bool').bool().value(false) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A bool').bool().value(true) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A bool').bool().value(null) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A bool').bool().value({ obj: true }) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A null').null().value(null) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A null').null().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A null').null().value({ obj: true}) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value('en') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value('ar') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value('ja') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value('de') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A valid locale').validLocale().value('invalid') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A string value').string().value('false') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A string value').string().value({ obj: true }) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A string value').string().value(112.33) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A string value').string().value('Valid string') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An email').string().value('martin.swiderski@gmail.com') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An email').string().value('spooks@8ig.uk') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An email').string().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An empty string').emptyString().value('martin.swiderski@gmail.com') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('An empty string').emptyString().value('') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('An empty string').emptyString().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number greater than').number().greaterThan(100).value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number greater than').number().greaterThan(100).value(101) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').number().greaterThan(2).value(1) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number greater than').number().greaterThan(25).value(32) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').number().greaterThan(25).value(32) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').integer(true).greaterThan(25).value('32') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').real(true).greaterThan(1.3).value(2.1) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').real(true).greaterThan(15.1).value(30.1) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').real(true).greaterThan('1.3').value('2.1') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number greater than').real(true).greaterThan('15.1').value('30.1') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number less than').number().lessThan(100).value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number less than').number().lessThan(100).value(78) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number less than').number().lessThan('748').value(200) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number less than').number().lessThan(55).value(3) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number less than').number().lessThan(11).value(71) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number less than').number(true).lessThan('11').value('7') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number less than').integer(true).lessThan('11').value('71') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number less than').real(true).lessThan('10.56').value('10.1') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('A number equal').number().equal(100).value(100) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number equal').number().equal(100).value(100.00) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A string equal').string().equal('ABC').value('ABC') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number not equal').number().notEqual(123).value(100) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A number not equal').number().notEqual(99).value(100.00) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('A string not equal').string().notEqual('AXC').value('ABC') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value('["8.8.8.8","2001:4860:4860::8888","2001:4860:4860::8844"]') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value('"8.8.8.8","2001:4860:4860::8888","2001:4860:4860::8844"') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value('8.8.8.8,2001:4860:4860::8888,2001:4860:4860::8844') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value('8.8.8.8,2001:4860:4860::8888,2001:4860:4860::8844') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value(false) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Array as string')
.string().arrayAsString().value([1, 2,3]) );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid URL')
.string().url().value('http://cecpvmlx080.internal.boo.net:8055/') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid URL')
.string().url().value('GaHssDGHDGghwsgyw') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid Base64').string().base64().value('aGVyZSB3ZSBjb21lIGFnYWlu') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid Base64').string().base64().value('GaHssDGHDGghwsgyw') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid IPv4').string().ipv4().value('10.10.1.1') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid IPv4').string().ipv4().value('GaHssDGHDGghwsgyw') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid IPv6').string().ipv6().value('2001:4860:4860::8888') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid IPv6').string().ipv6().value('GaHssDGHDGghwsgyw') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('xx').value('2001:4860:4860::8888') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('en').value('Christopher Marlowe\'s 0123456789'));
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('de')
.value('Gebhard-Leberecht von Blücher Fürst von Wahlstatt 0123456789') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('fr').value('AntoineDeSaint-Exupéry0123456789') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('ja').value('宮本武蔵 0123456789') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Valid Alphanum')
.string().alphanumeric('ar').value('صلاحالدينيوسفبنأيوب0123456789') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Valid Regex')
.string().regexMatch(/^\w+$/).value('0123456789') );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid Regex')
.string().regexMatch(/^\w+$/).value('0123456789 (trigger regex false)') );
console.log( 'expected: false' );
console.log( '' );
console.log( simple.new('Valid JSON')
.string().jsonString().value(JSON.stringify({this: 'is JSON'})) );
console.log( 'expected: true' );
console.log( '' );
console.log( simple.new('Invalid JSON')
.string().jsonString().value('GaHssDGHDGghwsgyw') );
console.log( 'expected: false' );
console.log( '' );
var War = Valdi.simple.new()
.or().inList('1914,1915,1916,1917,1918')
.inList('1939,1940,1941,1942,1943,1944,1945');
console.log(War.value(1905));
console.log(War.value(1918));
console.log(War.value('ABC'));
console.log(War.value(1944));
console.log(War.value('Make peace not war'));
this would give you:
false
true
true
false
true
true
false
FAQs
Input validation with configured, custom 'valid' patterns definitions (pre-ES6 version).
We found that valdi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.