@quiltdata/benchling-webhook 0.5.4-20251102T020826Z → 0.5.4-20251103T180145Z

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 (91) hide show
  1. package/README.md +26 -17
  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 -23
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cdk-dev.js +51 -0
  7. package/dist/bin/cli.js +8 -22
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/commands/deploy.d.ts +4 -2
  10. package/dist/bin/commands/deploy.d.ts.map +1 -1
  11. package/dist/bin/commands/deploy.js +88 -300
  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 +3 -0
  18. package/dist/bin/create-secret.d.ts.map +1 -1
  19. package/dist/bin/create-secret.js +51 -48
  20. package/dist/bin/create-secret.js.map +1 -1
  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 +5 -23
  26. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  27. package/dist/lib/benchling-webhook-stack.js +25 -145
  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/quilt-config-resolver.d.ts +53 -0
  46. package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
  47. package/dist/lib/quilt-config-resolver.js +100 -0
  48. package/dist/lib/quilt-config-resolver.js.map +1 -0
  49. package/dist/lib/s3-bucket-validator.d.ts +76 -0
  50. package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
  51. package/dist/lib/s3-bucket-validator.js +237 -0
  52. package/dist/lib/s3-bucket-validator.js.map +1 -0
  53. package/dist/lib/types/config.d.ts +398 -0
  54. package/dist/lib/types/config.d.ts.map +1 -0
  55. package/dist/lib/types/config.js +11 -0
  56. package/dist/lib/types/config.js.map +1 -0
  57. package/dist/lib/utils/config-loader.js.map +1 -1
  58. package/dist/lib/utils/config-resolver.d.ts +26 -26
  59. package/dist/lib/utils/config-resolver.d.ts.map +1 -1
  60. package/dist/lib/utils/config-resolver.js +29 -29
  61. package/dist/lib/utils/config-resolver.js.map +1 -1
  62. package/dist/lib/utils/config.d.ts +2 -0
  63. package/dist/lib/utils/config.d.ts.map +1 -1
  64. package/dist/lib/utils/config.js.map +1 -1
  65. package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
  66. package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
  67. package/dist/lib/xdg-cli-wrapper.js +288 -0
  68. package/dist/lib/xdg-cli-wrapper.js.map +1 -0
  69. package/dist/lib/xdg-config.d.ts +187 -0
  70. package/dist/lib/xdg-config.d.ts.map +1 -0
  71. package/dist/lib/xdg-config.js +562 -0
  72. package/dist/lib/xdg-config.js.map +1 -0
  73. package/dist/package.json +38 -26
  74. package/dist/scripts/config-health-check.d.ts +78 -0
  75. package/dist/scripts/config-health-check.d.ts.map +1 -0
  76. package/dist/scripts/config-health-check.js +559 -0
  77. package/dist/scripts/config-health-check.js.map +1 -0
  78. package/dist/scripts/infer-quilt-config.d.ts +50 -0
  79. package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
  80. package/dist/scripts/infer-quilt-config.js +353 -0
  81. package/dist/scripts/infer-quilt-config.js.map +1 -0
  82. package/dist/scripts/install-wizard.d.ts +34 -0
  83. package/dist/scripts/install-wizard.d.ts.map +1 -0
  84. package/dist/scripts/install-wizard.js +719 -0
  85. package/dist/scripts/install-wizard.js.map +1 -0
  86. package/dist/scripts/sync-secrets.d.ts +63 -0
  87. package/dist/scripts/sync-secrets.d.ts.map +1 -0
  88. package/dist/scripts/sync-secrets.js +424 -0
  89. package/dist/scripts/sync-secrets.js.map +1 -0
  90. package/env.template +60 -47
  91. package/package.json +38 -26
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Configuration Diagnostic Logging
3
+ *
4
+ * Provides comprehensive logging for configuration operations:
5
+ * - Configuration sources tracking
6
+ * - Operation audit trail
7
+ * - Troubleshooting insights
8
+ * - Performance metrics
9
+ *
10
+ * @module lib/config-logger
11
+ */
12
+ /**
13
+ * Log level enumeration
14
+ */
15
+ export declare enum LogLevel {
16
+ DEBUG = "DEBUG",
17
+ INFO = "INFO",
18
+ WARN = "WARN",
19
+ ERROR = "ERROR"
20
+ }
21
+ /**
22
+ * Log entry structure
23
+ */
24
+ export interface LogEntry {
25
+ timestamp: string;
26
+ level: LogLevel;
27
+ operation: string;
28
+ message: string;
29
+ data?: Record<string, unknown>;
30
+ source?: string;
31
+ profileName?: string;
32
+ duration?: number;
33
+ }
34
+ /**
35
+ * Configuration operation types
36
+ */
37
+ export declare enum ConfigOperation {
38
+ READ = "read",
39
+ WRITE = "write",
40
+ VALIDATE = "validate",
41
+ MERGE = "merge",
42
+ SYNC_SECRETS = "sync-secrets",
43
+ INFER_CONFIG = "infer-config",
44
+ CREATE_PROFILE = "create-profile",
45
+ DELETE_PROFILE = "delete-profile"
46
+ }
47
+ /**
48
+ * Configuration logger for diagnostic and audit purposes
49
+ */
50
+ export declare class ConfigLogger {
51
+ private logFile;
52
+ private enableConsole;
53
+ private minLogLevel;
54
+ /**
55
+ * Creates a new configuration logger
56
+ *
57
+ * @param options - Logger configuration options
58
+ */
59
+ constructor(options?: {
60
+ logFile?: string;
61
+ enableConsole?: boolean;
62
+ minLogLevel?: LogLevel;
63
+ });
64
+ /**
65
+ * Gets log level priority for comparison
66
+ *
67
+ * @param level - Log level
68
+ * @returns Priority number (higher = more severe)
69
+ */
70
+ private getLogLevelPriority;
71
+ /**
72
+ * Checks if log level should be output
73
+ *
74
+ * @param level - Log level to check
75
+ * @returns True if should log
76
+ */
77
+ private shouldLog;
78
+ /**
79
+ * Formats log entry for output
80
+ *
81
+ * @param entry - Log entry
82
+ * @returns Formatted log string
83
+ */
84
+ private formatLogEntry;
85
+ /**
86
+ * Writes log entry to file and console
87
+ *
88
+ * @param entry - Log entry to write
89
+ */
90
+ private writeLog;
91
+ /**
92
+ * Logs a debug message
93
+ *
94
+ * @param operation - Configuration operation
95
+ * @param message - Log message
96
+ * @param data - Additional data
97
+ */
98
+ debug(operation: ConfigOperation | string, message: string, data?: Record<string, unknown>): void;
99
+ /**
100
+ * Logs an info message
101
+ *
102
+ * @param operation - Configuration operation
103
+ * @param message - Log message
104
+ * @param data - Additional data
105
+ */
106
+ info(operation: ConfigOperation | string, message: string, data?: Record<string, unknown>): void;
107
+ /**
108
+ * Logs a warning message
109
+ *
110
+ * @param operation - Configuration operation
111
+ * @param message - Log message
112
+ * @param data - Additional data
113
+ */
114
+ warn(operation: ConfigOperation | string, message: string, data?: Record<string, unknown>): void;
115
+ /**
116
+ * Logs an error message
117
+ *
118
+ * @param operation - Configuration operation
119
+ * @param message - Log message
120
+ * @param data - Additional data
121
+ */
122
+ error(operation: ConfigOperation | string, message: string, data?: Record<string, unknown>): void;
123
+ /**
124
+ * Logs configuration operation with timing
125
+ *
126
+ * @param operation - Configuration operation
127
+ * @param profileName - Profile name
128
+ * @param source - Configuration source
129
+ * @param fn - Function to execute and time
130
+ * @returns Result of the function
131
+ */
132
+ logOperation<T>(operation: ConfigOperation, profileName: string, source: string, fn: () => Promise<T> | T): Promise<T>;
133
+ /**
134
+ * Logs configuration read operation
135
+ *
136
+ * @param profileName - Profile name
137
+ * @param configType - Configuration type
138
+ * @param success - Whether read was successful
139
+ * @param source - Configuration source
140
+ */
141
+ logRead(profileName: string, configType: string, success: boolean, source?: string): void;
142
+ /**
143
+ * Logs configuration write operation
144
+ *
145
+ * @param profileName - Profile name
146
+ * @param configType - Configuration type
147
+ * @param success - Whether write was successful
148
+ * @param source - Configuration source
149
+ */
150
+ logWrite(profileName: string, configType: string, success: boolean, source?: string): void;
151
+ /**
152
+ * Logs configuration validation
153
+ *
154
+ * @param profileName - Profile name
155
+ * @param isValid - Whether configuration is valid
156
+ * @param errors - Validation errors
157
+ */
158
+ logValidation(profileName: string, isValid: boolean, errors?: string[]): void;
159
+ /**
160
+ * Logs secrets sync operation
161
+ *
162
+ * @param profileName - Profile name
163
+ * @param secretArn - Secret ARN
164
+ * @param action - Action performed (created/updated/skipped)
165
+ */
166
+ logSecretsSync(profileName: string, secretArn: string, action: string): void;
167
+ /**
168
+ * Gets the log file path
169
+ *
170
+ * @returns Log file path
171
+ */
172
+ getLogFile(): string;
173
+ }
174
+ /**
175
+ * Gets or creates the global configuration logger
176
+ *
177
+ * @param options - Logger options (only used on first call)
178
+ * @returns Configuration logger instance
179
+ */
180
+ export declare function getConfigLogger(options?: {
181
+ logFile?: string;
182
+ enableConsole?: boolean;
183
+ minLogLevel?: LogLevel;
184
+ }): ConfigLogger;
185
+ /**
186
+ * Sets the global configuration logger
187
+ *
188
+ * @param logger - Logger instance
189
+ */
190
+ export declare function setConfigLogger(logger: ConfigLogger): void;
191
+ //# sourceMappingURL=config-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-logger.d.ts","sourceRoot":"","sources":["../../lib/config-logger.ts"],"names":[],"mappings":"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"}
@@ -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"}