UNPKG

funval

Version:

A minimalist library for data validation using functions interfaces.

55 lines (42 loc) 5.57 kB
"use strict"; exports.__esModule = true; exports.ContentString = ContentString; exports.TrimString = TrimString; exports.StringRange = StringRange; exports.StringMatch = StringMatch; var _Error = require("../Error"); // exported functions function ContentString(input) { if (input == null || typeof input === 'object' && input.toString === Object.prototype.toString) { throw new TypeError(`Expect value to be string`); } const value = String(input); if (value.match(/^\s*$/)) { throw new TypeError(`Expect value to be a non-empty string`); } return value; } function TrimString(input) { return ContentString(input).trim(); } function StringRange(minLength, maxLength, error) { return input => { const str = ContentString(input); if (minLength != null && str.length < minLength) { throw (0, _Error.toError)(error || `Expect length to be minimum of ${minLength} characters (actual: ${str.length})`); } if (maxLength != null && str.length > maxLength) { throw (0, _Error.toError)(error || `Expect length to be maximum of ${maxLength} characters (actual: ${str.length})`); } return str; }; } function StringMatch(regex, error) { return input => { if (typeof input === 'string' && regex.test(input)) { return input; } throw (0, _Error.toError)(error || 'Regular expression not match'); }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0b3JzL3N0cmluZy50cyJdLCJuYW1lcyI6WyJDb250ZW50U3RyaW5nIiwiaW5wdXQiLCJ0b1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsIlR5cGVFcnJvciIsInZhbHVlIiwiU3RyaW5nIiwibWF0Y2giLCJUcmltU3RyaW5nIiwidHJpbSIsIlN0cmluZ1JhbmdlIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwiZXJyb3IiLCJzdHIiLCJsZW5ndGgiLCJTdHJpbmdNYXRjaCIsInJlZ2V4IiwidGVzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTs7QUFFQTtBQUVPLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQStDO0FBQ3BELE1BQ0VBLEtBQUssSUFBSSxJQUFULElBQ0MsT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUNFQSxLQUFELENBQWtCQyxRQUFsQixLQUErQkMsTUFBTSxDQUFDQyxTQUFQLENBQWlCRixRQUhwRCxFQUlFO0FBQ0EsVUFBTSxJQUFJRyxTQUFKLENBQWUsMkJBQWYsQ0FBTjtBQUNEOztBQUVELFFBQU1DLEtBQUssR0FBR0MsTUFBTSxDQUFDTixLQUFELENBQXBCOztBQUNBLE1BQUlLLEtBQUssQ0FBQ0UsS0FBTixDQUFZLE9BQVosQ0FBSixFQUEwQjtBQUN4QixVQUFNLElBQUlILFNBQUosQ0FBZSx1Q0FBZixDQUFOO0FBQ0Q7O0FBRUQsU0FBT0MsS0FBUDtBQUNEOztBQUVNLFNBQVNHLFVBQVQsQ0FBb0JSLEtBQXBCLEVBQTRDO0FBQ2pELFNBQU9ELGFBQWEsQ0FBQ0MsS0FBRCxDQUFiLENBQXFCUyxJQUFyQixFQUFQO0FBQ0Q7O0FBRU0sU0FBU0MsV0FBVCxDQUNMQyxTQURLLEVBRUxDLFNBRkssRUFHTEMsS0FISyxFQUlxQztBQUMxQyxTQUFRYixLQUFELElBQW1CO0FBQ3hCLFVBQU1jLEdBQUcsR0FBR2YsYUFBYSxDQUFDQyxLQUFELENBQXpCOztBQUVBLFFBQUlXLFNBQVMsSUFBSSxJQUFiLElBQXFCRyxHQUFHLENBQUNDLE1BQUosR0FBYUosU0FBdEMsRUFBaUQ7QUFDL0MsWUFBTSxvQkFDSkUsS0FBSyxJQUNGLGtDQUFpQ0YsU0FBVSx3QkFBdUJHLEdBQUcsQ0FBQ0MsTUFBTyxHQUY1RSxDQUFOO0FBSUQ7O0FBRUQsUUFBSUgsU0FBUyxJQUFJLElBQWIsSUFBcUJFLEdBQUcsQ0FBQ0MsTUFBSixHQUFhSCxTQUF0QyxFQUFpRDtBQUMvQyxZQUFNLG9CQUNKQyxLQUFLLElBQ0Ysa0NBQWlDRCxTQUFVLHdCQUF1QkUsR0FBRyxDQUFDQyxNQUFPLEdBRjVFLENBQU47QUFJRDs7QUFFRCxXQUFPRCxHQUFQO0FBQ0QsR0FsQkQ7QUFtQkQ7O0FBRU0sU0FBU0UsV0FBVCxDQUNMQyxLQURLLEVBRUxKLEtBRkssRUFHcUM7QUFDMUMsU0FBUWIsS0FBRCxJQUE0QjtBQUNqQyxRQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJpQixLQUFLLENBQUNDLElBQU4sQ0FBV2xCLEtBQVgsQ0FBakMsRUFBb0Q7QUFDbEQsYUFBT0EsS0FBUDtBQUNEOztBQUVELFVBQU0sb0JBQVFhLEtBQUssSUFBSSw4QkFBakIsQ0FBTjtBQUNELEdBTkQ7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bmNGdW5jdGlvblZhbGlkYXRvciB9IGZyb20gJy4uL1NjaGVtYSc7XG5pbXBvcnQgeyBFcnJvckxpa2UsIHRvRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5cbi8vIGV4cG9ydGVkIGZ1bmN0aW9uc1xuXG5leHBvcnQgZnVuY3Rpb24gQ29udGVudFN0cmluZyhpbnB1dDogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChcbiAgICBpbnB1dCA9PSBudWxsIHx8XG4gICAgKHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIChpbnB1dCBhcyBvYmplY3QpLnRvU3RyaW5nID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKVxuICApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3QgdmFsdWUgdG8gYmUgc3RyaW5nYCk7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IFN0cmluZyhpbnB1dCk7XG4gIGlmICh2YWx1ZS5tYXRjaCgvXlxccyokLykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3QgdmFsdWUgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUcmltU3RyaW5nKGlucHV0OiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIENvbnRlbnRTdHJpbmcoaW5wdXQpLnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ1JhbmdlKFxuICBtaW5MZW5ndGg6IG51bWJlciB8IG51bGwsXG4gIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCxcbiAgZXJyb3I/OiBFcnJvckxpa2UsXG4pOiBTeW5jRnVuY3Rpb25WYWxpZGF0b3I8c3RyaW5nLCBbdW5rbm93bl0+IHtcbiAgcmV0dXJuIChpbnB1dCk6IHN0cmluZyA9PiB7XG4gICAgY29uc3Qgc3RyID0gQ29udGVudFN0cmluZyhpbnB1dCk7XG5cbiAgICBpZiAobWluTGVuZ3RoICE9IG51bGwgJiYgc3RyLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgICAgdGhyb3cgdG9FcnJvcihcbiAgICAgICAgZXJyb3IgfHxcbiAgICAgICAgICBgRXhwZWN0IGxlbmd0aCB0byBiZSBtaW5pbXVtIG9mICR7bWluTGVuZ3RofSBjaGFyYWN0ZXJzIChhY3R1YWw6ICR7c3RyLmxlbmd0aH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG1heExlbmd0aCAhPSBudWxsICYmIHN0ci5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgIHRocm93IHRvRXJyb3IoXG4gICAgICAgIGVycm9yIHx8XG4gICAgICAgICAgYEV4cGVjdCBsZW5ndGggdG8gYmUgbWF4aW11bSBvZiAke21heExlbmd0aH0gY2hhcmFjdGVycyAoYWN0dWFsOiAke3N0ci5sZW5ndGh9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBzdHI7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdNYXRjaChcbiAgcmVnZXg6IFJlZ0V4cCxcbiAgZXJyb3I/OiBzdHJpbmcgfCBFcnJvcixcbik6IFN5bmNGdW5jdGlvblZhbGlkYXRvcjxzdHJpbmcsIFt1bmtub3duXT4ge1xuICByZXR1cm4gKGlucHV0OiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiByZWdleC50ZXN0KGlucHV0KSkge1xuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cblxuICAgIHRocm93IHRvRXJyb3IoZXJyb3IgfHwgJ1JlZ3VsYXIgZXhwcmVzc2lvbiBub3QgbWF0Y2gnKTtcbiAgfTtcbn1cbiJdfQ==