import { Assertion, AnyMatcher, AnythingMatcher } from './smartexpect.classes.assertion.js'; import type { TExecutionType } from './types.js'; // import type { TMatcher } from './smartexpect.classes.assertion.js'; // unused /** * Primary entry point for assertions. * Automatically detects Promises to support async assertions. */ /** * The `expect` function interface. Supports custom matchers via .extend. */ /** * Entry point for assertions. * Automatically detects Promises to support async assertions. */ export function expect(value: Promise): Assertion; export function expect(value: T): Assertion; export function expect(value: any): Assertion { const isThenable = value != null && typeof (value as any).then === 'function'; const mode: 'sync' | 'async' = isThenable ? 'async' : 'sync'; return new Assertion(value, mode); } /** * Register custom matchers. */ export namespace expect { export const extend = Assertion.extend; /** * Matcher for a specific constructor. Passes if value is instance of given constructor. */ export function any(constructor: any) { return new AnyMatcher(constructor); } /** * Matcher for any defined value (not null or undefined). */ export function anything() { return new AnythingMatcher(); } }