@quiltdata/benchling-webhook 0.7.4-20251107T053446Z → 0.7.4

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 (45) hide show
  1. package/README.md +6 -4
  2. package/dist/bin/cli.js +0 -15
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/bin/commands/get-env.d.ts +16 -0
  5. package/dist/bin/commands/get-env.d.ts.map +1 -0
  6. package/dist/bin/commands/get-env.js +210 -0
  7. package/dist/bin/commands/get-env.js.map +1 -0
  8. package/dist/bin/commands/infer-quilt-config.d.ts +3 -2
  9. package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
  10. package/dist/bin/commands/infer-quilt-config.js +39 -65
  11. package/dist/bin/commands/infer-quilt-config.js.map +1 -1
  12. package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
  13. package/dist/bin/commands/setup-wizard.js +105 -110
  14. package/dist/bin/commands/setup-wizard.js.map +1 -1
  15. package/dist/bin/commands/sync-secrets.d.ts +6 -3
  16. package/dist/bin/commands/sync-secrets.d.ts.map +1 -1
  17. package/dist/bin/commands/sync-secrets.js +14 -6
  18. package/dist/bin/commands/sync-secrets.js.map +1 -1
  19. package/dist/lib/interfaces/config-storage.d.ts +80 -0
  20. package/dist/lib/interfaces/config-storage.d.ts.map +1 -0
  21. package/dist/lib/interfaces/config-storage.js +9 -0
  22. package/dist/lib/interfaces/config-storage.js.map +1 -0
  23. package/dist/lib/utils/stack-inference.d.ts +28 -0
  24. package/dist/lib/utils/stack-inference.d.ts.map +1 -1
  25. package/dist/lib/utils/stack-inference.js +61 -0
  26. package/dist/lib/utils/stack-inference.js.map +1 -1
  27. package/dist/lib/xdg-base.d.ts +306 -0
  28. package/dist/lib/xdg-base.d.ts.map +1 -0
  29. package/dist/lib/xdg-base.js +440 -0
  30. package/dist/lib/xdg-base.js.map +1 -0
  31. package/dist/lib/xdg-config.d.ts +54 -187
  32. package/dist/lib/xdg-config.d.ts.map +1 -1
  33. package/dist/lib/xdg-config.js +83 -342
  34. package/dist/lib/xdg-config.js.map +1 -1
  35. package/dist/package.json +4 -3
  36. package/dist/scripts/list-quilt-stacks.d.ts +14 -0
  37. package/dist/scripts/list-quilt-stacks.d.ts.map +1 -0
  38. package/dist/scripts/list-quilt-stacks.js +96 -0
  39. package/dist/scripts/list-quilt-stacks.js.map +1 -0
  40. package/env.template +79 -0
  41. package/package.json +4 -3
  42. package/dist/bin/commands/config-show.d.ts +0 -14
  43. package/dist/bin/commands/config-show.d.ts.map +0 -1
  44. package/dist/bin/commands/config-show.js +0 -24
  45. package/dist/bin/commands/config-show.js.map +0 -1
@@ -2,15 +2,15 @@
2
2
  /**
3
3
  * XDG Configuration Management (v0.7.0 - BREAKING CHANGE)
4
4
  *
5
- * Complete rewrite with NO backward compatibility with v0.6.x.
5
+ * Filesystem implementation of XDGBase for XDG-compliant configuration management.
6
6
  *
7
- * This module provides XDG-compliant configuration management for the Benchling Webhook system
8
- * with a simplified, profile-first architecture:
7
+ * This module provides filesystem-specific storage primitives for the Benchling Webhook system:
8
+ * - Filesystem-based profile storage in ~/.config/benchling-webhook/
9
+ * - Per-profile deployment tracking
10
+ * - Legacy configuration detection
11
+ * - Atomic writes with automatic backups
9
12
  *
10
- * - Single unified configuration file per profile (`config.json`)
11
- * - Per-profile deployment tracking (`deployments.json`)
12
- * - Profile inheritance support with deep merging
13
- * - Comprehensive validation and helpful error messages
13
+ * All business logic (validation, inheritance, deployment tracking) is handled by XDGBase.
14
14
  *
15
15
  * Directory Structure:
16
16
  * ```
@@ -26,21 +26,16 @@
26
26
  * @module xdg-config
27
27
  * @version 0.7.0
28
28
  */
29
- var __importDefault = (this && this.__importDefault) || function (mod) {
30
- return (mod && mod.__esModule) ? mod : { "default": mod };
31
- };
32
29
  Object.defineProperty(exports, "__esModule", { value: true });
33
30
  exports.XDGConfig = void 0;
34
31
  const fs_1 = require("fs");
35
32
  const path_1 = require("path");
36
33
  const os_1 = require("os");
37
- const ajv_1 = __importDefault(require("ajv"));
38
- const ajv_formats_1 = __importDefault(require("ajv-formats"));
39
- const lodash_merge_1 = __importDefault(require("lodash.merge"));
40
- const config_1 = require("./types/config");
34
+ const xdg_base_1 = require("./xdg-base");
41
35
  /**
42
36
  * XDG Configuration Manager (v0.7.0)
43
37
  *
38
+ * Filesystem-based implementation extending XDGBase.
44
39
  * Manages profile-based configuration with deployment tracking.
45
40
  * NO backward compatibility with v0.6.x configuration files.
46
41
  *
@@ -65,62 +60,29 @@ const config_1 = require("./types/config");
65
60
  * });
66
61
  * ```
67
62
  */
68
- class XDGConfig {
63
+ class XDGConfig extends xdg_base_1.XDGBase {
69
64
  /**
70
65
  * Creates a new XDG Configuration Manager
71
66
  *
72
67
  * @param baseDir - Base configuration directory (defaults to ~/.config/benchling-webhook)
73
68
  */
74
69
  constructor(baseDir) {
70
+ super();
75
71
  this.baseDir = baseDir || this.getDefaultBaseDir();
76
72
  this.ensureBaseDirectoryExists();
77
73
  }
78
- /**
79
- * Gets the default XDG base directory
80
- *
81
- * Respects XDG_CONFIG_HOME environment variable per XDG Base Directory spec.
82
- *
83
- * @returns The default base directory path (~/.config/benchling-webhook or $XDG_CONFIG_HOME/benchling-webhook)
84
- */
85
- getDefaultBaseDir() {
86
- const xdgConfigHome = process.env.XDG_CONFIG_HOME;
87
- if (xdgConfigHome) {
88
- return (0, path_1.resolve)(xdgConfigHome, "benchling-webhook");
89
- }
90
- const home = (0, os_1.homedir)();
91
- return (0, path_1.resolve)(home, ".config", "benchling-webhook");
92
- }
93
- /**
94
- * Ensures the base configuration directory exists
95
- *
96
- * @throws {Error} If directory creation fails
97
- */
98
- ensureBaseDirectoryExists() {
99
- if (!(0, fs_1.existsSync)(this.baseDir)) {
100
- (0, fs_1.mkdirSync)(this.baseDir, { recursive: true });
101
- }
102
- }
103
74
  // ====================================================================
104
- // Configuration Management
75
+ // Abstract Storage Primitives Implementation (Filesystem)
105
76
  // ====================================================================
106
77
  /**
107
- * Reads configuration for a profile
78
+ * Reads raw profile configuration from filesystem without validation
108
79
  *
109
- * @param profile - Profile name (e.g., "default", "dev", "prod")
110
- * @returns Parsed configuration object
111
- * @throws {Error} If profile not found or configuration is invalid
112
- *
113
- * @example
114
- * ```typescript
115
- * const config = xdg.readProfile("default");
116
- * console.log(config.benchling.tenant);
117
- * ```
80
+ * @param profile - Profile name
81
+ * @returns Raw profile configuration
82
+ * @throws {Error} If profile cannot be read
118
83
  */
119
- readProfile(profile) {
84
+ readProfileRaw(profile) {
120
85
  const configPath = this.getProfileConfigPath(profile);
121
- if (!(0, fs_1.existsSync)(configPath)) {
122
- throw new Error(this.buildProfileNotFoundError(profile));
123
- }
124
86
  let fileContent;
125
87
  try {
126
88
  fileContent = (0, fs_1.readFileSync)(configPath, "utf-8");
@@ -135,47 +97,21 @@ class XDGConfig {
135
97
  catch (error) {
136
98
  throw new Error(`Invalid JSON in configuration file: ${configPath}. ${error.message}`);
137
99
  }
138
- // Validate schema
139
- const validation = this.validateProfile(config);
140
- if (!validation.isValid) {
141
- throw new Error(`Invalid configuration in ${configPath}:\n${validation.errors.join("\n")}`);
142
- }
143
100
  return config;
144
101
  }
145
102
  /**
146
- * Writes configuration for a profile
103
+ * Writes raw profile configuration to filesystem without validation
147
104
  *
148
105
  * Creates the profile directory if it doesn't exist.
149
106
  * Performs atomic write with automatic backup.
150
107
  *
151
108
  * @param profile - Profile name
152
- * @param config - Configuration object to write
153
- * @throws {Error} If validation fails or write operation fails
154
- *
155
- * @example
156
- * ```typescript
157
- * xdg.writeProfile("default", {
158
- * quilt: { ... },
159
- * benchling: { ... },
160
- * packages: { ... },
161
- * deployment: { ... },
162
- * _metadata: {
163
- * version: "0.7.0",
164
- * createdAt: new Date().toISOString(),
165
- * updatedAt: new Date().toISOString(),
166
- * source: "wizard"
167
- * }
168
- * });
169
- * ```
109
+ * @param config - Configuration to write
110
+ * @throws {Error} If write fails
170
111
  */
171
- writeProfile(profile, config) {
172
- // Validate configuration before writing
173
- const validation = this.validateProfile(config);
174
- if (!validation.isValid) {
175
- throw new Error(`Invalid configuration:\n${validation.errors.join("\n")}`);
176
- }
112
+ writeProfileRaw(profile, config) {
177
113
  // Ensure profile directory exists
178
- const profileDir = this.getProfileDir(profile);
114
+ const profileDir = this.getProfilePath(profile);
179
115
  if (!(0, fs_1.existsSync)(profileDir)) {
180
116
  (0, fs_1.mkdirSync)(profileDir, { recursive: true });
181
117
  }
@@ -215,46 +151,26 @@ class XDGConfig {
215
151
  }
216
152
  }
217
153
  /**
218
- * Deletes a profile and all its files
219
- *
220
- * WARNING: This is a destructive operation!
221
- * Cannot delete the "default" profile.
154
+ * Deletes profile and all associated data from filesystem
222
155
  *
223
- * @param profile - Profile name to delete
224
- * @throws {Error} If attempting to delete default profile or if deletion fails
225
- *
226
- * @example
227
- * ```typescript
228
- * xdg.deleteProfile("dev");
229
- * ```
156
+ * @param profile - Profile name
157
+ * @throws {Error} If deletion fails
230
158
  */
231
- deleteProfile(profile) {
232
- if (profile === "default") {
233
- throw new Error("Cannot delete the default profile");
234
- }
235
- const profileDir = this.getProfileDir(profile);
236
- if (!(0, fs_1.existsSync)(profileDir)) {
237
- throw new Error(`Profile does not exist: ${profile}`);
238
- }
159
+ deleteProfileRaw(profile) {
160
+ const profileDir = this.getProfilePath(profile);
239
161
  try {
240
162
  (0, fs_1.rmSync)(profileDir, { recursive: true, force: true });
241
163
  }
242
164
  catch (error) {
243
- throw new Error(`Failed to delete profile: ${error.message}`);
165
+ throw new Error(`Failed to delete profile directory: ${error.message}`);
244
166
  }
245
167
  }
246
168
  /**
247
- * Lists all available profiles
169
+ * Lists all profile names from filesystem
248
170
  *
249
171
  * @returns Array of profile names
250
- *
251
- * @example
252
- * ```typescript
253
- * const profiles = xdg.listProfiles();
254
- * console.log(profiles); // ["default", "dev", "prod"]
255
- * ```
256
172
  */
257
- listProfiles() {
173
+ listProfilesRaw() {
258
174
  if (!(0, fs_1.existsSync)(this.baseDir)) {
259
175
  return [];
260
176
  }
@@ -269,47 +185,26 @@ class XDGConfig {
269
185
  });
270
186
  }
271
187
  /**
272
- * Checks if a profile exists
273
- *
274
- * @param profile - Profile name to check
275
- * @returns True if profile exists and has valid config.json, false otherwise
188
+ * Checks if profile exists on filesystem
276
189
  *
277
- * @example
278
- * ```typescript
279
- * if (xdg.profileExists("dev")) {
280
- * const config = xdg.readProfile("dev");
281
- * }
282
- * ```
190
+ * @param profile - Profile name
191
+ * @returns True if profile exists
283
192
  */
284
- profileExists(profile) {
193
+ profileExistsRaw(profile) {
285
194
  const configPath = this.getProfileConfigPath(profile);
286
195
  return (0, fs_1.existsSync)(configPath);
287
196
  }
288
- // ====================================================================
289
- // Deployment Tracking
290
- // ====================================================================
291
197
  /**
292
- * Gets deployment history for a profile
293
- *
294
- * Returns empty history if deployments.json doesn't exist.
198
+ * Reads raw deployment history from filesystem without validation
295
199
  *
296
200
  * @param profile - Profile name
297
- * @returns Deployment history with active deployments and full history
298
- *
299
- * @example
300
- * ```typescript
301
- * const deployments = xdg.getDeployments("default");
302
- * console.log(deployments.active["prod"]); // Active prod deployment
303
- * console.log(deployments.history[0]); // Most recent deployment
304
- * ```
201
+ * @returns Deployment history or null if none exists
202
+ * @throws {Error} If read fails
305
203
  */
306
- getDeployments(profile) {
307
- const deploymentsPath = this.getProfileDeploymentsPath(profile);
204
+ readDeploymentsRaw(profile) {
205
+ const deploymentsPath = this.getDeploymentsPath(profile);
308
206
  if (!(0, fs_1.existsSync)(deploymentsPath)) {
309
- return {
310
- active: {},
311
- history: [],
312
- };
207
+ return null;
313
208
  }
314
209
  let fileContent;
315
210
  try {
@@ -325,63 +220,22 @@ class XDGConfig {
325
220
  catch (error) {
326
221
  throw new Error(`Invalid JSON in deployments file: ${deploymentsPath}. ${error.message}`);
327
222
  }
328
- // Validate schema
329
- const ajv = new ajv_1.default();
330
- (0, ajv_formats_1.default)(ajv);
331
- const validate = ajv.compile(config_1.DeploymentHistorySchema);
332
- const valid = validate(deployments);
333
- if (!valid) {
334
- const errors = validate.errors?.map((err) => `${err.instancePath} ${err.message}`).join(", ");
335
- throw new Error(`Invalid deployments schema in ${deploymentsPath}: ${errors}`);
336
- }
337
223
  return deployments;
338
224
  }
339
225
  /**
340
- * Records a new deployment for a profile
341
- *
342
- * Adds deployment to history and updates active deployment for the stage.
343
- * Creates deployments.json if it doesn't exist.
226
+ * Writes raw deployment history to filesystem without validation
344
227
  *
345
228
  * @param profile - Profile name
346
- * @param deployment - Deployment record to add
347
- *
348
- * @example
349
- * ```typescript
350
- * xdg.recordDeployment("default", {
351
- * stage: "prod",
352
- * timestamp: new Date().toISOString(),
353
- * imageTag: "0.7.0",
354
- * endpoint: "https://abc123.execute-api.us-east-1.amazonaws.com/prod",
355
- * stackName: "BenchlingWebhookStack",
356
- * region: "us-east-1",
357
- * deployedBy: "ernest@example.com",
358
- * commit: "abc123f"
359
- * });
360
- * ```
229
+ * @param history - Deployment history to write
230
+ * @throws {Error} If write fails
361
231
  */
362
- recordDeployment(profile, deployment) {
232
+ writeDeploymentsRaw(profile, history) {
363
233
  // Ensure profile directory exists
364
- const profileDir = this.getProfileDir(profile);
234
+ const profileDir = this.getProfilePath(profile);
365
235
  if (!(0, fs_1.existsSync)(profileDir)) {
366
236
  (0, fs_1.mkdirSync)(profileDir, { recursive: true });
367
237
  }
368
- // Load existing deployments or create new
369
- let deployments;
370
- try {
371
- deployments = this.getDeployments(profile);
372
- }
373
- catch {
374
- deployments = {
375
- active: {},
376
- history: [],
377
- };
378
- }
379
- // Add to history (newest first)
380
- deployments.history.unshift(deployment);
381
- // Update active deployment for this stage
382
- deployments.active[deployment.stage] = deployment;
383
- // Write deployments file
384
- const deploymentsPath = this.getProfileDeploymentsPath(profile);
238
+ const deploymentsPath = this.getDeploymentsPath(profile);
385
239
  const backupPath = `${deploymentsPath}.backup`;
386
240
  // Create backup if file exists
387
241
  if ((0, fs_1.existsSync)(deploymentsPath)) {
@@ -394,7 +248,7 @@ class XDGConfig {
394
248
  }
395
249
  // Write to temporary file first (atomic write)
396
250
  const tempPath = (0, path_1.join)(profileDir, `.deployments.json.tmp-${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`);
397
- const deploymentsJson = JSON.stringify(deployments, null, 4);
251
+ const deploymentsJson = JSON.stringify(history, null, 4);
398
252
  try {
399
253
  (0, fs_1.writeFileSync)(tempPath, deploymentsJson, "utf-8");
400
254
  // Atomic rename (with fallback for cross-device on Windows)
@@ -416,152 +270,41 @@ class XDGConfig {
416
270
  throw new Error(`Failed to write deployments file: ${error.message}`);
417
271
  }
418
272
  }
419
- /**
420
- * Gets the active deployment for a specific stage
421
- *
422
- * @param profile - Profile name
423
- * @param stage - Stage name (e.g., "dev", "prod")
424
- * @returns Active deployment record for the stage, or null if none exists
425
- *
426
- * @example
427
- * ```typescript
428
- * const prodDeployment = xdg.getActiveDeployment("default", "prod");
429
- * if (prodDeployment) {
430
- * console.log("Prod endpoint:", prodDeployment.endpoint);
431
- * }
432
- * ```
433
- */
434
- getActiveDeployment(profile, stage) {
435
- try {
436
- const deployments = this.getDeployments(profile);
437
- return deployments.active[stage] || null;
438
- }
439
- catch {
440
- return null;
441
- }
442
- }
443
273
  // ====================================================================
444
- // Profile Inheritance
274
+ // Filesystem Path Helpers
445
275
  // ====================================================================
446
276
  /**
447
- * Reads profile configuration with inheritance support
448
- *
449
- * If the profile has an `_inherits` field, loads the base profile first
450
- * and deep merges the current profile on top.
451
- *
452
- * Detects and prevents circular inheritance chains.
453
- *
454
- * @param profile - Profile name to read
455
- * @param baseProfile - Optional explicit base profile (overrides `_inherits`)
456
- * @returns Merged configuration with inheritance applied
457
- * @throws {Error} If circular inheritance is detected
277
+ * Gets the default XDG base directory
458
278
  *
459
- * @example
460
- * ```typescript
461
- * // dev/config.json has "_inherits": "default"
462
- * const devConfig = xdg.readProfileWithInheritance("dev");
463
- * // Returns default config deep-merged with dev overrides
464
- * ```
465
- */
466
- readProfileWithInheritance(profile, baseProfile) {
467
- const visited = new Set();
468
- return this.readProfileWithInheritanceInternal(profile, baseProfile, visited);
469
- }
470
- /**
471
- * Internal recursive implementation of profile inheritance
279
+ * Respects XDG_CONFIG_HOME environment variable per XDG Base Directory spec.
472
280
  *
473
- * @param profile - Current profile name
474
- * @param explicitBase - Explicitly specified base profile
475
- * @param visited - Set of visited profiles (for circular detection)
476
- * @returns Merged configuration
477
- * @throws {Error} If circular inheritance is detected
281
+ * @returns The default base directory path (~/.config/benchling-webhook or $XDG_CONFIG_HOME/benchling-webhook)
478
282
  */
479
- readProfileWithInheritanceInternal(profile, explicitBase, visited) {
480
- // Detect circular inheritance
481
- if (visited.has(profile)) {
482
- const chain = Array.from(visited).join(" -> ");
483
- throw new Error(`Circular inheritance detected: ${chain} -> ${profile}`);
484
- }
485
- visited.add(profile);
486
- // Read current profile
487
- const config = this.readProfile(profile);
488
- // Determine base profile
489
- const baseProfileName = explicitBase || config._inherits;
490
- // No inheritance - return as-is
491
- if (!baseProfileName) {
492
- return config;
283
+ getDefaultBaseDir() {
284
+ const xdgConfigHome = process.env.XDG_CONFIG_HOME;
285
+ if (xdgConfigHome) {
286
+ return (0, path_1.resolve)(xdgConfigHome, "benchling-webhook");
493
287
  }
494
- // Load base profile with inheritance
495
- const baseConfig = this.readProfileWithInheritanceInternal(baseProfileName, undefined, visited);
496
- // Deep merge: base config first, then current profile overrides
497
- const merged = this.deepMergeConfigs(baseConfig, config);
498
- // Remove _inherits from final result (it's already applied)
499
- delete merged._inherits;
500
- return merged;
501
- }
502
- /**
503
- * Deep merges two profile configurations
504
- *
505
- * Nested objects are merged recursively.
506
- * Arrays are replaced (not concatenated).
507
- * Current config takes precedence over base config.
508
- *
509
- * @param base - Base configuration
510
- * @param current - Current configuration (takes precedence)
511
- * @returns Merged configuration
512
- */
513
- deepMergeConfigs(base, current) {
514
- return (0, lodash_merge_1.default)({}, base, current);
288
+ const home = (0, os_1.homedir)();
289
+ return (0, path_1.resolve)(home, ".config", "benchling-webhook");
515
290
  }
516
- // ====================================================================
517
- // Validation
518
- // ====================================================================
519
291
  /**
520
- * Validates a profile configuration against the schema
521
- *
522
- * @param config - Configuration object to validate
523
- * @returns Validation result with errors and warnings
292
+ * Ensures the base configuration directory exists
524
293
  *
525
- * @example
526
- * ```typescript
527
- * const validation = xdg.validateProfile(config);
528
- * if (!validation.isValid) {
529
- * console.error("Validation errors:", validation.errors);
530
- * }
531
- * ```
294
+ * @throws {Error} If directory creation fails
532
295
  */
533
- validateProfile(config) {
534
- const ajv = new ajv_1.default({ allErrors: true, strict: false });
535
- (0, ajv_formats_1.default)(ajv);
536
- const validate = ajv.compile(config_1.ProfileConfigSchema);
537
- const valid = validate(config);
538
- if (valid) {
539
- return {
540
- isValid: true,
541
- errors: [],
542
- warnings: [],
543
- };
296
+ ensureBaseDirectoryExists() {
297
+ if (!(0, fs_1.existsSync)(this.baseDir)) {
298
+ (0, fs_1.mkdirSync)(this.baseDir, { recursive: true });
544
299
  }
545
- const errors = validate.errors?.map((err) => {
546
- const path = err.instancePath || "(root)";
547
- return `${path}: ${err.message}`;
548
- }) || [];
549
- return {
550
- isValid: false,
551
- errors,
552
- warnings: [],
553
- };
554
300
  }
555
- // ====================================================================
556
- // Path Helpers
557
- // ====================================================================
558
301
  /**
559
302
  * Gets the directory path for a profile
560
303
  *
561
304
  * @param profile - Profile name
562
305
  * @returns Absolute path to profile directory
563
306
  */
564
- getProfileDir(profile) {
307
+ getProfilePath(profile) {
565
308
  return (0, path_1.join)(this.baseDir, profile);
566
309
  }
567
310
  /**
@@ -571,7 +314,7 @@ class XDGConfig {
571
314
  * @returns Absolute path to config.json
572
315
  */
573
316
  getProfileConfigPath(profile) {
574
- return (0, path_1.join)(this.getProfileDir(profile), "config.json");
317
+ return (0, path_1.join)(this.getProfilePath(profile), "config.json");
575
318
  }
576
319
  /**
577
320
  * Gets the deployments.json path for a profile
@@ -579,28 +322,35 @@ class XDGConfig {
579
322
  * @param profile - Profile name
580
323
  * @returns Absolute path to deployments.json
581
324
  */
582
- getProfileDeploymentsPath(profile) {
583
- return (0, path_1.join)(this.getProfileDir(profile), "deployments.json");
325
+ getDeploymentsPath(profile) {
326
+ return (0, path_1.join)(this.getProfilePath(profile), "deployments.json");
584
327
  }
585
328
  // ====================================================================
586
- // Error Messages
329
+ // Filesystem-Specific Features
587
330
  // ====================================================================
588
331
  /**
589
- * Builds a helpful error message when a profile is not found
590
- *
591
- * Detects legacy v0.6.x configuration files and provides upgrade guidance.
332
+ * Detects legacy v0.6.x configuration files
592
333
  *
593
- * @param profile - Profile name that was not found
594
- * @returns Formatted error message
334
+ * @returns True if legacy files are detected
595
335
  */
596
- buildProfileNotFoundError(profile) {
336
+ detectLegacyConfiguration() {
597
337
  const legacyFiles = [
598
338
  (0, path_1.join)(this.baseDir, "default.json"),
599
339
  (0, path_1.join)(this.baseDir, "deploy.json"),
600
340
  (0, path_1.join)(this.baseDir, "profiles"),
601
341
  ];
602
- const hasLegacyFiles = legacyFiles.some((f) => (0, fs_1.existsSync)(f));
603
- if (hasLegacyFiles) {
342
+ return legacyFiles.some((f) => (0, fs_1.existsSync)(f));
343
+ }
344
+ /**
345
+ * Builds a helpful error message when a profile is not found
346
+ *
347
+ * Overrides base class to add legacy configuration detection.
348
+ *
349
+ * @param profile - Profile name that was not found
350
+ * @returns Formatted error message
351
+ */
352
+ buildProfileNotFoundError(profile) {
353
+ if (this.detectLegacyConfiguration()) {
604
354
  return `
605
355
  Profile not found: ${profile}
606
356
 
@@ -617,16 +367,7 @@ Your old configuration files remain at:
617
367
  You can manually reference these files to re-enter your settings.
618
368
  `.trim();
619
369
  }
620
- return `
621
- Profile not found: ${profile}
622
-
623
- No configuration found for profile: ${profile}
624
-
625
- Run setup wizard to create configuration:
626
- npx @quiltdata/benchling-webhook@latest setup
627
-
628
- Available profiles: ${this.listProfiles().join(", ") || "(none)"}
629
- `.trim();
370
+ return super.buildProfileNotFoundError(profile);
630
371
  }
631
372
  }
632
373
  exports.XDGConfig = XDGConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"xdg-config.js","sourceRoot":"","sources":["../../lib/xdg-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xdg-config.js","sourceRoot":"","sources":["../../lib/xdg-config.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@quiltdata/benchling-webhook",
3
- "version": "0.7.4-20251107T053446Z",
3
+ "version": "0.7.4",
4
4
  "description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
5
5
  "main": "dist/lib/index.js",
6
6
  "types": "dist/lib/index.d.ts",
7
7
  "files": [
8
8
  "dist/",
9
9
  "README.md",
10
- "LICENSE"
10
+ "LICENSE",
11
+ "env.template"
11
12
  ],
12
13
  "bin": {
13
14
  "benchling-webhook": "./dist/bin/cli.js"
@@ -36,7 +37,7 @@
36
37
  "test": "npm run build:typecheck && npm run test:ts && npm run test:python",
37
38
  "test:ci": "npm run build:typecheck && npm run test:ts",
38
39
  "test:dev": "make -C docker test-deployed-dev PROFILE=dev",
39
- "test:local": "make -C docker build && make -C docker test-local PROFILE=dev",
40
+ "test:local": "make -C docker build && make -C docker test-local",
40
41
  "test:prod": "make -C docker test-deployed-prod",
41
42
  "test:python": "make -C docker test-unit",
42
43
  "test:ts": "cross-env NODE_ENV=test jest --maxWorkers=50%",