openai-mock-api
Version:
A mock OpenAI API server for testing LLM applications
68 lines • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationError = exports.ErrorHandler = exports.ErrorHandlingMiddleware = void 0;
class ErrorHandlingMiddleware {
constructor(errorHandler, logger) {
this.errorHandler = errorHandler;
this.logger = logger;
}
middleware() {
return (error, req, res, next) => {
this.logger.error('Unhandled error', error);
const openAIError = this.errorHandler.handleError(error);
const status = this.getStatusFromError(error);
res.status(status).json(openAIError);
};
}
getStatusFromError(error) {
if (error.status)
return error.status;
if (error.statusCode)
return error.statusCode;
if (error.name === 'ValidationError')
return 400;
return 500;
}
}
exports.ErrorHandlingMiddleware = ErrorHandlingMiddleware;
class ErrorHandler {
constructor(logger) {
this.logger = logger;
}
handleError(error) {
// Check if it's already an OpenAI error
if (error.error && error.error.type) {
return error;
}
// Map common errors
if (error.name === 'ValidationError') {
return this.formatError(400, 'invalid_request_error', error.message, error.param);
}
if (error.name === 'SyntaxError' && error.message.includes('JSON')) {
return this.formatError(400, 'invalid_request_error', 'Invalid JSON in request body');
}
// Default to internal error
return this.formatError(500, 'internal_error', 'Internal server error');
}
formatError(status, type, message, param) {
return {
error: {
message,
type,
param,
code: type,
},
};
}
}
exports.ErrorHandler = ErrorHandler;
class ValidationError extends Error {
constructor(message, param) {
super(message);
this.param = param;
this.status = 400;
this.name = 'ValidationError';
}
}
exports.ValidationError = ValidationError;
//# sourceMappingURL=error.middleware.js.map