@quiltdata/benchling-webhook 0.6.3-20251104T182406Z → 0.7.2-20251106T010445Z
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 +166 -5
- package/dist/bin/benchling-webhook.d.ts +2 -16
- package/dist/bin/benchling-webhook.d.ts.map +1 -1
- package/dist/bin/benchling-webhook.js +98 -158
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/cli.js +96 -8
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/{config-profiles.d.ts → commands/config-profiles.d.ts} +10 -9
- package/dist/bin/commands/config-profiles.d.ts.map +1 -0
- package/dist/bin/{config-profiles.js → commands/config-profiles.js} +110 -102
- package/dist/bin/commands/config-profiles.js.map +1 -0
- package/dist/bin/commands/create-secret.d.ts.map +1 -0
- package/dist/bin/commands/create-secret.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +11 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +64 -109
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/{get-env.d.ts → commands/get-env.d.ts} +1 -1
- package/dist/bin/commands/get-env.d.ts.map +1 -0
- package/dist/bin/{get-env.js → commands/get-env.js} +2 -2
- package/dist/bin/commands/get-env.js.map +1 -0
- package/dist/bin/commands/health-check.d.ts +47 -0
- package/dist/bin/commands/health-check.d.ts.map +1 -0
- package/dist/bin/commands/health-check.js +357 -0
- package/dist/bin/commands/health-check.js.map +1 -0
- package/dist/bin/commands/infer-quilt-config.d.ts +50 -0
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -0
- package/dist/bin/commands/infer-quilt-config.js +356 -0
- package/dist/bin/commands/infer-quilt-config.js.map +1 -0
- package/dist/bin/commands/init.d.ts.map +1 -1
- package/dist/bin/commands/init.js +2 -32
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/manifest.d.ts +11 -0
- package/dist/bin/commands/manifest.d.ts.map +1 -1
- package/dist/bin/commands/manifest.js +22 -8
- package/dist/bin/commands/manifest.js.map +1 -1
- package/dist/bin/commands/publish.d.ts.map +1 -0
- package/dist/bin/{publish.js → commands/publish.js} +2 -2
- package/dist/bin/commands/publish.js.map +1 -0
- package/dist/bin/commands/setup-profile.d.ts +29 -0
- package/dist/bin/commands/setup-profile.d.ts.map +1 -0
- package/dist/bin/commands/setup-profile.js +220 -0
- package/dist/bin/commands/setup-profile.js.map +1 -0
- package/dist/bin/commands/setup-wizard.d.ts +26 -11
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +844 -46
- package/dist/bin/commands/setup-wizard.js.map +1 -1
- package/dist/{scripts → bin/commands}/sync-secrets.d.ts +6 -1
- package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
- package/dist/{scripts → bin/commands}/sync-secrets.js +159 -55
- package/dist/bin/commands/sync-secrets.js.map +1 -0
- package/dist/bin/commands/validate.d.ts.map +1 -1
- package/dist/bin/commands/validate.js +2 -12
- package/dist/bin/commands/validate.js.map +1 -1
- package/dist/lib/alb-api-gateway.d.ts +7 -1
- package/dist/lib/alb-api-gateway.d.ts.map +1 -1
- package/dist/lib/alb-api-gateway.js +9 -6
- package/dist/lib/alb-api-gateway.js.map +1 -1
- package/dist/lib/benchling-webhook-stack.d.ts +13 -12
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +43 -30
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +4 -16
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +14 -54
- package/dist/lib/configuration-saver.js.map +1 -1
- package/dist/lib/fargate-service.d.ts +11 -21
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +79 -176
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/types/config.d.ts +591 -224
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +134 -3
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +222 -106
- package/dist/lib/xdg-config.d.ts.map +1 -1
- package/dist/lib/xdg-config.js +448 -387
- package/dist/lib/xdg-config.js.map +1 -1
- package/dist/package.json +16 -13
- package/dist/scripts/check-logs.d.ts +12 -0
- package/dist/scripts/check-logs.d.ts.map +1 -0
- package/dist/{bin → scripts}/check-logs.js +65 -15
- package/dist/scripts/check-logs.js.map +1 -0
- package/dist/scripts/check-webhook-verification.d.ts +3 -0
- package/dist/scripts/check-webhook-verification.d.ts.map +1 -0
- package/dist/{bin/test-invalid-signature.js → scripts/check-webhook-verification.js} +1 -1
- package/dist/scripts/check-webhook-verification.js.map +1 -0
- package/dist/scripts/infer-quilt-config.d.ts +23 -26
- package/dist/scripts/infer-quilt-config.d.ts.map +1 -1
- package/dist/scripts/infer-quilt-config.js +58 -96
- package/dist/scripts/infer-quilt-config.js.map +1 -1
- package/dist/scripts/send-event.d.ts.map +1 -0
- package/dist/scripts/send-event.js.map +1 -0
- package/dist/{bin → scripts}/version.d.ts +3 -1
- package/dist/scripts/version.d.ts.map +1 -0
- package/dist/{bin → scripts}/version.js +95 -9
- package/dist/scripts/version.js.map +1 -0
- package/package.json +16 -13
- package/dist/bin/check-logs.d.ts +0 -7
- package/dist/bin/check-logs.d.ts.map +0 -1
- package/dist/bin/check-logs.js.map +0 -1
- package/dist/bin/config-profiles.d.ts.map +0 -1
- package/dist/bin/config-profiles.js.map +0 -1
- package/dist/bin/create-secret.d.ts.map +0 -1
- package/dist/bin/create-secret.js.map +0 -1
- package/dist/bin/dev-deploy.d.ts +0 -20
- package/dist/bin/dev-deploy.d.ts.map +0 -1
- package/dist/bin/dev-deploy.js +0 -289
- package/dist/bin/dev-deploy.js.map +0 -1
- package/dist/bin/get-env.d.ts.map +0 -1
- package/dist/bin/get-env.js.map +0 -1
- package/dist/bin/publish.d.ts.map +0 -1
- package/dist/bin/publish.js.map +0 -1
- package/dist/bin/release.d.ts +0 -11
- package/dist/bin/release.d.ts.map +0 -1
- package/dist/bin/release.js +0 -141
- package/dist/bin/release.js.map +0 -1
- package/dist/bin/send-event.d.ts.map +0 -1
- package/dist/bin/send-event.js.map +0 -1
- package/dist/bin/test-invalid-signature.d.ts +0 -3
- package/dist/bin/test-invalid-signature.d.ts.map +0 -1
- package/dist/bin/test-invalid-signature.js.map +0 -1
- package/dist/bin/version.d.ts.map +0 -1
- package/dist/bin/version.js.map +0 -1
- package/dist/scripts/config-health-check.d.ts +0 -84
- package/dist/scripts/config-health-check.d.ts.map +0 -1
- package/dist/scripts/config-health-check.js +0 -659
- package/dist/scripts/config-health-check.js.map +0 -1
- package/dist/scripts/install-wizard.d.ts +0 -34
- package/dist/scripts/install-wizard.d.ts.map +0 -1
- package/dist/scripts/install-wizard.js +0 -719
- package/dist/scripts/install-wizard.js.map +0 -1
- package/dist/scripts/sync-secrets.d.ts.map +0 -1
- package/dist/scripts/sync-secrets.js.map +0 -1
- /package/dist/bin/{create-secret.d.ts → commands/create-secret.d.ts} +0 -0
- /package/dist/bin/{create-secret.js → commands/create-secret.js} +0 -0
- /package/dist/bin/{publish.d.ts → commands/publish.d.ts} +0 -0
- /package/dist/{bin → scripts}/send-event.d.ts +0 -0
- /package/dist/{bin → scripts}/send-event.js +0 -0
|
@@ -48,39 +48,42 @@ const package_json_1 = __importDefault(require("../package.json"));
|
|
|
48
48
|
class BenchlingWebhookStack extends cdk.Stack {
|
|
49
49
|
constructor(scope, id, props) {
|
|
50
50
|
super(scope, id, props);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
" -
|
|
56
|
-
"
|
|
51
|
+
const { config } = props;
|
|
52
|
+
// Validate required configuration fields
|
|
53
|
+
if (!config.quilt.stackArn || !config.benchling.secretArn) {
|
|
54
|
+
throw new Error("Configuration validation failed. Required fields:\n" +
|
|
55
|
+
" - config.quilt.stackArn: CloudFormation stack ARN\n" +
|
|
56
|
+
" - config.benchling.secretArn: Secrets Manager secret ARN\n\n" +
|
|
57
|
+
"Run 'npm run setup' to configure your deployment.");
|
|
57
58
|
}
|
|
58
|
-
console.log(
|
|
59
|
+
console.log(`Deploying with profile configuration (v${config._metadata.version})`);
|
|
60
|
+
console.log(` Quilt Stack: ${config.quilt.stackArn}`);
|
|
61
|
+
console.log(` Benchling Tenant: ${config.benchling.tenant}`);
|
|
62
|
+
console.log(` Region: ${config.deployment.region}`);
|
|
59
63
|
// Create CloudFormation parameters for runtime-configurable values
|
|
60
|
-
//
|
|
61
|
-
// ===== Secrets-Only Mode Parameters (v0.6.0+) =====
|
|
64
|
+
// These parameters can be updated via CloudFormation stack updates
|
|
62
65
|
const quiltStackArnParam = new cdk.CfnParameter(this, "QuiltStackARN", {
|
|
63
66
|
type: "String",
|
|
64
67
|
description: "ARN of Quilt CloudFormation stack for configuration resolution",
|
|
65
|
-
default:
|
|
68
|
+
default: config.quilt.stackArn,
|
|
66
69
|
});
|
|
67
|
-
const benchlingSecretParam = new cdk.CfnParameter(this, "
|
|
70
|
+
const benchlingSecretParam = new cdk.CfnParameter(this, "BenchlingSecretARN", {
|
|
68
71
|
type: "String",
|
|
69
|
-
description: "
|
|
70
|
-
default:
|
|
72
|
+
description: "ARN of Secrets Manager secret with Benchling credentials",
|
|
73
|
+
default: config.benchling.secretArn,
|
|
71
74
|
});
|
|
72
75
|
const logLevelParam = new cdk.CfnParameter(this, "LogLevel", {
|
|
73
76
|
type: "String",
|
|
74
|
-
description: "Application log level (DEBUG, INFO, WARNING, ERROR
|
|
75
|
-
default:
|
|
76
|
-
allowedValues: ["DEBUG", "INFO", "WARNING", "ERROR"
|
|
77
|
+
description: "Application log level (DEBUG, INFO, WARNING, ERROR)",
|
|
78
|
+
default: config.logging?.level || "INFO",
|
|
79
|
+
allowedValues: ["DEBUG", "INFO", "WARNING", "ERROR"],
|
|
77
80
|
});
|
|
78
81
|
const imageTagParam = new cdk.CfnParameter(this, "ImageTag", {
|
|
79
82
|
type: "String",
|
|
80
|
-
description: "Docker image tag to deploy (e.g., latest, 0.
|
|
81
|
-
default:
|
|
83
|
+
description: "Docker image tag to deploy (e.g., latest, 0.7.0, 0.7.0-20251104T123456Z)",
|
|
84
|
+
default: config.deployment.imageTag || "latest",
|
|
82
85
|
});
|
|
83
|
-
// Use parameter values (which have
|
|
86
|
+
// Use parameter values (which have config as defaults)
|
|
84
87
|
// This allows runtime updates via CloudFormation
|
|
85
88
|
const quiltStackArnValue = quiltStackArnParam.valueAsString;
|
|
86
89
|
const benchlingSecretValue = benchlingSecretParam.valueAsString;
|
|
@@ -96,43 +99,44 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
96
99
|
// Get or create ECR repository
|
|
97
100
|
let ecrRepo;
|
|
98
101
|
let ecrImageUri;
|
|
102
|
+
const repoName = config.deployment.ecrRepository || "quiltdata/benchling";
|
|
99
103
|
if (props.createEcrRepository) {
|
|
100
104
|
const newRepo = new ecr_repository_1.EcrRepository(this, "EcrRepository", {
|
|
101
|
-
repositoryName:
|
|
105
|
+
repositoryName: repoName,
|
|
102
106
|
publicReadAccess: true,
|
|
103
107
|
});
|
|
104
108
|
ecrRepo = newRepo.repository;
|
|
105
|
-
ecrImageUri = `${newRepo.repositoryUri}
|
|
109
|
+
ecrImageUri = `${newRepo.repositoryUri}:${imageTagValue}`;
|
|
106
110
|
}
|
|
107
111
|
else {
|
|
108
112
|
// Reference existing ECR repository
|
|
109
|
-
const repoName = props.ecrRepositoryName || "quiltdata/benchling";
|
|
110
113
|
ecrRepo = ecr.Repository.fromRepositoryName(this, "ExistingEcrRepository", repoName);
|
|
111
|
-
|
|
114
|
+
const account = config.deployment.account || this.account;
|
|
115
|
+
const region = config.deployment.region;
|
|
116
|
+
ecrImageUri = `${account}.dkr.ecr.${region}.amazonaws.com/${repoName}:${imageTagValue}`;
|
|
112
117
|
}
|
|
113
118
|
// Create the Fargate service
|
|
114
119
|
// Use imageTag for stackVersion if it looks like a timestamped dev version
|
|
115
|
-
// (e.g., "0.
|
|
120
|
+
// (e.g., "0.7.0-20251104T000139Z"), otherwise use package.json version
|
|
116
121
|
const isDevVersion = imageTagValue.match(/^\d+\.\d+\.\d+-\d{8}T\d{6}Z$/);
|
|
117
122
|
const stackVersion = isDevVersion ? imageTagValue : package_json_1.default.version;
|
|
118
|
-
// Build Fargate Service props
|
|
123
|
+
// Build Fargate Service props using new config structure
|
|
119
124
|
this.fargateService = new fargate_service_1.FargateService(this, "FargateService", {
|
|
120
125
|
vpc,
|
|
121
126
|
bucket: this.bucket,
|
|
122
|
-
|
|
123
|
-
account: this.account,
|
|
127
|
+
config: config,
|
|
124
128
|
ecrRepository: ecrRepo,
|
|
125
129
|
imageTag: imageTagValue,
|
|
126
130
|
stackVersion: stackVersion,
|
|
127
|
-
|
|
128
|
-
// Secrets-only mode: Only 2 required parameters
|
|
131
|
+
// Runtime-configurable parameters
|
|
129
132
|
quiltStackArn: quiltStackArnValue,
|
|
130
133
|
benchlingSecret: benchlingSecretValue,
|
|
134
|
+
logLevel: logLevelValue,
|
|
131
135
|
});
|
|
132
136
|
// Create API Gateway that routes to the ALB
|
|
133
137
|
this.api = new alb_api_gateway_1.AlbApiGateway(this, "ApiGateway", {
|
|
134
138
|
loadBalancer: this.fargateService.loadBalancer,
|
|
135
|
-
|
|
139
|
+
config: config,
|
|
136
140
|
});
|
|
137
141
|
// Store webhook endpoint for easy access
|
|
138
142
|
this.webhookEndpoint = this.api.api.url;
|
|
@@ -160,6 +164,15 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
160
164
|
value: this.api.logGroup.logGroupName,
|
|
161
165
|
description: "CloudWatch log group for API Gateway access logs",
|
|
162
166
|
});
|
|
167
|
+
// Export configuration metadata
|
|
168
|
+
new cdk.CfnOutput(this, "ConfigVersion", {
|
|
169
|
+
value: config._metadata.version,
|
|
170
|
+
description: "Configuration schema version",
|
|
171
|
+
});
|
|
172
|
+
new cdk.CfnOutput(this, "ConfigSource", {
|
|
173
|
+
value: config._metadata.source,
|
|
174
|
+
description: "Configuration source (wizard, manual, cli)",
|
|
175
|
+
});
|
|
163
176
|
}
|
|
164
177
|
}
|
|
165
178
|
exports.BenchlingWebhookStack = BenchlingWebhookStack;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchling-webhook-stack.js","sourceRoot":"","sources":["../../lib/benchling-webhook-stack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,uDAAyC;AACzC,yDAA2C;AAC3C,yDAA2C;AAE3C,uDAAmD;AACnD,uDAAkD;AAClD,qDAAiD;
|
|
1
|
+
{"version":3,"file":"benchling-webhook-stack.js","sourceRoot":"","sources":["../../lib/benchling-webhook-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { XDGConfig } from "./xdg-config";
|
|
2
|
+
import { ProfileConfig } from "./types/config";
|
|
2
3
|
/**
|
|
3
4
|
* Configuration metadata
|
|
4
5
|
*/
|
|
@@ -16,6 +17,7 @@ export interface SaveOptions {
|
|
|
16
17
|
source?: string;
|
|
17
18
|
skipValidation?: boolean;
|
|
18
19
|
merge?: boolean;
|
|
20
|
+
profile?: string;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Configuration saver for persisting configuration to XDG files
|
|
@@ -30,27 +32,13 @@ export declare class ConfigurationSaver {
|
|
|
30
32
|
*/
|
|
31
33
|
private static getDefaultXDGConfig;
|
|
32
34
|
/**
|
|
33
|
-
* Save configuration to
|
|
35
|
+
* Save configuration to profile
|
|
34
36
|
*
|
|
35
37
|
* @param config - Configuration to save
|
|
36
38
|
* @param options - Save options
|
|
37
39
|
* @returns Saved configuration with metadata
|
|
38
40
|
*/
|
|
39
|
-
static save(config:
|
|
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>;
|
|
41
|
+
static save(config: Partial<ProfileConfig>, options?: SaveOptions): Promise<ProfileConfig>;
|
|
54
42
|
/**
|
|
55
43
|
* Create metadata for configuration
|
|
56
44
|
*
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"configuration-saver.d.ts","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;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;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0B;IAEzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAOlC;;;;;;OAMG;WACiB,IAAI,CACpB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAC9B,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,aAAa,CAAC;IA4CzB;;;;;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"}
|
|
@@ -16,28 +16,27 @@ class ConfigurationSaver {
|
|
|
16
16
|
static getDefaultXDGConfig() {
|
|
17
17
|
if (!ConfigurationSaver.defaultXDGConfig) {
|
|
18
18
|
ConfigurationSaver.defaultXDGConfig = new xdg_config_1.XDGConfig();
|
|
19
|
-
ConfigurationSaver.defaultXDGConfig.ensureDirectories();
|
|
20
19
|
}
|
|
21
20
|
return ConfigurationSaver.defaultXDGConfig;
|
|
22
21
|
}
|
|
23
22
|
/**
|
|
24
|
-
* Save configuration to
|
|
23
|
+
* Save configuration to profile
|
|
25
24
|
*
|
|
26
25
|
* @param config - Configuration to save
|
|
27
26
|
* @param options - Save options
|
|
28
27
|
* @returns Saved configuration with metadata
|
|
29
28
|
*/
|
|
30
29
|
static async save(config, options = {}) {
|
|
31
|
-
const { xdgConfig = ConfigurationSaver.getDefaultXDGConfig(), source = "wizard", skipValidation = false, merge: shouldMerge = false, } = options;
|
|
30
|
+
const { xdgConfig = ConfigurationSaver.getDefaultXDGConfig(), source = "wizard", skipValidation = false, merge: shouldMerge = false, profile = "default", } = options;
|
|
32
31
|
// Validate configuration if not skipped
|
|
33
32
|
if (!skipValidation) {
|
|
34
33
|
ConfigurationSaver.validateConfig(config);
|
|
35
34
|
}
|
|
36
35
|
// Merge with existing config if requested
|
|
37
36
|
let finalConfig = { ...config };
|
|
38
|
-
if (shouldMerge) {
|
|
37
|
+
if (shouldMerge && xdgConfig.profileExists(profile)) {
|
|
39
38
|
try {
|
|
40
|
-
const existingConfig = xdgConfig.
|
|
39
|
+
const existingConfig = xdgConfig.readProfile(profile);
|
|
41
40
|
finalConfig = (0, lodash_merge_1.default)({}, existingConfig, config);
|
|
42
41
|
}
|
|
43
42
|
catch {
|
|
@@ -49,55 +48,16 @@ class ConfigurationSaver {
|
|
|
49
48
|
const metadata = ConfigurationSaver.getMetadata({ source });
|
|
50
49
|
const configWithMetadata = {
|
|
51
50
|
...finalConfig,
|
|
52
|
-
_metadata:
|
|
51
|
+
_metadata: {
|
|
52
|
+
version: metadata.version || "0.7.0",
|
|
53
|
+
createdAt: finalConfig._metadata?.createdAt || metadata.savedAt,
|
|
54
|
+
updatedAt: metadata.savedAt,
|
|
55
|
+
source: source,
|
|
56
|
+
},
|
|
53
57
|
};
|
|
54
|
-
// Save to
|
|
55
|
-
xdgConfig.
|
|
56
|
-
|
|
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);
|
|
58
|
+
// Save to profile
|
|
59
|
+
xdgConfig.writeProfile(profile, configWithMetadata);
|
|
60
|
+
return configWithMetadata;
|
|
101
61
|
}
|
|
102
62
|
/**
|
|
103
63
|
* Create metadata for configuration
|
|
@@ -121,7 +81,7 @@ class ConfigurationSaver {
|
|
|
121
81
|
static getVersion() {
|
|
122
82
|
// For now, return a static version
|
|
123
83
|
// In production, this would read from package.json
|
|
124
|
-
return "0.
|
|
84
|
+
return "0.7.0";
|
|
125
85
|
}
|
|
126
86
|
/**
|
|
127
87
|
* Validate configuration before saving
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-saver.js","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;
|
|
1
|
+
{"version":3,"file":"configuration-saver.js","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,gEAAiC;AAuBjC;;GAEG;AACH,MAAa,kBAAkB;IAM3B;;OAEG;IACK,MAAM,CAAC,mBAAmB;QAC9B,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;YACvC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,sBAAS,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CACpB,MAA8B,EAC9B,UAAuB,EAAE;QAEzB,MAAM,EACF,SAAS,GAAG,kBAAkB,CAAC,mBAAmB,EAAE,EACpD,MAAM,GAAG,QAAQ,EACjB,cAAc,GAAG,KAAK,EACtB,KAAK,EAAE,WAAW,GAAG,KAAK,EAC1B,OAAO,GAAG,SAAS,GACtB,GAAG,OAAO,CAAC;QAEZ,wCAAwC;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,0CAA0C;QAC1C,IAAI,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAChC,IAAI,WAAW,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC;gBACD,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACtD,WAAW,GAAG,IAAA,sBAAK,EAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACL,iDAAiD;gBACjD,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAChC,CAAC;QACL,CAAC;QAED,eAAe;QACf,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAkB;YACtC,GAAG,WAAW;YACd,SAAS,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO;gBACpC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,IAAI,QAAQ,CAAC,OAAO;gBAC/D,SAAS,EAAE,QAAQ,CAAC,OAAO;gBAC3B,MAAM,EAAE,MAAqC;aAChD;SACa,CAAC;QAEnB,kBAAkB;QAClB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEpD,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,UAAmC,EAAE;QAC3D,OAAO;YACH,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;YACnC,OAAO,EAAE,kBAAkB,CAAC,UAAU,EAAE;YACxC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;SAChE,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,UAAU;QACrB,mCAAmC;QACnC,mDAAmD;QACnD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,cAAc,CAAC,MAA8B;QACxD,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,CAAC;QAED,0BAA0B;IAC9B,CAAC;;AA7GL,gDA8GC;AA7GG;;GAEG;AACY,mCAAgB,GAAqB,IAAI,CAAC"}
|
|
@@ -5,34 +5,24 @@ import * as elbv2 from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
|
5
5
|
import * as logs from "aws-cdk-lib/aws-logs";
|
|
6
6
|
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
7
7
|
import { Construct } from "constructs";
|
|
8
|
+
import { ProfileConfig } from "./types/config";
|
|
9
|
+
/**
|
|
10
|
+
* Properties for FargateService construct (v0.7.0+)
|
|
11
|
+
*
|
|
12
|
+
* Uses ProfileConfig for structured configuration access.
|
|
13
|
+
* Runtime-configurable parameters (quiltStackArn, benchlingSecret, logLevel)
|
|
14
|
+
* can be overridden via CloudFormation parameters.
|
|
15
|
+
*/
|
|
8
16
|
export interface FargateServiceProps {
|
|
9
17
|
readonly vpc: ec2.IVpc;
|
|
10
18
|
readonly bucket: s3.IBucket;
|
|
11
|
-
readonly
|
|
12
|
-
readonly account: string;
|
|
19
|
+
readonly config: ProfileConfig;
|
|
13
20
|
readonly ecrRepository: ecr.IRepository;
|
|
14
21
|
readonly imageTag?: string;
|
|
15
22
|
readonly stackVersion?: string;
|
|
23
|
+
readonly quiltStackArn: string;
|
|
24
|
+
readonly benchlingSecret: string;
|
|
16
25
|
readonly logLevel?: string;
|
|
17
|
-
readonly enableWebhookVerification?: string;
|
|
18
|
-
readonly quiltStackArn?: string;
|
|
19
|
-
readonly benchlingSecret?: string;
|
|
20
|
-
readonly queueArn?: string;
|
|
21
|
-
readonly prefix?: string;
|
|
22
|
-
readonly pkgKey?: string;
|
|
23
|
-
readonly benchlingClientId?: string;
|
|
24
|
-
readonly benchlingClientSecret?: string;
|
|
25
|
-
readonly benchlingTenant?: string;
|
|
26
|
-
readonly benchlingAppDefinitionId?: string;
|
|
27
|
-
/**
|
|
28
|
-
* Consolidated Benchling secrets as JSON string.
|
|
29
|
-
* When provided and non-empty, the container will receive BENCHLING_SECRETS environment variable.
|
|
30
|
-
* Otherwise, individual environment variables (BENCHLING_TENANT) and secrets (BENCHLING_CLIENT_ID, BENCHLING_CLIENT_SECRET) are used.
|
|
31
|
-
*/
|
|
32
|
-
readonly benchlingSecrets?: string;
|
|
33
|
-
readonly quiltCatalog?: string;
|
|
34
|
-
readonly quiltDatabase?: string;
|
|
35
|
-
readonly webhookAllowList?: string;
|
|
36
26
|
}
|
|
37
27
|
export declare class FargateService extends Construct {
|
|
38
28
|
readonly service: ecs.FargateService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fargate-service.d.ts","sourceRoot":"","sources":["../../lib/fargate-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,wCAAwC,CAAC;AAEhE,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"fargate-service.d.ts","sourceRoot":"","sources":["../../lib/fargate-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,wCAAwC,CAAC;AAEhE,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAe,SAAQ,SAAS;IACzC,SAAgB,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC;IAC5C,SAAgB,YAAY,EAAE,KAAK,CAAC,uBAAuB,CAAC;IAC5D,SAAgB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrC,SAAgB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;gBAE7B,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CAkUvE"}
|