vest 4.2.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/vest.development.js +306 -305
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +306 -305
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/vest.development.js +213 -212
- package/dist/umd/vest.production.js +1 -1
- package/package.json +1 -1
- package/testUtils/suiteDummy.ts +5 -5
- package/types/classnames.d.ts +7 -7
- package/types/parser.d.ts +7 -7
- package/types/promisify.d.ts +7 -7
- package/types/vest.d.ts +64 -63
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext as t}from"context";export{enforce}from"n4s";var n,e=Object.assign,r=(n=0,function(){return"".concat(n++)});function u(t){return"function"==typeof t}function i(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return u(t)?t.apply(void 0,n):t}function o(t,n){var e;return null!==(e=i(t))&&void 0!==e?e:n}function s(t,n){throw Error(o(n,t))}function a(t,n){setTimeout((function(){s(t,n)}),0)}function c(t){function n(t,n,u){return r.references.push(),e(t,i(n,u)),function(){return[r.references[t],function(n){return e(t,i(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,u(n=o[n][1])&&n(e,i),u(t)&&t()}var r={references:[]},o=[];return{registerStateKey:function(t,e){var r=o.length;return o.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],o.forEach((function(e,r){return n(r,e[0],t[r])}))}}}var f,l=f||(f={});function p(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function d(t){return(t=[].concat(t))[t.length-1]}function v(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return d(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,d(n)},removeLevel:function(){n.pop()},reset:t}}l[l.DEFAULT=0]="DEFAULT",l[l.SUITE=1]="SUITE",l[l.EACH=2]="EACH",l[l.SKIP_WHEN=3]="SKIP_WHEN",l[l.OMIT_WHEN=4]="OMIT_WHEN",l[l.GROUP=5]="GROUP";var h,g=h||(h={});g[g.ALL=0]="ALL",g[g.EAGER=1]="EAGER";var E=t((function(t,n){return n?null:e({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:f.DEFAULT,keys:{current:{},prev:{}}},mode:[h.ALL],testCursor:v()},t)}));function m(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}var y=m((function(t){return null===t}));function N(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(N(u,n)):(u=n(u),y(u)&&e.push(u))}return e}function b(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(b(n)):[].concat(t).concat(n)}),[])}function S(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=o(t[r],[]),t=t[r]}return t}function C(t){return null==t}function R(t){return String(t)===t}function T(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>Number(t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return t.length===Number(e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}function A(){return E.useX().stateRef}function I(){return A().testObjects()}function k(){(0,I()[1])((function(t){return{prev:t.prev,current:[].concat(t.current)}}))}function O(t){(0,I()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function _(){return b(N(I()[0].current,(function(t){return t.isPending()?t:null})))}var L=T();function F(){var t=I()[0].current;return L([t],(function(){return b(t)}))}var G,P=G||(G={});P.Error="error",P.Warning="warning";var W=function(){function t(t,n,e){var u=void 0===e?{}:e;e=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=r(),this.severity=G.Error,this.status=X,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),e&&(this.message=e),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&R(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==j||(this.status=t)},t.prototype.warns=function(){return this.severity===G.Warning},t.prototype.setPending=function(){this.setStatus(H)},t.prototype.fail=function(){this.setStatus(this.warns()?U:D)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(x)},t.prototype.warn=function(){this.severity=G.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(w)},t.prototype.cancel=function(){this.setStatus(K),k()},t.prototype.reset=function(){this.status=X,k()},t.prototype.omit=function(){this.setStatus(j)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(H)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(j)},t.prototype.isUntested=function(){return this.statusEquals(X)},t.prototype.isFailing=function(){return this.statusEquals(D)},t.prototype.isCanceled=function(){return this.statusEquals(K)},t.prototype.isSkipped=function(){return this.statusEquals(w)},t.prototype.isPassing=function(){return this.statusEquals(x)},t.prototype.isWarning=function(){return this.statusEquals(U)},t.prototype.statusEquals=function(t){return this.status===t},t}(),X="UNTESTED",w="SKIPPED",D="FAILED",U="WARNING",x="PASSING",H="PENDING",K="CANCELED",j="OMITTED";function M(){return E.useX().testCursor.getCursor()}function q(){return E.useX().testCursor.next()}function B(t,n){if(t=void 0===(t=t.type)?f.DEFAULT:t,u(n)){var e={current:{},prev:{}},r=M();return E.run({isolate:{type:t,keys:e}},(function(){E.useX().testCursor.addLevel(),e.prev=function(){var t=I()[0].prev;return[].concat(S(t,M())).reduce((function(t,n){return n instanceof W&&!C(n.key)?(t[n.key]=n,t):t}),{})}(),O((function(t){return S(t,r)[d(r)]=[],t}));var t=n();return E.useX().testCursor.removeLevel(),q(),t}))}}function V(t){if(t){if("number"==typeof t)return 0===t;if(Object.prototype.hasOwnProperty.call(t,"length"))return t.length===Number(0);if("object"==typeof t)return Object.keys(t).length===Number(0)}return!0}var Y=m(V);function z(t,n){return!(!n||t.fieldName!==n)}function J(t){var n=_();return!V(n)&&(t?n.some((function(n){return z(n,t)})):Y(n))}var Q,Z=Q||(Q={});function $(t,n){function e(t){i[t===Q.ERRORS?"errorCount":"warnCount"]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||{errorCount:0,warnCount:0,testCount:0};var i=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(Q.ERRORS):n.isWarning()&&e(Q.WARNINGS)),i}function tt(){return(tt=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var u in n=arguments[e])Object.prototype.hasOwnProperty.call(n,u)&&(t[u]=n[u]);return t}).apply(this,arguments)}function nt(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function et(t,n,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return n.reduce((function(n,e){if(u&&e.groupName!==u)var r=!0;else i&&!z(e,i)?r=!0:(r=e.warns(),r=t===Q.WARNINGS!=!!r);return r||!e.hasFailures()||(n[e.fieldName]=(n[e.fieldName]||[]).concat(e.message||[])),n}),tt({},i&&((r={})[i]=[],r)))}function rt(t){return it(Q.ERRORS,t)}function ut(t){return it(Q.WARNINGS,t)}function it(t,n){return t=et(t,F(),{fieldName:n}),n?t[n]:t}function ot(t,n){return t=at(Q.ERRORS,t,n),n?t[n]:t}function st(t,n){return t=at(Q.WARNINGS,t,n),n?t[n]:t}function at(t,n,e){return n||s("get".concat(t[0].toUpperCase()).concat(t.slice(1),"ByGroup requires a group name. Received `").concat(n,"` instead.")),et(t,F(),{group:n,fieldName:e})}function ct(t,n,e){return(e=!t.hasFailures()||e&&!z(t,e))||(t=t.warns(),e=n===Q.WARNINGS!=!!t),!e}function ft(t){return pt(Q.ERRORS,t)}function lt(t){return pt(Q.WARNINGS,t)}function pt(t,n){return F().some((function(e){return ct(e,t,n)}))}function dt(t,n){return ht(Q.ERRORS,t,n)}function vt(t,n){return ht(Q.WARNINGS,t,n)}function ht(t,n,e){return F().some((function(r){return n===r.groupName&&ct(r,t,e)}))}Z.WARNINGS="warnings",Z.ERRORS="errors";var gt=T(20);function Et(){var t=F(),n={stateRef:A()};return gt([t],E.bind(n,(function(){var t=A().suiteName()[0];return e(function(){var t=F(),n=e({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return t.forEach((function(t){var e=t.fieldName,r=t.groupName;n.tests[e]=$(n.tests,t),r&&(n.groups[r]=n.groups[r]||{},n.groups[r][e]=$(n.groups[r],t))})),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),{getErrors:E.bind(n,rt),getErrorsByGroup:E.bind(n,ot),getWarnings:E.bind(n,ut),getWarningsByGroup:E.bind(n,st),hasErrors:E.bind(n,ft),hasErrorsByGroup:E.bind(n,dt),hasWarnings:E.bind(n,lt),hasWarningsByGroup:E.bind(n,vt),isValid:E.bind(n,(function(t){var n=Et(),e=F().reduce((function(t,n){return t[n.fieldName]||n.isOmitted()&&(t[n.fieldName]=!0),t}),{});return(e=!!t&&!!e[t])?t=!0:n.hasErrors(t)?t=!1:t=!(V(e=F())||t&&V(n.tests[t])||function(t){var n=A().optionalFields()[0];return Y(_().filter((function(e){return!(t&&!z(e,t))&&!0!==n[e.fieldName]})))}(t))&&function(t){var n=F(),e=A().optionalFields()[0];return n.every((function(n){return!(!t||z(n,t))||!0===e[n.fieldName]||n.isTested()||n.isOmitted()}))}(t),t})),suiteName:t})})))}var mt=T(20);function yt(){var t=F(),n={stateRef:A()};return mt([t],E.bind(n,(function(){return e({},Et(),{done:E.bind(n,St)})})))}function Nt(t,n,e){return!(u(t)&&(!n||e.tests[n]&&!V(e.tests[n].testCount)))}function bt(t){return!(J()&&(!t||J(t)))}function St(){function t(){return r(Et())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=yt(),Nt(r,n,e)?e:bt(n)?(t(),e):(Ct(t,n),e)}function Ct(t,n){var e=E.bind({},t);(0,A().testCallbacks()[1])((function(t){return n?t.fieldCallbacks[n]=(t.fieldCallbacks[n]||[]).concat(e):t.doneCallbacks.push(e),t}))}function Rt(t){return t.forEach((function(t){return t()}))}function Tt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=t[n].filter((function(t){return t!==e}))}}}}}();return t.on(It.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=A().testCallbacks()[0].fieldCallbacks;n&&!J(n)&&Array.isArray(e[n])&&Rt(e[n]),J()||t.emit(It.ALL_RUNNING_TESTS_FINISHED)}})),t.on(It.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var t=A().optionalFields()[0];if(!V(t)){var n={};O((function(e){return N(e,(function(e){var r=e.fieldName;if(n.hasOwnProperty(r))n[e.fieldName]&&e.omit();else{var i=t[r];u(i)&&(n[r]=i(),n[e.fieldName]&&e.omit())}return e}))}))}}()})),t.on(It.ALL_RUNNING_TESTS_FINISHED,(function(){Rt(A().testCallbacks()[0].doneCallbacks)})),t.on(It.REMOVE_FIELD,(function(t){F().forEach((function(n){z(n,t)&&(n.cancel(),function(t){O((function(n){return N(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(It.RESET_FIELD,(function(t){F().forEach((function(n){z(n,t)&&n.reset()}))})),t}function At(){var t=E.useX();return t.bus||s(),t.bus}var It,kt=It||(It={});function Ot(t){return Lt(0,"tests",t)}function _t(t){return Lt(1,"tests",t)}function Lt(t,n,e){var r=E.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){R(e)&&(r.exclusion[n][e]=0===t)}))}function Ft(t){for(var n in t)if(!0===t[n])return!0;return!1}function Gt(t){s("Wrong arguments passed to group. Group ".concat(t,"."))}kt.TEST_COMPLETED="test_completed",kt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",kt.REMOVE_FIELD="remove_field",kt.RESET_FIELD="reset_field",kt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Ot.group=function(t){return Lt(0,"groups",t)},_t.group=function(t){return Lt(1,"groups",t)};var Pt=m(R);function Wt(t){var n=t.asyncTest,e=t.message;if(n&&u(n.then)){var r=At().emit,i=A(),o=E.bind({stateRef:i},(function(){k(),r(It.TEST_COMPLETED,t)}));i=E.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=R(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function Xt(t){var n=M();O((function(e){return S(e,n)[d(n)]=t,e}))}function wt(t){var n=I()[0].prev;if(V(n))Xt(t),n=t;else{var e=M();if(n=S(n,e)[d(e)],C(t.key))!Y(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(E.useX().isolate.type!==f.EACH&&a("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=I(),n=t[1],e=t[0].prev;t=S(e,M());var r=E.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),Xt(n=o(n,t));else{n=t.key;var r=E.useX().isolate.keys.prev[n];e=t,r&&(e=r),r=e;var c=E.useX().isolate.keys.current;C(c[n])?c[n]=r:a('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Xt(n=e)}}if(e=h.EAGER,e=!(E.useX().mode[0]!==e||!ft(t.fieldName)))return q(),t.skip(),t;if(E.useX().omitted)return n.omit(),q(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,E.useX().skipped)return!0;var e=E.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,o=u[n];if(!1===o)return!0;if(o=!0===o,t){t:{var s=E.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(s,t))var a=!1===s[t];else{for(a in s)if(!0===s[a]){a=!0;break t}a=!1}}if(a)return!0;if(!0===r.groups[t])return!(o||!Ft(u)&&!1!==u[n])}r=E.useX().exclusion;t:{for(c in(a=E.useX().exclusion).groups)if(a.groups[c]){var c=!0;break t}c=!1}return!(!c||t&&t in r.groups&&r.groups[t])||!o&&!!Ft(u)&&!i(e[n])}(t))return n.skip(!!E.useX().skipped),q(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),Xt(t),q(),t.isUntested()){n=At(),e=function(t){return E.run({currentTest:t},(function(){try{var n=t.testFn()}catch(e){n=e,void 0===t.message&&R(n)&&(t.message=e),n=!1}return!1===n&&t.fail(),n}))}(t);try{e&&u(e.then)?(t.asyncTest=e,t.setPending(),Wt(t)):n.emit(It.TEST_COMPLETED,t)}catch(n){s("Unexpected error encountered during test registration.\n Test Object: ".concat(t,".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&u(n.then)&&(t.setPending(),Wt(t));return t}function Dt(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var r=u(n[1])?n:nt([void 0],n,!0);n=r[0],e=r[1],r=r[2],Pt(t)&&xt("fieldName","string"),u(e)||xt("Test callback","function");var i=E.useX();return wt(n=new W(t,e,{message:n,groupName:i.groupName,key:r}))}var Ut=e(Dt,{memo:function(t){var n=T(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=E.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[A().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):wt(r[1])}}(Dt)});function xt(t,n){s("Incompatible params passed to test function. ".concat(t," must be a ").concat(n))}var Ht="4.2.0";function Kt(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var i=(t=t.reverse())[0];t=t[1],u(i)||s("vest.create: Expected callback to be a function.");var o=Tt(),a=c();return t={stateRef:p(a,{suiteId:r(),suiteName:t}),bus:o},e(E.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return a.reset(),B({type:f.SUITE},(function(){i.apply(void 0,t)})),o.emit(It.SUITE_CALLBACK_DONE_RUNNING),yt()})),{get:E.bind(t,Et),remove:E.bind(t,(function(t){o.emit(It.REMOVE_FIELD,t)})),reset:a.reset,resetField:E.bind(t,(function(t){o.emit(It.RESET_FIELD,t)}))})}function jt(t,n){u(n)||s("each callback must be a function"),B({type:f.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function Mt(){var t=h.EAGER;E.useX().mode[0]=t}function qt(t,n){R(t)||Gt("name must be a string"),u(n)||Gt("callback must be a function"),B({type:f.GROUP},(function(){E.run({groupName:t},n)}))}function Bt(t){function n(n){var e=E.useX(),r=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(r.tests,t)?o(r.tests[t],!0):R(n)?!!r.tests[n]:i(n,i(Et))}}var e=E.useX();return t?(e.inclusion[t]=o(e.exclusion.tests[t],!0),{when:n}):{when:n}}function Vt(t,n){B({type:f.OMIT_WHEN},(function(){E.run({omitted:!!E.useX().omitted||i(t,i(Et))},(function(){return n()}))}))}function Yt(t){(0,A().optionalFields()[1])((function(n){if(Array.isArray(t)||R(t))[].concat(t).forEach((function(t){n[t]=!0}));else for(var e in t)n[e]=t[e];return n}))}function zt(t,n){B({type:f.SKIP_WHEN},(function(){E.run({skipped:!!E.useX().skipped||i(t,i(Et))},(function(){return n()}))}))}function Jt(){var t=E.useX("warn hook called outside of a running suite.");t.currentTest||s("warn called outside of a test."),t.currentTest.warn()}export{Ht as VERSION,E as context,Kt as create,jt as each,Mt as eager,qt as group,Bt as include,Vt as omitWhen,Ot as only,Yt as optional,_t as skip,zt as skipWhen,Ut as test,Jt as warn};
|
|
1
|
+
import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}function i(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>Number(t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return t.length===Number(e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var o=u((function(t){return null===t}));function s(t){return"function"==typeof t}function a(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return s(t)?t.apply(void 0,n):t}function c(t,n){var e;return null!==(e=a(t))&&void 0!==e?e:n}function f(t){return(t=[].concat(t))[t.length-1]}function l(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(l(u,n)):(u=n(u),o(u)&&e.push(u))}return e}function p(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(p(n)):[].concat(t).concat(n)}),[])}function d(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=c(t[r],[]),t=t[r]}return t}var v=Object.assign;function h(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return f(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,f(n)},removeLevel:function(){n.pop()},reset:t}}var g,E=g||(g={});E[E.DEFAULT=0]="DEFAULT",E[E.SUITE=1]="SUITE",E[E.EACH=2]="EACH",E[E.SKIP_WHEN=3]="SKIP_WHEN",E[E.OMIT_WHEN=4]="OMIT_WHEN",E[E.GROUP=5]="GROUP";var m,y=m||(m={});y[y.ALL=0]="ALL",y[y.EAGER=1]="EAGER";var N=t((function(t,n){return n?null:v({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:g.DEFAULT,keys:{current:{},prev:{}}},mode:[m.ALL],testCursor:h()},t)}));function b(){return N.useX().stateRef}function S(){return b().testObjects()}function C(){(0,S()[1])((function(t){return{prev:t.prev,current:[].concat(t.current)}}))}function R(t){(0,S()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function T(){return p(l(S()[0].current,(function(t){return t.isPending()?t:null})))}var A=i();function I(){var t=S()[0].current;return A([t],(function(){return p(t)}))}var k,O=k||(k={});O.Error="error",O.Warning="warning";var _=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=k.Error,this.status=L,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==D||(this.status=t)},t.prototype.warns=function(){return this.severity===k.Warning},t.prototype.setPending=function(){this.setStatus(X)},t.prototype.fail=function(){this.setStatus(this.warns()?P:G)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(W)},t.prototype.warn=function(){this.severity=k.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(F)},t.prototype.cancel=function(){this.setStatus(w),C()},t.prototype.reset=function(){this.status=L,C()},t.prototype.omit=function(){this.setStatus(D)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(X)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(D)},t.prototype.isUntested=function(){return this.statusEquals(L)},t.prototype.isFailing=function(){return this.statusEquals(G)},t.prototype.isCanceled=function(){return this.statusEquals(w)},t.prototype.isSkipped=function(){return this.statusEquals(F)},t.prototype.isPassing=function(){return this.statusEquals(W)},t.prototype.isWarning=function(){return this.statusEquals(P)},t.prototype.statusEquals=function(t){return this.status===t},t}(),L="UNTESTED",F="SKIPPED",G="FAILED",P="WARNING",W="PASSING",X="PENDING",w="CANCELED",D="OMITTED";function U(t,n){throw Error(c(n,t))}function x(t,n){setTimeout((function(){U(t,n)}),0)}function H(t){function n(t,n,u){return r.references.push(),e(t,a(n,u)),function(){return[r.references[t],function(n){return e(t,a(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,s(n=u[n][1])&&n(e,i),s(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function K(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function j(t){return null==t}function M(){return N.useX().testCursor.getCursor()}function q(){return N.useX().testCursor.next()}function B(t,n){if(t=void 0===(t=t.type)?g.DEFAULT:t,s(n)){var e={current:{},prev:{}},r=M();return N.run({isolate:{type:t,keys:e}},(function(){N.useX().testCursor.addLevel(),e.prev=function(){var t=S()[0].prev;return[].concat(d(t,M())).reduce((function(t,n){return n instanceof _&&!j(n.key)?(t[n.key]=n,t):t}),{})}(),R((function(t){return d(t,r)[f(r)]=[],t}));var t=n();return N.useX().testCursor.removeLevel(),q(),t}))}}var V,Y=V||(V={});function J(t,n){function e(t){i[t===V.ERRORS?"errorCount":"warnCount"]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||{errorCount:0,warnCount:0,testCount:0};var i=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(V.ERRORS):n.isWarning()&&e(V.WARNINGS)),i}function z(){return(z=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var u in n=arguments[e])Object.prototype.hasOwnProperty.call(n,u)&&(t[u]=n[u]);return t}).apply(this,arguments)}function Q(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function Z(t,n){return!(!n||t.fieldName!==n)}function $(t,n,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return n.reduce((function(n,e){if(u&&e.groupName!==u)var r=!0;else i&&!Z(e,i)?r=!0:(r=e.warns(),r=t===V.WARNINGS!=!!r);return r||!e.hasFailures()||(n[e.fieldName]=(n[e.fieldName]||[]).concat(e.message||[])),n}),z({},i&&((r={})[i]=[],r)))}function tt(t){return et(V.ERRORS,t)}function nt(t){return et(V.WARNINGS,t)}function et(t,n){return t=$(t,I(),{fieldName:n}),n?t[n]:t}function rt(t,n){return t=it(V.ERRORS,t,n),n?t[n]:t}function ut(t,n){return t=it(V.WARNINGS,t,n),n?t[n]:t}function it(t,n,e){return n||U("get".concat(t[0].toUpperCase()).concat(t.slice(1),"ByGroup requires a group name. Received `").concat(n,"` instead.")),$(t,I(),{group:n,fieldName:e})}function ot(t,n,e){return(e=!t.hasFailures()||e&&!Z(t,e))||(t=t.warns(),e=n===V.WARNINGS!=!!t),!e}function st(t){return ct(V.ERRORS,t)}function at(t){return ct(V.WARNINGS,t)}function ct(t,n){return I().some((function(e){return ot(e,t,n)}))}function ft(t,n){return pt(V.ERRORS,t,n)}function lt(t,n){return pt(V.WARNINGS,t,n)}function pt(t,n,e){return I().some((function(r){return n===r.groupName&&ot(r,t,e)}))}function dt(t){if(t){if("number"==typeof t)return 0===t;if(Object.prototype.hasOwnProperty.call(t,"length"))return t.length===Number(0);if("object"==typeof t)return Object.keys(t).length===Number(0)}return!0}Y.WARNINGS="warnings",Y.ERRORS="errors";var vt=u(dt);var ht=i(20);function gt(){var t=I(),n={stateRef:b()};return ht([t],N.bind(n,(function(){var t=b().suiteName()[0];return v(function(){var t=I(),n=v({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return t.forEach((function(t){var e=t.fieldName,r=t.groupName;n.tests[e]=J(n.tests,t),r&&(n.groups[r]=n.groups[r]||{},n.groups[r][e]=J(n.groups[r],t))})),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),{getErrors:N.bind(n,tt),getErrorsByGroup:N.bind(n,rt),getWarnings:N.bind(n,nt),getWarningsByGroup:N.bind(n,ut),hasErrors:N.bind(n,st),hasErrorsByGroup:N.bind(n,ft),hasWarnings:N.bind(n,at),hasWarningsByGroup:N.bind(n,lt),isValid:N.bind(n,(function(t){var n=gt(),e=I().reduce((function(t,n){return t[n.fieldName]||n.isOmitted()&&(t[n.fieldName]=!0),t}),{});return(e=!!t&&!!e[t])?t=!0:n.hasErrors(t)?t=!1:t=!(dt(e=I())||t&&dt(n.tests[t])||function(t){var n=b().optionalFields()[0];return vt(T().filter((function(e){return!(t&&!Z(e,t))&&!0!==n[e.fieldName]})))}(t))&&function(t){var n=I(),e=b().optionalFields()[0];return n.every((function(n){return!(!t||Z(n,t))||!0===e[n.fieldName]||n.isTested()||n.isOmitted()}))}(t),t})),suiteName:t})})))}function Et(t){var n=T();return!dt(n)&&(t?n.some((function(n){return Z(n,t)})):vt(n))}var mt=i(20);function yt(){var t=I(),n={stateRef:b()};return mt([t],N.bind(n,(function(){return v({},gt(),{done:N.bind(n,St)})})))}function Nt(t,n,e){return!(s(t)&&(!n||e.tests[n]&&!dt(e.tests[n].testCount)))}function bt(t){return!(Et()&&(!t||Et(t)))}function St(){function t(){return r(gt())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=yt(),Nt(r,n,e)?e:bt(n)?(t(),e):(Ct(t,n),e)}function Ct(t,n){var e=N.bind({},t);(0,b().testCallbacks()[1])((function(t){return n?t.fieldCallbacks[n]=(t.fieldCallbacks[n]||[]).concat(e):t.doneCallbacks.push(e),t}))}function Rt(t){return t.forEach((function(t){return t()}))}function Tt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=t[n].filter((function(t){return t!==e}))}}}}}();return t.on(It.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=b().testCallbacks()[0].fieldCallbacks;n&&!Et(n)&&Array.isArray(e[n])&&Rt(e[n]),Et()||t.emit(It.ALL_RUNNING_TESTS_FINISHED)}})),t.on(It.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var t=b().optionalFields()[0];if(!dt(t)){var n={};R((function(e){return l(e,(function(e){var r=e.fieldName;if(n.hasOwnProperty(r))n[e.fieldName]&&e.omit();else{var u=t[r];s(u)&&(n[r]=u(),n[e.fieldName]&&e.omit())}return e}))}))}}()})),t.on(It.ALL_RUNNING_TESTS_FINISHED,(function(){Rt(b().testCallbacks()[0].doneCallbacks)})),t.on(It.REMOVE_FIELD,(function(t){I().forEach((function(n){Z(n,t)&&(n.cancel(),function(t){R((function(n){return l(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(It.RESET_FIELD,(function(t){I().forEach((function(n){Z(n,t)&&n.reset()}))})),t}function At(){var t=N.useX();return t.bus||U(),t.bus}var It,kt=It||(It={});function Ot(t){return Lt(0,"tests",t)}function _t(t){return Lt(1,"tests",t)}function Lt(t,n,e){var u=N.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function Ft(t){for(var n in t)if(!0===t[n])return!0;return!1}function Gt(t){U("Wrong arguments passed to group. Group ".concat(t,"."))}kt.TEST_COMPLETED="test_completed",kt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",kt.REMOVE_FIELD="remove_field",kt.RESET_FIELD="reset_field",kt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Ot.group=function(t){return Lt(0,"groups",t)},_t.group=function(t){return Lt(1,"groups",t)};var Pt=u(r);function Wt(t){var n=t.asyncTest,e=t.message;if(n&&s(n.then)){var u=At().emit,i=b(),o=N.bind({stateRef:i},(function(){C(),u(It.TEST_COMPLETED,t)}));i=N.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function Xt(t){var n=S()[0].prev;if(dt(n))return wt(t),t;var e=M();if(n=d(n,e)[f(e)],!j(t.key)){n=t.key,(e=N.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=N.useX().isolate.keys.current;return j(r[n])?r[n]=e:x('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),wt(t),t}return!vt(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(N.useX().isolate.type===g.EACH||x("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=S(),n=t[1],e=t[0].prev;t=d(e,M());var r=N.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),wt(t=c(n,t)),t}function wt(t){var n=M();R((function(e){return d(e,n)[f(n)]=t,e}))}function Dt(t){var n=m.EAGER;if(n=!(N.useX().mode[0]!==n||!st(t.fieldName)))return t.skip(),Xt(t),q(),t;if(n=Xt(t),N.useX().omitted)return n.omit(),q(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,N.useX().skipped)return!0;var e=N.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){t:{var o=N.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,t))var s=!1===o[t];else{for(s in o)if(!0===o[s]){s=!0;break t}s=!1}}if(s)return!0;if(!0===r.groups[t])return!(i||!Ft(u)&&!1!==u[n])}r=N.useX().exclusion;t:{for(c in(s=N.useX().exclusion).groups)if(s.groups[c]){var c=!0;break t}c=!1}return!(!c||t&&t in r.groups&&r.groups[t])||!i&&!!Ft(u)&&!a(e[n])}(t))return n.skip(!!N.useX().skipped),q(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),wt(t),q(),t.isUntested()){n=At();var e=function(t){return N.run({currentTest:t},(function(){try{var n=t.testFn()}catch(e){n=e,void 0===t.message&&r(n)&&(t.message=e),n=!1}return!1===n&&t.fail(),n}))}(t);try{e&&s(e.then)?(t.asyncTest=e,t.setPending(),Wt(t)):n.emit(It.TEST_COMPLETED,t)}catch(n){U("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&s(n.then)&&(t.setPending(),Wt(t));return t}function Ut(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var r=s(n[1])?n:Q([void 0],n,!0);n=r[0],e=r[1],r=r[2],Pt(t)&&Ht("fieldName","string"),s(e)||Ht("Test callback","function");var u=N.useX();return Dt(n=new _(t,e,{message:n,groupName:u.groupName,key:r}))}var xt=v(Ut,{memo:function(t){var n=i(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=N.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[b().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):Dt(r[1])}}(Ut)});function Ht(t,n){U("Incompatible params passed to test function. ".concat(t," must be a ").concat(n))}var Kt="4.2.2";function jt(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],s(r)||U("vest.create: Expected callback to be a function.");var u=Tt(),i=H();return t={stateRef:K(i,{suiteId:e(),suiteName:t}),bus:u},v(N.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return i.reset(),B({type:g.SUITE},(function(){r.apply(void 0,t)})),u.emit(It.SUITE_CALLBACK_DONE_RUNNING),yt()})),{get:N.bind(t,gt),remove:N.bind(t,(function(t){u.emit(It.REMOVE_FIELD,t)})),reset:i.reset,resetField:N.bind(t,(function(t){u.emit(It.RESET_FIELD,t)}))})}function Mt(t,n){s(n)||U("each callback must be a function"),B({type:g.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function qt(){var t=m.EAGER;N.useX().mode[0]=t}function Bt(t,n){r(t)||Gt("name must be a string"),s(n)||Gt("callback must be a function"),B({type:g.GROUP},(function(){N.run({groupName:t},n)}))}function Vt(t){function n(n){var e=N.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?c(u.tests[t],!0):r(n)?!!u.tests[n]:a(n,a(gt))}}var e=N.useX();return t?(e.inclusion[t]=c(e.exclusion.tests[t],!0),{when:n}):{when:n}}function Yt(t,n){B({type:g.OMIT_WHEN},(function(){N.run({omitted:!!N.useX().omitted||a(t,a(gt))},(function(){return n()}))}))}function Jt(t){(0,b().optionalFields()[1])((function(n){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){n[t]=!0}));else for(var e in t)n[e]=t[e];return n}))}function zt(t,n){B({type:g.SKIP_WHEN},(function(){N.run({skipped:!!N.useX().skipped||a(t,a(gt))},(function(){return n()}))}))}function Qt(){var t=N.useX("warn hook called outside of a running suite.");t.currentTest||U("warn called outside of a test."),t.currentTest.warn()}export{Kt as VERSION,N as context,jt as create,Mt as each,qt as eager,Bt as group,Vt as include,Yt as omitWhen,Ot as only,Jt as optional,_t as skip,zt as skipWhen,xt as test,Qt as warn};
|
|
@@ -693,106 +693,100 @@
|
|
|
693
693
|
return "".concat(n++);
|
|
694
694
|
}; })(0);
|
|
695
695
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
696
|
+
function shouldUseErrorAsMessage(message, error) {
|
|
697
|
+
// kind of cheating with this safe guard, but it does the job
|
|
698
|
+
return isUndefined(message) && isStringValue(error);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
function asArray(possibleArg) {
|
|
702
|
+
return [].concat(possibleArg);
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
/**
|
|
706
|
+
* Creates a cache function
|
|
707
|
+
*/
|
|
708
|
+
function createCache(maxSize) {
|
|
709
|
+
if (maxSize === void 0) { maxSize = 1; }
|
|
710
|
+
var cacheStorage = [];
|
|
711
|
+
var cache = function (deps, cacheAction) {
|
|
712
|
+
var cacheHit = cache.get(deps);
|
|
713
|
+
// cache hit is not null
|
|
714
|
+
if (cacheHit)
|
|
715
|
+
return cacheHit[1];
|
|
716
|
+
var result = cacheAction();
|
|
717
|
+
cacheStorage.unshift([deps.concat(), result]);
|
|
718
|
+
if (longerThan(cacheStorage, maxSize))
|
|
719
|
+
cacheStorage.length = maxSize;
|
|
720
|
+
return result;
|
|
700
721
|
};
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
722
|
+
// invalidate an item in the cache by its dependencies
|
|
723
|
+
cache.invalidate = function (deps) {
|
|
724
|
+
var index = findIndex(deps);
|
|
725
|
+
if (index > -1)
|
|
726
|
+
cacheStorage.splice(index, 1);
|
|
705
727
|
};
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
*
|
|
717
|
-
* useColor()[0]; -> "green"
|
|
718
|
-
*/
|
|
719
|
-
function registerStateKey(initialState, onUpdate) {
|
|
720
|
-
var key = registrations.length;
|
|
721
|
-
registrations.push([initialState, onUpdate]);
|
|
722
|
-
return initKey(key, initialState);
|
|
723
|
-
}
|
|
724
|
-
function reset() {
|
|
725
|
-
var prev = current();
|
|
726
|
-
state.references = [];
|
|
727
|
-
registrations.forEach(function (_a, index) {
|
|
728
|
-
var initialValue = _a[0];
|
|
729
|
-
return initKey(index, initialValue, prev[index]);
|
|
728
|
+
// Retrieves an item from the cache.
|
|
729
|
+
cache.get = function (deps) {
|
|
730
|
+
return cacheStorage[findIndex(deps)] || null;
|
|
731
|
+
};
|
|
732
|
+
return cache;
|
|
733
|
+
function findIndex(deps) {
|
|
734
|
+
return cacheStorage.findIndex(function (_a) {
|
|
735
|
+
var cachedDeps = _a[0];
|
|
736
|
+
return lengthEquals(deps, cachedDeps.length) &&
|
|
737
|
+
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
730
738
|
});
|
|
731
739
|
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
var prevValue = state.references[index];
|
|
749
|
-
state.references[index] = value;
|
|
750
|
-
var _a = registrations[index], onUpdate = _a[1];
|
|
751
|
-
if (isFunction(onUpdate)) {
|
|
752
|
-
onUpdate(value, prevValue);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
function last(values) {
|
|
743
|
+
var valuesArray = asArray(values);
|
|
744
|
+
return valuesArray[valuesArray.length - 1];
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
// This is kind of a map/filter in one function.
|
|
748
|
+
// Normally, behaves like a nested-array map,
|
|
749
|
+
// but returning `null` will drop the element from the array
|
|
750
|
+
function transform(array, cb) {
|
|
751
|
+
var res = [];
|
|
752
|
+
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
753
|
+
var v = array_1[_i];
|
|
754
|
+
if (isArray(v)) {
|
|
755
|
+
res.push(transform(v, cb));
|
|
753
756
|
}
|
|
754
|
-
|
|
755
|
-
|
|
757
|
+
else {
|
|
758
|
+
var output = cb(v);
|
|
759
|
+
if (isNotNull(output)) {
|
|
760
|
+
res.push(output);
|
|
761
|
+
}
|
|
756
762
|
}
|
|
757
763
|
}
|
|
764
|
+
return res;
|
|
758
765
|
}
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
(function (IsolateTypes) {
|
|
762
|
-
IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
|
|
763
|
-
IsolateTypes[IsolateTypes["SUITE"] = 1] = "SUITE";
|
|
764
|
-
IsolateTypes[IsolateTypes["EACH"] = 2] = "EACH";
|
|
765
|
-
IsolateTypes[IsolateTypes["SKIP_WHEN"] = 3] = "SKIP_WHEN";
|
|
766
|
-
IsolateTypes[IsolateTypes["OMIT_WHEN"] = 4] = "OMIT_WHEN";
|
|
767
|
-
IsolateTypes[IsolateTypes["GROUP"] = 5] = "GROUP";
|
|
768
|
-
})(IsolateTypes || (IsolateTypes = {}));
|
|
769
|
-
|
|
770
|
-
function createStateRef(state, _a) {
|
|
771
|
-
var suiteId = _a.suiteId, suiteName = _a.suiteName;
|
|
772
|
-
return {
|
|
773
|
-
optionalFields: state.registerStateKey(function () { return ({}); }),
|
|
774
|
-
suiteId: state.registerStateKey(suiteId),
|
|
775
|
-
suiteName: state.registerStateKey(suiteName),
|
|
776
|
-
testCallbacks: state.registerStateKey(function () { return ({
|
|
777
|
-
fieldCallbacks: {},
|
|
778
|
-
doneCallbacks: []
|
|
779
|
-
}); }),
|
|
780
|
-
testObjects: state.registerStateKey(function (prev) {
|
|
781
|
-
return {
|
|
782
|
-
prev: prev ? prev.current : [],
|
|
783
|
-
current: []
|
|
784
|
-
};
|
|
785
|
-
})
|
|
786
|
-
};
|
|
766
|
+
function valueAtPath(array, path) {
|
|
767
|
+
return getCurrent(array, path)[last(path)];
|
|
787
768
|
}
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
769
|
+
function setValueAtPath(array, path, value) {
|
|
770
|
+
var current = getCurrent(array, path);
|
|
771
|
+
current[last(path)] = value;
|
|
772
|
+
return array;
|
|
791
773
|
}
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
774
|
+
function flatten(values) {
|
|
775
|
+
return asArray(values).reduce(function (acc, value) {
|
|
776
|
+
if (isArray(value)) {
|
|
777
|
+
return acc.concat(flatten(value));
|
|
778
|
+
}
|
|
779
|
+
return asArray(acc).concat(value);
|
|
780
|
+
}, []);
|
|
781
|
+
}
|
|
782
|
+
function getCurrent(array, path) {
|
|
783
|
+
var current = array;
|
|
784
|
+
for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
|
|
785
|
+
var p = _a[_i];
|
|
786
|
+
current[p] = defaultTo(current[p], []);
|
|
787
|
+
current = current[p];
|
|
788
|
+
}
|
|
789
|
+
return current;
|
|
796
790
|
}
|
|
797
791
|
|
|
798
792
|
function createCursor() {
|
|
@@ -829,6 +823,16 @@
|
|
|
829
823
|
};
|
|
830
824
|
}
|
|
831
825
|
|
|
826
|
+
var IsolateTypes;
|
|
827
|
+
(function (IsolateTypes) {
|
|
828
|
+
IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
|
|
829
|
+
IsolateTypes[IsolateTypes["SUITE"] = 1] = "SUITE";
|
|
830
|
+
IsolateTypes[IsolateTypes["EACH"] = 2] = "EACH";
|
|
831
|
+
IsolateTypes[IsolateTypes["SKIP_WHEN"] = 3] = "SKIP_WHEN";
|
|
832
|
+
IsolateTypes[IsolateTypes["OMIT_WHEN"] = 4] = "OMIT_WHEN";
|
|
833
|
+
IsolateTypes[IsolateTypes["GROUP"] = 5] = "GROUP";
|
|
834
|
+
})(IsolateTypes || (IsolateTypes = {}));
|
|
835
|
+
|
|
832
836
|
var Modes;
|
|
833
837
|
(function (Modes) {
|
|
834
838
|
Modes[Modes["ALL"] = 0] = "ALL";
|
|
@@ -856,93 +860,6 @@
|
|
|
856
860
|
}, ctxRef);
|
|
857
861
|
});
|
|
858
862
|
|
|
859
|
-
// This is kind of a map/filter in one function.
|
|
860
|
-
// Normally, behaves like a nested-array map,
|
|
861
|
-
// but returning `null` will drop the element from the array
|
|
862
|
-
function transform(array, cb) {
|
|
863
|
-
var res = [];
|
|
864
|
-
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
|
|
865
|
-
var v = array_1[_i];
|
|
866
|
-
if (isArray(v)) {
|
|
867
|
-
res.push(transform(v, cb));
|
|
868
|
-
}
|
|
869
|
-
else {
|
|
870
|
-
var output = cb(v);
|
|
871
|
-
if (isNotNull(output)) {
|
|
872
|
-
res.push(output);
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
}
|
|
876
|
-
return res;
|
|
877
|
-
}
|
|
878
|
-
function valueAtPath(array, path) {
|
|
879
|
-
return getCurrent(array, path)[last(path)];
|
|
880
|
-
}
|
|
881
|
-
function setValueAtPath(array, path, value) {
|
|
882
|
-
var current = getCurrent(array, path);
|
|
883
|
-
current[last(path)] = value;
|
|
884
|
-
return array;
|
|
885
|
-
}
|
|
886
|
-
function flatten(values) {
|
|
887
|
-
return asArray(values).reduce(function (acc, value) {
|
|
888
|
-
if (isArray(value)) {
|
|
889
|
-
return acc.concat(flatten(value));
|
|
890
|
-
}
|
|
891
|
-
return asArray(acc).concat(value);
|
|
892
|
-
}, []);
|
|
893
|
-
}
|
|
894
|
-
function getCurrent(array, path) {
|
|
895
|
-
var current = array;
|
|
896
|
-
for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
|
|
897
|
-
var p = _a[_i];
|
|
898
|
-
current[p] = defaultTo(current[p], []);
|
|
899
|
-
current = current[p];
|
|
900
|
-
}
|
|
901
|
-
return current;
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
function shouldUseErrorAsMessage(message, error) {
|
|
905
|
-
// kind of cheating with this safe guard, but it does the job
|
|
906
|
-
return isUndefined(message) && isStringValue(error);
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
/**
|
|
910
|
-
* Creates a cache function
|
|
911
|
-
*/
|
|
912
|
-
function createCache(maxSize) {
|
|
913
|
-
if (maxSize === void 0) { maxSize = 1; }
|
|
914
|
-
var cacheStorage = [];
|
|
915
|
-
var cache = function (deps, cacheAction) {
|
|
916
|
-
var cacheHit = cache.get(deps);
|
|
917
|
-
// cache hit is not null
|
|
918
|
-
if (cacheHit)
|
|
919
|
-
return cacheHit[1];
|
|
920
|
-
var result = cacheAction();
|
|
921
|
-
cacheStorage.unshift([deps.concat(), result]);
|
|
922
|
-
if (longerThan(cacheStorage, maxSize))
|
|
923
|
-
cacheStorage.length = maxSize;
|
|
924
|
-
return result;
|
|
925
|
-
};
|
|
926
|
-
// invalidate an item in the cache by its dependencies
|
|
927
|
-
cache.invalidate = function (deps) {
|
|
928
|
-
var index = findIndex(deps);
|
|
929
|
-
if (index > -1)
|
|
930
|
-
cacheStorage.splice(index, 1);
|
|
931
|
-
};
|
|
932
|
-
// Retrieves an item from the cache.
|
|
933
|
-
cache.get = function (deps) {
|
|
934
|
-
return cacheStorage[findIndex(deps)] || null;
|
|
935
|
-
};
|
|
936
|
-
return cache;
|
|
937
|
-
function findIndex(deps) {
|
|
938
|
-
return cacheStorage.findIndex(function (_a) {
|
|
939
|
-
var cachedDeps = _a[0];
|
|
940
|
-
return lengthEquals(deps, cachedDeps.length) &&
|
|
941
|
-
deps.every(function (dep, i) { return dep === cachedDeps[i]; });
|
|
942
|
-
});
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
|
|
946
863
|
// STATE REF
|
|
947
864
|
function useStateRef() {
|
|
948
865
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -1158,6 +1075,89 @@
|
|
|
1158
1075
|
var STATUS_CANCELED = 'CANCELED';
|
|
1159
1076
|
var STATUS_OMITTED = 'OMITTED';
|
|
1160
1077
|
|
|
1078
|
+
// eslint-disable-next-line max-lines-per-function
|
|
1079
|
+
function createState(onStateChange) {
|
|
1080
|
+
var state = {
|
|
1081
|
+
references: []
|
|
1082
|
+
};
|
|
1083
|
+
var registrations = [];
|
|
1084
|
+
return {
|
|
1085
|
+
registerStateKey: registerStateKey,
|
|
1086
|
+
reset: reset
|
|
1087
|
+
};
|
|
1088
|
+
/**
|
|
1089
|
+
* Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.
|
|
1090
|
+
*
|
|
1091
|
+
* @example
|
|
1092
|
+
*
|
|
1093
|
+
* const useColor = state.registerStateKey("blue");
|
|
1094
|
+
*
|
|
1095
|
+
* let [color, setColor] = useColor(); // -> ["blue", Function]
|
|
1096
|
+
*
|
|
1097
|
+
* setColor("green");
|
|
1098
|
+
*
|
|
1099
|
+
* useColor()[0]; -> "green"
|
|
1100
|
+
*/
|
|
1101
|
+
function registerStateKey(initialState, onUpdate) {
|
|
1102
|
+
var key = registrations.length;
|
|
1103
|
+
registrations.push([initialState, onUpdate]);
|
|
1104
|
+
return initKey(key, initialState);
|
|
1105
|
+
}
|
|
1106
|
+
function reset() {
|
|
1107
|
+
var prev = current();
|
|
1108
|
+
state.references = [];
|
|
1109
|
+
registrations.forEach(function (_a, index) {
|
|
1110
|
+
var initialValue = _a[0];
|
|
1111
|
+
return initKey(index, initialValue, prev[index]);
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1114
|
+
function initKey(key, initialState, prevState) {
|
|
1115
|
+
current().push();
|
|
1116
|
+
set(key, optionalFunctionValue(initialState, prevState));
|
|
1117
|
+
return function useStateKey() {
|
|
1118
|
+
return [
|
|
1119
|
+
current()[key],
|
|
1120
|
+
function (nextState) {
|
|
1121
|
+
return set(key, optionalFunctionValue(nextState, current()[key]));
|
|
1122
|
+
},
|
|
1123
|
+
];
|
|
1124
|
+
};
|
|
1125
|
+
}
|
|
1126
|
+
function current() {
|
|
1127
|
+
return state.references;
|
|
1128
|
+
}
|
|
1129
|
+
function set(index, value) {
|
|
1130
|
+
var prevValue = state.references[index];
|
|
1131
|
+
state.references[index] = value;
|
|
1132
|
+
var _a = registrations[index], onUpdate = _a[1];
|
|
1133
|
+
if (isFunction(onUpdate)) {
|
|
1134
|
+
onUpdate(value, prevValue);
|
|
1135
|
+
}
|
|
1136
|
+
if (isFunction(onStateChange)) {
|
|
1137
|
+
onStateChange();
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
function createStateRef(state, _a) {
|
|
1143
|
+
var suiteId = _a.suiteId, suiteName = _a.suiteName;
|
|
1144
|
+
return {
|
|
1145
|
+
optionalFields: state.registerStateKey(function () { return ({}); }),
|
|
1146
|
+
suiteId: state.registerStateKey(suiteId),
|
|
1147
|
+
suiteName: state.registerStateKey(suiteName),
|
|
1148
|
+
testCallbacks: state.registerStateKey(function () { return ({
|
|
1149
|
+
fieldCallbacks: {},
|
|
1150
|
+
doneCallbacks: []
|
|
1151
|
+
}); }),
|
|
1152
|
+
testObjects: state.registerStateKey(function (prev) {
|
|
1153
|
+
return {
|
|
1154
|
+
prev: prev ? prev.current : [],
|
|
1155
|
+
current: []
|
|
1156
|
+
};
|
|
1157
|
+
})
|
|
1158
|
+
};
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
1161
|
function usePath() {
|
|
1162
1162
|
var context$1 = context.useX();
|
|
1163
1163
|
return context$1.testCursor.getCursor();
|
|
@@ -1231,29 +1231,6 @@
|
|
|
1231
1231
|
return context.useX().isolate.type === IsolateTypes.EACH;
|
|
1232
1232
|
}
|
|
1233
1233
|
|
|
1234
|
-
function nonMatchingFieldName(testObject, fieldName) {
|
|
1235
|
-
return !!fieldName && !matchingFieldName(testObject, fieldName);
|
|
1236
|
-
}
|
|
1237
|
-
function matchingFieldName(testObject, fieldName) {
|
|
1238
|
-
return !!(fieldName && testObject.fieldName === fieldName);
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
|
-
/**
|
|
1242
|
-
* Checks if a given field, or the suite as a whole still have remaining tests.
|
|
1243
|
-
*/
|
|
1244
|
-
function hasRemainingTests(fieldName) {
|
|
1245
|
-
var allIncomplete = useAllIncomplete();
|
|
1246
|
-
if (isEmpty(allIncomplete)) {
|
|
1247
|
-
return false;
|
|
1248
|
-
}
|
|
1249
|
-
if (fieldName) {
|
|
1250
|
-
return allIncomplete.some(function (testObject) {
|
|
1251
|
-
return matchingFieldName(testObject, fieldName);
|
|
1252
|
-
});
|
|
1253
|
-
}
|
|
1254
|
-
return isNotEmpty(allIncomplete);
|
|
1255
|
-
}
|
|
1256
|
-
|
|
1257
1234
|
var Severity;
|
|
1258
1235
|
(function (Severity) {
|
|
1259
1236
|
Severity["WARNINGS"] = "warnings";
|
|
@@ -1325,6 +1302,13 @@
|
|
|
1325
1302
|
};
|
|
1326
1303
|
}
|
|
1327
1304
|
|
|
1305
|
+
function nonMatchingFieldName(testObject, fieldName) {
|
|
1306
|
+
return !!fieldName && !matchingFieldName(testObject, fieldName);
|
|
1307
|
+
}
|
|
1308
|
+
function matchingFieldName(testObject, fieldName) {
|
|
1309
|
+
return !!(fieldName && testObject.fieldName === fieldName);
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1328
1312
|
function either(a, b) {
|
|
1329
1313
|
return !!a !== !!b;
|
|
1330
1314
|
}
|
|
@@ -1513,7 +1497,7 @@
|
|
|
1513
1497
|
}
|
|
1514
1498
|
|
|
1515
1499
|
var cache$1 = createCache(20);
|
|
1516
|
-
function
|
|
1500
|
+
function produceSuiteResult() {
|
|
1517
1501
|
var testObjects = useTestsFlat();
|
|
1518
1502
|
var ctxRef = { stateRef: useStateRef() };
|
|
1519
1503
|
return cache$1([testObjects], context.bind(ctxRef, function () {
|
|
@@ -1528,19 +1512,35 @@
|
|
|
1528
1512
|
hasWarnings: context.bind(ctxRef, hasWarnings),
|
|
1529
1513
|
hasWarningsByGroup: context.bind(ctxRef, hasWarningsByGroup),
|
|
1530
1514
|
isValid: context.bind(ctxRef, function (fieldName) {
|
|
1531
|
-
return isValid(
|
|
1515
|
+
return isValid(produceSuiteResult(), fieldName);
|
|
1532
1516
|
}),
|
|
1533
1517
|
suiteName: suiteName
|
|
1534
1518
|
});
|
|
1535
1519
|
}));
|
|
1536
1520
|
}
|
|
1537
1521
|
|
|
1522
|
+
/**
|
|
1523
|
+
* Checks if a given field, or the suite as a whole still have remaining tests.
|
|
1524
|
+
*/
|
|
1525
|
+
function hasRemainingTests(fieldName) {
|
|
1526
|
+
var allIncomplete = useAllIncomplete();
|
|
1527
|
+
if (isEmpty(allIncomplete)) {
|
|
1528
|
+
return false;
|
|
1529
|
+
}
|
|
1530
|
+
if (fieldName) {
|
|
1531
|
+
return allIncomplete.some(function (testObject) {
|
|
1532
|
+
return matchingFieldName(testObject, fieldName);
|
|
1533
|
+
});
|
|
1534
|
+
}
|
|
1535
|
+
return isNotEmpty(allIncomplete);
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
1538
|
var cache = createCache(20);
|
|
1539
1539
|
function produceFullResult() {
|
|
1540
1540
|
var testObjects = useTestsFlat();
|
|
1541
1541
|
var ctxRef = { stateRef: useStateRef() };
|
|
1542
1542
|
return cache([testObjects], context.bind(ctxRef, function () {
|
|
1543
|
-
return assign({},
|
|
1543
|
+
return assign({}, produceSuiteResult(), {
|
|
1544
1544
|
done: context.bind(ctxRef, done)
|
|
1545
1545
|
});
|
|
1546
1546
|
}));
|
|
@@ -1573,7 +1573,7 @@
|
|
|
1573
1573
|
if (shouldSkipDoneRegistration(callback, fieldName, output)) {
|
|
1574
1574
|
return output;
|
|
1575
1575
|
}
|
|
1576
|
-
var doneCallback = function () { return callback(
|
|
1576
|
+
var doneCallback = function () { return callback(produceSuiteResult()); };
|
|
1577
1577
|
if (shouldRunDoneCallback(fieldName)) {
|
|
1578
1578
|
doneCallback();
|
|
1579
1579
|
return output;
|
|
@@ -1774,7 +1774,7 @@
|
|
|
1774
1774
|
// Return the result
|
|
1775
1775
|
return produceFullResult();
|
|
1776
1776
|
}), {
|
|
1777
|
-
get: context.bind(ctxRef,
|
|
1777
|
+
get: context.bind(ctxRef, produceSuiteResult),
|
|
1778
1778
|
remove: context.bind(ctxRef, function (fieldName) {
|
|
1779
1779
|
bus.emit(Events.REMOVE_FIELD, fieldName);
|
|
1780
1780
|
}),
|
|
@@ -1832,7 +1832,7 @@
|
|
|
1832
1832
|
// we should skip the test if the parent conditional is true.
|
|
1833
1833
|
isExcludedIndividually() ||
|
|
1834
1834
|
// Otherwise, we should skip the test if the conditional is true.
|
|
1835
|
-
optionalFunctionValue(conditional, optionalFunctionValue(
|
|
1835
|
+
optionalFunctionValue(conditional, optionalFunctionValue(produceSuiteResult))
|
|
1836
1836
|
}, function () { return callback(); });
|
|
1837
1837
|
});
|
|
1838
1838
|
}
|
|
@@ -2032,7 +2032,7 @@
|
|
|
2032
2032
|
if (isStringValue(condition)) {
|
|
2033
2033
|
return Boolean(exclusion.tests[condition]);
|
|
2034
2034
|
}
|
|
2035
|
-
return optionalFunctionValue(condition, optionalFunctionValue(
|
|
2035
|
+
return optionalFunctionValue(condition, optionalFunctionValue(produceSuiteResult));
|
|
2036
2036
|
};
|
|
2037
2037
|
}
|
|
2038
2038
|
}
|
|
@@ -2089,7 +2089,7 @@
|
|
|
2089
2089
|
isolate({ type: IsolateTypes.OMIT_WHEN }, function () {
|
|
2090
2090
|
context.run({
|
|
2091
2091
|
omitted: isOmitted() ||
|
|
2092
|
-
optionalFunctionValue(conditional, optionalFunctionValue(
|
|
2092
|
+
optionalFunctionValue(conditional, optionalFunctionValue(produceSuiteResult))
|
|
2093
2093
|
}, function () { return callback(); });
|
|
2094
2094
|
});
|
|
2095
2095
|
}
|
|
@@ -2220,7 +2220,7 @@
|
|
|
2220
2220
|
}
|
|
2221
2221
|
}
|
|
2222
2222
|
catch (e) {
|
|
2223
|
-
throwError("Unexpected error encountered during test registration.\n Test Object: ".concat(testObject, ".\n Error: ").concat(e, "."));
|
|
2223
|
+
throwError("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(testObject), ".\n Error: ").concat(e, "."));
|
|
2224
2224
|
}
|
|
2225
2225
|
}
|
|
2226
2226
|
|
|
@@ -2305,12 +2305,13 @@
|
|
|
2305
2305
|
|
|
2306
2306
|
// eslint-disable-next-line max-statements
|
|
2307
2307
|
function registerPrevRunTest(testObject) {
|
|
2308
|
-
var prevRunTest = useTestAtCursor(testObject);
|
|
2309
2308
|
if (shouldSkipBasedOnMode(testObject)) {
|
|
2310
|
-
moveForward();
|
|
2311
2309
|
testObject.skip();
|
|
2310
|
+
useTestAtCursor(testObject);
|
|
2311
|
+
moveForward();
|
|
2312
2312
|
return testObject;
|
|
2313
2313
|
}
|
|
2314
|
+
var prevRunTest = useTestAtCursor(testObject);
|
|
2314
2315
|
if (isOmitted()) {
|
|
2315
2316
|
prevRunTest.omit();
|
|
2316
2317
|
moveForward();
|
|
@@ -2419,7 +2420,7 @@
|
|
|
2419
2420
|
ctx.currentTest.warn();
|
|
2420
2421
|
}
|
|
2421
2422
|
|
|
2422
|
-
var VERSION = "4.2.
|
|
2423
|
+
var VERSION = "4.2.2";
|
|
2423
2424
|
|
|
2424
2425
|
exports.VERSION = VERSION;
|
|
2425
2426
|
exports.context = context;
|