@cloudsnorkel/cdk-github-runners 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5753,7 +5753,7 @@ var require_lib2 = __commonJS({
5753
5753
  var trail = encoder.end();
5754
5754
  return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res;
5755
5755
  };
5756
- iconv.decode = function decode2(buf, encoding, options) {
5756
+ iconv.decode = function decode(buf, encoding, options) {
5757
5757
  if (typeof buf === "string") {
5758
5758
  if (!iconv.skipDecodeWarning) {
5759
5759
  console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding");
@@ -6795,16 +6795,16 @@ var require_lib3 = __commonJS({
6795
6795
  const options = getNodeRequestOptions(request);
6796
6796
  const send = (options.protocol === "https:" ? https : http).request;
6797
6797
  const signal = request.signal;
6798
- let response = null;
6798
+ let response2 = null;
6799
6799
  const abort = function abort2() {
6800
6800
  let error = new AbortError("The user aborted a request.");
6801
6801
  reject(error);
6802
6802
  if (request.body && request.body instanceof Stream.Readable) {
6803
6803
  request.body.destroy(error);
6804
6804
  }
6805
- if (!response || !response.body)
6805
+ if (!response2 || !response2.body)
6806
6806
  return;
6807
- response.body.emit("error", error);
6807
+ response2.body.emit("error", error);
6808
6808
  };
6809
6809
  if (signal && signal.aborted) {
6810
6810
  abort();
@@ -6923,8 +6923,8 @@ var require_lib3 = __commonJS({
6923
6923
  };
6924
6924
  const codings = headers.get("Content-Encoding");
6925
6925
  if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) {
6926
- response = new Response(body, response_options);
6927
- resolve(response);
6926
+ response2 = new Response(body, response_options);
6927
+ resolve(response2);
6928
6928
  return;
6929
6929
  }
6930
6930
  const zlibOptions = {
@@ -6933,8 +6933,8 @@ var require_lib3 = __commonJS({
6933
6933
  };
6934
6934
  if (codings == "gzip" || codings == "x-gzip") {
6935
6935
  body = body.pipe(zlib.createGunzip(zlibOptions));
6936
- response = new Response(body, response_options);
6937
- resolve(response);
6936
+ response2 = new Response(body, response_options);
6937
+ resolve(response2);
6938
6938
  return;
6939
6939
  }
6940
6940
  if (codings == "deflate" || codings == "x-deflate") {
@@ -6945,19 +6945,19 @@ var require_lib3 = __commonJS({
6945
6945
  } else {
6946
6946
  body = body.pipe(zlib.createInflateRaw());
6947
6947
  }
6948
- response = new Response(body, response_options);
6949
- resolve(response);
6948
+ response2 = new Response(body, response_options);
6949
+ resolve(response2);
6950
6950
  });
6951
6951
  return;
6952
6952
  }
6953
6953
  if (codings == "br" && typeof zlib.createBrotliDecompress === "function") {
6954
6954
  body = body.pipe(zlib.createBrotliDecompress());
6955
- response = new Response(body, response_options);
6956
- resolve(response);
6955
+ response2 = new Response(body, response_options);
6956
+ resolve(response2);
6957
6957
  return;
6958
6958
  }
6959
- response = new Response(body, response_options);
6960
- resolve(response);
6959
+ response2 = new Response(body, response_options);
6960
+ resolve(response2);
6961
6961
  });
6962
6962
  writeToStream(req, request);
6963
6963
  });
@@ -7138,8 +7138,8 @@ var require_dist_node5 = __commonJS({
7138
7138
  var nodeFetch = _interopDefault(require_lib3());
7139
7139
  var requestError = require_dist_node4();
7140
7140
  var VERSION = "5.6.3";
7141
- function getBufferResponse(response) {
7142
- return response.arrayBuffer();
7141
+ function getBufferResponse(response2) {
7142
+ return response2.arrayBuffer();
7143
7143
  }
7144
7144
  function fetchWrapper(requestOptions) {
7145
7145
  const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
@@ -7155,10 +7155,10 @@ var require_dist_node5 = __commonJS({
7155
7155
  body: requestOptions.body,
7156
7156
  headers: requestOptions.headers,
7157
7157
  redirect: requestOptions.redirect
7158
- }, requestOptions.request)).then(async (response) => {
7159
- url = response.url;
7160
- status = response.status;
7161
- for (const keyAndValue of response.headers) {
7158
+ }, requestOptions.request)).then(async (response2) => {
7159
+ url = response2.url;
7160
+ status = response2.status;
7161
+ for (const keyAndValue of response2.headers) {
7162
7162
  headers[keyAndValue[0]] = keyAndValue[1];
7163
7163
  }
7164
7164
  if ("deprecation" in headers) {
@@ -7173,7 +7173,7 @@ var require_dist_node5 = __commonJS({
7173
7173
  if (status < 400) {
7174
7174
  return;
7175
7175
  }
7176
- throw new requestError.RequestError(response.statusText, status, {
7176
+ throw new requestError.RequestError(response2.statusText, status, {
7177
7177
  response: {
7178
7178
  url,
7179
7179
  status,
@@ -7189,13 +7189,13 @@ var require_dist_node5 = __commonJS({
7189
7189
  url,
7190
7190
  status,
7191
7191
  headers,
7192
- data: await getResponseData(response)
7192
+ data: await getResponseData(response2)
7193
7193
  },
7194
7194
  request: requestOptions
7195
7195
  });
7196
7196
  }
7197
7197
  if (status >= 400) {
7198
- const data = await getResponseData(response);
7198
+ const data = await getResponseData(response2);
7199
7199
  const error = new requestError.RequestError(toErrorMessage(data), status, {
7200
7200
  response: {
7201
7201
  url,
@@ -7207,7 +7207,7 @@ var require_dist_node5 = __commonJS({
7207
7207
  });
7208
7208
  throw error;
7209
7209
  }
7210
- return getResponseData(response);
7210
+ return getResponseData(response2);
7211
7211
  }).then((data) => {
7212
7212
  return {
7213
7213
  status,
@@ -7223,15 +7223,15 @@ var require_dist_node5 = __commonJS({
7223
7223
  });
7224
7224
  });
7225
7225
  }
7226
- async function getResponseData(response) {
7227
- const contentType = response.headers.get("content-type");
7226
+ async function getResponseData(response2) {
7227
+ const contentType = response2.headers.get("content-type");
7228
7228
  if (/application\/json/.test(contentType)) {
7229
- return response.json();
7229
+ return response2.json();
7230
7230
  }
7231
7231
  if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
7232
- return response.text();
7232
+ return response2.text();
7233
7233
  }
7234
- return getBufferResponse(response);
7234
+ return getBufferResponse(response2);
7235
7235
  }
7236
7236
  function toErrorMessage(data) {
7237
7237
  if (typeof data === "string")
@@ -7287,14 +7287,14 @@ var require_dist_node6 = __commonJS({
7287
7287
  ` + data.errors.map((e) => ` - ${e.message}`).join("\n");
7288
7288
  }
7289
7289
  var GraphqlResponseError = class extends Error {
7290
- constructor(request2, headers, response) {
7291
- super(_buildMessageForResponseErrors(response));
7290
+ constructor(request2, headers, response2) {
7291
+ super(_buildMessageForResponseErrors(response2));
7292
7292
  this.request = request2;
7293
7293
  this.headers = headers;
7294
- this.response = response;
7294
+ this.response = response2;
7295
7295
  this.name = "GraphqlResponseError";
7296
- this.errors = response.errors;
7297
- this.data = response.data;
7296
+ this.errors = response2.errors;
7297
+ this.data = response2.data;
7298
7298
  if (Error.captureStackTrace) {
7299
7299
  Error.captureStackTrace(this, this.constructor);
7300
7300
  }
@@ -7332,15 +7332,15 @@ var require_dist_node6 = __commonJS({
7332
7332
  if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
7333
7333
  requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
7334
7334
  }
7335
- return request2(requestOptions).then((response) => {
7336
- if (response.data.errors) {
7335
+ return request2(requestOptions).then((response2) => {
7336
+ if (response2.data.errors) {
7337
7337
  const headers = {};
7338
- for (const key of Object.keys(response.headers)) {
7339
- headers[key] = response.headers[key];
7338
+ for (const key of Object.keys(response2.headers)) {
7339
+ headers[key] = response2.headers[key];
7340
7340
  }
7341
- throw new GraphqlResponseError(requestOptions, headers, response.data);
7341
+ throw new GraphqlResponseError(requestOptions, headers, response2.data);
7342
7342
  }
7343
- return response.data.data;
7343
+ return response2.data.data;
7344
7344
  });
7345
7345
  }
7346
7346
  function withDefaults(request$1, newDefaults) {
@@ -7566,9 +7566,9 @@ var require_dist_node9 = __commonJS({
7566
7566
  const start = Date.now();
7567
7567
  const requestOptions = octokit.request.endpoint.parse(options);
7568
7568
  const path = requestOptions.url.replace(options.baseUrl, "");
7569
- return request(options).then((response) => {
7570
- octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
7571
- return response;
7569
+ return request(options).then((response2) => {
7570
+ octokit.log.info(`${requestOptions.method} ${path} - ${response2.status} in ${Date.now() - start}ms`);
7571
+ return response2;
7572
7572
  }).catch((error) => {
7573
7573
  octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
7574
7574
  throw error;
@@ -7585,7 +7585,7 @@ var require_dist_node10 = __commonJS({
7585
7585
  "node_modules/@octokit/plugin-paginate-rest/dist-node/index.js"(exports2) {
7586
7586
  "use strict";
7587
7587
  Object.defineProperty(exports2, "__esModule", { value: true });
7588
- var VERSION = "2.20.0";
7588
+ var VERSION = "2.21.3";
7589
7589
  function ownKeys(object, enumerableOnly) {
7590
7590
  var keys = Object.keys(object);
7591
7591
  if (Object.getOwnPropertySymbols) {
@@ -7598,7 +7598,7 @@ var require_dist_node10 = __commonJS({
7598
7598
  }
7599
7599
  function _objectSpread2(target) {
7600
7600
  for (var i = 1; i < arguments.length; i++) {
7601
- var source = arguments[i] != null ? arguments[i] : {};
7601
+ var source = null != arguments[i] ? arguments[i] : {};
7602
7602
  i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
7603
7603
  _defineProperty(target, key, source[key]);
7604
7604
  }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
@@ -7620,32 +7620,32 @@ var require_dist_node10 = __commonJS({
7620
7620
  }
7621
7621
  return obj;
7622
7622
  }
7623
- function normalizePaginatedListResponse(response) {
7624
- if (!response.data) {
7625
- return _objectSpread2(_objectSpread2({}, response), {}, {
7623
+ function normalizePaginatedListResponse(response2) {
7624
+ if (!response2.data) {
7625
+ return _objectSpread2(_objectSpread2({}, response2), {}, {
7626
7626
  data: []
7627
7627
  });
7628
7628
  }
7629
- const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
7629
+ const responseNeedsNormalization = "total_count" in response2.data && !("url" in response2.data);
7630
7630
  if (!responseNeedsNormalization)
7631
- return response;
7632
- const incompleteResults = response.data.incomplete_results;
7633
- const repositorySelection = response.data.repository_selection;
7634
- const totalCount = response.data.total_count;
7635
- delete response.data.incomplete_results;
7636
- delete response.data.repository_selection;
7637
- delete response.data.total_count;
7638
- const namespaceKey = Object.keys(response.data)[0];
7639
- const data = response.data[namespaceKey];
7640
- response.data = data;
7631
+ return response2;
7632
+ const incompleteResults = response2.data.incomplete_results;
7633
+ const repositorySelection = response2.data.repository_selection;
7634
+ const totalCount = response2.data.total_count;
7635
+ delete response2.data.incomplete_results;
7636
+ delete response2.data.repository_selection;
7637
+ delete response2.data.total_count;
7638
+ const namespaceKey = Object.keys(response2.data)[0];
7639
+ const data = response2.data[namespaceKey];
7640
+ response2.data = data;
7641
7641
  if (typeof incompleteResults !== "undefined") {
7642
- response.data.incomplete_results = incompleteResults;
7642
+ response2.data.incomplete_results = incompleteResults;
7643
7643
  }
7644
7644
  if (typeof repositorySelection !== "undefined") {
7645
- response.data.repository_selection = repositorySelection;
7645
+ response2.data.repository_selection = repositorySelection;
7646
7646
  }
7647
- response.data.total_count = totalCount;
7648
- return response;
7647
+ response2.data.total_count = totalCount;
7648
+ return response2;
7649
7649
  }
7650
7650
  function iterator(octokit, route, parameters) {
7651
7651
  const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
@@ -7661,12 +7661,12 @@ var require_dist_node10 = __commonJS({
7661
7661
  done: true
7662
7662
  };
7663
7663
  try {
7664
- const response = await requestMethod({
7664
+ const response2 = await requestMethod({
7665
7665
  method,
7666
7666
  url,
7667
7667
  headers
7668
7668
  });
7669
- const normalizedResponse = normalizePaginatedListResponse(response);
7669
+ const normalizedResponse = normalizePaginatedListResponse(response2);
7670
7670
  url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
7671
7671
  return {
7672
7672
  value: normalizedResponse
@@ -7713,7 +7713,7 @@ var require_dist_node10 = __commonJS({
7713
7713
  var composePaginateRest = Object.assign(paginate, {
7714
7714
  iterator
7715
7715
  });
7716
- var paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/actions/runners/downloads", "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /organizations/{organization_id}/custom_roles", "GET /orgs/{org_id}/codespaces", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/runners/downloads", "GET /orgs/{org}/actions/runners/{runner_id}/labels", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/external-groups", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runners/downloads", "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/autolinks", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/tags/protection", "GET /repos/{owner}/{repo}/teams", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /scim/v2/enterprises/{enterprise}/Groups", "GET /scim/v2/enterprises/{enterprise}/Users", "GET /scim/v2/organizations/{org}/Users", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/team-sync/group-mappings", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/codespaces/secrets/{secret_name}/repositories", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
7716
+ var paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
7717
7717
  function isPaginatingEndpoint(arg) {
7718
7718
  if (typeof arg === "string") {
7719
7719
  return paginatingEndpoints.includes(arg);
@@ -7877,7 +7877,6 @@ var require_dist_node11 = __commonJS({
7877
7877
  removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
7878
7878
  removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
7879
7879
  reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
7880
- setActionsOidcCustomIssuerPolicyForEnterprise: ["PUT /enterprises/{enterprise}/actions/oidc/customization/issuer"],
7881
7880
  setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
7882
7881
  setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
7883
7882
  setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
@@ -8036,7 +8035,11 @@ var require_dist_node11 = __commonJS({
8036
8035
  getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
8037
8036
  listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
8038
8037
  listForAuthenticatedUser: ["GET /user/codespaces"],
8039
- listInOrganization: ["GET /orgs/{org_id}/codespaces"],
8038
+ listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
8039
+ renamedParameters: {
8040
+ org_id: "org"
8041
+ }
8042
+ }],
8040
8043
  listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
8041
8044
  listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
8042
8045
  listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
@@ -8729,7 +8732,7 @@ var require_dist_node11 = __commonJS({
8729
8732
  updateAuthenticated: ["PATCH /user"]
8730
8733
  }
8731
8734
  };
8732
- var VERSION = "5.16.0";
8735
+ var VERSION = "5.16.2";
8733
8736
  function endpointsToMethods(octokit, endpointsMap) {
8734
8737
  const newMethods = {};
8735
8738
  for (const [scope, endpoints] of Object.entries(endpointsMap)) {
@@ -8826,7 +8829,7 @@ var require_dist_node12 = __commonJS({
8826
8829
 
8827
8830
  // src/lambdas/setup/index.ts
8828
8831
  var crypto = __toESM(require("crypto"));
8829
- var querystring = __toESM(require("querystring"));
8832
+ var fs = __toESM(require("fs"));
8830
8833
  var import_rest = __toESM(require_dist_node12());
8831
8834
 
8832
8835
  // src/lambdas/helpers.ts
@@ -8861,152 +8864,46 @@ function baseUrlFromDomain(domain) {
8861
8864
  }
8862
8865
 
8863
8866
  // src/lambdas/setup/index.ts
8864
- function getHtml(manifest, token, domain) {
8865
- return `<!DOCTYPE html>
8866
- <html lang="en">
8867
- <head>
8868
- <meta charset="utf-8"/>
8869
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
8870
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
8871
- <title>Setup GitHub Runners</title>
8872
- <body>
8873
- <h1>Setup GitHub Runners</h1>
8874
- <p>You can choose between creating a new app that will provide authentication for specific repositories, or a personal access token that will provide access to all repositories available to you. Apps are easier to set up and provide more fine-grained access control.</p>
8875
- <form action="domain?token=${token}" method="post">
8876
- <fieldset>
8877
- <legend>GitHub Domain</legend>
8878
- <p>When using a GitHub Enterprise Server, change this to your own domain like github.mycompany.com.</p>
8879
- <label for="domain">Domain: </label>
8880
- <input id="domain" name="domain" value="${domain}">
8881
- <input type="submit" value="Update">
8882
- </fieldset>
8883
- </form>
8884
-
8885
- <h2>Using App</h2>
8886
- <p>Choose whether you want a personal app, an organization app, or an existing app created according to the instructions in <a href="https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md">SETUP_GITHUB.md</a>. The scope of the app should match the scope of the repositories you need to provide runners for.</p>
8887
- <form action="https://${domain}/settings/apps/new?state=${token}" method="post" id="appform">
8888
- <fieldset>
8889
- <legend>New Personal App</legend>
8890
- <input type="hidden" name="manifest" id="manifest">
8891
- <input type="submit" value="Create">
8892
- </fieldset>
8893
- </form>
8894
-
8895
- <br>
8896
- <form action="https://${domain}/organizations/ORGANIZATION/settings/apps/new?state=${token}" method="post" id="orgappform">
8897
- <fieldset>
8898
- <legend>New Organization App</legend>
8899
- <label for="org">Organization slug:</label>
8900
- <input id="org" name="org" value="ORGANIZATION"><br><br>
8901
- <input type="hidden" name="manifest" id="manifestorg">
8902
- <input type="submit" value="Create">
8903
- </fieldset>
8904
- </form>
8905
-
8906
- <br>
8907
- <form action="app?token=${token}" method="post">
8908
- <fieldset>
8909
- <p>Existing apps must have <code>actions</code> and <code>administration</code> write permissions. Don't forget to set up the webhook and its secret as described in <a href="https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md">SETUP_GITHUB.md</a>.</p>
8910
- <legend>Existing App</legend>
8911
- <input type="hidden" name="domain" id="existingdomain" value="${domain}">
8912
- <label for="appid">App id:</label>
8913
- <input type="number" id="appid" name="appid"><br><br>
8914
- <label for="pk">Private key:</label>
8915
- <textarea id="pk" name="pk"></textarea><br><br>
8916
- <input type="submit" value="Set">
8917
- </fieldset>
8918
- </form>
8919
-
8920
- <h2>Using Personal Access Token</h2>
8921
- <p>The personal token must have the <code>repo</code> scope enable. Don't forget to also create a webhook as described in <a href="https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md">SETUP_GITHUB.md</a>.</p>
8922
- <form action="pat?token=${token}" method="post">
8923
- <fieldset>
8924
- <label for="pat">Token:</label>
8925
- <input type="hidden" name="domain" id="patdomain" value="${domain}">
8926
- <input type="password" id="pat" name="pat">
8927
- <input type="submit" value="Set">
8928
- </fieldset>
8929
- </form>
8930
-
8931
- <script>
8932
- document.getElementById("manifest").value = JSON.stringify(${manifest});
8933
- document.getElementById("manifestorg").value = JSON.stringify(${manifest});
8934
- function setDomainAndOrg() {
8935
- const domain = document.getElementById("domain").value;
8936
- const org = document.getElementById("org").value;
8937
- document.getElementById("appform").action = \`https://\${domain}/settings/apps/new?state=${token}\`;
8938
- document.getElementById("orgappform").action = \`https://\${domain}/organizations/\${org}/settings/apps/new?state=${token}\`;
8939
- document.getElementById("existingdomain").value = domain;
8940
- document.getElementById("patdomain").value = domain;
8941
- }
8942
- document.getElementById("domain").onchange = setDomainAndOrg;
8943
- document.getElementById("org").onchange = setDomainAndOrg;
8944
- <\/script>
8945
- </body>
8946
- </html>
8947
- `;
8867
+ var nonce = crypto.randomBytes(64).toString("hex");
8868
+ function getHtml(baseUrl, token, domain) {
8869
+ return fs.readFileSync("index.html", "utf-8").replace(/INSERT_WEBHOOK_URL_HERE/g, process.env.WEBHOOK_URL).replace(/INSERT_BASE_URL_HERE/g, baseUrl).replace(/INSERT_TOKEN_HERE/g, token).replace(/INSERT_SECRET_ARN_HERE/g, process.env.SETUP_SECRET_ARN).replace(/INSERT_DOMAIN_HERE/g, domain).replace(/<script/g, `<script nonce="${nonce}"`).replace(/<style/g, `<style nonce="${nonce}"`);
8948
8870
  }
8949
- function getManifest(baseUrl) {
8950
- return JSON.stringify({
8951
- url: "https://github.com/CloudSnorkel/cdk-github-runners",
8952
- hook_attributes: {
8953
- url: process.env.WEBHOOK_URL
8954
- },
8955
- redirect_url: `${baseUrl}/complete-new-app`,
8956
- public: false,
8957
- default_permissions: {
8958
- actions: "write",
8959
- administration: "write"
8871
+ function response(code, body) {
8872
+ return {
8873
+ statusCode: code,
8874
+ headers: {
8875
+ "Content-Type": "text/html",
8876
+ "Content-Security-Policy": `default-src 'nonce-${nonce}'; img-src data:; connect-src 'self'; form-action https:; frame-ancestors 'none'`
8960
8877
  },
8961
- default_events: [
8962
- "workflow_job"
8963
- ]
8964
- });
8878
+ body
8879
+ };
8965
8880
  }
8966
8881
  async function handleRoot(event, setupToken) {
8967
8882
  const setupBaseUrl = `https://${event.requestContext.domainName}`;
8968
8883
  const githubSecrets = await getSecretJsonValue(process.env.GITHUB_SECRET_ARN);
8969
- return {
8970
- statusCode: 200,
8971
- headers: {
8972
- "Content-Type": "text/html"
8973
- },
8974
- body: getHtml(getManifest(setupBaseUrl), setupToken, githubSecrets.domain)
8975
- };
8884
+ return response(200, getHtml(setupBaseUrl, setupToken, githubSecrets.domain));
8976
8885
  }
8977
8886
  function decodeBody(event) {
8978
8887
  let body = event.body;
8979
8888
  if (event.isBase64Encoded) {
8980
8889
  body = Buffer.from(body, "base64").toString("utf-8");
8981
8890
  }
8982
- return querystring.decode(body);
8891
+ return JSON.parse(body);
8983
8892
  }
8984
- async function handleDomain(event, setupToken) {
8893
+ async function handleDomain(event) {
8985
8894
  const body = decodeBody(event);
8986
8895
  if (!body.domain) {
8987
- return {
8988
- statusCode: 400,
8989
- headers: {
8990
- "Content-Type": "text/html"
8991
- },
8992
- body: "Invalid domain"
8993
- };
8896
+ return response(400, "Invalid domain");
8994
8897
  }
8995
8898
  const githubSecrets = await getSecretJsonValue(process.env.GITHUB_SECRET_ARN);
8996
8899
  githubSecrets.domain = body.domain;
8997
8900
  await updateSecretValue(process.env.GITHUB_SECRET_ARN, JSON.stringify(githubSecrets));
8998
- return handleRoot(event, setupToken);
8901
+ return response(200, "Domain set");
8999
8902
  }
9000
8903
  async function handlePat(event) {
9001
8904
  const body = decodeBody(event);
9002
8905
  if (!body.pat || !body.domain) {
9003
- return {
9004
- statusCode: 400,
9005
- headers: {
9006
- "Content-Type": "text/html"
9007
- },
9008
- body: "Invalid personal access token"
9009
- };
8906
+ return response(400, "Invalid personal access token");
9010
8907
  }
9011
8908
  await updateSecretValue(process.env.GITHUB_SECRET_ARN, JSON.stringify({
9012
8909
  domain: body.domain,
@@ -9014,24 +8911,12 @@ async function handlePat(event) {
9014
8911
  personalAuthToken: body.pat
9015
8912
  }));
9016
8913
  await updateSecretValue(process.env.SETUP_SECRET_ARN, JSON.stringify({ token: "" }));
9017
- return {
9018
- statusCode: 200,
9019
- headers: {
9020
- "Content-Type": "text/html"
9021
- },
9022
- body: "Personal access token set"
9023
- };
8914
+ return response(200, "Personal access token set");
9024
8915
  }
9025
8916
  async function handleNewApp(event) {
9026
8917
  const code = event.queryStringParameters.code;
9027
8918
  if (!code) {
9028
- return {
9029
- statusCode: 400,
9030
- headers: {
9031
- "Content-Type": "text/html"
9032
- },
9033
- body: "Invalid code"
9034
- };
8919
+ return response(400, "Invalid code");
9035
8920
  }
9036
8921
  const githubSecrets = await getSecretJsonValue(process.env.GITHUB_SECRET_ARN);
9037
8922
  const baseUrl = baseUrlFromDomain(githubSecrets.domain);
@@ -9046,24 +8931,12 @@ async function handleNewApp(event) {
9046
8931
  webhookSecret: newApp.data.webhook_secret
9047
8932
  }));
9048
8933
  await updateSecretValue(process.env.SETUP_SECRET_ARN, JSON.stringify({ token: "" }));
9049
- return {
9050
- statusCode: 200,
9051
- headers: {
9052
- "Content-Type": "text/html"
9053
- },
9054
- body: `New app set. <a href="${newApp.data.html_url}/installations/new">Install it</a> for your repositories.`
9055
- };
8934
+ return response(200, `New app set. <a href="${newApp.data.html_url}/installations/new">Install it</a> for your repositories.`);
9056
8935
  }
9057
8936
  async function handleExistingApp(event) {
9058
8937
  const body = decodeBody(event);
9059
8938
  if (!body.appid || !body.pk || !body.domain) {
9060
- return {
9061
- statusCode: 400,
9062
- headers: {
9063
- "Content-Type": "text/html"
9064
- },
9065
- body: "Missing fields"
9066
- };
8939
+ return response(400, "Missing fields");
9067
8940
  }
9068
8941
  await updateSecretValue(process.env.GITHUB_SECRET_ARN, JSON.stringify({
9069
8942
  domain: body.domain,
@@ -9072,13 +8945,7 @@ async function handleExistingApp(event) {
9072
8945
  }));
9073
8946
  await updateSecretValue(process.env.GITHUB_PRIVATE_KEY_SECRET_ARN, body.pk);
9074
8947
  await updateSecretValue(process.env.SETUP_SECRET_ARN, JSON.stringify({ token: "" }));
9075
- return {
9076
- statusCode: 200,
9077
- headers: {
9078
- "Content-Type": "text/html"
9079
- },
9080
- body: "Existing app set. Don't forget to set up the webhook."
9081
- };
8948
+ return response(200, "Existing app set. Don't forget to set up the webhook.");
9082
8949
  }
9083
8950
  exports.handler = async function(event) {
9084
8951
  if (!process.env.WEBHOOK_URL) {
@@ -9086,38 +8953,20 @@ exports.handler = async function(event) {
9086
8953
  }
9087
8954
  const setupToken = (await getSecretJsonValue(process.env.SETUP_SECRET_ARN)).token;
9088
8955
  if (!setupToken) {
9089
- return {
9090
- statusCode: 200,
9091
- headers: {
9092
- "Content-Type": "text/html"
9093
- },
9094
- body: "Setup already complete. Put a new token in the setup secret if you want to redo it."
9095
- };
8956
+ return response(200, "Setup already complete. Put a new token in the setup secret if you want to redo it.");
9096
8957
  }
9097
8958
  if (!event.queryStringParameters) {
9098
- return {
9099
- statusCode: 403,
9100
- headers: {
9101
- "Content-Type": "text/html"
9102
- },
9103
- body: "Wrong setup token."
9104
- };
8959
+ return response(403, "Wrong setup token.");
9105
8960
  }
9106
- const urlToken = event.queryStringParameters.token || event.queryStringParameters.state;
8961
+ const urlToken = event.queryStringParameters.token || event.queryStringParameters.state || "";
9107
8962
  if (urlToken.length != setupToken.length || !crypto.timingSafeEqual(Buffer.from(urlToken, "utf-8"), Buffer.from(setupToken, "utf-8"))) {
9108
- return {
9109
- statusCode: 403,
9110
- headers: {
9111
- "Content-Type": "text/html"
9112
- },
9113
- body: "Wrong setup token."
9114
- };
8963
+ return response(403, "Wrong setup token.");
9115
8964
  }
9116
8965
  try {
9117
8966
  if (event.requestContext.http.path == "/") {
9118
8967
  return await handleRoot(event, setupToken);
9119
8968
  } else if (event.requestContext.http.path == "/domain" && event.requestContext.http.method == "POST") {
9120
- return await handleDomain(event, setupToken);
8969
+ return await handleDomain(event);
9121
8970
  } else if (event.requestContext.http.path == "/pat" && event.requestContext.http.method == "POST") {
9122
8971
  return await handlePat(event);
9123
8972
  } else if (event.requestContext.http.path == "/complete-new-app" && event.requestContext.http.method == "GET") {
@@ -9125,22 +8974,10 @@ exports.handler = async function(event) {
9125
8974
  } else if (event.requestContext.http.path == "/app" && event.requestContext.http.method == "POST") {
9126
8975
  return await handleExistingApp(event);
9127
8976
  } else {
9128
- return {
9129
- statusCode: 404,
9130
- headers: {
9131
- "Content-Type": "text/html"
9132
- },
9133
- body: "Not found"
9134
- };
8977
+ return response(404, "Not found");
9135
8978
  }
9136
8979
  } catch (e) {
9137
- return {
9138
- statusCode: 500,
9139
- headers: {
9140
- "Content-Type": "text/html"
9141
- },
9142
- body: `<b>Error:</b> ${e}`
9143
- };
8980
+ return response(500, `<b>Error:</b> ${e}`);
9144
8981
  }
9145
8982
  };
9146
8983
  /*!