vest 5.0.0-dev-ec989a → 5.0.0-dev-ae6b14

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 +1 @@
1
- "use strict";var t,e,n=require("n4s"),s=require("vest-runtime"),i=require("vest-utils"),r=require("context");function o(e){const n=s.VestRuntime.useAvailableRoot();if(i.isArray(e)||i.isStringValue(e))i.asArray(e).forEach((e=>{n.setOptionalField(e,(()=>({type:t.AUTO,applied:!1,rule:null})))}));else for(const s in e){const i=e[s];n.setOptionalField(s,(()=>({type:t.CUSTOM_LOGIC,rule:i,applied:!0===i})))}}function u(t){var e,n,i;return!!t&&(null!==(i=null===(n=null===(e=s.VestRuntime.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t))||void 0===n?void 0:n.applied)&&void 0!==i&&i)}!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(t||(t={})),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"}(e||(e={}));class a extends s.Isolate{constructor(){super(...arguments),this.optional={}}setOptionalField(t,e){const n=this.optional,s=n[t];Object.assign(n,{[t]:Object.assign({},s,e(s))})}getOptionalField(t){var e;return null!==(e=this.optional[t])&&void 0!==e?e:{}}getOptionalFields(){return this.optional}}const c=i.cache();function l(){return s.VestRuntime.useXAppData()}function E(){return l().doneCallbacks()}function f(){return l().fieldCallbacks()}function N(){return l().suiteId}function d(){const[,,t]=E(),[,,e]=f();t(),e()}var T,R,S,p,I,m;function _(t){return t===T.ERRORS?R.ERROR_COUNT:R.WARN_COUNT}function g(t,e){return!!e&&!h(t,e)}function h(t,e){return!(!e||t.fieldName!==e)}function O(t,e){return h(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(T||(T={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(R||(R={})),function(t){t.Error="error",t.Warning="warning"}(S||(S={})),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}."}(p||(p={}));class A{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class v extends A{constructor(){super(...arguments),this[I]=[],this[m]=[],this.groups={},this.tests={},this.valid=!1}}I=T.ERRORS,m=T.WARNINGS;class D{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new D(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const C=i.bindNot((function(t,e){return t.groupName===e}));function P(t){return!!u(t)||!ot.hasNoTests()&&(!ut(t)&&(!function(t){return ot.someIncompleteTests((e=>!g(e,t)&&!u(t)))}(t)&&function(t){return ot.everyTest((e=>U(e,t)))}(t)))}function F(t,e){return!!u(e)||!function(t,e,n){return ot.someTests((s=>!C(s,e)&&at(s,t,n)))}(T.ERRORS,t,e)&&(!function(t,e){return ot.someIncompleteTests((n=>!C(n,t)&&(!g(n,e)&&!u(e))))}(t,e)&&function(t,e){return ot.everyTest((n=>!!C(n,t)||U(n,e)))}(t,e))}function U(e,n){return!!g(e,n)||(e.isOmitted()||e.isTested()||function(e){var n;return(null===(n=s.VestRuntime.useAvailableRoot())||void 0===n?void 0:n.getOptionalField(e.fieldName).type)===t.AUTO&&e.awaitsResolution()}(e))}function L(){const t=new v;return ot.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=G(s[n],e),s[n].valid=!1!==s[n].valid&&P(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=e;if(!n)return t;const i=Object.assign({},t);return i[n]=i[n]||{},i[n][s]=G(i[n][s],e),i[n][s].valid=!1!==i[n][s].valid&&F(n,s),i}(t.groups,e),t.errors=y(T.ERRORS,t.errors,e),t.warnings=y(T.WARNINGS,t.warnings,e)})),t.valid=P(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount;return t}(t)}function y(t,e,n){if(n.isOmitted())return e;return(t===T.WARNINGS?n.isWarning():n.isFailing())?e.concat(D.fromTestObject(n)):e}function G(t,e){const{message:n}=e,s=i.defaultTo(t?Object.assign({},t):null,W);return e.isNonActionable()||(s.testCount++,e.isFailing()?r(T.ERRORS):e.isWarning()&&r(T.WARNINGS)),s;function r(t){const e=_(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function W(){return i.assign(new A,{errors:[],warnings:[],valid:!0})}function V(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=_(e);for(const r in t)i.isPositive(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function b(t){const e={getError:function(e){return K(T.ERRORS,t,e)},getErrors:function(e){return M(t,T.ERRORS,e)},getErrorsByGroup:function(e,n){return x(t,T.ERRORS,e,n)},getWarning:function(e){return K(T.WARNINGS,t,e)},getWarnings:function(e){return M(t,T.WARNINGS,e)},getWarningsByGroup:function(e,n){return x(t,T.WARNINGS,e,n)},hasErrors:function(e){return B(t,R.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return k(t,R.ERROR_COUNT,e,n)},hasWarnings:function(e){return B(t,R.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return k(t,R.WARN_COUNT,e,n)},isValid:function(e){var n;return e?Boolean(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 w(s,n);for(const t in s)if(!w(s,t))return!1;return!0}};return e}function M(t,e,n){return V(t.tests,e,n)}function x(t,e,n,s){return V(t.groups[n],e,s)}function w(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function k(t,e,n,s){var r,o;const u=t.groups[n];if(!u)return!1;if(s)return i.isPositive(null===(r=u[s])||void 0===r?void 0:r[e]);for(const t in u)if(i.isPositive(null===(o=u[t])||void 0===o?void 0:o[e]))return!0;return!1}function B(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return i.isPositive(r)}function K(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>h(t,n))))||void 0===s?void 0:s.message:i[0]}function j(){return t=()=>{const t=L(),e=l().suiteName;return Object.freeze(i.assign(t,b(t),{suiteName:e}))},(0,l().suiteResultCache)([N()],t);var t}function X(t,e){s.Isolate.create((()=>{Et.run({skipped:q()||i.optionalFunctionValue(t,i.optionalFunctionValue(j))},e)}))}function q(){return function(){var t;return null!==(t=Et.useX().skipped)&&void 0!==t&&t}()}function H(t){return Y(0,"tests",t)}function z(t){return Y(1,"tests",t)}function J(t){const{fieldName:e,groupName:n}=t;if(q())return!0;const s=ft(),r=Nt(),o=s.tests,u=o[e];if(!1===u)return!0;const a=!0===u;if(n){if(function(t){const e=ft().groups;if(i.hasOwnProperty(e,t))return!1===e[t];return Z()}(n))return!0;if(!0===s.groups[n])return!a&&(!!Q(o)||!1===o[e])}return!!function(t){if(!Z())return!1;return!t}(n)||!a&&(!!Q(o)&&!i.optionalFunctionValue(r[e]))}function Y(t,e,n){const s=ft(p.HOOK_CALLED_OUTSIDE);n&&i.asArray(n).forEach((n=>{i.isStringValue(n)&&(s[e][n]=0===t)}))}function Q(t){for(const e in t)if(!0===t[e])return!0;return!1}function Z(){const t=ft();for(const e in t.groups)if(t.groups[e])return!0;return!1}function $(t,e){s.Isolate.create((()=>{Et.run({omitted:tt()||i.optionalFunctionValue(t,i.optionalFunctionValue(j))},e)}))}function tt(){return function(){var t;return null!==(t=Et.useX().omitted)&&void 0!==t&&t}()}function et(t,e=t){return function(t){if(lt(exports.Modes.ONE))return ut();if(lt(exports.Modes.EAGER))return ut(t.fieldName);return!1}(t)?((n=t).skip(),n):function(t){return tt()||u(t.fieldName)}(t)?function(t){return t.omit(),t}(t):J(t)?function(t){return t.skip(q()),t}(e):t;var n}var nt,st;H.group=function(t){return Y(0,"groups",t)},z.group=function(t){return Y(1,"groups",t)},function(t){t.UNTESTED="UNTESTED",t.SKIPPED="SKIPPED",t.FAILED="FAILED",t.WARNING="WARNING",t.PASSING="PASSING",t.PENDING="PENDING",t.CANCELED="CANCELED",t.OMITTED="OMITTED"}(nt||(nt={})),function(t){t.RESET="RESET"}(st||(st={}));const it={initial:nt.UNTESTED,states:{"*":{[nt.OMITTED]:nt.OMITTED,[st.RESET]:nt.UNTESTED},[nt.UNTESTED]:{[nt.CANCELED]:nt.CANCELED,[nt.FAILED]:nt.FAILED,[nt.PASSING]:nt.PASSING,[nt.PENDING]:nt.PENDING,[nt.SKIPPED]:nt.SKIPPED,[nt.WARNING]:nt.WARNING},[nt.PENDING]:{[nt.CANCELED]:nt.CANCELED,[nt.FAILED]:nt.FAILED,[nt.PASSING]:nt.PASSING,[nt.SKIPPED]:[nt.SKIPPED,t=>!0===t],[nt.WARNING]:nt.WARNING},[nt.SKIPPED]:{},[nt.FAILED]:{},[nt.WARNING]:{},[nt.PASSING]:{},[nt.CANCELED]:{},[nt.OMITTED]:{}}};class rt extends s.Isolate{constructor({fieldName:t,testFn:e,message:n,groupName:s,key:r=null}){super(),this.children=null,this.id=i.seq(),this.severity=S.Error,this.stateMachine=i.StateMachine(it),this.fieldName=t,this.testFn=e,s&&(this.groupName=s),n&&(this.message=n),this.setKey(r)}static create(t,e){return rt.cast(super.create(t,e))}static cast(t){return rt.isX(t),t}get status(){return this.stateMachine.getState()}setStatus(t,e){this.stateMachine.transition(t,e)}run(){let t;try{t=this.testFn()}catch(e){(function(t,e){return i.isUndefined(t)&&i.isStringValue(e)})(this.message,e)&&(this.message=e),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===S.Warning}isPending(){return this.statusEquals(nt.PENDING)}isOmitted(){return this.statusEquals(nt.OMITTED)}isUntested(){return this.statusEquals(nt.UNTESTED)}isFailing(){return this.statusEquals(nt.FAILED)}isCanceled(){return this.statusEquals(nt.CANCELED)}isSkipped(){return this.statusEquals(nt.SKIPPED)}isPassing(){return this.statusEquals(nt.PASSING)}isWarning(){return this.statusEquals(nt.WARNING)}hasFailures(){return this.isFailing()||this.isWarning()}isNonActionable(){return this.isSkipped()||this.isOmitted()||this.isCanceled()}isTested(){return this.hasFailures()||this.isPassing()}awaitsResolution(){return this.isSkipped()||this.isUntested()||this.isPending()}statusEquals(t){return this.status===t}setPending(){this.setStatus(nt.PENDING)}fail(){this.setStatus(this.warns()?nt.WARNING:nt.FAILED)}pass(){this.setStatus(nt.PASSING)}warn(){this.severity=S.Warning}skip(t){this.setStatus(nt.SKIPPED,t)}cancel(){this.setStatus(nt.CANCELED)}reset(){this.stateMachine.transition(st.RESET)}omit(){this.setStatus(nt.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return i.isPromise(this.asyncTest)}static is(t){return t instanceof rt}static isX(t){i.invariant(this.is(t))}}rt.reconciler=function(t,e){if(!rt.is(t))return t;if(i.isNullish(e))return function(t){if(t.usesKey())return rt.cast(s.Reconciler.handleIsolateNodeWithKey(t));return t}(t);if(!rt.is(e))return t;const n=function(t,e){const n=function(t,e){if(t.usesKey())return rt.cast(s.Reconciler.handleIsolateNodeWithKey(t));if(function(t,e){return!!rt.is(e)&&!O(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;i.deferThrow(i.text(p.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:t.fieldName,prevName:rt.is(e)?e.fieldName:void 0}))}(t,e),s.Reconciler.removeAllNextNodesInIsolate(),t}(t,e);if(!rt.is(e))return t;if(e.isOmitted())return t;return e}(e,t);return et(e,n)}(e,t);return function(t,e,n){t===e&&rt.is(e)&&(i=e)!==(s=n)&&O(s,i)&&s.isPending()&&s.cancel();var s,i}(n,t,e),n};class ot{static defaultRoot(){return s.VestRuntime.useAvailableRoot()}static hasNoTests(t=ot.defaultRoot()){return!t||!s.Walker.has(t,rt.is)}static someIncompleteTests(t,e=ot.defaultRoot()){return!!e&&s.Walker.some(e,(e=>(rt.isX(e),e.isPending()&&t(e))),rt.is)}static someTests(t,e=ot.defaultRoot()){return!!e&&s.Walker.some(e,(e=>(rt.isX(e),t(e))),rt.is)}static everyTest(t,e=ot.defaultRoot()){return!!e&&s.Walker.every(e,(e=>(rt.isX(e),t(e))),rt.is)}static walkTests(t,e=ot.defaultRoot()){e&&s.Walker.walk(e,((e,n)=>{t(rt.cast(e),n)}),rt.is)}static hasRemainingTests(t){return ot.someIncompleteTests((e=>!t||h(e,t)))}static pluckTests(t,e=ot.defaultRoot()){e&&s.Walker.pluck(e,(e=>(rt.isX(e),t(e))),rt.is)}static resetField(t){ot.walkTests((e=>{h(e,t)&&e.reset()}),ot.defaultRoot())}static removeTestByFieldName(t,e=ot.defaultRoot()){ot.pluckTests((e=>h(e,t)),e)}}function ut(t){return function(t,e){return ot.someTests((n=>at(n,t,e)))}(T.ERRORS,t)}function at(t,e,n){return!!t.hasFailures()&&(!g(t,n)&&!function(t,e){return i.either(t===T.WARNINGS,e.warns())}(e,t))}var ct;function lt(t){const[e]=dt();return e===t}exports.Modes=void 0,(ct=exports.Modes||(exports.Modes={})).EAGER="EAGER",ct.ALL="ALL",ct.ONE="ONE";const Et=r.createCascade(((t,e)=>e?null:i.assign({exclusion:{tests:{},groups:{}},inclusion:{},mode:i.tinyState.createTinyState(exports.Modes.EAGER),testMemoCache:Tt},t)));function ft(t){return Et.useX(t).exclusion}function Nt(){return Et.useX().inclusion}function dt(){return Et.useX().mode()}const Tt=i.cache(10);function Rt(){const t=s.VestRuntime.useAvailableRoot(),n=s.VestRuntime.useEmit(),r=null==t?void 0:t.getOptionalFields();if(i.isEmpty(r))return;const o=new Set;function u(e){o.has(e.fieldName)&&(e.omit(),null==t||t.setOptionalField(e.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}ot.walkTests((e=>{e.isPending()||(i.hasOwnProperty(o,e.fieldName)?u(e):function(e){const n=null==t?void 0:t.getOptionalField(e.fieldName);if(i.isNullish(n))return;!0===i.optionalFunctionValue(n.rule)&&o.add(e.fieldName);u(e)}(e))})),n(e.DONE_TEST_OMISSION_PASS)}function St(){const t=s.VestRuntime.useBus();return n(e.TEST_COMPLETED,(n=>{n.isCanceled()||(!function(t){const[e]=f();t&&!ot.hasRemainingTests(t)&&i.isArray(e[t])&&i.callEach(e[t])}(n.fieldName),ot.hasRemainingTests()||t.emit(e.ALL_RUNNING_TESTS_FINISHED))})),n(e.TEST_RUN_STARTED,(()=>{})),n(e.DONE_TEST_OMISSION_PASS,(()=>{})),n(e.ALL_RUNNING_TESTS_FINISHED,(()=>{ot.someTests((t=>t.isAsyncTest()))&&Rt(),function(){const[t]=E();i.callEach(t)}()})),n(e.RESET_FIELD,(t=>{ot.resetField(t)})),n(e.SUITE_RUN_STARTED,(()=>{d()})),n(e.SUITE_CALLBACK_RUN_FINISHED,(()=>{Rt()})),n(e.REMOVE_FIELD,(t=>{ot.removeTestByFieldName(t)})),n(e.RESET_SUITE,(()=>{d(),s.VestRuntime.reset()})),t;function n(e,n){t.on(e,((...t)=>{l().suiteResultCache.invalidate([N()]),n(...t)}))}}function pt(t){const e=Nt(),n=ft();return i.invariant(i.isStringValue(t)),e[t]=i.defaultTo(n.tests[t],!0),{when:function(e){const n=Nt(),s=ft();n[t]=()=>i.hasOwnProperty(s.tests,t)?i.defaultTo(s.tests[t],!0):i.isStringValue(e)?Boolean(s.tests[e]):i.optionalFunctionValue(e,i.optionalFunctionValue(j))}}}function It(t){if(et(t),t.isUntested())return function(t){const e=s.VestRuntime.useBus(),n=function(t){return Et.run({currentTest:t},(()=>t.run()))}(t);try{i.isPromise(n)?(t.asyncTest=n,function(t){const{asyncTest:e,message:n}=t;if(!i.isPromise(e))return;t.setPending();const r=s.VestRuntime.useBus(),o=s.VestRuntime.persist((()=>{mt(r,t)})),u=s.VestRuntime.persist((e=>{t.isCanceled()||(t.message=i.isStringValue(e)?e:n,t.fail(),o())}));e.then(o,u)}(t)):mt(e,t)}catch(e){throw new Error(i.text(p.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);t.isNonActionable()||i.deferThrow(i.text(p.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function mt(t,n){n.pass(),t.emit(e.TEST_COMPLETED,n)}function _t(t,...n){const[r,o,u]=i.isFunction(n[1])?n:[void 0,...n];!function(t,e){const n="test";i.invariant(i.isStringValue(t),i.text(p.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),i.invariant(i.isFunction(e),i.text(p.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,o);const a={fieldName:t,groupName:Et.useX().groupName,key:u,message:r,testFn:o};return s.VestRuntime.useEmit()(e.TEST_RUN_STARTED),rt.create(It,a)}const gt=i.assign(_t,{memo:function(t){return function(e,...n){const[r,o,u]=n.reverse();return function(t,e){const n=Et.useX().testMemoCache,s=n.get(t);if(i.isNull(s))return n(t,e);const[,r]=s;if(r.isCanceled())return n.invalidate(t),n(t,e);return rt.setNode(r),r}([N(),e,s.VestRuntime.useCurrentCursor()].concat(r),(function(){return t(e,u,o)}))}}(_t)});function ht(){return{group:Ct,include:pt,omitWhen:$,only:H,optional:o,skip:z,skipWhen:X,test:gt}}function Ot(){return Object.freeze(i.assign({done:s.VestRuntime.persist(At)},j()))}function At(...t){const[e,n]=t.reverse(),s=Ot();if(function(t,e,n){var s;return!!(!i.isFunction(t)||e&&i.numberEquals(null===(s=n.tests[e])||void 0===s?void 0:s.testCount,0))}(e,n,s))return s;const r=()=>e(j());return ot.hasRemainingTests(n)?(function(t,e){const[,n]=f(),[,s]=E();e?n((n=>i.assign(n,{[e]:(n[e]||[]).concat(t)}))):s((e=>e.concat(t)))}(r,n),s):(r(),s)}function vt(...t){const[n,r]=t.reverse();!function(t){i.invariant(i.isFunction(t),p.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(n);const o=function({suiteName:t}={}){const e={doneCallbacks:i.tinyState.createTinyState((()=>[])),fieldCallbacks:i.tinyState.createTinyState((()=>({}))),suiteId:i.seq(),suiteName:t,suiteResultCache:c};return s.VestRuntime.createRef(e)}({suiteName:r});function u(...t){return Et.run({},(()=>(s.VestRuntime.useEmit()(e.SUITE_RUN_STARTED),a.create(function(t,...n){const i=s.VestRuntime.useEmit();return()=>(t(...n),i(e.SUITE_CALLBACK_RUN_FINISHED),Ot())}(n,...t))))).output}return s.VestRuntime.Run(o,(()=>{return St(),i.assign(s.VestRuntime.persist(u),Object.assign(Object.assign({get:s.VestRuntime.persist(j),remove:s.VestRuntime.usePrepareEmitter(e.REMOVE_FIELD),reset:s.VestRuntime.usePrepareEmitter(e.RESET_SUITE),resetField:s.VestRuntime.usePrepareEmitter(e.RESET_FIELD)},(t=s.VestRuntime.persist(j),{getError:(...e)=>t().getError(...e),getErrors:(...e)=>t().getErrors(...e),getErrorsByGroup:(...e)=>t().getErrorsByGroup(...e),getWarning:(...e)=>t().getWarning(...e),getWarnings:(...e)=>t().getWarnings(...e),getWarningsByGroup:(...e)=>t().getWarningsByGroup(...e),hasErrors:(...e)=>t().hasErrors(...e),hasErrorsByGroup:(...e)=>t().hasErrorsByGroup(...e),hasWarnings:(...e)=>t().hasWarnings(...e),hasWarningsByGroup:(...e)=>t().hasWarningsByGroup(...e),isValid:(...e)=>t().isValid(...e),isValidByGroup:(...e)=>t().isValidByGroup(...e)})),ht()));var t}))}class Dt extends s.Isolate{constructor(){super(...arguments),this.allowReorder=!0}}function Ct(t,e){return s.Isolate.create((()=>{Et.run({groupName:t},e)}))}const Pt=p.WARN_MUST_BE_CALLED_FROM_TEST;Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return n.enforce}}),exports.create=vt,exports.each=function(t,e){i.invariant(i.isFunction(e),p.EACH_CALLBACK_MUST_BE_A_FUNCTION),Dt.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))},exports.group=Ct,exports.include=pt,exports.mode=function(t){const[,e]=dt();e(t)},exports.omitWhen=$,exports.only=H,exports.optional=o,exports.skip=z,exports.skipWhen=X,exports.staticSuite=function(t){return i.assign(((...e)=>vt(t)(...e)),Object.assign({},ht()))},exports.suiteSelectors=b,exports.test=gt,exports.warn=function(){const t=(e=p.HOOK_CALLED_OUTSIDE,Et.useX(e).currentTest);var e;i.invariant(t,Pt),t.warn()};
1
+ "use strict";var t,e,n,s=require("n4s"),i=require("vest-utils"),r=require("vestjs-runtime"),o=require("context");function u(e){const n=r.VestRuntime.useAvailableRoot();if(i.isArray(e)||i.isStringValue(e))i.asArray(e).forEach((e=>{n.setOptionalField(e,(()=>({type:t.AUTO,applied:!1,rule:null})))}));else for(const s in e){const i=e[s];n.setOptionalField(s,(()=>({type:t.CUSTOM_LOGIC,rule:i,applied:!0===i})))}}function a(t){var e,n,s;return!!t&&(null!==(s=null===(n=null===(e=r.VestRuntime.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t))||void 0===n?void 0:n.applied)&&void 0!==s&&s)}!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(t||(t={})),exports.Modes=void 0,(e=exports.Modes||(exports.Modes={})).EAGER="EAGER",e.ALL="ALL",e.ONE="ONE",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"}(n||(n={}));class c extends r.Isolate{constructor(){super(...arguments),this.optional={}}setOptionalField(t,e){const n=this.optional,s=n[t];Object.assign(n,{[t]:Object.assign({},s,e(s))})}getOptionalField(t){var e;return null!==(e=this.optional[t])&&void 0!==e?e:{}}getOptionalFields(){return this.optional}}const l=i.cache();function E(){return r.VestRuntime.useXAppData()}function f(){return E().doneCallbacks()}function N(){return E().fieldCallbacks()}function d(){return E().suiteId}function T(){const[,,t]=f(),[,,e]=N();t(),e()}const R=o.createCascade(((t,e)=>e?null:i.assign({exclusion:{tests:{},groups:{}},inclusion:{},mode:i.tinyState.createTinyState(exports.Modes.EAGER),testMemoCache:m},t)));function S(t){return R.useX(t).exclusion}function p(){return R.useX().inclusion}function I(){return R.useX().mode()}const m=i.cache(10);var _,g,h,O,A,v;function D(t,e){return!!e&&!C(t,e)}function C(t,e){return!(!e||t.fieldName!==e)}function P(t,e){return C(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}function F(t){return t===g.ERRORS?h.ERROR_COUNT:h.WARN_COUNT}!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}."}(_||(_={})),function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(g||(g={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(h||(h={})),function(t){t.Error="error",t.Warning="warning"}(O||(O={}));class U{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class L extends U{constructor(){super(...arguments),this[A]=[],this[v]=[],this.groups={},this.tests={},this.valid=!1}}A=g.ERRORS,v=g.WARNINGS;class y{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new y(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const G=i.bindNot((function(t,e){return t.groupName===e}));function W(t){return function(t,e){return Rt.someTests((n=>V(n,t,e)))}(g.ERRORS,t)}function V(t,e,n){return!!t.hasFailures()&&(!D(t,n)&&!function(t,e){return i.either(t===g.WARNINGS,e.warns())}(e,t))}function b(t){return!!a(t)||!Rt.hasNoTests()&&(!W(t)&&(!function(t){return Rt.someIncompleteTests((e=>!D(e,t)&&!a(t)))}(t)&&function(t){return Rt.everyTest((e=>x(e,t)))}(t)))}function M(t,e){return!!a(e)||!function(t,e,n){return Rt.someTests((s=>!G(s,e)&&V(s,t,n)))}(g.ERRORS,t,e)&&(!function(t,e){return Rt.someIncompleteTests((n=>!G(n,t)&&(!D(n,e)&&!a(e))))}(t,e)&&function(t,e){return Rt.everyTest((n=>!!G(n,t)||x(n,e)))}(t,e))}function x(e,n){return!!D(e,n)||(e.isOmitted()||e.isTested()||function(e){var n;return(null===(n=r.VestRuntime.useAvailableRoot())||void 0===n?void 0:n.getOptionalField(e.fieldName).type)===t.AUTO&&e.awaitsResolution()}(e))}function w(){const t=new L;return Rt.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=B(s[n],e),s[n].valid=!1!==s[n].valid&&b(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=e;if(!n)return t;const i=Object.assign({},t);return i[n]=i[n]||{},i[n][s]=B(i[n][s],e),i[n][s].valid=!1!==i[n][s].valid&&M(n,s),i}(t.groups,e),t.errors=k(g.ERRORS,t.errors,e),t.warnings=k(g.WARNINGS,t.warnings,e)})),t.valid=b(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount;return t}(t)}function k(t,e,n){if(n.isOmitted())return e;return(t===g.WARNINGS?n.isWarning():n.isFailing())?e.concat(y.fromTestObject(n)):e}function B(t,e){const{message:n}=e,s=i.defaultTo(t?Object.assign({},t):null,j);return e.isNonActionable()||(s.testCount++,e.isFailing()?r(g.ERRORS):e.isWarning()&&r(g.WARNINGS)),s;function r(t){const e=F(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function j(){return i.assign(new U,{errors:[],warnings:[],valid:!0})}function K(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=F(e);for(const r in t)i.isPositive(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function X(t){const e={getError:function(e){return Q(g.ERRORS,t,e)},getErrors:function(e){return q(t,g.ERRORS,e)},getErrorsByGroup:function(e,n){return H(t,g.ERRORS,e,n)},getWarning:function(e){return Q(g.WARNINGS,t,e)},getWarnings:function(e){return q(t,g.WARNINGS,e)},getWarningsByGroup:function(e,n){return H(t,g.WARNINGS,e,n)},hasErrors:function(e){return Y(t,h.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return J(t,h.ERROR_COUNT,e,n)},hasWarnings:function(e){return Y(t,h.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return J(t,h.WARN_COUNT,e,n)},isValid:function(e){var n;return e?Boolean(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 z(s,n);for(const t in s)if(!z(s,t))return!1;return!0}};return e}function q(t,e,n){return K(t.tests,e,n)}function H(t,e,n,s){return K(t.groups[n],e,s)}function z(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function J(t,e,n,s){var r,o;const u=t.groups[n];if(!u)return!1;if(s)return i.isPositive(null===(r=u[s])||void 0===r?void 0:r[e]);for(const t in u)if(i.isPositive(null===(o=u[t])||void 0===o?void 0:o[e]))return!0;return!1}function Y(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return i.isPositive(r)}function Q(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>C(t,n))))||void 0===s?void 0:s.message:i[0]}function Z(){return t=()=>{const t=w(),e=E().suiteName;return Object.freeze(i.assign(t,X(t),{suiteName:e}))},(0,E().suiteResultCache)([d()],t);var t}function $(t,e){r.Isolate.create((()=>{R.run({skipped:tt()||i.optionalFunctionValue(t,i.optionalFunctionValue(Z))},e)}))}function tt(){return function(){var t;return null!==(t=R.useX().skipped)&&void 0!==t&&t}()}function et(t){return it(0,"tests",t)}function nt(t){return it(1,"tests",t)}function st(t){const{fieldName:e,groupName:n}=t;if(tt())return!0;const s=S(),r=p(),o=s.tests,u=o[e];if(!1===u)return!0;const a=!0===u;if(n){if(function(t){const e=S().groups;if(i.hasOwnProperty(e,t))return!1===e[t];return ot()}(n))return!0;if(!0===s.groups[n])return!a&&(!!rt(o)||!1===o[e])}return!!function(t){if(!ot())return!1;return!t}(n)||!a&&(!!rt(o)&&!i.optionalFunctionValue(r[e]))}function it(t,e,n){const s=S(_.HOOK_CALLED_OUTSIDE);n&&i.asArray(n).forEach((n=>{i.isStringValue(n)&&(s[e][n]=0===t)}))}function rt(t){for(const e in t)if(!0===t[e])return!0;return!1}function ot(){const t=S();for(const e in t.groups)if(t.groups[e])return!0;return!1}function ut(t){const[e]=I();return e===t}function at(t){return ut(exports.Modes.ONE)?W():!!ut(exports.Modes.EAGER)&&W(t.fieldName)}function ct(t,e){r.Isolate.create((()=>{R.run({omitted:lt()||i.optionalFunctionValue(t,i.optionalFunctionValue(Z))},e)}))}function lt(){return function(){var t;return null!==(t=R.useX().omitted)&&void 0!==t&&t}()}function Et(t,e=t){return at(t)?((n=t).skip(),n):function(t){return lt()||a(t.fieldName)}(t)?function(t){return t.omit(),t}(t):st(t)?function(t){return t.skip(tt()),t}(e):t;var n}var ft,Nt;et.group=function(t){return it(0,"groups",t)},nt.group=function(t){return it(1,"groups",t)},function(t){t.UNTESTED="UNTESTED",t.SKIPPED="SKIPPED",t.FAILED="FAILED",t.WARNING="WARNING",t.PASSING="PASSING",t.PENDING="PENDING",t.CANCELED="CANCELED",t.OMITTED="OMITTED"}(ft||(ft={})),function(t){t.RESET="RESET"}(Nt||(Nt={}));const dt={initial:ft.UNTESTED,states:{"*":{[ft.OMITTED]:ft.OMITTED,[Nt.RESET]:ft.UNTESTED},[ft.UNTESTED]:{[ft.CANCELED]:ft.CANCELED,[ft.FAILED]:ft.FAILED,[ft.PASSING]:ft.PASSING,[ft.PENDING]:ft.PENDING,[ft.SKIPPED]:ft.SKIPPED,[ft.WARNING]:ft.WARNING},[ft.PENDING]:{[ft.CANCELED]:ft.CANCELED,[ft.FAILED]:ft.FAILED,[ft.PASSING]:ft.PASSING,[ft.SKIPPED]:[ft.SKIPPED,t=>!0===t],[ft.WARNING]:ft.WARNING},[ft.SKIPPED]:{},[ft.FAILED]:{},[ft.WARNING]:{},[ft.PASSING]:{},[ft.CANCELED]:{},[ft.OMITTED]:{}}};class Tt extends r.Isolate{constructor({fieldName:t,testFn:e,message:n,groupName:s,key:r=null}){super(),this.children=null,this.id=i.seq(),this.severity=O.Error,this.stateMachine=i.StateMachine(dt),this.fieldName=t,this.testFn=e,s&&(this.groupName=s),n&&(this.message=n),this.setKey(r)}static create(t,e){return Tt.cast(super.create(t,e))}static cast(t){return Tt.isX(t),t}get status(){return this.stateMachine.getState()}setStatus(t,e){this.stateMachine.transition(t,e)}run(){let t;try{t=this.testFn()}catch(e){(function(t,e){return i.isUndefined(t)&&i.isStringValue(e)})(this.message,e)&&(this.message=e),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===O.Warning}isPending(){return this.statusEquals(ft.PENDING)}isOmitted(){return this.statusEquals(ft.OMITTED)}isUntested(){return this.statusEquals(ft.UNTESTED)}isFailing(){return this.statusEquals(ft.FAILED)}isCanceled(){return this.statusEquals(ft.CANCELED)}isSkipped(){return this.statusEquals(ft.SKIPPED)}isPassing(){return this.statusEquals(ft.PASSING)}isWarning(){return this.statusEquals(ft.WARNING)}hasFailures(){return this.isFailing()||this.isWarning()}isNonActionable(){return this.isSkipped()||this.isOmitted()||this.isCanceled()}isTested(){return this.hasFailures()||this.isPassing()}awaitsResolution(){return this.isSkipped()||this.isUntested()||this.isPending()}statusEquals(t){return this.status===t}setPending(){this.setStatus(ft.PENDING)}fail(){this.setStatus(this.warns()?ft.WARNING:ft.FAILED)}pass(){this.setStatus(ft.PASSING)}warn(){this.severity=O.Warning}skip(t){this.setStatus(ft.SKIPPED,t)}cancel(){this.setStatus(ft.CANCELED)}reset(){this.stateMachine.transition(Nt.RESET)}omit(){this.setStatus(ft.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return i.isPromise(this.asyncTest)}static is(t){return t instanceof Tt}static isX(t){i.invariant(this.is(t))}}Tt.reconciler=function(t,e){if(!Tt.is(t))return t;if(i.isNullish(e))return function(t){if(t.usesKey())return Tt.cast(r.Reconciler.handleIsolateNodeWithKey(t));return t}(t);if(!Tt.is(e))return t;const n=function(t,e){const n=function(t,e){if(t.usesKey())return Tt.cast(r.Reconciler.handleIsolateNodeWithKey(t));if(function(t,e){return!!Tt.is(e)&&!P(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;i.deferThrow(i.text(_.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:t.fieldName,prevName:Tt.is(e)?e.fieldName:void 0}))}(t,e),r.Reconciler.removeAllNextNodesInIsolate(),t}(t,e);if(!Tt.is(e))return t;if(e.isOmitted())return t;return e}(e,t);return Et(e,n)}(e,t);return function(t,e,n){t===e&&Tt.is(e)&&(i=e)!==(s=n)&&P(s,i)&&s.isPending()&&s.cancel();var s,i}(n,t,e),n};class Rt{static defaultRoot(){return r.VestRuntime.useAvailableRoot()}static hasNoTests(t=Rt.defaultRoot()){return!t||!r.Walker.has(t,Tt.is)}static someIncompleteTests(t,e=Rt.defaultRoot()){return!!e&&r.Walker.some(e,(e=>(Tt.isX(e),e.isPending()&&t(e))),Tt.is)}static someTests(t,e=Rt.defaultRoot()){return!!e&&r.Walker.some(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static everyTest(t,e=Rt.defaultRoot()){return!!e&&r.Walker.every(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static walkTests(t,e=Rt.defaultRoot()){e&&r.Walker.walk(e,((e,n)=>{t(Tt.cast(e),n)}),Tt.is)}static hasRemainingTests(t){return Rt.someIncompleteTests((e=>!t||C(e,t)))}static pluckTests(t,e=Rt.defaultRoot()){e&&r.Walker.pluck(e,(e=>(Tt.isX(e),t(e))),Tt.is)}static resetField(t){Rt.walkTests((e=>{C(e,t)&&e.reset()}),Rt.defaultRoot())}static removeTestByFieldName(t,e=Rt.defaultRoot()){Rt.pluckTests((e=>C(e,t)),e)}}function St(){const t=r.VestRuntime.useAvailableRoot(),e=r.VestRuntime.useEmit(),s=null==t?void 0:t.getOptionalFields();if(i.isEmpty(s))return;const o=new Set;function u(e){o.has(e.fieldName)&&(e.omit(),null==t||t.setOptionalField(e.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Rt.walkTests((e=>{e.isPending()||(i.hasOwnProperty(o,e.fieldName)?u(e):function(e){const n=null==t?void 0:t.getOptionalField(e.fieldName);if(i.isNullish(n))return;!0===i.optionalFunctionValue(n.rule)&&o.add(e.fieldName);u(e)}(e))})),e(n.DONE_TEST_OMISSION_PASS)}function pt(){const t=r.VestRuntime.useBus();return e(n.TEST_COMPLETED,(e=>{e.isCanceled()||(!function(t){const[e]=N();t&&!Rt.hasRemainingTests(t)&&i.isArray(e[t])&&i.callEach(e[t])}(e.fieldName),Rt.hasRemainingTests()||t.emit(n.ALL_RUNNING_TESTS_FINISHED))})),e(n.TEST_RUN_STARTED,(()=>{})),e(n.DONE_TEST_OMISSION_PASS,(()=>{})),e(n.ALL_RUNNING_TESTS_FINISHED,(()=>{Rt.someTests((t=>t.isAsyncTest()))&&St(),function(){const[t]=f();i.callEach(t)}()})),e(n.RESET_FIELD,(t=>{Rt.resetField(t)})),e(n.SUITE_RUN_STARTED,(()=>{T()})),e(n.SUITE_CALLBACK_RUN_FINISHED,(()=>{St()})),e(n.REMOVE_FIELD,(t=>{Rt.removeTestByFieldName(t)})),e(n.RESET_SUITE,(()=>{T(),r.VestRuntime.reset()})),t;function e(e,n){t.on(e,((...t)=>{E().suiteResultCache.invalidate([d()]),n(...t)}))}}function It(t,e){return r.Isolate.create((()=>{R.run({groupName:t},e)}))}function mt(t){const e=p(),n=S();return i.invariant(i.isStringValue(t)),e[t]=i.defaultTo(n.tests[t],!0),{when:function(e){const n=p(),s=S();n[t]=()=>i.hasOwnProperty(s.tests,t)?i.defaultTo(s.tests[t],!0):i.isStringValue(e)?Boolean(s.tests[e]):i.optionalFunctionValue(e,i.optionalFunctionValue(Z))}}}function _t(t){if(Et(t),t.isUntested())return function(t){const e=r.VestRuntime.useBus(),n=function(t){return R.run({currentTest:t},(()=>t.run()))}(t);try{i.isPromise(n)?(t.asyncTest=n,function(t){const{asyncTest:e,message:n}=t;if(!i.isPromise(e))return;t.setPending();const s=r.VestRuntime.useBus(),o=r.VestRuntime.persist((()=>{gt(s,t)})),u=r.VestRuntime.persist((e=>{t.isCanceled()||(t.message=i.isStringValue(e)?e:n,t.fail(),o())}));e.then(o,u)}(t)):gt(e,t)}catch(e){throw new Error(i.text(_.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);t.isNonActionable()||i.deferThrow(i.text(_.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function gt(t,e){e.pass(),t.emit(n.TEST_COMPLETED,e)}function ht(t,...e){const[s,o,u]=i.isFunction(e[1])?e:[void 0,...e];!function(t,e){const n="test";i.invariant(i.isStringValue(t),i.text(_.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),i.invariant(i.isFunction(e),i.text(_.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,o);const a={fieldName:t,groupName:R.useX().groupName,key:u,message:s,testFn:o};return r.VestRuntime.useEmit()(n.TEST_RUN_STARTED),Tt.create(_t,a)}const Ot=i.assign(ht,{memo:function(t){return function(e,...n){const[s,o,u]=n.reverse();return function(t,e){const n=R.useX().testMemoCache,s=n.get(t);if(i.isNull(s))return n(t,e);const[,r]=s;if(r.isCanceled())return n.invalidate(t),n(t,e);return Tt.setNode(r),r}([d(),e,r.VestRuntime.useCurrentCursor()].concat(s),(function(){return t(e,u,o)}))}}(ht)});function At(){return{group:It,include:mt,omitWhen:ct,only:et,optional:u,skip:nt,skipWhen:$,test:Ot}}function vt(){return Object.freeze(i.assign({done:r.VestRuntime.persist(Dt)},Z()))}function Dt(...t){const[e,n]=t.reverse(),s=vt();if(function(t,e,n){var s;return!!(!i.isFunction(t)||e&&i.numberEquals(null===(s=n.tests[e])||void 0===s?void 0:s.testCount,0))}(e,n,s))return s;const r=()=>e(Z());return Rt.hasRemainingTests(n)?(function(t,e){const[,n]=N(),[,s]=f();e?n((n=>i.assign(n,{[e]:(n[e]||[]).concat(t)}))):s((e=>e.concat(t)))}(r,n),s):(r(),s)}function Ct(...t){const[e,s]=t.reverse();!function(t){i.invariant(i.isFunction(t),_.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(e);const o=function({suiteName:t}={}){const e={doneCallbacks:i.tinyState.createTinyState((()=>[])),fieldCallbacks:i.tinyState.createTinyState((()=>({}))),suiteId:i.seq(),suiteName:t,suiteResultCache:l};return r.VestRuntime.createRef(e)}({suiteName:s});function u(...t){return R.run({},(()=>(r.VestRuntime.useEmit()(n.SUITE_RUN_STARTED),c.create(function(t,...e){const s=r.VestRuntime.useEmit();return()=>(t(...e),s(n.SUITE_CALLBACK_RUN_FINISHED),vt())}(e,...t))))).output}return r.VestRuntime.Run(o,(()=>{return pt(),i.assign(r.VestRuntime.persist(u),Object.assign(Object.assign({get:r.VestRuntime.persist(Z),remove:r.VestRuntime.usePrepareEmitter(n.REMOVE_FIELD),reset:r.VestRuntime.usePrepareEmitter(n.RESET_SUITE),resetField:r.VestRuntime.usePrepareEmitter(n.RESET_FIELD)},(t=r.VestRuntime.persist(Z),{getError:(...e)=>t().getError(...e),getErrors:(...e)=>t().getErrors(...e),getErrorsByGroup:(...e)=>t().getErrorsByGroup(...e),getWarning:(...e)=>t().getWarning(...e),getWarnings:(...e)=>t().getWarnings(...e),getWarningsByGroup:(...e)=>t().getWarningsByGroup(...e),hasErrors:(...e)=>t().hasErrors(...e),hasErrorsByGroup:(...e)=>t().hasErrorsByGroup(...e),hasWarnings:(...e)=>t().hasWarnings(...e),hasWarningsByGroup:(...e)=>t().hasWarningsByGroup(...e),isValid:(...e)=>t().isValid(...e),isValidByGroup:(...e)=>t().isValidByGroup(...e)})),At()));var t}))}class Pt extends r.Isolate{constructor(){super(...arguments),this.allowReorder=!0}}const Ft=_.WARN_MUST_BE_CALLED_FROM_TEST;Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return s.enforce}}),exports.create=Ct,exports.each=function(t,e){i.invariant(i.isFunction(e),_.EACH_CALLBACK_MUST_BE_A_FUNCTION),Pt.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))},exports.group=It,exports.include=mt,exports.mode=function(t){const[,e]=I();e(t)},exports.omitWhen=ct,exports.only=et,exports.optional=u,exports.skip=nt,exports.skipWhen=$,exports.staticSuite=function(t){return i.assign(((...e)=>Ct(t)(...e)),Object.assign({},At()))},exports.suiteSelectors=X,exports.test=Ot,exports.warn=function(){const t=(e=_.HOOK_CALLED_OUTSIDE,R.useX(e).currentTest);var e;i.invariant(t,Ft),t.warn()};
@@ -1,6 +1,6 @@
1
1
  export { enforce } from 'n4s';
2
- import { VestRuntime, Isolate, Reconciler, Walker } from 'vest-runtime';
3
- import { isArray, isStringValue, asArray, cache, tinyState, seq, bindNot, defaultTo, assign, isPositive, optionalFunctionValue, hasOwnProperty, isNullish, deferThrow, text, StateMachine, isUndefined, isPromise, invariant, either, isEmpty, callEach, isNull, isFunction, numberEquals } from 'vest-utils';
2
+ import { isArray, isStringValue, asArray, cache, tinyState, seq, assign, bindNot, either, defaultTo, isPositive, optionalFunctionValue, hasOwnProperty, isNullish, deferThrow, text, StateMachine, isUndefined, isPromise, invariant, isEmpty, callEach, isNull, isFunction, numberEquals } from 'vest-utils';
3
+ import { VestRuntime, Isolate, Reconciler, Walker } from 'vestjs-runtime';
4
4
  import { createCascade } from 'context';
5
5
 
6
6
  var OptionalFieldTypes;
@@ -49,6 +49,13 @@ function useIsOptionalFiedApplied(fieldName) {
49
49
  return ((_c = (_b = (_a = VestRuntime.useAvailableRoot()) === null || _a === void 0 ? void 0 : _a.getOptionalField(fieldName)) === null || _b === void 0 ? void 0 : _b.applied) !== null && _c !== void 0 ? _c : false);
50
50
  }
51
51
 
52
+ var Modes;
53
+ (function (Modes) {
54
+ Modes["EAGER"] = "EAGER";
55
+ Modes["ALL"] = "ALL";
56
+ Modes["ONE"] = "ONE";
57
+ })(Modes || (Modes = {}));
58
+
52
59
  var Events;
53
60
  (function (Events) {
54
61
  Events["TEST_RUN_STARTED"] = "test_run_started";
@@ -128,26 +135,47 @@ function useResetSuite() {
128
135
  VestRuntime.reset();
129
136
  }
130
137
 
131
- var Severity;
132
- (function (Severity) {
133
- Severity["WARNINGS"] = "warnings";
134
- Severity["ERRORS"] = "errors";
135
- })(Severity || (Severity = {}));
136
- var SeverityCount;
137
- (function (SeverityCount) {
138
- SeverityCount["ERROR_COUNT"] = "errorCount";
139
- SeverityCount["WARN_COUNT"] = "warnCount";
140
- })(SeverityCount || (SeverityCount = {}));
141
- function countKeyBySeverity(severity) {
142
- return severity === Severity.ERRORS
143
- ? SeverityCount.ERROR_COUNT
144
- : SeverityCount.WARN_COUNT;
138
+ const SuiteContext = createCascade((ctxRef, parentContext) => {
139
+ if (parentContext) {
140
+ return null;
141
+ }
142
+ return assign({
143
+ exclusion: {
144
+ tests: {},
145
+ groups: {},
146
+ },
147
+ inclusion: {},
148
+ mode: tinyState.createTinyState(Modes.EAGER),
149
+ testMemoCache,
150
+ }, ctxRef);
151
+ });
152
+ function useCurrentTest(msg) {
153
+ return SuiteContext.useX(msg).currentTest;
154
+ }
155
+ function useGroupName() {
156
+ return SuiteContext.useX().groupName;
157
+ }
158
+ function useExclusion(hookError) {
159
+ return SuiteContext.useX(hookError).exclusion;
160
+ }
161
+ function useInclusion() {
162
+ return SuiteContext.useX().inclusion;
163
+ }
164
+ function useMode() {
165
+ return SuiteContext.useX().mode();
166
+ }
167
+ function useSkipped() {
168
+ var _a;
169
+ return (_a = SuiteContext.useX().skipped) !== null && _a !== void 0 ? _a : false;
170
+ }
171
+ function useOmitted() {
172
+ var _a;
173
+ return (_a = SuiteContext.useX().omitted) !== null && _a !== void 0 ? _a : false;
174
+ }
175
+ const testMemoCache = cache(10);
176
+ function useTestMemoCache() {
177
+ return SuiteContext.useX().testMemoCache;
145
178
  }
146
- var TestSeverity;
147
- (function (TestSeverity) {
148
- TestSeverity["Error"] = "error";
149
- TestSeverity["Warning"] = "warning";
150
- })(TestSeverity || (TestSeverity = {}));
151
179
 
152
180
  var ErrorStrings;
153
181
  (function (ErrorStrings) {
@@ -186,6 +214,27 @@ function cancelOverriddenPendingTest(prevRunTestObject, currentRunTestObject) {
186
214
  }
187
215
  }
188
216
 
217
+ var Severity;
218
+ (function (Severity) {
219
+ Severity["WARNINGS"] = "warnings";
220
+ Severity["ERRORS"] = "errors";
221
+ })(Severity || (Severity = {}));
222
+ var SeverityCount;
223
+ (function (SeverityCount) {
224
+ SeverityCount["ERROR_COUNT"] = "errorCount";
225
+ SeverityCount["WARN_COUNT"] = "warnCount";
226
+ })(SeverityCount || (SeverityCount = {}));
227
+ function countKeyBySeverity(severity) {
228
+ return severity === Severity.ERRORS
229
+ ? SeverityCount.ERROR_COUNT
230
+ : SeverityCount.WARN_COUNT;
231
+ }
232
+ var TestSeverity;
233
+ (function (TestSeverity) {
234
+ TestSeverity["Error"] = "error";
235
+ TestSeverity["Warning"] = "warning";
236
+ })(TestSeverity || (TestSeverity = {}));
237
+
189
238
  var _a, _b;
190
239
  class SummaryBase {
191
240
  constructor() {
@@ -225,6 +274,49 @@ function matchingGroupName(testObject, groupName) {
225
274
  return testObject.groupName === groupName;
226
275
  }
227
276
 
277
+ /**
278
+ * Checks that a given test object matches the currently specified severity level
279
+ */
280
+ function nonMatchingSeverityProfile(severity, testObject) {
281
+ return either(severity === Severity.WARNINGS, testObject.warns());
282
+ }
283
+
284
+ /**
285
+ * The difference between this file and hasFailures is that hasFailures uses the static
286
+ * summary object, while this one uses the actual validation state
287
+ */
288
+ function hasErrorsByTestObjects(fieldName) {
289
+ return hasFailuresByTestObjects(Severity.ERRORS, fieldName);
290
+ }
291
+ function hasFailuresByTestObjects(severityKey, fieldName) {
292
+ return TestWalker.someTests(testObject => {
293
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
294
+ });
295
+ }
296
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
297
+ return TestWalker.someTests(testObject => {
298
+ if (nonMatchingGroupName(testObject, groupName)) {
299
+ return false;
300
+ }
301
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
302
+ });
303
+ }
304
+ /**
305
+ * Determines whether a certain test profile has failures.
306
+ */
307
+ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
308
+ if (!testObject.hasFailures()) {
309
+ return false;
310
+ }
311
+ if (nonMatchingFieldName(testObject, fieldName)) {
312
+ return false;
313
+ }
314
+ if (nonMatchingSeverityProfile(severityKey, testObject)) {
315
+ return false;
316
+ }
317
+ return true;
318
+ }
319
+
228
320
  function useShouldAddValidProperty(fieldName) {
229
321
  // Is the field optional, and the optional condition is applied
230
322
  if (useIsOptionalFiedApplied(fieldName)) {
@@ -739,6 +831,51 @@ function useHasIncludedGroups() {
739
831
  return false;
740
832
  }
741
833
 
834
+ /**
835
+ * Sets the current execution mode for the current suite.
836
+ *
837
+ * Supported modes:
838
+ * - `EAGER` - (default) Runs all tests, but stops on first failure for each given field.
839
+ * - `ALL` - Runs all tests, regardless of failures.
840
+ * - `ONE` - Stops suite execution on first failure of any field.
841
+ *
842
+ * @example
843
+ * ```js
844
+ * import {Modes, create} from 'vest';
845
+ *
846
+ * const suite = create('suite_name', () => {
847
+ * vest.mode(Modes.ALL);
848
+ *
849
+ * // ...
850
+ * });
851
+ * ```
852
+ * @param 'ALL' | 'EAGER' | 'ONE' mode - The mode to set.
853
+ */
854
+ // @vx-allow use-use
855
+ function mode(mode) {
856
+ const [, setMode] = useMode();
857
+ setMode(mode);
858
+ }
859
+ function useIsMode(mode) {
860
+ const [currentMode] = useMode();
861
+ return currentMode === mode;
862
+ }
863
+ function useIsEager() {
864
+ return useIsMode(Modes.EAGER);
865
+ }
866
+ function useIsOne() {
867
+ return useIsMode(Modes.ONE);
868
+ }
869
+ function useShouldSkipBasedOnMode(testObject) {
870
+ if (useIsOne()) {
871
+ return hasErrorsByTestObjects();
872
+ }
873
+ if (useIsEager()) {
874
+ return hasErrorsByTestObjects(testObject.fieldName);
875
+ }
876
+ return false;
877
+ }
878
+
742
879
  /**
743
880
  * Conditionally omits tests from the suite.
744
881
  *
@@ -1138,142 +1275,6 @@ class TestWalker {
1138
1275
  }
1139
1276
  }
1140
1277
 
1141
- /**
1142
- * Checks that a given test object matches the currently specified severity level
1143
- */
1144
- function nonMatchingSeverityProfile(severity, testObject) {
1145
- return either(severity === Severity.WARNINGS, testObject.warns());
1146
- }
1147
-
1148
- /**
1149
- * The difference between this file and hasFailures is that hasFailures uses the static
1150
- * summary object, while this one uses the actual validation state
1151
- */
1152
- function hasErrorsByTestObjects(fieldName) {
1153
- return hasFailuresByTestObjects(Severity.ERRORS, fieldName);
1154
- }
1155
- function hasFailuresByTestObjects(severityKey, fieldName) {
1156
- return TestWalker.someTests(testObject => {
1157
- return hasFailuresByTestObject(testObject, severityKey, fieldName);
1158
- });
1159
- }
1160
- function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
1161
- return TestWalker.someTests(testObject => {
1162
- if (nonMatchingGroupName(testObject, groupName)) {
1163
- return false;
1164
- }
1165
- return hasFailuresByTestObject(testObject, severityKey, fieldName);
1166
- });
1167
- }
1168
- /**
1169
- * Determines whether a certain test profile has failures.
1170
- */
1171
- function hasFailuresByTestObject(testObject, severityKey, fieldName) {
1172
- if (!testObject.hasFailures()) {
1173
- return false;
1174
- }
1175
- if (nonMatchingFieldName(testObject, fieldName)) {
1176
- return false;
1177
- }
1178
- if (nonMatchingSeverityProfile(severityKey, testObject)) {
1179
- return false;
1180
- }
1181
- return true;
1182
- }
1183
-
1184
- var Modes;
1185
- (function (Modes) {
1186
- Modes["EAGER"] = "EAGER";
1187
- Modes["ALL"] = "ALL";
1188
- Modes["ONE"] = "ONE";
1189
- })(Modes || (Modes = {}));
1190
- /**
1191
- * Sets the current execution mode for the current suite.
1192
- *
1193
- * Supported modes:
1194
- * - `EAGER` - (default) Runs all tests, but stops on first failure for each given field.
1195
- * - `ALL` - Runs all tests, regardless of failures.
1196
- * - `ONE` - Stops suite execution on first failure of any field.
1197
- *
1198
- * @example
1199
- * ```js
1200
- * import {Modes, create} from 'vest';
1201
- *
1202
- * const suite = create('suite_name', () => {
1203
- * vest.mode(Modes.ALL);
1204
- *
1205
- * // ...
1206
- * });
1207
- * ```
1208
- * @param 'ALL' | 'EAGER' | 'ONE' mode - The mode to set.
1209
- */
1210
- // @vx-allow use-use
1211
- function mode(mode) {
1212
- const [, setMode] = useMode();
1213
- setMode(mode);
1214
- }
1215
- function useIsMode(mode) {
1216
- const [currentMode] = useMode();
1217
- return currentMode === mode;
1218
- }
1219
- function useIsEager() {
1220
- return useIsMode(Modes.EAGER);
1221
- }
1222
- function useIsOne() {
1223
- return useIsMode(Modes.ONE);
1224
- }
1225
- function useShouldSkipBasedOnMode(testObject) {
1226
- if (useIsOne()) {
1227
- return hasErrorsByTestObjects();
1228
- }
1229
- if (useIsEager()) {
1230
- return hasErrorsByTestObjects(testObject.fieldName);
1231
- }
1232
- return false;
1233
- }
1234
-
1235
- const SuiteContext = createCascade((ctxRef, parentContext) => {
1236
- if (parentContext) {
1237
- return null;
1238
- }
1239
- return assign({
1240
- exclusion: {
1241
- tests: {},
1242
- groups: {},
1243
- },
1244
- inclusion: {},
1245
- mode: tinyState.createTinyState(Modes.EAGER),
1246
- testMemoCache,
1247
- }, ctxRef);
1248
- });
1249
- function useCurrentTest(msg) {
1250
- return SuiteContext.useX(msg).currentTest;
1251
- }
1252
- function useGroupName() {
1253
- return SuiteContext.useX().groupName;
1254
- }
1255
- function useExclusion(hookError) {
1256
- return SuiteContext.useX(hookError).exclusion;
1257
- }
1258
- function useInclusion() {
1259
- return SuiteContext.useX().inclusion;
1260
- }
1261
- function useMode() {
1262
- return SuiteContext.useX().mode();
1263
- }
1264
- function useSkipped() {
1265
- var _a;
1266
- return (_a = SuiteContext.useX().skipped) !== null && _a !== void 0 ? _a : false;
1267
- }
1268
- function useOmitted() {
1269
- var _a;
1270
- return (_a = SuiteContext.useX().omitted) !== null && _a !== void 0 ? _a : false;
1271
- }
1272
- const testMemoCache = cache(10);
1273
- function useTestMemoCache() {
1274
- return SuiteContext.useX().testMemoCache;
1275
- }
1276
-
1277
1278
  /**
1278
1279
  * This module gets triggered once the suite is done running its sync tests.
1279
1280
  *
@@ -1403,6 +1404,12 @@ function useInitVestBus() {
1403
1404
  }
1404
1405
  }
1405
1406
 
1407
+ function group(groupName, callback) {
1408
+ return Isolate.create(() => {
1409
+ SuiteContext.run({ groupName }, callback);
1410
+ });
1411
+ }
1412
+
1406
1413
  /**
1407
1414
  * Conditionally includes a field for testing, based on specified criteria.
1408
1415
  *
@@ -1585,6 +1592,7 @@ function validateTestParams(fieldName, testFn) {
1585
1592
  }));
1586
1593
  }
1587
1594
 
1595
+ // import { optional, skipWhen, omitWhen, IsolateTest, group } from 'vest';
1588
1596
  function getTypedMethods() {
1589
1597
  return {
1590
1598
  group,
@@ -1713,12 +1721,6 @@ function each(list, callback) {
1713
1721
  });
1714
1722
  }
1715
1723
 
1716
- function group(groupName, callback) {
1717
- return Isolate.create(() => {
1718
- SuiteContext.run({ groupName }, callback);
1719
- });
1720
- }
1721
-
1722
1724
  /**
1723
1725
  * Creates a static suite for server-side validation.
1724
1726
  *
@@ -1 +1 @@
1
- export{enforce}from"n4s";import{VestRuntime as t,Isolate as e,Reconciler as n,Walker as s}from"vest-runtime";import{isArray as r,isStringValue as i,asArray as u,cache as o,tinyState as a,seq as c,bindNot as E,defaultTo as l,assign as f,isPositive as N,optionalFunctionValue as T,hasOwnProperty as d,isNullish as S,deferThrow as R,text as I,StateMachine as _,isUndefined as p,isPromise as m,invariant as g,either as h,isEmpty as O,callEach as A,isNull as D,isFunction as C,numberEquals as v}from"vest-utils";import{createCascade as U}from"context";var L,P;function F(e){const n=t.useAvailableRoot();if(r(e)||i(e))u(e).forEach((t=>{n.setOptionalField(t,(()=>({type:L.AUTO,applied:!1,rule:null})))}));else for(const t in e){const s=e[t];n.setOptionalField(t,(()=>({type:L.CUSTOM_LOGIC,rule:s,applied:!0===s})))}}function G(e){var n,s,r;return!!e&&(null!==(r=null===(s=null===(n=t.useAvailableRoot())||void 0===n?void 0:n.getOptionalField(e))||void 0===s?void 0:s.applied)&&void 0!==r&&r)}!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(L||(L={})),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"}(P||(P={}));class y extends e{constructor(){super(...arguments),this.optional={}}setOptionalField(t,e){const n=this.optional,s=n[t];Object.assign(n,{[t]:Object.assign({},s,e(s))})}getOptionalField(t){var e;return null!==(e=this.optional[t])&&void 0!==e?e:{}}getOptionalFields(){return this.optional}}const W=o();function b(){return t.useXAppData()}function M(){return b().doneCallbacks()}function w(){return b().fieldCallbacks()}function B(){return b().suiteId}function k(){const[,,t]=M(),[,,e]=w();t(),e()}var K,j,X,V,x,H;function q(t){return t===K.ERRORS?j.ERROR_COUNT:j.WARN_COUNT}function z(t,e){return!!e&&!J(t,e)}function J(t,e){return!(!e||t.fieldName!==e)}function Y(t,e){return J(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(K||(K={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(j||(j={})),function(t){t.Error="error",t.Warning="warning"}(X||(X={})),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}."}(V||(V={}));class Q{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class Z extends Q{constructor(){super(...arguments),this[x]=[],this[H]=[],this.groups={},this.tests={},this.valid=!1}}x=K.ERRORS,H=K.WARNINGS;class ${constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new $(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const tt=E((function(t,e){return t.groupName===e}));function et(t){return!!G(t)||!Ft.hasNoTests()&&(!Gt(t)&&(!function(t){return Ft.someIncompleteTests((e=>!z(e,t)&&!G(t)))}(t)&&function(t){return Ft.everyTest((e=>st(e,t)))}(t)))}function nt(t,e){return!!G(e)||!function(t,e,n){return Ft.someTests((s=>!tt(s,e)&&yt(s,t,n)))}(K.ERRORS,t,e)&&(!function(t,e){return Ft.someIncompleteTests((n=>!tt(n,t)&&(!z(n,e)&&!G(e))))}(t,e)&&function(t,e){return Ft.everyTest((n=>!!tt(n,t)||st(n,e)))}(t,e))}function st(e,n){return!!z(e,n)||(e.isOmitted()||e.isTested()||function(e){var n;return(null===(n=t.useAvailableRoot())||void 0===n?void 0:n.getOptionalField(e.fieldName).type)===L.AUTO&&e.awaitsResolution()}(e))}function rt(){const t=new Z;return Ft.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=ut(s[n],e),s[n].valid=!1!==s[n].valid&&et(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=e;if(!n)return t;const r=Object.assign({},t);return r[n]=r[n]||{},r[n][s]=ut(r[n][s],e),r[n][s].valid=!1!==r[n][s].valid&&nt(n,s),r}(t.groups,e),t.errors=it(K.ERRORS,t.errors,e),t.warnings=it(K.WARNINGS,t.warnings,e)})),t.valid=et(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount;return t}(t)}function it(t,e,n){if(n.isOmitted())return e;return(t===K.WARNINGS?n.isWarning():n.isFailing())?e.concat($.fromTestObject(n)):e}function ut(t,e){const{message:n}=e,s=l(t?Object.assign({},t):null,ot);return e.isNonActionable()||(s.testCount++,e.isFailing()?r(K.ERRORS):e.isWarning()&&r(K.WARNINGS)),s;function r(t){const e=q(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function ot(){return f(new Q,{errors:[],warnings:[],valid:!0})}function at(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=q(e);for(const r in t)N(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function ct(t){const e={getError:function(e){return dt(K.ERRORS,t,e)},getErrors:function(e){return Et(t,K.ERRORS,e)},getErrorsByGroup:function(e,n){return lt(t,K.ERRORS,e,n)},getWarning:function(e){return dt(K.WARNINGS,t,e)},getWarnings:function(e){return Et(t,K.WARNINGS,e)},getWarningsByGroup:function(e,n){return lt(t,K.WARNINGS,e,n)},hasErrors:function(e){return Tt(t,j.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return Nt(t,j.ERROR_COUNT,e,n)},hasWarnings:function(e){return Tt(t,j.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return Nt(t,j.WARN_COUNT,e,n)},isValid:function(e){var n;return e?Boolean(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 ft(s,n);for(const t in s)if(!ft(s,t))return!1;return!0}};return e}function Et(t,e,n){return at(t.tests,e,n)}function lt(t,e,n,s){return at(t.groups[n],e,s)}function ft(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function Nt(t,e,n,s){var r,i;const u=t.groups[n];if(!u)return!1;if(s)return N(null===(r=u[s])||void 0===r?void 0:r[e]);for(const t in u)if(N(null===(i=u[t])||void 0===i?void 0:i[e]))return!0;return!1}function Tt(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return N(r)}function dt(t,e,n){var s;const r=e[t];return n?null===(s=r.find((t=>J(t,n))))||void 0===s?void 0:s.message:r[0]}function St(){return t=()=>{const t=rt(),e=b().suiteName;return Object.freeze(f(t,ct(t),{suiteName:e}))},(0,b().suiteResultCache)([B()],t);var t}function Rt(t,n){e.create((()=>{wt.run({skipped:It()||T(t,T(St))},n)}))}function It(){return function(){var t;return null!==(t=wt.useX().skipped)&&void 0!==t&&t}()}function _t(t){return gt(0,"tests",t)}function pt(t){return gt(1,"tests",t)}function mt(t){const{fieldName:e,groupName:n}=t;if(It())return!0;const s=Bt(),r=kt(),i=s.tests,u=i[e];if(!1===u)return!0;const o=!0===u;if(n){if(function(t){const e=Bt().groups;if(d(e,t))return!1===e[t];return Ot()}(n))return!0;if(!0===s.groups[n])return!o&&(!!ht(i)||!1===i[e])}return!!function(t){if(!Ot())return!1;return!t}(n)||!o&&(!!ht(i)&&!T(r[e]))}function gt(t,e,n){const s=Bt(V.HOOK_CALLED_OUTSIDE);n&&u(n).forEach((n=>{i(n)&&(s[e][n]=0===t)}))}function ht(t){for(const e in t)if(!0===t[e])return!0;return!1}function Ot(){const t=Bt();for(const e in t.groups)if(t.groups[e])return!0;return!1}function At(t,n){e.create((()=>{wt.run({omitted:Dt()||T(t,T(St))},n)}))}function Dt(){return function(){var t;return null!==(t=wt.useX().omitted)&&void 0!==t&&t}()}function Ct(t,e=t){return function(t){if(Mt(Wt.ONE))return Gt();if(Mt(Wt.EAGER))return Gt(t.fieldName);return!1}(t)?((n=t).skip(),n):function(t){return Dt()||G(t.fieldName)}(t)?function(t){return t.omit(),t}(t):mt(t)?function(t){return t.skip(It()),t}(e):t;var n}var vt,Ut;_t.group=function(t){return gt(0,"groups",t)},pt.group=function(t){return gt(1,"groups",t)},function(t){t.UNTESTED="UNTESTED",t.SKIPPED="SKIPPED",t.FAILED="FAILED",t.WARNING="WARNING",t.PASSING="PASSING",t.PENDING="PENDING",t.CANCELED="CANCELED",t.OMITTED="OMITTED"}(vt||(vt={})),function(t){t.RESET="RESET"}(Ut||(Ut={}));const Lt={initial:vt.UNTESTED,states:{"*":{[vt.OMITTED]:vt.OMITTED,[Ut.RESET]:vt.UNTESTED},[vt.UNTESTED]:{[vt.CANCELED]:vt.CANCELED,[vt.FAILED]:vt.FAILED,[vt.PASSING]:vt.PASSING,[vt.PENDING]:vt.PENDING,[vt.SKIPPED]:vt.SKIPPED,[vt.WARNING]:vt.WARNING},[vt.PENDING]:{[vt.CANCELED]:vt.CANCELED,[vt.FAILED]:vt.FAILED,[vt.PASSING]:vt.PASSING,[vt.SKIPPED]:[vt.SKIPPED,t=>!0===t],[vt.WARNING]:vt.WARNING},[vt.SKIPPED]:{},[vt.FAILED]:{},[vt.WARNING]:{},[vt.PASSING]:{},[vt.CANCELED]:{},[vt.OMITTED]:{}}};class Pt extends e{constructor({fieldName:t,testFn:e,message:n,groupName:s,key:r=null}){super(),this.children=null,this.id=c(),this.severity=X.Error,this.stateMachine=_(Lt),this.fieldName=t,this.testFn=e,s&&(this.groupName=s),n&&(this.message=n),this.setKey(r)}static create(t,e){return Pt.cast(super.create(t,e))}static cast(t){return Pt.isX(t),t}get status(){return this.stateMachine.getState()}setStatus(t,e){this.stateMachine.transition(t,e)}run(){let t;try{t=this.testFn()}catch(e){(function(t,e){return p(t)&&i(e)})(this.message,e)&&(this.message=e),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===X.Warning}isPending(){return this.statusEquals(vt.PENDING)}isOmitted(){return this.statusEquals(vt.OMITTED)}isUntested(){return this.statusEquals(vt.UNTESTED)}isFailing(){return this.statusEquals(vt.FAILED)}isCanceled(){return this.statusEquals(vt.CANCELED)}isSkipped(){return this.statusEquals(vt.SKIPPED)}isPassing(){return this.statusEquals(vt.PASSING)}isWarning(){return this.statusEquals(vt.WARNING)}hasFailures(){return this.isFailing()||this.isWarning()}isNonActionable(){return this.isSkipped()||this.isOmitted()||this.isCanceled()}isTested(){return this.hasFailures()||this.isPassing()}awaitsResolution(){return this.isSkipped()||this.isUntested()||this.isPending()}statusEquals(t){return this.status===t}setPending(){this.setStatus(vt.PENDING)}fail(){this.setStatus(this.warns()?vt.WARNING:vt.FAILED)}pass(){this.setStatus(vt.PASSING)}warn(){this.severity=X.Warning}skip(t){this.setStatus(vt.SKIPPED,t)}cancel(){this.setStatus(vt.CANCELED)}reset(){this.stateMachine.transition(Ut.RESET)}omit(){this.setStatus(vt.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return m(this.asyncTest)}static is(t){return t instanceof Pt}static isX(t){g(this.is(t))}}Pt.reconciler=function(t,e){if(!Pt.is(t))return t;if(S(e))return function(t){if(t.usesKey())return Pt.cast(n.handleIsolateNodeWithKey(t));return t}(t);if(!Pt.is(e))return t;const s=function(t,e){const s=function(t,e){if(t.usesKey())return Pt.cast(n.handleIsolateNodeWithKey(t));if(function(t,e){return!!Pt.is(e)&&!Y(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;R(I(V.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:t.fieldName,prevName:Pt.is(e)?e.fieldName:void 0}))}(t,e),n.removeAllNextNodesInIsolate(),t}(t,e);if(!Pt.is(e))return t;if(e.isOmitted())return t;return e}(e,t);return Ct(e,s)}(e,t);return function(t,e,n){t===e&&Pt.is(e)&&(r=e)!==(s=n)&&Y(s,r)&&s.isPending()&&s.cancel();var s,r}(s,t,e),s};class Ft{static defaultRoot(){return t.useAvailableRoot()}static hasNoTests(t=Ft.defaultRoot()){return!t||!s.has(t,Pt.is)}static someIncompleteTests(t,e=Ft.defaultRoot()){return!!e&&s.some(e,(e=>(Pt.isX(e),e.isPending()&&t(e))),Pt.is)}static someTests(t,e=Ft.defaultRoot()){return!!e&&s.some(e,(e=>(Pt.isX(e),t(e))),Pt.is)}static everyTest(t,e=Ft.defaultRoot()){return!!e&&s.every(e,(e=>(Pt.isX(e),t(e))),Pt.is)}static walkTests(t,e=Ft.defaultRoot()){e&&s.walk(e,((e,n)=>{t(Pt.cast(e),n)}),Pt.is)}static hasRemainingTests(t){return Ft.someIncompleteTests((e=>!t||J(e,t)))}static pluckTests(t,e=Ft.defaultRoot()){e&&s.pluck(e,(e=>(Pt.isX(e),t(e))),Pt.is)}static resetField(t){Ft.walkTests((e=>{J(e,t)&&e.reset()}),Ft.defaultRoot())}static removeTestByFieldName(t,e=Ft.defaultRoot()){Ft.pluckTests((e=>J(e,t)),e)}}function Gt(t){return function(t,e){return Ft.someTests((n=>yt(n,t,e)))}(K.ERRORS,t)}function yt(t,e,n){return!!t.hasFailures()&&(!z(t,n)&&!function(t,e){return h(t===K.WARNINGS,e.warns())}(e,t))}var Wt;function bt(t){const[,e]=Kt();e(t)}function Mt(t){const[e]=Kt();return e===t}!function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(Wt||(Wt={}));const wt=U(((t,e)=>e?null:f({exclusion:{tests:{},groups:{}},inclusion:{},mode:a.createTinyState(Wt.EAGER),testMemoCache:jt},t)));function Bt(t){return wt.useX(t).exclusion}function kt(){return wt.useX().inclusion}function Kt(){return wt.useX().mode()}const jt=o(10);function Xt(){const e=t.useAvailableRoot(),n=t.useEmit(),s=null==e?void 0:e.getOptionalFields();if(O(s))return;const r=new Set;function i(t){r.has(t.fieldName)&&(t.omit(),null==e||e.setOptionalField(t.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Ft.walkTests((t=>{t.isPending()||(d(r,t.fieldName)?i(t):function(t){const n=null==e?void 0:e.getOptionalField(t.fieldName);if(S(n))return;!0===T(n.rule)&&r.add(t.fieldName);i(t)}(t))})),n(P.DONE_TEST_OMISSION_PASS)}function Vt(){const e=t.useBus();return n(P.TEST_COMPLETED,(t=>{t.isCanceled()||(!function(t){const[e]=w();t&&!Ft.hasRemainingTests(t)&&r(e[t])&&A(e[t])}(t.fieldName),Ft.hasRemainingTests()||e.emit(P.ALL_RUNNING_TESTS_FINISHED))})),n(P.TEST_RUN_STARTED,(()=>{})),n(P.DONE_TEST_OMISSION_PASS,(()=>{})),n(P.ALL_RUNNING_TESTS_FINISHED,(()=>{Ft.someTests((t=>t.isAsyncTest()))&&Xt(),function(){const[t]=M();A(t)}()})),n(P.RESET_FIELD,(t=>{Ft.resetField(t)})),n(P.SUITE_RUN_STARTED,(()=>{k()})),n(P.SUITE_CALLBACK_RUN_FINISHED,(()=>{Xt()})),n(P.REMOVE_FIELD,(t=>{Ft.removeTestByFieldName(t)})),n(P.RESET_SUITE,(()=>{k(),t.reset()})),e;function n(t,n){e.on(t,((...t)=>{b().suiteResultCache.invalidate([B()]),n(...t)}))}}function xt(t){const e=kt(),n=Bt();return g(i(t)),e[t]=l(n.tests[t],!0),{when:function(e){const n=kt(),s=Bt();n[t]=()=>d(s.tests,t)?l(s.tests[t],!0):i(e)?Boolean(s.tests[e]):T(e,T(St))}}}function Ht(e){if(Ct(e),e.isUntested())return function(e){const n=t.useBus(),s=function(t){return wt.run({currentTest:t},(()=>t.run()))}(e);try{m(s)?(e.asyncTest=s,function(e){const{asyncTest:n,message:s}=e;if(!m(n))return;e.setPending();const r=t.useBus(),u=t.persist((()=>{qt(r,e)})),o=t.persist((t=>{e.isCanceled()||(e.message=i(t)?t:s,e.fail(),u())}));n.then(u,o)}(e)):qt(n,e)}catch(t){throw new Error(I(V.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(e),error:t}))}}(e);e.isNonActionable()||R(I(V.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(e)}))}function qt(t,e){e.pass(),t.emit(P.TEST_COMPLETED,e)}function zt(e,...n){const[s,r,u]=C(n[1])?n:[void 0,...n];!function(t,e){const n="test";g(i(t),I(V.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),g(C(e),I(V.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(e,r);const o={fieldName:e,groupName:wt.useX().groupName,key:u,message:s,testFn:r};return t.useEmit()(P.TEST_RUN_STARTED),Pt.create(Ht,o)}const Jt=f(zt,{memo:function(e){return function(n,...s){const[r,i,u]=s.reverse();return function(t,e){const n=wt.useX().testMemoCache,s=n.get(t);if(D(s))return n(t,e);const[,r]=s;if(r.isCanceled())return n.invalidate(t),n(t,e);return Pt.setNode(r),r}([B(),n,t.useCurrentCursor()].concat(r),(function(){return e(n,u,i)}))}}(zt)});function Yt(){return{group:ne,include:xt,omitWhen:At,only:_t,optional:F,skip:pt,skipWhen:Rt,test:Jt}}function Qt(){return Object.freeze(f({done:t.persist(Zt)},St()))}function Zt(...t){const[e,n]=t.reverse(),s=Qt();if(function(t,e,n){var s;return!!(!C(t)||e&&v(null===(s=n.tests[e])||void 0===s?void 0:s.testCount,0))}(e,n,s))return s;const r=()=>e(St());return Ft.hasRemainingTests(n)?(function(t,e){const[,n]=w(),[,s]=M();e?n((n=>f(n,{[e]:(n[e]||[]).concat(t)}))):s((e=>e.concat(t)))}(r,n),s):(r(),s)}function $t(...e){const[n,s]=e.reverse();!function(t){g(C(t),V.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(n);const r=function({suiteName:e}={}){const n={doneCallbacks:a.createTinyState((()=>[])),fieldCallbacks:a.createTinyState((()=>({}))),suiteId:c(),suiteName:e,suiteResultCache:W};return t.createRef(n)}({suiteName:s});function i(...e){return wt.run({},(()=>(t.useEmit()(P.SUITE_RUN_STARTED),y.create(function(e,...n){const s=t.useEmit();return()=>(e(...n),s(P.SUITE_CALLBACK_RUN_FINISHED),Qt())}(n,...e))))).output}return t.Run(r,(()=>{return Vt(),f(t.persist(i),Object.assign(Object.assign({get:t.persist(St),remove:t.usePrepareEmitter(P.REMOVE_FIELD),reset:t.usePrepareEmitter(P.RESET_SUITE),resetField:t.usePrepareEmitter(P.RESET_FIELD)},(e=t.persist(St),{getError:(...t)=>e().getError(...t),getErrors:(...t)=>e().getErrors(...t),getErrorsByGroup:(...t)=>e().getErrorsByGroup(...t),getWarning:(...t)=>e().getWarning(...t),getWarnings:(...t)=>e().getWarnings(...t),getWarningsByGroup:(...t)=>e().getWarningsByGroup(...t),hasErrors:(...t)=>e().hasErrors(...t),hasErrorsByGroup:(...t)=>e().hasErrorsByGroup(...t),hasWarnings:(...t)=>e().hasWarnings(...t),hasWarningsByGroup:(...t)=>e().hasWarningsByGroup(...t),isValid:(...t)=>e().isValid(...t),isValidByGroup:(...t)=>e().isValidByGroup(...t)})),Yt()));var e}))}class te extends e{constructor(){super(...arguments),this.allowReorder=!0}}function ee(t,e){g(C(e),V.EACH_CALLBACK_MUST_BE_A_FUNCTION),te.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}function ne(t,n){return e.create((()=>{wt.run({groupName:t},n)}))}function se(t){return f(((...e)=>$t(t)(...e)),Object.assign({},Yt()))}const re=V.WARN_MUST_BE_CALLED_FROM_TEST;function ie(){const t=(e=V.HOOK_CALLED_OUTSIDE,wt.useX(e).currentTest);var e;g(t,re),t.warn()}export{Wt as Modes,$t as create,ee as each,ne as group,xt as include,bt as mode,At as omitWhen,_t as only,F as optional,pt as skip,Rt as skipWhen,se as staticSuite,ct as suiteSelectors,Jt as test,ie as warn};
1
+ export{enforce}from"n4s";import{isArray as t,isStringValue as e,asArray as n,cache as s,tinyState as r,seq as i,assign as u,bindNot as o,either as a,defaultTo as c,isPositive as E,optionalFunctionValue as l,hasOwnProperty as f,isNullish as N,deferThrow as T,text as d,StateMachine as S,isUndefined as R,isPromise as I,invariant as _,isEmpty as p,callEach as m,isNull as g,isFunction as h,numberEquals as O}from"vest-utils";import{VestRuntime as A,Isolate as D,Reconciler as C,Walker as v}from"vestjs-runtime";import{createCascade as U}from"context";var L,P,F;function G(s){const r=A.useAvailableRoot();if(t(s)||e(s))n(s).forEach((t=>{r.setOptionalField(t,(()=>({type:L.AUTO,applied:!1,rule:null})))}));else for(const t in s){const e=s[t];r.setOptionalField(t,(()=>({type:L.CUSTOM_LOGIC,rule:e,applied:!0===e})))}}function y(t){var e,n,s;return!!t&&(null!==(s=null===(n=null===(e=A.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t))||void 0===n?void 0:n.applied)&&void 0!==s&&s)}!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(L||(L={})),function(t){t.EAGER="EAGER",t.ALL="ALL",t.ONE="ONE"}(P||(P={})),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"}(F||(F={}));class W extends D{constructor(){super(...arguments),this.optional={}}setOptionalField(t,e){const n=this.optional,s=n[t];Object.assign(n,{[t]:Object.assign({},s,e(s))})}getOptionalField(t){var e;return null!==(e=this.optional[t])&&void 0!==e?e:{}}getOptionalFields(){return this.optional}}const b=s();function M(){return A.useXAppData()}function w(){return M().doneCallbacks()}function B(){return M().fieldCallbacks()}function k(){return M().suiteId}function K(){const[,,t]=w(),[,,e]=B();t(),e()}const j=U(((t,e)=>e?null:u({exclusion:{tests:{},groups:{}},inclusion:{},mode:r.createTinyState(P.EAGER),testMemoCache:H},t)));function X(t){return j.useX(t).exclusion}function V(){return j.useX().inclusion}function x(){return j.useX().mode()}const H=s(10);var q,z,J,Y,Q,Z;function $(t,e){return!!e&&!tt(t,e)}function tt(t,e){return!(!e||t.fieldName!==e)}function et(t,e){return tt(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}function nt(t){return t===z.ERRORS?J.ERROR_COUNT:J.WARN_COUNT}!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}."}(q||(q={})),function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(z||(z={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(J||(J={})),function(t){t.Error="error",t.Warning="warning"}(Y||(Y={}));class st{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class rt extends st{constructor(){super(...arguments),this[Q]=[],this[Z]=[],this.groups={},this.tests={},this.valid=!1}}Q=z.ERRORS,Z=z.WARNINGS;class it{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new it(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const ut=o((function(t,e){return t.groupName===e}));function ot(t){return function(t,e){return Xt.someTests((n=>at(n,t,e)))}(z.ERRORS,t)}function at(t,e,n){return!!t.hasFailures()&&(!$(t,n)&&!function(t,e){return a(t===z.WARNINGS,e.warns())}(e,t))}function ct(t){return!!y(t)||!Xt.hasNoTests()&&(!ot(t)&&(!function(t){return Xt.someIncompleteTests((e=>!$(e,t)&&!y(t)))}(t)&&function(t){return Xt.everyTest((e=>lt(e,t)))}(t)))}function Et(t,e){return!!y(e)||!function(t,e,n){return Xt.someTests((s=>!ut(s,e)&&at(s,t,n)))}(z.ERRORS,t,e)&&(!function(t,e){return Xt.someIncompleteTests((n=>!ut(n,t)&&(!$(n,e)&&!y(e))))}(t,e)&&function(t,e){return Xt.everyTest((n=>!!ut(n,t)||lt(n,e)))}(t,e))}function lt(t,e){return!!$(t,e)||(t.isOmitted()||t.isTested()||function(t){var e;return(null===(e=A.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t.fieldName).type)===L.AUTO&&t.awaitsResolution()}(t))}function ft(){const t=new rt;return Xt.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=Tt(s[n],e),s[n].valid=!1!==s[n].valid&&ct(n),s}(t.tests,e),t.groups=function(t,e){const{groupName:n,fieldName:s}=e;if(!n)return t;const r=Object.assign({},t);return r[n]=r[n]||{},r[n][s]=Tt(r[n][s],e),r[n][s].valid=!1!==r[n][s].valid&&Et(n,s),r}(t.groups,e),t.errors=Nt(z.ERRORS,t.errors,e),t.warnings=Nt(z.WARNINGS,t.warnings,e)})),t.valid=ct(),function(t){for(const e in t.tests)t.errorCount+=t.tests[e].errorCount,t.warnCount+=t.tests[e].warnCount,t.testCount+=t.tests[e].testCount;return t}(t)}function Nt(t,e,n){if(n.isOmitted())return e;return(t===z.WARNINGS?n.isWarning():n.isFailing())?e.concat(it.fromTestObject(n)):e}function Tt(t,e){const{message:n}=e,s=c(t?Object.assign({},t):null,dt);return e.isNonActionable()||(s.testCount++,e.isFailing()?r(z.ERRORS):e.isWarning()&&r(z.WARNINGS)),s;function r(t){const e=nt(t);s[e]++,n&&(s[t]=(s[t]||[]).concat(n))}}function dt(){return u(new st,{errors:[],warnings:[],valid:!0})}function St(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=nt(e);for(const r in t)E(t[r][s])&&(n[r]=t[r][e]||[]);return n}(t,e)}function Rt(t){const e={getError:function(e){return ht(z.ERRORS,t,e)},getErrors:function(e){return It(t,z.ERRORS,e)},getErrorsByGroup:function(e,n){return _t(t,z.ERRORS,e,n)},getWarning:function(e){return ht(z.WARNINGS,t,e)},getWarnings:function(e){return It(t,z.WARNINGS,e)},getWarningsByGroup:function(e,n){return _t(t,z.WARNINGS,e,n)},hasErrors:function(e){return gt(t,J.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return mt(t,J.ERROR_COUNT,e,n)},hasWarnings:function(e){return gt(t,J.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return mt(t,J.WARN_COUNT,e,n)},isValid:function(e){var n;return e?Boolean(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 pt(s,n);for(const t in s)if(!pt(s,t))return!1;return!0}};return e}function It(t,e,n){return St(t.tests,e,n)}function _t(t,e,n,s){return St(t.groups[n],e,s)}function pt(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function mt(t,e,n,s){var r,i;const u=t.groups[n];if(!u)return!1;if(s)return E(null===(r=u[s])||void 0===r?void 0:r[e]);for(const t in u)if(E(null===(i=u[t])||void 0===i?void 0:i[e]))return!0;return!1}function gt(t,e,n){var s;const r=n?null===(s=t.tests[n])||void 0===s?void 0:s[e]:t[e]||0;return E(r)}function ht(t,e,n){var s;const r=e[t];return n?null===(s=r.find((t=>tt(t,n))))||void 0===s?void 0:s.message:r[0]}function Ot(){return t=()=>{const t=ft(),e=M().suiteName;return Object.freeze(u(t,Rt(t),{suiteName:e}))},(0,M().suiteResultCache)([k()],t);var t}function At(t,e){D.create((()=>{j.run({skipped:Dt()||l(t,l(Ot))},e)}))}function Dt(){return function(){var t;return null!==(t=j.useX().skipped)&&void 0!==t&&t}()}function Ct(t){return Lt(0,"tests",t)}function vt(t){return Lt(1,"tests",t)}function Ut(t){const{fieldName:e,groupName:n}=t;if(Dt())return!0;const s=X(),r=V(),i=s.tests,u=i[e];if(!1===u)return!0;const o=!0===u;if(n){if(function(t){const e=X().groups;if(f(e,t))return!1===e[t];return Ft()}(n))return!0;if(!0===s.groups[n])return!o&&(!!Pt(i)||!1===i[e])}return!!function(t){if(!Ft())return!1;return!t}(n)||!o&&(!!Pt(i)&&!l(r[e]))}function Lt(t,s,r){const i=X(q.HOOK_CALLED_OUTSIDE);r&&n(r).forEach((n=>{e(n)&&(i[s][n]=0===t)}))}function Pt(t){for(const e in t)if(!0===t[e])return!0;return!1}function Ft(){const t=X();for(const e in t.groups)if(t.groups[e])return!0;return!1}function Gt(t){const[,e]=x();e(t)}function yt(t){const[e]=x();return e===t}function Wt(t){return yt(P.ONE)?ot():!!yt(P.EAGER)&&ot(t.fieldName)}function bt(t,e){D.create((()=>{j.run({omitted:Mt()||l(t,l(Ot))},e)}))}function Mt(){return function(){var t;return null!==(t=j.useX().omitted)&&void 0!==t&&t}()}function wt(t,e=t){return Wt(t)?((n=t).skip(),n):function(t){return Mt()||y(t.fieldName)}(t)?function(t){return t.omit(),t}(t):Ut(t)?function(t){return t.skip(Dt()),t}(e):t;var n}var Bt,kt;Ct.group=function(t){return Lt(0,"groups",t)},vt.group=function(t){return Lt(1,"groups",t)},function(t){t.UNTESTED="UNTESTED",t.SKIPPED="SKIPPED",t.FAILED="FAILED",t.WARNING="WARNING",t.PASSING="PASSING",t.PENDING="PENDING",t.CANCELED="CANCELED",t.OMITTED="OMITTED"}(Bt||(Bt={})),function(t){t.RESET="RESET"}(kt||(kt={}));const Kt={initial:Bt.UNTESTED,states:{"*":{[Bt.OMITTED]:Bt.OMITTED,[kt.RESET]:Bt.UNTESTED},[Bt.UNTESTED]:{[Bt.CANCELED]:Bt.CANCELED,[Bt.FAILED]:Bt.FAILED,[Bt.PASSING]:Bt.PASSING,[Bt.PENDING]:Bt.PENDING,[Bt.SKIPPED]:Bt.SKIPPED,[Bt.WARNING]:Bt.WARNING},[Bt.PENDING]:{[Bt.CANCELED]:Bt.CANCELED,[Bt.FAILED]:Bt.FAILED,[Bt.PASSING]:Bt.PASSING,[Bt.SKIPPED]:[Bt.SKIPPED,t=>!0===t],[Bt.WARNING]:Bt.WARNING},[Bt.SKIPPED]:{},[Bt.FAILED]:{},[Bt.WARNING]:{},[Bt.PASSING]:{},[Bt.CANCELED]:{},[Bt.OMITTED]:{}}};class jt extends D{constructor({fieldName:t,testFn:e,message:n,groupName:s,key:r=null}){super(),this.children=null,this.id=i(),this.severity=Y.Error,this.stateMachine=S(Kt),this.fieldName=t,this.testFn=e,s&&(this.groupName=s),n&&(this.message=n),this.setKey(r)}static create(t,e){return jt.cast(super.create(t,e))}static cast(t){return jt.isX(t),t}get status(){return this.stateMachine.getState()}setStatus(t,e){this.stateMachine.transition(t,e)}run(){let t;try{t=this.testFn()}catch(n){(function(t,n){return R(t)&&e(n)})(this.message,n)&&(this.message=n),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===Y.Warning}isPending(){return this.statusEquals(Bt.PENDING)}isOmitted(){return this.statusEquals(Bt.OMITTED)}isUntested(){return this.statusEquals(Bt.UNTESTED)}isFailing(){return this.statusEquals(Bt.FAILED)}isCanceled(){return this.statusEquals(Bt.CANCELED)}isSkipped(){return this.statusEquals(Bt.SKIPPED)}isPassing(){return this.statusEquals(Bt.PASSING)}isWarning(){return this.statusEquals(Bt.WARNING)}hasFailures(){return this.isFailing()||this.isWarning()}isNonActionable(){return this.isSkipped()||this.isOmitted()||this.isCanceled()}isTested(){return this.hasFailures()||this.isPassing()}awaitsResolution(){return this.isSkipped()||this.isUntested()||this.isPending()}statusEquals(t){return this.status===t}setPending(){this.setStatus(Bt.PENDING)}fail(){this.setStatus(this.warns()?Bt.WARNING:Bt.FAILED)}pass(){this.setStatus(Bt.PASSING)}warn(){this.severity=Y.Warning}skip(t){this.setStatus(Bt.SKIPPED,t)}cancel(){this.setStatus(Bt.CANCELED)}reset(){this.stateMachine.transition(kt.RESET)}omit(){this.setStatus(Bt.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return I(this.asyncTest)}static is(t){return t instanceof jt}static isX(t){_(this.is(t))}}jt.reconciler=function(t,e){if(!jt.is(t))return t;if(N(e))return function(t){if(t.usesKey())return jt.cast(C.handleIsolateNodeWithKey(t));return t}(t);if(!jt.is(e))return t;const n=function(t,e){const n=function(t,e){if(t.usesKey())return jt.cast(C.handleIsolateNodeWithKey(t));if(function(t,e){return!!jt.is(e)&&!et(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;T(d(q.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:t.fieldName,prevName:jt.is(e)?e.fieldName:void 0}))}(t,e),C.removeAllNextNodesInIsolate(),t}(t,e);if(!jt.is(e))return t;if(e.isOmitted())return t;return e}(e,t);return wt(e,n)}(e,t);return function(t,e,n){t===e&&jt.is(e)&&(r=e)!==(s=n)&&et(s,r)&&s.isPending()&&s.cancel();var s,r}(n,t,e),n};class Xt{static defaultRoot(){return A.useAvailableRoot()}static hasNoTests(t=Xt.defaultRoot()){return!t||!v.has(t,jt.is)}static someIncompleteTests(t,e=Xt.defaultRoot()){return!!e&&v.some(e,(e=>(jt.isX(e),e.isPending()&&t(e))),jt.is)}static someTests(t,e=Xt.defaultRoot()){return!!e&&v.some(e,(e=>(jt.isX(e),t(e))),jt.is)}static everyTest(t,e=Xt.defaultRoot()){return!!e&&v.every(e,(e=>(jt.isX(e),t(e))),jt.is)}static walkTests(t,e=Xt.defaultRoot()){e&&v.walk(e,((e,n)=>{t(jt.cast(e),n)}),jt.is)}static hasRemainingTests(t){return Xt.someIncompleteTests((e=>!t||tt(e,t)))}static pluckTests(t,e=Xt.defaultRoot()){e&&v.pluck(e,(e=>(jt.isX(e),t(e))),jt.is)}static resetField(t){Xt.walkTests((e=>{tt(e,t)&&e.reset()}),Xt.defaultRoot())}static removeTestByFieldName(t,e=Xt.defaultRoot()){Xt.pluckTests((e=>tt(e,t)),e)}}function Vt(){const t=A.useAvailableRoot(),e=A.useEmit(),n=null==t?void 0:t.getOptionalFields();if(p(n))return;const s=new Set;function r(e){s.has(e.fieldName)&&(e.omit(),null==t||t.setOptionalField(e.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}Xt.walkTests((e=>{e.isPending()||(f(s,e.fieldName)?r(e):function(e){const n=null==t?void 0:t.getOptionalField(e.fieldName);if(N(n))return;!0===l(n.rule)&&s.add(e.fieldName);r(e)}(e))})),e(F.DONE_TEST_OMISSION_PASS)}function xt(){const e=A.useBus();return n(F.TEST_COMPLETED,(n=>{n.isCanceled()||(!function(e){const[n]=B();e&&!Xt.hasRemainingTests(e)&&t(n[e])&&m(n[e])}(n.fieldName),Xt.hasRemainingTests()||e.emit(F.ALL_RUNNING_TESTS_FINISHED))})),n(F.TEST_RUN_STARTED,(()=>{})),n(F.DONE_TEST_OMISSION_PASS,(()=>{})),n(F.ALL_RUNNING_TESTS_FINISHED,(()=>{Xt.someTests((t=>t.isAsyncTest()))&&Vt(),function(){const[t]=w();m(t)}()})),n(F.RESET_FIELD,(t=>{Xt.resetField(t)})),n(F.SUITE_RUN_STARTED,(()=>{K()})),n(F.SUITE_CALLBACK_RUN_FINISHED,(()=>{Vt()})),n(F.REMOVE_FIELD,(t=>{Xt.removeTestByFieldName(t)})),n(F.RESET_SUITE,(()=>{K(),A.reset()})),e;function n(t,n){e.on(t,((...t)=>{M().suiteResultCache.invalidate([k()]),n(...t)}))}}function Ht(t,e){return D.create((()=>{j.run({groupName:t},e)}))}function qt(t){const n=V(),s=X();return _(e(t)),n[t]=c(s.tests[t],!0),{when:function(n){const s=V(),r=X();s[t]=()=>f(r.tests,t)?c(r.tests[t],!0):e(n)?Boolean(r.tests[n]):l(n,l(Ot))}}}function zt(t){if(wt(t),t.isUntested())return function(t){const n=A.useBus(),s=function(t){return j.run({currentTest:t},(()=>t.run()))}(t);try{I(s)?(t.asyncTest=s,function(t){const{asyncTest:n,message:s}=t;if(!I(n))return;t.setPending();const r=A.useBus(),i=A.persist((()=>{Jt(r,t)})),u=A.persist((n=>{t.isCanceled()||(t.message=e(n)?n:s,t.fail(),i())}));n.then(i,u)}(t)):Jt(n,t)}catch(e){throw new Error(d(q.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);t.isNonActionable()||T(d(q.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function Jt(t,e){e.pass(),t.emit(F.TEST_COMPLETED,e)}function Yt(t,...n){const[s,r,i]=h(n[1])?n:[void 0,...n];!function(t,n){const s="test";_(e(t),d(q.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"fieldName",expected:"string"})),_(h(n),d(q.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"callback",expected:"function"}))}(t,r);const u={fieldName:t,groupName:j.useX().groupName,key:i,message:s,testFn:r};return A.useEmit()(F.TEST_RUN_STARTED),jt.create(zt,u)}const Qt=u(Yt,{memo:function(t){return function(e,...n){const[s,r,i]=n.reverse();return function(t,e){const n=j.useX().testMemoCache,s=n.get(t);if(g(s))return n(t,e);const[,r]=s;if(r.isCanceled())return n.invalidate(t),n(t,e);return jt.setNode(r),r}([k(),e,A.useCurrentCursor()].concat(s),(function(){return t(e,i,r)}))}}(Yt)});function Zt(){return{group:Ht,include:qt,omitWhen:bt,only:Ct,optional:G,skip:vt,skipWhen:At,test:Qt}}function $t(){return Object.freeze(u({done:A.persist(te)},Ot()))}function te(...t){const[e,n]=t.reverse(),s=$t();if(function(t,e,n){var s;return!!(!h(t)||e&&O(null===(s=n.tests[e])||void 0===s?void 0:s.testCount,0))}(e,n,s))return s;const r=()=>e(Ot());return Xt.hasRemainingTests(n)?(function(t,e){const[,n]=B(),[,s]=w();e?n((n=>u(n,{[e]:(n[e]||[]).concat(t)}))):s((e=>e.concat(t)))}(r,n),s):(r(),s)}function ee(...t){const[e,n]=t.reverse();!function(t){_(h(t),q.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(e);const s=function({suiteName:t}={}){const e={doneCallbacks:r.createTinyState((()=>[])),fieldCallbacks:r.createTinyState((()=>({}))),suiteId:i(),suiteName:t,suiteResultCache:b};return A.createRef(e)}({suiteName:n});function o(...t){return j.run({},(()=>(A.useEmit()(F.SUITE_RUN_STARTED),W.create(function(t,...e){const n=A.useEmit();return()=>(t(...e),n(F.SUITE_CALLBACK_RUN_FINISHED),$t())}(e,...t))))).output}return A.Run(s,(()=>{return xt(),u(A.persist(o),Object.assign(Object.assign({get:A.persist(Ot),remove:A.usePrepareEmitter(F.REMOVE_FIELD),reset:A.usePrepareEmitter(F.RESET_SUITE),resetField:A.usePrepareEmitter(F.RESET_FIELD)},(t=A.persist(Ot),{getError:(...e)=>t().getError(...e),getErrors:(...e)=>t().getErrors(...e),getErrorsByGroup:(...e)=>t().getErrorsByGroup(...e),getWarning:(...e)=>t().getWarning(...e),getWarnings:(...e)=>t().getWarnings(...e),getWarningsByGroup:(...e)=>t().getWarningsByGroup(...e),hasErrors:(...e)=>t().hasErrors(...e),hasErrorsByGroup:(...e)=>t().hasErrorsByGroup(...e),hasWarnings:(...e)=>t().hasWarnings(...e),hasWarningsByGroup:(...e)=>t().hasWarningsByGroup(...e),isValid:(...e)=>t().isValid(...e),isValidByGroup:(...e)=>t().isValidByGroup(...e)})),Zt()));var t}))}class ne extends D{constructor(){super(...arguments),this.allowReorder=!0}}function se(t,e){_(h(e),q.EACH_CALLBACK_MUST_BE_A_FUNCTION),ne.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))}function re(t){return u(((...e)=>ee(t)(...e)),Object.assign({},Zt()))}const ie=q.WARN_MUST_BE_CALLED_FROM_TEST;function ue(){const t=(e=q.HOOK_CALLED_OUTSIDE,j.useX(e).currentTest);var e;_(t,ie),t.warn()}export{P as Modes,ee as create,se as each,Ht as group,qt as include,Gt as mode,bt as omitWhen,Ct as only,G as optional,vt as skip,At as skipWhen,re as staticSuite,Rt as suiteSelectors,Qt as test,ue as warn};