easen-models
Version:
ES6 models & validation
3 lines (2 loc) • 4.36 kB
JavaScript
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.EasenModels=n.EasenModels||{})}(this,function(n){"use strict";function t(n){return"Model thrown validation error: "+r(n)}function r(n){return""+n.map(function(n){return n.key}).join(", ")}function e(n,t){var r=t.map(function(t){return function(r,e){Object.defineProperty(r,t,{enumerable:!0,configurable:!0,get:function(){return e[t]},set:function(r){return e[t]=n[t](r),e[t]}})}});return function(n,t){for(var e=0;e<r.length;e++)r[e](n,t)}}var o=function(n){function ModelValidationError(t,r,e){void 0===r&&(r=t),void 0===e&&(e=[]),n.call(this,t),this.name=this.constructor.name,this.list=e&&e.length?e:null,this.details=r||null,n.captureStackTrace(this,this.constructor)}return n&&(ModelValidationError.__proto__=n),ModelValidationError.prototype=Object.create(n&&n.prototype),ModelValidationError.prototype.constructor=ModelValidationError,ModelValidationError.prototype.toJSON=function(){return{message:this.message,details:this.details,list:this.list||void 0}},ModelValidationError}(Error),u={Raw:"undefined"==typeof Symbol?"__RawSymbol__":Symbol("raw")},i=function(n,t){return t={exports:{}},n(t,t.exports),t.exports}(function(n,t){function r(n){var t=function(t,r){return n(t,r)};return t.assert=function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];return t.pass(e.apply(void 0,n))},t.pass=function(t){return r(function(r){var e=!1,o=n(r,function(n){return e=!0,n});return e?o:t(o)})},t}function e(n,t,e){return void 0===e&&(e=o),r(function(r){if(!n(r))throw new e(t,t);return r})}var u=function(n){return function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!n.apply(void 0,t)}},i=function(n){return function(t){return n.includes(t)}};t.combine=function(){for(var n=[],t=arguments.length;t--;)n[t]=arguments[t];return function(t){return n.reduce(function(n,t){return t(n)},t)}},t.not=u,t.pass=r,t.assert=e;var a=r(function(n,t){return void 0===n?t(void 0):n}),c=e(function(n){return null==n},"Value should be empty").pass(function(n){return null}),f=e(function(n){return null!=n},"Value should not be empty");t.optional=a,t.empty=c,t.required=f,t.oneOf=function(n){return e(i,"Should be one of values from list")},t.notOneOf=function(n){return e(u(i),"Shouldn't be one of values from list")};var l=u(isNaN),s=r(function(n){return n}),p=r(Number).pass(e(l,"Incorrect number")),d=p.assert(function(n){return parseInt(n,10)===n},"Incorrect integer"),v=r(function(n){return new Date(n)}).assert(function(n){return"Invalid Date"!==new Date(n).toString()}),y=r(String),h=r(Boolean),b=e(function(n){return n&&"object"==typeof n},"Incorrect object");t.any=s,t.number=t.decimal=p,t.integer=t.int=d,t.date=v,t.string=y,t.boolean=t.bool=h,t.object=b;var m=function(n,t){return function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return null==r[0]?t:n.apply(void 0,r)}};t.default=m,t.nullable=function(n){return m(n,null)},t.arrayOf=function(n){return function(t){if(!Array.isArray(t))throw new o("It should be an array");return t.map(function(t){return n(t)})}},t.instanceOf=function(n){return function(t){return new n(t)}}}),a=function(n){function a(n){var e=this;i.object(n);var a={};f(this,a);var l=function(n,t){try{e[n]=t}catch(t){return{key:n,error:t}}};Object.defineProperty(this,u.Raw,{enumerable:!1,get:function(){return Object.assign({},a)}});var s=c.map(function(t){return l(t,n[t])}).filter(Boolean);if(s.length)throw new o(t(s),r(s),s)}n=Object.assign({},n);var c=Object.keys(n),f=e(n,c);return a.create=function(n){return new a(n)},a.Definition=n,a},c=i.optional,f=function(n){for(var t=n.Definition,r={},e=Object.keys(t),o=0;o<e.length;o++){var i=e[o];r[i]=c.pass(t[i])}var f=a(r);return f.prototype.toJSON=function(){for(var n=this[u.Raw],t=Object.keys(n),r=0;r<t.length;r++){var e=t[r];void 0===n[e]&&delete n[e]}return n},f},l=o,s=u.Raw,p=f,d=i,v=function(n){return n[u.Raw]},y=function(){for(var n=[],t=arguments.length;t--;)n[t]=arguments[t];var r=a.apply(void 0,n);return r.Partial=f(r),r},h={ModelValidationError:l,RawSymbol:s,partial:p,types:d,raw:v,createModel:y};n.default=h,n.ModelValidationError=l,n.RawSymbol=s,n.partial=p,n.types=d,n.raw=v,n.createModel=y,Object.defineProperty(n,"__esModule",{value:!0})});
//# sourceMappingURL=index.js.map