vest 5.4.1 → 5.4.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.
@@ -1,2 +1,2 @@
1
- import{enforce as t}from"n4s";export{enforce}from"n4s";import{assign as e,tinyState as n,cache as s,isArray as i,isStringValue as r,asArray as a,hasOwnProperty as u,StateMachine as o,invariant as c,isPromise as l,optionalFunctionValue as E,noop as d,isNotEmpty as f,seq as N,isPositive as T,greaterThan as g,isEmpty as S,Predicates as I,isNullish as R,bindNot as _,either as p,defaultTo as m,isNotNullish as D,deferThrow as O,text as A,isUndefined as v,isNull as C,isFunction as h,callEach as P,numberEquals as L,freezeAssign as F}from"vest-utils";import{Isolate as U,VestRuntime as G,IsolateSelectors as W,IsolateMutator as y,Walker as b,IsolateInspector as M,Reconciler as w,Bus as k,RuntimeEvents as B}from"vestjs-runtime";import{createCascade as H}from"context";const j={Each:"Each",Focused:"Focused",Group:"Group",OmitWhen:"OmitWhen",SkipWhen:"SkipWhen",Suite:"Suite",Test:"Test"};class K{static setOptionalField(t,n,s){const i=t.data.optional,r=i[n];e(i,{[n]:e({},r,s(r))})}static getOptionalField(t,e){var n;return null!==(n=K.getOptionalFields(t)[e])&&void 0!==n?n:{}}static getOptionalFields(t){var e,n;return null!==(n=null===(e=t.data)||void 0===e?void 0:e.optional)&&void 0!==n?n:{}}}var V,X;!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(V||(V={})),function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(X||(X={}));const x=H(((t,s)=>s?null:e({inclusion:{},mode:n.createTinyState(X.EAGER),suiteParams:[],testMemoCache:J},t)));function q(){return x.useX().inclusion}function Y(){return x.useX().mode()}const J=s(10);function z(e){var n;const s=G.useAvailableRoot(),o=x.useX().suiteParams,c=null!==(n=null==o?void 0:o[0])&&void 0!==n?n:{};if(i(e)||r(e))a(e).forEach((e=>{K.setOptionalField(s,e,(()=>({type:V.AUTO,applied:!!u(c,e)&&t.isBlank().test(null==c?void 0:c[e]),rule:null})))}));else for(const n in e){const i=e[n];K.setOptionalField(s,n,(()=>({type:V.CUSTOM_LOGIC,rule:i,applied:t.isBlank().test(i)||!0===i})))}}function Q(t){var e,n;if(!t)return!1;const s=G.useAvailableRoot();return null!==(n=null===(e=K.getOptionalField(s,t))||void 0===e?void 0:e.applied)&&void 0!==n&&n}var Z;!function(t){t.HOOK_CALLED_OUTSIDE="hook called outside of a running suite.",t.EXPECTED_VEST_TEST="Expected value to be an instance of IsolateTest",t.FIELD_NAME_REQUIRED="Field name must be passed",t.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION="Suite must be initialized with a function",t.PROMISIFY_REQUIRE_FUNCTION="Vest.Promisify must be called with a function",t.PARSER_EXPECT_RESULT_OBJECT="Vest parser: expected argument at position 0 to be Vest's result object.",t.WARN_MUST_BE_CALLED_FROM_TEST="Warn must be called from within the body of a test function",t.EACH_CALLBACK_MUST_BE_A_FUNCTION="Each must be called with a function",t.INVALID_PARAM_PASSED_TO_FUNCTION='Incompatible params passed to {fn_name} function. "{param}" must be of type {expected}',t.TESTS_CALLED_IN_DIFFERENT_ORDER='Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\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.',t.UNEXPECTED_TEST_REGISTRATION_ERROR="Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.",t.UNEXPECTED_TEST_RUN_ERROR="Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.",t.INCLUDE_SELF="Trying to call include.when on the same field."}(Z||(Z={}));const $="PENDING",tt="INITIAL",et="DONE",nt={[$]:$,[tt]:tt,[et]:et},st=o({initial:nt.INITIAL,states:{[nt.DONE]:{},[nt.INITIAL]:{[nt.PENDING]:nt.PENDING,[nt.DONE]:nt.DONE},[nt.PENDING]:{[nt.DONE]:nt.DONE}}}),it={[$]:$,CANCELED:"CANCELED",FAILED:"FAILED",OMITTED:"OMITTED",PASSING:"PASSING",SKIPPED:"SKIPPED",UNTESTED:"UNTESTED",WARNING:"WARNING"},rt="RESET",at=o({initial:it.UNTESTED,states:{"*":{[it.OMITTED]:it.OMITTED,[rt]:it.UNTESTED},[it.UNTESTED]:{[it.CANCELED]:it.CANCELED,[it.FAILED]:it.FAILED,[it.PASSING]:it.PASSING,[it.PENDING]:it.PENDING,[it.SKIPPED]:it.SKIPPED,[it.WARNING]:it.WARNING},[it.PENDING]:{[it.CANCELED]:it.CANCELED,[it.FAILED]:it.FAILED,[it.PASSING]:it.PASSING,[it.SKIPPED]:[it.SKIPPED,t=>!0===t],[it.WARNING]:it.WARNING},[it.SKIPPED]:{},[it.FAILED]:{},[it.WARNING]:{},[it.PASSING]:{},[it.CANCELED]:{},[it.OMITTED]:{}}});var ut,ot,ct,lt,Et,dt;function ft(t){return t===ut.ERRORS?ot.ERROR_COUNT:ot.WARN_COUNT}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(ut||(ut={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(ot||(ot={})),function(t){t.Error="error",t.Warning="warning"}(ct||(ct={}));class Nt{static getStatus(t){var e;return null!==(e=t.status)&&void 0!==e?e:tt}static setStatus(t,e,n){t.status=this.stateMachine.staticTransition(Nt.getStatus(t),e,n)}static statusEquals(t,e){return Nt.getStatus(t)===e}static setPending(t){this.setStatus(t,$)}static setDone(t){this.setStatus(t,et)}static isPending(t){return Nt.statusEquals(t,$)}}Nt.stateMachine=st;class Tt extends Nt{static getData(t){return c(t.data),t.data}static is(t){return W.isIsolateType(t,j.Test)}static isX(t){c(Tt.is(t),Z.EXPECTED_VEST_TEST)}static cast(t){return Tt.isX(t),t}static warns(t){return Tt.getData(t).severity===ct.Warning}static isOmitted(t){return Tt.statusEquals(t,it.OMITTED)}static isUntested(t){return Tt.statusEquals(t,it.UNTESTED)}static isFailing(t){return Tt.statusEquals(t,it.FAILED)}static isCanceled(t){return Tt.statusEquals(t,it.CANCELED)}static isSkipped(t){return Tt.statusEquals(t,it.SKIPPED)}static isPassing(t){return Tt.statusEquals(t,it.PASSING)}static isWarning(t){return Tt.statusEquals(t,it.WARNING)}static hasFailures(t){return Tt.isFailing(t)||Tt.isWarning(t)}static isNonActionable(t){return Tt.isSkipped(t)||Tt.isOmitted(t)||Tt.isCanceled(t)}static isTested(t){return Tt.hasFailures(t)||Tt.isPassing(t)}static awaitsResolution(t){return Tt.isSkipped(t)||Tt.isUntested(t)||Tt.isPending(t)}static isAsyncTest(t){return l(Tt.getData(t).asyncTest)}static fail(t){Tt.setStatus(t,Tt.warns(t)?it.WARNING:it.FAILED)}static pass(t){Tt.setStatus(t,it.PASSING)}static warn(t){Tt.setData(t,(t=>Object.assign(Object.assign({},t),{severity:ct.Warning})))}static setData(t,e){t.data=E(e,Tt.getData(t))}static skip(t,e){Tt.setStatus(t,it.SKIPPED,e)}static cancel(t){Tt.setStatus(t,it.CANCELED),y.abort(t,it.CANCELED)}static omit(t){Tt.setStatus(t,it.OMITTED)}static reset(t){Tt.setStatus(t,rt)}}function gt(t,e){return!!e&&!St(t,e)}function St(t,e){return!(!e||t.fieldName!==e)}function It(t,e){const{groupName:n}=Tt.getData(t),{groupName:s,fieldName:i}=Tt.getData(e);return St(Tt.getData(t),i)&&n===s&&t.key==e.key}function Rt(t,e){return U.create(j.Focused,d,{focusMode:t,match:a(e).filter(r),matchAll:!0===e})}Tt.stateMachine=at,function(t){t[t.ONLY=0]="ONLY",t[t.SKIP=1]="SKIP"}(lt||(lt={}));class _t{static isSkipFocused(t,e){return(null==t?void 0:t.data.focusMode)===lt.SKIP&&(Ot(t,e)||!0===t.data.matchAll)}static isOnlyFocused(t,e){return(null==t?void 0:t.data.focusMode)===lt.ONLY&&Ot(t,e)}static isIsolateFocused(t){return W.isIsolateType(t,j.Focused)}}function pt(t){return Rt(lt.ONLY,Dt(t))}function mt(t){return Rt(lt.SKIP,Dt(t))}function Dt(t){return!1===t?[]:t}function Ot(t,e){var n,s;return f(null==t?void 0:t.data.match)&&(!e||(null===(s=null===(n=null==t?void 0:t.data.match)||void 0===n?void 0:n.includes(e))||void 0===s||s))}class At{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0,this.pendingCount=0}}class vt extends At{constructor(){super(...arguments),this[Et]=[],this[dt]=[],this.groups={},this.tests={},this.valid=null}}Et=ut.ERRORS,dt=ut.WARNINGS;const Ct=s(),ht=s();function Pt(){return G.useXAppData()}function Lt(){return Pt().doneCallbacks()}function Ft(){return Pt().fieldCallbacks()}function Ut(){return Pt().suiteId}function Gt(){Pt().suiteResultCache.invalidate([Ut()]),ht.invalidate([Ut()])}function Wt(){const[,,t]=Lt(),[,,e]=Ft();t(),e()}function yt(t){G.useLoadRootNode(t),Gt()}function bt(t,e,n){return n?function(t,e,n){var s;return(null===(s=null==t?void 0:t[n])||void 0===s?void 0:s[e])||[]}(t,e,n):function(t,e){const n={},s=ft(e);for(const i in t)T(t[i][s])&&(n[i]=t[i][e]||[]);return n}(t,e)}function Mt(t){const e={getError:s,getErrors:function(e){return wt(t,ut.ERRORS,e)},getErrorsByGroup:function(e,n){return kt(t,ut.ERRORS,e,n)},getMessage:function(t){return s(t)||n(t)},getWarning:n,getWarnings:function(e){return wt(t,ut.WARNINGS,e)},getWarningsByGroup:function(e,n){return kt(t,ut.WARNINGS,e,n)},hasErrors:function(e){return jt(t,ot.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return Ht(t,ot.ERROR_COUNT,e,n)},hasWarnings:function(e){return jt(t,ot.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return Ht(t,ot.WARN_COUNT,e,n)},isPending:function(e){var n;return g(e?null===(n=t.tests[e])||void 0===n?void 0:n.pendingCount:t.pendingCount,0)},isTested:function(e){var n;return T(null===(n=t.tests[e])||void 0===n?void 0:n.testCount)},isValid:function(e){var n;return Boolean(e?null===(n=t.tests[e])||void 0===n?void 0:n.valid:t.valid)},isValidByGroup:function(e,n){const s=t.groups[e];if(!s)return!1;if(n)return Bt(s,n);for(const t in s)if(!Bt(s,t))return!1;return!0}};return e;function n(e){return Kt(ut.WARNINGS,t,e)}function s(e){return Kt(ut.ERRORS,t,e)}}function wt(t,e,n){return bt(t.tests,e,n)}function kt(t,e,n,s){return bt(t.groups[n],e,s)}function Bt(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function Ht(t,e,n,s){var i,r;const a=t.groups[n];if(!a)return!1;if(s)return T(null===(i=a[s])||void 0===i?void 0:i[e]);for(const t in a)if(T(null===(r=a[t])||void 0===r?void 0:r[e]))return!0;return!1}function jt(t,e,n){var s;const i=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return T(i)}function Kt(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>St(t,n))))||void 0===s?void 0:s.message:i[0]}class Vt{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){const{fieldName:e,message:n,groupName:s}=Tt.getData(t);return new Vt(e,n,s)}}class Xt{static hasNoTests(t=Xt.defaultRoot()){return!t||!b.has(t,Tt.is)}static someTests(t,e=Xt.defaultRoot()){return!!e&&b.some(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static everyTest(t,e=Xt.defaultRoot()){return!!e&&b.every(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static walkTests(t,e=Xt.defaultRoot()){e&&b.walk(e,((e,n)=>{t(Tt.cast(e),n)}),Tt.is)}static reduceTests(t,e,n=Xt.defaultRoot()){return n?b.reduce(n,((e,n,s)=>t(e,Tt.cast(n),s)),e,Tt.is):e}static pluckTests(t,e=Xt.defaultRoot()){e&&b.pluck(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static resetField(t){Xt.walkTests((e=>{St(Tt.getData(e),t)&&Tt.reset(e)}),Xt.defaultRoot())}static removeTestByFieldName(t,e=Xt.defaultRoot()){Xt.pluckTests((e=>St(Tt.getData(e),t)),e)}}Xt.defaultRoot=G.useAvailableRoot;class xt{static useHasPending(t){if(!xt.defaultRoot())return!1;const e=xt.usePreAggs().pending;return!S(e)&&e.some(I.all(null==t||t))}static usePreAggs(){return t=qt,(0,Pt().preAggCache)([Ut()],t);var t}static useHasRemainingWithTestNameMatching(t){return xt.useHasPending(I.any(R(t),I.all(Tt.is,(e=>function(t,e){return!e||St(t,e)}(Tt.getData(e),t)))))}}function qt(){const t=xt.defaultRoot(),e={pending:[],failures:{errors:{},warnings:{}}};return t?b.reduce(t,((t,e)=>{var n,s;if(Nt.isPending(e)&&t.pending.push(e),Tt.is(e)){const i=Tt.getData(e).fieldName;Tt.isWarning(e)&&(t.failures.warnings[i]=null!==(n=t.failures.warnings[i])&&void 0!==n?n:[],t.failures.warnings[i].push(e)),Tt.isFailing(e)&&(t.failures.errors[i]=null!==(s=t.failures.errors[i])&&void 0!==s?s:[],t.failures.errors[i].push(e))}return t}),e):e}xt.defaultRoot=G.useAvailableRoot;const Yt=_((function(t,e){return Tt.getData(t).groupName===e}));function Jt(t){return function(t,e){const n=xt.usePreAggs().failures;if(S(n[t]))return!1;if(e)return!S(n[t][e]);return!0}(ut.ERRORS,t)}function zt(t,e,n){return Xt.someTests((s=>!Yt(s,e)&&function(t,e,n){if(!Tt.hasFailures(t))return!1;if(gt(Tt.getData(t),n))return!1;if(function(t,e){return p(t===ut.WARNINGS,Tt.warns(e))}(e,t))return!1;return!0}(s,t,n)))}function Qt(t){return!!Q(t)||!Xt.hasNoTests()&&(!Jt(t)&&(!function(t){return xt.useHasPending(I.all(Tt.is,(e=>!gt(Tt.getData(e),t)),(()=>!Q(t))))}(t)&&function(t){return Xt.everyTest((e=>$t(e,t)))}(t)))}function Zt(t,e){return!!Q(e)||!zt(ut.ERRORS,t,e)&&(!function(t,e){return xt.useHasPending(I.all(Tt.is,(e=>!Yt(e,t)),(t=>!gt(Tt.getData(t),e)),(()=>!Q(e))))}(t,e)&&function(t,e){return Xt.everyTest((n=>!!Yt(n,t)||$t(n,e)))}(t,e))}function $t(t,e){return!!gt(Tt.getData(t),e)||(Tt.isOmitted(t)||Tt.isTested(t)||function(t){const e=G.useAvailableRoot(),{fieldName:n}=Tt.getData(t);return K.getOptionalField(e,n).type===V.AUTO&&Tt.awaitsResolution(t)}(t))}function te(){const t=Xt.reduceTests(((t,e)=>{const n=Tt.getData(e).fieldName;return t.tests[n]=function(t,e){const n=Tt.getData(e).fieldName,s=ee(t[n],e);return s.valid=!1!==s.valid&&Qt(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=Tt.getData(e);if(!n)return t;t[n]=t[n]||{};const i=t[n];return i[s]=ee(i[s],e),i[s].valid=!1!==i[s].valid&&Zt(n,s),t}(t.groups,e),Tt.isOmitted(e)?t:(!1===t.tests[n].valid&&(t.valid=!1),function(t,e){Tt.isWarning(t)?(e.warnCount++,e.warnings.push(Vt.fromTestObject(t))):Tt.isFailing(t)&&(e.errorCount++,e.errors.push(Vt.fromTestObject(t)));Tt.isPending(t)&&e.pendingCount++;Tt.isNonActionable(t)||e.testCount++;return e}(e,t))}),new vt);return t.valid=!1!==t.valid&&Qt(),t}function ee(t,e){const{message:n}=Tt.getData(e),s=m(t?Object.assign({},t):null,ne);return Tt.isNonActionable(e)||(Tt.isPending(e)&&s.pendingCount++,Tt.isFailing(e)?i(ut.ERRORS):Tt.isWarning(e)&&i(ut.WARNINGS),s.testCount++),s;function i(t){const e=ft(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function ne(){return e(new At,{errors:[],valid:!0,warnings:[]})}function se(){return t=()=>{const t=te(),e=Pt().suiteName;return Object.freeze(ie(t,e))},(0,Pt().suiteResultCache)([Ut()],t);var t}function ie(t,n){return e(t,Mt(t),{suiteName:n})}function re(){const t=ie(new vt);return new Proxy(t,{get:(t,e)=>se()[e]})}function ae(t,e){U.create(j.SkipWhen,(()=>{x.run({skipped:ue()||E(t,re())},e)}))}function ue(){return function(){var t;return null!==(t=x.useX().skipped)&&void 0!==t&&t}()}function oe(t,e){return D(b.findClosest(t,(t=>!!_t.isIsolateFocused(t)&&_t.isOnlyFocused(t,e))))}function ce(t){const{fieldName:e}=Tt.getData(t);if(ue())return!0;const n=q(),s=function(t){return b.findClosest(t,(e=>{var n;if(!_t.isIsolateFocused(e))return!1;const{fieldName:s}=Tt.getData(t);return(null===(n=e.data.match)||void 0===n?void 0:n.includes(s))||e.data.matchAll}))}(t);if(_t.isSkipFocused(s))return!0;return!_t.isOnlyFocused(s)&&(!!oe(t)&&!E(n[e],t))}function le(t){const[,e]=Y();e(t)}function Ee(t){const[e]=Y();return e===t}function de(t){return Ee(X.ONE)?Jt():!!Ee(X.EAGER)&&Jt(t.fieldName)}function fe(t,e){U.create(j.OmitWhen,(()=>{x.run({omitted:Ne()||E(t,re())},e)}))}function Ne(){return function(){var t;return null!==(t=x.useX().omitted)&&void 0!==t&&t}()}function Te(t,e=t){const n=Tt.getData(t);return de(n)?(s=t,Tt.skip(s),s):(i=n.fieldName,Ne()||Q(i)?function(t){return Tt.omit(t),t}(t):ce(t)?function(t){return Tt.skip(t,ue()),t}(e):t);var s,i}function ge(t,e){return Tt.is(e)&&!It(e,t)}const Se=[class{static match(t,e){return Tt.is(t)&&Tt.is(e)}static reconcile(t,e){const n=Te(t,function(t,e){if(M.usesKey(t))return function(t){return Tt.cast(w.handleIsolateNodeWithKey(t,(e=>!!Tt.isNonActionable(e)||!ce(t))))}(t);if(w.dropNextNodesOnReorder(ge,t,e))return function(t,e){if(M.canReorder(t))return;O(A(Z.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:Tt.getData(t).fieldName,prevName:Tt.is(e)?Tt.getData(e).fieldName:void 0}))}(t,e),t;if(!Tt.is(e))return t;if(Tt.isOmitted(e))return t;return e}(t,e));return function(t,e,n){t===e&&Tt.is(e)&&(i=e)!==(s=n)&&It(s,i)&&Tt.isPending(s)&&Tt.cancel(s);var s,i}(n,t,e),n}}];function Ie(t){Se.includes(t)||Se.push(t)}function Re(t,e){var n,s;return null!==(s=null===(n=Se.find((n=>n.match(t,e))))||void 0===n?void 0:n.reconcile(t,e))&&void 0!==s?s:null}function _e(...t){const[e,n]=t.reverse();return U.create(j.Group,(()=>x.run(Object.assign({},n&&{groupName:n}),e)))}function pe(t){c(r(t));return q()[t]=!0,{when:function(e){c(e!==t,Z.INCLUDE_SELF);const n=q();n[t]=function(t){return r(e)?oe(t,e):E(e,E(se))}}}}var me;function De(t,e,n){const s=Object.assign(Object.assign({},{severity:ct.Error,status:at.initial()}),{fieldName:e.fieldName,testFn:e.testFn});e.groupName&&(s.groupName=e.groupName),e.message&&(s.message=e.message);return U.create(j.Test,t,s,null!=n?n:null)}function Oe(t){if(Te(t),Tt.isUntested(t))return function(t){const e=function(t){return x.run({currentTest:t},(()=>{let e;const{message:n,testFn:s}=Tt.getData(t);try{e=s({signal:t.abortController.signal})}catch(s){(function(t,e){return v(t)&&r(e)})(n,s)&&(Tt.getData(t).message=s),e=!1}return!1===e&&Tt.fail(t),e}))}(t);try{if(l(e))return Tt.getData(t).asyncTest=e,function(t){const{asyncTest:e,message:n}=Tt.getData(t);if(!l(e))return;const s=G.persist((()=>{Ae(t)})),i=G.persist((e=>{Tt.isCanceled(t)||(Tt.getData(t).message=r(e)?e:n,Tt.fail(t),s())}));return e.then(s,i)}(t);Ae(t)}catch(e){throw new Error(A(Z.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);Tt.isNonActionable(t)||O(A(Z.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function Ae(t){Tt.pass(t)}function ve(t,...e){const[n,s,i]=h(e[1])?e:[void 0,...e];!function(t,e){const n="test";c(r(t),A(Z.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),c(h(e),A(Z.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,s);const a={fieldName:t,groupName:x.useX().groupName,message:n,testFn:s};return k.useEmit(me.TEST_RUN_STARTED),De(Oe,a,i)}!function(t){t.TEST_RUN_STARTED="test_run_started",t.TEST_COMPLETED="test_completed",t.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",t.REMOVE_FIELD="remove_field",t.RESET_FIELD="reset_field",t.RESET_SUITE="reset_suite",t.SUITE_RUN_STARTED="suite_run_started",t.SUITE_CALLBACK_RUN_FINISHED="SUITE_CALLBACK_RUN_FINISHED",t.DONE_TEST_OMISSION_PASS="DONE_TEST_OMISSION_PASS"}(me||(me={}));const Ce=e(ve,{memo:function(t){return function(e,...n){const[s,i,r]=n.reverse();return function(t,e){const n=x.useX().testMemoCache,s=n.get(t);if(C(s))return n(t,e);const[,i]=s;if(Tt.isCanceled(i))return n.invalidate(t),n(t,e);return G.addNodeToHistory(i),i}([Ut(),e,G.useCurrentCursor()].concat(s),(function(){return t(e,r,i)}))}}(ve)});function he(){return{group:_e,include:pe,omitWhen:fe,only:pt,optional:z,skip:mt,skipWhen:ae,test:Ce}}function Pe(){const t=G.useAvailableRoot(),e=K.getOptionalFields(t);if(S(e))return;const n=new Set;function s(e){const{fieldName:s}=Tt.getData(e);n.has(s)&&(Tt.omit(e),K.setOptionalField(t,s,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Xt.walkTests((e=>{if(Tt.isPending(e))return;const{fieldName:i}=Tt.getData(e);n.has(i)?s(e):function(e){const{fieldName:i}=Tt.getData(e),r=K.getOptionalField(t,i);!0===E(r.rule)&&n.add(i);s(e)}(e)})),k.useEmit(me.DONE_TEST_OMISSION_PASS)}function Le(){const t=k.useBus();return e(me.TEST_COMPLETED,(()=>{})),t.on(B.ISOLATE_PENDING,(t=>{Tt.is(t)&&Tt.setPending(t),Nt.setPending(t)})),t.on(B.ISOLATE_DONE,(e=>{Tt.is(e)&&t.emit(me.TEST_COMPLETED,e),Nt.setDone(e)})),t.on(B.ASYNC_ISOLATE_DONE,(e=>{if(Tt.is(e)&&!Tt.isCanceled(e)){const{fieldName:t}=Tt.getData(e);!function(t){const[e]=Ft();t&&!xt.useHasRemainingWithTestNameMatching(t)&&i(e[t])&&P(e[t])}(t)}xt.useHasPending()||t.emit(me.ALL_RUNNING_TESTS_FINISHED)})),e(me.DONE_TEST_OMISSION_PASS,(()=>{})),t.on(me.ALL_RUNNING_TESTS_FINISHED,(()=>{Xt.someTests(Tt.isAsyncTest)&&Pe(),function(){const[t]=Lt();P(t)}()})),e(me.RESET_FIELD,(t=>{Xt.resetField(t)})),e(me.SUITE_RUN_STARTED,(()=>{Wt()})),e(me.SUITE_CALLBACK_RUN_FINISHED,(()=>{xt.useHasPending()||t.emit(me.ALL_RUNNING_TESTS_FINISHED),Pe()})),e(me.REMOVE_FIELD,(t=>{Xt.removeTestByFieldName(t)})),e(me.RESET_SUITE,(()=>{Wt(),G.reset()})),{subscribe:function(e){return t.on("*",(()=>{e()})).off}};function e(e,n){t.on(e,((...t)=>{Gt(),n(...t)}))}}function Fe(){return F({done:G.persist(Ue)},se())}function Ue(...t){const[n,s]=t.reverse(),i=Fe();if(function(t,e,n){var s,i;return!!(!h(t)||e&&L(null!==(i=null===(s=n.tests[e])||void 0===s?void 0:s.testCount)&&void 0!==i?i:0,0))}(n,s,i))return i;const r=()=>n(se());return xt.useHasRemainingWithTestNameMatching(s)?(function(t,n){const[,s]=Ft(),[,i]=Lt();n?s((s=>e(s,{[n]:(s[n]||[]).concat(t)}))):i((e=>e.concat(t)))}(r,s),i):(r(),i)}function Ge(...t){const[s,i]=t.reverse();!function(t){c(h(t),Z.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(s);const r=function({suiteName:t,VestReconciler:e}){const s={doneCallbacks:n.createTinyState((()=>[])),fieldCallbacks:n.createTinyState((()=>({}))),preAggCache:ht,suiteId:N(),suiteName:t,suiteResultCache:Ct};return G.createRef(e,s)}({suiteName:i,VestReconciler:Re});function a(...t){return x.run({suiteParams:t},(()=>{return k.useEmit(me.SUITE_RUN_STARTED),e=function(t,...e){const n=k.useEmit();return()=>(t(...e),n(me.SUITE_CALLBACK_RUN_FINISHED),Fe())}(s,...t),U.create(j.Suite,e,{optional:{}});var e})).output}const u=We(...t);return G.Run(r,(()=>{const t=Le();return e(G.persist(a),Object.assign(Object.assign({dump:G.persist((()=>G.useAvailableRoot())),get:G.persist(se),remove:k.usePrepareEmitter(me.REMOVE_FIELD),reset:k.usePrepareEmitter(me.RESET_SUITE),resetField:k.usePrepareEmitter(me.RESET_FIELD),resume:G.persist(yt),runStatic:(...t)=>u(...t),subscribe:t.subscribe},(n=G.persist(se),{getError:(...t)=>n().getError(...t),getErrors:(...t)=>n().getErrors(...t),getErrorsByGroup:(...t)=>n().getErrorsByGroup(...t),getMessage:(...t)=>n().getMessage(...t),getWarning:(...t)=>n().getWarning(...t),getWarnings:(...t)=>n().getWarnings(...t),getWarningsByGroup:(...t)=>n().getWarningsByGroup(...t),hasErrors:(...t)=>n().hasErrors(...t),hasErrorsByGroup:(...t)=>n().hasErrorsByGroup(...t),hasWarnings:(...t)=>n().hasWarnings(...t),hasWarningsByGroup:(...t)=>n().hasWarningsByGroup(...t),isPending:(...t)=>n().isPending(...t),isTested:(...t)=>n().isTested(...t),isValid:(...t)=>n().isValid(...t),isValidByGroup:(...t)=>n().isValidByGroup(...t)})),he()));var n}))}function We(...t){return e(((...n)=>{const s=Ge(...t),i=s(...n);return e(new Promise((t=>{i.done((e=>{t(r(e))}))})),r(i));function r(t){return e({dump:s.dump},t)}}),Object.assign({},he()))}function ye(t,e){c(h(e),Z.EACH_CALLBACK_MUST_BE_A_FUNCTION),function(t){U.create(j.Each,t,{allowReorder:!0})}((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}const be=Z.WARN_MUST_BE_CALLED_FROM_TEST;function Me(){const t=(e=Z.HOOK_CALLED_OUTSIDE,x.useX(e).currentTest);var e;c(t,be),Tt.warn(t)}export{X as Modes,Ge as create,ye as each,_e as group,pe as include,le as mode,fe as omitWhen,pt as only,z as optional,Ie as registerReconciler,mt as skip,ae as skipWhen,We as staticSuite,Mt as suiteSelectors,Ce as test,Me as warn};
1
+ import{enforce as t}from"n4s";export{enforce}from"n4s";import{assign as e,tinyState as n,cache as s,isArray as i,isStringValue as r,asArray as a,hasOwnProperty as u,StateMachine as o,invariant as c,isPromise as l,optionalFunctionValue as d,noop as f,isNotEmpty as E,seq as N,isPositive as g,greaterThan as T,isEmpty as S,Predicates as p,isNullish as I,bindNot as R,either as m,defaultTo as D,isNotNullish as O,deferThrow as A,text as _,isUndefined as v,isNull as C,isFunction as h,callEach as P,numberEquals as L,freezeAssign as F}from"vest-utils";import{Isolate as U,VestRuntime as G,IsolateSelectors as W,IsolateMutator as y,Walker as b,IsolateInspector as M,Reconciler as w,Bus as k,RuntimeEvents as B}from"vestjs-runtime";import{createCascade as j}from"context";const V={Each:"Each",Focused:"Focused",Group:"Group",OmitWhen:"OmitWhen",SkipWhen:"SkipWhen",Suite:"Suite",Test:"Test"};class H{static setOptionalField(t,n,s){const i=t.data.optional,r=i[n];e(i,{[n]:e({},r,s(r))})}static getOptionalField(t,e){var n;return null!==(n=H.getOptionalFields(t)[e])&&void 0!==n?n:{}}static getOptionalFields(t){var e,n;return null!==(n=null===(e=t.data)||void 0===e?void 0:e.optional)&&void 0!==n?n:{}}}var K,X;!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(K||(K={})),function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(X||(X={}));const x=j(((t,s)=>s?null:e({inclusion:{},mode:n.createTinyState(X.EAGER),suiteParams:[],testMemoCache:J},t)));function q(){return x.useX().inclusion}function Y(){return x.useX().mode()}const J=s(10);function z(e){var n;const s=G.useAvailableRoot(),o=x.useX().suiteParams,c=null!==(n=null==o?void 0:o[0])&&void 0!==n?n:{};if(i(e)||r(e))a(e).forEach((e=>{H.setOptionalField(s,e,(()=>({type:K.AUTO,applied:!!u(c,e)&&t.isBlank().test(null==c?void 0:c[e]),rule:null})))}));else for(const n in e){const i=e[n];H.setOptionalField(s,n,(()=>({type:K.CUSTOM_LOGIC,rule:i,applied:t.isBlank().test(i)||!0===i})))}}function Q(t){var e,n;if(!t)return!1;const s=G.useAvailableRoot();return null!==(n=null===(e=H.getOptionalField(s,t))||void 0===e?void 0:e.applied)&&void 0!==n&&n}var Z;!function(t){t.HOOK_CALLED_OUTSIDE="hook called outside of a running suite.",t.EXPECTED_VEST_TEST="Expected value to be an instance of IsolateTest",t.FIELD_NAME_REQUIRED="Field name must be passed",t.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION="Suite must be initialized with a function",t.PROMISIFY_REQUIRE_FUNCTION="Vest.Promisify must be called with a function",t.PARSER_EXPECT_RESULT_OBJECT="Vest parser: expected argument at position 0 to be Vest's result object.",t.WARN_MUST_BE_CALLED_FROM_TEST="Warn must be called from within the body of a test function",t.EACH_CALLBACK_MUST_BE_A_FUNCTION="Each must be called with a function",t.INVALID_PARAM_PASSED_TO_FUNCTION='Incompatible params passed to {fn_name} function. "{param}" must be of type {expected}',t.TESTS_CALLED_IN_DIFFERENT_ORDER='Vest Critical Error: Tests called in different order than previous run.\n expected: {fieldName}\n received: {prevName}\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.',t.UNEXPECTED_TEST_REGISTRATION_ERROR="Unexpected error encountered during test registration.\n Please report this issue to Vest's Github repository.\n Test Object: {testObject}.\n Error: {error}.",t.UNEXPECTED_TEST_RUN_ERROR="Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.",t.INCLUDE_SELF="Trying to call include.when on the same field."}(Z||(Z={}));const $="PENDING",tt="INITIAL",et="DONE",nt={[$]:$,[tt]:tt,[et]:et},st=o({initial:nt.INITIAL,states:{[nt.DONE]:{},[nt.INITIAL]:{[nt.PENDING]:nt.PENDING,[nt.DONE]:nt.DONE},[nt.PENDING]:{[nt.DONE]:nt.DONE}}}),it={[$]:$,CANCELED:"CANCELED",FAILED:"FAILED",OMITTED:"OMITTED",PASSING:"PASSING",SKIPPED:"SKIPPED",UNTESTED:"UNTESTED",WARNING:"WARNING"},rt="RESET",at=o({initial:it.UNTESTED,states:{"*":{[it.OMITTED]:it.OMITTED,[rt]:it.UNTESTED},[it.UNTESTED]:{[it.CANCELED]:it.CANCELED,[it.FAILED]:it.FAILED,[it.PASSING]:it.PASSING,[it.PENDING]:it.PENDING,[it.SKIPPED]:it.SKIPPED,[it.WARNING]:it.WARNING},[it.PENDING]:{[it.CANCELED]:it.CANCELED,[it.FAILED]:it.FAILED,[it.PASSING]:it.PASSING,[it.SKIPPED]:[it.SKIPPED,t=>!0===t],[it.WARNING]:it.WARNING},[it.SKIPPED]:{},[it.FAILED]:{},[it.WARNING]:{},[it.PASSING]:{},[it.CANCELED]:{},[it.OMITTED]:{}}});var ut,ot,ct,lt,dt,ft;function Et(t){return t===ut.ERRORS?ot.ERROR_COUNT:ot.WARN_COUNT}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(ut||(ut={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(ot||(ot={})),function(t){t.Error="error",t.Warning="warning"}(ct||(ct={}));class Nt{static getStatus(t){var e;return null!==(e=t.status)&&void 0!==e?e:tt}static setStatus(t,e,n){t.status=this.stateMachine.staticTransition(Nt.getStatus(t),e,n)}static statusEquals(t,e){return Nt.getStatus(t)===e}static setPending(t){this.setStatus(t,$)}static setDone(t){this.setStatus(t,et)}static isPending(t){return Nt.statusEquals(t,$)}}Nt.stateMachine=st;class gt extends Nt{static getData(t){return c(t.data),t.data}static is(t){return W.isIsolateType(t,V.Test)}static isX(t){c(gt.is(t),Z.EXPECTED_VEST_TEST)}static cast(t){return gt.isX(t),t}static warns(t){return gt.getData(t).severity===ct.Warning}static isOmitted(t){return gt.statusEquals(t,it.OMITTED)}static isUntested(t){return gt.statusEquals(t,it.UNTESTED)}static isFailing(t){return gt.statusEquals(t,it.FAILED)}static isCanceled(t){return gt.statusEquals(t,it.CANCELED)}static isSkipped(t){return gt.statusEquals(t,it.SKIPPED)}static isPassing(t){return gt.statusEquals(t,it.PASSING)}static isWarning(t){return gt.statusEquals(t,it.WARNING)}static hasFailures(t){return gt.isFailing(t)||gt.isWarning(t)}static isNonActionable(t){return gt.isSkipped(t)||gt.isOmitted(t)||gt.isCanceled(t)}static isTested(t){return gt.hasFailures(t)||gt.isPassing(t)}static awaitsResolution(t){return gt.isSkipped(t)||gt.isUntested(t)||gt.isPending(t)}static isAsyncTest(t){return l(gt.getData(t).asyncTest)}static fail(t){gt.setStatus(t,gt.warns(t)?it.WARNING:it.FAILED)}static pass(t){gt.setStatus(t,it.PASSING)}static warn(t){gt.setData(t,(t=>Object.assign(Object.assign({},t),{severity:ct.Warning})))}static setData(t,e){t.data=d(e,gt.getData(t))}static skip(t,e){gt.setStatus(t,it.SKIPPED,e)}static cancel(t){gt.setStatus(t,it.CANCELED),y.abort(t,it.CANCELED)}static omit(t){gt.setStatus(t,it.OMITTED)}static reset(t){gt.setStatus(t,rt)}}function Tt(t,e){return!!e&&!St(t,e)}function St(t,e){return!(!e||t.fieldName!==e)}function pt(t,e){const{groupName:n}=gt.getData(t),{groupName:s,fieldName:i}=gt.getData(e);return St(gt.getData(t),i)&&n===s&&t.key==e.key}function It(t,e){return U.create(V.Focused,f,{focusMode:t,match:a(e).filter(r),matchAll:!0===e})}gt.stateMachine=at,function(t){t[t.ONLY=0]="ONLY",t[t.SKIP=1]="SKIP"}(lt||(lt={}));class Rt{static isSkipFocused(t,e){return(null==t?void 0:t.data.focusMode)===lt.SKIP&&(At(t,e)||!0===t.data.matchAll)}static isOnlyFocused(t,e){return(null==t?void 0:t.data.focusMode)===lt.ONLY&&At(t,e)}static isIsolateFocused(t){return W.isIsolateType(t,V.Focused)}}function mt(t){return It(lt.ONLY,Ot(t))}function Dt(t){return It(lt.SKIP,Ot(t))}function Ot(t){return!1===t?[]:t}function At(t,e){var n,s;return E(null==t?void 0:t.data.match)&&(!e||(null===(s=null===(n=null==t?void 0:t.data.match)||void 0===n?void 0:n.includes(e))||void 0===s||s))}class _t{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0,this.pendingCount=0}}class vt extends _t{constructor(){super(...arguments),this[dt]=[],this[ft]=[],this.groups={},this.tests={},this.valid=null}}dt=ut.ERRORS,ft=ut.WARNINGS;const Ct=s(),ht=s();function Pt(){return G.useXAppData()}function Lt(){return Pt().doneCallbacks()}function Ft(){return Pt().fieldCallbacks()}function Ut(){return Pt().suiteId}function Gt(){Pt().suiteResultCache.invalidate([Ut()]),ht.invalidate([Ut()])}function Wt(){const[,,t]=Lt(),[,,e]=Ft();t(),e()}function yt(t){G.useSetHistoryRoot(t),Gt()}function bt(t,e,n){return n?function(t,e,n){var s;return(null===(s=null==t?void 0:t[n])||void 0===s?void 0:s[e])||[]}(t,e,n):function(t,e){const n={},s=Et(e);for(const i in t)g(t[i][s])&&(n[i]=t[i][e]||[]);return n}(t,e)}function Mt(t){const e={getError:s,getErrors:function(e){return wt(t,ut.ERRORS,e)},getErrorsByGroup:function(e,n){return kt(t,ut.ERRORS,e,n)},getMessage:function(t){return s(t)||n(t)},getWarning:n,getWarnings:function(e){return wt(t,ut.WARNINGS,e)},getWarningsByGroup:function(e,n){return kt(t,ut.WARNINGS,e,n)},hasErrors:function(e){return Vt(t,ot.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return jt(t,ot.ERROR_COUNT,e,n)},hasWarnings:function(e){return Vt(t,ot.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return jt(t,ot.WARN_COUNT,e,n)},isPending:function(e){var n;return T(e?null===(n=t.tests[e])||void 0===n?void 0:n.pendingCount:t.pendingCount,0)},isTested:function(e){var n;return g(null===(n=t.tests[e])||void 0===n?void 0:n.testCount)},isValid:function(e){var n;return Boolean(e?null===(n=t.tests[e])||void 0===n?void 0:n.valid:t.valid)},isValidByGroup:function(e,n){const s=t.groups[e];if(!s)return!1;if(n)return Bt(s,n);for(const t in s)if(!Bt(s,t))return!1;return!0}};return e;function n(e){return Ht(ut.WARNINGS,t,e)}function s(e){return Ht(ut.ERRORS,t,e)}}function wt(t,e,n){return bt(t.tests,e,n)}function kt(t,e,n,s){return bt(t.groups[n],e,s)}function Bt(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function jt(t,e,n,s){var i,r;const a=t.groups[n];if(!a)return!1;if(s)return g(null===(i=a[s])||void 0===i?void 0:i[e]);for(const t in a)if(g(null===(r=a[t])||void 0===r?void 0:r[e]))return!0;return!1}function Vt(t,e,n){var s;const i=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return g(i)}function Ht(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>St(t,n))))||void 0===s?void 0:s.message:i[0]}class Kt{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){const{fieldName:e,message:n,groupName:s}=gt.getData(t);return new Kt(e,n,s)}}class Xt{static hasNoTests(t=Xt.defaultRoot()){return!t||!b.has(t,gt.is)}static someTests(t,e=Xt.defaultRoot()){return!!e&&b.some(e,(e=>(gt.isX(e),t(e))),gt.is)}static everyTest(t,e=Xt.defaultRoot()){return!!e&&b.every(e,(e=>(gt.isX(e),t(e))),gt.is)}static walkTests(t,e=Xt.defaultRoot()){e&&b.walk(e,((e,n)=>{t(gt.cast(e),n)}),gt.is)}static reduceTests(t,e,n=Xt.defaultRoot()){return n?b.reduce(n,((e,n,s)=>t(e,gt.cast(n),s)),e,gt.is):e}static pluckTests(t,e=Xt.defaultRoot()){e&&b.pluck(e,(e=>(gt.isX(e),t(e))),gt.is)}static resetField(t){Xt.walkTests((e=>{St(gt.getData(e),t)&&gt.reset(e)}),Xt.defaultRoot())}static removeTestByFieldName(t,e=Xt.defaultRoot()){Xt.pluckTests((e=>St(gt.getData(e),t)),e)}}Xt.defaultRoot=G.useAvailableRoot;class xt{static useHasPending(t){if(!xt.defaultRoot())return!1;const e=xt.usePreAggs().pending;return!S(e)&&e.some(p.all(null==t||t))}static usePreAggs(){return t=qt,(0,Pt().preAggCache)([Ut()],t);var t}static useHasRemainingWithTestNameMatching(t){return xt.useHasPending(p.any(I(t),p.all(gt.is,(e=>function(t,e){return!e||St(t,e)}(gt.getData(e),t)))))}}function qt(){const t=xt.defaultRoot(),e={pending:[],failures:{errors:{},warnings:{}}};return t?b.reduce(t,((t,e)=>{var n,s;if(Nt.isPending(e)&&t.pending.push(e),gt.is(e)){const i=gt.getData(e).fieldName;gt.isWarning(e)&&(t.failures.warnings[i]=null!==(n=t.failures.warnings[i])&&void 0!==n?n:[],t.failures.warnings[i].push(e)),gt.isFailing(e)&&(t.failures.errors[i]=null!==(s=t.failures.errors[i])&&void 0!==s?s:[],t.failures.errors[i].push(e))}return t}),e):e}xt.defaultRoot=G.useAvailableRoot;const Yt=R((function(t,e){return gt.getData(t).groupName===e}));function Jt(t){return function(t,e){const n=xt.usePreAggs().failures;if(S(n[t]))return!1;if(e)return!S(n[t][e]);return!0}(ut.ERRORS,t)}function zt(t,e,n){return Xt.someTests((s=>!Yt(s,e)&&function(t,e,n){if(!gt.hasFailures(t))return!1;if(Tt(gt.getData(t),n))return!1;if(function(t,e){return m(t===ut.WARNINGS,gt.warns(e))}(e,t))return!1;return!0}(s,t,n)))}function Qt(t){return!!Q(t)||!Xt.hasNoTests()&&(!Jt(t)&&(!function(t){return xt.useHasPending(p.all(gt.is,(e=>!Tt(gt.getData(e),t)),(()=>!Q(t))))}(t)&&function(t){return Xt.everyTest((e=>$t(e,t)))}(t)))}function Zt(t,e){return!!Q(e)||!zt(ut.ERRORS,t,e)&&(!function(t,e){return xt.useHasPending(p.all(gt.is,(e=>!Yt(e,t)),(t=>!Tt(gt.getData(t),e)),(()=>!Q(e))))}(t,e)&&function(t,e){return Xt.everyTest((n=>!!Yt(n,t)||$t(n,e)))}(t,e))}function $t(t,e){return!!Tt(gt.getData(t),e)||(gt.isOmitted(t)||gt.isTested(t)||function(t){const e=G.useAvailableRoot(),{fieldName:n}=gt.getData(t);return H.getOptionalField(e,n).type===K.AUTO&&gt.awaitsResolution(t)}(t))}function te(){const t=Xt.reduceTests(((t,e)=>{const n=gt.getData(e).fieldName;return t.tests[n]=function(t,e){const n=gt.getData(e).fieldName,s=ee(t[n],e);return s.valid=!1!==s.valid&&Qt(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=gt.getData(e);if(!n)return t;t[n]=t[n]||{};const i=t[n];return i[s]=ee(i[s],e),i[s].valid=!1!==i[s].valid&&Zt(n,s),t}(t.groups,e),gt.isOmitted(e)?t:(!1===t.tests[n].valid&&(t.valid=!1),function(t,e){gt.isWarning(t)?(e.warnCount++,e.warnings.push(Kt.fromTestObject(t))):gt.isFailing(t)&&(e.errorCount++,e.errors.push(Kt.fromTestObject(t)));gt.isPending(t)&&e.pendingCount++;gt.isNonActionable(t)||e.testCount++;return e}(e,t))}),new vt);return t.valid=!1!==t.valid&&Qt(),t}function ee(t,e){const{message:n}=gt.getData(e),s=D(t?Object.assign({},t):null,ne);return gt.isNonActionable(e)||(gt.isPending(e)&&s.pendingCount++,gt.isFailing(e)?i(ut.ERRORS):gt.isWarning(e)&&i(ut.WARNINGS),s.testCount++),s;function i(t){const e=Et(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function ne(){return e(new _t,{errors:[],valid:!0,warnings:[]})}function se(){return t=()=>{const t=te(),e=Pt().suiteName;return Object.freeze(ie(t,e))},(0,Pt().suiteResultCache)([Ut()],t);var t}function ie(t,n){return e(t,Mt(t),{suiteName:n})}function re(){const t=ie(new vt);return new Proxy(t,{get:(t,e)=>se()[e]})}function ae(t,e){U.create(V.SkipWhen,(()=>{x.run({skipped:ue()||d(t,re())},e)}))}function ue(){return function(){var t;return null!==(t=x.useX().skipped)&&void 0!==t&&t}()}function oe(t,e){return O(b.findClosest(t,(t=>!!Rt.isIsolateFocused(t)&&Rt.isOnlyFocused(t,e))))}function ce(t){const{fieldName:e}=gt.getData(t);if(ue())return!0;const n=q(),s=function(t){return b.findClosest(t,(e=>{var n;if(!Rt.isIsolateFocused(e))return!1;const{fieldName:s}=gt.getData(t);return(null===(n=e.data.match)||void 0===n?void 0:n.includes(s))||e.data.matchAll}))}(t);if(Rt.isSkipFocused(s))return!0;return!Rt.isOnlyFocused(s)&&(!!oe(t)&&!d(n[e],t))}function le(t){const[,e]=Y();e(t)}function de(t){const[e]=Y();return e===t}function fe(t){return de(X.ONE)?Jt():!!de(X.EAGER)&&Jt(t.fieldName)}function Ee(t,e){U.create(V.OmitWhen,(()=>{x.run({omitted:Ne()||d(t,re())},e)}))}function Ne(){return function(){var t;return null!==(t=x.useX().omitted)&&void 0!==t&&t}()}function ge(t,e=t){const n=gt.getData(t);return fe(n)?(s=t,gt.skip(s),s):(i=n.fieldName,Ne()||Q(i)?function(t){return gt.omit(t),t}(t):ce(t)?function(t){return gt.skip(t,ue()),t}(e):t);var s,i}function Te(t,e){return gt.is(e)&&!pt(e,t)}const Se=[class{static match(t,e){return gt.is(t)&&gt.is(e)}static reconcile(t,e){const n=ge(t,function(t,e){if(M.usesKey(t))return function(t){return gt.cast(w.handleIsolateNodeWithKey(t,(e=>!!gt.isNonActionable(e)||!ce(t))))}(t);if(w.dropNextNodesOnReorder(Te,t,e))return function(t,e){if(M.canReorder(t))return;A(_(Z.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:gt.getData(t).fieldName,prevName:gt.is(e)?gt.getData(e).fieldName:void 0}))}(t,e),t;if(!gt.is(e))return t;if(gt.isOmitted(e))return t;return e}(t,e));return function(t,e,n){t===e&&gt.is(e)&&(i=e)!==(s=n)&&pt(s,i)&&gt.isPending(s)&&gt.cancel(s);var s,i}(n,t,e),n}}];function pe(t){Se.includes(t)||Se.push(t)}function Ie(t,e){var n,s;return null!==(s=null===(n=Se.find((n=>n.match(t,e))))||void 0===n?void 0:n.reconcile(t,e))&&void 0!==s?s:null}function Re(...t){const[e,n]=t.reverse();return U.create(V.Group,(()=>x.run(Object.assign({},n&&{groupName:n}),e)))}function me(t){c(r(t));return q()[t]=!0,{when:function(e){c(e!==t,Z.INCLUDE_SELF);const n=q();n[t]=function(t){return r(e)?oe(t,e):d(e,d(se))}}}}function De(t,e,n){const s=Object.assign(Object.assign({},{severity:ct.Error,status:at.initial()}),{fieldName:e.fieldName,testFn:e.testFn});e.groupName&&(s.groupName=e.groupName),e.message&&(s.message=e.message);return U.create(V.Test,t,s,null!=n?n:null)}function Oe(t){if(ge(t),gt.isUntested(t))return function(t){const e=function(t){return x.run({currentTest:t},(()=>{let e;const{message:n,testFn:s}=gt.getData(t);try{e=s({signal:t.abortController.signal})}catch(s){(function(t,e){return v(t)&&r(e)})(n,s)&&(gt.getData(t).message=s),e=!1}return!1===e&&gt.fail(t),e}))}(t);try{if(l(e))return gt.getData(t).asyncTest=e,function(t){const{asyncTest:e,message:n}=gt.getData(t);if(!l(e))return;const s=G.persist((()=>{Ae(t)})),i=G.persist((e=>{gt.isCanceled(t)||(gt.getData(t).message=r(e)?e:n,gt.fail(t),s())}));return e.then(s,i)}(t);Ae(t)}catch(e){throw new Error(_(Z.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);gt.isNonActionable(t)||A(_(Z.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function Ae(t){gt.pass(t)}function _e(t,...e){const[n,s,i]=h(e[1])?e:[void 0,...e];!function(t,e){const n="test";c(r(t),_(Z.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),c(h(e),_(Z.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,s);const a={fieldName:t,groupName:x.useX().groupName,message:n,testFn:s};return k.useEmit("TEST_RUN_STARTED"),De(Oe,a,i)}const ve=e(_e,{memo:function(t){return function(e,...n){const[s,i,r]=n.reverse();return function(t,e){const n=x.useX().testMemoCache,s=n.get(t);if(C(s))return n(t,e);const[,i]=s;if(gt.isCanceled(i))return n.invalidate(t),n(t,e);return G.useSetNextIsolateChild(i),i}([Ut(),e,G.useCurrentCursor()].concat(s),(function(){return t(e,r,i)}))}}(_e)});function Ce(){return{group:Re,include:me,omitWhen:Ee,only:mt,optional:z,skip:Dt,skipWhen:ae,test:ve}}function he(){const t=G.useAvailableRoot(),e=H.getOptionalFields(t);if(S(e))return;const n=new Set;function s(e){const{fieldName:s}=gt.getData(e);n.has(s)&&(gt.omit(e),H.setOptionalField(t,s,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Xt.walkTests((e=>{if(gt.isPending(e))return;const{fieldName:i}=gt.getData(e);n.has(i)?s(e):function(e){const{fieldName:i}=gt.getData(e),r=H.getOptionalField(t,i);!0===d(r.rule)&&n.add(i);s(e)}(e)})),k.useEmit("DONE_TEST_OMISSION_PASS")}function Pe(){const t=k.useBus();return e("TEST_COMPLETED",(()=>{})),t.on(B.ISOLATE_PENDING,(t=>{gt.is(t)&&gt.setPending(t),Nt.setPending(t)})),t.on(B.ISOLATE_DONE,(e=>{gt.is(e)&&t.emit("TEST_COMPLETED",e),Nt.setDone(e)})),t.on(B.ASYNC_ISOLATE_DONE,(e=>{if(gt.is(e)&&!gt.isCanceled(e)){const{fieldName:t}=gt.getData(e);!function(t){const[e]=Ft();t&&!xt.useHasRemainingWithTestNameMatching(t)&&i(e[t])&&P(e[t])}(t)}xt.useHasPending()||t.emit("ALL_RUNNING_TESTS_FINISHED")})),e("DONE_TEST_OMISSION_PASS",(()=>{})),t.on("ALL_RUNNING_TESTS_FINISHED",(()=>{Xt.someTests(gt.isAsyncTest)&&he(),function(){const[t]=Lt();P(t)}()})),e("RESET_FIELD",(t=>{Xt.resetField(t)})),e("SUITE_RUN_STARTED",(()=>{Wt()})),e("SUITE_CALLBACK_RUN_FINISHED",(()=>{xt.useHasPending()||t.emit("ALL_RUNNING_TESTS_FINISHED"),he()})),e("REMOVE_FIELD",(t=>{Xt.removeTestByFieldName(t)})),e("RESET_SUITE",(()=>{Wt(),G.reset()})),{subscribe:function(...e){const[n,s]=e.reverse();return t.on(null!=s?s:"*",(()=>{n()})).off}};function e(e,n){t.on(e,((...t)=>{Gt(),n(...t)}))}}function Le(){return F({done:G.persist(Fe)},se())}function Fe(...t){const[n,s]=t.reverse(),i=Le();if(function(t,e,n){var s,i;return!!(!h(t)||e&&L(null!==(i=null===(s=n.tests[e])||void 0===s?void 0:s.testCount)&&void 0!==i?i:0,0))}(n,s,i))return i;const r=()=>n(se());return xt.useHasRemainingWithTestNameMatching(s)?(function(t,n){const[,s]=Ft(),[,i]=Lt();n?s((s=>e(s,{[n]:(s[n]||[]).concat(t)}))):i((e=>e.concat(t)))}(r,s),i):(r(),i)}function Ue(...t){const[s,i]=t.reverse();!function(t){c(h(t),Z.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(s);const r=function({suiteName:t,VestReconciler:e}){const s={doneCallbacks:n.createTinyState((()=>[])),fieldCallbacks:n.createTinyState((()=>({}))),preAggCache:ht,suiteId:N(),suiteName:t,suiteResultCache:Ct};return G.createRef(e,s)}({suiteName:i,VestReconciler:Ie});function a(...t){return x.run({suiteParams:t},(()=>{return k.useEmit("SUITE_RUN_STARTED"),e=function(t,...e){const n=k.useEmit();return()=>(t(...e),n("SUITE_CALLBACK_RUN_FINISHED"),Le())}(s,...t),U.create(V.Suite,e,{optional:{}});var e})).output}const u=Ge(...t);return G.Run(r,(()=>{const t=Pe();return e(G.persist(a),Object.assign(Object.assign({dump:G.persist((()=>G.useAvailableRoot())),get:G.persist(se),remove:k.usePrepareEmitter("REMOVE_FIELD"),reset:k.usePrepareEmitter("RESET_SUITE"),resetField:k.usePrepareEmitter("RESET_FIELD"),resume:G.persist(yt),runStatic:(...t)=>u(...t),subscribe:t.subscribe},(n=G.persist(se),{getError:(...t)=>n().getError(...t),getErrors:(...t)=>n().getErrors(...t),getErrorsByGroup:(...t)=>n().getErrorsByGroup(...t),getMessage:(...t)=>n().getMessage(...t),getWarning:(...t)=>n().getWarning(...t),getWarnings:(...t)=>n().getWarnings(...t),getWarningsByGroup:(...t)=>n().getWarningsByGroup(...t),hasErrors:(...t)=>n().hasErrors(...t),hasErrorsByGroup:(...t)=>n().hasErrorsByGroup(...t),hasWarnings:(...t)=>n().hasWarnings(...t),hasWarningsByGroup:(...t)=>n().hasWarningsByGroup(...t),isPending:(...t)=>n().isPending(...t),isTested:(...t)=>n().isTested(...t),isValid:(...t)=>n().isValid(...t),isValidByGroup:(...t)=>n().isValidByGroup(...t)})),Ce()));var n}))}function Ge(...t){return e(((...n)=>{const s=Ue(...t),i=s(...n);return e(new Promise((t=>{i.done((e=>{t(r(e))}))})),r(i));function r(t){return e({dump:s.dump},t)}}),Object.assign({},Ce()))}function We(t,e){c(h(e),Z.EACH_CALLBACK_MUST_BE_A_FUNCTION),function(t){U.create(V.Each,t,{allowReorder:!0})}((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}const ye=Z.WARN_MUST_BE_CALLED_FROM_TEST;function be(){const t=(e=Z.HOOK_CALLED_OUTSIDE,x.useX(e).currentTest);var e;c(t,ye),gt.warn(t)}export{X as Modes,Ue as create,We as each,Re as group,me as include,le as mode,Ee as omitWhen,mt as only,z as optional,pe as registerReconciler,Dt as skip,ae as skipWhen,Ge as staticSuite,Mt as suiteSelectors,ve as test,be as warn};
2
2
  //# sourceMappingURL=vest.production.js.map