mirror of
https://github.com/hanzoai/jose.git
synced 2026-09-24 17:00:01 +00:00
31 lines
962 B
TypeScript
31 lines
962 B
TypeScript
function message(msg: string, actual: unknown, ...types: string[]) {
|
|
if (types.length > 2) {
|
|
const last = types.pop()
|
|
msg += `one of type ${types.join(', ')}, or ${last}.`
|
|
} else if (types.length === 2) {
|
|
msg += `one of type ${types[0]} or ${types[1]}.`
|
|
} else {
|
|
msg += `of type ${types[0]}.`
|
|
}
|
|
|
|
if (actual == null) {
|
|
msg += ` Received ${actual}`
|
|
} else if (typeof actual === 'function' && actual.name) {
|
|
msg += ` Received function ${actual.name}`
|
|
} else if (typeof actual === 'object' && actual != null) {
|
|
if (actual.constructor && actual.constructor.name) {
|
|
msg += ` Received an instance of ${actual.constructor.name}`
|
|
}
|
|
}
|
|
|
|
return msg
|
|
}
|
|
|
|
export default (actual: unknown, ...types: string[]) => {
|
|
return message('Key must be ', actual, ...types)
|
|
}
|
|
|
|
export function withAlg(alg: string, actual: unknown, ...types: string[]) {
|
|
return message(`Key for the ${alg} algorithm must be `, actual, ...types)
|
|
}
|