@transferwise/neptune-validation
Version:
Neptune Web validation
60 lines (55 loc) • 1.54 kB
JavaScript
const isString = value => typeof value === 'string';
const isNumber = value => typeof value === 'number' && !Number.isNaN(value);
const isInteger = value => {
return isNumber(value) && Math.floor(value) === value;
};
const isBoolean = value => typeof value === 'boolean';
const isObject = value => typeof value === 'object' && !isNull(value) && value.constructor === Object;
const isArray = value => Array.isArray(value);
const isNull = value => value === null;
const isUndefined = value => typeof value === 'undefined';
/**
* Checks empty values for arrays, objects and strings.
*/
const isEmpty = value => isString(value) && value.length === 0 || (isObject(value) || isArray(value)) && Object.keys(value).length === 0;
const keyMap = {
SPACE: {
key: [' ', 'Spacebar'],
keyCode: 32
},
ENTER: {
key: 'Enter',
keyCode: 13
},
TAB: {
key: 'Tab',
keyCode: 9
},
ESCAPE: {
key: 'Escape',
keyCode: 27
}
};
const isKey = ({
keyType,
event
}) => {
if (!keyType || !event) {
return false;
}
const upperCaseKeyType = keyType.toUpperCase();
if (!Object.hasOwn(keyMap, upperCaseKeyType)) {
return false;
}
const keyDef = keyMap[upperCaseKeyType];
const {
key,
keyCode
} = event;
if (key) {
return isArray(keyDef.key) ? keyDef.key.includes(key) : key === keyDef.key;
}
return keyCode === keyDef.keyCode;
};
export { isArray, isBoolean, isEmpty, isInteger, isKey, isNull, isNumber, isObject, isString, isUndefined };
//# sourceMappingURL=index.mjs.map