UNPKG

@copperjs/copper

Version:
79 lines 2.89 kB
"use strict"; 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