@quiltdata/benchling-webhook 0.8.0-20251118T071233Z → 0.8.3
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 +5 -4
- package/package.json +5 -4
- 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
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ECS Service Discovery Utilities
|
|
4
|
+
*
|
|
5
|
+
* Shared utilities for discovering ECS services and their log groups
|
|
6
|
+
* from CloudFormation stacks. Used by both status and logs commands.
|
|
7
|
+
*
|
|
8
|
+
* @module utils/ecs-service-discovery
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.discoverECSServiceLogGroups = discoverECSServiceLogGroups;
|
|
45
|
+
exports.discoverECSServices = discoverECSServices;
|
|
46
|
+
/**
|
|
47
|
+
* Discover all ECS services in a CloudFormation stack and their log groups
|
|
48
|
+
*
|
|
49
|
+
* @param stackName - CloudFormation stack name
|
|
50
|
+
* @param region - AWS region
|
|
51
|
+
* @param awsProfile - Optional AWS profile name
|
|
52
|
+
* @returns Map of service names to log group names
|
|
53
|
+
*/
|
|
54
|
+
async function discoverECSServiceLogGroups(stackName, region, awsProfile) {
|
|
55
|
+
try {
|
|
56
|
+
const { CloudFormationClient, DescribeStackResourcesCommand } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/client-cloudformation")));
|
|
57
|
+
const { ECSClient, DescribeServicesCommand, DescribeTaskDefinitionCommand } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/client-ecs")));
|
|
58
|
+
// Configure AWS SDK clients
|
|
59
|
+
const clientConfig = { region };
|
|
60
|
+
if (awsProfile) {
|
|
61
|
+
const { fromIni: fromIniImport } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
|
|
62
|
+
clientConfig.credentials = fromIniImport({ profile: awsProfile });
|
|
63
|
+
}
|
|
64
|
+
const cfClient = new CloudFormationClient(clientConfig);
|
|
65
|
+
const ecsClient = new ECSClient(clientConfig);
|
|
66
|
+
// Find ECS resources in stack
|
|
67
|
+
const resourcesCommand = new DescribeStackResourcesCommand({
|
|
68
|
+
StackName: stackName,
|
|
69
|
+
});
|
|
70
|
+
const resourcesResponse = await cfClient.send(resourcesCommand);
|
|
71
|
+
const ecsServices = resourcesResponse.StackResources?.filter((r) => r.ResourceType === "AWS::ECS::Service") || [];
|
|
72
|
+
if (ecsServices.length === 0) {
|
|
73
|
+
return {};
|
|
74
|
+
}
|
|
75
|
+
// Get cluster name
|
|
76
|
+
const clusterResource = resourcesResponse.StackResources?.find((r) => r.ResourceType === "AWS::ECS::Cluster");
|
|
77
|
+
const clusterName = clusterResource?.PhysicalResourceId || stackName;
|
|
78
|
+
// Get service ARNs
|
|
79
|
+
const serviceArns = ecsServices
|
|
80
|
+
.map((s) => s.PhysicalResourceId)
|
|
81
|
+
.filter((arn) => !!arn);
|
|
82
|
+
if (serviceArns.length === 0) {
|
|
83
|
+
return {};
|
|
84
|
+
}
|
|
85
|
+
// Describe all services
|
|
86
|
+
const servicesCommand = new DescribeServicesCommand({
|
|
87
|
+
cluster: clusterName,
|
|
88
|
+
services: serviceArns,
|
|
89
|
+
});
|
|
90
|
+
const servicesResponse = await ecsClient.send(servicesCommand);
|
|
91
|
+
// Get log groups from ALL services
|
|
92
|
+
const logGroups = {};
|
|
93
|
+
for (const svc of servicesResponse.services || []) {
|
|
94
|
+
const taskDefArn = svc.deployments?.[0]?.taskDefinition;
|
|
95
|
+
if (!taskDefArn)
|
|
96
|
+
continue;
|
|
97
|
+
try {
|
|
98
|
+
const taskDefCommand = new DescribeTaskDefinitionCommand({
|
|
99
|
+
taskDefinition: taskDefArn,
|
|
100
|
+
});
|
|
101
|
+
const taskDefResponse = await ecsClient.send(taskDefCommand);
|
|
102
|
+
const logConfig = taskDefResponse.taskDefinition?.containerDefinitions?.[0]?.logConfiguration;
|
|
103
|
+
if (logConfig?.logDriver === "awslogs") {
|
|
104
|
+
const logGroupName = logConfig.options?.["awslogs-group"];
|
|
105
|
+
if (logGroupName) {
|
|
106
|
+
const serviceName = svc.serviceName || "unknown";
|
|
107
|
+
logGroups[serviceName] = logGroupName;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Skip this service if we can't get its task definition
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return logGroups;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.warn(`Could not discover ECS services: ${error.message}`);
|
|
120
|
+
return {};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Discover ECS services with full information (for status command)
|
|
125
|
+
*
|
|
126
|
+
* @param stackName - CloudFormation stack name
|
|
127
|
+
* @param region - AWS region
|
|
128
|
+
* @param awsProfile - Optional AWS profile name
|
|
129
|
+
* @returns Array of ECS service information
|
|
130
|
+
*/
|
|
131
|
+
async function discoverECSServices(stackName, region, awsProfile) {
|
|
132
|
+
try {
|
|
133
|
+
const { CloudFormationClient, DescribeStackResourcesCommand } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/client-cloudformation")));
|
|
134
|
+
const { ECSClient, DescribeServicesCommand, DescribeTaskDefinitionCommand } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/client-ecs")));
|
|
135
|
+
// Configure AWS SDK clients
|
|
136
|
+
const clientConfig = { region };
|
|
137
|
+
if (awsProfile) {
|
|
138
|
+
const { fromIni: fromIniImport } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
|
|
139
|
+
clientConfig.credentials = fromIniImport({ profile: awsProfile });
|
|
140
|
+
}
|
|
141
|
+
const cfClient = new CloudFormationClient(clientConfig);
|
|
142
|
+
const ecsClient = new ECSClient(clientConfig);
|
|
143
|
+
// Find ECS resources in stack
|
|
144
|
+
const resourcesCommand = new DescribeStackResourcesCommand({
|
|
145
|
+
StackName: stackName,
|
|
146
|
+
});
|
|
147
|
+
const resourcesResponse = await cfClient.send(resourcesCommand);
|
|
148
|
+
const ecsServiceResources = resourcesResponse.StackResources?.filter((r) => r.ResourceType === "AWS::ECS::Service") || [];
|
|
149
|
+
if (ecsServiceResources.length === 0) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
// Get cluster name
|
|
153
|
+
const clusterResource = resourcesResponse.StackResources?.find((r) => r.ResourceType === "AWS::ECS::Cluster");
|
|
154
|
+
const clusterName = clusterResource?.PhysicalResourceId || stackName;
|
|
155
|
+
// Get service ARNs
|
|
156
|
+
const serviceArns = ecsServiceResources
|
|
157
|
+
.map((s) => s.PhysicalResourceId)
|
|
158
|
+
.filter((arn) => !!arn);
|
|
159
|
+
if (serviceArns.length === 0) {
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
162
|
+
// Describe all services
|
|
163
|
+
const servicesCommand = new DescribeServicesCommand({
|
|
164
|
+
cluster: clusterName,
|
|
165
|
+
services: serviceArns,
|
|
166
|
+
});
|
|
167
|
+
const servicesResponse = await ecsClient.send(servicesCommand);
|
|
168
|
+
// Get log groups from task definitions
|
|
169
|
+
const services = [];
|
|
170
|
+
for (const svc of servicesResponse.services || []) {
|
|
171
|
+
let logGroup;
|
|
172
|
+
let logStreamPrefix;
|
|
173
|
+
const taskDefArn = svc.deployments?.[0]?.taskDefinition;
|
|
174
|
+
if (taskDefArn) {
|
|
175
|
+
try {
|
|
176
|
+
const taskDefCommand = new DescribeTaskDefinitionCommand({
|
|
177
|
+
taskDefinition: taskDefArn,
|
|
178
|
+
});
|
|
179
|
+
const taskDefResponse = await ecsClient.send(taskDefCommand);
|
|
180
|
+
const logConfig = taskDefResponse.taskDefinition?.containerDefinitions?.[0]?.logConfiguration;
|
|
181
|
+
if (logConfig?.logDriver === "awslogs") {
|
|
182
|
+
logGroup = logConfig.options?.["awslogs-group"];
|
|
183
|
+
logStreamPrefix = logConfig.options?.["awslogs-stream-prefix"];
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Skip log group if we can't get task definition
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
services.push({
|
|
191
|
+
serviceName: svc.serviceName || "unknown",
|
|
192
|
+
logGroup,
|
|
193
|
+
logStreamPrefix,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return services;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.warn(`Could not discover ECS services: ${error.message}`);
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=ecs-service-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecs-service-discovery.js","sourceRoot":"","sources":["../../../lib/utils/ecs-service-discovery.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBH,kEAuFC;AAUD,kDA4FC;AArMD;;;;;;;GAOG;AACI,KAAK,UAAU,2BAA2B,CAC7C,SAAiB,EACjB,MAAc,EACd,UAAmB;IAEnB,IAAI,CAAC;QACD,MAAM,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,GAAG,wDAAa,gCAAgC,GAAC,CAAC;QAC/G,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAElH,4BAA4B;QAC5B,MAAM,YAAY,GAAiE,EAAE,MAAM,EAAE,CAAC;QAC9F,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;YACjF,YAAY,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;QAE9C,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,IAAI,6BAA6B,CAAC;YACvD,SAAS,EAAE,SAAS;SACvB,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,EAAE,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,mBAAmB,CAChD,IAAI,EAAE,CAAC;QAER,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,MAAM,eAAe,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,mBAAmB,CAChD,CAAC;QACF,MAAM,WAAW,GAAG,eAAe,EAAE,kBAAkB,IAAI,SAAS,CAAC;QAErE,mBAAmB;QACnB,MAAM,WAAW,GAAG,WAAW;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;aAChC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,uBAAuB,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,WAAW;SACxB,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/D,mCAAmC;QACnC,MAAM,SAAS,GAA2B,EAAE,CAAC;QAE7C,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;YACxD,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,IAAI,CAAC;gBACD,MAAM,cAAc,GAAG,IAAI,6BAA6B,CAAC;oBACrD,cAAc,EAAE,UAAU;iBAC7B,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE7D,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;gBAC9F,IAAI,SAAS,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;oBAC1D,IAAI,YAAY,EAAE,CAAC;wBACf,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC;wBACjD,SAAS,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;oBAC1C,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,SAAS;YACb,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAqC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACrC,SAAiB,EACjB,MAAc,EACd,UAAmB;IAEnB,IAAI,CAAC;QACD,MAAM,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,GAAG,wDAAa,gCAAgC,GAAC,CAAC;QAC/G,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAElH,4BAA4B;QAC5B,MAAM,YAAY,GAAiE,EAAE,MAAM,EAAE,CAAC;QAC9F,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;YACjF,YAAY,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;QAE9C,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,IAAI,6BAA6B,CAAC;YACvD,SAAS,EAAE,SAAS;SACvB,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,mBAAmB,CAChD,IAAI,EAAE,CAAC;QAER,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,MAAM,eAAe,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,mBAAmB,CAChD,CAAC;QACF,MAAM,WAAW,GAAG,eAAe,EAAE,kBAAkB,IAAI,SAAS,CAAC;QAErE,mBAAmB;QACnB,MAAM,WAAW,GAAG,mBAAmB;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;aAChC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACd,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,uBAAuB,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,WAAW;SACxB,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/D,uCAAuC;QACvC,MAAM,QAAQ,GAAqB,EAAE,CAAC;QAEtC,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,QAA4B,CAAC;YACjC,IAAI,eAAmC,CAAC;YAExC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;YACxD,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC;oBACD,MAAM,cAAc,GAAG,IAAI,6BAA6B,CAAC;wBACrD,cAAc,EAAE,UAAU;qBAC7B,CAAC,CAAC;oBACH,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAE7D,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;oBAC9F,IAAI,SAAS,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;wBACrC,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;wBAChD,eAAe,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,uBAAuB,CAAC,CAAC;oBACnE,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACL,iDAAiD;gBACrD,CAAC;YACL,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC;gBACV,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACzC,QAAQ;gBACR,eAAe;aAClB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAqC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time Formatting Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for formatting timestamps in a consistent way
|
|
5
|
+
* across the CLI commands.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/time-format
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Format a date/time in local timezone with consistent format
|
|
11
|
+
*
|
|
12
|
+
* @param date - Date to format (Date object, ISO string, or timestamp)
|
|
13
|
+
* @param includeSeconds - Whether to include seconds in the output
|
|
14
|
+
* @returns Formatted date/time string
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatLocalDateTime(date: Date | string | number, includeSeconds?: boolean): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format time only (HH:MM:SS) in local timezone
|
|
19
|
+
*
|
|
20
|
+
* @param date - Date to format (Date object, ISO string, or timestamp)
|
|
21
|
+
* @param includeSeconds - Whether to include seconds in the output
|
|
22
|
+
* @returns Formatted time string
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatLocalTime(date: Date | string | number, includeSeconds?: boolean): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get the local timezone name
|
|
27
|
+
*
|
|
28
|
+
* @returns Timezone name (e.g., "America/Los_Angeles")
|
|
29
|
+
*/
|
|
30
|
+
export declare function getLocalTimezone(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format a relative time (e.g., "2 minutes ago", "in 5 seconds")
|
|
33
|
+
*
|
|
34
|
+
* @param date - Date to compare (Date object, ISO string, or timestamp)
|
|
35
|
+
* @param baseDate - Base date to compare against (defaults to now)
|
|
36
|
+
* @returns Formatted relative time string
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatRelativeTime(date: Date | string | number, baseDate?: Date): string;
|
|
39
|
+
/**
|
|
40
|
+
* Parse a time range string (e.g., "5m", "1h", "2d") to milliseconds
|
|
41
|
+
*
|
|
42
|
+
* @param since - Time range string
|
|
43
|
+
* @returns Milliseconds
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseTimeRange(since: string): number;
|
|
46
|
+
/**
|
|
47
|
+
* Format milliseconds to human-readable time range string
|
|
48
|
+
*
|
|
49
|
+
* @param ms - Milliseconds
|
|
50
|
+
* @returns Human-readable string (e.g., "5m", "2h", "3d")
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatTimeRange(ms: number): string;
|
|
53
|
+
//# sourceMappingURL=time-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-format.d.ts","sourceRoot":"","sources":["../../../lib/utils/time-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC5B,cAAc,UAAO,GACtB,MAAM,CAiBR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC5B,cAAc,UAAO,GACtB,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC5B,QAAQ,GAAE,IAAiB,GAC5B,MAAM,CAgCR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBpD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYlD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Time Formatting Utilities
|
|
4
|
+
*
|
|
5
|
+
* Shared utilities for formatting timestamps in a consistent way
|
|
6
|
+
* across the CLI commands.
|
|
7
|
+
*
|
|
8
|
+
* @module utils/time-format
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.formatLocalDateTime = formatLocalDateTime;
|
|
12
|
+
exports.formatLocalTime = formatLocalTime;
|
|
13
|
+
exports.getLocalTimezone = getLocalTimezone;
|
|
14
|
+
exports.formatRelativeTime = formatRelativeTime;
|
|
15
|
+
exports.parseTimeRange = parseTimeRange;
|
|
16
|
+
exports.formatTimeRange = formatTimeRange;
|
|
17
|
+
/**
|
|
18
|
+
* Format a date/time in local timezone with consistent format
|
|
19
|
+
*
|
|
20
|
+
* @param date - Date to format (Date object, ISO string, or timestamp)
|
|
21
|
+
* @param includeSeconds - Whether to include seconds in the output
|
|
22
|
+
* @returns Formatted date/time string
|
|
23
|
+
*/
|
|
24
|
+
function formatLocalDateTime(date, includeSeconds = true) {
|
|
25
|
+
const dateObj = typeof date === "string" || typeof date === "number" ? new Date(date) : date;
|
|
26
|
+
const options = {
|
|
27
|
+
year: "numeric",
|
|
28
|
+
month: "2-digit",
|
|
29
|
+
day: "2-digit",
|
|
30
|
+
hour: "2-digit",
|
|
31
|
+
minute: "2-digit",
|
|
32
|
+
hour12: false,
|
|
33
|
+
};
|
|
34
|
+
if (includeSeconds) {
|
|
35
|
+
options.second = "2-digit";
|
|
36
|
+
}
|
|
37
|
+
return dateObj.toLocaleString("en-US", options);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format time only (HH:MM:SS) in local timezone
|
|
41
|
+
*
|
|
42
|
+
* @param date - Date to format (Date object, ISO string, or timestamp)
|
|
43
|
+
* @param includeSeconds - Whether to include seconds in the output
|
|
44
|
+
* @returns Formatted time string
|
|
45
|
+
*/
|
|
46
|
+
function formatLocalTime(date, includeSeconds = true) {
|
|
47
|
+
const dateObj = typeof date === "string" || typeof date === "number" ? new Date(date) : date;
|
|
48
|
+
const options = {
|
|
49
|
+
hour: "2-digit",
|
|
50
|
+
minute: "2-digit",
|
|
51
|
+
hour12: false,
|
|
52
|
+
};
|
|
53
|
+
if (includeSeconds) {
|
|
54
|
+
options.second = "2-digit";
|
|
55
|
+
}
|
|
56
|
+
return dateObj.toLocaleTimeString("en-US", options);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the local timezone name
|
|
60
|
+
*
|
|
61
|
+
* @returns Timezone name (e.g., "America/Los_Angeles")
|
|
62
|
+
*/
|
|
63
|
+
function getLocalTimezone() {
|
|
64
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Format a relative time (e.g., "2 minutes ago", "in 5 seconds")
|
|
68
|
+
*
|
|
69
|
+
* @param date - Date to compare (Date object, ISO string, or timestamp)
|
|
70
|
+
* @param baseDate - Base date to compare against (defaults to now)
|
|
71
|
+
* @returns Formatted relative time string
|
|
72
|
+
*/
|
|
73
|
+
function formatRelativeTime(date, baseDate = new Date()) {
|
|
74
|
+
const dateObj = typeof date === "string" || typeof date === "number" ? new Date(date) : date;
|
|
75
|
+
const diffMs = dateObj.getTime() - baseDate.getTime();
|
|
76
|
+
const absDiffMs = Math.abs(diffMs);
|
|
77
|
+
const seconds = Math.floor(absDiffMs / 1000);
|
|
78
|
+
const minutes = Math.floor(seconds / 60);
|
|
79
|
+
const hours = Math.floor(minutes / 60);
|
|
80
|
+
const days = Math.floor(hours / 24);
|
|
81
|
+
let value;
|
|
82
|
+
let unit;
|
|
83
|
+
if (days > 0) {
|
|
84
|
+
value = days;
|
|
85
|
+
unit = days === 1 ? "day" : "days";
|
|
86
|
+
}
|
|
87
|
+
else if (hours > 0) {
|
|
88
|
+
value = hours;
|
|
89
|
+
unit = hours === 1 ? "hour" : "hours";
|
|
90
|
+
}
|
|
91
|
+
else if (minutes > 0) {
|
|
92
|
+
value = minutes;
|
|
93
|
+
unit = minutes === 1 ? "minute" : "minutes";
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
value = seconds;
|
|
97
|
+
unit = seconds === 1 ? "second" : "seconds";
|
|
98
|
+
}
|
|
99
|
+
if (diffMs < 0) {
|
|
100
|
+
return `${value} ${unit} ago`;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
return `in ${value} ${unit}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parse a time range string (e.g., "5m", "1h", "2d") to milliseconds
|
|
108
|
+
*
|
|
109
|
+
* @param since - Time range string
|
|
110
|
+
* @returns Milliseconds
|
|
111
|
+
*/
|
|
112
|
+
function parseTimeRange(since) {
|
|
113
|
+
const match = since.match(/^(\d+)([mhd])$/);
|
|
114
|
+
if (!match) {
|
|
115
|
+
throw new Error(`Invalid time format: ${since}. Use format like "5m", "1h", or "2d"`);
|
|
116
|
+
}
|
|
117
|
+
const value = parseInt(match[1], 10);
|
|
118
|
+
const unit = match[2];
|
|
119
|
+
switch (unit) {
|
|
120
|
+
case "m":
|
|
121
|
+
return value * 60 * 1000;
|
|
122
|
+
case "h":
|
|
123
|
+
return value * 60 * 60 * 1000;
|
|
124
|
+
case "d":
|
|
125
|
+
return value * 24 * 60 * 60 * 1000;
|
|
126
|
+
default:
|
|
127
|
+
throw new Error(`Invalid time unit: ${unit}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Format milliseconds to human-readable time range string
|
|
132
|
+
*
|
|
133
|
+
* @param ms - Milliseconds
|
|
134
|
+
* @returns Human-readable string (e.g., "5m", "2h", "3d")
|
|
135
|
+
*/
|
|
136
|
+
function formatTimeRange(ms) {
|
|
137
|
+
const minutes = ms / (60 * 1000);
|
|
138
|
+
const hours = minutes / 60;
|
|
139
|
+
const days = hours / 24;
|
|
140
|
+
if (days >= 1) {
|
|
141
|
+
return `${Math.round(days)}d`;
|
|
142
|
+
}
|
|
143
|
+
else if (hours >= 1) {
|
|
144
|
+
return `${Math.round(hours)}h`;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
return `${Math.round(minutes)}m`;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=time-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-format.js","sourceRoot":"","sources":["../../../lib/utils/time-format.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quiltdata/benchling-webhook",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
|
|
5
5
|
"main": "dist/lib/index.js",
|
|
6
6
|
"types": "dist/lib/index.d.ts",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"@types/node": "^24.0.0",
|
|
80
80
|
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
81
81
|
"@typescript-eslint/parser": "^8.26.1",
|
|
82
|
-
"aws-cdk": "2.
|
|
82
|
+
"aws-cdk": "2.1032.0",
|
|
83
83
|
"aws-sdk-client-mock": "^4.1.0",
|
|
84
84
|
"cross-env": "^10.1.0",
|
|
85
85
|
"dotenv": "^17.2.3",
|
|
@@ -93,7 +93,8 @@
|
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
95
|
"@aws-sdk/client-cloudformation": "^3.920.0",
|
|
96
|
-
"@aws-sdk/client-
|
|
96
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.933.0",
|
|
97
|
+
"@aws-sdk/client-ecs": "^3.933.0",
|
|
97
98
|
"@aws-sdk/client-elastic-load-balancing-v2": "^3.932.0",
|
|
98
99
|
"@aws-sdk/client-s3": "^3.758.0",
|
|
99
100
|
"@aws-sdk/client-secrets-manager": "^3.932.0",
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
"adm-zip": "^0.5.10",
|
|
105
106
|
"ajv": "^8.17.1",
|
|
106
107
|
"ajv-formats": "^3.0.1",
|
|
107
|
-
"aws-cdk-lib": "2.
|
|
108
|
+
"aws-cdk-lib": "2.225.0",
|
|
108
109
|
"boxen": "^8.0.0",
|
|
109
110
|
"chalk": "^5.0.0",
|
|
110
111
|
"commander": "^14.0.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quiltdata/benchling-webhook",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
|
|
5
5
|
"main": "dist/lib/index.js",
|
|
6
6
|
"types": "dist/lib/index.d.ts",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"@types/node": "^24.0.0",
|
|
80
80
|
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
81
81
|
"@typescript-eslint/parser": "^8.26.1",
|
|
82
|
-
"aws-cdk": "2.
|
|
82
|
+
"aws-cdk": "2.1032.0",
|
|
83
83
|
"aws-sdk-client-mock": "^4.1.0",
|
|
84
84
|
"cross-env": "^10.1.0",
|
|
85
85
|
"dotenv": "^17.2.3",
|
|
@@ -93,7 +93,8 @@
|
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
95
|
"@aws-sdk/client-cloudformation": "^3.920.0",
|
|
96
|
-
"@aws-sdk/client-
|
|
96
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.933.0",
|
|
97
|
+
"@aws-sdk/client-ecs": "^3.933.0",
|
|
97
98
|
"@aws-sdk/client-elastic-load-balancing-v2": "^3.932.0",
|
|
98
99
|
"@aws-sdk/client-s3": "^3.758.0",
|
|
99
100
|
"@aws-sdk/client-secrets-manager": "^3.932.0",
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
"adm-zip": "^0.5.10",
|
|
105
106
|
"ajv": "^8.17.1",
|
|
106
107
|
"ajv-formats": "^3.0.1",
|
|
107
|
-
"aws-cdk-lib": "2.
|
|
108
|
+
"aws-cdk-lib": "2.225.0",
|
|
108
109
|
"boxen": "^8.0.0",
|
|
109
110
|
"chalk": "^5.0.0",
|
|
110
111
|
"commander": "^14.0.2",
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Check CloudWatch logs for the deployed Benchling webhook ECS service
|
|
4
|
-
*
|
|
5
|
-
* @deprecated Use `npx @quiltdata/benchling-webhook logs` instead
|
|
6
|
-
*
|
|
7
|
-
* This script is deprecated and will be removed in v1.0.0.
|
|
8
|
-
* Please use the new `logs` command which provides the same functionality
|
|
9
|
-
* with better NPX compatibility and proper profile support.
|
|
10
|
-
*
|
|
11
|
-
* Migration:
|
|
12
|
-
* Old: npx ts-node scripts/check-logs.ts --profile sales --type ecs
|
|
13
|
-
* New: npx @quiltdata/benchling-webhook logs --profile sales --type ecs
|
|
14
|
-
*
|
|
15
|
-
* @module scripts/check-logs
|
|
16
|
-
* @version 0.7.0
|
|
17
|
-
*/
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=check-logs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-logs.d.ts","sourceRoot":"","sources":["../../scripts/check-logs.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|