UNPKG

@antv/mcp-server-chart

Version:

A Model Context Protocol server for generating charts using AntV. This is a TypeScript-based MCP server that provides chart generation capabilities. It allows you to create various types of charts through MCP tools.

77 lines (76 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validatedTreeDataSchema = exports.validatedNodeEdgeDataSchema = exports.ValidateError = void 0; /** * The Error class for validation errors in zod. */ class ValidateError extends Error { constructor(message) { super(message); this.name = "ValidateError"; } } exports.ValidateError = ValidateError; /** * Valid node name is unique. * Valid edge source and target are existing in nodes. * Valid edge source edge target pair are unique. * @param data * @returns boolean */ const validatedNodeEdgeDataSchema = (data) => { const nodeNames = new Set(data.nodes.map((node) => node.name)); const uniqueNodeNames = new Set(); // 1. valid node name is unique for (const node of data.nodes) { if (uniqueNodeNames.has(node.name)) { throw new ValidateError(`Invalid parameters: node's name '${node.name}' should be unique.`); } uniqueNodeNames.add(node.name); } // 2. valid edge source and target are existing in nodes for (const edge of data.edges) { if (!nodeNames.has(edge.source)) { throw new ValidateError(`Invalid parameters: edge's source '${edge.source}' should exist in nodes.`); } if (!nodeNames.has(edge.target)) { throw new ValidateError(`Invalid parameters: edge's target '${edge.target}' should exist in nodes.`); } } // 3. valid edge source edge target pair are unique const edgePairs = new Set(); for (const edge of data.edges) { const pair = `${edge.source}-${edge.target}`; if (edgePairs.has(pair)) { throw new ValidateError(`Invalid parameters: edge pair '${pair}' should be unique.`); } edgePairs.add(pair); } return true; }; exports.validatedNodeEdgeDataSchema = validatedNodeEdgeDataSchema; /** * Valid TreeData name is unique. * @param data * @returns boolean */ const validatedTreeDataSchema = (data) => { const node = data; const names = new Set(); // valid node name is unique const checkUniqueness = (currentNode) => { if (names.has(currentNode.name)) { throw new ValidateError(`Invalid parameters: node's name '${currentNode.name}' should be unique.`); } names.add(currentNode.name); if (currentNode.children) { for (let i = 0; i < currentNode.children.length; i++) { const child = currentNode.children[i]; checkUniqueness(child); } } }; checkUniqueness(node); return true; }; exports.validatedTreeDataSchema = validatedTreeDataSchema;