Socket
Socket
Sign inDemoInstall

schema-to-yup

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

schema-to-yup - npm Package Compare versions

Comparing version 1.9.21 to 1.9.22

src/base-property-value-resolver.js

2

dist/index.js

@@ -1,2 +0,2 @@

function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var e=t(require("uniq")),n=t(require("dashify")),r=t(require("uppercamelcase")),i=require("yup"),o={getProps:function(t){return t&&t.properties},getType:function(t){return t&&t.type},getName:function(t){return t&&t.name||t.title},getConstraints:function(t){return t},isString:function(t){return t&&"string"===t.type},isArray:function(t){return t&&"array"===t.type},isInteger:function(t){return t&&"integer"===t.type||"int"===t.type},isBoolean:function(t){return t&&"boolean"===t.type},hasDateFormat:function(t){return t&&["date","date-time"].find(function(e){return e===t.format})},isDate:function(t){return t&&"string"===t.type&&o.hasDateFormat(t.format)},isNumber:function(t){return t&&("number"===t.type||o.isInteger(t))},isObject:function(t){return t&&"object"===t.type},isRequired:function(t){return t&&t.required}},s={"json-schema":o,"type-def":{getProps:function(t){return t&&t.fields},getType:function(t){return t&&t.type},getName:function(t){return t&&t.name},getConstraints:function(t){return t&&(t.directives||{}).constraints||{}},isString:function(t){return t&&"String"===t.type},isArray:function(t){return t&&t.isList},isInteger:function(t){return t&&"Int"===t.type},isBoolean:function(t){return t&&"Boolean"===t.type},isDate:function(t){return t&&"Date"===t.type||t.directives.date},isNumber:function(t){return t&&"Int"===t.type||"Float"===t.type},isObject:function(t){return t&&"Object"===t.type},isRequired:function(t){return t&&!t.isNullable}}},a=function(t){void 0===t&&(t={});var e=t.log,n=t.error;this.enable=t.enable||{},this.log="function"==typeof e?e:console.log,this.err="function"==typeof n?n:console.error};a.prototype.error=function(t,e){if(!1!==this.enable.error)throw this.err&&(e?this.err(t,e):this.err(t)),t},a.prototype.warn=function(t,e){this.enable.warn&&this.logInfo("WARNING: "+t,e)},a.prototype.logInfo=function(t,e){this.enable.log&&this.log&&(e?this.log(t,e):this.log(t))};var u=function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isNothing=function(t){return null==t},e.prototype.isPresent=function(t){return!this.isNothing(t)},e.prototype.toNumber=function(t){return Number(t)},e.prototype.isNumberLike=function(t){return!isNaN(this.toNumber(t))},e.prototype.isObjectType=function(t){return t===Object(t)},e.prototype.isNumberType=function(t){return!isNaN(t)},e.prototype.isStringType=function(t){return"string"==typeof t},e.prototype.isFunctionType=function(t){return"function"==typeof t},e.prototype.isDateType=function(t){return t instanceof Date},e}(a),c=function(t){function e(e){void 0===e&&(e={}),t.call(this,e),this.config=Object.assign({},s[e.schemaType||"json-schema"],e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(u);function p(t){return t===Object(t)}var h=function(t,e){void 0===e&&(e={}),this.whenEntryObj=t;var n=e.properties,r=e.config,i=e.key,o=e.when,s=e.type;this.schema=e.schema,this.when=o,this.properties=n||{},this.key=i,this.type=s,this.config=r},f={entryObj:{configurable:!0}};function y(t){return t===Object(t)}h.prototype.validateAndConfigure=function(t){if(!p(t=t||this.whenEntryObj))return this.warn("invalid or missing when entry constraint object",t),!1;var e=Object.keys(t);return e.length<2?(this.warn("validateAndConfigure: when entry constraint must have at least 2 keys: "+e,t),!1):this.hasKey(e,"is")?!!this.hasKey(e,"then")||(this.warn("validateAndConfigure: when entry constraint missing 'then' or 'else' constraint: "+e,t),!1):(this.warn("validateAndConfigure: when entry constraint missing 'is' constraint: "+e,t),!1)},h.prototype.createYupSchemaEntry=function(t){return this.config.createYupSchemaEntry(t)},h.prototype.createValue=function(t,e){return"string"==typeof t&&((t={})[t]=!0),p(t)||this.error("createValue: "+e+" must be a schema object"),Object.assign({},{key:this.key,type:this.type},t)},h.prototype.createEntryOpts=function(t,e){var n=this.createValue(t,e);return{schema:this.schema,properties:this.properties,key:this.key,type:this.type,value:n,config:this.config}},h.prototype.createEntry=function(t,e){var n=this.createEntryOpts(t,e);return this.createYupSchemaEntry(n)},h.prototype.hasKey=function(t,e){return t.find(function(t){return t===e})},h.prototype.hasAnyKey=function(t,e){return t.find(function(t){return e.includes(t)})},h.prototype.whenEntryFor=function(t,e,n){if(n=n||e,"string"==typeof t&&((t={})[t]=!0),!p(t))throw"whenEntryFor: Invalid when object "+t;var r=Object.assign({},t[n]);return delete t[n],r?(t[e]=this.createEntry(r,e),t):t},h.prototype.calcEntryObj=function(){var t=Object.assign({},this.whenEntryObj);return"otherwise"in(t=this.whenEntryFor(t,"then"))&&(t=this.whenEntryFor(t,"otherwise")),"else"in t&&(t=this.whenEntryFor(t,"else")),t},f.entryObj.get=function(){return this.validateAndConfigure()&&this.calcEntryObj()},h.prototype.warn=function(t,e){console.error("[WhenEntry] WARNING",t,e)},h.prototype.error=function(t,e){throw console.error("[WhenEntry] ERROR",t,e),t},Object.defineProperties(h.prototype,f);var l=function(t){void 0===t&&(t={});var e=t.type,n=t.key,r=t.value,i=t.when,o=t.schema,s=t.properties,a=t.config;this.opts=t,this.when=i,this.key=n,this.type=e,this.value=r,this.schema=o,this.properties=s,this.config=a,this.validate()},d={constraintObj:{configurable:!0},keyVal:{configurable:!0},constraintValue:{configurable:!0},constraint:{configurable:!0}};l.prototype.validate=function(){"string"!=typeof this.type&&this.error("validate: invalid or mising type: "+this.type,this.opts),y(this.when)||this.error("validate: invalid or mising when: "+this.when,this.opts)},l.prototype.validateAndConfigure=function(t){if(!y(t=t||this.when))return this.warn("invalid or missing when constraint",t),!1;var e=Object.keys(t);return e.length<1?(this.warn("when constraint must have at least 1 key: "+e,t),!1):(this.whenKeys=e,!0)},l.prototype.createWhenEntry=function(t,e){return function(e,n){return void 0===n&&(n={}),new h(t,n)}(0,e)},l.prototype.accumulate=function(t,e){var n=this.when[e];if(!y(n))return this.warn("invalid when entry constraint object "+n+" for "+e),t;var r=this.createWhenEntry(n,{type:this.type,key:this.key,schema:this.schema,properties:this.properties,config:this.config}).entryObj;return r?t=Object.assign(t,r):t},d.constraintObj.get=function(){return this.whenKeys?this.whenKeys.reduce(this.accumulate.bind(this),{}):{}},d.keyVal.get=function(){var t=this.whenKeys||[];return 1===t.length?t[0]:t},d.constraintValue.get=function(){return!!this.keyVal&&[this.keyVal,this.constraintObj]},d.constraint.get=function(){return this.validateAndConfigure()&&this.constraintValue},l.prototype.warn=function(t,e){console.error("[WhenCondition] WARNING",t,e)},l.prototype.error=function(t,e){throw console.error("[WhenCondition] ERROR",t,e),t},Object.defineProperties(l.prototype,d);var g=function(t){function e(e,n){var r=this;void 0===n&&(n={}),t.call(this,n),this.typeHandler=e,this.constraintsAdded={},this.delegators.map(function(t){r[t]=e[t]})}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={delegators:{configurable:!0},noValueConstraints:{configurable:!0},constraintsMap:{configurable:!0},aliasMap:{configurable:!0}};return n.delegators.get=function(){return["errMessages","base","key","constraints","errorMessageHandler"]},e.prototype.build=function(t,e){void 0===e&&(e={});var n=e.constraintName,r=e.constraintValue,i=e.method,o=e.yup,s=e.values,a=e.errName;if(o=o||this.base,this.isNothing(r=r||e.propValue||this.constraints[t]))return this.warn("no prop value"),!1;n=n||t;var u=this.aliasMap[i=i||n]||i;if(!o[u])return this.warn("Yup has no such API method: "+u),!1;var c=o[u].bind(o),p=this.valErrMessage(n),h=a&&this.valErrMessage(a),f={constraintName:n,yup:o,constraintFn:c,errFn:p||h},y=this.multiValueConstraint(s,f),l=this.presentConstraintValue(r,f),d=this.nonPresentConstraintValue(r,f),g=y||l||d;return g?(this.base=g,g):(this.warn("buildConstraint: missing value or values options"),!1)},e.prototype.nonPresentConstraintValue=function(t,e){var n=e.constraintName,r=e.constraintFn,i=e.errFn;if(!this.isPresent(t))return this.onConstraintAdded({name:n}),r(i)},e.prototype.presentConstraintValue=function(t,e){var n=e.constraintName,r=e.constraintFn,i=e.errFn;if(this.isPresent(t))return this.onConstraintAdded({name:n,value:t}),this.isNoValueConstraint(n)?r(i):r(t,i)},e.prototype.multiValueConstraint=function(t,e){var n=e.constraintFn,r=e.constraintName,i=e.errFn;if(this.isPresent(t)){if(Array.isArray(t))return this.onConstraintAdded({name:r,value:t}),n(t,i);this.warn("buildConstraint: values option must be an array of arguments")}},e.prototype.isNoValueConstraint=function(t){return this.noValueConstraints.includes(t)},n.noValueConstraints.get=function(){return["required","email","url","format"]},e.prototype.addValueConstraint=function(t,e){return void 0===e&&(e={}),this.addConstraint(t,{constraintName:e.constraintName,value:!0,errName:e.errName})},e.prototype.addConstraint=function(t,e){var n=this.build(t,e);return!!n&&(this.typeHandler.base=n,n)},e.prototype.onConstraintAdded=function(t){return this.constraintsAdded[t.name]=t.value,this.typeHandler},n.constraintsMap.get=function(){return{simple:["required","notRequired","nullable"],value:["default","strict"]}},e.prototype.valErrMessage=function(t){return this.errorMessageHandler.valErrMessage(t)},n.aliasMap.get=function(){return{oneOf:"oneOf",enum:"oneOf",anyOf:"oneOf"}},Object.defineProperties(e.prototype,n),e}(u),m=function(t){function e(e,n){void 0===n&&(n={}),t.call(this,n),this.typeHandler=e,this.constraints=e.constraints,this.errMessages=e.errMessages,this.key=e.key,this.type=e.type}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.valErrMessage=function(t){var e=this.constraints,n=this.errMessageFor(t);return"function"==typeof n?n(e):n},e.prototype.errMessageFor=function(t){var e=this.errMessages,n=e[this.key];return n?n[t]:e["$"+t]},e}(u),v=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),b=function(t){function n(e){void 0===e&&(e={}),t.call(this,e.config);var n=e.schema,r=e.key,o=e.value,s=e.config;s=s||{},n=n||{},this.validateOnCreate(r,o,e),this.yup=i,this.key=r,this.schema=n,this.properties=n.properties||{},this.value=o,this.constraints=this.getConstraints(),this.format=o.format||this.constraints.format,this.config=s||{},this.type="mixed",this.mixedConfig=this.config.mixed||{},this.typeConfig=this.config[this.type]||{},this.base=i.mixed(),this.errMessages=s.errMessages||{},this.configureTypeConfig(),this.constraintsAdded={}}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var r={mode:{configurable:!0},disableFlags:{configurable:!0},enableFlags:{configurable:!0},shouldPreProcessValue:{configurable:!0},value:{configurable:!0},mixedEnabled:{configurable:!0},typeEnabled:{configurable:!0},$typeExtends:{configurable:!0},configuredTypeEnabled:{configurable:!0},$typeEnabled:{configurable:!0},enabled:{configurable:!0},constraintsMap:{configurable:!0}};return n.prototype.configureTypeConfig=function(){this.typeConfig.enabled||this.typeConfig.extends||this.typeConfig.convert&&(this.typeConfig.extends=Object.keys(this.typeConfig.convert))},n.prototype.isRequired=function(t){return!0===(t=t||this.value).required},r.mode.get=function(){return this.config.mode||{}},r.disableFlags.get=function(){return[!1,"disabled","no","off"]},r.enableFlags.get=function(){return[!0,"enabled","yes","on"]},n.prototype.disabledMode=function(t){var e=this.mode[t];return!!this.disableFlags.find(function(t){return e===t})},n.prototype.enabledMode=function(t){var e=this.mode[t];return!!this.enableFlags.find(function(t){return e===t})},r.shouldPreProcessValue.get=function(){return!this.disabledMode("notRequired")},n.prototype.preProcessedConstraintValue=function(t){return this.shouldPreProcessValue?this.isRequired(t)?t:Object.assign({},t,{notRequired:!0}):t},r.value.set=function(t){this._value=this.preProcessedConstraintValue(t)},r.value.get=function(){return this._value},n.prototype.initHelpers=function(){var t=this.config;this.errorMessageHandler=(this.config.createErrorMessageHandler||this.createErrorMessageHandler)(this,t),this.constraintBuilder=(this.config.createConstraintBuilder||this.createConstraintBuilder)(this,t),this.rebind("addConstraint","addValueConstraint")},n.prototype.createConstraintBuilder=function(t,e){return void 0===e&&(e={}),new g(t,e)},n.prototype.createErrorMessageHandler=function(t,e){return void 0===e&&(e={}),new m(t,e)},n.prototype.rebind=function(){for(var t=this,e=[],n=arguments.length;n--;)e[n]=arguments[n];e.map(function(e){var n=t[e];t[e]=t.isFunctionType(n)?n.bind(t):n})},n.prototype.validateOnCreate=function(t,e,n){t||this.error("create: missing key "+JSON.stringify(n)),e||this.error("create: missing value "+JSON.stringify(n))},r.mixedEnabled.get=function(){return this.mixedConfig.enabled||["oneOf","notOneOf","when","nullable","isType"]},r.typeEnabled.get=function(){return[]},r.$typeExtends.get=function(){if(Array.isArray(this.typeConfig.extends))return e(this.typeConfig.extends.concat(this.typeEnabled))},r.configuredTypeEnabled.get=function(){return Array.isArray(this.typeConfig.enabled)?this.typeConfig.enabled:this.typeEnabled},r.$typeEnabled.get=function(){return this.$typeExtends||this.configuredTypeEnabled},r.enabled.get=function(){return this.mixedEnabled.concat(this.$typeEnabled)},n.prototype.convertEnabled=function(){var t=this;this.enabled.map(function(e){var n=t.convertFnFor(e);n&&n(t)})},n.prototype.convertFnFor=function(t){return this.customConvertFnFor(t)||this.builtInConvertFnFor(t)},n.prototype.customConvertFnFor=function(t){return(this.typeConfig.convert||{})[t]},n.prototype.builtInConvertFnFor=function(t){return this[t].bind(this)},n.prototype.getConstraints=function(){return this.config.getConstraints(this.value)},n.prototype.createSchemaEntry=function(){return this.convert().base},n.prototype.convert=function(){return this.initHelpers(),this.addMappedConstraints(),this.convertEnabled(),this},n.prototype.addValueConstraint=function(t,e){var n=this.constraintBuilder.addValueConstraint(t,e);return n&&(this.base=n.base),this},n.prototype.addConstraint=function(t,e){var n=this.constraintBuilder.addConstraint(t,e);return n&&(this.base=n),this},n.prototype.addMappedConstraints=function(){var t=Object.keys(this.constraintsMap),e=this.addMappedConstraint.bind(this);return t.map(e),this},n.prototype.addMappedConstraint=function(t){var e=this["value"===t?"addValueConstraint":"addConstraint"];this.constraintsMap[t].map(function(t){e(t)})},r.constraintsMap.get=function(){return{simple:["required","notRequired","nullable"],value:["default","strict"]}},n.prototype.oneOf=function(){var t=this,e=this.constraints.enum||this.constraints.oneOf||this.constraints.anyOf;if(this.isNothing(e))return this;e=Array.isArray(e)?e:[e];var n=["oneOf","enum","anyOf"].find(function(e){return t.constraints[e]});return this.addConstraint(n,{values:e})},n.prototype.notOneOf=function(){var t=this.constraints,e=t.not,n=t.notOneOf||e&&(e.enum||e.oneOf);return this.isNothing(n)?this:(n=Array.isArray(n)?n:[n],this.addConstraint("notOneOf",{values:n}))},n.prototype.valErrMessage=function(t){return this.errorMessageHandler.valErrMessage(t)},n.prototype.createWhenConditionFor=function(t){return(this.config.createWhenCondition||function(t){return new l(t)})({key:this.key,type:this.type,value:this.value,schema:this.schema,properties:this.properties,config:this.config,when:t})},n.prototype.when=function(){var t,e=this.constraints.when;if((t=e)!==Object(t))return this;var n=this.createWhenConditionFor(e).constraint;return n?(this.logInfo("Adding when constraint for "+this.key,n),this.addConstraint("when",{values:n,errName:"when"}),this):(this.warn("Invalid when constraint for: "+e),this)},n.prototype.isType=function(){return this.addConstraint("isType",{value:this.constraints.isType,errName:"notOneOf"}),this},n.prototype.nullable=function(){var t=this.constraints;return this.addConstraint("nullable",{value:t.nullable||t.isNullable,errName:"notOneOf"}),this},n.prototype.message=function(){return config.messages[this.key]||config.messages[this.type]||{}},n.prototype.errMessage=function(t){return void 0===t&&(t="default"),this.message[t]||"error"},n.prototype.toValidJSONSchema=function(){},n.prototype.normalize=function(){},n.prototype.deNormalize=function(){},n.prototype.errorMsg=function(t){this.throwError(t)},n.prototype.error=function(t,e){var n=["["+t+"]",e].join(" ");this.errorMsg(n)},n.prototype.throwError=function(t){throw t},Object.defineProperties(n.prototype,r),n}(c),O=["oneOf","enum","required","notRequired","minDate","min","maxDate","max","trim","lowercase","uppercase","email","url","minLength","maxLength","pattern","matches","regex","integer","positive","minimum","maximum"],C={errMessages:function(t){return void 0===t&&(t=O),t.reduce(function(t,e){return t[e]=function(t){var e=t.value;return t.key+": invalid for "+(e.name||e.title)},t},{})}},E=function(t){function e(e){t.call(this,e),this.type="array",this.base=this.yup.array(),this.createYupSchemaEntry=this.config.createYupSchemaEntry}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},e.prototype.convert=function(){return t.prototype.convert.call(this),this},n.typeEnabled.get=function(){return["maxItems","minItems","ensureItems","compact","itemsOf"]},e.prototype.ensureItems=function(){return this.addConstraint("ensure")},e.prototype.compact=function(){return this.addConstraint("compact")},e.prototype.itemsOf=function(){var t=this.constraints,e=t.items||t.itemsOf||this.constraints.of;if(!this.isNothing(e))if(Array.isArray(e))this.error("itemsOf","does not (yet) support an Array of schemas");else if(this.isObjectType(e)){if(this.createYupSchemaEntry){try{var n=this.createYupSchemaEntry({key:this.key,value:e,config:this.config});return this.addConstraint("of",{constraintValue:n,propValue:e})}catch(t){this.error("itemsOf: Error",t)}return this}this.warn("missing createYupSchemaEntry in config, needed for recursive validation")}else this.error("itemsOf","must be a schema object, was "+typeof e)},e.prototype.maxItems=function(){var t=this.constraints,e=t.maxItems||t.max;if(!this.isNumberType(e))return this;if(!this.isValidSize(e))return this.handleInvalidSize("maxItems",e);var n=e&&this.base.max(e);return this.base=n||this.base,this},e.prototype.minItems=function(){var t=this.constraints,e=t.minItems||t.min;if(!this.isNumberType(e))return this;if(!this.isValidSize(e))return this.handleInvalidSize("minItems",e);var n=e&&this.base.min(e);return this.base=n||this.base,this},e.prototype.$items=function(){return this},e.prototype.$additionalItems=function(){return this},e.prototype.$uniqueItems=function(){return this},e.prototype.$contains=function(){return this},e.prototype.handleInvalidSize=function(t,e){var n="invalid array size constraint for "+t+", was "+e+". Must be a number >= 0";return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},e.prototype.isValidSize=function(t){return this.isNumberType(t)&&t>=0},Object.defineProperties(e.prototype,n),e}(b),w=function(t){function e(e){t.call(this,e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isArray=function(t){return this.config.isArray||this.error("ArrayHandler: mising isArray in config",this.config),this.config.isArray(t)},e.prototype.handle=function(t){return this.isArray(t)&&E.create(t).createSchemaEntry()},e}(c);function j(t,e){return void 0===e&&(e={}),t&&new w(e).handle(t)}var N=function(t){function e(e){t.call(this,e),this.type="boolean",this.base=this.yup.boolean()}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.create=function(t){return new e(t)},e}(b),_=function(t){this.config=t};function M(t,e){return void 0===e&&(e={}),t&&new _(e).handle(t)}_.prototype.isBoolean=function(t){return this.config.isBoolean(t)},_.prototype.handle=function(t){return this.isBoolean(t)&&N.create(t).createSchemaEntry()};var x=function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={$map:{configurable:!0}};return n.$map.get=function(){return{moreThan:["exclusiveMinimum","moreThan"],lessThan:["exclusiveMaximum","lessThan"],max:["maximum","max"],min:["minimum","min"]}},Object.defineProperties(e.prototype,n),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={explainConstraintValidMsg:{configurable:!0}};return e.prototype.transform=function(t){return this.typer.toNumber(t)},e.prototype.isValidConstraint=function(t){return this.typer.isNumberLike(t)},n.explainConstraintValidMsg.get=function(){return"Must be a number or convertible to a number"},Object.defineProperties(e.prototype,n),e}(function(t){function e(e,n){var r=this;t.call(this,e.config),this.map=n||this.$map||{},this.typer=e,this.delegates.map(function(t){var n=e[t];n||r.error("missing delegate: "+t,{typer:e}),r[t]=r.isFunctionType(n)?n.bind(e):n})}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={delegates:{configurable:!0},explainConstraintValidMsg:{configurable:!0}};return e.prototype.isStringType=function(t){return"string"==typeof t},n.delegates.get=function(){return["constraints","addConstraint","constraintsAdded"]},e.prototype.add=function(){var t=this,e=this.map;Object.keys(e).map(function(n){var r=t.entryNames(e[n]);t.addConstraints(n,r)})},e.prototype.entryNames=function(t){return Array.isArray(t)?t:[t]},e.prototype.addConstraints=function(t,e){var n=this;return void 0===e&&(e=[]),e.map(function(e){var r=n.validateAndTransform(e);n.addConstraint(e,{method:t,value:r})}),this},e.prototype.validateAndTransform=function(t){var e=this.constraints[t];return this.validate(e),this.transform(e)},e.prototype.invalidMsg=function(t,e){return"invalid constraint for "+t+", was "+e+"."},n.explainConstraintValidMsg.get=function(){return""},e.prototype.invalidConstraintMsg=function(t,e){return[this.invalidMsg(t,e),this.explainConstraintValidMsg].join("\n")},e.prototype.validate=function(t){return this.isNothing(t)?this:this.isValidConstraint(t)?void 0:this.handleInvalidConstraint(name,t)},e.prototype.isValidConstraint=function(t){return!0},e.prototype.handleInvalidConstraint=function(t,e){var n=this.invalidConstraintMsg(t,e);return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},Object.defineProperties(e.prototype,n),e}(u))),T=function(t){function e(e,n){t.call(this,e,n)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isValid=function(){return this.config.isNumber(this.obj)},e}(function(t){function e(e,n){t.call(this,n),this.obj=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isValid=function(){return!1},e.prototype.verify=function(){return this.isPresent(this.obj)&&this.isValid(this.obj)},e}(c)),S=function(t,e){return void 0===e&&(e={}),function(t,e){return new T(t,e)}(t,e).verify()};function V(t,e){return void 0===e&&(e={}),S(t,e)&&function(t){return k.schemaEntryFor(t)}(t)}var k=function(t){function e(e){t.call(this,e),this.type=this.normalizeNumType(e.type),this.base=this.yup.number(),this.rangeConstraint=new x(this)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0},isInteger:{configurable:!0},isNegative:{configurable:!0},isPositive:{configurable:!0}};return e.prototype.normalizeNumType=function(t){return"int"===t?"integer":t},e.create=function(t){return new e(t)},e.schemaEntryFor=function(t){return e.create(t).createSchemaEntry()},n.typeEnabled.get=function(){return["range","posNeg","integer"]},e.prototype.convert=function(){return t.prototype.convert.call(this),this},e.prototype.range=function(){this.rangeConstraint.add()},e.prototype.truncate=function(){return this.addConstraint("truncate")},e.prototype.round=function(){var t=this.constraints.round;if(this.isNothing(t))return this;var e=this.isStringType(t)?t:"round";return t&&this.base.round(e),this},e.prototype.posNeg=function(){this.positive(),this.negative()},e.prototype.integer=function(){return this.isInteger&&this.addConstraint("integer"),this},n.isInteger.get=function(){return this.config.isInteger(this.type)},e.prototype.positive=function(){return this.addConstraint("positive")},e.prototype.negative=function(){return this.addConstraint("negative")},n.isNegative.get=function(){var t=this.constraints,e=t.exclusiveMaximum;return!!t.negative||void 0!==e&&0===e},n.isPositive.get=function(){var t=this.constraints,e=t.exclusiveMinimum;return!!t.positive||void 0!==e&&0===e},e.prototype.normalize=function(){this.constraints.maximum=this.constraints.maximum||this.constraints.max,this.constraints.minimum=this.constraints.minimum||this.constraints.min},Object.defineProperties(e.prototype,n),e}(b),A=function(t){function e(e){t.call(this,e),this.type="object",this.base=this.yup.object(),this.properties=this.value.properties}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},n.typeEnabled.get=function(){return["noUnknown","camelCase","constantCase"]},e.prototype.convert=function(){if(!this.properties)return this;this.convertEnabled();var t=this.value,e=this.config;if(t){e.buildYup||this.error("convert","Missing buildYup function from config",e);var n=this.config.buildYup(t,e);this.base=n}return this},e.prototype.camelCase=function(){return this.addConstraint("camelCase")},e.prototype.constantCase=function(){return this.addConstraint("constantCase")},e.prototype.noUnknown=function(){var t=this.value,e=t.noUnknown||t.propertyNames,n=e&&this.base.noUnknown(e,this.valErrMessage("propertyNames")||this.valErrMessage("noUnknown"));return this.base=n||this.base,this},Object.defineProperties(e.prototype,n),e}(b),I=function(t){return t&&"object"===t.type},F=function(t){void 0===t&&(t={}),(t=t||{}).isObject=t.isObject||I,this.config=t,this.schema=t.schema};function D(t,e){return void 0===e&&(e={}),t&&new F(e).handle(t)}F.prototype.isObject=function(t){return this.config.isObject(t.value)},F.prototype.handle=function(t){return this.isObject(t)&&A.create(Object.assign({},t,{config:this.config})).createSchemaEntry()};var Y=function(t){function e(e){t.call(this,e),this.type="string",this.base=this.yup.string()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0},isEmail:{configurable:!0},isUrl:{configurable:!0}};return e.create=function(t){return new e(t)},e.prototype.convert=function(){return t.prototype.convert.call(this),this},n.typeEnabled.get=function(){return["normalize","minLength","maxLength","pattern","lowercase","uppercase","email","url","genericFormat"]},e.prototype.trim=function(){return this.addConstraint("trim")},e.prototype.lowercase=function(){return this.addConstraint("lowercase")},e.prototype.uppercase=function(){return this.addConstraint("uppercase")},e.prototype.genericFormat=function(){1!=!this.config.format&&this.yup.prototype[this.format]&&this.addConstraint(this.format)},e.prototype.email=function(){if(!this.isEmail)return this;var t=this.constraintNameFor("email","format");return this.addConstraint("email",{constraintValue:!0,constraintName:t,method:"email",errName:"email"}),this},e.prototype.constraintNameFor=function(){for(var t=this,e=[],n=arguments.length;n--;)e[n]=arguments[n];return e.find(function(e){return t.constraints[e]})},n.isEmail.get=function(){return this.constraints.email||"email"===this.format},e.prototype.url=function(){if(!this.isUrl)return this;var t=this.constraintNameFor("url","format");return this.addConstraint("url",{constraintValue:!0,constraintName:t,method:"url",errName:"url"}),this},n.isUrl.get=function(){return this.constraints.url||"url"===this.format},e.prototype.minLength=function(){var t=this.constraints.minLength,e=this.valErrMessage("minLength")||this.valErrMessage("min"),n=t&&this.base.min(t,e);return this.base=n||this.base,this},e.prototype.maxLength=function(){var t=this.constraints.maxLength,e=this.valErrMessage("maxLength")||this.valErrMessage("max"),n=t&&this.base.max(t,e);return this.base=n||this.base,this},e.prototype.pattern=function(){var t=this.constraints.pattern;if(!t)return this;var e=new RegExp(t),n=this.valErrMessage("pattern")||this.valErrMessage("matches")||this.valErrMessage("regex"),r=e&&this.base.matches(e,n);return this.base=r||this.base,this},e.prototype.normalize=function(){this.constraints.pattern=this.constraints.pattern||this.constraints.matches||this.constraints.regex,this.constraints.maxLength=this.constraints.maxLength||this.constraints.max,this.constraints.minLength=this.constraints.minLength||this.constraints.min},Object.defineProperties(e.prototype,n),e}(b),P=function(t){this.config=t};function q(t,e){return void 0===e&&(e={}),t&&new P(e).handle(t)}P.prototype.isString=function(t){return this.config.isString(t)},P.prototype.handle=function(t){return this.isString(t)&&Y.create(Object.assign({},{config:this.config},t)).createSchemaEntry()};var R=function(t){function e(e){t.call(this,e),this.type="date",this.base=this.yup.date()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},n.typeEnabled.get=function(){return["minDate","maxDate"]},e.prototype.convert=function(){return t.prototype.convert.call(this),this},e.prototype.toDate=function(t){return new Date(t)},e.prototype.isValidDateType=function(t){return this.isStringType(t)||this.isDateType(t)},e.prototype.isValidDate=function(t){return!!this.isValidDateType(t)&&(!this.isStringType(t)||Boolean(Date.parse(t)))},e.prototype.transformToDate=function(t){return this.isNumberType(t)?new Date(t):t},e.prototype.minDate=function(){var t=this.constraints.minDate||this.constraints.min;if(this.isNothing(t))return this;var e=this.transformToDate(t);if(!this.isValidDateType(e))return this.handleInvalidDate("minDate",e);var n=e&&this.base.min(this.toDate(e),this.valErrMessage("minDate")||this.valErrMessage("min"));return this.base=n||this.base,this},e.prototype.maxDate=function(){var t=this.constraints.maxDate||this.constraints.max;if(this.isNothing(t))return this;var e=this.transformToDate(t);if(!this.isValidDateType(e))return this.handleInvalidDate("maxDate",e);var n=e&&this.base.max(this.toDate(e),this.valErrMessage("maxDate")||this.valErrMessage("max"));return this.base=n||this.base,this},e.prototype.handleInvalidDate=function(t,e){var n="invalid constraint for "+t+", was "+e+". Must be a number, string (valid date format) or a Date instance";return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},Object.defineProperties(e.prototype,n),e}(b),H=function(t){this.config=t};function B(t,e){return void 0===e&&(e={}),t&&new H(e).handle(t)}H.prototype.isDate=function(t){return this.config.isDate(t)},H.prototype.handle=function(t){return this.isDate(t)&&R.create(t).createSchemaEntry()};var z={errValKeys:O,defaults:C,YupArray:E,toYupArray:j,YupBoolean:N,toYupBoolean:M,YupNumber:k,toYupNumberSchemaEntry:V,toYupNumber:function(t,e){return void 0===e&&(e={}),S(t,e)&&function(t){return k.create(t)}(t)},YupObject:A,toYupObject:D,YupString:Y,toYupString:q,YupDate:R,toYupDate:B,YupMixed:b,ConvertYupSchemaError:v,Base:c},L=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),$=function(t){function e(e){t.call(this,e.config);var n=e.schema,r=e.name,i=e.key,o=e.value,s=e.config;this.opts=e,this.schema=n,this.key=i,this.value=o||{},this.config=s||{},this.name=r,this.type=Array.isArray(o)?"array":o.type,this.setTypeHandlers()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={defaultTypeHandlerMap:{configurable:!0},obj:{configurable:!0}};return n.defaultTypeHandlerMap.get=function(){return{string:q,number:V,boolean:M,array:j,object:D,date:B}},e.prototype.setTypeHandlers=function(){this.types=Object.assign({},this.defaultTypeHandlerMap,this.config.typeHandlers||{})},e.prototype.isValidSchema=function(){return"string"==typeof this.type},e.prototype.error=function(t,e){throw e?console.error.apply(console,[t,e].concat(this.opts)):console.error.apply(console,[t].concat(this.opts)),new L(t)},e.prototype.toEntry=function(){if(!this.isValidSchema()){var t=JSON.stringify(this.schema);this.error("Not a valid schema: type "+this.type+" must be a string, was "+typeof this.type+" "+t)}return this.toMultiType()||this.toSingleType()||this.toDefaultEntry()},e.prototype.toMultiType=function(){if(Array.isArray(this.value)){var t=this.config.toMultiType;return t?t(this):void 0}},e.prototype.toSingleType=function(){if(!Array.isArray(this.value)){var t=this.config.toSingleType;if(t)return t(this);for(var e,n=this.obj,r=this.config,i=0,o=Object.keys(this.types);i<o.length;i+=1){var s=this.types[o[i]];if(s&&(e=s(n,r)),e)break}return e}},e.prototype.toDefaultEntry=function(){return this.defaultType()},e.prototype.defaultType=function(){this.error("toEntry: unknown type",this.type)},n.obj.get=function(){return{schema:this.schema,key:this.key,value:this.value,type:this.type,config:this.config}},Object.defineProperties(e.prototype,n),e}(c);function U(t){return void 0===t&&(t={}),new $(t).toEntry()}var K={alphanumeric:{optsKey:"locale"},alpha:{optsKey:"locale"},ascii:{},byte:{},creditCard:{},currency:{opts:"currencyOpts"},dataUri:{},dateTime:{},date:{},domainName:{opts:"domainOpts"},hash:{opts:"hashAlgo"},hexColor:{},ipv4:{},ipv6:{},isbn:{},magnetUri:{},mimeType:{},mobilePhone:{},mongoId:{},postalCode:{},uuid:{}},W={createValidatorName:function(t,e){return"is"+(t=(t=r(t||e)).replace(/Uri$/,"URI")).replace(/Id$/,"ID")},createTestName:function(t,e){return n(t||e)}},J={isMagnetURI:function(t,e){return/magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i.test(t)}};function G(t,e){return void 0===e&&(e={}),new X(t,e).yupSchema}function Q(t){return t===Object(t)}var X=function(t){function e(e,n){void 0===n&&(n={}),t.call(this,n),n.buildYup=G,n.createYupSchemaEntry=n.createYupSchemaEntry||U,this.config=Object.assign(this.config,n),this.schema=e;var r=this.getType(e),i=this.getProps(e);if(this.type=r,this.properties=i,this.required=this.getRequired(e),function(t){return t&&"object"===t}(r))if(Q(i)){var o=this.getName(e),s=this.normalizeRequired(e),a=this.propsToShape({properties:s,name:o,config:n});this.shapeConfig=a,this.validSchema=!0}else{var u=JSON.stringify(s);this.error("invalid schema: must have a properties object: "+u)}else this.error('invalid schema: must be type: "object", was type: '+r)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={yupSchema:{configurable:!0}};return e.prototype.getRequired=function(t){var e=this.config.getRequired;return e?e(t):t.required||[]},e.prototype.getProps=function(t){return this.config.getProps(t)},e.prototype.getType=function(t){return this.config.getType(t)},e.prototype.getName=function(t){return this.config.getName(t)},n.yupSchema.get=function(){return i.object().shape(this.shapeConfig)},e.prototype.normalizeRequired=function(){var t=this,e=Object.assign({},this.properties),n=[].concat(this.required)||[];return Object.keys(e).reduce(function(r,i){var o=e[i],s=n.indexOf(i)>=0;return Q(o)?o.required=t.isRequired(o)||s:t.warn("Bad value: "+o+" must be an object"),r[i]=o,r},{})},e.prototype.isRequired=function(t){return this.config.isRequired(t)},e.prototype.propsToShape=function(t){var e=this,n=t.name,r=Object.assign({},this.properties);return Object.keys(r).reduce(function(t,i){var o=e.propToYupSchemaEntry({name:n,key:i,value:r[i]});return e.logInfo("propsToShape",{key:i,yupSchemaEntry:o}),t[i]=o,t},{})},e.prototype.propToYupSchemaEntry=function(t){var e=t.value;return void 0===e&&(e={}),this.createYupSchemaEntry({schema:this.schema,name:t.name,key:t.key,value:e,config:this.config})},e.prototype.createYupSchemaEntry=function(t){var e=t.config;return e.createYupSchemaEntry({schema:t.schema,name:t.name,key:t.key,value:t.value,config:e})},Object.defineProperties(e.prototype,n),e}(c);exports.buildYup=G,exports.YupBuilder=X,exports.YupSchemaEntry=$,exports.YupSchemaEntryError=L,exports.types=z,exports.createYupSchemaEntry=U,exports.extendYupApi=function(t){var e=this;void 0===t&&(t={});var n=t.constraints,r=t.override;void 0===r&&(r=!1);var o,s=t.validator,a=t.createValidatorName,u=t.createTestName;if(!s)throw"extendYupApi: missing validator option";Array.isArray(n)&&(void 0===o&&(o={}),n=n.reduce(function(t,e){if("string"!=typeof e&&!(e instanceof Object)){if(!1!==o.throws)throw"toConstraintsMap: invalid entry "+e;return t}if("string"==typeof e)t[name]={};else{if(!e.name){if(!1!==o.throws)throw"toConstraintsMap: invalid entry "+e+" missing name";return t}t[e.name]=e}return t},{})),n=r?n||K:Object.assign({},K,n||{}),a=a||W.createValidatorName,u=u||W.createTestName,Object.keys(n).map(function(t){var r=n[t],o=r.testName,c=r.optsKey,p=r.logging,h=a(r.validatorName,t);o=u(o,t),i.addMethod(i.string,t,function(n){void 0===n&&(n={});var r=n.message,a=n[c];return i.string().test(o,r,function(n){var i=e.path,u=e.createError,c=s[h];if("function"!=typeof(c=c||J[h]))throw Error("No method named ${validatorName} on validator");var f=c(n,a);return!0===p&&console.log("Yup validator bridge",{key:t,fullValidatorName:h,testName:o,value:n,valid:f}),f||u({path:i,message:r})})})})},exports.ErrorMessageHandler=m,exports.ConstraintBuilder=g;
function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var e=t(require("uniq")),n=t(require("dashify")),r=t(require("uppercamelcase")),i=require("yup"),o={getProps:function(t){return t&&t.properties},getType:function(t){return t&&t.type},getName:function(t){return t&&t.name||t.title},getConstraints:function(t){return t},isString:function(t){return t&&"string"===t.type},isArray:function(t){return t&&"array"===t.type},isInteger:function(t){return t&&"integer"===t.type||"int"===t.type},isBoolean:function(t){return t&&"boolean"===t.type},hasDateFormat:function(t){return t&&["date","date-time"].find(function(e){return e===t.format})},isDate:function(t){return t&&"string"===t.type&&o.hasDateFormat(t.format)},isNumber:function(t){return t&&("number"===t.type||o.isInteger(t))},isObject:function(t){return t&&"object"===t.type},isRequired:function(t){return t&&t.required}},s={"json-schema":o,"type-def":{getProps:function(t){return t&&t.fields},getType:function(t){return t&&t.type},getName:function(t){return t&&t.name},getConstraints:function(t){return t&&(t.directives||{}).constraints||{}},isString:function(t){return t&&"String"===t.type},isArray:function(t){return t&&t.isList},isInteger:function(t){return t&&"Int"===t.type},isBoolean:function(t){return t&&"Boolean"===t.type},isDate:function(t){return t&&"Date"===t.type||t.directives.date},isNumber:function(t){return t&&"Int"===t.type||"Float"===t.type},isObject:function(t){return t&&"Object"===t.type},isRequired:function(t){return t&&!t.isNullable}}},a=function(t){void 0===t&&(t={});var e=t.log,n=t.error;this.enable=t.enable||{},this.log="function"==typeof e?e:console.log,this.err="function"==typeof n?n:console.error};a.prototype.error=function(t,e){if(!1!==this.enable.error)throw this.err&&(e?this.err(t,e):this.err(t)),t},a.prototype.warn=function(t,e){this.enable.warn&&this.logInfo("WARNING: "+t,e)},a.prototype.logInfo=function(t,e){this.enable.log&&this.log&&(e?this.log(t,e):this.log(t))};var u=function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isNothing=function(t){return null==t},e.prototype.isPresent=function(t){return!this.isNothing(t)},e.prototype.toNumber=function(t){return Number(t)},e.prototype.isNumberLike=function(t){return!isNaN(this.toNumber(t))},e.prototype.isObjectType=function(t){return t===Object(t)},e.prototype.isArrayType=function(t){return Array.isArray(t)},e.prototype.isNumberType=function(t){return!isNaN(t)},e.prototype.isStringType=function(t){return"string"==typeof t},e.prototype.isFunctionType=function(t){return"function"==typeof t},e.prototype.isDateType=function(t){return t instanceof Date},e}(a),c=function(t){function e(e){void 0===e&&(e={}),t.call(this,e),this.config=Object.assign({},s[e.schemaType||"json-schema"],e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(u);function p(t){return t===Object(t)}var h=function(t,e){void 0===e&&(e={}),this.whenEntryObj=t;var n=e.properties,r=e.config,i=e.key,o=e.when,s=e.type;this.schema=e.schema,this.when=o,this.properties=n||{},this.key=i,this.type=s,this.config=r},f={entryObj:{configurable:!0}};function l(t){return t===Object(t)}h.prototype.validateAndConfigure=function(t){if(!p(t=t||this.whenEntryObj))return this.warn("invalid or missing when entry constraint object",t),!1;var e=Object.keys(t);return e.length<2?(this.warn("validateAndConfigure: when entry constraint must have at least 2 keys: "+e,t),!1):this.hasKey(e,"is")?!!this.hasKey(e,"then")||(this.warn("validateAndConfigure: when entry constraint missing 'then' or 'else' constraint: "+e,t),!1):(this.warn("validateAndConfigure: when entry constraint missing 'is' constraint: "+e,t),!1)},h.prototype.createYupSchemaEntry=function(t){return this.config.createYupSchemaEntry(t)},h.prototype.createValue=function(t,e){return"string"==typeof t&&((t={})[t]=!0),p(t)||this.error("createValue: "+e+" must be a schema object"),Object.assign({},{key:this.key,type:this.type},t)},h.prototype.createEntryOpts=function(t,e){var n=this.createValue(t,e);return{schema:this.schema,properties:this.properties,key:this.key,type:this.type,value:n,config:this.config}},h.prototype.createEntry=function(t,e){var n=this.createEntryOpts(t,e);return this.createYupSchemaEntry(n)},h.prototype.hasKey=function(t,e){return t.find(function(t){return t===e})},h.prototype.hasAnyKey=function(t,e){return t.find(function(t){return e.includes(t)})},h.prototype.whenEntryFor=function(t,e,n){if(n=n||e,"string"==typeof t&&((t={})[t]=!0),!p(t))throw"whenEntryFor: Invalid when object "+t;var r=Object.assign({},t[n]);return delete t[n],r?(t[e]=this.createEntry(r,e),t):t},h.prototype.calcEntryObj=function(){var t=Object.assign({},this.whenEntryObj);return"otherwise"in(t=this.whenEntryFor(t,"then"))&&(t=this.whenEntryFor(t,"otherwise")),"else"in t&&(t=this.whenEntryFor(t,"else")),t},f.entryObj.get=function(){return this.validateAndConfigure()&&this.calcEntryObj()},h.prototype.warn=function(t,e){console.error("[WhenEntry] WARNING",t,e)},h.prototype.error=function(t,e){throw console.error("[WhenEntry] ERROR",t,e),t},Object.defineProperties(h.prototype,f);var y=function(t){void 0===t&&(t={});var e=t.type,n=t.key,r=t.value,i=t.when,o=t.schema,s=t.properties,a=t.config;this.opts=t,this.when=i,this.key=n,this.type=e,this.value=r,this.schema=o,this.properties=s,this.config=a,this.validate()},d={constraintObj:{configurable:!0},keyVal:{configurable:!0},constraintValue:{configurable:!0},constraint:{configurable:!0}};y.prototype.validate=function(){"string"!=typeof this.type&&this.error("validate: invalid or mising type: "+this.type,this.opts),l(this.when)||this.error("validate: invalid or mising when: "+this.when,this.opts)},y.prototype.validateAndConfigure=function(t){if(!l(t=t||this.when))return this.warn("invalid or missing when constraint",t),!1;var e=Object.keys(t);return e.length<1?(this.warn("when constraint must have at least 1 key: "+e,t),!1):(this.whenKeys=e,!0)},y.prototype.createWhenEntry=function(t,e){return function(e,n){return void 0===n&&(n={}),new h(t,n)}(0,e)},y.prototype.accumulate=function(t,e){var n=this.when[e];if(!l(n))return this.warn("invalid when entry constraint object "+n+" for "+e),t;var r=this.createWhenEntry(n,{type:this.type,key:this.key,schema:this.schema,properties:this.properties,config:this.config}).entryObj;return r?t=Object.assign(t,r):t},d.constraintObj.get=function(){return this.whenKeys?this.whenKeys.reduce(this.accumulate.bind(this),{}):{}},d.keyVal.get=function(){var t=this.whenKeys||[];return 1===t.length?t[0]:t},d.constraintValue.get=function(){return!!this.keyVal&&[this.keyVal,this.constraintObj]},d.constraint.get=function(){return this.validateAndConfigure()&&this.constraintValue},y.prototype.warn=function(t,e){console.error("[WhenCondition] WARNING",t,e)},y.prototype.error=function(t,e){throw console.error("[WhenCondition] ERROR",t,e),t},Object.defineProperties(y.prototype,d);var g=function(t){function e(e,n){var r=this;void 0===n&&(n={}),t.call(this,n),this.typeHandler=e,this.constraintsAdded={},this.delegators.map(function(t){r[t]=e[t]})}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={delegators:{configurable:!0},noValueConstraints:{configurable:!0},constraintsMap:{configurable:!0},aliasMap:{configurable:!0}};return n.delegators.get=function(){return["errMessages","base","key","constraints","errorMessageHandler"]},e.prototype.build=function(t,e){void 0===e&&(e={});var n=e.constraintName,r=e.constraintValue,i=e.method,o=e.yup,s=e.values,a=e.errName;if(o=o||this.base,this.isNothing(r=r||e.propValue||this.constraints[t]))return this.warn("no prop value"),!1;n=n||t;var u=this.aliasMap[i=i||n]||i;if(!o[u])return this.warn("Yup has no such API method: "+u),!1;var c=o[u].bind(o),p=this.valErrMessage(n),h=a&&this.valErrMessage(a),f={constraintName:n,yup:o,constraintFn:c,errFn:p||h},l=this.multiValueConstraint(s,f),y=this.presentConstraintValue(r,f),d=this.nonPresentConstraintValue(r,f),g=l||y||d;return g?(this.base=g,g):(this.warn("buildConstraint: missing value or values options"),!1)},e.prototype.nonPresentConstraintValue=function(t,e){var n=e.constraintName,r=e.constraintFn,i=e.errFn;if(!this.isPresent(t))return this.onConstraintAdded({name:n}),r(i)},e.prototype.presentConstraintValue=function(t,e){var n=e.constraintName,r=e.constraintFn,i=e.errFn;if(this.isPresent(t))return this.onConstraintAdded({name:n,value:t}),this.isNoValueConstraint(n)?r(i):r(t,i)},e.prototype.multiValueConstraint=function(t,e){var n=e.constraintFn,r=e.constraintName,i=e.errFn;if(this.isPresent(t)){if(Array.isArray(t))return this.onConstraintAdded({name:r,value:t}),n(t,i);this.warn("buildConstraint: values option must be an array of arguments")}},e.prototype.isNoValueConstraint=function(t){return this.noValueConstraints.includes(t)},n.noValueConstraints.get=function(){return["required","email","url","format"]},e.prototype.addValueConstraint=function(t,e){return void 0===e&&(e={}),this.addConstraint(t,{constraintName:e.constraintName,value:!0,errName:e.errName})},e.prototype.addConstraint=function(t,e){var n=this.build(t,e);return!!n&&(this.typeHandler.base=n,n)},e.prototype.onConstraintAdded=function(t){return this.constraintsAdded[t.name]=t.value,this.typeHandler},n.constraintsMap.get=function(){return{simple:["required","notRequired","nullable"],value:["default","strict"]}},e.prototype.valErrMessage=function(t){return this.errorMessageHandler.valErrMessage(t)},n.aliasMap.get=function(){return{oneOf:"oneOf",enum:"oneOf",anyOf:"oneOf"}},Object.defineProperties(e.prototype,n),e}(u),m=function(t){function e(e,n){void 0===n&&(n={}),t.call(this,n),this.typeHandler=e,this.constraints=e.constraints,this.errMessages=e.errMessages,this.key=e.key,this.type=e.type}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.valErrMessage=function(t){var e=this.constraints,n=this.errMessageFor(t);return"function"==typeof n?n(e):n},e.prototype.errMessageFor=function(t){var e=this.errMessages,n=e[this.key];return n?n[t]:e["$"+t]},e}(u),v=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),b=function(t){function n(e){void 0===e&&(e={}),t.call(this,e.config);var n=e.schema,r=e.key,o=e.value,s=e.config;s=s||{},n=n||{},this.validateOnCreate(r,o,e),this.yup=i,this.key=r,this.schema=n,this.properties=n.properties||{},this.value=o,this.constraints=this.getConstraints(),this.format=o.format||this.constraints.format,this.config=s||{},this.type="mixed",this.mixedConfig=this.config.mixed||{},this.typeConfig=this.config[this.type]||{},this.base=i.mixed(),this.errMessages=s.errMessages||{},this.configureTypeConfig(),this.constraintsAdded={}}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var r={mode:{configurable:!0},disableFlags:{configurable:!0},enableFlags:{configurable:!0},shouldPreProcessValue:{configurable:!0},value:{configurable:!0},mixedEnabled:{configurable:!0},typeEnabled:{configurable:!0},$typeExtends:{configurable:!0},configuredTypeEnabled:{configurable:!0},$typeEnabled:{configurable:!0},enabled:{configurable:!0},constraintsMap:{configurable:!0}};return n.prototype.configureTypeConfig=function(){this.typeConfig.enabled||this.typeConfig.extends||this.typeConfig.convert&&(this.typeConfig.extends=Object.keys(this.typeConfig.convert))},n.prototype.isRequired=function(t){return!0===(t=t||this.value).required},r.mode.get=function(){return this.config.mode||{}},r.disableFlags.get=function(){return[!1,"disabled","no","off"]},r.enableFlags.get=function(){return[!0,"enabled","yes","on"]},n.prototype.disabledMode=function(t){var e=this.mode[t];return!!this.disableFlags.find(function(t){return e===t})},n.prototype.enabledMode=function(t){var e=this.mode[t];return!!this.enableFlags.find(function(t){return e===t})},r.shouldPreProcessValue.get=function(){return!this.disabledMode("notRequired")},n.prototype.preProcessedConstraintValue=function(t){return this.shouldPreProcessValue?this.isRequired(t)?t:Object.assign({},t,{notRequired:!0}):t},r.value.set=function(t){this._value=this.preProcessedConstraintValue(t)},r.value.get=function(){return this._value},n.prototype.initHelpers=function(){var t=this.config;this.errorMessageHandler=(this.config.createErrorMessageHandler||this.createErrorMessageHandler)(this,t),this.constraintBuilder=(this.config.createConstraintBuilder||this.createConstraintBuilder)(this,t),this.rebind("addConstraint","addValueConstraint")},n.prototype.createConstraintBuilder=function(t,e){return void 0===e&&(e={}),new g(t,e)},n.prototype.createErrorMessageHandler=function(t,e){return void 0===e&&(e={}),new m(t,e)},n.prototype.rebind=function(){for(var t=this,e=[],n=arguments.length;n--;)e[n]=arguments[n];e.map(function(e){var n=t[e];t[e]=t.isFunctionType(n)?n.bind(t):n})},n.prototype.validateOnCreate=function(t,e,n){t||this.error("create: missing key "+JSON.stringify(n)),e||this.error("create: missing value "+JSON.stringify(n))},r.mixedEnabled.get=function(){return this.mixedConfig.enabled||["oneOf","notOneOf","when","nullable","isType"]},r.typeEnabled.get=function(){return[]},r.$typeExtends.get=function(){if(Array.isArray(this.typeConfig.extends))return e(this.typeConfig.extends.concat(this.typeEnabled))},r.configuredTypeEnabled.get=function(){return Array.isArray(this.typeConfig.enabled)?this.typeConfig.enabled:this.typeEnabled},r.$typeEnabled.get=function(){return this.$typeExtends||this.configuredTypeEnabled},r.enabled.get=function(){return this.mixedEnabled.concat(this.$typeEnabled)},n.prototype.convertEnabled=function(){var t=this;this.enabled.map(function(e){var n=t.convertFnFor(e);n&&n(t)})},n.prototype.convertFnFor=function(t){return this.customConvertFnFor(t)||this.builtInConvertFnFor(t)},n.prototype.customConvertFnFor=function(t){return(this.typeConfig.convert||{})[t]},n.prototype.builtInConvertFnFor=function(t){return this[t].bind(this)},n.prototype.getConstraints=function(){return this.config.getConstraints(this.value)},n.prototype.createSchemaEntry=function(){return this.convert().base},n.prototype.convert=function(){return this.initHelpers(),this.addMappedConstraints(),this.convertEnabled(),this},n.prototype.addValueConstraint=function(t,e){var n=this.constraintBuilder.addValueConstraint(t,e);return n&&(this.base=n.base),this},n.prototype.addConstraint=function(t,e){var n=this.constraintBuilder.addConstraint(t,e);return n&&(this.base=n),this},n.prototype.addMappedConstraints=function(){var t=Object.keys(this.constraintsMap),e=this.addMappedConstraint.bind(this);return t.map(e),this},n.prototype.addMappedConstraint=function(t){var e=this["value"===t?"addValueConstraint":"addConstraint"];this.constraintsMap[t].map(function(t){e(t)})},r.constraintsMap.get=function(){return{simple:["required","notRequired","nullable"],value:["default","strict"]}},n.prototype.oneOf=function(){var t=this,e=this.constraints.enum||this.constraints.oneOf||this.constraints.anyOf;if(this.isNothing(e))return this;e=Array.isArray(e)?e:[e];var n=["oneOf","enum","anyOf"].find(function(e){return t.constraints[e]});return this.addConstraint(n,{values:e})},n.prototype.notOneOf=function(){var t=this.constraints,e=t.not,n=t.notOneOf||e&&(e.enum||e.oneOf);return this.isNothing(n)?this:(n=Array.isArray(n)?n:[n],this.addConstraint("notOneOf",{values:n}))},n.prototype.valErrMessage=function(t){return this.errorMessageHandler.valErrMessage(t)},n.prototype.createWhenConditionFor=function(t){return(this.config.createWhenCondition||function(t){return new y(t)})({key:this.key,type:this.type,value:this.value,schema:this.schema,properties:this.properties,config:this.config,when:t})},n.prototype.when=function(){var t,e=this.constraints.when;if((t=e)!==Object(t))return this;var n=this.createWhenConditionFor(e).constraint;return n?(this.logInfo("Adding when constraint for "+this.key,n),this.addConstraint("when",{values:n,errName:"when"}),this):(this.warn("Invalid when constraint for: "+e),this)},n.prototype.isType=function(){return this.addConstraint("isType",{value:this.constraints.isType,errName:"notOneOf"}),this},n.prototype.nullable=function(){var t=this.constraints;return this.addConstraint("nullable",{value:t.nullable||t.isNullable,errName:"notOneOf"}),this},n.prototype.message=function(){return config.messages[this.key]||config.messages[this.type]||{}},n.prototype.errMessage=function(t){return void 0===t&&(t="default"),this.message[t]||"error"},n.prototype.toValidJSONSchema=function(){},n.prototype.normalize=function(){},n.prototype.deNormalize=function(){},n.prototype.errorMsg=function(t){this.throwError(t)},n.prototype.error=function(t,e){var n=["["+t+"]",e].join(" ");this.errorMsg(n)},n.prototype.throwError=function(t){throw t},Object.defineProperties(n.prototype,r),n}(c),O=["oneOf","enum","required","notRequired","minDate","min","maxDate","max","trim","lowercase","uppercase","email","url","minLength","maxLength","pattern","matches","regex","integer","positive","minimum","maximum"],C={errMessages:function(t){return void 0===t&&(t=O),t.reduce(function(t,e){return t[e]=function(t){var e=t.value;return t.key+": invalid for "+(e.name||e.title)},t},{})}},E=function(t){function e(e){t.call(this,e),this.type="array",this.base=this.yup.array(),this.createYupSchemaEntry=this.config.createYupSchemaEntry}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},e.prototype.convert=function(){return t.prototype.convert.call(this),this},n.typeEnabled.get=function(){return["maxItems","minItems","ensureItems","compact","itemsOf"]},e.prototype.ensureItems=function(){return this.addConstraint("ensure")},e.prototype.compact=function(){return this.addConstraint("compact")},e.prototype.itemsOf=function(){var t=this.constraints,e=t.items||t.itemsOf||this.constraints.of;if(!this.isNothing(e))if(Array.isArray(e))this.error("itemsOf","does not (yet) support an Array of schemas");else if(this.isObjectType(e)){if(this.createYupSchemaEntry){try{var n=this.createYupSchemaEntry({key:this.key,value:e,config:this.config});return this.addConstraint("of",{constraintValue:n,propValue:e})}catch(t){this.error("itemsOf: Error",t)}return this}this.warn("missing createYupSchemaEntry in config, needed for recursive validation")}else this.error("itemsOf","must be a schema object, was "+typeof e)},e.prototype.maxItems=function(){var t=this.constraints,e=t.maxItems||t.max;if(!this.isNumberType(e))return this;if(!this.isValidSize(e))return this.handleInvalidSize("maxItems",e);var n=e&&this.base.max(e);return this.base=n||this.base,this},e.prototype.minItems=function(){var t=this.constraints,e=t.minItems||t.min;if(!this.isNumberType(e))return this;if(!this.isValidSize(e))return this.handleInvalidSize("minItems",e);var n=e&&this.base.min(e);return this.base=n||this.base,this},e.prototype.$items=function(){return this},e.prototype.$additionalItems=function(){return this},e.prototype.$uniqueItems=function(){return this},e.prototype.$contains=function(){return this},e.prototype.handleInvalidSize=function(t,e){var n="invalid array size constraint for "+t+", was "+e+". Must be a number >= 0";return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},e.prototype.isValidSize=function(t){return this.isNumberType(t)&&t>=0},Object.defineProperties(e.prototype,n),e}(b),w=function(t){function e(e){t.call(this,e)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isArray=function(t){return this.config.isArray||this.error("ArrayHandler: mising isArray in config",this.config),this.config.isArray(t)},e.prototype.handle=function(t){return this.isArray(t)&&E.create(t).createSchemaEntry()},e}(c);function j(t,e){return void 0===e&&(e={}),t&&new w(e).handle(t)}var _=function(t){function e(e){t.call(this,e),this.type="boolean",this.base=this.yup.boolean()}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.create=function(t){return new e(t)},e}(b),N=function(t){this.config=t};function M(t,e){return void 0===e&&(e={}),t&&new N(e).handle(t)}N.prototype.isBoolean=function(t){return this.config.isBoolean(t)},N.prototype.handle=function(t){return this.isBoolean(t)&&_.create(t).createSchemaEntry()};var T=function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={$map:{configurable:!0}};return n.$map.get=function(){return{moreThan:["exclusiveMinimum","moreThan"],lessThan:["exclusiveMaximum","lessThan"],max:["maximum","max"],min:["minimum","min"]}},Object.defineProperties(e.prototype,n),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={explainConstraintValidMsg:{configurable:!0}};return e.prototype.transform=function(t){return this.typer.toNumber(t)},e.prototype.isValidConstraint=function(t){return this.typer.isNumberLike(t)},n.explainConstraintValidMsg.get=function(){return"Must be a number or convertible to a number"},Object.defineProperties(e.prototype,n),e}(function(t){function e(e,n){var r=this;t.call(this,e.config),this.map=n||this.$map||{},this.typer=e,this.delegates.map(function(t){var n=e[t];n||r.error("missing delegate: "+t,{typer:e}),r[t]=r.isFunctionType(n)?n.bind(e):n})}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={delegates:{configurable:!0},explainConstraintValidMsg:{configurable:!0}};return e.prototype.isStringType=function(t){return"string"==typeof t},n.delegates.get=function(){return["constraints","addConstraint","constraintsAdded"]},e.prototype.add=function(){var t=this,e=this.map;Object.keys(e).map(function(n){var r=t.entryNames(e[n]);t.addConstraints(n,r)})},e.prototype.entryNames=function(t){return Array.isArray(t)?t:[t]},e.prototype.addConstraints=function(t,e){var n=this;return void 0===e&&(e=[]),e.map(function(e){var r=n.validateAndTransform(e);n.addConstraint(e,{method:t,value:r})}),this},e.prototype.validateAndTransform=function(t){var e=this.constraints[t];return this.validate(e),this.transform(e)},e.prototype.invalidMsg=function(t,e){return"invalid constraint for "+t+", was "+e+"."},n.explainConstraintValidMsg.get=function(){return""},e.prototype.invalidConstraintMsg=function(t,e){return[this.invalidMsg(t,e),this.explainConstraintValidMsg].join("\n")},e.prototype.validate=function(t){return this.isNothing(t)?this:this.isValidConstraint(t)?void 0:this.handleInvalidConstraint(name,t)},e.prototype.isValidConstraint=function(t){return!0},e.prototype.handleInvalidConstraint=function(t,e){var n=this.invalidConstraintMsg(t,e);return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},Object.defineProperties(e.prototype,n),e}(u))),x=function(t){function e(e,n){t.call(this,e,n)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isValid=function(){return this.config.isNumber(this.obj)},e}(function(t){function e(e,n){t.call(this,n),this.obj=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.isValid=function(){return!1},e.prototype.verify=function(){return this.isPresent(this.obj)&&this.isValid(this.obj)},e}(c)),S=function(t,e){return void 0===e&&(e={}),function(t,e){return new x(t,e)}(t,e).verify()};function V(t,e){return void 0===e&&(e={}),S(t,e)&&function(t){return k.schemaEntryFor(t)}(t)}var k=function(t){function e(e){t.call(this,e),this.type=this.normalizeNumType(e.type),this.base=this.yup.number(),this.rangeConstraint=new T(this)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0},isInteger:{configurable:!0},isNegative:{configurable:!0},isPositive:{configurable:!0}};return e.prototype.normalizeNumType=function(t){return"int"===t?"integer":t},e.create=function(t){return new e(t)},e.schemaEntryFor=function(t){return e.create(t).createSchemaEntry()},n.typeEnabled.get=function(){return["range","posNeg","integer"]},e.prototype.convert=function(){return t.prototype.convert.call(this),this},e.prototype.range=function(){this.rangeConstraint.add()},e.prototype.truncate=function(){return this.addConstraint("truncate")},e.prototype.round=function(){var t=this.constraints.round;if(this.isNothing(t))return this;var e=this.isStringType(t)?t:"round";return t&&this.base.round(e),this},e.prototype.posNeg=function(){this.positive(),this.negative()},e.prototype.integer=function(){return this.isInteger&&this.addConstraint("integer"),this},n.isInteger.get=function(){return this.config.isInteger(this.type)},e.prototype.positive=function(){return this.addConstraint("positive")},e.prototype.negative=function(){return this.addConstraint("negative")},n.isNegative.get=function(){var t=this.constraints,e=t.exclusiveMaximum;return!!t.negative||void 0!==e&&0===e},n.isPositive.get=function(){var t=this.constraints,e=t.exclusiveMinimum;return!!t.positive||void 0!==e&&0===e},e.prototype.normalize=function(){this.constraints.maximum=this.constraints.maximum||this.constraints.max,this.constraints.minimum=this.constraints.minimum||this.constraints.min},Object.defineProperties(e.prototype,n),e}(b),A=function(t){function e(e){t.call(this,e),this.type="object",this.base=this.yup.object(),this.properties=this.value.properties}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},n.typeEnabled.get=function(){return["noUnknown","camelCase","constantCase"]},e.prototype.convert=function(){if(!this.properties)return this;this.convertEnabled();var t=this.value,e=this.config;if(t){e.buildYup||this.error("convert","Missing buildYup function from config",e);var n=this.config.buildYup(t,e);this.base=n}return this},e.prototype.camelCase=function(){return this.addConstraint("camelCase")},e.prototype.constantCase=function(){return this.addConstraint("constantCase")},e.prototype.noUnknown=function(){var t=this.value,e=t.noUnknown||t.propertyNames,n=e&&this.base.noUnknown(e,this.valErrMessage("propertyNames")||this.valErrMessage("noUnknown"));return this.base=n||this.base,this},Object.defineProperties(e.prototype,n),e}(b),P=function(t){return t&&"object"===t.type},I=function(t){void 0===t&&(t={}),(t=t||{}).isObject=t.isObject||P,this.config=t,this.schema=t.schema};function F(t,e){return void 0===e&&(e={}),t&&new I(e).handle(t)}I.prototype.isObject=function(t){return this.config.isObject(t.value)},I.prototype.handle=function(t){return this.isObject(t)&&A.create(Object.assign({},t,{config:this.config})).createSchemaEntry()};var D=function(t){function e(e){t.call(this,e),this.type="string",this.base=this.yup.string()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0},isEmail:{configurable:!0},isUrl:{configurable:!0}};return e.create=function(t){return new e(t)},e.prototype.convert=function(){return t.prototype.convert.call(this),this},n.typeEnabled.get=function(){return["normalize","minLength","maxLength","pattern","lowercase","uppercase","email","url","genericFormat"]},e.prototype.trim=function(){return this.addConstraint("trim")},e.prototype.lowercase=function(){return this.addConstraint("lowercase")},e.prototype.uppercase=function(){return this.addConstraint("uppercase")},e.prototype.genericFormat=function(){1!=!this.config.format&&this.yup.prototype[this.format]&&this.addConstraint(this.format)},e.prototype.email=function(){if(!this.isEmail)return this;var t=this.constraintNameFor("email","format");return this.addConstraint("email",{constraintValue:!0,constraintName:t,method:"email",errName:"email"}),this},e.prototype.constraintNameFor=function(){for(var t=this,e=[],n=arguments.length;n--;)e[n]=arguments[n];return e.find(function(e){return t.constraints[e]})},n.isEmail.get=function(){return this.constraints.email||"email"===this.format},e.prototype.url=function(){if(!this.isUrl)return this;var t=this.constraintNameFor("url","format");return this.addConstraint("url",{constraintValue:!0,constraintName:t,method:"url",errName:"url"}),this},n.isUrl.get=function(){return this.constraints.url||"url"===this.format},e.prototype.minLength=function(){var t=this.constraints.minLength,e=this.valErrMessage("minLength")||this.valErrMessage("min"),n=t&&this.base.min(t,e);return this.base=n||this.base,this},e.prototype.maxLength=function(){var t=this.constraints.maxLength,e=this.valErrMessage("maxLength")||this.valErrMessage("max"),n=t&&this.base.max(t,e);return this.base=n||this.base,this},e.prototype.pattern=function(){var t=this.constraints,e=t.pattern;if(!e)return this;var n=new RegExp(e,t.flags),r=this.valErrMessage("pattern")||this.valErrMessage("matches")||this.valErrMessage("regex"),i=n&&this.base.matches(n,r);return this.base=i||this.base,this},e.prototype.normalize=function(){this.constraints.pattern=this.constraints.pattern||this.constraints.matches||this.constraints.regex,this.constraints.maxLength=this.constraints.maxLength||this.constraints.max,this.constraints.minLength=this.constraints.minLength||this.constraints.min},Object.defineProperties(e.prototype,n),e}(b),Y=function(t){this.config=t};function R(t,e){return void 0===e&&(e={}),t&&new Y(e).handle(t)}Y.prototype.isString=function(t){return this.config.isString(t)},Y.prototype.handle=function(t){return this.isString(t)&&D.create(Object.assign({},{config:this.config},t)).createSchemaEntry()};var q=function(t){function e(e){t.call(this,e),this.type="date",this.base=this.yup.date()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={typeEnabled:{configurable:!0}};return e.create=function(t){return new e(t)},n.typeEnabled.get=function(){return["minDate","maxDate"]},e.prototype.convert=function(){return t.prototype.convert.call(this),this},e.prototype.toDate=function(t){return new Date(t)},e.prototype.isValidDateType=function(t){return this.isStringType(t)||this.isDateType(t)},e.prototype.isValidDate=function(t){return!!this.isValidDateType(t)&&(!this.isStringType(t)||Boolean(Date.parse(t)))},e.prototype.transformToDate=function(t){return this.isNumberType(t)?new Date(t):t},e.prototype.minDate=function(){var t=this.constraints.minDate||this.constraints.min;if(this.isNothing(t))return this;var e=this.transformToDate(t);if(!this.isValidDateType(e))return this.handleInvalidDate("minDate",e);var n=e&&this.base.min(this.toDate(e),this.valErrMessage("minDate")||this.valErrMessage("min"));return this.base=n||this.base,this},e.prototype.maxDate=function(){var t=this.constraints.maxDate||this.constraints.max;if(this.isNothing(t))return this;var e=this.transformToDate(t);if(!this.isValidDateType(e))return this.handleInvalidDate("maxDate",e);var n=e&&this.base.max(this.toDate(e),this.valErrMessage("maxDate")||this.valErrMessage("max"));return this.base=n||this.base,this},e.prototype.handleInvalidDate=function(t,e){var n="invalid constraint for "+t+", was "+e+". Must be a number, string (valid date format) or a Date instance";return this.config.warnOnInvalid?(this.warn(n),this):(this.error(n,e),this)},Object.defineProperties(e.prototype,n),e}(b),H=function(t){this.config=t};function B(t,e){return void 0===e&&(e={}),t&&new H(e).handle(t)}H.prototype.isDate=function(t){return this.config.isDate(t)},H.prototype.handle=function(t){return this.isDate(t)&&q.create(t).createSchemaEntry()};var z={errValKeys:O,defaults:C,YupArray:E,toYupArray:j,YupBoolean:_,toYupBoolean:M,YupNumber:k,toYupNumberSchemaEntry:V,toYupNumber:function(t,e){return void 0===e&&(e={}),S(t,e)&&function(t){return k.create(t)}(t)},YupObject:A,toYupObject:F,YupString:D,toYupString:R,YupDate:q,toYupDate:B,YupMixed:b,ConvertYupSchemaError:v,Base:c},L=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),$=function(t,e){return new U(t,e)},U=function(t){function e(e,n){t.call(this,e,n),this.initResolvers()}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.initResolvers=function(){var t=config.createMultiTypeResolver||this.createMultiTypeResolver;this.multiTypeResolver=t(opts,config);var e=config.createSingleTypeResolver||this.createSingleTypeResolver;this.singleTypeResolver=e(opts,config)},e.prototype.resolve=function(){return this.toMultiType()||this.toSingleType()||this.toDefaultEntry()},e.prototype.toMultiType=function(){return(this.config.toMultiType||this.singleTypeResolver.resolve)(this)},e.prototype.toSingleType=function(){return(this.config.toSingleType||this.singleTypeResolver.resolve)(this)},e.prototype.toDefaultEntry=function(){return this.defaultType()},e.prototype.defaultType=function(){this.error("toEntry: unknown type",this.type)},e}(function(t){function e(e,n){t.call(this,n);var r=e.value,i=e.type,o=e.name,s=e.key,a=e.schema,u=e.types;this.kind=e.kind,this.value=r,this.schema=a,this.key=s,this.value=r||{},this.name=o,this.type=i,this.types=u}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={obj:{configurable:!0}};return e.prototype.error=function(t,e){throw e?console.error.apply(console,[t,e].concat(this.opts)):console.error.apply(console,[t].concat(this.opts)),new L(t)},e.prototype.resolve=function(){throw"Must be implemented by subclass"},n.obj.get=function(){return{schema:this.schema,key:this.key,value:this.value,type:this.type,kind:this.kind,config:this.config}},Object.defineProperties(e.prototype,n),e}(c)),K=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),W=function(t){function e(e){t.call(this,e.config);var n=e.schema,r=e.name,i=e.key,o=e.value,s=e.config;this.opts=e,this.schema=n,this.key=i,this.value=o||{},this.config=s||{},this.name=r;var a=Array.isArray(o)?"array":o.type;this.kind="array"===a?"multi":single,this.type=a,this.setTypeHandlers(),this.setPropertyHandler()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={defaultTypeHandlerMap:{configurable:!0}};return e.prototype.setPropertyHandler=function(){var t=this.config;this.propertyValueHandler=(t.createPropertyValueHandler||this.createPropertyValueHandler)({type:this.type,kind:this.kind,types:this.types,value:this.value,name:this.name,key:this.key,schema:this.schema},t)},e.prototype.createPropertyValueHandler=function(t,e){return $(t,e)},n.defaultTypeHandlerMap.get=function(){return{string:R,number:V,boolean:M,array:j,object:F,date:B}},e.prototype.setTypeHandlers=function(){this.types=Object.assign({},this.defaultTypeHandlerMap,this.config.typeHandlers||{})},e.prototype.isValidSchema=function(){return this.isStringType(this.type)},e.prototype.error=function(t,e){throw e?console.error.apply(console,[t,e].concat(this.opts)):console.error.apply(console,[t].concat(this.opts)),new K(t)},e.prototype.toEntry=function(){if(!this.isValidSchema()){var t=JSON.stringify(this.schema);this.error("Not a valid schema: type "+this.type+" must be a string, was "+typeof this.type+" "+t)}return this.propertyValueHandler.resolve(opts,config)},Object.defineProperties(e.prototype,n),e}(c);function J(t){return void 0===t&&(t={}),new W(t).toEntry()}var G={alphanumeric:{optsKey:"locale"},alpha:{optsKey:"locale"},ascii:{},byte:{},creditCard:{},currency:{opts:"currencyOpts"},dataUri:{},dateTime:{},date:{},domainName:{opts:"domainOpts"},hash:{opts:"hashAlgo"},hexColor:{},ipv4:{},ipv6:{},isbn:{},magnetUri:{},mimeType:{},mobilePhone:{},mongoId:{},postalCode:{},uuid:{}},Q={createValidatorName:function(t,e){return"is"+(t=(t=r(t||e)).replace(/Uri$/,"URI")).replace(/Id$/,"ID")},createTestName:function(t,e){return n(t||e)}},X={isMagnetURI:function(t,e){return/magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i.test(t)}};function Z(t,e){return void 0===e&&(e={}),new et(t,e).yupSchema}function tt(t){return t===Object(t)}var et=function(t){function e(e,n){void 0===n&&(n={}),t.call(this,n),n.buildYup=Z,n.createYupSchemaEntry=n.createYupSchemaEntry||J,this.config=Object.assign(this.config,n),this.schema=e;var r=this.getType(e),i=this.getProps(e);if(this.type=r,this.properties=i,this.additionalProps=this.getAdditionalProperties(e),this.required=this.getRequired(e),function(t){return t&&"object"===t}(r))if(tt(i)){var o=this.getName(e),s=this.normalizeRequired(e),a=this.propsToShape({properties:s,name:o,config:n});this.shapeConfig=a,this.validSchema=!0}else{var u=JSON.stringify(s);this.error("invalid schema: must have a properties object: "+u)}else this.error('invalid schema: must be type: "object", was type: '+r)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={yupSchema:{configurable:!0}};return e.prototype.getAdditionalProperties=function(t){return t.additionalProperties},e.prototype.getRequired=function(t){var e=this.config.getRequired;return e?e(t):t.required||[]},e.prototype.getProps=function(t){return this.config.getProps(t)},e.prototype.getType=function(t){return this.config.getType(t)},e.prototype.getName=function(t){return this.config.getName(t)},n.yupSchema.get=function(){return i.object().shape(this.shapeConfig)},e.prototype.normalizeRequired=function(){var t=this,e=Object.assign({},this.properties),n=[].concat(this.required)||[];return Object.keys(e).reduce(function(r,i){var o=e[i],s=n.indexOf(i)>=0;return tt(o)?o.required=t.isRequired(o)||s:t.warn("Bad value: "+o+" must be an object"),r[i]=o,r},{})},e.prototype.isRequired=function(t){return this.config.isRequired(t)},e.prototype.propsToShape=function(t){void 0===t&&(t={});var e=this.objPropsToShape(t);return this.objPropsShape=e,this.addPropsShape=this.additionalPropsToShape(t,e),e},e.prototype.additionalPropsToShape=function(t,e){return e},e.prototype.objPropsToShape=function(t){var e=this,n=t.name,r=Object.assign({},this.properties);return Object.keys(r).reduce(function(t,i){var o=e.propToYupSchemaEntry({name:n,key:i,value:r[i]});return e.logInfo("propsToShape",{key:i,yupSchemaEntry:o}),t[i]=o,t},{})},e.prototype.propToYupSchemaEntry=function(t){var e=t.value;return void 0===e&&(e={}),this.createYupSchemaEntry({schema:this.schema,name:t.name,key:t.key,value:e,config:this.config})},e.prototype.createYupSchemaEntry=function(t){var e=t.config;return e.createYupSchemaEntry({schema:t.schema,name:t.name,key:t.key,value:t.value,config:e})},Object.defineProperties(e.prototype,n),e}(c);exports.buildYup=Z,exports.YupBuilder=et,exports.YupSchemaEntry=W,exports.YupSchemaEntryError=K,exports.types=z,exports.createYupSchemaEntry=J,exports.extendYupApi=function(t){var e=this;void 0===t&&(t={});var n=t.constraints,r=t.override;void 0===r&&(r=!1);var o,s=t.validator,a=t.createValidatorName,u=t.createTestName;if(!s)throw"extendYupApi: missing validator option";Array.isArray(n)&&(void 0===o&&(o={}),n=n.reduce(function(t,e){if("string"!=typeof e&&!(e instanceof Object)){if(!1!==o.throws)throw"toConstraintsMap: invalid entry "+e;return t}if("string"==typeof e)t[name]={};else{if(!e.name){if(!1!==o.throws)throw"toConstraintsMap: invalid entry "+e+" missing name";return t}t[e.name]=e}return t},{})),n=r?n||G:Object.assign({},G,n||{}),a=a||Q.createValidatorName,u=u||Q.createTestName,Object.keys(n).map(function(t){var r=n[t],o=r.testName,c=r.optsKey,p=r.logging,h=a(r.validatorName,t);o=u(o,t),i.addMethod(i.string,t,function(n){void 0===n&&(n={});var r=n.message,a=n[c];return i.string().test(o,r,function(n){var i=e.path,u=e.createError,c=s[h];if("function"!=typeof(c=c||X[h]))throw Error("No method named ${validatorName} on validator");var f=c(n,a);return!0===p&&console.log("Yup validator bridge",{key:t,fullValidatorName:h,testName:o,value:n,valid:f}),f||u({path:i,message:r})})})})},exports.PropertyValueResolver=U,exports.createPropertyValueResolver=$,exports.ErrorMessageHandler=m,exports.ConstraintBuilder=g;
//# sourceMappingURL=index.js.map
{
"name": "schema-to-yup",
"version": "1.9.21",
"version": "1.9.22",
"source": "src/index.js",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -188,2 +188,38 @@ # Schema to Yup schema

## Additional properties
Currently this library does not have built-in support for the `additionalProperties` feature of JSON schema as described [here](https://json-schema.org/understanding-json-schema/reference/object.html)
```js
{
"type": "object",
"properties": {
"number": { "type": "number" },
"street_name": { "type": "string" },
"street_type": { "type": "string",
"enum": ["Street", "Avenue", "Boulevard"]
}
},
"additionalProperties": { "type": "string" }
}
```
See [issue 55](https://github.com/kristianmandrup/schema-to-yup/issues/55#issuecomment-561127144)
Yup does not directly support this, so it would require some "hacking" to make it work.
You can extend `YupBuilder` to include custom logic to support `additionalProperties`
```js
class YupBuilderWithSupportForAdditionalProperties extends YupBuilder {
additionalPropsToShape(opts, shape) {
// do your magic here using this.additionalProps
// make new yup constraint function calls on the incoming yup shape object
return shape;
}
}
```
See the issue for hints on how to achieve this.
## Types

@@ -200,2 +236,72 @@

## Multi-type constraints
This library currently does not come with built-in support for multi valued (list/array) type constraints such as `['string', 'null']`
See [Issue 52](https://github.com/kristianmandrup/schema-to-yup/issues/52#issuecomment-561720235) for a discussion and current state.
The key is to add your own logic for the `toMultiType` function/method of `YupSchemaEntry`.
You can pass a custom factory method `createMultiTypeValueResolver` on the `config` object.
A more direct approach is to pass in a custom `toMultiType` function with your own logic as described in the issue. Start simple and gradually support more complex scenarios.
You can leverage the built in infrastructure of this library in many ways to extend it or customize it as needed. Use the library infrastructure as building blocks.
Sample (untested):
```js
export const createPropertyValueHandler = (opts, config) => {
return new PropertyValueResolver(opts, config);
};
export class MyMultiTypeValueResolver extends MultiTypeValueResolver {
constructor(opts, config) {
this.propertyHandler = createPropertyValueHandler(opts, config);
}
resolve() {
const { value, name } = this;
let constraintListValue = this.normalizeValue(value); // ['string', 'null']
const multiTypePropSchema = constraintListValue.reduce(
(accSchema, constraintValue) => {
return this.resolvePropertyValue(constraintValue, accSchema);
},
null
);
return yup.mixed().test({
name,
exclusive: true,
params: {},
message: "${path} does not conform to all constraints defined",
test: val => {
return multiTypePropSchema.validateSync(val);
}
});
}
resolvePropertyValue(constraintValue, accSchema) {
const opts = {
...this.opts,
constraintValue
};
return this.propertyHandler.resolve(opts, this.config);
}
// expand/normalize to list of objects each with a valid type entry
normalizeList(multiTypeList) {
return multiTypeList.reduce((acc, entry) => {
acc.push(normalizedEntry);
return acc;
}, []);
}
normalizeTypeEntry(entry) {
if (!this.isStringType(entry)) return entry;
return { type: entry };
}
}
```
## Custom entry builders

@@ -419,2 +525,5 @@

For pattern (RegExp) you can additionally provide a flags property, such as `flags: 'i'`.
Will be converted to a regexp using `new RegExp(pattern, flags)`
## Conditional logic

@@ -421,0 +530,0 @@

@@ -11,2 +11,4 @@ import {

import { createPropertyValueResolver } from "./property-value-resolver";
class YupSchemaEntryError extends Error {}

@@ -24,6 +26,29 @@

this.name = name;
this.type = Array.isArray(value) ? "array" : value.type;
const type = Array.isArray(value) ? "array" : value.type;
this.kind = type === "array" ? "multi" : single;
this.type = type;
this.setTypeHandlers();
this.setPropertyHandler();
}
setPropertyHandler() {
const { config, types, value, name, key, type, kind, schema } = this;
const opts = {
type,
kind,
types,
value,
name,
key,
schema
};
const createPropertyValueHandlerFn =
config.createPropertyValueHandler || this.createPropertyValueHandler;
this.propertyValueHandler = createPropertyValueHandlerFn(opts, config);
}
createPropertyValueHandler(opts, config) {
return createPropertyValueResolver(opts, config);
}
get defaultTypeHandlerMap() {

@@ -48,3 +73,4 @@ return {

isValidSchema() {
return typeof this.type === "string";
const { type } = this;
return this.isStringType(type);
}

@@ -68,58 +94,6 @@

}
return this.toMultiType() || this.toSingleType() || this.toDefaultEntry();
return this.propertyValueHandler.resolve(opts, config);
}
toMultiType() {
const { value } = this;
if (!Array.isArray(value)) return;
const toMultiType = this.config.toMultiType;
if (toMultiType) {
return toMultiType(this);
}
// TODO
return;
}
toSingleType() {
const { value } = this;
if (Array.isArray(value)) return;
const toSingleType = this.config.toSingleType;
if (toSingleType) {
return toSingleType(this);
}
const { obj, config } = this;
const typeHandlerNames = Object.keys(this.types);
let result;
// iterate all registered type handlers in this.types
for (let typeName of typeHandlerNames) {
const typeFn = this.types[typeName];
if (typeFn) {
result = typeFn(obj, config);
}
if (result) break;
}
return result;
}
toDefaultEntry() {
return this.defaultType();
}
defaultType() {
// return this.mixed(config)
this.error("toEntry: unknown type", this.type);
}
get obj() {
return {
schema: this.schema,
key: this.key,
value: this.value,
type: this.type,
config: this.config
};
}
}
export { YupSchemaEntryError, YupSchemaEntry, Base };

@@ -5,3 +5,6 @@ import * as yup from "yup";

import { createYupSchemaEntry } from "./create-entry";
export {
PropertyValueResolver,
createPropertyValueResolver
} from "./property-value-resolver";
import { extendYupApi } from "./validator-bridge";

@@ -34,2 +37,3 @@

this.properties = props;
this.additionalProps = this.getAdditionalProperties(schema);
this.required = this.getRequired(schema);

@@ -56,2 +60,6 @@

getAdditionalProperties(schema) {
return schema.additionalProperties;
}
getRequired(obj) {

@@ -109,3 +117,14 @@ const { getRequired } = this.config;

propsToShape({ name }) {
propsToShape(opts = {}) {
const shape = this.objPropsToShape(opts);
this.objPropsShape = shape;
this.addPropsShape = this.additionalPropsToShape(opts, shape);
return shape;
}
additionalPropsToShape(opts, shape) {
return shape;
}
objPropsToShape({ name }) {
const properties = {

@@ -112,0 +131,0 @@ ...this.properties

@@ -28,2 +28,6 @@ import { Loggable } from "./_loggable";

isArrayType(value) {
return Array.isArray(value);
}
isNumberType(num) {

@@ -30,0 +34,0 @@ return !isNaN(num);

@@ -110,7 +110,7 @@ import { YupMixed } from "../mixed";

pattern() {
const { pattern } = this.constraints;
const { pattern, flags } = this.constraints;
if (!pattern) {
return this;
}
const regex = new RegExp(pattern);
const regex = new RegExp(pattern, flags);
const errMsg =

@@ -117,0 +117,0 @@ this.valErrMessage("pattern") ||

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc