56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
const { format } = require('util');
|
|
|
|
class OPError extends Error {
|
|
constructor({ error_description, error, error_uri, session_state, state, scope }, response) {
|
|
super(!error_description ? error : `${error} (${error_description})`);
|
|
|
|
Object.assign(
|
|
this,
|
|
{ error },
|
|
error_description && { error_description },
|
|
error_uri && { error_uri },
|
|
state && { state },
|
|
scope && { scope },
|
|
session_state && { session_state },
|
|
);
|
|
|
|
if (response) {
|
|
Object.defineProperty(this, 'response', {
|
|
value: response,
|
|
});
|
|
}
|
|
|
|
this.name = this.constructor.name;
|
|
Error.captureStackTrace(this, this.constructor);
|
|
}
|
|
}
|
|
|
|
class RPError extends Error {
|
|
constructor(...args) {
|
|
if (typeof args[0] === 'string') {
|
|
super(format(...args));
|
|
} else {
|
|
const { message, printf, response, ...rest } = args[0];
|
|
if (printf) {
|
|
super(format(...printf));
|
|
} else {
|
|
super(message);
|
|
}
|
|
Object.assign(this, rest);
|
|
if (response) {
|
|
Object.defineProperty(this, 'response', {
|
|
value: response,
|
|
});
|
|
}
|
|
}
|
|
|
|
this.name = this.constructor.name;
|
|
Error.captureStackTrace(this, this.constructor);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
OPError,
|
|
RPError,
|
|
};
|