UNPKG

npmplus-mcp-server

Version:

Production-ready MCP server for intelligent JavaScript package management. Works with Claude, Windsurf, Cursor, VS Code, and any MCP-compatible AI editor.

98 lines 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DependencyTypeSchema = exports.BooleanFlagSchema = exports.PaginationSchema = exports.SearchQuerySchema = exports.WorkingDirectorySchema = exports.PackageArraySchema = exports.PackageSpecSchema = exports.VersionSchema = exports.PackageNameSchema = void 0; const zod_1 = require("zod"); /** * Common package-related validation schemas */ /** * Package name validation */ exports.PackageNameSchema = zod_1.z .string() .min(1, 'Package name cannot be empty') .max(214, 'Package name too long') .regex(/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/, 'Invalid package name format'); /** * Semver version validation */ exports.VersionSchema = zod_1.z .string() .regex(/^(?:\^|~|>=?|<=?|=)?(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?:[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/, 'Invalid version format'); /** * Package with optional version */ exports.PackageSpecSchema = zod_1.z .string() .refine((spec) => { const parts = spec.split('@'); if (parts.length === 1) { // Just package name return exports.PackageNameSchema.safeParse(spec).success; } if (parts.length === 2) { // package@version const [name, version] = parts; return (exports.PackageNameSchema.safeParse(name).success && exports.VersionSchema.safeParse(version).success); } if (parts.length === 3 && parts[0] === '') { // @scope/package@version const [, scopedName, version] = parts; return (exports.PackageNameSchema.safeParse(`@${scopedName}`).success && exports.VersionSchema.safeParse(version).success); } return false; }, 'Invalid package specification format'); /** * Array of package names */ exports.PackageArraySchema = zod_1.z .array(exports.PackageSpecSchema) .min(1, 'At least one package must be specified') .max(50, 'Too many packages specified at once'); /** * Working directory validation */ exports.WorkingDirectorySchema = zod_1.z .string() .min(1, 'Working directory cannot be empty') .default(process.cwd()); /** * Search query validation */ exports.SearchQuerySchema = zod_1.z .string() .min(1, 'Search query cannot be empty') .max(100, 'Search query too long') .trim(); /** * Pagination parameters */ exports.PaginationSchema = zod_1.z.object({ limit: zod_1.z .number() .int() .min(1, 'Limit must be at least 1') .max(100, 'Limit cannot exceed 100') .default(25), from: zod_1.z .number() .int() .min(0, 'Offset cannot be negative') .default(0) }); /** * Common boolean flags */ exports.BooleanFlagSchema = zod_1.z.boolean().default(false); /** * Dependency type validation */ exports.DependencyTypeSchema = zod_1.z.enum([ 'dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies' ]).default('dependencies'); //# sourceMappingURL=package.js.map