@copperjs/copper
Version:
A lightweight chromium grid
79 lines • 2.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerErrorHandler = exports.WebdriverError = exports.NoMatchingNode = exports.UnsupportedActionError = exports.CreateSessionError = exports.SessionNotFound = exports.CopperError = exports.BaseError = void 0;
const http_status_codes_1 = require("http-status-codes");
const logger_1 = require("../logger");
class BaseError extends Error {
constructor(message) {
super(message);
this.name = new.target.name;
}
}
exports.BaseError = BaseError;
class CopperError extends BaseError {
/**
*
* @param {string} message - error message (usually same as error)
* @param {string} error - a constant message (e.g entity not found)
* @param {number} statusCode
*/
constructor(message, error, statusCode = http_status_codes_1.StatusCodes.BAD_REQUEST) {
super(message);
this.message = message;
this.error = error;
this.statusCode = statusCode;
}
toJSON() {
return {
message: this.message,
error: this.error,
};
}
}
exports.CopperError = CopperError;
class SessionNotFound extends CopperError {
constructor(sessionId) {
super(`cannot find session with id ${sessionId}`, 'session not found', http_status_codes_1.StatusCodes.NOT_FOUND);
}
}
exports.SessionNotFound = SessionNotFound;
class CreateSessionError extends CopperError {
constructor(error) {
super(error, 'failed creating a session', http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR);
}
}
exports.CreateSessionError = CreateSessionError;
class UnsupportedActionError extends CopperError {
constructor(error) {
super(error, 'unsupported action', http_status_codes_1.StatusCodes.NOT_IMPLEMENTED);
}
}
exports.UnsupportedActionError = UnsupportedActionError;
class NoMatchingNode extends CopperError {
constructor(error) {
super(error, 'no matching node', http_status_codes_1.StatusCodes.NOT_FOUND);
}
}
exports.NoMatchingNode = NoMatchingNode;
class WebdriverError extends CopperError {
constructor(error) {
super(error, 'Webdriver Protocol Error', http_status_codes_1.StatusCodes.BAD_REQUEST);
}
}
exports.WebdriverError = WebdriverError;
const registerErrorHandler = (app, opts, done) => {
app.setErrorHandler(async function (error, request, reply) {
if (error instanceof CopperError) {
reply
.code(error.statusCode)
.serializer((a) => a)
.header('content-type', 'application/json; charset=utf-8')
.send(JSON.stringify(error));
}
logger_1.logger.error('Request Error', error.message, error.stack);
reply.send(500);
});
done();
};
exports.registerErrorHandler = registerErrorHandler;
//# sourceMappingURL=errors.js.map