@quiltdata/benchling-webhook 0.5.4 → 0.6.1-20251104T043302Z
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +295 -12
- package/dist/bin/benchling-webhook.d.ts +1 -1
- package/dist/bin/benchling-webhook.d.ts.map +1 -1
- package/dist/bin/benchling-webhook.js +12 -22
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/cdk-dev.js +59 -3
- package/dist/bin/cli.js +27 -9
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/commands/deploy.d.ts +6 -2
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +151 -90
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/commands/setup-wizard.d.ts +22 -0
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -0
- package/dist/bin/commands/setup-wizard.js +47 -0
- package/dist/bin/commands/setup-wizard.js.map +1 -0
- package/dist/bin/config-profiles.d.ts +59 -0
- package/dist/bin/config-profiles.d.ts.map +1 -0
- package/dist/bin/config-profiles.js +272 -0
- package/dist/bin/config-profiles.js.map +1 -0
- package/dist/bin/create-secret.d.ts +25 -0
- package/dist/bin/create-secret.d.ts.map +1 -0
- package/dist/bin/create-secret.js +239 -0
- package/dist/bin/create-secret.js.map +1 -0
- package/dist/lib/benchling-auth-validator.d.ts +65 -0
- package/dist/lib/benchling-auth-validator.d.ts.map +1 -0
- package/dist/lib/benchling-auth-validator.js +213 -0
- package/dist/lib/benchling-auth-validator.js.map +1 -0
- package/dist/lib/benchling-webhook-stack.d.ts +13 -10
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +25 -69
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/config-logger.d.ts +191 -0
- package/dist/lib/config-logger.d.ts.map +1 -0
- package/dist/lib/config-logger.js +372 -0
- package/dist/lib/config-logger.js.map +1 -0
- package/dist/lib/configuration-saver.d.ts +75 -0
- package/dist/lib/configuration-saver.d.ts.map +1 -0
- package/dist/lib/configuration-saver.js +145 -0
- package/dist/lib/configuration-saver.js.map +1 -0
- package/dist/lib/configuration-validator.d.ts +63 -0
- package/dist/lib/configuration-validator.d.ts.map +1 -0
- package/dist/lib/configuration-validator.js +136 -0
- package/dist/lib/configuration-validator.js.map +1 -0
- package/dist/lib/configuration-wizard.d.ts +52 -0
- package/dist/lib/configuration-wizard.d.ts.map +1 -0
- package/dist/lib/configuration-wizard.js +193 -0
- package/dist/lib/configuration-wizard.js.map +1 -0
- package/dist/lib/fargate-service.d.ts +18 -9
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +177 -61
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/quilt-config-resolver.d.ts +53 -0
- package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
- package/dist/lib/quilt-config-resolver.js +100 -0
- package/dist/lib/quilt-config-resolver.js.map +1 -0
- package/dist/lib/s3-bucket-validator.d.ts +76 -0
- package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
- package/dist/lib/s3-bucket-validator.js +237 -0
- package/dist/lib/s3-bucket-validator.js.map +1 -0
- package/dist/lib/types/config.d.ts +398 -0
- package/dist/lib/types/config.d.ts.map +1 -0
- package/dist/lib/types/config.js +11 -0
- package/dist/lib/types/config.js.map +1 -0
- package/dist/lib/utils/config-loader.d.ts +48 -0
- package/dist/lib/utils/config-loader.d.ts.map +1 -0
- package/dist/lib/utils/config-loader.js +109 -0
- package/dist/lib/utils/config-loader.js.map +1 -0
- package/dist/lib/utils/config-resolver.d.ts +138 -0
- package/dist/lib/utils/config-resolver.d.ts.map +1 -0
- package/dist/lib/utils/config-resolver.js +272 -0
- package/dist/lib/utils/config-resolver.js.map +1 -0
- package/dist/lib/utils/config.d.ts +50 -0
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +86 -0
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/secrets.d.ts +174 -0
- package/dist/lib/utils/secrets.d.ts.map +1 -0
- package/dist/lib/utils/secrets.js +351 -0
- package/dist/lib/utils/secrets.js.map +1 -0
- package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
- package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
- package/dist/lib/xdg-cli-wrapper.js +288 -0
- package/dist/lib/xdg-cli-wrapper.js.map +1 -0
- package/dist/lib/xdg-config.d.ts +187 -0
- package/dist/lib/xdg-config.d.ts.map +1 -0
- package/dist/lib/xdg-config.js +562 -0
- package/dist/lib/xdg-config.js.map +1 -0
- package/dist/package.json +34 -26
- package/dist/scripts/config-health-check.d.ts +78 -0
- package/dist/scripts/config-health-check.d.ts.map +1 -0
- package/dist/scripts/config-health-check.js +559 -0
- package/dist/scripts/config-health-check.js.map +1 -0
- package/dist/scripts/infer-quilt-config.d.ts +50 -0
- package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
- package/dist/scripts/infer-quilt-config.js +353 -0
- package/dist/scripts/infer-quilt-config.js.map +1 -0
- package/dist/scripts/install-wizard.d.ts +34 -0
- package/dist/scripts/install-wizard.d.ts.map +1 -0
- package/dist/scripts/install-wizard.js +719 -0
- package/dist/scripts/install-wizard.js.map +1 -0
- package/dist/scripts/sync-secrets.d.ts +63 -0
- package/dist/scripts/sync-secrets.d.ts.map +1 -0
- package/dist/scripts/sync-secrets.js +424 -0
- package/dist/scripts/sync-secrets.js.map +1 -0
- package/env.template +60 -47
- package/package.json +34 -26
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../lib/utils/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Wrapper for Python XDG CLI
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe access to the Python XDG configuration CLI from TypeScript.
|
|
5
|
+
* This ensures consistency by delegating all XDG operations to the Python implementation.
|
|
6
|
+
*
|
|
7
|
+
* @module lib/xdg-cli-wrapper
|
|
8
|
+
*/
|
|
9
|
+
import type { CompleteConfig, DerivedConfig, UserConfig, DeploymentConfig, ProfileName, ConfigType } from "./types/config";
|
|
10
|
+
/**
|
|
11
|
+
* CLI execution options
|
|
12
|
+
*/
|
|
13
|
+
interface CLIOptions {
|
|
14
|
+
profile?: ProfileName;
|
|
15
|
+
type?: ConfigType;
|
|
16
|
+
validate?: boolean;
|
|
17
|
+
backup?: boolean;
|
|
18
|
+
pretty?: boolean;
|
|
19
|
+
verbose?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Base class for XDG CLI errors
|
|
23
|
+
*/
|
|
24
|
+
export declare class XDGCLIError extends Error {
|
|
25
|
+
readonly command: string;
|
|
26
|
+
readonly exitCode: number;
|
|
27
|
+
readonly stderr: string;
|
|
28
|
+
constructor(message: string, command: string, exitCode: number, stderr: string);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* XDG CLI Wrapper Class
|
|
32
|
+
*
|
|
33
|
+
* Provides TypeScript interface to Python XDG CLI operations.
|
|
34
|
+
*/
|
|
35
|
+
export declare class XDGCLIWrapper {
|
|
36
|
+
/**
|
|
37
|
+
* Read configuration from XDG storage
|
|
38
|
+
*
|
|
39
|
+
* @param options - Read options
|
|
40
|
+
* @returns Configuration data
|
|
41
|
+
*/
|
|
42
|
+
static read<T = UserConfig>(options?: CLIOptions): T;
|
|
43
|
+
/**
|
|
44
|
+
* Write configuration to XDG storage
|
|
45
|
+
*
|
|
46
|
+
* @param data - Configuration data to write
|
|
47
|
+
* @param options - Write options
|
|
48
|
+
*/
|
|
49
|
+
static write(data: any, options?: CLIOptions): void;
|
|
50
|
+
/**
|
|
51
|
+
* Merge data into existing configuration
|
|
52
|
+
*
|
|
53
|
+
* @param data - Data to merge
|
|
54
|
+
* @param options - Merge options
|
|
55
|
+
*/
|
|
56
|
+
static merge(data: any, options?: CLIOptions): void;
|
|
57
|
+
/**
|
|
58
|
+
* Validate configuration against schema
|
|
59
|
+
*
|
|
60
|
+
* @param options - Validation options
|
|
61
|
+
* @returns True if valid, false otherwise
|
|
62
|
+
*/
|
|
63
|
+
static validate(options?: CLIOptions): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* List all available profiles
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of profile names
|
|
68
|
+
*/
|
|
69
|
+
static listProfiles(): ProfileName[];
|
|
70
|
+
/**
|
|
71
|
+
* Export configuration as JSON
|
|
72
|
+
*
|
|
73
|
+
* @param options - Export options
|
|
74
|
+
* @returns Configuration data
|
|
75
|
+
*/
|
|
76
|
+
static export<T = CompleteConfig>(options?: CLIOptions): T;
|
|
77
|
+
/**
|
|
78
|
+
* Get a specific configuration field value
|
|
79
|
+
*
|
|
80
|
+
* @param key - Field key (supports dot notation)
|
|
81
|
+
* @param options - Get options
|
|
82
|
+
* @returns Field value
|
|
83
|
+
*/
|
|
84
|
+
static get(key: string, options?: CLIOptions & {
|
|
85
|
+
default?: string;
|
|
86
|
+
}): any;
|
|
87
|
+
/**
|
|
88
|
+
* Set a specific configuration field value
|
|
89
|
+
*
|
|
90
|
+
* @param key - Field key (supports dot notation)
|
|
91
|
+
* @param value - Value to set
|
|
92
|
+
* @param options - Set options
|
|
93
|
+
*/
|
|
94
|
+
static set(key: string, value: any, options?: CLIOptions): void;
|
|
95
|
+
/**
|
|
96
|
+
* Read user configuration
|
|
97
|
+
*/
|
|
98
|
+
static readUser(profile?: ProfileName): UserConfig;
|
|
99
|
+
/**
|
|
100
|
+
* Read derived configuration
|
|
101
|
+
*/
|
|
102
|
+
static readDerived(profile?: ProfileName): DerivedConfig;
|
|
103
|
+
/**
|
|
104
|
+
* Read deployment configuration
|
|
105
|
+
*/
|
|
106
|
+
static readDeploy(profile?: ProfileName): DeploymentConfig;
|
|
107
|
+
/**
|
|
108
|
+
* Read complete merged configuration
|
|
109
|
+
*/
|
|
110
|
+
static readComplete(profile?: ProfileName): CompleteConfig;
|
|
111
|
+
}
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=xdg-cli-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdg-cli-wrapper.d.ts","sourceRoot":"","sources":["../../lib/xdg-cli-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3H;;GAEG;AACH,UAAU,UAAU;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAGd,OAAO,EAAE,MAAM;aACf,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBAH9B,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKrC;AA+BD;;;;GAIG;AACH,qBAAa,aAAa;IACtB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,CAAC;IAkBxD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI;IAmBvD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI;IAmBvD;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO;IAqBlD;;;;OAIG;IACH,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE;IAOpC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,OAAO,GAAE,UAAe,GAAG,CAAC;IAe9D;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAU,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,GAAG;IAuB7E;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI;IAoBnE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,WAAuB,GAAG,UAAU;IAI7D;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,WAAuB,GAAG,aAAa;IAInE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,GAAE,WAAuB,GAAG,gBAAgB;IAIrE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,GAAE,WAAuB,GAAG,cAAc;CAGxE"}
|
|
@@ -0,0 +1,288 @@
|
|
|
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 stderr = error.stderr?.toString() || error.message;
|
|
82
|
+
const exitCode = error.status || 1;
|
|
83
|
+
throw new XDGCLIError(`XDG CLI command failed: ${command}`, command, exitCode, stderr);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* XDG CLI Wrapper Class
|
|
88
|
+
*
|
|
89
|
+
* Provides TypeScript interface to Python XDG CLI operations.
|
|
90
|
+
*/
|
|
91
|
+
class XDGCLIWrapper {
|
|
92
|
+
/**
|
|
93
|
+
* Read configuration from XDG storage
|
|
94
|
+
*
|
|
95
|
+
* @param options - Read options
|
|
96
|
+
* @returns Configuration data
|
|
97
|
+
*/
|
|
98
|
+
static read(options = {}) {
|
|
99
|
+
const args = ["read"];
|
|
100
|
+
if (options.profile) {
|
|
101
|
+
args.push("--profile", options.profile);
|
|
102
|
+
}
|
|
103
|
+
if (options.type) {
|
|
104
|
+
args.push("--type", options.type);
|
|
105
|
+
}
|
|
106
|
+
if (options.validate) {
|
|
107
|
+
args.push("--validate");
|
|
108
|
+
}
|
|
109
|
+
args.push("--compact"); // Always use compact for parsing
|
|
110
|
+
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
111
|
+
return JSON.parse(output);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Write configuration to XDG storage
|
|
115
|
+
*
|
|
116
|
+
* @param data - Configuration data to write
|
|
117
|
+
* @param options - Write options
|
|
118
|
+
*/
|
|
119
|
+
static write(data, options = {}) {
|
|
120
|
+
const args = ["write", JSON.stringify(data)];
|
|
121
|
+
if (options.profile) {
|
|
122
|
+
args.push("--profile", options.profile);
|
|
123
|
+
}
|
|
124
|
+
if (options.type) {
|
|
125
|
+
args.push("--type", options.type);
|
|
126
|
+
}
|
|
127
|
+
if (options.validate !== false) {
|
|
128
|
+
args.push("--validate");
|
|
129
|
+
}
|
|
130
|
+
if (options.backup !== false) {
|
|
131
|
+
args.push("--backup");
|
|
132
|
+
}
|
|
133
|
+
executeCLI(args, { verbose: options.verbose });
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Merge data into existing configuration
|
|
137
|
+
*
|
|
138
|
+
* @param data - Data to merge
|
|
139
|
+
* @param options - Merge options
|
|
140
|
+
*/
|
|
141
|
+
static merge(data, options = {}) {
|
|
142
|
+
const args = ["merge", JSON.stringify(data)];
|
|
143
|
+
if (options.profile) {
|
|
144
|
+
args.push("--profile", options.profile);
|
|
145
|
+
}
|
|
146
|
+
if (options.type) {
|
|
147
|
+
args.push("--type", options.type);
|
|
148
|
+
}
|
|
149
|
+
if (options.validate !== false) {
|
|
150
|
+
args.push("--validate");
|
|
151
|
+
}
|
|
152
|
+
if (options.backup !== false) {
|
|
153
|
+
args.push("--backup");
|
|
154
|
+
}
|
|
155
|
+
executeCLI(args, { verbose: options.verbose });
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Validate configuration against schema
|
|
159
|
+
*
|
|
160
|
+
* @param options - Validation options
|
|
161
|
+
* @returns True if valid, false otherwise
|
|
162
|
+
*/
|
|
163
|
+
static validate(options = {}) {
|
|
164
|
+
const args = ["validate"];
|
|
165
|
+
if (options.profile) {
|
|
166
|
+
args.push("--profile", options.profile);
|
|
167
|
+
}
|
|
168
|
+
if (options.type) {
|
|
169
|
+
args.push("--type", options.type);
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
executeCLI(args, { verbose: options.verbose });
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (error instanceof XDGCLIError) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* List all available profiles
|
|
184
|
+
*
|
|
185
|
+
* @returns Array of profile names
|
|
186
|
+
*/
|
|
187
|
+
static listProfiles() {
|
|
188
|
+
const output = executeCLI(["list"], { captureStdout: true });
|
|
189
|
+
// Parse output: "Available profiles:\n default\n dev\n..."
|
|
190
|
+
const lines = output.split("\n").filter((line) => line.trim() && !line.includes("Available profiles"));
|
|
191
|
+
return lines.map((line) => line.trim().split(/\s+/)[0]);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Export configuration as JSON
|
|
195
|
+
*
|
|
196
|
+
* @param options - Export options
|
|
197
|
+
* @returns Configuration data
|
|
198
|
+
*/
|
|
199
|
+
static export(options = {}) {
|
|
200
|
+
const args = ["export"];
|
|
201
|
+
if (options.profile) {
|
|
202
|
+
args.push("--profile", options.profile);
|
|
203
|
+
}
|
|
204
|
+
if (options.type) {
|
|
205
|
+
args.push("--type", options.type);
|
|
206
|
+
}
|
|
207
|
+
args.push("--compact");
|
|
208
|
+
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
209
|
+
return JSON.parse(output);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get a specific configuration field value
|
|
213
|
+
*
|
|
214
|
+
* @param key - Field key (supports dot notation)
|
|
215
|
+
* @param options - Get options
|
|
216
|
+
* @returns Field value
|
|
217
|
+
*/
|
|
218
|
+
static get(key, options = {}) {
|
|
219
|
+
const args = ["get", key];
|
|
220
|
+
if (options.profile) {
|
|
221
|
+
args.push("--profile", options.profile);
|
|
222
|
+
}
|
|
223
|
+
if (options.type) {
|
|
224
|
+
args.push("--type", options.type);
|
|
225
|
+
}
|
|
226
|
+
if (options.default) {
|
|
227
|
+
args.push("--default", options.default);
|
|
228
|
+
}
|
|
229
|
+
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
230
|
+
// Try to parse as JSON, otherwise return as string
|
|
231
|
+
try {
|
|
232
|
+
return JSON.parse(output.trim());
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return output.trim();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Set a specific configuration field value
|
|
240
|
+
*
|
|
241
|
+
* @param key - Field key (supports dot notation)
|
|
242
|
+
* @param value - Value to set
|
|
243
|
+
* @param options - Set options
|
|
244
|
+
*/
|
|
245
|
+
static set(key, value, options = {}) {
|
|
246
|
+
const isObject = typeof value === "object";
|
|
247
|
+
const args = ["set", key, isObject ? JSON.stringify(value) : String(value)];
|
|
248
|
+
if (options.profile) {
|
|
249
|
+
args.push("--profile", options.profile);
|
|
250
|
+
}
|
|
251
|
+
if (options.type) {
|
|
252
|
+
args.push("--type", options.type);
|
|
253
|
+
}
|
|
254
|
+
if (isObject) {
|
|
255
|
+
args.push("--json");
|
|
256
|
+
}
|
|
257
|
+
if (options.backup !== false) {
|
|
258
|
+
args.push("--backup");
|
|
259
|
+
}
|
|
260
|
+
executeCLI(args, { verbose: options.verbose });
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Read user configuration
|
|
264
|
+
*/
|
|
265
|
+
static readUser(profile = "default") {
|
|
266
|
+
return this.read({ profile, type: "user" });
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Read derived configuration
|
|
270
|
+
*/
|
|
271
|
+
static readDerived(profile = "default") {
|
|
272
|
+
return this.read({ profile, type: "derived" });
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Read deployment configuration
|
|
276
|
+
*/
|
|
277
|
+
static readDeploy(profile = "default") {
|
|
278
|
+
return this.read({ profile, type: "deploy" });
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Read complete merged configuration
|
|
282
|
+
*/
|
|
283
|
+
static readComplete(profile = "default") {
|
|
284
|
+
return this.export({ profile, type: "complete" });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.XDGCLIWrapper = XDGCLIWrapper;
|
|
288
|
+
//# sourceMappingURL=xdg-cli-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdg-cli-wrapper.js","sourceRoot":"","sources":["../../lib/xdg-cli-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XDG Configuration Management
|
|
3
|
+
*
|
|
4
|
+
* Provides XDG-compliant configuration file management for the Benchling Webhook system.
|
|
5
|
+
* Implements a three-file configuration model:
|
|
6
|
+
* - User configuration: User-provided default settings
|
|
7
|
+
* - Derived configuration: CLI-inferred configuration
|
|
8
|
+
* - Deployment configuration: Deployment-specific artifacts
|
|
9
|
+
*
|
|
10
|
+
* Supports multiple named profiles (e.g., "default", "dev", "prod") for flexible configuration management.
|
|
11
|
+
*
|
|
12
|
+
* @module xdg-config
|
|
13
|
+
*/
|
|
14
|
+
import { ConfigType, ProfileName, XDGConfigPaths, ConfigSet, ConfigProfile } from "./types/config";
|
|
15
|
+
/**
|
|
16
|
+
* Base configuration structure (for backward compatibility)
|
|
17
|
+
*/
|
|
18
|
+
export interface BaseConfig {
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export type { ConfigType, XDGConfigPaths, ConfigSet };
|
|
22
|
+
/**
|
|
23
|
+
* XDG Configuration Manager
|
|
24
|
+
*
|
|
25
|
+
* Manages XDG-compliant configuration files for the Benchling Webhook system.
|
|
26
|
+
*/
|
|
27
|
+
export declare class XDGConfig {
|
|
28
|
+
private readonly baseDir;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new XDG Configuration Manager
|
|
31
|
+
*
|
|
32
|
+
* @param baseDir - Base configuration directory (defaults to ~/.config/benchling-webhook)
|
|
33
|
+
*/
|
|
34
|
+
constructor(baseDir?: string);
|
|
35
|
+
/**
|
|
36
|
+
* Gets the default XDG base directory
|
|
37
|
+
*
|
|
38
|
+
* @returns The default base directory path
|
|
39
|
+
*/
|
|
40
|
+
private getDefaultBaseDir;
|
|
41
|
+
/**
|
|
42
|
+
* Expands home directory in a path
|
|
43
|
+
*
|
|
44
|
+
* @param path - Path potentially containing ~ for home directory
|
|
45
|
+
* @returns Expanded absolute path
|
|
46
|
+
*/
|
|
47
|
+
private static expandHomeDir;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the configuration file paths
|
|
50
|
+
*
|
|
51
|
+
* @returns Object containing paths to all configuration files
|
|
52
|
+
*/
|
|
53
|
+
static getPaths(): XDGConfigPaths;
|
|
54
|
+
/**
|
|
55
|
+
* Gets the configuration file paths for this instance
|
|
56
|
+
*
|
|
57
|
+
* @returns Object containing paths to all configuration files
|
|
58
|
+
*/
|
|
59
|
+
getPaths(): XDGConfigPaths;
|
|
60
|
+
/**
|
|
61
|
+
* Ensures all required configuration directories exist
|
|
62
|
+
*
|
|
63
|
+
* Creates the base configuration directory and subdirectories if they don't exist.
|
|
64
|
+
*
|
|
65
|
+
* @throws {Error} If directory creation fails
|
|
66
|
+
*/
|
|
67
|
+
ensureDirectories(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the file path for a specific configuration type
|
|
70
|
+
*
|
|
71
|
+
* @param configType - Type of configuration to read
|
|
72
|
+
* @returns Absolute path to the configuration file
|
|
73
|
+
*/
|
|
74
|
+
private getConfigPath;
|
|
75
|
+
/**
|
|
76
|
+
* Reads and parses a configuration file with schema validation
|
|
77
|
+
*
|
|
78
|
+
* @param configType - Type of configuration to read ("user", "derived", or "deploy")
|
|
79
|
+
* @returns Parsed configuration object
|
|
80
|
+
* @throws {Error} If file not found, invalid JSON, or schema validation fails
|
|
81
|
+
*/
|
|
82
|
+
readConfig(configType: ConfigType): BaseConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Gets the backup file path for a configuration type
|
|
85
|
+
*
|
|
86
|
+
* @param configType - Type of configuration
|
|
87
|
+
* @returns Backup file path
|
|
88
|
+
*/
|
|
89
|
+
getBackupPath(configType: ConfigType): string;
|
|
90
|
+
/**
|
|
91
|
+
* Validates configuration against schema
|
|
92
|
+
*
|
|
93
|
+
* @param config - Configuration object to validate
|
|
94
|
+
* @throws {Error} If validation fails
|
|
95
|
+
*/
|
|
96
|
+
private validateConfigSchema;
|
|
97
|
+
/**
|
|
98
|
+
* Writes a configuration file atomically with backup
|
|
99
|
+
*
|
|
100
|
+
* Uses a temporary file and rename operation for atomic writes.
|
|
101
|
+
* Creates a backup of the existing file before overwriting.
|
|
102
|
+
*
|
|
103
|
+
* @param configType - Type of configuration to write ("user", "derived", or "deploy")
|
|
104
|
+
* @param config - Configuration object to write
|
|
105
|
+
* @throws {Error} If validation fails or write operation fails
|
|
106
|
+
*/
|
|
107
|
+
writeConfig(configType: ConfigType, config: BaseConfig): void;
|
|
108
|
+
/**
|
|
109
|
+
* Merges multiple configuration sources with priority order
|
|
110
|
+
*
|
|
111
|
+
* Merges configurations in priority order (user → derived → deploy),
|
|
112
|
+
* where later configurations override earlier ones.
|
|
113
|
+
* Uses deep merge to handle nested objects.
|
|
114
|
+
*
|
|
115
|
+
* @param configs - Configuration set to merge
|
|
116
|
+
* @returns Merged configuration object
|
|
117
|
+
*/
|
|
118
|
+
mergeConfigs(configs: ConfigSet): BaseConfig;
|
|
119
|
+
/**
|
|
120
|
+
* Gets the profile directory path
|
|
121
|
+
*
|
|
122
|
+
* @param profileName - Profile name (defaults to "default")
|
|
123
|
+
* @returns Profile directory path
|
|
124
|
+
*/
|
|
125
|
+
getProfileDir(profileName?: ProfileName): string;
|
|
126
|
+
/**
|
|
127
|
+
* Gets configuration file paths for a specific profile
|
|
128
|
+
*
|
|
129
|
+
* @param profileName - Profile name (defaults to "default")
|
|
130
|
+
* @returns Configuration file paths for the profile
|
|
131
|
+
*/
|
|
132
|
+
getProfilePaths(profileName?: ProfileName): XDGConfigPaths;
|
|
133
|
+
/**
|
|
134
|
+
* Ensures profile directories exist
|
|
135
|
+
*
|
|
136
|
+
* @param profileName - Profile name (defaults to "default")
|
|
137
|
+
*/
|
|
138
|
+
ensureProfileDirectories(profileName?: ProfileName): void;
|
|
139
|
+
/**
|
|
140
|
+
* Lists all available profiles
|
|
141
|
+
*
|
|
142
|
+
* @returns Array of profile names
|
|
143
|
+
*/
|
|
144
|
+
listProfiles(): ProfileName[];
|
|
145
|
+
/**
|
|
146
|
+
* Checks if a profile exists
|
|
147
|
+
*
|
|
148
|
+
* @param profileName - Profile name to check
|
|
149
|
+
* @returns True if profile exists, false otherwise
|
|
150
|
+
*/
|
|
151
|
+
profileExists(profileName: ProfileName): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Reads configuration for a specific profile
|
|
154
|
+
*
|
|
155
|
+
* @param configType - Type of configuration to read
|
|
156
|
+
* @param profileName - Profile name (defaults to "default")
|
|
157
|
+
* @returns Parsed configuration object
|
|
158
|
+
* @throws {Error} If file not found or validation fails
|
|
159
|
+
*/
|
|
160
|
+
readProfileConfig(configType: ConfigType, profileName?: ProfileName): BaseConfig;
|
|
161
|
+
/**
|
|
162
|
+
* Writes configuration for a specific profile
|
|
163
|
+
*
|
|
164
|
+
* @param configType - Type of configuration to write
|
|
165
|
+
* @param config - Configuration object to write
|
|
166
|
+
* @param profileName - Profile name (defaults to "default")
|
|
167
|
+
* @throws {Error} If validation fails or write operation fails
|
|
168
|
+
*/
|
|
169
|
+
writeProfileConfig(configType: ConfigType, config: BaseConfig, profileName?: ProfileName): void;
|
|
170
|
+
/**
|
|
171
|
+
* Loads a complete profile with all configuration files
|
|
172
|
+
*
|
|
173
|
+
* @param profileName - Profile name (defaults to "default")
|
|
174
|
+
* @returns Complete profile configuration
|
|
175
|
+
*/
|
|
176
|
+
loadProfile(profileName?: ProfileName): ConfigProfile;
|
|
177
|
+
/**
|
|
178
|
+
* Deletes a profile and all its configuration files
|
|
179
|
+
*
|
|
180
|
+
* WARNING: This is a destructive operation!
|
|
181
|
+
*
|
|
182
|
+
* @param profileName - Profile name to delete
|
|
183
|
+
* @throws {Error} If attempting to delete the default profile or if deletion fails
|
|
184
|
+
*/
|
|
185
|
+
deleteProfile(profileName: ProfileName): void;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=xdg-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xdg-config.d.ts","sourceRoot":"","sources":["../../lib/xdg-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,EAIH,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAa,EAChB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAGD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AAyDtD;;;;GAIG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;;OAIG;gBACS,OAAO,CAAC,EAAE,MAAM;IAI5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAK5B;;;;OAIG;WACW,QAAQ,IAAI,cAAc;IAWxC;;;;OAIG;IACI,QAAQ,IAAI,cAAc;IAQjC;;;;;;OAMG;IACI,iBAAiB,IAAI,IAAI;IAmBhC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;;;OAMG;IACI,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAqCrD;;;;;OAKG;IACI,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAKpD;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;;OASG;IACI,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IA0CpE;;;;;;;;;OASG;IACI,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,UAAU;IAyBnD;;;;;OAKG;IACI,aAAa,CAAC,WAAW,GAAE,WAAuB,GAAG,MAAM;IAOlE;;;;;OAKG;IACI,eAAe,CAAC,WAAW,GAAE,WAAuB,GAAG,cAAc;IAU5E;;;;OAIG;IACI,wBAAwB,CAAC,WAAW,GAAE,WAAuB,GAAG,IAAI;IAqB3E;;;;OAIG;IACI,YAAY,IAAI,WAAW,EAAE;IAepC;;;;;OAKG;IACI,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAKvD;;;;;;;OAOG;IACI,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,GAAE,WAAuB,GAAG,UAAU;IA4ClG;;;;;;;OAOG;IACI,kBAAkB,CACrB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,EAClB,WAAW,GAAE,WAAuB,GACrC,IAAI;IAuDP;;;;;OAKG;IACI,WAAW,CAAC,WAAW,GAAE,WAAuB,GAAG,aAAa;IAqCvE;;;;;;;OAOG;IACI,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAevD"}
|