@brianveltman/sonatype-mcp
Version:
Model Context Protocol server for Sonatype Nexus Repository Manager
54 lines • 2.19 kB
JavaScript
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