@glicogh/healthcare-cdk 0.1.61 → 0.1.62
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.
|
@@ -6,6 +6,7 @@ const constants_1 = require("../util/constants");
|
|
|
6
6
|
const initBuildConfig_1 = require("../util/initBuildConfig");
|
|
7
7
|
const migration_1 = require("../util/migration");
|
|
8
8
|
const path = require("path");
|
|
9
|
+
const fs = require("fs");
|
|
9
10
|
class MicroserviceMigration extends cdk.Stack {
|
|
10
11
|
constructor(scope, id, props) {
|
|
11
12
|
super(scope, id, props);
|
|
@@ -37,47 +38,49 @@ class MicroserviceMigration extends cdk.Stack {
|
|
|
37
38
|
},
|
|
38
39
|
});
|
|
39
40
|
const lambdasRootDir = path.join(path.resolve('../../'), 'lambdas');
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
lambdaProps.environment
|
|
41
|
+
if (fs.existsSync(lambdasRootDir)) {
|
|
42
|
+
const lambdaProps = {
|
|
43
|
+
runtime: cdk.aws_lambda.Runtime.NODEJS_22_X,
|
|
44
|
+
architecture: cdk.aws_lambda.Architecture.X86_64,
|
|
45
|
+
handler: 'handler',
|
|
46
|
+
depsLockFilePath: path.join(lambdasRootDir, 'package-lock.json'),
|
|
47
|
+
projectRoot: lambdasRootDir,
|
|
48
|
+
bundling: {
|
|
49
|
+
tsconfig: path.join(lambdasRootDir, 'tsconfig.json'),
|
|
50
|
+
externalModules: ['better-sqlite3', 'pg', 'mysql', 'sqlite3', 'tedious', 'oracledb', 'pg-query-stream'],
|
|
51
|
+
},
|
|
52
|
+
environment: (0, migration_1.getLambdaEnvs)(this),
|
|
53
|
+
vpc,
|
|
54
|
+
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS },
|
|
55
|
+
paramsAndSecrets,
|
|
56
|
+
timeout: cdk.Duration.minutes(10),
|
|
57
|
+
};
|
|
58
|
+
const migrationQueue = new cdk.aws_sqs.Queue(this, 'migrationQueue', {
|
|
59
|
+
queueName: 'migration-queue.fifo',
|
|
60
|
+
fifo: true,
|
|
61
|
+
fifoThroughputLimit: cdk.aws_sqs.FifoThroughputLimit.PER_MESSAGE_GROUP_ID,
|
|
62
|
+
deduplicationScope: cdk.aws_sqs.DeduplicationScope.MESSAGE_GROUP,
|
|
63
|
+
});
|
|
64
|
+
if (lambdaProps.environment) {
|
|
65
|
+
lambdaProps.environment['MIGRATION_QUEUE_URL'] = migrationQueue.queueUrl;
|
|
66
|
+
}
|
|
67
|
+
const producerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationProducerLambda', {
|
|
68
|
+
...lambdaProps,
|
|
69
|
+
functionName: 'migration-producer',
|
|
70
|
+
entry: path.join(lambdasRootDir, 'producer', 'index.ts'),
|
|
71
|
+
role: lambdaRole,
|
|
72
|
+
});
|
|
73
|
+
const consumerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationConsumerLambda', {
|
|
74
|
+
...lambdaProps,
|
|
75
|
+
functionName: 'migration-consumer',
|
|
76
|
+
entry: path.join(lambdasRootDir, 'consumer', 'index.ts'),
|
|
77
|
+
role: lambdaRole,
|
|
78
|
+
});
|
|
79
|
+
consumerLambda.addEventSource(new cdk.aws_lambda_event_sources.SqsEventSource(migrationQueue, { batchSize: 10, maxConcurrency: 10 }));
|
|
80
|
+
migrationQueue.grantSendMessages(producerLambda);
|
|
81
|
+
migrationQueue.grantConsumeMessages(consumerLambda);
|
|
64
82
|
}
|
|
65
|
-
const producerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationProducerLambda', {
|
|
66
|
-
...lambdaProps,
|
|
67
|
-
functionName: 'migration-producer',
|
|
68
|
-
entry: path.join(lambdasRootDir, 'producer', 'index.ts'),
|
|
69
|
-
role: lambdaRole,
|
|
70
|
-
});
|
|
71
|
-
const consumerLambda = new cdk.aws_lambda_nodejs.NodejsFunction(this, 'migrationConsumerLambda', {
|
|
72
|
-
...lambdaProps,
|
|
73
|
-
functionName: 'migration-consumer',
|
|
74
|
-
entry: path.join(lambdasRootDir, 'consumer', 'index.ts'),
|
|
75
|
-
role: lambdaRole,
|
|
76
|
-
});
|
|
77
|
-
consumerLambda.addEventSource(new cdk.aws_lambda_event_sources.SqsEventSource(migrationQueue, { batchSize: 10, maxConcurrency: 10 }));
|
|
78
|
-
migrationQueue.grantSendMessages(producerLambda);
|
|
79
|
-
migrationQueue.grantConsumeMessages(consumerLambda);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
exports.MicroserviceMigration = MicroserviceMigration;
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW1pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9taWNyb3NlcnZpY2UtbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQyxpREFBbUQ7QUFDbkQsNkRBQXNEO0FBQ3RELGlEQUFrRDtBQUNsRCw2QkFBNkI7QUFDN0IseUJBQXlCO0FBRXpCLE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUEsMEJBQWMsRUFBQyxPQUFPLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtZQUNqSSxjQUFjLEVBQUUsRUFBRTtZQUNsQixxQkFBcUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDbkUsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ25FLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDakgsY0FBYyxFQUFFO2dCQUNkLGdCQUFnQixFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0JBQy9DLFVBQVUsRUFBRTt3QkFDVixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDOzRCQUM5QixHQUFHLEVBQUUsZ0NBQWdDOzRCQUNyQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLDZCQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSw2QkFBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLGNBQWMsNkJBQVcsQ0FBQyxPQUFPLGtCQUFrQixDQUFDOzRCQUNoSSxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzs0QkFDOUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUs7eUJBQ2pDLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUE4QztnQkFDN0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQzNDLFlBQVksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUNoRCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7Z0JBQ2hFLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixRQUFRLEVBQUU7b0JBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQztvQkFDcEQsZUFBZSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztpQkFDeEc7Z0JBQ0QsV0FBVyxFQUFFLElBQUEseUJBQWEsRUFBQyxJQUFJLENBQUM7Z0JBQ2hDLEdBQUc7Z0JBQ0gsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFO2dCQUN0RSxnQkFBZ0I7Z0JBQ2hCLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDbEMsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNuRSxTQUFTLEVBQUUsc0JBQXNCO2dCQUNqQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixtQkFBbUIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQjtnQkFDekUsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhO2FBQ2pFLENBQUMsQ0FBQztZQUVILElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1QixXQUFXLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMzRSxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtnQkFDL0YsR0FBRyxXQUFXO2dCQUNkLFlBQVksRUFBRSxvQkFBb0I7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsVUFBVTthQUNqQixDQUFDLENBQUM7WUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUMvRixHQUFHLFdBQVc7Z0JBQ2QsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7Z0JBQ3hELElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV0SSxjQUFjLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsY0FBYyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyRkQsc0RBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldExhbWJkYUVudnMgfSBmcm9tICcuLi91dGlsL21pZ3JhdGlvbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG5leHBvcnQgY2xhc3MgTWljcm9zZXJ2aWNlTWlncmF0aW9uIGV4dGVuZHMgY2RrLlN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBjZGsuU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgaWYgKCFidWlsZENvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWlsZENvbmZpZyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjID0gY2RrLmF3c19lYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ1ZQQ0xvb2t1cCcsIHtcbiAgICAgIHZwY05hbWU6IGdldEVudkNvbnN0YW50KCd2cGNJZCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1zQW5kU2VjcmV0cyA9IGNkay5hd3NfbGFtYmRhLlBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24uZnJvbVZlcnNpb24oY2RrLmF3c19sYW1iZGEuUGFyYW1zQW5kU2VjcmV0c1ZlcnNpb25zLlYxXzBfMTAzLCB7XG4gICAgICBtYXhDb25uZWN0aW9uczogMjAsXG4gICAgICBzZWNyZXRzTWFuYWdlclRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBsYW1iZGFSb2xlID0gbmV3IGNkay5hd3NfaWFtLlJvbGUodGhpcywgJ01pZ3JhdGlvbkxhbWJkYVJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogJ01pZ3JhdGlvbkxhbWJkYScsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBjZGsuYXdzX2lhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbY2RrLmF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKV0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBtaWdyYXRpb25MYW1iZGFzOiBuZXcgY2RrLmF3c19pYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBjZGsuYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdBbGxvd0xhbWJkYVRvUmVhZFNTTVBhcmFtZXRlcnMnLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czpzc206JHtidWlsZENvbmZpZy5hd3MucmVnaW9ufToke2J1aWxkQ29uZmlnLmF3cy5hY2NvdW50fTpwYXJhbWV0ZXIvJHtidWlsZENvbmZpZy5lbnZOYW1lfS9taWNyb3NlcnZpY2VzLypgXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydzc206R2V0UGFyYW1ldGVyKiddLFxuICAgICAgICAgICAgICBlZmZlY3Q6IGNkay5hd3NfaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxhbWJkYXNSb290RGlyID0gcGF0aC5qb2luKHBhdGgucmVzb2x2ZSgnLi4vLi4vJyksICdsYW1iZGFzJyk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMobGFtYmRhc1Jvb3REaXIpKSB7XG4gICAgICBjb25zdCBsYW1iZGFQcm9wczogY2RrLmF3c19sYW1iZGFfbm9kZWpzLk5vZGVqc0Z1bmN0aW9uUHJvcHMgPSB7XG4gICAgICAgIHJ1bnRpbWU6IGNkay5hd3NfbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogY2RrLmF3c19sYW1iZGEuQXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBwYXRoLmpvaW4obGFtYmRhc1Jvb3REaXIsICdwYWNrYWdlLWxvY2suanNvbicpLFxuICAgICAgICBwcm9qZWN0Um9vdDogbGFtYmRhc1Jvb3REaXIsXG4gICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgdHNjb25maWc6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ3RzY29uZmlnLmpzb24nKSxcbiAgICAgICAgICBleHRlcm5hbE1vZHVsZXM6IFsnYmV0dGVyLXNxbGl0ZTMnLCAncGcnLCAnbXlzcWwnLCAnc3FsaXRlMycsICd0ZWRpb3VzJywgJ29yYWNsZWRiJywgJ3BnLXF1ZXJ5LXN0cmVhbSddLFxuICAgICAgICB9LFxuICAgICAgICBlbnZpcm9ubWVudDogZ2V0TGFtYmRhRW52cyh0aGlzKSxcbiAgICAgICAgdnBjLFxuICAgICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldFR5cGU6IGNkay5hd3NfZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9LFxuICAgICAgICBwYXJhbXNBbmRTZWNyZXRzLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxMCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtaWdyYXRpb25RdWV1ZSA9IG5ldyBjZGsuYXdzX3Nxcy5RdWV1ZSh0aGlzLCAnbWlncmF0aW9uUXVldWUnLCB7XG4gICAgICAgIHF1ZXVlTmFtZTogJ21pZ3JhdGlvbi1xdWV1ZS5maWZvJyxcbiAgICAgICAgZmlmbzogdHJ1ZSxcbiAgICAgICAgZmlmb1Rocm91Z2hwdXRMaW1pdDogY2RrLmF3c19zcXMuRmlmb1Rocm91Z2hwdXRMaW1pdC5QRVJfTUVTU0FHRV9HUk9VUF9JRCxcbiAgICAgICAgZGVkdXBsaWNhdGlvblNjb3BlOiBjZGsuYXdzX3Nxcy5EZWR1cGxpY2F0aW9uU2NvcGUuTUVTU0FHRV9HUk9VUCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGFtYmRhUHJvcHMuZW52aXJvbm1lbnQpIHtcbiAgICAgICAgbGFtYmRhUHJvcHMuZW52aXJvbm1lbnRbJ01JR1JBVElPTl9RVUVVRV9VUkwnXSA9IG1pZ3JhdGlvblF1ZXVlLnF1ZXVlVXJsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9kdWNlckxhbWJkYSA9IG5ldyBjZGsuYXdzX2xhbWJkYV9ub2RlanMuTm9kZWpzRnVuY3Rpb24odGhpcywgJ21pZ3JhdGlvblByb2R1Y2VyTGFtYmRhJywge1xuICAgICAgICAuLi5sYW1iZGFQcm9wcyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiAnbWlncmF0aW9uLXByb2R1Y2VyJyxcbiAgICAgICAgZW50cnk6IHBhdGguam9pbihsYW1iZGFzUm9vdERpciwgJ3Byb2R1Y2VyJywgJ2luZGV4LnRzJyksXG4gICAgICAgIHJvbGU6IGxhbWJkYVJvbGUsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29uc3VtZXJMYW1iZGEgPSBuZXcgY2RrLmF3c19sYW1iZGFfbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdtaWdyYXRpb25Db25zdW1lckxhbWJkYScsIHtcbiAgICAgICAgLi4ubGFtYmRhUHJvcHMsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogJ21pZ3JhdGlvbi1jb25zdW1lcicsXG4gICAgICAgIGVudHJ5OiBwYXRoLmpvaW4obGFtYmRhc1Jvb3REaXIsICdjb25zdW1lcicsICdpbmRleC50cycpLFxuICAgICAgICByb2xlOiBsYW1iZGFSb2xlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN1bWVyTGFtYmRhLmFkZEV2ZW50U291cmNlKG5ldyBjZGsuYXdzX2xhbWJkYV9ldmVudF9zb3VyY2VzLlNxc0V2ZW50U291cmNlKG1pZ3JhdGlvblF1ZXVlLCB7IGJhdGNoU2l6ZTogMTAsIG1heENvbmN1cnJlbmN5OiAxMCB9KSk7XG5cbiAgICAgIG1pZ3JhdGlvblF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHByb2R1Y2VyTGFtYmRhKTtcbiAgICAgIG1pZ3JhdGlvblF1ZXVlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKGNvbnN1bWVyTGFtYmRhKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|