@tokens-studio/sdk
Version:
The official SDK for Tokens Studio
62 lines • 2.59 kB
JavaScript
import { resolveReleaseVersion } from './resolve-release-version.js';
import { getArtifactUrl, getRelease } from '../utils/queries.js';
import { fetchZIP } from './fetch-zip.js';
import { combineFunctionsConfig } from './combine-functions-config.js';
import { tasks } from '@tokens-studio/cli-kit';
import { error } from '../utils/messages.js';
export async function fetchRelease(client, config) {
const { project, org, release } = config;
// fetch sets data from release
const version = await resolveReleaseVersion(release, {
project,
org,
client,
});
let result = { tokens: [], configs: [] };
await tasks({
start: 'Fetching release data',
end: 'Done!',
}, [
{
pending: 'release',
start: 'Getting release',
end: 'Fetched release',
while: async () => {
const { tokensArtifactUrl: tokensPath, configArtifactUrl: configPath, } = await getRelease(client, { project, organization: org, version });
const [tokensUrl, configUrl] = await Promise.all([
tokensPath
? getArtifactUrl(client, {
project,
organization: org,
releaseVersion: version,
artifactPath: tokensPath,
})
: Promise.resolve(null),
configPath
? getArtifactUrl(client, {
project,
organization: org,
releaseVersion: version,
artifactPath: configPath,
})
: Promise.resolve(null),
]);
const [tokenFiles, configFiles] = await Promise.all([tokensUrl, configUrl].map((url) => url ? fetchZIP(url) : Promise.resolve([])));
const configs = await Promise.all((configFiles ?? []).map(async (cfgFile) => {
const combinedContent = await combineFunctionsConfig(JSON.parse(cfgFile.contents));
return {
filename: cfgFile.filename,
contents: combinedContent,
};
}));
result = { tokens: tokenFiles ?? [], configs };
},
onError(e) {
error(e);
throw e;
},
},
]);
return result;
}
//# sourceMappingURL=fetch-release.js.map