@atproto/jwk-jose
Version:
`jose` based implementation of @atproto/jwk Key's
21 lines (18 loc) • 532 B
text/typescript
// eslint-disable-next-line @typescript-eslint/ban-types
export type Simplify<T> = { [K in keyof T]: T[K] } & {}
export type RequiredKey<T, K extends keyof T = never> = Simplify<
T & {
[L in K]-?: unknown extends T[L]
? NonNullable<unknown> | null
: Exclude<T[L], undefined>
}
>
export function either<T extends string | number | boolean>(
a?: T,
b?: T,
): T | undefined {
if (a != null && b != null && a !== b) {
throw new TypeError(`Expected "${b}", got "${a}"`)
}
return a ?? b ?? undefined
}