UNPKG

@brianveltman/sonatype-mcp

Version:

Model Context Protocol server for Sonatype Nexus Repository Manager

54 lines 2.19 kB
import { z } from 'zod'; import { ValidationError } from './errors.js'; export const commonSchemas = { repositoryName: z.string().min(1, 'Repository name is required').max(100), componentName: z.string().min(1, 'Component name is required').max(200), version: z.string().min(1, 'Version is required').max(100), format: z.enum(['npm', 'maven2', 'nuget', 'pypi', 'docker', 'raw', 'yum', 'apt']), repositoryType: z.enum(['hosted', 'proxy', 'group']), limit: z.number().min(1).max(1000).optional(), offset: z.number().min(0).optional() }; export const listRepositoriesSchema = z.object({ format: commonSchemas.format.optional(), type: commonSchemas.repositoryType.optional() }).strict(); export const getRepositorySchema = z.object({ name: commonSchemas.repositoryName }); export const searchComponentsSchema = z.object({ repository: commonSchemas.repositoryName.optional(), format: commonSchemas.format.optional(), group: z.string().optional(), name: z.string().optional(), version: z.string().optional(), prerelease: z.boolean().optional(), sort: z.enum(['name', 'version', 'format']).optional(), direction: z.enum(['asc', 'desc']).optional(), limit: commonSchemas.limit.default(25), offset: commonSchemas.offset.default(0) }).strict(); export const getComponentSchema = z.object({ id: z.string().min(1, 'Component ID is required') }); export const getSystemStatusSchema = z.object({}); export const listBlobStoresSchema = z.object({}); export function validateInput(schema, input) { try { return schema.parse(input); } catch (error) { if (error instanceof z.ZodError) { const issues = error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', '); throw new ValidationError(`Validation failed: ${issues}`); } throw new ValidationError(`Validation failed: ${error}`); } } export function sanitizeString(input) { return input.trim().replace(/[<>]/g, ''); } export function isToolEnabled(toolName, enabledTools) { return enabledTools.length === 0 || enabledTools.includes(toolName); } //# sourceMappingURL=validation.js.map