UNPKG

openai-mock-api

Version:

A mock OpenAI API server for testing LLM applications

68 lines 2.22 kB
"use strict"; 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