@quiltdata/benchling-webhook 0.7.2-20251106T010445Z → 0.7.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 +33 -159
- package/dist/bin/benchling-webhook.d.ts.map +1 -1
- package/dist/bin/benchling-webhook.js +2 -4
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/commands/config-profiles.d.ts.map +1 -1
- package/dist/bin/commands/config-profiles.js +1 -2
- package/dist/bin/commands/config-profiles.js.map +1 -1
- package/dist/bin/commands/deploy.d.ts +1 -1
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +67 -9
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/commands/infer-quilt-config.d.ts +6 -15
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
- package/dist/bin/commands/infer-quilt-config.js +35 -64
- package/dist/bin/commands/infer-quilt-config.js.map +1 -1
- package/dist/bin/commands/manifest.d.ts +0 -11
- package/dist/bin/commands/manifest.d.ts.map +1 -1
- package/dist/bin/commands/manifest.js +8 -22
- package/dist/bin/commands/manifest.js.map +1 -1
- package/dist/bin/commands/setup-profile.d.ts.map +1 -1
- package/dist/bin/commands/setup-profile.js +15 -17
- package/dist/bin/commands/setup-profile.js.map +1 -1
- package/dist/bin/commands/setup-wizard.d.ts +0 -2
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +172 -414
- package/dist/bin/commands/setup-wizard.js.map +1 -1
- package/dist/bin/commands/sync-secrets.js +2 -2
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +15 -1
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +0 -8
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +1 -18
- package/dist/lib/configuration-saver.js.map +1 -1
- package/dist/lib/fargate-service.d.ts +4 -2
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +25 -12
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/types/config.d.ts +9 -70
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +2 -3
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config-loader.d.ts.map +1 -1
- package/dist/lib/utils/config-loader.js +3 -2
- package/dist/lib/utils/config-loader.js.map +1 -1
- package/dist/lib/utils/config-resolver.d.ts +2 -2
- package/dist/lib/utils/config-resolver.d.ts.map +1 -1
- package/dist/lib/utils/config-resolver.js +14 -7
- package/dist/lib/utils/config-resolver.js.map +1 -1
- package/dist/lib/utils/config.d.ts +1 -1
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +7 -3
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/sqs.d.ts +13 -0
- package/dist/lib/utils/sqs.d.ts.map +1 -0
- package/dist/lib/utils/sqs.js +22 -0
- package/dist/lib/utils/sqs.js.map +1 -0
- package/dist/lib/utils/stack-inference.d.ts.map +1 -1
- package/dist/lib/utils/stack-inference.js +8 -6
- package/dist/lib/utils/stack-inference.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +3 -1
- package/dist/lib/xdg-config.d.ts.map +1 -1
- package/dist/lib/xdg-config.js +7 -1
- package/dist/lib/xdg-config.js.map +1 -1
- package/dist/package.json +4 -2
- package/dist/scripts/get-dev-version.d.ts +16 -0
- package/dist/scripts/get-dev-version.d.ts.map +1 -0
- package/dist/scripts/get-dev-version.js +57 -0
- package/dist/scripts/get-dev-version.js.map +1 -0
- package/package.json +4 -2
- package/dist/lib/xdg-cli-wrapper.d.ts +0 -113
- package/dist/lib/xdg-cli-wrapper.d.ts.map +0 -1
- package/dist/lib/xdg-cli-wrapper.js +0 -289
- package/dist/lib/xdg-cli-wrapper.js.map +0 -1
- package/dist/scripts/infer-quilt-config.d.ts +0 -47
- package/dist/scripts/infer-quilt-config.d.ts.map +0 -1
- package/dist/scripts/infer-quilt-config.js +0 -315
- package/dist/scripts/infer-quilt-config.js.map +0 -1
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Quilt Catalog Auto-Inference (v0.7.0)
|
|
5
|
-
*
|
|
6
|
-
* Automatically infers Quilt catalog configuration from:
|
|
7
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
8
|
-
* 2. AWS CloudFormation stack inspection
|
|
9
|
-
* 3. Interactive catalog selection (if multiple catalogs available)
|
|
10
|
-
*
|
|
11
|
-
* Returns configuration in v0.7.0 ProfileConfig format.
|
|
12
|
-
*
|
|
13
|
-
* @module scripts/infer-quilt-config
|
|
14
|
-
*/
|
|
15
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
-
}
|
|
21
|
-
Object.defineProperty(o, k2, desc);
|
|
22
|
-
}) : (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
o[k2] = m[k];
|
|
25
|
-
}));
|
|
26
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
-
}) : function(o, v) {
|
|
29
|
-
o["default"] = v;
|
|
30
|
-
});
|
|
31
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
-
var ownKeys = function(o) {
|
|
33
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
-
var ar = [];
|
|
35
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
-
return ar;
|
|
37
|
-
};
|
|
38
|
-
return ownKeys(o);
|
|
39
|
-
};
|
|
40
|
-
return function (mod) {
|
|
41
|
-
if (mod && mod.__esModule) return mod;
|
|
42
|
-
var result = {};
|
|
43
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
-
__setModuleDefault(result, mod);
|
|
45
|
-
return result;
|
|
46
|
-
};
|
|
47
|
-
})();
|
|
48
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.inferQuiltConfig = inferQuiltConfig;
|
|
50
|
-
const child_process_1 = require("child_process");
|
|
51
|
-
const readline = __importStar(require("readline"));
|
|
52
|
-
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
53
|
-
/**
|
|
54
|
-
* Executes quilt3 config command to get current catalog URL
|
|
55
|
-
*
|
|
56
|
-
* @returns Catalog URL from quilt3 CLI or null if command fails
|
|
57
|
-
*/
|
|
58
|
-
function getQuilt3Catalog() {
|
|
59
|
-
try {
|
|
60
|
-
const output = (0, child_process_1.execSync)("quilt3 config", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
|
|
61
|
-
let catalogUrl = output.trim();
|
|
62
|
-
if (catalogUrl && catalogUrl.startsWith("http")) {
|
|
63
|
-
console.log(`Found quilt3 CLI configuration: ${catalogUrl}`);
|
|
64
|
-
// Strip protocol and trailing slash, store only domain
|
|
65
|
-
catalogUrl = catalogUrl.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
66
|
-
return { catalogUrl };
|
|
67
|
-
}
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// quilt3 command not available or failed
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Finds Quilt CloudFormation stacks in AWS account
|
|
77
|
-
*
|
|
78
|
-
* @param region - AWS region to search
|
|
79
|
-
* @param profile - AWS profile to use
|
|
80
|
-
* @returns Array of Quilt stack information
|
|
81
|
-
*/
|
|
82
|
-
async function findQuiltStacks(region, profile) {
|
|
83
|
-
try {
|
|
84
|
-
const clientConfig = { region };
|
|
85
|
-
if (profile) {
|
|
86
|
-
const { fromIni } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
|
|
87
|
-
clientConfig.credentials = fromIni({ profile });
|
|
88
|
-
}
|
|
89
|
-
const client = new client_cloudformation_1.CloudFormationClient(clientConfig);
|
|
90
|
-
// List all stacks
|
|
91
|
-
const listCommand = new client_cloudformation_1.ListStacksCommand({
|
|
92
|
-
StackStatusFilter: ["CREATE_COMPLETE", "UPDATE_COMPLETE"],
|
|
93
|
-
});
|
|
94
|
-
const listResponse = await client.send(listCommand);
|
|
95
|
-
const stacks = listResponse.StackSummaries || [];
|
|
96
|
-
// Filter for Quilt stacks (containing "quilt" in the name)
|
|
97
|
-
const quiltStacks = stacks.filter((stack) => stack.StackName?.toLowerCase().includes("quilt") ||
|
|
98
|
-
stack.StackName?.toLowerCase().includes("catalog"));
|
|
99
|
-
// Get detailed information for each stack
|
|
100
|
-
const stackInfos = [];
|
|
101
|
-
for (const stack of quiltStacks) {
|
|
102
|
-
if (!stack.StackName)
|
|
103
|
-
continue;
|
|
104
|
-
try {
|
|
105
|
-
const describeCommand = new client_cloudformation_1.DescribeStacksCommand({
|
|
106
|
-
StackName: stack.StackName,
|
|
107
|
-
});
|
|
108
|
-
const describeResponse = await client.send(describeCommand);
|
|
109
|
-
const stackDetail = describeResponse.Stacks?.[0];
|
|
110
|
-
if (!stackDetail)
|
|
111
|
-
continue;
|
|
112
|
-
const outputs = stackDetail.Outputs || [];
|
|
113
|
-
const stackInfo = {
|
|
114
|
-
stackName: stack.StackName,
|
|
115
|
-
stackArn: stackDetail.StackId || "",
|
|
116
|
-
region: region,
|
|
117
|
-
};
|
|
118
|
-
// Extract outputs
|
|
119
|
-
for (const output of outputs) {
|
|
120
|
-
const key = output.OutputKey || "";
|
|
121
|
-
const value = output.OutputValue || "";
|
|
122
|
-
if (key === "QuiltWebHost") {
|
|
123
|
-
// Strip protocol and trailing slash, store only domain
|
|
124
|
-
stackInfo.catalogUrl = value.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
125
|
-
}
|
|
126
|
-
else if (key.includes("ucket")) {
|
|
127
|
-
stackInfo.bucket = value;
|
|
128
|
-
}
|
|
129
|
-
else if (key === "UserAthenaDatabaseName" || key.includes("Database")) {
|
|
130
|
-
stackInfo.database = value;
|
|
131
|
-
}
|
|
132
|
-
else if (key.includes("Queue")) {
|
|
133
|
-
stackInfo.queueArn = value;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
stackInfos.push(stackInfo);
|
|
137
|
-
}
|
|
138
|
-
catch (describeError) {
|
|
139
|
-
console.error(`Warning: Failed to describe stack ${stack.StackName}: ${describeError.message}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return stackInfos;
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
console.error(`Warning: Failed to list CloudFormation stacks: ${error.message}`);
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Prompts user to select from multiple catalog options
|
|
151
|
-
*
|
|
152
|
-
* @param options - Array of catalog options
|
|
153
|
-
* @returns Selected catalog index
|
|
154
|
-
*/
|
|
155
|
-
async function promptCatalogSelection(options) {
|
|
156
|
-
console.log("\nMultiple Quilt catalog configurations found:");
|
|
157
|
-
options.forEach((opt, idx) => {
|
|
158
|
-
console.log(` ${idx + 1}. ${opt}`);
|
|
159
|
-
});
|
|
160
|
-
const rl = readline.createInterface({
|
|
161
|
-
input: process.stdin,
|
|
162
|
-
output: process.stdout,
|
|
163
|
-
});
|
|
164
|
-
return new Promise((resolve) => {
|
|
165
|
-
rl.question(`\nSelect catalog (1-${options.length}): `, (answer) => {
|
|
166
|
-
rl.close();
|
|
167
|
-
const selection = parseInt(answer.trim(), 10);
|
|
168
|
-
if (isNaN(selection) || selection < 1 || selection > options.length) {
|
|
169
|
-
console.log("Invalid selection, using first option.");
|
|
170
|
-
resolve(0);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
resolve(selection - 1);
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Infers Quilt configuration from multiple sources
|
|
180
|
-
*
|
|
181
|
-
* Priority order:
|
|
182
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
183
|
-
* 2. CloudFormation stack inspection
|
|
184
|
-
* 3. Interactive selection if multiple options
|
|
185
|
-
*
|
|
186
|
-
* Returns configuration in v0.7.0 ProfileConfig.quilt format.
|
|
187
|
-
*
|
|
188
|
-
* @param options - Inference options
|
|
189
|
-
* @returns Quilt configuration object
|
|
190
|
-
*
|
|
191
|
-
* @example
|
|
192
|
-
* ```typescript
|
|
193
|
-
* const quiltConfig = await inferQuiltConfig({
|
|
194
|
-
* region: "us-east-1",
|
|
195
|
-
* profile: "default",
|
|
196
|
-
* interactive: true
|
|
197
|
-
* });
|
|
198
|
-
* console.log(quiltConfig.stackArn);
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
async function inferQuiltConfig(options = {}) {
|
|
202
|
-
const { region = "us-east-1", profile, interactive = true } = options;
|
|
203
|
-
const result = {
|
|
204
|
-
region,
|
|
205
|
-
};
|
|
206
|
-
// Step 1: Try quilt3 CLI command
|
|
207
|
-
console.log("Checking quilt3 CLI configuration...");
|
|
208
|
-
const quilt3Config = getQuilt3Catalog();
|
|
209
|
-
if (quilt3Config?.catalogUrl) {
|
|
210
|
-
result.catalog = quilt3Config.catalogUrl;
|
|
211
|
-
console.log(` ✓ Found catalog URL from quilt3: ${result.catalog}`);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
console.log(" No quilt3 CLI configuration found.");
|
|
215
|
-
}
|
|
216
|
-
// Step 2: Search for CloudFormation stacks
|
|
217
|
-
console.log("\nSearching for Quilt CloudFormation stacks...");
|
|
218
|
-
const stacks = await findQuiltStacks(region, profile);
|
|
219
|
-
if (stacks.length === 0) {
|
|
220
|
-
console.log(" No Quilt CloudFormation stacks found.");
|
|
221
|
-
if (!result.catalog) {
|
|
222
|
-
throw new Error("Unable to infer Quilt configuration. Please run 'quilt3 config <catalog-url>' or provide stack ARN manually.");
|
|
223
|
-
}
|
|
224
|
-
return result;
|
|
225
|
-
}
|
|
226
|
-
console.log(` Found ${stacks.length} Quilt stack(s)\n`);
|
|
227
|
-
let selectedStack;
|
|
228
|
-
// If we have a catalog URL from quilt3, try to find matching stack
|
|
229
|
-
if (result.catalog && stacks.length > 1) {
|
|
230
|
-
// Both result.catalog and stack catalogUrl are now bare domains, so compare directly
|
|
231
|
-
const matchingStack = stacks.find((s) => s.catalogUrl === result.catalog);
|
|
232
|
-
if (matchingStack) {
|
|
233
|
-
selectedStack = matchingStack;
|
|
234
|
-
console.log(` Auto-selected stack matching catalog URL: ${selectedStack.stackName}`);
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
console.log(` No stack found matching catalog URL: ${result.catalog}`);
|
|
238
|
-
if (interactive) {
|
|
239
|
-
const options = stacks.map((s) => `${s.stackName} (${s.region})`);
|
|
240
|
-
const selectedIndex = await promptCatalogSelection(options);
|
|
241
|
-
selectedStack = stacks[selectedIndex];
|
|
242
|
-
console.log(`\nSelected: ${selectedStack.stackName}`);
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
selectedStack = stacks[0];
|
|
246
|
-
console.log(` Using first stack: ${selectedStack.stackName}`);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
else if (stacks.length === 1) {
|
|
251
|
-
selectedStack = stacks[0];
|
|
252
|
-
console.log(` Using stack: ${selectedStack.stackName}`);
|
|
253
|
-
}
|
|
254
|
-
else if (interactive) {
|
|
255
|
-
const options = stacks.map((s) => `${s.stackName} (${s.region})`);
|
|
256
|
-
const selectedIndex = await promptCatalogSelection(options);
|
|
257
|
-
selectedStack = stacks[selectedIndex];
|
|
258
|
-
console.log(`\nSelected: ${selectedStack.stackName}`);
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
selectedStack = stacks[0];
|
|
262
|
-
console.log(` Using first stack: ${selectedStack.stackName}`);
|
|
263
|
-
}
|
|
264
|
-
// Populate result from selected stack
|
|
265
|
-
result.stackArn = selectedStack.stackArn;
|
|
266
|
-
result.bucket = selectedStack.bucket;
|
|
267
|
-
result.database = selectedStack.database || "quilt_catalog";
|
|
268
|
-
result.queueArn = selectedStack.queueArn;
|
|
269
|
-
result.region = selectedStack.region;
|
|
270
|
-
if (selectedStack.catalogUrl) {
|
|
271
|
-
result.catalog = selectedStack.catalogUrl;
|
|
272
|
-
}
|
|
273
|
-
console.log("\n✓ Quilt configuration inferred successfully\n");
|
|
274
|
-
return result;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Main execution for CLI usage
|
|
278
|
-
*/
|
|
279
|
-
async function main() {
|
|
280
|
-
const args = process.argv.slice(2);
|
|
281
|
-
const options = {
|
|
282
|
-
interactive: true,
|
|
283
|
-
};
|
|
284
|
-
// Parse command line arguments
|
|
285
|
-
for (let i = 0; i < args.length; i++) {
|
|
286
|
-
if (args[i] === "--region" && i + 1 < args.length) {
|
|
287
|
-
options.region = args[i + 1];
|
|
288
|
-
i++;
|
|
289
|
-
}
|
|
290
|
-
else if (args[i] === "--profile" && i + 1 < args.length) {
|
|
291
|
-
options.profile = args[i + 1];
|
|
292
|
-
i++;
|
|
293
|
-
}
|
|
294
|
-
else if (args[i] === "--non-interactive") {
|
|
295
|
-
options.interactive = false;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
console.log("Quilt Catalog Auto-Inference (v0.7.0)\n");
|
|
299
|
-
const result = await inferQuiltConfig(options);
|
|
300
|
-
console.log("=== Inference Results ===");
|
|
301
|
-
console.log(`Stack ARN: ${result.stackArn || "Not found"}`);
|
|
302
|
-
console.log(`Catalog URL: ${result.catalog || "Not found"}`);
|
|
303
|
-
console.log(`Bucket: ${result.bucket || "Not found"}`);
|
|
304
|
-
console.log(`Database: ${result.database || "Not found"}`);
|
|
305
|
-
console.log(`Queue ARN: ${result.queueArn || "Not found"}`);
|
|
306
|
-
console.log(`Region: ${result.region || "Not found"}`);
|
|
307
|
-
}
|
|
308
|
-
// Run main if executed directly
|
|
309
|
-
if (require.main === module) {
|
|
310
|
-
main().catch((error) => {
|
|
311
|
-
console.error("Error:", error.message);
|
|
312
|
-
process.exit(1);
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=infer-quilt-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infer-quilt-config.js","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":"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"}
|