apihealthz 1.0.2 → 1.1.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/dist/commands/add.js +29 -11
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/list.js +13 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/services/api.js +2 -2
- package/dist/services/api.js.map +1 -1
- package/dist/services/apiHealth.js +1 -0
- package/dist/services/apiHealth.js.map +1 -1
- package/dist/services/auth.js +38 -3
- package/dist/services/auth.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/add.ts +33 -16
- package/src/commands/list.ts +17 -6
- package/src/services/api.ts +2 -1
- package/src/services/apiHealth.ts +3 -1
- package/src/services/auth.ts +37 -3
- package/dist/commands/addApiCheck.js +0 -14
- package/dist/commands/addApiCheck.js.map +0 -1
- package/dist/commands/apiCheck.js +0 -12
- package/dist/commands/apiCheck.js.map +0 -1
- package/dist/services/apiHealthz.js +0 -48
- package/dist/services/apiHealthz.js.map +0 -1
package/dist/commands/add.js
CHANGED
|
@@ -20,21 +20,24 @@ async function add() {
|
|
|
20
20
|
const interval = await (0, prompts_1.select)({
|
|
21
21
|
message: "Select check interval:",
|
|
22
22
|
choices: [
|
|
23
|
+
{ name: "Every 1 minute (only for premium users)", value: 60 },
|
|
23
24
|
{ name: "Every 5 minutes", value: 300 },
|
|
24
25
|
{ name: "Every 15 minutes", value: 900 },
|
|
25
26
|
{ name: "Every 30 minutes", value: 1800 },
|
|
26
27
|
{ name: "Every 1 hour", value: 3600 },
|
|
27
28
|
],
|
|
28
29
|
});
|
|
29
|
-
const intervalName = interval ===
|
|
30
|
-
? "Every
|
|
31
|
-
: interval ===
|
|
32
|
-
? "Every
|
|
33
|
-
: interval ===
|
|
34
|
-
? "Every
|
|
35
|
-
: interval ===
|
|
36
|
-
? "Every
|
|
37
|
-
:
|
|
30
|
+
const intervalName = interval === 60
|
|
31
|
+
? "Every 1 minute (only for premium users)"
|
|
32
|
+
: interval === 300
|
|
33
|
+
? "Every 5 minutes"
|
|
34
|
+
: interval === 900
|
|
35
|
+
? "Every 15 minutes"
|
|
36
|
+
: interval === 1800
|
|
37
|
+
? "Every 30 minutes"
|
|
38
|
+
: interval === 3600
|
|
39
|
+
? "Every 1 hour"
|
|
40
|
+
: `${interval} seconds`;
|
|
38
41
|
const alertType = await (0, prompts_1.select)({
|
|
39
42
|
message: "How do you want to receive alerts?",
|
|
40
43
|
choices: [
|
|
@@ -46,6 +49,7 @@ async function add() {
|
|
|
46
49
|
});
|
|
47
50
|
let slack_webhook;
|
|
48
51
|
let email;
|
|
52
|
+
let whatsapp;
|
|
49
53
|
if (alertType === "slack") {
|
|
50
54
|
slack_webhook = await (0, prompts_1.input)({
|
|
51
55
|
message: "Slack webhook URL:",
|
|
@@ -60,6 +64,12 @@ async function add() {
|
|
|
60
64
|
validate: (v) => (v.includes("@") ? true : "Invalid email address"),
|
|
61
65
|
});
|
|
62
66
|
}
|
|
67
|
+
if (alertType === "whatsapp") {
|
|
68
|
+
whatsapp = await (0, prompts_1.input)({
|
|
69
|
+
message: "WhatsApp number (with country code, ex: +911234567890):",
|
|
70
|
+
validate: (v) => (v.includes("+") ? true : "Invalid WhatsApp number"),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
63
73
|
// Show a preview summary before confirmation
|
|
64
74
|
console.log("\n=== Health Check Preview ===");
|
|
65
75
|
console.log(`URL: ${url}`);
|
|
@@ -70,11 +80,15 @@ async function add() {
|
|
|
70
80
|
? "Slack"
|
|
71
81
|
: alertType === "email"
|
|
72
82
|
? "Email"
|
|
73
|
-
: "
|
|
83
|
+
: alertType === "whatsapp"
|
|
84
|
+
? "WhatsApp"
|
|
85
|
+
: "N/A"}`);
|
|
74
86
|
if (slack_webhook)
|
|
75
87
|
console.log(`Slack Webhook: ${slack_webhook}`);
|
|
76
88
|
if (email)
|
|
77
89
|
console.log(`Email: ${email}`);
|
|
90
|
+
if (whatsapp)
|
|
91
|
+
console.log(`WhatsApp: ${whatsapp}`);
|
|
78
92
|
console.log("===========================\n");
|
|
79
93
|
const proceed = await (0, prompts_1.confirm)({
|
|
80
94
|
message: "Create this health check?",
|
|
@@ -89,11 +103,14 @@ async function add() {
|
|
|
89
103
|
interval_sec: interval,
|
|
90
104
|
slack_webhook,
|
|
91
105
|
email,
|
|
106
|
+
whatsapp,
|
|
92
107
|
};
|
|
93
108
|
if (slack_webhook)
|
|
94
109
|
payload.slack_webhook = slack_webhook;
|
|
95
110
|
if (email)
|
|
96
111
|
payload.email = email;
|
|
112
|
+
if (whatsapp)
|
|
113
|
+
payload.whatsapp = whatsapp;
|
|
97
114
|
try {
|
|
98
115
|
process.stdout.write("⠋ Creating health check...\r");
|
|
99
116
|
const response = await (0, apiHealth_1.createHealthCheck)({
|
|
@@ -101,8 +118,9 @@ async function add() {
|
|
|
101
118
|
interval_sec: interval,
|
|
102
119
|
slack_webhook,
|
|
103
120
|
email,
|
|
121
|
+
whatsapp,
|
|
104
122
|
});
|
|
105
|
-
console.log(`✔ Health check created successfully: ${response
|
|
123
|
+
console.log(`✔ Health check created successfully: ${response?.data?.id}`);
|
|
106
124
|
}
|
|
107
125
|
catch (err) {
|
|
108
126
|
console.error(`✖ ${err instanceof Error ? err.message : "Unknown error"}`);
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -12,15 +12,25 @@ async function list() {
|
|
|
12
12
|
}
|
|
13
13
|
try {
|
|
14
14
|
const response = await api_1.api.get("/checks");
|
|
15
|
-
const data = response
|
|
15
|
+
const data = response?.data?.data;
|
|
16
16
|
if (!data || data.length === 0) {
|
|
17
17
|
console.log("✖ No health checks found, add one with: `apihealthz add`");
|
|
18
18
|
process.exit(0);
|
|
19
19
|
}
|
|
20
20
|
console.table(data.map((c) => ({
|
|
21
|
-
ID: c.
|
|
21
|
+
ID: c._id,
|
|
22
22
|
URL: c.url,
|
|
23
|
-
Interval:
|
|
23
|
+
Interval: c.interval_sec === 60
|
|
24
|
+
? "Every 1 minute (Premium)"
|
|
25
|
+
: c.interval_sec === 300
|
|
26
|
+
? "Every 5 minutes"
|
|
27
|
+
: c.interval_sec === 900
|
|
28
|
+
? "Every 15 minutes"
|
|
29
|
+
: c.interval_sec === 1800
|
|
30
|
+
? "Every 30 minutes"
|
|
31
|
+
: c.interval_sec === 3600
|
|
32
|
+
? "Every 1 hour"
|
|
33
|
+
: `${c.interval_sec} seconds`,
|
|
24
34
|
"Last Status": c.last_status === "UP"
|
|
25
35
|
? "✅ UP"
|
|
26
36
|
: c.last_status === "DOWN"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;AAIA,oBAgDC;AApDD,yCAAsC;AACtC,mDAAkD;AAClD,4CAA2C;AAEpC,KAAK,UAAU,IAAI;IACxB,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;QAElC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,GAAG;YACT,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,QAAQ,EACN,CAAC,CAAC,YAAY,KAAK,EAAE;gBACnB,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG;oBACtB,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG;wBACtB,CAAC,CAAC,kBAAkB;wBACpB,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI;4BACvB,CAAC,CAAC,kBAAkB;4BACpB,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI;gCACvB,CAAC,CAAC,cAAc;gCAChB,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,UAAU;YACzC,aAAa,EACX,CAAC,CAAC,WAAW,KAAK,IAAI;gBACpB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM;oBACxB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,KAAK;YACb,cAAc,EAAE,CAAC,CAAC,eAAe;gBAC/B,CAAC,CAAC,IAAA,qBAAU,EAAC,CAAC,CAAC,eAAe,CAAC;gBAC/B,CAAC,CAAC,KAAK;SACV,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/services/api.js
CHANGED
|
@@ -7,8 +7,8 @@ exports.api = void 0;
|
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const config_1 = require("../utils/config");
|
|
9
9
|
exports.api = axios_1.default.create({
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
baseURL: "http://localhost:3000/api/v1",
|
|
11
|
+
// "https://eo2od63zwcbr7tbgwpibb6rqti0ucqon.lambda-url.ap-south-1.on.aws/api/v1",
|
|
12
12
|
timeout: 10000,
|
|
13
13
|
});
|
|
14
14
|
exports.api.interceptors.request.use((config) => {
|
package/dist/services/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4CAA2C;AAE9B,QAAA,GAAG,GAAG,eAAK,CAAC,MAAM,CAAC;IAC9B,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4CAA2C;AAE9B,QAAA,GAAG,GAAG,eAAK,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,8BAA8B;IACvC,kFAAkF;IAClF,OAAO,EAAE,KAAK;CACf,CAAC,CAAC;AAEH,WAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IACtC,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ async function createHealthCheck(payload) {
|
|
|
14
14
|
interval_sec: payload.interval_sec,
|
|
15
15
|
slack_webhook: payload.slack_webhook,
|
|
16
16
|
email: payload.email,
|
|
17
|
+
whatsapp: payload.whatsapp,
|
|
17
18
|
};
|
|
18
19
|
const response = await api_1.api.post("/checks", body);
|
|
19
20
|
return response.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHealth.js","sourceRoot":"","sources":["../../src/services/apiHealth.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"apiHealth.js","sourceRoot":"","sources":["../../src/services/apiHealth.ts"],"names":[],"mappings":";;AAGA,8CAuBC;AA1BD,4CAAuD;AACvD,+BAA4B;AAErB,KAAK,UAAU,iBAAiB,CAAC,OAMvC;IACC,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG;QACX,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
|
package/dist/services/auth.js
CHANGED
|
@@ -21,6 +21,13 @@ async function loginWithProvider(provider) {
|
|
|
21
21
|
console.log("\nOpen this URL in your browser:");
|
|
22
22
|
console.log(data.verification_url);
|
|
23
23
|
console.log("\nEnter code:", data.user_code);
|
|
24
|
+
console.log("\nPress enter to continue...");
|
|
25
|
+
// wait till user press enter then open browser
|
|
26
|
+
await new Promise((resolve) => {
|
|
27
|
+
process.stdin.once("data", () => {
|
|
28
|
+
resolve(null);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
24
31
|
await (0, open_1.default)(data.verification_url);
|
|
25
32
|
await pollForToken(data.device_code);
|
|
26
33
|
}
|
|
@@ -78,7 +85,7 @@ async function pollForToken(deviceCode) {
|
|
|
78
85
|
}
|
|
79
86
|
(0, config_1.saveToken)(data.token);
|
|
80
87
|
console.log("\n✔ Logged in successfully");
|
|
81
|
-
return;
|
|
88
|
+
return process.exit(0);
|
|
82
89
|
}
|
|
83
90
|
if (data.status === "expired") {
|
|
84
91
|
console.log("\n✖ Login expired");
|
|
@@ -96,7 +103,35 @@ async function authStatus() {
|
|
|
96
103
|
console.log("Not logged in");
|
|
97
104
|
return;
|
|
98
105
|
}
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
try {
|
|
107
|
+
const { data } = await api_1.api.get("/auth/me");
|
|
108
|
+
console.log(`✔ Logged in as ${data?.data?.email}`);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.log("\n✖ Error fetching auth status");
|
|
112
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
113
|
+
if (error.response) {
|
|
114
|
+
// Server responded with error status
|
|
115
|
+
console.log(` Status: ${error.response.status}`);
|
|
116
|
+
console.log(` Message: ${error.response.statusText}`);
|
|
117
|
+
if (error.response.data) {
|
|
118
|
+
console.log(` Details:`, error.response.data);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (error.request) {
|
|
122
|
+
// Request was made but no response received
|
|
123
|
+
console.log(` No response received from server`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Error setting up the request
|
|
127
|
+
console.log(` Error: ${error.message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// Unknown error type
|
|
132
|
+
console.log(` Error:`, error);
|
|
133
|
+
}
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
101
136
|
}
|
|
102
137
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":";;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/add.ts
CHANGED
|
@@ -22,6 +22,7 @@ export async function add() {
|
|
|
22
22
|
const interval = await select({
|
|
23
23
|
message: "Select check interval:",
|
|
24
24
|
choices: [
|
|
25
|
+
{ name: "Every 1 minute (only for premium users)", value: 60 },
|
|
25
26
|
{ name: "Every 5 minutes", value: 300 },
|
|
26
27
|
{ name: "Every 15 minutes", value: 900 },
|
|
27
28
|
{ name: "Every 30 minutes", value: 1800 },
|
|
@@ -30,15 +31,17 @@ export async function add() {
|
|
|
30
31
|
});
|
|
31
32
|
|
|
32
33
|
const intervalName =
|
|
33
|
-
interval ===
|
|
34
|
-
? "Every
|
|
35
|
-
: interval ===
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
interval === 60
|
|
35
|
+
? "Every 1 minute (only for premium users)"
|
|
36
|
+
: interval === 300
|
|
37
|
+
? "Every 5 minutes"
|
|
38
|
+
: interval === 900
|
|
39
|
+
? "Every 15 minutes"
|
|
40
|
+
: interval === 1800
|
|
41
|
+
? "Every 30 minutes"
|
|
42
|
+
: interval === 3600
|
|
43
|
+
? "Every 1 hour"
|
|
44
|
+
: `${interval} seconds`;
|
|
42
45
|
|
|
43
46
|
const alertType = await select({
|
|
44
47
|
message: "How do you want to receive alerts?",
|
|
@@ -52,6 +55,7 @@ export async function add() {
|
|
|
52
55
|
|
|
53
56
|
let slack_webhook;
|
|
54
57
|
let email;
|
|
58
|
+
let whatsapp;
|
|
55
59
|
|
|
56
60
|
if (alertType === "slack") {
|
|
57
61
|
slack_webhook = await input({
|
|
@@ -70,6 +74,13 @@ export async function add() {
|
|
|
70
74
|
});
|
|
71
75
|
}
|
|
72
76
|
|
|
77
|
+
if (alertType === "whatsapp") {
|
|
78
|
+
whatsapp = await input({
|
|
79
|
+
message: "WhatsApp number (with country code, ex: +911234567890):",
|
|
80
|
+
validate: (v) => (v.includes("+") ? true : "Invalid WhatsApp number"),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
73
84
|
// Show a preview summary before confirmation
|
|
74
85
|
console.log("\n=== Health Check Preview ===");
|
|
75
86
|
console.log(`URL: ${url}`);
|
|
@@ -79,14 +90,17 @@ export async function add() {
|
|
|
79
90
|
alertType === null
|
|
80
91
|
? "None"
|
|
81
92
|
: alertType === "slack"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
93
|
+
? "Slack"
|
|
94
|
+
: alertType === "email"
|
|
95
|
+
? "Email"
|
|
96
|
+
: alertType === "whatsapp"
|
|
97
|
+
? "WhatsApp"
|
|
98
|
+
: "N/A"
|
|
99
|
+
}`,
|
|
87
100
|
);
|
|
88
101
|
if (slack_webhook) console.log(`Slack Webhook: ${slack_webhook}`);
|
|
89
102
|
if (email) console.log(`Email: ${email}`);
|
|
103
|
+
if (whatsapp) console.log(`WhatsApp: ${whatsapp}`);
|
|
90
104
|
console.log("===========================\n");
|
|
91
105
|
|
|
92
106
|
const proceed = await confirm({
|
|
@@ -104,10 +118,12 @@ export async function add() {
|
|
|
104
118
|
interval_sec: interval,
|
|
105
119
|
slack_webhook,
|
|
106
120
|
email,
|
|
121
|
+
whatsapp,
|
|
107
122
|
};
|
|
108
123
|
|
|
109
124
|
if (slack_webhook) payload.slack_webhook = slack_webhook;
|
|
110
125
|
if (email) payload.email = email;
|
|
126
|
+
if (whatsapp) payload.whatsapp = whatsapp;
|
|
111
127
|
|
|
112
128
|
try {
|
|
113
129
|
process.stdout.write("⠋ Creating health check...\r");
|
|
@@ -116,11 +132,12 @@ export async function add() {
|
|
|
116
132
|
interval_sec: interval,
|
|
117
133
|
slack_webhook,
|
|
118
134
|
email,
|
|
135
|
+
whatsapp,
|
|
119
136
|
});
|
|
120
|
-
console.log(`✔ Health check created successfully: ${response
|
|
137
|
+
console.log(`✔ Health check created successfully: ${response?.data?.id}`);
|
|
121
138
|
} catch (err) {
|
|
122
139
|
console.error(
|
|
123
|
-
`✖ ${err instanceof Error ? err.message : "Unknown error"}
|
|
140
|
+
`✖ ${err instanceof Error ? err.message : "Unknown error"}`,
|
|
124
141
|
);
|
|
125
142
|
process.exit(1);
|
|
126
143
|
}
|
package/src/commands/list.ts
CHANGED
|
@@ -12,7 +12,7 @@ export async function list() {
|
|
|
12
12
|
|
|
13
13
|
try {
|
|
14
14
|
const response = await api.get("/checks");
|
|
15
|
-
const data = response
|
|
15
|
+
const data = response?.data?.data;
|
|
16
16
|
|
|
17
17
|
if (!data || data.length === 0) {
|
|
18
18
|
console.log("✖ No health checks found, add one with: `apihealthz add`");
|
|
@@ -21,19 +21,30 @@ export async function list() {
|
|
|
21
21
|
|
|
22
22
|
console.table(
|
|
23
23
|
data.map((c: any) => ({
|
|
24
|
-
ID: c.
|
|
24
|
+
ID: c._id,
|
|
25
25
|
URL: c.url,
|
|
26
|
-
Interval:
|
|
26
|
+
Interval:
|
|
27
|
+
c.interval_sec === 60
|
|
28
|
+
? "Every 1 minute (Premium)"
|
|
29
|
+
: c.interval_sec === 300
|
|
30
|
+
? "Every 5 minutes"
|
|
31
|
+
: c.interval_sec === 900
|
|
32
|
+
? "Every 15 minutes"
|
|
33
|
+
: c.interval_sec === 1800
|
|
34
|
+
? "Every 30 minutes"
|
|
35
|
+
: c.interval_sec === 3600
|
|
36
|
+
? "Every 1 hour"
|
|
37
|
+
: `${c.interval_sec} seconds`,
|
|
27
38
|
"Last Status":
|
|
28
39
|
c.last_status === "UP"
|
|
29
40
|
? "✅ UP"
|
|
30
41
|
: c.last_status === "DOWN"
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
? "❌ DOWN"
|
|
43
|
+
: "N/A",
|
|
33
44
|
"Last Checked": c.last_checked_at
|
|
34
45
|
? formatDate(c.last_checked_at)
|
|
35
46
|
: "N/A",
|
|
36
|
-
}))
|
|
47
|
+
})),
|
|
37
48
|
);
|
|
38
49
|
} catch (err) {
|
|
39
50
|
console.error(`✖ ${err instanceof Error ? err.message : "Unknown error"}`);
|
package/src/services/api.ts
CHANGED
|
@@ -2,7 +2,8 @@ import axios from "axios";
|
|
|
2
2
|
import { getToken } from "../utils/config";
|
|
3
3
|
|
|
4
4
|
export const api = axios.create({
|
|
5
|
-
baseURL:
|
|
5
|
+
baseURL:
|
|
6
|
+
"https://eo2od63zwcbr7tbgwpibb6rqti0ucqon.lambda-url.ap-south-1.on.aws/api/v1",
|
|
6
7
|
timeout: 10000,
|
|
7
8
|
});
|
|
8
9
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getToken } from "../utils/config";
|
|
2
2
|
import { api } from "./api";
|
|
3
3
|
|
|
4
4
|
export async function createHealthCheck(payload: {
|
|
@@ -6,6 +6,7 @@ export async function createHealthCheck(payload: {
|
|
|
6
6
|
interval_sec: number;
|
|
7
7
|
slack_webhook?: string;
|
|
8
8
|
email?: string;
|
|
9
|
+
whatsapp?: string;
|
|
9
10
|
}) {
|
|
10
11
|
const token = getToken();
|
|
11
12
|
if (!token) {
|
|
@@ -18,6 +19,7 @@ export async function createHealthCheck(payload: {
|
|
|
18
19
|
interval_sec: payload.interval_sec,
|
|
19
20
|
slack_webhook: payload.slack_webhook,
|
|
20
21
|
email: payload.email,
|
|
22
|
+
whatsapp: payload.whatsapp,
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
const response = await api.post("/checks", body);
|
package/src/services/auth.ts
CHANGED
|
@@ -30,6 +30,14 @@ export async function loginWithProvider(provider: string) {
|
|
|
30
30
|
console.log("\nOpen this URL in your browser:");
|
|
31
31
|
console.log(data.verification_url);
|
|
32
32
|
console.log("\nEnter code:", data.user_code);
|
|
33
|
+
console.log("\nPress enter to continue...");
|
|
34
|
+
|
|
35
|
+
// wait till user press enter then open browser
|
|
36
|
+
await new Promise((resolve) => {
|
|
37
|
+
process.stdin.once("data", () => {
|
|
38
|
+
resolve(null);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
33
41
|
|
|
34
42
|
await open(data.verification_url);
|
|
35
43
|
|
|
@@ -94,7 +102,7 @@ async function pollForToken(deviceCode: string) {
|
|
|
94
102
|
}
|
|
95
103
|
saveToken(data.token);
|
|
96
104
|
console.log("\n✔ Logged in successfully");
|
|
97
|
-
return;
|
|
105
|
+
return process.exit(0);
|
|
98
106
|
}
|
|
99
107
|
|
|
100
108
|
if (data.status === "expired") {
|
|
@@ -116,6 +124,32 @@ export async function authStatus() {
|
|
|
116
124
|
return;
|
|
117
125
|
}
|
|
118
126
|
|
|
119
|
-
|
|
120
|
-
|
|
127
|
+
try {
|
|
128
|
+
const { data } = await api.get("/auth/me");
|
|
129
|
+
console.log(`✔ Logged in as ${data?.data?.email}`);
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.log("\n✖ Error fetching auth status");
|
|
132
|
+
|
|
133
|
+
if (axios.isAxiosError(error)) {
|
|
134
|
+
if (error.response) {
|
|
135
|
+
// Server responded with error status
|
|
136
|
+
console.log(` Status: ${error.response.status}`);
|
|
137
|
+
console.log(` Message: ${error.response.statusText}`);
|
|
138
|
+
if (error.response.data) {
|
|
139
|
+
console.log(` Details:`, error.response.data);
|
|
140
|
+
}
|
|
141
|
+
} else if (error.request) {
|
|
142
|
+
// Request was made but no response received
|
|
143
|
+
console.log(` No response received from server`);
|
|
144
|
+
} else {
|
|
145
|
+
// Error setting up the request
|
|
146
|
+
console.log(` Error: ${error.message}`);
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
// Unknown error type
|
|
150
|
+
console.log(` Error:`, error);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
121
155
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addApiCheckCommand = void 0;
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const apiHealthz_1 = require("../services/apiHealthz");
|
|
6
|
-
exports.addApiCheckCommand = new commander_1.Command("add").description("Add a new API health check");
|
|
7
|
-
exports.addApiCheckCommand
|
|
8
|
-
.command("url")
|
|
9
|
-
.description("Add a new API health check")
|
|
10
|
-
.option("-u, --url <url>", "The URL of the API to check")
|
|
11
|
-
.action(async (options) => {
|
|
12
|
-
await (0, apiHealthz_1.addApiHealthCheckUrl)(options.url);
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=addApiCheck.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"addApiCheck.js","sourceRoot":"","sources":["../../src/commands/addApiCheck.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,uDAA8D;AAEjD,QAAA,kBAAkB,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAC9D,4BAA4B,CAC7B,CAAC;AAEF,0BAAkB;KACf,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,iCAAoB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addApiCheckCommand = void 0;
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const apiHealthz_1 = require("../services/apiHealthz");
|
|
6
|
-
exports.addApiCheckCommand = new commander_1.Command("add").description("Add a new API health check");
|
|
7
|
-
exports.addApiCheckCommand
|
|
8
|
-
.command("url")
|
|
9
|
-
.description("The url of the API to monitor")
|
|
10
|
-
.argument("<url>", "The URL of the API to monitor")
|
|
11
|
-
.action(apiHealthz_1.add);
|
|
12
|
-
//# sourceMappingURL=apiCheck.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiCheck.js","sourceRoot":"","sources":["../../src/commands/apiCheck.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,uDAA6C;AAEhC,QAAA,kBAAkB,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAC9D,4BAA4B,CAC7B,CAAC;AAEF,0BAAkB;KACf,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,gBAAG,CAAC,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.add = add;
|
|
4
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
5
|
-
async function add() {
|
|
6
|
-
const url = await (0, prompts_1.input)({
|
|
7
|
-
message: "API URL to monitor:",
|
|
8
|
-
validate: (v) => v.startsWith("http") || "Invalid URL",
|
|
9
|
-
});
|
|
10
|
-
console.log(url);
|
|
11
|
-
const interval = await (0, prompts_1.select)({
|
|
12
|
-
message: "Select check interval:",
|
|
13
|
-
choices: [
|
|
14
|
-
{ name: "Every 5 minutes", value: 300 },
|
|
15
|
-
{ name: "Every 15 minutes", value: 900 },
|
|
16
|
-
{ name: "Every 30 minutes", value: 1800 },
|
|
17
|
-
{ name: "Every 1 hour", value: 3600 },
|
|
18
|
-
],
|
|
19
|
-
});
|
|
20
|
-
const alertType = await (0, prompts_1.select)({
|
|
21
|
-
message: "How do you want to receive alerts?",
|
|
22
|
-
choices: [
|
|
23
|
-
{ name: "Slack", value: "slack" },
|
|
24
|
-
{ name: "Email", value: "email" },
|
|
25
|
-
{ name: "WhatsApp", value: "whatsapp" },
|
|
26
|
-
{ name: "None", value: null },
|
|
27
|
-
],
|
|
28
|
-
});
|
|
29
|
-
let alertValue;
|
|
30
|
-
if (alertType === "slack") {
|
|
31
|
-
alertValue = await (0, prompts_1.input)({ message: "Slack webhook URL:" });
|
|
32
|
-
}
|
|
33
|
-
if (alertType === "email") {
|
|
34
|
-
alertValue = await (0, prompts_1.input)({ message: "Email address:" });
|
|
35
|
-
}
|
|
36
|
-
if (alertType === "whatsapp") {
|
|
37
|
-
alertValue = await (0, prompts_1.input)({ message: "WhatsApp phone number:" });
|
|
38
|
-
}
|
|
39
|
-
console.log(alertValue);
|
|
40
|
-
const proceed = await (0, prompts_1.confirm)({
|
|
41
|
-
message: "Create this health check?",
|
|
42
|
-
});
|
|
43
|
-
if (!proceed) {
|
|
44
|
-
console.log("Cancelled");
|
|
45
|
-
process.exit(0);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=apiHealthz.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiHealthz.js","sourceRoot":"","sources":["../../src/services/apiHealthz.ts"],"names":[],"mappings":";;AAEA,kBAiDC;AAnDD,+CAA2D;AAEpD,KAAK,UAAU,GAAG;IACvB,MAAM,GAAG,GAAG,MAAM,IAAA,eAAK,EAAC;QACtB,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,aAAa;KACvD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAM,EAAC;QAC5B,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;YACxC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE;YACzC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;SACtC;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,IAAA,gBAAM,EAAC;QAC7B,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YACjC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YACjC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;SAC9B;KACF,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC;IAEf,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,UAAU,GAAG,MAAM,IAAA,eAAK,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,UAAU,GAAG,MAAM,IAAA,eAAK,EAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,UAAU,GAAG,MAAM,IAAA,eAAK,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAO,EAAC;QAC5B,OAAO,EAAE,2BAA2B;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|