async function loadLicense()

in desktop/scripts/lca/generate-third-party.ts [123:146]


async function loadLicense(dependency: Dependency, anonymous = false):
    Promise<License> {
    const { repoUrl = null } = dependency;
    const repoName = getRepoName(repoUrl);
    const licenseUrl = `https://api.github.com/repos/${repoName}/license`;
    const headers: HeadersInit = anonymous ? {} :
        { Authorization: `token ${process.env.GH_TOKEN}` };

    return fetch(licenseUrl, { headers }).then(async (res) => {
        /** Will look up default license if cannot find a license */
        if (!anonymous && res.status === 403) {
            console.warn(`Access denied, retrying request anonymously. Url: ${licenseUrl}`);
            return loadLicense(dependency, anonymous = true);
        } else if (res.status >= 300 && res.status != 404) {
            throw new Error(`Response status ${res.status} ${res.statusText} with url: ${licenseUrl}`);
        } else if (res.status === 404) {
            console.warn(`No license found for ${repoName}. Using default license ${dependency.licenseType} instead.`);
        }
        return await res.json();
    }).catch((error) => {
        console.error(`Error loading license for ${repoName}`, error);
        process.exit(1);
    });
}