UNPKG

@tokens-studio/sdk

Version:
34 lines 1.63 kB
import semver from 'semver'; import { getReleaseVersions } from '../utils/queries.js'; import { fetchPaginatedData } from '../utils/fetch-paginated-data.js'; async function getAllVersions({ client, project, org }) { const data = await fetchPaginatedData(client, getReleaseVersions, { project, organization: org }); return data.map((d) => d.version); } export async function resolveReleaseVersion(release, { project, org, client }) { const coerced = semver.coerce(release)?.raw; if (coerced === release) { // fetch only 1 release return release; } // TODO: support more dist tags than 'latest', once we actually have dist tags if (coerced === undefined && release !== 'latest') { // throw, because not a valid release string throw new Error(`Release version: ${release} is not a valid SemVer version.`); } const versions = await getAllVersions({ project, org, client }); if (versions.length === 0) { throw new Error('No release versions were found for your project. If you just want the latest (unreleased) tokens, specify an empty string in your CLI config "release" field.'); } if (release === 'latest') { // get latest return semver.rsort(versions)[0]; } // fetch all releases versions and find maxSatisfying or latest const maxVersion = semver.maxSatisfying(versions, release); if (maxVersion === null) { throw new Error(`No version matches your range ${release}. Available versions: [${versions.join(', ')}]`); } return maxVersion; } //# sourceMappingURL=resolve-release-version.js.map