jose/dist/node/esm/runtime/invalid_key_input.js
2021-10-14 12:24:49 +02:00

36 lines
1.1 KiB
JavaScript

import { inspect } from 'util';
export default (actual, ...types) => {
let msg = 'Key must be ';
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}`;
}
else {
const inspected = inspect(actual, { depth: -1 });
msg += ` Received ${inspected}`;
}
}
else {
let inspected = inspect(actual, { colors: false });
if (inspected.length > 25)
inspected = `${inspected.slice(0, 25)}...`;
msg += ` Received type ${typeof actual} (${inspected})`;
}
return msg;
};