UNPKG

prettycats

Version:

Helpful, common, and curried predicates library built on Ramda.

65 lines (57 loc) 9.6 kB
'use strict'; var R = require('ramda'), __ = require('./_private.js'); var isString = R.is(String), isStringOfLength = __.ofLength(String, 'identical'), isStringOfLengthAtLeast = __.ofLength(String, 'gte'), isStringOfLengthAtMost = __.ofLength(String, 'lte'), isStringLongerThan = __.ofLength(String, 'gt'), isStringShorterThan = __.ofLength(String, 'lt'); var isStringContaining = R.curry(function (subStr, str) { return R.compose(R.not, R.equals(-1), R.indexOf(subStr))(str); }); var isStringMatching = R.curry(function (pattern, str) { return R.test(pattern, str); }); var stringIsOneOf = R.curry(function (selectionArr, str) { return R.allPass([R.is(String), R.contains(R.__, selectionArr)])(str); }); var isStringOfLengthBetween = R.curry(function (min, max, str) { return R.both(isStringLongerThan(min), isStringShorterThan(max))(str); }); var isStringOfLengthBetweenInclusive = R.curry(function (min, max, str) { return R.both(isStringOfLengthAtLeast(min), isStringOfLengthAtMost(max))(str); }); var isEmail = R.test(/\S+@\S+/); var isNumericString = function isNumericString(str) { return isString(str) && !isNaN(parseInt(str, 10)); }; var isTimestamp = R.test(/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/); var isMySqlTimestamp = R.test(/^([1-2][0-9]{3})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/); var isJSON = function isJSON(str) { try { JSON.parse(str); } catch (e) { return false; } return R.is(String, str); }; module.exports = { isString: isString, isStringOfLength: isStringOfLength, isStringOfLengthAtLeast: isStringOfLengthAtLeast, isStringOfLengthAtMost: isStringOfLengthAtMost, isStringLongerThan: isStringLongerThan, isStringShorterThan: isStringShorterThan, isStringOfLengthBetween: isStringOfLengthBetween, isStringOfLengthBetweenInclusive: isStringOfLengthBetweenInclusive, isStringContaining: isStringContaining, isStringMatching: isStringMatching, stringIsOneOf: stringIsOneOf, isNumericString: isNumericString, isTimestamp: isTimestamp, isMySqlTimestamp: isMySqlTimestamp, isEmail: isEmail, isJSON: isJSON }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcmVkaWNhdGVzL3N0cmluZ3MuanMiXSwibmFtZXMiOlsiUiIsInJlcXVpcmUiLCJfXyIsImlzU3RyaW5nIiwiaXMiLCJTdHJpbmciLCJpc1N0cmluZ09mTGVuZ3RoIiwib2ZMZW5ndGgiLCJpc1N0cmluZ09mTGVuZ3RoQXRMZWFzdCIsImlzU3RyaW5nT2ZMZW5ndGhBdE1vc3QiLCJpc1N0cmluZ0xvbmdlclRoYW4iLCJpc1N0cmluZ1Nob3J0ZXJUaGFuIiwiaXNTdHJpbmdDb250YWluaW5nIiwiY3VycnkiLCJzdWJTdHIiLCJzdHIiLCJjb21wb3NlIiwibm90IiwiZXF1YWxzIiwiaW5kZXhPZiIsImlzU3RyaW5nTWF0Y2hpbmciLCJwYXR0ZXJuIiwidGVzdCIsInN0cmluZ0lzT25lT2YiLCJzZWxlY3Rpb25BcnIiLCJhbGxQYXNzIiwiY29udGFpbnMiLCJpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbiIsIm1pbiIsIm1heCIsImJvdGgiLCJpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbkluY2x1c2l2ZSIsImlzRW1haWwiLCJpc051bWVyaWNTdHJpbmciLCJpc05hTiIsInBhcnNlSW50IiwiaXNUaW1lc3RhbXAiLCJpc015U3FsVGltZXN0YW1wIiwiaXNKU09OIiwiSlNPTiIsInBhcnNlIiwiZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLElBQU1BLENBQUMsR0FBSUMsT0FBTyxDQUFDLE9BQUQsQ0FBbEI7QUFBQSxJQUNNQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxlQUFELENBRGxCOztBQUdBLElBQU1FLFFBQVEsR0FBa0JILENBQUMsQ0FBQ0ksRUFBRixDQUFLQyxNQUFMLENBQWhDO0FBQUEsSUFDTUMsZ0JBQWdCLEdBQVVKLEVBQUUsQ0FBQ0ssUUFBSCxDQUFZRixNQUFaLEVBQW9CLFdBQXBCLENBRGhDO0FBQUEsSUFFTUcsdUJBQXVCLEdBQUdOLEVBQUUsQ0FBQ0ssUUFBSCxDQUFZRixNQUFaLEVBQW9CLEtB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LEVBQUYsQ0FBS0MsTUFBTCxFQUFhVSxHQUFiLENBQVA7QUFDRCxDQVBEOztBQVNBMkIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2Z4QyxFQUFBQSxRQUFRLEVBQVJBLFFBRGU7QUFFZkcsRUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFGZTtBQUdmRSxFQUFBQSx1QkFBdUIsRUFBdkJBLHVCQUhlO0FBSWZDLEVBQUFBLHNCQUFzQixFQUF0QkEsc0JBSmU7QUFLZkMsRUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFMZTtBQU1mQyxFQUFBQSxtQkFBbUIsRUFBbkJBLG1CQU5lO0FBT2ZnQixFQUFBQSx1QkFBdUIsRUFBdkJBLHVCQVBlO0FBUWZJLEVBQUFBLGdDQUFnQyxFQUFoQ0EsZ0NBUmU7QUFTZm5CLEVBQUFBLGtCQUFrQixFQUFsQkEsa0JBVGU7QUFVZlEsRUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFWZTtBQVdmRyxFQUFBQSxhQUFhLEVBQWJBLGFBWGU7QUFZZlUsRUFBQUEsZUFBZSxFQUFmQSxlQVplO0FBYWZHLEVBQUFBLFdBQVcsRUFBWEEsV0FiZTtBQWNmQyxFQUFBQSxnQkFBZ0IsRUFBaEJBLGdCQWRlO0FBZWZMLEVBQUFBLE9BQU8sRUFBUEEsT0FmZTtBQWdCZk0sRUFBQUEsTUFBTSxFQUFOQTtBQWhCZSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuY29uc3QgUiAgPSByZXF1aXJlKCdyYW1kYScpLFxuICAgICAgX18gPSByZXF1aXJlKCcuL19wcml2YXRlLmpzJyk7XG5cbmNvbnN0IGlzU3RyaW5nICAgICAgICAgICAgICAgID0gUi5pcyhTdHJpbmcpLFxuICAgICAgaXNTdHJpbmdPZkxlbmd0aCAgICAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdpZGVudGljYWwnKSxcbiAgICAgIGlzU3RyaW5nT2ZMZW5ndGhBdExlYXN0ID0gX18ub2ZMZW5ndGgoU3RyaW5nLCAnZ3RlJyksXG4gICAgICBpc1N0cmluZ09mTGVuZ3RoQXRNb3N0ICA9IF9fLm9mTGVuZ3RoKFN0cmluZywgJ2x0ZScpLFxuICAgICAgaXNTdHJpbmdMb25nZXJUaGFuICAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdndCcpLFxuICAgICAgaXNTdHJpbmdTaG9ydGVyVGhhbiAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdsdCcpO1xuXG5jb25zdCBpc1N0cmluZ0NvbnRhaW5pbmcgPSBSLmN1cnJ5KChzdWJTdHIsIHN0cikgPT4ge1xuICByZXR1cm4gUi5jb21wb3NlKFIubm90LCBSLmVxdWFscygtMSksIFIuaW5kZXhPZihzdWJTdHIpKShzdHIpO1xufSk7XG5cbmNvbnN0IGlzU3RyaW5nTWF0Y2hpbmcgPSBSLmN1cnJ5KChwYXR0ZXJuLCBzdHIpID0+IHtcbiAgcmV0dXJuIFIudGVzdChwYXR0ZXJuLCBzdHIpO1xufSk7XG5cbmNvbnN0IHN0cmluZ0lzT25lT2YgPSBSLmN1cnJ5KChzZWxlY3Rpb25BcnIsIHN0cikgPT4ge1xuICByZXR1cm4gUi5hbGxQYXNzKFtSLmlzKFN0cmluZyksIFIuY29udGFpbnMoUi5fXywgc2VsZWN0aW9uQXJyKV0pKHN0cik7XG59KTtcblxuY29uc3QgaXNTdHJpbmdPZkxlbmd0aEJldHdlZW4gPSBSLmN1cnJ5KChtaW4sIG1heCwgc3RyKSA9PiB7XG4gIHJldHVybiBSLmJvdGgoaXNTdHJpbmdMb25nZXJUaGFuKG1pbiksIGlzU3RyaW5nU2hvcnRlclRoYW4obWF4KSkoc3RyKTtcbn0pO1xuXG5jb25zdCBpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbkluY2x1c2l2ZSA9IFIuY3VycnkoKG1pbiwgbWF4LCBzdHIpID0+IHtcbiAgcmV0dXJuIFIuYm90aChpc1N0cmluZ09mTGVuZ3RoQXRMZWFzdChtaW4pLCBpc1N0cmluZ09mTGVuZ3RoQXRNb3N0KG1heCkpKHN0cik7XG59KTtcblxuY29uc3QgaXNFbWFpbCA9IFIudGVzdCgvXFxTK0BcXFMrLyk7XG5cbmNvbnN0IGlzTnVtZXJpY1N0cmluZyA9IHN0ciA9PiBpc1N0cmluZyhzdHIpICYmICFpc05hTihwYXJzZUludChzdHIsIDEwKSk7XG5cbmNvbnN0IGlzVGltZXN0YW1wID0gUi50ZXN0KC8oXFxkezR9LVswMV1cXGQtWzAtM11cXGRUWzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGRcXC5cXGQrKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSkvKTtcblxuY29uc3QgaXNNeVNxbFRpbWVzdGFtcCA9IFIudGVzdCgvXihbMS0yXVswLTldezN9KS0oWzAtMV1bMC05XSktKFswLTNdWzAtOV0pKD86KCBbMC0yXVswLTldKTooWzAtNV1bMC05XSk6KFswLTVdWzAtOV0pKT8kLyk7XG5cbmNvbnN0IGlzSlNPTiA9IChzdHIpID0+IHtcbiAgdHJ5IHtcbiAgICBKU09OLnBhcnNlKHN0cik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIFIuaXMoU3RyaW5nLCBzdHIpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzU3RyaW5nLFxuICBpc1N0cmluZ09mTGVuZ3RoLFxuICBpc1N0cmluZ09mTGVuZ3RoQXRMZWFzdCxcbiAgaXNTdHJpbmdPZkxlbmd0aEF0TW9zdCxcbiAgaXNTdHJpbmdMb25nZXJUaGFuLFxuICBpc1N0cmluZ1Nob3J0ZXJUaGFuLFxuICBpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbixcbiAgaXNTdHJpbmdPZkxlbmd0aEJldHdlZW5JbmNsdXNpdmUsXG4gIGlzU3RyaW5nQ29udGFpbmluZyxcbiAgaXNTdHJpbmdNYXRjaGluZyxcbiAgc3RyaW5nSXNPbmVPZixcbiAgaXNOdW1lcmljU3RyaW5nLFxuICBpc1RpbWVzdGFtcCxcbiAgaXNNeVNxbFRpbWVzdGFtcCxcbiAgaXNFbWFpbCxcbiAgaXNKU09OXG59O1xuIl19