node-adjuster
validate and adjust input values
How to use
install by npm.
npm install -S adjuster
number
import adjuster from "adjuster";
// should be OK
adjuster.number().adjust(-123); // === -123;
adjuster.number().in(1, 3, 5).adjust(1); // === 1
// should be adjusted
adjuster.number().adjust("-123"); // === -123;
adjuster.number().default(10).adjust(undefined); // === 10
adjuster.number().allowEmpty(123).adjust(""); // === 123
adjuster.number().minValue(1, true).adjust(0); // === 1
adjuster.number().maxValue(100, true).adjust(101); // === 100
// should cause errors
adjuster.number().adjust(undefined); // throws AdjusterError; err.cause === adjuster.CAUSE.REQUIRED
adjuster.number().adjust(undefined, (err) => { // ...or catch by callback function
return 10; // returns a value from adjust() method
}); // === 10
adjuster.number().adjust("abc"); // throws AdjusterError; err.cause === adjuster.CAUSE.TYPE
adjuster.number().adjust(""); // throws AdjusterError; err.cause === adjuster.CAUSE.EMPTY
adjuster.number().in(1, 3, 5).adjust(2); // throws AdjusterError; err.cause === adjuster.CAUSE.IN
adjuster.number().minValue(1).adjust(0); // throws AdjusterError; err.cause === adjuster.CAUSE.MIN_VALUE
adjuster.number().maxValue(100).adjust(101); // throws AdjusterError; err.cause === adjuster.CAUSE.MAX_VALUE
string
import adjuster from "adjuster";
// should be OK
adjuster.string().adjust("123"); // === "123"
adjuster.string().allowEmpty("xyz").adjust(""); // === "xyz"
adjuster.string().in("eat", "sleep", "play").adjust("sleep"); // === "sleep"
// should be adjusted
adjuster.string().adjust(123); // === "123"
adjuster.string().default("xyz").adjust(undefined); // === "xyz"
adjuster.string().maxLength(5, true).adjust("abcdefg"); // === "abcde"
// should cause errors
adjuster.string().adjust(undefined); // throws AdjusterError; err.cause === adjuster.CAUSE.REQUIRED
adjuster.string().adjust(""); // throws AdjusterError; err.cause === adjuster.CAUSE.EMPTY
adjuster.string().in("eat", "sleep", "play").adjust("study"); // throws AdjusterError; err.cause === adjuster.CAUSE.IN
adjuster.string().minLength(5).adjust("a"); // throws AdjusterError; err.cause === adjuster.CAUSE.MIN_LENGTH
adjuster.string().maxLength(5).adjust("abcdefg"); // throws AdjusterError; err.cause === adjuster.CAUSE.MAX_LENGTH
IPv4
import adjuster from "adjuster";
// should be OK
adjuster.ipv4().adjust("0.0.0.0"); // === "0.0.0.0"
adjuster.ipv4().adjust("192.168.0.1"); // === "192.168.0.1"
adjuster.ipv4().adjust("255.255.255.255"); // === "255.255.255.255"
// should cause errors; err.cause === adjuster.CAUSE.IPV4
adjuster.ipv4().adjust("0.0.0.");
adjuster.ipv4().adjust("0.0.0.0.");
adjuster.ipv4().adjust("255.255.255.256");
IPv6
import adjuster from "adjuster";
// should be OK
adjuster.ipv6().adjust("0000:0000:0000:0000:0000:0000:0000:0000"); // === "0000:0000:0000:0000:0000:0000:0000:0000"
adjuster.ipv6().adjust("::1"); // === "::1"
adjuster.ipv6().adjust("::"); // === "::"
adjuster.ipv6().adjust("1::1"); // === "1::1"
adjuster.ipv6().adjust("::ffff:192.0.2.1"); // === "::ffff:192.0.2.1"; IPv4-mapped address
// should cause errors; err.cause === adjuster.CAUSE.IPV6
adjuster.ipv6().adjust("0000");
adjuster.ipv6().adjust("ffff:");
adjuster.ipv6().adjust("0000:0000:0000:0000:0000:0000:0000:0000:");
import adjuster from "adjuster";
// should be OK
adjuster.email().adjust("user+mailbox/department=shipping@example.com"); // === "user+mailbox/department=shipping@example.com"; dot-string
adjuster.email().adjust("!#$%&'*+-/=?^_`.{|}~@example.com"); // === "!#$%&'*+-/=?^_`.{|}~@example.com"; dot-string
adjuster.email().adjust("\"Fred\\\"Bloggs\"@example.com"); // === "\"Fred\\\"Bloggs\"@example.com"; quoted-string
adjuster.email().adjust("\"Joe.\\\\Blow\"@example.com"); // === "\"Joe.\\\\Blow\"@example.com"; quoted-string
adjuster.email().adjust("user@example-domain.com"); // === "user@example-domain.com"
adjuster.email().adjust("user@example2.com"); // === "user@example2.com"
// should cause errors; err.cause === adjuster.CAUSE.EMAIL
adjuster.email().adjust("@example.com");
adjuster.email().adjust(".a@example.com");
adjuster.email().adjust("a.@example.com");
adjuster.email().adjust("a..a@example.com");
adjuster.emal().adjust("user@example@com");
adjuster.email().adjust("user-example-com");
adjuster.email().adjust("user@example_domain.com");
adjuster.email().adjust("user@example.com2");
multiple data
import adjuster from "adjuster";
const inputData = {
id: "1",
name: "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Ciprin Cipriano de la Santísima Trinidad Ruiz y Picasso",
email: "picasso@example.com",
state: "active",
remote_addr: "127.0.0.1",
remote_addr_ipv6: "::1",
limit: "0",
};
const adjusters = {
id: adjuster.number().minValue(1),
name: adjuster.string().maxLength(16, true),
email: adjuster.email(),
state: adjuster.string().in("active", "inactive"),
remote_addr: adjuster.ipv4(),
remote_addr_ipv6: adjuster.ipv6(),
limit: adjuster.number().default(10).minValue(1, true).maxValue(100, true),
offset: adjuster.number().default(0).minValue(0, true),
};
const expected = {
id: 1,
name: "Pablo Diego José",
email: "picasso@example.com",
state: "active",
remote_addr: "127.0.0.1",
remote_addr_ipv6: "::1",
limit: 1,
offset: 0,
};
const adjusted = adjuster.adjustData(inputData, adjusters);
// expect(adjusted).toEqual(expected);
Release notes
- 2018/05/06 version 0.4.0
- New Functions
adjuster.ipv4()
adjuster.ipv6()
- Change Specifications
- strict IPv4 and IPv6 validation for
adjuster.email()
- strict IPv4 and IPv6 validation for
- New Functions
- 2018/04/22 version 0.3.0
- Bugfixes
- quoted-pair of email
- import error in
EmailAdjuster.es
- Change Specifications
- limit the length of local/domain part of email
- Bugfixes
- 2018/04/21 version 0.2.0
- Bugfixes
- test error on npm@5
- Change Specifications
- enable to specify value to
allowEmpty()
- support IPv6 domain for
EmailAdjuster
- enable to specify value to
- Bugfixes
- 2018/04/18 version 0.1.0
- First release.