@tokens-studio/sdk
Version:
The official SDK for Tokens Studio
34 lines • 1.63 kB
JavaScript
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