vest 5.2.7 → 5.2.8
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.map +1 -1
- package/dist/cjs/vest.production.js.map +1 -1
- package/dist/es/vest.development.js.map +1 -1
- package/dist/es/vest.production.js.map +1 -1
- package/dist/umd/vest.development.js.map +1 -1
- package/dist/umd/vest.production.js.map +1 -1
- package/package.json +6 -6
- package/types/vest.d.ts +1 -1
- package/types/vest.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vest.development.js","sources":["../../src/core/isolate/VestIsolateType.ts","../../src/core/isolate/IsolateSuite/IsolateSuite.ts","../../src/hooks/optional/OptionalTypes.ts","../../src/hooks/optional/Modes.ts","../../src/core/context/SuiteContext.ts","../../src/hooks/optional/optional.ts","../../src/core/VestBus/BusEvents.ts","../../src/core/Runtime.ts","../../src/core/StateMachines/CommonStateMachine.ts","../../src/core/isolate/VestIsolate.ts","../../src/errors/ErrorStrings.ts","../../src/core/StateMachines/IsolateTestStateMachine.ts","../../src/suiteResult/Severity.ts","../../src/core/isolate/IsolateTest/VestTest.ts","../../src/core/test/helpers/matchingFieldName.ts","../../src/suite/SuiteWalker.ts","../../src/core/isolate/IsolateTest/TestWalker.ts","../../src/hooks/optional/omitOptionalFields.ts","../../src/suite/runCallbacks.ts","../../src/core/VestBus/VestBus.ts","../../src/core/isolate/IsolateReconciler.ts","../../src/core/isolate/IsolateTest/isSameProfileTest.ts","../../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../../src/core/test/helpers/matchingGroupName.ts","../../src/core/test/helpers/nonMatchingSeverityProfile.ts","../../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../../src/hooks/optional/mode.ts","../../src/suiteResult/selectors/collectFailures.ts","../../src/suiteResult/selectors/suiteSelectors.ts","../../src/suiteResult/SuiteResultTypes.ts","../../src/suiteResult/SummaryFailure.ts","../../src/suiteResult/selectors/shouldAddValidProperty.ts","../../src/suiteResult/selectors/useProduceSuiteSummary.ts","../../src/suiteResult/suiteResult.ts","../../src/isolates/omitWhen.ts","../../src/isolates/skipWhen.ts","../../src/hooks/focused/FocusedKeys.ts","../../src/hooks/focused/focused.ts","../../src/hooks/focused/useHasOnliedTests.ts","../../src/hooks/focused/useIsExcluded.ts","../../src/core/test/testLevelFlowControl/verifyTestRun.ts","../../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../../src/core/isolate/VestReconciler.ts","../../src/isolates/group.ts","../../src/hooks/include.ts","../../src/core/isolate/IsolateTest/IsolateTest.ts","../../src/core/test/helpers/shouldUseErrorMessage.ts","../../src/core/test/testLevelFlowControl/runTest.ts","../../src/core/test/test.memo.ts","../../src/core/test/test.ts","../../src/suite/getTypedMethods.ts","../../src/suiteResult/done/deferDoneCallback.ts","../../src/suiteResult/done/shouldSkipDoneRegistration.ts","../../src/suiteResult/suiteRunResult.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"],"sourcesContent":["export const VestIsolateType = {\n Each: 'Each',\n Focused: 'Focused',\n Group: 'Group',\n OmitWhen: 'OmitWhen',\n SkipWhen: 'SkipWhen',\n Suite: 'Suite',\n Test: 'Test',\n};\n","import { CB, assign } from 'vest-utils';\nimport { Isolate, TIsolate } from 'vestjs-runtime';\n\nimport { OptionalFieldDeclaration, OptionalFields } from 'OptionalTypes';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type TIsolateSuite = TIsolate<{\n optional: OptionalFields;\n}>;\n\nexport function IsolateSuite<Callback extends CB = CB>(\n callback: Callback,\n): TIsolateSuite {\n return Isolate.create(VestIsolateType.Suite, callback, {\n optional: {},\n });\n}\n\nexport class SuiteOptionalFields {\n static setOptionalField(\n suite: TIsolateSuite,\n fieldName: TFieldName,\n setter: (current: OptionalFieldDeclaration) => OptionalFieldDeclaration,\n ): void {\n const current = suite.data.optional;\n const currentField = current[fieldName];\n\n assign(current, {\n [fieldName]: assign({}, currentField, setter(currentField)),\n });\n }\n\n static getOptionalField(\n suite: TIsolateSuite,\n fieldName: TFieldName,\n ): OptionalFieldDeclaration {\n return SuiteOptionalFields.getOptionalFields(suite)[fieldName] ?? {};\n }\n\n static getOptionalFields(suite: TIsolateSuite): OptionalFields {\n return suite.data?.optional ?? {};\n }\n}\n","import { DynamicValue, OneOrMoreOf } from 'vest-utils';\n\nimport { TFieldName } from 'SuiteResultTypes';\n\nexport type OptionalFields = Record<string, OptionalFieldDeclaration>;\n\nexport type OptionalsInput<F extends TFieldName> =\n | OneOrMoreOf<F>\n | OptionalsObject<F>;\n\ntype OptionalsObject<F extends TFieldName> = Record<F, TOptionalRule | any>;\n\ntype ImmediateOptionalFieldDeclaration = {\n type: OptionalFieldTypes.CUSTOM_LOGIC;\n rule: TOptionalRule;\n applied: boolean;\n};\n\ntype DelayedOptionalFieldDeclaration = {\n type: OptionalFieldTypes.AUTO;\n applied: boolean;\n rule: null;\n};\n\ntype TOptionalRule = DynamicValue<boolean>;\n\nexport type OptionalFieldDeclaration =\n | ImmediateOptionalFieldDeclaration\n | DelayedOptionalFieldDeclaration;\n\nexport enum OptionalFieldTypes {\n CUSTOM_LOGIC,\n AUTO,\n}\n","export enum Modes {\n EAGER = 'EAGER',\n ALL = 'ALL',\n ONE = 'ONE',\n}\n","import { createCascade } from 'context';\nimport {\n assign,\n TinyState,\n tinyState,\n cache,\n CacheApi,\n DynamicValue,\n} from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { Modes } from 'Modes';\n\nexport const SuiteContext = createCascade<CTXType>((ctxRef, parentContext) => {\n if (parentContext) {\n return null;\n }\n\n return assign(\n {\n inclusion: {},\n mode: tinyState.createTinyState<Modes>(Modes.EAGER),\n suiteParams: [],\n testMemoCache,\n },\n ctxRef\n );\n});\n\ntype CTXType = {\n inclusion: Record<string, DynamicValue<boolean>>;\n mode: TinyState<Modes>;\n suiteParams: any[];\n testMemoCache: CacheApi<TIsolateTest>;\n currentTest?: TIsolateTest;\n groupName?: string;\n skipped?: boolean;\n omitted?: boolean;\n};\n\nexport function useCurrentTest(msg?: string) {\n return SuiteContext.useX(msg).currentTest;\n}\n\nexport function useGroupName() {\n return SuiteContext.useX().groupName;\n}\n\nexport function useInclusion() {\n return SuiteContext.useX().inclusion;\n}\n\nexport function useMode() {\n return SuiteContext.useX().mode();\n}\n\nexport function useSkipped() {\n return SuiteContext.useX().skipped ?? false;\n}\n\nexport function useOmitted() {\n return SuiteContext.useX().omitted ?? false;\n}\n\nconst testMemoCache = cache<TIsolateTest>(10);\n\nexport function useTestMemoCache() {\n return SuiteContext.useX().testMemoCache;\n}\n\nexport function useSuiteParams() {\n return SuiteContext.useX().suiteParams;\n}\n","import { enforce } from 'n4s';\nimport { isArray, isStringValue, asArray, hasOwnProperty } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { OptionalFieldTypes, OptionalsInput } from 'OptionalTypes';\nimport { useSuiteParams } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\n\n// @vx-allow use-use\nexport function optional<F extends TFieldName>(\n optionals: OptionalsInput<F>\n): void {\n const suiteRoot = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const suiteParams = useSuiteParams();\n const dataObject = suiteParams?.[0] ?? {};\n\n // There are two types of optional field declarations:\n\n // 1 AUTO: Vest will automatically determine whether the field should be omitted\n // Based on the current run. Vest will omit \"auto\" added fields without any\n // configuration if their tests did not run at all in the suite, or if the data object\n // contains a blank value for the field.\n //\n // 2 Custom logic: Vest will determine whether they should fail based on the custom\n // logic supplied by the developer.\n // If the developer supplies a function - when the function returns true, the field will be omitted.\n // If the developer supplies a boolean - the field will be omitted if the value is true.\n // If the developer supplies a value - the field will be omitted if the value is blank.\n\n // AUTO case (field name)\n if (isArray(optionals) || isStringValue(optionals)) {\n asArray(optionals).forEach(optionalField => {\n SuiteOptionalFields.setOptionalField(suiteRoot, optionalField, () => ({\n type: OptionalFieldTypes.AUTO,\n applied: hasOwnProperty(dataObject, optionalField)\n ? enforce.isBlank().test(dataObject?.[optionalField])\n : false,\n rule: null,\n }));\n });\n } else {\n // CUSTOM_LOGIC case (function or boolean)\n for (const field in optionals) {\n const value = optionals[field];\n\n SuiteOptionalFields.setOptionalField(suiteRoot, field, () => ({\n type: OptionalFieldTypes.CUSTOM_LOGIC,\n rule: value,\n applied: enforce.isBlank().test(value) || value === true,\n }));\n }\n }\n}\n\nexport function useIsOptionalFieldApplied(fieldName?: TFieldName) {\n if (!fieldName) {\n return false;\n }\n\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n return (\n SuiteOptionalFields.getOptionalField(root, fieldName)?.applied ?? false\n );\n}\n","export enum Events {\n TEST_RUN_STARTED = 'test_run_started',\n TEST_COMPLETED = 'test_completed',\n ALL_RUNNING_TESTS_FINISHED = 'all_running_tests_finished',\n REMOVE_FIELD = 'remove_field',\n RESET_FIELD = 'reset_field',\n RESET_SUITE = 'reset_suite',\n SUITE_RUN_STARTED = 'suite_run_started',\n SUITE_CALLBACK_RUN_FINISHED = 'SUITE_CALLBACK_RUN_FINISHED',\n DONE_TEST_OMISSION_PASS = 'DONE_TEST_OMISSION_PASS',\n}\n","import {\n CB,\n CacheApi,\n Maybe,\n TinyState,\n cache,\n seq,\n tinyState,\n} from 'vest-utils';\nimport { IRecociler, VestRuntime } from 'vestjs-runtime';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport {\n SuiteName,\n SuiteResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\nexport type DoneCallback = (res: SuiteResult<TFieldName, TGroupName>) => void;\ntype FieldCallbacks = Record<string, DoneCallbacks>;\ntype DoneCallbacks = Array<DoneCallback>;\n\ntype StateExtra = {\n doneCallbacks: TinyState<DoneCallbacks>;\n fieldCallbacks: TinyState<FieldCallbacks>;\n suiteName: Maybe<string>;\n suiteId: string;\n suiteResultCache: CacheApi<SuiteResult<TFieldName, TGroupName>>;\n};\nconst suiteResultCache = cache<SuiteResult<TFieldName, TGroupName>>();\n\nexport function useCreateVestState({\n suiteName,\n VestReconciler,\n}: {\n suiteName?: SuiteName;\n VestReconciler: IRecociler;\n}) {\n const stateRef: StateExtra = {\n doneCallbacks: tinyState.createTinyState<DoneCallbacks>(() => []),\n fieldCallbacks: tinyState.createTinyState<FieldCallbacks>(() => ({})),\n suiteId: seq(),\n suiteName,\n suiteResultCache,\n };\n\n return VestRuntime.createRef(VestReconciler, stateRef);\n}\n\nfunction useX() {\n return VestRuntime.useXAppData<StateExtra>();\n}\n\nexport function useDoneCallbacks() {\n return useX().doneCallbacks();\n}\n\nexport function useFieldCallbacks() {\n return useX().fieldCallbacks();\n}\n\nexport function useSuiteName() {\n return useX().suiteName;\n}\n\nexport function useSuiteId() {\n return useX().suiteId;\n}\n\nexport function useSuiteResultCache<F extends TFieldName, G extends TGroupName>(\n action: CB<SuiteResult<F, G>>\n): SuiteResult<F, G> {\n const suiteResultCache = useX().suiteResultCache;\n\n return suiteResultCache([useSuiteId()], action) as SuiteResult<F, G>;\n}\n\nexport function useExpireSuiteResultCache() {\n const suiteResultCache = useX().suiteResultCache;\n suiteResultCache.invalidate([useSuiteId()]);\n}\n\nexport function useResetCallbacks() {\n const [, , resetDoneCallbacks] = useDoneCallbacks();\n const [, , resetFieldCallbacks] = useFieldCallbacks();\n\n resetDoneCallbacks();\n resetFieldCallbacks();\n}\n\nexport function useResetSuite() {\n useResetCallbacks();\n VestRuntime.reset();\n}\n\nexport function useLoadSuite(rootNode: TIsolateSuite): void {\n VestRuntime.useLoadRootNode(rootNode);\n useExpireSuiteResultCache();\n}\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nexport const CommonStates = {\n PENDING: 'PENDING',\n INITIAL: 'INITIAL',\n};\n\nconst State = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n [CommonStates.INITIAL]: CommonStates.INITIAL,\n DONE: 'DONE',\n};\n\nexport type State = ValueOf<typeof State>;\n\nconst machine: TStateMachine<State> = {\n initial: State.INITIAL,\n states: {\n [State.DONE]: {},\n [State.INITIAL]: {\n [State.PENDING]: State.PENDING,\n [State.DONE]: State.DONE,\n },\n [State.PENDING]: {\n [State.DONE]: State.DONE,\n },\n },\n};\n\nfunction transition(from: State | undefined, to: State) {\n return CommonStateMachine.staticTransition(from ?? State.INITIAL, to);\n}\n\nexport function setDone(isolate: TIsolate) {\n isolate.status = transition(isolate.status, State.DONE);\n}\n\nexport function setPending(isolate: TIsolate) {\n isolate.status = transition(isolate.status, State.PENDING);\n}\n\nexport const CommonStateMachine = StateMachine<State>(machine);\n","import { TStateMachineApi } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nimport { CommonStateMachine, CommonStates } from 'CommonStateMachine';\n\nexport class VestIsolate {\n static stateMachine: TStateMachineApi = CommonStateMachine;\n\n static getStatus(isolate: TIsolate): string {\n return isolate.status ?? CommonStates.INITIAL;\n }\n\n static setStatus(isolate: TIsolate, status: string, payload?: any): void {\n isolate.status = this.stateMachine.staticTransition(\n VestIsolate.getStatus(isolate),\n status,\n payload,\n );\n }\n\n static statusEquals(isolate: TIsolate, status: string): boolean {\n return VestIsolate.getStatus(isolate) === status;\n }\n\n static setPending(isolate: TIsolate): void {\n this.setStatus(isolate, CommonStates.PENDING);\n }\n\n static isPending(isolate: TIsolate): boolean {\n return VestIsolate.statusEquals(isolate, CommonStates.PENDING);\n }\n}\n","export enum ErrorStrings {\n HOOK_CALLED_OUTSIDE = 'hook called outside of a running suite.',\n EXPECTED_VEST_TEST = 'Expected value to be an instance of IsolateTest',\n FIELD_NAME_REQUIRED = 'Field name must be passed',\n SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION = 'Suite must be initialized with a function',\n PROMISIFY_REQUIRE_FUNCTION = 'Vest.Promisify must be called with a function',\n PARSER_EXPECT_RESULT_OBJECT = \"Vest parser: expected argument at position 0 to be Vest's result object.\",\n WARN_MUST_BE_CALLED_FROM_TEST = 'Warn must be called from within the body of a test function',\n EACH_CALLBACK_MUST_BE_A_FUNCTION = 'Each must be called with a function',\n INVALID_PARAM_PASSED_TO_FUNCTION = 'Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}',\n 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.`,\n 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}.`,\n UNEXPECTED_TEST_RUN_ERROR = `Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.`,\n INCLUDE_SELF = 'Trying to call include.when on the same field.',\n}\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nimport { CommonStates } from 'CommonStateMachine';\n\nexport const TestStatus = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n CANCELED: 'CANCELED',\n FAILED: 'FAILED',\n OMITTED: 'OMITTED',\n PASSING: 'PASSING',\n SKIPPED: 'SKIPPED',\n UNTESTED: 'UNTESTED',\n WARNING: 'WARNING',\n};\n\nexport const TestAction = {\n RESET: 'RESET',\n};\n\nexport type TestStatus = ValueOf<typeof TestStatus>;\nexport type TestAction = ValueOf<typeof TestAction>;\n\nexport type TestStateMachineAction = TestAction | TestStatus;\n\nconst machine: TStateMachine<TestStatus, TestStateMachineAction> = {\n initial: TestStatus.UNTESTED,\n states: {\n '*': {\n [TestStatus.OMITTED]: TestStatus.OMITTED,\n [TestAction.RESET]: TestStatus.UNTESTED,\n },\n [TestStatus.UNTESTED]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.PENDING]: TestStatus.PENDING,\n [TestStatus.SKIPPED]: TestStatus.SKIPPED,\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.PENDING]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.SKIPPED]: [\n TestStatus.SKIPPED,\n (force?: boolean) => force === true,\n ],\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.SKIPPED]: {},\n [TestStatus.FAILED]: {},\n [TestStatus.WARNING]: {},\n [TestStatus.PASSING]: {},\n [TestStatus.CANCELED]: {},\n [TestStatus.OMITTED]: {},\n },\n};\n\nexport const IsolateTestStateMachine = StateMachine<\n TestStatus,\n TestStateMachineAction\n>(machine);\n","export enum Severity {\n WARNINGS = 'warnings',\n ERRORS = 'errors',\n}\n\nexport enum SeverityCount {\n ERROR_COUNT = 'errorCount',\n WARN_COUNT = 'warnCount',\n}\n\nexport function countKeyBySeverity(severity: Severity): SeverityCount {\n return severity === Severity.ERRORS\n ? SeverityCount.ERROR_COUNT\n : SeverityCount.WARN_COUNT;\n}\n\nexport enum TestSeverity {\n Error = 'error',\n Warning = 'warning',\n}\n","import { Maybe, invariant, isPromise, optionalFunctionValue } from 'vest-utils';\nimport { IsolateMutator, IsolateSelectors, TIsolate } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport type { TIsolateTest } from 'IsolateTest';\nimport {\n IsolateTestStateMachine,\n TestAction,\n TestStatus,\n} from 'IsolateTestStateMachine';\nimport { TestSeverity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolate } from 'VestIsolate';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport class VestTest extends VestIsolate {\n static stateMachine = IsolateTestStateMachine;\n\n // Read\n\n static getData<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n >(test: TIsolateTest<F, G>) {\n invariant(test.data);\n return test.data;\n }\n\n static is(isolate?: Maybe<TIsolate>): isolate is TIsolateTest {\n return IsolateSelectors.isIsolateType<TIsolateTest>(\n isolate,\n VestIsolateType.Test\n );\n }\n\n static isX(isolate?: Maybe<TIsolate>): asserts isolate is TIsolateTest {\n invariant(VestTest.is(isolate), ErrorStrings.EXPECTED_VEST_TEST);\n }\n\n static cast<F extends TFieldName = string, G extends TGroupName = string>(\n isolate?: Maybe<TIsolate>\n ): TIsolateTest<F, G> {\n VestTest.isX(isolate);\n return isolate as TIsolateTest<F, G>;\n }\n\n static warns(test: TIsolateTest): boolean {\n return VestTest.getData(test).severity === TestSeverity.Warning;\n }\n\n static isOmitted(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.OMITTED);\n }\n\n static isUntested(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.UNTESTED);\n }\n\n static isFailing(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.FAILED);\n }\n\n static isCanceled(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.CANCELED);\n }\n\n static isSkipped(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.SKIPPED);\n }\n\n static isPassing(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.PASSING);\n }\n\n static isWarning(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.WARNING);\n }\n\n static hasFailures(test: TIsolateTest): boolean {\n return VestTest.isFailing(test) || VestTest.isWarning(test);\n }\n\n static isNonActionable(test: TIsolateTest): boolean {\n return (\n VestTest.isSkipped(test) ||\n VestTest.isOmitted(test) ||\n VestTest.isCanceled(test)\n );\n }\n\n static isTested(test: TIsolateTest): boolean {\n return VestTest.hasFailures(test) || VestTest.isPassing(test);\n }\n\n static awaitsResolution(test: TIsolateTest): boolean {\n // Is the test in a state where it can still be run, or complete running\n // and its final status is indeterminate?\n return (\n VestTest.isSkipped(test) ||\n VestTest.isUntested(test) ||\n VestTest.isPending(test)\n );\n }\n\n static isAsyncTest(test: TIsolateTest): boolean {\n return isPromise(VestTest.getData(test).asyncTest);\n }\n\n // Mutate\n\n // static setPending(test: TIsolateTest) {\n // this.setStatus(test, TestStatus.PENDING);\n // }\n\n static fail(test: TIsolateTest): void {\n VestTest.setStatus(\n test,\n VestTest.warns(test) ? TestStatus.WARNING : TestStatus.FAILED\n );\n }\n\n static pass(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.PASSING);\n }\n\n static warn(test: TIsolateTest): void {\n VestTest.setData(test, current => ({\n ...current,\n severity: TestSeverity.Warning,\n }));\n }\n\n static setData(\n test: TIsolateTest,\n setter:\n | ((current: TIsolateTest['data']) => TIsolateTest['data'])\n | TIsolateTest['data']\n ): void {\n test.data = optionalFunctionValue(setter, VestTest.getData(test));\n }\n\n static skip(test: TIsolateTest, force?: boolean): void {\n // Without this force flag, the test will be marked as skipped even if it is pending.\n // This means that it will not be counted in \"allIncomplete\" and its done callbacks\n // will not be called, or will be called prematurely.\n // What this mostly say is that when we have a pending test for one field, and we then\n // start typing in a different field - the pending test will be canceled, which\n // is usually an unwanted behavior.\n // The only scenario in which we DO want to cancel the async test regardless\n // is when we specifically skip a test with `skipWhen`, which is handled by the\n // \"force\" boolean flag.\n // I am not a fan of this flag, but it gets the job done.\n VestTest.setStatus(test, TestStatus.SKIPPED, force);\n }\n\n static cancel(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.CANCELED);\n IsolateMutator.abort(test, TestStatus.CANCELED);\n }\n\n static omit(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.OMITTED);\n }\n\n static reset(test: TIsolateTest): void {\n VestTest.setStatus(test, TestAction.RESET);\n }\n}\n","import { Maybe } from 'vest-utils';\n\nimport { TFieldName } from 'SuiteResultTypes';\nimport { WithFieldName } from 'TestTypes';\n\nexport function nonMatchingFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n return !!fieldName && !matchingFieldName(WithFieldName, fieldName);\n}\n\nexport default function matchingFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n return !!(fieldName && WithFieldName.fieldName === fieldName);\n}\n\nexport function matchesOrHasNoFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n if (fieldName) {\n return matchingFieldName(WithFieldName, fieldName);\n }\n return true;\n}\n","import { Predicate, Predicates, isNullish } from 'vest-utils';\nimport { VestRuntime, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestIsolate } from 'VestIsolate';\nimport { VestTest } from 'VestTest';\nimport { matchesOrHasNoFieldName } from 'matchingFieldName';\n\nexport class SuiteWalker {\n static defaultRoot = VestRuntime.useAvailableRoot;\n\n static hasPending(predicate?: Predicate): boolean {\n const root = SuiteWalker.defaultRoot();\n\n if (!root) {\n return false;\n }\n\n return Walker.some(\n root,\n Predicates.all(VestIsolate.isPending, predicate ?? true)\n );\n }\n\n // Checks whether there are pending isolates in the tree.\n // If a fieldname is provided, will only check tests with a matching fieldname.\n static hasRemainingWithTestNameMatching(fieldName?: TFieldName): boolean {\n return SuiteWalker.hasPending(\n Predicates.any(\n isNullish(fieldName),\n Predicates.all(VestTest.is, (testObject: TIsolateTest) => {\n return matchesOrHasNoFieldName(\n VestTest.getData(testObject),\n fieldName\n );\n })\n )\n );\n }\n}\n","import { Nullable } from 'vest-utils';\nimport { Walker, VestRuntime, TIsolate } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\nimport matchingFieldName from 'matchingFieldName';\n\ntype MaybeRoot = Nullable<TIsolate>;\n\nexport class TestWalker {\n static defaultRoot = VestRuntime.useAvailableRoot;\n\n static hasNoTests(root: MaybeRoot = TestWalker.defaultRoot()): boolean {\n if (!root) return true;\n return !Walker.has(root, VestTest.is);\n }\n\n static someTests(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): boolean {\n if (!root) return false;\n return Walker.some(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static everyTest(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): boolean {\n if (!root) return false;\n return Walker.every(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static walkTests<F extends TFieldName, G extends TGroupName>(\n callback: (test: TIsolateTest<F, G>, breakout: () => void) => void,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n if (!root) return;\n Walker.walk(\n root,\n (isolate, breakout) => {\n callback(VestTest.cast<F, G>(isolate), breakout);\n },\n VestTest.is\n );\n }\n\n static pluckTests(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n if (!root) return;\n Walker.pluck(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static resetField(fieldName: TFieldName): void {\n TestWalker.walkTests(testObject => {\n if (matchingFieldName(VestTest.getData(testObject), fieldName)) {\n VestTest.reset(testObject);\n }\n }, TestWalker.defaultRoot());\n }\n\n static removeTestByFieldName(\n fieldName: TFieldName,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n TestWalker.pluckTests(testObject => {\n return matchingFieldName(VestTest.getData(testObject), fieldName);\n }, root);\n }\n}\n","import { isEmpty, optionalFunctionValue } from 'vest-utils';\nimport { Bus, VestRuntime } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { TIsolateTest } from 'IsolateTest';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\n\n/**\n * This module gets triggered once the suite is done running its sync tests.\n *\n * It goes over all the tests in the state, and checks if they need to be omitted.\n */\n\nexport function useOmitOptionalFields(): void {\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const optionalFields = SuiteOptionalFields.getOptionalFields(root);\n\n // If there are no optional fields, we don't need to do anything\n if (isEmpty(optionalFields)) {\n return;\n }\n\n // Create an object to store the fields that need to be omitted\n const shouldOmit = new Set<string>();\n\n // iterate over each of the tests in the state\n TestWalker.walkTests(testObject => {\n if (VestTest.isPending(testObject)) {\n return;\n }\n const { fieldName } = VestTest.getData(testObject);\n\n // If we already added the current field (not this test specifically)\n // no need for further checks, go and omit the test\n if (shouldOmit.has(fieldName)) {\n verifyAndOmit(testObject);\n } else {\n // check if the field has an optional function\n // if so, run it and verify/omit the test\n runOptionalConfig(testObject);\n }\n });\n\n Bus.useEmit(Events.DONE_TEST_OMISSION_PASS);\n\n function verifyAndOmit(testObject: TIsolateTest) {\n const { fieldName } = VestTest.getData(testObject);\n if (shouldOmit.has(fieldName)) {\n VestTest.omit(testObject);\n SuiteOptionalFields.setOptionalField(root, fieldName, current => ({\n ...current,\n applied: true,\n }));\n }\n }\n\n function runOptionalConfig(testObject: TIsolateTest) {\n const { fieldName } = VestTest.getData(testObject);\n\n // Ge the optional configuration for the given field\n const optionalConfig = SuiteOptionalFields.getOptionalField(\n root,\n fieldName\n );\n\n // If the optional was set to a function or a boolean, run it and verify/omit the test\n if (optionalFunctionValue(optionalConfig.rule) === true) {\n shouldOmit.add(fieldName);\n }\n\n verifyAndOmit(testObject);\n }\n}\n","import { isArray, callEach } from 'vest-utils';\n\nimport { useDoneCallbacks, useFieldCallbacks } from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\n\n/**\n * Runs done callback per field when async tests are finished running.\n */\nexport function useRunFieldCallbacks(fieldName?: TFieldName): void {\n const [fieldCallbacks] = useFieldCallbacks();\n\n if (\n fieldName &&\n !SuiteWalker.hasRemainingWithTestNameMatching(fieldName) &&\n isArray(fieldCallbacks[fieldName])\n ) {\n callEach(fieldCallbacks[fieldName]);\n }\n}\n\n/**\n * Runs unlabelled done callback when async tests are finished running.\n */\nexport function useRunDoneCallbacks() {\n const [doneCallbacks] = useDoneCallbacks();\n callEach(doneCallbacks);\n}\n","import { CB, ValueOf } from 'vest-utils';\nimport { Bus, RuntimeEvents, TIsolate } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport * as CommonStateMachine from 'CommonStateMachine';\nimport { TIsolateTest } from 'IsolateTest';\nimport {\n useExpireSuiteResultCache,\n useResetCallbacks,\n useResetSuite,\n} from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport { useOmitOptionalFields } from 'omitOptionalFields';\nimport { useRunDoneCallbacks, useRunFieldCallbacks } from 'runCallbacks';\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nexport function useInitVestBus() {\n const VestBus = Bus.useBus();\n\n // Report a the completion of a test. There may be other tests with the same\n // name that are still running, or not yet started.\n on(Events.TEST_COMPLETED, (testObject: TIsolateTest) => {\n if (VestTest.isCanceled(testObject)) {\n return;\n }\n\n const { fieldName } = VestTest.getData(testObject);\n\n useRunFieldCallbacks(fieldName);\n });\n\n on(Events.TEST_RUN_STARTED, () => {\n /* Let's just invalidate the suite cache for now */\n });\n\n on(RuntimeEvents.ISOLATE_PENDING, (isolate: TIsolate) => {\n if (VestTest.is(isolate)) {\n VestTest.setPending(isolate);\n }\n\n CommonStateMachine.setPending(isolate);\n });\n\n on(RuntimeEvents.ISOLATE_DONE, (isolate: TIsolate) => {\n if (VestTest.is(isolate)) {\n VestBus.emit(Events.TEST_COMPLETED, isolate);\n }\n\n CommonStateMachine.setDone(isolate);\n\n if (!SuiteWalker.hasPending()) {\n // When no more tests are running, emit the done event\n VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);\n }\n });\n\n on(Events.DONE_TEST_OMISSION_PASS, () => {\n /* We NEED to refresh the cache here. Don't ask */\n });\n\n // Called when all the tests, including async, are done running\n on(Events.ALL_RUNNING_TESTS_FINISHED, () => {\n // Small optimization. We don't need to run this if there are no async tests\n // The reason is that we run this function immediately after the suite callback\n // is run, so if the suite is only comprised of sync tests, we don't need to\n // run this function twice since we know for a fact the state is up to date\n if (TestWalker.someTests(VestTest.isAsyncTest)) {\n useOmitOptionalFields();\n }\n useRunDoneCallbacks();\n });\n\n on(Events.RESET_FIELD, (fieldName: TFieldName) => {\n TestWalker.resetField(fieldName);\n });\n\n on(Events.SUITE_RUN_STARTED, () => {\n useResetCallbacks();\n });\n\n on(Events.SUITE_CALLBACK_RUN_FINISHED, () => {\n useOmitOptionalFields();\n });\n\n on(Events.REMOVE_FIELD, (fieldName: TFieldName) => {\n TestWalker.removeTestByFieldName(fieldName);\n });\n\n on(Events.RESET_SUITE, () => {\n useResetSuite();\n });\n\n return {\n subscribe,\n };\n\n function subscribe(cb: CB) {\n return VestBus.on('*', () => {\n cb();\n }).off;\n }\n\n function on(event: VestEvents, cb: (...args: any[]) => void) {\n VestBus.on(event, (...args: any[]) => {\n // This is more concise, but it might be an overkill\n // if we're adding events that don't need to invalidate the cache\n useExpireSuiteResultCache();\n cb(...args);\n });\n }\n}\n\ntype VestEvents = Events | ValueOf<typeof RuntimeEvents> | '*';\n","import { TIsolate } from 'vestjs-runtime';\n\nexport abstract class IsolateReconciler {\n static match(_currentNode: TIsolate, _historyNode: TIsolate): boolean {\n return false;\n }\n\n static reconcile(currentNode: TIsolate, historyNode: TIsolate): TIsolate {\n return (currentNode ?? historyNode) as TIsolate;\n }\n}\n","import { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport matchingFieldName from 'matchingFieldName';\n\nexport function isSameProfileTest(\n testObject1: TIsolateTest,\n testObject2: TIsolateTest\n): boolean {\n const { groupName: gn1 } = VestTest.getData(testObject1);\n const { groupName: gn2, fieldName: fn2 } = VestTest.getData(testObject2);\n return (\n matchingFieldName(VestTest.getData(testObject1), fn2) &&\n gn1 === gn2 &&\n testObject1.key === testObject2.key\n );\n}\n","import { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport { isSameProfileTest } from 'isSameProfileTest';\n\nexport default function cancelOverriddenPendingTest(\n prevRunTestObject: TIsolateTest,\n currentRunTestObject: TIsolateTest\n): void {\n if (\n currentRunTestObject !== prevRunTestObject &&\n isSameProfileTest(prevRunTestObject, currentRunTestObject) &&\n VestTest.isPending(prevRunTestObject)\n ) {\n VestTest.cancel(prevRunTestObject);\n }\n}\n","import { Maybe, bindNot } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TGroupName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\n\nexport const nonMatchingGroupName = bindNot(matchingGroupName);\n\nexport function matchingGroupName(\n testObject: TIsolateTest,\n groupName: Maybe<TGroupName>\n): boolean {\n return VestTest.getData(testObject).groupName === groupName;\n}\n","import { either } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { Severity } from 'Severity';\nimport { VestTest } from 'VestTest';\n\n/**\n * Checks that a given test object matches the currently specified severity level\n */\nexport function nonMatchingSeverityProfile(\n severity: Severity,\n testObject: TIsolateTest\n): boolean {\n return either(severity === Severity.WARNINGS, VestTest.warns(testObject));\n}\n","\nimport { TIsolateTest } from 'IsolateTest';\nimport { Severity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport { nonMatchingFieldName } from 'matchingFieldName';\nimport { nonMatchingGroupName } from 'matchingGroupName';\nimport { nonMatchingSeverityProfile } from 'nonMatchingSeverityProfile';\n\n/**\n * The difference between this file and hasFailures is that hasFailures uses the static\n * summary object, while this one uses the actual validation state\n */\n\nexport function hasErrorsByTestObjects(fieldName?: TFieldName): boolean {\n return hasFailuresByTestObjects(Severity.ERRORS, fieldName);\n}\n\nfunction hasFailuresByTestObjects(\n severityKey: Severity,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.someTests(testObject => {\n return hasFailuresByTestObject(testObject, severityKey, fieldName);\n });\n}\n\nexport function hasGroupFailuresByTestObjects(\n severityKey: Severity,\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.someTests(testObject => {\n if (nonMatchingGroupName(testObject, groupName)) {\n return false;\n }\n\n return hasFailuresByTestObject(testObject, severityKey, fieldName);\n });\n}\n\n/**\n * Determines whether a certain test profile has failures.\n */\nexport function hasFailuresByTestObject(\n testObject: TIsolateTest,\n severityKey: Severity,\n fieldName?: TFieldName\n): boolean {\n if (!VestTest.hasFailures(testObject)) {\n return false;\n }\n\n if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {\n return false;\n }\n\n if (nonMatchingSeverityProfile(severityKey, testObject)) {\n return false;\n }\n\n return true;\n}\n","import { Modes } from 'Modes';\nimport { useMode } from 'SuiteContext';\nimport { WithFieldName } from 'TestTypes';\nimport { hasErrorsByTestObjects } from 'hasFailuresByTestObjects';\n\n/**\n * Sets the current execution mode for the current suite.\n *\n * Supported modes:\n * - `EAGER` - (default) Runs all tests, but stops on first failure for each given field.\n * - `ALL` - Runs all tests, regardless of failures.\n * - `ONE` - Stops suite execution on first failure of any field.\n *\n * @example\n * ```js\n * import {Modes, create} from 'vest';\n *\n * const suite = create('suite_name', () => {\n * vest.mode(Modes.ALL);\n *\n * // ...\n * });\n * ```\n * @param 'ALL' | 'EAGER' | 'ONE' mode - The mode to set.\n */\n\n// @vx-allow use-use\nexport function mode(mode: Modes): void {\n const [, setMode] = useMode();\n\n setMode(mode);\n}\n\nfunction useIsMode(mode: Modes): boolean {\n const [currentMode] = useMode();\n\n return currentMode === mode;\n}\n\nfunction useIsEager(): boolean {\n return useIsMode(Modes.EAGER);\n}\n\nfunction useIsOne(): boolean {\n return useIsMode(Modes.ONE);\n}\n\nexport function useShouldSkipBasedOnMode(testData: WithFieldName): boolean {\n if (useIsOne()) {\n return hasErrorsByTestObjects();\n }\n\n if (useIsEager()) {\n return hasErrorsByTestObjects(testData.fieldName);\n }\n\n return false;\n}\n","import { isPositive } from 'vest-utils';\n\nimport { countKeyBySeverity, Severity } from 'Severity';\nimport {\n FailureMessages,\n TestsContainer,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\n// calls collectAll or getByFieldName depending on whether fieldName is provided\n\nexport function gatherFailures(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity,\n fieldName?: TFieldName\n): string[] | FailureMessages {\n return fieldName\n ? getByFieldName(testGroup, severityKey, fieldName)\n : collectAll(testGroup, severityKey);\n}\n\nfunction getByFieldName(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity,\n fieldName: TFieldName\n): string[] {\n return testGroup?.[fieldName]?.[severityKey] || [];\n}\n\nfunction collectAll(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity\n): FailureMessages {\n const output: FailureMessages = {};\n\n const countKey = countKeyBySeverity(severityKey);\n\n for (const field in testGroup) {\n if (isPositive(testGroup[field][countKey])) {\n // We will probably never get to the fallback array\n // leaving it just in case the implementation changes\n output[field] = testGroup[field][severityKey] || [];\n }\n }\n\n return output;\n}\n","import { Maybe, greaterThan, isPositive } from 'vest-utils';\n\nimport { Severity, SeverityCount } from 'Severity';\nimport {\n FailureMessages,\n GetFailuresResponse,\n SuiteResult,\n SuiteSummary,\n TFieldName,\n TGroupName,\n TestsContainer,\n} from 'SuiteResultTypes';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { gatherFailures } from 'collectFailures';\nimport matchingFieldName from 'matchingFieldName';\n\nexport function bindSuiteSelectors<F extends TFieldName, G extends TGroupName>(\n get: <F extends string, G extends string>() => SuiteResult<F, G>\n): SuiteSelectors<F, G> {\n return {\n getError: (...args: Parameters<SuiteSelectors<F, G>['getError']>) =>\n get().getError(...args),\n getErrors: (...args: Parameters<SuiteSelectors<F, G>['getErrors']>) =>\n get().getErrors(...args),\n getErrorsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['getErrorsByGroup']>\n ) => get().getErrorsByGroup(...args),\n getWarning: (...args: Parameters<SuiteSelectors<F, G>['getWarning']>) =>\n get().getWarning(...args),\n getWarnings: (...args: Parameters<SuiteSelectors<F, G>['getWarnings']>) =>\n get().getWarnings(...args),\n getWarningsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['getWarningsByGroup']>\n ) => get().getWarningsByGroup(...args),\n hasErrors: (...args: Parameters<SuiteSelectors<F, G>['hasErrors']>) =>\n get().hasErrors(...args),\n hasErrorsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['hasErrorsByGroup']>\n ) => get().hasErrorsByGroup(...args),\n hasWarnings: (...args: Parameters<SuiteSelectors<F, G>['hasWarnings']>) =>\n get().hasWarnings(...args),\n hasWarningsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['hasWarningsByGroup']>\n ) => get().hasWarningsByGroup(...args),\n isPending: (...args: Parameters<SuiteSelectors<F, G>['isPending']>) => {\n return get().isPending(...args);\n },\n isTested: (...args: Parameters<SuiteSelectors<F, G>['isTested']>) =>\n get().isTested(...args),\n isValid: (...args: Parameters<SuiteSelectors<F, G>['isValid']>) =>\n get().isValid(...args),\n isValidByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['isValidByGroup']>\n ) => get().isValidByGroup(...args),\n } as SuiteSelectors<F, G>;\n}\n\n// eslint-disable-next-line max-lines-per-function, max-statements\nexport function suiteSelectors<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>\n): SuiteSelectors<F, G> {\n const selectors = {\n getError,\n getErrors,\n getErrorsByGroup,\n getWarning,\n getWarnings,\n getWarningsByGroup,\n hasErrors,\n hasErrorsByGroup,\n hasWarnings,\n hasWarningsByGroup,\n isPending,\n isTested,\n isValid,\n isValidByGroup,\n };\n\n return selectors;\n\n // Booleans\n\n function isValid(fieldName?: F): boolean {\n return fieldName ? Boolean(summary.tests[fieldName]?.valid) : summary.valid;\n }\n\n function isValidByGroup(groupName: G, fieldName?: F): boolean {\n const group = summary.groups[groupName];\n\n if (!group) {\n return false;\n }\n\n if (fieldName) {\n return isFieldValid(group, fieldName);\n }\n for (const fieldName in group) {\n if (!isFieldValid(group, fieldName)) {\n return false;\n }\n }\n\n return true;\n }\n\n function hasWarnings(fieldName?: F): boolean {\n return hasFailures(summary, SeverityCount.WARN_COUNT, fieldName);\n }\n\n function hasErrors(fieldName?: F): boolean {\n return hasFailures(summary, SeverityCount.ERROR_COUNT, fieldName);\n }\n\n function isTested(fieldName: F): boolean {\n return isPositive(summary.tests[fieldName]?.testCount);\n }\n\n function hasWarningsByGroup<G extends TGroupName>(\n groupName: G,\n fieldName?: F\n ): boolean {\n return hasFailuresByGroup(\n summary,\n SeverityCount.WARN_COUNT,\n groupName,\n fieldName\n );\n }\n\n function hasErrorsByGroup<G extends TGroupName>(\n groupName: G,\n fieldName?: F\n ): boolean {\n return hasFailuresByGroup(\n summary,\n SeverityCount.ERROR_COUNT,\n groupName,\n fieldName\n );\n }\n\n // Responses\n\n function getWarnings(): FailureMessages;\n function getWarnings(fieldName: F): string[];\n function getWarnings(fieldName?: F): GetFailuresResponse {\n return getFailures(summary, Severity.WARNINGS, fieldName);\n }\n\n function getWarning(): Maybe<SummaryFailure<F, G>>;\n function getWarning(fieldName: F): Maybe<string>;\n function getWarning(fieldName?: F): Maybe<SummaryFailure<F, G> | string> {\n return getFailure<F, G>(Severity.WARNINGS, summary, fieldName as F);\n }\n\n function getErrors(): FailureMessages;\n function getErrors(fieldName: F): string[];\n function getErrors(fieldName?: F): GetFailuresResponse {\n return getFailures(summary, Severity.ERRORS, fieldName);\n }\n\n function getError(): Maybe<SummaryFailure<F, G>>;\n function getError(fieldName: F): Maybe<string>;\n function getError(fieldName?: F): Maybe<SummaryFailure<F, G> | string> {\n return getFailure<F, G>(Severity.ERRORS, summary, fieldName as F);\n }\n\n function getErrorsByGroup(groupName: G): FailureMessages;\n function getErrorsByGroup(groupName: G, fieldName: F): string[];\n function getErrorsByGroup(groupName: G, fieldName?: F): GetFailuresResponse {\n return getFailuresByGroup(summary, Severity.ERRORS, groupName, fieldName);\n }\n\n function getWarningsByGroup(groupName: G): FailureMessages;\n function getWarningsByGroup(groupName: G, fieldName: F): string[];\n function getWarningsByGroup(\n groupName: G,\n fieldName?: F\n ): GetFailuresResponse {\n return getFailuresByGroup(summary, Severity.WARNINGS, groupName, fieldName);\n }\n\n function isPending(fieldName?: F): boolean {\n return fieldName\n ? greaterThan(summary.tests[fieldName]?.pendingCount, 0)\n : greaterThan(summary.pendingCount, 0);\n }\n}\n\nexport interface SuiteSelectors<F extends TFieldName, G extends TGroupName> {\n getWarning(): SummaryFailure<F, G> | undefined;\n getWarning(fieldName: F): string | undefined;\n getWarning(fieldName?: F): SummaryFailure<F, G> | string | undefined;\n getError(): SummaryFailure<F, G> | undefined;\n getError(fieldName: F): string | undefined;\n getError(fieldName?: F): SummaryFailure<F, G> | string | undefined;\n getErrors(): FailureMessages;\n getErrors(fieldName: F): string[];\n getErrors(fieldName?: F): string[] | FailureMessages;\n getWarnings(): FailureMessages;\n getWarnings(fieldName: F): string[];\n getWarnings(fieldName?: F): string[] | FailureMessages;\n getErrorsByGroup(groupName: G): FailureMessages;\n getErrorsByGroup(groupName: G, fieldName: F): string[];\n getErrorsByGroup(groupName: G, fieldName?: F): string[] | FailureMessages;\n getWarningsByGroup(groupName: G): FailureMessages;\n getWarningsByGroup(groupName: G, fieldName: F): string[];\n getWarningsByGroup(groupName: G, fieldName?: F): string[] | FailureMessages;\n hasErrors(fieldName?: F): boolean;\n hasWarnings(fieldName?: F): boolean;\n hasErrorsByGroup(groupName: G, fieldName?: F): boolean;\n hasWarningsByGroup(groupName: G, fieldName?: F): boolean;\n isTested(fieldName: F): boolean;\n isPending(fieldName?: F): boolean;\n isValid(fieldName?: F): boolean;\n isValidByGroup(groupName: G, fieldName?: F): boolean;\n}\n\n// Gathers all failures of a given severity\n// With a fieldName, it will only gather failures for that field\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity\n): FailureMessages;\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity,\n fieldName?: TFieldName\n): string[];\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity,\n fieldName?: TFieldName\n): GetFailuresResponse {\n return gatherFailures(summary.tests, severityKey, fieldName);\n}\n\n// Gathers all failures of a given severity within a group\n// With a fieldName, it will only gather failures for that field\nfunction getFailuresByGroup(\n summary: SuiteSummary<TFieldName, TGroupName>,\n severityKey: Severity,\n groupName: TGroupName,\n fieldName?: TFieldName\n): GetFailuresResponse {\n return gatherFailures(summary.groups[groupName], severityKey, fieldName);\n}\n// Checks if a field is valid within a container object - can be within a group or top level\nfunction isFieldValid(\n testContainer: TestsContainer<TFieldName, TGroupName>,\n fieldName: TFieldName\n): boolean {\n return !!testContainer[fieldName]?.valid;\n}\n\n// Checks if a there are any failures of a given severity within a group\n// If a fieldName is provided, it will only check for failures within that field\nfunction hasFailuresByGroup(\n summary: SuiteSummary<TFieldName, TGroupName>,\n severityCount: SeverityCount,\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n const group = summary.groups[groupName];\n\n if (!group) {\n return false;\n }\n\n if (fieldName) {\n return isPositive(group[fieldName]?.[severityCount]);\n }\n\n for (const field in group) {\n if (isPositive(group[field]?.[severityCount])) {\n return true;\n }\n }\n\n return false;\n}\n\n// Checks if there are any failures of a given severity\n// If a fieldName is provided, it will only check for failures within that field\nfunction hasFailures(\n summary: SuiteSummary<TFieldName, TGroupName>,\n countKey: SeverityCount,\n fieldName?: TFieldName\n): boolean {\n const failureCount = fieldName\n ? summary.tests[fieldName]?.[countKey]\n : summary[countKey] || 0;\n\n return isPositive(failureCount);\n}\n\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>\n): Maybe<SummaryFailure<F, G>>;\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>,\n fieldName: F\n): Maybe<string>;\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>,\n fieldName?: F\n): Maybe<SummaryFailure<F, G> | string> {\n const summaryKey = summary[severity];\n\n if (!fieldName) {\n return summaryKey[0];\n }\n\n return summaryKey.find(\n (summaryFailure: SummaryFailure<TFieldName, TGroupName>) =>\n matchingFieldName(summaryFailure, fieldName)\n )?.message;\n}\n","import { Maybe } from 'vest-utils';\n\nimport { Severity } from 'Severity';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { Done } from 'suiteRunResult';\nimport { SuiteSelectors } from 'suiteSelectors';\n\nexport class SummaryBase {\n public errorCount = 0;\n public warnCount = 0;\n public testCount = 0;\n public pendingCount = 0;\n}\n\nexport class SuiteSummary<\n F extends TFieldName,\n G extends TGroupName\n> extends SummaryBase {\n public [Severity.ERRORS]: SummaryFailure<F, G>[] = [];\n public [Severity.WARNINGS]: SummaryFailure<F, G>[] = [];\n public groups: Groups<G, F> = {} as Groups<G, F>;\n public tests: Tests<F> = {} as Tests<F>;\n public valid = false;\n}\n\nexport type TestsContainer<F extends TFieldName, G extends TGroupName> =\n | Group<G>\n | Tests<F>;\nexport type GroupTestSummary = SingleTestSummary;\n\nexport type Groups<G extends TGroupName, F extends TFieldName> = Record<\n G,\n Group<F>\n>;\nexport type Group<F extends TFieldName> = Record<F, GroupTestSummary>;\nexport type Tests<F extends TFieldName> = Record<F, SingleTestSummary>;\n\nexport type SingleTestSummary = SummaryBase & {\n errors: string[];\n warnings: string[];\n valid: boolean;\n pendingCount: number;\n};\n\nexport type GetFailuresResponse = FailureMessages | string[];\n\nexport type FailureMessages = Record<string, string[]>;\n\nexport type SuiteResult<\n F extends TFieldName,\n G extends TGroupName\n> = SuiteSummary<F, G> & SuiteSelectors<F, G> & { suiteName: SuiteName };\n\nexport type SuiteRunResult<\n F extends TFieldName,\n G extends TGroupName\n> = SuiteResult<F, G> & {\n done: Done<F, G>;\n};\n\nexport type SuiteName = Maybe<string>;\n\nexport type TFieldName<T extends string = string> = T;\nexport type TGroupName<G extends string = string> = G;\n","import { TIsolateTest } from 'IsolateTest';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { WithFieldName } from 'TestTypes';\nimport { VestTest } from 'VestTest';\n\nexport class SummaryFailure<F extends TFieldName, G extends TGroupName>\n implements WithFieldName<F>\n{\n constructor(\n public fieldName: F,\n public message: string | undefined,\n public groupName: G | undefined\n ) {}\n\n static fromTestObject<F extends TFieldName, G extends TGroupName>(\n testObject: TIsolateTest<F, G>\n ) {\n const { fieldName, message, groupName } = VestTest.getData(testObject);\n\n return new SummaryFailure(fieldName, message, groupName);\n }\n}\n","import { useIsOptionalFieldApplied } from 'optional';\nimport { Predicates } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { TIsolateTest } from 'IsolateTest';\nimport { OptionalFieldTypes } from 'OptionalTypes';\nimport { Severity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport {\n hasErrorsByTestObjects,\n hasGroupFailuresByTestObjects,\n} from 'hasFailuresByTestObjects';\nimport { nonMatchingFieldName } from 'matchingFieldName';\nimport { nonMatchingGroupName } from 'matchingGroupName';\n\nexport function useShouldAddValidProperty(fieldName?: TFieldName): boolean {\n // Is the field optional, and the optional condition is applied\n if (useIsOptionalFieldApplied(fieldName)) {\n return true;\n }\n\n // Are there no tests?\n if (TestWalker.hasNoTests()) {\n return false;\n }\n\n // // Does the field have any tests with errors?\n if (hasErrorsByTestObjects(fieldName)) {\n return false;\n }\n\n // Does the given field have any pending tests that are not optional?\n if (useHasNonOptionalIncomplete(fieldName)) {\n return false;\n }\n\n // Does the field have no missing tests?\n return useNoMissingTests(fieldName);\n}\n\nexport function useShouldAddValidPropertyInGroup(\n groupName: TGroupName,\n fieldName: TFieldName\n): boolean {\n if (useIsOptionalFieldApplied(fieldName)) {\n return true;\n }\n\n if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {\n return false;\n }\n\n // Do the given group/field have any pending tests that are not optional?\n if (useHasNonOptionalIncompleteByGroup(groupName, fieldName)) {\n return false;\n }\n\n return useNoMissingTestsByGroup(groupName, fieldName);\n}\n\n// Does the given field have any pending tests that are not optional?\nfunction useHasNonOptionalIncomplete(fieldName?: TFieldName) {\n return SuiteWalker.hasPending(\n Predicates.all(\n VestTest.is,\n (testObject: TIsolateTest) =>\n !nonMatchingFieldName(VestTest.getData(testObject), fieldName),\n () => !useIsOptionalFieldApplied(fieldName)\n )\n );\n}\n\n// Do the given group/field have any pending tests that are not optional?\nfunction useHasNonOptionalIncompleteByGroup(\n groupName: TGroupName,\n fieldName: TFieldName\n): boolean {\n return SuiteWalker.hasPending(\n Predicates.all(\n VestTest.is,\n (testObject: TIsolateTest) =>\n !nonMatchingGroupName(testObject, groupName),\n (testObject: TIsolateTest) =>\n !nonMatchingFieldName(VestTest.getData(testObject), fieldName),\n () => !useIsOptionalFieldApplied(fieldName)\n )\n );\n}\n\n// Did all of the tests for the provided field run/omit?\n// This makes sure that the fields are not skipped or pending.\nfunction useNoMissingTests(fieldName?: string): boolean {\n return TestWalker.everyTest(testObject => {\n return useNoMissingTestsLogic(testObject, fieldName);\n });\n}\n\n// Does the group have no missing tests?\nfunction useNoMissingTestsByGroup(\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.everyTest(testObject => {\n if (nonMatchingGroupName(testObject, groupName)) {\n return true;\n }\n\n return useNoMissingTestsLogic(testObject, fieldName);\n });\n}\n\nfunction useNoMissingTestsLogic(\n testObject: TIsolateTest,\n fieldName?: TFieldName\n): boolean {\n if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {\n return true;\n }\n\n /**\n * The reason we're checking for the optional field here and not in \"omitOptionalFields\"\n * is because that unlike the bool/function check we do there, here it only depends on\n * whether the field was tested already or not.\n *\n * We qualify the test as not missing only if it was already run, if it is omitted,\n * or if it is marked as optional, even if the optional check did not apply yet -\n * but the test did not reach its final state.\n */\n\n return (\n VestTest.isOmitted(testObject) ||\n VestTest.isTested(testObject) ||\n useOptionalTestAwaitsResolution(testObject)\n );\n}\n\nfunction useOptionalTestAwaitsResolution(testObject: TIsolateTest): boolean {\n // Does the test belong to an optional field,\n // and the test itself is still in an indeterminate state?\n\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const { fieldName } = VestTest.getData(testObject);\n\n return (\n SuiteOptionalFields.getOptionalField(root, fieldName).type ===\n OptionalFieldTypes.AUTO && VestTest.awaitsResolution(testObject)\n );\n}\n","import { Maybe, assign, defaultTo } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { countKeyBySeverity, Severity } from 'Severity';\nimport {\n Groups,\n SingleTestSummary,\n SuiteSummary,\n SummaryBase,\n TFieldName,\n TGroupName,\n Tests,\n} from 'SuiteResultTypes';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport {\n useShouldAddValidProperty,\n useShouldAddValidPropertyInGroup,\n} from 'shouldAddValidProperty';\n\nexport function useProduceSuiteSummary<\n F extends TFieldName,\n G extends TGroupName,\n>(): SuiteSummary<F, G> {\n const summary: SuiteSummary<F, G> = new SuiteSummary();\n\n TestWalker.walkTests<F, G>(testObject => {\n summary.tests = useAppendToTest(summary.tests, testObject);\n summary.groups = useAppendToGroup(summary.groups, testObject);\n summary.errors = appendFailures(\n Severity.ERRORS,\n summary.errors,\n testObject,\n );\n summary.warnings = appendFailures(\n Severity.WARNINGS,\n summary.warnings,\n testObject,\n );\n });\n\n summary.valid = useShouldAddValidProperty();\n\n return countOverallStates(summary);\n}\n\nfunction appendFailures<F extends TFieldName, G extends TGroupName>(\n key: Severity,\n failures: SummaryFailure<F, G>[],\n testObject: TIsolateTest<F, G>,\n): SummaryFailure<F, G>[] {\n if (VestTest.isOmitted(testObject)) {\n return failures;\n }\n\n const shouldAppend =\n key === Severity.WARNINGS\n ? VestTest.isWarning(testObject)\n : VestTest.isFailing(testObject);\n\n if (shouldAppend) {\n return failures.concat(SummaryFailure.fromTestObject(testObject));\n }\n return failures;\n}\n\nfunction useAppendToTest<F extends TFieldName>(\n tests: Tests<F>,\n testObject: TIsolateTest<F>,\n): Tests<F> {\n const fieldName = VestTest.getData<F>(testObject).fieldName;\n\n const newTests = {\n ...tests,\n };\n\n newTests[fieldName] = appendTestObject(newTests[fieldName], testObject);\n // If `valid` is false to begin with, keep it that way. Otherwise, assess.\n newTests[fieldName].valid =\n newTests[fieldName].valid === false\n ? false\n : useShouldAddValidProperty(fieldName);\n\n return newTests;\n}\n\n/**\n * Appends to a group object if within a group\n */\nfunction useAppendToGroup(\n groups: Groups<TGroupName, TFieldName>,\n testObject: TIsolateTest,\n): Groups<TGroupName, TFieldName> {\n const { groupName, fieldName } = VestTest.getData(testObject);\n\n if (!groupName) {\n return groups;\n }\n\n const newGroups = {\n ...groups,\n };\n\n newGroups[groupName] = newGroups[groupName] || {};\n newGroups[groupName][fieldName] = appendTestObject(\n newGroups[groupName][fieldName],\n testObject,\n );\n\n newGroups[groupName][fieldName].valid =\n newGroups[groupName][fieldName].valid === false\n ? false\n : useShouldAddValidPropertyInGroup(groupName, fieldName);\n\n return newGroups;\n}\n\n/**\n * Counts the failed tests and adds global counters\n */\nfunction countOverallStates<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n): SuiteSummary<F, G> {\n for (const test in summary.tests) {\n summary.errorCount += summary.tests[test].errorCount;\n summary.warnCount += summary.tests[test].warnCount;\n summary.testCount += summary.tests[test].testCount;\n summary.pendingCount += summary.tests[test].pendingCount;\n }\n return summary;\n}\n\n/**\n * Appends the test to a results object.\n */\n// eslint-disable-next-line max-statements, complexity\nfunction appendTestObject(\n summaryKey: Maybe<SingleTestSummary>,\n testObject: TIsolateTest,\n): SingleTestSummary {\n const { message } = VestTest.getData(testObject);\n\n // Let's first create a new object, so we don't mutate the original.\n const nextSummaryKey = defaultTo<SingleTestSummary>(\n summaryKey ? { ...summaryKey } : null,\n baseTestStats,\n );\n\n // If the test is not actionable, we don't need to append it to the summary.\n if (VestTest.isNonActionable(testObject)) return nextSummaryKey;\n\n // Increment the pending count if the test is pending.\n if (VestTest.isPending(testObject)) {\n nextSummaryKey.pendingCount++;\n }\n\n // Increment the error count if the test is failing.\n if (VestTest.isFailing(testObject)) {\n incrementFailures(Severity.ERRORS);\n } else if (VestTest.isWarning(testObject)) {\n // Increment the warning count if the test is warning.\n incrementFailures(Severity.WARNINGS);\n }\n\n // Increment the test count.\n nextSummaryKey.testCount++;\n\n return nextSummaryKey;\n\n // Helper function to increment the failure count.\n function incrementFailures(severity: Severity) {\n const countKey = countKeyBySeverity(severity);\n nextSummaryKey[countKey]++;\n if (message) {\n nextSummaryKey[severity] = (nextSummaryKey[severity] || []).concat(\n message,\n );\n }\n }\n}\n\nfunction baseTestStats() {\n return assign(new SummaryBase(), {\n errors: [],\n valid: true,\n warnings: [],\n });\n}\n","import { assign } from 'vest-utils';\n\nimport { useSuiteName, useSuiteResultCache } from 'Runtime';\nimport { SuiteResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { suiteSelectors } from 'suiteSelectors';\nimport { useProduceSuiteSummary } from 'useProduceSuiteSummary';\n\nexport function useCreateSuiteResult<\n F extends TFieldName,\n G extends TGroupName\n>(): SuiteResult<F, G> {\n return useSuiteResultCache<F, G>(() => {\n // @vx-allow use-use\n const summary = useProduceSuiteSummary<F, G>();\n\n // @vx-allow use-use\n const suiteName = useSuiteName();\n return Object.freeze(\n assign(summary, suiteSelectors<F, G>(summary), {\n suiteName,\n })\n ) as SuiteResult<F, G>;\n });\n}\n","import type { CB } from 'vest-utils';\nimport { optionalFunctionValue } from 'vest-utils';\nimport { Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext, useOmitted } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\n\n/**\n * Conditionally omits tests from the suite.\n *\n * @example\n *\n * omitWhen(res => res.hasErrors('username'), () => {\n * test('username', 'User already taken', async () => await doesUserExist(username)\n * });\n */\n// @vx-allow use-use\nexport function omitWhen<F extends TFieldName, G extends TGroupName>(\n conditional: TDraftCondition<F, G>,\n callback: CB\n): void {\n Isolate.create(VestIsolateType.OmitWhen, () => {\n SuiteContext.run(\n {\n omitted:\n useWithinActiveOmitWhen() ||\n optionalFunctionValue(\n conditional,\n optionalFunctionValue(useCreateSuiteResult)\n ),\n },\n callback\n );\n });\n}\n\n// Checks that we're currently in an active omitWhen block\nexport function useWithinActiveOmitWhen(): boolean {\n return useOmitted();\n}\n","import { CB, optionalFunctionValue } from 'vest-utils';\nimport { Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext, useSkipped } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\n\n/**\n * Conditionally skips running tests within the callback.\n *\n * @example\n *\n * skipWhen(res => res.hasErrors('username'), () => {\n * test('username', 'User already taken', async () => await doesUserExist(username)\n * });\n */\n// @vx-allow use-use\nexport function skipWhen<F extends TFieldName, G extends TGroupName>(\n condition: TDraftCondition<F, G>,\n callback: CB\n): void {\n Isolate.create(VestIsolateType.SkipWhen, () => {\n SuiteContext.run(\n {\n skipped:\n // Checking for nested conditional. If we're in a nested skipWhen,\n // we should skip the test if the parent conditional is true.\n useIsExcludedIndividually() ||\n // Otherwise, we should skip the test if the conditional is true.\n optionalFunctionValue(\n condition,\n optionalFunctionValue(useCreateSuiteResult)\n ),\n },\n callback\n );\n });\n}\n\nexport function useIsExcludedIndividually(): boolean {\n return useSkipped();\n}\n","export enum FocusModes {\n ONLY,\n SKIP,\n}\n","import {\n asArray,\n Maybe,\n OneOrMoreOf,\n noop,\n Nullable,\n isNotEmpty,\n isStringValue,\n} from 'vest-utils';\nimport { IsolateSelectors, TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { FocusModes } from 'FocusedKeys';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type ExclusionItem = Maybe<OneOrMoreOf<string>>;\nexport type FieldExclusion<F extends TFieldName> = Maybe<OneOrMoreOf<F>>;\nexport type GroupExclusion<G extends TGroupName> = Maybe<OneOrMoreOf<G>>;\n\nexport type TIsolateFocused = TIsolate<IsolateFocusedPayload>;\n\nexport type IsolateFocusedPayload = {\n focusMode: FocusModes;\n match: FieldExclusion<TFieldName>;\n matchAll: boolean;\n};\n\nexport function IsolateFocused(\n focusMode: FocusModes,\n match?: true | FieldExclusion<TFieldName>\n): TIsolateFocused {\n return Isolate.create(VestIsolateType.Focused, noop, {\n focusMode,\n match: asArray(match).filter(isStringValue),\n matchAll: match === true,\n });\n}\n\nexport class FocusSelectors {\n static isSkipFocused(\n focus: Nullable<TIsolateFocused>,\n fieldName?: TFieldName\n ): boolean {\n return (\n focus?.data.focusMode === FocusModes.SKIP &&\n (hasFocus(focus, fieldName) || focus.data.matchAll === true)\n );\n }\n static isOnlyFocused(\n focus: Nullable<TIsolateFocused>,\n fieldName?: TFieldName\n ): boolean {\n return (\n focus?.data.focusMode === FocusModes.ONLY && hasFocus(focus, fieldName)\n );\n }\n\n static isIsolateFocused(isolate: TIsolate): isolate is TIsolateFocused {\n return IsolateSelectors.isIsolateType(isolate, VestIsolateType.Focused);\n }\n}\n\n/**\n * Adds a field or a list of fields into the inclusion list\n *\n * @example\n *\n * only('username');\n */\n// @vx-allow use-use\nexport function only(match: FieldExclusion<TFieldName> | false) {\n return IsolateFocused(FocusModes.ONLY, defaultMatch(match));\n}\n/**\n * Adds a field or a list of fields into the exclusion list\n *\n * @example\n *\n * skip('username');\n */\n// @vx-allow use-use\nexport function skip(match: FieldExclusion<TFieldName> | boolean) {\n return IsolateFocused(FocusModes.SKIP, defaultMatch(match));\n}\n\nfunction defaultMatch(match: FieldExclusion<TFieldName> | boolean) {\n return match === false ? [] : match;\n}\n\nfunction hasFocus(focus: Nullable<TIsolateFocused>, fieldName?: TFieldName) {\n return (\n isNotEmpty(focus?.data.match) &&\n (fieldName ? focus?.data.match?.includes(fieldName) ?? true : true)\n );\n}\n","import { isNotNullish } from 'vest-utils';\nimport { TIsolate, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { FocusSelectors } from 'focused';\n\n/**\n * Checks if context has included tests\n */\nexport function useHasOnliedTests(\n testObject: TIsolateTest,\n fieldName?: TFieldName\n): boolean {\n return isNotNullish(\n Walker.findClosest(testObject, (child: TIsolate) => {\n if (!FocusSelectors.isIsolateFocused(child)) return false;\n\n return FocusSelectors.isOnlyFocused(child, fieldName);\n })\n );\n}\n","import { Nullable, optionalFunctionValue } from 'vest-utils';\nimport { TIsolate, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { useInclusion } from 'SuiteContext';\nimport { VestTest } from 'VestTest';\nimport { FocusSelectors, TIsolateFocused } from 'focused';\nimport { useIsExcludedIndividually } from 'skipWhen';\nimport { useHasOnliedTests } from 'useHasOnliedTests';\n//Checks whether a certain test profile excluded by any of the exclusion groups.\n\nfunction useClosestMatchingFocus(\n testObject: TIsolateTest,\n): Nullable<TIsolateFocused> {\n return Walker.findClosest(testObject, (child: TIsolate) => {\n if (!FocusSelectors.isIsolateFocused(child)) return false;\n\n const { fieldName } = VestTest.getData(testObject);\n\n return child.data.match?.includes(fieldName) || child.data.matchAll;\n });\n}\n\nexport function useIsExcluded(testObject: TIsolateTest): boolean {\n const { fieldName } = VestTest.getData(testObject);\n\n if (useIsExcludedIndividually()) return true;\n const inclusion = useInclusion();\n const focusMatch = useClosestMatchingFocus(testObject);\n // if test is skipped\n // no need to proceed\n if (FocusSelectors.isSkipFocused(focusMatch)) return true;\n const isTestIncluded = FocusSelectors.isOnlyFocused(focusMatch);\n // if field is only'ed\n if (isTestIncluded) return false;\n\n // If there is _ANY_ `only`ed test (and we already know this one isn't) return true\n if (useHasOnliedTests(testObject)) {\n // Check if inclusion rules for this field (`include` hook)\n return !optionalFunctionValue(inclusion[fieldName], testObject);\n }\n\n // We're done here. This field is not excluded\n return false;\n}\n","import { useIsOptionalFieldApplied } from 'optional';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\nimport { useShouldSkipBasedOnMode } from 'mode';\nimport { useWithinActiveOmitWhen } from 'omitWhen';\nimport { useIsExcludedIndividually } from 'skipWhen';\nimport { useIsExcluded } from 'useIsExcluded';\n\nexport function useVerifyTestRun(\n testObject: TIsolateTest,\n collisionResult: TIsolateTest = testObject\n): TIsolateTest {\n const testData = VestTest.getData(testObject);\n\n if (useShouldSkipBasedOnMode(testData)) {\n return skipTestAndReturn(testObject);\n }\n\n if (useShouldOmit(testData.fieldName)) {\n return omitTestAndReturn(testObject);\n }\n\n if (useIsExcluded(testObject)) {\n return useForceSkipIfInSkipWhen(collisionResult);\n }\n\n return testObject;\n}\n\nfunction useShouldOmit(fieldName: TFieldName): boolean {\n return useWithinActiveOmitWhen() || useIsOptionalFieldApplied(fieldName);\n}\n\nfunction skipTestAndReturn(testNode: TIsolateTest): TIsolateTest {\n VestTest.skip(testNode);\n return testNode;\n}\n\nfunction omitTestAndReturn(testNode: TIsolateTest): TIsolateTest {\n VestTest.omit(testNode);\n return testNode;\n}\n\nfunction useForceSkipIfInSkipWhen(testNode: TIsolateTest): TIsolateTest {\n // We're forcing skipping the pending test\n // if we're directly within a skipWhen block\n // This mostly means that we're probably giving\n // up on this async test intentionally.\n VestTest.skip(testNode, useIsExcludedIndividually());\n return testNode;\n}\n","import { Maybe, deferThrow, text } from 'vest-utils';\nimport { IsolateInspector, Reconciler } from 'vestjs-runtime';\nimport type { TIsolate } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateReconciler } from 'IsolateReconciler';\nimport type { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport cancelOverriddenPendingTest from 'cancelOverriddenPendingTest';\nimport { isSameProfileTest } from 'isSameProfileTest';\nimport { useVerifyTestRun } from 'verifyTestRun';\n\nexport class IsolateTestReconciler extends IsolateReconciler {\n static match(currentNode: TIsolate, historyNode: TIsolate): boolean {\n return VestTest.is(currentNode) && VestTest.is(historyNode);\n }\n\n static reconcile(\n currentNode: TIsolateTest,\n historyNode: TIsolateTest\n ): TIsolateTest {\n const reconcilerOutput = usePickNode(historyNode, currentNode);\n\n cancelOverriddenPendingTestOnTestReRun(\n reconcilerOutput,\n currentNode,\n historyNode\n );\n\n return reconcilerOutput;\n }\n}\n\nfunction usePickNode(\n historyNode: TIsolateTest,\n currentNode: TIsolateTest\n): TIsolateTest {\n const collisionResult = handleCollision(currentNode, historyNode);\n\n return useVerifyTestRun(currentNode, collisionResult);\n}\n\nfunction handleCollision(\n newNode: TIsolateTest,\n prevNode?: TIsolate\n): TIsolateTest {\n if (IsolateInspector.usesKey(newNode)) {\n return VestTest.cast(Reconciler.handleIsolateNodeWithKey(newNode));\n }\n\n if (\n Reconciler.dropNextNodesOnReorder(nodeReorderDetected, newNode, prevNode)\n ) {\n throwTestOrderError(newNode, prevNode);\n return newNode;\n }\n\n if (!VestTest.is(prevNode)) {\n // I believe we cannot actually reach this point.\n // Because it should already be handled by nodeReorderDetected.\n /* istanbul ignore next */\n return newNode;\n }\n\n // FIXME: May-13-2023\n // This may not be the most ideal solution.\n // In short: if the node was omitted in the previous run,\n // we want to re-evaluate it. The reason is that we may incorrectly\n // identify it is \"optional\" because it was omitted in the previous run.\n // There may be a better way to handle this. Need to revisit this.\n if (VestTest.isOmitted(prevNode)) {\n return newNode;\n }\n\n return prevNode;\n}\n\nfunction cancelOverriddenPendingTestOnTestReRun(\n nextNode: TIsolate,\n currentNode: TIsolate,\n prevTestObject: TIsolateTest\n) {\n if (nextNode === currentNode && VestTest.is(currentNode)) {\n cancelOverriddenPendingTest(prevTestObject, currentNode);\n }\n}\n\nfunction nodeReorderDetected(\n newNode: TIsolateTest,\n prevNode: Maybe<TIsolate>\n): boolean {\n return VestTest.is(prevNode) && !isSameProfileTest(prevNode, newNode);\n}\n\nfunction throwTestOrderError(\n newNode: TIsolateTest,\n prevNode: Maybe<TIsolate>\n): void {\n if (IsolateInspector.canReorder(newNode)) {\n return;\n }\n\n deferThrow(\n text(ErrorStrings.TESTS_CALLED_IN_DIFFERENT_ORDER, {\n fieldName: VestTest.getData(newNode).fieldName,\n prevName: VestTest.is(prevNode)\n ? VestTest.getData(prevNode).fieldName\n : undefined,\n })\n );\n}\n","import { Nullable } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nimport { IsolateTestReconciler } from 'IsolateTestReconciler';\n\nexport function VestReconciler(\n currentNode: TIsolate,\n historyNode: TIsolate\n): Nullable<TIsolate> {\n return (\n [IsolateTestReconciler]\n .find(reconciler => reconciler.match(currentNode, historyNode))\n ?.reconcile(currentNode as any, historyNode as any) ?? null\n );\n}\n","import { CB } from 'vest-utils';\nimport { TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext } from 'SuiteContext';\nimport { TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport function group<G extends TGroupName>(\n groupName: G,\n callback: CB<void>\n): TIsolate;\nexport function group(callback: CB<void>): TIsolate;\nexport function group<G extends TGroupName>(\n ...args: [groupName: G, callback: CB<void>] | [callback: CB<void>]\n): TIsolate {\n const [callback, groupName] = args.reverse() as [CB<void>, G];\n\n return Isolate.create(\n VestIsolateType.Group,\n () => {\n return SuiteContext.run({ ...(groupName && { groupName }) }, callback);\n },\n );\n}\n","import { isStringValue, invariant, optionalFunctionValue } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { TIsolateTest } from 'IsolateTest';\nimport { useInclusion } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\nimport { useHasOnliedTests } from 'useHasOnliedTests';\n\n/**\n * Conditionally includes a field for testing, based on specified criteria.\n *\n * @param {string} fieldName - The name of the field to include for testing.\n *\n * @example\n * include('confirm').when('password');\n * // Includes the \"confirm\" field for testing when the \"password\" field is included\n *\n * include('confirm').when(someValue);\n * // Includes the \"confirm\" field for testing when the value of `someValue` is true\n *\n * include('confirm').when(() => someValue);\n * // Includes the \"confirm\" field for testing when the callback function returns true\n *\n * include('username').when(result => result.hasErrors('username'));\n * // Includes the \"username\" field for testing when there are errors associated with it in the current suite result\n */\n// @vx-allow use-use\nexport function include<F extends TFieldName, G extends TGroupName>(\n fieldName: F\n): {\n when: (condition: F | TFieldName | TDraftCondition<F, G>) => void;\n} {\n invariant(isStringValue(fieldName));\n const inclusion = useInclusion();\n\n inclusion[fieldName] = true;\n\n return { when };\n\n /**\n * Specifies the inclusion criteria for the field in `include` function.\n */\n function when(condition: F | TFieldName | TDraftCondition<F, G>): void {\n invariant(condition !== fieldName, ErrorStrings.INCLUDE_SELF);\n\n const inclusion = useInclusion();\n\n // This callback will run as part of the \"isExcluded\" series of checks\n inclusion[fieldName] = function isIncluded(\n currentNode: TIsolateTest\n ): boolean {\n if (isStringValue(condition)) {\n return useHasOnliedTests(currentNode, condition);\n }\n\n return optionalFunctionValue(\n condition,\n optionalFunctionValue(useCreateSuiteResult)\n );\n };\n }\n}\n","import { CB, Maybe } from 'vest-utils';\nimport { TIsolate, Isolate, IsolateKey } from 'vestjs-runtime';\n\nimport { IsolateTestStateMachine, TestStatus } from 'IsolateTestStateMachine';\nimport { TestSeverity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { AsyncTest, TestFn } from 'TestTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type TIsolateTest<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = TIsolate<CommonTestFields<F, G> & IsolateTestPayload>;\n\nexport function IsolateTest<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n>(\n callback: CB,\n input: CommonTestFields<F, G>,\n key?: IsolateKey\n): TIsolateTest<F, G> {\n const payload: IsolateTestPayload = {\n ...IsolateTestBase(),\n fieldName: input.fieldName,\n testFn: input.testFn,\n };\n\n if (input.groupName) {\n payload.groupName = input.groupName;\n }\n\n if (input.message) {\n payload.message = input.message;\n }\n const isolate = Isolate.create<IsolateTestPayload>(\n VestIsolateType.Test,\n callback,\n payload,\n key ?? null\n );\n\n return isolate as TIsolateTest<F, G>;\n}\n\nexport function IsolateTestBase() {\n return {\n severity: TestSeverity.Error,\n status: IsolateTestStateMachine.initial(),\n };\n}\n\nexport type IsolateTestPayload<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = CommonTestFields<F, G> & {\n severity: TestSeverity;\n status: TestStatus;\n asyncTest?: AsyncTest;\n};\n\ntype CommonTestFields<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = {\n message?: Maybe<string>;\n groupName?: G;\n fieldName: F;\n testFn: TestFn;\n};\n","import { Maybe, isStringValue, isUndefined } from 'vest-utils';\n\nexport function shouldUseErrorAsMessage(\n message: Maybe<string>,\n error: unknown\n): error is Maybe<string> {\n // kind of cheating with this safe guard, but it does the job\n return isUndefined(message) && isStringValue(error);\n}\n","import { isPromise, isStringValue, text, deferThrow } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { TIsolateTest } from 'IsolateTest';\nimport { SuiteContext } from 'SuiteContext';\nimport { TestResult } from 'TestTypes';\nimport { VestTest } from 'VestTest';\nimport { shouldUseErrorAsMessage } from 'shouldUseErrorMessage';\nimport { useVerifyTestRun } from 'verifyTestRun';\n\n// eslint-disable-next-line max-statements\nexport function useAttemptRunTest(testObject: TIsolateTest) {\n useVerifyTestRun(testObject);\n\n if (VestTest.isUntested(testObject)) {\n return useRunTest(testObject);\n }\n\n if (!VestTest.isNonActionable(testObject)) {\n // Probably unreachable. If we get here, it means that\n // something was really wrong and should be reported.\n /* istanbul ignore next */\n deferThrow(\n text(ErrorStrings.UNEXPECTED_TEST_REGISTRATION_ERROR, {\n testObject: JSON.stringify(testObject),\n })\n );\n }\n}\n\nfunction runSyncTest(testObject: TIsolateTest): TestResult {\n return SuiteContext.run({ currentTest: testObject }, () => {\n let result: TestResult;\n\n const { message, testFn } = VestTest.getData(testObject);\n\n try {\n result = testFn({ signal: testObject.abortController.signal });\n } catch (error) {\n if (shouldUseErrorAsMessage(message, error)) {\n VestTest.getData(testObject).message = error;\n }\n result = false;\n }\n\n if (result === false) {\n VestTest.fail(testObject);\n }\n\n return result;\n });\n}\n\n/**\n * runs test, if async - adds to pending array\n */\nfunction useRunTest(testObject: TIsolateTest): Promise<void> | undefined {\n // Run test callback.\n // If a promise is returned, set as async and\n // Move to pending list.\n const result = runSyncTest(testObject);\n try {\n // try catch for safe property access\n // in case object is an enforce chain\n if (isPromise(result)) {\n VestTest.getData(testObject).asyncTest = result;\n return useRunAsyncTest(testObject);\n }\n\n onTestCompleted(testObject);\n } catch (e) {\n // Probably unreachable. If we get here, it means that\n // something was really wrong and should be reported.\n /* istanbul ignore next */\n throw new Error(\n text(ErrorStrings.UNEXPECTED_TEST_REGISTRATION_ERROR, {\n testObject: JSON.stringify(testObject),\n error: e,\n })\n );\n }\n}\n\n/**\n * Runs async test.\n */\nfunction useRunAsyncTest(testObject: TIsolateTest): Promise<void> | undefined {\n const { asyncTest, message } = VestTest.getData(testObject);\n\n if (!isPromise(asyncTest)) return;\n // VestTest.setPending(testObject);\n\n const done = VestRuntime.persist(() => {\n onTestCompleted(testObject);\n });\n const fail = VestRuntime.persist((rejectionMessage?: string) => {\n if (VestTest.isCanceled(testObject)) {\n return;\n }\n\n VestTest.getData(testObject).message = isStringValue(rejectionMessage)\n ? rejectionMessage\n : message;\n VestTest.fail(testObject);\n\n done();\n });\n\n return asyncTest.then(done, fail);\n}\n\nfunction onTestCompleted(testObject: TIsolateTest) {\n // Attempts passing if the test is not already failed.\n // or is not canceled/omitted.\n VestTest.pass(testObject);\n}\n","import { CB, isNull } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport * as Runtime from 'Runtime';\nimport { useTestMemoCache } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { VestTest } from 'VestTest';\nimport { VTest } from 'test';\n\n// @vx-allow use-use\nexport function wrapTestMemo<FN extends TFieldName>(test: VTest): TestMemo<FN> {\n /**\n * Caches a test result based on the test's dependencies.\n */\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParametersWithoutMessage\n ): TIsolateTest;\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParametersWithMessage\n ): TIsolateTest;\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParamsOverload\n ): TIsolateTest {\n const [deps, testFn, msg] = args.reverse() as [any[], TestFn, string];\n\n // Implicit dependency for better specificity\n const dependencies = [\n Runtime.useSuiteId(),\n fieldName,\n VestRuntime.useCurrentCursor(),\n ].concat(deps);\n\n return useGetTestFromCache(dependencies, cacheAction);\n\n function cacheAction() {\n return test(fieldName, msg, testFn);\n }\n }\n\n return memo;\n}\n\nfunction useGetTestFromCache(\n dependencies: any[],\n cacheAction: CB<TIsolateTest>\n): TIsolateTest {\n const cache = useTestMemoCache();\n\n const cached = cache.get(dependencies);\n\n if (isNull(cached)) {\n // cache miss\n return cache(dependencies, cacheAction);\n }\n\n const [, cachedValue] = cached;\n\n if (VestTest.isCanceled(cachedValue)) {\n // cache hit, but test is canceled\n cache.invalidate(dependencies);\n return cache(dependencies, cacheAction);\n }\n\n VestRuntime.addNodeToHistory(cachedValue);\n\n return cachedValue;\n}\n\nexport type TestMemo<F extends TFieldName> = {\n (fieldName: F, ...args: ParametersWithoutMessage): TIsolateTest;\n (fieldName: F, ...args: ParametersWithMessage): TIsolateTest;\n};\n\ntype ParametersWithoutMessage = [test: TestFn, dependencies: unknown[]];\ntype ParametersWithMessage = [\n message: string,\n test: TestFn,\n dependencies: unknown[]\n];\n\ntype ParamsOverload = ParametersWithoutMessage | ParametersWithMessage;\n","import { assign, invariant, isFunction, isStringValue, text } from 'vest-utils';\nimport { Bus, IsolateKey } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateTest, TIsolateTest } from 'IsolateTest';\nimport { useGroupName } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { useAttemptRunTest } from 'runTest';\nimport { wrapTestMemo } from 'test.memo';\n\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n message: string,\n cb: TestFn\n): TIsolateTest;\nfunction vestTest<F extends TFieldName>(fieldName: F, cb: TestFn): TIsolateTest;\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n message: string,\n cb: TestFn,\n key: IsolateKey\n): TIsolateTest;\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n cb: TestFn,\n key: IsolateKey\n): TIsolateTest;\n// @vx-allow use-use\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n ...args:\n | [message: string, cb: TestFn]\n | [cb: TestFn]\n | [message: string, cb: TestFn, key: IsolateKey]\n | [cb: TestFn, key: IsolateKey]\n): TIsolateTest {\n const [message, testFn, key] = (\n isFunction(args[1]) ? args : [undefined, ...args]\n ) as [string, TestFn, IsolateKey];\n\n validateTestParams(fieldName, testFn);\n\n const groupName = useGroupName();\n\n const testObjectInput = { fieldName, groupName, message, testFn };\n\n // This invalidates the suite cache.\n Bus.useEmit(Events.TEST_RUN_STARTED);\n\n return IsolateTest(useAttemptRunTest, testObjectInput, key);\n}\n\nexport const test = assign(vestTest, {\n memo: wrapTestMemo(vestTest),\n});\n\nexport type VTest = typeof vestTest;\n\nfunction validateTestParams(fieldName: string, testFn: TestFn): void {\n const fnName = 'test';\n invariant(\n isStringValue(fieldName),\n text(ErrorStrings.INVALID_PARAM_PASSED_TO_FUNCTION, {\n fn_name: fnName,\n param: 'fieldName',\n expected: 'string',\n })\n );\n invariant(\n isFunction(testFn),\n text(ErrorStrings.INVALID_PARAM_PASSED_TO_FUNCTION, {\n fn_name: fnName,\n param: 'callback',\n expected: 'function',\n })\n );\n}\n","// import { optional, skipWhen, omitWhen, IsolateTest, group } from 'vest';\nimport { optional } from 'optional';\nimport { CB, DynamicValue } from 'vest-utils';\nimport { TIsolate, IsolateKey } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { OptionalsInput } from 'OptionalTypes';\nimport { SuiteResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { FieldExclusion, only, skip } from 'focused';\nimport { group } from 'group';\nimport { include } from 'include';\nimport { omitWhen } from 'omitWhen';\nimport { skipWhen } from 'skipWhen';\nimport { test } from 'test';\nimport { TestMemo } from 'test.memo';\n\nexport function getTypedMethods<\n F extends TFieldName,\n G extends TGroupName\n>(): TTypedMethods<F, G> {\n return {\n group,\n include,\n omitWhen,\n only,\n optional,\n skip,\n skipWhen,\n test,\n };\n}\n\nexport type TTypedMethods<F extends TFieldName, G extends TGroupName> = {\n include: (fieldName: F) => {\n when: (condition: F | TDraftCondition<F, G>) => void;\n };\n omitWhen: (conditional: TDraftCondition<F, G>, callback: CB) => void;\n only: {\n (item: FieldExclusion<F>): void;\n };\n optional: (optionals: OptionalsInput<F>) => void;\n skip: {\n (item: FieldExclusion<F>): void;\n };\n skipWhen: (condition: TDraftCondition<F, G>, callback: CB) => void;\n test: {\n (fieldName: F, message: string, cb: TestFn): TIsolateTest;\n (fieldName: F, cb: TestFn): TIsolateTest;\n (fieldName: F, message: string, cb: TestFn, key: IsolateKey): TIsolateTest;\n (fieldName: F, cb: TestFn, key: IsolateKey): TIsolateTest;\n } & {\n memo: TestMemo<F>;\n };\n group: {\n (callback: () => void): TIsolate;\n (groupName: G, callback: () => void): TIsolate;\n };\n};\n\nexport type TDraftCondition<\n F extends TFieldName,\n G extends TGroupName\n> = DynamicValue<boolean, [draft: SuiteResult<F, G>]>;\n","import { assign } from 'vest-utils';\n\nimport { DoneCallback, useDoneCallbacks, useFieldCallbacks } from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\n\nexport function useDeferDoneCallback(\n doneCallback: DoneCallback,\n fieldName?: TFieldName\n): void {\n const [, setFieldCallbacks] = useFieldCallbacks();\n const [, setDoneCallbacks] = useDoneCallbacks();\n\n if (fieldName) {\n setFieldCallbacks(fieldCallbacks =>\n assign(fieldCallbacks, {\n [fieldName]: (fieldCallbacks[fieldName] || []).concat(doneCallback),\n })\n );\n\n return;\n }\n\n setDoneCallbacks(doneCallbacks => doneCallbacks.concat(doneCallback));\n}\n","/**\n * DONE is here and not in its own module to prevent circular dependency issues.\n */\n\nimport { Maybe, isFunction, numberEquals } from 'vest-utils';\n\nimport {\n SuiteResult,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\nexport function shouldSkipDoneRegistration<\n F extends TFieldName,\n G extends TGroupName\n>(\n callback: (res: SuiteResult<F, G>) => void,\n\n fieldName: Maybe<F>,\n output: SuiteRunResult<F, G>\n): boolean {\n // If we do not have any test runs for the current field\n return !!(\n !isFunction(callback) ||\n (fieldName && numberEquals(output.tests[fieldName]?.testCount ?? 0, 0))\n );\n}\n","import { assign } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport {\n SuiteResult,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { useDeferDoneCallback } from 'deferDoneCallback';\nimport { shouldSkipDoneRegistration } from 'shouldSkipDoneRegistration';\nimport { useCreateSuiteResult } from 'suiteResult';\n\nexport function useSuiteRunResult<\n F extends TFieldName,\n G extends TGroupName\n>(): SuiteRunResult<F, G> {\n return Object.freeze(\n assign(\n {\n done: VestRuntime.persist(done),\n },\n useCreateSuiteResult<F, G>()\n )\n );\n}\n\n/**\n * Registers done callbacks.\n * @register {Object} Vest output object.\n */\n// @vx-allow use-use\nfunction done<F extends TFieldName, G extends TGroupName>(\n ...args: any[]\n): SuiteRunResult<F, G> {\n const [callback, fieldName] = args.reverse() as [\n (res: SuiteResult<F, G>) => void,\n F\n ];\n const output = useSuiteRunResult<F, G>();\n if (shouldSkipDoneRegistration<F, G>(callback, fieldName, output)) {\n return output;\n }\n const useDoneCallback = () => callback(useCreateSuiteResult());\n if (!SuiteWalker.hasRemainingWithTestNameMatching(fieldName)) {\n useDoneCallback();\n return output;\n }\n useDeferDoneCallback(useDoneCallback, fieldName);\n return output;\n}\n\nexport interface Done<F extends TFieldName, G extends TGroupName> {\n (...args: [cb: (res: SuiteResult<F, G>) => void]): SuiteRunResult<F, G>;\n (\n ...args: [fieldName: F, cb: (res: SuiteResult<F, G>) => void]\n ): SuiteRunResult<F, G>;\n}\n","import { CB, invariant, isFunction } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\n\n\n\nexport function validateSuiteCallback<T extends CB>(\n suiteCallback: T\n): asserts suiteCallback is T {\n invariant(\n isFunction(suiteCallback),\n ErrorStrings.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION\n );\n}\n","import { assign, CB } from 'vest-utils';\nimport { Bus, VestRuntime } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { IsolateSuite, TIsolateSuite } from 'IsolateSuite';\nimport { useCreateVestState, useLoadSuite } from 'Runtime';\nimport { SuiteContext } from 'SuiteContext';\nimport {\n SuiteName,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\nimport { useInitVestBus } from 'VestBus';\nimport { VestReconciler } from 'VestReconciler';\nimport { getTypedMethods } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\nimport { useSuiteRunResult } from 'suiteRunResult';\nimport { bindSuiteSelectors } from 'suiteSelectors';\nimport { validateSuiteCallback } from 'validateSuiteParams';\n\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(suiteName: SuiteName, suiteCallback: T): Suite<F, G, T>;\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(suiteCallback: T): Suite<F, G, T>;\n// @vx-allow use-use\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(\n ...args: [suiteName: SuiteName, suiteCallback: T] | [suiteCallback: T]\n): Suite<F, G, T> {\n const [suiteCallback, suiteName] = args.reverse() as [T, SuiteName];\n\n validateSuiteCallback(suiteCallback);\n\n // Create a stateRef for the suite\n // It holds the suite's persisted values that may remain between runs.\n const stateRef = useCreateVestState({ suiteName, VestReconciler });\n\n function suite(...args: Parameters<T>): SuiteRunResult<F, G> {\n return SuiteContext.run(\n {\n suiteParams: args,\n },\n () => {\n Bus.useEmit(Events.SUITE_RUN_STARTED);\n\n return IsolateSuite(\n useRunSuiteCallback<T, F, G>(suiteCallback, ...args)\n );\n }\n ).output;\n }\n\n // Assign methods to the suite\n // We do this within the VestRuntime so that the suite methods\n // will be bound to the suite's stateRef and be able to access it.\n return VestRuntime.Run(stateRef, () => {\n // @vx-allow use-use\n const VestBus = useInitVestBus();\n\n return assign(\n // We're also binding the suite to the stateRef, so that the suite\n // can access the stateRef when it's called.\n VestRuntime.persist(suite),\n {\n dump: VestRuntime.persist(\n () => VestRuntime.useAvailableRoot() as TIsolateSuite\n ),\n get: VestRuntime.persist(useCreateSuiteResult),\n remove: Bus.usePrepareEmitter<string>(Events.REMOVE_FIELD),\n reset: Bus.usePrepareEmitter(Events.RESET_SUITE),\n resetField: Bus.usePrepareEmitter<string>(Events.RESET_FIELD),\n resume: VestRuntime.persist(useLoadSuite),\n subscribe: VestBus.subscribe,\n ...bindSuiteSelectors<F, G>(VestRuntime.persist(useCreateSuiteResult)),\n ...getTypedMethods<F, G>(),\n }\n );\n });\n}\n\nfunction useRunSuiteCallback<\n T extends CB,\n F extends TFieldName,\n G extends TGroupName\n>(suiteCallback: T, ...args: Parameters<T>): CB<SuiteRunResult<F, G>> {\n const emit = Bus.useEmit();\n\n return () => {\n suiteCallback(...args);\n emit(Events.SUITE_CALLBACK_RUN_FINISHED);\n return useSuiteRunResult<F, G>();\n };\n}\n\nexport { createSuite };\n","import { CB } from 'vest-utils';\nimport { TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { VestIsolateType } from 'VestIsolateType';\n\ntype TIsolateEach = TIsolate;\n\nexport function IsolateEach<Callback extends CB = CB>(\n callback: Callback\n): TIsolateEach {\n return Isolate.create(VestIsolateType.Each, callback, {\n allowReorder: true,\n });\n}\n","import { invariant, isFunction } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateEach } from 'IsolateEach';\n\n/**\n * Iterates over an array of items, allowing to run tests individually per item.\n *\n * Requires setting a \"key\" property on each item tested.\n *\n * @example\n *\n * each(itemsArray, (item) => {\n * test(item.name, 'Item value must not be empty', () => {\n * enforce(item.value).isNotEmpty();\n * }, item.id)\n * })\n */\nexport function each<T>(\n list: T[],\n callback: (arg: T, index: number) => void\n): void {\n invariant(\n isFunction(callback),\n ErrorStrings.EACH_CALLBACK_MUST_BE_A_FUNCTION\n );\n\n IsolateEach(() => {\n list.forEach((arg, index) => {\n callback(arg, index);\n });\n });\n}\n","import { CB, assign } from 'vest-utils';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { SuiteRunResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { createSuite } from 'createSuite';\nimport { TTypedMethods, getTypedMethods } from 'getTypedMethods';\n\n/**\n * Creates a static suite for server-side validation.\n *\n * @param {Function} validationFn - The validation function that defines the suite's tests.\n * @returns {Function} - A function that runs the validations defined in the suite.\n *\n * @example\n * import { staticSuite, test, enforce } from 'vest';\n *\n * const suite = staticSuite(data => {\n * test('username', 'username is required', () => {\n * enforce(data.username).isNotEmpty();\n * });\n * });\n *\n * suite(data);\n */\nexport function staticSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(suiteCallback: T): StaticSuite<F, G, T> {\n return assign(\n (...args: Parameters<T>) => {\n const suite = createSuite<F, G, T>(suiteCallback);\n\n const result = suite(...args);\n\n return Object.freeze(\n assign(\n {\n dump: suite.dump,\n },\n result\n )\n );\n },\n {\n ...getTypedMethods<F, G>(),\n }\n );\n}\n\ntype StaticSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n> = ((...args: Parameters<T>) => SuiteRunResult<F, G> & {\n dump: CB<TIsolateSuite>;\n}) &\n TTypedMethods<F, G>;\n","import { invariant } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { useCurrentTest } from 'SuiteContext';\nimport { VestTest } from 'VestTest';\n\nconst ERROR_OUTSIDE_OF_TEST = ErrorStrings.WARN_MUST_BE_CALLED_FROM_TEST;\n\n/**\n * Sets the severity level of a test to `warn`, allowing it to fail without marking the suite as invalid.\n * Use this function within the body of a test to create warn-only tests.\n *\n * @returns {void}\n *\n * @example\n * test('password', 'Your password strength is: WEAK', () => {\n * warn();\n *\n * enforce(data.password).matches(/0-9/);\n * });\n *\n * @limitations\n * - The `warn` function should only be used within the body of a `test` function.\n * - When using `warn()` in an async test, it should be called in the synchronous portion of the test, not after an `await` call or in the Promise body.\n * - It is recommended to call `warn()` at the top of the test function.\n */\n// @vx-allow use-use\nexport function warn(): void {\n const currentTest = useCurrentTest(ErrorStrings.HOOK_CALLED_OUTSIDE);\n\n invariant(currentTest, ERROR_OUTSIDE_OF_TEST);\n\n VestTest.warn(currentTest);\n}\n"],"names":["Isolate","assign","Modes","createCascade","tinyState","cache","VestRuntime","isArray","isStringValue","asArray","hasOwnProperty","enforce","seq","machine","StateMachine","invariant","IsolateSelectors","isPromise","optionalFunctionValue","IsolateMutator","Walker","Predicates","isNullish","isEmpty","Bus","callEach","RuntimeEvents","CommonStateMachine.setPending","CommonStateMachine.setDone","bindNot","either","isPositive","greaterThan","defaultTo","noop","isNotEmpty","isNotNullish","IsolateInspector","Reconciler","deferThrow","text","isUndefined","Runtime.useSuiteId","isNull","isFunction","numberEquals"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vest.development.js","sources":["../../src/core/isolate/VestIsolateType.ts","../../src/core/isolate/IsolateSuite/IsolateSuite.ts","../../src/hooks/optional/OptionalTypes.ts","../../src/hooks/optional/Modes.ts","../../src/core/context/SuiteContext.ts","../../src/hooks/optional/optional.ts","../../src/core/VestBus/BusEvents.ts","../../src/core/Runtime.ts","../../src/core/StateMachines/CommonStateMachine.ts","../../src/core/isolate/VestIsolate.ts","../../src/errors/ErrorStrings.ts","../../src/core/StateMachines/IsolateTestStateMachine.ts","../../src/suiteResult/Severity.ts","../../src/core/isolate/IsolateTest/VestTest.ts","../../src/core/test/helpers/matchingFieldName.ts","../../src/suite/SuiteWalker.ts","../../src/core/isolate/IsolateTest/TestWalker.ts","../../src/hooks/optional/omitOptionalFields.ts","../../src/suite/runCallbacks.ts","../../src/core/VestBus/VestBus.ts","../../src/core/isolate/IsolateReconciler.ts","../../src/core/isolate/IsolateTest/isSameProfileTest.ts","../../src/core/isolate/IsolateTest/cancelOverriddenPendingTest.ts","../../src/core/test/helpers/matchingGroupName.ts","../../src/core/test/helpers/nonMatchingSeverityProfile.ts","../../src/suiteResult/selectors/hasFailuresByTestObjects.ts","../../src/hooks/optional/mode.ts","../../src/suiteResult/selectors/collectFailures.ts","../../src/suiteResult/selectors/suiteSelectors.ts","../../src/suiteResult/SuiteResultTypes.ts","../../src/suiteResult/SummaryFailure.ts","../../src/suiteResult/selectors/shouldAddValidProperty.ts","../../src/suiteResult/selectors/useProduceSuiteSummary.ts","../../src/suiteResult/suiteResult.ts","../../src/isolates/omitWhen.ts","../../src/isolates/skipWhen.ts","../../src/hooks/focused/FocusedKeys.ts","../../src/hooks/focused/focused.ts","../../src/hooks/focused/useHasOnliedTests.ts","../../src/hooks/focused/useIsExcluded.ts","../../src/core/test/testLevelFlowControl/verifyTestRun.ts","../../src/core/isolate/IsolateTest/IsolateTestReconciler.ts","../../src/core/isolate/VestReconciler.ts","../../src/isolates/group.ts","../../src/hooks/include.ts","../../src/core/isolate/IsolateTest/IsolateTest.ts","../../src/core/test/helpers/shouldUseErrorMessage.ts","../../src/core/test/testLevelFlowControl/runTest.ts","../../src/core/test/test.memo.ts","../../src/core/test/test.ts","../../src/suite/getTypedMethods.ts","../../src/suiteResult/done/deferDoneCallback.ts","../../src/suiteResult/done/shouldSkipDoneRegistration.ts","../../src/suiteResult/suiteRunResult.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"],"sourcesContent":["export const VestIsolateType = {\n Each: 'Each',\n Focused: 'Focused',\n Group: 'Group',\n OmitWhen: 'OmitWhen',\n SkipWhen: 'SkipWhen',\n Suite: 'Suite',\n Test: 'Test',\n};\n","import { CB, assign } from 'vest-utils';\nimport { Isolate, TIsolate } from 'vestjs-runtime';\n\nimport { OptionalFieldDeclaration, OptionalFields } from 'OptionalTypes';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type TIsolateSuite = TIsolate<{\n optional: OptionalFields;\n}>;\n\nexport function IsolateSuite<Callback extends CB = CB>(\n callback: Callback,\n): TIsolateSuite {\n return Isolate.create(VestIsolateType.Suite, callback, {\n optional: {},\n });\n}\n\nexport class SuiteOptionalFields {\n static setOptionalField(\n suite: TIsolateSuite,\n fieldName: TFieldName,\n setter: (current: OptionalFieldDeclaration) => OptionalFieldDeclaration,\n ): void {\n const current = suite.data.optional;\n const currentField = current[fieldName];\n\n assign(current, {\n [fieldName]: assign({}, currentField, setter(currentField)),\n });\n }\n\n static getOptionalField(\n suite: TIsolateSuite,\n fieldName: TFieldName,\n ): OptionalFieldDeclaration {\n return SuiteOptionalFields.getOptionalFields(suite)[fieldName] ?? {};\n }\n\n static getOptionalFields(suite: TIsolateSuite): OptionalFields {\n return suite.data?.optional ?? {};\n }\n}\n","import { DynamicValue, OneOrMoreOf } from 'vest-utils';\n\nimport { TFieldName } from 'SuiteResultTypes';\n\nexport type OptionalFields = Record<string, OptionalFieldDeclaration>;\n\nexport type OptionalsInput<F extends TFieldName> =\n | OneOrMoreOf<F>\n | OptionalsObject<F>;\n\ntype OptionalsObject<F extends TFieldName> = Record<F, TOptionalRule | any>;\n\ntype ImmediateOptionalFieldDeclaration = {\n type: OptionalFieldTypes.CUSTOM_LOGIC;\n rule: TOptionalRule;\n applied: boolean;\n};\n\ntype DelayedOptionalFieldDeclaration = {\n type: OptionalFieldTypes.AUTO;\n applied: boolean;\n rule: null;\n};\n\ntype TOptionalRule = DynamicValue<boolean>;\n\nexport type OptionalFieldDeclaration =\n | ImmediateOptionalFieldDeclaration\n | DelayedOptionalFieldDeclaration;\n\nexport enum OptionalFieldTypes {\n CUSTOM_LOGIC,\n AUTO,\n}\n","export enum Modes {\n EAGER = 'EAGER',\n ALL = 'ALL',\n ONE = 'ONE',\n}\n","import { createCascade } from 'context';\nimport {\n assign,\n TinyState,\n tinyState,\n cache,\n CacheApi,\n DynamicValue,\n} from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { Modes } from 'Modes';\n\nexport const SuiteContext = createCascade<CTXType>((ctxRef, parentContext) => {\n if (parentContext) {\n return null;\n }\n\n return assign(\n {\n inclusion: {},\n mode: tinyState.createTinyState<Modes>(Modes.EAGER),\n suiteParams: [],\n testMemoCache,\n },\n ctxRef\n );\n});\n\ntype CTXType = {\n inclusion: Record<string, DynamicValue<boolean>>;\n mode: TinyState<Modes>;\n suiteParams: any[];\n testMemoCache: CacheApi<TIsolateTest>;\n currentTest?: TIsolateTest;\n groupName?: string;\n skipped?: boolean;\n omitted?: boolean;\n};\n\nexport function useCurrentTest(msg?: string) {\n return SuiteContext.useX(msg).currentTest;\n}\n\nexport function useGroupName() {\n return SuiteContext.useX().groupName;\n}\n\nexport function useInclusion() {\n return SuiteContext.useX().inclusion;\n}\n\nexport function useMode() {\n return SuiteContext.useX().mode();\n}\n\nexport function useSkipped() {\n return SuiteContext.useX().skipped ?? false;\n}\n\nexport function useOmitted() {\n return SuiteContext.useX().omitted ?? false;\n}\n\nconst testMemoCache = cache<TIsolateTest>(10);\n\nexport function useTestMemoCache() {\n return SuiteContext.useX().testMemoCache;\n}\n\nexport function useSuiteParams() {\n return SuiteContext.useX().suiteParams;\n}\n","import { enforce } from 'n4s';\nimport { isArray, isStringValue, asArray, hasOwnProperty } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { OptionalFieldTypes, OptionalsInput } from 'OptionalTypes';\nimport { useSuiteParams } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\n\n// @vx-allow use-use\nexport function optional<F extends TFieldName>(\n optionals: OptionalsInput<F>\n): void {\n const suiteRoot = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const suiteParams = useSuiteParams();\n const dataObject = suiteParams?.[0] ?? {};\n\n // There are two types of optional field declarations:\n\n // 1 AUTO: Vest will automatically determine whether the field should be omitted\n // Based on the current run. Vest will omit \"auto\" added fields without any\n // configuration if their tests did not run at all in the suite, or if the data object\n // contains a blank value for the field.\n //\n // 2 Custom logic: Vest will determine whether they should fail based on the custom\n // logic supplied by the developer.\n // If the developer supplies a function - when the function returns true, the field will be omitted.\n // If the developer supplies a boolean - the field will be omitted if the value is true.\n // If the developer supplies a value - the field will be omitted if the value is blank.\n\n // AUTO case (field name)\n if (isArray(optionals) || isStringValue(optionals)) {\n asArray(optionals).forEach(optionalField => {\n SuiteOptionalFields.setOptionalField(suiteRoot, optionalField, () => ({\n type: OptionalFieldTypes.AUTO,\n applied: hasOwnProperty(dataObject, optionalField)\n ? enforce.isBlank().test(dataObject?.[optionalField])\n : false,\n rule: null,\n }));\n });\n } else {\n // CUSTOM_LOGIC case (function or boolean)\n for (const field in optionals) {\n const value = optionals[field];\n\n SuiteOptionalFields.setOptionalField(suiteRoot, field, () => ({\n type: OptionalFieldTypes.CUSTOM_LOGIC,\n rule: value,\n applied: enforce.isBlank().test(value) || value === true,\n }));\n }\n }\n}\n\nexport function useIsOptionalFieldApplied(fieldName?: TFieldName) {\n if (!fieldName) {\n return false;\n }\n\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n return (\n SuiteOptionalFields.getOptionalField(root, fieldName)?.applied ?? false\n );\n}\n","export enum Events {\n TEST_RUN_STARTED = 'test_run_started',\n TEST_COMPLETED = 'test_completed',\n ALL_RUNNING_TESTS_FINISHED = 'all_running_tests_finished',\n REMOVE_FIELD = 'remove_field',\n RESET_FIELD = 'reset_field',\n RESET_SUITE = 'reset_suite',\n SUITE_RUN_STARTED = 'suite_run_started',\n SUITE_CALLBACK_RUN_FINISHED = 'SUITE_CALLBACK_RUN_FINISHED',\n DONE_TEST_OMISSION_PASS = 'DONE_TEST_OMISSION_PASS',\n}\n","import {\n CB,\n CacheApi,\n Maybe,\n TinyState,\n cache,\n seq,\n tinyState,\n} from 'vest-utils';\nimport { IRecociler, VestRuntime } from 'vestjs-runtime';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport {\n SuiteName,\n SuiteResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\nexport type DoneCallback = (res: SuiteResult<TFieldName, TGroupName>) => void;\ntype FieldCallbacks = Record<string, DoneCallbacks>;\ntype DoneCallbacks = Array<DoneCallback>;\n\ntype StateExtra = {\n doneCallbacks: TinyState<DoneCallbacks>;\n fieldCallbacks: TinyState<FieldCallbacks>;\n suiteName: Maybe<string>;\n suiteId: string;\n suiteResultCache: CacheApi<SuiteResult<TFieldName, TGroupName>>;\n};\nconst suiteResultCache = cache<SuiteResult<TFieldName, TGroupName>>();\n\nexport function useCreateVestState({\n suiteName,\n VestReconciler,\n}: {\n suiteName?: SuiteName;\n VestReconciler: IRecociler;\n}) {\n const stateRef: StateExtra = {\n doneCallbacks: tinyState.createTinyState<DoneCallbacks>(() => []),\n fieldCallbacks: tinyState.createTinyState<FieldCallbacks>(() => ({})),\n suiteId: seq(),\n suiteName,\n suiteResultCache,\n };\n\n return VestRuntime.createRef(VestReconciler, stateRef);\n}\n\nfunction useX() {\n return VestRuntime.useXAppData<StateExtra>();\n}\n\nexport function useDoneCallbacks() {\n return useX().doneCallbacks();\n}\n\nexport function useFieldCallbacks() {\n return useX().fieldCallbacks();\n}\n\nexport function useSuiteName() {\n return useX().suiteName;\n}\n\nexport function useSuiteId() {\n return useX().suiteId;\n}\n\nexport function useSuiteResultCache<F extends TFieldName, G extends TGroupName>(\n action: CB<SuiteResult<F, G>>\n): SuiteResult<F, G> {\n const suiteResultCache = useX().suiteResultCache;\n\n return suiteResultCache([useSuiteId()], action) as SuiteResult<F, G>;\n}\n\nexport function useExpireSuiteResultCache() {\n const suiteResultCache = useX().suiteResultCache;\n suiteResultCache.invalidate([useSuiteId()]);\n}\n\nexport function useResetCallbacks() {\n const [, , resetDoneCallbacks] = useDoneCallbacks();\n const [, , resetFieldCallbacks] = useFieldCallbacks();\n\n resetDoneCallbacks();\n resetFieldCallbacks();\n}\n\nexport function useResetSuite() {\n useResetCallbacks();\n VestRuntime.reset();\n}\n\nexport function useLoadSuite(rootNode: TIsolateSuite): void {\n VestRuntime.useLoadRootNode(rootNode);\n useExpireSuiteResultCache();\n}\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nexport const CommonStates = {\n PENDING: 'PENDING',\n INITIAL: 'INITIAL',\n};\n\nconst State = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n [CommonStates.INITIAL]: CommonStates.INITIAL,\n DONE: 'DONE',\n};\n\nexport type State = ValueOf<typeof State>;\n\nconst machine: TStateMachine<State> = {\n initial: State.INITIAL,\n states: {\n [State.DONE]: {},\n [State.INITIAL]: {\n [State.PENDING]: State.PENDING,\n [State.DONE]: State.DONE,\n },\n [State.PENDING]: {\n [State.DONE]: State.DONE,\n },\n },\n};\n\nfunction transition(from: State | undefined, to: State) {\n return CommonStateMachine.staticTransition(from ?? State.INITIAL, to);\n}\n\nexport function setDone(isolate: TIsolate) {\n isolate.status = transition(isolate.status, State.DONE);\n}\n\nexport function setPending(isolate: TIsolate) {\n isolate.status = transition(isolate.status, State.PENDING);\n}\n\nexport const CommonStateMachine = StateMachine<State>(machine);\n","import { TStateMachineApi } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nimport { CommonStateMachine, CommonStates } from 'CommonStateMachine';\n\nexport class VestIsolate {\n static stateMachine: TStateMachineApi = CommonStateMachine;\n\n static getStatus(isolate: TIsolate): string {\n return isolate.status ?? CommonStates.INITIAL;\n }\n\n static setStatus(isolate: TIsolate, status: string, payload?: any): void {\n isolate.status = this.stateMachine.staticTransition(\n VestIsolate.getStatus(isolate),\n status,\n payload,\n );\n }\n\n static statusEquals(isolate: TIsolate, status: string): boolean {\n return VestIsolate.getStatus(isolate) === status;\n }\n\n static setPending(isolate: TIsolate): void {\n this.setStatus(isolate, CommonStates.PENDING);\n }\n\n static isPending(isolate: TIsolate): boolean {\n return VestIsolate.statusEquals(isolate, CommonStates.PENDING);\n }\n}\n","export enum ErrorStrings {\n HOOK_CALLED_OUTSIDE = 'hook called outside of a running suite.',\n EXPECTED_VEST_TEST = 'Expected value to be an instance of IsolateTest',\n FIELD_NAME_REQUIRED = 'Field name must be passed',\n SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION = 'Suite must be initialized with a function',\n PROMISIFY_REQUIRE_FUNCTION = 'Vest.Promisify must be called with a function',\n PARSER_EXPECT_RESULT_OBJECT = \"Vest parser: expected argument at position 0 to be Vest's result object.\",\n WARN_MUST_BE_CALLED_FROM_TEST = 'Warn must be called from within the body of a test function',\n EACH_CALLBACK_MUST_BE_A_FUNCTION = 'Each must be called with a function',\n INVALID_PARAM_PASSED_TO_FUNCTION = 'Incompatible params passed to {fn_name} function. \"{param}\" must be of type {expected}',\n 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.`,\n 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}.`,\n UNEXPECTED_TEST_RUN_ERROR = `Unexpected error encountered during test run. Please report this issue to Vest's Github repository.\n Test Object: {testObject}.`,\n INCLUDE_SELF = 'Trying to call include.when on the same field.',\n}\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nimport { CommonStates } from 'CommonStateMachine';\n\nexport const TestStatus = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n CANCELED: 'CANCELED',\n FAILED: 'FAILED',\n OMITTED: 'OMITTED',\n PASSING: 'PASSING',\n SKIPPED: 'SKIPPED',\n UNTESTED: 'UNTESTED',\n WARNING: 'WARNING',\n};\n\nexport const TestAction = {\n RESET: 'RESET',\n};\n\nexport type TestStatus = ValueOf<typeof TestStatus>;\nexport type TestAction = ValueOf<typeof TestAction>;\n\nexport type TestStateMachineAction = TestAction | TestStatus;\n\nconst machine: TStateMachine<TestStatus, TestStateMachineAction> = {\n initial: TestStatus.UNTESTED,\n states: {\n '*': {\n [TestStatus.OMITTED]: TestStatus.OMITTED,\n [TestAction.RESET]: TestStatus.UNTESTED,\n },\n [TestStatus.UNTESTED]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.PENDING]: TestStatus.PENDING,\n [TestStatus.SKIPPED]: TestStatus.SKIPPED,\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.PENDING]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.SKIPPED]: [\n TestStatus.SKIPPED,\n (force?: boolean) => force === true,\n ],\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.SKIPPED]: {},\n [TestStatus.FAILED]: {},\n [TestStatus.WARNING]: {},\n [TestStatus.PASSING]: {},\n [TestStatus.CANCELED]: {},\n [TestStatus.OMITTED]: {},\n },\n};\n\nexport const IsolateTestStateMachine = StateMachine<\n TestStatus,\n TestStateMachineAction\n>(machine);\n","export enum Severity {\n WARNINGS = 'warnings',\n ERRORS = 'errors',\n}\n\nexport enum SeverityCount {\n ERROR_COUNT = 'errorCount',\n WARN_COUNT = 'warnCount',\n}\n\nexport function countKeyBySeverity(severity: Severity): SeverityCount {\n return severity === Severity.ERRORS\n ? SeverityCount.ERROR_COUNT\n : SeverityCount.WARN_COUNT;\n}\n\nexport enum TestSeverity {\n Error = 'error',\n Warning = 'warning',\n}\n","import { Maybe, invariant, isPromise, optionalFunctionValue } from 'vest-utils';\nimport { IsolateMutator, IsolateSelectors, TIsolate } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport type { TIsolateTest } from 'IsolateTest';\nimport {\n IsolateTestStateMachine,\n TestAction,\n TestStatus,\n} from 'IsolateTestStateMachine';\nimport { TestSeverity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolate } from 'VestIsolate';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport class VestTest extends VestIsolate {\n static stateMachine = IsolateTestStateMachine;\n\n // Read\n\n static getData<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n >(test: TIsolateTest<F, G>) {\n invariant(test.data);\n return test.data;\n }\n\n static is(isolate?: Maybe<TIsolate>): isolate is TIsolateTest {\n return IsolateSelectors.isIsolateType<TIsolateTest>(\n isolate,\n VestIsolateType.Test\n );\n }\n\n static isX(isolate?: Maybe<TIsolate>): asserts isolate is TIsolateTest {\n invariant(VestTest.is(isolate), ErrorStrings.EXPECTED_VEST_TEST);\n }\n\n static cast<F extends TFieldName = string, G extends TGroupName = string>(\n isolate?: Maybe<TIsolate>\n ): TIsolateTest<F, G> {\n VestTest.isX(isolate);\n return isolate as TIsolateTest<F, G>;\n }\n\n static warns(test: TIsolateTest): boolean {\n return VestTest.getData(test).severity === TestSeverity.Warning;\n }\n\n static isOmitted(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.OMITTED);\n }\n\n static isUntested(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.UNTESTED);\n }\n\n static isFailing(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.FAILED);\n }\n\n static isCanceled(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.CANCELED);\n }\n\n static isSkipped(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.SKIPPED);\n }\n\n static isPassing(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.PASSING);\n }\n\n static isWarning(test: TIsolateTest): boolean {\n return VestTest.statusEquals(test, TestStatus.WARNING);\n }\n\n static hasFailures(test: TIsolateTest): boolean {\n return VestTest.isFailing(test) || VestTest.isWarning(test);\n }\n\n static isNonActionable(test: TIsolateTest): boolean {\n return (\n VestTest.isSkipped(test) ||\n VestTest.isOmitted(test) ||\n VestTest.isCanceled(test)\n );\n }\n\n static isTested(test: TIsolateTest): boolean {\n return VestTest.hasFailures(test) || VestTest.isPassing(test);\n }\n\n static awaitsResolution(test: TIsolateTest): boolean {\n // Is the test in a state where it can still be run, or complete running\n // and its final status is indeterminate?\n return (\n VestTest.isSkipped(test) ||\n VestTest.isUntested(test) ||\n VestTest.isPending(test)\n );\n }\n\n static isAsyncTest(test: TIsolateTest): boolean {\n return isPromise(VestTest.getData(test).asyncTest);\n }\n\n // Mutate\n\n // static setPending(test: TIsolateTest) {\n // this.setStatus(test, TestStatus.PENDING);\n // }\n\n static fail(test: TIsolateTest): void {\n VestTest.setStatus(\n test,\n VestTest.warns(test) ? TestStatus.WARNING : TestStatus.FAILED\n );\n }\n\n static pass(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.PASSING);\n }\n\n static warn(test: TIsolateTest): void {\n VestTest.setData(test, current => ({\n ...current,\n severity: TestSeverity.Warning,\n }));\n }\n\n static setData(\n test: TIsolateTest,\n setter:\n | ((current: TIsolateTest['data']) => TIsolateTest['data'])\n | TIsolateTest['data']\n ): void {\n test.data = optionalFunctionValue(setter, VestTest.getData(test));\n }\n\n static skip(test: TIsolateTest, force?: boolean): void {\n // Without this force flag, the test will be marked as skipped even if it is pending.\n // This means that it will not be counted in \"allIncomplete\" and its done callbacks\n // will not be called, or will be called prematurely.\n // What this mostly say is that when we have a pending test for one field, and we then\n // start typing in a different field - the pending test will be canceled, which\n // is usually an unwanted behavior.\n // The only scenario in which we DO want to cancel the async test regardless\n // is when we specifically skip a test with `skipWhen`, which is handled by the\n // \"force\" boolean flag.\n // I am not a fan of this flag, but it gets the job done.\n VestTest.setStatus(test, TestStatus.SKIPPED, force);\n }\n\n static cancel(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.CANCELED);\n IsolateMutator.abort(test, TestStatus.CANCELED);\n }\n\n static omit(test: TIsolateTest): void {\n VestTest.setStatus(test, TestStatus.OMITTED);\n }\n\n static reset(test: TIsolateTest): void {\n VestTest.setStatus(test, TestAction.RESET);\n }\n}\n","import { Maybe } from 'vest-utils';\n\nimport { TFieldName } from 'SuiteResultTypes';\nimport { WithFieldName } from 'TestTypes';\n\nexport function nonMatchingFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n return !!fieldName && !matchingFieldName(WithFieldName, fieldName);\n}\n\nexport default function matchingFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n return !!(fieldName && WithFieldName.fieldName === fieldName);\n}\n\nexport function matchesOrHasNoFieldName(\n WithFieldName: WithFieldName<TFieldName>,\n fieldName?: Maybe<TFieldName>\n): boolean {\n if (fieldName) {\n return matchingFieldName(WithFieldName, fieldName);\n }\n return true;\n}\n","import { Predicate, Predicates, isNullish } from 'vest-utils';\nimport { VestRuntime, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestIsolate } from 'VestIsolate';\nimport { VestTest } from 'VestTest';\nimport { matchesOrHasNoFieldName } from 'matchingFieldName';\n\nexport class SuiteWalker {\n static defaultRoot = VestRuntime.useAvailableRoot;\n\n static hasPending(predicate?: Predicate): boolean {\n const root = SuiteWalker.defaultRoot();\n\n if (!root) {\n return false;\n }\n\n return Walker.some(\n root,\n Predicates.all(VestIsolate.isPending, predicate ?? true)\n );\n }\n\n // Checks whether there are pending isolates in the tree.\n // If a fieldname is provided, will only check tests with a matching fieldname.\n static hasRemainingWithTestNameMatching(fieldName?: TFieldName): boolean {\n return SuiteWalker.hasPending(\n Predicates.any(\n isNullish(fieldName),\n Predicates.all(VestTest.is, (testObject: TIsolateTest) => {\n return matchesOrHasNoFieldName(\n VestTest.getData(testObject),\n fieldName\n );\n })\n )\n );\n }\n}\n","import { Nullable } from 'vest-utils';\nimport { Walker, VestRuntime, TIsolate } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\nimport matchingFieldName from 'matchingFieldName';\n\ntype MaybeRoot = Nullable<TIsolate>;\n\nexport class TestWalker {\n static defaultRoot = VestRuntime.useAvailableRoot;\n\n static hasNoTests(root: MaybeRoot = TestWalker.defaultRoot()): boolean {\n if (!root) return true;\n return !Walker.has(root, VestTest.is);\n }\n\n static someTests(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): boolean {\n if (!root) return false;\n return Walker.some(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static everyTest(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): boolean {\n if (!root) return false;\n return Walker.every(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static walkTests<F extends TFieldName, G extends TGroupName>(\n callback: (test: TIsolateTest<F, G>, breakout: () => void) => void,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n if (!root) return;\n Walker.walk(\n root,\n (isolate, breakout) => {\n callback(VestTest.cast<F, G>(isolate), breakout);\n },\n VestTest.is\n );\n }\n\n static pluckTests(\n predicate: (test: TIsolateTest) => boolean,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n if (!root) return;\n Walker.pluck(\n root,\n isolate => {\n VestTest.isX(isolate);\n\n return predicate(isolate);\n },\n VestTest.is\n );\n }\n\n static resetField(fieldName: TFieldName): void {\n TestWalker.walkTests(testObject => {\n if (matchingFieldName(VestTest.getData(testObject), fieldName)) {\n VestTest.reset(testObject);\n }\n }, TestWalker.defaultRoot());\n }\n\n static removeTestByFieldName(\n fieldName: TFieldName,\n root: MaybeRoot = TestWalker.defaultRoot()\n ): void {\n TestWalker.pluckTests(testObject => {\n return matchingFieldName(VestTest.getData(testObject), fieldName);\n }, root);\n }\n}\n","import { isEmpty, optionalFunctionValue } from 'vest-utils';\nimport { Bus, VestRuntime } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { TIsolateTest } from 'IsolateTest';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\n\n/**\n * This module gets triggered once the suite is done running its sync tests.\n *\n * It goes over all the tests in the state, and checks if they need to be omitted.\n */\n\nexport function useOmitOptionalFields(): void {\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const optionalFields = SuiteOptionalFields.getOptionalFields(root);\n\n // If there are no optional fields, we don't need to do anything\n if (isEmpty(optionalFields)) {\n return;\n }\n\n // Create an object to store the fields that need to be omitted\n const shouldOmit = new Set<string>();\n\n // iterate over each of the tests in the state\n TestWalker.walkTests(testObject => {\n if (VestTest.isPending(testObject)) {\n return;\n }\n const { fieldName } = VestTest.getData(testObject);\n\n // If we already added the current field (not this test specifically)\n // no need for further checks, go and omit the test\n if (shouldOmit.has(fieldName)) {\n verifyAndOmit(testObject);\n } else {\n // check if the field has an optional function\n // if so, run it and verify/omit the test\n runOptionalConfig(testObject);\n }\n });\n\n Bus.useEmit(Events.DONE_TEST_OMISSION_PASS);\n\n function verifyAndOmit(testObject: TIsolateTest) {\n const { fieldName } = VestTest.getData(testObject);\n if (shouldOmit.has(fieldName)) {\n VestTest.omit(testObject);\n SuiteOptionalFields.setOptionalField(root, fieldName, current => ({\n ...current,\n applied: true,\n }));\n }\n }\n\n function runOptionalConfig(testObject: TIsolateTest) {\n const { fieldName } = VestTest.getData(testObject);\n\n // Ge the optional configuration for the given field\n const optionalConfig = SuiteOptionalFields.getOptionalField(\n root,\n fieldName\n );\n\n // If the optional was set to a function or a boolean, run it and verify/omit the test\n if (optionalFunctionValue(optionalConfig.rule) === true) {\n shouldOmit.add(fieldName);\n }\n\n verifyAndOmit(testObject);\n }\n}\n","import { isArray, callEach } from 'vest-utils';\n\nimport { useDoneCallbacks, useFieldCallbacks } from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\n\n/**\n * Runs done callback per field when async tests are finished running.\n */\nexport function useRunFieldCallbacks(fieldName?: TFieldName): void {\n const [fieldCallbacks] = useFieldCallbacks();\n\n if (\n fieldName &&\n !SuiteWalker.hasRemainingWithTestNameMatching(fieldName) &&\n isArray(fieldCallbacks[fieldName])\n ) {\n callEach(fieldCallbacks[fieldName]);\n }\n}\n\n/**\n * Runs unlabelled done callback when async tests are finished running.\n */\nexport function useRunDoneCallbacks() {\n const [doneCallbacks] = useDoneCallbacks();\n callEach(doneCallbacks);\n}\n","import { CB, ValueOf } from 'vest-utils';\nimport { Bus, RuntimeEvents, TIsolate } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport * as CommonStateMachine from 'CommonStateMachine';\nimport { TIsolateTest } from 'IsolateTest';\nimport {\n useExpireSuiteResultCache,\n useResetCallbacks,\n useResetSuite,\n} from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport { useOmitOptionalFields } from 'omitOptionalFields';\nimport { useRunDoneCallbacks, useRunFieldCallbacks } from 'runCallbacks';\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nexport function useInitVestBus() {\n const VestBus = Bus.useBus();\n\n // Report a the completion of a test. There may be other tests with the same\n // name that are still running, or not yet started.\n on(Events.TEST_COMPLETED, (testObject: TIsolateTest) => {\n if (VestTest.isCanceled(testObject)) {\n return;\n }\n\n const { fieldName } = VestTest.getData(testObject);\n\n useRunFieldCallbacks(fieldName);\n });\n\n on(Events.TEST_RUN_STARTED, () => {\n /* Let's just invalidate the suite cache for now */\n });\n\n on(RuntimeEvents.ISOLATE_PENDING, (isolate: TIsolate) => {\n if (VestTest.is(isolate)) {\n VestTest.setPending(isolate);\n }\n\n CommonStateMachine.setPending(isolate);\n });\n\n on(RuntimeEvents.ISOLATE_DONE, (isolate: TIsolate) => {\n if (VestTest.is(isolate)) {\n VestBus.emit(Events.TEST_COMPLETED, isolate);\n }\n\n CommonStateMachine.setDone(isolate);\n\n if (!SuiteWalker.hasPending()) {\n // When no more tests are running, emit the done event\n VestBus.emit(Events.ALL_RUNNING_TESTS_FINISHED);\n }\n });\n\n on(Events.DONE_TEST_OMISSION_PASS, () => {\n /* We NEED to refresh the cache here. Don't ask */\n });\n\n // Called when all the tests, including async, are done running\n on(Events.ALL_RUNNING_TESTS_FINISHED, () => {\n // Small optimization. We don't need to run this if there are no async tests\n // The reason is that we run this function immediately after the suite callback\n // is run, so if the suite is only comprised of sync tests, we don't need to\n // run this function twice since we know for a fact the state is up to date\n if (TestWalker.someTests(VestTest.isAsyncTest)) {\n useOmitOptionalFields();\n }\n useRunDoneCallbacks();\n });\n\n on(Events.RESET_FIELD, (fieldName: TFieldName) => {\n TestWalker.resetField(fieldName);\n });\n\n on(Events.SUITE_RUN_STARTED, () => {\n useResetCallbacks();\n });\n\n on(Events.SUITE_CALLBACK_RUN_FINISHED, () => {\n useOmitOptionalFields();\n });\n\n on(Events.REMOVE_FIELD, (fieldName: TFieldName) => {\n TestWalker.removeTestByFieldName(fieldName);\n });\n\n on(Events.RESET_SUITE, () => {\n useResetSuite();\n });\n\n return {\n subscribe,\n };\n\n function subscribe(cb: CB) {\n return VestBus.on('*', () => {\n cb();\n }).off;\n }\n\n function on(event: VestEvents, cb: (...args: any[]) => void) {\n VestBus.on(event, (...args: any[]) => {\n // This is more concise, but it might be an overkill\n // if we're adding events that don't need to invalidate the cache\n useExpireSuiteResultCache();\n cb(...args);\n });\n }\n}\n\ntype VestEvents = Events | ValueOf<typeof RuntimeEvents> | '*';\n","import { TIsolate } from 'vestjs-runtime';\n\nexport abstract class IsolateReconciler {\n static match(_currentNode: TIsolate, _historyNode: TIsolate): boolean {\n return false;\n }\n\n static reconcile(currentNode: TIsolate, historyNode: TIsolate): TIsolate {\n return (currentNode ?? historyNode) as TIsolate;\n }\n}\n","import { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport matchingFieldName from 'matchingFieldName';\n\nexport function isSameProfileTest(\n testObject1: TIsolateTest,\n testObject2: TIsolateTest\n): boolean {\n const { groupName: gn1 } = VestTest.getData(testObject1);\n const { groupName: gn2, fieldName: fn2 } = VestTest.getData(testObject2);\n return (\n matchingFieldName(VestTest.getData(testObject1), fn2) &&\n gn1 === gn2 &&\n testObject1.key === testObject2.key\n );\n}\n","import { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport { isSameProfileTest } from 'isSameProfileTest';\n\nexport default function cancelOverriddenPendingTest(\n prevRunTestObject: TIsolateTest,\n currentRunTestObject: TIsolateTest\n): void {\n if (\n currentRunTestObject !== prevRunTestObject &&\n isSameProfileTest(prevRunTestObject, currentRunTestObject) &&\n VestTest.isPending(prevRunTestObject)\n ) {\n VestTest.cancel(prevRunTestObject);\n }\n}\n","import { Maybe, bindNot } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TGroupName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\n\nexport const nonMatchingGroupName = bindNot(matchingGroupName);\n\nexport function matchingGroupName(\n testObject: TIsolateTest,\n groupName: Maybe<TGroupName>\n): boolean {\n return VestTest.getData(testObject).groupName === groupName;\n}\n","import { either } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { Severity } from 'Severity';\nimport { VestTest } from 'VestTest';\n\n/**\n * Checks that a given test object matches the currently specified severity level\n */\nexport function nonMatchingSeverityProfile(\n severity: Severity,\n testObject: TIsolateTest\n): boolean {\n return either(severity === Severity.WARNINGS, VestTest.warns(testObject));\n}\n","\nimport { TIsolateTest } from 'IsolateTest';\nimport { Severity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport { nonMatchingFieldName } from 'matchingFieldName';\nimport { nonMatchingGroupName } from 'matchingGroupName';\nimport { nonMatchingSeverityProfile } from 'nonMatchingSeverityProfile';\n\n/**\n * The difference between this file and hasFailures is that hasFailures uses the static\n * summary object, while this one uses the actual validation state\n */\n\nexport function hasErrorsByTestObjects(fieldName?: TFieldName): boolean {\n return hasFailuresByTestObjects(Severity.ERRORS, fieldName);\n}\n\nfunction hasFailuresByTestObjects(\n severityKey: Severity,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.someTests(testObject => {\n return hasFailuresByTestObject(testObject, severityKey, fieldName);\n });\n}\n\nexport function hasGroupFailuresByTestObjects(\n severityKey: Severity,\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.someTests(testObject => {\n if (nonMatchingGroupName(testObject, groupName)) {\n return false;\n }\n\n return hasFailuresByTestObject(testObject, severityKey, fieldName);\n });\n}\n\n/**\n * Determines whether a certain test profile has failures.\n */\nexport function hasFailuresByTestObject(\n testObject: TIsolateTest,\n severityKey: Severity,\n fieldName?: TFieldName\n): boolean {\n if (!VestTest.hasFailures(testObject)) {\n return false;\n }\n\n if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {\n return false;\n }\n\n if (nonMatchingSeverityProfile(severityKey, testObject)) {\n return false;\n }\n\n return true;\n}\n","import { Modes } from 'Modes';\nimport { useMode } from 'SuiteContext';\nimport { WithFieldName } from 'TestTypes';\nimport { hasErrorsByTestObjects } from 'hasFailuresByTestObjects';\n\n/**\n * Sets the current execution mode for the current suite.\n *\n * Supported modes:\n * - `EAGER` - (default) Runs all tests, but stops on first failure for each given field.\n * - `ALL` - Runs all tests, regardless of failures.\n * - `ONE` - Stops suite execution on first failure of any field.\n *\n * @example\n * ```js\n * import {Modes, create} from 'vest';\n *\n * const suite = create('suite_name', () => {\n * vest.mode(Modes.ALL);\n *\n * // ...\n * });\n * ```\n * @param 'ALL' | 'EAGER' | 'ONE' mode - The mode to set.\n */\n\n// @vx-allow use-use\nexport function mode(mode: Modes): void {\n const [, setMode] = useMode();\n\n setMode(mode);\n}\n\nfunction useIsMode(mode: Modes): boolean {\n const [currentMode] = useMode();\n\n return currentMode === mode;\n}\n\nfunction useIsEager(): boolean {\n return useIsMode(Modes.EAGER);\n}\n\nfunction useIsOne(): boolean {\n return useIsMode(Modes.ONE);\n}\n\nexport function useShouldSkipBasedOnMode(testData: WithFieldName): boolean {\n if (useIsOne()) {\n return hasErrorsByTestObjects();\n }\n\n if (useIsEager()) {\n return hasErrorsByTestObjects(testData.fieldName);\n }\n\n return false;\n}\n","import { isPositive } from 'vest-utils';\n\nimport { countKeyBySeverity, Severity } from 'Severity';\nimport {\n FailureMessages,\n TestsContainer,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\n// calls collectAll or getByFieldName depending on whether fieldName is provided\n\nexport function gatherFailures(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity,\n fieldName?: TFieldName\n): string[] | FailureMessages {\n return fieldName\n ? getByFieldName(testGroup, severityKey, fieldName)\n : collectAll(testGroup, severityKey);\n}\n\nfunction getByFieldName(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity,\n fieldName: TFieldName\n): string[] {\n return testGroup?.[fieldName]?.[severityKey] || [];\n}\n\nfunction collectAll(\n testGroup: TestsContainer<TFieldName, TGroupName>,\n severityKey: Severity\n): FailureMessages {\n const output: FailureMessages = {};\n\n const countKey = countKeyBySeverity(severityKey);\n\n for (const field in testGroup) {\n if (isPositive(testGroup[field][countKey])) {\n // We will probably never get to the fallback array\n // leaving it just in case the implementation changes\n output[field] = testGroup[field][severityKey] || [];\n }\n }\n\n return output;\n}\n","import { Maybe, greaterThan, isPositive } from 'vest-utils';\n\nimport { Severity, SeverityCount } from 'Severity';\nimport {\n FailureMessages,\n GetFailuresResponse,\n SuiteResult,\n SuiteSummary,\n TFieldName,\n TGroupName,\n TestsContainer,\n} from 'SuiteResultTypes';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { gatherFailures } from 'collectFailures';\nimport matchingFieldName from 'matchingFieldName';\n\nexport function bindSuiteSelectors<F extends TFieldName, G extends TGroupName>(\n get: <F extends string, G extends string>() => SuiteResult<F, G>\n): SuiteSelectors<F, G> {\n return {\n getError: (...args: Parameters<SuiteSelectors<F, G>['getError']>) =>\n get().getError(...args),\n getErrors: (...args: Parameters<SuiteSelectors<F, G>['getErrors']>) =>\n get().getErrors(...args),\n getErrorsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['getErrorsByGroup']>\n ) => get().getErrorsByGroup(...args),\n getWarning: (...args: Parameters<SuiteSelectors<F, G>['getWarning']>) =>\n get().getWarning(...args),\n getWarnings: (...args: Parameters<SuiteSelectors<F, G>['getWarnings']>) =>\n get().getWarnings(...args),\n getWarningsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['getWarningsByGroup']>\n ) => get().getWarningsByGroup(...args),\n hasErrors: (...args: Parameters<SuiteSelectors<F, G>['hasErrors']>) =>\n get().hasErrors(...args),\n hasErrorsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['hasErrorsByGroup']>\n ) => get().hasErrorsByGroup(...args),\n hasWarnings: (...args: Parameters<SuiteSelectors<F, G>['hasWarnings']>) =>\n get().hasWarnings(...args),\n hasWarningsByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['hasWarningsByGroup']>\n ) => get().hasWarningsByGroup(...args),\n isPending: (...args: Parameters<SuiteSelectors<F, G>['isPending']>) => {\n return get().isPending(...args);\n },\n isTested: (...args: Parameters<SuiteSelectors<F, G>['isTested']>) =>\n get().isTested(...args),\n isValid: (...args: Parameters<SuiteSelectors<F, G>['isValid']>) =>\n get().isValid(...args),\n isValidByGroup: (\n ...args: Parameters<SuiteSelectors<F, G>['isValidByGroup']>\n ) => get().isValidByGroup(...args),\n } as SuiteSelectors<F, G>;\n}\n\n// eslint-disable-next-line max-lines-per-function, max-statements\nexport function suiteSelectors<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>\n): SuiteSelectors<F, G> {\n const selectors = {\n getError,\n getErrors,\n getErrorsByGroup,\n getWarning,\n getWarnings,\n getWarningsByGroup,\n hasErrors,\n hasErrorsByGroup,\n hasWarnings,\n hasWarningsByGroup,\n isPending,\n isTested,\n isValid,\n isValidByGroup,\n };\n\n return selectors;\n\n // Booleans\n\n function isValid(fieldName?: F): boolean {\n return fieldName ? Boolean(summary.tests[fieldName]?.valid) : summary.valid;\n }\n\n function isValidByGroup(groupName: G, fieldName?: F): boolean {\n const group = summary.groups[groupName];\n\n if (!group) {\n return false;\n }\n\n if (fieldName) {\n return isFieldValid(group, fieldName);\n }\n for (const fieldName in group) {\n if (!isFieldValid(group, fieldName)) {\n return false;\n }\n }\n\n return true;\n }\n\n function hasWarnings(fieldName?: F): boolean {\n return hasFailures(summary, SeverityCount.WARN_COUNT, fieldName);\n }\n\n function hasErrors(fieldName?: F): boolean {\n return hasFailures(summary, SeverityCount.ERROR_COUNT, fieldName);\n }\n\n function isTested(fieldName: F): boolean {\n return isPositive(summary.tests[fieldName]?.testCount);\n }\n\n function hasWarningsByGroup<G extends TGroupName>(\n groupName: G,\n fieldName?: F\n ): boolean {\n return hasFailuresByGroup(\n summary,\n SeverityCount.WARN_COUNT,\n groupName,\n fieldName\n );\n }\n\n function hasErrorsByGroup<G extends TGroupName>(\n groupName: G,\n fieldName?: F\n ): boolean {\n return hasFailuresByGroup(\n summary,\n SeverityCount.ERROR_COUNT,\n groupName,\n fieldName\n );\n }\n\n // Responses\n\n function getWarnings(): FailureMessages;\n function getWarnings(fieldName: F): string[];\n function getWarnings(fieldName?: F): GetFailuresResponse {\n return getFailures(summary, Severity.WARNINGS, fieldName);\n }\n\n function getWarning(): Maybe<SummaryFailure<F, G>>;\n function getWarning(fieldName: F): Maybe<string>;\n function getWarning(fieldName?: F): Maybe<SummaryFailure<F, G> | string> {\n return getFailure<F, G>(Severity.WARNINGS, summary, fieldName as F);\n }\n\n function getErrors(): FailureMessages;\n function getErrors(fieldName: F): string[];\n function getErrors(fieldName?: F): GetFailuresResponse {\n return getFailures(summary, Severity.ERRORS, fieldName);\n }\n\n function getError(): Maybe<SummaryFailure<F, G>>;\n function getError(fieldName: F): Maybe<string>;\n function getError(fieldName?: F): Maybe<SummaryFailure<F, G> | string> {\n return getFailure<F, G>(Severity.ERRORS, summary, fieldName as F);\n }\n\n function getErrorsByGroup(groupName: G): FailureMessages;\n function getErrorsByGroup(groupName: G, fieldName: F): string[];\n function getErrorsByGroup(groupName: G, fieldName?: F): GetFailuresResponse {\n return getFailuresByGroup(summary, Severity.ERRORS, groupName, fieldName);\n }\n\n function getWarningsByGroup(groupName: G): FailureMessages;\n function getWarningsByGroup(groupName: G, fieldName: F): string[];\n function getWarningsByGroup(\n groupName: G,\n fieldName?: F\n ): GetFailuresResponse {\n return getFailuresByGroup(summary, Severity.WARNINGS, groupName, fieldName);\n }\n\n function isPending(fieldName?: F): boolean {\n return fieldName\n ? greaterThan(summary.tests[fieldName]?.pendingCount, 0)\n : greaterThan(summary.pendingCount, 0);\n }\n}\n\nexport interface SuiteSelectors<F extends TFieldName, G extends TGroupName> {\n getWarning(): SummaryFailure<F, G> | undefined;\n getWarning(fieldName: F): string | undefined;\n getWarning(fieldName?: F): SummaryFailure<F, G> | string | undefined;\n getError(): SummaryFailure<F, G> | undefined;\n getError(fieldName: F): string | undefined;\n getError(fieldName?: F): SummaryFailure<F, G> | string | undefined;\n getErrors(): FailureMessages;\n getErrors(fieldName: F): string[];\n getErrors(fieldName?: F): string[] | FailureMessages;\n getWarnings(): FailureMessages;\n getWarnings(fieldName: F): string[];\n getWarnings(fieldName?: F): string[] | FailureMessages;\n getErrorsByGroup(groupName: G): FailureMessages;\n getErrorsByGroup(groupName: G, fieldName: F): string[];\n getErrorsByGroup(groupName: G, fieldName?: F): string[] | FailureMessages;\n getWarningsByGroup(groupName: G): FailureMessages;\n getWarningsByGroup(groupName: G, fieldName: F): string[];\n getWarningsByGroup(groupName: G, fieldName?: F): string[] | FailureMessages;\n hasErrors(fieldName?: F): boolean;\n hasWarnings(fieldName?: F): boolean;\n hasErrorsByGroup(groupName: G, fieldName?: F): boolean;\n hasWarningsByGroup(groupName: G, fieldName?: F): boolean;\n isTested(fieldName: F): boolean;\n isPending(fieldName?: F): boolean;\n isValid(fieldName?: F): boolean;\n isValidByGroup(groupName: G, fieldName?: F): boolean;\n}\n\n// Gathers all failures of a given severity\n// With a fieldName, it will only gather failures for that field\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity\n): FailureMessages;\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity,\n fieldName?: TFieldName\n): string[];\nfunction getFailures<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n severityKey: Severity,\n fieldName?: TFieldName\n): GetFailuresResponse {\n return gatherFailures(summary.tests, severityKey, fieldName);\n}\n\n// Gathers all failures of a given severity within a group\n// With a fieldName, it will only gather failures for that field\nfunction getFailuresByGroup(\n summary: SuiteSummary<TFieldName, TGroupName>,\n severityKey: Severity,\n groupName: TGroupName,\n fieldName?: TFieldName\n): GetFailuresResponse {\n return gatherFailures(summary.groups[groupName], severityKey, fieldName);\n}\n// Checks if a field is valid within a container object - can be within a group or top level\nfunction isFieldValid(\n testContainer: TestsContainer<TFieldName, TGroupName>,\n fieldName: TFieldName\n): boolean {\n return !!testContainer[fieldName]?.valid;\n}\n\n// Checks if a there are any failures of a given severity within a group\n// If a fieldName is provided, it will only check for failures within that field\nfunction hasFailuresByGroup(\n summary: SuiteSummary<TFieldName, TGroupName>,\n severityCount: SeverityCount,\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n const group = summary.groups[groupName];\n\n if (!group) {\n return false;\n }\n\n if (fieldName) {\n return isPositive(group[fieldName]?.[severityCount]);\n }\n\n for (const field in group) {\n if (isPositive(group[field]?.[severityCount])) {\n return true;\n }\n }\n\n return false;\n}\n\n// Checks if there are any failures of a given severity\n// If a fieldName is provided, it will only check for failures within that field\nfunction hasFailures(\n summary: SuiteSummary<TFieldName, TGroupName>,\n countKey: SeverityCount,\n fieldName?: TFieldName\n): boolean {\n const failureCount = fieldName\n ? summary.tests[fieldName]?.[countKey]\n : summary[countKey] || 0;\n\n return isPositive(failureCount);\n}\n\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>\n): Maybe<SummaryFailure<F, G>>;\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>,\n fieldName: F\n): Maybe<string>;\nfunction getFailure<F extends TFieldName, G extends TGroupName>(\n severity: Severity,\n summary: SuiteSummary<F, G>,\n fieldName?: F\n): Maybe<SummaryFailure<F, G> | string> {\n const summaryKey = summary[severity];\n\n if (!fieldName) {\n return summaryKey[0];\n }\n\n return summaryKey.find(\n (summaryFailure: SummaryFailure<TFieldName, TGroupName>) =>\n matchingFieldName(summaryFailure, fieldName)\n )?.message;\n}\n","import { Maybe } from 'vest-utils';\n\nimport { Severity } from 'Severity';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { Done } from 'suiteRunResult';\nimport { SuiteSelectors } from 'suiteSelectors';\n\nexport class SummaryBase {\n public errorCount = 0;\n public warnCount = 0;\n public testCount = 0;\n public pendingCount = 0;\n}\n\nexport class SuiteSummary<\n F extends TFieldName,\n G extends TGroupName\n> extends SummaryBase {\n public [Severity.ERRORS]: SummaryFailure<F, G>[] = [];\n public [Severity.WARNINGS]: SummaryFailure<F, G>[] = [];\n public groups: Groups<G, F> = {} as Groups<G, F>;\n public tests: Tests<F> = {} as Tests<F>;\n public valid = false;\n}\n\nexport type TestsContainer<F extends TFieldName, G extends TGroupName> =\n | Group<G>\n | Tests<F>;\nexport type GroupTestSummary = SingleTestSummary;\n\nexport type Groups<G extends TGroupName, F extends TFieldName> = Record<\n G,\n Group<F>\n>;\nexport type Group<F extends TFieldName> = Record<F, GroupTestSummary>;\nexport type Tests<F extends TFieldName> = Record<F, SingleTestSummary>;\n\nexport type SingleTestSummary = SummaryBase & {\n errors: string[];\n warnings: string[];\n valid: boolean;\n pendingCount: number;\n};\n\nexport type GetFailuresResponse = FailureMessages | string[];\n\nexport type FailureMessages = Record<string, string[]>;\n\nexport type SuiteResult<\n F extends TFieldName,\n G extends TGroupName\n> = SuiteSummary<F, G> & SuiteSelectors<F, G> & { suiteName: SuiteName };\n\nexport type SuiteRunResult<\n F extends TFieldName,\n G extends TGroupName\n> = SuiteResult<F, G> & {\n done: Done<F, G>;\n};\n\nexport type SuiteName = Maybe<string>;\n\nexport type TFieldName<T extends string = string> = T;\nexport type TGroupName<G extends string = string> = G;\n","import { TIsolateTest } from 'IsolateTest';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { WithFieldName } from 'TestTypes';\nimport { VestTest } from 'VestTest';\n\nexport class SummaryFailure<F extends TFieldName, G extends TGroupName>\n implements WithFieldName<F>\n{\n constructor(\n public fieldName: F,\n public message: string | undefined,\n public groupName: G | undefined\n ) {}\n\n static fromTestObject<F extends TFieldName, G extends TGroupName>(\n testObject: TIsolateTest<F, G>\n ) {\n const { fieldName, message, groupName } = VestTest.getData(testObject);\n\n return new SummaryFailure(fieldName, message, groupName);\n }\n}\n","import { useIsOptionalFieldApplied } from 'optional';\nimport { Predicates } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { SuiteOptionalFields, TIsolateSuite } from 'IsolateSuite';\nimport { TIsolateTest } from 'IsolateTest';\nimport { OptionalFieldTypes } from 'OptionalTypes';\nimport { Severity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport {\n hasErrorsByTestObjects,\n hasGroupFailuresByTestObjects,\n} from 'hasFailuresByTestObjects';\nimport { nonMatchingFieldName } from 'matchingFieldName';\nimport { nonMatchingGroupName } from 'matchingGroupName';\n\nexport function useShouldAddValidProperty(fieldName?: TFieldName): boolean {\n // Is the field optional, and the optional condition is applied\n if (useIsOptionalFieldApplied(fieldName)) {\n return true;\n }\n\n // Are there no tests?\n if (TestWalker.hasNoTests()) {\n return false;\n }\n\n // // Does the field have any tests with errors?\n if (hasErrorsByTestObjects(fieldName)) {\n return false;\n }\n\n // Does the given field have any pending tests that are not optional?\n if (useHasNonOptionalIncomplete(fieldName)) {\n return false;\n }\n\n // Does the field have no missing tests?\n return useNoMissingTests(fieldName);\n}\n\nexport function useShouldAddValidPropertyInGroup(\n groupName: TGroupName,\n fieldName: TFieldName\n): boolean {\n if (useIsOptionalFieldApplied(fieldName)) {\n return true;\n }\n\n if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {\n return false;\n }\n\n // Do the given group/field have any pending tests that are not optional?\n if (useHasNonOptionalIncompleteByGroup(groupName, fieldName)) {\n return false;\n }\n\n return useNoMissingTestsByGroup(groupName, fieldName);\n}\n\n// Does the given field have any pending tests that are not optional?\nfunction useHasNonOptionalIncomplete(fieldName?: TFieldName) {\n return SuiteWalker.hasPending(\n Predicates.all(\n VestTest.is,\n (testObject: TIsolateTest) =>\n !nonMatchingFieldName(VestTest.getData(testObject), fieldName),\n () => !useIsOptionalFieldApplied(fieldName)\n )\n );\n}\n\n// Do the given group/field have any pending tests that are not optional?\nfunction useHasNonOptionalIncompleteByGroup(\n groupName: TGroupName,\n fieldName: TFieldName\n): boolean {\n return SuiteWalker.hasPending(\n Predicates.all(\n VestTest.is,\n (testObject: TIsolateTest) =>\n !nonMatchingGroupName(testObject, groupName),\n (testObject: TIsolateTest) =>\n !nonMatchingFieldName(VestTest.getData(testObject), fieldName),\n () => !useIsOptionalFieldApplied(fieldName)\n )\n );\n}\n\n// Did all of the tests for the provided field run/omit?\n// This makes sure that the fields are not skipped or pending.\nfunction useNoMissingTests(fieldName?: string): boolean {\n return TestWalker.everyTest(testObject => {\n return useNoMissingTestsLogic(testObject, fieldName);\n });\n}\n\n// Does the group have no missing tests?\nfunction useNoMissingTestsByGroup(\n groupName: TGroupName,\n fieldName?: TFieldName\n): boolean {\n return TestWalker.everyTest(testObject => {\n if (nonMatchingGroupName(testObject, groupName)) {\n return true;\n }\n\n return useNoMissingTestsLogic(testObject, fieldName);\n });\n}\n\nfunction useNoMissingTestsLogic(\n testObject: TIsolateTest,\n fieldName?: TFieldName\n): boolean {\n if (nonMatchingFieldName(VestTest.getData(testObject), fieldName)) {\n return true;\n }\n\n /**\n * The reason we're checking for the optional field here and not in \"omitOptionalFields\"\n * is because that unlike the bool/function check we do there, here it only depends on\n * whether the field was tested already or not.\n *\n * We qualify the test as not missing only if it was already run, if it is omitted,\n * or if it is marked as optional, even if the optional check did not apply yet -\n * but the test did not reach its final state.\n */\n\n return (\n VestTest.isOmitted(testObject) ||\n VestTest.isTested(testObject) ||\n useOptionalTestAwaitsResolution(testObject)\n );\n}\n\nfunction useOptionalTestAwaitsResolution(testObject: TIsolateTest): boolean {\n // Does the test belong to an optional field,\n // and the test itself is still in an indeterminate state?\n\n const root = VestRuntime.useAvailableRoot<TIsolateSuite>();\n\n const { fieldName } = VestTest.getData(testObject);\n\n return (\n SuiteOptionalFields.getOptionalField(root, fieldName).type ===\n OptionalFieldTypes.AUTO && VestTest.awaitsResolution(testObject)\n );\n}\n","import { Maybe, assign, defaultTo } from 'vest-utils';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { countKeyBySeverity, Severity } from 'Severity';\nimport {\n Groups,\n SingleTestSummary,\n SuiteSummary,\n SummaryBase,\n TFieldName,\n TGroupName,\n Tests,\n} from 'SuiteResultTypes';\nimport { SummaryFailure } from 'SummaryFailure';\nimport { TestWalker } from 'TestWalker';\nimport { VestTest } from 'VestTest';\nimport {\n useShouldAddValidProperty,\n useShouldAddValidPropertyInGroup,\n} from 'shouldAddValidProperty';\n\nexport function useProduceSuiteSummary<\n F extends TFieldName,\n G extends TGroupName,\n>(): SuiteSummary<F, G> {\n const summary: SuiteSummary<F, G> = new SuiteSummary();\n\n TestWalker.walkTests<F, G>(testObject => {\n summary.tests = useAppendToTest(summary.tests, testObject);\n summary.groups = useAppendToGroup(summary.groups, testObject);\n summary.errors = appendFailures(\n Severity.ERRORS,\n summary.errors,\n testObject,\n );\n summary.warnings = appendFailures(\n Severity.WARNINGS,\n summary.warnings,\n testObject,\n );\n });\n\n summary.valid = useShouldAddValidProperty();\n\n return countOverallStates(summary);\n}\n\nfunction appendFailures<F extends TFieldName, G extends TGroupName>(\n key: Severity,\n failures: SummaryFailure<F, G>[],\n testObject: TIsolateTest<F, G>,\n): SummaryFailure<F, G>[] {\n if (VestTest.isOmitted(testObject)) {\n return failures;\n }\n\n const shouldAppend =\n key === Severity.WARNINGS\n ? VestTest.isWarning(testObject)\n : VestTest.isFailing(testObject);\n\n if (shouldAppend) {\n return failures.concat(SummaryFailure.fromTestObject(testObject));\n }\n return failures;\n}\n\nfunction useAppendToTest<F extends TFieldName>(\n tests: Tests<F>,\n testObject: TIsolateTest<F>,\n): Tests<F> {\n const fieldName = VestTest.getData<F>(testObject).fieldName;\n\n const newTests = {\n ...tests,\n };\n\n newTests[fieldName] = appendTestObject(newTests[fieldName], testObject);\n // If `valid` is false to begin with, keep it that way. Otherwise, assess.\n newTests[fieldName].valid =\n newTests[fieldName].valid === false\n ? false\n : useShouldAddValidProperty(fieldName);\n\n return newTests;\n}\n\n/**\n * Appends to a group object if within a group\n */\nfunction useAppendToGroup(\n groups: Groups<TGroupName, TFieldName>,\n testObject: TIsolateTest,\n): Groups<TGroupName, TFieldName> {\n const { groupName, fieldName } = VestTest.getData(testObject);\n\n if (!groupName) {\n return groups;\n }\n\n const newGroups = {\n ...groups,\n };\n\n newGroups[groupName] = newGroups[groupName] || {};\n newGroups[groupName][fieldName] = appendTestObject(\n newGroups[groupName][fieldName],\n testObject,\n );\n\n newGroups[groupName][fieldName].valid =\n newGroups[groupName][fieldName].valid === false\n ? false\n : useShouldAddValidPropertyInGroup(groupName, fieldName);\n\n return newGroups;\n}\n\n/**\n * Counts the failed tests and adds global counters\n */\nfunction countOverallStates<F extends TFieldName, G extends TGroupName>(\n summary: SuiteSummary<F, G>,\n): SuiteSummary<F, G> {\n for (const test in summary.tests) {\n summary.errorCount += summary.tests[test].errorCount;\n summary.warnCount += summary.tests[test].warnCount;\n summary.testCount += summary.tests[test].testCount;\n summary.pendingCount += summary.tests[test].pendingCount;\n }\n return summary;\n}\n\n/**\n * Appends the test to a results object.\n */\n// eslint-disable-next-line max-statements, complexity\nfunction appendTestObject(\n summaryKey: Maybe<SingleTestSummary>,\n testObject: TIsolateTest,\n): SingleTestSummary {\n const { message } = VestTest.getData(testObject);\n\n // Let's first create a new object, so we don't mutate the original.\n const nextSummaryKey = defaultTo<SingleTestSummary>(\n summaryKey ? { ...summaryKey } : null,\n baseTestStats,\n );\n\n // If the test is not actionable, we don't need to append it to the summary.\n if (VestTest.isNonActionable(testObject)) return nextSummaryKey;\n\n // Increment the pending count if the test is pending.\n if (VestTest.isPending(testObject)) {\n nextSummaryKey.pendingCount++;\n }\n\n // Increment the error count if the test is failing.\n if (VestTest.isFailing(testObject)) {\n incrementFailures(Severity.ERRORS);\n } else if (VestTest.isWarning(testObject)) {\n // Increment the warning count if the test is warning.\n incrementFailures(Severity.WARNINGS);\n }\n\n // Increment the test count.\n nextSummaryKey.testCount++;\n\n return nextSummaryKey;\n\n // Helper function to increment the failure count.\n function incrementFailures(severity: Severity) {\n const countKey = countKeyBySeverity(severity);\n nextSummaryKey[countKey]++;\n if (message) {\n nextSummaryKey[severity] = (nextSummaryKey[severity] || []).concat(\n message,\n );\n }\n }\n}\n\nfunction baseTestStats() {\n return assign(new SummaryBase(), {\n errors: [],\n valid: true,\n warnings: [],\n });\n}\n","import { assign } from 'vest-utils';\n\nimport { useSuiteName, useSuiteResultCache } from 'Runtime';\nimport { SuiteResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { suiteSelectors } from 'suiteSelectors';\nimport { useProduceSuiteSummary } from 'useProduceSuiteSummary';\n\nexport function useCreateSuiteResult<\n F extends TFieldName,\n G extends TGroupName\n>(): SuiteResult<F, G> {\n return useSuiteResultCache<F, G>(() => {\n // @vx-allow use-use\n const summary = useProduceSuiteSummary<F, G>();\n\n // @vx-allow use-use\n const suiteName = useSuiteName();\n return Object.freeze(\n assign(summary, suiteSelectors<F, G>(summary), {\n suiteName,\n })\n ) as SuiteResult<F, G>;\n });\n}\n","import type { CB } from 'vest-utils';\nimport { optionalFunctionValue } from 'vest-utils';\nimport { Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext, useOmitted } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\n\n/**\n * Conditionally omits tests from the suite.\n *\n * @example\n *\n * omitWhen(res => res.hasErrors('username'), () => {\n * test('username', 'User already taken', async () => await doesUserExist(username)\n * });\n */\n// @vx-allow use-use\nexport function omitWhen<F extends TFieldName, G extends TGroupName>(\n conditional: TDraftCondition<F, G>,\n callback: CB\n): void {\n Isolate.create(VestIsolateType.OmitWhen, () => {\n SuiteContext.run(\n {\n omitted:\n useWithinActiveOmitWhen() ||\n optionalFunctionValue(\n conditional,\n optionalFunctionValue(useCreateSuiteResult)\n ),\n },\n callback\n );\n });\n}\n\n// Checks that we're currently in an active omitWhen block\nexport function useWithinActiveOmitWhen(): boolean {\n return useOmitted();\n}\n","import { CB, optionalFunctionValue } from 'vest-utils';\nimport { Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext, useSkipped } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\n\n/**\n * Conditionally skips running tests within the callback.\n *\n * @example\n *\n * skipWhen(res => res.hasErrors('username'), () => {\n * test('username', 'User already taken', async () => await doesUserExist(username)\n * });\n */\n// @vx-allow use-use\nexport function skipWhen<F extends TFieldName, G extends TGroupName>(\n condition: TDraftCondition<F, G>,\n callback: CB\n): void {\n Isolate.create(VestIsolateType.SkipWhen, () => {\n SuiteContext.run(\n {\n skipped:\n // Checking for nested conditional. If we're in a nested skipWhen,\n // we should skip the test if the parent conditional is true.\n useIsExcludedIndividually() ||\n // Otherwise, we should skip the test if the conditional is true.\n optionalFunctionValue(\n condition,\n optionalFunctionValue(useCreateSuiteResult)\n ),\n },\n callback\n );\n });\n}\n\nexport function useIsExcludedIndividually(): boolean {\n return useSkipped();\n}\n","export enum FocusModes {\n ONLY,\n SKIP,\n}\n","import {\n asArray,\n Maybe,\n OneOrMoreOf,\n noop,\n Nullable,\n isNotEmpty,\n isStringValue,\n} from 'vest-utils';\nimport { IsolateSelectors, TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { FocusModes } from 'FocusedKeys';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type ExclusionItem = Maybe<OneOrMoreOf<string>>;\nexport type FieldExclusion<F extends TFieldName> = Maybe<OneOrMoreOf<F>>;\nexport type GroupExclusion<G extends TGroupName> = Maybe<OneOrMoreOf<G>>;\n\nexport type TIsolateFocused = TIsolate<IsolateFocusedPayload>;\n\nexport type IsolateFocusedPayload = {\n focusMode: FocusModes;\n match: FieldExclusion<TFieldName>;\n matchAll: boolean;\n};\n\nexport function IsolateFocused(\n focusMode: FocusModes,\n match?: true | FieldExclusion<TFieldName>\n): TIsolateFocused {\n return Isolate.create(VestIsolateType.Focused, noop, {\n focusMode,\n match: asArray(match).filter(isStringValue),\n matchAll: match === true,\n });\n}\n\nexport class FocusSelectors {\n static isSkipFocused(\n focus: Nullable<TIsolateFocused>,\n fieldName?: TFieldName\n ): boolean {\n return (\n focus?.data.focusMode === FocusModes.SKIP &&\n (hasFocus(focus, fieldName) || focus.data.matchAll === true)\n );\n }\n static isOnlyFocused(\n focus: Nullable<TIsolateFocused>,\n fieldName?: TFieldName\n ): boolean {\n return (\n focus?.data.focusMode === FocusModes.ONLY && hasFocus(focus, fieldName)\n );\n }\n\n static isIsolateFocused(isolate: TIsolate): isolate is TIsolateFocused {\n return IsolateSelectors.isIsolateType(isolate, VestIsolateType.Focused);\n }\n}\n\n/**\n * Adds a field or a list of fields into the inclusion list\n *\n * @example\n *\n * only('username');\n */\n// @vx-allow use-use\nexport function only(match: FieldExclusion<TFieldName> | false) {\n return IsolateFocused(FocusModes.ONLY, defaultMatch(match));\n}\n/**\n * Adds a field or a list of fields into the exclusion list\n *\n * @example\n *\n * skip('username');\n */\n// @vx-allow use-use\nexport function skip(match: FieldExclusion<TFieldName> | boolean) {\n return IsolateFocused(FocusModes.SKIP, defaultMatch(match));\n}\n\nfunction defaultMatch(match: FieldExclusion<TFieldName> | boolean) {\n return match === false ? [] : match;\n}\n\nfunction hasFocus(focus: Nullable<TIsolateFocused>, fieldName?: TFieldName) {\n return (\n isNotEmpty(focus?.data.match) &&\n (fieldName ? focus?.data.match?.includes(fieldName) ?? true : true)\n );\n}\n","import { isNotNullish } from 'vest-utils';\nimport { TIsolate, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { FocusSelectors } from 'focused';\n\n/**\n * Checks if context has included tests\n */\nexport function useHasOnliedTests(\n testObject: TIsolateTest,\n fieldName?: TFieldName\n): boolean {\n return isNotNullish(\n Walker.findClosest(testObject, (child: TIsolate) => {\n if (!FocusSelectors.isIsolateFocused(child)) return false;\n\n return FocusSelectors.isOnlyFocused(child, fieldName);\n })\n );\n}\n","import { Nullable, optionalFunctionValue } from 'vest-utils';\nimport { TIsolate, Walker } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { useInclusion } from 'SuiteContext';\nimport { VestTest } from 'VestTest';\nimport { FocusSelectors, TIsolateFocused } from 'focused';\nimport { useIsExcludedIndividually } from 'skipWhen';\nimport { useHasOnliedTests } from 'useHasOnliedTests';\n//Checks whether a certain test profile excluded by any of the exclusion groups.\n\nfunction useClosestMatchingFocus(\n testObject: TIsolateTest,\n): Nullable<TIsolateFocused> {\n return Walker.findClosest(testObject, (child: TIsolate) => {\n if (!FocusSelectors.isIsolateFocused(child)) return false;\n\n const { fieldName } = VestTest.getData(testObject);\n\n return child.data.match?.includes(fieldName) || child.data.matchAll;\n });\n}\n\nexport function useIsExcluded(testObject: TIsolateTest): boolean {\n const { fieldName } = VestTest.getData(testObject);\n\n if (useIsExcludedIndividually()) return true;\n const inclusion = useInclusion();\n const focusMatch = useClosestMatchingFocus(testObject);\n // if test is skipped\n // no need to proceed\n if (FocusSelectors.isSkipFocused(focusMatch)) return true;\n const isTestIncluded = FocusSelectors.isOnlyFocused(focusMatch);\n // if field is only'ed\n if (isTestIncluded) return false;\n\n // If there is _ANY_ `only`ed test (and we already know this one isn't) return true\n if (useHasOnliedTests(testObject)) {\n // Check if inclusion rules for this field (`include` hook)\n return !optionalFunctionValue(inclusion[fieldName], testObject);\n }\n\n // We're done here. This field is not excluded\n return false;\n}\n","import { useIsOptionalFieldApplied } from 'optional';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { VestTest } from 'VestTest';\nimport { useShouldSkipBasedOnMode } from 'mode';\nimport { useWithinActiveOmitWhen } from 'omitWhen';\nimport { useIsExcludedIndividually } from 'skipWhen';\nimport { useIsExcluded } from 'useIsExcluded';\n\nexport function useVerifyTestRun(\n testObject: TIsolateTest,\n collisionResult: TIsolateTest = testObject\n): TIsolateTest {\n const testData = VestTest.getData(testObject);\n\n if (useShouldSkipBasedOnMode(testData)) {\n return skipTestAndReturn(testObject);\n }\n\n if (useShouldOmit(testData.fieldName)) {\n return omitTestAndReturn(testObject);\n }\n\n if (useIsExcluded(testObject)) {\n return useForceSkipIfInSkipWhen(collisionResult);\n }\n\n return testObject;\n}\n\nfunction useShouldOmit(fieldName: TFieldName): boolean {\n return useWithinActiveOmitWhen() || useIsOptionalFieldApplied(fieldName);\n}\n\nfunction skipTestAndReturn(testNode: TIsolateTest): TIsolateTest {\n VestTest.skip(testNode);\n return testNode;\n}\n\nfunction omitTestAndReturn(testNode: TIsolateTest): TIsolateTest {\n VestTest.omit(testNode);\n return testNode;\n}\n\nfunction useForceSkipIfInSkipWhen(testNode: TIsolateTest): TIsolateTest {\n // We're forcing skipping the pending test\n // if we're directly within a skipWhen block\n // This mostly means that we're probably giving\n // up on this async test intentionally.\n VestTest.skip(testNode, useIsExcludedIndividually());\n return testNode;\n}\n","import { Maybe, deferThrow, text } from 'vest-utils';\nimport { IsolateInspector, Reconciler } from 'vestjs-runtime';\nimport type { TIsolate } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateReconciler } from 'IsolateReconciler';\nimport type { TIsolateTest } from 'IsolateTest';\nimport { VestTest } from 'VestTest';\nimport cancelOverriddenPendingTest from 'cancelOverriddenPendingTest';\nimport { isSameProfileTest } from 'isSameProfileTest';\nimport { useVerifyTestRun } from 'verifyTestRun';\n\nexport class IsolateTestReconciler extends IsolateReconciler {\n static match(currentNode: TIsolate, historyNode: TIsolate): boolean {\n return VestTest.is(currentNode) && VestTest.is(historyNode);\n }\n\n static reconcile(\n currentNode: TIsolateTest,\n historyNode: TIsolateTest\n ): TIsolateTest {\n const reconcilerOutput = usePickNode(historyNode, currentNode);\n\n cancelOverriddenPendingTestOnTestReRun(\n reconcilerOutput,\n currentNode,\n historyNode\n );\n\n return reconcilerOutput;\n }\n}\n\nfunction usePickNode(\n historyNode: TIsolateTest,\n currentNode: TIsolateTest\n): TIsolateTest {\n const collisionResult = handleCollision(currentNode, historyNode);\n\n return useVerifyTestRun(currentNode, collisionResult);\n}\n\nfunction handleCollision(\n newNode: TIsolateTest,\n prevNode?: TIsolate\n): TIsolateTest {\n if (IsolateInspector.usesKey(newNode)) {\n return VestTest.cast(Reconciler.handleIsolateNodeWithKey(newNode));\n }\n\n if (\n Reconciler.dropNextNodesOnReorder(nodeReorderDetected, newNode, prevNode)\n ) {\n throwTestOrderError(newNode, prevNode);\n return newNode;\n }\n\n if (!VestTest.is(prevNode)) {\n // I believe we cannot actually reach this point.\n // Because it should already be handled by nodeReorderDetected.\n /* istanbul ignore next */\n return newNode;\n }\n\n // FIXME: May-13-2023\n // This may not be the most ideal solution.\n // In short: if the node was omitted in the previous run,\n // we want to re-evaluate it. The reason is that we may incorrectly\n // identify it is \"optional\" because it was omitted in the previous run.\n // There may be a better way to handle this. Need to revisit this.\n if (VestTest.isOmitted(prevNode)) {\n return newNode;\n }\n\n return prevNode;\n}\n\nfunction cancelOverriddenPendingTestOnTestReRun(\n nextNode: TIsolate,\n currentNode: TIsolate,\n prevTestObject: TIsolateTest\n) {\n if (nextNode === currentNode && VestTest.is(currentNode)) {\n cancelOverriddenPendingTest(prevTestObject, currentNode);\n }\n}\n\nfunction nodeReorderDetected(\n newNode: TIsolateTest,\n prevNode: Maybe<TIsolate>\n): boolean {\n return VestTest.is(prevNode) && !isSameProfileTest(prevNode, newNode);\n}\n\nfunction throwTestOrderError(\n newNode: TIsolateTest,\n prevNode: Maybe<TIsolate>\n): void {\n if (IsolateInspector.canReorder(newNode)) {\n return;\n }\n\n deferThrow(\n text(ErrorStrings.TESTS_CALLED_IN_DIFFERENT_ORDER, {\n fieldName: VestTest.getData(newNode).fieldName,\n prevName: VestTest.is(prevNode)\n ? VestTest.getData(prevNode).fieldName\n : undefined,\n })\n );\n}\n","import { Nullable } from 'vest-utils';\nimport { TIsolate } from 'vestjs-runtime';\n\nimport { IsolateTestReconciler } from 'IsolateTestReconciler';\n\nexport function VestReconciler(\n currentNode: TIsolate,\n historyNode: TIsolate\n): Nullable<TIsolate> {\n return (\n [IsolateTestReconciler]\n .find(reconciler => reconciler.match(currentNode, historyNode))\n ?.reconcile(currentNode as any, historyNode as any) ?? null\n );\n}\n","import { CB } from 'vest-utils';\nimport { TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { SuiteContext } from 'SuiteContext';\nimport { TGroupName } from 'SuiteResultTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport function group<G extends TGroupName>(\n groupName: G,\n callback: CB<void>\n): TIsolate;\nexport function group(callback: CB<void>): TIsolate;\nexport function group<G extends TGroupName>(\n ...args: [groupName: G, callback: CB<void>] | [callback: CB<void>]\n): TIsolate {\n const [callback, groupName] = args.reverse() as [CB<void>, G];\n\n return Isolate.create(\n VestIsolateType.Group,\n () => {\n return SuiteContext.run({ ...(groupName && { groupName }) }, callback);\n },\n );\n}\n","import { isStringValue, invariant, optionalFunctionValue } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { TIsolateTest } from 'IsolateTest';\nimport { useInclusion } from 'SuiteContext';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TDraftCondition } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\nimport { useHasOnliedTests } from 'useHasOnliedTests';\n\n/**\n * Conditionally includes a field for testing, based on specified criteria.\n *\n * @param {string} fieldName - The name of the field to include for testing.\n *\n * @example\n * include('confirm').when('password');\n * // Includes the \"confirm\" field for testing when the \"password\" field is included\n *\n * include('confirm').when(someValue);\n * // Includes the \"confirm\" field for testing when the value of `someValue` is true\n *\n * include('confirm').when(() => someValue);\n * // Includes the \"confirm\" field for testing when the callback function returns true\n *\n * include('username').when(result => result.hasErrors('username'));\n * // Includes the \"username\" field for testing when there are errors associated with it in the current suite result\n */\n// @vx-allow use-use\nexport function include<F extends TFieldName, G extends TGroupName>(\n fieldName: F\n): {\n when: (condition: F | TFieldName | TDraftCondition<F, G>) => void;\n} {\n invariant(isStringValue(fieldName));\n const inclusion = useInclusion();\n\n inclusion[fieldName] = true;\n\n return { when };\n\n /**\n * Specifies the inclusion criteria for the field in `include` function.\n */\n function when(condition: F | TFieldName | TDraftCondition<F, G>): void {\n invariant(condition !== fieldName, ErrorStrings.INCLUDE_SELF);\n\n const inclusion = useInclusion();\n\n // This callback will run as part of the \"isExcluded\" series of checks\n inclusion[fieldName] = function isIncluded(\n currentNode: TIsolateTest\n ): boolean {\n if (isStringValue(condition)) {\n return useHasOnliedTests(currentNode, condition);\n }\n\n return optionalFunctionValue(\n condition,\n optionalFunctionValue(useCreateSuiteResult)\n );\n };\n }\n}\n","import { CB, Maybe } from 'vest-utils';\nimport { TIsolate, Isolate, IsolateKey } from 'vestjs-runtime';\n\nimport { IsolateTestStateMachine, TestStatus } from 'IsolateTestStateMachine';\nimport { TestSeverity } from 'Severity';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { AsyncTest, TestFn } from 'TestTypes';\nimport { VestIsolateType } from 'VestIsolateType';\n\nexport type TIsolateTest<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = TIsolate<CommonTestFields<F, G> & IsolateTestPayload>;\n\nexport function IsolateTest<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n>(\n callback: CB,\n input: CommonTestFields<F, G>,\n key?: IsolateKey\n): TIsolateTest<F, G> {\n const payload: IsolateTestPayload = {\n ...IsolateTestBase(),\n fieldName: input.fieldName,\n testFn: input.testFn,\n };\n\n if (input.groupName) {\n payload.groupName = input.groupName;\n }\n\n if (input.message) {\n payload.message = input.message;\n }\n const isolate = Isolate.create<IsolateTestPayload>(\n VestIsolateType.Test,\n callback,\n payload,\n key ?? null\n );\n\n return isolate as TIsolateTest<F, G>;\n}\n\nexport function IsolateTestBase() {\n return {\n severity: TestSeverity.Error,\n status: IsolateTestStateMachine.initial(),\n };\n}\n\nexport type IsolateTestPayload<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = CommonTestFields<F, G> & {\n severity: TestSeverity;\n status: TestStatus;\n asyncTest?: AsyncTest;\n};\n\ntype CommonTestFields<\n F extends TFieldName = TFieldName,\n G extends TGroupName = TGroupName\n> = {\n message?: Maybe<string>;\n groupName?: G;\n fieldName: F;\n testFn: TestFn;\n};\n","import { Maybe, isStringValue, isUndefined } from 'vest-utils';\n\nexport function shouldUseErrorAsMessage(\n message: Maybe<string>,\n error: unknown\n): error is Maybe<string> {\n // kind of cheating with this safe guard, but it does the job\n return isUndefined(message) && isStringValue(error);\n}\n","import { isPromise, isStringValue, text, deferThrow } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { TIsolateTest } from 'IsolateTest';\nimport { SuiteContext } from 'SuiteContext';\nimport { TestResult } from 'TestTypes';\nimport { VestTest } from 'VestTest';\nimport { shouldUseErrorAsMessage } from 'shouldUseErrorMessage';\nimport { useVerifyTestRun } from 'verifyTestRun';\n\n// eslint-disable-next-line max-statements\nexport function useAttemptRunTest(testObject: TIsolateTest) {\n useVerifyTestRun(testObject);\n\n if (VestTest.isUntested(testObject)) {\n return useRunTest(testObject);\n }\n\n if (!VestTest.isNonActionable(testObject)) {\n // Probably unreachable. If we get here, it means that\n // something was really wrong and should be reported.\n /* istanbul ignore next */\n deferThrow(\n text(ErrorStrings.UNEXPECTED_TEST_REGISTRATION_ERROR, {\n testObject: JSON.stringify(testObject),\n })\n );\n }\n}\n\nfunction runSyncTest(testObject: TIsolateTest): TestResult {\n return SuiteContext.run({ currentTest: testObject }, () => {\n let result: TestResult;\n\n const { message, testFn } = VestTest.getData(testObject);\n\n try {\n result = testFn({ signal: testObject.abortController.signal });\n } catch (error) {\n if (shouldUseErrorAsMessage(message, error)) {\n VestTest.getData(testObject).message = error;\n }\n result = false;\n }\n\n if (result === false) {\n VestTest.fail(testObject);\n }\n\n return result;\n });\n}\n\n/**\n * runs test, if async - adds to pending array\n */\nfunction useRunTest(testObject: TIsolateTest): Promise<void> | undefined {\n // Run test callback.\n // If a promise is returned, set as async and\n // Move to pending list.\n const result = runSyncTest(testObject);\n try {\n // try catch for safe property access\n // in case object is an enforce chain\n if (isPromise(result)) {\n VestTest.getData(testObject).asyncTest = result;\n return useRunAsyncTest(testObject);\n }\n\n onTestCompleted(testObject);\n } catch (e) {\n // Probably unreachable. If we get here, it means that\n // something was really wrong and should be reported.\n /* istanbul ignore next */\n throw new Error(\n text(ErrorStrings.UNEXPECTED_TEST_REGISTRATION_ERROR, {\n testObject: JSON.stringify(testObject),\n error: e,\n })\n );\n }\n}\n\n/**\n * Runs async test.\n */\nfunction useRunAsyncTest(testObject: TIsolateTest): Promise<void> | undefined {\n const { asyncTest, message } = VestTest.getData(testObject);\n\n if (!isPromise(asyncTest)) return;\n // VestTest.setPending(testObject);\n\n const done = VestRuntime.persist(() => {\n onTestCompleted(testObject);\n });\n const fail = VestRuntime.persist((rejectionMessage?: string) => {\n if (VestTest.isCanceled(testObject)) {\n return;\n }\n\n VestTest.getData(testObject).message = isStringValue(rejectionMessage)\n ? rejectionMessage\n : message;\n VestTest.fail(testObject);\n\n done();\n });\n\n return asyncTest.then(done, fail);\n}\n\nfunction onTestCompleted(testObject: TIsolateTest) {\n // Attempts passing if the test is not already failed.\n // or is not canceled/omitted.\n VestTest.pass(testObject);\n}\n","import { CB, isNull } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport * as Runtime from 'Runtime';\nimport { useTestMemoCache } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { VestTest } from 'VestTest';\nimport { VTest } from 'test';\n\n// @vx-allow use-use\nexport function wrapTestMemo<FN extends TFieldName>(test: VTest): TestMemo<FN> {\n /**\n * Caches a test result based on the test's dependencies.\n */\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParametersWithoutMessage\n ): TIsolateTest;\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParametersWithMessage\n ): TIsolateTest;\n function memo<F extends FN>(\n fieldName: F,\n ...args: ParamsOverload\n ): TIsolateTest {\n const [deps, testFn, msg] = args.reverse() as [any[], TestFn, string];\n\n // Implicit dependency for better specificity\n const dependencies = [\n Runtime.useSuiteId(),\n fieldName,\n VestRuntime.useCurrentCursor(),\n ].concat(deps);\n\n return useGetTestFromCache(dependencies, cacheAction);\n\n function cacheAction() {\n return test(fieldName, msg, testFn);\n }\n }\n\n return memo;\n}\n\nfunction useGetTestFromCache(\n dependencies: any[],\n cacheAction: CB<TIsolateTest>\n): TIsolateTest {\n const cache = useTestMemoCache();\n\n const cached = cache.get(dependencies);\n\n if (isNull(cached)) {\n // cache miss\n return cache(dependencies, cacheAction);\n }\n\n const [, cachedValue] = cached;\n\n if (VestTest.isCanceled(cachedValue)) {\n // cache hit, but test is canceled\n cache.invalidate(dependencies);\n return cache(dependencies, cacheAction);\n }\n\n VestRuntime.addNodeToHistory(cachedValue);\n\n return cachedValue;\n}\n\nexport type TestMemo<F extends TFieldName> = {\n (fieldName: F, ...args: ParametersWithoutMessage): TIsolateTest;\n (fieldName: F, ...args: ParametersWithMessage): TIsolateTest;\n};\n\ntype ParametersWithoutMessage = [test: TestFn, dependencies: unknown[]];\ntype ParametersWithMessage = [\n message: string,\n test: TestFn,\n dependencies: unknown[]\n];\n\ntype ParamsOverload = ParametersWithoutMessage | ParametersWithMessage;\n","import { assign, invariant, isFunction, isStringValue, text } from 'vest-utils';\nimport { Bus, IsolateKey } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateTest, TIsolateTest } from 'IsolateTest';\nimport { useGroupName } from 'SuiteContext';\nimport { TFieldName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { useAttemptRunTest } from 'runTest';\nimport { wrapTestMemo } from 'test.memo';\n\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n message: string,\n cb: TestFn\n): TIsolateTest;\nfunction vestTest<F extends TFieldName>(fieldName: F, cb: TestFn): TIsolateTest;\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n message: string,\n cb: TestFn,\n key: IsolateKey\n): TIsolateTest;\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n cb: TestFn,\n key: IsolateKey\n): TIsolateTest;\n// @vx-allow use-use\nfunction vestTest<F extends TFieldName>(\n fieldName: F,\n ...args:\n | [message: string, cb: TestFn]\n | [cb: TestFn]\n | [message: string, cb: TestFn, key: IsolateKey]\n | [cb: TestFn, key: IsolateKey]\n): TIsolateTest {\n const [message, testFn, key] = (\n isFunction(args[1]) ? args : [undefined, ...args]\n ) as [string, TestFn, IsolateKey];\n\n validateTestParams(fieldName, testFn);\n\n const groupName = useGroupName();\n\n const testObjectInput = { fieldName, groupName, message, testFn };\n\n // This invalidates the suite cache.\n Bus.useEmit(Events.TEST_RUN_STARTED);\n\n return IsolateTest(useAttemptRunTest, testObjectInput, key);\n}\n\nexport const test = assign(vestTest, {\n memo: wrapTestMemo(vestTest),\n});\n\nexport type VTest = typeof vestTest;\n\nfunction validateTestParams(fieldName: string, testFn: TestFn): void {\n const fnName = 'test';\n invariant(\n isStringValue(fieldName),\n text(ErrorStrings.INVALID_PARAM_PASSED_TO_FUNCTION, {\n fn_name: fnName,\n param: 'fieldName',\n expected: 'string',\n })\n );\n invariant(\n isFunction(testFn),\n text(ErrorStrings.INVALID_PARAM_PASSED_TO_FUNCTION, {\n fn_name: fnName,\n param: 'callback',\n expected: 'function',\n })\n );\n}\n","// import { optional, skipWhen, omitWhen, IsolateTest, group } from 'vest';\nimport { optional } from 'optional';\nimport { CB, DynamicValue } from 'vest-utils';\nimport { TIsolate, IsolateKey } from 'vestjs-runtime';\n\nimport { TIsolateTest } from 'IsolateTest';\nimport { OptionalsInput } from 'OptionalTypes';\nimport { SuiteResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { TestFn } from 'TestTypes';\nimport { FieldExclusion, only, skip } from 'focused';\nimport { group } from 'group';\nimport { include } from 'include';\nimport { omitWhen } from 'omitWhen';\nimport { skipWhen } from 'skipWhen';\nimport { test } from 'test';\nimport { TestMemo } from 'test.memo';\n\nexport function getTypedMethods<\n F extends TFieldName,\n G extends TGroupName\n>(): TTypedMethods<F, G> {\n return {\n group,\n include,\n omitWhen,\n only,\n optional,\n skip,\n skipWhen,\n test,\n };\n}\n\nexport type TTypedMethods<F extends TFieldName, G extends TGroupName> = {\n include: (fieldName: F) => {\n when: (condition: F | TDraftCondition<F, G>) => void;\n };\n omitWhen: (conditional: TDraftCondition<F, G>, callback: CB) => void;\n only: {\n (item: FieldExclusion<F>): void;\n };\n optional: (optionals: OptionalsInput<F>) => void;\n skip: {\n (item: FieldExclusion<F>): void;\n };\n skipWhen: (condition: TDraftCondition<F, G>, callback: CB) => void;\n test: {\n (fieldName: F, message: string, cb: TestFn): TIsolateTest;\n (fieldName: F, cb: TestFn): TIsolateTest;\n (fieldName: F, message: string, cb: TestFn, key: IsolateKey): TIsolateTest;\n (fieldName: F, cb: TestFn, key: IsolateKey): TIsolateTest;\n } & {\n memo: TestMemo<F>;\n };\n group: {\n (callback: () => void): TIsolate;\n (groupName: G, callback: () => void): TIsolate;\n };\n};\n\nexport type TDraftCondition<\n F extends TFieldName,\n G extends TGroupName\n> = DynamicValue<boolean, [draft: SuiteResult<F, G>]>;\n","import { assign } from 'vest-utils';\n\nimport { DoneCallback, useDoneCallbacks, useFieldCallbacks } from 'Runtime';\nimport { TFieldName } from 'SuiteResultTypes';\n\nexport function useDeferDoneCallback(\n doneCallback: DoneCallback,\n fieldName?: TFieldName\n): void {\n const [, setFieldCallbacks] = useFieldCallbacks();\n const [, setDoneCallbacks] = useDoneCallbacks();\n\n if (fieldName) {\n setFieldCallbacks(fieldCallbacks =>\n assign(fieldCallbacks, {\n [fieldName]: (fieldCallbacks[fieldName] || []).concat(doneCallback),\n })\n );\n\n return;\n }\n\n setDoneCallbacks(doneCallbacks => doneCallbacks.concat(doneCallback));\n}\n","/**\n * DONE is here and not in its own module to prevent circular dependency issues.\n */\n\nimport { Maybe, isFunction, numberEquals } from 'vest-utils';\n\nimport {\n SuiteResult,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\n\nexport function shouldSkipDoneRegistration<\n F extends TFieldName,\n G extends TGroupName\n>(\n callback: (res: SuiteResult<F, G>) => void,\n\n fieldName: Maybe<F>,\n output: SuiteRunResult<F, G>\n): boolean {\n // If we do not have any test runs for the current field\n return !!(\n !isFunction(callback) ||\n (fieldName && numberEquals(output.tests[fieldName]?.testCount ?? 0, 0))\n );\n}\n","import { assign } from 'vest-utils';\nimport { VestRuntime } from 'vestjs-runtime';\n\nimport {\n SuiteResult,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\nimport { SuiteWalker } from 'SuiteWalker';\nimport { useDeferDoneCallback } from 'deferDoneCallback';\nimport { shouldSkipDoneRegistration } from 'shouldSkipDoneRegistration';\nimport { useCreateSuiteResult } from 'suiteResult';\n\nexport function useSuiteRunResult<\n F extends TFieldName,\n G extends TGroupName\n>(): SuiteRunResult<F, G> {\n return Object.freeze(\n assign(\n {\n done: VestRuntime.persist(done),\n },\n useCreateSuiteResult<F, G>()\n )\n );\n}\n\n/**\n * Registers done callbacks.\n * @register {Object} Vest output object.\n */\n// @vx-allow use-use\nfunction done<F extends TFieldName, G extends TGroupName>(\n ...args: any[]\n): SuiteRunResult<F, G> {\n const [callback, fieldName] = args.reverse() as [\n (res: SuiteResult<F, G>) => void,\n F\n ];\n const output = useSuiteRunResult<F, G>();\n if (shouldSkipDoneRegistration<F, G>(callback, fieldName, output)) {\n return output;\n }\n const useDoneCallback = () => callback(useCreateSuiteResult());\n if (!SuiteWalker.hasRemainingWithTestNameMatching(fieldName)) {\n useDoneCallback();\n return output;\n }\n useDeferDoneCallback(useDoneCallback, fieldName);\n return output;\n}\n\nexport interface Done<F extends TFieldName, G extends TGroupName> {\n (...args: [cb: (res: SuiteResult<F, G>) => void]): SuiteRunResult<F, G>;\n (\n ...args: [fieldName: F, cb: (res: SuiteResult<F, G>) => void]\n ): SuiteRunResult<F, G>;\n}\n","import { CB, invariant, isFunction } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\n\n\n\nexport function validateSuiteCallback<T extends CB>(\n suiteCallback: T\n): asserts suiteCallback is T {\n invariant(\n isFunction(suiteCallback),\n ErrorStrings.SUITE_MUST_BE_INITIALIZED_WITH_FUNCTION\n );\n}\n","import { assign, CB } from 'vest-utils';\nimport { Bus, VestRuntime } from 'vestjs-runtime';\n\nimport { Events } from 'BusEvents';\nimport { IsolateSuite, TIsolateSuite } from 'IsolateSuite';\nimport { useCreateVestState, useLoadSuite } from 'Runtime';\nimport { SuiteContext } from 'SuiteContext';\nimport {\n SuiteName,\n SuiteRunResult,\n TFieldName,\n TGroupName,\n} from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\nimport { useInitVestBus } from 'VestBus';\nimport { VestReconciler } from 'VestReconciler';\nimport { getTypedMethods } from 'getTypedMethods';\nimport { useCreateSuiteResult } from 'suiteResult';\nimport { useSuiteRunResult } from 'suiteRunResult';\nimport { bindSuiteSelectors } from 'suiteSelectors';\nimport { validateSuiteCallback } from 'validateSuiteParams';\n\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(suiteName: SuiteName, suiteCallback: T): Suite<F, G, T>;\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(suiteCallback: T): Suite<F, G, T>;\n// @vx-allow use-use\nfunction createSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB\n>(\n ...args: [suiteName: SuiteName, suiteCallback: T] | [suiteCallback: T]\n): Suite<F, G, T> {\n const [suiteCallback, suiteName] = args.reverse() as [T, SuiteName];\n\n validateSuiteCallback(suiteCallback);\n\n // Create a stateRef for the suite\n // It holds the suite's persisted values that may remain between runs.\n const stateRef = useCreateVestState({ suiteName, VestReconciler });\n\n function suite(...args: Parameters<T>): SuiteRunResult<F, G> {\n return SuiteContext.run(\n {\n suiteParams: args,\n },\n () => {\n Bus.useEmit(Events.SUITE_RUN_STARTED);\n\n return IsolateSuite(\n useRunSuiteCallback<T, F, G>(suiteCallback, ...args)\n );\n }\n ).output;\n }\n\n // Assign methods to the suite\n // We do this within the VestRuntime so that the suite methods\n // will be bound to the suite's stateRef and be able to access it.\n return VestRuntime.Run(stateRef, () => {\n // @vx-allow use-use\n const VestBus = useInitVestBus();\n\n return assign(\n // We're also binding the suite to the stateRef, so that the suite\n // can access the stateRef when it's called.\n VestRuntime.persist(suite),\n {\n dump: VestRuntime.persist(\n () => VestRuntime.useAvailableRoot() as TIsolateSuite\n ),\n get: VestRuntime.persist(useCreateSuiteResult),\n remove: Bus.usePrepareEmitter<string>(Events.REMOVE_FIELD),\n reset: Bus.usePrepareEmitter(Events.RESET_SUITE),\n resetField: Bus.usePrepareEmitter<string>(Events.RESET_FIELD),\n resume: VestRuntime.persist(useLoadSuite),\n subscribe: VestBus.subscribe,\n ...bindSuiteSelectors<F, G>(VestRuntime.persist(useCreateSuiteResult)),\n ...getTypedMethods<F, G>(),\n }\n );\n });\n}\n\nfunction useRunSuiteCallback<\n T extends CB,\n F extends TFieldName,\n G extends TGroupName\n>(suiteCallback: T, ...args: Parameters<T>): CB<SuiteRunResult<F, G>> {\n const emit = Bus.useEmit();\n\n return () => {\n suiteCallback(...args);\n emit(Events.SUITE_CALLBACK_RUN_FINISHED);\n return useSuiteRunResult<F, G>();\n };\n}\n\nexport { createSuite };\n","import { CB } from 'vest-utils';\nimport { TIsolate, Isolate } from 'vestjs-runtime';\n\nimport { VestIsolateType } from 'VestIsolateType';\n\ntype TIsolateEach = TIsolate;\n\nexport function IsolateEach<Callback extends CB = CB>(\n callback: Callback\n): TIsolateEach {\n return Isolate.create(VestIsolateType.Each, callback, {\n allowReorder: true,\n });\n}\n","import { invariant, isFunction } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { IsolateEach } from 'IsolateEach';\n\n/**\n * Iterates over an array of items, allowing to run tests individually per item.\n *\n * Requires setting a \"key\" property on each item tested.\n *\n * @example\n *\n * each(itemsArray, (item) => {\n * test(item.name, 'Item value must not be empty', () => {\n * enforce(item.value).isNotEmpty();\n * }, item.id)\n * })\n */\nexport function each<T>(\n list: T[],\n callback: (arg: T, index: number) => void\n): void {\n invariant(\n isFunction(callback),\n ErrorStrings.EACH_CALLBACK_MUST_BE_A_FUNCTION\n );\n\n IsolateEach(() => {\n list.forEach((arg, index) => {\n callback(arg, index);\n });\n });\n}\n","import { CB, assign } from 'vest-utils';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { SuiteRunResult, TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { createSuite } from 'createSuite';\nimport { TTypedMethods, getTypedMethods } from 'getTypedMethods';\n\n/**\n * Creates a static suite for server-side validation.\n *\n * @param {Function} validationFn - The validation function that defines the suite's tests.\n * @returns {Function} - A function that runs the validations defined in the suite.\n *\n * @example\n * import { staticSuite, test, enforce } from 'vest';\n *\n * const suite = staticSuite(data => {\n * test('username', 'username is required', () => {\n * enforce(data.username).isNotEmpty();\n * });\n * });\n *\n * suite(data);\n */\nexport function staticSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB,\n>(suiteCallback: T): StaticSuite<F, G, T> {\n return assign(\n (...args: Parameters<T>) => {\n const suite = createSuite<F, G, T>(suiteCallback);\n\n const result = suite(...args);\n\n return Object.freeze(\n assign(\n {\n dump: suite.dump,\n },\n result,\n ),\n );\n },\n {\n ...getTypedMethods<F, G>(),\n },\n );\n}\n\nexport type StaticSuite<\n F extends TFieldName = string,\n G extends TGroupName = string,\n T extends CB = CB,\n> = ((...args: Parameters<T>) => SuiteRunResult<F, G> & {\n dump: CB<TIsolateSuite>;\n}) &\n TTypedMethods<F, G>;\n","import { invariant } from 'vest-utils';\n\nimport { ErrorStrings } from 'ErrorStrings';\nimport { useCurrentTest } from 'SuiteContext';\nimport { VestTest } from 'VestTest';\n\nconst ERROR_OUTSIDE_OF_TEST = ErrorStrings.WARN_MUST_BE_CALLED_FROM_TEST;\n\n/**\n * Sets the severity level of a test to `warn`, allowing it to fail without marking the suite as invalid.\n * Use this function within the body of a test to create warn-only tests.\n *\n * @returns {void}\n *\n * @example\n * test('password', 'Your password strength is: WEAK', () => {\n * warn();\n *\n * enforce(data.password).matches(/0-9/);\n * });\n *\n * @limitations\n * - The `warn` function should only be used within the body of a `test` function.\n * - When using `warn()` in an async test, it should be called in the synchronous portion of the test, not after an `await` call or in the Promise body.\n * - It is recommended to call `warn()` at the top of the test function.\n */\n// @vx-allow use-use\nexport function warn(): void {\n const currentTest = useCurrentTest(ErrorStrings.HOOK_CALLED_OUTSIDE);\n\n invariant(currentTest, ERROR_OUTSIDE_OF_TEST);\n\n VestTest.warn(currentTest);\n}\n"],"names":["Isolate","assign","Modes","createCascade","tinyState","cache","VestRuntime","isArray","isStringValue","asArray","hasOwnProperty","enforce","seq","machine","StateMachine","invariant","IsolateSelectors","isPromise","optionalFunctionValue","IsolateMutator","Walker","Predicates","isNullish","isEmpty","Bus","callEach","RuntimeEvents","CommonStateMachine.setPending","CommonStateMachine.setDone","bindNot","either","isPositive","greaterThan","defaultTo","noop","isNotEmpty","isNotNullish","IsolateInspector","Reconciler","deferThrow","text","isUndefined","Runtime.useSuiteId","isNull","isFunction","numberEquals"],"mappings":"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"}
|