/** * @license * Copyright 2025 Vybestack LLC * SPDX-License-Identifier: Apache-2.0 */ export function assertDefined( value: T, message = 'Expected value to be defined', ): asserts value is NonNullable { if (value === null || value === undefined) { throw new Error(message); } } export function assertTrue( value: boolean, message = 'Expected value to be true', ): asserts value is true { if (value !== true) { throw new Error(message); } } export function assertFalse( value: boolean, message = 'Expected value to be false', ): asserts value is false { if (value !== false) { throw new Error(message); } } export function assertTruthy( value: T, message = 'Expected value to be truthy', ): asserts value is Exclude { if (Boolean(value) !== true) { throw new Error(message); } } export function assertType( value: T, guard: (value: T) => value is S, message = 'Expected value to satisfy type guard', ): asserts value is S { if (!guard(value)) { throw new Error(message); } } export function assertHasType( value: T, type: K, message = `Expected value to have type "${type}"`, ): asserts value is Extract { if (value.type !== type) { throw new Error(message); } }