aws-delivlib
Version:
A fabulous library for defining continuous pipelines for building, testing and releasing code libraries.
380 lines (365 loc) • 12.8 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// pkg/dist-src/index.js
var dist_src_exports = {};
__export(dist_src_exports, {
VERSION: () => VERSION,
checkToken: () => checkToken,
createDeviceCode: () => createDeviceCode,
deleteAuthorization: () => deleteAuthorization,
deleteToken: () => deleteToken,
exchangeDeviceCode: () => exchangeDeviceCode,
exchangeWebFlowCode: () => exchangeWebFlowCode,
getWebFlowAuthorizationUrl: () => getWebFlowAuthorizationUrl,
refreshToken: () => refreshToken,
resetToken: () => resetToken,
scopeToken: () => scopeToken
});
module.exports = __toCommonJS(dist_src_exports);
// pkg/dist-src/version.js
var VERSION = "2.0.6";
// pkg/dist-src/get-web-flow-authorization-url.js
var import_oauth_authorization_url = require("@octokit/oauth-authorization-url");
var import_request = require("@octokit/request");
// pkg/dist-src/utils.js
var import_request_error = require("@octokit/request-error");
function requestToOAuthBaseUrl(request) {
const endpointDefaults = request.endpoint.DEFAULTS;
return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", "");
}
async function oauthRequest(request, route, parameters) {
const withOAuthParameters = {
baseUrl: requestToOAuthBaseUrl(request),
headers: {
accept: "application/json"
},
...parameters
};
const response = await request(route, withOAuthParameters);
if ("error" in response.data) {
const error = new import_request_error.RequestError(
`${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,
400,
{
request: request.endpoint.merge(
route,
withOAuthParameters
),
headers: response.headers
}
);
error.response = response;
throw error;
}
return response;
}
// pkg/dist-src/get-web-flow-authorization-url.js
function getWebFlowAuthorizationUrl({
request = import_request.request,
...options
}) {
const baseUrl = requestToOAuthBaseUrl(request);
return (0, import_oauth_authorization_url.oauthAuthorizationUrl)({
...options,
baseUrl
});
}
// pkg/dist-src/exchange-web-flow-code.js
var import_request2 = require("@octokit/request");
async function exchangeWebFlowCode(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request2.request;
const response = await oauthRequest(
request,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
client_secret: options.clientSecret,
code: options.code,
redirect_uri: options.redirectUrl
}
);
const authentication = {
clientType: options.clientType,
clientId: options.clientId,
clientSecret: options.clientSecret,
token: response.data.access_token,
scopes: response.data.scope.split(/\s+/).filter(Boolean)
};
if (options.clientType === "github-app") {
if ("refresh_token" in response.data) {
const apiTimeInMs = new Date(response.headers.date).getTime();
authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp(
apiTimeInMs,
response.data.expires_in
), authentication.refreshTokenExpiresAt = toTimestamp(
apiTimeInMs,
response.data.refresh_token_expires_in
);
}
delete authentication.scopes;
}
return { ...response, authentication };
}
function toTimestamp(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
// pkg/dist-src/create-device-code.js
var import_request3 = require("@octokit/request");
async function createDeviceCode(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request3.request;
const parameters = {
client_id: options.clientId
};
if ("scopes" in options && Array.isArray(options.scopes)) {
parameters.scope = options.scopes.join(" ");
}
return oauthRequest(request, "POST /login/device/code", parameters);
}
// pkg/dist-src/exchange-device-code.js
var import_request4 = require("@octokit/request");
async function exchangeDeviceCode(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request4.request;
const response = await oauthRequest(
request,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
device_code: options.code,
grant_type: "urn:ietf:params:oauth:grant-type:device_code"
}
);
const authentication = {
clientType: options.clientType,
clientId: options.clientId,
token: response.data.access_token,
scopes: response.data.scope.split(/\s+/).filter(Boolean)
};
if ("clientSecret" in options) {
authentication.clientSecret = options.clientSecret;
}
if (options.clientType === "github-app") {
if ("refresh_token" in response.data) {
const apiTimeInMs = new Date(response.headers.date).getTime();
authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp2(
apiTimeInMs,
response.data.expires_in
), authentication.refreshTokenExpiresAt = toTimestamp2(
apiTimeInMs,
response.data.refresh_token_expires_in
);
}
delete authentication.scopes;
}
return { ...response, authentication };
}
function toTimestamp2(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
// pkg/dist-src/check-token.js
var import_request5 = require("@octokit/request");
var import_btoa_lite = __toESM(require("btoa-lite"));
async function checkToken(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request5.request;
const response = await request("POST /applications/{client_id}/token", {
headers: {
authorization: `basic ${(0, import_btoa_lite.default)(
`${options.clientId}:${options.clientSecret}`
)}`
},
client_id: options.clientId,
access_token: options.token
});
const authentication = {
clientType: options.clientType,
clientId: options.clientId,
clientSecret: options.clientSecret,
token: options.token,
scopes: response.data.scopes
};
if (response.data.expires_at)
authentication.expiresAt = response.data.expires_at;
if (options.clientType === "github-app") {
delete authentication.scopes;
}
return { ...response, authentication };
}
// pkg/dist-src/refresh-token.js
var import_request6 = require("@octokit/request");
async function refreshToken(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request6.request;
const response = await oauthRequest(
request,
"POST /login/oauth/access_token",
{
client_id: options.clientId,
client_secret: options.clientSecret,
grant_type: "refresh_token",
refresh_token: options.refreshToken
}
);
const apiTimeInMs = new Date(response.headers.date).getTime();
const authentication = {
clientType: "github-app",
clientId: options.clientId,
clientSecret: options.clientSecret,
token: response.data.access_token,
refreshToken: response.data.refresh_token,
expiresAt: toTimestamp3(apiTimeInMs, response.data.expires_in),
refreshTokenExpiresAt: toTimestamp3(
apiTimeInMs,
response.data.refresh_token_expires_in
)
};
return { ...response, authentication };
}
function toTimestamp3(apiTimeInMs, expirationInSeconds) {
return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();
}
// pkg/dist-src/scope-token.js
var import_request7 = require("@octokit/request");
var import_btoa_lite2 = __toESM(require("btoa-lite"));
async function scopeToken(options) {
const {
request: optionsRequest,
clientType,
clientId,
clientSecret,
token,
...requestOptions
} = options;
const request = optionsRequest || /* istanbul ignore next: we always pass a custom request in tests */
import_request7.request;
const response = await request(
"POST /applications/{client_id}/token/scoped",
{
headers: {
authorization: `basic ${(0, import_btoa_lite2.default)(`${clientId}:${clientSecret}`)}`
},
client_id: clientId,
access_token: token,
...requestOptions
}
);
const authentication = Object.assign(
{
clientType,
clientId,
clientSecret,
token: response.data.token
},
response.data.expires_at ? { expiresAt: response.data.expires_at } : {}
);
return { ...response, authentication };
}
// pkg/dist-src/reset-token.js
var import_request8 = require("@octokit/request");
var import_btoa_lite3 = __toESM(require("btoa-lite"));
async function resetToken(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request8.request;
const auth = (0, import_btoa_lite3.default)(`${options.clientId}:${options.clientSecret}`);
const response = await request(
"PATCH /applications/{client_id}/token",
{
headers: {
authorization: `basic ${auth}`
},
client_id: options.clientId,
access_token: options.token
}
);
const authentication = {
clientType: options.clientType,
clientId: options.clientId,
clientSecret: options.clientSecret,
token: response.data.token,
scopes: response.data.scopes
};
if (response.data.expires_at)
authentication.expiresAt = response.data.expires_at;
if (options.clientType === "github-app") {
delete authentication.scopes;
}
return { ...response, authentication };
}
// pkg/dist-src/delete-token.js
var import_request9 = require("@octokit/request");
var import_btoa_lite4 = __toESM(require("btoa-lite"));
async function deleteToken(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request9.request;
const auth = (0, import_btoa_lite4.default)(`${options.clientId}:${options.clientSecret}`);
return request(
"DELETE /applications/{client_id}/token",
{
headers: {
authorization: `basic ${auth}`
},
client_id: options.clientId,
access_token: options.token
}
);
}
// pkg/dist-src/delete-authorization.js
var import_request10 = require("@octokit/request");
var import_btoa_lite5 = __toESM(require("btoa-lite"));
async function deleteAuthorization(options) {
const request = options.request || /* istanbul ignore next: we always pass a custom request in tests */
import_request10.request;
const auth = (0, import_btoa_lite5.default)(`${options.clientId}:${options.clientSecret}`);
return request(
"DELETE /applications/{client_id}/grant",
{
headers: {
authorization: `basic ${auth}`
},
client_id: options.clientId,
access_token: options.token
}
);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
VERSION,
checkToken,
createDeviceCode,
deleteAuthorization,
deleteToken,
exchangeDeviceCode,
exchangeWebFlowCode,
getWebFlowAuthorizationUrl,
refreshToken,
resetToken,
scopeToken
});