@cxbuilder/flow-config 1.1.0 → 2.1.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/.jsii +151 -66
- package/CHANGELOG.md +24 -0
- package/README.md +8 -5
- package/dist/backend/FlowConfig/index.js +2 -1
- package/dist/backend/FlowConfig/index.js.map +2 -2
- package/dist/backend/GetConfig/index.js +1 -1
- package/dist/backend/GetConfig/index.js.map +2 -2
- package/dist/backend/Init/index.js +2 -1
- package/dist/backend/Init/index.js.map +2 -2
- package/dist/backend/Settings/index.js +255 -0
- package/dist/backend/Settings/index.js.map +7 -0
- package/dist/backend/Static/static/assets/index-Cejunttu.js +61 -0
- package/dist/backend/Static/static/assets/{index-NRh8x3FI.css → index-SZuscj14.css} +1 -1
- package/dist/backend/Static/static/index.html +3 -3
- package/dist/infrastructure/FlowConfigStack.d.ts +39 -15
- package/dist/infrastructure/FlowConfigStack.js +32 -20
- package/dist/infrastructure/GetConfig/index.js +2 -2
- package/dist/infrastructure/api/Api.d.ts +5 -2
- package/dist/infrastructure/api/Api.js +21 -15
- package/dist/infrastructure/api/Init/Init.interface.d.ts +4 -0
- package/dist/infrastructure/api/Init/Init.interface.js +1 -1
- package/dist/infrastructure/api/Init/index.js +2 -1
- package/dist/infrastructure/api/Settings/Settings.interface.d.ts +3 -0
- package/dist/infrastructure/api/Settings/Settings.interface.js +3 -0
- package/dist/infrastructure/api/Settings/index.d.ts +7 -0
- package/dist/infrastructure/api/Settings/index.js +21 -0
- package/dist/infrastructure/api/spec.yaml +122 -0
- package/dist/infrastructure/createLambda.js +1 -1
- package/dist/infrastructure/index.d.ts +1 -1
- package/dist/infrastructure/index.js +1 -1
- package/dist/infrastructure/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/backend/Static/static/assets/index-FHwnAA8f.js +0 -61
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>
|
|
7
|
-
<script type="module" crossorigin src="/prod/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/prod/assets/index-
|
|
6
|
+
<title>Flow Config</title>
|
|
7
|
+
<script type="module" crossorigin src="/prod/assets/index-Cejunttu.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/prod/assets/index-SZuscj14.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root" style="width: 100%;"></div>
|
|
@@ -18,9 +18,23 @@ export interface CognitoConfig {
|
|
|
18
18
|
readonly ssoProviderName?: string;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* VPC configuration for
|
|
21
|
+
* VPC configuration for API Gateway
|
|
22
|
+
* If provided, the API will be deployed in a private VPC.
|
|
22
23
|
*/
|
|
23
|
-
export interface
|
|
24
|
+
export interface ApiVpcConfig {
|
|
25
|
+
/**
|
|
26
|
+
* The VPC ID to use for the API
|
|
27
|
+
*/
|
|
28
|
+
readonly vpcId: string;
|
|
29
|
+
/**
|
|
30
|
+
* The VPC endpoint ID to use for the API
|
|
31
|
+
*/
|
|
32
|
+
readonly vpcEndpointId: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Lambda VPC configuration
|
|
36
|
+
*/
|
|
37
|
+
export interface LambdaVpcConfig {
|
|
24
38
|
/**
|
|
25
39
|
* The VPC ID to deploy resources into
|
|
26
40
|
*/
|
|
@@ -28,15 +42,11 @@ export interface VpcConfig {
|
|
|
28
42
|
/**
|
|
29
43
|
* Security group IDs for Lambda functions
|
|
30
44
|
*/
|
|
31
|
-
readonly
|
|
45
|
+
readonly securityGroupIds: string[];
|
|
32
46
|
/**
|
|
33
47
|
* Private subnet IDs for Lambda functions
|
|
34
48
|
*/
|
|
35
|
-
readonly
|
|
36
|
-
/**
|
|
37
|
-
* Security group IDs for VPC endpoints
|
|
38
|
-
*/
|
|
39
|
-
readonly vpcEndpointSecurityGroupIds: string[];
|
|
49
|
+
readonly subnetIds: string[];
|
|
40
50
|
}
|
|
41
51
|
/**
|
|
42
52
|
* Global table configuration for multi-region deployments
|
|
@@ -59,11 +69,11 @@ export interface ResolvedVpcConfig {
|
|
|
59
69
|
readonly vpc: IVpc;
|
|
60
70
|
readonly lambdaSecurityGroups: ISecurityGroup[];
|
|
61
71
|
readonly privateSubnets: ISubnet[];
|
|
62
|
-
readonly vpcEndpointSecurityGroups: ISecurityGroup[];
|
|
63
72
|
}
|
|
64
73
|
export interface FlowConfigStackProps extends cdk.StackProps {
|
|
65
74
|
/**
|
|
66
|
-
* Used for resource naming
|
|
75
|
+
* Used for resource naming. Will also be the name of the Connect Lambda
|
|
76
|
+
* @example `cxbuilder-flow-config`
|
|
67
77
|
*/
|
|
68
78
|
readonly prefix: string;
|
|
69
79
|
readonly cognito: CognitoConfig;
|
|
@@ -74,17 +84,31 @@ export interface FlowConfigStackProps extends cdk.StackProps {
|
|
|
74
84
|
readonly alertEmails: string[];
|
|
75
85
|
readonly prod?: boolean;
|
|
76
86
|
/**
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
87
|
+
* If provided, the API will be deployed in a VPC.
|
|
88
|
+
*/
|
|
89
|
+
readonly apiVpcConfig?: ApiVpcConfig;
|
|
90
|
+
/**
|
|
91
|
+
* If provided, the Lambda functions will be deployed in a VPC.
|
|
92
|
+
* Note: VPC should contain endpoints to: CloudFormation, Lambda, DynamoDB, SNS, and Polly.
|
|
80
93
|
*/
|
|
81
|
-
readonly
|
|
94
|
+
readonly lambdaVpcConfig?: LambdaVpcConfig;
|
|
82
95
|
/**
|
|
83
96
|
* Global table configuration for multi-region deployments.
|
|
84
97
|
* If provided, enables global table support.
|
|
85
98
|
* If undefined, creates a single-region table.
|
|
86
99
|
*/
|
|
87
100
|
readonly globalTable?: GlobalTableConfig;
|
|
101
|
+
/**
|
|
102
|
+
* Set to false to remove CXBuilder branding from the web app.
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
readonly branding?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Whether to associate the app with the Connect Agent Workspace.
|
|
108
|
+
* Set to false to disable automatic association.
|
|
109
|
+
* @default true
|
|
110
|
+
*/
|
|
111
|
+
readonly associate3pApp?: boolean;
|
|
88
112
|
}
|
|
89
113
|
export declare class FlowConfigStack extends cdk.Stack {
|
|
90
114
|
props: FlowConfigStackProps;
|
|
@@ -110,7 +134,7 @@ export declare class FlowConfigStack extends cdk.Stack {
|
|
|
110
134
|
*/
|
|
111
135
|
createUserPoolGroups(): void;
|
|
112
136
|
/**
|
|
113
|
-
*
|
|
137
|
+
* Associate FlowConfig as Agent Workspace app
|
|
114
138
|
*/
|
|
115
139
|
associate3pApp(): void;
|
|
116
140
|
/**
|
|
@@ -23,11 +23,10 @@ class FlowConfigStack extends cdk.Stack {
|
|
|
23
23
|
return this._resolvedVpcConfig;
|
|
24
24
|
}
|
|
25
25
|
get appUrl() {
|
|
26
|
-
|
|
27
|
-
return `https://${this.api.restApi.restApiId}.execute-api.${region}.amazonaws.com/prod`;
|
|
26
|
+
return this.api.url;
|
|
28
27
|
}
|
|
29
28
|
constructor(scope, id, props) {
|
|
30
|
-
const { prefix, cognito, alertEmails, prod = false,
|
|
29
|
+
const { prefix, cognito, alertEmails, prod = false, lambdaVpcConfig, globalTable, } = props;
|
|
31
30
|
super(scope, id, {
|
|
32
31
|
...props,
|
|
33
32
|
stackName: props.stackName ?? prefix,
|
|
@@ -37,7 +36,9 @@ class FlowConfigStack extends cdk.Stack {
|
|
|
37
36
|
});
|
|
38
37
|
this.props = props;
|
|
39
38
|
// Resolve VPC configuration if provided
|
|
40
|
-
this._resolvedVpcConfig =
|
|
39
|
+
this._resolvedVpcConfig = lambdaVpcConfig
|
|
40
|
+
? this.resolveVpcConfig(lambdaVpcConfig)
|
|
41
|
+
: undefined;
|
|
41
42
|
// DynamoDB table for storing flow configs
|
|
42
43
|
this.table = this.createTable(prefix, prod, globalTable);
|
|
43
44
|
this.alertTopic = new aws_sns_1.Topic(this, 'AlertTopic', {
|
|
@@ -111,10 +112,13 @@ class FlowConfigStack extends cdk.Stack {
|
|
|
111
112
|
});
|
|
112
113
|
}
|
|
113
114
|
/**
|
|
114
|
-
*
|
|
115
|
+
* Associate FlowConfig as Agent Workspace app
|
|
115
116
|
*/
|
|
116
117
|
associate3pApp() {
|
|
117
|
-
const { props: { prefix, connectInstanceArn }, appUrl: url, } = this;
|
|
118
|
+
const { props: { prefix, connectInstanceArn }, appUrl: url, associate3pApp = true, } = this;
|
|
119
|
+
if (!associate3pApp) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
118
122
|
let namespace = `cxbuilder.${prefix}`;
|
|
119
123
|
if (namespace.length > 32 && !cdk.Token.isUnresolved(namespace)) {
|
|
120
124
|
namespace = namespace.substring(0, 32);
|
|
@@ -160,13 +164,13 @@ class FlowConfigStack extends cdk.Stack {
|
|
|
160
164
|
const tableName = prefix;
|
|
161
165
|
if (!globalTable) {
|
|
162
166
|
// Single-region table
|
|
163
|
-
return new dynamodb.
|
|
167
|
+
return new dynamodb.TableV2(this, 'Table', {
|
|
164
168
|
tableName,
|
|
165
169
|
partitionKey: {
|
|
166
170
|
name: 'id',
|
|
167
171
|
type: dynamodb.AttributeType.STRING,
|
|
168
172
|
},
|
|
169
|
-
|
|
173
|
+
billing: dynamodb.Billing.onDemand(),
|
|
170
174
|
pointInTimeRecoverySpecification: {
|
|
171
175
|
pointInTimeRecoveryEnabled: true,
|
|
172
176
|
},
|
|
@@ -178,50 +182,58 @@ class FlowConfigStack extends cdk.Stack {
|
|
|
178
182
|
}
|
|
179
183
|
if (globalTable.isPrimaryRegion) {
|
|
180
184
|
// Primary region creates global table with replicas
|
|
181
|
-
|
|
185
|
+
const table = new dynamodb.TableV2(this, 'Table', {
|
|
182
186
|
tableName,
|
|
183
187
|
partitionKey: {
|
|
184
188
|
name: 'id',
|
|
185
189
|
type: dynamodb.AttributeType.STRING,
|
|
186
190
|
},
|
|
187
|
-
|
|
191
|
+
billing: dynamodb.Billing.onDemand(),
|
|
188
192
|
pointInTimeRecoverySpecification: {
|
|
189
193
|
pointInTimeRecoveryEnabled: true,
|
|
190
194
|
},
|
|
191
|
-
replicationRegions: globalTable.replicaRegions || [],
|
|
192
195
|
deletionProtection: prod,
|
|
193
196
|
removalPolicy: prod
|
|
194
197
|
? cdk.RemovalPolicy.RETAIN
|
|
195
198
|
: cdk.RemovalPolicy.DESTROY,
|
|
196
199
|
});
|
|
200
|
+
if (globalTable.replicaRegions) {
|
|
201
|
+
for (const region of globalTable.replicaRegions) {
|
|
202
|
+
table.addReplica({
|
|
203
|
+
region,
|
|
204
|
+
deletionProtection: prod,
|
|
205
|
+
pointInTimeRecoverySpecification: {
|
|
206
|
+
pointInTimeRecoveryEnabled: true,
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return table;
|
|
197
212
|
}
|
|
198
213
|
else {
|
|
199
214
|
// Secondary region references existing global table
|
|
200
|
-
return dynamodb.Table.fromTableArn(this, '
|
|
215
|
+
return dynamodb.Table.fromTableArn(this, 'Table', `arn:aws:dynamodb:${this.region}:${this.account}:table/${tableName}`);
|
|
201
216
|
}
|
|
202
217
|
}
|
|
203
218
|
/**
|
|
204
219
|
* Resolve VPC configuration string IDs to CDK objects
|
|
205
220
|
*/
|
|
206
221
|
resolveVpcConfig(vpcConfig) {
|
|
207
|
-
const { vpcId,
|
|
222
|
+
const { vpcId, securityGroupIds, subnetIds } = vpcConfig;
|
|
208
223
|
// Resolve VPC
|
|
209
224
|
const vpc = ec2.Vpc.fromLookup(this, 'ResolvedVpc', { vpcId });
|
|
210
225
|
// Resolve Lambda security groups
|
|
211
|
-
const lambdaSecurityGroups =
|
|
226
|
+
const lambdaSecurityGroups = securityGroupIds.map((sgId, index) => ec2.SecurityGroup.fromSecurityGroupId(this, `LambdaSecurityGroup${index}`, sgId));
|
|
212
227
|
// Resolve private subnets
|
|
213
|
-
const privateSubnets =
|
|
214
|
-
// Resolve VPC endpoint security groups
|
|
215
|
-
const vpcEndpointSecurityGroups = vpcEndpointSecurityGroupIds.map((sgId, index) => ec2.SecurityGroup.fromSecurityGroupId(this, `VpcEndpointSecurityGroup${index}`, sgId));
|
|
228
|
+
const privateSubnets = subnetIds.map((subnetId, index) => ec2.Subnet.fromSubnetId(this, `PrivateSubnet${index}`, subnetId));
|
|
216
229
|
return {
|
|
217
230
|
vpc,
|
|
218
231
|
lambdaSecurityGroups,
|
|
219
232
|
privateSubnets,
|
|
220
|
-
vpcEndpointSecurityGroups,
|
|
221
233
|
};
|
|
222
234
|
}
|
|
223
235
|
}
|
|
224
236
|
exports.FlowConfigStack = FlowConfigStack;
|
|
225
237
|
_a = JSII_RTTI_SYMBOL_1;
|
|
226
|
-
FlowConfigStack[_a] = { fqn: "@cxbuilder/flow-config.FlowConfigStack", version: "
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NvbmZpZ1N0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvRmxvd0NvbmZpZ1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLHlEQU1pQztBQUNqQyxxREFBcUQ7QUFFckQsMkNBQTJDO0FBRTNDLG1DQUFnQztBQUNoQyxpREFBNEM7QUFDNUMsNkVBQXNFO0FBQ3RFLHVFQUFvRTtBQUNwRSx5REFBb0U7QUFDcEUseUVBQWlFO0FBQ2pFLDJDQUF3QztBQW1HeEMsTUFBYSxlQUFnQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBWTVDOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sV0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLGdCQUFnQixNQUFNLHFCQUFxQixDQUFDO0lBQzFGLENBQUM7SUFFRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDSCxLQUEyQjtRQUVsQyxNQUFNLEVBQ0osTUFBTSxFQUNOLE9BQU8sRUFDUCxXQUFXLEVBQ1gsSUFBSSxHQUFHLEtBQUssRUFDWixHQUFHLEVBQ0gsV0FBVyxHQUNaLEdBQUcsS0FBSyxDQUFDO1FBQ1YsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNO1lBQ3BDLFdBQVcsRUFDVCxLQUFLLENBQUMsV0FBVztnQkFDakIsMklBQTJJO1lBQzdJLHFCQUFxQixFQUFFLElBQUk7U0FDNUIsQ0FBQyxDQUFDO1FBakJJLFVBQUssR0FBTCxLQUFLLENB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Q0FDL0QsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDZCxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUNuQyxJQUFJLEVBQ0osMkJBQTJCLEtBQUssRUFBRSxFQUNsQyxJQUFJLENBQ0wsQ0FDSixDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUc7WUFDSCxvQkFBb0I7WUFDcEIsY0FBYztZQUNkLHlCQUF5QjtTQUMxQixDQUFDO0lBQ0osQ0FBQzs7QUFuVEgsMENBb1RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIElVc2VyUG9vbCxcbiAgVXNlclBvb2wsXG4gIFVzZXJQb29sQ2xpZW50LFxuICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIsXG4gIENmblVzZXJQb29sR3JvdXAsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBJVnBjLCBJU2VjdXJpdHlHcm91cCwgSVN1Ym5ldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBcGkgfSBmcm9tICcuL2FwaS9BcGknO1xuaW1wb3J0IHsgVG9waWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IEVtYWlsU3Vic2NyaXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucy1zdWJzY3JpcHRpb25zJztcbmltcG9ydCB7IFNlY3VyaXR5UHJvZmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9TZWN1cml0eVByb2ZpbGVQcm92aWRlcic7XG5pbXBvcnQgeyBDZm5JbnRlZ3JhdGlvbkFzc29jaWF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvbm5lY3QnO1xuaW1wb3J0IHsgQ2ZuQXBwbGljYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwaW50ZWdyYXRpb25zJztcbmltcG9ydCB7IEdldENvbmZpZyB9IGZyb20gJy4vR2V0Q29uZmlnJztcblxuLyoqXG4gKiBDb2duaXRvIGNvbmZpZ3VyYXRpb24gZm9yIEZsb3dDb25maWcgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvQ29uZmlnIHtcbiAgcmVhZG9ubHkgdXNlclBvb2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGdWxsIGRvbWFpbiBuYW1lXG4gICAqL1xuICByZWFkb25seSBkb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIGNsaWVudCB3aWxsIGF1dGggdG8gU1NPLiBPdGhlcndpc2Ugd2lsbCBhdXRoIHRvIHVzZXIgcG9vbFxuICAgKi9cbiAgcmVhZG9ubHkgc3NvUHJvdmlkZXJOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZQQyBjb25maWd1cmF0aW9uIGZvciBwcml2YXRlIGRlcGxveW1lbnQgdXNpbmcgc3RyaW5nIElEc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRvIGRlcGxveSByZXNvdXJjZXMgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgSURzIGZvciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFTZWN1cml0eUdyb3VwSWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBzdWJuZXQgSURzIGZvciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgSURzIGZvciBWUEMgZW5kcG9pbnRzXG4gICAqL1xuICByZWFkb25seSB2cGNFbmRwb2ludFNlY3VyaXR5R3JvdXBJZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEdsb2JhbCB0YWJsZSBjb25maWd1cmF0aW9uIGZvciBtdWx0aS1yZWdpb24gZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxUYWJsZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgdGhlIHByaW1hcnkgcmVnaW9uIHRoYXQgY3JlYXRlcyB0aGUgZ2xvYmFsIHRhYmxlXG4gICAqL1xuICByZWFkb25seSBpc1ByaW1hcnlSZWdpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWxsIHJlZ2lvbnMgdGhhdCBzaG91bGQgaGF2ZSByZXBsaWNhc1xuICAgKiBPbmx5IHVzZWQgYnkgdGhlIHByaW1hcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhUmVnaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVybmFsIGludGVyZmFjZSBmb3IgcmVzb2x2ZWQgVlBDIHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkVnBjQ29uZmlnIHtcbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuICByZWFkb25seSBsYW1iZGFTZWN1cml0eUdyb3VwczogSVNlY3VyaXR5R3JvdXBbXTtcbiAgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IElTdWJuZXRbXTtcbiAgcmVhZG9ubHkgdnBjRW5kcG9pbnRTZWN1cml0eUdyb3VwczogSVNlY3VyaXR5R3JvdXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q29uZmlnU3RhY2tQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJlc291cmNlIG5hbWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvZ25pdG86IENvZ25pdG9Db25maWc7XG4gIHJlYWRvbmx5IGNvbm5lY3RJbnN0YW5jZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaG8gdG8gbm90aWZ5IGZvciB1bmhhbmRsZWQgZXhjZXB0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRFbWFpbHM6IHN0cmluZ1tdO1xuICByZWFkb25seSBwcm9kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVlBDIGNvbmZpZ3VyYXRpb24gZm9yIHByaXZhdGUgZGVwbG95bWVudC5cbiAgICogSWYgcHJvdmlkZWQsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlIGNvbmZpZ3VyZWQgZm9yIFZQQy1vbmx5IGFjY2Vzcy5cbiAgICogSWYgdW5kZWZpbmVkLCB1c2VzIHRoZSBjdXJyZW50IHB1YmxpYyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBHbG9iYWwgdGFibGUgY29uZmlndXJhdGlvbiBmb3IgbXVsdGktcmVnaW9uIGRlcGxveW1lbnRzLlxuICAgKiBJZiBwcm92aWRlZCwgZW5hYmxlcyBnbG9iYWwgdGFibGUgc3VwcG9ydC5cbiAgICogSWYgdW5kZWZpbmVkLCBjcmVhdGVzIGEgc2luZ2xlLXJlZ2lvbiB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFRhYmxlPzogR2xvYmFsVGFibGVDb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBGbG93Q29uZmlnU3RhY2sgZXh0ZW5kcyBjZGsuU3RhY2sge1xuICB1c2VyUG9vbDogSVVzZXJQb29sO1xuICBwcml2YXRlIGFwaTogQXBpO1xuICB1c2VyUG9vbENsaWVudDogVXNlclBvb2xDbGllbnQ7XG4gIGFsZXJ0VG9waWM6IFRvcGljO1xuICB0YWJsZTogY2RrLmF3c19keW5hbW9kYi5JVGFibGU7XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIFZQQyBjb25maWd1cmF0aW9uIGlmIHByaXZhdGUgZGVwbG95bWVudCBpcyBlbmFibGVkXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNvbHZlZFZwY0NvbmZpZz86IFJlc29sdmVkVnBjQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBHZXQgcmVzb2x2ZWQgVlBDIGNvbmZpZ3VyYXRpb24gZm9yIGNoaWxkIGNvbnN0cnVjdHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2dldFJlc29sdmVkVnBjQ29uZmlnKCk6IFJlc29sdmVkVnBjQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZWRWcGNDb25maWc7XG4gIH1cblxuICBnZXQgYXBwVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyByZWdpb24gfSA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICByZXR1cm4gYGh0dHBzOi8vJHt0aGlzLmFwaS5yZXN0QXBpLnJlc3RBcGlJZH0uZXhlY3V0ZS1hcGkuJHtyZWdpb259LmFtYXpvbmF3cy5jb20vcHJvZGA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIHByb3BzOiBGbG93Q29uZmlnU3RhY2tQcm9wc1xuICApIHtcbiAgICBjb25zdCB7XG4gICAgICBwcmVmaXgsXG4gICAgICBjb2duaXRvLFxuICAgICAgYWxlcnRFbWFpbHMsXG4gICAgICBwcm9kID0gZmFsc2UsXG4gICAgICB2cGMsXG4gICAgICBnbG9iYWxUYWJsZSxcbiAgICB9ID0gcHJvcHM7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN0YWNrTmFtZTogcHJvcHMuc3RhY2tOYW1lID8/IHByZWZpeCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBwcm9wcy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAnV2ViLWJhc2VkIGludGVyZmFjZSBmb3IgbWFuYWdpbmcgZmxvdyB2YXJpYWJsZXMgYW5kIHByb21wdHMgdGhhdCBhcmUgZHluYW1pY2FsbHkgcmV0cmlldmVkIGJ5IEFtYXpvbiBDb25uZWN0IGR1cmluZyBjdXN0b21lciBpbnRlcmFjdGlvbnMnLFxuICAgICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBwcm9kLFxuICAgIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBWUEMgY29uZmlndXJhdGlvbiBpZiBwcm92aWRlZFxuICAgIHRoaXMuX3Jlc29sdmVkVnBjQ29uZmlnID0gdnBjID8gdGhpcy5yZXNvbHZlVnBjQ29uZmlnKHZwYykgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBEeW5hbW9EQiB0YWJsZSBmb3Igc3RvcmluZyBmbG93IGNvbmZpZ3NcbiAgICB0aGlzLnRhYmxlID0gdGhpcy5jcmVhdGVUYWJsZShwcmVmaXgsIHByb2QsIGdsb2JhbFRhYmxlKTtcblxuICAgIHRoaXMuYWxlcnRUb3BpYyA9IG5ldyBUb3BpYyh0aGlzLCAnQWxlcnRUb3BpYycsIHtcbiAgICAgIHRvcGljTmFtZTogYCR7cHJlZml4fS1lcnJvci1hbGVydHNgLFxuICAgIH0pO1xuICAgIGFsZXJ0RW1haWxzLmZvckVhY2goKGUpID0+XG4gICAgICB0aGlzLmFsZXJ0VG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBFbWFpbFN1YnNjcmlwdGlvbihlKSlcbiAgICApO1xuXG4gICAgdGhpcy51c2VyUG9vbCA9IFVzZXJQb29sLmZyb21Vc2VyUG9vbElkKFxuICAgICAgdGhpcyxcbiAgICAgICdVc2VyUG9vbCcsXG4gICAgICBjb2duaXRvLnVzZXJQb29sSWRcbiAgICApO1xuXG4gICAgY29uc3QgZ2V0Q29uZmlnID0gbmV3IEdldENvbmZpZyh0aGlzKTtcbiAgICB0aGlzLmFwaSA9IG5ldyBBcGkodGhpcyk7XG5cbiAgICB0aGlzLnVzZXJQb29sQ2xpZW50ID0gdGhpcy5jcmVhdGVVc2VyUG9vbENsaWVudCgpO1xuICAgIHRoaXMuY3JlYXRlVXNlclBvb2xHcm91cHMoKTtcblxuICAgIHRoaXMuYXNzb2NpYXRlM3BBcHAoKTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdBcHBVcmwnLCB7XG4gICAgICB2YWx1ZTogdGhpcy5hcHBVcmwsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Jhc2UgVVJMIGZvciB0aGUgRmxvdyBDb25maWcgYXBwbGljYXRpb24nLFxuICAgIH0pO1xuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdBcGlVcmwnLCB7XG4gICAgICB2YWx1ZTogYCR7dGhpcy5hcHBVcmx9L2FwaWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Jhc2UgVVJMIGZvciB0aGUgRmxvdyBDb25maWcgQVBJJyxcbiAgICB9KTtcbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnR2V0Q29uZmlnTGFtYmRhTmFtZScsIHtcbiAgICAgIHZhbHVlOiBnZXRDb25maWcuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdMYW1iZGEgZnVuY3Rpb24gbmFtZSBmb3IgYWNjZXNzaW5nIGZsb3cgY29uZmlncyBmcm9tIENvbm5lY3QnLFxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVXNlclBvb2xDbGllbnQoKTogVXNlclBvb2xDbGllbnQge1xuICAgIGNvbnN0IHsgcHJlZml4LCBjb2duaXRvIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZG9tYWlucyA9IFsnaHR0cDovL2xvY2FsaG9zdDozMDAwJywgdGhpcy5hcHBVcmxdO1xuXG4gICAgY29uc3Qgb0F1dGggPSB7XG4gICAgICBjYWxsYmFja1VybHM6IGRvbWFpbnMubWFwKCh4KSA9PiBgJHt4fS9wb3B1cC5odG1sYCksXG4gICAgICBsb2dvdXRVcmxzOiBkb21haW5zLFxuICAgIH07XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KHRoaXMsICdVc2VyUG9vbENsaWVudCcsIHtcbiAgICAgIHVzZXJQb29sQ2xpZW50TmFtZTogcHJlZml4LFxuICAgICAgdXNlclBvb2w6IHRoaXMudXNlclBvb2wsXG4gICAgICBzdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyczogY29nbml0by5zc29Qcm92aWRlck5hbWVcbiAgICAgICAgPyBbVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLmN1c3RvbShjb2duaXRvLnNzb1Byb3ZpZGVyTmFtZSldXG4gICAgICAgIDogW1VzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5DT0dOSVRPXSxcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiBmYWxzZSxcbiAgICAgIG9BdXRoLFxuICAgIH0pO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ1VzZXJQb29sQ2xpZW50SWQnLCB7XG4gICAgICB2YWx1ZTogY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQ29nbml0byBVc2VyIEdyb3VwcyBmb3Igcm9sZS1iYXNlZCBhY2Nlc3MgY29udHJvbFxuICAgKi9cbiAgY3JlYXRlVXNlclBvb2xHcm91cHMoKTogdm9pZCB7XG4gICAgLy8gRmxvd0NvbmZpZ0FkbWluIC0gRnVsbCBDUlVEIGFjY2Vzc1xuICAgIG5ldyBDZm5Vc2VyUG9vbEdyb3VwKHRoaXMsICdGbG93Q29uZmlnQWRtaW5Hcm91cCcsIHtcbiAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgIGdyb3VwTmFtZTogJ0Zsb3dDb25maWdBZG1pbicsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Z1bGwgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIGFsbCBmbG93IGNvbmZpZ3MgLSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUgZmxvdyBjb25maWdzIGFuZCBhbGwgdGhlaXIgcHJvcGVydGllcycsXG4gICAgICBwcmVjZWRlbmNlOiAxLFxuICAgIH0pO1xuXG4gICAgLy8gRmxvd0NvbmZpZ0VkaXQgLSBFZGl0IHZhcmlhYmxlL3Byb21wdCB2YWx1ZXMgb25seVxuICAgIG5ldyBDZm5Vc2VyUG9vbEdyb3VwKHRoaXMsICdGbG93Q29uZmlnRWRpdEdyb3VwJywge1xuICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgZ3JvdXBOYW1lOiAnRmxvd0NvbmZpZ0VkaXQnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdFZGl0IGFjY2VzcyB0byBmbG93IGNvbmZpZ3MgLSBjYW4gcmVhZCBhbmQgbW9kaWZ5IHZhcmlhYmxlIHZhbHVlcyBhbmQgcHJvbXB0IGNvbnRlbnQgYnV0IGNhbm5vdCBhZGQvcmVtb3ZlIGZpZWxkcyBvciBkZWxldGUgY29uZmlncycsXG4gICAgICBwcmVjZWRlbmNlOiAyLFxuICAgIH0pO1xuXG4gICAgLy8gRmxvd0NvbmZpZ1JlYWQgLSBSZWFkLW9ubHkgYWNjZXNzXG4gICAgbmV3IENmblVzZXJQb29sR3JvdXAodGhpcywgJ0Zsb3dDb25maWdSZWFkR3JvdXAnLCB7XG4gICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICBncm91cE5hbWU6ICdGbG93Q29uZmlnUmVhZCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1JlYWQtb25seSBhY2Nlc3MgdG8gYWxsIGZsb3cgY29uZmlncyBmb3IgcmVwb3J0aW5nIGFuZCByZWZlcmVuY2UgcHVycG9zZXMnLFxuICAgICAgcHJlY2VkZW5jZTogMyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NvY2lhdGVkIFZvaWNlbWFpbCBhcyBBZ2VudCBXb3Jrc3BhY2UgYXBwXG4gICAqL1xuICBhc3NvY2lhdGUzcEFwcCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBwcm9wczogeyBwcmVmaXgsIGNvbm5lY3RJbnN0YW5jZUFybiB9LFxuICAgICAgYXBwVXJsOiB1cmwsXG4gICAgfSA9IHRoaXM7XG4gICAgbGV0IG5hbWVzcGFjZSA9IGBjeGJ1aWxkZXIuJHtwcmVmaXh9YDtcbiAgICBpZiAobmFtZXNwYWNlLmxlbmd0aCA+IDMyICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKG5hbWVzcGFjZSkpIHtcbiAgICAgIG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5zdWJzdHJpbmcoMCwgMzIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcCA9IG5ldyBDZm5BcHBsaWNhdGlvbih0aGlzLCAnM3BBcHAnLCB7XG4gICAgICBuYW1lOiB0aGlzLnByb3BzLnByZWZpeCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWdlbnQgV29ya3NwYWNlIGFwcCBmb3IgY29uZmlndXJpbmcgY29udGFjdCBmbG93IHZhcmlhYmxlcyBhbmQgcHJvbXB0cycsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBhcHBsaWNhdGlvblNvdXJjZUNvbmZpZzoge1xuICAgICAgICBleHRlcm5hbFVybENvbmZpZzoge1xuICAgICAgICAgIGFjY2Vzc1VybDogdXJsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC8vIGRvY3M6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb25uZWN0L2xhdGVzdC9hZG1pbmd1aWRlLzNwLWFwcHMtZXZlbnRzLXJlcXVlc3RzLmh0bWxcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICdVc2VyLkRldGFpbHMuVmlldycsXG4gICAgICAgICdVc2VyLkNvbmZpZ3VyYXRpb24uVmlldycsXG4gICAgICAgICdVc2VyLlN0YXR1cy5WaWV3JyxcbiAgICAgICAgJ0NvbnRhY3QuRGV0YWlscy5WaWV3JyxcbiAgICAgICAgJ0NvbnRhY3QuQ3VzdG9tZXJEZXRhaWxzLlZpZXcnLFxuICAgICAgICAnQ29udGFjdC5WYXJpYWJsZXMuVmlldycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSBuZXcgQ2ZuSW50ZWdyYXRpb25Bc3NvY2lhdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnM3BBcHBBc3NvY2lhdGlvbicsXG4gICAgICB7XG4gICAgICAgIGluc3RhbmNlSWQ6IGNvbm5lY3RJbnN0YW5jZUFybixcbiAgICAgICAgaW50ZWdyYXRpb25UeXBlOiAnQVBQTElDQVRJT04nLFxuICAgICAgICBpbnRlZ3JhdGlvbkFybjogYXBwLmF0dHJBcHBsaWNhdGlvbkFybixcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgU2VjdXJpdHlQcm9maWxlUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgJ1NlY3VyaXR5UHJvZmlsZVByb3ZpZGVyJyxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdEluc3RhbmNlQXJuLFxuICAgICAgfVxuICAgICk7XG4gICAgcHJvdmlkZXIubm9kZS5hZGREZXBlbmRlbmN5KGFzc29jaWF0aW9uKTtcblxuICAgIC8vIEF1dG9tYXRpY2FsbHkgYXNzb2NpYXRlIHdpdGggc2VjdXJpdHkgcHJvZmlsZXNcbiAgICBjb25zdCBzZWN1cml0eVByb2ZpbGVzID0gWydBZG1pbiddO1xuICAgIGZvciAoY29uc3QgcHJvZmlsZSBvZiBzZWN1cml0eVByb2ZpbGVzKSB7XG4gICAgICBwcm92aWRlci5hbGxvd0FwcGxpY2F0aW9uKGBBbGxvdyR7cHJvZmlsZX1gLCBwcm9maWxlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRHluYW1vREIgdGFibGUgd2l0aCBvcHRpb25hbCBnbG9iYWwgdGFibGUgc3VwcG9ydFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZShcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBwcm9kOiBib29sZWFuLFxuICAgIGdsb2JhbFRhYmxlPzogR2xvYmFsVGFibGVDb25maWdcbiAgKTogZHluYW1vZGIuSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBwcmVmaXg7XG5cbiAgICBpZiAoIWdsb2JhbFRhYmxlKSB7XG4gICAgICAvLyBTaW5nbGUtcmVnaW9uIHRhYmxlXG4gICAgICByZXR1cm4gbmV3IGR5bmFtb2RiLlRhYmxlKHRoaXMsICdGbG93Q29uZmlnc1RhYmxlJywge1xuICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW9kYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeUVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvZCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvZFxuICAgICAgICAgID8gY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgICAgICAgOiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGdsb2JhbFRhYmxlLmlzUHJpbWFyeVJlZ2lvbikge1xuICAgICAgLy8gUHJpbWFyeSByZWdpb24gY3JlYXRlcyBnbG9iYWwgdGFibGUgd2l0aCByZXBsaWNhc1xuICAgICAgcmV0dXJuIG5ldyBkeW5hbW9kYi5UYWJsZSh0aGlzLCAnRmxvd0NvbmZpZ3NUYWJsZScsIHtcbiAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICB9LFxuICAgICAgICBiaWxsaW5nTW9kZTogZHluYW1vZGIuQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgICAgICBwb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbjoge1xuICAgICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXBsaWNhdGlvblJlZ2lvbnM6IGdsb2JhbFRhYmxlLnJlcGxpY2FSZWdpb25zIHx8IFtdLFxuICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb2QsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb2RcbiAgICAgICAgICA/IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgICAgICAgIDogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWNvbmRhcnkgcmVnaW9uIHJlZmVyZW5jZXMgZXhpc3RpbmcgZ2xvYmFsIHRhYmxlXG4gICAgICByZXR1cm4gZHluYW1vZGIuVGFibGUuZnJvbVRhYmxlQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnRmxvd0NvbmZpZ3NUYWJsZScsXG4gICAgICAgIGBhcm46YXdzOmR5bmFtb2RiOiR7dGhpcy5yZWdpb259OiR7dGhpcy5hY2NvdW50fTp0YWJsZS8ke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIFZQQyBjb25maWd1cmF0aW9uIHN0cmluZyBJRHMgdG8gQ0RLIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVZwY0NvbmZpZyh2cGNDb25maWc6IFZwY0NvbmZpZyk6IFJlc29sdmVkVnBjQ29uZmlnIHtcbiAgICBjb25zdCB7XG4gICAgICB2cGNJZCxcbiAgICAgIGxhbWJkYVNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICBwcml2YXRlU3VibmV0SWRzLFxuICAgICAgdnBjRW5kcG9pbnRTZWN1cml0eUdyb3VwSWRzLFxuICAgIH0gPSB2cGNDb25maWc7XG5cbiAgICAvLyBSZXNvbHZlIFZQQ1xuICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAnUmVzb2x2ZWRWcGMnLCB7IHZwY0lkIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBMYW1iZGEgc2VjdXJpdHkgZ3JvdXBzXG4gICAgY29uc3QgbGFtYmRhU2VjdXJpdHlHcm91cHMgPSBsYW1iZGFTZWN1cml0eUdyb3VwSWRzLm1hcCgoc2dJZCwgaW5kZXgpID0+XG4gICAgICBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgTGFtYmRhU2VjdXJpdHlHcm91cCR7aW5kZXh9YCxcbiAgICAgICAgc2dJZFxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBSZXNvbHZlIHByaXZhdGUgc3VibmV0c1xuICAgIGNvbnN0IHByaXZhdGVTdWJuZXRzID0gcHJpdmF0ZVN1Ym5ldElkcy5tYXAoKHN1Ym5ldElkLCBpbmRleCkgPT5cbiAgICAgIGVjMi5TdWJuZXQuZnJvbVN1Ym5ldElkKHRoaXMsIGBQcml2YXRlU3VibmV0JHtpbmRleH1gLCBzdWJuZXRJZClcbiAgICApO1xuXG4gICAgLy8gUmVzb2x2ZSBWUEMgZW5kcG9pbnQgc2VjdXJpdHkgZ3JvdXBzXG4gICAgY29uc3QgdnBjRW5kcG9pbnRTZWN1cml0eUdyb3VwcyA9IHZwY0VuZHBvaW50U2VjdXJpdHlHcm91cElkcy5tYXAoXG4gICAgICAoc2dJZCwgaW5kZXgpID0+XG4gICAgICAgIGVjMi5TZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgVnBjRW5kcG9pbnRTZWN1cml0eUdyb3VwJHtpbmRleH1gLFxuICAgICAgICAgIHNnSWRcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdnBjLFxuICAgICAgbGFtYmRhU2VjdXJpdHlHcm91cHMsXG4gICAgICBwcml2YXRlU3VibmV0cyxcbiAgICAgIHZwY0VuZHBvaW50U2VjdXJpdHlHcm91cHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
238
|
+
FlowConfigStack[_a] = { fqn: "@cxbuilder/flow-config.FlowConfigStack", version: "2.1.0" };
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NvbmZpZ1N0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvRmxvd0NvbmZpZ1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLHlEQU1pQztBQUNqQyxxREFBcUQ7QUFFckQsMkNBQTJDO0FBRTNDLG1DQUFnQztBQUNoQyxpREFBNEM7QUFDNUMsNkVBQXNFO0FBQ3RFLHVFQUFvRTtBQUNwRSx5REFBb0U7QUFDcEUseUVBQWlFO0FBQ2pFLDJDQUF3QztBQThIeEMsTUFBYSxlQUFnQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBWTVDOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ0gsS0FBMkI7UUFFbEMsTUFBTSxFQUNKLE1BQU0sRUFDTixPQUFPLEVBQ1AsV0FBVyxFQUNYLElBQUksR0FBRyxLQUFLLEVBQ1osZUFBZSxFQUNmLFdBQVcsR0FDWixHQUFHLEtBQUssQ0FBQztRQUNWLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTTtZQUNwQyxXQUFXLEVBQ1QsS0FBSyxDQUFDLFdBQVc7Z0JBQ2pCLDJJQUEySTtZQUM3SSxxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUMsQ0FBQztRQWpCSSxVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQW1CbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxlQUFlO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1lBQ3hDLENBQUMs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QUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ3ZELEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQ2pFLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRztZQUNILG9CQUFvQjtZQUNwQixjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7O0FBclRILDBDQXNUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBJVXNlclBvb2wsXG4gIFVzZXJQb29sLFxuICBVc2VyUG9vbENsaWVudCxcbiAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLFxuICBDZm5Vc2VyUG9vbEdyb3VwLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29nbml0byc7XG5pbXBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSVZwYywgSVNlY3VyaXR5R3JvdXAsIElTdWJuZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXBpIH0gZnJvbSAnLi9hcGkvQXBpJztcbmltcG9ydCB7IFRvcGljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgeyBFbWFpbFN1YnNjcmlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgeyBTZWN1cml0eVByb2ZpbGVQcm92aWRlciB9IGZyb20gJy4vU2VjdXJpdHlQcm9maWxlUHJvdmlkZXInO1xuaW1wb3J0IHsgQ2ZuSW50ZWdyYXRpb25Bc3NvY2lhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb25uZWN0JztcbmltcG9ydCB7IENmbkFwcGxpY2F0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwcGludGVncmF0aW9ucyc7XG5pbXBvcnQgeyBHZXRDb25maWcgfSBmcm9tICcuL0dldENvbmZpZyc7XG5cbi8qKlxuICogQ29nbml0byBjb25maWd1cmF0aW9uIGZvciBGbG93Q29uZmlnIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0NvbmZpZyB7XG4gIHJlYWRvbmx5IHVzZXJQb29sSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRnVsbCBkb21haW4gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHByb3ZpZGVkLCBjbGllbnQgd2lsbCBhdXRoIHRvIFNTTy4gT3RoZXJ3aXNlIHdpbGwgYXV0aCB0byB1c2VyIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IHNzb1Byb3ZpZGVyTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBWUEMgY29uZmlndXJhdGlvbiBmb3IgQVBJIEdhdGV3YXlcbiAqIElmIHByb3ZpZGVkLCB0aGUgQVBJIHdpbGwgYmUgZGVwbG95ZWQgaW4gYSBwcml2YXRlIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlWcGNDb25maWcge1xuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB1c2UgZm9yIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgVlBDIGVuZHBvaW50IElEIHRvIHVzZSBmb3IgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjRW5kcG9pbnRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIExhbWJkYSBWUEMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYVZwY0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRvIGRlcGxveSByZXNvdXJjZXMgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAgSURzIGZvciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBzdWJuZXQgSURzIGZvciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEdsb2JhbCB0YWJsZSBjb25maWd1cmF0aW9uIGZvciBtdWx0aS1yZWdpb24gZGVwbG95bWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxUYWJsZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgdGhlIHByaW1hcnkgcmVnaW9uIHRoYXQgY3JlYXRlcyB0aGUgZ2xvYmFsIHRhYmxlXG4gICAqL1xuICByZWFkb25seSBpc1ByaW1hcnlSZWdpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYWxsIHJlZ2lvbnMgdGhhdCBzaG91bGQgaGF2ZSByZXBsaWNhc1xuICAgKiBPbmx5IHVzZWQgYnkgdGhlIHByaW1hcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhUmVnaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVybmFsIGludGVyZmFjZSBmb3IgcmVzb2x2ZWQgVlBDIHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkVnBjQ29uZmlnIHtcbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuICByZWFkb25seSBsYW1iZGFTZWN1cml0eUdyb3VwczogSVNlY3VyaXR5R3JvdXBbXTtcbiAgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IElTdWJuZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q29uZmlnU3RhY2tQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJlc291cmNlIG5hbWluZy4gV2lsbCBhbHNvIGJlIHRoZSBuYW1lIG9mIHRoZSBDb25uZWN0IExhbWJkYVxuICAgKiBAZXhhbXBsZSBgY3hidWlsZGVyLWZsb3ctY29uZmlnYFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvZ25pdG86IENvZ25pdG9Db25maWc7XG4gIHJlYWRvbmx5IGNvbm5lY3RJbnN0YW5jZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaG8gdG8gbm90aWZ5IGZvciB1bmhhbmRsZWQgZXhjZXB0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRFbWFpbHM6IHN0cmluZ1tdO1xuICByZWFkb25seSBwcm9kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIHRoZSBBUEkgd2lsbCBiZSBkZXBsb3llZCBpbiBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IGFwaVZwY0NvbmZpZz86IEFwaVZwY0NvbmZpZztcblxuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIHRoZSBMYW1iZGEgZnVuY3Rpb25zIHdpbGwgYmUgZGVwbG95ZWQgaW4gYSBWUEMuXG4gICAqIE5vdGU6IFZQQyBzaG91bGQgY29udGFpbiBlbmRwb2ludHMgdG86IENsb3VkRm9ybWF0aW9uLCBMYW1iZGEsIER5bmFtb0RCLCBTTlMsIGFuZCBQb2xseS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYVZwY0NvbmZpZz86IExhbWJkYVZwY0NvbmZpZztcblxuICAvKipcbiAgICogR2xvYmFsIHRhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIG11bHRpLXJlZ2lvbiBkZXBsb3ltZW50cy5cbiAgICogSWYgcHJvdmlkZWQsIGVuYWJsZXMgZ2xvYmFsIHRhYmxlIHN1cHBvcnQuXG4gICAqIElmIHVuZGVmaW5lZCwgY3JlYXRlcyBhIHNpbmdsZS1yZWdpb24gdGFibGUuXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxUYWJsZT86IEdsb2JhbFRhYmxlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gcmVtb3ZlIENYQnVpbGRlciBicmFuZGluZyBmcm9tIHRoZSB3ZWIgYXBwLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBicmFuZGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXNzb2NpYXRlIHRoZSBhcHAgd2l0aCB0aGUgQ29ubmVjdCBBZ2VudCBXb3Jrc3BhY2UuXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIGF1dG9tYXRpYyBhc3NvY2lhdGlvbi5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzb2NpYXRlM3BBcHA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRmxvd0NvbmZpZ1N0YWNrIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgdXNlclBvb2w6IElVc2VyUG9vbDtcbiAgcHJpdmF0ZSBhcGk6IEFwaTtcbiAgdXNlclBvb2xDbGllbnQ6IFVzZXJQb29sQ2xpZW50O1xuICBhbGVydFRvcGljOiBUb3BpYztcbiAgdGFibGU6IGNkay5hd3NfZHluYW1vZGIuSVRhYmxlO1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlZCBWUEMgY29uZmlndXJhdGlvbiBpZiBwcml2YXRlIGRlcGxveW1lbnQgaXMgZW5hYmxlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb2x2ZWRWcGNDb25maWc/OiBSZXNvbHZlZFZwY0NvbmZpZztcblxuICAvKipcbiAgICogR2V0IHJlc29sdmVkIFZQQyBjb25maWd1cmF0aW9uIGZvciBjaGlsZCBjb25zdHJ1Y3RzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9nZXRSZXNvbHZlZFZwY0NvbmZpZygpOiBSZXNvbHZlZFZwY0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkVnBjQ29uZmlnO1xuICB9XG5cbiAgZ2V0IGFwcFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaS51cmw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIHByb3BzOiBGbG93Q29uZmlnU3RhY2tQcm9wc1xuICApIHtcbiAgICBjb25zdCB7XG4gICAgICBwcmVmaXgsXG4gICAgICBjb2duaXRvLFxuICAgICAgYWxlcnRFbWFpbHMsXG4gICAgICBwcm9kID0gZmFsc2UsXG4gICAgICBsYW1iZGFWcGNDb25maWcsXG4gICAgICBnbG9iYWxUYWJsZSxcbiAgICB9ID0gcHJvcHM7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN0YWNrTmFtZTogcHJvcHMuc3RhY2tOYW1lID8/IHByZWZpeCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBwcm9wcy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAnV2ViLWJhc2VkIGludGVyZmFjZSBmb3IgbWFuYWdpbmcgZmxvdyB2YXJpYWJsZXMgYW5kIHByb21wdHMgdGhhdCBhcmUgZHluYW1pY2FsbHkgcmV0cmlldmVkIGJ5IEFtYXpvbiBDb25uZWN0IGR1cmluZyBjdXN0b21lciBpbnRlcmFjdGlvbnMnLFxuICAgICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBwcm9kLFxuICAgIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBWUEMgY29uZmlndXJhdGlvbiBpZiBwcm92aWRlZFxuICAgIHRoaXMuX3Jlc29sdmVkVnBjQ29uZmlnID0gbGFtYmRhVnBjQ29uZmlnXG4gICAgICA/IHRoaXMucmVzb2x2ZVZwY0NvbmZpZyhsYW1iZGFWcGNDb25maWcpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIER5bmFtb0RCIHRhYmxlIGZvciBzdG9yaW5nIGZsb3cgY29uZmlnc1xuICAgIHRoaXMudGFibGUgPSB0aGlzLmNyZWF0ZVRhYmxlKHByZWZpeCwgcHJvZCwgZ2xvYmFsVGFibGUpO1xuXG4gICAgdGhpcy5hbGVydFRvcGljID0gbmV3IFRvcGljKHRoaXMsICdBbGVydFRvcGljJywge1xuICAgICAgdG9waWNOYW1lOiBgJHtwcmVmaXh9LWVycm9yLWFsZXJ0c2AsXG4gICAgfSk7XG4gICAgYWxlcnRFbWFpbHMuZm9yRWFjaCgoZSkgPT5cbiAgICAgIHRoaXMuYWxlcnRUb3BpYy5hZGRTdWJzY3JpcHRpb24obmV3IEVtYWlsU3Vic2NyaXB0aW9uKGUpKVxuICAgICk7XG5cbiAgICB0aGlzLnVzZXJQb29sID0gVXNlclBvb2wuZnJvbVVzZXJQb29sSWQoXG4gICAgICB0aGlzLFxuICAgICAgJ1VzZXJQb29sJyxcbiAgICAgIGNvZ25pdG8udXNlclBvb2xJZFxuICAgICk7XG5cbiAgICBjb25zdCBnZXRDb25maWcgPSBuZXcgR2V0Q29uZmlnKHRoaXMpO1xuICAgIHRoaXMuYXBpID0gbmV3IEFwaSh0aGlzKTtcblxuICAgIHRoaXMudXNlclBvb2xDbGllbnQgPSB0aGlzLmNyZWF0ZVVzZXJQb29sQ2xpZW50KCk7XG4gICAgdGhpcy5jcmVhdGVVc2VyUG9vbEdyb3VwcygpO1xuXG4gICAgdGhpcy5hc3NvY2lhdGUzcEFwcCgpO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ0FwcFVybCcsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmFwcFVybCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmFzZSBVUkwgZm9yIHRoZSBGbG93IENvbmZpZyBhcHBsaWNhdGlvbicsXG4gICAgfSk7XG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ0FwaVVybCcsIHtcbiAgICAgIHZhbHVlOiBgJHt0aGlzLmFwcFVybH0vYXBpYCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmFzZSBVUkwgZm9yIHRoZSBGbG93IENvbmZpZyBBUEknLFxuICAgIH0pO1xuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdHZXRDb25maWdMYW1iZGFOYW1lJywge1xuICAgICAgdmFsdWU6IGdldENvbmZpZy5mdW5jdGlvbi5mdW5jdGlvbk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0xhbWJkYSBmdW5jdGlvbiBuYW1lIGZvciBhY2Nlc3NpbmcgZmxvdyBjb25maWdzIGZyb20gQ29ubmVjdCcsXG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVVc2VyUG9vbENsaWVudCgpOiBVc2VyUG9vbENsaWVudCB7XG4gICAgY29uc3QgeyBwcmVmaXgsIGNvZ25pdG8gfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBkb21haW5zID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCB0aGlzLmFwcFVybF07XG5cbiAgICBjb25zdCBvQXV0aCA9IHtcbiAgICAgIGNhbGxiYWNrVXJsczogZG9tYWlucy5tYXAoKHgpID0+IGAke3h9L3BvcHVwLmh0bWxgKSxcbiAgICAgIGxvZ291dFVybHM6IGRvbWFpbnMsXG4gICAgfTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgVXNlclBvb2xDbGllbnQodGhpcywgJ1VzZXJQb29sQ2xpZW50Jywge1xuICAgICAgdXNlclBvb2xDbGllbnROYW1lOiBwcmVmaXgsXG4gICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBjb2duaXRvLnNzb1Byb3ZpZGVyTmFtZVxuICAgICAgICA/IFtVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuY3VzdG9tKGNvZ25pdG8uc3NvUHJvdmlkZXJOYW1lKV1cbiAgICAgICAgOiBbVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE9dLFxuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IGZhbHNlLFxuICAgICAgb0F1dGgsXG4gICAgfSk7XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnVXNlclBvb2xDbGllbnRJZCcsIHtcbiAgICAgIHZhbHVlOiBjbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICB9KTtcbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBDb2duaXRvIFVzZXIgR3JvdXBzIGZvciByb2xlLWJhc2VkIGFjY2VzcyBjb250cm9sXG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbEdyb3VwcygpOiB2b2lkIHtcbiAgICAvLyBGbG93Q29uZmlnQWRtaW4gLSBGdWxsIENSVUQgYWNjZXNzXG4gICAgbmV3IENmblVzZXJQb29sR3JvdXAodGhpcywgJ0Zsb3dDb25maWdBZG1pbkdyb3VwJywge1xuICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgZ3JvdXBOYW1lOiAnRmxvd0NvbmZpZ0FkbWluJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRnVsbCBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gYWxsIGZsb3cgY29uZmlncyAtIGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBmbG93IGNvbmZpZ3MgYW5kIGFsbCB0aGVpciBwcm9wZXJ0aWVzJyxcbiAgICAgIHByZWNlZGVuY2U6IDEsXG4gICAgfSk7XG5cbiAgICAvLyBGbG93Q29uZmlnRWRpdCAtIEVkaXQgdmFyaWFibGUvcHJvbXB0IHZhbHVlcyBvbmx5XG4gICAgbmV3IENmblVzZXJQb29sR3JvdXAodGhpcywgJ0Zsb3dDb25maWdFZGl0R3JvdXAnLCB7XG4gICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICBncm91cE5hbWU6ICdGbG93Q29uZmlnRWRpdCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0VkaXQgYWNjZXNzIHRvIGZsb3cgY29uZmlncyAtIGNhbiByZWFkIGFuZCBtb2RpZnkgdmFyaWFibGUgdmFsdWVzIGFuZCBwcm9tcHQgY29udGVudCBidXQgY2Fubm90IGFkZC9yZW1vdmUgZmllbGRzIG9yIGRlbGV0ZSBjb25maWdzJyxcbiAgICAgIHByZWNlZGVuY2U6IDIsXG4gICAgfSk7XG5cbiAgICAvLyBGbG93Q29uZmlnUmVhZCAtIFJlYWQtb25seSBhY2Nlc3NcbiAgICBuZXcgQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCAnRmxvd0NvbmZpZ1JlYWRHcm91cCcsIHtcbiAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgIGdyb3VwTmFtZTogJ0Zsb3dDb25maWdSZWFkJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnUmVhZC1vbmx5IGFjY2VzcyB0byBhbGwgZmxvdyBjb25maWdzIGZvciByZXBvcnRpbmcgYW5kIHJlZmVyZW5jZSBwdXJwb3NlcycsXG4gICAgICBwcmVjZWRlbmNlOiAzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZSBGbG93Q29uZmlnIGFzIEFnZW50IFdvcmtzcGFjZSBhcHBcbiAgICovXG4gIGFzc29jaWF0ZTNwQXBwKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHByb3BzOiB7IHByZWZpeCwgY29ubmVjdEluc3RhbmNlQXJuIH0sXG4gICAgICBhcHBVcmw6IHVybCxcbiAgICAgIGFzc29jaWF0ZTNwQXBwID0gdHJ1ZSxcbiAgICB9ID0gdGhpcztcblxuICAgIGlmICghYXNzb2NpYXRlM3BBcHApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbmFtZXNwYWNlID0gYGN4YnVpbGRlci4ke3ByZWZpeH1gO1xuICAgIGlmIChuYW1lc3BhY2UubGVuZ3RoID4gMzIgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQobmFtZXNwYWNlKSkge1xuICAgICAgbmFtZXNwYWNlID0gbmFtZXNwYWNlLnN1YnN0cmluZygwLCAzMik7XG4gICAgfVxuXG4gICAgY29uc3QgYXBwID0gbmV3IENmbkFwcGxpY2F0aW9uKHRoaXMsICczcEFwcCcsIHtcbiAgICAgIG5hbWU6IHRoaXMucHJvcHMucHJlZml4LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBZ2VudCBXb3Jrc3BhY2UgYXBwIGZvciBjb25maWd1cmluZyBjb250YWN0IGZsb3cgdmFyaWFibGVzIGFuZCBwcm9tcHRzJyxcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIGFwcGxpY2F0aW9uU291cmNlQ29uZmlnOiB7XG4gICAgICAgIGV4dGVybmFsVXJsQ29uZmlnOiB7XG4gICAgICAgICAgYWNjZXNzVXJsOiB1cmwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgLy8gZG9jczogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nvbm5lY3QvbGF0ZXN0L2FkbWluZ3VpZGUvM3AtYXBwcy1ldmVudHMtcmVxdWVzdHMuaHRtbFxuICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgJ1VzZXIuRGV0YWlscy5WaWV3JyxcbiAgICAgICAgJ1VzZXIuQ29uZmlndXJhdGlvbi5WaWV3JyxcbiAgICAgICAgJ1VzZXIuU3RhdHVzLlZpZXcnLFxuICAgICAgICAnQ29udGFjdC5EZXRhaWxzLlZpZXcnLFxuICAgICAgICAnQ29udGFjdC5DdXN0b21lckRldGFpbHMuVmlldycsXG4gICAgICAgICdDb250YWN0LlZhcmlhYmxlcy5WaWV3JyxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IG5ldyBDZm5JbnRlZ3JhdGlvbkFzc29jaWF0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICczcEFwcEFzc29jaWF0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgaW5zdGFuY2VJZDogY29ubmVjdEluc3RhbmNlQXJuLFxuICAgICAgICBpbnRlZ3JhdGlvblR5cGU6ICdBUFBMSUNBVElPTicsXG4gICAgICAgIGludGVncmF0aW9uQXJuOiBhcHAuYXR0ckFwcGxpY2F0aW9uQXJuLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBTZWN1cml0eVByb2ZpbGVQcm92aWRlcihcbiAgICAgIHRoaXMsXG4gICAgICAnU2VjdXJpdHlQcm9maWxlUHJvdmlkZXInLFxuICAgICAge1xuICAgICAgICBjb25uZWN0SW5zdGFuY2VBcm4sXG4gICAgICB9XG4gICAgKTtcbiAgICBwcm92aWRlci5ub2RlLmFkZERlcGVuZGVuY3koYXNzb2NpYXRpb24pO1xuXG4gICAgLy8gQXV0b21hdGljYWxseSBhc3NvY2lhdGUgd2l0aCBzZWN1cml0eSBwcm9maWxlc1xuICAgIGNvbnN0IHNlY3VyaXR5UHJvZmlsZXMgPSBbJ0FkbWluJ107XG4gICAgZm9yIChjb25zdCBwcm9maWxlIG9mIHNlY3VyaXR5UHJvZmlsZXMpIHtcbiAgICAgIHByb3ZpZGVyLmFsbG93QXBwbGljYXRpb24oYEFsbG93JHtwcm9maWxlfWAsIHByb2ZpbGUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBEeW5hbW9EQiB0YWJsZSB3aXRoIG9wdGlvbmFsIGdsb2JhbCB0YWJsZSBzdXBwb3J0XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVRhYmxlKFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIHByb2Q6IGJvb2xlYW4sXG4gICAgZ2xvYmFsVGFibGU/OiBHbG9iYWxUYWJsZUNvbmZpZ1xuICApOiBkeW5hbW9kYi5JVGFibGUge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHByZWZpeDtcblxuICAgIGlmICghZ2xvYmFsVGFibGUpIHtcbiAgICAgIC8vIFNpbmdsZS1yZWdpb24gdGFibGVcbiAgICAgIHJldHVybiBuZXcgZHluYW1vZGIuVGFibGVWMih0aGlzLCAnVGFibGUnLCB7XG4gICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICB0eXBlOiBkeW5hbW9kYi5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgfSxcbiAgICAgICAgYmlsbGluZzogZHluYW1vZGIuQmlsbGluZy5vbkRlbWFuZCgpLFxuICAgICAgICBwb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbjoge1xuICAgICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb2QsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb2RcbiAgICAgICAgICA/IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgICAgICAgIDogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChnbG9iYWxUYWJsZS5pc1ByaW1hcnlSZWdpb24pIHtcbiAgICAgIC8vIFByaW1hcnkgcmVnaW9uIGNyZWF0ZXMgZ2xvYmFsIHRhYmxlIHdpdGggcmVwbGljYXNcbiAgICAgIGNvbnN0IHRhYmxlID0gbmV3IGR5bmFtb2RiLlRhYmxlVjIodGhpcywgJ1RhYmxlJywge1xuICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIGJpbGxpbmc6IGR5bmFtb2RiLkJpbGxpbmcub25EZW1hbmQoKSxcbiAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb246IHtcbiAgICAgICAgICBwb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9kLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9kXG4gICAgICAgICAgPyBjZGsuUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICAgICAgICA6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICAgIGlmIChnbG9iYWxUYWJsZS5yZXBsaWNhUmVnaW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHJlZ2lvbiBvZiBnbG9iYWxUYWJsZS5yZXBsaWNhUmVnaW9ucykge1xuICAgICAgICAgIHRhYmxlLmFkZFJlcGxpY2Eoe1xuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9kLFxuICAgICAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgcG9pbnRJblRpbWVSZWNvdmVyeUVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNlY29uZGFyeSByZWdpb24gcmVmZXJlbmNlcyBleGlzdGluZyBnbG9iYWwgdGFibGVcbiAgICAgIHJldHVybiBkeW5hbW9kYi5UYWJsZS5mcm9tVGFibGVBcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdUYWJsZScsXG4gICAgICAgIGBhcm46YXdzOmR5bmFtb2RiOiR7dGhpcy5yZWdpb259OiR7dGhpcy5hY2NvdW50fTp0YWJsZS8ke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIFZQQyBjb25maWd1cmF0aW9uIHN0cmluZyBJRHMgdG8gQ0RLIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVZwY0NvbmZpZyh2cGNDb25maWc6IExhbWJkYVZwY0NvbmZpZyk6IFJlc29sdmVkVnBjQ29uZmlnIHtcbiAgICBjb25zdCB7IHZwY0lkLCBzZWN1cml0eUdyb3VwSWRzLCBzdWJuZXRJZHMgfSA9IHZwY0NvbmZpZztcblxuICAgIC8vIFJlc29sdmUgVlBDXG4gICAgY29uc3QgdnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsICdSZXNvbHZlZFZwYycsIHsgdnBjSWQgfSk7XG5cbiAgICAvLyBSZXNvbHZlIExhbWJkYSBzZWN1cml0eSBncm91cHNcbiAgICBjb25zdCBsYW1iZGFTZWN1cml0eUdyb3VwcyA9IHNlY3VyaXR5R3JvdXBJZHMubWFwKChzZ0lkLCBpbmRleCkgPT5cbiAgICAgIGVjMi5TZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBMYW1iZGFTZWN1cml0eUdyb3VwJHtpbmRleH1gLFxuICAgICAgICBzZ0lkXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIFJlc29sdmUgcHJpdmF0ZSBzdWJuZXRzXG4gICAgY29uc3QgcHJpdmF0ZVN1Ym5ldHMgPSBzdWJuZXRJZHMubWFwKChzdWJuZXRJZCwgaW5kZXgpID0+XG4gICAgICBlYzIuU3VibmV0LmZyb21TdWJuZXRJZCh0aGlzLCBgUHJpdmF0ZVN1Ym5ldCR7aW5kZXh9YCwgc3VibmV0SWQpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2cGMsXG4gICAgICBsYW1iZGFTZWN1cml0eUdyb3VwcyxcbiAgICAgIHByaXZhdGVTdWJuZXRzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ class GetConfig extends constructs_1.Construct {
|
|
|
10
10
|
super(stack, 'GetConfig');
|
|
11
11
|
const { connectInstanceArn, prefix } = stack.props;
|
|
12
12
|
this.function = (0, createLambda_1.createLambda)(this, 'Handler', {
|
|
13
|
-
functionName:
|
|
13
|
+
functionName: prefix,
|
|
14
14
|
environment: {
|
|
15
15
|
FLOW_CONFIGS_TABLE_NAME: stack.table.tableName,
|
|
16
16
|
},
|
|
@@ -31,4 +31,4 @@ class GetConfig extends constructs_1.Construct {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.GetConfig = GetConfig;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9HZXRDb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLGtEQUErQztBQUkvQyx5REFBb0U7QUFDcEUsbUNBQW1DO0FBRW5DLE1BQWEsU0FBVSxTQUFRLHNCQUFTO0lBRXRDLFlBQVksS0FBc0I7UUFDaEMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUxQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsMkJBQVksRUFBZSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzFELFlBQVksRUFBRSxNQUFNO1lBQ3BCLFdBQVcsRUFBRTtnQkFDWCx1QkFBdUIsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVM7YUFDL0M7WUFDRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsNEVBQTRFO1FBQzVFLElBQUksdUNBQXlCLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQzlELFVBQVUsRUFBRSxrQkFBa0I7WUFDOUIsZUFBZSxFQUFFLGlCQUFpQjtZQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1NBQzFDLENBQUMsQ0FBQztRQUVILGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsRUFBRTtZQUNyRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO1lBQ3BFLFNBQVMsRUFBRSxrQkFBa0I7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBOUJELDhCQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgY3JlYXRlTGFtYmRhIH0gZnJvbSAnLi4vY3JlYXRlTGFtYmRhJztcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBGbG93Q29uZmlnU3RhY2sgfSBmcm9tICcuLi9GbG93Q29uZmlnU3RhY2snO1xuaW1wb3J0IHsgR2V0Q29uZmlnRW52IH0gZnJvbSAnLi9HZXRDb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENmbkludGVncmF0aW9uQXNzb2NpYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29ubmVjdCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgY2xhc3MgR2V0Q29uZmlnIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZnVuY3Rpb246IEZ1bmN0aW9uO1xuICBjb25zdHJ1Y3RvcihzdGFjazogRmxvd0NvbmZpZ1N0YWNrKSB7XG4gICAgc3VwZXIoc3RhY2ssICdHZXRDb25maWcnKTtcblxuICAgIGNvbnN0IHsgY29ubmVjdEluc3RhbmNlQXJuLCBwcmVmaXggfSA9IHN0YWNrLnByb3BzO1xuXG4gICAgdGhpcy5mdW5jdGlvbiA9IGNyZWF0ZUxhbWJkYTxHZXRDb25maWdFbnY+KHRoaXMsICdIYW5kbGVyJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBwcmVmaXgsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBGTE9XX0NPTkZJR1NfVEFCTEVfTkFNRTogc3RhY2sudGFibGUudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICAgIGFsZXJ0VG9waWM6IHN0YWNrLmFsZXJ0VG9waWMsXG4gICAgfSk7XG5cbiAgICBzdGFjay50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEodGhpcy5mdW5jdGlvbik7XG5cbiAgICAvLyBBc3NvY2lhdGUgTGFtYmRhIHdpdGggQ29ubmVjdCBpbnN0YW5jZSBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjb250YWN0IGZsb3dzXG4gICAgbmV3IENmbkludGVncmF0aW9uQXNzb2NpYXRpb24odGhpcywgJ0Nvbm5lY3RMYW1iZGFBc3NvY2lhdGlvbicsIHtcbiAgICAgIGluc3RhbmNlSWQ6IGNvbm5lY3RJbnN0YW5jZUFybixcbiAgICAgIGludGVncmF0aW9uVHlwZTogJ0xBTUJEQV9GVU5DVElPTicsXG4gICAgICBpbnRlZ3JhdGlvbkFybjogdGhpcy5mdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IENvbm5lY3QgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIExhbWJkYVxuICAgIHRoaXMuZnVuY3Rpb24uYWRkUGVybWlzc2lvbignQ29ubmVjdEludm9rZVBlcm1pc3Npb24nLCB7XG4gICAgICBwcmluY2lwYWw6IG5ldyBjZGsuYXdzX2lhbS5TZXJ2aWNlUHJpbmNpcGFsKCdjb25uZWN0LmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIHNvdXJjZUFybjogY29ubmVjdEluc3RhbmNlQXJuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { Construct } from 'constructs';
|
|
2
2
|
import { SpecRestApi } from 'aws-cdk-lib/aws-apigateway';
|
|
3
|
+
import { IInterfaceVpcEndpoint } from 'aws-cdk-lib/aws-ec2';
|
|
3
4
|
import { FlowConfigStack } from '../FlowConfigStack';
|
|
4
5
|
import { Static } from './Static';
|
|
5
6
|
export declare class Api extends Construct {
|
|
6
7
|
stack: FlowConfigStack;
|
|
7
|
-
staticHosting: Static;
|
|
8
|
-
restApi: SpecRestApi;
|
|
8
|
+
readonly staticHosting: Static;
|
|
9
|
+
readonly restApi: SpecRestApi;
|
|
10
|
+
readonly vpcEndpoint?: IInterfaceVpcEndpoint;
|
|
11
|
+
readonly url: string;
|
|
9
12
|
constructor(stack: FlowConfigStack);
|
|
10
13
|
/**
|
|
11
14
|
* Create a resource policy for the VPC endpoint to restrict access to the specific VPC
|
|
@@ -9,6 +9,7 @@ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
|
9
9
|
const Init_1 = require("./Init");
|
|
10
10
|
const FlowConfig_1 = require("./FlowConfig");
|
|
11
11
|
const PreviewSpeech_1 = require("./PreviewSpeech");
|
|
12
|
+
const Settings_1 = require("./Settings");
|
|
12
13
|
const yaml_1 = require("yaml");
|
|
13
14
|
const fs_1 = require("fs");
|
|
14
15
|
const Users_1 = require("./Users");
|
|
@@ -19,32 +20,31 @@ class Api extends constructs_1.Construct {
|
|
|
19
20
|
this.stack = stack;
|
|
20
21
|
// Create static hosting construct first
|
|
21
22
|
this.staticHosting = new Static_1.Static(this);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const { prefix, apiVpcConfig: apiVpcEndpoint } = stack.props;
|
|
24
|
+
this.vpcEndpoint = apiVpcEndpoint
|
|
25
|
+
? aws_ec2_1.InterfaceVpcEndpoint.fromInterfaceVpcEndpointAttributes(this, 'ExistingVpcEndpoint', {
|
|
26
|
+
vpcEndpointId: apiVpcEndpoint.vpcEndpointId,
|
|
27
|
+
port: 443,
|
|
28
|
+
})
|
|
29
|
+
: undefined;
|
|
30
|
+
const apiGatewayProps = this.vpcEndpoint && apiVpcEndpoint?.vpcId
|
|
25
31
|
? {
|
|
26
|
-
restApiName:
|
|
32
|
+
restApiName: prefix,
|
|
27
33
|
endpointConfiguration: {
|
|
28
34
|
types: [aws_apigateway_1.EndpointType.PRIVATE],
|
|
29
|
-
vpcEndpoints: [
|
|
30
|
-
new aws_ec2_1.InterfaceVpcEndpoint(this, 'ApiVpcEndpoint', {
|
|
31
|
-
vpc: vpcConfig.vpc,
|
|
32
|
-
service: aws_ec2_1.InterfaceVpcEndpointAwsService.APIGATEWAY,
|
|
33
|
-
subnets: { subnets: vpcConfig.privateSubnets },
|
|
34
|
-
securityGroups: vpcConfig.vpcEndpointSecurityGroups,
|
|
35
|
-
}),
|
|
36
|
-
],
|
|
35
|
+
vpcEndpoints: [this.vpcEndpoint],
|
|
37
36
|
},
|
|
38
|
-
policy: this.createVpcEndpointPolicy(
|
|
37
|
+
policy: this.createVpcEndpointPolicy(apiVpcEndpoint.vpcId),
|
|
39
38
|
}
|
|
40
39
|
: {
|
|
41
|
-
restApiName:
|
|
40
|
+
restApiName: prefix,
|
|
42
41
|
};
|
|
43
42
|
// Create Lambda functions
|
|
44
43
|
const initLambda = new Init_1.Init(this).lambda;
|
|
45
44
|
const usersLambda = new Users_1.Users(this).lambda;
|
|
46
45
|
const flowConfigLambda = new FlowConfig_1.FlowConfig(this).lambda;
|
|
47
46
|
const previewSpeechLambda = new PreviewSpeech_1.PreviewSpeech(this).lambda;
|
|
47
|
+
const settingsLambda = new Settings_1.Settings(this).lambda;
|
|
48
48
|
const staticLambda = this.staticHosting.handler;
|
|
49
49
|
// Update Authorizer Provider ARN
|
|
50
50
|
const sourceFileName = (0, path_1.join)(__dirname, 'spec.yaml');
|
|
@@ -67,6 +67,8 @@ class Api extends constructs_1.Construct {
|
|
|
67
67
|
setLambdaIntegration('/api/flow-config/{id}', 'delete', flowConfigLambda);
|
|
68
68
|
setLambdaIntegration('/api/flow-config/preview', 'post', flowConfigLambda);
|
|
69
69
|
setLambdaIntegration('/api/preview-speech', 'post', previewSpeechLambda);
|
|
70
|
+
setLambdaIntegration('/api/settings', 'get', settingsLambda);
|
|
71
|
+
setLambdaIntegration('/api/settings', 'post', settingsLambda);
|
|
70
72
|
setLambdaIntegration('/{proxy+}', 'get', staticLambda);
|
|
71
73
|
setLambdaIntegration('/', 'get', staticLambda);
|
|
72
74
|
// Create API Gateway from updated OpenAPI spec
|
|
@@ -80,7 +82,11 @@ class Api extends constructs_1.Construct {
|
|
|
80
82
|
usersLambda.grantInvoke(apiGatewayPrincipal);
|
|
81
83
|
flowConfigLambda.grantInvoke(apiGatewayPrincipal);
|
|
82
84
|
previewSpeechLambda.grantInvoke(apiGatewayPrincipal);
|
|
85
|
+
settingsLambda.grantInvoke(apiGatewayPrincipal);
|
|
83
86
|
staticLambda.grantInvoke(apiGatewayPrincipal);
|
|
87
|
+
this.url = this.vpcEndpoint
|
|
88
|
+
? `https://${this.restApi.restApiId}-${this.vpcEndpoint.vpcEndpointId}.execute-api.${stack.region}.amazonaws.com/prod`
|
|
89
|
+
: `https://${this.restApi.restApiId}.execute-api.${stack.region}.amazonaws.com/prod`;
|
|
84
90
|
}
|
|
85
91
|
/**
|
|
86
92
|
* Create a resource policy for the VPC endpoint to restrict access to the specific VPC
|
|
@@ -104,4 +110,4 @@ class Api extends constructs_1.Construct {
|
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
exports.Api = Api;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvYXBpL0FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsK0JBQTRCO0FBQzVCLCtEQUtvQztBQUNwQyxpREFNNkI7QUFDN0IsaURBRzZCO0FBQzdCLGlDQUE4QjtBQUM5Qiw2Q0FBMEM7QUFDMUMsbURBQWdEO0FBQ2hELCtCQUE2QjtBQUM3QiwyQkFBa0M7QUFFbEMsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUVsQyxNQUFhLEdBQUksU0FBUSxzQkFBUztJQUloQyxZQUFtQixLQUFzQjtRQUN2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBREgsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFHdkMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsOENBQThDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hELE1BQU0sZUFBZSxHQUFxQixTQUFTO1lBQ2pELENBQUMsQ0FBQztnQkFDRSxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUMvQixxQkFBcUIsRUFBRTtvQkFDckIsS0FBSyxFQUFFLENBQUMsNkJBQVksQ0FBQyxPQUFPLENBQUM7b0JBQzdCLFlBQVksRUFBRTt3QkFDWixJQUFJLDhCQUFvQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTs0QkFDL0MsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHOzRCQUNsQixPQUFPLEVBQUUsd0NBQThCLENBQUMsVUFBVTs0QkFDbEQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxjQUFjLEVBQUU7NEJBQzlDLGNBQWMsRUFBRSxTQUFTLENBQUMseUJBQXlCO3lCQUNwRCxDQUFDO3FCQUNIO2lCQUNG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MEJBQTBCLENBQzNCLENBQUM7UUFDRixVQUFVLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx1QkFBdUIsQ0FBQyxLQUFhO1FBQzNDLE9BQU8sSUFBSSx3QkFBYyxDQUFDO1lBQ3hCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFVBQVUsRUFBRSxDQUFDLElBQUksc0JBQVksRUFBRSxDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDaEIsVUFBVSxFQUFFO3dCQUNWLFlBQVksRUFBRTs0QkFDWixlQUFlLEVBQUUsS0FBSzt5QkFDdkI7cUJBQ0Y7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0dELGtCQTZHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgRW5kcG9pbnRUeXBlLFxuICBSZXN0QXBpQmFzZVByb3BzLFxuICBTcGVjUmVzdEFwaSxcbiAgQXBpRGVmaW5pdGlvbixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0IHtcbiAgUG9saWN5RG9jdW1lbnQsXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgRWZmZWN0LFxuICBBbnlQcmluY2lwYWwsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnQsXG4gIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBJbml0IH0gZnJvbSAnLi9Jbml0JztcbmltcG9ydCB7IEZsb3dDb25maWcgfSBmcm9tICcuL0Zsb3dDb25maWcnO1xuaW1wb3J0IHsgUHJldmlld1NwZWVjaCB9IGZyb20gJy4vUHJldmlld1NwZWVjaCc7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ1N0YWNrIH0gZnJvbSAnLi4vRmxvd0NvbmZpZ1N0YWNrJztcbmltcG9ydCB7IFVzZXJzIH0gZnJvbSAnLi9Vc2Vycyc7XG5pbXBvcnQgeyBTdGF0aWMgfSBmcm9tICcuL1N0YXRpYyc7XG5cbmV4cG9ydCBjbGFzcyBBcGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBzdGF0aWNIb3N0aW5nOiBTdGF0aWM7XG4gIHJlc3RBcGk6IFNwZWNSZXN0QXBpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFjazogRmxvd0NvbmZpZ1N0YWNrKSB7XG4gICAgc3VwZXIoc3RhY2ssICdBcGknKTtcblxuICAgIC8vIENyZWF0ZSBzdGF0aWMgaG9zdGluZyBjb25zdHJ1Y3QgZmlyc3RcbiAgICB0aGlzLnN0YXRpY0hvc3RpbmcgPSBuZXcgU3RhdGljKHRoaXMpO1xuXG4gICAgLy8gQ29uZmlndXJlIEFQSSBHYXRld2F5IGJhc2VkIG9uIFZQQyBzZXR0aW5nc1xuICAgIGNvbnN0IHZwY0NvbmZpZyA9IHN0YWNrLl9nZXRSZXNvbHZlZFZwY0NvbmZpZygpO1xuICAgIGNvbnN0IGFwaUdhdGV3YXlQcm9wczogUmVzdEFwaUJhc2VQcm9wcyA9IHZwY0NvbmZpZ1xuICAgICAgPyB7XG4gICAgICAgICAgcmVzdEFwaU5hbWU6IHN0YWNrLnByb3BzLnByZWZpeCxcbiAgICAgICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIHR5cGVzOiBbRW5kcG9pbnRUeXBlLlBSSVZBVEVdLFxuICAgICAgICAgICAgdnBjRW5kcG9pbnRzOiBbXG4gICAgICAgICAgICAgIG5ldyBJbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCAnQXBpVnBjRW5kcG9pbnQnLCB7XG4gICAgICAgICAgICAgICAgdnBjOiB2cGNDb25maWcudnBjLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6IEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5BUElHQVRFV0FZLFxuICAgICAgICAgICAgICAgIHN1Ym5ldHM6IHsgc3VibmV0czogdnBjQ29uZmlnLnByaXZhdGVTdWJuZXRzIH0sXG4gICAgICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHZwY0NvbmZpZy52cGNFbmRwb2ludFNlY3VyaXR5R3JvdXBzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwb2xpY3k6IHRoaXMuY3JlYXRlVnBjRW5kcG9pbnRQb2xpY3kodnBjQ29uZmlnLnZwYy52cGNJZCksXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIHJlc3RBcGlOYW1lOiBzdGFjay5wcm9wcy5wcmVmaXgsXG4gICAgICAgIH07XG5cbiAgICAvLyBDcmVhdGUgTGFtYmRhIGZ1bmN0aW9uc1xuICAgIGNvbnN0IGluaXRMYW1iZGEgPSBuZXcgSW5pdCh0aGlzKS5sYW1iZGE7XG4gICAgY29uc3QgdXNlcnNMYW1iZGEgPSBuZXcgVXNlcnModGhpcykubGFtYmRhO1xuICAgIGNvbnN0IGZsb3dDb25maWdMYW1iZGEgPSBuZXcgRmxvd0NvbmZpZyh0aGlzKS5sYW1iZGE7XG4gICAgY29uc3QgcHJldmlld1NwZWVjaExhbWJkYSA9IG5ldyBQcmV2aWV3U3BlZWNoKHRoaXMpLmxhbWJkYTtcbiAgICBjb25zdCBzdGF0aWNMYW1iZGEgPSB0aGlzLnN0YXRpY0hvc3RpbmcuaGFuZGxlcjtcblxuICAgIC8vIFVwZGF0ZSBBdXRob3JpemVyIFByb3ZpZGVyIEFSTlxuICAgIGNvbnN0IHNvdXJjZUZpbGVOYW1lID0gam9pbihfX2Rpcm5hbWUsICdzcGVjLnlhbWwnKTtcbiAgICBjb25zdCB5bWwgPSByZWFkRmlsZVN5bmMoc291cmNlRmlsZU5hbWUpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgc3BlYyA9IHBhcnNlKHltbCk7XG5cbiAgICBjb25zdCBhdXRob3JpemVyID0gc3BlYy5jb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcy5Db2duaXRvQXV0aG9yaXplcjtcbiAgICBhdXRob3JpemVyWyd4LWFtYXpvbi1hcGlnYXRld2F5LWF1dGhvcml6ZXInXS5wcm92aWRlckFSTnMgPSBbXG4gICAgICBzdGFjay51c2VyUG9vbC51c2VyUG9vbEFybixcbiAgICBdO1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHNldCBMYW1iZGEgaW50ZWdyYXRpb24gVVJJXG4gICAgY29uc3Qgc2V0TGFtYmRhSW50ZWdyYXRpb24gPSAoXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBtZXRob2Q6IHN0cmluZyxcbiAgICAgIGxhbWJkYTogYW55XG4gICAgKSA9PiB7XG4gICAgICBzcGVjLnBhdGhzW3BhdGhdW21ldGhvZF1bXG4gICAgICAgICd4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uJ1xuICAgICAgXS51cmkgPSBgYXJuOmF3czphcGlnYXRld2F5OiR7c3RhY2sucmVnaW9ufTpsYW1iZGE6cGF0aC8yMDE1LTAzLTMxL2Z1bmN0aW9ucy8ke2xhbWJkYS5mdW5jdGlvbkFybn0vaW52b2NhdGlvbnNgO1xuICAgIH07XG5cbiAgICAvLyBVcGRhdGUgdGhlIHNwZWMgdG8gcmVwbGFjZSBoYW5kbGVyIFVSSXMgd2l0aCBhY3R1YWwgTGFtYmRhIEFSTnNcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9pbml0JywgJ2dldCcsIGluaXRMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL3VzZXJzL3t1c2VySWR9JywgJ2dldCcsIHVzZXJzTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9mbG93LWNvbmZpZycsICdnZXQnLCBmbG93Q29uZmlnTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9mbG93LWNvbmZpZy97aWR9JywgJ2dldCcsIGZsb3dDb25maWdMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL2Zsb3ctY29uZmlnL3tpZH0nLCAncG9zdCcsIGZsb3dDb25maWdMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL2Zsb3ctY29uZmlnL3tpZH0nLCAnZGVsZXRlJywgZmxvd0NvbmZpZ0xhbWJkYSk7XG4gICAgc2V0TGFtYmRhSW50ZWdyYXRpb24oJy9hcGkvZmxvdy1jb25maWcvcHJldmlldycsICdwb3N0JywgZmxvd0NvbmZpZ0xhbWJkYSk7XG4gICAgc2V0TGFtYmRhSW50ZWdyYXRpb24oJy9hcGkvcHJldmlldy1zcGVlY2gnLCAncG9zdCcsIHByZXZpZXdTcGVlY2hMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcve3Byb3h5K30nLCAnZ2V0Jywgc3RhdGljTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignLycsICdnZXQnLCBzdGF0aWNMYW1iZGEpO1xuXG4gICAgLy8gQ3JlYXRlIEFQSSBHYXRld2F5IGZyb20gdXBkYXRlZCBPcGVuQVBJIHNwZWNcbiAgICB0aGlzLnJlc3RBcGkgPSBuZXcgU3BlY1Jlc3RBcGkodGhpcywgJ1Jlc3RBcGknLCB7XG4gICAgICAuLi5hcGlHYXRld2F5UHJvcHMsXG4gICAgICBhcGlEZWZpbml0aW9uOiBBcGlEZWZpbml0aW9uLmZyb21JbmxpbmUoc3BlYyksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBBUEkgR2F0ZXdheSBwZXJtaXNzaW9uIHRvIGludm9rZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAgY29uc3QgYXBpR2F0ZXdheVByaW5jaXBhbCA9IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFxuICAgICAgJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbSdcbiAgICApO1xuICAgIGluaXRMYW1iZGEuZ3JhbnRJbnZva2UoYXBpR2F0ZXdheVByaW5jaXBhbCk7XG4gICAgdXNlcnNMYW1iZGEuZ3JhbnRJbnZva2UoYXBpR2F0ZXdheVByaW5jaXBhbCk7XG4gICAgZmxvd0NvbmZpZ0xhbWJkYS5ncmFudEludm9rZShhcGlHYXRld2F5UHJpbmNpcGFsKTtcbiAgICBwcmV2aWV3U3BlZWNoTGFtYmRhLmdyYW50SW52b2tlKGFwaUdhdGV3YXlQcmluY2lwYWwpO1xuICAgIHN0YXRpY0xhbWJkYS5ncmFudEludm9rZShhcGlHYXRld2F5UHJpbmNpcGFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByZXNvdXJjZSBwb2xpY3kgZm9yIHRoZSBWUEMgZW5kcG9pbnQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBzcGVjaWZpYyBWUENcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlVnBjRW5kcG9pbnRQb2xpY3kodnBjSWQ6IHN0cmluZyk6IFBvbGljeURvY3VtZW50IHtcbiAgICByZXR1cm4gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgcHJpbmNpcGFsczogW25ldyBBbnlQcmluY2lwYWwoKV0sXG4gICAgICAgICAgYWN0aW9uczogWydleGVjdXRlLWFwaToqJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgJ2F3czpTb3VyY2VWcGMnOiB2cGNJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvYXBpL0FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsK0JBQTRCO0FBQzVCLCtEQUtvQztBQUNwQyxpREFNNkI7QUFDN0IsaURBRzZCO0FBQzdCLGlDQUE4QjtBQUM5Qiw2Q0FBMEM7QUFDMUMsbURBQWdEO0FBQ2hELHlDQUFzQztBQUN0QywrQkFBNkI7QUFDN0IsMkJBQWtDO0FBRWxDLG1DQUFnQztBQUNoQyxxQ0FBa0M7QUFFbEMsTUFBYSxHQUFJLFNBQVEsc0JBQVM7SUFNaEMsWUFBbUIsS0FBc0I7UUFDdkMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQURILFVBQUssR0FBTCxLQUFLLENBQWlCO1FBR3ZDLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjO1lBQy9CLENBQUMsQ0FBQyw4QkFBb0IsQ0FBQyxrQ0FBa0MsQ0FDckQsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtnQkFDRSxhQUFhLEVBQUUsY0FBYyxDQUFDLGFBQWE7Z0JBQzNDLElBQUksRUFBRSxHQUFHO2FBQ1YsQ0FDRjtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLFdBQVcsSUFBSSxjQUFjLEVBQUUsS0FBSztZQUN2QyxDQUFDLENBQUM7Z0JBQ0UsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLHFCQUFxQixFQUFFO29CQUNyQixLQUFLLEVBQUUsQ0FBQyw2QkFBWSxDQUFDLE9BQU8sQ0FBQztvQkFDN0IsWUFBWSxFQUFFLENBQUMs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QUUsQ0FBQyxHQUFHLENBQUM7b0JBQ2hCLFVBQVUsRUFBRTt3QkFDVixZQUFZLEVBQUU7NEJBQ1osZUFBZSxFQUFFLEtBQUs7eUJBQ3ZCO3FCQUNGO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVIRCxrQkE0SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIEVuZHBvaW50VHlwZSxcbiAgUmVzdEFwaUJhc2VQcm9wcyxcbiAgU3BlY1Jlc3RBcGksXG4gIEFwaURlZmluaXRpb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCB7XG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIEVmZmVjdCxcbiAgQW55UHJpbmNpcGFsLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIElJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgSW5pdCB9IGZyb20gJy4vSW5pdCc7XG5pbXBvcnQgeyBGbG93Q29uZmlnIH0gZnJvbSAnLi9GbG93Q29uZmlnJztcbmltcG9ydCB7IFByZXZpZXdTcGVlY2ggfSBmcm9tICcuL1ByZXZpZXdTcGVlY2gnO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuL1NldHRpbmdzJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAneWFtbCc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBGbG93Q29uZmlnU3RhY2sgfSBmcm9tICcuLi9GbG93Q29uZmlnU3RhY2snO1xuaW1wb3J0IHsgVXNlcnMgfSBmcm9tICcuL1VzZXJzJztcbmltcG9ydCB7IFN0YXRpYyB9IGZyb20gJy4vU3RhdGljJztcblxuZXhwb3J0IGNsYXNzIEFwaSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHN0YXRpY0hvc3Rpbmc6IFN0YXRpYztcbiAgcmVhZG9ubHkgcmVzdEFwaTogU3BlY1Jlc3RBcGk7XG4gIHJlYWRvbmx5IHZwY0VuZHBvaW50PzogSUludGVyZmFjZVZwY0VuZHBvaW50O1xuICByZWFkb25seSB1cmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhY2s6IEZsb3dDb25maWdTdGFjaykge1xuICAgIHN1cGVyKHN0YWNrLCAnQXBpJyk7XG5cbiAgICAvLyBDcmVhdGUgc3RhdGljIGhvc3RpbmcgY29uc3RydWN0IGZpcnN0XG4gICAgdGhpcy5zdGF0aWNIb3N0aW5nID0gbmV3IFN0YXRpYyh0aGlzKTtcblxuICAgIGNvbnN0IHsgcHJlZml4LCBhcGlWcGNDb25maWc6IGFwaVZwY0VuZHBvaW50IH0gPSBzdGFjay5wcm9wcztcblxuICAgIHRoaXMudnBjRW5kcG9pbnQgPSBhcGlWcGNFbmRwb2ludFxuICAgICAgPyBJbnRlcmZhY2VWcGNFbmRwb2ludC5mcm9tSW50ZXJmYWNlVnBjRW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgJ0V4aXN0aW5nVnBjRW5kcG9pbnQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZwY0VuZHBvaW50SWQ6IGFwaVZwY0VuZHBvaW50LnZwY0VuZHBvaW50SWQsXG4gICAgICAgICAgICBwb3J0OiA0NDMsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFwaUdhdGV3YXlQcm9wczogUmVzdEFwaUJhc2VQcm9wcyA9XG4gICAgICB0aGlzLnZwY0VuZHBvaW50ICYmIGFwaVZwY0VuZHBvaW50Py52cGNJZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHJlc3RBcGlOYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgdHlwZXM6IFtFbmRwb2ludFR5cGUuUFJJVkFURV0sXG4gICAgICAgICAgICAgIHZwY0VuZHBvaW50czogW3RoaXMudnBjRW5kcG9pbnRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvbGljeTogdGhpcy5jcmVhdGVWcGNFbmRwb2ludFBvbGljeShhcGlWcGNFbmRwb2ludC52cGNJZCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHJlc3RBcGlOYW1lOiBwcmVmaXgsXG4gICAgICAgICAgfTtcblxuICAgIC8vIENyZWF0ZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAgY29uc3QgaW5pdExhbWJkYSA9IG5ldyBJbml0KHRoaXMpLmxhbWJkYTtcbiAgICBjb25zdCB1c2Vyc0xhbWJkYSA9IG5ldyBVc2Vycyh0aGlzKS5sYW1iZGE7XG4gICAgY29uc3QgZmxvd0NvbmZpZ0xhbWJkYSA9IG5ldyBGbG93Q29uZmlnKHRoaXMpLmxhbWJkYTtcbiAgICBjb25zdCBwcmV2aWV3U3BlZWNoTGFtYmRhID0gbmV3IFByZXZpZXdTcGVlY2godGhpcykubGFtYmRhO1xuICAgIGNvbnN0IHNldHRpbmdzTGFtYmRhID0gbmV3IFNldHRpbmdzKHRoaXMpLmxhbWJkYTtcbiAgICBjb25zdCBzdGF0aWNMYW1iZGEgPSB0aGlzLnN0YXRpY0hvc3RpbmcuaGFuZGxlcjtcblxuICAgIC8vIFVwZGF0ZSBBdXRob3JpemVyIFByb3ZpZGVyIEFSTlxuICAgIGNvbnN0IHNvdXJjZUZpbGVOYW1lID0gam9pbihfX2Rpcm5hbWUsICdzcGVjLnlhbWwnKTtcbiAgICBjb25zdCB5bWwgPSByZWFkRmlsZVN5bmMoc291cmNlRmlsZU5hbWUpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgc3BlYyA9IHBhcnNlKHltbCk7XG5cbiAgICBjb25zdCBhdXRob3JpemVyID0gc3BlYy5jb21wb25lbnRzLnNlY3VyaXR5U2NoZW1lcy5Db2duaXRvQXV0aG9yaXplcjtcbiAgICBhdXRob3JpemVyWyd4LWFtYXpvbi1hcGlnYXRld2F5LWF1dGhvcml6ZXInXS5wcm92aWRlckFSTnMgPSBbXG4gICAgICBzdGFjay51c2VyUG9vbC51c2VyUG9vbEFybixcbiAgICBdO1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHNldCBMYW1iZGEgaW50ZWdyYXRpb24gVVJJXG4gICAgY29uc3Qgc2V0TGFtYmRhSW50ZWdyYXRpb24gPSAoXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICBtZXRob2Q6IHN0cmluZyxcbiAgICAgIGxhbWJkYTogYW55XG4gICAgKSA9PiB7XG4gICAgICBzcGVjLnBhdGhzW3BhdGhdW21ldGhvZF1bXG4gICAgICAgICd4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uJ1xuICAgICAgXS51cmkgPSBgYXJuOmF3czphcGlnYXRld2F5OiR7c3RhY2sucmVnaW9ufTpsYW1iZGE6cGF0aC8yMDE1LTAzLTMxL2Z1bmN0aW9ucy8ke2xhbWJkYS5mdW5jdGlvbkFybn0vaW52b2NhdGlvbnNgO1xuICAgIH07XG5cbiAgICAvLyBVcGRhdGUgdGhlIHNwZWMgdG8gcmVwbGFjZSBoYW5kbGVyIFVSSXMgd2l0aCBhY3R1YWwgTGFtYmRhIEFSTnNcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9pbml0JywgJ2dldCcsIGluaXRMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL3VzZXJzL3t1c2VySWR9JywgJ2dldCcsIHVzZXJzTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9mbG93LWNvbmZpZycsICdnZXQnLCBmbG93Q29uZmlnTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9mbG93LWNvbmZpZy97aWR9JywgJ2dldCcsIGZsb3dDb25maWdMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL2Zsb3ctY29uZmlnL3tpZH0nLCAncG9zdCcsIGZsb3dDb25maWdMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL2Zsb3ctY29uZmlnL3tpZH0nLCAnZGVsZXRlJywgZmxvd0NvbmZpZ0xhbWJkYSk7XG4gICAgc2V0TGFtYmRhSW50ZWdyYXRpb24oJy9hcGkvZmxvdy1jb25maWcvcHJldmlldycsICdwb3N0JywgZmxvd0NvbmZpZ0xhbWJkYSk7XG4gICAgc2V0TGFtYmRhSW50ZWdyYXRpb24oJy9hcGkvcHJldmlldy1zcGVlY2gnLCAncG9zdCcsIHByZXZpZXdTcGVlY2hMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcvYXBpL3NldHRpbmdzJywgJ2dldCcsIHNldHRpbmdzTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignL2FwaS9zZXR0aW5ncycsICdwb3N0Jywgc2V0dGluZ3NMYW1iZGEpO1xuICAgIHNldExhbWJkYUludGVncmF0aW9uKCcve3Byb3h5K30nLCAnZ2V0Jywgc3RhdGljTGFtYmRhKTtcbiAgICBzZXRMYW1iZGFJbnRlZ3JhdGlvbignLycsICdnZXQnLCBzdGF0aWNMYW1iZGEpO1xuXG4gICAgLy8gQ3JlYXRlIEFQSSBHYXRld2F5IGZyb20gdXBkYXRlZCBPcGVuQVBJIHNwZWNcbiAgICB0aGlzLnJlc3RBcGkgPSBuZXcgU3BlY1Jlc3RBcGkodGhpcywgJ1Jlc3RBcGknLCB7XG4gICAgICAuLi5hcGlHYXRld2F5UHJvcHMsXG4gICAgICBhcGlEZWZpbml0aW9uOiBBcGlEZWZpbml0aW9uLmZyb21JbmxpbmUoc3BlYyksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBBUEkgR2F0ZXdheSBwZXJtaXNzaW9uIHRvIGludm9rZSBMYW1iZGEgZnVuY3Rpb25zXG4gICAgY29uc3QgYXBpR2F0ZXdheVByaW5jaXBhbCA9IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFxuICAgICAgJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbSdcbiAgICApO1xuICAgIGluaXRMYW1iZGEuZ3JhbnRJbnZva2UoYXBpR2F0ZXdheVByaW5jaXBhbCk7XG4gICAgdXNlcnNMYW1iZGEuZ3JhbnRJbnZva2UoYXBpR2F0ZXdheVByaW5jaXBhbCk7XG4gICAgZmxvd0NvbmZpZ0xhbWJkYS5ncmFudEludm9rZShhcGlHYXRld2F5UHJpbmNpcGFsKTtcbiAgICBwcmV2aWV3U3BlZWNoTGFtYmRhLmdyYW50SW52b2tlKGFwaUdhdGV3YXlQcmluY2lwYWwpO1xuICAgIHNldHRpbmdzTGFtYmRhLmdyYW50SW52b2tlKGFwaUdhdGV3YXlQcmluY2lwYWwpO1xuICAgIHN0YXRpY0xhbWJkYS5ncmFudEludm9rZShhcGlHYXRld2F5UHJpbmNpcGFsKTtcblxuICAgIHRoaXMudXJsID0gdGhpcy52cGNFbmRwb2ludFxuICAgICAgPyBgaHR0cHM6Ly8ke3RoaXMucmVzdEFwaS5yZXN0QXBpSWR9LSR7dGhpcy52cGNFbmRwb2ludC52cGNFbmRwb2ludElkfS5leGVjdXRlLWFwaS4ke3N0YWNrLnJlZ2lvbn0uYW1hem9uYXdzLmNvbS9wcm9kYFxuICAgICAgOiBgaHR0cHM6Ly8ke3RoaXMucmVzdEFwaS5yZXN0QXBpSWR9LmV4ZWN1dGUtYXBpLiR7c3RhY2sucmVnaW9ufS5hbWF6b25hd3MuY29tL3Byb2RgO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJlc291cmNlIHBvbGljeSBmb3IgdGhlIFZQQyBlbmRwb2ludCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHNwZWNpZmljIFZQQ1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVWcGNFbmRwb2ludFBvbGljeSh2cGNJZDogc3RyaW5nKTogUG9saWN5RG9jdW1lbnQge1xuICAgIHJldHVybiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBwcmluY2lwYWxzOiBbbmV3IEFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2V4ZWN1dGUtYXBpOionXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgICAnYXdzOlNvdXJjZVZwYyc6IHZwY0lkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5pdC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9hcGkvSW5pdC9Jbml0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbml0RW52IHtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHVzZXJQb29sSWQ6IHN0cmluZztcbiAgQVdTX1JFR0lPTj86IHN0cmluZztcbiAgLyoqXG4gICAqIHRydWUvZmFsc2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBDWEJ1aWxkZXIgYnJhbmRpbmcgaW4gdGhlIHdlYiBhcHAuXG4gICAqL1xuICBicmFuZGluZzogc3RyaW5nO1xufVxuIl19
|
|
@@ -16,6 +16,7 @@ class Init extends constructs_1.Construct {
|
|
|
16
16
|
environment: {
|
|
17
17
|
stackName: stackName,
|
|
18
18
|
userPoolId: api.stack.props.cognito.userPoolId,
|
|
19
|
+
branding: (api.stack.props.branding ?? true).toString(),
|
|
19
20
|
},
|
|
20
21
|
timeout: aws_cdk_lib_1.Duration.seconds(15),
|
|
21
22
|
initialPolicy: [
|
|
@@ -32,4 +33,4 @@ class Init extends constructs_1.Construct {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
exports.Init = Init;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9hcGkvSW5pdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFJdkMsNkNBQThDO0FBQzlDLGlEQUE4RDtBQUM5RCxxREFBa0Q7QUFFbEQ7O0dBRUc7QUFDSCxNQUFhLElBQUssU0FBUSxzQkFBUztJQUVqQyxZQUFZLEdBQVE7UUFDbEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVuQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUEsMkJBQVksRUFBVSxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25ELFdBQVcsRUFBRTtnQkFDWCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO2FBQ3hEO1lBQ0QsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixhQUFhLEVBQUU7Z0JBQ2IsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNULDBCQUEwQixNQUFNLElBQUksT0FBTyxVQUFVLFNBQVMsSUFBSTtxQkFDbkU7aUJBQ0YsQ0FBQzthQUNIO1lBQ0QsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUExQkQsb0JBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSW5pdEVudiB9IGZyb20gJy4vSW5pdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBpIH0gZnJvbSAnLi4vQXBpJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBjcmVhdGVMYW1iZGEgfSBmcm9tICcuLi8uLi9jcmVhdGVMYW1iZGEnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHJ1bi10aW1lIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBUEkgc3VjaCBhcyBBdXRoLlxuICovXG5leHBvcnQgY2xhc3MgSW5pdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGxhbWJkYTogRnVuY3Rpb247XG4gIGNvbnN0cnVjdG9yKGFwaTogQXBpKSB7XG4gICAgc3VwZXIoYXBpLCAnSW5pdCcpO1xuXG4gICAgY29uc3QgeyBzdGFja05hbWUsIHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICB0aGlzLmxhbWJkYSA9IGNyZWF0ZUxhbWJkYTxJbml0RW52Pih0aGlzLCAnSGFuZGxlcicsIHtcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIHN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICB1c2VyUG9vbElkOiBhcGkuc3RhY2sucHJvcHMuY29nbml0by51c2VyUG9vbElkLFxuICAgICAgICBicmFuZGluZzogKGFwaS5zdGFjay5wcm9wcy5icmFuZGluZyA/PyB0cnVlKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjoke3JlZ2lvbn06JHthY2NvdW50fTpzdGFjay8ke3N0YWNrTmFtZX0vKmAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgYWxlcnRUb3BpYzogYXBpLnN0YWNrLmFsZXJ0VG9waWMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2V0dGluZ3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvYXBpL1NldHRpbmdzL1NldHRpbmdzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc0VudiB7XG4gIFRBQkxFX05BTUU6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Settings = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const createLambda_1 = require("../../createLambda");
|
|
6
|
+
class Settings extends constructs_1.Construct {
|
|
7
|
+
constructor(api) {
|
|
8
|
+
super(api, 'Settings');
|
|
9
|
+
// Create Lambda function
|
|
10
|
+
this.lambda = (0, createLambda_1.createLambda)(this, 'Handler', {
|
|
11
|
+
environment: {
|
|
12
|
+
TABLE_NAME: api.stack.table.tableName,
|
|
13
|
+
},
|
|
14
|
+
alertTopic: api.stack.alertTopic,
|
|
15
|
+
});
|
|
16
|
+
// Grant DynamoDB permissions
|
|
17
|
+
api.stack.table.grantReadWriteData(this.lambda);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.Settings = Settings;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9hcGkvU2V0dGluZ3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLHFEQUFrRDtBQUtsRCxNQUFhLFFBQVMsU0FBUSxzQkFBUztJQUdyQyxZQUFZLEdBQVE7UUFDbEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2Qix5QkFBeUI7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFBLDJCQUFZLEVBQWMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN2RCxXQUFXLEVBQUU7Z0JBQ1gsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVM7YUFDdEM7WUFDRCxVQUFVLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVO1NBQ2pDLENBQUMsQ0FBQztRQUVILDZCQUE2QjtRQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBakJELDRCQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgY3JlYXRlTGFtYmRhIH0gZnJvbSAnLi4vLi4vY3JlYXRlTGFtYmRhJztcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTZXR0aW5nc0VudiB9IGZyb20gJy4vU2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwaSB9IGZyb20gJy4uL0FwaSc7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5ncyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGxhbWJkYTogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoYXBpOiBBcGkpIHtcbiAgICBzdXBlcihhcGksICdTZXR0aW5ncycpO1xuXG4gICAgLy8gQ3JlYXRlIExhbWJkYSBmdW5jdGlvblxuICAgIHRoaXMubGFtYmRhID0gY3JlYXRlTGFtYmRhPFNldHRpbmdzRW52Pih0aGlzLCAnSGFuZGxlcicsIHtcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFRBQkxFX05BTUU6IGFwaS5zdGFjay50YWJsZS50YWJsZU5hbWUsXG4gICAgICB9LFxuICAgICAgYWxlcnRUb3BpYzogYXBpLnN0YWNrLmFsZXJ0VG9waWMsXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBEeW5hbW9EQiBwZXJtaXNzaW9uc1xuICAgIGFwaS5zdGFjay50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEodGhpcy5sYW1iZGEpO1xuICB9XG59XG4iXX0=
|