@quiltdata/benchling-webhook 0.4.13 → 0.5.0
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 +32 -21
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../lib/utils/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,MAAM;IAErB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAGlC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBnE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAyExE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA0CvE"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadDotenv = loadDotenv;
|
|
4
|
+
exports.loadConfigSync = loadConfigSync;
|
|
5
|
+
exports.mergeInferredConfig = mergeInferredConfig;
|
|
6
|
+
exports.validateConfig = validateConfig;
|
|
7
|
+
exports.formatValidationErrors = formatValidationErrors;
|
|
8
|
+
const dotenv_1 = require("dotenv");
|
|
9
|
+
const dotenv_expand_1 = require("dotenv-expand");
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
/**
|
|
13
|
+
* Load .env file and expand variables
|
|
14
|
+
*/
|
|
15
|
+
function loadDotenv(filePath) {
|
|
16
|
+
const resolvedPath = (0, path_1.resolve)(filePath);
|
|
17
|
+
if (!(0, fs_1.existsSync)(resolvedPath)) {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
const result = (0, dotenv_1.config)({ path: resolvedPath });
|
|
21
|
+
if (result.error) {
|
|
22
|
+
throw new Error(`Failed to load ${filePath}: ${result.error.message}`);
|
|
23
|
+
}
|
|
24
|
+
// Expand variables like ${VAR}
|
|
25
|
+
if (result.parsed) {
|
|
26
|
+
(0, dotenv_expand_1.expand)(result);
|
|
27
|
+
}
|
|
28
|
+
return result.parsed || {};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Load configuration from multiple sources with priority:
|
|
32
|
+
* 1. CLI options (highest)
|
|
33
|
+
* 2. Environment variables
|
|
34
|
+
* 3. .env file
|
|
35
|
+
* 4. Inferred values (will be added separately)
|
|
36
|
+
*/
|
|
37
|
+
function loadConfigSync(options = {}) {
|
|
38
|
+
// 1. Load .env file
|
|
39
|
+
const envFile = options.envFile || ".env";
|
|
40
|
+
const dotenvVars = (0, fs_1.existsSync)(envFile) ? loadDotenv(envFile) : {};
|
|
41
|
+
// 2. Merge with process.env
|
|
42
|
+
const envVars = { ...dotenvVars, ...process.env };
|
|
43
|
+
// 3. Build config with CLI options taking priority
|
|
44
|
+
const config = {
|
|
45
|
+
// Quilt
|
|
46
|
+
quiltCatalog: options.catalog || envVars.QUILT_CATALOG,
|
|
47
|
+
quiltUserBucket: options.bucket || envVars.QUILT_USER_BUCKET,
|
|
48
|
+
quiltDatabase: envVars.QUILT_DATABASE,
|
|
49
|
+
// Benchling
|
|
50
|
+
benchlingTenant: options.tenant || envVars.BENCHLING_TENANT,
|
|
51
|
+
benchlingClientId: options.clientId || envVars.BENCHLING_CLIENT_ID,
|
|
52
|
+
benchlingClientSecret: options.clientSecret || envVars.BENCHLING_CLIENT_SECRET,
|
|
53
|
+
benchlingAppDefinitionId: options.appId || envVars.BENCHLING_APP_DEFINITION_ID,
|
|
54
|
+
// AWS
|
|
55
|
+
cdkAccount: envVars.CDK_DEFAULT_ACCOUNT,
|
|
56
|
+
cdkRegion: options.region || envVars.CDK_DEFAULT_REGION || envVars.AWS_REGION,
|
|
57
|
+
awsProfile: options.profile || envVars.AWS_PROFILE,
|
|
58
|
+
// SQS
|
|
59
|
+
queueName: envVars.QUEUE_NAME,
|
|
60
|
+
sqsQueueUrl: envVars.SQS_QUEUE_URL,
|
|
61
|
+
// Optional
|
|
62
|
+
pkgPrefix: envVars.PKG_PREFIX || "benchling",
|
|
63
|
+
pkgKey: envVars.PKG_KEY || "experiment_id",
|
|
64
|
+
logLevel: envVars.LOG_LEVEL || "INFO",
|
|
65
|
+
webhookAllowList: envVars.WEBHOOK_ALLOW_LIST,
|
|
66
|
+
enableWebhookVerification: envVars.ENABLE_WEBHOOK_VERIFICATION ?? "true",
|
|
67
|
+
createEcrRepository: envVars.CREATE_ECR_REPOSITORY,
|
|
68
|
+
ecrRepositoryName: envVars.ECR_REPOSITORY_NAME || "quiltdata/benchling",
|
|
69
|
+
};
|
|
70
|
+
// Remove undefined values
|
|
71
|
+
return Object.fromEntries(Object.entries(config).filter(([, v]) => v !== undefined));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Merge inferred configuration with loaded config
|
|
75
|
+
*/
|
|
76
|
+
function mergeInferredConfig(config, inferredVars) {
|
|
77
|
+
// Only use inferred values if not already set
|
|
78
|
+
return {
|
|
79
|
+
cdkAccount: config.cdkAccount || inferredVars.CDK_DEFAULT_ACCOUNT,
|
|
80
|
+
cdkRegion: config.cdkRegion || inferredVars.CDK_DEFAULT_REGION,
|
|
81
|
+
queueName: config.queueName || inferredVars.QUEUE_NAME,
|
|
82
|
+
sqsQueueUrl: config.sqsQueueUrl || inferredVars.SQS_QUEUE_URL,
|
|
83
|
+
quiltDatabase: config.quiltDatabase || inferredVars.QUILT_DATABASE,
|
|
84
|
+
...config, // User values always take precedence
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Validate configuration and return detailed errors
|
|
89
|
+
*/
|
|
90
|
+
function validateConfig(config) {
|
|
91
|
+
const errors = [];
|
|
92
|
+
const warnings = [];
|
|
93
|
+
// Required user-provided values
|
|
94
|
+
const requiredUserFields = [
|
|
95
|
+
["quiltCatalog", "Quilt catalog URL", "Your Quilt catalog domain (e.g., quilt-catalog.company.com)"],
|
|
96
|
+
["quiltUserBucket", "S3 bucket for data", "The S3 bucket where you want to store Benchling exports"],
|
|
97
|
+
["benchlingTenant", "Benchling tenant", "Your Benchling tenant name (use XXX if you login to XXX.benchling.com)"],
|
|
98
|
+
["benchlingClientId", "Benchling OAuth client ID", "OAuth client ID from your Benchling app"],
|
|
99
|
+
["benchlingClientSecret", "Benchling OAuth client secret", "OAuth client secret from your Benchling app"],
|
|
100
|
+
];
|
|
101
|
+
for (const [field, message, helpText] of requiredUserFields) {
|
|
102
|
+
if (!config[field]) {
|
|
103
|
+
errors.push({
|
|
104
|
+
field: field,
|
|
105
|
+
message,
|
|
106
|
+
canInfer: false,
|
|
107
|
+
helpText,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Conditional requirement for app definition ID
|
|
112
|
+
if (config.enableWebhookVerification !== "false" && !config.benchlingAppDefinitionId) {
|
|
113
|
+
errors.push({
|
|
114
|
+
field: "benchlingAppDefinitionId",
|
|
115
|
+
message: "Benchling app definition ID",
|
|
116
|
+
canInfer: false,
|
|
117
|
+
helpText: "Required when webhook verification is enabled (ENABLE_WEBHOOK_VERIFICATION=true). Set ENABLE_WEBHOOK_VERIFICATION=false to skip this.",
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Required inferred values
|
|
121
|
+
const requiredInferredFields = [
|
|
122
|
+
["cdkAccount", "AWS account ID"],
|
|
123
|
+
["cdkRegion", "AWS region"],
|
|
124
|
+
["queueName", "SQS queue name"],
|
|
125
|
+
["sqsQueueUrl", "SQS queue URL"],
|
|
126
|
+
["quiltDatabase", "Quilt database name"],
|
|
127
|
+
];
|
|
128
|
+
for (const [field, message] of requiredInferredFields) {
|
|
129
|
+
if (!config[field]) {
|
|
130
|
+
errors.push({
|
|
131
|
+
field: field,
|
|
132
|
+
message,
|
|
133
|
+
canInfer: true,
|
|
134
|
+
helpText: "This value should be automatically inferred from your Quilt catalog configuration",
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Validation rules for existing values
|
|
139
|
+
if (config.quiltCatalog && !/^[a-z0-9.-]+\.[a-z]{2,}$/i.test(config.quiltCatalog)) {
|
|
140
|
+
warnings.push("QUILT_CATALOG should be a domain name without protocol (e.g., catalog.company.com, not https://catalog.company.com)");
|
|
141
|
+
}
|
|
142
|
+
if (config.quiltUserBucket && !/^[a-z0-9.-]{3,63}$/.test(config.quiltUserBucket)) {
|
|
143
|
+
warnings.push("QUILT_USER_BUCKET does not look like a valid S3 bucket name");
|
|
144
|
+
}
|
|
145
|
+
// Security warnings
|
|
146
|
+
if (config.enableWebhookVerification === "false") {
|
|
147
|
+
warnings.push("Webhook verification is disabled - this is NOT recommended for production use");
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
valid: errors.length === 0,
|
|
151
|
+
errors,
|
|
152
|
+
warnings,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Format validation errors for CLI display
|
|
157
|
+
*/
|
|
158
|
+
function formatValidationErrors(result) {
|
|
159
|
+
const lines = [];
|
|
160
|
+
if (result.errors.length > 0) {
|
|
161
|
+
lines.push("Missing required configuration:");
|
|
162
|
+
lines.push("");
|
|
163
|
+
const userErrors = result.errors.filter(e => !e.canInfer);
|
|
164
|
+
const inferErrors = result.errors.filter(e => e.canInfer);
|
|
165
|
+
if (userErrors.length > 0) {
|
|
166
|
+
lines.push("Values you must provide:");
|
|
167
|
+
for (const error of userErrors) {
|
|
168
|
+
lines.push(` • ${error.message}`);
|
|
169
|
+
if (error.helpText) {
|
|
170
|
+
lines.push(` ${error.helpText}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
lines.push("");
|
|
174
|
+
}
|
|
175
|
+
if (inferErrors.length > 0) {
|
|
176
|
+
lines.push("Values that could not be inferred:");
|
|
177
|
+
for (const error of inferErrors) {
|
|
178
|
+
lines.push(` • ${error.message}`);
|
|
179
|
+
if (error.helpText) {
|
|
180
|
+
lines.push(` ${error.helpText}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
lines.push("");
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (result.warnings.length > 0) {
|
|
187
|
+
lines.push("Warnings:");
|
|
188
|
+
for (const warning of result.warnings) {
|
|
189
|
+
lines.push(` ⚠ ${warning}`);
|
|
190
|
+
}
|
|
191
|
+
lines.push("");
|
|
192
|
+
}
|
|
193
|
+
return lines.join("\n");
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../lib/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stack inference utilities for discovering CloudFormation stacks
|
|
3
|
+
* and extracting configuration from Quilt catalogs
|
|
4
|
+
*/
|
|
5
|
+
export interface QuiltCatalogConfig {
|
|
6
|
+
region: string;
|
|
7
|
+
apiGatewayEndpoint: string;
|
|
8
|
+
analyticsBucket: string;
|
|
9
|
+
serviceBucket: string;
|
|
10
|
+
stackVersion?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface StackDetails {
|
|
14
|
+
outputs: Array<{
|
|
15
|
+
OutputKey: string;
|
|
16
|
+
OutputValue: string;
|
|
17
|
+
}>;
|
|
18
|
+
parameters: Array<{
|
|
19
|
+
ParameterKey: string;
|
|
20
|
+
ParameterValue: string;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export interface InferredStackInfo {
|
|
24
|
+
config: QuiltCatalogConfig;
|
|
25
|
+
stackName: string | null;
|
|
26
|
+
stackDetails: StackDetails;
|
|
27
|
+
inferredVars: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch JSON from a URL using native Node.js modules
|
|
31
|
+
*/
|
|
32
|
+
export declare function fetchJson(url: string): Promise<unknown>;
|
|
33
|
+
/**
|
|
34
|
+
* Extract bucket name from S3 ARN or bucket name string
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractBucketName(bucketString: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Try to find CloudFormation stack by searching for resource
|
|
39
|
+
*/
|
|
40
|
+
export declare function findStackByResource(region: string, resourceId: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Search for stacks by name pattern
|
|
43
|
+
*/
|
|
44
|
+
export declare function searchStacksByPattern(region: string, pattern: string): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Get stack outputs and parameters
|
|
47
|
+
*/
|
|
48
|
+
export declare function getStackDetails(region: string, stackName: string): StackDetails;
|
|
49
|
+
/**
|
|
50
|
+
* Get AWS account ID
|
|
51
|
+
*/
|
|
52
|
+
export declare function getAwsAccountId(): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Extract API Gateway ID from endpoint URL
|
|
55
|
+
*/
|
|
56
|
+
export declare function extractApiGatewayId(endpoint: string): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Extract stack name prefix from bucket names
|
|
59
|
+
*/
|
|
60
|
+
export declare function inferStackPrefix(analyticsBucket?: string, serviceBucket?: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Find CloudFormation stack using multiple search strategies
|
|
63
|
+
*/
|
|
64
|
+
export declare function findStack(region: string, apiGatewayId: string | null, analyticsBucket: string, serviceBucket: string, stackPrefix: string, verbose?: boolean): string | null;
|
|
65
|
+
/**
|
|
66
|
+
* Build inferred configuration from stack details
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildInferredConfig(config: QuiltCatalogConfig, stackName: string | null, stackDetails: StackDetails, region: string, accountId: string | null, catalogDomain: string): Record<string, string>;
|
|
69
|
+
/**
|
|
70
|
+
* Parse config.json and infer stack information
|
|
71
|
+
*/
|
|
72
|
+
export declare function inferStackConfig(catalogUrl: string, verbose?: boolean): Promise<InferredStackInfo>;
|
|
73
|
+
//# sourceMappingURL=stack-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-inference.d.ts","sourceRoot":"","sources":["../../../lib/utils/stack-inference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,UAAU,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuC7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAsB/E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAS/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAYzF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,UAAO,GACf,MAAM,GAAG,IAAI,CAuDf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,aAAa,EAAE,MAAM,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuFxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,UAAO,GACf,OAAO,CAAC,iBAAiB,CAAC,CAuH5B"}
|