| | import semver from 'semver' |
| |
|
| | import { supported } from '@/versions/lib/enterprise-server-releases' |
| | import getDataDirectory from '@/data-directory/lib/data-directory' |
| | import { FeatureData, FrontmatterVersions } from '@/types' |
| |
|
| | |
| | export function isGhesReleaseDeprecated(lowestSupportedVersion: string, semVerRange: string) { |
| | const lowestSemver = semver.coerce(lowestSupportedVersion) |
| | if (!lowestSemver) return false |
| | return semver.gtr(lowestSemver.version, semVerRange) |
| | } |
| |
|
| | |
| | |
| | export function isInAllGhes(semverRange: string) { |
| | if (semverRange === '*') return true |
| | const regexGt = /(>|>=){1}\s?(\d+\.\d+)/g |
| | const regexLt = /(<|<=){1}\s?(\d+\.\d+)/g |
| | if (!regexGt.test(semverRange) || regexLt.test(semverRange)) return false |
| | const minVersionMatch = semverRange.match(/\d+\.\d+/g) |
| | const minVersion = minVersionMatch ? semver.coerce(minVersionMatch.pop())?.version : null |
| | const oldestSupportedVersion = semver.coerce(supported[supported.length - 1]) |
| | const oldestSupported = oldestSupportedVersion ? oldestSupportedVersion.version : null |
| | if (!minVersion || !oldestSupported) return false |
| | if (!semverRange.includes('>=') && semver.eq(minVersion, oldestSupported)) return false |
| | return semver.lte(minVersion, oldestSupported) |
| | } |
| |
|
| | |
| | |
| | |
| | export function isFeatureDeprecated(versions: FrontmatterVersions) { |
| | |
| | return ( |
| | !!versions.ghes && |
| | !versions.fpt && |
| | !versions.ghec && |
| | isGhesReleaseDeprecated(supported[supported.length - 1], versions.ghes) |
| | ) |
| | } |
| |
|
| | |
| | |
| | export function isAllVersions(versions: FrontmatterVersions) { |
| | if ( |
| | versions && |
| | versions.ghec === '*' && |
| | versions.fpt === '*' && |
| | versions.ghes && |
| | isInAllGhes(versions.ghes) |
| | ) { |
| | return true |
| | } |
| | return false |
| | } |
| |
|
| | export function getFeatureVersionsObject(feature: string) { |
| | const featureDataDir = process.env.ROOT ? `${process.env.ROOT}/data/features` : 'data/features' |
| | const featureData = getDataDirectory(featureDataDir) as FeatureData |
| | const featureValue = featureData[feature] |
| | if (!featureValue) return {} |
| | return featureData[feature].versions |
| | } |
| |
|