import { default as semverMaxSatisfying } from 'semver/ranges/max-satisfying'

const filePrefix = 'sdk-'
const fileExtension = '.js'

export interface VersionsManifest {
    lastUpdate: number,
    files: Array<string>
}

export const getLatestPatch = (version, availableVersions) => {
    const versionToSearch = `~${version}`
    const foundVersion = semverMaxSatisfying(availableVersions, versionToSearch)

    if (!foundVersion) {
        throw new Error('version-not-found')
    }

    return foundVersion 
}

export const getListOfVersionsFromManifest = (manifest: VersionsManifest): Array<string> => {
    return manifest.files.map(filename => filename.slice(filePrefix.length, -fileExtension.length))
}

export const getFilenameForVersion = (version) => {
    return `${filePrefix}${version}.js`
}