checkly 0.0.0-pr.686.4c0f5e3

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.
Files changed (228) hide show
  1. package/README.md +43 -0
  2. package/bin/dev +17 -0
  3. package/bin/run +5 -0
  4. package/bin/run.cmd +3 -0
  5. package/constructs.d.ts +1 -0
  6. package/constructs.js +1 -0
  7. package/dist/auth/index.d.ts +15 -0
  8. package/dist/auth/index.js +228 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/commands/authCommand.d.ts +5 -0
  11. package/dist/commands/authCommand.js +14 -0
  12. package/dist/commands/authCommand.js.map +1 -0
  13. package/dist/commands/baseCommand.d.ts +9 -0
  14. package/dist/commands/baseCommand.js +21 -0
  15. package/dist/commands/baseCommand.js.map +1 -0
  16. package/dist/commands/deploy.d.ts +13 -0
  17. package/dist/commands/deploy.js +171 -0
  18. package/dist/commands/deploy.js.map +1 -0
  19. package/dist/commands/destroy.d.ts +10 -0
  20. package/dist/commands/destroy.js +47 -0
  21. package/dist/commands/destroy.js.map +1 -0
  22. package/dist/commands/env/add.d.ts +13 -0
  23. package/dist/commands/env/add.js +54 -0
  24. package/dist/commands/env/add.js.map +1 -0
  25. package/dist/commands/env/ls.d.ts +6 -0
  26. package/dist/commands/env/ls.js +21 -0
  27. package/dist/commands/env/ls.js.map +1 -0
  28. package/dist/commands/env/pull.d.ts +12 -0
  29. package/dist/commands/env/pull.js +63 -0
  30. package/dist/commands/env/pull.js.map +1 -0
  31. package/dist/commands/env/rm.d.ts +12 -0
  32. package/dist/commands/env/rm.js +56 -0
  33. package/dist/commands/env/rm.js.map +1 -0
  34. package/dist/commands/env/update.d.ts +13 -0
  35. package/dist/commands/env/update.js +54 -0
  36. package/dist/commands/env/update.js.map +1 -0
  37. package/dist/commands/login.d.ts +13 -0
  38. package/dist/commands/login.js +129 -0
  39. package/dist/commands/login.js.map +1 -0
  40. package/dist/commands/logout.d.ts +9 -0
  41. package/dist/commands/logout.js +40 -0
  42. package/dist/commands/logout.js.map +1 -0
  43. package/dist/commands/runtimes.d.ts +6 -0
  44. package/dist/commands/runtimes.js +26 -0
  45. package/dist/commands/runtimes.js.map +1 -0
  46. package/dist/commands/switch.d.ts +9 -0
  47. package/dist/commands/switch.js +59 -0
  48. package/dist/commands/switch.js.map +1 -0
  49. package/dist/commands/test.d.ts +36 -0
  50. package/dist/commands/test.js +237 -0
  51. package/dist/commands/test.js.map +1 -0
  52. package/dist/commands/trigger.d.ts +32 -0
  53. package/dist/commands/trigger.js +173 -0
  54. package/dist/commands/trigger.js.map +1 -0
  55. package/dist/commands/whoami.d.ts +6 -0
  56. package/dist/commands/whoami.js +16 -0
  57. package/dist/commands/whoami.js.map +1 -0
  58. package/dist/config.d.ts +31 -0
  59. package/dist/config.js +8 -0
  60. package/dist/config.js.map +1 -0
  61. package/dist/constructs/alert-channel-subscription.d.ts +44 -0
  62. package/dist/constructs/alert-channel-subscription.js +39 -0
  63. package/dist/constructs/alert-channel-subscription.js.map +1 -0
  64. package/dist/constructs/alert-channel.d.ts +53 -0
  65. package/dist/constructs/alert-channel.js +55 -0
  66. package/dist/constructs/alert-channel.js.map +1 -0
  67. package/dist/constructs/api-check.d.ts +179 -0
  68. package/dist/constructs/api-check.js +248 -0
  69. package/dist/constructs/api-check.js.map +1 -0
  70. package/dist/constructs/browser-check.d.ts +59 -0
  71. package/dist/constructs/browser-check.js +102 -0
  72. package/dist/constructs/browser-check.js.map +1 -0
  73. package/dist/constructs/check-group.d.ts +116 -0
  74. package/dist/constructs/check-group.js +113 -0
  75. package/dist/constructs/check-group.js.map +1 -0
  76. package/dist/constructs/check.d.ts +111 -0
  77. package/dist/constructs/check.js +88 -0
  78. package/dist/constructs/check.js.map +1 -0
  79. package/dist/constructs/construct.d.ts +17 -0
  80. package/dist/constructs/construct.js +22 -0
  81. package/dist/constructs/construct.js.map +1 -0
  82. package/dist/constructs/email-alert-channel.d.ts +26 -0
  83. package/dist/constructs/email-alert-channel.js +37 -0
  84. package/dist/constructs/email-alert-channel.js.map +1 -0
  85. package/dist/constructs/environment-variable.d.ts +2 -0
  86. package/dist/constructs/environment-variable.js +3 -0
  87. package/dist/constructs/environment-variable.js.map +1 -0
  88. package/dist/constructs/frequency.d.ts +20 -0
  89. package/dist/constructs/frequency.js +26 -0
  90. package/dist/constructs/frequency.js.map +1 -0
  91. package/dist/constructs/http-header.d.ts +2 -0
  92. package/dist/constructs/http-header.js +3 -0
  93. package/dist/constructs/http-header.js.map +1 -0
  94. package/dist/constructs/index.d.ts +15 -0
  95. package/dist/constructs/index.js +32 -0
  96. package/dist/constructs/index.js.map +1 -0
  97. package/dist/constructs/key-value-pair.d.ts +5 -0
  98. package/dist/constructs/key-value-pair.js +3 -0
  99. package/dist/constructs/key-value-pair.js.map +1 -0
  100. package/dist/constructs/opsgenie-alert-channel.d.ts +45 -0
  101. package/dist/constructs/opsgenie-alert-channel.js +44 -0
  102. package/dist/constructs/opsgenie-alert-channel.js.map +1 -0
  103. package/dist/constructs/pagerduty-alert-channel.d.ts +39 -0
  104. package/dist/constructs/pagerduty-alert-channel.js +42 -0
  105. package/dist/constructs/pagerduty-alert-channel.js.map +1 -0
  106. package/dist/constructs/project.d.ts +57 -0
  107. package/dist/constructs/project.js +100 -0
  108. package/dist/constructs/project.js.map +1 -0
  109. package/dist/constructs/query-param.d.ts +2 -0
  110. package/dist/constructs/query-param.js +3 -0
  111. package/dist/constructs/query-param.js.map +1 -0
  112. package/dist/constructs/ref.d.ts +5 -0
  113. package/dist/constructs/ref.js +13 -0
  114. package/dist/constructs/ref.js.map +1 -0
  115. package/dist/constructs/slack-alert-channel.d.ts +26 -0
  116. package/dist/constructs/slack-alert-channel.js +40 -0
  117. package/dist/constructs/slack-alert-channel.js.map +1 -0
  118. package/dist/constructs/sms-alert-channel.d.ts +27 -0
  119. package/dist/constructs/sms-alert-channel.js +38 -0
  120. package/dist/constructs/sms-alert-channel.js.map +1 -0
  121. package/dist/constructs/validator-error.d.ts +2 -0
  122. package/dist/constructs/validator-error.js +7 -0
  123. package/dist/constructs/validator-error.js.map +1 -0
  124. package/dist/constructs/webhook-alert-channel.d.ts +59 -0
  125. package/dist/constructs/webhook-alert-channel.js +50 -0
  126. package/dist/constructs/webhook-alert-channel.js.map +1 -0
  127. package/dist/help/examples.d.ts +6 -0
  128. package/dist/help/examples.js +22 -0
  129. package/dist/help/examples.js.map +1 -0
  130. package/dist/help/help-extension.d.ts +4 -0
  131. package/dist/help/help-extension.js +41 -0
  132. package/dist/help/help-extension.js.map +1 -0
  133. package/dist/index.d.ts +3 -0
  134. package/dist/index.js +7 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/messages/common-messages.d.ts +5 -0
  137. package/dist/messages/common-messages.js +9 -0
  138. package/dist/messages/common-messages.js.map +1 -0
  139. package/dist/reporters/abstract-list.d.ts +35 -0
  140. package/dist/reporters/abstract-list.js +135 -0
  141. package/dist/reporters/abstract-list.js.map +1 -0
  142. package/dist/reporters/ci.d.ts +12 -0
  143. package/dist/reporters/ci.js +29 -0
  144. package/dist/reporters/ci.js.map +1 -0
  145. package/dist/reporters/dot.d.ts +12 -0
  146. package/dist/reporters/dot.js +28 -0
  147. package/dist/reporters/dot.js.map +1 -0
  148. package/dist/reporters/github.d.ts +34 -0
  149. package/dist/reporters/github.js +95 -0
  150. package/dist/reporters/github.js.map +1 -0
  151. package/dist/reporters/list.d.ts +14 -0
  152. package/dist/reporters/list.js +56 -0
  153. package/dist/reporters/list.js.map +1 -0
  154. package/dist/reporters/reporter.d.ts +15 -0
  155. package/dist/reporters/reporter.js +23 -0
  156. package/dist/reporters/reporter.js.map +1 -0
  157. package/dist/reporters/util.d.ts +15 -0
  158. package/dist/reporters/util.js +283 -0
  159. package/dist/reporters/util.js.map +1 -0
  160. package/dist/rest/accounts.d.ts +12 -0
  161. package/dist/rest/accounts.js +15 -0
  162. package/dist/rest/accounts.js.map +1 -0
  163. package/dist/rest/api.d.ts +27 -0
  164. package/dist/rest/api.js +90 -0
  165. package/dist/rest/api.js.map +1 -0
  166. package/dist/rest/assets.d.ts +13 -0
  167. package/dist/rest/assets.js +30 -0
  168. package/dist/rest/assets.js.map +1 -0
  169. package/dist/rest/environment-variables.d.ts +16 -0
  170. package/dist/rest/environment-variables.js +25 -0
  171. package/dist/rest/environment-variables.js.map +1 -0
  172. package/dist/rest/locations.d.ts +11 -0
  173. package/dist/rest/locations.js +12 -0
  174. package/dist/rest/locations.js.map +1 -0
  175. package/dist/rest/private-locations.d.ts +11 -0
  176. package/dist/rest/private-locations.js +12 -0
  177. package/dist/rest/private-locations.js.map +1 -0
  178. package/dist/rest/projects.d.ts +43 -0
  179. package/dist/rest/projects.js +24 -0
  180. package/dist/rest/projects.js.map +1 -0
  181. package/dist/rest/runtimes.d.ts +15 -0
  182. package/dist/rest/runtimes.js +15 -0
  183. package/dist/rest/runtimes.js.map +1 -0
  184. package/dist/rest/test-sessions.d.ts +57 -0
  185. package/dist/rest/test-sessions.js +21 -0
  186. package/dist/rest/test-sessions.js.map +1 -0
  187. package/dist/rest/users.d.ts +12 -0
  188. package/dist/rest/users.js +12 -0
  189. package/dist/rest/users.js.map +1 -0
  190. package/dist/services/abstract-check-runner.d.ts +55 -0
  191. package/dist/services/abstract-check-runner.js +154 -0
  192. package/dist/services/abstract-check-runner.js.map +1 -0
  193. package/dist/services/check-parser/collector.d.ts +33 -0
  194. package/dist/services/check-parser/collector.js +48 -0
  195. package/dist/services/check-parser/collector.js.map +1 -0
  196. package/dist/services/check-parser/errors.d.ts +8 -0
  197. package/dist/services/check-parser/errors.js +45 -0
  198. package/dist/services/check-parser/errors.js.map +1 -0
  199. package/dist/services/check-parser/parser.d.ts +39 -0
  200. package/dist/services/check-parser/parser.js +296 -0
  201. package/dist/services/check-parser/parser.js.map +1 -0
  202. package/dist/services/checkly-config-loader.d.ts +54 -0
  203. package/dist/services/checkly-config-loader.js +55 -0
  204. package/dist/services/checkly-config-loader.js.map +1 -0
  205. package/dist/services/config.d.ts +24 -0
  206. package/dist/services/config.js +75 -0
  207. package/dist/services/config.js.map +1 -0
  208. package/dist/services/project-parser.d.ts +19 -0
  209. package/dist/services/project-parser.js +87 -0
  210. package/dist/services/project-parser.js.map +1 -0
  211. package/dist/services/socket-client.d.ts +4 -0
  212. package/dist/services/socket-client.js +20 -0
  213. package/dist/services/socket-client.js.map +1 -0
  214. package/dist/services/test-filters.d.ts +2 -0
  215. package/dist/services/test-filters.js +16 -0
  216. package/dist/services/test-filters.js.map +1 -0
  217. package/dist/services/test-runner.d.ts +21 -0
  218. package/dist/services/test-runner.js +50 -0
  219. package/dist/services/test-runner.js.map +1 -0
  220. package/dist/services/trigger-runner.d.ts +26 -0
  221. package/dist/services/trigger-runner.js +47 -0
  222. package/dist/services/trigger-runner.js.map +1 -0
  223. package/dist/services/util.d.ts +30 -0
  224. package/dist/services/util.js +157 -0
  225. package/dist/services/util.js.map +1 -0
  226. package/dist/tsconfig.tsbuildinfo +1 -0
  227. package/oclif.manifest.json +527 -0
  228. package/package.json +174 -0
package/README.md ADDED
@@ -0,0 +1,43 @@
1
+ The Checkly CLI gives you a **JavaScript/TypeScript-native workflow** for coding, testing and deploying synthetic
2
+ monitoring at scale, from your code base. We call this workflow **monitoring as code** (MaC).
3
+
4
+ - **Unite E2E testing & monitoring in one workflow.** No more silos between Dev, QA and Ops.
5
+ - **Codeable, testable, reviewable.** Works with your dev pipeline. From your IDE, via PR to CI.
6
+ - **Native `@playwright/test` support.** No lock-in, just write standard `*.spec.ts` files.
7
+ - **Alerting baked in.** Set alerts for Slack, SMS and many more channels.
8
+ - **Typescript-first.** Fully typed for easy refactoring and code completion.
9
+ - **Run in the cloud or on-prem.** Run on the Checkly cloud or in your network using the [Private Locations](https://www.checklyhq.com/docs/private-locations/)
10
+
11
+
12
+ # Installation
13
+
14
+ First, make sure you sign up for a [free Checkly account](https://app.checklyhq.com/signup) or signup via the terminal using
15
+ `npx checkly login`.
16
+
17
+ Then, the **easiest** way to get started is to install the CLI using the following command:
18
+
19
+ ```bash
20
+ npm create checkly
21
+ ```
22
+ This command will guide you through some simple steps and set up a fully working example project for you. Should take
23
+ ~1 minute.
24
+
25
+ You can also set up the CLI **from scratch** by running:
26
+
27
+ ```bash
28
+ npm install --save-dev checkly
29
+ ```
30
+
31
+ # Docs
32
+
33
+ Official docs are over at [checklyhq.com/docs/cli](https://checklyhq.com/docs/cli/)
34
+
35
+ ## Need help?
36
+
37
+ - Check out our [Getting Started Guide](https://checklyhq.com/docs/cli/)
38
+ - Join our [Slack Community](https://checklyhq.com/slack). The devs who built this hang out there.
39
+ - Found a bug? [File an issue on this repo](https://github.com/checkly/checkly-cli/issues/new/choose)
40
+
41
+ # Local Development
42
+
43
+ To get started with local development check [CONTRIBUTING.MD](https://github.com/checkly/checkly-cli/blob/main/CONTRIBUTING.md)
package/bin/dev ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ const oclif = require('@oclif/core')
4
+
5
+ const path = require('path')
6
+ const project = path.join(__dirname, '..', 'tsconfig.json')
7
+
8
+ // In dev mode -> use ts-node and dev plugins
9
+ process.env.NODE_ENV = 'development'
10
+
11
+ require('ts-node').register({project})
12
+
13
+ // In dev mode, always show stack traces
14
+ oclif.settings.debug = true;
15
+
16
+ // Start the CLI
17
+ oclif.run().then(oclif.flush).catch(oclif.Errors.handle)
package/bin/run ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ const oclif = require('@oclif/core')
4
+
5
+ oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'))
package/bin/run.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
@@ -0,0 +1 @@
1
+ export * from './dist/constructs'
package/constructs.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist').constructs
@@ -0,0 +1,15 @@
1
+ export type AuthMode = 'signup' | 'login';
2
+ export declare function generatePKCE(): {
3
+ codeChallenge: string;
4
+ codeVerifier: string;
5
+ };
6
+ export declare class AuthContext {
7
+ #private;
8
+ private mode;
9
+ authenticationUrl: string;
10
+ constructor(mode: AuthMode);
11
+ getAuth0Credentials(): Promise<{
12
+ name: any;
13
+ key: any;
14
+ }>;
15
+ }
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _AuthContext_instances, _AuthContext_codeChallenge, _AuthContext_codeVerifier, _AuthContext_accessToken, _AuthContext_idToken, _AuthContext_generateAuthenticationUrl, _AuthContext_startServer, _AuthContext_fetchAccessToken, _AuthContext_getApiKey, _AuthContext_fetchUser, _AuthContext_registerUser, _AuthContext_axiosInstance_get;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AuthContext = exports.generatePKCE = void 0;
16
+ const axios_1 = require("axios");
17
+ const os = require("os");
18
+ const http = require("http");
19
+ const crypto = require("crypto");
20
+ const jwt_decode_1 = require("jwt-decode");
21
+ const api_1 = require("../rest/api");
22
+ const fs = require("fs");
23
+ const path = require("path");
24
+ const AUTH0_CLIENT_ID = 'mBtwLFVm39GVZ1HpSRBSdRiLFucYxmMb';
25
+ const AUTH0_AUTHORIZATION_URL = 'https://auth.checklyhq.com/authorize';
26
+ const AUTH0_SCOPES = 'openid profile email';
27
+ const AUTH0_CALLBACK_URL = 'http://localhost:4242';
28
+ function generatePKCE() {
29
+ const codeVerifier = crypto
30
+ .randomBytes(64)
31
+ .toString('base64')
32
+ .replace(/\+/g, '-')
33
+ .replace(/\//g, '_')
34
+ .replace(/=+$/, '');
35
+ const codeChallenge = crypto
36
+ .createHash('sha256')
37
+ .update(codeVerifier)
38
+ .digest('base64')
39
+ .replace(/\+/g, '-')
40
+ .replace(/\//g, '_')
41
+ .replace(/=+$/, '');
42
+ return {
43
+ codeChallenge,
44
+ codeVerifier,
45
+ };
46
+ }
47
+ exports.generatePKCE = generatePKCE;
48
+ class AuthContext {
49
+ constructor(mode) {
50
+ this.mode = mode;
51
+ _AuthContext_instances.add(this);
52
+ _AuthContext_codeChallenge.set(this, void 0);
53
+ _AuthContext_codeVerifier.set(this, void 0);
54
+ _AuthContext_accessToken.set(this, void 0);
55
+ _AuthContext_idToken.set(this, void 0);
56
+ const { codeChallenge, codeVerifier } = generatePKCE();
57
+ __classPrivateFieldSet(this, _AuthContext_codeChallenge, codeChallenge, "f");
58
+ __classPrivateFieldSet(this, _AuthContext_codeVerifier, codeVerifier, "f");
59
+ this.authenticationUrl = __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_generateAuthenticationUrl).call(this);
60
+ }
61
+ async getAuth0Credentials() {
62
+ await __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_fetchAccessToken).call(this);
63
+ if (!__classPrivateFieldGet(this, _AuthContext_accessToken, "f") || !__classPrivateFieldGet(this, _AuthContext_idToken, "f")) {
64
+ throw new Error('There was an unexpected error retrieving Auth0 token. Please try again or contact ' +
65
+ 'support@checklyhq.com if this problem persists');
66
+ }
67
+ const { name } = (0, jwt_decode_1.default)(__classPrivateFieldGet(this, _AuthContext_idToken, "f"));
68
+ const { key } = await __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_getApiKey).call(this);
69
+ return {
70
+ name,
71
+ key,
72
+ };
73
+ }
74
+ }
75
+ exports.AuthContext = AuthContext;
76
+ _AuthContext_codeChallenge = new WeakMap(), _AuthContext_codeVerifier = new WeakMap(), _AuthContext_accessToken = new WeakMap(), _AuthContext_idToken = new WeakMap(), _AuthContext_instances = new WeakSet(), _AuthContext_generateAuthenticationUrl = function _AuthContext_generateAuthenticationUrl() {
77
+ const url = new URL(AUTH0_AUTHORIZATION_URL);
78
+ const params = new URLSearchParams({
79
+ client_id: AUTH0_CLIENT_ID,
80
+ code_challenge: __classPrivateFieldGet(this, _AuthContext_codeChallenge, "f"),
81
+ code_challenge_method: 'S256',
82
+ response_type: 'code',
83
+ redirect_uri: AUTH0_CALLBACK_URL,
84
+ scope: AUTH0_SCOPES,
85
+ state: __classPrivateFieldGet(this, _AuthContext_codeVerifier, "f"),
86
+ mode: this.mode === 'signup' ? 'signUp' : '',
87
+ allowLogin: this.mode === 'signup' ? 'false' : 'true',
88
+ allowSignUp: this.mode === 'signup' ? 'true' : 'false',
89
+ });
90
+ url.search = params.toString();
91
+ return url.toString();
92
+ }, _AuthContext_startServer = function _AuthContext_startServer() {
93
+ return new Promise((resolve, reject) => {
94
+ const server = http.createServer();
95
+ server.on('request', (req, res) => {
96
+ var _a, _b, _c;
97
+ if ((_a = req.url) === null || _a === void 0 ? void 0 : _a.endsWith('.svg')) {
98
+ res.writeHead(200, { 'Content-Type': 'image/svg+xml' });
99
+ fs.readFile(path.join(__dirname, `.${req.url}`), 'utf8', (err, data) => {
100
+ if (!err)
101
+ res.end(data);
102
+ });
103
+ // `req.url` has a '/' char at the beginning which needs removed to be valid searchParams input
104
+ }
105
+ else if (!((_b = req.url) === null || _b === void 0 ? void 0 : _b.includes('favicon.ico'))) {
106
+ const responseParams = new URLSearchParams((_c = req.url) === null || _c === void 0 ? void 0 : _c.substring(1));
107
+ const code = responseParams.get('code');
108
+ const state = responseParams.get('state');
109
+ const error = responseParams.get('error');
110
+ const errorDescription = responseParams.get('error_description');
111
+ if (code && state === __classPrivateFieldGet(this, _AuthContext_codeVerifier, "f")) {
112
+ res.write(`
113
+ <html>
114
+ <style>
115
+ html {
116
+ font-family: Inter, system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;
117
+ font-size: 16px;
118
+ }
119
+ @keyframes slide-in-top {
120
+ 0% {
121
+ transform: translateY(-100px);
122
+ opacity: 0;
123
+ }
124
+ 100% {
125
+ transform: translateY(0);
126
+ opacity: 1;
127
+ }
128
+ }
129
+ .slide-in {
130
+ animation: slide-in-top 1s cubic-bezier(0.230, 1.000, 0.320, 1.000) both;
131
+ }
132
+ </style>
133
+ <body>
134
+ <div style="height:100%;width:100%;inset:0;position:absolute;display:grid;place-items:center;background-color:#EFF2F7;text-align:center;">
135
+ <div>
136
+ <img class="slide-in" style="width: 140px; height: 140px;" src='data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwIDEyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCI+CiAgPHBhdGggZD0iTTEwNC43NzYgMzUuMzg3Yy0uMjg1LS41OS0uNzAyLTEuMTI2LTEuMzIyLTEuNDctLjY4Mi0uMzc0LTEuNDMtLjQzNy0yLjEyOS0uMzEzbC0uMDQ5LS4wMjZDOTAuNzY4IDM1LjQgODAuMTY1IDQzLjQzMiA3My43NyA1NS43NDVjLTYuODg5IDEzLjI2OC02Ljk5IDI3LjgzNS0xLjM3NiAzNy44MDQgMTEuMjc1LS45MiAyMy4wNDctOS4yMjUgMjkuOTM4LTIyLjQ5MiA2LjQyMS0xMi4zNTIgNi45MzgtMjUuODIyIDIuNDQ1LTM1LjY3MXYuMDAxWiIgZmlsbD0iIzgyOGQ4YyIvPgogIDxwYXRoIGQ9Ik0xMDEuMjU1IDM0Ljk2M0M5MC45IDM2Ljg2IDgwLjg0NCA0NS4wNDUgNzQuOTU1IDU2LjM4MWMtNi4yMzMgMTItNi45MTMgMjUuOTA3LTEuODE0IDM1LjcyNkM4NCA5MC44NCA5NC45MTQgODIuNDIzIDEwMS4xNDUgNzAuNDIyYzUuOTU4LTExLjQ2IDYuODgyLTI0LjY2NCAyLjQxNC0zNC40NjUtLjE4OC0uMzg0LS40MzgtLjY3Mi0uNzQ2LS44NDItLjM4Ni0uMi0uODMtLjI1OC0xLjI1NS0uMTY5LS4xLjAxOS0uMjAyLjAyNS0uMzAzLjAxN1pNNzIuMzkzIDk0LjkxMWMtLjQ4MiAwLS45My0uMjY0LTEuMTY0LS42ODctNi4wODMtMTAuODA0LTUuNTY1LTI1Ljc5MiAxLjM1NC0zOS4xMTUgNi40MTEtMTIuMzQ0IDE3LjA1NC0yMC44OTUgMjguNDY4LTIyLjg3NS4xMDktLjAyLjIyLS4wMjQuMzMtLjAxNGE0LjUwMiA0LjUwMiAwIDAgMSAyLjcxLjUwMWMuODA2LjQ0NSAxLjQ0IDEuMTM5IDEuODg2IDIuMDY0IDQuODI3IDEwLjU4IDMuODggMjQuNzEyLTIuNDYgMzYuOTA4Qzk2LjU5NyA4NS4wMTMgODQuNzEyIDkzLjkxIDcyLjUgOTQuOTA2bC0uMTA4LjAwNVoiIGZpbGw9IiMxMjE3MTYiLz4KICA8cGF0aCBkPSJNOTkuODU3IDQxLjE2NmEzNS43MzUgMzUuNzM1IDAgMCAxIDcuNzEyIDUuNjY2Yy0uMzA4LTQuMTE3LTEuMjI1LTguMDEtMi43OTMtMTEuNDQ2LS4yODUtLjU4OC0uNzAyLTEuMTI1LTEuMzIyLTEuNDY4LS42ODQtLjM3NS0xLjQzLS40MzgtMi4xMjktLjMxNGwtLjA0OS0uMDI2Yy0zLjYyMy42My03LjI0NyAyLjA0NS0xMC43MTggNC4wNjZhMzUuNTcgMzUuNTcgMCAwIDEgOS4zIDMuNTIyWm0tMTYuNDMxIDMuMDAxYTY5LjY0OSA2OS42NDkgMCAwIDAtNy45MTcgOS40NzRjNS4xNzktLjM2MSAxMC44OTguOTEyIDE2LjA4IDQgNS4xNTYgMy4wNjQgOS4wMjcgNy40OSAxMS4yNDcgMTIuMjNhNzAuMTMgNzAuMTMgMCAwIDAgNC4xNzktMTEuNzgzYy0yLjY5NC0zLjU1NS02LjE3NS02LjcxMy0xMC4zNzQtOS4yMTQtNC4yNzItMi41NDgtOC43NjktNC4wOC0xMy4yMTUtNC43MDh2LjAwMVpNNzAuMDcgNjAuODkyYTg1LjUyIDg1LjUyIDAgMCAwLTQuNDcyIDEwLjQwNCAyNi4zMDIgMjYuMzAyIDAgMCAxIDE0LjQ4IDMuOTg1YzQuNjE4IDIuODUyIDYuNjggNy4xOSA4Ljc4NiAxMS42NTMgNC4xNi0yLjA0IDYuMTkzLTUuOTQ1IDguNDA4LTkuMTdBMzMuMjQ0IDMzLjI0NCAwIDAgMCA4NS43NyA2NS43OWEzMi42MjMgMzIuNjIzIDAgMCAwLTE1LjctNC44OThaIiBmaWxsPSIjMTIxNzE2Ii8+CiAgPHBhdGggZD0iTTMyLjA4OCAyMi43OWM0LjM4NSA0LjQ1MiA1LjU2IDEwLjQ4IDIuNjIzIDEzLjQ2My0yLjkzNCAyLjk4Mi04Ljg3IDEuNzktMTMuMjUzLTIuNjY2LTQuMzgyLTQuNDUxLTUuNTU3LTEwLjQ4LTIuNjIzLTEzLjQ2NCAyLjkzNi0yLjk4IDguODctMS43ODYgMTMuMjUzIDIuNjY2WiIgZmlsbD0iIzgyOGQ4YyIvPgogIDxwYXRoIGQ9Ik0yOS4xOCAyNS43NDVjMi4yMDMgMi4yMjggMi45MDUgNS4xNCAxLjU3OCA2LjQ4Ni0xLjMzNSAxLjM1NC00LjE5Ny42NDItNi4zOTYtMS41OTQtMi4xOTYtMi4yMzQtMi44OTctNS4xMzctMS41NjctNi40ODkgMS4zMzMtMS4zNTQgNC4xODctLjYzOSA2LjM4NiAxLjU5NXYuMDAyWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik0yMy4xMjQgMTkuODQ2Yy0uOTY1IDAtMi4zMy4yMTQtMy4zNCAxLjI0LTIuMzY4IDIuNDA3LTEuMTY1IDcuNjkzIDIuNjIzIDExLjU0IDIuNDA3IDIuNDQ3IDUuNDAzIDMuOTA4IDguMDE0IDMuOTA4Ljk2NSAwIDIuMzMyLS4yMTUgMy4zNDEtMS4yNDIgMS4wOTYtMS4xMTIgMS40NzQtMi44NzEgMS4wNy00Ljk1My0uNDQ2LTIuMjgzLTEuNzU4LTQuNjItMy42OTMtNi41ODYtMi40MDctMi40NDctNS40MDMtMy45MDctOC4wMTUtMy45MDdabTcuMjk3IDE5LjQxMmMtMy4zMDcgMC03LjAxMi0xLjc2LTkuOTEtNC43MDYtNC45ODItNS4wNjItNi4xMzMtMTEuODIyLTIuNjIzLTE1LjM5IDEuMzE1LTEuMzM2IDMuMTIzLTIuMDM5IDUuMjM2LTIuMDM5IDMuMzA3IDAgNy4wMSAxLjc1NyA5LjkxIDQuNzA0IDIuMzA4IDIuMzQxIDMuODc3IDUuMTc3IDQuNDI2IDcuOTgzLjU4NyAzLjAwMy0uMDU1IDUuNjMzLTEuODAyIDcuNDA3LTEuMzEzIDEuMzM2LTMuMTI2IDIuMDQtNS4yMzcgMi4wNFoiIGZpbGw9IiMxMjE3MTYiLz4KICA8cGF0aCBkPSJNNzIuMzkyIDIyLjc5Yy00LjM4NCA0LjQ1Mi01LjU2IDEwLjQ4MS0yLjYyMyAxMy40NjMgMi45MzUgMi45ODIgOC44NyAxLjc5IDEzLjI1Mi0yLjY2NiA0LjM4Mi00LjQ1MSA1LjU1OC0xMC40OCAyLjYyMy0xMy40NjItMi45MzQtMi45ODItOC44Ny0xLjc4OC0xMy4yNTIgMi42NjRaIiBmaWxsPSIjODI4ZDhjIi8+CiAgPHBhdGggZD0iTTc1LjI5OSAyNS43NDVjLTIuMjAyIDIuMjI4LTIuOTA0IDUuMTQtMS41NzcgNi40ODYgMS4zMzYgMS4zNTQgNC4xOTguNjQyIDYuMzk2LTEuNTk0IDIuMTk3LTIuMjM0IDIuODk5LTUuMTM3IDEuNTY5LTYuNDg5LTEuMzM0LTEuMzU0LTQuMTktLjYzOS02LjM4OCAxLjU5NXYuMDAyWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik03My4zNCAyMy43NTNjLTEuOTM1IDEuOTY2LTMuMjQ2IDQuMzA0LTMuNjkgNi41ODYtLjQwNyAyLjA4NC0uMDI3IDMuODQxIDEuMDY3IDQuOTUzIDEuMDExIDEuMDI3IDIuMzc4IDEuMjQyIDMuMzQ0IDEuMjQyIDIuNjA5IDAgNS42MDQtMS40NiA4LjAxMy0zLjkwOCAzLjc4OC0zLjg0OSA0Ljk5LTkuMTMyIDIuNjIzLTExLjUzOC0xLjAxLTEuMDI2LTIuMzc1LTEuMjQtMy4zNC0xLjI0LTIuNjE0IDAtNS42MDggMS40NTgtOC4wMTcgMy45MDd2LS4wMDJabS00LjUxOCAxMy40NjRjLTEuNzQ3LTEuNzczLTIuMzg3LTQuNDA0LTEuOC03LjQwNy41NDYtMi44MDYgMi4xMTctNS42NDIgNC40MjMtNy45ODMgMi45LTIuOTQ3IDYuNjA0LTQuNzA0IDkuOTEyLTQuNzA0IDIuMTEyIDAgMy45MjEuNzA1IDUuMjM0IDIuMDQgMy41MTIgMy41NjcgMi4zNiAxMC4zMjctMi42MjEgMTUuMzktMi45IDIuOTQ2LTYuNjA0IDQuNzAzLTkuOTEgNC43MDMtMi4xMTIgMC0zLjkyNC0uNzA0LTUuMjM4LTIuMDM4di0uMDAxWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik04MS44MzggMzMuODYzYy02LjkxLTkuNjg0LTE3LjU1Ni0xNi43NC0yOS41OTgtMTYuNzQtMTIuMDQ0IDAtMjIuNjg3IDcuMDU2LTI5LjU5OSAxNi43NC04LjQwNyAxMS43NzgtMTMuMjggMjguNDc0LTguMjc3IDQyLjU5NiA0LjIzNyAxMS45NjcgMTQuNDA2IDIxLjA1NyAyNi4zNjQgMjQuNTIxYTQxLjM1MSA0MS4zNTEgMCAwIDAgMTEuNTEyIDEuNjI0YzMuODg3IDAgNy43NzMtLjU0IDExLjUxLTEuNjI0IDExLjk2LTMuNDYzIDIyLjEzLTEyLjU1NSAyNi4zNjUtMjQuNTIgNS4wMDMtMTQuMTIzLjEzMi0zMC44MTktOC4yNzctNDIuNTk2di0uMDAxWiIgZmlsbD0iIzgyOGQ4YyIvPgogIDxwYXRoIGQ9Ik04NC42OTQgMzkuMjIxYy0uNDgtMS45MzQtMS42OTYtMy43Ny0yLjgzLTUuMzU4YTQ1LjMyNSA0NS4zMjUgMCAwIDAtNC44MTQtNS42ODNjLTYuMjQ5LTMuMDQ4LTEzLjM5Mi0zLjA0Mi0xOC44MzYuNjktMi44MzggMS45NDUtNC44MjcgNC42NjUtNS45NzQgNy43NjMtMS4xNDYtMy4wOTgtMy4xMzctNS44MTYtNS45NzQtNy43NjQtNS40NDYtMy43My0xMi41ODgtMy43MzctMTguODM2LS42OWE0NS4xOTYgNDUuMTk2IDAgMCAwLTQuODE1IDUuNjg0Yy0xLjEzNCAxLjU5LTIuMzUgMy40MjQtMi44MjggNS4zNTgtLjUwMSAyLjAxNS0xLjIyMiA0LjcxNi0xLjEyNyA2Ljc1NC4xNTQgMy4zMTUgMi4xNzMgNS43NTUgNC44MzggNy41MDguNjUxLjQzMiA3LjYyNCA1Ljg1MyA2Ljk3NSA2LjIzOC40OTEtLjI5MyAxLjExMi0uNjUgMS44MDMtMS4wMTl2LjYyYzIuNTI4LTEuNDk4IDYuMjA0LTMuMzMyIDguNjY1LTMuMDQ1bC4wMy4wMDRjLjA3My4wMS4xMy4wNC4xOTguMDU0LjY3OC4xOCAxLjI3Mi41MTYgMS43MjcgMS4wOCAxLjA1MyAxLjMgMS4xNDggMi44MDQuNzgyIDQuMjY0LjI3LS4yMDIuNTE0LS40NTguNzgtLjY3NC0uMDMxIDEuMDA3LS4yNTUgMS43Ny0uMjU1IDEuNzdsLS40NTguNjU0YzIuNzkyLjUzNSA1LjYyNi44MDUgOC40NjkuODAzaC4wNDFjMi45NDUgMCA1Ljc4MS0uMjg1IDguNDgtLjgwM2wtLjQ1OS0uNjU0cy0uMjI1LS43NjMtLjI1NC0xLjc3Yy4yNjUuMjE2LjUwOS40NzIuNzgxLjY3NC0uMzY3LTEuNDYtLjI3Mi0yLjk2My43OC00LjI2NC40NTUtLjU2NCAxLjA1LS45IDEuNzI3LTEuMDguMDctLjAxNC4xMjctLjA0Ni4xOTgtLjA1NGwuMDMtLjAwNGMyLjQ2MS0uMjg4IDYuMTM3IDEuNTQ3IDguNjY1IDMuMDQ2di0uNjJjLjY5MS4zNjggMS4zMTIuNzI1IDEuODA1IDEuMDE4LS42NS0uMzg2IDYuMzIyLTUuODA3IDYuOTcyLTYuMjM2IDIuNjY2LTEuNzU1IDQuNjg2LTQuMTk1IDQuODM5LTcuNTEuMDk1LTIuMDM4LS42MjUtNC43MzktMS4xMjUtNi43NTRaTTUyLjI0IDY5Ljc4M2MtMTAuMTUgMC0xOC4zNzIgMTAuMjktMTguMzcyIDIyLjk4MSAwIDIuNTM2LjM0IDQuOTY1Ljk0NSA3LjI0MyAxLjExLjMzNyAyLjIxLjcwMiAzLjM0OC45NzFhNjEuMTY3IDYxLjE2NyAwIDAgMCAxNC4wNzkgMS42MjVjNC43NTQgMCA5LjUwNi0uNTQgMTQuMDgtMS42MjUgMS4xMzgtLjI3IDIuMjM3LS42MzIgMy4zNDgtLjk3MS42MDUtMi4yNzguOTQ1LTQuNzA3Ljk0NS03LjI0MyAwLTEyLjY5Mi04LjIyNC0yMi45OC0xOC4zNzItMjIuOThoLS4wMDFaIiBmaWxsPSIjZWRlZGVhIi8+CiAgPHBhdGggZD0iTTU0LjMxMyA0OC45NTRhNi4wNiA2LjA2IDAgMCAxLTEuNC4yNjRjLjAzNi0uMDgzLjEwNS0uMTQ4LjEwNS0uMjR2LTEuODQ2Yy4wODMtLjA2Ni4xNzUtLjExMi4yNDgtLjIwMmwxLjQyNS0xLjc1Yy41NjMtLjY5MS4yOTgtMS4yNTgtLjU4Ni0xLjI1OGgtMy43MjhjLS44ODYgMC0xLjE1LjU2Ny0uNTg3IDEuMjU3bDEuNDI1IDEuNzVjLjEyLjE0Ni4yNjYuMjY2LjQzMi4zNTN2MS42OTZjMCAuMDkyLjA2NC4xNTcuMDk4LjI0YTYuMzQ3IDYuMzQ3IDAgMCAxLTEuMzk1LS4yNjRjLS41ODItLjE4OS0xLjc4My0uODk2LTEuOTQ5LjIwMnYuMmMwIDIuMiAxLjc1IDMuOTgyIDMuOTI2IDMuOTg2aC4wMWMyLjE3NS0uMDA0IDMuOTIzLTEuNzg2IDMuOTIzLTMuOTg3di0uMTk5Yy0uMTY0LTEuMDk4LTEuMzY1LS4zOS0xLjk0Ni0uMjAyaC0uMDAxWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik01Mi4yNCAxOC40ODJjLTEwLjc4MyAwLTIxLjE3NiA1LjktMjguNTEgMTYuMThDMTQuNDkyIDQ3LjU5OSAxMS4zMTEgNjMuODIzIDE1LjYyNiA3NmMzLjk2MiAxMS4xOTcgMTMuNzIyIDIwLjI2OCAyNS40NjkgMjMuNjdhNDAuNDc4IDQwLjQ3OCAwIDAgMCAyMi4yODYgMEM3NS4xMzIgOTYuMjY4IDg0Ljg5IDg3LjE5NyA4OC44NTQgNzZjNC4zMTUtMTIuMTc3IDEuMTM0LTI4LjQwMi04LjEtNDEuMzM3LTcuMzM5LTEwLjI4Mi0xNy43My0xNi4xOC0yOC41MTQtMTYuMThabTAgODUuNDg0Yy00LjAyLjAwNS04LjAxOS0uNTYtMTEuODgtMS42NzktMTIuNzUxLTMuNjkzLTIyLjk0LTEzLjE3NC0yNy4yNTktMjUuMzY2LTUuNTg4LTE1Ljc4LjcwNS0zMy4wMDIgOC40NTktNDMuODZDMjkuNDAzIDIyLjA2NiA0MC41ODcgMTUuNzYgNTIuMjM4IDE1Ljc2YzExLjY1MyAwIDIyLjgzNyA2LjMwNyAzMC42ODUgMTcuMzAyIDcuNzQ5IDEwLjg1OCAxNC4wNDMgMjguMDggOC40NTMgNDMuODYtNC4zMTYgMTIuMTkyLTE0LjUwNSAyMS42NzItMjcuMjU4IDI1LjM2NGE0Mi40OTcgNDIuNDk3IDAgMCAxLTExLjg3OCAxLjY3OHYuMDAzWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik00MS40NyAzMy4xODFhNy43MDQgNy43MDQgMCAwIDAtMy43NTEtLjkzNWMtMy43OTEgMC03LjU2NyAzLjIzNi05LjQxOCA1LjQxMi0zLjExIDMuNjU4LTUuOTkgMTEuMDE0LS4wMzggMTMuNTM4IDIuMTUxLjkxMyA0LjUyMyAxLjE4OSA2LjgzNyAxLjIzMiAyLjk1Ny4wNTggNi4xMTctLjAxMSA4LjQ0OS0yLjEyOSAyLjM2Ni0yLjE0OCAyLjc0OS01LjY2IDIuNTI4LTguNzA3LS4yODUtMy45NTgtMS45MjEtNi45NDgtNC42MDctOC40MTFaIiBmaWxsPSIjMTIxNzE2Ii8+CiAgPHBhdGggZD0iTTQxLjYxIDM5LjUzOGMtLjA0LS41Mi0uNjA1LTEuMDk1LS45MzQtMS4zOTRhMy45OTggMy45OTggMCAwIDAtMi42NS0xLjAxM2MtLjMxIDAtLjYyOC4wMzUtLjk1LjEwNC0xLjI0NS4yNjUtMi4yOTIgMS4wMjgtMi44NyAyLjA5NS0uMjIuNDA0LS41OTUgMS4yMS0uNDk5IDEuNjcuMDgxLjM4My40MzguNjQ3LjgwMi43MTQuNDg0LjA5LjY3NC0uMTQuOTA0LS41NGwuMTQ0LS4yNDNjLjctMS4xMDMgMS42OS0xLjcxIDIuNzg4LTEuNzEuNjEzIDAgLjk4OS4xOCAxLjU0Ni41NTYuMzY3LjI0OS43NjYuNzQ1IDEuMjY0LjQ3OC4zNTktLjE5My40NzUtLjQ0Ni40NTYtLjcxN1oiIGZpbGw9IiNmZmZmZmUiLz4KICA8cGF0aCBkPSJNNjMuMDEgMzMuMTgxYTcuNzEgNy43MSAwIDAgMSAzLjc1Mi0uOTM1YzMuNzkxIDAgNy41NjUgMy4yMzYgOS40MTYgNS40MTIgMy4xMTQgMy42NTggNS45OTMgMTEuMDE0LjA0IDEzLjUzOC0yLjE1MS45MTMtNC41MjUgMS4xODktNi44MzggMS4yMzItMi45NTYuMDU4LTYuMTE0LS4wMTEtOC40NDgtMi4xMjktMi4zNjctMi4xNDgtMi43NDktNS42Ni0yLjUyOC04LjcwNy4yODUtMy45NTggMS45Mi02Ljk0OCA0LjYwNi04LjQxMVoiIGZpbGw9IiMxMjE3MTYiLz4KICA8cGF0aCBkPSJNNjIuODY5IDM5LjUzOGMuMDQxLS41Mi42MDUtMS4wOTUuOTM1LTEuMzk0YTMuOTk4IDMuOTk4IDAgMCAxIDIuNjUtMS4wMTNjLjMxIDAgLjYyNy4wMzUuOTQ5LjEwNCAxLjI0Ni4yNjUgMi4yOTQgMS4wMjggMi44NzEgMi4wOTUuMjIxLjQwNC41OTUgMS4yMS40OTggMS42Ny0uMDguMzgzLS40MzguNjQ3LS44MDEuNzE0LS40ODQuMDktLjY3NC0uMTQtLjkwNC0uNTRsLS4xNDMtLjI0M2MtLjcwMS0xLjEwMy0xLjY5MS0xLjcxLTIuNzg4LTEuNzEtLjYxNiAwLS45OS4xOC0xLjU0OC41NTYtLjM2Ni4yNDktLjc2Ni43NDUtMS4yNjQuNDc4LS4zNTgtLjE5My0uNDc1LS40NDYtLjQ1NS0uNzE3WiIgZmlsbD0iI2ZmZmZmZSIvPgogIDxwYXRoIGQ9Ik02MC42NTIgMTguNjkyYy4wNjEtLjIwMi4xMjctLjM5OC4xODQtLjYxM2EzOS40NzggMzkuNDc4IDAgMCAwLTguNTk2LS45NTZjLTIuOTQgMC01LjgxMi4zMzctOC41OTYuOTU4LjA1Ny4yMTMuMTIyLjQwOS4xODQuNjExbC0xLjQ2NC4yNi4yMDYuNjMzLjA2NC40OTVjLjQyOC0uMTUzLjg4MS0uMjUgMS4zNjQtLjI1Ljc3OCAwIDEuNi4zMjUgMi4yNDEuNzU2IDIuNDE0IDEuNjQ5IDQuMTgyIDMuODcyIDUuMzc2IDYuMzkuMTMzLjE5NS4zMjYuMzQ5LjYwMi4zNDlhLjc1Ljc1IDAgMCAwIC42NTEtLjQwM2guMDIxYzEuMTk2LTIuNDk2IDIuOTUzLTQuNjk4IDUuMzUxLTYuMzM2LjY0Mi0uNDMgMS40NjMtLjc1NiAyLjI0Mi0uNzU2LjQ4NCAwIC45MzYuMDk5IDEuMzYzLjI1bC4wNjUtLjQ5NS4yMDUtLjYzMi0xLjQ2My0uMjYxWiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik01Mi4zMTYgMTA0LjI0YzE1LjUyMiAwIDI4LjEwNi0xMi41ODIgMjguMTA2LTI4LjEwNSAwLTE1LjUyMi0xMi41ODItMjguMTA3LTI4LjEwNi0yOC4xMDctMTUuNTIxIDAtMjguMTA2IDEyLjU4My0yOC4xMDYgMjguMTA3IDAgMTUuNTIxIDEyLjU4MyAyOC4xMDYgMjguMTA2IDI4LjEwNloiIGZpbGw9IiMxM2NlNjYiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSIjMWFiMzVlIiBzdHJva2Utd2lkdGg9IjMuMDY0NSIvPgogIDxwYXRoIGQ9Ik0yNS42MzcgNjQuMzM2Yy0uMzcxIDAtLjcyNS0uMTU2LS45NzYtLjQyOWExLjM4NCAxLjM4NCAwIDAgMSAuMDU4LTEuOTI2Yy4zMDYtLjI5MSAzLjA1NS0yLjg5MyA1LjAwNC0zLjg0N2ExLjMzNSAxLjMzNSAwIDAgMSAxLjc4OC42MzYgMS4zNyAxLjM3IDAgMCAxLS42MjUgMS44MTVjLTEuMzM2LjY1NS0zLjU3OSAyLjY2My00LjMzIDMuMzgtLjI0Ny4yMzgtLjU3Ni4zNzEtLjkyLjM3MVoiIGZpbGw9IiMxMjE3MTYiLz4KICA8cGF0aCBkPSJNMzIuMTYzIDgzLjQyOGM0LjM5MyA0LjQ2NCA1LjM2NyAxMC43MiAyLjE2OCAxMy45NjctMy4yIDMuMjUxLTkuMzU2IDIuMjY5LTEzLjc1LTIuMTk2LTQuMzkyLTQuNDctNS4zNjctMTAuNzItMi4xNjEtMTMuOTcgMy4xOTMtMy4yNTMgOS4zNTEtMi4yNjcgMTMuNzQ0IDIuMmgtLjAwMVoiIGZpbGw9IiM4MjhkOGMiLz4KICA8cGF0aCBkPSJNMzAuNjg0IDg4LjYwNGMyLjQxNSAyLjQ1OCAyLjgxMiA2LjAzNy44ODMgOC4wMDEtMS45MzEgMS45NjMtNS40NjEgMS41NjMtNy44NzYtLjg5My0yLjQyMS0yLjQ2LTIuODItNi4wNDMtLjg4Ni04LjAwNyAxLjkzLTEuOTYyIDUuNDYxLTEuNTU5IDcuODguODk5WiIgZmlsbD0iI2VkZWRlYSIvPgogIDxwYXRoIGQ9Ik0yMy4zNDIgODAuNjczYy0xLjYyNiAwLTMgLjUyNC0zLjk3NSAxLjUxOS0xLjIzOCAxLjI1Ni0xLjczMiAzLjE1Ni0xLjM5IDUuMzUzLjM2NSAyLjM1NSAxLjYyNiA0LjczIDMuNTUzIDYuNjkgMy42OTYgMy43NjIgOS4yOSA0LjgwNyAxMS44NTQgMi4xOTcgMS4yMzUtMS4yNTYgMS43MjctMy4xNTUgMS4zODctNS4zNTItLjM2Ny0yLjM1Ni0xLjYyOC00LjczMS0zLjU1NS02LjY4OC0yLjI5MS0yLjMzLTUuMjMzLTMuNzE5LTcuODc2LTMuNzE5aC4wMDJabTYuMDYzIDIwLjAwMmMtMy4zODggMC02Ljk1LTEuNjQ3LTkuNzctNC41MTQtMi4zMjYtMi4zNjMtMy44NTQtNS4yNzQtNC4zMDYtOC4xOTMtLjQ4LTMuMDguMjgyLTUuODE2IDIuMTQyLTcuNzAzIDEuNDg3LTEuNTE2IDMuNTE3LTIuMzE2IDUuODY5LTIuMzE2IDMuMzg2IDAgNi45NDkgMS42NDcgOS43NzEgNC41MTcgMi4zMjUgMi4zNjEgMy44NTQgNS4yNyA0LjMwNiA4LjE5LjQ4IDMuMDgtLjI4IDUuODE2LTIuMTM4IDcuNzAyLTEuNDkyIDEuNTE3LTMuNTI0IDIuMzE3LTUuODc0IDIuMzE3WiIgZmlsbD0iIzEyMTcxNiIvPgogIDxwYXRoIGQ9Ik03Mi4zMTcgODMuNDI4Yy00LjM5MyA0LjQ2NC01LjM2NiAxMC43Mi0yLjE2NyAxMy45NjcgMy4xOTggMy4yNTEgOS4zNTYgMi4yNjkgMTMuNzUtMi4xOTYgNC4zOTItNC40NyA1LjM2NS0xMC43MiAyLjE2MS0xMy45Ny0zLjE5My0zLjI1My05LjM1MS0yLjI2Ny0xMy43NDQgMi4yWiIgZmlsbD0iIzgyOGQ4YyIvPgogIDxwYXRoIGQ9Ik03My43OTUgODguNjA0Yy0yLjQxMyAyLjQ1OC0yLjgxMSA2LjAzNy0uODggOC4wMDEgMS45MyAxLjk2MyA1LjQ1OSAxLjU2MyA3Ljg3NS0uODkzIDIuNDItMi40NiAyLjgxOC02LjA0My44ODYtOC4wMDctMS45MzItMS45NjItNS40NjEtMS41NTktNy44OC44OTlaIiBmaWxsPSIjZWRlZGVhIi8+CiAgPHBhdGggZD0iTTczLjI2NCA4NC4zOTJjLTEuOTI2IDEuOTU3LTMuMTg3IDQuMzMyLTMuNTU1IDYuNjg4LS4zNCAyLjE5Ny4xNTMgNC4wOTcgMS4zODggNS4zNTIgMi41NjIgMi42MSA4LjE1NiAxLjU2MyAxMS44NTQtMi4xOTcgMS45MjYtMS45NjEgMy4xODgtNC4zMzYgMy41NTMtNi42OS4zNDItMi4xOTYtLjE1My00LjA5OS0xLjM5MS01LjM1My0uOTc2LS45OTYtMi4zNDgtMS41MTktMy45NzMtMS41MTktMi42NDIgMC01LjU4NiAxLjM5MS03Ljg3NiAzLjcxOVptLTQuMDYyIDEzLjk2NmMtMS44NTktMS44ODYtMi42MTktNC42MjItMi4xNC03LjcwMi40NTMtMi45MiAxLjk4Mi01LjgyOSA0LjMwNi04LjE5IDIuODIzLTIuODcgNi4zODctNC41MTcgOS43NzItNC41MTcgMi4zNTIgMCA0LjM4Mi44MDEgNS44NjggMi4zMTYgMS44NjIgMS44ODcgMi42MjMgNC42MjMgMi4xNDUgNy43MDMtLjQ1MyAyLjkxOS0xLjk4MyA1LjgzLTQuMzA3IDguMTkzLTIuODIyIDIuODY3LTYuMzgzIDQuNTE0LTkuNzcgNC41MTQtMi4zNSAwLTQuMzgyLS44MDEtNS44NzQtMi4zMTdaIiBmaWxsPSIjMTIxNzE2Ii8+CiAgPHBhdGggZD0iTTMwLjE5NSA1Ny44MTZjMS45OTQtMS4yMzYgNy43NTctNC4zODUgMTEuNDU1LTIuMTI1IDEuOTMzIDEuMTggMy4wNTMgMi45OTcgMy4xNTcgNS4xMjYuMTU4IDMuMTY1LTEuOTM0IDYuNjMxLTUuNzM4IDkuNTEyLTIuNDkyIDEuODg1LTYuMDY1IDIuODg4LTkuODA0IDIuODg4YTIwLjgzIDIwLjgzIDAgMCAxLTUuODkzLS44NDZjLTUuNjAyLTEuNjU0LTkuODIyLTUuNTk1LTExLjg4NS0xMS4xLS4yNjQtLjcwMSAyLjA4LS4xODggMi43NzQtLjQ1NGw2LjcxNi0xMS40MjZjLjQ4IDAgLjg3Mi4yNzUgMS4xMjMuNjQ4IDEuMDY4IDIuMDA3IDIuMDc0IDIuOTY2IDMuNjczIDQuNDkyIDEuMzI3IDEuMjcgMi43NzggMi40NjcgNC40MjIgMy4yODVabTQ0LjA2OC4wMzRjLTEuOTk1LTEuMjM4LTcuNzU2LTQuMzg3LTExLjQ1Ny0yLjEyNS0xLjkzIDEuMTc4LTMuMDUyIDIuOTk3LTMuMTU2IDUuMTI1LS4xNTcgMy4xNjQgMS45MzUgNi42MyA1LjczOCA5LjUxMSAyLjQ5MyAxLjg4NiA2LjA2NiAyLjg4OCA5LjgwNSAyLjg4OCAxLjk2MSAwIDMuOTctLjI3NSA1Ljg5MS0uODQ0IDUuNjA0LTEuNjU1IDkuODIyLTUuNTk3IDExLjg4Ni0xMS4xLjI2NS0uNzAzLTIuMDgtLjE5LTIuNzczLS40NTVMODMuNDggNDkuNDIzYy0uNDggMC0uODc0LjI3Ni0xLjEyMy42NS0xLjA2OCAyLjAwNS0yLjA3MyAyLjk2NC0zLjY3MyA0LjQ5Mi0xLjMyOSAxLjI2OS0yLjc3OCAyLjQ2NS00LjQyMiAzLjI4NHYuMDAxWiIgZmlsbD0iIzgyOGQ4YyIgZmlsbC1ydWxlPSJub256ZXJvIi8+CiAgPHBhdGggZD0iTTY0LjQ4MiA3MS43M2EyLjk3NSAyLjk3NSAwIDAgMCAwLTQuMjI1IDMuMDM0IDMuMDM0IDAgMCAwLTQuMjUgMGwtMTEuOSAxMS44My0zLjg4NS0zLjg2YTMuMDM0IDMuMDM0IDAgMCAwLTQuMjUgMCAyLjk3OCAyLjk3OCAwIDAgMCAwIDQuMjI0bDYuMDEgNS45NzVhMy4wMzQgMy4wMzQgMCAwIDAgNC4yNSAwbDE0LjAyNy0xMy45NDNoLS4wMDJaIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz4KICA8cGF0aCBkPSJNNDEuNjUgNTUuNjkxYy0zLjY5OC0yLjI2LTkuNDYuODg5LTExLjQ1NSAyLjEyNS0xLjY0NC0uODItMy4wOTUtMi4wMTYtNC40MjItMy4yODUtMS42LTEuNTI2LTIuNjA1LTIuNDg2LTMuNjczLTQuNDkyLS4yNS0uMzczLS42NDMtLjY0OC0xLjEyMy0uNjQ4LTEuNTY3IDAtMS41NDEgMS42ODUtLjkyIDIuNjgxIDEuOTIyIDMuMDY1IDQuMTE3IDUuMDQ3IDcuMDgzIDcuMDc0LjgzNS41NjkgMS43MTYgMS4wOTYgMi42NTcgMS40NzUuNDA5LjE2My44ODIuMTIyIDEuMjUyLS4xMyAxLjYzMy0xLjEwMiA2LjgxNC0zLjkyOCA5LjIyNC0yLjQ2NSAxLjE3NC43MTYgMS43OTkgMS43MDEgMS44NiAyLjkyNy4xMDcgMi4yMS0xLjYzNiA0Ljg5Ny00LjY2NiA3LjE5LTMuMTEgMi4zNTMtOC41OTkgMy4wMTUtMTMuMzQ2IDEuNjEzLTMuMzgtLjk5Ni03Ljg4LTMuNDQ4LTEwLjEzLTkuNDUzYTEuMzMgMS4zMyAwIDAgMC0xLjczLS43ODcgMS4zNyAxLjM3IDAgMCAwLS43NzQgMS43NTZjMi4wNjMgNS41MDQgNi4yODMgOS40NDUgMTEuODg1IDExLjEgMS45MjIuNTY4IDMuOTMuODQ1IDUuODkzLjg0NSAzLjczOSAwIDcuMzEyLTEuMDAyIDkuODA0LTIuODg4IDMuODA0LTIuODggNS44OTYtNi4zNDcgNS43NC05LjUxMi0uMTA2LTIuMTI5LTEuMjI2LTMuOTQ3LTMuMTU3LTUuMTI2aC0uMDAyWm0yMS4xOCAwYzMuNjk4LTIuMjYgOS40Ni44ODkgMTEuNDU2IDIuMTI1IDEuNjQ0LS44MiAzLjA5NS0yLjAxNiA0LjQyLTMuMjg1IDEuNi0xLjUyNiAyLjYwNS0yLjQ4NiAzLjY3NS00LjQ5Mi4yNS0uMzczLjY0My0uNjQ4IDEuMTIxLS42NDggMS41NyAwIDEuNTQzIDEuNjg1LjkyIDIuNjgxLTEuOTIyIDMuMDY1LTQuMTE2IDUuMDQ3LTcuMDggNy4wNzQtLjgzOC41NjktMS43MTkgMS4wOTYtMi42NiAxLjQ3NWExLjM0NCAxLjM0NCAwIDAgMS0xLjI1LS4xM2MtMS42MzMtMS4xMDItNi44MTUtMy45MjgtOS4yMjUtMi40NjUtMS4xNzMuNzE2LTEuOCAxLjcwMS0xLjg1OSAyLjkyNy0uMTA3IDIuMjEgMS42MzYgNC44OTcgNC42NjQgNy4xOSAzLjExIDIuMzUzIDguNiAzLjAxNSAxMy4zNDYgMS42MTMgMy4zOC0uOTk2IDcuODgtMy40NDggMTAuMTMxLTkuNDUzYTEuMzMgMS4zMyAwIDAgMSAxLjcyOS0uNzg3IDEuMzcgMS4zNyAwIDAgMSAuNzc1IDEuNzU2Yy0yLjA2MiA1LjUwNC02LjI4MiA5LjQ0NS0xMS44ODYgMTEuMWEyMC44NDUgMjAuODQ1IDAgMCAxLTUuODkzLjg0NWMtMy43MzggMC03LjMxMi0xLjAwMi05LjgwMy0yLjg4OC0zLjgwNS0yLjg4LTUuODk2LTYuMzQ3LTUuNzM4LTkuNTEyLjEwNC0yLjEyOSAxLjIyNS0zLjk0NyAzLjE1Ni01LjEyNloiIGZpbGw9IiMxMjE3MTYiLz4KICA8cGF0aCBkPSJNNzguODQzIDY0LjMzNmMuMzcgMCAuNzI0LS4xNTYuOTc2LS40MjlhMS4zODYgMS4zODYgMCAwIDAtLjA1Ny0xLjkyNmMtLjMwNi0uMjkxLTMuMDU1LTIuODkzLTUuMDA2LTMuODQ3YTEuMzM2IDEuMzM2IDAgMCAwLTEuNzg4LjYzNiAxLjM3NyAxLjM3NyAwIDAgMCAuNjI3IDEuODE1YzEuMzM0LjY1NSAzLjU3OCAyLjY2MyA0LjMyOCAzLjM4LjI0Ny4yMzguNTc2LjM3MS45Mi4zNzFaIiBmaWxsPSIjMTIxNzE2Ii8+Cjwvc3ZnPgo='/>
137
+ <h3 style="font-size: 28px; font-weight: 600; margin-bottom: 3rem; margin-top: .5rem;">Successfully logged in</h3>
138
+ <div style="font-weight: 500;">
139
+ <div style="margin-bottom: 1rem;">You can go back to your terminal.</div>
140
+ <div>This window should close itself in 3 seconds.</div>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ <script>setTimeout(function() {window.close()}, 3000);</script>
145
+ </body>
146
+ </html>
147
+ `);
148
+ resolve(code);
149
+ }
150
+ else {
151
+ res.write(`
152
+ <html>
153
+ <body>
154
+ <div style="height:100%;width:100%;inset:0;position:absolute;display:grid;place-items:center;background-color:#EFF2F7;text-align:center;font-family:Inter;">
155
+ <h3 style="font-weight:200;">Login failed, please try again!</h3>
156
+ <p>
157
+ <b>${error}</b>: ${errorDescription}
158
+ </p>
159
+ </div>
160
+ </body>
161
+ </html>
162
+ `);
163
+ }
164
+ res.end();
165
+ }
166
+ });
167
+ server.listen(4242).on('error', (err) => {
168
+ if (err.code === 'EADDRINUSE') {
169
+ reject(new Error('Unable to start a local server on port 4242.' +
170
+ ' Please check that `checkly login` isn\'t already running in a separate tab.' +
171
+ ' On OS X and Linux, you can run `lsof -i :4242` to see which process is blocking the port.'));
172
+ }
173
+ else {
174
+ reject(err);
175
+ }
176
+ });
177
+ });
178
+ }, _AuthContext_fetchAccessToken = async function _AuthContext_fetchAccessToken() {
179
+ const code = await __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_startServer).call(this);
180
+ const tokenParams = new URLSearchParams({
181
+ grant_type: 'authorization_code',
182
+ client_id: AUTH0_CLIENT_ID,
183
+ code_verifier: __classPrivateFieldGet(this, _AuthContext_codeVerifier, "f"),
184
+ code,
185
+ redirect_uri: AUTH0_CALLBACK_URL,
186
+ });
187
+ const tokenResponse = await axios_1.default.post('https://auth.checklyhq.com/oauth/token', tokenParams, {
188
+ headers: {
189
+ 'Content-Type': 'application/x-www-form-urlencoded',
190
+ 'Accept-Encoding': '*',
191
+ },
192
+ });
193
+ const { access_token: accessToken, id_token: idToken } = tokenResponse.data;
194
+ __classPrivateFieldSet(this, _AuthContext_accessToken, accessToken, "f");
195
+ __classPrivateFieldSet(this, _AuthContext_idToken, idToken, "f");
196
+ }, _AuthContext_getApiKey = async function _AuthContext_getApiKey() {
197
+ var _a;
198
+ try {
199
+ await __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_fetchUser).call(this);
200
+ }
201
+ catch (error) {
202
+ if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
203
+ await __classPrivateFieldGet(this, _AuthContext_instances, "m", _AuthContext_registerUser).call(this);
204
+ }
205
+ else {
206
+ throw error;
207
+ }
208
+ }
209
+ const apiKeyName = `CLI User Key (${os.hostname()})`;
210
+ const { data } = await __classPrivateFieldGet(this, _AuthContext_instances, "a", _AuthContext_axiosInstance_get).post(`/users/me/api-keys?name=${apiKeyName}`);
211
+ return data;
212
+ }, _AuthContext_fetchUser = async function _AuthContext_fetchUser() {
213
+ const { data } = await __classPrivateFieldGet(this, _AuthContext_instances, "a", _AuthContext_axiosInstance_get).get('/users/me');
214
+ return data;
215
+ }, _AuthContext_registerUser = async function _AuthContext_registerUser() {
216
+ const { data } = await __classPrivateFieldGet(this, _AuthContext_instances, "a", _AuthContext_axiosInstance_get).post('/users/', { accessToken: __classPrivateFieldGet(this, _AuthContext_accessToken, "f") });
217
+ return data;
218
+ }, _AuthContext_axiosInstance_get = function _AuthContext_axiosInstance_get() {
219
+ // Keep axios instance stateless
220
+ return axios_1.default.create({
221
+ baseURL: (0, api_1.getDefaults)().baseURL,
222
+ headers: {
223
+ Accept: 'application/json, text/plain, */*',
224
+ Authorization: `Bearer ${__classPrivateFieldGet(this, _AuthContext_accessToken, "f")}`,
225
+ },
226
+ });
227
+ };
228
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAA8C;AAC9C,yBAAwB;AACxB,6BAA4B;AAC5B,iCAAgC;AAChC,2CAAkC;AAClC,qCAA2D;AAC3D,yBAAwB;AACxB,6BAA4B;AAI5B,MAAM,eAAe,GAAG,kCAAkC,CAAA;AAC1D,MAAM,uBAAuB,GAAG,sCAAsC,CAAA;AACtE,MAAM,YAAY,GAAG,sBAAsB,CAAA;AAC3C,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AAElD,SAAgB,YAAY;IAC1B,MAAM,YAAY,GAAG,MAAM;SACxB,WAAW,CAAC,EAAE,CAAC;SACf,QAAQ,CAAC,QAAQ,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAErB,MAAM,aAAa,GAAG,MAAM;SACzB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,QAAQ,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAErB,OAAO;QACL,aAAa;QACb,YAAY;KACb,CAAA;AACH,CAAC;AApBD,oCAoBC;AAED,MAAa,WAAW;IAStB,YAAqB,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;;QANnC,6CAAsB;QACtB,4CAAqB;QAErB,2CAAqB;QACrB,uCAAiB;QAGf,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAAA;QACtD,uBAAA,IAAI,8BAAkB,aAAa,MAAA,CAAA;QACnC,uBAAA,IAAI,6BAAiB,YAAY,MAAA,CAAA;QAEjC,IAAI,CAAC,iBAAiB,GAAG,uBAAA,IAAI,sEAA2B,MAA/B,IAAI,CAA6B,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,uBAAA,IAAI,6DAAkB,MAAtB,IAAI,CAAoB,CAAA;QAE9B,IAAI,CAAC,uBAAA,IAAI,gCAAa,IAAI,CAAC,uBAAA,IAAI,4BAAS,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,oFAAoF;gBAChG,gDAAgD,CAAC,CAAA;SACtD;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,oBAAS,EAAM,uBAAA,IAAI,4BAAS,CAAC,CAAA;QAE9C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,uBAAA,IAAI,sDAAW,MAAf,IAAI,CAAa,CAAA;QAEvC,OAAO;YACL,IAAI;YACJ,GAAG;SACJ,CAAA;IACH,CAAC;CAmLF;AApND,kCAoNC;;IAhLG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAE5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,eAAe;QAC1B,cAAc,EAAE,uBAAA,IAAI,kCAAe;QACnC,qBAAqB,EAAE,MAAM;QAC7B,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,kBAAkB;QAChC,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,uBAAA,IAAI,iCAAc;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC5C,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACrD,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;KACvD,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC9B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;IAGC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAClC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YAChC,IAAI,MAAA,GAAG,CAAC,GAAG,0CAAE,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAA;gBAEvD,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACrE,IAAI,CAAC,GAAG;wBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACzB,CAAC,CAAC,CAAA;gBAEJ,+FAA+F;aAC9F;iBAAM,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,GAAG,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,EAAE;gBAC5C,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,MAAA,GAAG,CAAC,GAAG,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;gBACjE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAEzC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzC,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;gBAEhE,IAAI,IAAI,IAAI,KAAK,KAAK,uBAAA,IAAI,iCAAc,EAAE;oBACxC,GAAG,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCf,CAAC,CAAA;oBACI,OAAO,CAAC,IAAI,CAAC,CAAA;iBACd;qBAAM;oBACL,GAAG,CAAC,KAAK,CAAC;;;;;;mBAMH,KAAK,SAAS,gBAAgB;;;;;OAK1C,CAAC,CAAA;iBACG;gBAED,GAAG,CAAC,GAAG,EAAE,CAAA;aACV;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;gBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C;oBAC7D,8EAA8E;oBAC9E,4FAA4F,CAAC,CAAC,CAAA;aACjG;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,CAAA;aACZ;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,kCAED,KAAK;IACH,MAAM,IAAI,GAAG,MAAM,uBAAA,IAAI,wDAAa,MAAjB,IAAI,CAAe,CAAA;IAEtC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,eAAe;QAC1B,aAAa,EAAE,uBAAA,IAAI,iCAAc;QACjC,IAAI;QACJ,YAAY,EAAE,kBAAkB;KACjC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CACpC,wCAAwC,EACxC,WAAW,EACX;QACE,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;YACnD,iBAAiB,EAAE,GAAG;SACvB;KACF,CACF,CAAA;IAED,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,IAAI,CAAA;IAE3E,uBAAA,IAAI,4BAAgB,WAAW,MAAA,CAAA;IAC/B,uBAAA,IAAI,wBAAY,OAAO,MAAA,CAAA;AACzB,CAAC,2BAED,KAAK;;IACH,IAAI;QACF,MAAM,uBAAA,IAAI,sDAAW,MAAf,IAAI,CAAa,CAAA;KACxB;IAAC,OAAO,KAAc,EAAE;QACvB,IAAI,CAAA,MAAC,KAAoB,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE;YAClD,MAAM,uBAAA,IAAI,yDAAc,MAAlB,IAAI,CAAgB,CAAA;SAC3B;aAAM;YACL,MAAM,KAAK,CAAA;SACZ;KACF;IAED,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAA;IAEpD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAA,IAAI,8DAAe,CAAC,IAAI,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAA;IAExF,OAAO,IAAI,CAAA;AACb,CAAC,2BAED,KAAK;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAA,IAAI,8DAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAE3D,OAAO,IAAI,CAAA;AACb,CAAC,8BAED,KAAK;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAA,IAAI,8DAAe,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,uBAAA,IAAI,gCAAa,EAAE,CAAC,CAAA;IAE9F,OAAO,IAAI,CAAA;AACb,CAAC;IAGC,gCAAgC;IAChC,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,IAAA,iBAAc,GAAE,CAAC,OAAO;QACjC,OAAO,EAAE;YACP,MAAM,EAAE,mCAAmC;YAC3C,aAAa,EAAE,UAAU,uBAAA,IAAI,gCAAa,EAAE;SAC7C;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BaseCommand } from './baseCommand';
2
+ export declare abstract class AuthCommand extends BaseCommand {
3
+ static hidden: boolean;
4
+ protected init(): Promise<any>;
5
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthCommand = void 0;
4
+ const baseCommand_1 = require("./baseCommand");
5
+ const api = require("../rest/api");
6
+ class AuthCommand extends baseCommand_1.BaseCommand {
7
+ async init() {
8
+ super.init();
9
+ await api.validateAuthentication();
10
+ }
11
+ }
12
+ exports.AuthCommand = AuthCommand;
13
+ AuthCommand.hidden = true;
14
+ //# sourceMappingURL=authCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authCommand.js","sourceRoot":"","sources":["../../src/commands/authCommand.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,mCAAkC;AAElC,MAAsB,WAAY,SAAQ,yBAAW;IAGzC,KAAK,CAAC,IAAI;QAClB,KAAK,CAAC,IAAI,EAAE,CAAA;QACZ,MAAM,GAAG,CAAC,sBAAsB,EAAE,CAAA;IACpC,CAAC;;AANH,kCAOC;AANQ,kBAAM,GAAG,IAAI,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export declare abstract class BaseCommand extends Command {
3
+ static hidden: boolean;
4
+ protected init(): Promise<void>;
5
+ run(): Promise<void>;
6
+ protected catch(err: Error & {
7
+ exitCode?: number;
8
+ }): Promise<any>;
9
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseCommand = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const api_1 = require("../rest/api");
6
+ class BaseCommand extends core_1.Command {
7
+ init() {
8
+ api_1.api.defaults.headers['x-checkly-cli-version'] = this.config.version;
9
+ return super.init();
10
+ }
11
+ async run() {
12
+ await this.exit(0);
13
+ }
14
+ catch(err) {
15
+ // TODO: we can add Sentry here and log critical errors.
16
+ return super.catch(err);
17
+ }
18
+ }
19
+ exports.BaseCommand = BaseCommand;
20
+ BaseCommand.hidden = true;
21
+ //# sourceMappingURL=baseCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseCommand.js","sourceRoot":"","sources":["../../src/commands/baseCommand.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,qCAAiC;AAEjC,MAAsB,WAAY,SAAQ,cAAO;IAGrC,IAAI;QACZ,SAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QACnE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;IAES,KAAK,CAAE,GAAgC;QAC/C,wDAAwD;QACxD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;;AAfH,kCAgBC;AAfQ,kBAAM,GAAG,IAAI,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { AuthCommand } from './authCommand';
2
+ export default class Deploy extends AuthCommand {
3
+ static hidden: boolean;
4
+ static description: string;
5
+ static flags: {
6
+ preview: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ output: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ config: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ };
11
+ run(): Promise<void>;
12
+ private formatPreview;
13
+ }
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api = require("../rest/api");
4
+ const config_1 = require("../services/config");
5
+ const inquirer_1 = require("inquirer");
6
+ const core_1 = require("@oclif/core");
7
+ const authCommand_1 = require("./authCommand");
8
+ const project_parser_1 = require("../services/project-parser");
9
+ const checkly_config_loader_1 = require("../services/checkly-config-loader");
10
+ const api_1 = require("../rest/api");
11
+ const constructs_1 = require("../constructs");
12
+ const chalk = require("chalk");
13
+ const check_1 = require("../constructs/check");
14
+ const alert_channel_1 = require("../constructs/alert-channel");
15
+ const util_1 = require("../services/util");
16
+ const common_messages_1 = require("../messages/common-messages");
17
+ // eslint-disable-next-line no-restricted-syntax
18
+ var ResourceDeployStatus;
19
+ (function (ResourceDeployStatus) {
20
+ ResourceDeployStatus["UPDATE"] = "UPDATE";
21
+ ResourceDeployStatus["CREATE"] = "CREATE";
22
+ ResourceDeployStatus["DELETE"] = "DELETE";
23
+ })(ResourceDeployStatus || (ResourceDeployStatus = {}));
24
+ class Deploy extends authCommand_1.AuthCommand {
25
+ async run() {
26
+ var _a, _b, _c, _d, _e, _f, _g;
27
+ core_1.ux.action.start('Parsing your project', undefined, { stdout: true });
28
+ const { flags } = await this.parse(Deploy);
29
+ const { force, preview, output, config: configFilename } = flags;
30
+ const { configDirectory, configFilenames } = (0, util_1.splitConfigFilePath)(configFilename);
31
+ const { config: checklyConfig, constructs: checklyConfigConstructs, } = await (0, checkly_config_loader_1.loadChecklyConfig)(configDirectory, configFilenames);
32
+ const { data: avilableRuntimes } = await api_1.runtimes.getAll();
33
+ const project = await (0, project_parser_1.parseProject)({
34
+ directory: configDirectory,
35
+ projectLogicalId: checklyConfig.logicalId,
36
+ projectName: checklyConfig.projectName,
37
+ repoUrl: checklyConfig.repoUrl,
38
+ checkMatch: (_a = checklyConfig.checks) === null || _a === void 0 ? void 0 : _a.checkMatch,
39
+ browserCheckMatch: (_c = (_b = checklyConfig.checks) === null || _b === void 0 ? void 0 : _b.browserChecks) === null || _c === void 0 ? void 0 : _c.testMatch,
40
+ ignoreDirectoriesMatch: (_d = checklyConfig.checks) === null || _d === void 0 ? void 0 : _d.ignoreDirectoriesMatch,
41
+ checkDefaults: checklyConfig.checks,
42
+ browserCheckDefaults: (_e = checklyConfig.checks) === null || _e === void 0 ? void 0 : _e.browserChecks,
43
+ availableRuntimes: avilableRuntimes.reduce((acc, runtime) => {
44
+ acc[runtime.name] = runtime;
45
+ return acc;
46
+ }, {}),
47
+ checklyConfigConstructs,
48
+ });
49
+ core_1.ux.action.stop();
50
+ const { data: account } = await api.accounts.get(config_1.default.getAccountId());
51
+ if (!force && !preview) {
52
+ const { confirm } = await (0, inquirer_1.prompt)([{
53
+ name: 'confirm',
54
+ type: 'confirm',
55
+ message: `You are about to deploy your project "${project.name}" to account "${account.name}". Do you want to continue?`,
56
+ }]);
57
+ if (!confirm) {
58
+ return;
59
+ }
60
+ }
61
+ try {
62
+ const projectPayload = project.synthesize(false);
63
+ const { data } = await api.projects.deploy(projectPayload, { dryRun: preview });
64
+ if (preview || output) {
65
+ this.log(this.formatPreview(data, project));
66
+ }
67
+ if (!preview) {
68
+ await core_1.ux.wait(500);
69
+ this.log(`Successfully deployed project "${project.name}" to account "${account.name}".`);
70
+ }
71
+ }
72
+ catch (err) {
73
+ if (((_f = err === null || err === void 0 ? void 0 : err.response) === null || _f === void 0 ? void 0 : _f.status) === 400) {
74
+ throw new Error(`Failed to deploy your project due to a missing field. ${(_g = err.response.data) === null || _g === void 0 ? void 0 : _g.message}`);
75
+ }
76
+ else {
77
+ throw new Error(`Failed to deploy your project. ${err.message}`);
78
+ }
79
+ }
80
+ }
81
+ formatPreview(previewData, project) {
82
+ var _a, _b;
83
+ // Current format of the data is: { checks: { logical-id-1: 'UPDATE' }, groups: { another-logical-id: 'CREATE' } }
84
+ // We convert it into update: [{ logicalId, resourceType, construct }, ...], create: [], delete: []
85
+ // This makes it easier to display.
86
+ const updating = [];
87
+ const creating = [];
88
+ const deleting = [];
89
+ for (const change of (_a = previewData === null || previewData === void 0 ? void 0 : previewData.diff) !== null && _a !== void 0 ? _a : []) {
90
+ const { type, logicalId, action } = change;
91
+ if (type === constructs_1.AlertChannelSubscription.__checklyType) {
92
+ // Don't report changes to alert channel subscriptions.
93
+ // User's don't create these directly, so it's more intuitive to consider it as part of the check.
94
+ continue;
95
+ }
96
+ const construct = project.data[type][logicalId];
97
+ if (action === ResourceDeployStatus.UPDATE) {
98
+ updating.push({ resourceType: type, logicalId, construct });
99
+ }
100
+ else if (action === ResourceDeployStatus.CREATE) {
101
+ creating.push({ resourceType: type, logicalId, construct });
102
+ }
103
+ else if (action === ResourceDeployStatus.DELETE) {
104
+ // Since the resource is being deleted, the construct isn't in the project.
105
+ deleting.push({ resourceType: type, logicalId });
106
+ }
107
+ }
108
+ if (!creating.length && !deleting.length && !updating.length) {
109
+ return '\nNo checks were detected. More information on how to set up a Checkly CLI project is available at https://checklyhq.com/docs/cli/.\n';
110
+ }
111
+ // Having some order will make the output easier to read.
112
+ const compareEntries = (a, b) => a.resourceType.localeCompare(b.resourceType) ||
113
+ a.logicalId.localeCompare(b.logicalId);
114
+ updating.sort(compareEntries);
115
+ creating.sort(compareEntries);
116
+ deleting.sort(compareEntries);
117
+ const output = [];
118
+ if (creating.length) {
119
+ output.push(chalk.bold.green('Create:'));
120
+ for (const { logicalId, construct } of creating) {
121
+ output.push(` ${construct.constructor.name}: ${logicalId}`);
122
+ }
123
+ output.push('');
124
+ }
125
+ if (deleting.length) {
126
+ output.push(chalk.bold.red('Delete:'));
127
+ const prettyResourceTypes = {
128
+ [check_1.Check.__checklyType]: 'Check',
129
+ [alert_channel_1.AlertChannel.__checklyType]: 'AlertChannel',
130
+ [constructs_1.CheckGroup.__checklyType]: 'CheckGroup',
131
+ };
132
+ for (const { resourceType, logicalId } of deleting) {
133
+ output.push(` ${(_b = prettyResourceTypes[resourceType]) !== null && _b !== void 0 ? _b : resourceType}: ${logicalId}`);
134
+ }
135
+ output.push('');
136
+ }
137
+ if (updating.length) {
138
+ output.push(chalk.bold.magenta('Update and Unchanged:'));
139
+ for (const { logicalId, construct } of updating) {
140
+ output.push(` ${construct.constructor.name}: ${logicalId}`);
141
+ }
142
+ output.push('');
143
+ }
144
+ return output.join('\n');
145
+ }
146
+ }
147
+ exports.default = Deploy;
148
+ Deploy.hidden = false;
149
+ Deploy.description = 'Deploy your project to your Checkly account.';
150
+ Deploy.flags = {
151
+ preview: core_1.Flags.boolean({
152
+ char: 'p',
153
+ description: 'Show a preview of the changes made by the deploy command.',
154
+ default: false,
155
+ }),
156
+ output: core_1.Flags.boolean({
157
+ char: 'o',
158
+ description: 'Shows the changes made after the deploy command.',
159
+ default: false,
160
+ }),
161
+ force: core_1.Flags.boolean({
162
+ char: 'f',
163
+ description: common_messages_1.default.forceMode,
164
+ default: false,
165
+ }),
166
+ config: core_1.Flags.string({
167
+ char: 'c',
168
+ description: common_messages_1.default.configFile,
169
+ }),
170
+ };
171
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}