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.
@@ -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 === 300
30
- ? "Every 5 minutes"
31
- : interval === 900
32
- ? "Every 15 minutes"
33
- : interval === 1800
34
- ? "Every 30 minutes"
35
- : interval === 3600
36
- ? "Every 1 hour"
37
- : `${interval} seconds`;
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
- : "N/A"}`);
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.id}`);
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"}`);
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -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.data;
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.id,
21
+ ID: c._id,
22
22
  URL: c.url,
23
- Interval: `${c.interval_sec} seconds`,
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,oBAqCC;AAzCD,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,CAAC,IAAI,CAAC;QAE3B,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,EAAE;YACR,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,QAAQ,EAAE,GAAG,CAAC,CAAC,YAAY,UAAU;YACrC,aAAa,EACX,CAAC,CAAC,WAAW,KAAK,IAAI;gBACpB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM;oBAC1B,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,KAAK;YACX,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"}
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"}
@@ -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
- // baseURL: "https://be.apihealthz.com",
11
- baseURL: "http://localhost:8080",
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) => {
@@ -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,0CAA0C;IAC1C,OAAO,EAAE,uBAAuB;IAChC,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"}
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,8CAqBC;AAxBD,4CAAuD;AACvD,+BAA4B;AAErB,KAAK,UAAU,iBAAiB,CAAC,OAKvC;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;KACrB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC"}
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"}
@@ -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
- const { data } = await api_1.api.get("/auth/me");
100
- console.log(`✔ Logged in as ${data?.email}`);
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":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apihealthz",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -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 === 300
34
- ? "Every 5 minutes"
35
- : interval === 900
36
- ? "Every 15 minutes"
37
- : interval === 1800
38
- ? "Every 30 minutes"
39
- : interval === 3600
40
- ? "Every 1 hour"
41
- : `${interval} seconds`;
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
- ? "Slack"
83
- : alertType === "email"
84
- ? "Email"
85
- : "N/A"
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.id}`);
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
  }
@@ -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.data;
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.id,
24
+ ID: c._id,
25
25
  URL: c.url,
26
- Interval: `${c.interval_sec} seconds`,
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
- ? "❌ DOWN"
32
- : "N/A",
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"}`);
@@ -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: "https://be.apihealthz.com",
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 { clearToken, getToken } from "../utils/config";
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);
@@ -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
- const { data } = await api.get("/auth/me");
120
- console.log(`✔ Logged in as ${data?.email}`);
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"}