@quiltdata/benchling-webhook 0.5.4 → 0.6.0

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 (103) hide show
  1. package/README.md +273 -10
  2. package/dist/bin/benchling-webhook.d.ts +1 -1
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +8 -22
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cdk-dev.js +59 -3
  7. package/dist/bin/cli.js +16 -6
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/commands/deploy.d.ts +6 -2
  10. package/dist/bin/commands/deploy.d.ts.map +1 -1
  11. package/dist/bin/commands/deploy.js +149 -90
  12. package/dist/bin/commands/deploy.js.map +1 -1
  13. package/dist/bin/config-profiles.d.ts +59 -0
  14. package/dist/bin/config-profiles.d.ts.map +1 -0
  15. package/dist/bin/config-profiles.js +272 -0
  16. package/dist/bin/config-profiles.js.map +1 -0
  17. package/dist/bin/create-secret.d.ts +25 -0
  18. package/dist/bin/create-secret.d.ts.map +1 -0
  19. package/dist/bin/create-secret.js +239 -0
  20. package/dist/bin/create-secret.js.map +1 -0
  21. package/dist/lib/benchling-auth-validator.d.ts +65 -0
  22. package/dist/lib/benchling-auth-validator.d.ts.map +1 -0
  23. package/dist/lib/benchling-auth-validator.js +213 -0
  24. package/dist/lib/benchling-auth-validator.js.map +1 -0
  25. package/dist/lib/benchling-webhook-stack.d.ts +13 -10
  26. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  27. package/dist/lib/benchling-webhook-stack.js +25 -69
  28. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  29. package/dist/lib/config-logger.d.ts +191 -0
  30. package/dist/lib/config-logger.d.ts.map +1 -0
  31. package/dist/lib/config-logger.js +372 -0
  32. package/dist/lib/config-logger.js.map +1 -0
  33. package/dist/lib/configuration-saver.d.ts +75 -0
  34. package/dist/lib/configuration-saver.d.ts.map +1 -0
  35. package/dist/lib/configuration-saver.js +145 -0
  36. package/dist/lib/configuration-saver.js.map +1 -0
  37. package/dist/lib/configuration-validator.d.ts +63 -0
  38. package/dist/lib/configuration-validator.d.ts.map +1 -0
  39. package/dist/lib/configuration-validator.js +136 -0
  40. package/dist/lib/configuration-validator.js.map +1 -0
  41. package/dist/lib/configuration-wizard.d.ts +52 -0
  42. package/dist/lib/configuration-wizard.d.ts.map +1 -0
  43. package/dist/lib/configuration-wizard.js +193 -0
  44. package/dist/lib/configuration-wizard.js.map +1 -0
  45. package/dist/lib/fargate-service.d.ts +18 -9
  46. package/dist/lib/fargate-service.d.ts.map +1 -1
  47. package/dist/lib/fargate-service.js +177 -61
  48. package/dist/lib/fargate-service.js.map +1 -1
  49. package/dist/lib/quilt-config-resolver.d.ts +53 -0
  50. package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
  51. package/dist/lib/quilt-config-resolver.js +100 -0
  52. package/dist/lib/quilt-config-resolver.js.map +1 -0
  53. package/dist/lib/s3-bucket-validator.d.ts +76 -0
  54. package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
  55. package/dist/lib/s3-bucket-validator.js +237 -0
  56. package/dist/lib/s3-bucket-validator.js.map +1 -0
  57. package/dist/lib/types/config.d.ts +398 -0
  58. package/dist/lib/types/config.d.ts.map +1 -0
  59. package/dist/lib/types/config.js +11 -0
  60. package/dist/lib/types/config.js.map +1 -0
  61. package/dist/lib/utils/config-loader.d.ts +48 -0
  62. package/dist/lib/utils/config-loader.d.ts.map +1 -0
  63. package/dist/lib/utils/config-loader.js +109 -0
  64. package/dist/lib/utils/config-loader.js.map +1 -0
  65. package/dist/lib/utils/config-resolver.d.ts +138 -0
  66. package/dist/lib/utils/config-resolver.d.ts.map +1 -0
  67. package/dist/lib/utils/config-resolver.js +272 -0
  68. package/dist/lib/utils/config-resolver.js.map +1 -0
  69. package/dist/lib/utils/config.d.ts +50 -0
  70. package/dist/lib/utils/config.d.ts.map +1 -1
  71. package/dist/lib/utils/config.js +86 -0
  72. package/dist/lib/utils/config.js.map +1 -1
  73. package/dist/lib/utils/secrets.d.ts +174 -0
  74. package/dist/lib/utils/secrets.d.ts.map +1 -0
  75. package/dist/lib/utils/secrets.js +351 -0
  76. package/dist/lib/utils/secrets.js.map +1 -0
  77. package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
  78. package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
  79. package/dist/lib/xdg-cli-wrapper.js +288 -0
  80. package/dist/lib/xdg-cli-wrapper.js.map +1 -0
  81. package/dist/lib/xdg-config.d.ts +187 -0
  82. package/dist/lib/xdg-config.d.ts.map +1 -0
  83. package/dist/lib/xdg-config.js +562 -0
  84. package/dist/lib/xdg-config.js.map +1 -0
  85. package/dist/package.json +33 -25
  86. package/dist/scripts/config-health-check.d.ts +78 -0
  87. package/dist/scripts/config-health-check.d.ts.map +1 -0
  88. package/dist/scripts/config-health-check.js +559 -0
  89. package/dist/scripts/config-health-check.js.map +1 -0
  90. package/dist/scripts/infer-quilt-config.d.ts +50 -0
  91. package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
  92. package/dist/scripts/infer-quilt-config.js +353 -0
  93. package/dist/scripts/infer-quilt-config.js.map +1 -0
  94. package/dist/scripts/install-wizard.d.ts +34 -0
  95. package/dist/scripts/install-wizard.d.ts.map +1 -0
  96. package/dist/scripts/install-wizard.js +719 -0
  97. package/dist/scripts/install-wizard.js.map +1 -0
  98. package/dist/scripts/sync-secrets.d.ts +63 -0
  99. package/dist/scripts/sync-secrets.d.ts.map +1 -0
  100. package/dist/scripts/sync-secrets.js +424 -0
  101. package/dist/scripts/sync-secrets.js.map +1 -0
  102. package/env.template +60 -47
  103. package/package.json +33 -25
@@ -0,0 +1,372 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration Diagnostic Logging
4
+ *
5
+ * Provides comprehensive logging for configuration operations:
6
+ * - Configuration sources tracking
7
+ * - Operation audit trail
8
+ * - Troubleshooting insights
9
+ * - Performance metrics
10
+ *
11
+ * @module lib/config-logger
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ConfigLogger = exports.ConfigOperation = exports.LogLevel = void 0;
15
+ exports.getConfigLogger = getConfigLogger;
16
+ exports.setConfigLogger = setConfigLogger;
17
+ const fs_1 = require("fs");
18
+ const path_1 = require("path");
19
+ const os_1 = require("os");
20
+ /**
21
+ * Log level enumeration
22
+ */
23
+ var LogLevel;
24
+ (function (LogLevel) {
25
+ LogLevel["DEBUG"] = "DEBUG";
26
+ LogLevel["INFO"] = "INFO";
27
+ LogLevel["WARN"] = "WARN";
28
+ LogLevel["ERROR"] = "ERROR";
29
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
30
+ /**
31
+ * Configuration operation types
32
+ */
33
+ var ConfigOperation;
34
+ (function (ConfigOperation) {
35
+ ConfigOperation["READ"] = "read";
36
+ ConfigOperation["WRITE"] = "write";
37
+ ConfigOperation["VALIDATE"] = "validate";
38
+ ConfigOperation["MERGE"] = "merge";
39
+ ConfigOperation["SYNC_SECRETS"] = "sync-secrets";
40
+ ConfigOperation["INFER_CONFIG"] = "infer-config";
41
+ ConfigOperation["CREATE_PROFILE"] = "create-profile";
42
+ ConfigOperation["DELETE_PROFILE"] = "delete-profile";
43
+ })(ConfigOperation || (exports.ConfigOperation = ConfigOperation = {}));
44
+ /**
45
+ * Configuration logger for diagnostic and audit purposes
46
+ */
47
+ class ConfigLogger {
48
+ /**
49
+ * Creates a new configuration logger
50
+ *
51
+ * @param options - Logger configuration options
52
+ */
53
+ constructor(options) {
54
+ const { logFile, enableConsole = true, minLogLevel = LogLevel.INFO } = options || {};
55
+ // Default log file location
56
+ const logDir = (0, path_1.resolve)((0, os_1.homedir)(), ".config", "benchling-webhook", "logs");
57
+ if (!(0, fs_1.existsSync)(logDir)) {
58
+ (0, fs_1.mkdirSync)(logDir, { recursive: true });
59
+ }
60
+ this.logFile = logFile || (0, path_1.resolve)(logDir, "config.log");
61
+ this.enableConsole = enableConsole;
62
+ this.minLogLevel = minLogLevel;
63
+ }
64
+ /**
65
+ * Gets log level priority for comparison
66
+ *
67
+ * @param level - Log level
68
+ * @returns Priority number (higher = more severe)
69
+ */
70
+ getLogLevelPriority(level) {
71
+ switch (level) {
72
+ case LogLevel.DEBUG:
73
+ return 0;
74
+ case LogLevel.INFO:
75
+ return 1;
76
+ case LogLevel.WARN:
77
+ return 2;
78
+ case LogLevel.ERROR:
79
+ return 3;
80
+ default:
81
+ return 1;
82
+ }
83
+ }
84
+ /**
85
+ * Checks if log level should be output
86
+ *
87
+ * @param level - Log level to check
88
+ * @returns True if should log
89
+ */
90
+ shouldLog(level) {
91
+ return this.getLogLevelPriority(level) >= this.getLogLevelPriority(this.minLogLevel);
92
+ }
93
+ /**
94
+ * Formats log entry for output
95
+ *
96
+ * @param entry - Log entry
97
+ * @returns Formatted log string
98
+ */
99
+ formatLogEntry(entry) {
100
+ const parts = [
101
+ entry.timestamp,
102
+ `[${entry.level}]`,
103
+ `[${entry.operation}]`,
104
+ entry.message,
105
+ ];
106
+ if (entry.source) {
107
+ parts.push(`source=${entry.source}`);
108
+ }
109
+ if (entry.profileName) {
110
+ parts.push(`profile=${entry.profileName}`);
111
+ }
112
+ if (entry.duration !== undefined) {
113
+ parts.push(`duration=${entry.duration}ms`);
114
+ }
115
+ if (entry.data) {
116
+ parts.push(`data=${JSON.stringify(entry.data)}`);
117
+ }
118
+ return parts.join(" ");
119
+ }
120
+ /**
121
+ * Writes log entry to file and console
122
+ *
123
+ * @param entry - Log entry to write
124
+ */
125
+ writeLog(entry) {
126
+ if (!this.shouldLog(entry.level)) {
127
+ return;
128
+ }
129
+ const formattedLog = this.formatLogEntry(entry);
130
+ // Write to file
131
+ try {
132
+ (0, fs_1.appendFileSync)(this.logFile, formattedLog + "\n", "utf-8");
133
+ }
134
+ catch (error) {
135
+ console.error(`Failed to write log: ${error.message}`);
136
+ }
137
+ // Write to console
138
+ if (this.enableConsole) {
139
+ switch (entry.level) {
140
+ case LogLevel.DEBUG:
141
+ console.debug(formattedLog);
142
+ break;
143
+ case LogLevel.INFO:
144
+ console.log(formattedLog);
145
+ break;
146
+ case LogLevel.WARN:
147
+ console.warn(formattedLog);
148
+ break;
149
+ case LogLevel.ERROR:
150
+ console.error(formattedLog);
151
+ break;
152
+ }
153
+ }
154
+ }
155
+ /**
156
+ * Logs a debug message
157
+ *
158
+ * @param operation - Configuration operation
159
+ * @param message - Log message
160
+ * @param data - Additional data
161
+ */
162
+ debug(operation, message, data) {
163
+ this.writeLog({
164
+ timestamp: new Date().toISOString(),
165
+ level: LogLevel.DEBUG,
166
+ operation,
167
+ message,
168
+ data,
169
+ });
170
+ }
171
+ /**
172
+ * Logs an info message
173
+ *
174
+ * @param operation - Configuration operation
175
+ * @param message - Log message
176
+ * @param data - Additional data
177
+ */
178
+ info(operation, message, data) {
179
+ this.writeLog({
180
+ timestamp: new Date().toISOString(),
181
+ level: LogLevel.INFO,
182
+ operation,
183
+ message,
184
+ data,
185
+ });
186
+ }
187
+ /**
188
+ * Logs a warning message
189
+ *
190
+ * @param operation - Configuration operation
191
+ * @param message - Log message
192
+ * @param data - Additional data
193
+ */
194
+ warn(operation, message, data) {
195
+ this.writeLog({
196
+ timestamp: new Date().toISOString(),
197
+ level: LogLevel.WARN,
198
+ operation,
199
+ message,
200
+ data,
201
+ });
202
+ }
203
+ /**
204
+ * Logs an error message
205
+ *
206
+ * @param operation - Configuration operation
207
+ * @param message - Log message
208
+ * @param data - Additional data
209
+ */
210
+ error(operation, message, data) {
211
+ this.writeLog({
212
+ timestamp: new Date().toISOString(),
213
+ level: LogLevel.ERROR,
214
+ operation,
215
+ message,
216
+ data,
217
+ });
218
+ }
219
+ /**
220
+ * Logs configuration operation with timing
221
+ *
222
+ * @param operation - Configuration operation
223
+ * @param profileName - Profile name
224
+ * @param source - Configuration source
225
+ * @param fn - Function to execute and time
226
+ * @returns Result of the function
227
+ */
228
+ async logOperation(operation, profileName, source, fn) {
229
+ const startTime = Date.now();
230
+ this.info(operation, "Starting operation", {
231
+ profileName,
232
+ source,
233
+ });
234
+ try {
235
+ const result = await fn();
236
+ const duration = Date.now() - startTime;
237
+ this.info(operation, "Operation completed successfully", {
238
+ profileName,
239
+ source,
240
+ duration,
241
+ });
242
+ return result;
243
+ }
244
+ catch (error) {
245
+ const duration = Date.now() - startTime;
246
+ this.error(operation, `Operation failed: ${error.message}`, {
247
+ profileName,
248
+ source,
249
+ duration,
250
+ error: error.stack,
251
+ });
252
+ throw error;
253
+ }
254
+ }
255
+ /**
256
+ * Logs configuration read operation
257
+ *
258
+ * @param profileName - Profile name
259
+ * @param configType - Configuration type
260
+ * @param success - Whether read was successful
261
+ * @param source - Configuration source
262
+ */
263
+ logRead(profileName, configType, success, source) {
264
+ const entry = {
265
+ timestamp: new Date().toISOString(),
266
+ level: success ? LogLevel.INFO : LogLevel.ERROR,
267
+ operation: ConfigOperation.READ,
268
+ message: `Configuration read ${success ? "successful" : "failed"}`,
269
+ profileName,
270
+ source,
271
+ data: {
272
+ configType,
273
+ },
274
+ };
275
+ this.writeLog(entry);
276
+ }
277
+ /**
278
+ * Logs configuration write operation
279
+ *
280
+ * @param profileName - Profile name
281
+ * @param configType - Configuration type
282
+ * @param success - Whether write was successful
283
+ * @param source - Configuration source
284
+ */
285
+ logWrite(profileName, configType, success, source) {
286
+ const entry = {
287
+ timestamp: new Date().toISOString(),
288
+ level: success ? LogLevel.INFO : LogLevel.ERROR,
289
+ operation: ConfigOperation.WRITE,
290
+ message: `Configuration write ${success ? "successful" : "failed"}`,
291
+ profileName,
292
+ source,
293
+ data: {
294
+ configType,
295
+ },
296
+ };
297
+ this.writeLog(entry);
298
+ }
299
+ /**
300
+ * Logs configuration validation
301
+ *
302
+ * @param profileName - Profile name
303
+ * @param isValid - Whether configuration is valid
304
+ * @param errors - Validation errors
305
+ */
306
+ logValidation(profileName, isValid, errors) {
307
+ const entry = {
308
+ timestamp: new Date().toISOString(),
309
+ level: isValid ? LogLevel.INFO : LogLevel.WARN,
310
+ operation: ConfigOperation.VALIDATE,
311
+ message: `Configuration validation ${isValid ? "passed" : "failed"}`,
312
+ profileName,
313
+ data: errors ? { errors } : undefined,
314
+ };
315
+ this.writeLog(entry);
316
+ }
317
+ /**
318
+ * Logs secrets sync operation
319
+ *
320
+ * @param profileName - Profile name
321
+ * @param secretArn - Secret ARN
322
+ * @param action - Action performed (created/updated/skipped)
323
+ */
324
+ logSecretsSync(profileName, secretArn, action) {
325
+ const entry = {
326
+ timestamp: new Date().toISOString(),
327
+ level: LogLevel.INFO,
328
+ operation: ConfigOperation.SYNC_SECRETS,
329
+ message: `Secrets ${action}`,
330
+ profileName,
331
+ data: {
332
+ secretArn,
333
+ action,
334
+ },
335
+ };
336
+ this.writeLog(entry);
337
+ }
338
+ /**
339
+ * Gets the log file path
340
+ *
341
+ * @returns Log file path
342
+ */
343
+ getLogFile() {
344
+ return this.logFile;
345
+ }
346
+ }
347
+ exports.ConfigLogger = ConfigLogger;
348
+ /**
349
+ * Global configuration logger instance
350
+ */
351
+ let globalLogger = null;
352
+ /**
353
+ * Gets or creates the global configuration logger
354
+ *
355
+ * @param options - Logger options (only used on first call)
356
+ * @returns Configuration logger instance
357
+ */
358
+ function getConfigLogger(options) {
359
+ if (!globalLogger) {
360
+ globalLogger = new ConfigLogger(options);
361
+ }
362
+ return globalLogger;
363
+ }
364
+ /**
365
+ * Sets the global configuration logger
366
+ *
367
+ * @param logger - Logger instance
368
+ */
369
+ function setConfigLogger(logger) {
370
+ globalLogger = logger;
371
+ }
372
+ //# sourceMappingURL=config-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-logger.js","sourceRoot":"","sources":["../../lib/config-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { XDGConfig } from "./xdg-config";
2
+ /**
3
+ * Configuration metadata
4
+ */
5
+ export interface ConfigMetadata {
6
+ savedAt: string;
7
+ source: string;
8
+ version?: string;
9
+ inferredAt?: string;
10
+ }
11
+ /**
12
+ * Save options for configuration persistence
13
+ */
14
+ export interface SaveOptions {
15
+ xdgConfig?: XDGConfig;
16
+ source?: string;
17
+ skipValidation?: boolean;
18
+ merge?: boolean;
19
+ }
20
+ /**
21
+ * Configuration saver for persisting configuration to XDG files
22
+ */
23
+ export declare class ConfigurationSaver {
24
+ /**
25
+ * Default XDG config instance
26
+ */
27
+ private static defaultXDGConfig;
28
+ /**
29
+ * Get or create default XDG config instance
30
+ */
31
+ private static getDefaultXDGConfig;
32
+ /**
33
+ * Save configuration to user config file
34
+ *
35
+ * @param config - Configuration to save
36
+ * @param options - Save options
37
+ * @returns Saved configuration with metadata
38
+ */
39
+ static save(config: Record<string, string | number | boolean>, options?: SaveOptions): Promise<Record<string, string | number | boolean>>;
40
+ /**
41
+ * Save inferred configuration to derived config file
42
+ *
43
+ * @param config - Inferred configuration
44
+ * @param options - Save options
45
+ */
46
+ static saveToDerived(config: Record<string, string | number | boolean>, options?: SaveOptions): Promise<void>;
47
+ /**
48
+ * Save deployment outputs to deployment config file
49
+ *
50
+ * @param config - Deployment configuration
51
+ * @param options - Save options
52
+ */
53
+ static saveToDeployment(config: Record<string, string | number | boolean>, options?: SaveOptions): Promise<void>;
54
+ /**
55
+ * Create metadata for configuration
56
+ *
57
+ * @param options - Metadata options
58
+ * @returns Configuration metadata
59
+ */
60
+ static getMetadata(options?: Partial<ConfigMetadata>): ConfigMetadata;
61
+ /**
62
+ * Get the current version
63
+ *
64
+ * @returns Version string
65
+ */
66
+ private static getVersion;
67
+ /**
68
+ * Validate configuration before saving
69
+ *
70
+ * @param config - Configuration to validate
71
+ * @throws {Error} If configuration is invalid
72
+ */
73
+ private static validateConfig;
74
+ }
75
+ //# sourceMappingURL=configuration-saver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-saver.d.ts","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0B;IAEzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC;;;;;;OAMG;WACiB,IAAI,CACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACjD,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IA8CrD;;;;;OAKG;WACiB,aAAa,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACjD,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;;;OAKG;WACiB,gBAAgB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACjD,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;;;OAKG;WACW,WAAW,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc;IAShF;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAQhC"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ConfigurationSaver = void 0;
7
+ const xdg_config_1 = require("./xdg-config");
8
+ const lodash_merge_1 = __importDefault(require("lodash.merge"));
9
+ /**
10
+ * Configuration saver for persisting configuration to XDG files
11
+ */
12
+ class ConfigurationSaver {
13
+ /**
14
+ * Get or create default XDG config instance
15
+ */
16
+ static getDefaultXDGConfig() {
17
+ if (!ConfigurationSaver.defaultXDGConfig) {
18
+ ConfigurationSaver.defaultXDGConfig = new xdg_config_1.XDGConfig();
19
+ ConfigurationSaver.defaultXDGConfig.ensureDirectories();
20
+ }
21
+ return ConfigurationSaver.defaultXDGConfig;
22
+ }
23
+ /**
24
+ * Save configuration to user config file
25
+ *
26
+ * @param config - Configuration to save
27
+ * @param options - Save options
28
+ * @returns Saved configuration with metadata
29
+ */
30
+ static async save(config, options = {}) {
31
+ const { xdgConfig = ConfigurationSaver.getDefaultXDGConfig(), source = "wizard", skipValidation = false, merge: shouldMerge = false, } = options;
32
+ // Validate configuration if not skipped
33
+ if (!skipValidation) {
34
+ ConfigurationSaver.validateConfig(config);
35
+ }
36
+ // Merge with existing config if requested
37
+ let finalConfig = { ...config };
38
+ if (shouldMerge) {
39
+ try {
40
+ const existingConfig = xdgConfig.readConfig("user");
41
+ finalConfig = (0, lodash_merge_1.default)({}, existingConfig, config);
42
+ }
43
+ catch {
44
+ // If no existing config, just use the new config
45
+ finalConfig = { ...config };
46
+ }
47
+ }
48
+ // Add metadata
49
+ const metadata = ConfigurationSaver.getMetadata({ source });
50
+ const configWithMetadata = {
51
+ ...finalConfig,
52
+ _metadata: metadata,
53
+ };
54
+ // Save to user config
55
+ xdgConfig.writeConfig("user", configWithMetadata);
56
+ // If source indicates inference, also save to derived config
57
+ if (source === "quilt-cli" || source === "inference") {
58
+ await ConfigurationSaver.saveToDerived(config, {
59
+ xdgConfig,
60
+ source,
61
+ });
62
+ }
63
+ return finalConfig;
64
+ }
65
+ /**
66
+ * Save inferred configuration to derived config file
67
+ *
68
+ * @param config - Inferred configuration
69
+ * @param options - Save options
70
+ */
71
+ static async saveToDerived(config, options = {}) {
72
+ const { xdgConfig = ConfigurationSaver.getDefaultXDGConfig(), source = "inferred", } = options;
73
+ // Add inference metadata
74
+ const metadata = ConfigurationSaver.getMetadata({
75
+ source,
76
+ inferredAt: new Date().toISOString(),
77
+ });
78
+ const configWithMetadata = {
79
+ ...config,
80
+ _metadata: metadata,
81
+ };
82
+ // Save to derived config
83
+ xdgConfig.writeConfig("derived", configWithMetadata);
84
+ }
85
+ /**
86
+ * Save deployment outputs to deployment config file
87
+ *
88
+ * @param config - Deployment configuration
89
+ * @param options - Save options
90
+ */
91
+ static async saveToDeployment(config, options = {}) {
92
+ const { xdgConfig = ConfigurationSaver.getDefaultXDGConfig(), source = "deployment", } = options;
93
+ // Add deployment metadata
94
+ const metadata = ConfigurationSaver.getMetadata({ source });
95
+ const configWithMetadata = {
96
+ ...config,
97
+ _metadata: metadata,
98
+ };
99
+ // Save to deployment config
100
+ xdgConfig.writeConfig("deploy", configWithMetadata);
101
+ }
102
+ /**
103
+ * Create metadata for configuration
104
+ *
105
+ * @param options - Metadata options
106
+ * @returns Configuration metadata
107
+ */
108
+ static getMetadata(options = {}) {
109
+ return {
110
+ savedAt: new Date().toISOString(),
111
+ source: options.source || "unknown",
112
+ version: ConfigurationSaver.getVersion(),
113
+ ...(options.inferredAt && { inferredAt: options.inferredAt }),
114
+ };
115
+ }
116
+ /**
117
+ * Get the current version
118
+ *
119
+ * @returns Version string
120
+ */
121
+ static getVersion() {
122
+ // For now, return a static version
123
+ // In production, this would read from package.json
124
+ return "0.6.0";
125
+ }
126
+ /**
127
+ * Validate configuration before saving
128
+ *
129
+ * @param config - Configuration to validate
130
+ * @throws {Error} If configuration is invalid
131
+ */
132
+ static validateConfig(config) {
133
+ // Check if config is empty
134
+ if (Object.keys(config).length === 0) {
135
+ throw new Error("Configuration validation failed: Configuration cannot be empty");
136
+ }
137
+ // Basic validation passed
138
+ }
139
+ }
140
+ exports.ConfigurationSaver = ConfigurationSaver;
141
+ /**
142
+ * Default XDG config instance
143
+ */
144
+ ConfigurationSaver.defaultXDGConfig = null;
145
+ //# sourceMappingURL=configuration-saver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-saver.js","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Configuration object for validation
3
+ */
4
+ export interface Configuration {
5
+ catalogUrl?: string;
6
+ benchlingTenant?: string;
7
+ benchlingClientId?: string;
8
+ benchlingClientSecret?: string;
9
+ benchlingAppDefinitionId?: string;
10
+ quiltUserBucket?: string;
11
+ quiltRegion?: string;
12
+ [key: string]: string | undefined;
13
+ }
14
+ /**
15
+ * Validation options
16
+ */
17
+ export interface ValidationOptions {
18
+ skipBenchlingValidation?: boolean;
19
+ skipS3Validation?: boolean;
20
+ }
21
+ /**
22
+ * Comprehensive validation result
23
+ */
24
+ export interface ComprehensiveValidationResult {
25
+ isValid: boolean;
26
+ errors: string[];
27
+ warnings?: string[];
28
+ }
29
+ /**
30
+ * Comprehensive configuration validator
31
+ *
32
+ * Combines all validation checks (Benchling + S3) and provides
33
+ * comprehensive validation results with aggregated errors.
34
+ */
35
+ export declare class ConfigurationValidator {
36
+ /**
37
+ * Required configuration fields
38
+ */
39
+ private static readonly REQUIRED_FIELDS;
40
+ /**
41
+ * Validate entire configuration
42
+ *
43
+ * @param config - Configuration to validate
44
+ * @param options - Validation options
45
+ * @returns Comprehensive validation result
46
+ */
47
+ static validate(config: Configuration, options?: ValidationOptions): Promise<ComprehensiveValidationResult>;
48
+ /**
49
+ * Validate catalog URL format
50
+ *
51
+ * @param catalogUrl - Catalog URL to validate
52
+ * @returns True if URL format is valid
53
+ */
54
+ static validateCatalogUrl(catalogUrl: string): boolean;
55
+ /**
56
+ * Check for missing required fields
57
+ *
58
+ * @param config - Configuration to check
59
+ * @returns Array of missing field names
60
+ */
61
+ static checkRequiredFields(config: Configuration): string[];
62
+ }
63
+ //# sourceMappingURL=configuration-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-validator.d.ts","sourceRoot":"","sources":["../../lib/configuration-validator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IAC/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAQrC;IAEF;;;;;;OAMG;WACiB,QAAQ,CACxB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IA8EzC;;;;;OAKG;WACW,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAa7D;;;;;OAKG;WACW,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE;CAWrE"}