Checkard.js is an open source dynamic type checking library for Javascript, Typescript and Node.js to test if a given variable is what it is supposed to be ( Function, object, ascii, boolean, integer, string, json, email...)
- No dependency
- Very lightweight
- Thoroughly tested
- Works in browsers and Node.js
- Works in Javascript and Typescript
- Old browsers support
- android: 2.2,
- chrome: 34,
- edge: 12,
- firefox: 11,
- ie: 9,
- ios: 4.2,
- opera: 28,
- safari: 5.1,
- samsung: 4
Those are the oldest targeted versions. The library should work properly on older devices but we do not support it officially.
$ npm i @dwtechs/checkard
import { isFunction, isArray } from "@dwtechs/checkard";
if (isFunction(variable)) {
//variable is a function
}
if (!isArray(variable, '=', 2)) {
//variable is not an array of length 2
}
const ch = require("@dwtechs/checkard/dist/ch");
if (ch.isFunction(variable)) {
//variable is a function
}
if (!ch.isArray(variable, '=', 2)) {
//variable is not an array of length 2
}
<script src="node_modules/@dwtechs/checkard/dist/ch.iife.min.js"></script>
if (ch.isFunction(variable)) {
//variable is a function
}
if (!ch.isArray(variable, '=', 2)) {
//variable is not an array of length 2
}
Comparator = '='|'<'|'>'|'<='|'>=';
isBoolean(bool: any): boolean {}
isString(string: any, emptyCheck?: boolean = false): boolean {}
// If typeCheck = false values like '4', '0', '8e4', '+true', '0x44' return true
isNumber(number: any, typeCheck?: boolean = true): boolean {}
isSymbol(sym: any): boolean {}
isFunction(func: any): boolean {}
isObject(obj: any, emptyCheck?: boolean = false): boolean {}
//Check whether val is null or undefined
isNil(val: any): boolean {}
isInteger(number: any, typeCheck?: boolean = true): boolean {}
isFloat(number: any, typeCheck?: boolean = true): boolean {}
isEven(number: any, typeCheck?: boolean = true): boolean {}
isOdd(number: any, typeCheck?: boolean = true): boolean {}
isOrigin(number: any, typeCheck?: boolean = true): boolean {}
isPositive(number: any, typeCheck?: boolean = true): boolean {}
isNegative(number: any, typeCheck?: boolean = true): boolean {}
isPowerOfTwo(number: any, typeCheck?: boolean = true): boolean {}
isAscii(code: any, extended?: boolean = false): boolean {}
isValidNumber(number: any,
min?: number = -999999999,
max?: number = 999999999,
typeCheck?: boolean = true ): boolean {}
isValidInteger(number: any,
min?: number = -999999999,
max?: number = 999999999,
typeCheck?: boolean = true ): boolean {}
isValidFloat( number: any,
min?: number = -999999999.9,
max?: number = 999999999.9,
typeCheck?: boolean = true ): boolean {}
isStringOfLength( string: any,
min?: number = 0,
max?: number = 999999999 ): boolean {}
isJson(string: any): boolean {}
isRegex(regex: any, typeCheck?: boolean = true): boolean {}
isEmail(email: any): boolean {}
isIpAddress(ipAddress: any): boolean {}
isJWT(t: any): boolean {}
isSlug(slug: any): boolean {}
isHexadecimal(string: any): boolean {}
containsUpperCase(string: any): boolean {}
containsLowerCase(string: any): boolean {}
containsSpecialCharacter(string: any): boolean {}
containsNumber(string: any, min?: number|null, max?: number|null): boolean {}
isDate(date: any): boolean {}
isValidDate(date: any, min?: Date = new Date('1/1/1900'), max?: Date = new Date('1/1/2200')): boolean {}
isTimestamp(number: any, typeCheck?: boolean = true): boolean {}
// default min = 1/1/1900 (month/day/year)
// default max = 1/1/2200 (month/day/year)
isValidTimestamp(number: any, min?: number = -2208989361000, max?: number = 7258114800000, typeCheck?: boolean = true): boolea {}
// Check if 'array' is an array and optionally if it is of length =, <, >, <= or >= than 'length'
isArray(array: any, comparator?: Comparator|null, length?: number|null): boolean {}
example :
let ar = ['dog','cat','bird'];
if (isArray(array)) {
// check if ar is an array
}
if (isArray(array, '=', 2)) {
// check if ar is an array of length 2
}
if (isArray(array, '>=', 1)) {
// check if ar is an array of length greater than or equal to 1
}
isHtmlElement(htmlElement: any): boolean {}
isHtmlEventAttribute(htmlEventAttribute: any): boolean {}
isNode(node: any): boolean {}
ucfirst(string: string, everyWords?: boolean = true): string | false {}
normalizeNickname(nickname: string, firstName: string, lastName: string): string | false {}
normalizeName(string: string): string | false {}
normalizeEmail(string: string): string | false {}
example :
function normalizeInputs(req, res, next) {
const users = req.body.rows;
log.debug(`Normalize values for ${users.length} users`);
for (const u of users) {
const { firstName, lastName, nickname, email } = u;
u.firstname = str.normalizeName(firstName);
u.lastname = str.normalizeName(lastName);
u.nickname = str.normalizeNickname(nickname, firstName, lastName);
u.email = str.normalizeName(email);
}
next();
}
Checkard.js is still in development and we would be glad to get all the help you can provide. To contribute please read contributor.md for detailed installation guide.
Purpose | Choice | Motivation |
---|---|---|
repository | Github | hosting for software development version control using Git |
package manager | npm | default node.js package manager |
language | TypeScript | static type checking along with the latest ECMAScript features |
module bundler | Rollup.js | advanced module bundler for ES6 modules |
unit testing | Jest | delightful testing with a focus on simplicity |