diff --git a/CHANGELOG.md b/CHANGELOG.md index d37cb0d51..f22ec745e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Changes: +- Expose `assertUnreachable` for codepaths that should not be followed - Swap to upstream `@noble/hashes` - Preserve all-caps word splits in `stringCamelCase` diff --git a/packages/util/src/assert.ts b/packages/util/src/assert.ts index 135f33e9c..2214345d5 100644 --- a/packages/util/src/assert.ts +++ b/packages/util/src/assert.ts @@ -42,3 +42,11 @@ export function assertReturn (value: T | undefined | null, message: string | return value; } + +/** + * @name assertUnreachable + * @description An assertion helper that ensures all codepaths are followed + */ +export function assertUnreachable (x: never): never { + throw new Error(`This codepath should be unreachable. Unhandled input: ${x as unknown as string}`); +}