Files
Desktop/ts/axo/_internal/assert.std.tsx
T
2026-04-13 12:50:00 -07:00

25 lines
796 B
TypeScript

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
class AssertionError extends TypeError {
override name = 'AssertionError';
}
export function assert(condition: boolean, message?: string): asserts condition;
export function assert<T>(input: T, message?: string): NonNullable<T>;
export function assert<T>(input: T, message?: string): NonNullable<T> {
if (input === false || input == null) {
// oxlint-disable-next-line no-debugger
debugger;
// oxlint-disable-next-line typescript/restrict-template-expressions
throw new AssertionError(message ?? `input is ${input}`);
}
return input;
}
export function unreachable(_value: never): never {
// oxlint-disable-next-line no-debugger
debugger;
throw new AssertionError('unreachable');
}