renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
79 lines (78 loc) • 3.36 kB
JavaScript
import { get, set } from "./cache/memory/index.js";
import { GlobalConfig } from "../config/global.js";
import { logger } from "../logger/index.js";
import { find } from "./host-rules.js";
import { GithubReleaseAttachmentsDatasource } from "../modules/datasource/github-release-attachments/index.js";
import { GithubReleasesDatasource } from "../modules/datasource/github-releases/index.js";
import { GithubTagsDatasource } from "../modules/datasource/github-tags/index.js";
//#region lib/util/check-token.ts
function checkGithubToken(packageFiles = {}) {
const { token } = find({
hostType: "github",
url: "https://api.github.com"
});
if (token) {
logger.trace("GitHub token is found");
return;
}
if (!GlobalConfig.get("githubTokenWarn")) {
logger.trace("GitHub token warning is disabled");
return;
}
const githubDeps = [];
const deps = Object.values(packageFiles).flat().map((file) => file.deps).flat();
for (const dep of deps) if (!dep.skipReason && (dep.datasource === GithubTagsDatasource.id || dep.datasource === GithubReleasesDatasource.id || dep.datasource === GithubReleaseAttachmentsDatasource.id)) {
dep.skipReason = "github-token-required";
// v8 ignore else -- TODO: add test #40625
if (dep.depName) githubDeps.push(dep.depName);
}
if (githubDeps.length > 0) {
// v8 ignore else -- TODO: add test #40625
if (!get("github-token-required-warning-logged")) {
const withoutDuplicates = [...new Set(githubDeps)];
logger.warn({ githubDeps: withoutDuplicates }, `GitHub token is required for some dependencies`);
set("github-token-required-warning-logged", true);
}
}
}
function isGithubPersonalAccessToken(token) {
return token.startsWith("ghp_");
}
function isGithubServerToServerToken(token) {
return token.startsWith("ghs_");
}
function isGithubFineGrainedPersonalAccessToken(token) {
return token.startsWith("github_pat_");
}
function findGithubToken(searchResult) {
return searchResult?.token?.replace("x-access-token:", "");
}
function takePersonalAccessTokenIfPossible(githubToken, gitTagsGithubToken) {
if (gitTagsGithubToken && isGithubPersonalAccessToken(gitTagsGithubToken)) {
logger.debug("Using GitHub Personal Access Token (git-tags)");
return gitTagsGithubToken;
}
if (githubToken && isGithubPersonalAccessToken(githubToken)) {
logger.debug("Using GitHub Personal Access Token");
return githubToken;
}
if (gitTagsGithubToken && isGithubFineGrainedPersonalAccessToken(gitTagsGithubToken)) {
logger.debug("Using GitHub Fine-grained Personal Access Token (git-tags)");
return gitTagsGithubToken;
}
if (githubToken && isGithubFineGrainedPersonalAccessToken(githubToken)) {
logger.debug("Using GitHub Fine-grained Personal Access Token");
return githubToken;
}
if (gitTagsGithubToken) {
if (isGithubServerToServerToken(gitTagsGithubToken)) logger.debug("Using GitHub Server-to-Server token (git-tags)");
else logger.debug("Using unknown GitHub token type (git-tags)");
return gitTagsGithubToken;
}
if (githubToken) if (isGithubServerToServerToken(githubToken)) logger.debug("Using GitHub Server-to-Server token");
else logger.debug("Using unknown GitHub token type");
return githubToken;
}
//#endregion
export { checkGithubToken, findGithubToken, isGithubFineGrainedPersonalAccessToken, takePersonalAccessTokenIfPossible };
//# sourceMappingURL=check-token.js.map