private/Get-MrModuleStatusFromVersion.ps1

function Get-MrModuleStatusFromVersion {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$Version,

        [string]$ModuleName
    )

    try {
        # Try to parse the version string using the [semver] type
        $semver = [semver]$Version
    } catch {
        # Return 'Unknown' if the version string is not a valid SemVer
        return 'Unknown'
    }

    # Get the prerelease label (null if not present)
    $label = $semver.PreReleaseLabel

    # Determine if the module is an Az module (Az, AzPreview, or Az.*)
    $isAzModule = $ModuleName -and (
        $ModuleName -eq 'Az' -or
        $ModuleName -eq 'AzPreview' -or
        $ModuleName -like 'Az.*'
    )

    # If a prerelease label exists, classify it
    if ($label) {
        switch -Regex ($label) {
            '^preview[\d\.]*$' {
                # For Az modules version >= 1.0.0 with preview label, return 'FeaturePreview'
                return ($isAzModule -and $semver.Major -ge 1) ? 'FeaturePreview' : 'Preview'
            }
            '^alpha[\d\.]*$' {return 'Alpha'}
            '^beta[\d\.]*$'  {return 'Beta'}
            '^rc[\d\.]*$'    {return 'ReleaseCandidate'}
            default          {return $label}
        }
    }

    # If no prerelease and version is < 1.0.0, consider it a preview
    if ($semver.Major -eq 0) {
        return 'Preview'
    }

    # Otherwise, it's a general availability (GA) release
    return 'GA'
}