@quiltdata/benchling-webhook 0.4.13 → 0.5.0-20251029T180511Z
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/dist/bin/benchling-webhook.d.ts +50 -0
- package/dist/bin/benchling-webhook.d.ts.map +1 -0
- package/dist/bin/benchling-webhook.js +268 -0
- package/dist/bin/benchling-webhook.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +83 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +7 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -0
- package/dist/bin/commands/deploy.js +154 -0
- package/dist/bin/commands/deploy.js.map +1 -0
- package/dist/bin/commands/init.d.ts +9 -0
- package/dist/bin/commands/init.d.ts.map +1 -0
- package/dist/bin/commands/init.js +155 -0
- package/dist/bin/commands/init.js.map +1 -0
- package/dist/bin/commands/validate.d.ts +5 -0
- package/dist/bin/commands/validate.d.ts.map +1 -0
- package/dist/bin/commands/validate.js +135 -0
- package/dist/bin/commands/validate.js.map +1 -0
- package/dist/bin/get-env.js +180 -0
- package/dist/bin/publish.js +327 -0
- package/{bin → dist/bin}/version.js +73 -37
- package/dist/lib/alb-api-gateway.d.ts +17 -0
- package/dist/lib/alb-api-gateway.d.ts.map +1 -0
- package/dist/lib/alb-api-gateway.js +191 -0
- package/dist/lib/alb-api-gateway.js.map +1 -0
- package/dist/lib/benchling-webhook-stack.d.ts +25 -0
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -0
- package/dist/lib/benchling-webhook-stack.js +165 -0
- package/dist/lib/benchling-webhook-stack.js.map +1 -0
- package/dist/lib/constants.d.ts +28 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +31 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/ecr-repository.d.ts +16 -0
- package/dist/lib/ecr-repository.d.ts.map +1 -0
- package/dist/lib/ecr-repository.js +90 -0
- package/dist/lib/ecr-repository.js.map +1 -0
- package/dist/lib/fargate-service.d.ts +32 -0
- package/dist/lib/fargate-service.d.ts.map +1 -0
- package/dist/lib/fargate-service.js +294 -0
- package/dist/lib/fargate-service.js.map +1 -0
- package/{lib/index.ts → dist/lib/index.d.ts} +5 -5
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +38 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/templates/base-template.d.ts +14 -0
- package/dist/lib/templates/base-template.d.ts.map +1 -0
- package/dist/lib/templates/base-template.js +68 -0
- package/dist/lib/templates/base-template.js.map +1 -0
- package/dist/lib/templates/readme.d.ts +11 -0
- package/dist/lib/templates/readme.d.ts.map +1 -0
- package/dist/lib/templates/readme.js +105 -0
- package/dist/lib/templates/readme.js.map +1 -0
- package/dist/lib/utils/config.d.ts +68 -0
- package/dist/lib/utils/config.d.ts.map +1 -0
- package/dist/lib/utils/config.js +195 -0
- package/dist/lib/utils/config.js.map +1 -0
- package/dist/lib/utils/stack-inference.d.ts +73 -0
- package/dist/lib/utils/stack-inference.d.ts.map +1 -0
- package/dist/lib/utils/stack-inference.js +410 -0
- package/dist/lib/utils/stack-inference.js.map +1 -0
- package/dist/package.json +90 -0
- package/package.json +31 -20
- package/AGENTS.md +0 -226
- package/CHANGELOG.md +0 -91
- package/bin/benchling-webhook.ts +0 -172
- package/bin/cli-auth.sh +0 -74
- package/bin/get-env.js +0 -564
- package/bin/publish-manual.js +0 -211
- package/bin/release-notes.sh +0 -82
- package/bin/sync-version.js +0 -72
- package/cdk.context.json +0 -58
- package/cdk.json +0 -85
- package/doc/NPM_OIDC_SETUP.md +0 -95
- package/doc/PARAMETERS.md +0 -203
- package/doc/RELEASE.md +0 -297
- package/doc/RELEASE_NOTES.md +0 -64
- package/jest.config.js +0 -14
- package/lib/README.md +0 -50
- package/lib/oauth-tester.json +0 -35
- package/tsconfig.json +0 -34
- /package/{bin → dist/bin}/check-logs.js +0 -0
- /package/{bin → dist/bin}/release.js +0 -0
- /package/{bin → dist/bin}/send-event.js +0 -0
- /package/{bin → dist/bin}/test-invalid-signature.js +0 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.FargateService = void 0;
|
|
37
|
+
const cdk = __importStar(require("aws-cdk-lib"));
|
|
38
|
+
const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
|
|
39
|
+
const ecs = __importStar(require("aws-cdk-lib/aws-ecs"));
|
|
40
|
+
const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2"));
|
|
41
|
+
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
42
|
+
const logs = __importStar(require("aws-cdk-lib/aws-logs"));
|
|
43
|
+
const secretsmanager = __importStar(require("aws-cdk-lib/aws-secretsmanager"));
|
|
44
|
+
const s3 = __importStar(require("aws-cdk-lib/aws-s3"));
|
|
45
|
+
const constructs_1 = require("constructs");
|
|
46
|
+
class FargateService extends constructs_1.Construct {
|
|
47
|
+
constructor(scope, id, props) {
|
|
48
|
+
super(scope, id);
|
|
49
|
+
// Create ECS Cluster
|
|
50
|
+
this.cluster = new ecs.Cluster(this, "BenchlingWebhookCluster", {
|
|
51
|
+
vpc: props.vpc,
|
|
52
|
+
clusterName: "benchling-webhook-cluster",
|
|
53
|
+
enableFargateCapacityProviders: true,
|
|
54
|
+
});
|
|
55
|
+
// Enable Container Insights for monitoring
|
|
56
|
+
const cfnCluster = this.cluster.node.defaultChild;
|
|
57
|
+
cfnCluster.clusterSettings = [
|
|
58
|
+
{
|
|
59
|
+
name: "containerInsights",
|
|
60
|
+
value: "enabled",
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
// Create CloudWatch Log Group for container logs
|
|
64
|
+
this.logGroup = new logs.LogGroup(this, "ContainerLogGroup", {
|
|
65
|
+
logGroupName: "/ecs/benchling-webhook",
|
|
66
|
+
retention: logs.RetentionDays.ONE_WEEK,
|
|
67
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
68
|
+
});
|
|
69
|
+
// Create IAM Task Execution Role (for ECS to pull images and write logs)
|
|
70
|
+
const taskExecutionRole = new iam.Role(this, "TaskExecutionRole", {
|
|
71
|
+
assumedBy: new iam.ServicePrincipal("ecs-tasks.amazonaws.com"),
|
|
72
|
+
managedPolicies: [
|
|
73
|
+
iam.ManagedPolicy.fromAwsManagedPolicyName("service-role/AmazonECSTaskExecutionRolePolicy"),
|
|
74
|
+
],
|
|
75
|
+
});
|
|
76
|
+
// Note: ECR pull permissions will be automatically granted by fromEcrRepository()
|
|
77
|
+
// Create IAM Task Role (for the container to access AWS services)
|
|
78
|
+
const taskRole = new iam.Role(this, "TaskRole", {
|
|
79
|
+
assumedBy: new iam.ServicePrincipal("ecs-tasks.amazonaws.com"),
|
|
80
|
+
});
|
|
81
|
+
// Grant S3 bucket access to task role
|
|
82
|
+
props.bucket.grantReadWrite(taskRole);
|
|
83
|
+
// Grant SQS access to task role
|
|
84
|
+
const queueArn = `arn:aws:sqs:${props.region}:${props.account}:${props.queueName}`;
|
|
85
|
+
taskRole.addToPolicy(new iam.PolicyStatement({
|
|
86
|
+
actions: [
|
|
87
|
+
"sqs:SendMessage",
|
|
88
|
+
"sqs:GetQueueUrl",
|
|
89
|
+
"sqs:GetQueueAttributes",
|
|
90
|
+
],
|
|
91
|
+
resources: [queueArn],
|
|
92
|
+
}));
|
|
93
|
+
// Grant Athena access to task role for package querying
|
|
94
|
+
taskRole.addToPolicy(new iam.PolicyStatement({
|
|
95
|
+
actions: [
|
|
96
|
+
"athena:StartQueryExecution",
|
|
97
|
+
"athena:GetQueryExecution",
|
|
98
|
+
"athena:GetQueryResults",
|
|
99
|
+
"athena:StopQueryExecution",
|
|
100
|
+
"athena:GetWorkGroup",
|
|
101
|
+
],
|
|
102
|
+
resources: [
|
|
103
|
+
`arn:aws:athena:${props.region}:${props.account}:workgroup/primary`,
|
|
104
|
+
],
|
|
105
|
+
}));
|
|
106
|
+
// Grant Glue Data Catalog access (required for Athena queries)
|
|
107
|
+
taskRole.addToPolicy(new iam.PolicyStatement({
|
|
108
|
+
actions: [
|
|
109
|
+
"glue:GetDatabase",
|
|
110
|
+
"glue:GetTable",
|
|
111
|
+
"glue:GetPartitions",
|
|
112
|
+
],
|
|
113
|
+
resources: [
|
|
114
|
+
`arn:aws:glue:${props.region}:${props.account}:catalog`,
|
|
115
|
+
`arn:aws:glue:${props.region}:${props.account}:database/${props.quiltDatabase}`,
|
|
116
|
+
`arn:aws:glue:${props.region}:${props.account}:table/${props.quiltDatabase}/*`,
|
|
117
|
+
],
|
|
118
|
+
}));
|
|
119
|
+
// Grant S3 access for Athena query results
|
|
120
|
+
// Athena needs to write query results to an S3 bucket
|
|
121
|
+
const athenaResultsBucketArn = `arn:aws:s3:::aws-athena-query-results-${props.account}-${props.region}`;
|
|
122
|
+
taskRole.addToPolicy(new iam.PolicyStatement({
|
|
123
|
+
actions: [
|
|
124
|
+
"s3:GetBucketLocation",
|
|
125
|
+
"s3:GetObject",
|
|
126
|
+
"s3:ListBucket",
|
|
127
|
+
"s3:PutObject",
|
|
128
|
+
],
|
|
129
|
+
resources: [
|
|
130
|
+
athenaResultsBucketArn,
|
|
131
|
+
`${athenaResultsBucketArn}/*`,
|
|
132
|
+
],
|
|
133
|
+
}));
|
|
134
|
+
// Create or reference Secrets Manager secret for Benchling credentials
|
|
135
|
+
// In production, this should be created separately and referenced
|
|
136
|
+
const benchlingSecret = new secretsmanager.Secret(this, "BenchlingCredentials", {
|
|
137
|
+
secretName: "benchling-webhook/credentials",
|
|
138
|
+
description: "Benchling API credentials for webhook processor",
|
|
139
|
+
secretObjectValue: {
|
|
140
|
+
client_id: cdk.SecretValue.unsafePlainText(props.benchlingClientId),
|
|
141
|
+
client_secret: cdk.SecretValue.unsafePlainText(props.benchlingClientSecret),
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
// Grant read access to secrets
|
|
145
|
+
benchlingSecret.grantRead(taskRole);
|
|
146
|
+
// Create Fargate Task Definition
|
|
147
|
+
const taskDefinition = new ecs.FargateTaskDefinition(this, "TaskDefinition", {
|
|
148
|
+
memoryLimitMiB: 2048,
|
|
149
|
+
cpu: 1024,
|
|
150
|
+
executionRole: taskExecutionRole,
|
|
151
|
+
taskRole: taskRole,
|
|
152
|
+
family: "benchling-webhook-task",
|
|
153
|
+
});
|
|
154
|
+
// Add container to task definition
|
|
155
|
+
const container = taskDefinition.addContainer("BenchlingWebhookContainer", {
|
|
156
|
+
image: ecs.ContainerImage.fromEcrRepository(props.ecrRepository, props.imageTag || "latest"),
|
|
157
|
+
logging: ecs.LogDriver.awsLogs({
|
|
158
|
+
streamPrefix: "benchling-webhook",
|
|
159
|
+
logGroup: this.logGroup,
|
|
160
|
+
}),
|
|
161
|
+
environment: {
|
|
162
|
+
QUILT_USER_BUCKET: props.bucket.bucketName,
|
|
163
|
+
SQS_QUEUE_URL: `https://sqs.${props.region}.amazonaws.com/${props.account}/${props.queueName}`,
|
|
164
|
+
PKG_PREFIX: props.prefix,
|
|
165
|
+
BENCHLING_TENANT: props.benchlingTenant,
|
|
166
|
+
QUILT_CATALOG: props.quiltCatalog,
|
|
167
|
+
QUILT_DATABASE: props.quiltDatabase,
|
|
168
|
+
WEBHOOK_ALLOW_LIST: props.webhookAllowList,
|
|
169
|
+
AWS_REGION: props.region,
|
|
170
|
+
AWS_DEFAULT_REGION: props.region,
|
|
171
|
+
FLASK_ENV: "production",
|
|
172
|
+
LOG_LEVEL: props.logLevel || "INFO",
|
|
173
|
+
ENABLE_WEBHOOK_VERIFICATION: "false",
|
|
174
|
+
},
|
|
175
|
+
secrets: {
|
|
176
|
+
BENCHLING_CLIENT_ID: ecs.Secret.fromSecretsManager(benchlingSecret, "client_id"),
|
|
177
|
+
BENCHLING_CLIENT_SECRET: ecs.Secret.fromSecretsManager(benchlingSecret, "client_secret"),
|
|
178
|
+
},
|
|
179
|
+
healthCheck: {
|
|
180
|
+
command: ["CMD-SHELL", "curl -f http://localhost:5000/health || exit 1"],
|
|
181
|
+
interval: cdk.Duration.seconds(30),
|
|
182
|
+
timeout: cdk.Duration.seconds(10),
|
|
183
|
+
retries: 3,
|
|
184
|
+
startPeriod: cdk.Duration.seconds(60),
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
// Map container port
|
|
188
|
+
container.addPortMappings({
|
|
189
|
+
containerPort: 5000,
|
|
190
|
+
protocol: ecs.Protocol.TCP,
|
|
191
|
+
});
|
|
192
|
+
// Create S3 bucket for ALB access logs
|
|
193
|
+
const albLogsBucket = new s3.Bucket(this, "AlbLogsBucket", {
|
|
194
|
+
bucketName: `benchling-webhook-alb-logs-${props.account}`,
|
|
195
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
196
|
+
autoDeleteObjects: true,
|
|
197
|
+
lifecycleRules: [
|
|
198
|
+
{
|
|
199
|
+
expiration: cdk.Duration.days(7),
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
});
|
|
203
|
+
// Create Application Load Balancer
|
|
204
|
+
this.loadBalancer = new elbv2.ApplicationLoadBalancer(this, "ALB", {
|
|
205
|
+
vpc: props.vpc,
|
|
206
|
+
internetFacing: true,
|
|
207
|
+
loadBalancerName: "benchling-webhook-alb",
|
|
208
|
+
});
|
|
209
|
+
// Enable ALB access logs
|
|
210
|
+
this.loadBalancer.logAccessLogs(albLogsBucket, "alb-access-logs");
|
|
211
|
+
// Create ALB Target Group
|
|
212
|
+
const targetGroup = new elbv2.ApplicationTargetGroup(this, "TargetGroup", {
|
|
213
|
+
vpc: props.vpc,
|
|
214
|
+
port: 5000,
|
|
215
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
216
|
+
targetType: elbv2.TargetType.IP,
|
|
217
|
+
healthCheck: {
|
|
218
|
+
path: "/health/ready",
|
|
219
|
+
interval: cdk.Duration.seconds(30),
|
|
220
|
+
timeout: cdk.Duration.seconds(10),
|
|
221
|
+
healthyThresholdCount: 2,
|
|
222
|
+
unhealthyThresholdCount: 3,
|
|
223
|
+
healthyHttpCodes: "200",
|
|
224
|
+
},
|
|
225
|
+
deregistrationDelay: cdk.Duration.seconds(30),
|
|
226
|
+
});
|
|
227
|
+
// Add HTTP listener
|
|
228
|
+
this.loadBalancer.addListener("HttpListener", {
|
|
229
|
+
port: 80,
|
|
230
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
231
|
+
defaultAction: elbv2.ListenerAction.forward([targetGroup]),
|
|
232
|
+
});
|
|
233
|
+
// Create Security Group for Fargate tasks
|
|
234
|
+
const fargateSecurityGroup = new ec2.SecurityGroup(this, "FargateSecurityGroup", {
|
|
235
|
+
vpc: props.vpc,
|
|
236
|
+
description: "Security group for Benchling webhook Fargate tasks",
|
|
237
|
+
allowAllOutbound: true,
|
|
238
|
+
});
|
|
239
|
+
// Allow ALB to communicate with Fargate tasks
|
|
240
|
+
fargateSecurityGroup.addIngressRule(ec2.Peer.securityGroupId(this.loadBalancer.connections.securityGroups[0].securityGroupId), ec2.Port.tcp(5000), "Allow traffic from ALB");
|
|
241
|
+
// Create Fargate Service
|
|
242
|
+
this.service = new ecs.FargateService(this, "Service", {
|
|
243
|
+
cluster: this.cluster,
|
|
244
|
+
taskDefinition: taskDefinition,
|
|
245
|
+
desiredCount: 2,
|
|
246
|
+
serviceName: "benchling-webhook-service",
|
|
247
|
+
assignPublicIp: true,
|
|
248
|
+
securityGroups: [fargateSecurityGroup],
|
|
249
|
+
healthCheckGracePeriod: cdk.Duration.seconds(60),
|
|
250
|
+
minHealthyPercent: 50,
|
|
251
|
+
maxHealthyPercent: 200,
|
|
252
|
+
circuitBreaker: {
|
|
253
|
+
rollback: true,
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
// Attach the service to the target group
|
|
257
|
+
this.service.attachToApplicationTargetGroup(targetGroup);
|
|
258
|
+
// Configure auto-scaling
|
|
259
|
+
const scaling = this.service.autoScaleTaskCount({
|
|
260
|
+
minCapacity: 2,
|
|
261
|
+
maxCapacity: 10,
|
|
262
|
+
});
|
|
263
|
+
// Scale based on CPU utilization
|
|
264
|
+
scaling.scaleOnCpuUtilization("CpuScaling", {
|
|
265
|
+
targetUtilizationPercent: 70,
|
|
266
|
+
scaleInCooldown: cdk.Duration.seconds(300),
|
|
267
|
+
scaleOutCooldown: cdk.Duration.seconds(60),
|
|
268
|
+
});
|
|
269
|
+
// Scale based on memory utilization
|
|
270
|
+
scaling.scaleOnMemoryUtilization("MemoryScaling", {
|
|
271
|
+
targetUtilizationPercent: 80,
|
|
272
|
+
scaleInCooldown: cdk.Duration.seconds(300),
|
|
273
|
+
scaleOutCooldown: cdk.Duration.seconds(60),
|
|
274
|
+
});
|
|
275
|
+
// Outputs
|
|
276
|
+
new cdk.CfnOutput(this, "LoadBalancerDNS", {
|
|
277
|
+
value: this.loadBalancer.loadBalancerDnsName,
|
|
278
|
+
description: "Load Balancer DNS Name",
|
|
279
|
+
exportName: "BenchlingWebhookALBDNS",
|
|
280
|
+
});
|
|
281
|
+
new cdk.CfnOutput(this, "ServiceName", {
|
|
282
|
+
value: this.service.serviceName,
|
|
283
|
+
description: "ECS Service Name",
|
|
284
|
+
exportName: "BenchlingWebhookServiceName",
|
|
285
|
+
});
|
|
286
|
+
new cdk.CfnOutput(this, "ClusterName", {
|
|
287
|
+
value: this.cluster.clusterName,
|
|
288
|
+
description: "ECS Cluster Name",
|
|
289
|
+
exportName: "BenchlingWebhookClusterName",
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
exports.FargateService = FargateService;
|
|
294
|
+
//# sourceMappingURL=fargate-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fargate-service.js","sourceRoot":"","sources":["../../lib/fargate-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @module quilt-benchling-webhook
|
|
26
26
|
*/
|
|
27
|
-
|
|
28
|
-
export {
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
|
|
27
|
+
export { BenchlingWebhookStack, type BenchlingWebhookStackProps } from "./benchling-webhook-stack";
|
|
28
|
+
export { FargateService } from "./fargate-service";
|
|
29
|
+
export { AlbApiGateway } from "./alb-api-gateway";
|
|
30
|
+
export { EcrRepository } from "./ecr-repository";
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Benchling Webhook Integration for Quilt
|
|
4
|
+
*
|
|
5
|
+
* This module exports CDK constructs for deploying a Benchling webhook integration
|
|
6
|
+
* that creates Quilt packages from Benchling lab notebook entries.
|
|
7
|
+
*
|
|
8
|
+
* @example Basic usage
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import * as cdk from 'aws-cdk-lib';
|
|
11
|
+
* import { BenchlingWebhookStack } from 'quilt-benchling-webhook';
|
|
12
|
+
*
|
|
13
|
+
* const app = new cdk.App();
|
|
14
|
+
* new BenchlingWebhookStack(app, 'MyBenchlingWebhook', {
|
|
15
|
+
* env: { account: '123456789012', region: 'us-east-1' },
|
|
16
|
+
* bucketName: 'my-data-bucket',
|
|
17
|
+
* queueName: 'my-packager-queue',
|
|
18
|
+
* benchlingClientId: process.env.BENCHLING_CLIENT_ID!,
|
|
19
|
+
* benchlingClientSecret: process.env.BENCHLING_CLIENT_SECRET!,
|
|
20
|
+
* benchlingTenant: 'my-org',
|
|
21
|
+
* quiltCatalog: 'my-catalog.quiltdata.com',
|
|
22
|
+
* quiltDatabase: 'my_athena_db',
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @module quilt-benchling-webhook
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.EcrRepository = exports.AlbApiGateway = exports.FargateService = exports.BenchlingWebhookStack = void 0;
|
|
30
|
+
var benchling_webhook_stack_1 = require("./benchling-webhook-stack");
|
|
31
|
+
Object.defineProperty(exports, "BenchlingWebhookStack", { enumerable: true, get: function () { return benchling_webhook_stack_1.BenchlingWebhookStack; } });
|
|
32
|
+
var fargate_service_1 = require("./fargate-service");
|
|
33
|
+
Object.defineProperty(exports, "FargateService", { enumerable: true, get: function () { return fargate_service_1.FargateService; } });
|
|
34
|
+
var alb_api_gateway_1 = require("./alb-api-gateway");
|
|
35
|
+
Object.defineProperty(exports, "AlbApiGateway", { enumerable: true, get: function () { return alb_api_gateway_1.AlbApiGateway; } });
|
|
36
|
+
var ecr_repository_1 = require("./ecr-repository");
|
|
37
|
+
Object.defineProperty(exports, "EcrRepository", { enumerable: true, get: function () { return ecr_repository_1.EcrRepository; } });
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAEH,qEAAmG;AAA1F,gIAAA,qBAAqB,OAAA;AAC9B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as stepfunctions from "aws-cdk-lib/aws-stepfunctions";
|
|
2
|
+
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
3
|
+
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
4
|
+
import { Construct } from "constructs";
|
|
5
|
+
export declare abstract class BaseTemplate {
|
|
6
|
+
protected readonly scope: Construct;
|
|
7
|
+
protected readonly name: string;
|
|
8
|
+
constructor(scope: Construct);
|
|
9
|
+
protected abstract template(): string;
|
|
10
|
+
protected abstract createContent(): stepfunctions.Pass;
|
|
11
|
+
createMarkdown(): stepfunctions.Chain;
|
|
12
|
+
write(stringProcessor: lambda.IFunction, bucket: s3.IBucket, key: string): stepfunctions.Chain;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=base-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-template.d.ts","sourceRoot":"","sources":["../../../lib/templates/base-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,8BAAsB,YAAY;IAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEpB,KAAK,EAAE,SAAS;IAK5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM;IACrC,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI;IAE/C,cAAc,IAAI,aAAa,CAAC,KAAK;IAerC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK;CAkBxG"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.BaseTemplate = void 0;
|
|
37
|
+
const stepfunctions = __importStar(require("aws-cdk-lib/aws-stepfunctions"));
|
|
38
|
+
const tasks = __importStar(require("aws-cdk-lib/aws-stepfunctions-tasks"));
|
|
39
|
+
class BaseTemplate {
|
|
40
|
+
constructor(scope) {
|
|
41
|
+
this.scope = scope;
|
|
42
|
+
this.name = this.constructor.name;
|
|
43
|
+
}
|
|
44
|
+
createMarkdown() {
|
|
45
|
+
return stepfunctions.Chain
|
|
46
|
+
.start(this.createContent())
|
|
47
|
+
.next(new stepfunctions.Pass(this.scope, `Create${this.name}Markdown`, {
|
|
48
|
+
parameters: {
|
|
49
|
+
"markdown.$": "$.content.content",
|
|
50
|
+
},
|
|
51
|
+
resultPath: "$.markdown",
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
write(stringProcessor, bucket, key) {
|
|
55
|
+
return this.createMarkdown()
|
|
56
|
+
.next(new tasks.LambdaInvoke(this.scope, `Write${this.name}`, {
|
|
57
|
+
lambdaFunction: stringProcessor,
|
|
58
|
+
payload: stepfunctions.TaskInput.fromObject({
|
|
59
|
+
bucket: bucket.bucketName,
|
|
60
|
+
key: stepfunctions.JsonPath.stringAt(`States.Format('{}/{}', $.packageName, '${key}')`),
|
|
61
|
+
body: stepfunctions.JsonPath.stringAt("$.markdown.markdown"),
|
|
62
|
+
}),
|
|
63
|
+
resultPath: "$.writeResult",
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.BaseTemplate = BaseTemplate;
|
|
68
|
+
//# sourceMappingURL=base-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-template.js","sourceRoot":"","sources":["../../../lib/templates/base-template.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAA+D;AAC/D,2EAA6D;AAK7D,MAAsB,YAAY;IAI9B,YAAY,KAAgB;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtC,CAAC;IAKM,cAAc;QACjB,OAAO,aAAa,CAAC,KAAK;aACrB,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;aAC3B,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CACxB,IAAI,CAAC,KAAK,EACV,SAAS,IAAI,CAAC,IAAI,UAAU,EAC5B;YACI,UAAU,EAAE;gBACR,YAAY,EAAE,mBAAmB;aACpC;YACD,UAAU,EAAE,YAAY;SAC3B,CACJ,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,eAAiC,EAAE,MAAkB,EAAE,GAAW;QAC3E,OAAO,IAAI,CAAC,cAAc,EAAE;aACvB,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CACxB,IAAI,CAAC,KAAK,EACV,QAAQ,IAAI,CAAC,IAAI,EAAE,EACnB;YACI,cAAc,EAAE,eAAe;YAC/B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC;gBACxC,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAChC,0CAA0C,GAAG,IAAI,CACpD;gBACD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC;aAC/D,CAAC;YACF,UAAU,EAAE,eAAe;SAC9B,CACJ,CAAC,CAAC;IACX,CAAC;CACJ;AA7CD,oCA6CC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as stepfunctions from "aws-cdk-lib/aws-stepfunctions";
|
|
2
|
+
import { BaseTemplate } from "./base-template";
|
|
3
|
+
export declare class ReadmeTemplate extends BaseTemplate {
|
|
4
|
+
protected template(): string;
|
|
5
|
+
protected createContent(): stepfunctions.Pass;
|
|
6
|
+
private setupFiles;
|
|
7
|
+
private formatAuthors;
|
|
8
|
+
private joinListVariables;
|
|
9
|
+
createMarkdown(): stepfunctions.Chain;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=readme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.d.ts","sourceRoot":"","sources":["../../../lib/templates/readme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,cAAe,SAAQ,YAAY;IAC5C,SAAS,CAAC,QAAQ,IAAI,MAAM;IAe5B,SAAS,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI;IA2B7C,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IAMlB,cAAc,IAAI,aAAa,CAAC,KAAK;CAO/C"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ReadmeTemplate = void 0;
|
|
37
|
+
const stepfunctions = __importStar(require("aws-cdk-lib/aws-stepfunctions"));
|
|
38
|
+
const constants_1 = require("../constants");
|
|
39
|
+
const base_template_1 = require("./base-template");
|
|
40
|
+
class ReadmeTemplate extends base_template_1.BaseTemplate {
|
|
41
|
+
template() {
|
|
42
|
+
return "# [{}]({})\n\n" +
|
|
43
|
+
"## {}\n\n" +
|
|
44
|
+
"* **Entry ID**: {}\n" +
|
|
45
|
+
"* **Display ID**: {}\n" +
|
|
46
|
+
"* **Folder ID**: {}\n" +
|
|
47
|
+
"* **API URL**: {}\n" +
|
|
48
|
+
"* **Created**: {} by {}\n" +
|
|
49
|
+
"* **Modified**: {}\n\n" +
|
|
50
|
+
"## Author (first only)\n\n{}\n\n" +
|
|
51
|
+
"## Files\n\n" +
|
|
52
|
+
"- [{}](./{}): Entry data\n" +
|
|
53
|
+
"- [{}](./{}): Webhook event message\n";
|
|
54
|
+
}
|
|
55
|
+
createContent() {
|
|
56
|
+
return new stepfunctions.Pass(this.scope, "CreateReadmeContent", {
|
|
57
|
+
parameters: {
|
|
58
|
+
"content.$": "States.Format('" + this.template() + "'" +
|
|
59
|
+
", $.entry.entryData.name" + // H1 title (name)
|
|
60
|
+
", $.entry.entryData.webURL" + // H1 url
|
|
61
|
+
", $.entry.entryData.displayId" + // Blockquote (display ID)
|
|
62
|
+
", $.entry.entryData.id" + // Entry ID
|
|
63
|
+
", $.entry.entryData.displayId" + // Display ID
|
|
64
|
+
", $.entry.entryData.folderId" + // Folder ID
|
|
65
|
+
", $.entry.entryData.apiURL" + // API URL
|
|
66
|
+
", $.entry.entryData.createdAt" + // Created timestamp
|
|
67
|
+
", $.entry.entryData.creator.name" + // Creator name
|
|
68
|
+
", $.entry.entryData.modifiedAt" + // Modified timestamp
|
|
69
|
+
", States.Format('* {} <{}@{}>', $.entry.entryData.authors[0].name, $.entry.entryData.authors[0].handle, $.entry.entryData.authors[0].id)" + // First author only for simplicity
|
|
70
|
+
", $.files.FILES.ENTRY_JSON, $.files.FILES.ENTRY_JSON" + // Files section - entry.json
|
|
71
|
+
", $.files.FILES.INPUT_JSON, $.files.FILES.INPUT_JSON" + // Files section - input.json
|
|
72
|
+
")",
|
|
73
|
+
},
|
|
74
|
+
resultPath: "$.content",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
setupFiles() {
|
|
78
|
+
return new stepfunctions.Pass(this.scope, "SetupREADME", {
|
|
79
|
+
parameters: {
|
|
80
|
+
"FILES": constants_1.FILES,
|
|
81
|
+
},
|
|
82
|
+
resultPath: "$.files",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
formatAuthors() {
|
|
86
|
+
// Simple pass - just pass through the authors array
|
|
87
|
+
return new stepfunctions.Pass(this.scope, "FormatAuthors", {
|
|
88
|
+
resultPath: stepfunctions.JsonPath.DISCARD,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
joinListVariables() {
|
|
92
|
+
return new stepfunctions.Pass(this.scope, "JoinFormattedLists", {
|
|
93
|
+
resultPath: stepfunctions.JsonPath.DISCARD,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
createMarkdown() {
|
|
97
|
+
return stepfunctions.Chain
|
|
98
|
+
.start(this.setupFiles())
|
|
99
|
+
.next(this.formatAuthors())
|
|
100
|
+
.next(this.joinListVariables())
|
|
101
|
+
.next(super.createMarkdown());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.ReadmeTemplate = ReadmeTemplate;
|
|
105
|
+
//# sourceMappingURL=readme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../lib/templates/readme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAA+D;AAC/D,4CAAqC;AACrC,mDAA+C;AAE/C,MAAa,cAAe,SAAQ,4BAAY;IAClC,QAAQ;QACd,OAAO,gBAAgB;YACnB,WAAW;YACX,sBAAsB;YACtB,wBAAwB;YACxB,uBAAuB;YACvB,qBAAqB;YACrB,2BAA2B;YAC3B,wBAAwB;YACxB,kCAAkC;YAClC,cAAc;YACd,4BAA4B;YAC5B,uCAAuC,CAAC;IAChD,CAAC;IAES,aAAa;QACnB,OAAO,IAAI,aAAa,CAAC,IAAI,CACzB,IAAI,CAAC,KAAK,EACV,qBAAqB,EACrB;YACI,UAAU,EAAE;gBACR,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;oBAClD,0BAA0B,GAAI,kBAAkB;oBAChD,4BAA4B,GAAG,SAAS;oBACxC,+BAA+B,GAAG,0BAA0B;oBAC5D,wBAAwB,GAAG,WAAW;oBACtC,+BAA+B,GAAG,aAAa;oBAC/C,8BAA8B,GAAG,YAAY;oBAC7C,4BAA4B,GAAG,UAAU;oBACzC,+BAA+B,GAAG,oBAAoB;oBACtD,kCAAkC,GAAG,eAAe;oBACpD,gCAAgC,GAAG,qBAAqB;oBACxD,0IAA0I,GAAG,mCAAmC;oBAChL,sDAAsD,GAAG,6BAA6B;oBACtF,sDAAsD,GAAG,6BAA6B;oBACtF,GAAG;aACV;YACD,UAAU,EAAE,WAAW;SAC1B,CACJ,CAAC;IACN,CAAC;IAEO,UAAU;QACd,OAAO,IAAI,aAAa,CAAC,IAAI,CACzB,IAAI,CAAC,KAAK,EACV,aAAa,EACb;YACI,UAAU,EAAE;gBACR,OAAO,EAAE,iBAAK;aACjB;YACD,UAAU,EAAE,SAAS;SACxB,CACJ,CAAC;IACN,CAAC;IAEO,aAAa;QACjB,oDAAoD;QACpD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE;YACvD,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO;SAC7C,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB;QACrB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE;YAC5D,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO;SAC7C,CAAC,CAAC;IACP,CAAC;IAEM,cAAc;QACjB,OAAO,aAAa,CAAC,KAAK;aACrB,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;aAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC9B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,CAAC;CACJ;AA5ED,wCA4EC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface Config {
|
|
2
|
+
quiltCatalog: string;
|
|
3
|
+
quiltUserBucket: string;
|
|
4
|
+
quiltDatabase: string;
|
|
5
|
+
benchlingTenant: string;
|
|
6
|
+
benchlingClientId: string;
|
|
7
|
+
benchlingClientSecret: string;
|
|
8
|
+
benchlingAppDefinitionId?: string;
|
|
9
|
+
cdkAccount: string;
|
|
10
|
+
cdkRegion: string;
|
|
11
|
+
awsProfile?: string;
|
|
12
|
+
queueName: string;
|
|
13
|
+
sqsQueueUrl: string;
|
|
14
|
+
pkgPrefix?: string;
|
|
15
|
+
pkgKey?: string;
|
|
16
|
+
logLevel?: string;
|
|
17
|
+
webhookAllowList?: string;
|
|
18
|
+
enableWebhookVerification?: string;
|
|
19
|
+
createEcrRepository?: string;
|
|
20
|
+
ecrRepositoryName?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ConfigOptions {
|
|
23
|
+
envFile?: string;
|
|
24
|
+
catalog?: string;
|
|
25
|
+
bucket?: string;
|
|
26
|
+
tenant?: string;
|
|
27
|
+
clientId?: string;
|
|
28
|
+
clientSecret?: string;
|
|
29
|
+
appId?: string;
|
|
30
|
+
profile?: string;
|
|
31
|
+
region?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ValidationResult {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
errors: ValidationError[];
|
|
36
|
+
warnings: string[];
|
|
37
|
+
}
|
|
38
|
+
export interface ValidationError {
|
|
39
|
+
field: string;
|
|
40
|
+
message: string;
|
|
41
|
+
canInfer: boolean;
|
|
42
|
+
helpText?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load .env file and expand variables
|
|
46
|
+
*/
|
|
47
|
+
export declare function loadDotenv(filePath: string): Record<string, string>;
|
|
48
|
+
/**
|
|
49
|
+
* Load configuration from multiple sources with priority:
|
|
50
|
+
* 1. CLI options (highest)
|
|
51
|
+
* 2. Environment variables
|
|
52
|
+
* 3. .env file
|
|
53
|
+
* 4. Inferred values (will be added separately)
|
|
54
|
+
*/
|
|
55
|
+
export declare function loadConfigSync(options?: ConfigOptions): Partial<Config>;
|
|
56
|
+
/**
|
|
57
|
+
* Merge inferred configuration with loaded config
|
|
58
|
+
*/
|
|
59
|
+
export declare function mergeInferredConfig(config: Partial<Config>, inferredVars: Record<string, string>): Partial<Config>;
|
|
60
|
+
/**
|
|
61
|
+
* Validate configuration and return detailed errors
|
|
62
|
+
*/
|
|
63
|
+
export declare function validateConfig(config: Partial<Config>): ValidationResult;
|
|
64
|
+
/**
|
|
65
|
+
* Format validation errors for CLI display
|
|
66
|
+
*/
|
|
67
|
+
export declare function formatValidationErrors(result: ValidationResult): string;
|
|
68
|
+
//# sourceMappingURL=config.d.ts.map
|