@cloudsnorkel/cdk-github-runners 0.14.14 → 0.14.16
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 +832 -287
- package/API.md +576 -6
- package/README.md +149 -0
- package/SETUP_GITHUB.md +99 -3
- package/assets/delete-failed-runner.lambda/index.js +40 -31
- package/assets/idle-runner-repear.lambda/index.js +40 -31
- package/assets/providers/lambda-runner.sh +2 -1
- package/assets/setup.lambda/index.html +12 -7
- package/assets/setup.lambda/index.js +26 -26
- package/assets/status.lambda/index.js +40 -31
- package/assets/token-retriever.lambda/index.js +40 -31
- package/assets/webhook-handler.lambda/index.js +110 -43
- package/assets/webhook-redelivery.lambda/index.js +40 -31
- package/lib/access.js +1 -1
- package/lib/image-builders/api.js +1 -1
- package/lib/image-builders/aws-image-builder/ami.d.ts +1 -2
- package/lib/image-builders/aws-image-builder/ami.js +6 -13
- package/lib/image-builders/aws-image-builder/builder.d.ts +4 -2
- package/lib/image-builders/aws-image-builder/builder.js +36 -34
- package/lib/image-builders/aws-image-builder/container.d.ts +2 -2
- package/lib/image-builders/aws-image-builder/container.js +7 -12
- package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
- package/lib/image-builders/aws-image-builder/index.d.ts +0 -1
- package/lib/image-builders/aws-image-builder/index.js +1 -2
- package/lib/image-builders/aws-image-builder/workflow.d.ts +4 -4
- package/lib/image-builders/aws-image-builder/workflow.js +7 -10
- package/lib/image-builders/codebuild-deprecated.js +1 -1
- package/lib/image-builders/components.js +1 -1
- package/lib/image-builders/static.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/providers/codebuild.d.ts +1 -0
- package/lib/providers/codebuild.js +22 -9
- package/lib/providers/common.d.ts +59 -0
- package/lib/providers/common.js +11 -4
- package/lib/providers/composite.d.ts +61 -0
- package/lib/providers/composite.js +229 -0
- package/lib/providers/ec2.d.ts +1 -0
- package/lib/providers/ec2.js +22 -13
- package/lib/providers/ecs.d.ts +4 -0
- package/lib/providers/ecs.js +16 -6
- package/lib/providers/fargate.d.ts +1 -0
- package/lib/providers/fargate.js +19 -9
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/index.js +2 -1
- package/lib/providers/lambda.d.ts +1 -0
- package/lib/providers/lambda.js +8 -5
- package/lib/runner.d.ts +29 -5
- package/lib/runner.js +57 -24
- package/lib/secrets.js +1 -1
- package/lib/webhook-handler.lambda.d.ts +11 -0
- package/lib/webhook-handler.lambda.js +81 -14
- package/lib/webhook.d.ts +52 -7
- package/lib/webhook.js +4 -2
- package/package.json +16 -20
- package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +0 -2115
- package/lib/image-builders/aws-image-builder/common.d.ts +0 -10
- package/lib/image-builders/aws-image-builder/common.js +0 -48
- package/lib/image-builders/aws-image-builder/versioner-function.d.ts +0 -13
- package/lib/image-builders/aws-image-builder/versioner-function.js +0 -23
- package/lib/image-builders/aws-image-builder/versioner.lambda.d.ts +0 -7
- package/lib/image-builders/aws-image-builder/versioner.lambda.js +0 -115
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as cdk from 'aws-cdk-lib';
|
|
2
|
-
import { Construct } from 'constructs';
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class ImageBuilderObjectBase extends cdk.Resource {
|
|
7
|
-
protected constructor(scope: Construct, id: string);
|
|
8
|
-
protected generateVersion(type: 'Component' | 'ImageRecipe' | 'ContainerRecipe' | 'Workflow', name: string, data: any): string;
|
|
9
|
-
private versionFunction;
|
|
10
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImageBuilderObjectBase = void 0;
|
|
4
|
-
const cdk = require("aws-cdk-lib");
|
|
5
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
-
const versioner_function_1 = require("./versioner-function");
|
|
7
|
-
const utils_1 = require("../../utils");
|
|
8
|
-
/**
|
|
9
|
-
* @internal
|
|
10
|
-
*/
|
|
11
|
-
class ImageBuilderObjectBase extends cdk.Resource {
|
|
12
|
-
constructor(scope, id) {
|
|
13
|
-
super(scope, id);
|
|
14
|
-
}
|
|
15
|
-
generateVersion(type, name, data) {
|
|
16
|
-
return new aws_cdk_lib_1.CustomResource(this, 'Version', {
|
|
17
|
-
serviceToken: this.versionFunction().functionArn,
|
|
18
|
-
resourceType: `Custom::ImageBuilder-${type}-Version`,
|
|
19
|
-
removalPolicy: cdk.RemovalPolicy.RETAIN, // no point in deleting as it doesn't even create anything
|
|
20
|
-
properties: {
|
|
21
|
-
ObjectType: type,
|
|
22
|
-
ObjectName: name,
|
|
23
|
-
VersionedData: data, // get a new version every time something changes, like Image Builder wants
|
|
24
|
-
},
|
|
25
|
-
}).ref;
|
|
26
|
-
}
|
|
27
|
-
versionFunction() {
|
|
28
|
-
return (0, utils_1.singletonLambda)(versioner_function_1.VersionerFunction, this, 'aws-image-builder-versioner', {
|
|
29
|
-
description: 'Custom resource handler that bumps up Image Builder versions',
|
|
30
|
-
initialPolicy: [
|
|
31
|
-
new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
32
|
-
actions: [
|
|
33
|
-
'imagebuilder:ListComponents',
|
|
34
|
-
'imagebuilder:ListContainerRecipes',
|
|
35
|
-
'imagebuilder:ListImageRecipes',
|
|
36
|
-
'imagebuilder:ListWorkflows',
|
|
37
|
-
],
|
|
38
|
-
resources: ['*'],
|
|
39
|
-
}),
|
|
40
|
-
],
|
|
41
|
-
logGroup: (0, utils_1.singletonLogGroup)(this, utils_1.SingletonLogType.RUNNER_IMAGE_BUILD),
|
|
42
|
-
loggingFormat: aws_cdk_lib_1.aws_lambda.LoggingFormat.JSON,
|
|
43
|
-
timeout: cdk.Duration.minutes(5),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.ImageBuilderObjectBase = ImageBuilderObjectBase;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBQW1GO0FBRW5GLDZEQUF5RDtBQUN6RCx1Q0FBbUY7QUFFbkY7O0dBRUc7QUFDSCxNQUFzQixzQkFBdUIsU0FBUSxHQUFHLENBQUMsUUFBUTtJQUMvRCxZQUFzQixLQUFnQixFQUFFLEVBQVU7UUFDaEQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRVMsZUFBZSxDQUFDLElBQWtFLEVBQUUsSUFBWSxFQUFFLElBQVM7UUFDbkgsT0FBTyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN6QyxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFdBQVc7WUFDaEQsWUFBWSxFQUFFLHdCQUF3QixJQUFJLFVBQVU7WUFDcEQsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLDBEQUEwRDtZQUNuRyxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixhQUFhLEVBQUUsSUFBSSxFQUFFLDJFQUEyRTthQUNqRztTQUNGLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUEsdUJBQWUsRUFBQyxzQ0FBaUIsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7WUFDN0UsV0FBVyxFQUFFLDhEQUE4RDtZQUMzRSxhQUFhLEVBQUU7Z0JBQ2IsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztvQkFDdEIsT0FBTyxFQUFFO3dCQUNQLDZCQUE2Qjt3QkFDN0IsbUNBQW1DO3dCQUNuQywrQkFBK0I7d0JBQy9CLDRCQUE0QjtxQkFDN0I7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7WUFDRCxRQUFRLEVBQUUsSUFBQSx5QkFBaUIsRUFBQyxJQUFJLEVBQUUsd0JBQWdCLENBQUMsa0JBQWtCLENBQUM7WUFDdEUsYUFBYSxFQUFFLHdCQUFNLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDeEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyQ0Qsd0RBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtLCBhd3NfbGFtYmRhIGFzIGxhbWJkYSwgQ3VzdG9tUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFZlcnNpb25lckZ1bmN0aW9uIH0gZnJvbSAnLi92ZXJzaW9uZXItZnVuY3Rpb24nO1xuaW1wb3J0IHsgc2luZ2xldG9uTGFtYmRhLCBzaW5nbGV0b25Mb2dHcm91cCwgU2luZ2xldG9uTG9nVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEltYWdlQnVpbGRlck9iamVjdEJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2Uge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVWZXJzaW9uKHR5cGU6ICdDb21wb25lbnQnIHwgJ0ltYWdlUmVjaXBlJyB8ICdDb250YWluZXJSZWNpcGUnIHwgJ1dvcmtmbG93JywgbmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1ZlcnNpb24nLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMudmVyc2lvbkZ1bmN0aW9uKCkuZnVuY3Rpb25Bcm4sXG4gICAgICByZXNvdXJjZVR5cGU6IGBDdXN0b206OkltYWdlQnVpbGRlci0ke3R5cGV9LVZlcnNpb25gLFxuICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOLCAvLyBubyBwb2ludCBpbiBkZWxldGluZyBhcyBpdCBkb2Vzbid0IGV2ZW4gY3JlYXRlIGFueXRoaW5nXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIE9iamVjdFR5cGU6IHR5cGUsXG4gICAgICAgIE9iamVjdE5hbWU6IG5hbWUsXG4gICAgICAgIFZlcnNpb25lZERhdGE6IGRhdGEsIC8vIGdldCBhIG5ldyB2ZXJzaW9uIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIGNoYW5nZXMsIGxpa2UgSW1hZ2UgQnVpbGRlciB3YW50c1xuICAgICAgfSxcbiAgICB9KS5yZWY7XG4gIH1cblxuICBwcml2YXRlIHZlcnNpb25GdW5jdGlvbigpOiBWZXJzaW9uZXJGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHNpbmdsZXRvbkxhbWJkYShWZXJzaW9uZXJGdW5jdGlvbiwgdGhpcywgJ2F3cy1pbWFnZS1idWlsZGVyLXZlcnNpb25lcicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ3VzdG9tIHJlc291cmNlIGhhbmRsZXIgdGhhdCBidW1wcyB1cCBJbWFnZSBCdWlsZGVyIHZlcnNpb25zJyxcbiAgICAgIGluaXRpYWxQb2xpY3k6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdpbWFnZWJ1aWxkZXI6TGlzdENvbXBvbmVudHMnLFxuICAgICAgICAgICAgJ2ltYWdlYnVpbGRlcjpMaXN0Q29udGFpbmVyUmVjaXBlcycsXG4gICAgICAgICAgICAnaW1hZ2VidWlsZGVyOkxpc3RJbWFnZVJlY2lwZXMnLFxuICAgICAgICAgICAgJ2ltYWdlYnVpbGRlcjpMaXN0V29ya2Zsb3dzJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIGxvZ0dyb3VwOiBzaW5nbGV0b25Mb2dHcm91cCh0aGlzLCBTaW5nbGV0b25Mb2dUeXBlLlJVTk5FUl9JTUFHRV9CVUlMRCksXG4gICAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgfSk7XG4gIH1cbn1cblxuIl19
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
2
|
-
import { Construct } from 'constructs';
|
|
3
|
-
/**
|
|
4
|
-
* Props for VersionerFunction
|
|
5
|
-
*/
|
|
6
|
-
export interface VersionerFunctionProps extends lambda.FunctionOptions {
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* An AWS Lambda function which executes src/image-builders/aws-image-builder/versioner.
|
|
10
|
-
*/
|
|
11
|
-
export declare class VersionerFunction extends lambda.Function {
|
|
12
|
-
constructor(scope: Construct, id: string, props?: VersionerFunctionProps);
|
|
13
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VersionerFunction = void 0;
|
|
4
|
-
// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
|
-
/**
|
|
8
|
-
* An AWS Lambda function which executes src/image-builders/aws-image-builder/versioner.
|
|
9
|
-
*/
|
|
10
|
-
class VersionerFunction extends lambda.Function {
|
|
11
|
-
constructor(scope, id, props) {
|
|
12
|
-
super(scope, id, {
|
|
13
|
-
description: 'src/image-builders/aws-image-builder/versioner.lambda.ts',
|
|
14
|
-
...props,
|
|
15
|
-
runtime: new lambda.Runtime('nodejs22.x', lambda.RuntimeFamily.NODEJS),
|
|
16
|
-
handler: 'index.handler',
|
|
17
|
-
code: lambda.Code.fromAsset(path.join(__dirname, '../../../assets/image-builders/aws-image-builder/versioner.lambda')),
|
|
18
|
-
});
|
|
19
|
-
this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.VersionerFunction = VersionerFunction;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmVyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL3ZlcnNpb25lci1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSwwREFBMEQ7WUFDdkUsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1FQUFtRSxDQUFDLENBQUM7U0FDdkgsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCw4Q0FXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMuanMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgVmVyc2lvbmVyRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uZXJGdW5jdGlvblByb3BzIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG59XG5cbi8qKlxuICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyBzcmMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvdmVyc2lvbmVyLlxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbmVyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFZlcnNpb25lckZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2ltYWdlLWJ1aWxkZXJzL2F3cy1pbWFnZS1idWlsZGVyL3ZlcnNpb25lci5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczIyLngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9hc3NldHMvaW1hZ2UtYnVpbGRlcnMvYXdzLWltYWdlLWJ1aWxkZXIvdmVyc2lvbmVyLmxhbWJkYScpKSxcbiAgICB9KTtcbiAgICB0aGlzLmFkZEVudmlyb25tZW50KCdBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRCcsICcxJywgeyByZW1vdmVJbkVkZ2U6IHRydWUgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as AWSLambda from 'aws-lambda';
|
|
2
|
-
/**
|
|
3
|
-
* Exported for unit tests.
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export declare function increaseVersion(allVersions: string[]): string;
|
|
7
|
-
export declare function handler(event: AWSLambda.CloudFormationCustomResourceEvent, context: AWSLambda.Context): Promise<void>;
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.increaseVersion = increaseVersion;
|
|
4
|
-
exports.handler = handler;
|
|
5
|
-
const client_imagebuilder_1 = require("@aws-sdk/client-imagebuilder");
|
|
6
|
-
const semver_1 = require("semver");
|
|
7
|
-
const lambda_helpers_1 = require("../../lambda-helpers");
|
|
8
|
-
const ib = new client_imagebuilder_1.ImagebuilderClient();
|
|
9
|
-
/**
|
|
10
|
-
* Exported for unit tests.
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
function increaseVersion(allVersions) {
|
|
14
|
-
let version = (0, semver_1.maxSatisfying)(allVersions, '>=0.0.0');
|
|
15
|
-
if (version === null) {
|
|
16
|
-
version = '1.0.0';
|
|
17
|
-
}
|
|
18
|
-
console.log(`Found versions ${allVersions} -- latest is ${version}`);
|
|
19
|
-
version = (0, semver_1.inc)(version, 'patch');
|
|
20
|
-
if (version === null) {
|
|
21
|
-
throw new Error('Unable to bump version');
|
|
22
|
-
}
|
|
23
|
-
return version;
|
|
24
|
-
}
|
|
25
|
-
async function handler(event, context) {
|
|
26
|
-
console.log({ ...event, ResponseURL: '...' });
|
|
27
|
-
try {
|
|
28
|
-
const objectType = event.ResourceProperties.ObjectType;
|
|
29
|
-
const objectName = event.ResourceProperties.ObjectName;
|
|
30
|
-
switch (event.RequestType) {
|
|
31
|
-
case 'Create':
|
|
32
|
-
case 'Update':
|
|
33
|
-
let allVersions = [];
|
|
34
|
-
try {
|
|
35
|
-
switch (objectType) {
|
|
36
|
-
case 'Component': {
|
|
37
|
-
let result = {};
|
|
38
|
-
do {
|
|
39
|
-
result = await ib.send(new client_imagebuilder_1.ListComponentsCommand({
|
|
40
|
-
filters: [{
|
|
41
|
-
name: 'name',
|
|
42
|
-
values: [objectName],
|
|
43
|
-
}],
|
|
44
|
-
nextToken: result.nextToken,
|
|
45
|
-
}));
|
|
46
|
-
allVersions = allVersions.concat(result.componentVersionList.map(i => i.version || '1.0.0'));
|
|
47
|
-
} while (result.nextToken);
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
case 'ImageRecipe': {
|
|
51
|
-
let result = {};
|
|
52
|
-
do {
|
|
53
|
-
result = await ib.send(new client_imagebuilder_1.ListImageRecipesCommand({
|
|
54
|
-
filters: [{
|
|
55
|
-
name: 'name',
|
|
56
|
-
values: [objectName],
|
|
57
|
-
}],
|
|
58
|
-
nextToken: result.nextToken,
|
|
59
|
-
}));
|
|
60
|
-
allVersions = allVersions.concat(result.imageRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0'));
|
|
61
|
-
} while (result.nextToken);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
case 'ContainerRecipe': {
|
|
65
|
-
let result = {};
|
|
66
|
-
do {
|
|
67
|
-
result = await ib.send(new client_imagebuilder_1.ListContainerRecipesCommand({
|
|
68
|
-
filters: [{
|
|
69
|
-
name: 'name',
|
|
70
|
-
values: [objectName],
|
|
71
|
-
}],
|
|
72
|
-
nextToken: result.nextToken,
|
|
73
|
-
}));
|
|
74
|
-
allVersions = allVersions.concat(result.containerRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0'));
|
|
75
|
-
} while (result.nextToken);
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
case 'Workflow': {
|
|
79
|
-
let result = {};
|
|
80
|
-
do {
|
|
81
|
-
result = await ib.send(new client_imagebuilder_1.ListWorkflowsCommand({
|
|
82
|
-
filters: [{
|
|
83
|
-
name: 'name',
|
|
84
|
-
values: [objectName],
|
|
85
|
-
}],
|
|
86
|
-
nextToken: result.nextToken,
|
|
87
|
-
}));
|
|
88
|
-
allVersions = allVersions.concat(result.workflowVersionList.map(i => i.arn?.split('/').pop() || '1.0.0'));
|
|
89
|
-
} while (result.nextToken);
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
if (e.code !== 'ResourceNotFoundException') {
|
|
96
|
-
throw e;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
console.log('Resource not found, assuming first version');
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
const version = increaseVersion(allVersions);
|
|
103
|
-
await (0, lambda_helpers_1.customResourceRespond)(event, 'SUCCESS', 'OK', version, {});
|
|
104
|
-
break;
|
|
105
|
-
case 'Delete':
|
|
106
|
-
await (0, lambda_helpers_1.customResourceRespond)(event, 'SUCCESS', 'OK', event.PhysicalResourceId, {});
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch (e) {
|
|
111
|
-
console.log(e);
|
|
112
|
-
await (0, lambda_helpers_1.customResourceRespond)(event, 'FAILED', e.message || 'Internal Error', context.logStreamName, {});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbWFnZS1idWlsZGVycy9hd3MtaW1hZ2UtYnVpbGRlci92ZXJzaW9uZXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUJBLDBDQWFDO0FBRUQsMEJBMEZDO0FBOUhELHNFQVVzQztBQUV0QyxtQ0FBNEM7QUFDNUMseURBQTZEO0FBRTdELE1BQU0sRUFBRSxHQUFHLElBQUksd0NBQWtCLEVBQUUsQ0FBQztBQUVwQzs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsV0FBcUI7SUFDbkQsSUFBSSxPQUFPLEdBQUcsSUFBQSxzQkFBYSxFQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNyQixPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixXQUFXLGlCQUFpQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRXJFLE9BQU8sR0FBRyxJQUFBLFlBQUcsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFrRCxFQUFFLE9BQTBCO0lBQzFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUU5QyxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFFdkQsUUFBUSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUM7b0JBQ0gsUUFBUSxVQUFVLEVBQUUsQ0FBQzt3QkFDbkIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDOzRCQUNqQixJQUFJLE1BQU0sR0FBMkIsRUFBRSxDQUFDOzRCQUN4QyxHQUFHLENBQUM7Z0NBQ0YsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLDJDQUFxQixDQUFDO29DQUMvQyxPQUFPLEVBQUUsQ0FBQzs0Q0FDUixJQUFJLEVBQUUsTUFBTTs0Q0FDWixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7eUNBQ3JCLENBQUM7b0NBQ0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2lDQUM1QixDQUFDLENBQUMsQ0FBQztnQ0FDSixXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDOzRCQUNoRyxDQUFDLFFBQVEsTUFBTSxDQUFDLFNBQVMsRUFBRTs0QkFDM0IsTUFBTTt3QkFDUixDQUFDO3dCQUNELEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQzs0QkFDbkIsSUFBSSxNQUFNLEdBQTZCLEVBQUUsQ0FBQzs0QkFDMUMsR0FBRyxDQUFDO2dDQUNGLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSw2Q0FBdUIsQ0FBQztvQ0FDakQsT0FBTyxFQUFFLENBQUM7NENBQ1IsSUFBSSxFQUFFLE1BQU07NENBQ1osTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDO3lDQUNyQixDQUFDO29DQUNGLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztpQ0FDNUIsQ0FBQyxDQUFDLENBQUM7Z0NBQ0osV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ2hILENBQUMsUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFOzRCQUMzQixNQUFNO3dCQUNSLENBQUM7d0JBQ0QsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZCLElBQUksTUFBTSxHQUFpQyxFQUFFLENBQUM7NEJBQzlDLEdBQUcsQ0FBQztnQ0FDRixNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksaURBQTJCLENBQUM7b0NBQ3JELE9BQU8sRUFBRSxDQUFDOzRDQUNSLElBQUksRUFBRSxNQUFNOzRDQUNaLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5Q0FDckIsQ0FBQztvQ0FDRixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7aUNBQzVCLENBQUMsQ0FBQyxDQUFDO2dDQUNKLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDOzRCQUNwSCxDQUFDLFFBQVEsTUFBTSxDQUFDLFNBQVMsRUFBRTs0QkFDM0IsTUFBTTt3QkFDUixDQUFDO3dCQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQzs0QkFDaEIsSUFBSSxNQUFNLEdBQTBCLEVBQUUsQ0FBQzs0QkFDdkMsR0FBRyxDQUFDO2dDQUNGLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSwwQ0FBb0IsQ0FBQztvQ0FDOUMsT0FBTyxFQUFFLENBQUM7NENBQ1IsSUFBSSxFQUFFLE1BQU07NENBQ1osTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDO3lDQUNyQixDQUFDO29DQUNGLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztpQ0FDNUIsQ0FBQyxDQUFDLENBQUM7Z0NBQ0osV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQzdHLENBQUMsUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFOzRCQUMzQixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsSUFBSyxDQUFTLENBQUMsSUFBSSxLQUFLLDJCQUEyQixFQUFFLENBQUM7d0JBQ3BELE1BQU0sQ0FBQyxDQUFDO29CQUNWLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRWpFLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxJQUFBLHNDQUFxQixFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixNQUFNLElBQUEsc0NBQXFCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRyxDQUFXLENBQUMsT0FBTyxJQUFJLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbWFnZWJ1aWxkZXJDbGllbnQsXG4gIExpc3RDb21wb25lbnRzQ29tbWFuZCxcbiAgTGlzdENvbXBvbmVudHNSZXNwb25zZSxcbiAgTGlzdENvbnRhaW5lclJlY2lwZXNDb21tYW5kLFxuICBMaXN0Q29udGFpbmVyUmVjaXBlc1Jlc3BvbnNlLFxuICBMaXN0SW1hZ2VSZWNpcGVzQ29tbWFuZCxcbiAgTGlzdEltYWdlUmVjaXBlc1Jlc3BvbnNlLFxuICBMaXN0V29ya2Zsb3dzQ29tbWFuZCxcbiAgTGlzdFdvcmtmbG93c1Jlc3BvbnNlLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGluYywgbWF4U2F0aXNmeWluZyB9IGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBjdXN0b21SZXNvdXJjZVJlc3BvbmQgfSBmcm9tICcuLi8uLi9sYW1iZGEtaGVscGVycyc7XG5cbmNvbnN0IGliID0gbmV3IEltYWdlYnVpbGRlckNsaWVudCgpO1xuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB1bml0IHRlc3RzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmNyZWFzZVZlcnNpb24oYWxsVmVyc2lvbnM6IHN0cmluZ1tdKSB7XG4gIGxldCB2ZXJzaW9uID0gbWF4U2F0aXNmeWluZyhhbGxWZXJzaW9ucywgJz49MC4wLjAnKTtcbiAgaWYgKHZlcnNpb24gPT09IG51bGwpIHtcbiAgICB2ZXJzaW9uID0gJzEuMC4wJztcbiAgfVxuICBjb25zb2xlLmxvZyhgRm91bmQgdmVyc2lvbnMgJHthbGxWZXJzaW9uc30gLS0gbGF0ZXN0IGlzICR7dmVyc2lvbn1gKTtcblxuICB2ZXJzaW9uID0gaW5jKHZlcnNpb24sICdwYXRjaCcpO1xuICBpZiAodmVyc2lvbiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGJ1bXAgdmVyc2lvbicpO1xuICB9XG5cbiAgcmV0dXJuIHZlcnNpb247XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50LCBjb250ZXh0OiBBV1NMYW1iZGEuQ29udGV4dCkge1xuICBjb25zb2xlLmxvZyh7IC4uLmV2ZW50LCBSZXNwb25zZVVSTDogJy4uLicgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLk9iamVjdFR5cGU7XG4gICAgY29uc3Qgb2JqZWN0TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5PYmplY3ROYW1lO1xuXG4gICAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgIGxldCBhbGxWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0NvbXBvbmVudCc6IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogTGlzdENvbXBvbmVudHNSZXNwb25zZSA9IHt9O1xuICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgaWIuc2VuZChuZXcgTGlzdENvbXBvbmVudHNDb21tYW5kKHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbb2JqZWN0TmFtZV0sXG4gICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgIG5leHRUb2tlbjogcmVzdWx0Lm5leHRUb2tlbixcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgYWxsVmVyc2lvbnMgPSBhbGxWZXJzaW9ucy5jb25jYXQocmVzdWx0LmNvbXBvbmVudFZlcnNpb25MaXN0IS5tYXAoaSA9PiBpLnZlcnNpb24gfHwgJzEuMC4wJykpO1xuICAgICAgICAgICAgICB9IHdoaWxlIChyZXN1bHQubmV4dFRva2VuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdJbWFnZVJlY2lwZSc6IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogTGlzdEltYWdlUmVjaXBlc1Jlc3BvbnNlID0ge307XG4gICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBpYi5zZW5kKG5ldyBMaXN0SW1hZ2VSZWNpcGVzQ29tbWFuZCh7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogW29iamVjdE5hbWVdLFxuICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICBuZXh0VG9rZW46IHJlc3VsdC5uZXh0VG9rZW4sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIGFsbFZlcnNpb25zID0gYWxsVmVyc2lvbnMuY29uY2F0KHJlc3VsdC5pbWFnZVJlY2lwZVN1bW1hcnlMaXN0IS5tYXAoaSA9PiBpLmFybj8uc3BsaXQoJy8nKS5wb3AoKSB8fCAnMS4wLjAnKSk7XG4gICAgICAgICAgICAgIH0gd2hpbGUgKHJlc3VsdC5uZXh0VG9rZW4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0NvbnRhaW5lclJlY2lwZSc6IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdDogTGlzdENvbnRhaW5lclJlY2lwZXNSZXNwb25zZSA9IHt9O1xuICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgaWIuc2VuZChuZXcgTGlzdENvbnRhaW5lclJlY2lwZXNDb21tYW5kKHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbb2JqZWN0TmFtZV0sXG4gICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgIG5leHRUb2tlbjogcmVzdWx0Lm5leHRUb2tlbixcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgYWxsVmVyc2lvbnMgPSBhbGxWZXJzaW9ucy5jb25jYXQocmVzdWx0LmNvbnRhaW5lclJlY2lwZVN1bW1hcnlMaXN0IS5tYXAoaSA9PiBpLmFybj8uc3BsaXQoJy8nKS5wb3AoKSB8fCAnMS4wLjAnKSk7XG4gICAgICAgICAgICAgIH0gd2hpbGUgKHJlc3VsdC5uZXh0VG9rZW4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1dvcmtmbG93Jzoge1xuICAgICAgICAgICAgICBsZXQgcmVzdWx0OiBMaXN0V29ya2Zsb3dzUmVzcG9uc2UgPSB7fTtcbiAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGliLnNlbmQobmV3IExpc3RXb3JrZmxvd3NDb21tYW5kKHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbb2JqZWN0TmFtZV0sXG4gICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgIG5leHRUb2tlbjogcmVzdWx0Lm5leHRUb2tlbixcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgYWxsVmVyc2lvbnMgPSBhbGxWZXJzaW9ucy5jb25jYXQocmVzdWx0LndvcmtmbG93VmVyc2lvbkxpc3QhLm1hcChpID0+IGkuYXJuPy5zcGxpdCgnLycpLnBvcCgpIHx8ICcxLjAuMCcpKTtcbiAgICAgICAgICAgICAgfSB3aGlsZSAocmVzdWx0Lm5leHRUb2tlbik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmICgoZSBhcyBhbnkpLmNvZGUgIT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Jlc291cmNlIG5vdCBmb3VuZCwgYXNzdW1pbmcgZmlyc3QgdmVyc2lvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBpbmNyZWFzZVZlcnNpb24oYWxsVmVyc2lvbnMpO1xuICAgICAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdTVUNDRVNTJywgJ09LJywgdmVyc2lvbiwge30pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnU1VDQ0VTUycsICdPSycsIGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCwge30pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdGQUlMRUQnLCAoZSBhcyBFcnJvcikubWVzc2FnZSB8fCAnSW50ZXJuYWwgRXJyb3InLCBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsIHt9KTtcbiAgfVxufVxuIl19
|