UNPKG

vest

Version:

Declarative Form Validations Framework

3 lines (2 loc) 23.7 kB
"use strict";var t=require("n4s"),e=require("vest-utils"),n=require("vestjs-runtime"),s=require("context");const i={Each:"Each",Focused:"Focused",Group:"Group",OmitWhen:"OmitWhen",SkipWhen:"SkipWhen",Suite:"Suite",Test:"Test"};class r{static setOptionalField(t,n,s){const i=t.data.optional,r=i[n];e.assign(i,{[n]:e.assign({},r,s(r))})}static getOptionalField(t,e){var n;return null!==(n=r.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 a,u;!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(a||(a={})),exports.Modes=void 0,(u=exports.Modes||(exports.Modes={})).EAGER="EAGER",u.ALL="ALL",u.ONE="ONE";const o=s.createCascade(((t,n)=>n?null:e.assign({inclusion:{},mode:e.tinyState.createTinyState(exports.Modes.EAGER),suiteParams:[],testMemoCache:d},t)));function c(){return o.useX().inclusion}function l(){return o.useX().mode()}const d=e.cache(10);function E(s){var i;const u=n.VestRuntime.useAvailableRoot(),c=o.useX().suiteParams,l=null!==(i=null==c?void 0:c[0])&&void 0!==i?i:{};if(e.isArray(s)||e.isStringValue(s))e.asArray(s).forEach((n=>{r.setOptionalField(u,n,(()=>({type:a.AUTO,applied:!!e.hasOwnProperty(l,n)&&t.enforce.isBlank().test(null==l?void 0:l[n]),rule:null})))}));else for(const e in s){const n=s[e];r.setOptionalField(u,e,(()=>({type:a.CUSTOM_LOGIC,rule:n,applied:t.enforce.isBlank().test(n)||!0===n})))}}function f(t){var e,s;if(!t)return!1;const i=n.VestRuntime.useAvailableRoot();return null!==(s=null===(e=r.getOptionalField(i,t))||void 0===e?void 0:e.applied)&&void 0!==s&&s}var g;!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."}(g||(g={}));const N="PENDING",T="INITIAL",p="DONE",S={[N]:N,[T]:T,[p]:p},R={initial:S.INITIAL,states:{[S.DONE]:{},[S.INITIAL]:{[S.PENDING]:S.PENDING,[S.DONE]:S.DONE},[S.PENDING]:{[S.DONE]:S.DONE}}},m=e.StateMachine(R),I={[N]:N,CANCELED:"CANCELED",FAILED:"FAILED",OMITTED:"OMITTED",PASSING:"PASSING",SKIPPED:"SKIPPED",UNTESTED:"UNTESTED",WARNING:"WARNING"},v="RESET",D={initial:I.UNTESTED,states:{"*":{[I.OMITTED]:I.OMITTED,[v]:I.UNTESTED},[I.UNTESTED]:{[I.CANCELED]:I.CANCELED,[I.FAILED]:I.FAILED,[I.PASSING]:I.PASSING,[I.PENDING]:I.PENDING,[I.SKIPPED]:I.SKIPPED,[I.WARNING]:I.WARNING},[I.PENDING]:{[I.CANCELED]:I.CANCELED,[I.FAILED]:I.FAILED,[I.PASSING]:I.PASSING,[I.SKIPPED]:[I.SKIPPED,t=>!0===t],[I.WARNING]:I.WARNING},[I.SKIPPED]:{},[I.FAILED]:{},[I.WARNING]:{},[I.PASSING]:{},[I.CANCELED]:{},[I.OMITTED]:{}}},O=e.StateMachine(D);var A,_,h,C,P,F;function L(t){return t===A.ERRORS?_.ERROR_COUNT:_.WARN_COUNT}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(A||(A={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(_||(_={})),function(t){t.Error="error",t.Warning="warning"}(h||(h={}));class y{static getStatus(t){var e;return null!==(e=t.status)&&void 0!==e?e:T}static setStatus(t,e,n){t.status=this.stateMachine.staticTransition(y.getStatus(t),e,n)}static statusEquals(t,e){return y.getStatus(t)===e}static setPending(t){this.setStatus(t,N)}static setDone(t){this.setStatus(t,p)}static isPending(t){return y.statusEquals(t,N)}}y.stateMachine=m;class W extends y{static getData(t){return e.invariant(t.data),t.data}static is(t){return n.IsolateSelectors.isIsolateType(t,i.Test)}static isX(t){e.invariant(W.is(t),g.EXPECTED_VEST_TEST)}static cast(t){return W.isX(t),t}static warns(t){return W.getData(t).severity===h.Warning}static isOmitted(t){return W.statusEquals(t,I.OMITTED)}static isUntested(t){return W.statusEquals(t,I.UNTESTED)}static isFailing(t){return W.statusEquals(t,I.FAILED)}static isCanceled(t){return W.statusEquals(t,I.CANCELED)}static isSkipped(t){return W.statusEquals(t,I.SKIPPED)}static isPassing(t){return W.statusEquals(t,I.PASSING)}static isWarning(t){return W.statusEquals(t,I.WARNING)}static hasFailures(t){return W.isFailing(t)||W.isWarning(t)}static isNonActionable(t){return W.isSkipped(t)||W.isOmitted(t)||W.isCanceled(t)}static isTested(t){return W.hasFailures(t)||W.isPassing(t)}static awaitsResolution(t){return W.isSkipped(t)||W.isUntested(t)||W.isPending(t)}static isAsyncTest(t){return e.isPromise(W.getData(t).asyncTest)}static fail(t){W.setStatus(t,W.warns(t)?I.WARNING:I.FAILED)}static pass(t){W.setStatus(t,I.PASSING)}static warn(t){W.setData(t,(t=>Object.assign(Object.assign({},t),{severity:h.Warning})))}static setData(t,n){t.data=e.optionalFunctionValue(n,W.getData(t))}static skip(t,e){W.setStatus(t,I.SKIPPED,e)}static cancel(t){W.setStatus(t,I.CANCELED),n.IsolateMutator.abort(t,I.CANCELED)}static omit(t){W.setStatus(t,I.OMITTED)}static reset(t){W.setStatus(t,v)}}function U(t,e){return!!e&&!G(t,e)}function G(t,e){return!(!e||t.fieldName!==e)}function b(t,e){const{groupName:n}=W.getData(t),{groupName:s,fieldName:i}=W.getData(e);return G(W.getData(t),i)&&n===s&&t.key==e.key}function V(t,s){return n.Isolate.create(i.Focused,e.noop,{focusMode:t,match:e.asArray(s).filter(e.isStringValue),matchAll:!0===s})}W.stateMachine=O,function(t){t[t.ONLY=0]="ONLY",t[t.SKIP=1]="SKIP"}(C||(C={}));class M{static isSkipFocused(t,e){return(null==t?void 0:t.data.focusMode)===C.SKIP&&(B(t,e)||!0===t.data.matchAll)}static isOnlyFocused(t,e){return(null==t?void 0:t.data.focusMode)===C.ONLY&&B(t,e)}static isIsolateFocused(t){return n.IsolateSelectors.isIsolateType(t,i.Focused)}}function k(t){return V(C.ONLY,x(t))}function w(t){return V(C.SKIP,x(t))}function x(t){return!1===t?[]:t}function B(t,n){var s,i;return e.isNotEmpty(null==t?void 0:t.data.match)&&(!n||(null===(i=null===(s=null==t?void 0:t.data.match)||void 0===s?void 0:s.includes(n))||void 0===i||i))}class j{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0,this.pendingCount=0}}class H extends j{constructor(){super(...arguments),this[P]=[],this[F]=[],this.groups={},this.tests={},this.valid=null}}P=A.ERRORS,F=A.WARNINGS;const K=e.cache(),X=e.cache();function q(){return n.VestRuntime.useXAppData()}function Y(){return q().doneCallbacks()}function z(){return q().fieldCallbacks()}function J(){return q().suiteId}function Q(){q().suiteResultCache.invalidate([J()]),X.invalidate([J()])}function Z(){const[,,t]=Y(),[,,e]=z();t(),e()}function $(t){n.VestRuntime.useSetHistoryRoot(t),Q()}function tt(t,n,s){return s?function(t,e,n){var s;return(null===(s=null==t?void 0:t[n])||void 0===s?void 0:s[e])||[]}(t,n,s):function(t,n){const s={},i=L(n);for(const r in t)e.isPositive(t[r][i])&&(s[r]=t[r][n]||[]);return s}(t,n)}function et(t){const n={getError:i,getErrors:function(e){return nt(t,A.ERRORS,e)},getErrorsByGroup:function(e,n){return st(t,A.ERRORS,e,n)},getMessage:function(t){return i(t)||s(t)},getWarning:s,getWarnings:function(e){return nt(t,A.WARNINGS,e)},getWarningsByGroup:function(e,n){return st(t,A.WARNINGS,e,n)},hasErrors:function(e){return at(t,_.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return rt(t,_.ERROR_COUNT,e,n)},hasWarnings:function(e){return at(t,_.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return rt(t,_.WARN_COUNT,e,n)},isPending:function(n){var s;return n?e.greaterThan(null===(s=t.tests[n])||void 0===s?void 0:s.pendingCount,0):e.greaterThan(t.pendingCount,0)},isTested:function(n){var s;return e.isPositive(null===(s=t.tests[n])||void 0===s?void 0:s.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 it(s,n);for(const t in s)if(!it(s,t))return!1;return!0}};return n;function s(e){return ut(A.WARNINGS,t,e)}function i(e){return ut(A.ERRORS,t,e)}}function nt(t,e,n){return tt(t.tests,e,n)}function st(t,e,n,s){return tt(t.groups[n],e,s)}function it(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function rt(t,n,s,i){var r,a;const u=t.groups[s];if(!u)return!1;if(i)return e.isPositive(null===(r=u[i])||void 0===r?void 0:r[n]);for(const t in u)if(e.isPositive(null===(a=u[t])||void 0===a?void 0:a[n]))return!0;return!1}function at(t,n,s){var i;const r=s?null===(i=t.tests[s])||void 0===i?void 0:i[n]:t[n]||0;return e.isPositive(r)}function ut(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>G(t,n))))||void 0===s?void 0:s.message:i[0]}class ot{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){const{fieldName:e,message:n,groupName:s}=W.getData(t);return new ot(e,n,s)}}class ct{static hasNoTests(t=ct.defaultRoot()){return!t||!n.Walker.has(t,W.is)}static someTests(t,e=ct.defaultRoot()){return!!e&&n.Walker.some(e,(e=>(W.isX(e),t(e))),W.is)}static everyTest(t,e=ct.defaultRoot()){return!!e&&n.Walker.every(e,(e=>(W.isX(e),t(e))),W.is)}static walkTests(t,e=ct.defaultRoot()){e&&n.Walker.walk(e,((e,n)=>{t(W.cast(e),n)}),W.is)}static reduceTests(t,e,s=ct.defaultRoot()){return s?n.Walker.reduce(s,((e,n,s)=>t(e,W.cast(n),s)),e,W.is):e}static pluckTests(t,e=ct.defaultRoot()){e&&n.Walker.pluck(e,(e=>(W.isX(e),t(e))),W.is)}static resetField(t){ct.walkTests((e=>{G(W.getData(e),t)&&W.reset(e)}),ct.defaultRoot())}static removeTestByFieldName(t,e=ct.defaultRoot()){ct.pluckTests((e=>G(W.getData(e),t)),e)}}ct.defaultRoot=n.VestRuntime.useAvailableRoot;class lt{static useHasPending(t){if(!lt.defaultRoot())return!1;const n=lt.usePreAggs().pending;return!e.isEmpty(n)&&n.some(e.Predicates.all(null==t||t))}static usePreAggs(){return t=dt,(0,q().preAggCache)([J()],t);var t}static useHasRemainingWithTestNameMatching(t){return lt.useHasPending(e.Predicates.any(e.isNullish(t),e.Predicates.all(W.is,(e=>function(t,e){return!e||G(t,e)}(W.getData(e),t)))))}}function dt(){const t=lt.defaultRoot(),e={pending:[],failures:{errors:{},warnings:{}}};return t?n.Walker.reduce(t,((t,e)=>{var n,s;if(y.isPending(e)&&t.pending.push(e),W.is(e)){const i=W.getData(e).fieldName;W.isWarning(e)&&(t.failures.warnings[i]=null!==(n=t.failures.warnings[i])&&void 0!==n?n:[],t.failures.warnings[i].push(e)),W.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}lt.defaultRoot=n.VestRuntime.useAvailableRoot;const Et=e.bindNot((function(t,e){return W.getData(t).groupName===e}));function ft(t){return function(t,n){const s=lt.usePreAggs().failures;if(e.isEmpty(s[t]))return!1;if(n)return!e.isEmpty(s[t][n]);return!0}(A.ERRORS,t)}function gt(t,n,s){return ct.someTests((i=>!Et(i,n)&&function(t,n,s){if(!W.hasFailures(t))return!1;if(U(W.getData(t),s))return!1;if(function(t,n){return e.either(t===A.WARNINGS,W.warns(n))}(n,t))return!1;return!0}(i,t,s)))}function Nt(t){return!!f(t)||!ct.hasNoTests()&&(!ft(t)&&(!function(t){return lt.useHasPending(e.Predicates.all(W.is,(e=>!U(W.getData(e),t)),(()=>!f(t))))}(t)&&function(t){return ct.everyTest((e=>pt(e,t)))}(t)))}function Tt(t,n){return!!f(n)||!gt(A.ERRORS,t,n)&&(!function(t,n){return lt.useHasPending(e.Predicates.all(W.is,(e=>!Et(e,t)),(t=>!U(W.getData(t),n)),(()=>!f(n))))}(t,n)&&function(t,e){return ct.everyTest((n=>!!Et(n,t)||pt(n,e)))}(t,n))}function pt(t,e){return!!U(W.getData(t),e)||(W.isOmitted(t)||W.isTested(t)||function(t){const e=n.VestRuntime.useAvailableRoot(),{fieldName:s}=W.getData(t);return r.getOptionalField(e,s).type===a.AUTO&&W.awaitsResolution(t)}(t))}function St(){const t=ct.reduceTests(((t,e)=>{const n=W.getData(e).fieldName;return t.tests[n]=function(t,e){const n=W.getData(e).fieldName,s=Rt(t[n],e);return s.valid=!1!==s.valid&&Nt(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=W.getData(e);if(!n)return t;t[n]=t[n]||{};const i=t[n];return i[s]=Rt(i[s],e),i[s].valid=!1!==i[s].valid&&Tt(n,s),t}(t.groups,e),W.isOmitted(e)?t:(!1===t.tests[n].valid&&(t.valid=!1),function(t,e){W.isWarning(t)?(e.warnCount++,e.warnings.push(ot.fromTestObject(t))):W.isFailing(t)&&(e.errorCount++,e.errors.push(ot.fromTestObject(t)));W.isPending(t)&&e.pendingCount++;It(t)&&e.testCount++;return e}(e,t))}),new H);return t.valid=!1!==t.valid&&Nt(),t}function Rt(t,n){const{message:s}=W.getData(n),i=e.defaultTo(t?Object.assign({},t):null,mt);return W.isNonActionable(n)||(W.isPending(n)&&i.pendingCount++,W.isFailing(n)?r(A.ERRORS):W.isWarning(n)&&r(A.WARNINGS),It(n)&&i.testCount++),i;function r(t){const e=L(t);i[e]++,s&&(i[t]=(i[t]||[]).concat(s))}}function mt(){return e.assign(new j,{errors:[],valid:!0,warnings:[]})}function It(t){return W.isTested(t)||W.isPending(t)}function vt(){return t=()=>{const t=St(),e=q().suiteName;return Object.freeze(Dt(t,e))},(0,q().suiteResultCache)([J()],t);var t}function Dt(t,n){return e.assign(t,et(t),{suiteName:n})}function Ot(){const t=Dt(new H);return new Proxy(t,{get:(t,e)=>vt()[e]})}function At(t,s){n.Isolate.create(i.SkipWhen,(()=>{o.run({skipped:_t()||e.optionalFunctionValue(t,Ot())},s)}))}function _t(){return function(){var t;return null!==(t=o.useX().skipped)&&void 0!==t&&t}()}function ht(t,s){return e.isNotNullish(n.Walker.findClosest(t,(t=>!!M.isIsolateFocused(t)&&M.isOnlyFocused(t,s))))}function Ct(t){const{fieldName:s}=W.getData(t);if(_t())return!0;const i=c(),r=function(t){return n.Walker.findClosest(t,(e=>{var n;if(!M.isIsolateFocused(e))return!1;const{fieldName:s}=W.getData(t);return(null===(n=e.data.match)||void 0===n?void 0:n.includes(s))||e.data.matchAll}))}(t);if(M.isSkipFocused(r))return!0;return!M.isOnlyFocused(r)&&(!!ht(t)&&!e.optionalFunctionValue(i[s],t))}function Pt(t){const[e]=l();return e===t}function Ft(t){return Pt(exports.Modes.ONE)?ft():!!Pt(exports.Modes.EAGER)&&ft(t.fieldName)}function Lt(t,s){n.Isolate.create(i.OmitWhen,(()=>{o.run({omitted:yt()||e.optionalFunctionValue(t,Ot())},s)}))}function yt(){return function(){var t;return null!==(t=o.useX().omitted)&&void 0!==t&&t}()}function Wt(t,e=t){const n=W.getData(t);return Ft(n)?(s=t,W.skip(s),s):(i=n.fieldName,yt()||f(i)?function(t){return W.omit(t),t}(t):Ct(t)?function(t){return W.skip(t,_t()),t}(e):t);var s,i}function Ut(t,e){return W.is(e)&&!b(e,t)}const Gt=[class{static match(t,e){return W.is(t)&&W.is(e)}static reconcile(t,s){const i=Wt(t,function(t,s){if(n.IsolateInspector.usesKey(t))return function(t){return W.cast(n.Reconciler.handleIsolateNodeWithKey(t,(e=>!!W.isNonActionable(e)||!Ct(t))))}(t);if(n.Reconciler.dropNextNodesOnReorder(Ut,t,s))return function(t,s){if(n.IsolateInspector.canReorder(t))return;e.deferThrow(e.text(g.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:W.getData(t).fieldName,prevName:W.is(s)?W.getData(s).fieldName:void 0}))}(t,s),t;if(!W.is(s))return t;if(W.isOmitted(s))return t;return s}(t,s));return function(t,e,n){t===e&&W.is(e)&&(i=e)!==(s=n)&&b(s,i)&&W.isPending(s)&&W.cancel(s);var s,i}(i,t,s),i}}];function bt(t,e){var n,s;return null!==(s=null===(n=Gt.find((n=>n.match(t,e))))||void 0===n?void 0:n.reconcile(t,e))&&void 0!==s?s:null}function Vt(...t){const[e,s]=t.reverse();return n.Isolate.create(i.Group,(()=>o.run(Object.assign({},s&&{groupName:s}),e)))}function Mt(t){e.invariant(e.isStringValue(t));return c()[t]=!0,{when:function(n){e.invariant(n!==t,g.INCLUDE_SELF);const s=c();s[t]=function(t){return e.isStringValue(n)?ht(t,n):e.optionalFunctionValue(n,e.optionalFunctionValue(vt))}}}}function kt(t,e,s){const r=Object.assign(Object.assign({},{severity:h.Error,status:O.initial()}),{fieldName:e.fieldName,testFn:e.testFn});e.groupName&&(r.groupName=e.groupName),e.message&&(r.message=e.message);return n.Isolate.create(i.Test,t,r,null!=s?s:null)}function wt(t){if(Wt(t),W.isUntested(t))return function(t){const s=function(t){return o.run({currentTest:t},(()=>{let n;const{message:s,testFn:i}=W.getData(t);try{n=i({signal:t.abortController.signal})}catch(i){(function(t,n){return e.isUndefined(t)&&e.isStringValue(n)})(s,i)&&(W.getData(t).message=i),n=!1}return!1===n&&W.fail(t),n}))}(t);try{if(e.isPromise(s))return W.getData(t).asyncTest=s,function(t){const{asyncTest:s,message:i}=W.getData(t);if(!e.isPromise(s))return;const r=n.VestRuntime.persist((()=>{xt(t)})),a=n.VestRuntime.persist((n=>{W.isCanceled(t)||(W.getData(t).message=e.isStringValue(n)?n:i,W.fail(t),r())}));return s.then(r,a)}(t);xt(t)}catch(n){throw new Error(e.text(g.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:n}))}}(t);W.isNonActionable(t)||e.deferThrow(e.text(g.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function xt(t){W.pass(t)}function Bt(t,...s){const[i,r,a]=e.isFunction(s[1])?s:[void 0,...s];!function(t,n){const s="test";e.invariant(e.isStringValue(t),e.text(g.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"fieldName",expected:"string"})),e.invariant(e.isFunction(n),e.text(g.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"callback",expected:"function"}))}(t,r);const u={fieldName:t,groupName:o.useX().groupName,message:i,testFn:r};return n.Bus.useEmit("TEST_RUN_STARTED"),kt(wt,u,a)}const jt=e.assign(Bt,{memo:function(t){return function(s,...i){const[r,a,u]=i.reverse();return function(t,s){const i=o.useX().testMemoCache,r=i.get(t);if(e.isNull(r))return i(t,s);const[,a]=r;if(W.isCanceled(a))return i.invalidate(t),i(t,s);return n.VestRuntime.useSetNextIsolateChild(a),a}([J(),s,n.VestRuntime.useCurrentCursor()].concat(r),(function(){return t(s,u,a)}))}}(Bt)});function Ht(){return{group:Vt,include:Mt,omitWhen:Lt,only:k,optional:E,skip:w,skipWhen:At,test:jt}}function Kt(){const t=n.VestRuntime.useAvailableRoot(),s=r.getOptionalFields(t);if(e.isEmpty(s))return;const i=new Set;function a(e){const{fieldName:n}=W.getData(e);i.has(n)&&(W.omit(e),r.setOptionalField(t,n,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}ct.walkTests((n=>{if(W.isPending(n))return;const{fieldName:s}=W.getData(n);i.has(s)?a(n):function(n){const{fieldName:s}=W.getData(n),u=r.getOptionalField(t,s);!0===e.optionalFunctionValue(u.rule)&&i.add(s);a(n)}(n)})),n.Bus.useEmit("DONE_TEST_OMISSION_PASS")}function Xt(){const t=n.Bus.useBus();return s("TEST_COMPLETED",(()=>{})),s("TEST_RUN_STARTED",(()=>{})),t.on(n.RuntimeEvents.ISOLATE_PENDING,(t=>{W.is(t)&&W.setPending(t),y.setPending(t)})),t.on(n.RuntimeEvents.ISOLATE_DONE,(e=>{W.is(e)&&t.emit("TEST_COMPLETED",e),y.setDone(e)})),t.on(n.RuntimeEvents.ASYNC_ISOLATE_DONE,(n=>{if(W.is(n)&&!W.isCanceled(n)){const{fieldName:t}=W.getData(n);!function(t){const[n]=z();t&&!lt.useHasRemainingWithTestNameMatching(t)&&e.isArray(n[t])&&e.callEach(n[t])}(t)}lt.useHasPending()||t.emit("ALL_RUNNING_TESTS_FINISHED")})),s("DONE_TEST_OMISSION_PASS",(()=>{})),t.on("ALL_RUNNING_TESTS_FINISHED",(()=>{ct.someTests(W.isAsyncTest)&&Kt(),function(){const[t]=Y();e.callEach(t)}()})),s("RESET_FIELD",(t=>{ct.resetField(t)})),s("SUITE_RUN_STARTED",(()=>{Z()})),s("SUITE_CALLBACK_RUN_FINISHED",(()=>{lt.useHasPending()||t.emit("ALL_RUNNING_TESTS_FINISHED"),Kt()})),s("REMOVE_FIELD",(t=>{ct.removeTestByFieldName(t)})),s("RESET_SUITE",(()=>{Z(),n.VestRuntime.reset()})),{subscribe:function(...e){const[n,s]=e.reverse();return t.on(null!=s?s:"*",(()=>{n()})).off}};function s(e,n){t.on(e,((...t)=>{Q(),n(...t)}))}}function qt(){return e.freezeAssign({done:n.VestRuntime.persist(Yt)},vt())}function Yt(...t){const[n,s]=t.reverse(),i=qt();if(function(t,n,s){var i,r;return!!(!e.isFunction(t)||n&&e.numberEquals(null!==(r=null===(i=s.tests[n])||void 0===i?void 0:i.testCount)&&void 0!==r?r:0,0))}(n,s,i))return i;const r=()=>n(vt());return lt.useHasRemainingWithTestNameMatching(s)?(function(t,n){const[,s]=z(),[,i]=Y();n?s((s=>e.assign(s,{[n]:(s[n]||[]).concat(t)}))):i((e=>e.concat(t)))}(r,s),i):(r(),i)}function zt(...t){const[s,r]=e.asArray(t).reverse();!function(t){e.invariant(e.isFunction(t),g.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(s);const a=function({suiteName:t,VestReconciler:s}){const i={doneCallbacks:e.tinyState.createTinyState((()=>[])),fieldCallbacks:e.tinyState.createTinyState((()=>({}))),preAggCache:X,suiteId:e.seq(),suiteName:t,suiteResultCache:K};return n.VestRuntime.createRef(s,i)}({suiteName:r,VestReconciler:bt});function u(...t){return o.run({suiteParams:t},(()=>{return n.Bus.useEmit("SUITE_RUN_STARTED"),e=function(t,...e){const s=n.Bus.useEmit();return()=>(t(...e),s("SUITE_CALLBACK_RUN_FINISHED"),qt())}(s,...t),n.Isolate.create(i.Suite,e,{optional:{}});var e})).output}const c=Jt(...t);return n.VestRuntime.Run(a,(()=>{const t=Xt();return e.assign(n.VestRuntime.persist(u),Object.assign(Object.assign({dump:n.VestRuntime.persist((()=>n.VestRuntime.useAvailableRoot())),get:n.VestRuntime.persist(vt),remove:n.Bus.usePrepareEmitter("REMOVE_FIELD"),reset:n.Bus.usePrepareEmitter("RESET_SUITE"),resetField:n.Bus.usePrepareEmitter("RESET_FIELD"),resume:n.VestRuntime.persist($),runStatic:(...t)=>c(...t),subscribe:t.subscribe},(s=n.VestRuntime.persist(vt),{getError:(...t)=>s().getError(...t),getErrors:(...t)=>s().getErrors(...t),getErrorsByGroup:(...t)=>s().getErrorsByGroup(...t),getMessage:(...t)=>s().getMessage(...t),getWarning:(...t)=>s().getWarning(...t),getWarnings:(...t)=>s().getWarnings(...t),getWarningsByGroup:(...t)=>s().getWarningsByGroup(...t),hasErrors:(...t)=>s().hasErrors(...t),hasErrorsByGroup:(...t)=>s().hasErrorsByGroup(...t),hasWarnings:(...t)=>s().hasWarnings(...t),hasWarningsByGroup:(...t)=>s().hasWarningsByGroup(...t),isPending:(...t)=>s().isPending(...t),isTested:(...t)=>s().isTested(...t),isValid:(...t)=>s().isValid(...t),isValidByGroup:(...t)=>s().isValidByGroup(...t)})),Ht()));var s}))}function Jt(...t){return e.assign(((...n)=>{const s=zt(...t),i=s(...n);return e.assign(new Promise((t=>{i.done((e=>{t(r(e))}))})),r(i));function r(t){return e.assign({dump:s.dump},t)}}),Object.assign({},Ht()))}const Qt=g.WARN_MUST_BE_CALLED_FROM_TEST;Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return t.enforce}}),exports.create=zt,exports.each=function(t,s){e.invariant(e.isFunction(s),g.EACH_CALLBACK_MUST_BE_A_FUNCTION),function(t){n.Isolate.create(i.Each,t,{allowReorder:!0})}((()=>{t.forEach(((t,e)=>{s(t,e)}))}))},exports.group=Vt,exports.include=Mt,exports.mode=function(t){const[,e]=l();e(t)},exports.omitWhen=Lt,exports.only=k,exports.optional=E,exports.registerReconciler=function(t){Gt.includes(t)||Gt.push(t)},exports.skip=w,exports.skipWhen=At,exports.staticSuite=Jt,exports.suiteSelectors=et,exports.test=jt,exports.warn=function(){const t=(n=g.HOOK_CALLED_OUTSIDE,o.useX(n).currentTest);var n;e.invariant(t,Qt),W.warn(t)}; //# sourceMappingURL=vest.production.js.map