56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
|
const REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
|
||
|
const REGEX_IS_INSTALLATION = /^ghs_/;
|
||
|
const REGEX_IS_USER_TO_SERVER = /^ghu_/;
|
||
|
async function auth(token) {
|
||
|
const isApp = token.split(/\./).length === 3;
|
||
|
const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) ||
|
||
|
REGEX_IS_INSTALLATION.test(token);
|
||
|
const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
|
||
|
const tokenType = isApp
|
||
|
? "app"
|
||
|
: isInstallation
|
||
|
? "installation"
|
||
|
: isUserToServer
|
||
|
? "user-to-server"
|
||
|
: "oauth";
|
||
|
return {
|
||
|
type: "token",
|
||
|
token: token,
|
||
|
tokenType,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Prefix token for usage in the Authorization header
|
||
|
*
|
||
|
* @param token OAuth token or JSON Web Token
|
||
|
*/
|
||
|
function withAuthorizationPrefix(token) {
|
||
|
if (token.split(/\./).length === 3) {
|
||
|
return `bearer ${token}`;
|
||
|
}
|
||
|
return `token ${token}`;
|
||
|
}
|
||
|
|
||
|
async function hook(token, request, route, parameters) {
|
||
|
const endpoint = request.endpoint.merge(route, parameters);
|
||
|
endpoint.headers.authorization = withAuthorizationPrefix(token);
|
||
|
return request(endpoint);
|
||
|
}
|
||
|
|
||
|
const createTokenAuth = function createTokenAuth(token) {
|
||
|
if (!token) {
|
||
|
throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
|
||
|
}
|
||
|
if (typeof token !== "string") {
|
||
|
throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
|
||
|
}
|
||
|
token = token.replace(/^(token|bearer) +/i, "");
|
||
|
return Object.assign(auth.bind(null, token), {
|
||
|
hook: hook.bind(null, token),
|
||
|
});
|
||
|
};
|
||
|
|
||
|
export { createTokenAuth };
|
||
|
//# sourceMappingURL=index.js.map
|