@cloudsnorkel/cdk-github-runners 0.3.2 → 0.4.0

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.
@@ -17,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
21
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
25
 
23
26
  // src/lambdas/build-image/index.ts
@@ -26,17 +29,63 @@ __export(build_image_exports, {
26
29
  handler: () => handler
27
30
  });
28
31
  module.exports = __toCommonJS(build_image_exports);
32
+ var AWS2 = __toESM(require("aws-sdk"));
33
+
34
+ // src/lambdas/helpers.ts
29
35
  var AWS = __toESM(require("aws-sdk"));
30
- var codebuild = new AWS.CodeBuild();
31
- var ecr = new AWS.ECR();
36
+ var sm = new AWS.SecretsManager();
37
+ async function customResourceRespond(event, responseStatus, reason, physicalResourceId, data) {
38
+ const responseBody = JSON.stringify({
39
+ Status: responseStatus,
40
+ Reason: reason,
41
+ PhysicalResourceId: physicalResourceId,
42
+ StackId: event.StackId,
43
+ RequestId: event.RequestId,
44
+ LogicalResourceId: event.LogicalResourceId,
45
+ NoEcho: false,
46
+ Data: data
47
+ });
48
+ console.log("Responding", responseBody);
49
+ const parsedUrl = require("url").parse(event.ResponseURL);
50
+ const requestOptions = {
51
+ hostname: parsedUrl.hostname,
52
+ path: parsedUrl.path,
53
+ method: "PUT",
54
+ headers: {
55
+ "content-type": "",
56
+ "content-length": responseBody.length
57
+ }
58
+ };
59
+ return new Promise((resolve, reject) => {
60
+ try {
61
+ const request = require("https").request(requestOptions, resolve);
62
+ request.on("error", reject);
63
+ request.write(responseBody);
64
+ request.end();
65
+ } catch (e) {
66
+ reject(e);
67
+ }
68
+ });
69
+ }
70
+
71
+ // src/lambdas/build-image/index.ts
72
+ var codebuild = new AWS2.CodeBuild();
73
+ var ecr = new AWS2.ECR();
74
+ var ib = new AWS2.Imagebuilder();
32
75
  async function handler(event, context) {
33
76
  try {
34
- console.log(JSON.stringify(event));
77
+ console.log(JSON.stringify({ ...event, ResponseURL: "..." }));
78
+ const deleteOnly = event.ResourceProperties.DeleteOnly;
35
79
  const repoName = event.ResourceProperties.RepoName;
36
80
  const projectName = event.ResourceProperties.ProjectName;
81
+ const ibName = event.ResourceProperties.ImageBuilderName;
37
82
  switch (event.RequestType) {
38
83
  case "Create":
39
84
  case "Update":
85
+ if (deleteOnly) {
86
+ await customResourceRespond(event, "SUCCESS", "OK", "Deleter", {});
87
+ break;
88
+ }
40
89
  console.log(`Starting CodeBuild project ${projectName}`);
41
90
  await codebuild.startBuild({
42
91
  projectName,
@@ -65,54 +114,39 @@ async function handler(event, context) {
65
114
  }).promise();
66
115
  break;
67
116
  case "Delete":
68
- const images = await ecr.listImages({ repositoryName: repoName, maxResults: 100 }).promise();
69
- if (images.imageIds && images.imageIds.length > 0) {
117
+ const ecrImages = await ecr.listImages({ repositoryName: repoName, maxResults: 100 }).promise();
118
+ if (ecrImages.imageIds && ecrImages.imageIds.length > 0) {
70
119
  await ecr.batchDeleteImage({
71
- imageIds: images.imageIds.map((i) => {
120
+ imageIds: ecrImages.imageIds.map((i) => {
72
121
  return { imageDigest: i.imageDigest };
73
122
  }),
74
123
  repositoryName: repoName
75
124
  }).promise();
76
125
  }
77
- await respond("SUCCESS", "OK", event.PhysicalResourceId, {});
126
+ if (ibName) {
127
+ const ibImages = await ib.listImages({ filters: [{ name: "name", values: [ibName] }] }).promise();
128
+ if (ibImages.imageVersionList) {
129
+ for (const v of ibImages.imageVersionList) {
130
+ if (v.arn) {
131
+ const ibImageVersions = await ib.listImageBuildVersions({ imageVersionArn: v.arn }).promise();
132
+ if (ibImageVersions.imageSummaryList) {
133
+ for (const vs of ibImageVersions.imageSummaryList) {
134
+ if (vs.arn) {
135
+ console.log(`Deleting ${vs.arn}`);
136
+ await ib.deleteImage({ imageBuildVersionArn: vs.arn }).promise();
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ await customResourceRespond(event, "SUCCESS", "OK", event.PhysicalResourceId, {});
78
145
  break;
79
146
  }
80
147
  } catch (e) {
81
- console.log(e);
82
- await respond("FAILED", e.message || "Internal Error", context.logStreamName, {});
83
- }
84
- function respond(responseStatus, reason, physicalResourceId, data) {
85
- const responseBody = JSON.stringify({
86
- Status: responseStatus,
87
- Reason: reason,
88
- PhysicalResourceId: physicalResourceId,
89
- StackId: event.StackId,
90
- RequestId: event.RequestId,
91
- LogicalResourceId: event.LogicalResourceId,
92
- NoEcho: false,
93
- Data: data
94
- });
95
- console.log("Responding", responseBody);
96
- const parsedUrl = require("url").parse(event.ResponseURL);
97
- const requestOptions = {
98
- hostname: parsedUrl.hostname,
99
- path: parsedUrl.path,
100
- method: "PUT",
101
- headers: {
102
- "content-type": "",
103
- "content-length": responseBody.length
104
- }
105
- };
106
- return new Promise((resolve, reject) => {
107
- try {
108
- const request = require("https").request(requestOptions, resolve);
109
- request.on("error", reject);
110
- request.write(responseBody);
111
- request.end();
112
- } catch (e) {
113
- reject(e);
114
- }
115
- });
148
+ console.error(e);
149
+ await customResourceRespond(event, "FAILED", e.message || "Internal Error", context.logStreamName, {});
116
150
  }
117
151
  }
118
152
  // Annotate the CommonJS export names for ESM import in node:
@@ -16,7 +16,10 @@ var __copyProps = (to, from, except, desc) => {
16
16
  }
17
17
  return to;
18
18
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
20
23
 
21
24
  // node_modules/universal-user-agent/dist-node/index.js
22
25
  var require_dist_node = __commonJS({
@@ -5951,11 +5954,14 @@ var require_lib3 = __commonJS({
5951
5954
  blob() {
5952
5955
  let ct = this.headers && this.headers.get("content-type") || "";
5953
5956
  return consumeBody.call(this).then(function(buf) {
5954
- return Object.assign(new Blob([], {
5955
- type: ct.toLowerCase()
5956
- }), {
5957
- [BUFFER]: buf
5958
- });
5957
+ return Object.assign(
5958
+ new Blob([], {
5959
+ type: ct.toLowerCase()
5960
+ }),
5961
+ {
5962
+ [BUFFER]: buf
5963
+ }
5964
+ );
5959
5965
  });
5960
5966
  },
5961
5967
  json() {
@@ -7012,12 +7018,15 @@ var require_dist_node5 = __commonJS({
7012
7018
  let status;
7013
7019
  let url;
7014
7020
  const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
7015
- return fetch(requestOptions.url, Object.assign({
7016
- method: requestOptions.method,
7017
- body: requestOptions.body,
7018
- headers: requestOptions.headers,
7019
- redirect: requestOptions.redirect
7020
- }, requestOptions.request)).then(async (response) => {
7021
+ return fetch(requestOptions.url, Object.assign(
7022
+ {
7023
+ method: requestOptions.method,
7024
+ body: requestOptions.body,
7025
+ headers: requestOptions.headers,
7026
+ redirect: requestOptions.redirect
7027
+ },
7028
+ requestOptions.request
7029
+ )).then(async (response) => {
7021
7030
  url = response.url;
7022
7031
  status = response.status;
7023
7032
  for (const keyAndValue of response.headers) {
@@ -7425,7 +7434,7 @@ var require_dist_node6 = __commonJS({
7425
7434
  parse
7426
7435
  });
7427
7436
  }
7428
- var VERSION = "7.0.0";
7437
+ var VERSION = "7.0.1";
7429
7438
  var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`;
7430
7439
  var DEFAULTS = {
7431
7440
  method: "GET",
@@ -7511,7 +7520,7 @@ var require_dist_node8 = __commonJS({
7511
7520
  var isPlainObject = require_is_plain_object();
7512
7521
  var nodeFetch = _interopDefault(require_lib3());
7513
7522
  var requestError = require_dist_node7();
7514
- var VERSION = "6.2.0";
7523
+ var VERSION = "6.2.1";
7515
7524
  function getBufferResponse(response) {
7516
7525
  return response.arrayBuffer();
7517
7526
  }
@@ -7524,12 +7533,15 @@ var require_dist_node8 = __commonJS({
7524
7533
  let status;
7525
7534
  let url;
7526
7535
  const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || nodeFetch;
7527
- return fetch(requestOptions.url, Object.assign({
7528
- method: requestOptions.method,
7529
- body: requestOptions.body,
7530
- headers: requestOptions.headers,
7531
- redirect: requestOptions.redirect
7532
- }, requestOptions.request)).then(async (response) => {
7536
+ return fetch(requestOptions.url, Object.assign(
7537
+ {
7538
+ method: requestOptions.method,
7539
+ body: requestOptions.body,
7540
+ headers: requestOptions.headers,
7541
+ redirect: requestOptions.redirect
7542
+ },
7543
+ requestOptions.request
7544
+ )).then(async (response) => {
7533
7545
  url = response.url;
7534
7546
  status = response.status;
7535
7547
  for (const keyAndValue of response.headers) {
@@ -7980,7 +7992,7 @@ var require_dist_node10 = __commonJS({
7980
7992
  parse
7981
7993
  });
7982
7994
  }
7983
- var VERSION = "7.0.0";
7995
+ var VERSION = "7.0.1";
7984
7996
  var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`;
7985
7997
  var DEFAULTS = {
7986
7998
  method: "GET",
@@ -8066,7 +8078,7 @@ var require_dist_node12 = __commonJS({
8066
8078
  var isPlainObject = require_is_plain_object();
8067
8079
  var nodeFetch = _interopDefault(require_lib3());
8068
8080
  var requestError = require_dist_node11();
8069
- var VERSION = "6.2.0";
8081
+ var VERSION = "6.2.1";
8070
8082
  function getBufferResponse(response) {
8071
8083
  return response.arrayBuffer();
8072
8084
  }
@@ -8079,12 +8091,15 @@ var require_dist_node12 = __commonJS({
8079
8091
  let status;
8080
8092
  let url;
8081
8093
  const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || nodeFetch;
8082
- return fetch(requestOptions.url, Object.assign({
8083
- method: requestOptions.method,
8084
- body: requestOptions.body,
8085
- headers: requestOptions.headers,
8086
- redirect: requestOptions.redirect
8087
- }, requestOptions.request)).then(async (response) => {
8094
+ return fetch(requestOptions.url, Object.assign(
8095
+ {
8096
+ method: requestOptions.method,
8097
+ body: requestOptions.body,
8098
+ headers: requestOptions.headers,
8099
+ redirect: requestOptions.redirect
8100
+ },
8101
+ requestOptions.request
8102
+ )).then(async (response) => {
8088
8103
  url = response.url;
8089
8104
  status = response.status;
8090
8105
  for (const keyAndValue of response.headers) {
@@ -8565,7 +8580,7 @@ var require_dist_node14 = __commonJS({
8565
8580
  endpoint.headers.authorization = `token ${token}`;
8566
8581
  return request2(endpoint);
8567
8582
  }
8568
- var VERSION = "4.0.0";
8583
+ var VERSION = "4.0.1";
8569
8584
  function createOAuthDeviceAuth(options) {
8570
8585
  const requestWithDefaults = options.request || request.request.defaults({
8571
8586
  headers: {
@@ -8613,7 +8628,7 @@ var require_dist_node15 = __commonJS({
8613
8628
  var authOauthDevice = require_dist_node14();
8614
8629
  var oauthMethods = require_dist_node13();
8615
8630
  var btoa = _interopDefault(require_btoa_node());
8616
- var VERSION = "2.0.2";
8631
+ var VERSION = "2.0.3";
8617
8632
  async function getAuthentication(state) {
8618
8633
  if ("code" in state.strategyOptions) {
8619
8634
  const {
@@ -9792,14 +9807,18 @@ var require_ms = __commonJS({
9792
9807
  } else if (type === "number" && isFinite(val)) {
9793
9808
  return options.long ? fmtLong(val) : fmtShort(val);
9794
9809
  }
9795
- throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
9810
+ throw new Error(
9811
+ "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
9812
+ );
9796
9813
  };
9797
9814
  function parse(str) {
9798
9815
  str = String(str);
9799
9816
  if (str.length > 100) {
9800
9817
  return;
9801
9818
  }
9802
- var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
9819
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
9820
+ str
9821
+ );
9803
9822
  if (!match) {
9804
9823
  return;
9805
9824
  }
@@ -12739,7 +12758,7 @@ var require_dist_node18 = __commonJS({
12739
12758
  parse
12740
12759
  });
12741
12760
  }
12742
- var VERSION = "7.0.0";
12761
+ var VERSION = "7.0.1";
12743
12762
  var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`;
12744
12763
  var DEFAULTS = {
12745
12764
  method: "GET",
@@ -12825,7 +12844,7 @@ var require_dist_node20 = __commonJS({
12825
12844
  var isPlainObject = require_is_plain_object();
12826
12845
  var nodeFetch = _interopDefault(require_lib3());
12827
12846
  var requestError = require_dist_node19();
12828
- var VERSION = "6.2.0";
12847
+ var VERSION = "6.2.1";
12829
12848
  function getBufferResponse(response) {
12830
12849
  return response.arrayBuffer();
12831
12850
  }
@@ -12838,12 +12857,15 @@ var require_dist_node20 = __commonJS({
12838
12857
  let status;
12839
12858
  let url;
12840
12859
  const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || nodeFetch;
12841
- return fetch(requestOptions.url, Object.assign({
12842
- method: requestOptions.method,
12843
- body: requestOptions.body,
12844
- headers: requestOptions.headers,
12845
- redirect: requestOptions.redirect
12846
- }, requestOptions.request)).then(async (response) => {
12860
+ return fetch(requestOptions.url, Object.assign(
12861
+ {
12862
+ method: requestOptions.method,
12863
+ body: requestOptions.body,
12864
+ headers: requestOptions.headers,
12865
+ redirect: requestOptions.redirect
12866
+ },
12867
+ requestOptions.request
12868
+ )).then(async (response) => {
12847
12869
  url = response.url;
12848
12870
  status = response.status;
12849
12871
  for (const keyAndValue of response.headers) {
@@ -14096,7 +14118,9 @@ var require_dist_node25 = __commonJS({
14096
14118
  case "app":
14097
14119
  return getAppAuthentication(state);
14098
14120
  case "oauth":
14099
- state.log.warn(new deprecation.Deprecation(`[@octokit/auth-app] {type: "oauth"} is deprecated. Use {type: "oauth-app"} instead`));
14121
+ state.log.warn(
14122
+ new deprecation.Deprecation(`[@octokit/auth-app] {type: "oauth"} is deprecated. Use {type: "oauth-app"} instead`)
14123
+ );
14100
14124
  case "oauth-app":
14101
14125
  return state.oauthApp({
14102
14126
  type: "oauth-app"
@@ -14169,7 +14193,11 @@ var require_dist_node25 = __commonJS({
14169
14193
  const {
14170
14194
  token,
14171
14195
  createdAt
14172
- } = await getInstallationAuthentication(state, {}, request2);
14196
+ } = await getInstallationAuthentication(
14197
+ state,
14198
+ {},
14199
+ request2
14200
+ );
14173
14201
  endpoint.headers.authorization = `token ${token}`;
14174
14202
  return sendRequestWithRetries(state, request2, endpoint, createdAt);
14175
14203
  }
@@ -5,24 +5,24 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Setup GitHub Runners</title>
7
7
  <script type="module" crossorigin>
8
- const Be=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const c of n)if(c.type==="childList")for(const p of c.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&i(p)}).observe(document,{childList:!0,subtree:!0});function o(n){const c={};return n.integrity&&(c.integrity=n.integrity),n.referrerpolicy&&(c.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?c.credentials="include":n.crossorigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function i(n){if(n.ep)return;n.ep=!0;const c=o(n);fetch(n.href,c)}};Be();function ee(){}function Le(e){return e()}function Ce(){return Object.create(null)}function j(e){e.forEach(Le)}function De(e){return typeof e=="function"}function Me(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function $e(e){return Object.keys(e).length===0}function l(e,t){e.appendChild(t)}function H(e,t,o){e.insertBefore(t,o||null)}function T(e){e.parentNode.removeChild(e)}function r(e){return document.createElement(e)}function I(e){return document.createTextNode(e)}function v(){return I(" ")}function je(){return I("")}function z(e,t,o,i){return e.addEventListener(t,o,i),()=>e.removeEventListener(t,o,i)}function s(e,t,o){o==null?e.removeAttribute(t):e.getAttribute(t)!==o&&e.setAttribute(t,o)}function Ue(e){return e===""?null:+e}function qe(e){return Array.from(e.childNodes)}function pe(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function B(e,t){e.value=t==null?"":t}let ke;function x(e){ke=e}const X=[],Se=[],ae=[],Te=[],Je=Promise.resolve();let be=!1;function Ke(){be||(be=!0,Je.then(ze))}function ve(e){ae.push(e)}const he=new Set;let ue=0;function ze(){const e=ke;do{for(;ue<X.length;){const t=X[ue];ue++,x(t),We(t.$$)}for(x(null),X.length=0,ue=0;Se.length;)Se.pop()();for(let t=0;t<ae.length;t+=1){const o=ae[t];he.has(o)||(he.add(o),o())}ae.length=0}while(X.length);for(;Te.length;)Te.pop()();be=!1,he.clear(),x(e)}function We(e){if(e.fragment!==null){e.update(),j(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(ve)}}const Fe=new Set;function Ye(e,t){e&&e.i&&(Fe.delete(e),e.i(t))}function Ze(e,t,o,i){const{fragment:n,on_mount:c,on_destroy:p,after_update:u}=e.$$;n&&n.m(t,o),i||ve(()=>{const m=c.map(Le).filter(De);p?p.push(...m):j(m),e.$$.on_mount=[]}),u.forEach(ve)}function Qe(e,t){const o=e.$$;o.fragment!==null&&(j(o.on_destroy),o.fragment&&o.fragment.d(t),o.on_destroy=o.fragment=null,o.ctx=[])}function Ve(e,t){e.$$.dirty[0]===-1&&(X.push(e),Ke(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function Xe(e,t,o,i,n,c,p,u=[-1]){const m=ke;x(e);const a=e.$$={fragment:null,ctx:null,props:c,update:ee,not_equal:n,bound:Ce(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(m?m.$$.context:[])),callbacks:Ce(),dirty:u,skip_bound:!1,root:t.target||m.$$.root};p&&p(a.root);let h=!1;if(a.ctx=o?o(e,t.props||{},(g,f,...O)=>{const k=O.length?O[0]:f;return a.ctx&&n(a.ctx[g],a.ctx[g]=k)&&(!a.skip_bound&&a.bound[g]&&a.bound[g](k),h&&Ve(e,g)),f}):[],a.update(),h=!0,j(a.before_update),a.fragment=i?i(a.ctx):!1,t.target){if(t.hydrate){const g=qe(t.target);a.fragment&&a.fragment.l(g),g.forEach(T)}else a.fragment&&a.fragment.c();t.intro&&Ye(e.$$.fragment),Ze(e,t.target,t.anchor,t.customElement),ze()}x(m)}class xe{$destroy(){Qe(this,1),this.$destroy=ee}$on(t,o){const i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(o),()=>{const n=i.indexOf(o);n!==-1&&i.splice(n,1)}}$set(t){this.$$set&&!$e(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}function Oe(e){let t,o,i,n,c,p,u,m;return{c(){t=r("h3"),t.textContent="GitHub Enterprise Server Domain",o=v(),i=r("div"),n=r("p"),n.innerHTML=`Where is GitHub Enterprise Server hosted? Type in the domain without <code>https://</code>
8
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const c of n)if(c.type==="childList")for(const p of c.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&i(p)}).observe(document,{childList:!0,subtree:!0});function o(n){const c={};return n.integrity&&(c.integrity=n.integrity),n.referrerpolicy&&(c.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?c.credentials="include":n.crossorigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function i(n){if(n.ep)return;n.ep=!0;const c=o(n);fetch(n.href,c)}})();function ee(){}function Le(e){return e()}function Ce(){return Object.create(null)}function j(e){e.forEach(Le)}function Be(e){return typeof e=="function"}function De(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Me(e){return Object.keys(e).length===0}function l(e,t){e.appendChild(t)}function H(e,t,o){e.insertBefore(t,o||null)}function T(e){e.parentNode.removeChild(e)}function r(e){return document.createElement(e)}function I(e){return document.createTextNode(e)}function v(){return I(" ")}function $e(){return I("")}function z(e,t,o,i){return e.addEventListener(t,o,i),()=>e.removeEventListener(t,o,i)}function s(e,t,o){o==null?e.removeAttribute(t):e.getAttribute(t)!==o&&e.setAttribute(t,o)}function Ue(e){return e===""?null:+e}function je(e){return Array.from(e.childNodes)}function pe(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function B(e,t){e.value=t==null?"":t}let ke;function x(e){ke=e}const X=[],Se=[],ae=[],Te=[],qe=Promise.resolve();let be=!1;function Je(){be||(be=!0,qe.then(ze))}function ve(e){ae.push(e)}const he=new Set;let ue=0;function ze(){const e=ke;do{for(;ue<X.length;){const t=X[ue];ue++,x(t),Ke(t.$$)}for(x(null),X.length=0,ue=0;Se.length;)Se.pop()();for(let t=0;t<ae.length;t+=1){const o=ae[t];he.has(o)||(he.add(o),o())}ae.length=0}while(X.length);for(;Te.length;)Te.pop()();be=!1,he.clear(),x(e)}function Ke(e){if(e.fragment!==null){e.update(),j(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(ve)}}const We=new Set;function Fe(e,t){e&&e.i&&(We.delete(e),e.i(t))}function Ye(e,t,o,i){const{fragment:n,on_mount:c,on_destroy:p,after_update:u}=e.$$;n&&n.m(t,o),i||ve(()=>{const m=c.map(Le).filter(Be);p?p.push(...m):j(m),e.$$.on_mount=[]}),u.forEach(ve)}function Ze(e,t){const o=e.$$;o.fragment!==null&&(j(o.on_destroy),o.fragment&&o.fragment.d(t),o.on_destroy=o.fragment=null,o.ctx=[])}function Qe(e,t){e.$$.dirty[0]===-1&&(X.push(e),Je(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function Ve(e,t,o,i,n,c,p,u=[-1]){const m=ke;x(e);const a=e.$$={fragment:null,ctx:null,props:c,update:ee,not_equal:n,bound:Ce(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(m?m.$$.context:[])),callbacks:Ce(),dirty:u,skip_bound:!1,root:t.target||m.$$.root};p&&p(a.root);let h=!1;if(a.ctx=o?o(e,t.props||{},(g,f,...O)=>{const k=O.length?O[0]:f;return a.ctx&&n(a.ctx[g],a.ctx[g]=k)&&(!a.skip_bound&&a.bound[g]&&a.bound[g](k),h&&Qe(e,g)),f}):[],a.update(),h=!0,j(a.before_update),a.fragment=i?i(a.ctx):!1,t.target){if(t.hydrate){const g=je(t.target);a.fragment&&a.fragment.l(g),g.forEach(T)}else a.fragment&&a.fragment.c();t.intro&&Fe(e.$$.fragment),Ye(e,t.target,t.anchor,t.customElement),ze()}x(m)}class Xe{$destroy(){Ze(this,1),this.$destroy=ee}$on(t,o){const i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(o),()=>{const n=i.indexOf(o);n!==-1&&i.splice(n,1)}}$set(t){this.$$set&&!Me(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}function Oe(e){let t,o,i,n,c,p,u,m;return{c(){t=r("h3"),t.textContent="GitHub Enterprise Server Domain",o=v(),i=r("div"),n=r("p"),n.innerHTML=`Where is GitHub Enterprise Server hosted? Type in the domain without <code>https://</code>
9
9
  and without any path. It should look something like <code>github.mycompany.com</code>.`,c=v(),p=r("input"),s(p,"class","form-control"),s(i,"class","px-3 py-3")},m(a,h){H(a,t,h),H(a,o,h),H(a,i,h),l(i,n),l(i,c),l(i,p),B(p,e[1]),u||(m=z(p,"input",e[15]),u=!0)},p(a,h){h&2&&p.value!==a[1]&&B(p,a[1])},d(a){a&&T(t),a&&T(o),a&&T(i),u=!1,m()}}}function He(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_,A,E,N;return{c(){t=r("h3"),t.textContent="Authentication Type",o=v(),i=r("div"),n=r("p"),n.textContent=`You can choose between creating a new app that will provide authentication for specific
10
10
  repositories, or a personal access token that will provide access to all repositories
11
11
  available to you. Apps are easier to set up and provide more fine-grained access control. If
12
- you have previously created an app, you can choose to use an existing app.`,c=v(),p=r("div"),u=r("input"),m=v(),a=r("label"),a.innerHTML="New GitHub App <b>(recommended)</b>",h=v(),g=r("div"),f=r("input"),O=v(),k=r("label"),k.textContent="Existing GitHub App",S=v(),C=r("div"),d=r("input"),_=v(),A=r("label"),A.textContent="Personal Authentication Token",s(u,"class","form-check-input"),s(u,"type","radio"),u.__value="newApp",u.value=u.__value,s(u,"id","newApp"),e[13][1].push(u),s(a,"class","form-check-label"),s(a,"for","newApp"),s(p,"class","form-check"),s(f,"class","form-check-input"),s(f,"type","radio"),f.__value="existingApp",f.value=f.__value,s(f,"id","existingApp"),e[13][1].push(f),s(k,"class","form-check-label"),s(k,"for","existingApp"),s(g,"class","form-check"),s(d,"class","form-check-input"),s(d,"type","radio"),d.__value="pat",d.value=d.__value,s(d,"id","pat"),e[13][1].push(d),s(A,"class","form-check-label"),s(A,"for","pat"),s(C,"class","form-check"),s(i,"class","px-3 py-3")},m(b,w){H(b,t,w),H(b,o,w),H(b,i,w),l(i,n),l(i,c),l(i,p),l(p,u),u.checked=u.__value===e[2],l(p,m),l(p,a),l(i,h),l(i,g),l(g,f),f.checked=f.__value===e[2],l(g,O),l(g,k),l(i,S),l(i,C),l(C,d),d.checked=d.__value===e[2],l(C,_),l(C,A),E||(N=[z(u,"change",e[16]),z(f,"change",e[17]),z(d,"change",e[18])],E=!0)},p(b,w){w&4&&(u.checked=u.__value===b[2]),w&4&&(f.checked=f.__value===b[2]),w&4&&(d.checked=d.__value===b[2])},d(b){b&&T(t),b&&T(o),b&&T(i),e[13][1].splice(e[13][1].indexOf(u),1),e[13][1].splice(e[13][1].indexOf(f),1),e[13][1].splice(e[13][1].indexOf(d),1),E=!1,j(N)}}}function et(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d;return{c(){t=r("h2"),t.textContent="Personal Access Token",o=v(),i=r("div"),n=r("p"),c=I("The "),p=r("a"),u=I("personal access token"),a=I(" must have the "),h=r("code"),h.textContent="repo",g=I(`
13
- scope enabled. Don't forget to also create a webhook as described in `),f=r("a"),f.textContent="SETUP_GITHUB.md",O=I("."),k=v(),S=r("input"),s(p,"href",m="https://"+e[1]+"/settings/tokens"),s(f,"href","https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md"),s(S,"class","form-control"),s(S,"placeholder","Token e.g. ghp_abcdefghijklmnopqrstuvwxyz1234567890"),s(i,"class","px-3 py-3")},m(_,A){H(_,t,A),H(_,o,A),H(_,i,A),l(i,n),l(n,c),l(n,p),l(p,u),l(n,a),l(n,h),l(n,g),l(n,f),l(n,O),l(i,k),l(i,S),B(S,e[7]),C||(d=z(S,"input",e[25]),C=!0)},p(_,A){A&2&&m!==(m="https://"+_[1]+"/settings/tokens")&&s(p,"href",m),A&128&&S.value!==_[7]&&B(S,_[7])},d(_){_&&T(t),_&&T(o),_&&T(i),C=!1,d()}}}function tt(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_;return{c(){t=r("h3"),t.textContent="Existing App Details",o=v(),i=r("div"),n=r("p"),n.innerHTML=`Existing apps must have <code>actions</code> and <code>administration</code> write
14
- permissions. Don&#39;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>.`,c=v(),p=r("div"),u=r("label"),u.textContent="App Id",m=v(),a=r("div"),h=r("input"),g=v(),f=r("div"),O=r("label"),O.textContent="Private Key",k=v(),S=r("div"),C=r("textarea"),s(u,"for","appid"),s(u,"class","col-sm-2 col-form-label"),s(h,"type","number"),s(h,"class","form-control"),s(h,"id","appid"),s(a,"class","col-sm-10"),s(p,"class","form-group row px-3 py-2"),s(O,"for","pk"),s(O,"class","col-sm-2 col-form-label"),s(C,"class","form-control"),s(C,"id","pk"),s(C,"rows","10"),s(S,"class","col-sm-10"),s(f,"class","form-group row px-3 py-2"),s(i,"class","px-3 py-3")},m(A,E){H(A,t,E),H(A,o,E),H(A,i,E),l(i,n),l(i,c),l(i,p),l(p,u),l(p,m),l(p,a),l(a,h),B(h,e[5]),l(i,g),l(i,f),l(f,O),l(f,k),l(f,S),l(S,C),B(C,e[6]),d||(_=[z(h,"input",e[23]),z(C,"input",e[24])],d=!0)},p(A,E){E&32&&Ue(h.value)!==A[5]&&B(h,A[5]),E&64&&B(C,A[6])},d(A){A&&T(t),A&&T(o),A&&T(i),d=!1,j(_)}}}function nt(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_,A,E=e[0]==="ghes"&&Ne(e),N=e[3]==="org"&&Ie(e);return{c(){t=r("h3"),t.textContent="New App Settings",o=v(),i=r("div"),n=r("p"),n.textContent=`Choose whether to create a new personal app or organization app. A private personal app can
12
+ you have previously created an app, you can choose to use an existing app.`,c=v(),p=r("div"),u=r("input"),m=v(),a=r("label"),a.innerHTML="New GitHub App <b>(recommended)</b>",h=v(),g=r("div"),f=r("input"),O=v(),k=r("label"),k.textContent="Existing GitHub App",S=v(),C=r("div"),d=r("input"),_=v(),A=r("label"),A.textContent="Personal Authentication Token",s(u,"class","form-check-input"),s(u,"type","radio"),u.__value="newApp",u.value=u.__value,s(u,"id","newApp"),e[13][1].push(u),s(a,"class","form-check-label"),s(a,"for","newApp"),s(p,"class","form-check"),s(f,"class","form-check-input"),s(f,"type","radio"),f.__value="existingApp",f.value=f.__value,s(f,"id","existingApp"),e[13][1].push(f),s(k,"class","form-check-label"),s(k,"for","existingApp"),s(g,"class","form-check"),s(d,"class","form-check-input"),s(d,"type","radio"),d.__value="pat",d.value=d.__value,s(d,"id","pat"),e[13][1].push(d),s(A,"class","form-check-label"),s(A,"for","pat"),s(C,"class","form-check"),s(i,"class","px-3 py-3")},m(b,w){H(b,t,w),H(b,o,w),H(b,i,w),l(i,n),l(i,c),l(i,p),l(p,u),u.checked=u.__value===e[2],l(p,m),l(p,a),l(i,h),l(i,g),l(g,f),f.checked=f.__value===e[2],l(g,O),l(g,k),l(i,S),l(i,C),l(C,d),d.checked=d.__value===e[2],l(C,_),l(C,A),E||(N=[z(u,"change",e[16]),z(f,"change",e[17]),z(d,"change",e[18])],E=!0)},p(b,w){w&4&&(u.checked=u.__value===b[2]),w&4&&(f.checked=f.__value===b[2]),w&4&&(d.checked=d.__value===b[2])},d(b){b&&T(t),b&&T(o),b&&T(i),e[13][1].splice(e[13][1].indexOf(u),1),e[13][1].splice(e[13][1].indexOf(f),1),e[13][1].splice(e[13][1].indexOf(d),1),E=!1,j(N)}}}function xe(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d;return{c(){t=r("h2"),t.textContent="Personal Access Token",o=v(),i=r("div"),n=r("p"),c=I("The "),p=r("a"),u=I("personal access token"),a=I(" must have the "),h=r("code"),h.textContent="repo",g=I(`
13
+ scope enabled. Don't forget to also create a webhook as described in `),f=r("a"),f.textContent="SETUP_GITHUB.md",O=I("."),k=v(),S=r("input"),s(p,"href",m="https://"+e[1]+"/settings/tokens"),s(f,"href","https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md"),s(S,"class","form-control"),s(S,"placeholder","Token e.g. ghp_abcdefghijklmnopqrstuvwxyz1234567890"),s(i,"class","px-3 py-3")},m(_,A){H(_,t,A),H(_,o,A),H(_,i,A),l(i,n),l(n,c),l(n,p),l(p,u),l(n,a),l(n,h),l(n,g),l(n,f),l(n,O),l(i,k),l(i,S),B(S,e[7]),C||(d=z(S,"input",e[25]),C=!0)},p(_,A){A&2&&m!==(m="https://"+_[1]+"/settings/tokens")&&s(p,"href",m),A&128&&S.value!==_[7]&&B(S,_[7])},d(_){_&&T(t),_&&T(o),_&&T(i),C=!1,d()}}}function et(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_;return{c(){t=r("h3"),t.textContent="Existing App Details",o=v(),i=r("div"),n=r("p"),n.innerHTML=`Existing apps must have <code>actions</code> and <code>administration</code> write
14
+ permissions. Don&#39;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>.`,c=v(),p=r("div"),u=r("label"),u.textContent="App Id",m=v(),a=r("div"),h=r("input"),g=v(),f=r("div"),O=r("label"),O.textContent="Private Key",k=v(),S=r("div"),C=r("textarea"),s(u,"for","appid"),s(u,"class","col-sm-2 col-form-label"),s(h,"type","number"),s(h,"class","form-control"),s(h,"id","appid"),s(a,"class","col-sm-10"),s(p,"class","form-group row px-3 py-2"),s(O,"for","pk"),s(O,"class","col-sm-2 col-form-label"),s(C,"class","form-control"),s(C,"id","pk"),s(C,"rows","10"),s(S,"class","col-sm-10"),s(f,"class","form-group row px-3 py-2"),s(i,"class","px-3 py-3")},m(A,E){H(A,t,E),H(A,o,E),H(A,i,E),l(i,n),l(i,c),l(i,p),l(p,u),l(p,m),l(p,a),l(a,h),B(h,e[5]),l(i,g),l(i,f),l(f,O),l(f,k),l(f,S),l(S,C),B(C,e[6]),d||(_=[z(h,"input",e[23]),z(C,"input",e[24])],d=!0)},p(A,E){E&32&&Ue(h.value)!==A[5]&&B(h,A[5]),E&64&&B(C,A[6])},d(A){A&&T(t),A&&T(o),A&&T(i),d=!1,j(_)}}}function tt(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_,A,E=e[0]==="ghes"&&Ne(e),N=e[3]==="org"&&Ie(e);return{c(){t=r("h3"),t.textContent="New App Settings",o=v(),i=r("div"),n=r("p"),n.textContent=`Choose whether to create a new personal app or organization app. A private personal app can
15
15
  only be used for repositories under your user. A private origination app can only be used
16
- for repositories under that organization.`,c=v(),p=r("div"),u=r("input"),m=v(),a=r("label"),a.textContent="User app",h=v(),g=r("div"),f=r("input"),O=v(),k=r("label"),k.textContent="Organization app",S=v(),E&&E.c(),C=v(),N&&N.c(),d=je(),s(u,"class","form-check-input"),s(u,"type","radio"),u.__value="user",u.value=u.__value,s(u,"id","userScope"),e[13][2].push(u),s(a,"class","form-check-label"),s(a,"for","userScope"),s(p,"class","form-check"),s(f,"class","form-check-input"),s(f,"type","radio"),f.__value="org",f.value=f.__value,s(f,"id","orgScope"),e[13][2].push(f),s(k,"class","form-check-label"),s(k,"for","orgScope"),s(g,"class","form-check"),s(i,"class","px-3 py-3")},m(b,w){H(b,t,w),H(b,o,w),H(b,i,w),l(i,n),l(i,c),l(i,p),l(p,u),u.checked=u.__value===e[3],l(p,m),l(p,a),l(i,h),l(i,g),l(g,f),f.checked=f.__value===e[3],l(g,O),l(g,k),l(i,S),E&&E.m(i,null),H(b,C,w),N&&N.m(b,w),H(b,d,w),_||(A=[z(u,"change",e[19]),z(f,"change",e[20])],_=!0)},p(b,w){w&8&&(u.checked=u.__value===b[3]),w&8&&(f.checked=f.__value===b[3]),b[0]==="ghes"?E?E.p(b,w):(E=Ne(b),E.c(),E.m(i,null)):E&&(E.d(1),E=null),b[3]==="org"?N?N.p(b,w):(N=Ie(b),N.c(),N.m(d.parentNode,d)):N&&(N.d(1),N=null)},d(b){b&&T(t),b&&T(o),b&&T(i),e[13][2].splice(e[13][2].indexOf(u),1),e[13][2].splice(e[13][2].indexOf(f),1),E&&E.d(),b&&T(C),N&&N.d(b),b&&T(d),_=!1,j(A)}}}function Ne(e){let t,o,i,n,c,p,u,m;return{c(){t=r("p"),t.textContent=`If multiple organizations under the same GitHub Enterprise Server need to use the runners,
16
+ for repositories under that organization.`,c=v(),p=r("div"),u=r("input"),m=v(),a=r("label"),a.textContent="User app",h=v(),g=r("div"),f=r("input"),O=v(),k=r("label"),k.textContent="Organization app",S=v(),E&&E.c(),C=v(),N&&N.c(),d=$e(),s(u,"class","form-check-input"),s(u,"type","radio"),u.__value="user",u.value=u.__value,s(u,"id","userScope"),e[13][2].push(u),s(a,"class","form-check-label"),s(a,"for","userScope"),s(p,"class","form-check"),s(f,"class","form-check-input"),s(f,"type","radio"),f.__value="org",f.value=f.__value,s(f,"id","orgScope"),e[13][2].push(f),s(k,"class","form-check-label"),s(k,"for","orgScope"),s(g,"class","form-check"),s(i,"class","px-3 py-3")},m(b,w){H(b,t,w),H(b,o,w),H(b,i,w),l(i,n),l(i,c),l(i,p),l(p,u),u.checked=u.__value===e[3],l(p,m),l(p,a),l(i,h),l(i,g),l(g,f),f.checked=f.__value===e[3],l(g,O),l(g,k),l(i,S),E&&E.m(i,null),H(b,C,w),N&&N.m(b,w),H(b,d,w),_||(A=[z(u,"change",e[19]),z(f,"change",e[20])],_=!0)},p(b,w){w&8&&(u.checked=u.__value===b[3]),w&8&&(f.checked=f.__value===b[3]),b[0]==="ghes"?E?E.p(b,w):(E=Ne(b),E.c(),E.m(i,null)):E&&(E.d(1),E=null),b[3]==="org"?N?N.p(b,w):(N=Ie(b),N.c(),N.m(d.parentNode,d)):N&&(N.d(1),N=null)},d(b){b&&T(t),b&&T(o),b&&T(i),e[13][2].splice(e[13][2].indexOf(u),1),e[13][2].splice(e[13][2].indexOf(f),1),E&&E.d(),b&&T(C),N&&N.d(b),b&&T(d),_=!1,j(A)}}}function Ne(e){let t,o,i,n,c,p,u,m;return{c(){t=r("p"),t.textContent=`If multiple organizations under the same GitHub Enterprise Server need to use the runners,
17
17
  you can make the app public.`,o=v(),i=r("div"),n=r("input"),c=v(),p=r("label"),p.textContent="Public app",s(t,"class","pt-2"),s(n,"class","form-check-input"),s(n,"type","checkbox"),s(n,"id","public"),s(p,"class","form-check-label"),s(p,"for","public"),s(i,"class","form-check")},m(a,h){H(a,t,h),H(a,o,h),H(a,i,h),l(i,n),B(n,e[10].public),l(i,c),l(i,p),u||(m=z(n,"change",e[21]),u=!0)},p(a,h){h&1024&&B(n,a[10].public)},d(a){a&&T(t),a&&T(o),a&&T(i),u=!1,m()}}}function Ie(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C;return{c(){t=r("h3"),t.textContent="Organization name",o=v(),i=r("div"),n=r("p"),c=I(`What is the slug for your organization? If your repositories have a URL like
18
18
  `),p=r("code"),u=I("https://"),m=I(e[1]),a=I("/MyOrg/my-repo"),h=I(`
19
- then your organization slug is `),g=r("code"),g.textContent="MyOrg",f=I("."),O=v(),k=r("input"),s(k,"class","form-control"),s(i,"class","px-3 py-3")},m(d,_){H(d,t,_),H(d,o,_),H(d,i,_),l(i,n),l(n,c),l(n,p),l(p,u),l(p,m),l(p,a),l(n,h),l(n,g),l(n,f),l(i,O),l(i,k),B(k,e[4]),S||(C=z(k,"input",e[22]),S=!0)},p(d,_){_&2&&pe(m,d[1]),_&16&&k.value!==d[4]&&B(k,d[4])},d(d){d&&T(t),d&&T(o),d&&T(i),S=!1,C()}}}function lt(e){let t,o,i;return{c(){t=r("div"),o=I(e[9]),s(t,"class",i="alert alert-"+(e[8]?"success":"danger")),s(t,"role","alert")},m(n,c){H(n,t,c),l(t,o)},p(n,c){c&512&&pe(o,n[9]),c&256&&i!==(i="alert alert-"+(n[8]?"success":"danger"))&&s(t,"class",i)},d(n){n&&T(t)}}}function it(e){let t;return{c(){t=r("p"),t.textContent="This button will be enabled once all the questions above are answered."},m(o,i){H(o,t,i)},p:ee,d(o){o&&T(t)}}}function Ge(e){let t,o,i,n,c,p;return{c(){t=r("p"),o=r("b"),o.textContent="WARNING:",i=I(" using a public app means anyone with access to "),n=r("code"),c=I(e[1]),p=I(`
19
+ then your organization slug is `),g=r("code"),g.textContent="MyOrg",f=I("."),O=v(),k=r("input"),s(k,"class","form-control"),s(i,"class","px-3 py-3")},m(d,_){H(d,t,_),H(d,o,_),H(d,i,_),l(i,n),l(n,c),l(n,p),l(p,u),l(p,m),l(p,a),l(n,h),l(n,g),l(n,f),l(i,O),l(i,k),B(k,e[4]),S||(C=z(k,"input",e[22]),S=!0)},p(d,_){_&2&&pe(m,d[1]),_&16&&k.value!==d[4]&&B(k,d[4])},d(d){d&&T(t),d&&T(o),d&&T(i),S=!1,C()}}}function nt(e){let t,o,i;return{c(){t=r("div"),o=I(e[9]),s(t,"class",i="alert alert-"+(e[8]?"success":"danger")),s(t,"role","alert")},m(n,c){H(n,t,c),l(t,o)},p(n,c){c&512&&pe(o,n[9]),c&256&&i!==(i="alert alert-"+(n[8]?"success":"danger"))&&s(t,"class",i)},d(n){n&&T(t)}}}function lt(e){let t;return{c(){t=r("p"),t.textContent="This button will be enabled once all the questions above are answered."},m(o,i){H(o,t,i)},p:ee,d(o){o&&T(t)}}}function Ge(e){let t,o,i,n,c,p;return{c(){t=r("p"),o=r("b"),o.textContent="WARNING:",i=I(" using a public app means anyone with access to "),n=r("code"),c=I(e[1]),p=I(`
20
20
  can use the runners you're setting up now. Anyone can create a workflow that will run on those runners,
21
21
  have access to their instance profile, and be part of their security group. Consider the security
22
- implications before continuing.`),s(o,"class","text-danger")},m(u,m){H(u,t,m),l(t,o),l(t,i),l(t,n),l(n,c),l(t,p)},p(u,m){m&2&&pe(c,u[1])},d(u){u&&T(t)}}}function ot(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_,A,E,N,b,w,te,q,ne,Y,Z,Q,V,M,D,ce,fe,J,le=Pe(e[2])+"",de,ie,ye,K,W,oe,se,_e,we,R=e[0]==="ghes"&&Oe(e),P=e[0]&&He(e);function Ee(y,G){if(y[2]==="newApp")return nt;if(y[2]==="existingApp")return tt;if(y[2]==="pat")return et}let F=Ee(e),L=F&&F(e);function Ae(y,G){return y[9]===void 0?it:lt}let re=Ae(e),$=re(e),U=e[10].public&&e[2]==="newApp"&&Ge(e);return{c(){t=r("main"),o=r("div"),i=r("div"),n=r("form"),c=r("h1"),c.textContent="Setup GitHub Runners",p=v(),u=r("p"),m=I(`Answer all the questions on this page to automatically configure GitHub integration and get the
22
+ implications before continuing.`),s(o,"class","text-danger")},m(u,m){H(u,t,m),l(t,o),l(t,i),l(t,n),l(n,c),l(t,p)},p(u,m){m&2&&pe(c,u[1])},d(u){u&&T(t)}}}function it(e){let t,o,i,n,c,p,u,m,a,h,g,f,O,k,S,C,d,_,A,E,N,b,w,te,q,ne,Y,Z,Q,V,M,D,ce,fe,J,le=Pe(e[2])+"",de,ie,ye,K,W,oe,se,_e,we,R=e[0]==="ghes"&&Oe(e),P=e[0]&&He(e);function Ee(y,G){if(y[2]==="newApp")return tt;if(y[2]==="existingApp")return et;if(y[2]==="pat")return xe}let F=Ee(e),L=F&&F(e);function Ae(y,G){return y[9]===void 0?lt:nt}let re=Ae(e),$=re(e),U=e[10].public&&e[2]==="newApp"&&Ge(e);return{c(){t=r("main"),o=r("div"),i=r("div"),n=r("form"),c=r("h1"),c.textContent="Setup GitHub Runners",p=v(),u=r("p"),m=I(`Answer all the questions on this page to automatically configure GitHub integration and get the
23
23
  runners working. This page will not be accessible once you complete this operation. If you ever want
24
- to access it again, edit `),a=r("code"),a.textContent=`${st}`,h=I(" and run the status function again."),g=v(),f=r("h3"),f.textContent="Choose GitHub Instance",O=v(),k=r("div"),S=r("p"),S.textContent=`Are your repositories hosted on GitHub.com or are you using an on-premise installation of GitHub
25
- Enterprise Server?`,C=v(),d=r("div"),_=r("input"),A=v(),E=r("label"),E.textContent="GitHub.com",N=v(),b=r("div"),w=r("input"),te=v(),q=r("label"),q.textContent="GitHub Enterprise Server",ne=v(),R&&R.c(),Y=v(),P&&P.c(),Z=v(),L&&L.c(),Q=v(),V=r("h2"),V.textContent="Finish Setup",M=v(),D=r("div"),$.c(),ce=v(),U&&U.c(),fe=v(),J=r("button"),de=I(le),ye=v(),K=r("form"),W=r("input"),s(_,"class","form-check-input"),s(_,"type","radio"),_.__value="github.com",_.value=_.__value,s(_,"id","github.com"),e[13][0].push(_),s(E,"class","form-check-label"),s(E,"for","github.com"),s(d,"class","form-check"),s(w,"class","form-check-input"),s(w,"type","radio"),w.__value="ghes",w.value=w.__value,s(w,"id","ghes"),e[13][0].push(w),s(q,"class","form-check-label"),s(q,"for","ghes"),s(b,"class","form-check"),s(k,"class","px-3 py-3"),s(J,"type","submit"),s(J,"class","btn btn-success"),J.disabled=ie=Re(e[0],e[2],e[5],e[6],e[7],e[8]),s(D,"class","px-3 py-3"),s(n,"class","col"),s(i,"class","row"),s(o,"class","container py-3 px-2"),s(W,"type","hidden"),s(W,"name","manifest"),W.value=oe=JSON.stringify(e[10]),s(K,"action",se="https://"+e[1]+"/"+(e[3]==="org"?`organizations/${e[4]}/`:"")+"settings/apps/new?state="+ge),s(K,"method","post"),s(K,"id","appform")},m(y,G){H(y,t,G),l(t,o),l(o,i),l(i,n),l(n,c),l(n,p),l(n,u),l(u,m),l(u,a),l(u,h),l(n,g),l(n,f),l(n,O),l(n,k),l(k,S),l(k,C),l(k,d),l(d,_),_.checked=_.__value===e[0],l(d,A),l(d,E),l(k,N),l(k,b),l(b,w),w.checked=w.__value===e[0],l(b,te),l(b,q),l(n,ne),R&&R.m(n,null),l(n,Y),P&&P.m(n,null),l(n,Z),L&&L.m(n,null),l(n,Q),l(n,V),l(n,M),l(n,D),$.m(D,null),l(D,ce),U&&U.m(D,null),l(D,fe),l(D,J),l(J,de),l(t,ye),l(t,K),l(K,W),_e||(we=[z(_,"change",e[12]),z(w,"change",e[14]),z(n,"submit",e[11])],_e=!0)},p(y,[G]){G&1&&(_.checked=_.__value===y[0]),G&1&&(w.checked=w.__value===y[0]),y[0]==="ghes"?R?R.p(y,G):(R=Oe(y),R.c(),R.m(n,Y)):R&&(R.d(1),R=null),y[0]?P?P.p(y,G):(P=He(y),P.c(),P.m(n,Z)):P&&(P.d(1),P=null),F===(F=Ee(y))&&L?L.p(y,G):(L&&L.d(1),L=F&&F(y),L&&(L.c(),L.m(n,Q))),re===(re=Ae(y))&&$?$.p(y,G):($.d(1),$=re(y),$&&($.c(),$.m(D,ce))),y[10].public&&y[2]==="newApp"?U?U.p(y,G):(U=Ge(y),U.c(),U.m(D,fe)):U&&(U.d(1),U=null),G&4&&le!==(le=Pe(y[2])+"")&&pe(de,le),G&485&&ie!==(ie=Re(y[0],y[2],y[5],y[6],y[7],y[8]))&&(J.disabled=ie),G&1024&&oe!==(oe=JSON.stringify(y[10]))&&(W.value=oe),G&26&&se!==(se="https://"+y[1]+"/"+(y[3]==="org"?`organizations/${y[4]}/`:"")+"settings/apps/new?state="+ge)&&s(K,"action",se)},i:ee,o:ee,d(y){y&&T(t),e[13][0].splice(e[13][0].indexOf(_),1),e[13][0].splice(e[13][0].indexOf(w),1),R&&R.d(),P&&P.d(),L&&L.d(),$.d(),U&&U.d(),_e=!1,j(we)}}}const st="INSERT_SECRET_ARN_HERE",ge="INSERT_TOKEN_HERE";function Re(e,t,o,i,n,c){return c||e===void 0||t===void 0?!0:t==="newApp"?!1:t==="existingApp"?o===""||i==="":t==="pat"?n==="":(console.error("Something is broken",e,t,o),!0)}function Pe(e){return e==="newApp"?"Create GitHub App":"Setup"}function me(e,t){return new Promise((o,i)=>{fetch(`${e}?token=${ge}`,{method:"POST",mode:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),redirect:"error"}).then(n=>{n.ok?n.text().then(o).catch(i):n.text().then(c=>{i(new Error(`${c} [${n.status}]`))}).catch(i)}).catch(i)})}function rt(e,t,o){let i,n="INSERT_DOMAIN_HERE",c,p="user",u="ORGANIZATION",m="",a="",h="",g,f;const O={url:"https://github.com/CloudSnorkel/cdk-github-runners",hook_attributes:{url:"INSERT_WEBHOOK_URL_HERE"},redirect_url:"INSERT_BASE_URL_HERE/complete-new-app",public:!1,default_permissions:{actions:"write",administration:"write"},default_events:["workflow_job"]};function k(Q){Q.preventDefault();function V(){const M=i==="ghes"?n:"github.com";switch(c){case"newApp":return me("domain",{domain:M}).then(D=>(document.getElementById("appform").submit(),Promise.resolve("Redirecting to GitHub...")));case"existingApp":return me("app",{appid:m,pk:a,domain:M});case"pat":return me("pat",{pat:h,domain:M})}}V().then(M=>{o(9,f=M),o(8,g=!0)}).catch(M=>{o(9,f=`${M}`),o(8,g=!1)})}const S=[[],[],[]];function C(){i=this.__value,o(0,i)}function d(){i=this.__value,o(0,i)}function _(){n=this.value,o(1,n)}function A(){c=this.__value,o(2,c)}function E(){c=this.__value,o(2,c)}function N(){c=this.__value,o(2,c)}function b(){p=this.__value,o(3,p)}function w(){p=this.__value,o(3,p)}function te(){O.public=this.value,o(10,O)}function q(){u=this.value,o(4,u)}function ne(){m=Ue(this.value),o(5,m)}function Y(){a=this.value,o(6,a)}function Z(){h=this.value,o(7,h)}return[i,n,c,p,u,m,a,h,g,f,O,k,C,S,d,_,A,E,N,b,w,te,q,ne,Y,Z]}class ut extends xe{constructor(t){super(),Xe(this,t,rt,ot,Me,{})}}new ut({target:document.getElementById("app")});
24
+ to access it again, edit `),a=r("code"),a.textContent=`${ot}`,h=I(" and run the status function again."),g=v(),f=r("h3"),f.textContent="Choose GitHub Instance",O=v(),k=r("div"),S=r("p"),S.textContent=`Are your repositories hosted on GitHub.com or are you using an on-premise installation of GitHub
25
+ Enterprise Server?`,C=v(),d=r("div"),_=r("input"),A=v(),E=r("label"),E.textContent="GitHub.com",N=v(),b=r("div"),w=r("input"),te=v(),q=r("label"),q.textContent="GitHub Enterprise Server",ne=v(),R&&R.c(),Y=v(),P&&P.c(),Z=v(),L&&L.c(),Q=v(),V=r("h2"),V.textContent="Finish Setup",M=v(),D=r("div"),$.c(),ce=v(),U&&U.c(),fe=v(),J=r("button"),de=I(le),ye=v(),K=r("form"),W=r("input"),s(_,"class","form-check-input"),s(_,"type","radio"),_.__value="github.com",_.value=_.__value,s(_,"id","github.com"),e[13][0].push(_),s(E,"class","form-check-label"),s(E,"for","github.com"),s(d,"class","form-check"),s(w,"class","form-check-input"),s(w,"type","radio"),w.__value="ghes",w.value=w.__value,s(w,"id","ghes"),e[13][0].push(w),s(q,"class","form-check-label"),s(q,"for","ghes"),s(b,"class","form-check"),s(k,"class","px-3 py-3"),s(J,"type","submit"),s(J,"class","btn btn-success"),J.disabled=ie=Re(e[0],e[2],e[5],e[6],e[7],e[8]),s(D,"class","px-3 py-3"),s(n,"class","col"),s(i,"class","row"),s(o,"class","container py-3 px-2"),s(W,"type","hidden"),s(W,"name","manifest"),W.value=oe=JSON.stringify(e[10]),s(K,"action",se="https://"+e[1]+"/"+(e[3]==="org"?`organizations/${e[4]}/`:"")+"settings/apps/new?state="+ge),s(K,"method","post"),s(K,"id","appform")},m(y,G){H(y,t,G),l(t,o),l(o,i),l(i,n),l(n,c),l(n,p),l(n,u),l(u,m),l(u,a),l(u,h),l(n,g),l(n,f),l(n,O),l(n,k),l(k,S),l(k,C),l(k,d),l(d,_),_.checked=_.__value===e[0],l(d,A),l(d,E),l(k,N),l(k,b),l(b,w),w.checked=w.__value===e[0],l(b,te),l(b,q),l(n,ne),R&&R.m(n,null),l(n,Y),P&&P.m(n,null),l(n,Z),L&&L.m(n,null),l(n,Q),l(n,V),l(n,M),l(n,D),$.m(D,null),l(D,ce),U&&U.m(D,null),l(D,fe),l(D,J),l(J,de),l(t,ye),l(t,K),l(K,W),_e||(we=[z(_,"change",e[12]),z(w,"change",e[14]),z(n,"submit",e[11])],_e=!0)},p(y,[G]){G&1&&(_.checked=_.__value===y[0]),G&1&&(w.checked=w.__value===y[0]),y[0]==="ghes"?R?R.p(y,G):(R=Oe(y),R.c(),R.m(n,Y)):R&&(R.d(1),R=null),y[0]?P?P.p(y,G):(P=He(y),P.c(),P.m(n,Z)):P&&(P.d(1),P=null),F===(F=Ee(y))&&L?L.p(y,G):(L&&L.d(1),L=F&&F(y),L&&(L.c(),L.m(n,Q))),re===(re=Ae(y))&&$?$.p(y,G):($.d(1),$=re(y),$&&($.c(),$.m(D,ce))),y[10].public&&y[2]==="newApp"?U?U.p(y,G):(U=Ge(y),U.c(),U.m(D,fe)):U&&(U.d(1),U=null),G&4&&le!==(le=Pe(y[2])+"")&&pe(de,le),G&485&&ie!==(ie=Re(y[0],y[2],y[5],y[6],y[7],y[8]))&&(J.disabled=ie),G&1024&&oe!==(oe=JSON.stringify(y[10]))&&(W.value=oe),G&26&&se!==(se="https://"+y[1]+"/"+(y[3]==="org"?`organizations/${y[4]}/`:"")+"settings/apps/new?state="+ge)&&s(K,"action",se)},i:ee,o:ee,d(y){y&&T(t),e[13][0].splice(e[13][0].indexOf(_),1),e[13][0].splice(e[13][0].indexOf(w),1),R&&R.d(),P&&P.d(),L&&L.d(),$.d(),U&&U.d(),_e=!1,j(we)}}}const ot="INSERT_SECRET_ARN_HERE",ge="INSERT_TOKEN_HERE";function Re(e,t,o,i,n,c){return c||e===void 0||t===void 0?!0:t==="newApp"?!1:t==="existingApp"?o===""||i==="":t==="pat"?n==="":(console.error("Something is broken",e,t,o),!0)}function Pe(e){return e==="newApp"?"Create GitHub App":"Setup"}function me(e,t){return new Promise((o,i)=>{fetch(`${e}?token=${ge}`,{method:"POST",mode:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),redirect:"error"}).then(n=>{n.ok?n.text().then(o).catch(i):n.text().then(c=>{i(new Error(`${c} [${n.status}]`))}).catch(i)}).catch(i)})}function st(e,t,o){let i,n="INSERT_DOMAIN_HERE",c,p="user",u="ORGANIZATION",m="",a="",h="",g,f;const O={url:"https://github.com/CloudSnorkel/cdk-github-runners",hook_attributes:{url:"INSERT_WEBHOOK_URL_HERE"},redirect_url:"INSERT_BASE_URL_HERE/complete-new-app",public:!1,default_permissions:{actions:"write",administration:"write"},default_events:["workflow_job"]};function k(Q){Q.preventDefault();function V(){const M=i==="ghes"?n:"github.com";switch(c){case"newApp":return me("domain",{domain:M}).then(D=>(document.getElementById("appform").submit(),Promise.resolve("Redirecting to GitHub...")));case"existingApp":return me("app",{appid:m,pk:a,domain:M});case"pat":return me("pat",{pat:h,domain:M})}}V().then(M=>{o(9,f=M),o(8,g=!0)}).catch(M=>{o(9,f=`${M}`),o(8,g=!1)})}const S=[[],[],[]];function C(){i=this.__value,o(0,i)}function d(){i=this.__value,o(0,i)}function _(){n=this.value,o(1,n)}function A(){c=this.__value,o(2,c)}function E(){c=this.__value,o(2,c)}function N(){c=this.__value,o(2,c)}function b(){p=this.__value,o(3,p)}function w(){p=this.__value,o(3,p)}function te(){O.public=this.value,o(10,O)}function q(){u=this.value,o(4,u)}function ne(){m=Ue(this.value),o(5,m)}function Y(){a=this.value,o(6,a)}function Z(){h=this.value,o(7,h)}return[i,n,c,p,u,m,a,h,g,f,O,k,C,S,d,_,A,E,N,b,w,te,q,ne,Y,Z]}class rt extends Xe{constructor(t){super(),Ve(this,t,st,it,De,{})}}new rt({target:document.getElementById("app")});
26
26
 
27
27
  </script>
28
28
  <style type="text/css">
@@ -16,7 +16,10 @@ var __copyProps = (to, from, except, desc) => {
16
16
  }
17
17
  return to;
18
18
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
20
23
 
21
24
  // node_modules/universal-user-agent/dist-node/index.js
22
25
  var require_dist_node = __commonJS({
@@ -6089,11 +6092,14 @@ var require_lib3 = __commonJS({
6089
6092
  blob() {
6090
6093
  let ct = this.headers && this.headers.get("content-type") || "";
6091
6094
  return consumeBody.call(this).then(function(buf) {
6092
- return Object.assign(new Blob([], {
6093
- type: ct.toLowerCase()
6094
- }), {
6095
- [BUFFER]: buf
6096
- });
6095
+ return Object.assign(
6096
+ new Blob([], {
6097
+ type: ct.toLowerCase()
6098
+ }),
6099
+ {
6100
+ [BUFFER]: buf
6101
+ }
6102
+ );
6097
6103
  });
6098
6104
  },
6099
6105
  json() {
@@ -7150,12 +7156,15 @@ var require_dist_node5 = __commonJS({
7150
7156
  let status;
7151
7157
  let url;
7152
7158
  const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
7153
- return fetch(requestOptions.url, Object.assign({
7154
- method: requestOptions.method,
7155
- body: requestOptions.body,
7156
- headers: requestOptions.headers,
7157
- redirect: requestOptions.redirect
7158
- }, requestOptions.request)).then(async (response2) => {
7159
+ return fetch(requestOptions.url, Object.assign(
7160
+ {
7161
+ method: requestOptions.method,
7162
+ body: requestOptions.body,
7163
+ headers: requestOptions.headers,
7164
+ redirect: requestOptions.redirect
7165
+ },
7166
+ requestOptions.request
7167
+ )).then(async (response2) => {
7159
7168
  url = response2.url;
7160
7169
  status = response2.status;
7161
7170
  for (const keyAndValue of response2.headers) {
@@ -8885,6 +8894,9 @@ async function handleRoot(event, setupToken) {
8885
8894
  }
8886
8895
  function decodeBody(event) {
8887
8896
  let body = event.body;
8897
+ if (!body) {
8898
+ throw new Error("No body found");
8899
+ }
8888
8900
  if (event.isBase64Encoded) {
8889
8901
  body = Buffer.from(body, "base64").toString("utf-8");
8890
8902
  }
@@ -8914,6 +8926,9 @@ async function handlePat(event) {
8914
8926
  return response(200, "Personal access token set");
8915
8927
  }
8916
8928
  async function handleNewApp(event) {
8929
+ if (!event.queryStringParameters) {
8930
+ return response(400, "Invalid code");
8931
+ }
8917
8932
  const code = event.queryStringParameters.code;
8918
8933
  if (!code) {
8919
8934
  return response(400, "Invalid code");