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
JavaScript
"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