@quiltdata/benchling-webhook 0.4.13 → 0.5.0-20251029T180511Z
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/bin/benchling-webhook.d.ts +50 -0
- package/dist/bin/benchling-webhook.d.ts.map +1 -0
- package/dist/bin/benchling-webhook.js +268 -0
- package/dist/bin/benchling-webhook.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +83 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +7 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -0
- package/dist/bin/commands/deploy.js +154 -0
- package/dist/bin/commands/deploy.js.map +1 -0
- package/dist/bin/commands/init.d.ts +9 -0
- package/dist/bin/commands/init.d.ts.map +1 -0
- package/dist/bin/commands/init.js +155 -0
- package/dist/bin/commands/init.js.map +1 -0
- package/dist/bin/commands/validate.d.ts +5 -0
- package/dist/bin/commands/validate.d.ts.map +1 -0
- package/dist/bin/commands/validate.js +135 -0
- package/dist/bin/commands/validate.js.map +1 -0
- package/dist/bin/get-env.js +180 -0
- package/dist/bin/publish.js +327 -0
- package/{bin → dist/bin}/version.js +73 -37
- package/dist/lib/alb-api-gateway.d.ts +17 -0
- package/dist/lib/alb-api-gateway.d.ts.map +1 -0
- package/dist/lib/alb-api-gateway.js +191 -0
- package/dist/lib/alb-api-gateway.js.map +1 -0
- package/dist/lib/benchling-webhook-stack.d.ts +25 -0
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -0
- package/dist/lib/benchling-webhook-stack.js +165 -0
- package/dist/lib/benchling-webhook-stack.js.map +1 -0
- package/dist/lib/constants.d.ts +28 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +31 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/ecr-repository.d.ts +16 -0
- package/dist/lib/ecr-repository.d.ts.map +1 -0
- package/dist/lib/ecr-repository.js +90 -0
- package/dist/lib/ecr-repository.js.map +1 -0
- package/dist/lib/fargate-service.d.ts +32 -0
- package/dist/lib/fargate-service.d.ts.map +1 -0
- package/dist/lib/fargate-service.js +294 -0
- package/dist/lib/fargate-service.js.map +1 -0
- package/{lib/index.ts → dist/lib/index.d.ts} +5 -5
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +38 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/templates/base-template.d.ts +14 -0
- package/dist/lib/templates/base-template.d.ts.map +1 -0
- package/dist/lib/templates/base-template.js +68 -0
- package/dist/lib/templates/base-template.js.map +1 -0
- package/dist/lib/templates/readme.d.ts +11 -0
- package/dist/lib/templates/readme.d.ts.map +1 -0
- package/dist/lib/templates/readme.js +105 -0
- package/dist/lib/templates/readme.js.map +1 -0
- package/dist/lib/utils/config.d.ts +68 -0
- package/dist/lib/utils/config.d.ts.map +1 -0
- package/dist/lib/utils/config.js +195 -0
- package/dist/lib/utils/config.js.map +1 -0
- package/dist/lib/utils/stack-inference.d.ts +73 -0
- package/dist/lib/utils/stack-inference.d.ts.map +1 -0
- package/dist/lib/utils/stack-inference.js +410 -0
- package/dist/lib/utils/stack-inference.js.map +1 -0
- package/dist/package.json +90 -0
- package/package.json +31 -20
- package/AGENTS.md +0 -226
- package/CHANGELOG.md +0 -91
- package/bin/benchling-webhook.ts +0 -172
- package/bin/cli-auth.sh +0 -74
- package/bin/get-env.js +0 -564
- package/bin/publish-manual.js +0 -211
- package/bin/release-notes.sh +0 -82
- package/bin/sync-version.js +0 -72
- package/cdk.context.json +0 -58
- package/cdk.json +0 -85
- package/doc/NPM_OIDC_SETUP.md +0 -95
- package/doc/PARAMETERS.md +0 -203
- package/doc/RELEASE.md +0 -297
- package/doc/RELEASE_NOTES.md +0 -64
- package/jest.config.js +0 -14
- package/lib/README.md +0 -50
- package/lib/oauth-tester.json +0 -35
- package/tsconfig.json +0 -34
- /package/{bin → dist/bin}/check-logs.js +0 -0
- /package/{bin → dist/bin}/release.js +0 -0
- /package/{bin → dist/bin}/send-event.js +0 -0
- /package/{bin → dist/bin}/test-invalid-signature.js +0 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Stack inference utilities for discovering CloudFormation stacks
|
|
4
|
+
* and extracting configuration from Quilt catalogs
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.fetchJson = fetchJson;
|
|
41
|
+
exports.extractBucketName = extractBucketName;
|
|
42
|
+
exports.findStackByResource = findStackByResource;
|
|
43
|
+
exports.searchStacksByPattern = searchStacksByPattern;
|
|
44
|
+
exports.getStackDetails = getStackDetails;
|
|
45
|
+
exports.getAwsAccountId = getAwsAccountId;
|
|
46
|
+
exports.extractApiGatewayId = extractApiGatewayId;
|
|
47
|
+
exports.inferStackPrefix = inferStackPrefix;
|
|
48
|
+
exports.findStack = findStack;
|
|
49
|
+
exports.buildInferredConfig = buildInferredConfig;
|
|
50
|
+
exports.inferStackConfig = inferStackConfig;
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
/**
|
|
53
|
+
* Fetch JSON from a URL using native Node.js modules
|
|
54
|
+
*/
|
|
55
|
+
async function fetchJson(url) {
|
|
56
|
+
const https = await Promise.resolve().then(() => __importStar(require("https")));
|
|
57
|
+
const http = await Promise.resolve().then(() => __importStar(require("http")));
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const parsedUrl = new URL(url);
|
|
60
|
+
const client = parsedUrl.protocol === "https:" ? https : http;
|
|
61
|
+
const options = {
|
|
62
|
+
headers: {
|
|
63
|
+
"User-Agent": "benchling-webhook-config-tool/1.0",
|
|
64
|
+
Accept: "application/json",
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
client
|
|
68
|
+
.get(url, options, (res) => {
|
|
69
|
+
let data = "";
|
|
70
|
+
if (res.statusCode !== 200) {
|
|
71
|
+
reject(new Error(`HTTP ${res.statusCode}: ${res.statusMessage}`));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
res.on("data", (chunk) => {
|
|
75
|
+
data += chunk.toString();
|
|
76
|
+
});
|
|
77
|
+
res.on("end", () => {
|
|
78
|
+
try {
|
|
79
|
+
resolve(JSON.parse(data));
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
const error = e;
|
|
83
|
+
reject(new Error(`Failed to parse JSON: ${error.message}`));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
})
|
|
87
|
+
.on("error", reject);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Extract bucket name from S3 ARN or bucket name string
|
|
92
|
+
*/
|
|
93
|
+
function extractBucketName(bucketString) {
|
|
94
|
+
if (bucketString.startsWith("arn:aws:s3:::")) {
|
|
95
|
+
return bucketString.replace("arn:aws:s3:::", "").split("/")[0];
|
|
96
|
+
}
|
|
97
|
+
return bucketString.split("/")[0];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Try to find CloudFormation stack by searching for resource
|
|
101
|
+
*/
|
|
102
|
+
function findStackByResource(region, resourceId) {
|
|
103
|
+
try {
|
|
104
|
+
const result = (0, child_process_1.execSync)(`aws cloudformation describe-stack-resources --region ${region} --physical-resource-id "${resourceId}" --query "StackResources[0].StackName" --output text 2>/dev/null`, { encoding: "utf-8" });
|
|
105
|
+
const stackName = result.trim();
|
|
106
|
+
return stackName && stackName !== "None" ? stackName : null;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Search for stacks by name pattern
|
|
114
|
+
*/
|
|
115
|
+
function searchStacksByPattern(region, pattern) {
|
|
116
|
+
try {
|
|
117
|
+
const result = (0, child_process_1.execSync)(`aws cloudformation list-stacks --region ${region} --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE UPDATE_ROLLBACK_COMPLETE --query "StackSummaries[?contains(StackName, '${pattern}')].StackName" --output json`, { encoding: "utf-8" });
|
|
118
|
+
return JSON.parse(result);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get stack outputs and parameters
|
|
126
|
+
*/
|
|
127
|
+
function getStackDetails(region, stackName) {
|
|
128
|
+
try {
|
|
129
|
+
const outputsResult = (0, child_process_1.execSync)(`aws cloudformation describe-stacks --region ${region} --stack-name "${stackName}" --query "Stacks[0].Outputs" --output json`, { encoding: "utf-8" });
|
|
130
|
+
const paramsResult = (0, child_process_1.execSync)(`aws cloudformation describe-stacks --region ${region} --stack-name "${stackName}" --query "Stacks[0].Parameters" --output json`, { encoding: "utf-8" });
|
|
131
|
+
return {
|
|
132
|
+
outputs: JSON.parse(outputsResult) || [],
|
|
133
|
+
parameters: JSON.parse(paramsResult) || [],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error(`Warning: Could not get stack details: ${error.message}`);
|
|
138
|
+
return { outputs: [], parameters: [] };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get AWS account ID
|
|
143
|
+
*/
|
|
144
|
+
function getAwsAccountId() {
|
|
145
|
+
try {
|
|
146
|
+
const result = (0, child_process_1.execSync)("aws sts get-caller-identity --query Account --output text", {
|
|
147
|
+
encoding: "utf-8",
|
|
148
|
+
});
|
|
149
|
+
return result.trim();
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Extract API Gateway ID from endpoint URL
|
|
157
|
+
*/
|
|
158
|
+
function extractApiGatewayId(endpoint) {
|
|
159
|
+
const match = endpoint.match(/https:\/\/([a-z0-9]+)\.execute-api/);
|
|
160
|
+
return match ? match[1] : null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Extract stack name prefix from bucket names
|
|
164
|
+
*/
|
|
165
|
+
function inferStackPrefix(analyticsBucket, serviceBucket) {
|
|
166
|
+
const patterns = [analyticsBucket, serviceBucket]
|
|
167
|
+
.filter(Boolean)
|
|
168
|
+
.map((bucket) => {
|
|
169
|
+
const parts = bucket.split("-");
|
|
170
|
+
if (parts.length >= 3) {
|
|
171
|
+
return parts.slice(0, 2).join("-");
|
|
172
|
+
}
|
|
173
|
+
return parts[0];
|
|
174
|
+
});
|
|
175
|
+
return patterns[0] || "quilt";
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Find CloudFormation stack using multiple search strategies
|
|
179
|
+
*/
|
|
180
|
+
function findStack(region, apiGatewayId, analyticsBucket, serviceBucket, stackPrefix, verbose = true) {
|
|
181
|
+
let stackName = null;
|
|
182
|
+
// Method 1: Search by API Gateway ID
|
|
183
|
+
if (apiGatewayId) {
|
|
184
|
+
if (verbose)
|
|
185
|
+
console.log(`Searching by API Gateway ID: ${apiGatewayId}...`);
|
|
186
|
+
stackName = findStackByResource(region, apiGatewayId);
|
|
187
|
+
if (stackName && verbose) {
|
|
188
|
+
console.log(`✓ Found stack by API Gateway: ${stackName}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Method 2: Search by Analytics Bucket
|
|
192
|
+
if (!stackName && analyticsBucket) {
|
|
193
|
+
if (verbose)
|
|
194
|
+
console.log(`Searching by Analytics Bucket: ${analyticsBucket}...`);
|
|
195
|
+
stackName = findStackByResource(region, analyticsBucket);
|
|
196
|
+
if (stackName && verbose) {
|
|
197
|
+
console.log(`✓ Found stack by Analytics Bucket: ${stackName}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Method 3: Search by Service Bucket
|
|
201
|
+
if (!stackName && serviceBucket) {
|
|
202
|
+
if (verbose)
|
|
203
|
+
console.log(`Searching by Service Bucket: ${serviceBucket}...`);
|
|
204
|
+
stackName = findStackByResource(region, serviceBucket);
|
|
205
|
+
if (stackName && verbose) {
|
|
206
|
+
console.log(`✓ Found stack by Service Bucket: ${stackName}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Method 4: Search by name pattern
|
|
210
|
+
if (!stackName && stackPrefix) {
|
|
211
|
+
if (verbose)
|
|
212
|
+
console.log(`Searching by stack name pattern: *${stackPrefix}*...`);
|
|
213
|
+
const stacks = searchStacksByPattern(region, stackPrefix);
|
|
214
|
+
if (stacks.length > 0) {
|
|
215
|
+
if (verbose) {
|
|
216
|
+
console.log(`✓ Found ${stacks.length} potential stack(s):`);
|
|
217
|
+
stacks.forEach((name, i) => console.log(` ${i + 1}. ${name}`));
|
|
218
|
+
}
|
|
219
|
+
if (stacks.length === 1) {
|
|
220
|
+
stackName = stacks[0];
|
|
221
|
+
if (verbose)
|
|
222
|
+
console.log(` Using: ${stackName}`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
if (verbose) {
|
|
226
|
+
console.log("");
|
|
227
|
+
console.log("⚠️ Multiple stacks found. Using first match: " + stacks[0]);
|
|
228
|
+
console.log(" If this is incorrect, manually verify the stack name.");
|
|
229
|
+
}
|
|
230
|
+
stackName = stacks[0];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return stackName;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Build inferred configuration from stack details
|
|
238
|
+
*/
|
|
239
|
+
function buildInferredConfig(config, stackName, stackDetails, region, accountId, catalogDomain) {
|
|
240
|
+
const vars = {};
|
|
241
|
+
// Extract catalog domain
|
|
242
|
+
const catalogMatch = catalogDomain.match(/https?:\/\/([^/]+)/);
|
|
243
|
+
const catalog = catalogMatch ? catalogMatch[1] : "";
|
|
244
|
+
// AWS Configuration
|
|
245
|
+
if (accountId) {
|
|
246
|
+
vars.CDK_DEFAULT_ACCOUNT = accountId;
|
|
247
|
+
}
|
|
248
|
+
vars.CDK_DEFAULT_REGION = region;
|
|
249
|
+
vars.AWS_REGION = region;
|
|
250
|
+
// Quilt Configuration
|
|
251
|
+
if (catalog) {
|
|
252
|
+
vars.QUILT_CATALOG = catalog;
|
|
253
|
+
}
|
|
254
|
+
// Try to infer bucket and database from stack or config
|
|
255
|
+
const serviceBucket = extractBucketName(config.serviceBucket);
|
|
256
|
+
// Find data bucket from stack outputs or use service bucket as fallback
|
|
257
|
+
const bucketOutput = stackDetails.outputs.find((o) => o.OutputKey === "Bucket" || o.OutputKey === "DataBucket");
|
|
258
|
+
const dataBucket = bucketOutput?.OutputValue || serviceBucket;
|
|
259
|
+
if (dataBucket) {
|
|
260
|
+
vars.QUILT_USER_BUCKET = `${dataBucket} # Verify this is YOUR data bucket`;
|
|
261
|
+
}
|
|
262
|
+
// Try to find database name from stack
|
|
263
|
+
const databaseOutput = stackDetails.outputs.find((o) => o.OutputKey === "Database" ||
|
|
264
|
+
o.OutputKey === "AthenaDatabase" ||
|
|
265
|
+
o.OutputKey === "UserAthenaDatabase");
|
|
266
|
+
if (databaseOutput) {
|
|
267
|
+
vars.QUILT_DATABASE = databaseOutput.OutputValue;
|
|
268
|
+
}
|
|
269
|
+
else if (catalog) {
|
|
270
|
+
// Infer database name from catalog (common pattern)
|
|
271
|
+
const dbGuess = catalog.replace(/[.-]/g, "_") + "_db";
|
|
272
|
+
vars.QUILT_DATABASE = `${dbGuess} # VERIFY THIS - inferred from catalog name`;
|
|
273
|
+
}
|
|
274
|
+
// SQS Queue
|
|
275
|
+
const queueOutput = stackDetails.outputs.find((o) => o.OutputKey === "PackagerQueue" || o.OutputKey.includes("Queue"));
|
|
276
|
+
if (queueOutput) {
|
|
277
|
+
const queueValue = queueOutput.OutputValue;
|
|
278
|
+
// Parse queue name from ARN or URL
|
|
279
|
+
let queueName;
|
|
280
|
+
if (queueValue.startsWith("arn:aws:sqs:")) {
|
|
281
|
+
// ARN format: arn:aws:sqs:region:account:queue-name
|
|
282
|
+
queueName = queueValue.split(":").pop();
|
|
283
|
+
}
|
|
284
|
+
else if (queueValue.includes("sqs.")) {
|
|
285
|
+
// URL format: https://sqs.region.amazonaws.com/account/queue-name
|
|
286
|
+
queueName = queueValue.split("/").pop();
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
// Assume it's just the queue name
|
|
290
|
+
queueName = queueValue;
|
|
291
|
+
}
|
|
292
|
+
vars.QUEUE_NAME = queueName;
|
|
293
|
+
// Build SQS URL
|
|
294
|
+
if (accountId && region && queueName) {
|
|
295
|
+
vars.SQS_QUEUE_URL = `https://sqs.${region}.amazonaws.com/${accountId}/${queueName}`;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (stackName) {
|
|
299
|
+
vars.QUEUE_NAME = `${stackName}-PackagerQueue-XXXXX # VERIFY THIS - not found in outputs`;
|
|
300
|
+
}
|
|
301
|
+
// Additional useful info
|
|
302
|
+
if (stackName) {
|
|
303
|
+
vars["# CloudFormation Stack"] = stackName;
|
|
304
|
+
}
|
|
305
|
+
if (config.stackVersion) {
|
|
306
|
+
vars["# Stack Version"] = config.stackVersion;
|
|
307
|
+
}
|
|
308
|
+
vars["# API Gateway Endpoint"] = config.apiGatewayEndpoint;
|
|
309
|
+
return vars;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Parse config.json and infer stack information
|
|
313
|
+
*/
|
|
314
|
+
async function inferStackConfig(catalogUrl, verbose = true) {
|
|
315
|
+
if (verbose) {
|
|
316
|
+
console.log(`Fetching config from: ${catalogUrl}`);
|
|
317
|
+
console.log("");
|
|
318
|
+
}
|
|
319
|
+
// Normalize URL and construct config.json URL
|
|
320
|
+
let configUrl = catalogUrl.replace(/\/$/, "");
|
|
321
|
+
if (!configUrl.endsWith("/config.json")) {
|
|
322
|
+
configUrl += "/config.json";
|
|
323
|
+
}
|
|
324
|
+
// Fetch config.json
|
|
325
|
+
let config;
|
|
326
|
+
try {
|
|
327
|
+
config = (await fetchJson(configUrl));
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
// If direct fetch fails, try with just /config.json path
|
|
331
|
+
const err = error;
|
|
332
|
+
if (err.message.includes("403") || err.message.includes("404")) {
|
|
333
|
+
const baseUrl = catalogUrl.match(/https?:\/\/[^/]+/)?.[0];
|
|
334
|
+
if (baseUrl) {
|
|
335
|
+
if (verbose)
|
|
336
|
+
console.log(`Direct fetch failed, trying: ${baseUrl}/config.json`);
|
|
337
|
+
config = (await fetchJson(`${baseUrl}/config.json`));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
throw error;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
throw error;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (verbose) {
|
|
348
|
+
console.log("✓ Successfully fetched config.json");
|
|
349
|
+
console.log("");
|
|
350
|
+
console.log("Configuration Summary:");
|
|
351
|
+
console.log("=".repeat(80));
|
|
352
|
+
console.log(`Region: ${config.region}`);
|
|
353
|
+
console.log(`API Gateway: ${config.apiGatewayEndpoint}`);
|
|
354
|
+
console.log(`Analytics Bucket: ${config.analyticsBucket}`);
|
|
355
|
+
console.log(`Service Bucket: ${config.serviceBucket}`);
|
|
356
|
+
console.log(`Stack Version: ${config.stackVersion}`);
|
|
357
|
+
console.log("=".repeat(80));
|
|
358
|
+
console.log("");
|
|
359
|
+
}
|
|
360
|
+
// Extract identifiable resources
|
|
361
|
+
const region = config.region;
|
|
362
|
+
const apiGatewayId = extractApiGatewayId(config.apiGatewayEndpoint);
|
|
363
|
+
const analyticsBucket = extractBucketName(config.analyticsBucket);
|
|
364
|
+
const serviceBucket = extractBucketName(config.serviceBucket);
|
|
365
|
+
const stackPrefix = inferStackPrefix(analyticsBucket, serviceBucket);
|
|
366
|
+
if (verbose) {
|
|
367
|
+
console.log("Searching for CloudFormation stack...");
|
|
368
|
+
console.log(` Region: ${region}`);
|
|
369
|
+
console.log(` API Gateway ID: ${apiGatewayId || "not found"}`);
|
|
370
|
+
console.log(` Inferred stack prefix: ${stackPrefix}`);
|
|
371
|
+
console.log("");
|
|
372
|
+
}
|
|
373
|
+
// Try to find the stack
|
|
374
|
+
const stackName = findStack(region, apiGatewayId, analyticsBucket, serviceBucket, stackPrefix, verbose);
|
|
375
|
+
if (verbose) {
|
|
376
|
+
console.log("");
|
|
377
|
+
if (!stackName) {
|
|
378
|
+
console.log("⚠️ Could not automatically find CloudFormation stack.");
|
|
379
|
+
console.log(" You may need to manually specify stack resources.");
|
|
380
|
+
console.log("");
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// Get stack details if found
|
|
384
|
+
let stackDetails = { outputs: [], parameters: [] };
|
|
385
|
+
if (stackName) {
|
|
386
|
+
if (verbose) {
|
|
387
|
+
console.log(`Fetching stack details for: ${stackName}...`);
|
|
388
|
+
}
|
|
389
|
+
stackDetails = getStackDetails(region, stackName);
|
|
390
|
+
if (verbose) {
|
|
391
|
+
console.log(`✓ Retrieved ${stackDetails.outputs.length} outputs and ${stackDetails.parameters.length} parameters`);
|
|
392
|
+
console.log("");
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Get AWS account ID
|
|
396
|
+
const accountId = getAwsAccountId();
|
|
397
|
+
if (accountId && verbose) {
|
|
398
|
+
console.log(`✓ AWS Account ID: ${accountId}`);
|
|
399
|
+
console.log("");
|
|
400
|
+
}
|
|
401
|
+
// Build inferred environment variables
|
|
402
|
+
const inferredVars = buildInferredConfig(config, stackName, stackDetails, region, accountId, catalogUrl.replace(/\/config\.json$/, ""));
|
|
403
|
+
return {
|
|
404
|
+
config,
|
|
405
|
+
stackName,
|
|
406
|
+
stackDetails,
|
|
407
|
+
inferredVars,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=stack-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-inference.js","sourceRoot":"","sources":["../../../lib/utils/stack-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quiltdata/benchling-webhook",
|
|
3
|
+
"version": "0.5.0-20251029T180511Z",
|
|
4
|
+
"description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
|
|
5
|
+
"main": "dist/lib/index.js",
|
|
6
|
+
"types": "dist/lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE",
|
|
11
|
+
"env.template"
|
|
12
|
+
],
|
|
13
|
+
"bin": {
|
|
14
|
+
"benchling-webhook": "./dist/bin/cli.js"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"clean": "rm -rf cdk.out */{*.js,*.d.ts}",
|
|
18
|
+
"test": "NODE_ENV=test TMPDIR=./.tmp node --max-old-space-size=4096 ./node_modules/.bin/jest",
|
|
19
|
+
"cdk": "npm run test && npx cdk deploy --require-approval never",
|
|
20
|
+
"lint": "eslint . --ext .ts --fix",
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"prebuild": "rm -rf dist",
|
|
23
|
+
"postbuild": "chmod +x dist/bin/cli.js && cp bin/*.js dist/bin/ 2>/dev/null || true",
|
|
24
|
+
"synth": "npx cdk synth",
|
|
25
|
+
"logs": "node bin/check-logs.js",
|
|
26
|
+
"event": "node bin/send-event.js",
|
|
27
|
+
"check": "npm run cdk && npm run event && sleep 45 && npm run logs",
|
|
28
|
+
"docker:test": "make -C docker test",
|
|
29
|
+
"docker-push": "make -C docker push-local",
|
|
30
|
+
"docker-check": "make -C docker docker-validate",
|
|
31
|
+
"release": "npm run test && node bin/release.js",
|
|
32
|
+
"release:dev": "npm run test && node bin/release.js dev",
|
|
33
|
+
"notes": "bin/release-notes.sh \"$(jq -r .version package.json)\" \"712023778557.dkr.ecr.us-east-1.amazonaws.com/quiltdata/benchling:$(jq -r .version package.json)\" \"false\" \"$(jq -r .name package.json)\"",
|
|
34
|
+
"version": "node bin/version.js patch",
|
|
35
|
+
"version:patch": "npm run version -- patch",
|
|
36
|
+
"prepublishOnly": "npm run build"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"benchling",
|
|
40
|
+
"webhook",
|
|
41
|
+
"aws",
|
|
42
|
+
"cdk",
|
|
43
|
+
"fargate",
|
|
44
|
+
"docker",
|
|
45
|
+
"quilt",
|
|
46
|
+
"cli",
|
|
47
|
+
"npx"
|
|
48
|
+
],
|
|
49
|
+
"author": "Quilt Data",
|
|
50
|
+
"license": "Apache-2.0",
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/quiltdata/benchling-webhook.git"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@eslint/js": "^9.22.0",
|
|
57
|
+
"@types/adm-zip": "^0.5.7",
|
|
58
|
+
"@types/aws-lambda": "^8.10.156",
|
|
59
|
+
"@types/jest": "^30.0.0",
|
|
60
|
+
"@types/node": "^24.0.0",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
62
|
+
"@typescript-eslint/parser": "^8.26.1",
|
|
63
|
+
"aws-cdk": "2.1031.0",
|
|
64
|
+
"dotenv": "^17.2.3",
|
|
65
|
+
"esbuild": "0.25.11",
|
|
66
|
+
"eslint": "^9.22.0",
|
|
67
|
+
"globals": "^16.0.0",
|
|
68
|
+
"jest": "^30.0.0",
|
|
69
|
+
"ts-jest": "^29.2.5",
|
|
70
|
+
"ts-node": "^10.9.2",
|
|
71
|
+
"typescript": "~5.9.0"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"@aws-sdk/client-s3": "^3.758.0",
|
|
75
|
+
"adm-zip": "^0.5.10",
|
|
76
|
+
"aws-cdk-lib": "2.221.0",
|
|
77
|
+
"aws-sdk": "^2.1574.0",
|
|
78
|
+
"boxen": "^5.1.2",
|
|
79
|
+
"chalk": "^4.1.2",
|
|
80
|
+
"commander": "^14.0.2",
|
|
81
|
+
"constructs": "^10.0.0",
|
|
82
|
+
"dotenv-expand": "^12.0.3",
|
|
83
|
+
"enquirer": "^2.4.1",
|
|
84
|
+
"ora": "^5.4.1"
|
|
85
|
+
},
|
|
86
|
+
"engines": {
|
|
87
|
+
"node": ">=18.0.0",
|
|
88
|
+
"npm": ">=9.0.0"
|
|
89
|
+
}
|
|
90
|
+
}
|
package/package.json
CHANGED
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quiltdata/benchling-webhook",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AWS CDK deployment for Benchling webhook processing using Fargate",
|
|
5
|
-
"main": "lib/index.
|
|
3
|
+
"version": "0.5.0-20251029T180511Z",
|
|
4
|
+
"description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
|
|
5
|
+
"main": "dist/lib/index.js",
|
|
6
|
+
"types": "dist/lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE",
|
|
11
|
+
"env.template"
|
|
12
|
+
],
|
|
6
13
|
"bin": {
|
|
7
|
-
"benchling-webhook": "bin/
|
|
14
|
+
"benchling-webhook": "./dist/bin/cli.js"
|
|
8
15
|
},
|
|
9
16
|
"scripts": {
|
|
10
|
-
"sync-version": "node bin/sync-version.js",
|
|
11
17
|
"clean": "rm -rf cdk.out */{*.js,*.d.ts}",
|
|
12
18
|
"test": "NODE_ENV=test TMPDIR=./.tmp node --max-old-space-size=4096 ./node_modules/.bin/jest",
|
|
13
19
|
"cdk": "npm run test && npx cdk deploy --require-approval never",
|
|
14
20
|
"lint": "eslint . --ext .ts --fix",
|
|
15
|
-
"build": "tsc
|
|
16
|
-
"
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"prebuild": "rm -rf dist",
|
|
23
|
+
"postbuild": "chmod +x dist/bin/cli.js && cp bin/*.js dist/bin/ 2>/dev/null || true",
|
|
17
24
|
"synth": "npx cdk synth",
|
|
18
|
-
"diff": "npx cdk diff",
|
|
19
25
|
"logs": "node bin/check-logs.js",
|
|
20
26
|
"event": "node bin/send-event.js",
|
|
21
27
|
"check": "npm run cdk && npm run event && sleep 45 && npm run logs",
|
|
22
|
-
"get-env": "node bin/get-env.js",
|
|
23
|
-
"dev": "npm run build && npm run docker:test && npm run lint",
|
|
24
28
|
"docker:test": "make -C docker test",
|
|
25
29
|
"docker-push": "make -C docker push-local",
|
|
26
30
|
"docker-check": "make -C docker docker-validate",
|
|
27
|
-
"release": "node bin/release.js",
|
|
28
|
-
"release:dev": "node bin/release.js dev",
|
|
29
|
-
"
|
|
30
|
-
"version
|
|
31
|
-
"version:patch": "
|
|
32
|
-
"
|
|
33
|
-
"publish:manual": "node bin/publish-manual.js"
|
|
31
|
+
"release": "npm run test && node bin/release.js",
|
|
32
|
+
"release:dev": "npm run test && node bin/release.js dev",
|
|
33
|
+
"notes": "bin/release-notes.sh \"$(jq -r .version package.json)\" \"712023778557.dkr.ecr.us-east-1.amazonaws.com/quiltdata/benchling:$(jq -r .version package.json)\" \"false\" \"$(jq -r .name package.json)\"",
|
|
34
|
+
"version": "node bin/version.js patch",
|
|
35
|
+
"version:patch": "npm run version -- patch",
|
|
36
|
+
"prepublishOnly": "npm run build"
|
|
34
37
|
},
|
|
35
38
|
"keywords": [
|
|
36
39
|
"benchling",
|
|
@@ -39,13 +42,15 @@
|
|
|
39
42
|
"cdk",
|
|
40
43
|
"fargate",
|
|
41
44
|
"docker",
|
|
42
|
-
"quilt"
|
|
45
|
+
"quilt",
|
|
46
|
+
"cli",
|
|
47
|
+
"npx"
|
|
43
48
|
],
|
|
44
49
|
"author": "Quilt Data",
|
|
45
50
|
"license": "Apache-2.0",
|
|
46
51
|
"repository": {
|
|
47
52
|
"type": "git",
|
|
48
|
-
"url": "https://github.com/quiltdata/benchling-webhook.git"
|
|
53
|
+
"url": "git+https://github.com/quiltdata/benchling-webhook.git"
|
|
49
54
|
},
|
|
50
55
|
"devDependencies": {
|
|
51
56
|
"@eslint/js": "^9.22.0",
|
|
@@ -70,7 +75,13 @@
|
|
|
70
75
|
"adm-zip": "^0.5.10",
|
|
71
76
|
"aws-cdk-lib": "2.221.0",
|
|
72
77
|
"aws-sdk": "^2.1574.0",
|
|
73
|
-
"
|
|
78
|
+
"boxen": "^5.1.2",
|
|
79
|
+
"chalk": "^4.1.2",
|
|
80
|
+
"commander": "^14.0.2",
|
|
81
|
+
"constructs": "^10.0.0",
|
|
82
|
+
"dotenv-expand": "^12.0.3",
|
|
83
|
+
"enquirer": "^2.4.1",
|
|
84
|
+
"ora": "^5.4.1"
|
|
74
85
|
},
|
|
75
86
|
"engines": {
|
|
76
87
|
"node": ">=18.0.0",
|