UNPKG

shapely

Version:

Runtime type checker with tagged unions

1,332 lines (1,015 loc) 37.9 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/lib/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var union = exports.union = __webpack_require__(2).default; var any = exports.any = __webpack_require__(12).default; var nil = exports.nil = __webpack_require__(14).default; var mapOf = exports.mapOf = __webpack_require__(16).default; var arrayOf = exports.arrayOf = __webpack_require__(18).default; var record = exports.record = __webpack_require__(20).default; var optional = exports.optional = __webpack_require__(23).default; var validate = exports.validate = __webpack_require__(25).default; var deferred = exports.deferred = __webpack_require__(26).default; var createValidator = exports.createValidator = __webpack_require__(4).default; var isValid = exports.isValid = __webpack_require__(28).default; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = union; var _UnionValidator = __webpack_require__(3); var _UnionValidator2 = _interopRequireDefault(_UnionValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function union() { for (var _len = arguments.length, variants = Array(_len), _key = 0; _key < _len; _key++) { variants[_key] = arguments[_key]; } return new _UnionValidator2.default(variants); } /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _Validator = __webpack_require__(5); var _ValidationResult = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var UnionValidator = (function () { function UnionValidator(variants) { _classCallCheck(this, UnionValidator); this.validators = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = variants[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var variant = _step.value; this.validators.push((0, _createValidator2.default)(variant)); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } _createClass(UnionValidator, [{ key: 'isValid', value: function isValid(val) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = this.validators[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var validator = _step2.value; if (validator.isValid(val)) return true; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return false; } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (this.isValid(val)) { return { isValid: 'true' }; } else { var details = this._getValidationDetails(val); return { isValid: 'false', message: 'Value doesn\'t match any of the expected variants.\nValue: ' + JSON.stringify(val) + '\nDetails: \n' + details.message, score: details.score }; } } }, { key: '_getValidationDetails', value: function _getValidationDetails(val) { var validationResults = []; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = this.validators[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var validator = _step3.value; validationResults.push(validator.getValidationResult(val)); } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } validationResults.sort(function (a, b) { if (a.score < b.score) { return 1; } else if (a.score > b.score) { return -1; } else { return 0; } }); if (validationResults.length > 3) validationResults.length = 3; var message = validationResults.map(function (v) { return v.message; }).join('\n'); return { message: message, score: validationResults[0].score }; } }]); return UnionValidator; })(); exports.default = UnionValidator; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createValidator; var _Validator = __webpack_require__(5); var _stringValidator = __webpack_require__(7); var _stringValidator2 = _interopRequireDefault(_stringValidator); var _numberValidator = __webpack_require__(9); var _numberValidator2 = _interopRequireDefault(_numberValidator); var _booleanValidator = __webpack_require__(10); var _booleanValidator2 = _interopRequireDefault(_booleanValidator); var _UnionValidator = __webpack_require__(3); var _UnionValidator2 = _interopRequireDefault(_UnionValidator); var _ExactValueValidator = __webpack_require__(11); var _ExactValueValidator2 = _interopRequireDefault(_ExactValueValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } /** * Takes the descriptor of a Validator and returns the Validator. * Examples: * createValidator(String) // returns stringValidator * createValidator('hello') // returns ExactValueValidator<'hello'> * createValidator(createValidator(String)) // returns the same stringValidator * * @throws {Error} If the descriptor is unrecognized. */ function createValidator(desc) { if (desc == null) throw Error('Null cannot be a valid validation descriptor'); if (desc === String) { return _stringValidator2.default; } else if (desc === Number) { return _numberValidator2.default; } else if (desc === Boolean) { return _booleanValidator2.default; } else if ((typeof desc === 'undefined' ? 'undefined' : _typeof(desc)) === 'object' && desc && typeof desc.isValid === 'function' && typeof desc.getValidationResult === 'function') { return desc; } else if (typeof desc === 'string' || typeof desc === 'number' || typeof desc === 'boolean') { return new _ExactValueValidator2.default(desc); } else { throw new Error('Can\'t recognize this descriptor: ' + desc); } } /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { "use strict"; var _ValidationResult = __webpack_require__(6); /***/ }, /* 6 */ /***/ function(module, exports) { 'use strict'; /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var stringValidator = { isValid: function isValid(val) { if (typeof val === 'string') { return true; } else { return false; } }, getValidationResult: function getValidationResult(val) { if (stringValidator.isValid(val)) { return { isValid: 'true' }; } else { return { isValid: 'false', message: "String expected, " + (0, _type2.default)(val) + " given.", score: 0 }; } } }; exports.default = stringValidator; /***/ }, /* 8 */ /***/ function(module, exports) { module.exports = require("ramda/src/type"); /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var numberValidator = { isValid: function isValid(val) { if (typeof val === 'number') { return true; } else { return false; } }, getValidationResult: function getValidationResult(val) { if (numberValidator.isValid(val)) { return { isValid: 'true' }; } else { return { isValid: 'false', message: "Number expected. '" + (0, _type2.default)(val) + "' given.", score: 0 }; } } }; exports.default = numberValidator; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var booleanValidator = { isValid: function isValid(val) { if (typeof val === 'boolean') { return true; } else { return false; } }, getValidationResult: function getValidationResult(val) { if (booleanValidator.isValid(val)) { return { isValid: 'true' }; } else { return { isValid: 'false', message: "Boolean expected. " + (0, _type2.default)(val) + " given.", score: 0 }; } } }; exports.default = booleanValidator; /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _Validator = __webpack_require__(5); var _ValidationResult = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ExactValueValidator = (function () { function ExactValueValidator(desc) { _classCallCheck(this, ExactValueValidator); this.expectedValue = desc; } _createClass(ExactValueValidator, [{ key: 'isValid', value: function isValid(val) { return val === this.expectedValue; } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (this.isValid(val)) { return { isValid: 'true' }; } else { return { isValid: 'false', message: 'Expected: ' + JSON.stringify(this.expectedValue) + '. Given: ' + val, score: 0 }; } } }]); return ExactValueValidator; })(); exports.default = ExactValueValidator; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _anyValidator = __webpack_require__(13); var _anyValidator2 = _interopRequireDefault(_anyValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _anyValidator2.default; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var anyValidator = { isValid: function isValid(val) { return true; }, getValidationResult: function getValidationResult(val) { return { isValid: 'true' }; } }; exports.default = anyValidator; /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _nilValidator = __webpack_require__(15); var _nilValidator2 = _interopRequireDefault(_nilValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _nilValidator2.default; /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var nilValidator = { isValid: function isValid(val) { return val === null || val === undefined; }, getValidationResult: function getValidationResult(val) { if (nilValidator.isValid(val)) { return { isValid: 'true' }; } else { return { isValid: 'false', message: "Null expected. " + (0, _type2.default)(val) + " given.", score: 0 }; } } }; exports.default = nilValidator; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = mapOf; var _MapOfValidator = __webpack_require__(17); var _MapOfValidator2 = _interopRequireDefault(_MapOfValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function mapOf(desc) { return new _MapOfValidator2.default(desc); } /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } var MapOfValidator = (function () { function MapOfValidator(desc) { _classCallCheck(this, MapOfValidator); this.validator = (0, _createValidator2.default)(desc); } _createClass(MapOfValidator, [{ key: 'isValid', value: function isValid(val) { if (!((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val)) return false; var keys = Object.keys(val); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var key = _step.value; var keyVal = val[key]; if (this.validator.isValid(keyVal) === false) return false; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return true; } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (!((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val)) return { isValid: 'false', message: 'Object expected. ' + (0, _type2.default)(val) + ' given.', score: 0 }; var keys = Object.keys(val); var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var key = _step2.value; var keyVal = val[key]; var result = this.validator.getValidationResult(keyVal); if (result.isValid === 'false') { return { isValid: 'false', message: 'Validation failed for key \'' + key + '\': ' + result.message, score: 1 }; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return { isValid: 'true' }; } }]); return MapOfValidator; })(); exports.default = MapOfValidator; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = arrayOf; var _ArrayOfValidator = __webpack_require__(19); var _ArrayOfValidator2 = _interopRequireDefault(_ArrayOfValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function arrayOf(desc) { return new _ArrayOfValidator2.default(desc); } /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ArrayOfValidator = (function () { function ArrayOfValidator(desc) { _classCallCheck(this, ArrayOfValidator); this.validator = (0, _createValidator2.default)(desc); } _createClass(ArrayOfValidator, [{ key: 'isValid', value: function isValid(val) { if (!Array.isArray(val)) return false; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = val[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var keyVal = _step.value; if (this.validator.isValid(keyVal) === false) return false; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return true; } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (!Array.isArray(val)) return { isValid: 'false', message: 'Array expected. ' + (0, _type2.default)(val) + ' given.', score: 0 }; for (var i = 0; i < val.length; i++) { var keyVal = val[i]; var result = this.validator.getValidationResult(keyVal); if (result.isValid === 'false') { return { isValid: 'false', message: 'Validation failed on item #' + i + ': ' + result.message, score: 1 }; } } return { isValid: 'true' }; } }]); return ArrayOfValidator; })(); exports.default = ArrayOfValidator; /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = record; var _RecordValidator = __webpack_require__(21); var _RecordValidator2 = _interopRequireDefault(_RecordValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function record(desc) { return new _RecordValidator2.default(desc); } /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _isPlainObject = __webpack_require__(22); var _isPlainObject2 = _interopRequireDefault(_isPlainObject); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _Validator = __webpack_require__(5); var _ValidationResult = __webpack_require__(6); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } var RecordValidator = (function () { function RecordValidator(desc) { _classCallCheck(this, RecordValidator); if (!((typeof desc === 'undefined' ? 'undefined' : _typeof(desc)) === 'object' && desc && (0, _isPlainObject2.default)(desc))) throw Error('A record must be defined by an object.'); this.shape = {}; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = Object.getOwnPropertyNames(desc)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var propName = _step.value; try { this.shape[propName] = (0, _createValidator2.default)(desc[propName]); } catch (e) { var propertyName = propName; var stack = e.stack; if (e.originalStack) { stack = e.originalStack; propertyName += '.' + e.propertyName; e.propertyName = propertyName; } else { e.originalStack = e.stack; } e.stack = 'Error defining prop \'' + propertyName + '\': ' + e.originalStack; throw e; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } _createClass(RecordValidator, [{ key: 'isValid', value: function isValid(val) { if (!((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val)) return false; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = Object.keys(this.shape)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var _key = _step2.value; var validator = this.shape[_key]; if (validator.isValid(val[_key]) === false) return false; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return true; } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (!((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val)) return { isValid: 'false', message: 'Object expected, ' + (0, _type2.default)(val) + ' given.', score: 0 }; var numberOfPropsCounted = 0; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = Object.keys(this.shape)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var _key2 = _step3.value; var validator = this.shape[_key2]; var result = validator.getValidationResult(val[_key2]); if (result.isValid === 'false') { return { isValid: 'false', message: 'Error validating prop ' + _key2 + ':\n ' + result.message, score: 1 + numberOfPropsCounted }; } numberOfPropsCounted++; } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } return { isValid: 'true' }; } }]); return RecordValidator; })(); exports.default = RecordValidator; /***/ }, /* 22 */ /***/ function(module, exports) { module.exports = require("lodash/lang/isPlainObject"); /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = optional; var _OptionalValidator = __webpack_require__(24); var _OptionalValidator2 = _interopRequireDefault(_OptionalValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function optional(desc) { return new _OptionalValidator2.default(desc); } /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var OptionalValidator = (function () { function OptionalValidator(desc) { _classCallCheck(this, OptionalValidator); this.validator = (0, _createValidator2.default)(desc); } _createClass(OptionalValidator, [{ key: 'isValid', value: function isValid(val) { if (!val) return true; return this.validator.isValid(val); } }, { key: 'getValidationResult', value: function getValidationResult(val) { if (!val) return { isValid: 'true' }; return this.validator.getValidationResult(val); } }]); return OptionalValidator; })(); exports.default = OptionalValidator; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = validate; var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function validate(validationDescriptor, val) { var validator = (0, _createValidator2.default)(validationDescriptor); var result = validator.getValidationResult(val); if (result.isValid === 'false') { throw Error(result.message); } return val; } /***/ }, /* 26 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = deferred; var _DeferredValidator = __webpack_require__(27); var _DeferredValidator2 = _interopRequireDefault(_DeferredValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function deferred(desc) { return new _DeferredValidator2.default(desc); } /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var _type = __webpack_require__(8); var _type2 = _interopRequireDefault(_type); var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); var _ValidationResult = __webpack_require__(6); var _Validator = __webpack_require__(5); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var DeferredValidator = (function () { /** * DeferredValidator is useful for defining recursive types. It also * works in cases where you want to define a dependency on a type * that's not yet defined. * * Example: * import {union, record, deferred, nil} from 'shapely'; * const Tree = union( * nil, * record({ * kind: 'leaf', value: Number * }), * record({ * kind: 'node', left: deferred(=> Tree), right: deferred(=> Tree) * }) * ); */ function DeferredValidator(desc) { _classCallCheck(this, DeferredValidator); if (typeof desc !== 'function') { throw Error('Deferred validator only accepts a function. ' + (0, _type2.default)(desc) + ' given'); } this.deferredValidator = desc; } _createClass(DeferredValidator, [{ key: 'isValid', value: function isValid(val) { return this._getValidator().isValid(val); } }, { key: 'getValidationResult', value: function getValidationResult(val) { return this._getValidator().getValidationResult(val); } }, { key: '_getValidator', value: function _getValidator() { if (!this.validator) this.validator = this.deferredValidator(); return this.validator; } }]); return DeferredValidator; })(); exports.default = DeferredValidator; /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = validate; var _createValidator = __webpack_require__(4); var _createValidator2 = _interopRequireDefault(_createValidator); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function validate(validationDescriptor, val) { var validator = (0, _createValidator2.default)(validationDescriptor); return validator.isValid(val); } /***/ } /******/ ]); //# sourceMappingURL=shapely.js.map