@quiltdata/benchling-webhook 0.8.0-20251118T071233Z → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -92
- package/dist/bin/cli.js +28 -19
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/commands/logs.d.ts +9 -0
- package/dist/bin/commands/logs.d.ts.map +1 -1
- package/dist/bin/commands/logs.js +308 -52
- package/dist/bin/commands/logs.js.map +1 -1
- package/dist/lib/utils/cli-helpers.d.ts +27 -0
- package/dist/lib/utils/cli-helpers.d.ts.map +1 -0
- package/dist/lib/utils/cli-helpers.js +46 -0
- package/dist/lib/utils/cli-helpers.js.map +1 -0
- package/dist/lib/utils/ecs-service-discovery.d.ts +32 -0
- package/dist/lib/utils/ecs-service-discovery.d.ts.map +1 -0
- package/dist/lib/utils/ecs-service-discovery.js +203 -0
- package/dist/lib/utils/ecs-service-discovery.js.map +1 -0
- package/dist/lib/utils/time-format.d.ts +53 -0
- package/dist/lib/utils/time-format.d.ts.map +1 -0
- package/dist/lib/utils/time-format.js +150 -0
- package/dist/lib/utils/time-format.js.map +1 -0
- package/dist/package.json +3 -2
- package/package.json +3 -2
- package/dist/scripts/check-logs.d.ts +0 -19
- package/dist/scripts/check-logs.d.ts.map +0 -1
- package/dist/scripts/check-logs.js +0 -302
- package/dist/scripts/check-logs.js.map +0 -1
|
@@ -13,9 +13,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.logsCommand = logsCommand;
|
|
16
|
-
const child_process_1 = require("child_process");
|
|
17
16
|
const chalk_1 = __importDefault(require("chalk"));
|
|
17
|
+
const ora_1 = __importDefault(require("ora"));
|
|
18
|
+
const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
|
|
19
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
20
|
+
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
18
21
|
const xdg_config_1 = require("../../lib/xdg-config");
|
|
22
|
+
const ecs_service_discovery_1 = require("../../lib/utils/ecs-service-discovery");
|
|
23
|
+
const time_format_1 = require("../../lib/utils/time-format");
|
|
24
|
+
const cli_helpers_1 = require("../../lib/utils/cli-helpers");
|
|
19
25
|
const STACK_NAME = "BenchlingWebhookStack";
|
|
20
26
|
/**
|
|
21
27
|
* Get AWS region and deployment info from profile configuration
|
|
@@ -32,9 +38,9 @@ function getDeploymentInfo(profile, configStorage) {
|
|
|
32
38
|
if (match) {
|
|
33
39
|
return {
|
|
34
40
|
region,
|
|
35
|
-
stackName: STACK_NAME,
|
|
41
|
+
stackName: STACK_NAME,
|
|
36
42
|
integratedMode: true,
|
|
37
|
-
quiltStackName: match[1],
|
|
43
|
+
quiltStackName: match[1],
|
|
38
44
|
};
|
|
39
45
|
}
|
|
40
46
|
}
|
|
@@ -53,56 +59,219 @@ function getDeploymentInfo(profile, configStorage) {
|
|
|
53
59
|
return null;
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
56
|
-
*
|
|
62
|
+
* Double the time range, capping at 7 days
|
|
57
63
|
*/
|
|
58
|
-
function
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
command += ` --since ${options.since}`;
|
|
65
|
-
command += " --format short";
|
|
66
|
-
if (options.filter) {
|
|
67
|
-
command += ` --filter-pattern "${options.filter}"`;
|
|
64
|
+
function expandTimeRange(currentSince) {
|
|
65
|
+
const currentMs = (0, time_format_1.parseTimeRange)(currentSince);
|
|
66
|
+
const doubledMs = currentMs * 2;
|
|
67
|
+
const maxMs = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
68
|
+
if (doubledMs >= maxMs) {
|
|
69
|
+
return "7d";
|
|
68
70
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
return (0, time_format_1.formatTimeRange)(doubledMs);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get log group names from CloudFormation stack outputs or ECS services
|
|
75
|
+
*/
|
|
76
|
+
async function getLogGroupsFromStack(stackName, region, integratedMode, awsProfile) {
|
|
77
|
+
try {
|
|
78
|
+
// For integrated mode, use shared ECS service discovery
|
|
79
|
+
if (integratedMode) {
|
|
80
|
+
return await (0, ecs_service_discovery_1.discoverECSServiceLogGroups)(stackName, region, awsProfile);
|
|
81
|
+
}
|
|
82
|
+
// For standalone mode, use stack outputs
|
|
83
|
+
const clientConfig = { region };
|
|
84
|
+
if (awsProfile) {
|
|
85
|
+
clientConfig.credentials = (0, credential_providers_1.fromIni)({ profile: awsProfile });
|
|
86
|
+
}
|
|
87
|
+
const cfClient = new client_cloudformation_1.CloudFormationClient(clientConfig);
|
|
88
|
+
const command = new client_cloudformation_1.DescribeStacksCommand({ StackName: stackName });
|
|
89
|
+
const response = await cfClient.send(command);
|
|
90
|
+
const stack = response.Stacks?.[0];
|
|
91
|
+
if (!stack) {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
const outputs = stack.Outputs || [];
|
|
95
|
+
const logGroups = {};
|
|
96
|
+
const ecsLogGroup = outputs.find((o) => o.OutputKey === "EcsLogGroup")?.OutputValue;
|
|
97
|
+
const apiLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup")?.OutputValue;
|
|
98
|
+
const apiExecLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup")?.OutputValue;
|
|
99
|
+
if (ecsLogGroup)
|
|
100
|
+
logGroups["ecs"] = ecsLogGroup;
|
|
101
|
+
if (apiLogGroup)
|
|
102
|
+
logGroups["api"] = apiLogGroup;
|
|
103
|
+
if (apiExecLogGroup)
|
|
104
|
+
logGroups["api-exec"] = apiExecLogGroup;
|
|
105
|
+
return logGroups;
|
|
72
106
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.warn(chalk_1.default.dim(`Could not retrieve log groups from stack: ${error.message}`));
|
|
109
|
+
return {};
|
|
76
110
|
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Fetch logs from a single log group
|
|
114
|
+
*/
|
|
115
|
+
async function fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile) {
|
|
77
116
|
try {
|
|
78
|
-
|
|
117
|
+
const clientConfig = { region };
|
|
118
|
+
if (awsProfile) {
|
|
119
|
+
clientConfig.credentials = (0, credential_providers_1.fromIni)({ profile: awsProfile });
|
|
120
|
+
}
|
|
121
|
+
const logsClient = new client_cloudwatch_logs_1.CloudWatchLogsClient(clientConfig);
|
|
122
|
+
const startTime = Date.now() - (0, time_format_1.parseTimeRange)(since);
|
|
123
|
+
const command = new client_cloudwatch_logs_1.FilterLogEventsCommand({
|
|
124
|
+
logGroupName,
|
|
125
|
+
startTime,
|
|
126
|
+
filterPattern,
|
|
127
|
+
limit,
|
|
128
|
+
});
|
|
129
|
+
const response = await logsClient.send(command);
|
|
130
|
+
return response.events || [];
|
|
79
131
|
}
|
|
80
132
|
catch (error) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
133
|
+
console.warn(chalk_1.default.dim(`Could not fetch logs from ${logGroupName}: ${error.message}`));
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Display logs in organized sections
|
|
139
|
+
*/
|
|
140
|
+
function displayLogs(logGroups, profile, region, since, limit, expanded) {
|
|
141
|
+
const timeStr = (0, time_format_1.formatLocalDateTime)(new Date());
|
|
142
|
+
const timezone = (0, time_format_1.getLocalTimezone)();
|
|
143
|
+
console.log(chalk_1.default.bold(`\nLogs for Profile: ${profile} @ ${timeStr} (${timezone})\n`));
|
|
144
|
+
console.log(chalk_1.default.dim("─".repeat(80)));
|
|
145
|
+
console.log(`${chalk_1.default.bold("Region:")} ${chalk_1.default.cyan(region)} ${chalk_1.default.bold("Time Range:")} ${chalk_1.default.cyan(`Last ${since}`)}${expanded ? chalk_1.default.yellow(" (auto-expanded)") : ""}`);
|
|
146
|
+
console.log(`${chalk_1.default.bold("Showing:")} ${chalk_1.default.cyan(`Last ~${limit} entries per log group`)}`);
|
|
147
|
+
console.log(chalk_1.default.dim("─".repeat(80)));
|
|
148
|
+
console.log("");
|
|
149
|
+
// Display each log group in its own section
|
|
150
|
+
for (const logGroup of logGroups) {
|
|
151
|
+
console.log(chalk_1.default.bold(`${logGroup.displayName}:`));
|
|
152
|
+
console.log(chalk_1.default.dim(` Log Group: ${logGroup.name}`));
|
|
153
|
+
if (logGroup.entries.length === 0) {
|
|
154
|
+
console.log(chalk_1.default.dim(" No log entries found\n"));
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
console.log(chalk_1.default.dim(` Showing ${logGroup.entries.length} entries:\n`));
|
|
158
|
+
// Display log entries
|
|
159
|
+
for (const entry of logGroup.entries) {
|
|
160
|
+
if (!entry.timestamp || !entry.message)
|
|
161
|
+
continue;
|
|
162
|
+
const timeDisplay = (0, time_format_1.formatLocalTime)(entry.timestamp);
|
|
163
|
+
// Color code by log level if detectable
|
|
164
|
+
let message = entry.message.trim();
|
|
165
|
+
let messageColor = chalk_1.default.white;
|
|
166
|
+
if (message.includes("ERROR") || message.includes("CRITICAL")) {
|
|
167
|
+
messageColor = chalk_1.default.red;
|
|
168
|
+
}
|
|
169
|
+
else if (message.includes("WARNING") || message.includes("WARN")) {
|
|
170
|
+
messageColor = chalk_1.default.yellow;
|
|
171
|
+
}
|
|
172
|
+
else if (message.includes("INFO")) {
|
|
173
|
+
messageColor = chalk_1.default.cyan;
|
|
174
|
+
}
|
|
175
|
+
else if (message.includes("DEBUG")) {
|
|
176
|
+
messageColor = chalk_1.default.dim;
|
|
177
|
+
}
|
|
178
|
+
console.log(` ${chalk_1.default.dim(timeDisplay)} ${messageColor(message)}`);
|
|
179
|
+
}
|
|
180
|
+
console.log("");
|
|
181
|
+
}
|
|
182
|
+
console.log(chalk_1.default.dim("─".repeat(80)));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Fetch logs from all relevant log groups
|
|
186
|
+
*/
|
|
187
|
+
async function fetchAllLogs(stackName, region, since, limit, type, integratedMode, filterPattern, awsProfile) {
|
|
188
|
+
// Get log groups from stack
|
|
189
|
+
const discoveredLogGroups = await getLogGroupsFromStack(stackName, region, integratedMode, awsProfile);
|
|
190
|
+
const result = [];
|
|
191
|
+
// For integrated mode, query all discovered log groups
|
|
192
|
+
if (integratedMode) {
|
|
193
|
+
// If type is specified and not "all", filter to only matching services
|
|
194
|
+
const logGroupEntries = Object.entries(discoveredLogGroups);
|
|
195
|
+
for (const [serviceName, logGroupName] of logGroupEntries) {
|
|
196
|
+
// If type filter is specified, only show matching services
|
|
197
|
+
if (type !== "all") {
|
|
198
|
+
// For integrated mode, "ecs" type shows all ECS services
|
|
199
|
+
// Other types (api, api-exec) are not available in integrated mode
|
|
200
|
+
if (type !== "ecs") {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Fetch logs from this group
|
|
205
|
+
const entries = await fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile);
|
|
206
|
+
// Sort by timestamp descending (most recent first) and limit
|
|
207
|
+
const sortedEntries = entries
|
|
208
|
+
.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))
|
|
209
|
+
.slice(0, limit);
|
|
210
|
+
// Create friendly display name from service name
|
|
211
|
+
const displayName = serviceName
|
|
212
|
+
.split("-")
|
|
213
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
214
|
+
.join(" ");
|
|
215
|
+
result.push({
|
|
216
|
+
name: logGroupName,
|
|
217
|
+
displayName: `${displayName} (ECS)`,
|
|
218
|
+
entries: sortedEntries,
|
|
219
|
+
});
|
|
88
220
|
}
|
|
221
|
+
return result;
|
|
89
222
|
}
|
|
223
|
+
// For standalone mode, use the traditional type-based approach
|
|
224
|
+
const typesToQuery = type === "all" ? ["ecs", "api", "api-exec"] : [type];
|
|
225
|
+
for (const logType of typesToQuery) {
|
|
226
|
+
const logGroupName = discoveredLogGroups[logType];
|
|
227
|
+
if (!logGroupName) {
|
|
228
|
+
// Don't warn on first attempt, we'll handle it at the result level
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
let displayName;
|
|
232
|
+
switch (logType) {
|
|
233
|
+
case "ecs":
|
|
234
|
+
displayName = "ECS Container Logs";
|
|
235
|
+
break;
|
|
236
|
+
case "api":
|
|
237
|
+
displayName = "API Gateway Access Logs";
|
|
238
|
+
break;
|
|
239
|
+
case "api-exec":
|
|
240
|
+
displayName = "API Gateway Execution Logs";
|
|
241
|
+
break;
|
|
242
|
+
default:
|
|
243
|
+
displayName = logType;
|
|
244
|
+
}
|
|
245
|
+
// Fetch logs from this group
|
|
246
|
+
const entries = await fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile);
|
|
247
|
+
// Sort by timestamp descending (most recent first) and limit
|
|
248
|
+
const sortedEntries = entries
|
|
249
|
+
.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))
|
|
250
|
+
.slice(0, limit);
|
|
251
|
+
result.push({
|
|
252
|
+
name: logGroupName,
|
|
253
|
+
displayName,
|
|
254
|
+
entries: sortedEntries,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
90
258
|
}
|
|
91
259
|
/**
|
|
92
260
|
* Logs command implementation
|
|
93
261
|
*/
|
|
94
262
|
async function logsCommand(options = {}) {
|
|
95
|
-
const { profile = "default",
|
|
263
|
+
const { profile = "default", awsProfile, type = "all", since = "5m", filter, follow = false, timer, limit = 5, configStorage, } = options;
|
|
96
264
|
// Validate log type
|
|
97
265
|
if (!["ecs", "api", "api-exec", "all"].includes(type)) {
|
|
98
266
|
const errorMsg = "Invalid log type. Must be 'ecs', 'api', 'api-exec', or 'all'";
|
|
99
267
|
console.error(chalk_1.default.red(`\n❌ ${errorMsg}\n`));
|
|
100
268
|
return { success: false, error: errorMsg };
|
|
101
269
|
}
|
|
102
|
-
// Validate follow with
|
|
103
|
-
if (follow
|
|
104
|
-
const errorMsg = "
|
|
270
|
+
// Validate follow mode (not supported with new implementation)
|
|
271
|
+
if (follow) {
|
|
272
|
+
const errorMsg = "Follow mode (--follow) is not supported. Use --timer to auto-refresh logs.";
|
|
105
273
|
console.error(chalk_1.default.red(`\n❌ ${errorMsg}\n`));
|
|
274
|
+
console.log(chalk_1.default.dim("Example: benchling-webhook logs --timer 5\n"));
|
|
106
275
|
return { success: false, error: errorMsg };
|
|
107
276
|
}
|
|
108
277
|
const xdg = configStorage || new xdg_config_1.XDGConfig();
|
|
@@ -122,26 +291,113 @@ async function logsCommand(options = {}) {
|
|
|
122
291
|
}
|
|
123
292
|
const { region, integratedMode, quiltStackName } = deploymentInfo;
|
|
124
293
|
// For integrated mode, use Quilt stack name; for standalone use BenchlingWebhookStack
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
294
|
+
const stackName = integratedMode && quiltStackName ? quiltStackName : STACK_NAME;
|
|
295
|
+
// Parse timer value
|
|
296
|
+
const refreshInterval = (0, cli_helpers_1.parseTimerValue)(timer);
|
|
297
|
+
// Setup Ctrl+C handler for graceful exit
|
|
298
|
+
let shouldExit = false;
|
|
299
|
+
const exitHandler = () => {
|
|
300
|
+
shouldExit = true;
|
|
301
|
+
console.log(chalk_1.default.dim("\n\n⚠️ Interrupted by user. Exiting...\n"));
|
|
302
|
+
process.exit(0);
|
|
303
|
+
};
|
|
304
|
+
process.on("SIGINT", exitHandler);
|
|
305
|
+
let result = { success: true };
|
|
306
|
+
let isFirstRun = true;
|
|
307
|
+
let currentSince = since;
|
|
308
|
+
let wasExpanded = false;
|
|
309
|
+
// Watch loop
|
|
310
|
+
while (true) {
|
|
311
|
+
// Clear screen on subsequent runs
|
|
312
|
+
if (!isFirstRun && refreshInterval) {
|
|
313
|
+
(0, cli_helpers_1.clearScreen)();
|
|
314
|
+
}
|
|
315
|
+
// Fetch logs from all relevant log groups
|
|
316
|
+
const logGroups = await fetchAllLogs(stackName, region, currentSince, limit, type, integratedMode, filter, awsProfile);
|
|
317
|
+
// Check if any log group has entries
|
|
318
|
+
const totalEntries = logGroups.reduce((sum, lg) => sum + lg.entries.length, 0);
|
|
319
|
+
const hasLogs = totalEntries > 0;
|
|
320
|
+
const hasLogGroups = logGroups.length > 0;
|
|
321
|
+
// If no log groups found at all, show error and exit
|
|
322
|
+
if (!hasLogGroups) {
|
|
323
|
+
console.error(chalk_1.default.red("\n❌ No log groups found in stack outputs."));
|
|
324
|
+
console.log(chalk_1.default.dim(" This could mean:"));
|
|
325
|
+
console.log(chalk_1.default.dim(" - The stack hasn't been deployed yet"));
|
|
326
|
+
console.log(chalk_1.default.dim(" - Log groups haven't been created"));
|
|
327
|
+
console.log(chalk_1.default.dim(` - Stack name might be incorrect: ${stackName}\n`));
|
|
328
|
+
// Don't loop if there are no log groups
|
|
329
|
+
if (!refreshInterval) {
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
// Wait before retrying
|
|
333
|
+
const totalSeconds = Math.floor(refreshInterval / 1000);
|
|
334
|
+
const spinner = (0, ora_1.default)({
|
|
335
|
+
text: chalk_1.default.dim(`⟳ Retrying in ${totalSeconds} second${totalSeconds !== 1 ? "s" : ""}... (Ctrl+C to exit)`),
|
|
336
|
+
color: "gray",
|
|
337
|
+
}).start();
|
|
338
|
+
for (let i = totalSeconds; i > 0; i--) {
|
|
339
|
+
spinner.text = chalk_1.default.dim(`⟳ Retrying in ${i} second${i !== 1 ? "s" : ""}... (Ctrl+C to exit)`);
|
|
340
|
+
await (0, cli_helpers_1.sleep)(1000);
|
|
341
|
+
if (shouldExit)
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
spinner.stop();
|
|
345
|
+
if (shouldExit) {
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
isFirstRun = false;
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
// Smart expansion: if no logs found and not at max, expand time window
|
|
352
|
+
if (!hasLogs && currentSince !== "7d") {
|
|
353
|
+
const nextSince = expandTimeRange(currentSince);
|
|
354
|
+
console.log(chalk_1.default.yellow(`⚠️ No logs found in last ${currentSince}. Expanding to ${nextSince}...\n`));
|
|
355
|
+
currentSince = nextSince;
|
|
356
|
+
wasExpanded = true;
|
|
357
|
+
// Small delay before retry
|
|
358
|
+
await (0, cli_helpers_1.sleep)(500);
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
// Display logs
|
|
362
|
+
displayLogs(logGroups, profile, region, currentSince, limit, wasExpanded);
|
|
363
|
+
result.logGroups = logGroups;
|
|
364
|
+
// If no logs found at max range, show helpful message
|
|
365
|
+
if (!hasLogs && currentSince === "7d") {
|
|
366
|
+
console.log(chalk_1.default.yellow("\n💡 No logs found in the last 7 days."));
|
|
367
|
+
console.log(chalk_1.default.dim(" This could mean:"));
|
|
368
|
+
console.log(chalk_1.default.dim(" - The service hasn't received any requests"));
|
|
369
|
+
console.log(chalk_1.default.dim(" - Logging is not configured correctly"));
|
|
370
|
+
console.log(chalk_1.default.dim(" - No activity has occurred in this time period\n"));
|
|
371
|
+
}
|
|
372
|
+
// Reset expansion flag if we found logs
|
|
373
|
+
if (hasLogs) {
|
|
374
|
+
wasExpanded = false;
|
|
375
|
+
}
|
|
376
|
+
// Check if we should exit (no timer)
|
|
377
|
+
if (!refreshInterval) {
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
// Show countdown with live updates
|
|
381
|
+
const totalSeconds = Math.floor(refreshInterval / 1000);
|
|
382
|
+
const spinner = (0, ora_1.default)({
|
|
383
|
+
text: chalk_1.default.dim(`⟳ Refreshing in ${totalSeconds} second${totalSeconds !== 1 ? "s" : ""}... (Ctrl+C to exit)`),
|
|
384
|
+
color: "gray",
|
|
385
|
+
}).start();
|
|
386
|
+
for (let i = totalSeconds; i > 0; i--) {
|
|
387
|
+
spinner.text = chalk_1.default.dim(`⟳ Refreshing in ${i} second${i !== 1 ? "s" : ""}... (Ctrl+C to exit)`);
|
|
388
|
+
await (0, cli_helpers_1.sleep)(1000);
|
|
389
|
+
if (shouldExit)
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
spinner.stop();
|
|
393
|
+
if (shouldExit) {
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
isFirstRun = false;
|
|
397
|
+
}
|
|
398
|
+
// Clean up handler
|
|
399
|
+
process.off("SIGINT", exitHandler);
|
|
400
|
+
return result;
|
|
145
401
|
}
|
|
146
402
|
catch (error) {
|
|
147
403
|
const errorMsg = error.message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../bin/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../bin/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Helper Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for CLI commands (sleep, clear screen, etc.)
|
|
5
|
+
*
|
|
6
|
+
* @module utils/cli-helpers
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Sleep for a specified duration
|
|
10
|
+
*
|
|
11
|
+
* @param ms - Milliseconds to sleep
|
|
12
|
+
* @returns Promise that resolves after the specified time
|
|
13
|
+
*/
|
|
14
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Clear the terminal screen and move cursor to top
|
|
17
|
+
*/
|
|
18
|
+
export declare function clearScreen(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Parse a timer value (string or number) and returns interval in milliseconds
|
|
21
|
+
* Returns null if timer is disabled (0 or non-numeric string)
|
|
22
|
+
*
|
|
23
|
+
* @param timer - Timer value in seconds (number or string) or undefined
|
|
24
|
+
* @returns Milliseconds or null if disabled
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseTimerValue(timer?: string | number): number | null;
|
|
27
|
+
//# sourceMappingURL=cli-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../../../lib/utils/cli-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAYtE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI Helper Utilities
|
|
4
|
+
*
|
|
5
|
+
* Shared utilities for CLI commands (sleep, clear screen, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @module utils/cli-helpers
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.sleep = sleep;
|
|
11
|
+
exports.clearScreen = clearScreen;
|
|
12
|
+
exports.parseTimerValue = parseTimerValue;
|
|
13
|
+
/**
|
|
14
|
+
* Sleep for a specified duration
|
|
15
|
+
*
|
|
16
|
+
* @param ms - Milliseconds to sleep
|
|
17
|
+
* @returns Promise that resolves after the specified time
|
|
18
|
+
*/
|
|
19
|
+
function sleep(ms) {
|
|
20
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Clear the terminal screen and move cursor to top
|
|
24
|
+
*/
|
|
25
|
+
function clearScreen() {
|
|
26
|
+
process.stdout.write("\x1b[2J\x1b[H");
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a timer value (string or number) and returns interval in milliseconds
|
|
30
|
+
* Returns null if timer is disabled (0 or non-numeric string)
|
|
31
|
+
*
|
|
32
|
+
* @param timer - Timer value in seconds (number or string) or undefined
|
|
33
|
+
* @returns Milliseconds or null if disabled
|
|
34
|
+
*/
|
|
35
|
+
function parseTimerValue(timer) {
|
|
36
|
+
if (timer === undefined)
|
|
37
|
+
return 10000; // Default 10 seconds
|
|
38
|
+
const numValue = typeof timer === "string" ? parseFloat(timer) : timer;
|
|
39
|
+
// If NaN or 0, disable timer
|
|
40
|
+
if (isNaN(numValue) || numValue === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
// Return milliseconds
|
|
44
|
+
return numValue * 1000;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cli-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.js","sourceRoot":"","sources":["../../../lib/utils/cli-helpers.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,sBAEC;AAKD,kCAEC;AASD,0CAYC;AApCD;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,KAAuB;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;IAE5D,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEvE,6BAA6B;IAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,OAAO,QAAQ,GAAG,IAAI,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ECS Service Discovery Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for discovering ECS services and their log groups
|
|
5
|
+
* from CloudFormation stacks. Used by both status and logs commands.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/ecs-service-discovery
|
|
8
|
+
*/
|
|
9
|
+
export interface ECSServiceInfo {
|
|
10
|
+
serviceName: string;
|
|
11
|
+
logGroup?: string;
|
|
12
|
+
logStreamPrefix?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Discover all ECS services in a CloudFormation stack and their log groups
|
|
16
|
+
*
|
|
17
|
+
* @param stackName - CloudFormation stack name
|
|
18
|
+
* @param region - AWS region
|
|
19
|
+
* @param awsProfile - Optional AWS profile name
|
|
20
|
+
* @returns Map of service names to log group names
|
|
21
|
+
*/
|
|
22
|
+
export declare function discoverECSServiceLogGroups(stackName: string, region: string, awsProfile?: string): Promise<Record<string, string>>;
|
|
23
|
+
/**
|
|
24
|
+
* Discover ECS services with full information (for status command)
|
|
25
|
+
*
|
|
26
|
+
* @param stackName - CloudFormation stack name
|
|
27
|
+
* @param region - AWS region
|
|
28
|
+
* @param awsProfile - Optional AWS profile name
|
|
29
|
+
* @returns Array of ECS service information
|
|
30
|
+
*/
|
|
31
|
+
export declare function discoverECSServices(stackName: string, region: string, awsProfile?: string): Promise<ECSServiceInfo[]>;
|
|
32
|
+
//# sourceMappingURL=ecs-service-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecs-service-discovery.d.ts","sourceRoot":"","sources":["../../../lib/utils/ecs-service-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmFjC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAwF3B"}
|