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.23 to 1.9.24

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.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 void 0!==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;
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 void 0!==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},{})}},j=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)&&j.create(t).createSchemaEntry()},e}(c);function E(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 T(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 M=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 M(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),R=function(t){this.config=t};function Y(t,e){return void 0===e&&(e={}),t&&new R(e).handle(t)}R.prototype.isString=function(t){return this.config.isString(t)},R.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:j,toYupArray:E,YupBoolean:_,toYupBoolean:T,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:Y,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){function e(e,n){t.call(this,n);var r=e.value,i=e.type,o=e.kind,s=e.name,a=e.key,u=e.schema,c=e.types;this.opts=e,this.kind=o,this.value=r,this.schema=u,this.key=a,this.value=r||{},this.name=s,this.type=i,this.types=c}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){var n=this.opts;throw e?console.error.apply(console,[t,e].concat(n)):console.error.apply(console,[t].concat(n)),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),U=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.resolve=function(){if(Array.isArray(this.value)){var t=this.config.toMultiType;return t?t(this):void 0}},e}($),K=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.resolve=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}($),W=function(t,e){return new J(t,e)},J=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=this.opts,e=this.config,n=e.createMultiTypeResolver||this.createMultiTypeResolver.bind(this);this.multiTypeResolver=n(t,e);var r=e.createSingleTypeResolver||this.createSingleTypeResolver.bind(this);this.singleTypeResolver=r(t,e)},e.prototype.createMultiTypeResolver=function(){return new U(this.opts,this.config)},e.prototype.createSingleTypeResolver=function(){return new K(this.opts,this.config)},e.prototype.resolve=function(){return this.toMultiType()||this.toSingleType()||this.toDefaultEntry()},e.prototype.toMultiType=function(){return(this.config.toMultiType||this.singleTypeResolver.resolve.bind(this.singleTypeResolver))(this)},e.prototype.toSingleType=function(){return(this.config.toSingleType||this.singleTypeResolver.resolve.bind(this.singleTypeResolver))(this)},e.prototype.toDefaultEntry=function(){return this.defaultType()},e.prototype.defaultType=function(){this.error("toEntry: unknown type",this.type)},e}($),G=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),Q=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 W(t,e)},n.defaultTypeHandlerMap.get=function(){return{string:Y,number:V,boolean:T,array:E,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){var n=this.opts;throw e?console.error.apply(console,[t,e].concat(n)):console.error.apply(console,[t].concat(n)),new G(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(this.opts,this.config)},Object.defineProperties(e.prototype,n),e}(c);function X(t){return void 0===t&&(t={}),new Q(t).toEntry()}var Z={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:{}},tt={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)}},et={isMagnetURI:function(t,e){return/magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32}/i.test(t)}};function nt(t,e){return void 0===e&&(e={}),new it(t,e).yupSchema}function rt(t){return t===Object(t)}var it=function(t){function e(e,n){void 0===n&&(n={}),t.call(this,n),n.buildYup=nt,n.createYupSchemaEntry=n.createYupSchemaEntry||X,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(rt(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 rt(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=nt,exports.YupBuilder=it,exports.YupSchemaEntry=Q,exports.YupSchemaEntryError=G,exports.types=z,exports.createYupSchemaEntry=X,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||Z:Object.assign({},Z,n||{}),a=a||tt.createValidatorName,u=u||tt.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||et[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=J,exports.createPropertyValueResolver=W,exports.ErrorMessageHandler=m,exports.ConstraintBuilder=g;
//# sourceMappingURL=index.js.map
{
"name": "schema-to-yup",
"version": "1.9.23",
"version": "1.9.24",
"source": "src/index.js",

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

@@ -16,9 +16,7 @@ # Schema to Yup schema

## Usage notes
## Customisation hooks
Please be aware that this library might contain bugs or be incomplete.
To circumvent this, use the one of the customisation hooks or use an earlier more stable version such as `1.9.14` (or thereabouts).
This library is built to be easy to customise or extend to suit individual developer needs.
|Use any of the following customisation hooks to add custom features, circumvent missing functionality or bugs or extend any way you see fit. You can even use these hooks to support a different validator library, leveraging the generic schema validator builder infrastructure.
Customisation hooks:
- [entry builders](#Custom-entry-builders)

@@ -189,38 +187,2 @@ - [type handlers](#Custom-type-handlers)

## 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

@@ -237,2 +199,65 @@

### Mixed (any type)
- `strict`
- `default`
- `nullable`
- `required`
- `notRequired`
- `oneOf` (`enum`, `anyOf`)
- `notOneOf`
- `when` _NEW_
- `isType` _NEW_
- `nullable` (`isNullable`) _NEW_
### Array
- `ensure`
- `compact`
- `items` (`of`)
- `maxItems` (`max`)
- `minItems` (`min`)
- `itemsOf` (`of`) _NEW_
### Boolean
No keys
### Date
- `maxDate` (`max`)
- `minDate` (`min`)
### Number
- `integer`
- `moreThan` (`exclusiveMinimum`)
- `lessThan` (`exclusiveMaximum`)
- `positive`
- `negative`
- `min` (`minimum`)
- `max` (`maximum`)
- `truncate`
- `round`
### Object
- `camelCase`
- `constantCase`
- `noUnknown` (`propertyNames`)
### String
- `minLength` (`min`)
- `maxLength` (`max`)
- `pattern` (`matches` or `regex`)
- `email` (`format: 'email'`)
- `url` (`format: 'url'`)
- `lowercase`
- `uppercase`
- `trim`
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)`
## Multi-type constraints

@@ -244,12 +269,6 @@

The key is to add your own logic for the `toMultiType` function/method of `YupSchemaEntry`.
To support this, you can either add your own logic for the `toMultiType` function/method of `YupSchemaEntry` or pass a custom factory method `createMultiTypeValueResolver` on the `config` object.
You can pass a custom factory method `createMultiTypeValueResolver` on the `config` object.
Sample code for multi type support (untested):
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

@@ -311,3 +330,3 @@ export const createPropertyValueHandler = (opts, config) => {

You can pass in custom functions for the followin kinds of type entry values
You can pass in custom functions for the following kinds of type entry values

@@ -422,3 +441,3 @@ - object value, such as `{type: 'string'}`

Version `1.9.18` and higher supports using a custom constraint builder to add and build constraints. All factories are initialised in `initHelpers` and executed as the first step of `convert` (see `mixed.js`)
This library supports using a custom constraint builder to add and build constraints. All factories are initialised in `initHelpers` and executed as the first step of `convert` (see `mixed.js`)

@@ -469,65 +488,2 @@ ```js

### Mixed (any type)
- `strict`
- `default`
- `nullable`
- `required`
- `notRequired`
- `oneOf` (`enum`, `anyOf`)
- `notOneOf`
- `when` _NEW_
- `isType` _NEW_
- `nullable` (`isNullable`) _NEW_
### Array
- `ensure`
- `compact`
- `items` (`of`)
- `maxItems` (`max`)
- `minItems` (`min`)
- `itemsOf` (`of`) _NEW_
### Boolean
No keys
### Date
- `maxDate` (`max`)
- `minDate` (`min`)
### Number
- `integer`
- `moreThan` (`exclusiveMinimum`)
- `lessThan` (`exclusiveMaximum`)
- `positive`
- `negative`
- `min` (`minimum`)
- `max` (`maximum`)
- `truncate`
- `round`
### Object
- `camelCase`
- `constantCase`
- `noUnknown` (`propertyNames`)
### String
- `minLength` (`min`)
- `maxLength` (`max`)
- `pattern` (`matches` or `regex`)
- `email` (`format: 'email'`)
- `url` (`format: 'url'`)
- `lowercase`
- `uppercase`
- `trim`
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

@@ -613,2 +569,38 @@

## 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 ideas and hints on how to achieve support for this.
## Complex example

@@ -629,3 +621,3 @@

"matches": "[a-zA-Z- ]+",
"mix": 3,
"min": 3,
"maxLength": 40,

@@ -697,3 +689,3 @@ },

Nested object schema properties are now finally fully supported.
Nested object schema properties are supported.

@@ -726,2 +718,4 @@ See `test/types/object/complex-schema.test.js`

This can be used to support any kind of schema, including JSN schema and GraphQL type definition schemas etc.
### GraphQL schema

@@ -894,7 +888,7 @@

Now the bridge includes tests. Seems to work ;)
Now the bridge includes tests and seems to work ;)
### Subclassing
You can sublass `YupBuilder` or any of the internal classes to create your own custom infrastructure to suit your particular needs, expand with support for extra features etc.
You can sublass `YupBuilder` or any of the internal classes to create your own custom infrastructure to suit your particular needs, extend with extra features etc.

@@ -901,0 +895,0 @@ ```js

@@ -9,2 +9,3 @@ import { Base } from "./types";

const { value, type, kind, name, key, schema, types } = opts;
this.opts = opts;
this.kind = kind;

@@ -21,5 +22,4 @@ this.value = value;

error(msg, data) {
data
? console.error(msg, data, ...this.opts)
: console.error(msg, ...this.opts);
const { opts } = this;
data ? console.error(msg, data, ...opts) : console.error(msg, ...opts);
throw new PropertyValueResolverError(msg);

@@ -33,11 +33,12 @@ }

get obj() {
const { schema, key, value, type, kind, config } = this;
return {
schema: this.schema,
key: this.key,
value: this.value,
type: this.type,
kind: this.kind,
config: this.config
schema,
key,
value,
type,
kind,
config
};
}
}

@@ -76,5 +76,4 @@ import {

error(msg, data) {
data
? console.error(msg, data, ...this.opts)
: console.error(msg, ...this.opts);
const { opts } = this;
data ? console.error(msg, data, ...opts) : console.error(msg, ...opts);
throw new YupSchemaEntryError(msg);

@@ -92,2 +91,3 @@ }

}
const { opts, config } = this;
return this.propertyValueHandler.resolve(opts, config);

@@ -94,0 +94,0 @@ }

import { BasePropertyValueResolver } from "./base-property-value-resolver";
import { MultiPropertyValueResolver } from "./multi-property-value-resolver";
import { SinglePropertyValueResolver } from "./single-property-value-resolver";

@@ -14,10 +16,22 @@ export const createPropertyValueResolver = (opts, config) => {

initResolvers() {
const { opts, config } = this;
const createMultiTypeResolverFn =
config.createMultiTypeResolver || this.createMultiTypeResolver;
config.createMultiTypeResolver || this.createMultiTypeResolver.bind(this);
this.multiTypeResolver = createMultiTypeResolverFn(opts, config);
const createSingleTypeResolverFn =
config.createSingleTypeResolver || this.createSingleTypeResolver;
config.createSingleTypeResolver ||
this.createSingleTypeResolver.bind(this);
this.singleTypeResolver = createSingleTypeResolverFn(opts, config);
}
createMultiTypeResolver() {
const { opts, config } = this;
return new MultiPropertyValueResolver(opts, config);
}
createSingleTypeResolver() {
const { opts, config } = this;
return new SinglePropertyValueResolver(opts, config);
}
resolve() {

@@ -28,3 +42,5 @@ return this.toMultiType() || this.toSingleType() || this.toDefaultEntry();

toMultiType() {
const resolve = this.config.toMultiType || this.singleTypeResolver.resolve;
const resolve =
this.config.toMultiType ||
this.singleTypeResolver.resolve.bind(this.singleTypeResolver);
return resolve(this);

@@ -34,3 +50,5 @@ }

toSingleType() {
const resolve = this.config.toSingleType || this.singleTypeResolver.resolve;
const resolve =
this.config.toSingleType ||
this.singleTypeResolver.resolve.bind(this.singleTypeResolver);
return resolve(this);

@@ -37,0 +55,0 @@ }

@@ -29,4 +29,2 @@ class Loggable {

export {
Loggable
};
export { Loggable };

@@ -8,6 +8,2 @@ import defaults from "./defaults";

super(config);
// config = {
// createYupSchemaEntry,
// ...config
// };
const schemaType = config.schemaType || "json-schema";

@@ -14,0 +10,0 @@ const $defaults = defaults[schemaType];

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