{"version":3,"sources":["webpack:///./node_modules/form-serialize/index.js","webpack:///./node_modules/validate/build/schema.js","webpack:///./node_modules/component-type/index.js","webpack:///./node_modules/eivindfjeldstad-dot/index.js","webpack:///./node_modules/validate/build/error.js","webpack:///./node_modules/typecast/index.js","webpack:///./node_modules/validate/build/property.js","webpack:///./node_modules/validate/build/messages.js","webpack:///./node_modules/validate/build/validators.js","webpack:///./node_modules/validate/build/utils.js"],"names":["k_r_submitter","k_r_success_contrls","brackets","hash_serializer","result","key","value","match","hash_assign","keys","length","shift","between","Array","isArray","push","_values","string","index","isNaN","children","RegExp","exec","parse_keys","existing","str_serialize","replace","encodeURIComponent","module","exports","form","options","hash","undefined","serializer","elements","radio_store","Object","create","i","element","disabled","name","test","nodeName","type","val","checked","empty","selectOptions","isSelectedOptions","j","option","allowedEmpty","hasValue","selected","slice","defineProperty","_slicedToArray","arr","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","prototype","_componentType2","_interopRequireDefault","_eivindfjeldstadDot2","_typecast2","_property2","_messages2","_validators2","_error2","_utils","obj","__esModule","default","_classCallCheck","instance","Schema","_this","this","arguments","opts","hooks","messages","assign","validators","typecasters","forEach","k","path","_path","rules","_this2","parts","split","suffix","pop","prefix","join","hook","v","propagate","prop","each","nested","hasOwnProperty","rule","_loop","walk","cast","typecast","set","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","entries","_ref","_ref2","return","_this3","strip","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_ref3","_ref4","errors","_loop2","validate","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_ref5","_ref6","_validate","_message","fn","ValidationError","toString","call","nodeType","_isBuffer","constructor","isBuffer","valueOf","apply","segs","attr","seg","get","_Error","message","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","Error","captureStackTrace","subClass","superClass","setPrototypeOf","_inherits","number","num","parseFloat","date","Date","array","trim","boolean","_error3","_toConsumableArray","arr2","from","Property","schema","registry","_schema","_type","fns","_register","bool","enums","regexp","_schema2","toLowerCase","ctx","types","_run","required","_registry$type","args","concat","_error","len","min","max","size","_size","enum","copy","last","_componentType","Validators","_required","parseInt","includes","callback","first","_eivindfjeldstadDot"],"mappings":"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","file":"4.541010e62b80fd05f7ee.js","sourcesContent":["// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i 0 && arguments[0] !== undefined ? arguments[0] : {};\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Schema);\n\n this.opts = opts;\n this.hooks = [];\n this.props = {};\n this.messages = Object.assign({}, _messages2.default);\n this.validators = Object.assign({}, _validators2.default);\n this.typecasters = Object.assign({}, _typecast2.default);\n Object.keys(obj).forEach(function (k) {\n return _this.path(k, obj[k]);\n });\n }\n\n /**\n * Create or update `path` with given `rules`.\n *\n * @example\n * const schema = new Schema()\n * schema.path('name.first', { type: String })\n * schema.path('name.last').type(String).required()\n *\n * @param {String} path - full path using dot-notation\n * @param {Object|Array|String|Schema|Property} [rules] - rules to apply\n * @return {Property}\n */\n\n _createClass(Schema, [{\n key: 'path',\n value: function path(_path, rules) {\n var _this2 = this;\n\n var parts = _path.split('.');\n var suffix = parts.pop();\n var prefix = parts.join('.');\n\n // Make sure full path is created\n if (prefix) {\n this.path(prefix);\n }\n\n // Array index placeholder\n if (suffix === '$') {\n this.path(prefix).type(Array);\n }\n\n // Nested schema\n if (rules instanceof Schema) {\n rules.hook(function (k, v) {\n return _this2.path((0, _utils.join)(k, _path), v);\n });\n return this.path(_path, rules.props);\n }\n\n // Return early when given a `Property`\n if (rules instanceof _property2.default) {\n this.props[_path] = rules;\n // Notify parents if mounted\n this.propagate(_path, rules);\n return rules;\n }\n\n var prop = this.props[_path] || new _property2.default(_path, this);\n\n this.props[_path] = prop;\n // Notify parents if mounted\n this.propagate(_path, prop);\n\n // No rules?\n if (!rules) return prop;\n\n // type shorthand\n // `{ name: String }`\n if (typeof rules == 'string' || typeof rules == 'function') {\n prop.type(rules);\n return prop;\n }\n\n // Allow arrays to be passed implicitly:\n // `{ keywords: [String] }`\n // `{ keyVal: [[String, Number]] }`\n if (Array.isArray(rules)) {\n prop.type(Array);\n\n if (rules.length == 1) {\n prop.each(rules[0]);\n } else {\n prop.elements(rules);\n }\n\n return prop;\n }\n\n var nested = false;\n\n // Check for nested objects\n for (var key in rules) {\n if (!rules.hasOwnProperty(key)) continue;\n if (typeof prop[key] == 'function') continue;\n nested = true;\n break;\n }\n\n Object.keys(rules).forEach(function (key) {\n var rule = rules[key];\n\n if (nested) {\n return _this2.path((0, _utils.join)(key, _path), rule);\n }\n\n prop[key](rule);\n });\n\n return prop;\n }\n\n /**\n * Typecast given `obj`.\n *\n * @param {Object} obj - the object to typecast\n * @return {Schema}\n * @private\n */\n\n }, {\n key: 'typecast',\n value: function typecast(obj) {\n var _loop = function _loop(path, prop) {\n (0, _utils.walk)(path, obj, function (key, value) {\n if (value == null) return;\n var cast = prop.typecast(value);\n if (cast === value) return;\n _eivindfjeldstadDot2.default.set(obj, key, cast);\n });\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(this.props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var path = _ref2[0];\n var prop = _ref2[1];\n\n _loop(path, prop);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this;\n }\n\n /**\n * Strip all keys not defined in the schema\n *\n * @param {Object} obj - the object to strip\n * @param {String} [prefix]\n * @return {Schema}\n * @private\n */\n\n }, {\n key: 'strip',\n value: function strip(obj, prefix) {\n var _this3 = this;\n\n var type = (0, _componentType2.default)(obj);\n\n if (type === 'array') {\n obj.forEach(function (v, i) {\n return _this3.strip(v, (0, _utils.join)('$', prefix));\n });\n return this;\n }\n\n if (type !== 'object') {\n return this;\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.entries(obj)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref3 = _step2.value;\n\n var _ref4 = _slicedToArray(_ref3, 2);\n\n var key = _ref4[0];\n var val = _ref4[1];\n\n var path = (0, _utils.join)(key, prefix);\n\n if (!this.props[path]) {\n delete obj[key];\n continue;\n }\n\n this.strip(val, path);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return this;\n }\n\n /**\n * Validate given `obj`.\n *\n * @example\n * const schema = new Schema({ name: { required: true }})\n * const errors = schema.validate({})\n * assert(errors.length == 1)\n * assert(errors[0].message == 'name is required')\n * assert(errors[0].path == 'name')\n *\n * @param {Object} obj - the object to validate\n * @param {Object} [opts] - options, see [Schema](#schema-1)\n * @return {Array}\n */\n\n }, {\n key: 'validate',\n value: function validate(obj) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n opts = Object.assign(this.opts, opts);\n\n var errors = [];\n\n if (opts.typecast) {\n this.typecast(obj);\n }\n\n if (opts.strip !== false) {\n this.strip(obj);\n }\n\n var _loop2 = function _loop2(path, prop) {\n (0, _utils.walk)(path, obj, function (key, value) {\n var err = prop.validate(value, obj, key);\n if (err) errors.push(err);\n });\n };\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.entries(this.props)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref5 = _step3.value;\n\n var _ref6 = _slicedToArray(_ref5, 2);\n\n var path = _ref6[0];\n var prop = _ref6[1];\n\n _loop2(path, prop);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return errors;\n }\n\n /**\n * Assert that given `obj` is valid.\n *\n * @example\n * const schema = new Schema({ name: String })\n * schema.assert({ name: 1 }) // Throws an error\n *\n * @param {Object} obj\n * @param {Object} [opts]\n */\n\n }, {\n key: 'assert',\n value: function assert(obj, opts) {\n var _validate = this.validate(obj, opts),\n _validate2 = _slicedToArray(_validate, 1),\n err = _validate2[0];\n\n if (err) throw err;\n }\n\n /**\n * Override default error messages.\n *\n * @example\n * const hex = (val) => /^0x[0-9a-f]+$/.test(val)\n * schema.path('some.path').use({ hex })\n * schema.message('hex', path => `${path} must be hexadecimal`)\n *\n * @example\n * schema.message({ hex: path => `${path} must be hexadecimal` })\n *\n * @param {String|Object} name - name of the validator or an object with name-message pairs\n * @param {String|Function} [message] - the message or message generator to use\n * @return {Schema}\n */\n\n }, {\n key: 'message',\n value: function message(name, _message) {\n (0, _utils.assign)(name, _message, this.messages);\n return this;\n }\n\n /**\n * Override default validators.\n *\n * @example\n * schema.validator('required', val => val != null)\n *\n * @example\n * schema.validator({ required: val => val != null })\n *\n * @param {String|Object} name - name of the validator or an object with name-function pairs\n * @param {Function} [fn] - the function to use\n * @return {Schema}\n */\n\n }, {\n key: 'validator',\n value: function validator(name, fn) {\n (0, _utils.assign)(name, fn, this.validators);\n return this;\n }\n\n /**\n * Override default typecasters.\n *\n * @example\n * schema.typecaster('SomeClass', val => new SomeClass(val))\n *\n * @example\n * schema.typecaster({ SomeClass: val => new SomeClass(val) })\n *\n * @param {String|Object} name - name of the validator or an object with name-function pairs\n * @param {Function} [fn] - the function to use\n * @return {Schema}\n */\n\n }, {\n key: 'typecaster',\n value: function typecaster(name, fn) {\n (0, _utils.assign)(name, fn, this.typecasters);\n return this;\n }\n\n /**\n * Accepts a function that is called whenever new props are added.\n *\n * @param {Function} fn - the function to call\n * @return {Schema}\n * @private\n */\n\n }, {\n key: 'hook',\n value: function hook(fn) {\n this.hooks.push(fn);\n return this;\n }\n\n /**\n * Notify all subscribers that a property has been added.\n *\n * @param {String} path - the path of the property\n * @param {Property} prop - the new property\n * @return {Schema}\n * @private\n */\n\n }, {\n key: 'propagate',\n value: function propagate(path, prop) {\n this.hooks.forEach(function (fn) {\n return fn(path, prop);\n });\n return this;\n }\n }]);\n\n return Schema;\n}();\n\n// Export ValidationError\n\n\nexports.default = Schema;\nSchema.ValidationError = _error2.default;\nmodule.exports = exports.default;","/**\n * toString ref.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Return the type of `val`.\n *\n * @param {Mixed} val\n * @return {String}\n * @api public\n */\n\nmodule.exports = function(val){\n switch (toString.call(val)) {\n case '[object Date]': return 'date';\n case '[object RegExp]': return 'regexp';\n case '[object Arguments]': return 'arguments';\n case '[object Array]': return 'array';\n case '[object Error]': return 'error';\n }\n\n if (val === null) return 'null';\n if (val === undefined) return 'undefined';\n if (val !== val) return 'nan';\n if (val && val.nodeType === 1) return 'element';\n\n if (isBuffer(val)) return 'buffer';\n\n val = val.valueOf\n ? val.valueOf()\n : Object.prototype.valueOf.apply(val);\n\n return typeof val;\n};\n\n// code borrowed from https://github.com/feross/is-buffer/blob/master/index.js\nfunction isBuffer(obj) {\n return !!(obj != null &&\n (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor)\n (obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj))\n ))\n}\n","/**\n * Set given `path`\n *\n * @param {Object} obj\n * @param {String} path\n * @param {Mixed} val\n * @api public\n */\n\nexports.set = function (obj, path, val) {\n var segs = path.split('.');\n var attr = segs.pop();\n \n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i];\n obj[seg] = obj[seg] || {};\n obj = obj[seg];\n }\n \n obj[attr] = val;\n};\n\n/**\n * Get given `path`\n *\n * @param {Object} obj\n * @param {String} path\n * @return {Mixed}\n * @api public\n */\n\nexports.get = function (obj, path) {\n var segs = path.split('.');\n var attr = segs.pop();\n \n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i];\n if (!obj[seg]) return;\n obj = obj[seg];\n }\n \n return obj[attr];\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Custom errors.\n *\n * @private\n */\n\nvar ValidationError = function (_Error) {\n _inherits(ValidationError, _Error);\n\n function ValidationError(message, path) {\n _classCallCheck(this, ValidationError);\n\n var _this = _possibleConstructorReturn(this, (ValidationError.__proto__ || Object.getPrototypeOf(ValidationError)).call(this, message));\n\n Object.defineProperty(_this, 'path', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: path\n });\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, ValidationError);\n }\n return _this;\n }\n\n return ValidationError;\n}(Error);\n\nexports.default = ValidationError;\nmodule.exports = exports.default;","module.exports = typecast;\n\n/**\n * Cast given `val` to `type`\n *\n * @param {Mixed} val\n * @param {String} type\n * @api public\n */\n\nfunction typecast (val, type) {\n var fn = typecast[type];\n if (typeof fn != 'function') throw new Error('cannot cast to ' + type);\n return fn(val);\n}\n\n/**\n * Cast `val` to `String`\n *\n * @param {Mixed} val\n * @api public\n */\n\ntypecast.string = function (val) {\n return val.toString();\n};\n\n/**\n * Cast `val` to `Number`\n *\n * @param {Mixed} val\n * @api public\n */\n\ntypecast.number = function (val) {\n var num = parseFloat(val);\n return isNaN(num)\n ? null\n : num;\n};\n\n/**\n * Cast `val` to a`Date`\n *\n * @param {Mixed} val\n * @api public\n */\n\ntypecast.date = function (val) {\n var date = new Date(val);\n return isNaN(date.valueOf())\n ? null\n : date;\n};\n\n/**\n * Cast `val` to `Array`\n *\n * @param {Mixed} val\n * @api public\n */\n\ntypecast.array = function (val) {\n if (val instanceof Array) return val;\n var arr = val.toString().split(',');\n for (var i = 0; i < arr.length; i++) {\n arr[i] = arr[i].trim();\n }\n return arr;\n};\n\n/**\n * Cast `val` to `Boolean`\n *\n * @param {Mixed} val\n * @api public\n */\n\ntypecast.boolean = function (val) {\n return !! val && val !== 'false';\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _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; }; }();\n\nvar _error2 = require('./error');\n\nvar _error3 = _interopRequireDefault(_error2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A property instance gets returned whenever you call `schema.path()`.\n * Properties are also created internally when an object is passed to the Schema constructor.\n *\n * @param {String} name - the name of the property\n * @param {Schema} schema - parent schema\n */\n\nvar Property = function () {\n function Property(name, schema) {\n _classCallCheck(this, Property);\n\n this.name = name;\n this.registry = {};\n this._schema = schema;\n this._type = null;\n this.messages = {};\n }\n\n /**\n * Registers messages.\n *\n * @example\n * prop.message('something is wrong')\n * prop.message({ required: 'thing is required.' })\n *\n * @param {Object|String} messages\n * @return {Property}\n */\n\n _createClass(Property, [{\n key: 'message',\n value: function message(messages) {\n if (typeof messages == 'string') {\n messages = { default: messages };\n }\n\n var entries = Object.entries(messages);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var val = _ref2[1];\n\n this.messages[key] = val;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this;\n }\n\n /**\n * Mount given `schema` on current path.\n *\n * @example\n * const user = new Schema({ email: String })\n * prop.schema(user)\n *\n * @param {Schema} schema - the schema to mount\n * @return {Property}\n */\n\n }, {\n key: 'schema',\n value: function schema(_schema) {\n this._schema.path(this.name, _schema);\n return this;\n }\n\n /**\n * Validate using named functions from the given object.\n * Error messages can be defined by providing an object with\n * named error messages/generators to `schema.message()`\n *\n * The message generator receives the value being validated,\n * the object it belongs to and any additional arguments.\n *\n * @example\n * const schema = new Schema()\n * const prop = schema.path('some.path')\n *\n * schema.message({\n * binary: (path, ctx) => `${path} must be binary.`,\n * bits: (path, ctx, bits) => `${path} must be ${bits}-bit`\n * })\n *\n * prop.use({\n * binary: (val, ctx) => /^[01]+$/i.test(val),\n * bits: [(val, ctx, bits) => val.length == bits, 32]\n * })\n *\n * @param {Object} fns - object with named validation functions to call\n * @return {Property}\n */\n\n }, {\n key: 'use',\n value: function use(fns) {\n var _this = this;\n\n Object.keys(fns).forEach(function (name) {\n var arr = fns[name];\n if (!Array.isArray(arr)) arr = [arr];\n var fn = arr.shift();\n _this._register(name, arr, fn);\n });\n\n return this;\n }\n\n /**\n * Registers a validator that checks for presence.\n *\n * @example\n * prop.required()\n *\n * @param {Boolean} [bool] - `true` if required, `false` otherwise\n * @return {Property}\n */\n\n }, {\n key: 'required',\n value: function required() {\n var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n return this._register('required', [bool]);\n }\n\n /**\n * Registers a validator that checks if a value is of a given `type`\n *\n * @example\n * prop.type(String)\n *\n * @example\n * prop.type('string')\n *\n * @param {String|Function} type - type to check for\n * @return {Property}\n */\n\n }, {\n key: 'type',\n value: function type(_type) {\n this._type = _type;\n return this._register('type', [_type]);\n }\n\n /**\n * Registers a validator that checks length.\n *\n * @example\n * prop.length({ min: 8, max: 255 })\n * prop.length(10)\n *\n * @param {Object|Number} rules - object with `.min` and `.max` properties or a number\n * @param {Number} rules.min - minimum length\n * @param {Number} rules.max - maximum length\n * @return {Property}\n */\n\n }, {\n key: 'length',\n value: function length(rules) {\n return this._register('length', [rules]);\n }\n\n /**\n * Registers a validator that checks size.\n *\n * @example\n * prop.size({ min: 8, max: 255 })\n * prop.size(10)\n *\n * @param {Object|Number} rules - object with `.min` and `.max` properties or a number\n * @param {Number} rules.min - minimum size\n * @param {Number} rules.max - maximum size\n * @return {Property}\n */\n\n }, {\n key: 'size',\n value: function size(rules) {\n return this._register('size', [rules]);\n }\n\n /**\n * Registers a validator for enums.\n *\n * @example\n * prop.enum(['cat', 'dog'])\n *\n * @param {Array} rules - allowed values\n * @return {Property}\n */\n\n }, {\n key: 'enum',\n value: function _enum(enums) {\n return this._register('enum', [enums]);\n }\n\n /**\n * Registers a validator that checks if a value matches given `regexp`.\n *\n * @example\n * prop.match(/some\\sregular\\sexpression/)\n *\n * @param {RegExp} regexp - regular expression to match\n * @return {Property}\n */\n\n }, {\n key: 'match',\n value: function match(regexp) {\n return this._register('match', [regexp]);\n }\n\n /**\n * Registers a validator that checks each value in an array against given `rules`.\n *\n * @example\n * prop.each({ type: String })\n * prop.each([{ type: Number }])\n * prop.each({ things: [{ type: String }]})\n * prop.each(schema)\n *\n * @param {Array|Object|Schema|Property} rules - rules to use\n * @return {Property}\n */\n\n }, {\n key: 'each',\n value: function each(rules) {\n this._schema.path(this.name + '.$', rules);\n return this;\n }\n\n /**\n * Registers paths for array elements on the parent schema, with given array of rules.\n *\n * @example\n * prop.elements([{ type: String }, { type: Number }])\n *\n * @param {Array} arr - array of rules to use\n * @return {Property}\n */\n\n }, {\n key: 'elements',\n value: function elements(arr) {\n var _this2 = this;\n\n arr.forEach(function (rules, i) {\n _this2._schema.path(_this2.name + '.' + i, rules);\n });\n return this;\n }\n\n /**\n * Proxy method for schema path. Makes chaining properties together easier.\n *\n * @example\n * schema\n * .path('name').type(String).required()\n * .path('email').type(String).required()\n *\n */\n\n }, {\n key: 'path',\n value: function path() {\n var _schema2;\n\n return (_schema2 = this._schema).path.apply(_schema2, arguments);\n }\n\n /**\n * Typecast given `value`\n *\n * @example\n * prop.type(String)\n * prop.typecast(123) // => '123'\n *\n * @param {Mixed} value - value to typecast\n * @return {Mixed}\n */\n\n }, {\n key: 'typecast',\n value: function typecast(value) {\n var schema = this._schema;\n var type = this._type;\n\n if (!type) return value;\n\n if (typeof type == 'function') {\n type = type.name;\n }\n\n var cast = schema.typecasters[type] || schema.typecasters[type.toLowerCase()];\n\n if (typeof cast != 'function') {\n throw new Error('Typecasting failed: No typecaster defined for ' + type + '.');\n }\n\n return cast(value);\n }\n\n /**\n * Validate given `value`\n *\n * @example\n * prop.type(Number)\n * assert(prop.validate(2) == null)\n * assert(prop.validate('hello world') instanceof Error)\n *\n * @param {Mixed} value - value to validate\n * @param {Object} ctx - the object containing the value\n * @param {String} [path] - path of the value being validated\n * @return {ValidationError}\n */\n\n }, {\n key: 'validate',\n value: function validate(value, ctx) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.name;\n\n var types = Object.keys(this.registry);\n var done = {};\n var err = void 0;\n\n // Required first\n err = this._run('required', value, ctx, path);\n if (err) return err;\n\n // No need to continue if value is null-ish\n if (value == null) return null;\n\n // Run type second\n err = this._run('type', value, ctx, path);\n if (err) return err;\n\n // Make sure required and run are not executed again\n done.required = true;\n done.type = true;\n\n // Run the rest\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = types[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var type = _step2.value;\n\n if (done[type]) continue;\n err = this._run(type, value, ctx, path);\n if (err) return err;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Run validator of given `type`\n *\n * @param {String} type - type of validator\n * @param {Mixed} value - value to validate\n * @param {Object} ctx - the object containing the value\n * @param {String} path - path of the value being validated\n * @return {ValidationError}\n * @private\n */\n\n }, {\n key: '_run',\n value: function _run(type, value, ctx, path) {\n if (!this.registry[type]) return;\n var schema = this._schema;\n var _registry$type = this.registry[type],\n args = _registry$type.args,\n fn = _registry$type.fn;\n\n var validator = fn || schema.validators[type];\n var valid = validator.apply(undefined, [value, ctx].concat(_toConsumableArray(args), [path]));\n if (!valid) return this._error(type, ctx, args, path);\n }\n\n /**\n * Register validator\n *\n * @param {String} type - type of validator\n * @param {Array} args - argument to pass to validator\n * @param {Function} [fn] - custom validation function to call\n * @return {Property}\n * @private\n */\n\n }, {\n key: '_register',\n value: function _register(type, args, fn) {\n this.registry[type] = { args: args, fn: fn };\n return this;\n }\n\n /**\n * Create an error\n *\n * @param {String} type - type of validator\n * @param {Object} ctx - the object containing the value\n * @param {Array} args - arguments to pass\n * @param {String} path - path of the value being validated\n * @return {ValidationError}\n * @private\n */\n\n }, {\n key: '_error',\n value: function _error(type, ctx, args, path) {\n var schema = this._schema;\n\n var message = this.messages[type] || this.messages.default || schema.messages[type] || schema.messages.default;\n\n if (typeof message == 'function') {\n message = message.apply(undefined, [path, ctx].concat(_toConsumableArray(args)));\n }\n\n return new _error3.default(message, path);\n }\n }]);\n\n return Property;\n}();\n\nexports.default = Property;\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Default error messages.\n *\n * @private\n */\n\nvar Messages = {\n // Type message\n type: function type(prop, ctx, _type) {\n if (typeof _type == 'function') {\n _type = _type.name;\n }\n\n return prop + ' must be of type ' + _type + '.';\n },\n\n\n // Required message\n required: function required(prop) {\n return prop + ' is required.';\n },\n\n\n // Match message\n match: function match(prop, ctx, regexp) {\n return prop + ' must match ' + regexp + '.';\n },\n\n\n // Length message\n length: function length(prop, ctx, len) {\n if (typeof len == 'number') {\n return prop + ' must have a length of ' + len + '.';\n }\n\n var min = len.min,\n max = len.max;\n\n\n if (min && max) {\n return prop + ' must have a length between ' + min + ' and ' + max + '.';\n }\n if (max) {\n return prop + ' must have a maximum length of ' + max + '.';\n }\n if (min) {\n return prop + ' must have a minimum length of ' + min + '.';\n }\n },\n\n\n // Size message\n size: function size(prop, ctx, _size) {\n if (typeof _size == 'number') {\n return prop + ' must have a size of ' + _size + '.';\n }\n\n var min = _size.min,\n max = _size.max;\n\n\n if (min && max) {\n return prop + ' must be between ' + min + ' and ' + max + '.';\n }\n if (max) {\n return prop + ' must be less than ' + max + '.';\n }\n if (min) {\n return prop + ' must be greater than ' + min + '.';\n }\n },\n\n\n // Enum message\n enum: function _enum(prop, ctx, enums) {\n var copy = enums.slice();\n var last = copy.pop();\n return prop + ' must be either ' + copy.join(', ') + ' or ' + last + '.';\n },\n\n\n // Default message\n default: function _default(prop) {\n return 'Validation failed for ' + prop + '.';\n }\n};\n\nexports.default = Messages;\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _componentType = require('component-type');\n\nvar _componentType2 = _interopRequireDefault(_componentType);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Default validators.\n *\n * @private\n */\n\nvar Validators = {\n /**\n * Validates presence.\n *\n * @param {Mixed} value - the value being validated\n * @param {Object} ctx - the object being validated\n * @param {Bolean} required\n * @return {Boolean}\n */\n\n required: function required(value, ctx, _required) {\n if (_required === false) return true;\n return value != null && value !== '';\n },\n\n\n /**\n * Validates type.\n *\n * @param {Mixed} value - the value being validated\n * @param {Object} ctx - the object being validated\n * @param {String|Function} name name of the type or a constructor\n * @return {Boolean}\n */\n\n type: function type(value, ctx, name) {\n if (typeof name == 'function') {\n return value.constructor === name;\n }\n\n return (0, _componentType2.default)(value) === name;\n },\n\n\n /**\n * Validates length.\n *\n * @param {String} value the string being validated\n * @param {Object} ctx the object being validated\n * @param {Object|Number} rules object with .min and/or .max props or a number\n * @param {Number} [rules.min] - minimum length\n * @param {Number} [rules.max] - maximum length\n * @return {Boolean}\n */\n\n length: function length(value, ctx, len) {\n if (typeof len == 'number') {\n return value.length === len;\n }\n var min = len.min,\n max = len.max;\n\n if (min && value.length < min) return false;\n if (max && value.length > max) return false;\n return true;\n },\n\n\n /**\n * Validates size.\n *\n * @param {Number} value the number being validated\n * @param {Object} ctx the object being validated\n * @param {Object|Number} size object with .min and/or .max props or a number\n * @param {String|Number} [size.min] - minimum size\n * @param {String|Number} [size.max] - maximum size\n * @return {Boolean}\n */\n\n size: function size(value, ctx, _size) {\n if (typeof _size == 'number') {\n return value === _size;\n }\n var min = _size.min,\n max = _size.max;\n\n if (parseInt(min) != null && value < min) return false;\n if (parseInt(max) != null && value > max) return false;\n return true;\n },\n\n\n /**\n * Validates enums.\n *\n * @param {String} value the string being validated\n * @param {Object} ctx the object being validated\n * @param {Array} enums array with allowed values\n * @return {Boolean}\n */\n\n enum: function _enum(value, ctx, enums) {\n return enums.includes(value);\n },\n\n\n /**\n * Validates against given `regexp`.\n *\n * @param {String} value the string beign validated\n * @param {Object} ctx the object being validated\n * @param {RegExp} regexp the regexp to validate against\n * @return {Boolean}\n */\n\n match: function match(value, ctx, regexp) {\n return regexp.test(value);\n }\n};\n\nexports.default = Validators;\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assign = assign;\nexports.walk = walk;\nexports.join = join;\n\nvar _eivindfjeldstadDot = require('eivindfjeldstad-dot');\n\nvar _eivindfjeldstadDot2 = _interopRequireDefault(_eivindfjeldstadDot);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Assign given key and value (or object) to given object\n *\n * @private\n */\n\nfunction assign(key, val, obj) {\n if (typeof key == 'string') {\n obj[key] = val;\n return;\n }\n\n Object.keys(key).forEach(function (k) {\n return obj[k] = key[k];\n });\n}\n\n/**\n * Walk path\n *\n * @private\n */\n\nfunction walk(path, obj, callback) {\n var parts = path.split(/\\.\\$(?=\\.|$)/);\n var first = parts.shift();\n var arr = _eivindfjeldstadDot2.default.get(obj, first);\n\n if (!parts.length) {\n return callback(first, arr);\n }\n\n if (!Array.isArray(arr)) {\n return;\n }\n\n for (var i = 0; i < arr.length; i++) {\n var current = join(i, first);\n var next = current + parts.join('.$');\n walk(next, obj, callback);\n }\n}\n\n/**\n * Join `path` with `prefix`\n *\n * @private\n */\n\nfunction join(path, prefix) {\n return prefix ? prefix + '.' + path : path;\n}"],"sourceRoot":""}