Skip to main content
Glama
versionResolver.ts2.23 kB
import semver from 'semver'; /** * Version parsing, comparison, and resolution utilities */ export interface ParsedVersion { major: number; minor: number; patch: number; } export type UpdateType = 'major' | 'minor' | 'patch'; /** * Parse semantic version string into components */ export function parseVersion(version: string): ParsedVersion | null { const parsed = semver.parse(version); if (!parsed) { return null; } return { major: parsed.major, minor: parsed.minor, patch: parsed.patch, }; } /** * Compare two semantic versions * Returns: 1 if v1 > v2, -1 if v1 < v2, 0 if equal */ export function compareVersions(v1: string, v2: string): number { // Clean versions to handle 'v' prefix and other formats const clean1 = semver.clean(v1); const clean2 = semver.clean(v2); if (!clean1 || !clean2) { return 0; } return semver.compare(clean1, clean2); } /** * Determine update type based on version comparison * Returns the type of update (major/minor/patch) if newVersion > currentVersion, undefined otherwise */ export function getUpdateType(currentVersion: string, newVersion: string): UpdateType | undefined { const clean1 = semver.clean(currentVersion); const clean2 = semver.clean(newVersion); if (!clean1 || !clean2) { return undefined; } // First check if new version is actually greater if (!semver.gt(clean2, clean1)) { return undefined; } // Now determine the type of update const diff = semver.diff(clean1, clean2); if (diff === 'major' || diff === 'premajor') { return 'major'; } if (diff === 'minor' || diff === 'preminor') { return 'minor'; } if (diff === 'patch' || diff === 'prepatch') { return 'patch'; } return undefined; } /** * Check if a version is valid semver */ export function isValidVersion(version: string): boolean { return semver.valid(version) !== null; } /** * Clean version string (remove 'v' prefix, etc.) */ export function cleanVersion(version: string): string | null { return semver.clean(version); } /** * Check if version1 is greater than version2 */ export function isNewerVersion(v1: string, v2: string): boolean { return compareVersions(v1, v2) > 0; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1mcp-app/agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server