UNPKG

@aashari/mcp-server-atlassian-jira

Version:

Node.js/TypeScript MCP server for Atlassian Jira. Equips AI systems (LLMs) with tools to list/get projects, search/get issues (using JQL/ID), and view dev info (commits, PRs). Connects AI capabilities directly into Jira project management and issue tracki

43 lines (42 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.skipValidation = void 0; exports.validateResponse = validateResponse; const zod_1 = require("zod"); const logger_util_js_1 = require("./logger.util.js"); const error_util_js_1 = require("./error.util.js"); // Create a contextualized logger for this file const logger = logger_util_js_1.Logger.forContext('utils/validation.util.ts'); // Toggle for testing - skip validation in test environments exports.skipValidation = process.env.NODE_ENV === 'test'; /** * Validates API response against a Zod schema * @param data The data to validate * @param schema The Zod schema to validate against * @param context Context for error messages (e.g., "issue details", "issue list") * @param serviceIdentifier Optional service identifier for more specific logging * @returns The validated data * @throws {McpError} If validation fails */ function validateResponse(data, schema, context, serviceIdentifier) { const methodLogger = logger.forMethod('validateResponse'); const logPrefix = serviceIdentifier ? `[${serviceIdentifier}] ` : ''; // Skip validation in test environment if the flag is set if (exports.skipValidation) { methodLogger.debug(`${logPrefix}Skipping validation for ${context} in test environment`); return data; } try { methodLogger.debug(`${logPrefix}Validating response for ${context}`); return schema.parse(data); } catch (error) { if (error instanceof zod_1.z.ZodError) { methodLogger.error(`${logPrefix}Response validation failed for ${context}:`, error.format()); throw (0, error_util_js_1.createApiError)(`API response validation failed: Invalid Jira ${context} format`, 500, { zodErrors: error.format() }); } // Re-throw if it's not a Zod error methodLogger.error(`${logPrefix}Non-Zod error during validation for ${context}:`, error); throw error; } }