RSS Git Download  Clone
Raw Blame History 1kB 39 lines
/**
 * Redis server version parsing and feature gating.
 * Shared by Angular and React frontends.
 *
 * Usage:
 *   const rv = parseRedisVersion(state.info()?.server?.redis_version)
 *   if (rv.isAtLeast(8, 2)) { // show VSIM IN filter }
 */

export interface RedisVersion {
    major: number
    minor: number
    patch: number
    /** Check if version is at least major.minor */
    isAtLeast(major: number, minor: number): boolean
    /** Raw version string (e.g. '8.6.2') */
    raw: string
}

const UNKNOWN: RedisVersion = {
    major: 0, minor: 0, patch: 0,
    isAtLeast: () => false,
    raw: '',
}

export function parseRedisVersion(versionStr: string | undefined | null): RedisVersion {
    if (!versionStr) return UNKNOWN
    const parts = versionStr.split('.').map(Number)
    const major = parts[0] || 0
    const minor = parts[1] || 0
    const patch = parts[2] || 0
    return {
        major, minor, patch,
        isAtLeast: (reqMajor, reqMinor) =>
            major > reqMajor || (major === reqMajor && minor >= reqMinor),
        raw: versionStr,
    }
}