2018-09-21 10:58:53 +05:30
|
|
|
const frappe = require('frappejs');
|
|
|
|
|
2018-01-15 17:25:31 +05:30
|
|
|
class BaseError extends Error {
|
2018-07-18 00:59:18 +05:30
|
|
|
constructor(statusCode, ...params) {
|
2018-02-21 15:13:21 +05:30
|
|
|
super(...params);
|
2018-07-18 00:59:18 +05:30
|
|
|
this.statusCode = statusCode;
|
2018-02-21 15:13:21 +05:30
|
|
|
}
|
2018-01-15 17:25:31 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
class ValidationError extends BaseError {
|
2018-07-18 00:59:18 +05:30
|
|
|
constructor(...params) {
|
|
|
|
super(417, ...params);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class NotFound extends BaseError {
|
|
|
|
constructor(...params) {
|
|
|
|
super(404, ...params);
|
|
|
|
}
|
2018-01-15 17:25:31 +05:30
|
|
|
}
|
|
|
|
|
2018-07-18 00:59:18 +05:30
|
|
|
class Forbidden extends BaseError {
|
|
|
|
constructor(...params) {
|
|
|
|
super(403, ...params);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class ValueError extends ValidationError { }
|
|
|
|
class Conflict extends ValidationError { }
|
|
|
|
|
2018-09-21 10:58:53 +05:30
|
|
|
function throwError(message, error='ValidationError') {
|
|
|
|
const errorClass = {
|
|
|
|
'ValidationError': ValidationError,
|
|
|
|
'NotFound': NotFound,
|
|
|
|
'Forbidden': Forbidden,
|
|
|
|
'ValueError': ValueError,
|
|
|
|
'Conflict': Conflict
|
|
|
|
};
|
|
|
|
const err = new errorClass[error](message);
|
|
|
|
frappe.events.trigger('throw', { message, stackTrace: err.stack });
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
|
|
|
|
frappe.throw = throwError;
|
|
|
|
|
2018-01-15 17:25:31 +05:30
|
|
|
module.exports = {
|
2018-07-18 00:59:18 +05:30
|
|
|
ValidationError,
|
|
|
|
ValueError,
|
|
|
|
Conflict,
|
|
|
|
NotFound,
|
2018-09-21 10:58:53 +05:30
|
|
|
Forbidden,
|
|
|
|
throw: throwError
|
2018-01-15 17:25:31 +05:30
|
|
|
}
|