@quiltdata/benchling-webhook 0.8.8 → 0.8.9-20251130T212657Z
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 +110 -0
- package/dist/bin/benchling-webhook.js +6 -0
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/cli.js +37 -2
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/commands/deploy.d.ts +2 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +122 -2
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/commands/destroy.d.ts +16 -0
- package/dist/bin/commands/destroy.d.ts.map +1 -0
- package/dist/bin/commands/destroy.js +258 -0
- package/dist/bin/commands/destroy.js.map +1 -0
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
- package/dist/bin/commands/infer-quilt-config.js +13 -8
- package/dist/bin/commands/infer-quilt-config.js.map +1 -1
- package/dist/bin/commands/logs.d.ts.map +1 -1
- package/dist/bin/commands/logs.js +29 -6
- package/dist/bin/commands/logs.js.map +1 -1
- package/dist/bin/commands/setup-profile.d.ts +1 -1
- package/dist/bin/commands/setup-profile.d.ts.map +1 -1
- package/dist/bin/commands/setup-profile.js +46 -1
- package/dist/bin/commands/setup-profile.js.map +1 -1
- package/dist/bin/commands/status.d.ts +17 -0
- package/dist/bin/commands/status.d.ts.map +1 -1
- package/dist/bin/commands/status.js +186 -35
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/commands/sync-secrets.d.ts +1 -1
- package/dist/bin/commands/sync-secrets.js +1 -1
- package/dist/bin/xdg-launch.d.ts +1 -1
- package/dist/bin/xdg-launch.d.ts.map +1 -1
- package/dist/bin/xdg-launch.js +105 -26
- package/dist/bin/xdg-launch.js.map +1 -1
- package/dist/lib/benchling-webhook-stack.d.ts +1 -1
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +83 -17
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +1 -1
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +4 -5
- package/dist/lib/configuration-saver.js.map +1 -1
- package/dist/lib/constants.d.ts +5 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +6 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/fargate-service.d.ts +4 -5
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +14 -59
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +3 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/network-load-balancer.d.ts +27 -0
- package/dist/lib/network-load-balancer.d.ts.map +1 -0
- package/dist/lib/network-load-balancer.js +109 -0
- package/dist/lib/network-load-balancer.js.map +1 -0
- package/dist/lib/rest-api-gateway.d.ts +22 -0
- package/dist/lib/rest-api-gateway.d.ts.map +1 -0
- package/dist/lib/rest-api-gateway.js +221 -0
- package/dist/lib/rest-api-gateway.js.map +1 -0
- package/dist/lib/types/config.d.ts +53 -8
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +1 -1
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/service-resolver.d.ts +1 -1
- package/dist/lib/utils/service-resolver.js +1 -1
- package/dist/lib/wizard/phase2-stack-query.d.ts.map +1 -1
- package/dist/lib/wizard/phase2-stack-query.js +57 -14
- package/dist/lib/wizard/phase2-stack-query.js.map +1 -1
- package/dist/lib/wizard/phase3-parameter-collection.d.ts.map +1 -1
- package/dist/lib/wizard/phase3-parameter-collection.js +55 -1
- package/dist/lib/wizard/phase3-parameter-collection.js.map +1 -1
- package/dist/lib/wizard/phase6-integrated-mode.d.ts.map +1 -1
- package/dist/lib/wizard/phase6-integrated-mode.js +3 -1
- package/dist/lib/wizard/phase6-integrated-mode.js.map +1 -1
- package/dist/lib/wizard/phase7-standalone-mode.d.ts.map +1 -1
- package/dist/lib/wizard/phase7-standalone-mode.js +3 -1
- package/dist/lib/wizard/phase7-standalone-mode.js.map +1 -1
- package/dist/lib/wizard/types.d.ts +24 -0
- package/dist/lib/wizard/types.d.ts.map +1 -1
- package/dist/lib/xdg-base.d.ts +17 -1
- package/dist/lib/xdg-base.d.ts.map +1 -1
- package/dist/lib/xdg-base.js +30 -1
- package/dist/lib/xdg-base.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +1 -1
- package/dist/lib/xdg-config.js +1 -1
- package/dist/package.json +6 -3
- package/dist/scripts/discover-vpc.d.ts +69 -0
- package/dist/scripts/discover-vpc.d.ts.map +1 -0
- package/dist/scripts/discover-vpc.js +196 -0
- package/dist/scripts/discover-vpc.js.map +1 -0
- package/package.json +6 -3
- package/dist/lib/alb-api-gateway.d.ts +0 -23
- package/dist/lib/alb-api-gateway.d.ts.map +0 -1
- package/dist/lib/alb-api-gateway.js +0 -211
- package/dist/lib/alb-api-gateway.js.map +0 -1
|
@@ -38,11 +38,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.BenchlingWebhookStack = void 0;
|
|
40
40
|
const cdk = __importStar(require("aws-cdk-lib"));
|
|
41
|
-
const s3 = __importStar(require("aws-cdk-lib/aws-s3"));
|
|
42
41
|
const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
|
|
43
42
|
const ecr = __importStar(require("aws-cdk-lib/aws-ecr"));
|
|
44
43
|
const fargate_service_1 = require("./fargate-service");
|
|
45
|
-
const
|
|
44
|
+
const rest_api_gateway_1 = require("./rest-api-gateway");
|
|
45
|
+
const network_load_balancer_1 = require("./network-load-balancer");
|
|
46
46
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
47
47
|
class BenchlingWebhookStack extends cdk.Stack {
|
|
48
48
|
constructor(scope, id, props) {
|
|
@@ -56,12 +56,12 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
56
56
|
" - config.benchling.secretArn: Secrets Manager secret ARN\n\n" +
|
|
57
57
|
"Run 'npm run setup' to configure your deployment.");
|
|
58
58
|
}
|
|
59
|
-
console.log(`Deploying with profile configuration (v${
|
|
59
|
+
console.log(`Deploying with profile configuration (v${package_json_1.default.version})`);
|
|
60
60
|
console.log(` Benchling Tenant: ${config.benchling.tenant}`);
|
|
61
61
|
console.log(` Region: ${config.deployment.region}`);
|
|
62
62
|
// Create CloudFormation parameters for runtime-configurable values
|
|
63
63
|
// These parameters can be updated via CloudFormation stack updates
|
|
64
|
-
// Explicit service parameters
|
|
64
|
+
// Explicit service parameters
|
|
65
65
|
// These replace runtime resolution from QuiltStackARN
|
|
66
66
|
const packagerQueueUrlParam = new cdk.CfnParameter(this, "PackagerQueueUrl", {
|
|
67
67
|
type: "String",
|
|
@@ -141,11 +141,44 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
141
141
|
const quiltDatabaseValue = quiltDatabaseParam.valueAsString;
|
|
142
142
|
// Bucket name will be resolved at runtime from CloudFormation outputs
|
|
143
143
|
// For CDK purposes, we use a placeholder for IAM permissions
|
|
144
|
-
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
// VPC Configuration
|
|
145
|
+
// Architecture mirrors ~/GitHub/deployment/t4/template/network.py (network_version=2.0)
|
|
146
|
+
// - Option 1: Use existing VPC (if vpcId specified in config)
|
|
147
|
+
// - Option 2: Create new VPC with private subnets and NAT Gateway (production HA setup)
|
|
148
|
+
const vpc = config.deployment.vpc?.vpcId
|
|
149
|
+
? ec2.Vpc.fromLookup(this, "ExistingVPC", {
|
|
150
|
+
vpcId: config.deployment.vpc.vpcId,
|
|
151
|
+
})
|
|
152
|
+
: new ec2.Vpc(this, "BenchlingWebhookVPC", {
|
|
153
|
+
maxAzs: 2,
|
|
154
|
+
natGateways: 2, // Mirror production: 1 NAT Gateway per AZ for high availability
|
|
155
|
+
subnetConfiguration: [
|
|
156
|
+
{
|
|
157
|
+
name: "Public",
|
|
158
|
+
subnetType: ec2.SubnetType.PUBLIC,
|
|
159
|
+
cidrMask: 24,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "Private",
|
|
163
|
+
subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS, // Private + NAT Gateway
|
|
164
|
+
cidrMask: 24,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
});
|
|
168
|
+
// Validate VPC has private subnets (required for VPC Link and ECS with assignPublicIp: false)
|
|
169
|
+
if (vpc.privateSubnets.length === 0) {
|
|
170
|
+
const vpcIdentifier = config.deployment.vpc?.vpcId || "created";
|
|
171
|
+
throw new Error(`VPC (${vpcIdentifier}) does not have private subnets. ` +
|
|
172
|
+
"The architecture requires private subnets with NAT Gateway for:\n" +
|
|
173
|
+
" - VPC Link to connect API Gateway to ECS tasks\n" +
|
|
174
|
+
" - ECS Fargate tasks with assignPublicIp: false\n\n" +
|
|
175
|
+
"If using an existing VPC, ensure it has:\n" +
|
|
176
|
+
" - Private subnets in at least 2 availability zones\n" +
|
|
177
|
+
" - NAT Gateway(s) for outbound internet access\n" +
|
|
178
|
+
" - Proper route tables configured\n\n" +
|
|
179
|
+
"Or omit vpc.vpcId from config to auto-create a VPC with the correct configuration.");
|
|
180
|
+
}
|
|
181
|
+
console.log(`Using VPC: ${config.deployment.vpc?.vpcId || "auto-created"} (${vpc.privateSubnets.length} private subnets)`);
|
|
149
182
|
// HARDCODED: Always use the quiltdata AWS account for ECR images
|
|
150
183
|
const account = "712023778557";
|
|
151
184
|
const region = "us-east-1";
|
|
@@ -153,6 +186,11 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
153
186
|
const ecrArn = `arn:aws:ecr:${region}:${account}:repository/${repoName}`;
|
|
154
187
|
const ecrRepo = ecr.Repository.fromRepositoryArn(this, "ExistingEcrRepository", ecrArn);
|
|
155
188
|
const ecrImageUri = `${account}.dkr.ecr.${region}.amazonaws.com/${repoName}:${imageTagValue}`;
|
|
189
|
+
// Create Network Load Balancer for ECS service
|
|
190
|
+
// NLB provides reliable health checks for ECS tasks
|
|
191
|
+
this.nlb = new network_load_balancer_1.NetworkLoadBalancer(this, "NetworkLoadBalancer", {
|
|
192
|
+
vpc,
|
|
193
|
+
});
|
|
156
194
|
// Create the Fargate service
|
|
157
195
|
// Use imageTag for stackVersion if it looks like a timestamped dev version
|
|
158
196
|
// (e.g., "0.7.0-20251104T000139Z"), otherwise use package.json version
|
|
@@ -161,13 +199,13 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
161
199
|
// Build Fargate Service props using new config structure
|
|
162
200
|
this.fargateService = new fargate_service_1.FargateService(this, "FargateService", {
|
|
163
201
|
vpc,
|
|
164
|
-
bucket: this.bucket,
|
|
165
202
|
config: config,
|
|
166
203
|
ecrRepository: ecrRepo,
|
|
204
|
+
targetGroup: this.nlb.targetGroup, // NLB target group for ECS tasks
|
|
167
205
|
imageTag: imageTagValue,
|
|
168
206
|
stackVersion: stackVersion,
|
|
169
207
|
// Runtime-configurable parameters
|
|
170
|
-
// New explicit service parameters
|
|
208
|
+
// New explicit service parameters
|
|
171
209
|
packagerQueueUrl: packagerQueueUrlValue,
|
|
172
210
|
athenaUserDatabase: athenaUserDatabaseValue,
|
|
173
211
|
quiltWebHost: quiltWebHostValue,
|
|
@@ -184,13 +222,24 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
184
222
|
quiltDatabase: quiltDatabaseValue,
|
|
185
223
|
logLevel: logLevelValue,
|
|
186
224
|
});
|
|
187
|
-
//
|
|
188
|
-
|
|
189
|
-
|
|
225
|
+
// Get stage from environment or default to prod
|
|
226
|
+
const stage = process.env.STAGE || "prod";
|
|
227
|
+
// Create REST API v1 that routes through VPC Link to the NLB
|
|
228
|
+
// v1.0.0: REST API with resource policy replaces HTTP API v2 + WAF
|
|
229
|
+
this.api = new rest_api_gateway_1.RestApiGateway(this, "RestApiGateway", {
|
|
230
|
+
vpc: vpc,
|
|
231
|
+
networkLoadBalancer: this.nlb.loadBalancer,
|
|
232
|
+
nlbListener: this.nlb.listener,
|
|
233
|
+
serviceSecurityGroup: this.fargateService.securityGroup,
|
|
190
234
|
config: config,
|
|
235
|
+
stage: stage,
|
|
191
236
|
});
|
|
192
|
-
// Store webhook endpoint for easy access
|
|
193
|
-
|
|
237
|
+
// Store webhook endpoint for easy access (REST API v1 with stage)
|
|
238
|
+
// REST API URL includes the stage in the path
|
|
239
|
+
this.webhookEndpoint = `${this.api.api.url}${stage}/`;
|
|
240
|
+
if (!this.api.api.url) {
|
|
241
|
+
throw new Error("REST API URL was not generated. This should not happen.");
|
|
242
|
+
}
|
|
194
243
|
// Export webhook endpoint as a stack output
|
|
195
244
|
new cdk.CfnOutput(this, "WebhookEndpoint", {
|
|
196
245
|
value: this.webhookEndpoint,
|
|
@@ -212,9 +261,26 @@ class BenchlingWebhookStack extends cdk.Stack {
|
|
|
212
261
|
description: "CloudWatch log group for ECS container logs",
|
|
213
262
|
});
|
|
214
263
|
new cdk.CfnOutput(this, "ApiGatewayLogGroup", {
|
|
215
|
-
value:
|
|
264
|
+
value: "/aws/apigateway/benchling-webhook-rest",
|
|
216
265
|
description: "CloudWatch log group for API Gateway access logs",
|
|
217
266
|
});
|
|
267
|
+
new cdk.CfnOutput(this, "ApiType", {
|
|
268
|
+
value: "REST API v1",
|
|
269
|
+
description: "API Gateway type",
|
|
270
|
+
});
|
|
271
|
+
new cdk.CfnOutput(this, "ApiStage", {
|
|
272
|
+
value: stage,
|
|
273
|
+
description: "API Gateway deployment stage",
|
|
274
|
+
});
|
|
275
|
+
// Export NLB information
|
|
276
|
+
new cdk.CfnOutput(this, "NetworkLoadBalancerDns", {
|
|
277
|
+
value: this.nlb.loadBalancer.loadBalancerDnsName,
|
|
278
|
+
description: "Network Load Balancer DNS name (internal)",
|
|
279
|
+
});
|
|
280
|
+
new cdk.CfnOutput(this, "TargetGroupArn", {
|
|
281
|
+
value: this.nlb.targetGroup.targetGroupArn,
|
|
282
|
+
description: "NLB Target Group ARN for ECS tasks",
|
|
283
|
+
});
|
|
218
284
|
// Export configuration metadata
|
|
219
285
|
new cdk.CfnOutput(this, "ConfigVersion", {
|
|
220
286
|
value: config._metadata.version,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchling-webhook-stack.js","sourceRoot":"","sources":["../../lib/benchling-webhook-stack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"benchling-webhook-stack.js","sourceRoot":"","sources":["../../lib/benchling-webhook-stack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,yDAA2C;AAC3C,yDAA2C;AAE3C,uDAAmD;AACnD,yDAAoD;AACpD,mEAA8D;AAE9D,mEAA0C;AAgB1C,MAAa,qBAAsB,SAAQ,GAAG,CAAC,KAAK;IAMhD,YACI,KAAgB,EAChB,EAAU,EACV,KAAiC;QAEjC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAExB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAEzB,yCAAyC;QACzC,4EAA4E;QAC5E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM,CAAC;QACrE,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACX,qDAAqD;gBACrD,gEAAgE;gBAChE,mDAAmD,CACtD,CAAC;QACN,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,sBAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAErD,mEAAmE;QACnE,mEAAmE;QAEnE,8BAA8B;QAC9B,sDAAsD;QACtD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE;YACzE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+CAA+C;YAC5D,OAAO,EAAE,EAAE,EAAG,sCAAsC;SACvD,CAAC,CAAC;QAEH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAC7E,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,EAAE,EAAG,sCAAsC;SACvD,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE;YACjE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,EAAE,EAAG,sCAAsC;SACvD,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE;YACvE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE;YACzE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;YAC5E,OAAO,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,EAAE;YAC/E,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,EAAE;YAC/E,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2EAA2E;YACxF,OAAO,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAC1E,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0DAA0D;YACvE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;SACtC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE;YACzD,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM;YACxC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;SACvD,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE;YACzD,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,QAAQ;SAClD,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;YACnE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kFAAkF;YAC/F,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;SAClC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE;YACnE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sFAAsF;YACnG,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;SACvC,CAAC,CAAC;QAEH,uDAAuD;QACvD,iDAAiD;QACjD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAClE,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,aAAa,CAAC;QACtE,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,aAAa,CAAC;QAC1D,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAChE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,aAAa,CAAC;QAClE,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,aAAa,CAAC;QACxE,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,aAAa,CAAC;QACxE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAChE,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;QAClD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;QAClD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC;QAC5D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC;QAE5D,sEAAsE;QACtE,6DAA6D;QAE7D,oBAAoB;QACpB,wFAAwF;QACxF,8DAA8D;QAC9D,wFAAwF;QACxF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK;YACpC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE;gBACtC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK;aACrC,CAAC;YACF,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,qBAAqB,EAAE;gBACvC,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,CAAC,EAAE,gEAAgE;gBAChF,mBAAmB,EAAE;oBACjB;wBACI,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM;wBACjC,QAAQ,EAAE,EAAE;qBACf;oBACD;wBACI,IAAI,EAAE,SAAS;wBACf,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,wBAAwB;wBACxE,QAAQ,EAAE,EAAE;qBACf;iBACJ;aACJ,CAAC,CAAC;QAEP,8FAA8F;QAC9F,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,SAAS,CAAC;YAChE,MAAM,IAAI,KAAK,CACX,QAAQ,aAAa,mCAAmC;gBACpD,mEAAmE;gBACnE,oDAAoD;gBACpD,sDAAsD;gBACtD,4CAA4C;gBAC5C,wDAAwD;gBACxD,mDAAmD;gBACnD,wCAAwC;gBACxC,oFAAoF,CAC3F,CAAC;QACN,CAAC;QAED,OAAO,CAAC,GAAG,CACP,cAAc,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,cAAc,KAAK,GAAG,CAAC,cAAc,CAAC,MAAM,mBAAmB,CAChH,CAAC;QAEF,iEAAiE;QACjE,MAAM,OAAO,GAAG,cAAc,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,IAAI,qBAAqB,CAAC;QAC1E,MAAM,MAAM,GAAG,eAAe,MAAM,IAAI,OAAO,eAAe,QAAQ,EAAE,CAAC;QACzE,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,GAAG,OAAO,YAAY,MAAM,kBAAkB,QAAQ,IAAI,aAAa,EAAE,CAAC;QAE9F,+CAA+C;QAC/C,oDAAoD;QACpD,IAAI,CAAC,GAAG,GAAG,IAAI,2CAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE;YAC5D,GAAG;SACN,CAAC,CAAC;QAEH,6BAA6B;QAC7B,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAW,CAAC,OAAO,CAAC;QAExE,yDAAyD;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC7D,GAAG;YACH,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAG,iCAAiC;YACrE,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,YAAY;YAC1B,kCAAkC;YAClC,kCAAkC;YAClC,gBAAgB,EAAE,qBAAqB;YACvC,kBAAkB,EAAE,uBAAuB;YAC3C,YAAY,EAAE,iBAAiB;YAC/B,eAAe,EAAE,oBAAoB;YACrC,8DAA8D;YAC9D,gBAAgB,EAAE,qBAAqB;YACvC,mBAAmB,EAAE,wBAAwB;YAC7C,mBAAmB,EAAE,wBAAwB;YAC7C,gFAAgF;YAChF,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;YACvC,oBAAoB;YACpB,eAAe,EAAE,oBAAoB;YACrC,aAAa,EAAE,kBAAkB;YACjC,aAAa,EAAE,kBAAkB;YACjC,QAAQ,EAAE,aAAa;SAC1B,CAAC,CAAC;QAEH,gDAAgD;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC;QAE1C,6DAA6D;QAC7D,mEAAmE;QACnE,IAAI,CAAC,GAAG,GAAG,IAAI,iCAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAClD,GAAG,EAAE,GAAG;YACR,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;YAC1C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;YAC9B,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa;YACvD,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,kEAAkE;QAClE,8CAA8C;QAC9C,IAAI,CAAC,eAAe,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QAED,4CAA4C;QAC5C,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,eAAe;YAC3B,WAAW,EAAE,gEAAgE;SAChF,CAAC,CAAC;QAEH,kCAAkC;QAClC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE;YACtC,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,sCAAsC;SACtD,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE;YACpC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,sBAAW,CAAC,OAAO;YAChE,WAAW,EAAE,eAAe;SAC/B,CAAC,CAAC;QAEH,+BAA+B;QAC/B,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY;YAChD,WAAW,EAAE,6CAA6C;SAC7D,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAC1C,KAAK,EAAE,wCAAwC;YAC/C,WAAW,EAAE,kDAAkD;SAClE,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE;YAC/B,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,kBAAkB;SAClC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE;YAChC,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,8BAA8B;SAC9C,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE;YAC9C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB;YAChD,WAAW,EAAE,2CAA2C;SAC3D,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc;YAC1C,WAAW,EAAE,oCAAoC;SACpD,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;YAC/B,WAAW,EAAE,8BAA8B;SAC9C,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;YAC9B,WAAW,EAAE,4CAA4C;SAC5D,CAAC,CAAC;IACP,CAAC;CAGJ;AA/SD,sDA+SC"}
|
|
@@ -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;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,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;AAI/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,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;IAwCzB;;;;;OAKG;WACW,WAAW,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc;IAShF;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAG5B"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.ConfigurationSaver = void 0;
|
|
7
7
|
const xdg_config_1 = require("./xdg-config");
|
|
8
8
|
const lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
9
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
9
10
|
/**
|
|
10
11
|
* Configuration saver for persisting configuration to XDG files
|
|
11
12
|
*/
|
|
@@ -47,7 +48,7 @@ class ConfigurationSaver {
|
|
|
47
48
|
const configWithMetadata = {
|
|
48
49
|
...finalConfig,
|
|
49
50
|
_metadata: {
|
|
50
|
-
version: metadata.version ||
|
|
51
|
+
version: metadata.version || package_json_1.default.version,
|
|
51
52
|
createdAt: finalConfig._metadata?.createdAt || metadata.savedAt,
|
|
52
53
|
updatedAt: metadata.savedAt,
|
|
53
54
|
source: source,
|
|
@@ -72,14 +73,12 @@ class ConfigurationSaver {
|
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
|
-
* Get the current version
|
|
76
|
+
* Get the current version from package.json
|
|
76
77
|
*
|
|
77
78
|
* @returns Version string
|
|
78
79
|
*/
|
|
79
80
|
static getVersion() {
|
|
80
|
-
|
|
81
|
-
// In production, this would read from package.json
|
|
82
|
-
return "0.7.0";
|
|
81
|
+
return package_json_1.default.version;
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
exports.ConfigurationSaver = ConfigurationSaver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-saver.js","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,gEAAiC;
|
|
1
|
+
{"version":3,"file":"configuration-saver.js","sourceRoot":"","sources":["../../lib/configuration-saver.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,gEAAiC;AACjC,mEAA0C;AAsB1C;;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,KAAK,EAAE,WAAW,GAAG,KAAK,EAC1B,OAAO,GAAG,SAAS,GACtB,GAAG,OAAO,CAAC;QAEZ,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,OAAO,KAAK,EAAE,CAAC;gBACb,iDAAiD;gBACjD,OAAO,CAAC,IAAI,CAAC,6DAA8D,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtG,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;gBAC7E,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,sBAAW,CAAC,OAAO;gBAChD,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,OAAO,sBAAW,CAAC,OAAO,CAAC;IAC/B,CAAC;;AAxFL,gDAyFC;AAxFG;;GAEG;AACY,mCAAgB,GAAqB,IAAI,CAAC"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -25,4 +25,9 @@ export declare const MIME_TYPES: {
|
|
|
25
25
|
readonly YML: "application/yaml";
|
|
26
26
|
readonly DEFAULT: "application/octet-stream";
|
|
27
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* API Gateway integration timeout in seconds.
|
|
30
|
+
* Must be longer than backend processing time (S3 writes + SQS sends + Fargate health checks).
|
|
31
|
+
*/
|
|
32
|
+
export declare const API_GATEWAY_INTEGRATION_TIMEOUT_SECONDS = 30;
|
|
28
33
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;CAKR,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAeb,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;CAKR,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAeb,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uCAAuC,KAAK,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MIME_TYPES = exports.FILES = exports.EXPORT_STATUS = void 0;
|
|
3
|
+
exports.API_GATEWAY_INTEGRATION_TIMEOUT_SECONDS = exports.MIME_TYPES = exports.FILES = exports.EXPORT_STATUS = void 0;
|
|
4
4
|
exports.EXPORT_STATUS = {
|
|
5
5
|
RUNNING: "RUNNING",
|
|
6
6
|
SUCCEEDED: "SUCCEEDED",
|
|
@@ -28,4 +28,9 @@ exports.MIME_TYPES = {
|
|
|
28
28
|
YML: "application/yaml",
|
|
29
29
|
DEFAULT: "application/octet-stream",
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* API Gateway integration timeout in seconds.
|
|
33
|
+
* Must be longer than backend processing time (S3 writes + SQS sends + Fargate health checks).
|
|
34
|
+
*/
|
|
35
|
+
exports.API_GATEWAY_INTEGRATION_TIMEOUT_SECONDS = 30;
|
|
31
36
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,KAAK,GAAG;IACjB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACd,CAAC;AAEE,QAAA,UAAU,GAAG;IACtB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,iBAAiB;IACtB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,kBAAkB;IACvB,OAAO,EAAE,0BAA0B;CAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IACzB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,KAAK,GAAG;IACjB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACd,CAAC;AAEE,QAAA,UAAU,GAAG;IACtB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,iBAAiB;IACtB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,kBAAkB;IACvB,OAAO,EAAE,0BAA0B;CAC7B,CAAC;AAEX;;;GAGG;AACU,QAAA,uCAAuC,GAAG,EAAE,CAAC"}
|
|
@@ -3,24 +3,23 @@ import * as ecr from "aws-cdk-lib/aws-ecr";
|
|
|
3
3
|
import * as ecs from "aws-cdk-lib/aws-ecs";
|
|
4
4
|
import * as elbv2 from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
5
5
|
import * as logs from "aws-cdk-lib/aws-logs";
|
|
6
|
-
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
7
6
|
import { Construct } from "constructs";
|
|
8
7
|
import { ProfileConfig } from "./types/config";
|
|
9
8
|
/**
|
|
10
|
-
* Properties for FargateService construct
|
|
9
|
+
* Properties for FargateService construct
|
|
11
10
|
*
|
|
12
11
|
* Uses ProfileConfig for structured configuration access.
|
|
13
12
|
* Runtime-configurable parameters can be overridden via CloudFormation parameters.
|
|
14
13
|
*
|
|
15
|
-
* **Breaking Change (
|
|
14
|
+
* **Breaking Change (v0.9.0)**: Removed stackArn in favor of explicit service environment variables.
|
|
16
15
|
* The explicit service parameters (packagerQueueUrl, athenaUserDatabase, quiltWebHost, icebergDatabase)
|
|
17
16
|
* are resolved at deployment time and passed directly to the container, eliminating runtime CloudFormation calls.
|
|
18
17
|
*/
|
|
19
18
|
export interface FargateServiceProps {
|
|
20
19
|
readonly vpc: ec2.IVpc;
|
|
21
|
-
readonly bucket: s3.IBucket;
|
|
22
20
|
readonly config: ProfileConfig;
|
|
23
21
|
readonly ecrRepository: ecr.IRepository;
|
|
22
|
+
readonly targetGroup: elbv2.INetworkTargetGroup;
|
|
24
23
|
readonly imageTag?: string;
|
|
25
24
|
readonly stackVersion?: string;
|
|
26
25
|
readonly packagerQueueUrl: string;
|
|
@@ -38,9 +37,9 @@ export interface FargateServiceProps {
|
|
|
38
37
|
}
|
|
39
38
|
export declare class FargateService extends Construct {
|
|
40
39
|
readonly service: ecs.FargateService;
|
|
41
|
-
readonly loadBalancer: elbv2.ApplicationLoadBalancer;
|
|
42
40
|
readonly cluster: ecs.Cluster;
|
|
43
41
|
readonly logGroup: logs.ILogGroup;
|
|
42
|
+
readonly securityGroup: ec2.ISecurityGroup;
|
|
44
43
|
/**
|
|
45
44
|
* Extract secret name from Secrets Manager ARN
|
|
46
45
|
*
|
|
@@ -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;AAC7C,OAAO,
|
|
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,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAI/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAGjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAe,SAAQ,SAAS;IACzC,SAAgB,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC;IAC5C,SAAgB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrC,SAAgB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;IACzC,SAAgB,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC;IAElD;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;gBAoBb,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CA4UvE"}
|
|
@@ -37,10 +37,8 @@ exports.FargateService = void 0;
|
|
|
37
37
|
const cdk = __importStar(require("aws-cdk-lib"));
|
|
38
38
|
const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
|
|
39
39
|
const ecs = __importStar(require("aws-cdk-lib/aws-ecs"));
|
|
40
|
-
const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2"));
|
|
41
40
|
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
42
41
|
const logs = __importStar(require("aws-cdk-lib/aws-logs"));
|
|
43
|
-
const s3 = __importStar(require("aws-cdk-lib/aws-s3"));
|
|
44
42
|
const constructs_1 = require("constructs");
|
|
45
43
|
class FargateService extends constructs_1.Construct {
|
|
46
44
|
/**
|
|
@@ -248,6 +246,7 @@ class FargateService extends constructs_1.Construct {
|
|
|
248
246
|
// AWS Configuration
|
|
249
247
|
AWS_REGION: region,
|
|
250
248
|
AWS_DEFAULT_REGION: region,
|
|
249
|
+
PORT: "8080",
|
|
251
250
|
// Quilt Services (v0.8.0+ service-specific - NO MORE STACK ARN!)
|
|
252
251
|
QUILT_WEB_HOST: props.quiltWebHost,
|
|
253
252
|
ATHENA_USER_DATABASE: props.athenaUserDatabase,
|
|
@@ -264,7 +263,7 @@ class FargateService extends constructs_1.Construct {
|
|
|
264
263
|
// Security Configuration (verification can be disabled for dev/test)
|
|
265
264
|
ENABLE_WEBHOOK_VERIFICATION: String(config.security?.enableVerification !== false),
|
|
266
265
|
// Application Configuration
|
|
267
|
-
|
|
266
|
+
APP_ENV: "production",
|
|
268
267
|
LOG_LEVEL: props.logLevel || config.logging?.level || "INFO",
|
|
269
268
|
};
|
|
270
269
|
// Add container with configured environment
|
|
@@ -276,7 +275,7 @@ class FargateService extends constructs_1.Construct {
|
|
|
276
275
|
}),
|
|
277
276
|
environment: environmentVars,
|
|
278
277
|
healthCheck: {
|
|
279
|
-
command: ["CMD-SHELL", "curl -f http://localhost:
|
|
278
|
+
command: ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"],
|
|
280
279
|
interval: cdk.Duration.seconds(30),
|
|
281
280
|
timeout: cdk.Duration.seconds(10),
|
|
282
281
|
retries: 3,
|
|
@@ -285,66 +284,26 @@ class FargateService extends constructs_1.Construct {
|
|
|
285
284
|
});
|
|
286
285
|
// Map container port
|
|
287
286
|
container.addPortMappings({
|
|
288
|
-
containerPort:
|
|
287
|
+
containerPort: 8080,
|
|
289
288
|
protocol: ecs.Protocol.TCP,
|
|
290
289
|
});
|
|
291
|
-
// Create S3 bucket for ALB access logs
|
|
292
|
-
const albLogsBucket = new s3.Bucket(this, "AlbLogsBucket", {
|
|
293
|
-
bucketName: `benchling-webhook-alb-logs-${account}`,
|
|
294
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
295
|
-
autoDeleteObjects: true,
|
|
296
|
-
lifecycleRules: [
|
|
297
|
-
{
|
|
298
|
-
expiration: cdk.Duration.days(7),
|
|
299
|
-
},
|
|
300
|
-
],
|
|
301
|
-
});
|
|
302
|
-
// Create Application Load Balancer
|
|
303
|
-
this.loadBalancer = new elbv2.ApplicationLoadBalancer(this, "ALB", {
|
|
304
|
-
vpc: props.vpc,
|
|
305
|
-
internetFacing: true,
|
|
306
|
-
loadBalancerName: "benchling-webhook-alb",
|
|
307
|
-
});
|
|
308
|
-
// Enable ALB access logs
|
|
309
|
-
this.loadBalancer.logAccessLogs(albLogsBucket, "alb-access-logs");
|
|
310
|
-
// Create ALB Target Group
|
|
311
|
-
const targetGroup = new elbv2.ApplicationTargetGroup(this, "TargetGroup", {
|
|
312
|
-
vpc: props.vpc,
|
|
313
|
-
port: 5000,
|
|
314
|
-
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
315
|
-
targetType: elbv2.TargetType.IP,
|
|
316
|
-
healthCheck: {
|
|
317
|
-
path: "/health/ready",
|
|
318
|
-
interval: cdk.Duration.seconds(30),
|
|
319
|
-
timeout: cdk.Duration.seconds(10),
|
|
320
|
-
healthyThresholdCount: 2,
|
|
321
|
-
unhealthyThresholdCount: 3,
|
|
322
|
-
healthyHttpCodes: "200",
|
|
323
|
-
},
|
|
324
|
-
deregistrationDelay: cdk.Duration.seconds(30),
|
|
325
|
-
});
|
|
326
|
-
// Add HTTP listener
|
|
327
|
-
this.loadBalancer.addListener("HttpListener", {
|
|
328
|
-
port: 80,
|
|
329
|
-
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
330
|
-
defaultAction: elbv2.ListenerAction.forward([targetGroup]),
|
|
331
|
-
});
|
|
332
290
|
// Create Security Group for Fargate tasks
|
|
333
|
-
|
|
291
|
+
this.securityGroup = new ec2.SecurityGroup(this, "FargateSecurityGroup", {
|
|
334
292
|
vpc: props.vpc,
|
|
335
293
|
description: "Security group for Benchling webhook Fargate tasks",
|
|
336
294
|
allowAllOutbound: true,
|
|
337
295
|
});
|
|
338
|
-
// Allow
|
|
339
|
-
|
|
340
|
-
// Create Fargate Service
|
|
296
|
+
// Allow traffic from NLB to reach the service on 8080
|
|
297
|
+
this.securityGroup.addIngressRule(ec2.Peer.ipv4(props.vpc.vpcCidrBlock), ec2.Port.tcp(8080), "Allow VPC traffic to service");
|
|
298
|
+
// Create Fargate Service with NLB target group integration
|
|
299
|
+
// Replaced Cloud Map with NLB for reliable health checks
|
|
341
300
|
this.service = new ecs.FargateService(this, "Service", {
|
|
342
301
|
cluster: this.cluster,
|
|
343
302
|
taskDefinition: taskDefinition,
|
|
344
303
|
desiredCount: 2,
|
|
345
304
|
serviceName: "benchling-webhook-service",
|
|
346
|
-
assignPublicIp:
|
|
347
|
-
securityGroups: [
|
|
305
|
+
assignPublicIp: false,
|
|
306
|
+
securityGroups: [this.securityGroup],
|
|
348
307
|
healthCheckGracePeriod: cdk.Duration.seconds(60),
|
|
349
308
|
minHealthyPercent: 50,
|
|
350
309
|
maxHealthyPercent: 200,
|
|
@@ -352,8 +311,9 @@ class FargateService extends constructs_1.Construct {
|
|
|
352
311
|
rollback: true,
|
|
353
312
|
},
|
|
354
313
|
});
|
|
355
|
-
//
|
|
356
|
-
|
|
314
|
+
// Register ECS service with NLB target group
|
|
315
|
+
// The NLB will perform HTTP health checks on /health endpoint
|
|
316
|
+
this.service.attachToNetworkTargetGroup(props.targetGroup);
|
|
357
317
|
// Configure auto-scaling
|
|
358
318
|
const scaling = this.service.autoScaleTaskCount({
|
|
359
319
|
minCapacity: 2,
|
|
@@ -372,11 +332,6 @@ class FargateService extends constructs_1.Construct {
|
|
|
372
332
|
scaleOutCooldown: cdk.Duration.seconds(60),
|
|
373
333
|
});
|
|
374
334
|
// Outputs
|
|
375
|
-
new cdk.CfnOutput(this, "LoadBalancerDNS", {
|
|
376
|
-
value: this.loadBalancer.loadBalancerDnsName,
|
|
377
|
-
description: "Load Balancer DNS Name",
|
|
378
|
-
exportName: "BenchlingWebhookALBDNS",
|
|
379
|
-
});
|
|
380
335
|
new cdk.CfnOutput(this, "ServiceName", {
|
|
381
336
|
value: this.service.serviceName,
|
|
382
337
|
description: "ECS Service Name",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fargate-service.js","sourceRoot":"","sources":["../../lib/fargate-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,yDAA2C;AAE3C,yDAA2C;
|
|
1
|
+
{"version":3,"file":"fargate-service.js","sourceRoot":"","sources":["../../lib/fargate-service.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
*/
|
|
27
27
|
export { BenchlingWebhookStack, type BenchlingWebhookStackProps } from "./benchling-webhook-stack";
|
|
28
28
|
export { FargateService } from "./fargate-service";
|
|
29
|
-
export {
|
|
29
|
+
export { RestApiGateway } from "./rest-api-gateway";
|
|
30
30
|
export { EcrRepository } from "./ecr-repository";
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
* @module quilt-benchling-webhook
|
|
27
27
|
*/
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.EcrRepository = exports.
|
|
29
|
+
exports.EcrRepository = exports.RestApiGateway = exports.FargateService = exports.BenchlingWebhookStack = void 0;
|
|
30
30
|
var benchling_webhook_stack_1 = require("./benchling-webhook-stack");
|
|
31
31
|
Object.defineProperty(exports, "BenchlingWebhookStack", { enumerable: true, get: function () { return benchling_webhook_stack_1.BenchlingWebhookStack; } });
|
|
32
32
|
var fargate_service_1 = require("./fargate-service");
|
|
33
33
|
Object.defineProperty(exports, "FargateService", { enumerable: true, get: function () { return fargate_service_1.FargateService; } });
|
|
34
|
-
var
|
|
35
|
-
Object.defineProperty(exports, "
|
|
34
|
+
var rest_api_gateway_1 = require("./rest-api-gateway");
|
|
35
|
+
Object.defineProperty(exports, "RestApiGateway", { enumerable: true, get: function () { return rest_api_gateway_1.RestApiGateway; } });
|
|
36
36
|
var ecr_repository_1 = require("./ecr-repository");
|
|
37
37
|
Object.defineProperty(exports, "EcrRepository", { enumerable: true, get: function () { return ecr_repository_1.EcrRepository; } });
|
|
38
38
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +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,
|
|
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,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as ec2 from "aws-cdk-lib/aws-ec2";
|
|
2
|
+
import * as elbv2 from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
export interface NetworkLoadBalancerProps {
|
|
5
|
+
readonly vpc: ec2.IVpc;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Network Load Balancer for ECS Fargate service
|
|
9
|
+
*
|
|
10
|
+
* Provides reliable health checks and routing for ECS tasks.
|
|
11
|
+
* Replaces Cloud Map service discovery which has issues with custom health checks.
|
|
12
|
+
*
|
|
13
|
+
* Architecture:
|
|
14
|
+
* - Internal NLB (not internet-facing)
|
|
15
|
+
* - TCP listener on port 80
|
|
16
|
+
* - Target Group with IP targets for ECS Fargate tasks
|
|
17
|
+
* - HTTP health checks on /health endpoint
|
|
18
|
+
*
|
|
19
|
+
* @since v0.9.0
|
|
20
|
+
*/
|
|
21
|
+
export declare class NetworkLoadBalancer extends Construct {
|
|
22
|
+
readonly loadBalancer: elbv2.NetworkLoadBalancer;
|
|
23
|
+
readonly targetGroup: elbv2.NetworkTargetGroup;
|
|
24
|
+
readonly listener: elbv2.NetworkListener;
|
|
25
|
+
constructor(scope: Construct, id: string, props: NetworkLoadBalancerProps);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=network-load-balancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-load-balancer.d.ts","sourceRoot":"","sources":["../../lib/network-load-balancer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,wCAAwC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,wBAAwB;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,SAAQ,SAAS;IAC9C,SAAgB,YAAY,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACxD,SAAgB,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACtD,SAAgB,QAAQ,EAAE,KAAK,CAAC,eAAe,CAAC;gBAEpC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB;CA0D5E"}
|