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.
- package/dist/cjs/vest.development.js +199 -197
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/vest.development.js +165 -163
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/vest.development.js +202 -200
- package/dist/umd/vest.production.js +1 -1
- package/package.json +6 -6
- package/testUtils/asVestTest.ts +1 -1
- package/types/classnames.d.ts +1 -1
- package/types/classnames.d.ts.map +1 -1
- package/types/parser.d.ts +1 -1
- package/types/parser.d.ts.map +1 -1
- package/types/promisify.d.ts +1 -1
- package/types/promisify.d.ts.map +1 -1
- package/types/vest.d.ts +6 -6
- package/types/vest.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("n4s"),require("vest-runtime"),require("vest-utils"),require("context")):"function"==typeof define&&define.amd?define(["exports","n4s","vest-runtime","vest-utils","context"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vest={},t.n4s,t["vest-runtime"],t["vest-utils"],t.context)}(this,(function(t,e,n,s,i){"use strict";var r,u;function o(t){const e=n.VestRuntime.useAvailableRoot();if(s.isArray(t)||s.isStringValue(t))s.asArray(t).forEach((t=>{e.setOptionalField(t,(()=>({type:r.AUTO,applied:!1,rule:null})))}));else for(const n in t){const s=t[n];e.setOptionalField(n,(()=>({type:r.CUSTOM_LOGIC,rule:s,applied:!0===s})))}}function a(t){var e,s,i;return!!t&&(null!==(i=null===(s=null===(e=n.VestRuntime.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t))||void 0===s?void 0:s.applied)&&void 0!==i&&i)}!function(t){t[t.CUSTOM_LOGIC=0]="CUSTOM_LOGIC",t[t.AUTO=1]="AUTO"}(r||(r={})),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"}(u||(u={}));class c extends n.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=s.cache();function E(){return n.VestRuntime.useXAppData()}function f(){return E().doneCallbacks()}function d(){return E().fieldCallbacks()}function N(){return E().suiteId}function T(){const[,,t]=f(),[,,e]=d();t(),e()}var R,S,m,I,p,_;function g(t){return t===R.ERRORS?S.ERROR_COUNT:S.WARN_COUNT}function h(t,e){return!!e&&!O(t,e)}function O(t,e){return!(!e||t.fieldName!==e)}function A(t,e){return O(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}!function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(R||(R={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(S||(S={})),function(t){t.Error="error",t.Warning="warning"}(m||(m={})),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}."}(I||(I={}));class v{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class D extends v{constructor(){super(...arguments),this[p]=[],this[_]=[],this.groups={},this.tests={},this.valid=!1}}p=R.ERRORS,_=R.WARNINGS;class C{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new C(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const P=s.bindNot((function(t,e){return t.groupName===e}));function F(t){return!!a(t)||!ot.hasNoTests()&&(!at(t)&&(!function(t){return ot.someIncompleteTests((e=>!h(e,t)&&!a(t)))}(t)&&function(t){return ot.everyTest((e=>y(e,t)))}(t)))}function U(t,e){return!!a(e)||!function(t,e,n){return ot.someTests((s=>!P(s,e)&&ct(s,t,n)))}(R.ERRORS,t,e)&&(!function(t,e){return ot.someIncompleteTests((n=>!P(n,t)&&(!h(n,e)&&!a(e))))}(t,e)&&function(t,e){return ot.everyTest((n=>!!P(n,t)||y(n,e)))}(t,e))}function y(t,e){return!!h(t,e)||(t.isOmitted()||t.isTested()||function(t){var e;return(null===(e=n.VestRuntime.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t.fieldName).type)===r.AUTO&&t.awaitsResolution()}(t))}function L(){const t=new D;return ot.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=W(s[n],e),s[n].valid=!1!==s[n].valid&&F(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]=W(i[n][s],e),i[n][s].valid=!1!==i[n][s].valid&&U(n,s),i}(t.groups,e),t.errors=G(R.ERRORS,t.errors,e),t.warnings=G(R.WARNINGS,t.warnings,e)})),t.valid=F(),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 G(t,e,n){if(n.isOmitted())return e;return(t===R.WARNINGS?n.isWarning():n.isFailing())?e.concat(C.fromTestObject(n)):e}function W(t,e){const{message:n}=e,i=s.defaultTo(t?Object.assign({},t):null,V);return e.isNonActionable()||(i.testCount++,e.isFailing()?r(R.ERRORS):e.isWarning()&&r(R.WARNINGS)),i;function r(t){const e=g(t);i[e]++,n&&(i[t]=(i[t]||[]).concat(n))}}function V(){return s.assign(new v,{errors:[],warnings:[],valid:!0})}function b(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={},i=g(e);for(const r in t)s.isPositive(t[r][i])&&(n[r]=t[r][e]||[]);return n}(t,e)}function M(t){const e={getError:function(e){return K(R.ERRORS,t,e)},getErrors:function(e){return w(t,R.ERRORS,e)},getErrorsByGroup:function(e,n){return k(t,R.ERRORS,e,n)},getWarning:function(e){return K(R.WARNINGS,t,e)},getWarnings:function(e){return w(t,R.WARNINGS,e)},getWarningsByGroup:function(e,n){return k(t,R.WARNINGS,e,n)},hasErrors:function(e){return j(t,S.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return x(t,S.ERROR_COUNT,e,n)},hasWarnings:function(e){return j(t,S.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return x(t,S.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 B(s,n);for(const t in s)if(!B(s,t))return!1;return!0}};return e}function w(t,e,n){return b(t.tests,e,n)}function k(t,e,n,s){return b(t.groups[n],e,s)}function B(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function x(t,e,n,i){var r,u;const o=t.groups[n];if(!o)return!1;if(i)return s.isPositive(null===(r=o[i])||void 0===r?void 0:r[e]);for(const t in o)if(s.isPositive(null===(u=o[t])||void 0===u?void 0:u[e]))return!0;return!1}function j(t,e,n){var i;const r=n?null===(i=t.tests[n])||void 0===i?void 0:i[e]:t[e]||0;return s.isPositive(r)}function K(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>O(t,n))))||void 0===s?void 0:s.message:i[0]}function X(){return t=()=>{const t=L(),e=E().suiteName;return Object.freeze(s.assign(t,M(t),{suiteName:e}))},(0,E().suiteResultCache)([N()],t);var t}function q(t,e){n.Isolate.create((()=>{ft.run({skipped:H()||s.optionalFunctionValue(t,s.optionalFunctionValue(X))},e)}))}function H(){return function(){var t;return null!==(t=ft.useX().skipped)&&void 0!==t&&t}()}function z(t){return Q(0,"tests",t)}function J(t){return Q(1,"tests",t)}function Y(t){const{fieldName:e,groupName:n}=t;if(H())return!0;const i=dt(),r=Nt(),u=i.tests,o=u[e];if(!1===o)return!0;const a=!0===o;if(n){if(function(t){const e=dt().groups;if(s.hasOwnProperty(e,t))return!1===e[t];return $()}(n))return!0;if(!0===i.groups[n])return!a&&(!!Z(u)||!1===u[e])}return!!function(t){if(!$())return!1;return!t}(n)||!a&&(!!Z(u)&&!s.optionalFunctionValue(r[e]))}function Q(t,e,n){const i=dt(I.HOOK_CALLED_OUTSIDE);n&&s.asArray(n).forEach((n=>{s.isStringValue(n)&&(i[e][n]=0===t)}))}function Z(t){for(const e in t)if(!0===t[e])return!0;return!1}function $(){const t=dt();for(const e in t.groups)if(t.groups[e])return!0;return!1}function tt(t,e){n.Isolate.create((()=>{ft.run({omitted:et()||s.optionalFunctionValue(t,s.optionalFunctionValue(X))},e)}))}function et(){return function(){var t;return null!==(t=ft.useX().omitted)&&void 0!==t&&t}()}function nt(e,n=e){return function(e){if(Et(t.Modes.ONE))return at();if(Et(t.Modes.EAGER))return at(e.fieldName);return!1}(e)?((s=e).skip(),s):function(t){return et()||a(t.fieldName)}(e)?function(t){return t.omit(),t}(e):Y(e)?function(t){return t.skip(H()),t}(n):e;var s}var st,it;z.group=function(t){return Q(0,"groups",t)},J.group=function(t){return Q(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"}(st||(st={})),function(t){t.RESET="RESET"}(it||(it={}));const rt={initial:st.UNTESTED,states:{"*":{[st.OMITTED]:st.OMITTED,[it.RESET]:st.UNTESTED},[st.UNTESTED]:{[st.CANCELED]:st.CANCELED,[st.FAILED]:st.FAILED,[st.PASSING]:st.PASSING,[st.PENDING]:st.PENDING,[st.SKIPPED]:st.SKIPPED,[st.WARNING]:st.WARNING},[st.PENDING]:{[st.CANCELED]:st.CANCELED,[st.FAILED]:st.FAILED,[st.PASSING]:st.PASSING,[st.SKIPPED]:[st.SKIPPED,t=>!0===t],[st.WARNING]:st.WARNING},[st.SKIPPED]:{},[st.FAILED]:{},[st.WARNING]:{},[st.PASSING]:{},[st.CANCELED]:{},[st.OMITTED]:{}}};class ut extends n.Isolate{constructor({fieldName:t,testFn:e,message:n,groupName:i,key:r=null}){super(),this.children=null,this.id=s.seq(),this.severity=m.Error,this.stateMachine=s.StateMachine(rt),this.fieldName=t,this.testFn=e,i&&(this.groupName=i),n&&(this.message=n),this.setKey(r)}static create(t,e){return ut.cast(super.create(t,e))}static cast(t){return ut.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 s.isUndefined(t)&&s.isStringValue(e)})(this.message,e)&&(this.message=e),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===m.Warning}isPending(){return this.statusEquals(st.PENDING)}isOmitted(){return this.statusEquals(st.OMITTED)}isUntested(){return this.statusEquals(st.UNTESTED)}isFailing(){return this.statusEquals(st.FAILED)}isCanceled(){return this.statusEquals(st.CANCELED)}isSkipped(){return this.statusEquals(st.SKIPPED)}isPassing(){return this.statusEquals(st.PASSING)}isWarning(){return this.statusEquals(st.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(st.PENDING)}fail(){this.setStatus(this.warns()?st.WARNING:st.FAILED)}pass(){this.setStatus(st.PASSING)}warn(){this.severity=m.Warning}skip(t){this.setStatus(st.SKIPPED,t)}cancel(){this.setStatus(st.CANCELED)}reset(){this.stateMachine.transition(it.RESET)}omit(){this.setStatus(st.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return s.isPromise(this.asyncTest)}static is(t){return t instanceof ut}static isX(t){s.invariant(this.is(t))}}ut.reconciler=function(t,e){if(!ut.is(t))return t;if(s.isNullish(e))return function(t){if(t.usesKey())return ut.cast(n.Reconciler.handleIsolateNodeWithKey(t));return t}(t);if(!ut.is(e))return t;const i=function(t,e){const i=function(t,e){if(t.usesKey())return ut.cast(n.Reconciler.handleIsolateNodeWithKey(t));if(function(t,e){return!!ut.is(e)&&!A(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;s.deferThrow(s.text(I.TESTS_CALLED_IN_DIFFERENT_ORDER,{fieldName:t.fieldName,prevName:ut.is(e)?e.fieldName:void 0}))}(t,e),n.Reconciler.removeAllNextNodesInIsolate(),t}(t,e);if(!ut.is(e))return t;if(e.isOmitted())return t;return e}(e,t);return nt(e,i)}(e,t);return function(t,e,n){t===e&&ut.is(e)&&(i=e)!==(s=n)&&A(s,i)&&s.isPending()&&s.cancel();var s,i}(i,t,e),i};class ot{static defaultRoot(){return n.VestRuntime.useAvailableRoot()}static hasNoTests(t=ot.defaultRoot()){return!t||!n.Walker.has(t,ut.is)}static someIncompleteTests(t,e=ot.defaultRoot()){return!!e&&n.Walker.some(e,(e=>(ut.isX(e),e.isPending()&&t(e))),ut.is)}static someTests(t,e=ot.defaultRoot()){return!!e&&n.Walker.some(e,(e=>(ut.isX(e),t(e))),ut.is)}static everyTest(t,e=ot.defaultRoot()){return!!e&&n.Walker.every(e,(e=>(ut.isX(e),t(e))),ut.is)}static walkTests(t,e=ot.defaultRoot()){e&&n.Walker.walk(e,((e,n)=>{t(ut.cast(e),n)}),ut.is)}static hasRemainingTests(t){return ot.someIncompleteTests((e=>!t||O(e,t)))}static pluckTests(t,e=ot.defaultRoot()){e&&n.Walker.pluck(e,(e=>(ut.isX(e),t(e))),ut.is)}static resetField(t){ot.walkTests((e=>{O(e,t)&&e.reset()}),ot.defaultRoot())}static removeTestByFieldName(t,e=ot.defaultRoot()){ot.pluckTests((e=>O(e,t)),e)}}function at(t){return function(t,e){return ot.someTests((n=>ct(n,t,e)))}(R.ERRORS,t)}function ct(t,e,n){return!!t.hasFailures()&&(!h(t,n)&&!function(t,e){return s.either(t===R.WARNINGS,e.warns())}(e,t))}var lt;function Et(t){const[e]=Tt();return e===t}t.Modes=void 0,(lt=t.Modes||(t.Modes={})).EAGER="EAGER",lt.ALL="ALL",lt.ONE="ONE";const ft=i.createCascade(((e,n)=>n?null:s.assign({exclusion:{tests:{},groups:{}},inclusion:{},mode:s.tinyState.createTinyState(t.Modes.EAGER),testMemoCache:Rt},e)));function dt(t){return ft.useX(t).exclusion}function Nt(){return ft.useX().inclusion}function Tt(){return ft.useX().mode()}const Rt=s.cache(10);function St(){const t=n.VestRuntime.useAvailableRoot(),e=n.VestRuntime.useEmit(),i=null==t?void 0:t.getOptionalFields();if(s.isEmpty(i))return;const r=new Set;function o(e){r.has(e.fieldName)&&(e.omit(),null==t||t.setOptionalField(e.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}ot.walkTests((e=>{e.isPending()||(s.hasOwnProperty(r,e.fieldName)?o(e):function(e){const n=null==t?void 0:t.getOptionalField(e.fieldName);if(s.isNullish(n))return;!0===s.optionalFunctionValue(n.rule)&&r.add(e.fieldName);o(e)}(e))})),e(u.DONE_TEST_OMISSION_PASS)}function mt(){const t=n.VestRuntime.useBus();return e(u.TEST_COMPLETED,(e=>{e.isCanceled()||(!function(t){const[e]=d();t&&!ot.hasRemainingTests(t)&&s.isArray(e[t])&&s.callEach(e[t])}(e.fieldName),ot.hasRemainingTests()||t.emit(u.ALL_RUNNING_TESTS_FINISHED))})),e(u.TEST_RUN_STARTED,(()=>{})),e(u.DONE_TEST_OMISSION_PASS,(()=>{})),e(u.ALL_RUNNING_TESTS_FINISHED,(()=>{ot.someTests((t=>t.isAsyncTest()))&&St(),function(){const[t]=f();s.callEach(t)}()})),e(u.RESET_FIELD,(t=>{ot.resetField(t)})),e(u.SUITE_RUN_STARTED,(()=>{T()})),e(u.SUITE_CALLBACK_RUN_FINISHED,(()=>{St()})),e(u.REMOVE_FIELD,(t=>{ot.removeTestByFieldName(t)})),e(u.RESET_SUITE,(()=>{T(),n.VestRuntime.reset()})),t;function e(e,n){t.on(e,((...t)=>{E().suiteResultCache.invalidate([N()]),n(...t)}))}}function It(t){const e=Nt(),n=dt();return s.invariant(s.isStringValue(t)),e[t]=s.defaultTo(n.tests[t],!0),{when:function(e){const n=Nt(),i=dt();n[t]=()=>s.hasOwnProperty(i.tests,t)?s.defaultTo(i.tests[t],!0):s.isStringValue(e)?Boolean(i.tests[e]):s.optionalFunctionValue(e,s.optionalFunctionValue(X))}}}function pt(t){if(nt(t),t.isUntested())return function(t){const e=n.VestRuntime.useBus(),i=function(t){return ft.run({currentTest:t},(()=>t.run()))}(t);try{s.isPromise(i)?(t.asyncTest=i,function(t){const{asyncTest:e,message:i}=t;if(!s.isPromise(e))return;t.setPending();const r=n.VestRuntime.useBus(),u=n.VestRuntime.persist((()=>{_t(r,t)})),o=n.VestRuntime.persist((e=>{t.isCanceled()||(t.message=s.isStringValue(e)?e:i,t.fail(),u())}));e.then(u,o)}(t)):_t(e,t)}catch(e){throw new Error(s.text(I.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);t.isNonActionable()||s.deferThrow(s.text(I.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function _t(t,e){e.pass(),t.emit(u.TEST_COMPLETED,e)}function gt(t,...e){const[i,r,o]=s.isFunction(e[1])?e:[void 0,...e];!function(t,e){const n="test";s.invariant(s.isStringValue(t),s.text(I.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"fieldName",expected:"string"})),s.invariant(s.isFunction(e),s.text(I.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:n,param:"callback",expected:"function"}))}(t,r);const a={fieldName:t,groupName:ft.useX().groupName,key:o,message:i,testFn:r};return n.VestRuntime.useEmit()(u.TEST_RUN_STARTED),ut.create(pt,a)}const ht=s.assign(gt,{memo:function(t){return function(e,...i){const[r,u,o]=i.reverse();return function(t,e){const n=ft.useX().testMemoCache,i=n.get(t);if(s.isNull(i))return n(t,e);const[,r]=i;if(r.isCanceled())return n.invalidate(t),n(t,e);return ut.setNode(r),r}([N(),e,n.VestRuntime.useCurrentCursor()].concat(r),(function(){return t(e,o,u)}))}}(gt)});function Ot(){return{group:Pt,include:It,omitWhen:tt,only:z,optional:o,skip:J,skipWhen:q,test:ht}}function At(){return Object.freeze(s.assign({done:n.VestRuntime.persist(vt)},X()))}function vt(...t){const[e,n]=t.reverse(),i=At();if(function(t,e,n){var i;return!!(!s.isFunction(t)||e&&s.numberEquals(null===(i=n.tests[e])||void 0===i?void 0:i.testCount,0))}(e,n,i))return i;const r=()=>e(X());return ot.hasRemainingTests(n)?(function(t,e){const[,n]=d(),[,i]=f();e?n((n=>s.assign(n,{[e]:(n[e]||[]).concat(t)}))):i((e=>e.concat(t)))}(r,n),i):(r(),i)}function Dt(...t){const[e,i]=t.reverse();!function(t){s.invariant(s.isFunction(t),I.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(e);const r=function({suiteName:t}={}){const e={doneCallbacks:s.tinyState.createTinyState((()=>[])),fieldCallbacks:s.tinyState.createTinyState((()=>({}))),suiteId:s.seq(),suiteName:t,suiteResultCache:l};return n.VestRuntime.createRef(e)}({suiteName:i});function o(...t){return ft.run({},(()=>(n.VestRuntime.useEmit()(u.SUITE_RUN_STARTED),c.create(function(t,...e){const s=n.VestRuntime.useEmit();return()=>(t(...e),s(u.SUITE_CALLBACK_RUN_FINISHED),At())}(e,...t))))).output}return n.VestRuntime.Run(r,(()=>{return mt(),s.assign(n.VestRuntime.persist(o),Object.assign(Object.assign({get:n.VestRuntime.persist(X),remove:n.VestRuntime.usePrepareEmitter(u.REMOVE_FIELD),reset:n.VestRuntime.usePrepareEmitter(u.RESET_SUITE),resetField:n.VestRuntime.usePrepareEmitter(u.RESET_FIELD)},(t=n.VestRuntime.persist(X),{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)})),Ot()));var t}))}class Ct extends n.Isolate{constructor(){super(...arguments),this.allowReorder=!0}}function Pt(t,e){return n.Isolate.create((()=>{ft.run({groupName:t},e)}))}const Ft=I.WARN_MUST_BE_CALLED_FROM_TEST;Object.defineProperty(t,"enforce",{enumerable:!0,get:function(){return e.enforce}}),t.create=Dt,t.each=function(t,e){s.invariant(s.isFunction(e),I.EACH_CALLBACK_MUST_BE_A_FUNCTION),Ct.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))},t.group=Pt,t.include=It,t.mode=function(t){const[,e]=Tt();e(t)},t.omitWhen=tt,t.only=z,t.optional=o,t.skip=J,t.skipWhen=q,t.staticSuite=function(t){return s.assign(((...e)=>Dt(t)(...e)),Object.assign({},Ot()))},t.suiteSelectors=M,t.test=ht,t.warn=function(){const t=(e=I.HOOK_CALLED_OUTSIDE,ft.useX(e).currentTest);var e;s.invariant(t,Ft),t.warn()}}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("n4s"),require("vest-utils"),require("vestjs-runtime"),require("context")):"function"==typeof define&&define.amd?define(["exports","n4s","vest-utils","vestjs-runtime","context"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vest={},t.n4s,t["vest-utils"],t["vestjs-runtime"],t.context)}(this,(function(t,e,n,s,i){"use strict";var r,u,o;function a(t){const e=s.VestRuntime.useAvailableRoot();if(n.isArray(t)||n.isStringValue(t))n.asArray(t).forEach((t=>{e.setOptionalField(t,(()=>({type:r.AUTO,applied:!1,rule:null})))}));else for(const n in t){const s=t[n];e.setOptionalField(n,(()=>({type:r.CUSTOM_LOGIC,rule:s,applied:!0===s})))}}function c(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"}(r||(r={})),t.Modes=void 0,(u=t.Modes||(t.Modes={})).EAGER="EAGER",u.ALL="ALL",u.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"}(o||(o={}));class l 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 E=n.cache();function f(){return s.VestRuntime.useXAppData()}function d(){return f().doneCallbacks()}function N(){return f().fieldCallbacks()}function T(){return f().suiteId}function R(){const[,,t]=d(),[,,e]=N();t(),e()}const S=i.createCascade(((e,s)=>s?null:n.assign({exclusion:{tests:{},groups:{}},inclusion:{},mode:n.tinyState.createTinyState(t.Modes.EAGER),testMemoCache:_},e)));function m(t){return S.useX(t).exclusion}function I(){return S.useX().inclusion}function p(){return S.useX().mode()}const _=n.cache(10);var g,h,O,A,v,D;function C(t,e){return!!e&&!P(t,e)}function P(t,e){return!(!e||t.fieldName!==e)}function F(t,e){return P(t,e.fieldName)&&t.groupName===e.groupName&&t.key===e.key}function U(t){return t===h.ERRORS?O.ERROR_COUNT:O.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}."}(g||(g={})),function(t){t.WARNINGS="warnings",t.ERRORS="errors"}(h||(h={})),function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(O||(O={})),function(t){t.Error="error",t.Warning="warning"}(A||(A={}));class y{constructor(){this.errorCount=0,this.warnCount=0,this.testCount=0}}class L extends y{constructor(){super(...arguments),this[v]=[],this[D]=[],this.groups={},this.tests={},this.valid=!1}}v=h.ERRORS,D=h.WARNINGS;class G{constructor(t,e,n){this.fieldName=t,this.message=e,this.groupName=n}static fromTestObject(t){return new G(t.fieldName,t.message,t.groupName)}toString(){return this.message||""}}const W=n.bindNot((function(t,e){return t.groupName===e}));function V(t){return function(t,e){return St.someTests((n=>b(n,t,e)))}(h.ERRORS,t)}function b(t,e,s){return!!t.hasFailures()&&(!C(t,s)&&!function(t,e){return n.either(t===h.WARNINGS,e.warns())}(e,t))}function M(t){return!!c(t)||!St.hasNoTests()&&(!V(t)&&(!function(t){return St.someIncompleteTests((e=>!C(e,t)&&!c(t)))}(t)&&function(t){return St.everyTest((e=>k(e,t)))}(t)))}function w(t,e){return!!c(e)||!function(t,e,n){return St.someTests((s=>!W(s,e)&&b(s,t,n)))}(h.ERRORS,t,e)&&(!function(t,e){return St.someIncompleteTests((n=>!W(n,t)&&(!C(n,e)&&!c(e))))}(t,e)&&function(t,e){return St.everyTest((n=>!!W(n,t)||k(n,e)))}(t,e))}function k(t,e){return!!C(t,e)||(t.isOmitted()||t.isTested()||function(t){var e;return(null===(e=s.VestRuntime.useAvailableRoot())||void 0===e?void 0:e.getOptionalField(t.fieldName).type)===r.AUTO&&t.awaitsResolution()}(t))}function B(){const t=new L;return St.walkTests((e=>{t.tests=function(t,e){const{fieldName:n}=e,s=Object.assign({},t);return s[n]=x(s[n],e),s[n].valid=!1!==s[n].valid&&M(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]=x(i[n][s],e),i[n][s].valid=!1!==i[n][s].valid&&w(n,s),i}(t.groups,e),t.errors=j(h.ERRORS,t.errors,e),t.warnings=j(h.WARNINGS,t.warnings,e)})),t.valid=M(),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 j(t,e,n){if(n.isOmitted())return e;return(t===h.WARNINGS?n.isWarning():n.isFailing())?e.concat(G.fromTestObject(n)):e}function x(t,e){const{message:s}=e,i=n.defaultTo(t?Object.assign({},t):null,K);return e.isNonActionable()||(i.testCount++,e.isFailing()?r(h.ERRORS):e.isWarning()&&r(h.WARNINGS)),i;function r(t){const e=U(t);i[e]++,s&&(i[t]=(i[t]||[]).concat(s))}}function K(){return n.assign(new y,{errors:[],warnings:[],valid:!0})}function X(t,e,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,e,s):function(t,e){const s={},i=U(e);for(const r in t)n.isPositive(t[r][i])&&(s[r]=t[r][e]||[]);return s}(t,e)}function q(t){const e={getError:function(e){return Z(h.ERRORS,t,e)},getErrors:function(e){return H(t,h.ERRORS,e)},getErrorsByGroup:function(e,n){return z(t,h.ERRORS,e,n)},getWarning:function(e){return Z(h.WARNINGS,t,e)},getWarnings:function(e){return H(t,h.WARNINGS,e)},getWarningsByGroup:function(e,n){return z(t,h.WARNINGS,e,n)},hasErrors:function(e){return Q(t,O.ERROR_COUNT,e)},hasErrorsByGroup:function(e,n){return Y(t,O.ERROR_COUNT,e,n)},hasWarnings:function(e){return Q(t,O.WARN_COUNT,e)},hasWarningsByGroup:function(e,n){return Y(t,O.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 J(s,n);for(const t in s)if(!J(s,t))return!1;return!0}};return e}function H(t,e,n){return X(t.tests,e,n)}function z(t,e,n,s){return X(t.groups[n],e,s)}function J(t,e){var n;return!!(null===(n=t[e])||void 0===n?void 0:n.valid)}function Y(t,e,s,i){var r,u;const o=t.groups[s];if(!o)return!1;if(i)return n.isPositive(null===(r=o[i])||void 0===r?void 0:r[e]);for(const t in o)if(n.isPositive(null===(u=o[t])||void 0===u?void 0:u[e]))return!0;return!1}function Q(t,e,s){var i;const r=s?null===(i=t.tests[s])||void 0===i?void 0:i[e]:t[e]||0;return n.isPositive(r)}function Z(t,e,n){var s;const i=e[t];return n?null===(s=i.find((t=>P(t,n))))||void 0===s?void 0:s.message:i[0]}function $(){return t=()=>{const t=B(),e=f().suiteName;return Object.freeze(n.assign(t,q(t),{suiteName:e}))},(0,f().suiteResultCache)([T()],t);var t}function tt(t,e){s.Isolate.create((()=>{S.run({skipped:et()||n.optionalFunctionValue(t,n.optionalFunctionValue($))},e)}))}function et(){return function(){var t;return null!==(t=S.useX().skipped)&&void 0!==t&&t}()}function nt(t){return rt(0,"tests",t)}function st(t){return rt(1,"tests",t)}function it(t){const{fieldName:e,groupName:s}=t;if(et())return!0;const i=m(),r=I(),u=i.tests,o=u[e];if(!1===o)return!0;const a=!0===o;if(s){if(function(t){const e=m().groups;if(n.hasOwnProperty(e,t))return!1===e[t];return ot()}(s))return!0;if(!0===i.groups[s])return!a&&(!!ut(u)||!1===u[e])}return!!function(t){if(!ot())return!1;return!t}(s)||!a&&(!!ut(u)&&!n.optionalFunctionValue(r[e]))}function rt(t,e,s){const i=m(g.HOOK_CALLED_OUTSIDE);s&&n.asArray(s).forEach((s=>{n.isStringValue(s)&&(i[e][s]=0===t)}))}function ut(t){for(const e in t)if(!0===t[e])return!0;return!1}function ot(){const t=m();for(const e in t.groups)if(t.groups[e])return!0;return!1}function at(t){const[e]=p();return e===t}function ct(e){return at(t.Modes.ONE)?V():!!at(t.Modes.EAGER)&&V(e.fieldName)}function lt(t,e){s.Isolate.create((()=>{S.run({omitted:Et()||n.optionalFunctionValue(t,n.optionalFunctionValue($))},e)}))}function Et(){return function(){var t;return null!==(t=S.useX().omitted)&&void 0!==t&&t}()}function ft(t,e=t){return ct(t)?((n=t).skip(),n):function(t){return Et()||c(t.fieldName)}(t)?function(t){return t.omit(),t}(t):it(t)?function(t){return t.skip(et()),t}(e):t;var n}var dt,Nt;nt.group=function(t){return rt(0,"groups",t)},st.group=function(t){return rt(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"}(dt||(dt={})),function(t){t.RESET="RESET"}(Nt||(Nt={}));const Tt={initial:dt.UNTESTED,states:{"*":{[dt.OMITTED]:dt.OMITTED,[Nt.RESET]:dt.UNTESTED},[dt.UNTESTED]:{[dt.CANCELED]:dt.CANCELED,[dt.FAILED]:dt.FAILED,[dt.PASSING]:dt.PASSING,[dt.PENDING]:dt.PENDING,[dt.SKIPPED]:dt.SKIPPED,[dt.WARNING]:dt.WARNING},[dt.PENDING]:{[dt.CANCELED]:dt.CANCELED,[dt.FAILED]:dt.FAILED,[dt.PASSING]:dt.PASSING,[dt.SKIPPED]:[dt.SKIPPED,t=>!0===t],[dt.WARNING]:dt.WARNING},[dt.SKIPPED]:{},[dt.FAILED]:{},[dt.WARNING]:{},[dt.PASSING]:{},[dt.CANCELED]:{},[dt.OMITTED]:{}}};class Rt extends s.Isolate{constructor({fieldName:t,testFn:e,message:s,groupName:i,key:r=null}){super(),this.children=null,this.id=n.seq(),this.severity=A.Error,this.stateMachine=n.StateMachine(Tt),this.fieldName=t,this.testFn=e,i&&(this.groupName=i),s&&(this.message=s),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 n.isUndefined(t)&&n.isStringValue(e)})(this.message,e)&&(this.message=e),t=!1}return!1===t&&this.fail(),t}warns(){return this.severity===A.Warning}isPending(){return this.statusEquals(dt.PENDING)}isOmitted(){return this.statusEquals(dt.OMITTED)}isUntested(){return this.statusEquals(dt.UNTESTED)}isFailing(){return this.statusEquals(dt.FAILED)}isCanceled(){return this.statusEquals(dt.CANCELED)}isSkipped(){return this.statusEquals(dt.SKIPPED)}isPassing(){return this.statusEquals(dt.PASSING)}isWarning(){return this.statusEquals(dt.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(dt.PENDING)}fail(){this.setStatus(this.warns()?dt.WARNING:dt.FAILED)}pass(){this.setStatus(dt.PASSING)}warn(){this.severity=A.Warning}skip(t){this.setStatus(dt.SKIPPED,t)}cancel(){this.setStatus(dt.CANCELED)}reset(){this.stateMachine.transition(Nt.RESET)}omit(){this.setStatus(dt.OMITTED)}valueOf(){return!this.isFailing()}isAsyncTest(){return n.isPromise(this.asyncTest)}static is(t){return t instanceof Rt}static isX(t){n.invariant(this.is(t))}}Rt.reconciler=function(t,e){if(!Rt.is(t))return t;if(n.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 i=function(t,e){const i=function(t,e){if(t.usesKey())return Rt.cast(s.Reconciler.handleIsolateNodeWithKey(t));if(function(t,e){return!!Rt.is(e)&&!F(e,t)}(t,e))return function(t,e){return function(t,e){if(t.shouldAllowReorder())return;n.deferThrow(n.text(g.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 ft(e,i)}(e,t);return function(t,e,n){t===e&&Rt.is(e)&&(i=e)!==(s=n)&&F(s,i)&&s.isPending()&&s.cancel();var s,i}(i,t,e),i};class St{static defaultRoot(){return s.VestRuntime.useAvailableRoot()}static hasNoTests(t=St.defaultRoot()){return!t||!s.Walker.has(t,Rt.is)}static someIncompleteTests(t,e=St.defaultRoot()){return!!e&&s.Walker.some(e,(e=>(Rt.isX(e),e.isPending()&&t(e))),Rt.is)}static someTests(t,e=St.defaultRoot()){return!!e&&s.Walker.some(e,(e=>(Rt.isX(e),t(e))),Rt.is)}static everyTest(t,e=St.defaultRoot()){return!!e&&s.Walker.every(e,(e=>(Rt.isX(e),t(e))),Rt.is)}static walkTests(t,e=St.defaultRoot()){e&&s.Walker.walk(e,((e,n)=>{t(Rt.cast(e),n)}),Rt.is)}static hasRemainingTests(t){return St.someIncompleteTests((e=>!t||P(e,t)))}static pluckTests(t,e=St.defaultRoot()){e&&s.Walker.pluck(e,(e=>(Rt.isX(e),t(e))),Rt.is)}static resetField(t){St.walkTests((e=>{P(e,t)&&e.reset()}),St.defaultRoot())}static removeTestByFieldName(t,e=St.defaultRoot()){St.pluckTests((e=>P(e,t)),e)}}function mt(){const t=s.VestRuntime.useAvailableRoot(),e=s.VestRuntime.useEmit(),i=null==t?void 0:t.getOptionalFields();if(n.isEmpty(i))return;const r=new Set;function u(e){r.has(e.fieldName)&&(e.omit(),null==t||t.setOptionalField(e.fieldName,(t=>Object.assign(Object.assign({},t),{applied:!0}))))}St.walkTests((e=>{e.isPending()||(n.hasOwnProperty(r,e.fieldName)?u(e):function(e){const s=null==t?void 0:t.getOptionalField(e.fieldName);if(n.isNullish(s))return;!0===n.optionalFunctionValue(s.rule)&&r.add(e.fieldName);u(e)}(e))})),e(o.DONE_TEST_OMISSION_PASS)}function It(){const t=s.VestRuntime.useBus();return e(o.TEST_COMPLETED,(e=>{e.isCanceled()||(!function(t){const[e]=N();t&&!St.hasRemainingTests(t)&&n.isArray(e[t])&&n.callEach(e[t])}(e.fieldName),St.hasRemainingTests()||t.emit(o.ALL_RUNNING_TESTS_FINISHED))})),e(o.TEST_RUN_STARTED,(()=>{})),e(o.DONE_TEST_OMISSION_PASS,(()=>{})),e(o.ALL_RUNNING_TESTS_FINISHED,(()=>{St.someTests((t=>t.isAsyncTest()))&&mt(),function(){const[t]=d();n.callEach(t)}()})),e(o.RESET_FIELD,(t=>{St.resetField(t)})),e(o.SUITE_RUN_STARTED,(()=>{R()})),e(o.SUITE_CALLBACK_RUN_FINISHED,(()=>{mt()})),e(o.REMOVE_FIELD,(t=>{St.removeTestByFieldName(t)})),e(o.RESET_SUITE,(()=>{R(),s.VestRuntime.reset()})),t;function e(e,n){t.on(e,((...t)=>{f().suiteResultCache.invalidate([T()]),n(...t)}))}}function pt(t,e){return s.Isolate.create((()=>{S.run({groupName:t},e)}))}function _t(t){const e=I(),s=m();return n.invariant(n.isStringValue(t)),e[t]=n.defaultTo(s.tests[t],!0),{when:function(e){const s=I(),i=m();s[t]=()=>n.hasOwnProperty(i.tests,t)?n.defaultTo(i.tests[t],!0):n.isStringValue(e)?Boolean(i.tests[e]):n.optionalFunctionValue(e,n.optionalFunctionValue($))}}}function gt(t){if(ft(t),t.isUntested())return function(t){const e=s.VestRuntime.useBus(),i=function(t){return S.run({currentTest:t},(()=>t.run()))}(t);try{n.isPromise(i)?(t.asyncTest=i,function(t){const{asyncTest:e,message:i}=t;if(!n.isPromise(e))return;t.setPending();const r=s.VestRuntime.useBus(),u=s.VestRuntime.persist((()=>{ht(r,t)})),o=s.VestRuntime.persist((e=>{t.isCanceled()||(t.message=n.isStringValue(e)?e:i,t.fail(),u())}));e.then(u,o)}(t)):ht(e,t)}catch(e){throw new Error(n.text(g.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t),error:e}))}}(t);t.isNonActionable()||n.deferThrow(n.text(g.UNEXPECTED_TEST_REGISTRATION_ERROR,{testObject:JSON.stringify(t)}))}function ht(t,e){e.pass(),t.emit(o.TEST_COMPLETED,e)}function Ot(t,...e){const[i,r,u]=n.isFunction(e[1])?e:[void 0,...e];!function(t,e){const s="test";n.invariant(n.isStringValue(t),n.text(g.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"fieldName",expected:"string"})),n.invariant(n.isFunction(e),n.text(g.INVALID_PARAM_PASSED_TO_FUNCTION,{fn_name:s,param:"callback",expected:"function"}))}(t,r);const a={fieldName:t,groupName:S.useX().groupName,key:u,message:i,testFn:r};return s.VestRuntime.useEmit()(o.TEST_RUN_STARTED),Rt.create(gt,a)}const At=n.assign(Ot,{memo:function(t){return function(e,...i){const[r,u,o]=i.reverse();return function(t,e){const s=S.useX().testMemoCache,i=s.get(t);if(n.isNull(i))return s(t,e);const[,r]=i;if(r.isCanceled())return s.invalidate(t),s(t,e);return Rt.setNode(r),r}([T(),e,s.VestRuntime.useCurrentCursor()].concat(r),(function(){return t(e,o,u)}))}}(Ot)});function vt(){return{group:pt,include:_t,omitWhen:lt,only:nt,optional:a,skip:st,skipWhen:tt,test:At}}function Dt(){return Object.freeze(n.assign({done:s.VestRuntime.persist(Ct)},$()))}function Ct(...t){const[e,s]=t.reverse(),i=Dt();if(function(t,e,s){var i;return!!(!n.isFunction(t)||e&&n.numberEquals(null===(i=s.tests[e])||void 0===i?void 0:i.testCount,0))}(e,s,i))return i;const r=()=>e($());return St.hasRemainingTests(s)?(function(t,e){const[,s]=N(),[,i]=d();e?s((s=>n.assign(s,{[e]:(s[e]||[]).concat(t)}))):i((e=>e.concat(t)))}(r,s),i):(r(),i)}function Pt(...t){const[e,i]=t.reverse();!function(t){n.invariant(n.isFunction(t),g.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION)}(e);const r=function({suiteName:t}={}){const e={doneCallbacks:n.tinyState.createTinyState((()=>[])),fieldCallbacks:n.tinyState.createTinyState((()=>({}))),suiteId:n.seq(),suiteName:t,suiteResultCache:E};return s.VestRuntime.createRef(e)}({suiteName:i});function u(...t){return S.run({},(()=>(s.VestRuntime.useEmit()(o.SUITE_RUN_STARTED),l.create(function(t,...e){const n=s.VestRuntime.useEmit();return()=>(t(...e),n(o.SUITE_CALLBACK_RUN_FINISHED),Dt())}(e,...t))))).output}return s.VestRuntime.Run(r,(()=>{return It(),n.assign(s.VestRuntime.persist(u),Object.assign(Object.assign({get:s.VestRuntime.persist($),remove:s.VestRuntime.usePrepareEmitter(o.REMOVE_FIELD),reset:s.VestRuntime.usePrepareEmitter(o.RESET_SUITE),resetField:s.VestRuntime.usePrepareEmitter(o.RESET_FIELD)},(t=s.VestRuntime.persist($),{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)})),vt()));var t}))}class Ft extends s.Isolate{constructor(){super(...arguments),this.allowReorder=!0}}const Ut=g.WARN_MUST_BE_CALLED_FROM_TEST;Object.defineProperty(t,"enforce",{enumerable:!0,get:function(){return e.enforce}}),t.create=Pt,t.each=function(t,e){n.invariant(n.isFunction(e),g.EACH_CALLBACK_MUST_BE_A_FUNCTION),Ft.create((()=>{t.forEach(((t,n)=>{e(t,n)}))}))},t.group=pt,t.include=_t,t.mode=function(t){const[,e]=p();e(t)},t.omitWhen=lt,t.only=nt,t.optional=a,t.skip=st,t.skipWhen=tt,t.staticSuite=function(t){return n.assign(((...e)=>Pt(t)(...e)),Object.assign({},vt()))},t.suiteSelectors=q,t.test=At,t.warn=function(){const t=(e=g.HOOK_CALLED_OUTSIDE,S.useX(e).currentTest);var e;n.invariant(t,Ut),t.warn()}}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vest",
|
|
3
|
-
"version": "5.0.0-dev-
|
|
3
|
+
"version": "5.0.0-dev-ae6b14",
|
|
4
4
|
"description": "Declarative Form Validations Framework",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "ealush",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"url": "https://github.com/ealush/vest.git/issues"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"context": "3.0.9-dev-
|
|
22
|
-
"n4s": "5.0.0-dev-
|
|
23
|
-
"vast": "1.0.18-dev-
|
|
24
|
-
"vest-
|
|
25
|
-
"
|
|
21
|
+
"context": "3.0.9-dev-ae6b14",
|
|
22
|
+
"n4s": "5.0.0-dev-ae6b14",
|
|
23
|
+
"vast": "1.0.18-dev-ae6b14",
|
|
24
|
+
"vest-utils": "1.0.0-dev-ae6b14",
|
|
25
|
+
"vestjs-runtime": "0.1.0-dev-ae6b14"
|
|
26
26
|
},
|
|
27
27
|
"exports": {
|
|
28
28
|
"./promisify": {
|
package/testUtils/asVestTest.ts
CHANGED
package/types/classnames.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classnames.d.ts","sourceRoot":"","sources":["../src/exports/classnames.ts","../src/suiteResult/Severity.ts","../src/errors/ErrorStrings.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/
|
|
1
|
+
{"version":3,"file":"classnames.d.ts","sourceRoot":"","sources":["../src/exports/classnames.ts","../src/suiteResult/Severity.ts","../src/errors/ErrorStrings.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/hooks/optional/Modes.ts","../src/core/context/SuiteContext.ts","../src/core/Runtime.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/hooks/optional/mode.ts","../src/isolates/omitWhen.ts","../src/core/test/testLevelFlowControl/verifyTestRun.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suiteResult/SummaryFailure.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts","../src/exports/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;GAEG;AACH,iBAAwB,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAC3E,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACvB,OAAO,GAAE,gBAAqB,GAC7B,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,CAe1B;AAED,KAAK,gBAAgB,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
package/types/parser.d.ts
CHANGED
package/types/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/exports/parser.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/exports/parser.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/hooks/optional/Modes.ts","../src/core/context/SuiteContext.ts","../src/core/Runtime.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/hooks/optional/mode.ts","../src/isolates/omitWhen.ts","../src/core/test/testLevelFlowControl/verifyTestRun.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suiteResult/SummaryFailure.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,iBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAC9D,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CA4CrB;AAED,UAAU,gBAAgB,CAAC,CAAC,SAAS,UAAU;IAC7C,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC/B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;CACjC"}
|
package/types/promisify.d.ts
CHANGED
package/types/promisify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promisify.d.ts","sourceRoot":"","sources":["../src/exports/promisify.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/
|
|
1
|
+
{"version":3,"file":"promisify.d.ts","sourceRoot":"","sources":["../src/exports/promisify.ts","../src/errors/ErrorStrings.ts","../src/suiteResult/Severity.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/hooks/optional/Modes.ts","../src/core/context/SuiteContext.ts","../src/core/Runtime.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/hooks/optional/mode.ts","../src/isolates/omitWhen.ts","../src/core/test/testLevelFlowControl/verifyTestRun.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suiteResult/SummaryFailure.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,iBAAS,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAC3D,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,aAEpC,GAAG,EAAE,KAAG,QAAQ,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAKpD"}
|
package/types/vest.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { enforce } from 'n4s';
|
|
2
|
-
import { Isolate, IsolateKey } from "vest-runtime";
|
|
3
2
|
import { CB } from "vest-utils";
|
|
3
|
+
import { Isolate, IsolateKey } from "vestjs-runtime";
|
|
4
4
|
declare enum Severity {
|
|
5
5
|
WARNINGS = "warnings",
|
|
6
6
|
ERRORS = "errors"
|
|
@@ -152,6 +152,11 @@ type OptionalsInput<F extends TFieldName> = F | F[] | OptionalsObject<F>;
|
|
|
152
152
|
type OptionalsObject<F extends TFieldName> = Record<F, (() => boolean) | boolean>;
|
|
153
153
|
// @vx-allow use-use
|
|
154
154
|
declare function optional<F extends TFieldName>(optionals: OptionalsInput<F>): void;
|
|
155
|
+
declare enum Modes {
|
|
156
|
+
EAGER = "EAGER",
|
|
157
|
+
ALL = "ALL",
|
|
158
|
+
ONE = "ONE"
|
|
159
|
+
}
|
|
155
160
|
type FieldExclusion<F extends TFieldName> = F | F[] | undefined;
|
|
156
161
|
type GroupExclusion<G extends TGroupName> = G | G[] | undefined;
|
|
157
162
|
/**
|
|
@@ -269,11 +274,6 @@ declare function group<G extends TGroupName>(groupName: G, callback: () => void)
|
|
|
269
274
|
declare function include<F extends TFieldName, G extends TGroupName>(fieldName: F): {
|
|
270
275
|
when: (condition: F | TFieldName | boolean | ((draft: SuiteResult<F, G>) => boolean)) => void;
|
|
271
276
|
};
|
|
272
|
-
declare enum Modes {
|
|
273
|
-
EAGER = "EAGER",
|
|
274
|
-
ALL = "ALL",
|
|
275
|
-
ONE = "ONE"
|
|
276
|
-
}
|
|
277
277
|
/**
|
|
278
278
|
* Sets the current execution mode for the current suite.
|
|
279
279
|
*
|
package/types/vest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vest.d.ts","sourceRoot":"","sources":["../src/vest.ts","../src/suiteResult/Severity.ts","../src/errors/ErrorStrings.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/
|
|
1
|
+
{"version":3,"file":"vest.d.ts","sourceRoot":"","sources":["../src/vest.ts","../src/suiteResult/Severity.ts","../src/errors/ErrorStrings.ts","../src/core/test/TestTypes.ts","../src/core/test/helpers/matchingFieldName.ts","../src/core/isolate/IsolateTest/isSameProfileTest.ts","../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../src/hooks/optional/Modes.ts","../src/core/context/SuiteContext.ts","../src/core/Runtime.ts","../src/core/isolate/IsolateTest/TestWalker.ts","../src/core/test/helpers/matchingGroupName.ts","../src/core/test/helpers/nonMatchingSeverityProfile.ts","../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../src/suiteResult/selectors/shouldAddValidProperty.ts","../src/suiteResult/selectors/produceSuiteSummary.ts","../src/suiteResult/selectors/collectFailures.ts","../src/suiteResult/selectors/suiteSelectors.ts","../src/suiteResult/suiteResult.ts","../src/isolates/skipWhen.ts","../src/hooks/exclusive.ts","../src/hooks/optional/mode.ts","../src/isolates/omitWhen.ts","../src/core/test/testLevelFlowControl/verifyTestRun.ts","../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../src/core/isolate/IsolateTest/IsolateTestStateMachine.ts","../src/core/test/helpers/shouldUseErrorMessage.ts","../src/core/isolate/IsolateTest/IsolateTest.ts","../src/suiteResult/SummaryFailure.ts","../src/suiteResult/done/deferDoneCallback.ts","../src/suiteResult/done/shouldSkipDoneRegistration.ts","../src/suiteResult/suiteRunResult.ts","../src/suiteResult/SuiteResultTypes.ts","../src/hooks/optional/OptionalTypes.ts","../src/core/isolate/IsolateSuite/IsolateSuite.ts","../src/hooks/optional/optional.ts","../src/isolates/group.ts","../src/hooks/include.ts","../src/core/VestBus/BusEvents.ts","../src/core/test/testLevelFlowControl/runTest.ts","../src/core/test/test.memo.ts","../src/core/test/test.ts","../src/suite/getTypedMethods.ts","../src/suite/SuiteTypes.ts","../src/hooks/optional/omitOptionalFields.ts","../src/suite/runCallbacks.ts","../src/core/VestBus/VestBus.ts","../src/suite/validateParams/validateSuiteParams.ts","../src/suite/createSuite.ts","../src/core/isolate/IsolateEach/IsolateEach.ts","../src/isolates/each.ts","../src/suite/staticSuite.ts","../src/hooks/warn.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwB9B,OAAO,wJAiBN,CAAC;AAEF,YAAY,iEAAiE,CAAC"}
|