Luxar Viewer API Documentation - v2026.10.19
    Preparing search index...

    Every cancellable or disposable async operation in the viewer, and the test that proves its abort / dispose / failure / retry behaviour.

    unit/conformance/async-operations.test.ts keeps this table honest: it scans src/ for exported functions and class methods that take an AbortSignal, and for exported classes that define dispose() beside an async method, and fails for any such symbol that no row names and that carries no // lifecycle-exempt: <reason> comment. It also fails for a row naming a symbol that no longer exists or a test file that does not exist.

    A row with a contract runs the shared lifecycle contract (unit/_shared/lifecycle-contract.ts, defineLifecycleContract(<contract>, …)) in one of its test files; a row without one is covered by the operation's own tests, which must name one of its symbols. New operations should prefer the contract: it states abort, dispose, failure, retry, supersede and double-dispose once, and an operation that cannot express a case says why.

    interface AsyncOperation {
        id: string;
        symbols: readonly string[];
        tests: readonly string[];
        contract?: string;
    }
    Index
    id: string

    What the operation is.

    symbols: readonly string[]

    The symbols it covers: <path under src/>#<exported name>.

    tests: readonly string[]

    Test files (under src/tests/unit/) that exercise its lifecycle.

    contract?: string

    The defineLifecycleContract name one of tests registers, when it runs the contract.