@quiltdata/benchling-webhook 0.7.2-20251106T010445Z → 0.7.3-20251106T131511Z

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.
Files changed (94) hide show
  1. package/README.md +33 -159
  2. package/dist/bin/benchling-webhook.d.ts +0 -1
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +2 -7
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cli.js +17 -12
  7. package/dist/bin/cli.js.map +1 -1
  8. package/dist/bin/commands/config-profiles.d.ts.map +1 -1
  9. package/dist/bin/commands/config-profiles.js +1 -2
  10. package/dist/bin/commands/config-profiles.js.map +1 -1
  11. package/dist/bin/commands/deploy.d.ts +1 -1
  12. package/dist/bin/commands/deploy.d.ts.map +1 -1
  13. package/dist/bin/commands/deploy.js +83 -10
  14. package/dist/bin/commands/deploy.js.map +1 -1
  15. package/dist/bin/commands/infer-quilt-config.d.ts +6 -15
  16. package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
  17. package/dist/bin/commands/infer-quilt-config.js +96 -69
  18. package/dist/bin/commands/infer-quilt-config.js.map +1 -1
  19. package/dist/bin/commands/init.d.ts +5 -1
  20. package/dist/bin/commands/init.d.ts.map +1 -1
  21. package/dist/bin/commands/init.js +19 -111
  22. package/dist/bin/commands/init.js.map +1 -1
  23. package/dist/bin/commands/manifest.d.ts +0 -11
  24. package/dist/bin/commands/manifest.d.ts.map +1 -1
  25. package/dist/bin/commands/manifest.js +8 -22
  26. package/dist/bin/commands/manifest.js.map +1 -1
  27. package/dist/bin/commands/setup-profile.d.ts.map +1 -1
  28. package/dist/bin/commands/setup-profile.js +15 -17
  29. package/dist/bin/commands/setup-profile.js.map +1 -1
  30. package/dist/bin/commands/setup-wizard.d.ts +0 -2
  31. package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
  32. package/dist/bin/commands/setup-wizard.js +227 -405
  33. package/dist/bin/commands/setup-wizard.js.map +1 -1
  34. package/dist/bin/commands/sync-secrets.js +2 -2
  35. package/dist/lib/benchling-webhook-stack.d.ts +0 -6
  36. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  37. package/dist/lib/benchling-webhook-stack.js +21 -20
  38. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  39. package/dist/lib/configuration-saver.d.ts +0 -8
  40. package/dist/lib/configuration-saver.d.ts.map +1 -1
  41. package/dist/lib/configuration-saver.js +1 -18
  42. package/dist/lib/configuration-saver.js.map +1 -1
  43. package/dist/lib/fargate-service.d.ts +4 -2
  44. package/dist/lib/fargate-service.d.ts.map +1 -1
  45. package/dist/lib/fargate-service.js +25 -12
  46. package/dist/lib/fargate-service.js.map +1 -1
  47. package/dist/lib/types/config.d.ts +9 -70
  48. package/dist/lib/types/config.d.ts.map +1 -1
  49. package/dist/lib/types/config.js +2 -3
  50. package/dist/lib/types/config.js.map +1 -1
  51. package/dist/lib/utils/config-loader.d.ts.map +1 -1
  52. package/dist/lib/utils/config-loader.js +3 -2
  53. package/dist/lib/utils/config-loader.js.map +1 -1
  54. package/dist/lib/utils/config-resolver.d.ts +2 -2
  55. package/dist/lib/utils/config-resolver.d.ts.map +1 -1
  56. package/dist/lib/utils/config-resolver.js +14 -7
  57. package/dist/lib/utils/config-resolver.js.map +1 -1
  58. package/dist/lib/utils/config.d.ts +1 -1
  59. package/dist/lib/utils/config.d.ts.map +1 -1
  60. package/dist/lib/utils/config.js +7 -3
  61. package/dist/lib/utils/config.js.map +1 -1
  62. package/dist/lib/utils/sqs.d.ts +13 -0
  63. package/dist/lib/utils/sqs.d.ts.map +1 -0
  64. package/dist/lib/utils/sqs.js +22 -0
  65. package/dist/lib/utils/sqs.js.map +1 -0
  66. package/dist/lib/utils/stack-inference.d.ts.map +1 -1
  67. package/dist/lib/utils/stack-inference.js +8 -6
  68. package/dist/lib/utils/stack-inference.js.map +1 -1
  69. package/dist/lib/xdg-config.d.ts +3 -1
  70. package/dist/lib/xdg-config.d.ts.map +1 -1
  71. package/dist/lib/xdg-config.js +7 -1
  72. package/dist/lib/xdg-config.js.map +1 -1
  73. package/dist/package.json +7 -4
  74. package/dist/scripts/check-logs.d.ts +1 -1
  75. package/dist/scripts/check-logs.d.ts.map +1 -1
  76. package/dist/scripts/check-logs.js +10 -4
  77. package/dist/scripts/check-logs.js.map +1 -1
  78. package/dist/scripts/get-dev-version.d.ts +16 -0
  79. package/dist/scripts/get-dev-version.d.ts.map +1 -0
  80. package/dist/scripts/get-dev-version.js +57 -0
  81. package/dist/scripts/get-dev-version.js.map +1 -0
  82. package/dist/scripts/send-event.d.ts +1 -1
  83. package/dist/scripts/send-event.d.ts.map +1 -1
  84. package/dist/scripts/send-event.js +4 -5
  85. package/dist/scripts/send-event.js.map +1 -1
  86. package/package.json +7 -4
  87. package/dist/lib/xdg-cli-wrapper.d.ts +0 -113
  88. package/dist/lib/xdg-cli-wrapper.d.ts.map +0 -1
  89. package/dist/lib/xdg-cli-wrapper.js +0 -289
  90. package/dist/lib/xdg-cli-wrapper.js.map +0 -1
  91. package/dist/scripts/infer-quilt-config.d.ts +0 -47
  92. package/dist/scripts/infer-quilt-config.d.ts.map +0 -1
  93. package/dist/scripts/infer-quilt-config.js +0 -315
  94. package/dist/scripts/infer-quilt-config.js.map +0 -1
@@ -1,289 +0,0 @@
1
- "use strict";
2
- /**
3
- * TypeScript Wrapper for Python XDG CLI
4
- *
5
- * Provides type-safe access to the Python XDG configuration CLI from TypeScript.
6
- * This ensures consistency by delegating all XDG operations to the Python implementation.
7
- *
8
- * @module lib/xdg-cli-wrapper
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.XDGCLIWrapper = exports.XDGCLIError = void 0;
45
- const child_process_1 = require("child_process");
46
- const path = __importStar(require("path"));
47
- /**
48
- * Base class for XDG CLI errors
49
- */
50
- class XDGCLIError extends Error {
51
- constructor(message, command, exitCode, stderr) {
52
- super(message);
53
- this.command = command;
54
- this.exitCode = exitCode;
55
- this.stderr = stderr;
56
- this.name = "XDGCLIError";
57
- }
58
- }
59
- exports.XDGCLIError = XDGCLIError;
60
- /**
61
- * Get the path to the Python CLI script
62
- */
63
- function getCLIPath() {
64
- return path.join(__dirname, "..", "docker", "scripts", "benchling-webhook-config");
65
- }
66
- /**
67
- * Execute Python CLI command
68
- */
69
- function executeCLI(args, options = {}) {
70
- const cliPath = getCLIPath();
71
- const command = `python3 ${cliPath} ${args.join(" ")}`;
72
- try {
73
- const result = (0, child_process_1.execSync)(command, {
74
- encoding: "utf-8",
75
- stdio: options.captureStdout ? "pipe" : ["pipe", "pipe", "inherit"],
76
- maxBuffer: 10 * 1024 * 1024, // 10MB buffer
77
- });
78
- return result;
79
- }
80
- catch (error) {
81
- const err = error;
82
- const stderr = err.stderr?.toString() || err.message || "Unknown error";
83
- const exitCode = err.status || 1;
84
- throw new XDGCLIError(`XDG CLI command failed: ${command}`, command, exitCode, stderr);
85
- }
86
- }
87
- /**
88
- * XDG CLI Wrapper Class
89
- *
90
- * Provides TypeScript interface to Python XDG CLI operations.
91
- */
92
- class XDGCLIWrapper {
93
- /**
94
- * Read configuration from XDG storage
95
- *
96
- * @param options - Read options
97
- * @returns Configuration data
98
- */
99
- static read(options = {}) {
100
- const args = ["read"];
101
- if (options.profile) {
102
- args.push("--profile", options.profile);
103
- }
104
- if (options.type) {
105
- args.push("--type", options.type);
106
- }
107
- if (options.validate) {
108
- args.push("--validate");
109
- }
110
- args.push("--compact"); // Always use compact for parsing
111
- const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
112
- return JSON.parse(output);
113
- }
114
- /**
115
- * Write configuration to XDG storage
116
- *
117
- * @param data - Configuration data to write
118
- * @param options - Write options
119
- */
120
- static write(data, options = {}) {
121
- const args = ["write", JSON.stringify(data)];
122
- if (options.profile) {
123
- args.push("--profile", options.profile);
124
- }
125
- if (options.type) {
126
- args.push("--type", options.type);
127
- }
128
- if (options.validate !== false) {
129
- args.push("--validate");
130
- }
131
- if (options.backup !== false) {
132
- args.push("--backup");
133
- }
134
- executeCLI(args, { verbose: options.verbose });
135
- }
136
- /**
137
- * Merge data into existing configuration
138
- *
139
- * @param data - Data to merge
140
- * @param options - Merge options
141
- */
142
- static merge(data, options = {}) {
143
- const args = ["merge", JSON.stringify(data)];
144
- if (options.profile) {
145
- args.push("--profile", options.profile);
146
- }
147
- if (options.type) {
148
- args.push("--type", options.type);
149
- }
150
- if (options.validate !== false) {
151
- args.push("--validate");
152
- }
153
- if (options.backup !== false) {
154
- args.push("--backup");
155
- }
156
- executeCLI(args, { verbose: options.verbose });
157
- }
158
- /**
159
- * Validate configuration against schema
160
- *
161
- * @param options - Validation options
162
- * @returns True if valid, false otherwise
163
- */
164
- static validate(options = {}) {
165
- const args = ["validate"];
166
- if (options.profile) {
167
- args.push("--profile", options.profile);
168
- }
169
- if (options.type) {
170
- args.push("--type", options.type);
171
- }
172
- try {
173
- executeCLI(args, { verbose: options.verbose });
174
- return true;
175
- }
176
- catch (error) {
177
- if (error instanceof XDGCLIError) {
178
- return false;
179
- }
180
- throw error;
181
- }
182
- }
183
- /**
184
- * List all available profiles
185
- *
186
- * @returns Array of profile names
187
- */
188
- static listProfiles() {
189
- const output = executeCLI(["list"], { captureStdout: true });
190
- // Parse output: "Available profiles:\n default\n dev\n..."
191
- const lines = output.split("\n").filter((line) => line.trim() && !line.includes("Available profiles"));
192
- return lines.map((line) => line.trim().split(/\s+/)[0]);
193
- }
194
- /**
195
- * Export configuration as JSON
196
- *
197
- * @param options - Export options
198
- * @returns Configuration data
199
- */
200
- static export(options = {}) {
201
- const args = ["export"];
202
- if (options.profile) {
203
- args.push("--profile", options.profile);
204
- }
205
- if (options.type) {
206
- args.push("--type", options.type);
207
- }
208
- args.push("--compact");
209
- const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
210
- return JSON.parse(output);
211
- }
212
- /**
213
- * Get a specific configuration field value
214
- *
215
- * @param key - Field key (supports dot notation)
216
- * @param options - Get options
217
- * @returns Field value
218
- */
219
- static get(key, options = {}) {
220
- const args = ["get", key];
221
- if (options.profile) {
222
- args.push("--profile", options.profile);
223
- }
224
- if (options.type) {
225
- args.push("--type", options.type);
226
- }
227
- if (options.default) {
228
- args.push("--default", options.default);
229
- }
230
- const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
231
- // Try to parse as JSON, otherwise return as string
232
- try {
233
- return JSON.parse(output.trim());
234
- }
235
- catch {
236
- return output.trim();
237
- }
238
- }
239
- /**
240
- * Set a specific configuration field value
241
- *
242
- * @param key - Field key (supports dot notation)
243
- * @param value - Value to set
244
- * @param options - Set options
245
- */
246
- static set(key, value, options = {}) {
247
- const isObject = typeof value === "object";
248
- const args = ["set", key, isObject ? JSON.stringify(value) : String(value)];
249
- if (options.profile) {
250
- args.push("--profile", options.profile);
251
- }
252
- if (options.type) {
253
- args.push("--type", options.type);
254
- }
255
- if (isObject) {
256
- args.push("--json");
257
- }
258
- if (options.backup !== false) {
259
- args.push("--backup");
260
- }
261
- executeCLI(args, { verbose: options.verbose });
262
- }
263
- /**
264
- * Read user configuration
265
- */
266
- static readUser(profile = "default") {
267
- return this.read({ profile, type: "user" });
268
- }
269
- /**
270
- * Read derived configuration
271
- */
272
- static readDerived(profile = "default") {
273
- return this.read({ profile, type: "derived" });
274
- }
275
- /**
276
- * Read deployment configuration
277
- */
278
- static readDeploy(profile = "default") {
279
- return this.read({ profile, type: "deploy" });
280
- }
281
- /**
282
- * Read complete merged configuration
283
- */
284
- static readComplete(profile = "default") {
285
- return this.export({ profile, type: "complete" });
286
- }
287
- }
288
- exports.XDGCLIWrapper = XDGCLIWrapper;
289
- //# sourceMappingURL=xdg-cli-wrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xdg-cli-wrapper.js","sourceRoot":"","sources":["../../lib/xdg-cli-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env ts-node
2
- /**
3
- * Quilt Catalog Auto-Inference (v0.7.0)
4
- *
5
- * Automatically infers Quilt catalog configuration from:
6
- * 1. quilt3 CLI command (`quilt3 config`)
7
- * 2. AWS CloudFormation stack inspection
8
- * 3. Interactive catalog selection (if multiple catalogs available)
9
- *
10
- * Returns configuration in v0.7.0 ProfileConfig format.
11
- *
12
- * @module scripts/infer-quilt-config
13
- */
14
- import { QuiltConfig } from "../lib/types/config";
15
- /**
16
- * Inference options
17
- */
18
- export interface InferenceOptions {
19
- region?: string;
20
- profile?: string;
21
- interactive?: boolean;
22
- }
23
- /**
24
- * Infers Quilt configuration from multiple sources
25
- *
26
- * Priority order:
27
- * 1. quilt3 CLI command (`quilt3 config`)
28
- * 2. CloudFormation stack inspection
29
- * 3. Interactive selection if multiple options
30
- *
31
- * Returns configuration in v0.7.0 ProfileConfig.quilt format.
32
- *
33
- * @param options - Inference options
34
- * @returns Quilt configuration object
35
- *
36
- * @example
37
- * ```typescript
38
- * const quiltConfig = await inferQuiltConfig({
39
- * region: "us-east-1",
40
- * profile: "default",
41
- * interactive: true
42
- * });
43
- * console.log(quiltConfig.stackArn);
44
- * ```
45
- */
46
- export declare function inferQuiltConfig(options?: InferenceOptions): Promise<Partial<QuiltConfig>>;
47
- //# sourceMappingURL=infer-quilt-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infer-quilt-config.d.ts","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAsBlD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AA8ID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAkFpG"}
@@ -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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"}