checkly 3.1.0 → 4.0.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.
- package/README.md +42 -108
- package/bin/dev +17 -0
- package/bin/run +5 -0
- package/bin/run.cmd +3 -0
- package/constructs.d.ts +1 -0
- package/constructs.js +1 -0
- package/dist/auth/index.d.ts +15 -0
- package/dist/auth/index.js +228 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/commands/authCommand.d.ts +5 -0
- package/dist/commands/authCommand.js +14 -0
- package/dist/commands/authCommand.js.map +1 -0
- package/dist/commands/baseCommand.d.ts +9 -0
- package/dist/commands/baseCommand.js +21 -0
- package/dist/commands/baseCommand.js.map +1 -0
- package/dist/commands/deploy.d.ts +13 -0
- package/dist/commands/deploy.js +171 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/destroy.d.ts +10 -0
- package/dist/commands/destroy.js +47 -0
- package/dist/commands/destroy.js.map +1 -0
- package/dist/commands/env/add.d.ts +13 -0
- package/dist/commands/env/add.js +54 -0
- package/dist/commands/env/add.js.map +1 -0
- package/dist/commands/env/ls.d.ts +6 -0
- package/dist/commands/env/ls.js +21 -0
- package/dist/commands/env/ls.js.map +1 -0
- package/dist/commands/env/pull.d.ts +12 -0
- package/dist/commands/env/pull.js +63 -0
- package/dist/commands/env/pull.js.map +1 -0
- package/dist/commands/env/rm.d.ts +12 -0
- package/dist/commands/env/rm.js +56 -0
- package/dist/commands/env/rm.js.map +1 -0
- package/dist/commands/env/update.d.ts +13 -0
- package/dist/commands/env/update.js +54 -0
- package/dist/commands/env/update.js.map +1 -0
- package/dist/commands/login.d.ts +13 -0
- package/dist/commands/login.js +129 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +9 -0
- package/dist/commands/logout.js +40 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/runtimes.d.ts +6 -0
- package/dist/commands/runtimes.js +26 -0
- package/dist/commands/runtimes.js.map +1 -0
- package/dist/commands/switch.d.ts +9 -0
- package/dist/commands/switch.js +59 -0
- package/dist/commands/switch.js.map +1 -0
- package/dist/commands/test.d.ts +36 -0
- package/dist/commands/test.js +247 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.js +16 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -0
- package/dist/constructs/alert-channel-subscription.d.ts +44 -0
- package/dist/constructs/alert-channel-subscription.js +39 -0
- package/dist/constructs/alert-channel-subscription.js.map +1 -0
- package/dist/constructs/alert-channel.d.ts +53 -0
- package/dist/constructs/alert-channel.js +55 -0
- package/dist/constructs/alert-channel.js.map +1 -0
- package/dist/constructs/api-check.d.ts +179 -0
- package/dist/constructs/api-check.js +248 -0
- package/dist/constructs/api-check.js.map +1 -0
- package/dist/constructs/browser-check.d.ts +59 -0
- package/dist/constructs/browser-check.js +102 -0
- package/dist/constructs/browser-check.js.map +1 -0
- package/dist/constructs/check-group.d.ts +116 -0
- package/dist/constructs/check-group.js +113 -0
- package/dist/constructs/check-group.js.map +1 -0
- package/dist/constructs/check.d.ts +111 -0
- package/dist/constructs/check.js +88 -0
- package/dist/constructs/check.js.map +1 -0
- package/dist/constructs/construct.d.ts +17 -0
- package/dist/constructs/construct.js +22 -0
- package/dist/constructs/construct.js.map +1 -0
- package/dist/constructs/email-alert-channel.d.ts +26 -0
- package/dist/constructs/email-alert-channel.js +37 -0
- package/dist/constructs/email-alert-channel.js.map +1 -0
- package/dist/constructs/environment-variable.d.ts +2 -0
- package/dist/constructs/environment-variable.js +3 -0
- package/dist/constructs/environment-variable.js.map +1 -0
- package/dist/constructs/frequency.d.ts +20 -0
- package/dist/constructs/frequency.js +26 -0
- package/dist/constructs/frequency.js.map +1 -0
- package/dist/constructs/http-header.d.ts +2 -0
- package/dist/constructs/http-header.js +3 -0
- package/dist/constructs/http-header.js.map +1 -0
- package/dist/constructs/index.d.ts +15 -0
- package/dist/constructs/index.js +32 -0
- package/dist/constructs/index.js.map +1 -0
- package/dist/constructs/key-value-pair.d.ts +5 -0
- package/dist/constructs/key-value-pair.js +3 -0
- package/dist/constructs/key-value-pair.js.map +1 -0
- package/dist/constructs/opsgenie-alert-channel.d.ts +45 -0
- package/dist/constructs/opsgenie-alert-channel.js +44 -0
- package/dist/constructs/opsgenie-alert-channel.js.map +1 -0
- package/dist/constructs/pagerduty-alert-channel.d.ts +39 -0
- package/dist/constructs/pagerduty-alert-channel.js +42 -0
- package/dist/constructs/pagerduty-alert-channel.js.map +1 -0
- package/dist/constructs/project.d.ts +57 -0
- package/dist/constructs/project.js +100 -0
- package/dist/constructs/project.js.map +1 -0
- package/dist/constructs/query-param.d.ts +2 -0
- package/dist/constructs/query-param.js +3 -0
- package/dist/constructs/query-param.js.map +1 -0
- package/dist/constructs/ref.d.ts +5 -0
- package/dist/constructs/ref.js +13 -0
- package/dist/constructs/ref.js.map +1 -0
- package/dist/constructs/slack-alert-channel.d.ts +26 -0
- package/dist/constructs/slack-alert-channel.js +40 -0
- package/dist/constructs/slack-alert-channel.js.map +1 -0
- package/dist/constructs/sms-alert-channel.d.ts +27 -0
- package/dist/constructs/sms-alert-channel.js +38 -0
- package/dist/constructs/sms-alert-channel.js.map +1 -0
- package/dist/constructs/validator-error.d.ts +2 -0
- package/dist/constructs/validator-error.js +7 -0
- package/dist/constructs/validator-error.js.map +1 -0
- package/dist/constructs/webhook-alert-channel.d.ts +59 -0
- package/dist/constructs/webhook-alert-channel.js +50 -0
- package/dist/constructs/webhook-alert-channel.js.map +1 -0
- package/dist/help/examples.d.ts +6 -0
- package/dist/help/examples.js +22 -0
- package/dist/help/examples.js.map +1 -0
- package/dist/help/help-extension.d.ts +4 -0
- package/dist/help/help-extension.js +41 -0
- package/dist/help/help-extension.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/messages/common-messages.d.ts +5 -0
- package/dist/messages/common-messages.js +9 -0
- package/dist/messages/common-messages.js.map +1 -0
- package/dist/reporters/abstract-list.d.ts +34 -0
- package/dist/reporters/abstract-list.js +122 -0
- package/dist/reporters/abstract-list.js.map +1 -0
- package/dist/reporters/ci.d.ts +12 -0
- package/dist/reporters/ci.js +29 -0
- package/dist/reporters/ci.js.map +1 -0
- package/dist/reporters/dot.d.ts +12 -0
- package/dist/reporters/dot.js +28 -0
- package/dist/reporters/dot.js.map +1 -0
- package/dist/reporters/github.d.ts +33 -0
- package/dist/reporters/github.js +93 -0
- package/dist/reporters/github.js.map +1 -0
- package/dist/reporters/list.d.ts +13 -0
- package/dist/reporters/list.js +57 -0
- package/dist/reporters/list.js.map +1 -0
- package/dist/reporters/reporter.d.ts +14 -0
- package/dist/reporters/reporter.js +23 -0
- package/dist/reporters/reporter.js.map +1 -0
- package/dist/reporters/util.d.ts +15 -0
- package/dist/reporters/util.js +283 -0
- package/dist/reporters/util.js.map +1 -0
- package/dist/rest/accounts.d.ts +12 -0
- package/dist/rest/accounts.js +15 -0
- package/dist/rest/accounts.js.map +1 -0
- package/dist/rest/api.d.ts +27 -0
- package/dist/rest/api.js +90 -0
- package/dist/rest/api.js.map +1 -0
- package/dist/rest/assets.d.ts +13 -0
- package/dist/rest/assets.js +30 -0
- package/dist/rest/assets.js.map +1 -0
- package/dist/rest/environment-variables.d.ts +16 -0
- package/dist/rest/environment-variables.js +25 -0
- package/dist/rest/environment-variables.js.map +1 -0
- package/dist/rest/locations.d.ts +11 -0
- package/dist/rest/locations.js +12 -0
- package/dist/rest/locations.js.map +1 -0
- package/dist/rest/private-locations.d.ts +11 -0
- package/dist/rest/private-locations.js +12 -0
- package/dist/rest/private-locations.js.map +1 -0
- package/dist/rest/projects.d.ts +43 -0
- package/dist/rest/projects.js +24 -0
- package/dist/rest/projects.js.map +1 -0
- package/dist/rest/runtimes.d.ts +15 -0
- package/dist/rest/runtimes.js +15 -0
- package/dist/rest/runtimes.js.map +1 -0
- package/dist/rest/test-sessions.d.ts +26 -0
- package/dist/rest/test-sessions.js +12 -0
- package/dist/rest/test-sessions.js.map +1 -0
- package/dist/rest/users.d.ts +12 -0
- package/dist/rest/users.js +12 -0
- package/dist/rest/users.js.map +1 -0
- package/dist/services/abstract-check-runner.d.ts +50 -0
- package/dist/services/abstract-check-runner.js +151 -0
- package/dist/services/abstract-check-runner.js.map +1 -0
- package/dist/services/check-parser/collector.d.ts +33 -0
- package/dist/services/check-parser/collector.js +48 -0
- package/dist/services/check-parser/collector.js.map +1 -0
- package/dist/services/check-parser/errors.d.ts +8 -0
- package/dist/services/check-parser/errors.js +45 -0
- package/dist/services/check-parser/errors.js.map +1 -0
- package/dist/services/check-parser/parser.d.ts +39 -0
- package/dist/services/check-parser/parser.js +296 -0
- package/dist/services/check-parser/parser.js.map +1 -0
- package/dist/services/checkly-config-loader.d.ts +54 -0
- package/dist/services/checkly-config-loader.js +55 -0
- package/dist/services/checkly-config-loader.js.map +1 -0
- package/dist/services/config.d.ts +24 -0
- package/dist/services/config.js +73 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/project-parser.d.ts +19 -0
- package/dist/services/project-parser.js +87 -0
- package/dist/services/project-parser.js.map +1 -0
- package/dist/services/socket-client.d.ts +4 -0
- package/dist/services/socket-client.js +20 -0
- package/dist/services/socket-client.js.map +1 -0
- package/dist/services/test-filters.d.ts +2 -0
- package/dist/services/test-filters.js +16 -0
- package/dist/services/test-filters.js.map +1 -0
- package/dist/services/test-runner.d.ts +21 -0
- package/dist/services/test-runner.js +50 -0
- package/dist/services/test-runner.js.map +1 -0
- package/dist/services/util.d.ts +29 -0
- package/dist/services/util.js +147 -0
- package/dist/services/util.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/oclif.manifest.json +423 -0
- package/package.json +163 -18
- package/LICENSE +0 -121
- package/dist/checkly.min.js +0 -1
- package/index.js +0 -285
- package/logo.png +0 -0
- package/test.js +0 -183
package/README.md
CHANGED
|
@@ -1,108 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* v2.1
|
|
44
|
-
* `/dist/checkly.min.js` for browser
|
|
45
|
-
* v2
|
|
46
|
-
* Stricter checks
|
|
47
|
-
|
|
48
|
-
#### Static checkers & transforms
|
|
49
|
-
* Static checkers return `true` or `false`.
|
|
50
|
-
* Static because they can be accessed from Checkly itself.
|
|
51
|
-
* i.e. `Checkly.str()`
|
|
52
|
-
* or destructure it, `var { str } = Checkly;`
|
|
53
|
-
* Checkers list
|
|
54
|
-
* `str(a)`
|
|
55
|
-
* typeof a === "string"
|
|
56
|
-
* `num(a)` - if it's a number
|
|
57
|
-
* typeof a === "number"
|
|
58
|
-
* isNan(a) === false
|
|
59
|
-
* `obj(a)` - if it's an object
|
|
60
|
-
* typeof a === "object"
|
|
61
|
-
* Array.isArray(a) === false
|
|
62
|
-
* a !== null
|
|
63
|
-
* if a.__proto__, __proto__ !== Map.prototype;
|
|
64
|
-
* if a.__proto__, __proto__ !== Set.prototype;
|
|
65
|
-
* `arr(a)` - if it's an array
|
|
66
|
-
* Array.isArray(a) === true
|
|
67
|
-
* `und(a)` - if it's undefined
|
|
68
|
-
* typeof a === "undefined"
|
|
69
|
-
* `nul(a)` - if it's null
|
|
70
|
-
* a === null;
|
|
71
|
-
* `nan(a)` - if it's NaN
|
|
72
|
-
* isNaN(a) === true
|
|
73
|
-
* typeof a !== "function"
|
|
74
|
-
* typeof a !== "object"
|
|
75
|
-
* `map(a)` - if it's instance of Map
|
|
76
|
-
* a.__proto__ === Map.prototype;
|
|
77
|
-
* `set(a)` - if it's instance of Set
|
|
78
|
-
* a.__proto__ === Set.prototype;
|
|
79
|
-
* `fnc(a)` - if it's a function
|
|
80
|
-
* typeof a === "function"
|
|
81
|
-
* `emp(a)`
|
|
82
|
-
* if Array.isArray(a), a.length === 0;
|
|
83
|
-
* if typeof a === "object", a.__proto__ === Map.prototype, a !== null, a.size === 0;
|
|
84
|
-
* if typeof a === "object", a.__proto__ === Set.prototype, a !== null, a.size === 0;
|
|
85
|
-
* if typeof a === "object" && a !== null, Object.keys(a).length === 0;
|
|
86
|
-
* if typeof a === "string", a === '';
|
|
87
|
-
* `equal(a, b)`
|
|
88
|
-
* complicated, see source.
|
|
89
|
-
* `.g(a, b)`
|
|
90
|
-
* a > b
|
|
91
|
-
* `.l(a, b)`
|
|
92
|
-
* a < b
|
|
93
|
-
* `.ge(a, b)`
|
|
94
|
-
* a >= b
|
|
95
|
-
* `.le(a, b)`
|
|
96
|
-
* a >= b
|
|
97
|
-
* Transforms list
|
|
98
|
-
* `ti(a)` - shortened parseInt, works with args
|
|
99
|
-
* `tf(a)` - shortened parseFloat, works with args
|
|
100
|
-
* `ts(a)` - shortened .toString()
|
|
101
|
-
* returns undefined if arg is null / undefined
|
|
102
|
-
* Notes:
|
|
103
|
-
* Doesn't mutate args, instead we return the transformed args.
|
|
104
|
-
* Looking to transform circular json's? check out `circular-json`@npm
|
|
105
|
-
|
|
106
|
-
#### Tests
|
|
107
|
-
|
|
108
|
-
* Run `test.js` to see all tests.
|
|
1
|
+
The Checkly CLI (now in beta) 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).
|
|
15
|
+
|
|
16
|
+
Then, the **easiest** way to get started is to install the CLI using the following command:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm create @checkly/cli
|
|
20
|
+
```
|
|
21
|
+
This command will guide you through some simple steps and set up a fully working example project for you. Should take
|
|
22
|
+
~1 minute.
|
|
23
|
+
|
|
24
|
+
You can also set up the CLI **from scratch** by running:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install --save-dev @checkly/cli
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
# Docs
|
|
31
|
+
|
|
32
|
+
Official docs are over at [checklyhq.com/docs/cli](https://checklyhq.com/docs/cli/)
|
|
33
|
+
|
|
34
|
+
## Need help?
|
|
35
|
+
|
|
36
|
+
- Check out our [Getting Started Guide](https://checklyhq.com/docs/cli/)
|
|
37
|
+
- Join our [Slack Community](https://checklyhq.com/slack). The devs who built this hang out there.
|
|
38
|
+
- Found a bug? [File an issue on this repo](https://github.com/checkly/checkly-cli/issues/new/choose)
|
|
39
|
+
|
|
40
|
+
# Local Development
|
|
41
|
+
|
|
42
|
+
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
package/bin/run.cmd
ADDED
package/constructs.d.ts
ADDED
|
@@ -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":"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"}
|
|
@@ -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,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
|
+
}
|