-
-
Notifications
You must be signed in to change notification settings - Fork 85
/
vest.js
29 lines (29 loc) · 14.3 KB
/
vest.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'use strict';(function(v,r){"object"===typeof exports&&"undefined"!==typeof module?module.exports=r():"function"===typeof define&&define.amd?define(r):(v=v||self,v.vest=r())})(this,function(){function v(d,a){return a={exports:{}},d(a,a.exports),a.exports}function r(d){"@babel/helpers - typeof";r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};
return r(d)}function t(d,a,b){a in d?Object.defineProperty(d,a,{value:b,enumerable:!0,configurable:!0,writable:!0}):d[a]=b;return d}function p(){p=Object.assign||function(d){for(var a=1;a<arguments.length;a++){var b=arguments[a],c;for(c in b)Object.prototype.hasOwnProperty.call(b,c)&&(d[c]=b[c])}return d};return p.apply(this,arguments)}function L(d,a){var b=Object.keys(d);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(d);a&&(c=c.filter(function(a){return Object.getOwnPropertyDescriptor(d,
a).enumerable}));b.push.apply(b,c)}return b}function k(d){for(var a=1;a<arguments.length;a++){var b=null!=arguments[a]?arguments[a]:{};a%2?L(Object(b),!0).forEach(function(a){t(d,a,b[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(b)):L(Object(b)).forEach(function(a){Object.defineProperty(d,a,Object.getOwnPropertyDescriptor(b,a))})}return d}function H(d,a){var b=Array.isArray(d)?d:void 0;if(!b)if("undefined"!==typeof Symbol&&Symbol.iterator in Object(d)){b=
[];var c=!0,e=!1,f=void 0;try{for(var g=d[Symbol.iterator](),m;!(c=(m=g.next()).done)&&(b.push(m.value),!a||b.length!==a);c=!0);}catch(Z){e=!0,f=Z}finally{try{if(!c&&null!=g["return"])g["return"]()}finally{if(e)throw f;}}}else b=void 0;if(!(d=b||M(d,a)))throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");return d}function w(d){var a=Array.isArray(d)?I(d):void 0;a||(a="undefined"!==typeof Symbol&&
Symbol.iterator in Object(d)?Array.from(d):void 0);if(!(d=a||M(d)))throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");return d}function M(d,a){if(d){if("string"===typeof d)return I(d,a);var b=Object.prototype.toString.call(d).slice(8,-1);"Object"===b&&d.constructor&&(b=d.constructor.name);if("Map"===b||"Set"===b)return Array.from(d);if("Arguments"===b||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b))return I(d,
a)}}function I(d,a){if(null==a||a>d.length)a=d.length;for(var b=0,c=Array(a);b<a;b++)c[b]=d[b];return c}function z(d){if(h.use().ctx)return p(h.use().ctx,d);h.use().ctx=this;p(this,d);return this}function E(d,a,b,c){p(this,{suiteId:d,testFn:c,fieldName:a,statement:b,isWarning:!1,failed:!1,id:N()})}var O="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:{},aa=v(function(d,a){!function(a,c){d.exports=c()}(O,
function(){var a=function(a){if("function"==typeof a)try{return c(a())}catch(f){return!1}return c(a)},c=function(a){return!!Array.isArray(a)||0!=a&&!!a};return function(){for(var b=arguments.length,c=Array(b),d=0;d<b;d++)c[d]=arguments[d];return c.some(a)}})}),P=v(function(d,a){!function(a,c){d.exports=c()}(O,function(){function a(){return(a=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c,d=arguments[b];for(c in d)Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}return a}).apply(this,
arguments)}function c(a){return!!Array.isArray(a)}function d(a){return"number"==typeof a}function f(a){return"string"==typeof a}function g(a,b){return b instanceof RegExp?b.test(a):"string"==typeof b&&(new RegExp(b)).test(a)}function m(a,b){return!!(Array.isArray(b)&&["string","number","boolean"].includes(r(a))||"string"==typeof b&&"string"==typeof a)&&b.includes(a)}function h(a,b){return a===b}function l(a){return!(isNaN(parseFloat(a))||isNaN(Number(a))||!isFinite(a))}function k(a,b){return l(a)&&
l(b)&&Number(a)===Number(b)}function n(a){return!a||(l(a)?0===a:Object.prototype.hasOwnProperty.call(a,"length")?0===a.length:"object"!=r(a)||0===Object.keys(a).length)}function p(a,b){return l(a)&&l(b)&&Number(a)>Number(b)}function q(a,b){return l(a)&&l(b)&&Number(a)>=Number(b)}function t(a,b){return l(a)&&l(b)&&Number(a)<Number(b)}function u(a,b){return l(a)&&l(b)&&Number(a)<=Number(b)}function v(a,b){return a.length===b}function w(a){return!!a}function x(a,b){if("function"==typeof a){for(var c=
arguments.length,d=Array(2<c?c-2:0),e=2;e<c;e++)d[e-2]=arguments[e];if(!0!==a.apply(void 0,[b].concat(d)))throw Error("[Enforce]: invalid "+r(b)+" value");}}function y(b){void 0===b&&(b={});var c=a({},C,{},b);if("function"==typeof B.Proxy)return function(a){var b=new Proxy(c,{get:function(c,d){if(z(c,d))return function(){for(var e=arguments.length,f=Array(e),g=0;g<e;g++)f[g]=arguments[g];return x.apply(void 0,[c[d],a].concat(f)),b}}});return b};var d=Object.keys(c);return function(b){return d.reduce(function(d,
e){var f;return a(d,a({},z(c,e)&&((f={})[e]=function(){for(var a=arguments.length,f=Array(a),g=0;g<a;g++)f[g]=arguments[g];return x.apply(void 0,[c[e],b].concat(f)),d},f)))},{})}}var z=function(a,b){return(a=Object.prototype.hasOwnProperty.call(a,b)&&"function"==typeof a[b])||function(a){setTimeout(function(){throw Error("[enforce]: "+a);})}('Rule "'+b+'" was not found in rules object. Make sure you typed it correctly.'),a},B=Function("return this")();c.negativeForm="isNotArray";d.negativeForm="isNotNumber";
f.negativeForm="isNotString";g.negativeForm="notMatches";m.negativeForm="notInside";h.negativeForm="notEquals";l.negativeForm="isNotNumeric";k.negativeForm="numberNotEquals";n.negativeForm="isNotEmpty";p.alias="gt";q.alias="gte";t.alias="lt";u.alias="lte";v.negativeForm="lengthNotEquals";w.negativeForm="isFalsy";var C=function(a){var b,c=function(b){var c=a[b].negativeForm,d=a[b].alias;c&&(a[c]=function(){return!a[b].apply(a,arguments)});d&&(a[d]=a[b])};for(b in a)c(b);return a}({isArray:c,isNumber:d,
isString:f,matches:g,inside:m,equals:h,numberEquals:k,isNumeric:l,isEmpty:n,greaterThan:p,greaterThanOrEquals:q,lessThan:t,lessThanOrEquals:u,longerThan:function(a,b){return a.length>b},longerThanOrEquals:function(a,b){return a.length>=b},shorterThan:function(a,b){return a.length<b},shorterThanOrEquals:function(a,b){return a.length<=b},lengthEquals:v,isOdd:function(a){return!!l(a)&&0!=a%2},isEven:function(a){return!!l(a)&&0==a%2},isTruthy:w}),A=new y;return A.Enforce=y,A})}),x=Function("return this")(),
u=function(d){throw new (1<arguments.length&&void 0!==arguments[1]?arguments[1]:Error)("[Vest]: ".concat(d));},y=Symbol["for"]("VEST#".concat("1")),ba=function(){for(var d=arguments.length,a=Array(d),b=0;b<d;b++)a[b]=arguments[b];u("Multiple versions of Vest detected: (".concat(a.join(),").\n Most features should work regularly, but for optimal feature compatibility, you should have all running instances use the same version."))},Q=function(d){return d?x[y][d]:x[y]},h={use:Q,set:function(d,a){return x[y][d]=
a},useContext:function(){return Q().ctx},register:function(d,a){var b=x[y];b?b.VERSION!==d.VERSION&&ba(d.VERSION,b.VERSION):x[y]=d;a();return x[y]}};z.prototype.setCurrentTest=function(d){this.currentTest=d};z.prototype.removeCurrentTest=function(){delete this.currentTest};z.clear=function(){h.use().ctx=null};var J=function(d,a){var b=d;h.useContext()!==d&&(b=new z(d));d=a(b);z.clear();return d},ca=function b(a){if(!a)return a;if(Array.isArray(a))return a.map(b);if("object"===r(a)){a=k({},a);for(var c in a)a[c]=
b(a[c])}return a},B=function(a,b){a=[].concat(w(a.pending),w(a.lagging));return a.length?b?a.some(function(a){return a.fieldName===b}):!!a.length:!1},C=Symbol("vestState"),A=Symbol("vestSuites"),F=Symbol("canceledTests"),D=function(a){return a?h.use(C)[a]:h.use(C)},R=function(a){h.set(C,a(D()));return D()},K=function(a){R(function(b){b[A]=a(b[A]);return b});return D(A)},n=function(a){return D(A)[a]},q=function(a,b){var c,e=null!==(c=n(a))&&void 0!==c?c:[];e=H(e,2);c=e[0];b=b(c,e[1]);return b===c?
c:n(a)[0]=b},S=function(a,b,c){var e,f;return c?!!(null===a||void 0===a?0:null===(e=a.tests)||void 0===e?0:null===(f=e[c])||void 0===f?0:f[b]):!(null===a||void 0===a||!a[b])},T=function(a,b,c){var e,f,g;if(!c){c={};for(var m in a.tests){var h,l;(null===(h=a.tests)||void 0===h?0:h[m])&&(null===(l=a.tests)||void 0===l?0:l[m][b])&&(c[m]=a.tests[m][b])}return c}return null!==(e=null===(f=a.tests)||void 0===f?void 0:null===(g=f[c])||void 0===g?void 0:g[b])&&void 0!==e?e:[]},da=function(a){for(var b=arguments.length,
c=Array(1<b?b-1:0),e=1;e<b;e++)c[e-1]=arguments[e];b=c.length;var f=c[b-1],g=c[b-2];c=G(a);b=g&&!a.tests[g];if("function"!==typeof f||b)return c;var m=function(){return f(G(a,{draft:!0}))};b=g&&!B(a,g);e=!B(a);if(b||e)return m(),c;q(a.suiteId,function(a){if(g){var b;a.fieldCallbacks[g]=(b=[]).concat.apply(b,w(a.fieldCallbacks[g]||[]).concat([m]))}else a.doneCallbacks.push(m);return a});return c},G=function(a){var b,c,e=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).draft;return b=(c=
{errorCount:a.errorCount,warnCount:a.warnCount,tests:a.tests,name:a.name},ca(c)),Object.defineProperties(b,[["hasErrors",S.bind(null,a,"errorCount")],["hasWarnings",S.bind(null,a,"warnCount")],["getErrors",T.bind(null,a,"errors")],["getWarnings",T.bind(null,a,"warnings")]].concat(e?[]:[["done",da.bind(null,a)]]).reduce(function(a,b){b=H(b,2);return p(a,t({},b[0],{value:b[1],writeable:!0,configurable:!0,enumerable:!0}))},{}))},ea=function(){var a=h.useContext(),b=a.name,c=a.suiteId,e=n(c);a=[];if(e){var f=
H(e,1)[0];a=[].concat(w(f.lagging),w(f.pending));f.pending=null;f.lagging=null}else e=K(function(a){a[c]=[];return a})[c];b=k(k({},{name:b,suiteId:c,pending:[],lagging:[],skipped:{},doneCallbacks:[],fieldCallbacks:{},tests:{},exclusive:{},errorCount:0,warnCount:0}),{},{lagging:a});e.unshift(b);e.length=2;K(function(a){return p(a,t({},c,e))})},fa=function(a,b){q(a,function(a){if(a.skipped[b])return a;a=k({},a);a.skipped[b]=!0;return a})},ha=function(a){q(a,function(a,c){if(!c)return a;var b=k({},a),
f;for(f in a.skipped)c.tests[f]&&!a.tests[f]&&(b.tests[f]=k({},c.tests[f]),b.errorCount+=c.tests[f].errorCount,b.warnCount+=c.tests[f].warnCount);return b})},U=function(a){var b=n(a)[0];B(b)||K(function(b){delete b[a];return b})},ia=function(a,b){var c=b.fieldName,e=n(a)[0].lagging.reduce(function(a,b){var e=a.lagging;a=a.canceled;b.fieldName!==c?e.push(b):a[b.id]=!0;return{lagging:e,canceled:a}},{lagging:[],canceled:{}}),f=e.lagging,g=e.canceled;q(a,function(a){return k(k({},a),{},{lagging:f,pending:a.pending.concat(b)})});
R(function(a){return k(k({},a),{},t({},F,p(a[F],g)))})},ja=function(a){q(a.suiteId,function(b){return k(k({},b),{},{pending:b.pending.filter(function(b){return b!==a}),lagging:b.lagging.filter(function(b){return b!==a})})})},V=function(a,b){if("function"===typeof b){var c=h.useContext();c.setCurrentTest(a);a=b();c.removeCurrentTest();return a}},ka=function(a,b){a=n(a)[0];b&&!B(a,b)&&Array.isArray(a.fieldCallbacks[b])&&a.fieldCallbacks[b].forEach(function(a){return a()});B(a)||a.doneCallbacks.forEach(function(a){return a()})},
la=function(a){var b=a.testFn,c=a.statement,e=a.fieldName,f=a.id,g=a.suiteId,m=h.useContext().operationMode,k=function(b){D(F)[f]||("function"===typeof b&&b(),ja(a),ka(g,e),"STATELESS"===m&&U(g))},l=function(b){k(function(){a.statement="string"===typeof b?b:c;a.fail()})};V(a,function(){try{b.then(k,l)}catch(pa){l()}})},W=function(a,b){return"string"!==typeof a?u("Suite initialization error. Expected name to be a string.",TypeError):"function"!==typeof b?u("Suite initialization error. Expected tests to be a function.",
TypeError):function(){var c,e=null!==(c=h.useContext())&&void 0!==c?c:{name:a,tests:b,suiteId:a,operationMode:"STATEFUL"};return J(e,function(a){ea();a=a.suiteId;b();ha(a);w(n(a)[0].pending).forEach(la);return G(n(a)[0])})}},X=function(a,b){var c=h.useContext();b&&(void 0===(null===c||void 0===c?void 0:c.suiteId)?u("".concat(a," ").concat("hook called outside of a running suite.")):q(c.suiteId,function(c){var e=k({},c);[].concat(b).forEach(function(b){"string"===typeof b&&(e.exclusive[a]=e.exclusive[a]||
{},e.exclusive[a][b]=!0)});return e}))},ma=function(a){var b,c,e,f=h.useContext();if(void 0===(null===f||void 0===f?void 0:f.suiteId))return!1;f=n(f.suiteId)[0];if(null===(b=f.exclusive)||void 0===b?0:null===(c=b.skip)||void 0===c?0:c[a])return!0;if(null===(e=f.exclusive)||void 0===e?0:e.only){var g;return(null===(g=f.exclusive.only)||void 0===g?0:g[a])?!1:!0}return!1},Y=Symbol("vestId"),N=function(){var a,b=null!==(a=h.use()[Y])&&void 0!==a?a:0;h.set(Y,b+1);return b.toString()};E.prototype.valueOf=
function(){return!0!==this.failed};E.prototype.fail=function(){var a=this,b=this.fieldName,c=this.statement;if(this.isWarning){var e="warnings";var f="warnCount"}else e="errors",f="errorCount";q(this.suiteId,function(g){if(!g.tests[a.fieldName])return g;var h=k({},g);h.tests[b][e]=g.tests[b][e]||[];c&&h.tests[b][e].push(c);h[f]++;h.tests[b][f]++;return h});this.failed=!0;return this};E.prototype.warn=function(){this.isWarning=!0;return this};var na=function(a,b){q(a,function(a){return void 0!==a.tests[b]?
a:k(k({},a),{},{tests:k(k({},a.tests),{},t({},b,{errorCount:0,warnCount:0}))})})},oa=function(a){return V(a,function(){try{var b=a.testFn.apply(a)}catch(c){b=!1}!1===b&&a.fail();return b})};return h.register({Enforce:P.Enforce,create:W,VERSION:"1.0.10",any:aa,draft:function(){var a=h.useContext();if(void 0===(null===a||void 0===a?void 0:a.suiteId))u("draft hook called outside of a running suite.");else return a=n(a.suiteId)[0],G(a,{draft:!0})},enforce:P,only:function(a){return X("only",a)},runWithContext:J,
skip:function(a){return X("skip",a)},test:function(a){for(var b=arguments.length,c=Array(1<b?b-1:0),e=1;e<b;e++)c[e-1]=arguments[e];e=c.length;b=c[e-2];c=c[e-1];e=h.useContext();if(ma(a))return fa(e.suiteId,a);if("function"===typeof c)return c=new E(e.suiteId,a,b,c),na(c.suiteId,c.fieldName),b=oa(c),"function"===typeof(null===b||void 0===b?void 0:b.then)&&(c.testFn=b,ia(c.suiteId,c)),c},validate:function(a,b){var c=N(),e=J({name:a,suiteId:c,operationMode:"STATELESS"},function(){var c=W(a,b);if("function"===
typeof c)return c()});U(c);return e},warn:function(){var a=h.useContext();a?a.currentTest?a.currentTest.warn():u("warn hook called outside of a test callback. It won't have an effect."):u("warn hook called outside of a running suite.")}},function(){var a,b;h.set(C,null!==(a=h.use(C))&&void 0!==a?a:(b={},t(b,A,{}),t(b,F,{}),b))})})