import { Maybe, OneOrMoreOf, Result, makeResult } from 'vest-utils'; import { IsolateFocused as VestRuntimeIsolateFocused, FocusModes, FocusSelectors, type TIsolateFocused, } from 'vestjs-runtime'; import { TFieldName } from '../../suiteResult/SuiteResultTypes'; export { FocusModes, FocusSelectors, type TIsolateFocused }; export type FieldExclusion = Maybe< OneOrMoreOf >; /** * Adds a field or a list of fields into the inclusion list * * @example * * only('username'); */ export function only(match: FieldExclusion | false) { return VestRuntimeIsolateFocused( FocusModes.ONLY, defaultMatch(match).unwrap(), ); } /** * Adds a field or a list of fields into the exclusion list * * @example * * skip('username'); */ export function skip(match: FieldExclusion | boolean) { return VestRuntimeIsolateFocused( FocusModes.SKIP, defaultMatch(match).unwrap(), ); } function defaultMatch( match: FieldExclusion | boolean, ): Result | true> { return makeResult.Ok(match === false ? [] : match); }