checkly 8.17.1 → 8.18.0-prerelease-770284c
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/dist/ai-context/context.d.ts +4 -4
- package/dist/ai-context/context.js +17 -2
- package/dist/ai-context/context.js.map +1 -1
- package/dist/ai-context/skills-command/references/configure-alert-channels.md +48 -0
- package/dist/ai-context/skills-command/references/configure.md +1 -1
- package/dist/ai-context/skills-command/references/investigate-checks.md +18 -2
- package/dist/ai-context/skills-command/references/investigate.md +1 -1
- package/dist/commands/checks/run.d.ts +18 -0
- package/dist/commands/checks/run.js +139 -0
- package/dist/commands/checks/run.js.map +1 -0
- package/dist/constructs/msteams-alert-channel-codegen.js +1 -1
- package/dist/constructs/msteams-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/telegram-alert-channel-codegen.js +5 -1
- package/dist/constructs/telegram-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/telegram-alert-channel.d.ts +5 -0
- package/dist/constructs/telegram-alert-channel.js +4 -1
- package/dist/constructs/telegram-alert-channel.js.map +1 -1
- package/dist/formatters/check-sessions.d.ts +5 -0
- package/dist/formatters/check-sessions.js +113 -0
- package/dist/formatters/check-sessions.js.map +1 -0
- package/dist/rest/api.d.ts +2 -0
- package/dist/rest/api.js +2 -0
- package/dist/rest/api.js.map +1 -1
- package/dist/rest/check-sessions.d.ts +63 -0
- package/dist/rest/check-sessions.js +66 -0
- package/dist/rest/check-sessions.js.map +1 -0
- package/dist/rest/test-sessions.d.ts +50 -1
- package/dist/rest/test-sessions.js +43 -1
- package/dist/rest/test-sessions.js.map +1 -1
- package/dist/services/abstract-check-runner.d.ts +16 -0
- package/dist/services/abstract-check-runner.js +70 -3
- package/dist/services/abstract-check-runner.js.map +1 -1
- package/dist/services/test-runner.d.ts +1 -0
- package/dist/services/test-runner.js +2 -2
- package/dist/services/test-runner.js.map +1 -1
- package/oclif.manifest.json +334 -250
- package/package.json +8 -8
|
@@ -42,7 +42,7 @@ export declare const REFERENCES: readonly [{
|
|
|
42
42
|
readonly description: "CheckGroupV2 construct (`CheckGroupV2`) for organizing checks";
|
|
43
43
|
}, {
|
|
44
44
|
readonly id: "configure-alert-channels";
|
|
45
|
-
readonly description: "Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), and other alert channels";
|
|
45
|
+
readonly description: "Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), Telegram (`TelegramAlertChannel`), Incident.io (`IncidentioAlertChannel`), Microsoft Teams (`MSTeamsAlertChannel`), and other alert channels";
|
|
46
46
|
}, {
|
|
47
47
|
readonly id: "configure-supporting-constructs";
|
|
48
48
|
readonly description: "Status pages (`StatusPage`), dashboards (`Dashboard`), maintenance windows (`MaintenanceWindow`), and private locations (`PrivateLocation`)";
|
|
@@ -52,7 +52,7 @@ export declare const REFERENCES: readonly [{
|
|
|
52
52
|
}];
|
|
53
53
|
export declare const INVESTIGATE_REFERENCES: readonly [{
|
|
54
54
|
readonly id: "investigate-checks";
|
|
55
|
-
readonly description: "Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and
|
|
55
|
+
readonly description: "Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and run on-demand monitoring or test sessions";
|
|
56
56
|
}, {
|
|
57
57
|
readonly id: "investigate-alerting";
|
|
58
58
|
readonly description: "Inspect effective alerting behavior for a check across check-local, group, global, and alert-channel evidence";
|
|
@@ -125,7 +125,7 @@ export declare const ACTIONS: readonly [{
|
|
|
125
125
|
readonly description: "CheckGroupV2 construct (`CheckGroupV2`) for organizing checks";
|
|
126
126
|
}, {
|
|
127
127
|
readonly id: "configure-alert-channels";
|
|
128
|
-
readonly description: "Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), and other alert channels";
|
|
128
|
+
readonly description: "Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), Telegram (`TelegramAlertChannel`), Incident.io (`IncidentioAlertChannel`), Microsoft Teams (`MSTeamsAlertChannel`), and other alert channels";
|
|
129
129
|
}, {
|
|
130
130
|
readonly id: "configure-supporting-constructs";
|
|
131
131
|
readonly description: "Status pages (`StatusPage`), dashboards (`Dashboard`), maintenance windows (`MaintenanceWindow`), and private locations (`PrivateLocation`)";
|
|
@@ -138,7 +138,7 @@ export declare const ACTIONS: readonly [{
|
|
|
138
138
|
readonly description: "Access check and test-session status, analyze failures, inspect attempts/assets, and investigate errors.";
|
|
139
139
|
readonly references: readonly [{
|
|
140
140
|
readonly id: "investigate-checks";
|
|
141
|
-
readonly description: "Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and
|
|
141
|
+
readonly description: "Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and run on-demand monitoring or test sessions";
|
|
142
142
|
}, {
|
|
143
143
|
readonly id: "investigate-alerting";
|
|
144
144
|
readonly description: "Inspect effective alerting behavior for a check across check-local, group, global, and alert-channel evidence";
|
|
@@ -57,7 +57,7 @@ export const REFERENCES = [
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
id: 'configure-alert-channels',
|
|
60
|
-
description: 'Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), and other alert channels',
|
|
60
|
+
description: 'Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), Telegram (`TelegramAlertChannel`), Incident.io (`IncidentioAlertChannel`), Microsoft Teams (`MSTeamsAlertChannel`), and other alert channels',
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
id: 'configure-supporting-constructs',
|
|
@@ -71,7 +71,7 @@ export const REFERENCES = [
|
|
|
71
71
|
export const INVESTIGATE_REFERENCES = [
|
|
72
72
|
{
|
|
73
73
|
id: 'investigate-checks',
|
|
74
|
-
description: 'Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and
|
|
74
|
+
description: 'Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and run on-demand monitoring or test sessions',
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
id: 'investigate-alerting',
|
|
@@ -352,5 +352,20 @@ new TracerouteMonitor('example-com-traceroute', {
|
|
|
352
352
|
exampleConfigPath: 'resources/alert-channels/slack-app/alerts-ops-alice.check.ts',
|
|
353
353
|
reference: 'https://www.checklyhq.com/docs/constructs/slack-app-alert-channel/',
|
|
354
354
|
},
|
|
355
|
+
TELEGRAM_ALERT_CHANNEL: {
|
|
356
|
+
templateString: '<!-- EXAMPLE: TELEGRAM_ALERT_CHANNEL -->',
|
|
357
|
+
exampleConfigPath: 'resources/alert-channels/telegram/ops-telegram.check.ts',
|
|
358
|
+
reference: 'https://www.checklyhq.com/docs/constructs/telegram-alert-channel/',
|
|
359
|
+
},
|
|
360
|
+
INCIDENTIO_ALERT_CHANNEL: {
|
|
361
|
+
templateString: '<!-- EXAMPLE: INCIDENTIO_ALERT_CHANNEL -->',
|
|
362
|
+
exampleConfigPath: 'resources/alert-channels/incident-io/ops-incidents.check.ts',
|
|
363
|
+
reference: 'https://www.checklyhq.com/docs/constructs/incidentio-alert-channel/',
|
|
364
|
+
},
|
|
365
|
+
MSTEAMS_ALERT_CHANNEL: {
|
|
366
|
+
templateString: '<!-- EXAMPLE: MSTEAMS_ALERT_CHANNEL -->',
|
|
367
|
+
exampleConfigPath: 'resources/alert-channels/ms-teams/ops-teams.check.ts',
|
|
368
|
+
reference: 'https://www.checklyhq.com/docs/constructs/msteams-alert-channel/',
|
|
369
|
+
},
|
|
355
370
|
};
|
|
356
371
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ai-context/context.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;QACE,EAAE,EAAE,0BAA0B;QAC9B,WAAW,EAAE,oHAAoH;KAClI;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,WAAW,EAAE,qEAAqE;KACnF;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,WAAW,EAAE,qEAAqE;KACnF;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,WAAW,EAAE,wGAAwG;KACtH;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,uGAAuG;KACrH;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,WAAW,EAAE,8FAA8F;KAC5G;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/ai-context/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,3 +52,51 @@ export const alertsOpsAliceSlackAppAlert = new SlackAppAlertChannel('example-sla
|
|
|
52
52
|
],
|
|
53
53
|
})
|
|
54
54
|
```
|
|
55
|
+
|
|
56
|
+
## Telegram Alert Channel
|
|
57
|
+
|
|
58
|
+
Sends alerts to a Telegram chat via a bot. Use the optional `messageThreadId` property to post into a specific forum topic within a Telegram group.
|
|
59
|
+
|
|
60
|
+
**Reference:** https://www.checklyhq.com/docs/constructs/telegram-alert-channel/
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { TelegramAlertChannel } from 'checkly/constructs'
|
|
64
|
+
|
|
65
|
+
export const opsTelegramTelegramAlert = new TelegramAlertChannel('example-telegram-alert-channel', {
|
|
66
|
+
name: 'Ops Telegram',
|
|
67
|
+
apiKey: 'INSERT_TELEGRAM_API_KEY',
|
|
68
|
+
chatId: 'INSERT_TELEGRAM_CHAT_ID',
|
|
69
|
+
messageThreadId: 'INSERT_TELEGRAM_THREAD_ID',
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Incident.io Alert Channel
|
|
74
|
+
|
|
75
|
+
Sends alerts to Incident.io via the webhook URL and API key created when installing the Checkly integration.
|
|
76
|
+
|
|
77
|
+
**Reference:** https://www.checklyhq.com/docs/constructs/incidentio-alert-channel/
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { IncidentioAlertChannel } from 'checkly/constructs'
|
|
81
|
+
|
|
82
|
+
export const opsIncidentsIncidentioAlert = new IncidentioAlertChannel('example-incidentio-alert-channel', {
|
|
83
|
+
name: 'Ops Incidents',
|
|
84
|
+
url: 'INSERT_INCIDENTIO_URL',
|
|
85
|
+
apiKey: 'INSERT_INCIDENTIO_API_KEY',
|
|
86
|
+
})
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Microsoft Teams Alert Channel
|
|
90
|
+
|
|
91
|
+
Sends alerts to a Microsoft Teams channel via an incoming webhook URL.
|
|
92
|
+
|
|
93
|
+
**Reference:** https://www.checklyhq.com/docs/constructs/msteams-alert-channel/
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { MSTeamsAlertChannel } from 'checkly/constructs'
|
|
97
|
+
|
|
98
|
+
export const opsTeamsTeamsAlert = new MSTeamsAlertChannel('example-msteams-alert-channel', {
|
|
99
|
+
name: 'Ops Teams',
|
|
100
|
+
url: 'INSERT_MSTEAMS_URL',
|
|
101
|
+
})
|
|
102
|
+
```
|
|
@@ -124,7 +124,7 @@ Heartbeat Monitor construct (`HeartbeatMonitor`)
|
|
|
124
124
|
CheckGroupV2 construct (`CheckGroupV2`) for organizing checks
|
|
125
125
|
|
|
126
126
|
### `npx checkly skills configure alert-channels`
|
|
127
|
-
Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), and other alert channels
|
|
127
|
+
Email (`EmailAlertChannel`), Phone (`PhoneCallAlertChannel`), Slack App (`SlackAppAlertChannel`), Telegram (`TelegramAlertChannel`), Incident.io (`IncidentioAlertChannel`), Microsoft Teams (`MSTeamsAlertChannel`), and other alert channels
|
|
128
128
|
|
|
129
129
|
### `npx checkly skills configure supporting-constructs`
|
|
130
130
|
Status pages (`StatusPage`), dashboards (`Dashboard`), maintenance windows (`MaintenanceWindow`), and private locations (`PrivateLocation`)
|
|
@@ -146,11 +146,27 @@ Flags:
|
|
|
146
146
|
|
|
147
147
|
Pass one or more check IDs as positional arguments to get stats for specific checks only.
|
|
148
148
|
|
|
149
|
-
##
|
|
149
|
+
## Run checks with normal monitoring behavior
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npx checkly checks run --tags production
|
|
153
|
+
npx checkly checks run --check-id <check-id>
|
|
154
|
+
npx checkly checks run --tags critical,api --detach
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`checks run` creates ordinary Check Sessions using the checks' deployed
|
|
158
|
+
configuration and locations. These runs update check health and apply configured
|
|
159
|
+
alerting rules. The command waits for completion by default; use `--detach` to
|
|
160
|
+
schedule the runs and exit immediately.
|
|
161
|
+
|
|
162
|
+
## Trigger a recorded test session
|
|
150
163
|
|
|
151
164
|
```bash
|
|
152
165
|
npx checkly trigger --tags production
|
|
153
166
|
npx checkly trigger --tags critical,api
|
|
154
167
|
```
|
|
155
168
|
|
|
156
|
-
|
|
169
|
+
`trigger` runs deployed checks as a Test Session. Use it for CI verification or
|
|
170
|
+
when you need Test Session options such as location, environment, or retry
|
|
171
|
+
overrides. Test Sessions do not update normal check health or send configured
|
|
172
|
+
monitoring alerts.
|
|
@@ -9,7 +9,7 @@ Read-only commands execute immediately without confirmation.
|
|
|
9
9
|
Parse and read further reference documentation when tasked with investigating any of the following:
|
|
10
10
|
|
|
11
11
|
### `npx checkly skills investigate checks`
|
|
12
|
-
Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and
|
|
12
|
+
Inspect checks (`checks list`, `checks get`), retry attempts, result assets, and run on-demand monitoring or test sessions
|
|
13
13
|
|
|
14
14
|
### `npx checkly skills investigate alerting`
|
|
15
15
|
Inspect effective alerting behavior for a check across check-local, group, global, and alert-channel evidence
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AuthCommand } from '../authCommand.js';
|
|
2
|
+
export default class ChecksRun extends AuthCommand {
|
|
3
|
+
static hidden: boolean;
|
|
4
|
+
static readOnly: boolean;
|
|
5
|
+
static destructive: boolean;
|
|
6
|
+
static idempotent: boolean;
|
|
7
|
+
static description: string;
|
|
8
|
+
static flags: {
|
|
9
|
+
tags: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'check-id': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'refresh-cache': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
detach: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
'fail-on-no-matching': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { AuthCommand } from '../authCommand.js';
|
|
3
|
+
import { outputFlag } from '../../helpers/flags.js';
|
|
4
|
+
import * as api from '../../rest/api.js';
|
|
5
|
+
import { CheckSessionWaitTimeoutError, NoMatchingChecksError, } from '../../rest/check-sessions.js';
|
|
6
|
+
import { formatCheckSessionsRun } from '../../formatters/check-sessions.js';
|
|
7
|
+
const DEFAULT_TIMEOUT_SECONDS = 600;
|
|
8
|
+
const COMPLETION_CONCURRENCY = 10;
|
|
9
|
+
async function mapWithConcurrency(items, concurrency, fn) {
|
|
10
|
+
const results = new Array(items.length);
|
|
11
|
+
let nextIndex = 0;
|
|
12
|
+
const workers = Array.from({ length: Math.min(concurrency, items.length) }, async () => {
|
|
13
|
+
while (nextIndex < items.length) {
|
|
14
|
+
const index = nextIndex++;
|
|
15
|
+
results[index] = await fn(items[index]);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
await Promise.all(workers);
|
|
19
|
+
return results;
|
|
20
|
+
}
|
|
21
|
+
function hasFailed(session) {
|
|
22
|
+
return ['FAILED', 'TIMED_OUT', 'CANCELLED'].includes(session.status);
|
|
23
|
+
}
|
|
24
|
+
export default class ChecksRun extends AuthCommand {
|
|
25
|
+
static hidden = false;
|
|
26
|
+
static readOnly = false;
|
|
27
|
+
static destructive = false;
|
|
28
|
+
static idempotent = false;
|
|
29
|
+
static description = 'Run deployed checks now using their configured locations and alerting rules.';
|
|
30
|
+
static flags = {
|
|
31
|
+
'tags': Flags.string({
|
|
32
|
+
char: 't',
|
|
33
|
+
description: 'Select checks using a comma-separated list of tags.'
|
|
34
|
+
+ ' Checks must contain all tags in one --tags filter.'
|
|
35
|
+
+ ' Repeat --tags to match any of multiple filters.',
|
|
36
|
+
multiple: true,
|
|
37
|
+
}),
|
|
38
|
+
'check-id': Flags.string({
|
|
39
|
+
description: 'Run specific checks by ID. Accepts comma-separated values and can be repeated.',
|
|
40
|
+
multiple: true,
|
|
41
|
+
delimiter: ',',
|
|
42
|
+
}),
|
|
43
|
+
'refresh-cache': Flags.boolean({
|
|
44
|
+
description: 'Refresh the selected checks cache before running.',
|
|
45
|
+
default: false,
|
|
46
|
+
}),
|
|
47
|
+
'timeout': Flags.integer({
|
|
48
|
+
description: 'A timeout (in seconds) to wait for all check sessions to complete.',
|
|
49
|
+
default: DEFAULT_TIMEOUT_SECONDS,
|
|
50
|
+
}),
|
|
51
|
+
'detach': Flags.boolean({
|
|
52
|
+
char: 'd',
|
|
53
|
+
description: 'Start the check sessions and exit without waiting for results.',
|
|
54
|
+
default: false,
|
|
55
|
+
}),
|
|
56
|
+
'fail-on-no-matching': Flags.boolean({
|
|
57
|
+
description: 'Exit with a failing status code when there are no matching checks. Enabled by default.',
|
|
58
|
+
default: true,
|
|
59
|
+
allowNo: true,
|
|
60
|
+
}),
|
|
61
|
+
'output': outputFlag({ default: 'table' }),
|
|
62
|
+
};
|
|
63
|
+
async run() {
|
|
64
|
+
const { flags } = await this.parse(ChecksRun);
|
|
65
|
+
this.style.outputFormat = flags.output;
|
|
66
|
+
if (flags.timeout < 1) {
|
|
67
|
+
this.error('--timeout must be an integer greater than 0.');
|
|
68
|
+
}
|
|
69
|
+
const request = {
|
|
70
|
+
refreshCache: flags['refresh-cache'],
|
|
71
|
+
};
|
|
72
|
+
if (flags.tags || flags['check-id']) {
|
|
73
|
+
request.target = {
|
|
74
|
+
matchTags: flags.tags?.map(tags => tags.split(',')),
|
|
75
|
+
checkId: flags['check-id'],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
let watching = false;
|
|
79
|
+
try {
|
|
80
|
+
const response = await api.checkSessions.trigger(request);
|
|
81
|
+
let sessions = response.sessions;
|
|
82
|
+
if (!flags.detach) {
|
|
83
|
+
const deadlineAt = Date.now() + flags.timeout * 1_000;
|
|
84
|
+
const showAction = flags.output === 'table';
|
|
85
|
+
let completedCount = 0;
|
|
86
|
+
if (showAction) {
|
|
87
|
+
watching = true;
|
|
88
|
+
this.style.actionStart('Waiting for check sessions to complete...');
|
|
89
|
+
}
|
|
90
|
+
sessions = await mapWithConcurrency(response.sessions, COMPLETION_CONCURRENCY, async (session) => {
|
|
91
|
+
const completed = await api.checkSessions.pollUntilComplete(session.checkSessionId, deadlineAt);
|
|
92
|
+
completedCount++;
|
|
93
|
+
if (showAction) {
|
|
94
|
+
this.style.actionStatus(`${completedCount}/${response.sessions.length}`);
|
|
95
|
+
}
|
|
96
|
+
return completed;
|
|
97
|
+
});
|
|
98
|
+
if (showAction) {
|
|
99
|
+
this.style.actionSuccess();
|
|
100
|
+
watching = false;
|
|
101
|
+
}
|
|
102
|
+
if (sessions.some(hasFailed)) {
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (flags.output === 'json') {
|
|
107
|
+
this.log(JSON.stringify({ sessions }, null, 2));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const format = flags.output === 'md' ? 'md' : 'terminal';
|
|
111
|
+
this.log(formatCheckSessionsRun(sessions, format, { detached: flags.detach }));
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
if (watching) {
|
|
115
|
+
this.style.actionFailure();
|
|
116
|
+
}
|
|
117
|
+
if (err instanceof NoMatchingChecksError) {
|
|
118
|
+
if (flags.output === 'json') {
|
|
119
|
+
this.log(JSON.stringify({ sessions: [] }, null, 2));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.log('No matching checks were found.');
|
|
123
|
+
}
|
|
124
|
+
if (flags['fail-on-no-matching']) {
|
|
125
|
+
process.exitCode = 1;
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (err instanceof CheckSessionWaitTimeoutError) {
|
|
130
|
+
this.style.longError('Timed out waiting for check sessions.', `The check sessions are still running in Checkly. Increase --timeout or use --detach to exit after scheduling.`);
|
|
131
|
+
process.exitCode = 1;
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.style.longError('Failed to run checks.', err);
|
|
135
|
+
process.exitCode = 1;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/checks/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export class MSTeamsAlertChannelCodegen extends Codegen {
|
|
|
15
15
|
if (config.queryParameters !== undefined && config.queryParameters.length !== 0) {
|
|
16
16
|
throw new ImportSafetyViolation(`Unsupported value for property 'queryParameters' (expected no value or an empty array)`);
|
|
17
17
|
}
|
|
18
|
-
if (config.webhookSecret
|
|
18
|
+
if (config.webhookSecret) {
|
|
19
19
|
throw new ImportSafetyViolation(`Unsupported value for property 'webhookSecret' (expected no value)`);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msteams-alert-channel-codegen.js","sourceRoot":"","sources":["../../src/constructs/msteams-alert-channel-codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAQhE,MAAM,SAAS,GAAG,qBAAqB,CAAA;AAEvC,MAAM,OAAO,0BAA2B,SAAQ,OAAoC;IAClF,cAAc,CAAE,QAAqC;QACnD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,2DAA2D,CAAC,CAAA;QAC9F,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,qBAAqB,CAAC,gFAAgF,CAAC,CAAA;QACnH,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,qBAAqB,CAAC,wFAAwF,CAAC,CAAA;QAC3H,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"msteams-alert-channel-codegen.js","sourceRoot":"","sources":["../../src/constructs/msteams-alert-channel-codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ function parseTemplate(template) {
|
|
|
20
20
|
};
|
|
21
21
|
return {
|
|
22
22
|
chatId: singleValue('chat_id'),
|
|
23
|
+
messageThreadId: singleValue('message_thread_id'),
|
|
23
24
|
text: singleValue('text'),
|
|
24
25
|
};
|
|
25
26
|
}
|
|
@@ -71,13 +72,16 @@ export class TelegramAlertChannelCodegen extends Codegen {
|
|
|
71
72
|
throw new Error(`Failed to extract Telegram API Key from webhook template: ${config.template}`);
|
|
72
73
|
}
|
|
73
74
|
if (config.template) {
|
|
74
|
-
const { chatId, text } = parseTemplate(config.template);
|
|
75
|
+
const { chatId, messageThreadId, text } = parseTemplate(config.template);
|
|
75
76
|
if (chatId) {
|
|
76
77
|
builder.string('chatId', chatId);
|
|
77
78
|
}
|
|
78
79
|
else {
|
|
79
80
|
throw new Error(`Failed to extract Telegram Chat ID from webhook template: ${config.template}`);
|
|
80
81
|
}
|
|
82
|
+
if (messageThreadId) {
|
|
83
|
+
builder.string('messageThreadId', messageThreadId);
|
|
84
|
+
}
|
|
81
85
|
if (text) {
|
|
82
86
|
if (text !== TelegramAlertChannel.DEFAULT_PAYLOAD) {
|
|
83
87
|
builder.string('payload', text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-alert-channel-codegen.js","sourceRoot":"","sources":["../../src/constructs/telegram-alert-channel-codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAW,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQlE,SAAS,aAAa,CAAE,GAAW;IACjC,MAAM,KAAK,GAAG,qDAAqD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"telegram-alert-channel-codegen.js","sourceRoot":"","sources":["../../src/constructs/telegram-alert-channel-codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAW,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQlE,SAAS,aAAa,CAAE,GAAW;IACjC,MAAM,KAAK,GAAG,qDAAqD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAQD,SAAS,aAAa,CAAE,QAAgB;IACtC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEjC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAsB,EAAE;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC;QAC9B,eAAe,EAAE,WAAW,CAAC,mBAAmB,CAAC;QACjD,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC,MAAM,OAAO,2BAA4B,SAAQ,OAAqC;IACpF,cAAc,CAAE,QAAsC;QACpD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,2DAA2D,CAAC,CAAA;QAC9F,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,qBAAqB,CAAC,gFAAgF,CAAC,CAAA;QACnH,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,qBAAqB,CAAC,wFAAwF,CAAC,CAAA;QAC3H,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,qBAAqB,CAAC,oEAAoE,CAAC,CAAA;QACvG,CAAC;IACH,CAAC;IAED,QAAQ,CAAE,QAAsC;QAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7B,OAAO,2BAA2B,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IAED,OAAO,CAAE,SAAiB,EAAE,QAAsC,EAAE,OAAgB;QAClF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAA;QAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,mCAAmC,EAAE,IAAI,EAAE;YAC3E,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,OAAO,CAAC,oBAAoB,CAC1B,QAAQ,CAAC,EAAE,EACX,GAAG,IAAI,WAAW,EAClB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACvD,CAAA;IACH,CAAC;IAED,OAAO,CAAE,SAAiB,EAAE,QAAsC,EAAE,OAAgB;QAClF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7B,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5D,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;QAEjD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE;gBAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;oBACpB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;oBACzB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;wBACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;wBAEnC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBACxC,IAAI,MAAM,EAAE,CAAC;4BACX,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;wBAClC,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;wBACjG,CAAC;wBAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;4BACpB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;4BACxE,IAAI,MAAM,EAAE,CAAC;gCACX,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;4BAClC,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;4BACjG,CAAC;4BAED,IAAI,eAAe,EAAE,CAAC;gCACpB,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;4BACpD,CAAC;4BAED,IAAI,IAAI,EAAE,CAAC;gCACT,IAAI,IAAI,KAAK,oBAAoB,CAAC,eAAe,EAAE,CAAC;oCAClD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gCACjC,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;4BACjG,CAAC;wBACH,CAAC;wBAED,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBAC3C,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC,CAAA;YAEH,OAAO,CAAC,MAAM,EAAE,CAAA;QAClB,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
|
|
@@ -15,6 +15,11 @@ export interface TelegramAlertChannelProps extends AlertChannelProps {
|
|
|
15
15
|
* {@link https://www.checklyhq.com/docs/integrations/alerts/telegram/}
|
|
16
16
|
*/
|
|
17
17
|
apiKey: string;
|
|
18
|
+
/**
|
|
19
|
+
* The optional message thread ID of a Telegram forum topic.
|
|
20
|
+
* {@link https://core.telegram.org/bots/api#sendmessage}
|
|
21
|
+
*/
|
|
22
|
+
messageThreadId?: string;
|
|
18
23
|
/**
|
|
19
24
|
* An optional custom payload. If not given,
|
|
20
25
|
* `TelegramAlertChannel.DEFAULT_PAYLOAD` will be used.
|
|
@@ -32,9 +32,12 @@ Tags: {{#each TAGS}} <i><b>{{this}}</b></i> {{#unless @last}},{{/unless}} {{/eac
|
|
|
32
32
|
this.webhookType = 'WEBHOOK_TELEGRAM';
|
|
33
33
|
this.method = 'POST';
|
|
34
34
|
const payload = props.payload ?? TelegramAlertChannel.DEFAULT_PAYLOAD;
|
|
35
|
+
const messageThreadPart = props.messageThreadId
|
|
36
|
+
? `&message_thread_id=${props.messageThreadId}`
|
|
37
|
+
: '';
|
|
35
38
|
// For historical reasons the payload is not escaped even though it
|
|
36
39
|
// should be.
|
|
37
|
-
this.template = `chat_id=${props.chatId}&parse_mode=HTML&text=${payload}`;
|
|
40
|
+
this.template = `chat_id=${props.chatId}${messageThreadPart}&parse_mode=HTML&text=${payload}`;
|
|
38
41
|
this.url = `https://api.telegram.org/bot${props.apiKey}/sendMessage`;
|
|
39
42
|
}
|
|
40
43
|
describe() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-alert-channel.js","sourceRoot":"","sources":["../../src/constructs/telegram-alert-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"telegram-alert-channel.js","sourceRoot":"","sources":["../../src/constructs/telegram-alert-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA8BhE;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,MAAM,CAAC,eAAe,GAAG;;;;;;;;;;CAU1B,CAAA;IAEC;;;;;;;QAOI;IACJ,YAAa,SAAiB,EAAE,KAAgC;QAC9D,aAAa;QACb,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAA;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,oBAAoB,CAAC,eAAe,CAAA;QACrE,MAAM,iBAAiB,GAAG,KAAK,CAAC,eAAe;YAC7C,CAAC,CAAC,sBAAsB,KAAK,CAAC,eAAe,EAAE;YAC/C,CAAC,CAAC,EAAE,CAAA;QACN,mEAAmE;QACnE,aAAa;QACb,IAAI,CAAC,QAAQ,GAAG,WAAW,KAAK,CAAC,MAAM,GAAG,iBAAiB,yBAAyB,OAAO,EAAE,CAAA;QAC7F,IAAI,CAAC,GAAG,GAAG,+BAA+B,KAAK,CAAC,MAAM,cAAc,CAAA;IACtE,CAAC;IAED,QAAQ;QACN,OAAO,wBAAwB,IAAI,CAAC,SAAS,EAAE,CAAA;IACjD,CAAC;IAED,UAAU;QACR,OAAO;YACL,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,IAAI,EAAE,SAAS;YACf,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC;SACF,CAAA;IACH,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { formatCheckType, renderAdaptiveTable, renderCommandHints, } from './render.js';
|
|
3
|
+
function formatStatus(status, format) {
|
|
4
|
+
const label = status.toLowerCase().replace(/_/g, ' ');
|
|
5
|
+
if (format === 'md')
|
|
6
|
+
return label;
|
|
7
|
+
switch (status) {
|
|
8
|
+
case 'PASSED':
|
|
9
|
+
return chalk.green(label);
|
|
10
|
+
case 'DEGRADED':
|
|
11
|
+
case 'PROGRESS':
|
|
12
|
+
case 'PROGRESS_DEGRADED':
|
|
13
|
+
case 'STARTED':
|
|
14
|
+
return chalk.yellow(label);
|
|
15
|
+
case 'FAILED':
|
|
16
|
+
case 'PROGRESS_FAILED':
|
|
17
|
+
case 'TIMED_OUT':
|
|
18
|
+
return chalk.red(label);
|
|
19
|
+
case 'CANCELLED':
|
|
20
|
+
return chalk.dim(label);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function formatDuration(milliseconds, format) {
|
|
24
|
+
if (milliseconds <= 0)
|
|
25
|
+
return format === 'terminal' ? chalk.dim('-') : '-';
|
|
26
|
+
if (milliseconds < 1_000)
|
|
27
|
+
return `${Math.round(milliseconds)}ms`;
|
|
28
|
+
const totalSeconds = Math.round(milliseconds / 1_000);
|
|
29
|
+
const seconds = totalSeconds % 60;
|
|
30
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
31
|
+
if (totalMinutes === 0)
|
|
32
|
+
return `${seconds}s`;
|
|
33
|
+
const minutes = totalMinutes % 60;
|
|
34
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
35
|
+
if (hours === 0)
|
|
36
|
+
return seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
|
|
37
|
+
if (minutes === 0 && seconds === 0)
|
|
38
|
+
return `${hours}h`;
|
|
39
|
+
if (minutes === 0)
|
|
40
|
+
return `${hours}h ${seconds}s`;
|
|
41
|
+
return seconds === 0 ? `${hours}h ${minutes}m` : `${hours}h ${minutes}m ${seconds}s`;
|
|
42
|
+
}
|
|
43
|
+
function formatLocations(locations, format) {
|
|
44
|
+
if (locations.length === 0)
|
|
45
|
+
return format === 'terminal' ? chalk.dim('-') : '-';
|
|
46
|
+
return locations.join(', ');
|
|
47
|
+
}
|
|
48
|
+
function buildColumns(format) {
|
|
49
|
+
if (format === 'md') {
|
|
50
|
+
return [
|
|
51
|
+
{ header: 'Status', value: (session, fmt) => formatStatus(session.status, fmt) },
|
|
52
|
+
{ header: 'Name', value: session => session.name ?? '-' },
|
|
53
|
+
{ header: 'Type', value: session => formatCheckType(session.checkType) },
|
|
54
|
+
{ header: 'Locations', value: (session, fmt) => formatLocations(session.runLocations, fmt) },
|
|
55
|
+
{ header: 'Duration', value: (session, fmt) => formatDuration(session.timeElapsed, fmt) },
|
|
56
|
+
{ header: 'Check ID', value: session => session.checkId },
|
|
57
|
+
{
|
|
58
|
+
header: 'Session ID',
|
|
59
|
+
value: session => `[${session.checkSessionId}](${session.checkSessionLink})`,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
return [
|
|
64
|
+
{ header: 'Status', minWidth: 11, maxWidth: 18, value: (session, fmt) => formatStatus(session.status, fmt) },
|
|
65
|
+
{ header: 'Name', minWidth: 18, maxWidth: 42, value: session => session.name ?? chalk.dim('-') },
|
|
66
|
+
{ header: 'Type', minWidth: 10, maxWidth: 14, value: session => formatCheckType(session.checkType) },
|
|
67
|
+
{
|
|
68
|
+
header: 'Locations',
|
|
69
|
+
minWidth: 14,
|
|
70
|
+
maxWidth: 30,
|
|
71
|
+
value: (session, fmt) => formatLocations(session.runLocations, fmt),
|
|
72
|
+
},
|
|
73
|
+
{ header: 'Duration', minWidth: 10, maxWidth: 12, value: (session, fmt) => formatDuration(session.timeElapsed, fmt) },
|
|
74
|
+
{ header: 'Check ID', minWidth: 12, maxWidth: 38, value: session => chalk.dim(session.checkId) },
|
|
75
|
+
{ header: 'Session ID', minWidth: 12, maxWidth: 38, value: session => chalk.dim(session.checkSessionId) },
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
function formatSummary(sessions, detached) {
|
|
79
|
+
const count = sessions.length;
|
|
80
|
+
const noun = `check session${count === 1 ? '' : 's'}`;
|
|
81
|
+
if (detached)
|
|
82
|
+
return `${count} ${noun} started.`;
|
|
83
|
+
const statuses = new Map();
|
|
84
|
+
for (const session of sessions) {
|
|
85
|
+
statuses.set(session.status, (statuses.get(session.status) ?? 0) + 1);
|
|
86
|
+
}
|
|
87
|
+
const summary = [...statuses.entries()]
|
|
88
|
+
.map(([status, statusCount]) => `${statusCount} ${status.toLowerCase().replace(/_/g, ' ')}`)
|
|
89
|
+
.join(', ');
|
|
90
|
+
return `${count} ${noun} completed: ${summary}.`;
|
|
91
|
+
}
|
|
92
|
+
export function formatCheckSessionsRun(sessions, format, options) {
|
|
93
|
+
const summary = formatSummary(sessions, options.detached);
|
|
94
|
+
const alertingNote = 'Configured alerting rules apply to these check runs.';
|
|
95
|
+
const table = renderAdaptiveTable(buildColumns(format), sessions, format);
|
|
96
|
+
if (format === 'md') {
|
|
97
|
+
return [
|
|
98
|
+
'# Check sessions',
|
|
99
|
+
'',
|
|
100
|
+
summary,
|
|
101
|
+
'',
|
|
102
|
+
`> ${alertingNote}`,
|
|
103
|
+
'',
|
|
104
|
+
table,
|
|
105
|
+
].join('\n');
|
|
106
|
+
}
|
|
107
|
+
const hints = renderCommandHints([
|
|
108
|
+
{ label: 'Inspect check', command: 'checkly checks get <check-id>' },
|
|
109
|
+
{ label: sessions.length === 1 ? 'Open session' : 'Open first session', command: sessions[0].checkSessionLink },
|
|
110
|
+
], { gap: 3 });
|
|
111
|
+
return [summary, chalk.dim(alertingNote), '', table, '', hints].join('\n');
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=check-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-sessions.js","sourceRoot":"","sources":["../../src/formatters/check-sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/rest/api.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import Runtimes from './runtimes.js';
|
|
|
8
8
|
import PrivateLocations from './private-locations.js';
|
|
9
9
|
import Locations from './locations.js';
|
|
10
10
|
import TestSessions from './test-sessions.js';
|
|
11
|
+
import CheckSessions from './check-sessions.js';
|
|
11
12
|
import EnvironmentVariables from './environment-variables.js';
|
|
12
13
|
import HeartbeatChecks from './heartbeat-checks.js';
|
|
13
14
|
import ChecklyStorage from './checkly-storage.js';
|
|
@@ -46,6 +47,7 @@ export declare const runtimes: Runtimes;
|
|
|
46
47
|
export declare const locations: Locations;
|
|
47
48
|
export declare const privateLocations: PrivateLocations;
|
|
48
49
|
export declare const testSessions: TestSessions;
|
|
50
|
+
export declare const checkSessions: CheckSessions;
|
|
49
51
|
export declare const environmentVariables: EnvironmentVariables;
|
|
50
52
|
export declare const heartbeatCheck: HeartbeatChecks;
|
|
51
53
|
export declare const checklyStorage: ChecklyStorage;
|