@sylvesterllc/aws-constructs 1.0.30 → 1.0.31

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.
@@ -0,0 +1,16 @@
1
+ import { IRestApi } from "aws-cdk-lib/aws-apigateway";
2
+ import { Construct } from "constructs";
3
+ import { MicroserviceProps } from "../interfaces/MicroserviceProps";
4
+ import { AppConfig } from "./AppConfig";
5
+ import { Table } from "aws-cdk-lib/aws-dynamodb";
6
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
7
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
8
+ export interface ServiceBundleConfig {
9
+ scope: Construct;
10
+ readonly gatewayApi: IRestApi;
11
+ readonly props: MicroserviceProps;
12
+ readonly appConfig: AppConfig;
13
+ readonly tables?: Table[];
14
+ readonly secretMgr?: ISecret;
15
+ readonly layers?: LayerVersion[];
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUJ1bmRsZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvU2VydmljZUJ1bmRsZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc3RBcGkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi9BcHBDb25maWdcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUJ1bmRsZUNvbmZpZyB7XG4gICAgc2NvcGU6IENvbnN0cnVjdCwgXG4gICAgcmVhZG9ubHkgZ2F0ZXdheUFwaTogSVJlc3RBcGksIFxuICAgIHJlYWRvbmx5IHByb3BzOiBNaWNyb3NlcnZpY2VQcm9wcywgICAgICAgIFxuICAgIHJlYWRvbmx5IGFwcENvbmZpZzogQXBwQ29uZmlnLFxuICAgIHJlYWRvbmx5IHRhYmxlcz86IFRhYmxlW10sIFxuICAgIHJlYWRvbmx5IHNlY3JldE1ncj86IElTZWNyZXQsIFxuICAgIHJlYWRvbmx5IGxheWVycz86IExheWVyVmVyc2lvbltdXG5cbn0iXX0=
@@ -40,7 +40,15 @@ class MicroService extends constructs_1.Construct {
40
40
  tables = dynamo.CreatedTables;
41
41
  }
42
42
  // props.RESOURCES.LAMBDA.forEach((lambdaProp: TsgLambdaProp) => {
43
- const result = new createMicroServiceBundle_1.CreateMicroServiceBundle(scope, gateway[0], props, this.appConfig, tables, null, layers);
43
+ const result = new createMicroServiceBundle_1.CreateMicroServiceBundle({
44
+ scope,
45
+ gatewayApi: gateway[0],
46
+ props,
47
+ appConfig: this.appConfig,
48
+ tables,
49
+ secretMgr: undefined,
50
+ layers
51
+ });
44
52
  // });
45
53
  }
46
54
  createTag(scope) {
@@ -49,4 +57,4 @@ class MicroService extends constructs_1.Construct {
49
57
  }
50
58
  }
51
59
  exports.MicroService = MicroService;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvTWljcm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF1QztBQUV2Qyw0RkFBeUY7QUFDekYscUVBQW9FO0FBQ3BFLDhEQUFxRDtBQUNyRCxrRUFBZ0U7QUFDaEUsOEVBQTJFO0FBQzNFLG1EQUFnRDtBQUNoRCw2Q0FBbUM7QUFFbkMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFNdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSkYsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFNaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTTtZQUN0RCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU3RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQ2pELEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQixFQUFFLEtBQWdCO1FBRTdDLElBQUksTUFBTSxHQUF3QixTQUFTLENBQUM7UUFDNUMsSUFBSSxZQUFZLEdBQStCLFNBQVMsQ0FBQztRQUV6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUU7WUFDaEMsK0VBQStFO1lBQy9FLHVCQUF1QjtZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFnQixFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3JGO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLFlBQVksR0FBRyxJQUFBLHFDQUFpQixFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsRDtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksZUFBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztRQUU1QixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDakM7UUFFRCxrRUFBa0U7UUFFbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxtREFBd0IsQ0FBQyxLQUFLLEVBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU07SUFHVixDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQWdCO1FBQ2hDLGtCQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNKO0FBN0RELG9DQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1pY3Jvc2VydmljZVByb3BzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcbmltcG9ydCB7IENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZSB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZ2F0ZXdheS9jcmVhdGVNaWNyb1NlcnZpY2VCdW5kbGVcIjtcbmltcG9ydCB7IENyZWF0ZUR5bmFtb0RiIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9keW5hbW9kYi9DcmVhdGVEeW5hbW9cIjtcbmltcG9ydCB7IEFwaSB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZ2F0ZXdheS9jcmVhdGVBcGlcIjtcbmltcG9ydCB7IGdldFNlY3JldE1hbmFnZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL3NlY3VyaXR5TWFuYWdlclwiO1xuaW1wb3J0IHsgY3JlYXRlQ29tbW9uTGF5ZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2hlbHBlcnMvY3JlYXRlQ29tbW9uTGF5ZXJcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvQXBwQ29uZmlnXCI7XG5pbXBvcnQgeyBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBMYXllclZlcnNpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuZXhwb3J0IGNsYXNzIE1pY3JvU2VydmljZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUR5bmFtb1RhYmxlczogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTGFtYmRhTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7ICBcbiAgICBwcm90ZWN0ZWQgYXBwQ29uZmlnOiBBcHBDb25maWc7XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICB0aGlzLmFwcENvbmZpZyA9IG5ldyBBcHBDb25maWcocHJvcHMpO1xuXG4gICAgICAgIHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlcyA9IChwcm9wcy5SRVNPVVJDRVMuRFlOQU1PPy5UQUJMRVMgJiZcbiAgICAgICAgICAgIHByb3BzLlJFU09VUkNFUy5EWU5BTU8uVEFCTEVTLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuaGFzTGFtYmRhTGF5ZXJzID0gKHByb3BzLlJFU09VUkNFUy5MQU1CREFfTEFZRVJTICYmIFxuICAgICAgICAgICAgcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQV9MQVlFUlMubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vbkluaXQoc2NvcGUsIHRoaXMuYXBwQ29uZmlnKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZVRhZyhzY29wZSlcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0LCBwcm9wczogQXBwQ29uZmlnKSB7XG5cbiAgICAgICAgbGV0IHRhYmxlczogVGFibGVbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGNvbW1vbkxheWVyczogTGF5ZXJWZXJzaW9uW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52LlNFQ1JFVF9NQU5BR0VSX0FSTikge1xuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwcm92aWRlIHRoZSBBUk4gZm9yIHRoZSB5b3VyIENvbmZpZ3VyYXRpb24gU2VjcmV0IFxuICAgICAgICAgICAgLy8gICAgIE1hbmFnZXJgKTsgICAgICBcbiAgICAgICAgICAgICBjb25zdCBzZWNyZXRNZ3IgPSBnZXRTZWNyZXRNYW5hZ2VyKHNjb3BlLCBwcm9wcywgcHJvY2Vzcy5lbnYuU0VDUkVUX01BTkFHRVJfQVJOKTsgICAgICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0xhbWJkYUxheWVycykge1xuICAgICAgICAgICAgY29tbW9uTGF5ZXJzID0gY3JlYXRlQ29tbW9uTGF5ZXIoc2NvcGUsIHByb3BzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdhdGV3YXkgPSBuZXcgQXBpKHNjb3BlLCB0aGlzLmFwcENvbmZpZykuQVBJcztcblxuICAgICAgICBjb25zdCBsYXllcnMgPSBjb21tb25MYXllcnM7XG5cbiAgICAgICAgLy8gQ3JlYXRlcyBEeW5hbW9EYiBUYWJsZXMgaWYgcmVxdWlyZWRcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlcykge1xuICAgICAgICAgICAgY29uc3QgZHluYW1vID0gbmV3IENyZWF0ZUR5bmFtb0RiKHNjb3BlLCB0aGlzLmFwcENvbmZpZyk7XG5cbiAgICAgICAgICAgIHRhYmxlcyA9IGR5bmFtby5DcmVhdGVkVGFibGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQS5mb3JFYWNoKChsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wKSA9PiB7XG4gICAgICAgICAgICBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZShzY29wZSwgXG4gICAgICAgICAgICAgICAgZ2F0ZXdheVswXSwgcHJvcHMsIHRoaXMuYXBwQ29uZmlnLCB0YWJsZXMsIG51bGwsIGxheWVycyk7XG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIFxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWcoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICBUYWdzLm9mKHNjb3BlKS5hZGQoJ0FwcCcsIHRoaXMuYXBwQ29uZmlnLkFwcE5hbWUpO1xuICAgICAgICBUYWdzLm9mKHNjb3BlKS5hZGQoJ1Jlc291Y2VQcmVmaXgnLCB0aGlzLmFwcENvbmZpZy5BcHBQcmVmaXgpO1xuICAgIH1cbn0iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvTWljcm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF1QztBQUV2Qyw0RkFBeUY7QUFDekYscUVBQW9FO0FBQ3BFLDhEQUFxRDtBQUNyRCxrRUFBZ0U7QUFDaEUsOEVBQTJFO0FBQzNFLG1EQUFnRDtBQUNoRCw2Q0FBbUM7QUFFbkMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFNdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSkYsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFNaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTTtZQUN0RCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU3RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQ2pELEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQixFQUFFLEtBQWdCO1FBRTdDLElBQUksTUFBTSxHQUF3QixTQUFTLENBQUM7UUFDNUMsSUFBSSxZQUFZLEdBQStCLFNBQVMsQ0FBQztRQUV6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUU7WUFDaEMsK0VBQStFO1lBQy9FLHVCQUF1QjtZQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUFnQixFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3JGO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLFlBQVksR0FBRyxJQUFBLHFDQUFpQixFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsRDtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksZUFBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQztRQUU1QixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDakM7UUFFRCxrRUFBa0U7UUFFbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxtREFBd0IsQ0FBQztZQUN4QyxLQUFLO1lBQ0wsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdEIsS0FBSztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixNQUFNO1lBQ04sU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTTtTQUFDLENBQUMsQ0FBQztRQUNiLE1BQU07SUFHVixDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQWdCO1FBQ2hDLGtCQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNKO0FBbkVELG9DQW1FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1pY3Jvc2VydmljZVByb3BzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcbmltcG9ydCB7IENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZSB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZ2F0ZXdheS9jcmVhdGVNaWNyb1NlcnZpY2VCdW5kbGVcIjtcbmltcG9ydCB7IENyZWF0ZUR5bmFtb0RiIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9keW5hbW9kYi9DcmVhdGVEeW5hbW9cIjtcbmltcG9ydCB7IEFwaSB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZ2F0ZXdheS9jcmVhdGVBcGlcIjtcbmltcG9ydCB7IGdldFNlY3JldE1hbmFnZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL3NlY3VyaXR5TWFuYWdlclwiO1xuaW1wb3J0IHsgY3JlYXRlQ29tbW9uTGF5ZXIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2hlbHBlcnMvY3JlYXRlQ29tbW9uTGF5ZXJcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvQXBwQ29uZmlnXCI7XG5pbXBvcnQgeyBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBMYXllclZlcnNpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuZXhwb3J0IGNsYXNzIE1pY3JvU2VydmljZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUR5bmFtb1RhYmxlczogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTGFtYmRhTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7ICBcbiAgICBwcm90ZWN0ZWQgYXBwQ29uZmlnOiBBcHBDb25maWc7XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICB0aGlzLmFwcENvbmZpZyA9IG5ldyBBcHBDb25maWcocHJvcHMpO1xuXG4gICAgICAgIHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlcyA9IChwcm9wcy5SRVNPVVJDRVMuRFlOQU1PPy5UQUJMRVMgJiZcbiAgICAgICAgICAgIHByb3BzLlJFU09VUkNFUy5EWU5BTU8uVEFCTEVTLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuaGFzTGFtYmRhTGF5ZXJzID0gKHByb3BzLlJFU09VUkNFUy5MQU1CREFfTEFZRVJTICYmIFxuICAgICAgICAgICAgcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQV9MQVlFUlMubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgdGhpcy5vbkluaXQoc2NvcGUsIHRoaXMuYXBwQ29uZmlnKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZVRhZyhzY29wZSlcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0LCBwcm9wczogQXBwQ29uZmlnKSB7XG5cbiAgICAgICAgbGV0IHRhYmxlczogVGFibGVbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGNvbW1vbkxheWVyczogTGF5ZXJWZXJzaW9uW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52LlNFQ1JFVF9NQU5BR0VSX0FSTikge1xuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwcm92aWRlIHRoZSBBUk4gZm9yIHRoZSB5b3VyIENvbmZpZ3VyYXRpb24gU2VjcmV0IFxuICAgICAgICAgICAgLy8gICAgIE1hbmFnZXJgKTsgICAgICBcbiAgICAgICAgICAgICBjb25zdCBzZWNyZXRNZ3IgPSBnZXRTZWNyZXRNYW5hZ2VyKHNjb3BlLCBwcm9wcywgcHJvY2Vzcy5lbnYuU0VDUkVUX01BTkFHRVJfQVJOKTsgICAgICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0xhbWJkYUxheWVycykge1xuICAgICAgICAgICAgY29tbW9uTGF5ZXJzID0gY3JlYXRlQ29tbW9uTGF5ZXIoc2NvcGUsIHByb3BzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdhdGV3YXkgPSBuZXcgQXBpKHNjb3BlLCB0aGlzLmFwcENvbmZpZykuQVBJcztcblxuICAgICAgICBjb25zdCBsYXllcnMgPSBjb21tb25MYXllcnM7XG5cbiAgICAgICAgLy8gQ3JlYXRlcyBEeW5hbW9EYiBUYWJsZXMgaWYgcmVxdWlyZWRcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlcykge1xuICAgICAgICAgICAgY29uc3QgZHluYW1vID0gbmV3IENyZWF0ZUR5bmFtb0RiKHNjb3BlLCB0aGlzLmFwcENvbmZpZyk7XG5cbiAgICAgICAgICAgIHRhYmxlcyA9IGR5bmFtby5DcmVhdGVkVGFibGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQS5mb3JFYWNoKChsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wKSA9PiB7XG4gICAgICAgICAgICBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZSh7XG4gICAgICAgICAgICBzY29wZSwgXG4gICAgICAgICAgICBnYXRld2F5QXBpOiBnYXRld2F5WzBdLCBcbiAgICAgICAgICAgIHByb3BzLCBcbiAgICAgICAgICAgIGFwcENvbmZpZzogdGhpcy5hcHBDb25maWcsIFxuICAgICAgICAgICAgdGFibGVzLCBcbiAgICAgICAgICAgIHNlY3JldE1ncjogdW5kZWZpbmVkLCBcbiAgICAgICAgICAgIGxheWVyc30pO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICBcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFnKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgVGFncy5vZihzY29wZSkuYWRkKCdBcHAnLCB0aGlzLmFwcENvbmZpZy5BcHBOYW1lKTtcbiAgICAgICAgVGFncy5vZihzY29wZSkuYWRkKCdSZXNvdWNlUHJlZml4JywgdGhpcy5hcHBDb25maWcuQXBwUHJlZml4KTtcbiAgICB9XG59Il19
@@ -1,20 +1,9 @@
1
- import { IRestApi } from "aws-cdk-lib/aws-apigateway";
2
- import { Table } from "aws-cdk-lib/aws-dynamodb";
3
- import { Construct } from "constructs";
4
- import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
- import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
6
- import { LayerVersion } from "aws-cdk-lib/aws-lambda";
7
- import { AppConfig } from "../../config/AppConfig";
1
+ import { ServiceBundleConfig } from "../../config/ServiceBundleConfig";
8
2
  export declare class CreateMicroServiceBundle {
9
- private readonly gatewayApi;
10
- private readonly props;
11
- private readonly appConfig;
12
- private readonly tables?;
13
- private readonly secretMgr?;
14
- private readonly layers?;
3
+ private serviceBundleConfig;
15
4
  protected readonly requireDynamoTableRefs: boolean;
16
5
  protected readonly requireAuthorizer: boolean;
17
- constructor(scope: Construct, gatewayApi: IRestApi, props: MicroserviceProps, appConfig: AppConfig, tables?: Table[] | undefined, secretMgr?: ISecret | null | undefined, layers?: LayerVersion[] | undefined);
6
+ constructor(serviceBundleConfig: ServiceBundleConfig);
18
7
  private onInit;
19
8
  private AssignAccessToTables;
20
9
  private AssignAccessToTableRefs;
@@ -9,42 +9,37 @@ const createLambda_1 = require("../lambda/createLambda");
9
9
  const aws_cdk_lib_1 = require("aws-cdk-lib");
10
10
  const CreateDynamo_1 = require("../dynamodb/CreateDynamo");
11
11
  class CreateMicroServiceBundle {
12
- constructor(scope, gatewayApi, props, appConfig, tables, secretMgr, layers) {
13
- this.gatewayApi = gatewayApi;
14
- this.props = props;
15
- this.appConfig = appConfig;
16
- this.tables = tables;
17
- this.secretMgr = secretMgr;
18
- this.layers = layers;
19
- this.requireDynamoTableRefs = (props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
20
- this.requireAuthorizer = (props.RESOURCES.AUTHORIZER) ? true : false;
21
- this.onInit(scope);
12
+ constructor(serviceBundleConfig) {
13
+ this.serviceBundleConfig = serviceBundleConfig;
14
+ this.requireDynamoTableRefs = (this.serviceBundleConfig.props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
15
+ this.requireAuthorizer = (this.serviceBundleConfig.props.RESOURCES.AUTHORIZER) ? true : false;
16
+ this.onInit(this.serviceBundleConfig.scope);
22
17
  }
23
18
  onInit(scope) {
24
19
  let authorizer = undefined;
25
20
  // Create Authorizer
26
21
  if (this.requireAuthorizer) {
27
- authorizer = new createAuthorizer_1.CreateAuthorizer(scope, this.appConfig, this.props.RESOURCES.AUTHORIZER).JwtAuthorizer;
28
- authorizer._attachToApi(this.gatewayApi);
22
+ authorizer = new createAuthorizer_1.CreateAuthorizer(scope, this.serviceBundleConfig.appConfig, this.serviceBundleConfig.props.RESOURCES.AUTHORIZER).JwtAuthorizer;
23
+ authorizer._attachToApi(this.serviceBundleConfig.gatewayApi);
29
24
  authorizer.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
30
25
  }
31
26
  // Create Lambdas
32
27
  const lambdaProp = {
33
28
  scope,
34
- prop: this.props,
35
- layers: this.layers,
36
- appConfig: this.appConfig
29
+ prop: this.serviceBundleConfig.props,
30
+ layers: this.serviceBundleConfig.layers,
31
+ appConfig: this.serviceBundleConfig.appConfig
37
32
  };
38
- const lambdas = new createLambda_1.CreateLambda(lambdaProp, this.appConfig);
39
- if (this.tables) {
40
- this.AssignAccessToTables(this.tables, lambdas.Lambdas);
33
+ const lambdas = new createLambda_1.CreateLambda(lambdaProp, this.serviceBundleConfig.appConfig);
34
+ if (this.serviceBundleConfig.tables) {
35
+ this.AssignAccessToTables(this.serviceBundleConfig.tables, lambdas.Lambdas);
41
36
  }
42
37
  // Allow access to existing tables
43
38
  // if (this.requireDynamoTableRefs) {
44
39
  // this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
45
40
  // }
46
- if (this.secretMgr) {
47
- this.AssignAccessToSecretManager(this.secretMgr, lambdas.Lambdas);
41
+ if (this.serviceBundleConfig.secretMgr) {
42
+ this.AssignAccessToSecretManager(this.serviceBundleConfig.secretMgr, lambdas.Lambdas);
48
43
  }
49
44
  // lambdas.Lambdas.map((lambda) => {
50
45
  // lambda.metricErrors({
@@ -52,7 +47,7 @@ class CreateMicroServiceBundle {
52
47
  // period: Duration.minutes(3)
53
48
  // })
54
49
  // });
55
- this.AddRoutes(this.props, this.gatewayApi, lambdas.Lambdas, authorizer);
50
+ this.AddRoutes(this.serviceBundleConfig.props, this.serviceBundleConfig.gatewayApi, lambdas.Lambdas, authorizer);
56
51
  }
57
52
  AssignAccessToTables(tables, lambdas) {
58
53
  if (tables) {
@@ -111,7 +106,7 @@ class CreateMicroServiceBundle {
111
106
  }
112
107
  AddRoutes(props, gateway, lambdas, authorizer) {
113
108
  props.RESOURCES.LAMBDA?.forEach((prop) => {
114
- const lambdaId = createLambda_1.CreateLambda.getIdForLambda(prop, this.appConfig);
109
+ const lambdaId = createLambda_1.CreateLambda.getIdForLambda(prop, this.serviceBundleConfig.appConfig);
115
110
  if (!lambdaId) {
116
111
  throw new Error(`Can't find lambda`);
117
112
  }
@@ -129,4 +124,4 @@ class CreateMicroServiceBundle {
129
124
  }
130
125
  }
131
126
  exports.CreateMicroServiceBundle = CreateMicroServiceBundle;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBeUQ7QUFFekQsaURBQThEO0FBSzlELGtFQUErRDtBQUMvRCwwREFBaUQ7QUFDakQseURBQXNEO0FBQ3RELDZDQUE2RDtBQUM3RCwyREFBMEQ7QUFNMUQsTUFBYSx3QkFBd0I7SUFLakMsWUFBWSxLQUFnQixFQUNQLFVBQW9CLEVBQ3BCLEtBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFNBQTBCLEVBQzFCLE1BQXVCO1FBTHZCLGVBQVUsR0FBVixVQUFVLENBQVU7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBR3hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNuRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBZ0I7UUFHM0IsSUFBSSxVQUFVLEdBQThCLFNBQVMsQ0FBQztRQUV0RCxvQkFBb0I7UUFDcEIs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LE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN4RDtZQUVELHFCQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE1BQWUsRUFBRSxPQUF5QjtRQUUxRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FFSjtBQTdLRCw0REE2S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSwgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBJVGFibGUsIFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUc2dEeW5hbW9UYWJsZVJlZiwgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlQXV0aG9yaXplciB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUF1dGhvcml6ZXJcIjtcbmltcG9ydCB7IFJvdXRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZVJvdXRlc1wiO1xuaW1wb3J0IHsgQ3JlYXRlTGFtYmRhIH0gZnJvbSBcIi4uL2xhbWJkYS9jcmVhdGVMYW1iZGFcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ3JlYXRlRHluYW1vRGIgfSBmcm9tIFwiLi4vZHluYW1vZGIvQ3JlYXRlRHluYW1vXCI7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgTGF5ZXJWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcvQXBwQ29uZmlnXCI7XG5pbXBvcnQgeyBNZXRyaWNPcHRpb25zIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVNaWNyb1NlcnZpY2VCdW5kbGUge1xuICAgIFxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlRHluYW1vVGFibGVSZWZzOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlQXV0aG9yaXplcjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdhdGV3YXlBcGk6IElSZXN0QXBpLCBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsICAgICAgICBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFwcENvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWJsZXM/OiBUYWJsZVtdLCBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZWNyZXRNZ3I/OiBJU2VjcmV0IHwgbnVsbCwgXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sICAgICAgICBcbiAgICAgICAgKSB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZVJlZnMgPSAocHJvcHMuUkVTT1VSQ0VTLkRZTkFNTz8uVEFCTEVfUkVGUz8ubGVuZ3RoID8/IDAgPiAwKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXF1aXJlQXV0aG9yaXplciA9IChwcm9wcy5SRVNPVVJDRVMuQVVUSE9SSVpFUikgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMub25Jbml0KHNjb3BlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXJ8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIENyZWF0ZSBBdXRob3JpemVyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyKSB7XG4gICAgICAgICAgICBhdXRob3JpemVyID0gbmV3IENyZWF0ZUF1dGhvcml6ZXIoc2NvcGUsIHRoaXMuYXBwQ29uZmlnLCB0aGlzLnByb3BzLlJFU09VUkNFUy5BVVRIT1JJWkVSISkuSnd0QXV0aG9yaXplcjtcbiAgICAgICAgICAgIGF1dGhvcml6ZXIuX2F0dGFjaFRvQXBpKHRoaXMuZ2F0ZXdheUFwaSk7ICAgXG4gICAgICAgICAgICBhdXRob3JpemVyLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBDcmVhdGUgTGFtYmRhc1xuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wcyA9IHtcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgcHJvcDogdGhpcy5wcm9wcywgICAgICAgICAgICBcbiAgICAgICAgICAgIGxheWVyczogdGhpcy5sYXllcnMsXG4gICAgICAgICAgICBhcHBDb25maWc6IHRoaXMuYXBwQ29uZmlnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEobGFtYmRhUHJvcCwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgIGlmICh0aGlzLnRhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5Bc3NpZ25BY2Nlc3NUb1RhYmxlcyh0aGlzLnRhYmxlcywgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlc1xuICAgICAgICAvLyBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVSZWZzKSB7XG4gICAgICAgIC8vICAgICB0aGlzLkFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlLCB0aGlzLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBpZiAodGhpcy5zZWNyZXRNZ3IpIHtcbiAgICAgICAgICAgIHRoaXMuQXNzaWduQWNjZXNzVG9TZWNyZXRNYW5hZ2VyKHRoaXMuc2VjcmV0TWdyLCBsYW1iZGFzLkxhbWJkYXMpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBsYW1iZGFzLkxhbWJkYXMubWFwKChsYW1iZGEpID0+IHtcbiAgICAgICAgLy8gICAgIGxhbWJkYS5tZXRyaWNFcnJvcnMoeyAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gICAgICAgICAgICAgbGFiZWw6IGAke2xhbWJkYS5mdW5jdGlvbk5hbWV9LWVycm9yc2AsIFxuICAgICAgICAvLyAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMykgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAvLyAgICAgfSlcbiAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgdGhpcy5BZGRSb3V0ZXModGhpcy5wcm9wcywgdGhpcy5nYXRld2F5QXBpLCBsYW1iZGFzLkxhbWJkYXMsIGF1dGhvcml6ZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9UYWJsZXModGFibGVzOiBUYWJsZVtdLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlcykge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGU6IElUYWJsZSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gIFRoaXMgaXMgYSBDREsgYnVnOiBJdCBkb2Vzbid0IHByb3ZpZGVcbiAgICAgICAgICAgICAgICAgICAgLy8gIGFjY2VzcyB0byB0aGUgaW5kZXhlcy5cbiAgICAgICAgICAgICAgICAgICAgLy90YWJsZS5ncmFudFJlYWRXcml0ZURhdGEobGFtYmRhKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyAgV29ya2Fyb3VuZDpcbiAgICAgICAgICAgICAgICAgICAgLy8gbGFtYmRhLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGFjdGlvbnM6IENyZWF0ZUR5bmFtb0RiLlJlYWRXcml0ZUFjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIHRhYmxlLnRhYmxlQXJuLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBgJHt0YWJsZS50YWJsZUFybn0vKmAsIC8vIFRoaXMgaXMgbm90IHJlY29nbml6ZWQgYnkgY2RrLCBidXQgdGFibGUgaXMuICB3aHk/XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmczogVHNnRHluYW1vVGFibGVSZWZbXSB8IHVuZGVmaW5lZCwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuXG4gICAgICAgIGlmICh0YWJsZVJlZnMpIHtcbiAgICAgICAgICAgIHRhYmxlUmVmcy5mb3JFYWNoKCh0YWJsZVJlZjogVHNnRHluYW1vVGFibGVSZWYpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmICh0YWJsZVJlZi5yZWdpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Bc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGUsIHRhYmxlUmVmLCBsYW1iZGFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQXNzaWduUmVhZFdyaXRlQWNjZXNzVG9UYWJsZShzY29wZSwgdGFibGVSZWYsIGxhbWJkYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWY6IFRzZ0R5bmFtb1RhYmxlUmVmLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuXG4gICAgICAgICAgICBsZXQgdGFibGVBcm4gPSBcImFybjphd3M6ZHluYW1vZGI6XCIgKyB0YWJsZVJlZi5yZWdpb24gKyBcIjpcIiArICgoc2NvcGUgYXMgU3RhY2spLmFjY291bnQpICsgXCI6dGFibGUvXCIgKyB0YWJsZVJlZi50YWJsZU5hbWU7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQXJuLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZUFybiArIFwiL2luZGV4LypcIixcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IENyZWF0ZUR5bmFtb0RiLlJlYWRXcml0ZUFjdGlvbnMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGFtYmRhLnJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmOiBUc2dEeW5hbW9UYWJsZVJlZiwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuICAgICAgICBsZXQgdGFibGU6IElUYWJsZSA9IFRhYmxlLmZyb21UYWJsZU5hbWUoc2NvcGUsIHRhYmxlUmVmLnRhYmxlTmFtZSwgdGFibGVSZWYudGFibGVOYW1lKTtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpXG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBZGRSb3V0ZXMocHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBcbiAgICAgICAgZ2F0ZXdheTogSVJlc3RBcGksIFxuICAgICAgICBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdLCBcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcikge1xuXG4gICAgICAgIHByb3BzLlJFU09VUkNFUy5MQU1CREE/LmZvckVhY2goKHByb3A6IFRzZ0xhbWJkYVByb3ApID0+IHtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEocHJvcCwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYUlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGxhbWJkYWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFtYmRhTm9kZSA9IGxhbWJkYXMuZmluZCh4ID0+IHgubm9kZS5pZCA9PT0gbGFtYmRhSWQpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBmaW5kIHRoZSBMYW1iZGEgSW50ZWdyYXRpb25cIik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSb3V0ZXMuY3JlYXRlUmVzb3VyY2UocHJvcCwgZ2F0ZXdheSwgbGFtYmRhTm9kZSwgYXV0aG9yaXplcik7XG4gICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnbkFjY2Vzc1RvU2VjcmV0TWFuYWdlcihzZWNyZXQ6IElTZWNyZXQsIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gc2VjcmV0LmdyYW50UmVhZChsYW1iZGEpO1xuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICB9XG5cbn0iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBeUQ7QUFFekQsaURBQThEO0FBSzlELGtFQUErRDtBQUMvRCwwREFBaUQ7QUFDakQseURBQXNEO0FBQ3RELDZDQUFtRDtBQUNuRCwyREFBMEQ7QUFLMUQsTUFBYSx3QkFBd0I7SUFLakMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFeEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQjtRQUczQixJQUFJLFVBQVUsR0FBOEIsU0FBUyxDQUFDO1FBRXRELG9CQUFvQjtRQUNwQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixVQUFVLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxD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SSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN4QztZQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN4RDtZQUVELHFCQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE1BQWUsRUFBRSxPQUF5QjtRQUUxRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FFSjtBQXRLRCw0REFzS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSwgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBJVGFibGUsIFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUc2dEeW5hbW9UYWJsZVJlZiwgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlQXV0aG9yaXplciB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUF1dGhvcml6ZXJcIjtcbmltcG9ydCB7IFJvdXRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZVJvdXRlc1wiO1xuaW1wb3J0IHsgQ3JlYXRlTGFtYmRhIH0gZnJvbSBcIi4uL2xhbWJkYS9jcmVhdGVMYW1iZGFcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDcmVhdGVEeW5hbW9EYiB9IGZyb20gXCIuLi9keW5hbW9kYi9DcmVhdGVEeW5hbW9cIjtcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5cbmltcG9ydCB7IFNlcnZpY2VCdW5kbGVDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL1NlcnZpY2VCdW5kbGVDb25maWdcIjtcblxuZXhwb3J0IGNsYXNzIENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZSB7XG4gICAgXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVEeW5hbW9UYWJsZVJlZnM6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVBdXRob3JpemVyOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlQnVuZGxlQ29uZmlnOiBTZXJ2aWNlQnVuZGxlQ29uZmlnKSB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZVJlZnMgPSAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlM/Lmxlbmd0aCA/PyAwID4gMCkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWlyZUF1dGhvcml6ZXIgPSAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLlJFU09VUkNFUy5BVVRIT1JJWkVSKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkluaXQodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNjb3BlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXJ8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIENyZWF0ZSBBdXRob3JpemVyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyKSB7XG4gICAgICAgICAgICBhdXRob3JpemVyID0gbmV3IENyZWF0ZUF1dGhvcml6ZXIoc2NvcGUsIHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5hcHBDb25maWcsIHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5wcm9wcy5SRVNPVVJDRVMuQVVUSE9SSVpFUiEpLkp3dEF1dGhvcml6ZXI7XG4gICAgICAgICAgICBhdXRob3JpemVyLl9hdHRhY2hUb0FwaSh0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuZ2F0ZXdheUFwaSk7ICAgXG4gICAgICAgICAgICBhdXRob3JpemVyLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBDcmVhdGUgTGFtYmRhc1xuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wcyA9IHtcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgcHJvcDogdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLCAgICAgICAgICAgIFxuICAgICAgICAgICAgbGF5ZXJzOiB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcubGF5ZXJzLFxuICAgICAgICAgICAgYXBwQ29uZmlnOiB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuYXBwQ29uZmlnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEobGFtYmRhUHJvcCwgdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLmFwcENvbmZpZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy50YWJsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuQXNzaWduQWNjZXNzVG9UYWJsZXModGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnRhYmxlcywgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlc1xuICAgICAgICAvLyBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVSZWZzKSB7XG4gICAgICAgIC8vICAgICB0aGlzLkFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlLCB0aGlzLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNlY3JldE1ncikge1xuICAgICAgICAgICAgdGhpcy5Bc3NpZ25BY2Nlc3NUb1NlY3JldE1hbmFnZXIodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNlY3JldE1nciwgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gbGFtYmRhcy5MYW1iZGFzLm1hcCgobGFtYmRhKSA9PiB7XG4gICAgICAgIC8vICAgICBsYW1iZGEubWV0cmljRXJyb3JzKHsgICAgICAgICAgICAgICAgXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiBgJHtsYW1iZGEuZnVuY3Rpb25OYW1lfS1lcnJvcnNgLCBcbiAgICAgICAgLy8gICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gICAgIH0pXG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIHRoaXMuQWRkUm91dGVzKHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5wcm9wcywgdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLmdhdGV3YXlBcGksIGxhbWJkYXMuTGFtYmRhcywgYXV0aG9yaXplcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25BY2Nlc3NUb1RhYmxlcyh0YWJsZXM6IFRhYmxlW10sIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBpZiAodGFibGVzKSB7XG4gICAgICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogSVRhYmxlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAvLyAgVGhpcyBpcyBhIENESyBidWc6IEl0IGRvZXNuJ3QgcHJvdmlkZVxuICAgICAgICAgICAgICAgICAgICAvLyAgYWNjZXNzIHRvIHRoZSBpbmRleGVzLlxuICAgICAgICAgICAgICAgICAgICAvL3RhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICBXb3JrYXJvdW5kOlxuICAgICAgICAgICAgICAgICAgICAvLyBsYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgYWN0aW9uczogQ3JlYXRlRHluYW1vRGIuUmVhZFdyaXRlQWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGFibGUudGFibGVBcm4sXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIGAke3RhYmxlLnRhYmxlQXJufS8qYCwgLy8gVGhpcyBpcyBub3QgcmVjb2duaXplZCBieSBjZGssIGJ1dCB0YWJsZSBpcy4gIHdoeT9cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLy8gKTtcblxuICAgICAgICAgICAgICAgICAgICB0YWJsZS5ncmFudFJlYWRXcml0ZURhdGEobGFtYmRhKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9UYWJsZVJlZnMoc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWZzOiBUc2dEeW5hbW9UYWJsZVJlZltdIHwgdW5kZWZpbmVkLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlUmVmcykge1xuICAgICAgICAgICAgdGFibGVSZWZzLmZvckVhY2goKHRhYmxlUmVmOiBUc2dEeW5hbW9UYWJsZVJlZikgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhYmxlUmVmLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGVJblJlZ2lvbihzY29wZSwgdGFibGVSZWYsIGxhbWJkYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Bc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlKHNjb3BlLCB0YWJsZVJlZiwgbGFtYmRhcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGVJblJlZ2lvbihzY29wZTogQ29uc3RydWN0LCB0YWJsZVJlZjogVHNnRHluYW1vVGFibGVSZWYsIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XG5cbiAgICAgICAgICAgIGxldCB0YWJsZUFybiA9IFwiYXJuOmF3czpkeW5hbW9kYjpcIiArIHRhYmxlUmVmLnJlZ2lvbiArIFwiOlwiICsgKChzY29wZSBhcyBTdGFjaykuYWNjb3VudCkgKyBcIjp0YWJsZS9cIiArIHRhYmxlUmVmLnRhYmxlTmFtZTtcbiAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVBcm4sXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQXJuICsgXCIvaW5kZXgvKlwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYWN0aW9uczogQ3JlYXRlRHluYW1vRGIuUmVhZFdyaXRlQWN0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsYW1iZGEucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50KTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGUoc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWY6IFRzZ0R5bmFtb1RhYmxlUmVmLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG4gICAgICAgIGxldCB0YWJsZTogSVRhYmxlID0gVGFibGUuZnJvbVRhYmxlTmFtZShzY29wZSwgdGFibGVSZWYudGFibGVOYW1lLCB0YWJsZVJlZi50YWJsZU5hbWUpO1xuXG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSlcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFkZFJvdXRlcyhwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsIFxuICAgICAgICBnYXRld2F5OiBJUmVzdEFwaSwgXG4gICAgICAgIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10sIFxuICAgICAgICBhdXRob3JpemVyPzogVG9rZW5BdXRob3JpemVyKSB7XG5cbiAgICAgICAgcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQT8uZm9yRWFjaCgocHJvcDogVHNnTGFtYmRhUHJvcCkgPT4ge1xuXG4gICAgICAgICAgICBjb25zdCBsYW1iZGFJZCA9IENyZWF0ZUxhbWJkYS5nZXRJZEZvckxhbWJkYShwcm9wLCB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuYXBwQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFJZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBsYW1iZGFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYU5vZGUgPSBsYW1iZGFzLmZpbmQoeCA9PiB4Lm5vZGUuaWQgPT09IGxhbWJkYUlkKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZmluZCB0aGUgTGFtYmRhIEludGVncmF0aW9uXCIpOyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgUm91dGVzLmNyZWF0ZVJlc291cmNlKHByb3AsIGdhdGV3YXksIGxhbWJkYU5vZGUsIGF1dGhvcml6ZXIpO1xuICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25BY2Nlc3NUb1NlY3JldE1hbmFnZXIoc2VjcmV0OiBJU2VjcmV0LCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHNlY3JldC5ncmFudFJlYWQobGFtYmRhKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgfVxuXG59Il19
@@ -79,7 +79,7 @@ class CreateLambda extends baseResource_1.BaseResource {
79
79
  environment: prop.environment || prop.environment,
80
80
  },
81
81
  role,
82
- //layers
82
+ layers
83
83
  };
84
84
  return lambdaProp;
85
85
  }
@@ -134,4 +134,4 @@ class CreateLambda extends baseResource_1.BaseResource {
134
134
  }
135
135
  }
136
136
  exports.CreateLambda = CreateLambda;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUVsRCwrREFBcUY7QUFDckYsaURBQTJEO0FBRTNELHFFQUFtRztBQUVuRyw2QkFBNkI7QUFNN0IsdURBQW9EO0FBR3BELE1BQWEsWUFBYSxTQUFRLDJCQUE0QjtJQUsxRCxZQUFvQixLQUFxQixFQUFFLE1BQWlCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRFgsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFIbEMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFNbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQjtRQUVyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRVMsWUFBWSxDQUFJLEtBQWdCLEVBQUUsYUFBa0I7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUU3QixJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLGFBQWE7Z0JBQ2IsS0FB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RywyQkFBMkI7Z0JBQzVFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEdBQUcsMEJBQTBCO2FBQ3ZFLENBQUMsQ0FBQztZQUVILHdDQUF3QztZQUN4QywrQ0FBK0M7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUF5QixFQUFFLFNBQW9CO1FBQ3hFLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0NBQ0o7QUE1S0Qsb0NBNEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yLCBJQWxhcm1BY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IElSb2xlLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dFwiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUxhbWJkYSBleHRlbmRzIEJhc2VSZXNvdXJjZTxOb2RlanNGdW5jdGlvbj4ge1xuXG4gICAgcHVibGljIExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSBbXTtcbiAgICBcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvcHM6IFRzZ0xhbWJkYVByb3BzLCBjb25maWc6IEFwcENvbmZpZykge1xuICAgICAgICBzdXBlcihwcm9wcy5zY29wZSwgY29uZmlnKTtcblxuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLmNyZWF0ZVJlc291cmNlKHByb3BzLnNjb3BlKTtcblxuICAgICAgICB0aGlzLkxhbWJkYXMgPSBbLi4ucmVzb3VyY2VzXTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUFsYXJtc0ZvckxhbWJkYXModGhpcy5MYW1iZGFzKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0KHByb3BzLnNjb3BlLCByZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogTm9kZWpzRnVuY3Rpb25bXSB7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jcmVhdGVMYW1iZGFzKHRoaXMucHJvcHMpO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QsIGNyZWF0ZWRBc3NldHM6IFRbXSk6IHZvaWQge1xuICAgICAgICBjcmVhdGVkQXNzZXRzLmZvckVhY2goKHgsIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgbGFtYmRhLSR7aWR4fWAsIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdmFsdWU6IHguZnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFzKHByb3BzOiBUc2dMYW1iZGFQcm9wcyk6IE5vZGVqc0Z1bmN0aW9uW10ge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyh0aGlzLnNjb3BlLCBwcm9wcy5yb2xlLCBwcm9wcy5sYXllcnMpO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyhzY29wZTogQ29uc3RydWN0LCByb2xlPzogSVJvbGUsIGxheWVycz86IExheWVyVmVyc2lvbltdKSB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjcmVhdGVkTGFtYmRhcyA9IHRoaXMucHJvcHMucHJvcC5SRVNPVVJDRVMuTEFNQkRBLm1hcCgoY29uZmlnOlRzZ0xhbWJkYVByb3ApID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IGxhbWJkYVByb3BzID0gdGhpcy5jcmVhdGVMYW1iZGFQcm9wcyhjb25maWcsIHJvbGUsIGxheWVycyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYUlkID0gQ3JlYXRlTGFtYmRhLmdldElkRm9yTGFtYmRhKGNvbmZpZywgdGhpcy5jb25maWcpO1xuICAgICAgICAgICAgbGV0IGZjdG4gPSBuZXcgTm9kZWpzRnVuY3Rpb24oc2NvcGUsIGxhbWJkYUlkLCBsYW1iZGFQcm9wcyk7XG5cbiAgICAgICAgICAgIGlmIChsYW1iZGFJZCA9PT0gZmN0bi5ub2RlLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGZvdW5kIExhbWJkYSBmb3IgOiAke2ZjdG4ubm9kZS5pZH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyAgSWYgd2UgaGF2ZSBtYW5hZ2VkIHBvbGljaWVzLCB3ZSBhZGQgdGhlbS5cbiAgICAgICAgICAgIGlmIChjb25maWcubWFuYWdlZFBvbGljaWVzICYmIGNvbmZpZy5tYW5hZ2VkUG9saWNpZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnbk1hbmFnZWRQb2xpY2llcyhmY3RuLCBjb25maWcubWFuYWdlZFBvbGljaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZjdG47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcyB8fCBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYVByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3AsIHJvbGU/OiBJUm9sZSwgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sIHByb3BzPzogVHNnTGFtYmRhUHJvcHMpIHtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHtcbiAgICAgICAgICAgIHByb3AsIFxuICAgICAgICAgICAgcm9sZSxcbiAgICAgICAgICAgIGxheWVycywgXG4gICAgICAgICAgICBwcm9wc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9uUHJvcHMocHJvcHM6IENyZWF0ZUxhbWJkYUZ1bmN0aW9uSW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBwcm9wLCByb2xlLCBsYXllcnMgfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGBmdW5jdGlvbiBOYW1lOiAke3RoaXMucHJvcHMuYXBwQ29uZmlnLkFwcFByZWZpeH0tJHtwcm9wLm5hbWV9YCk7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4ocHJvcC5jb2RlUGF0aCksXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IGAke3RoaXMucHJvcHMuYXBwQ29uZmlnLkFwcFByZWZpeH0tJHtwcm9wLm5hbWV9YCxcbiAgICAgICAgICAgIGhhbmRsZXI6IHByb3AuaGFuZGxlcixcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC4uLnByb3AuZW52aXJvbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwTW9kZTogU291cmNlTWFwTW9kZS5FWFRFUk5BTCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogcHJvcC5lbnZpcm9ubWVudCB8fCBwcm9wLmVudmlyb25tZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvbGUsXG4gICAgICAgICAgICAvL2xheWVyc1xuXG4gICAgICAgIH1cblxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGxhbWJkYVByb3A7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYXNzaWduTWFuYWdlZFBvbGljaWVzKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24sIG1hbmFnZWRQb2xpY3lOYW1lczogc3RyaW5nW10pIHtcblxuICAgICAgICBtYW5hZ2VkUG9saWN5TmFtZXMuZm9yRWFjaCgobWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgICBsZXQgcG9saWN5ID0gTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUobWFuYWdlZFBvbGljeU5hbWUpO1xuXG4gICAgICAgICAgICBsYW1iZGEucm9sZT8uYWRkTWFuYWdlZFBvbGljeShwb2xpY3kpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQWxhcm1zRm9yTGFtYmRhcyhsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7ICAgICAgICBcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSwgaWR4KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWV0cmljID0gbGFtYmRhLm1ldHJpY0Vycm9ycyh7XG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpLFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uTWV0cmljID0gbGFtYmRhLm1ldHJpY0R1cmF0aW9uKHtcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMyksICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGludm9jYXRpb25NZXRyaWMgPSBsYW1iZGEubWV0cmljSW52b2NhdGlvbnMoe1xuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygzKSwgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmV3IEFsYXJtKHRoaXMucHJvcHMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWVycm9yLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZXJyb3JNZXRyaWMsIFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogNSxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9IGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1lcnJvci1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBuZXcgQWxhcm0odGhpcy5wcm9wcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0tZHVyYXRpb24tYWxhcm1gLCB7XG4gICAgICAgICAgICAgICAgbWV0cmljOiBkdXJhdGlvbk1ldHJpYywgXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0gZHVyYXRpb24gZXJyb3JzIG92ZXIgMyBtaW4gcGVyaW9kYCxcbiAgICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWR1cmF0aW9uLWFsYXJtYFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGludm9jYXRpb25BbGFybSA9IG5ldyBBbGFybSh0aGlzLnByb3BzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1pbnZvY2F0aW9uLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZXJyb3JNZXRyaWMsIFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMTAwMCxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9IGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1pbnZvY2F0aW9uLU1ldHJpYy1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBjb25zdCBhbGFybUFjdGlvbjogSUFsYXJtQWN0aW9uID0ge307XG4gICAgICAgICAgICAvLyBpbnZvY2F0aW9uQWxhcm0uYWRkQWxhcm1BY3Rpb24oYWxhcm1BY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldElkRm9yTGFtYmRhKGxhbWJkYVByb3A6IFRzZ0xhbWJkYVByb3AsIGFwcENvbmZpZzogQXBwQ29uZmlnKSB7ICAgICAgIFxuICAgICAgICByZXR1cm4gYCR7YXBwQ29uZmlnLkFwcFByZWZpeH0tJHtsYW1iZGFQcm9wLm5hbWV9YC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn0iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUVsRCwrREFBcUY7QUFDckYsaURBQTJEO0FBRTNELHFFQUFtRztBQUVuRyw2QkFBNkI7QUFNN0IsdURBQW9EO0FBR3BELE1BQWEsWUFBYSxTQUFRLDJCQUE0QjtJQUsxRCxZQUFvQixLQUFxQixFQUFFLE1BQWlCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRFgsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFIbEMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFNbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQjtRQUVyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRVMsWUFBWSxDQUFJLEtBQWdCLEVBQUUsYUFBa0I7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUU3QixJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLGFBQWE7Z0JBQ2IsS0FB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RywyQkFBMkI7Z0JBQzVFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEdBQUcsMEJBQTBCO2FBQ3ZFLENBQUMsQ0FBQztZQUVILHdDQUF3QztZQUN4QywrQ0FBK0M7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUF5QixFQUFFLFNBQW9CO1FBQ3hFLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0NBQ0o7QUE1S0Qsb0NBNEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yLCBJQWxhcm1BY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IElSb2xlLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dFwiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUxhbWJkYSBleHRlbmRzIEJhc2VSZXNvdXJjZTxOb2RlanNGdW5jdGlvbj4ge1xuXG4gICAgcHVibGljIExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSBbXTtcbiAgICBcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvcHM6IFRzZ0xhbWJkYVByb3BzLCBjb25maWc6IEFwcENvbmZpZykge1xuICAgICAgICBzdXBlcihwcm9wcy5zY29wZSwgY29uZmlnKTtcblxuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLmNyZWF0ZVJlc291cmNlKHByb3BzLnNjb3BlKTtcblxuICAgICAgICB0aGlzLkxhbWJkYXMgPSBbLi4ucmVzb3VyY2VzXTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUFsYXJtc0ZvckxhbWJkYXModGhpcy5MYW1iZGFzKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0KHByb3BzLnNjb3BlLCByZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogTm9kZWpzRnVuY3Rpb25bXSB7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jcmVhdGVMYW1iZGFzKHRoaXMucHJvcHMpO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QsIGNyZWF0ZWRBc3NldHM6IFRbXSk6IHZvaWQge1xuICAgICAgICBjcmVhdGVkQXNzZXRzLmZvckVhY2goKHgsIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgbGFtYmRhLSR7aWR4fWAsIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdmFsdWU6IHguZnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFzKHByb3BzOiBUc2dMYW1iZGFQcm9wcyk6IE5vZGVqc0Z1bmN0aW9uW10ge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyh0aGlzLnNjb3BlLCBwcm9wcy5yb2xlLCBwcm9wcy5sYXllcnMpO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyhzY29wZTogQ29uc3RydWN0LCByb2xlPzogSVJvbGUsIGxheWVycz86IExheWVyVmVyc2lvbltdKSB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjcmVhdGVkTGFtYmRhcyA9IHRoaXMucHJvcHMucHJvcC5SRVNPVVJDRVMuTEFNQkRBLm1hcCgoY29uZmlnOlRzZ0xhbWJkYVByb3ApID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IGxhbWJkYVByb3BzID0gdGhpcy5jcmVhdGVMYW1iZGFQcm9wcyhjb25maWcsIHJvbGUsIGxheWVycyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYUlkID0gQ3JlYXRlTGFtYmRhLmdldElkRm9yTGFtYmRhKGNvbmZpZywgdGhpcy5jb25maWcpO1xuICAgICAgICAgICAgbGV0IGZjdG4gPSBuZXcgTm9kZWpzRnVuY3Rpb24oc2NvcGUsIGxhbWJkYUlkLCBsYW1iZGFQcm9wcyk7XG5cbiAgICAgICAgICAgIGlmIChsYW1iZGFJZCA9PT0gZmN0bi5ub2RlLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGZvdW5kIExhbWJkYSBmb3IgOiAke2ZjdG4ubm9kZS5pZH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyAgSWYgd2UgaGF2ZSBtYW5hZ2VkIHBvbGljaWVzLCB3ZSBhZGQgdGhlbS5cbiAgICAgICAgICAgIGlmIChjb25maWcubWFuYWdlZFBvbGljaWVzICYmIGNvbmZpZy5tYW5hZ2VkUG9saWNpZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnbk1hbmFnZWRQb2xpY2llcyhmY3RuLCBjb25maWcubWFuYWdlZFBvbGljaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZjdG47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcyB8fCBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYVByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3AsIHJvbGU/OiBJUm9sZSwgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sIHByb3BzPzogVHNnTGFtYmRhUHJvcHMpIHtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHtcbiAgICAgICAgICAgIHByb3AsIFxuICAgICAgICAgICAgcm9sZSxcbiAgICAgICAgICAgIGxheWVycywgXG4gICAgICAgICAgICBwcm9wc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9uUHJvcHMocHJvcHM6IENyZWF0ZUxhbWJkYUZ1bmN0aW9uSW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBwcm9wLCByb2xlLCBsYXllcnMgfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGBmdW5jdGlvbiBOYW1lOiAke3RoaXMucHJvcHMuYXBwQ29uZmlnLkFwcFByZWZpeH0tJHtwcm9wLm5hbWV9YCk7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4ocHJvcC5jb2RlUGF0aCksXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IGAke3RoaXMucHJvcHMuYXBwQ29uZmlnLkFwcFByZWZpeH0tJHtwcm9wLm5hbWV9YCxcbiAgICAgICAgICAgIGhhbmRsZXI6IHByb3AuaGFuZGxlcixcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC4uLnByb3AuZW52aXJvbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwTW9kZTogU291cmNlTWFwTW9kZS5FWFRFUk5BTCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogcHJvcC5lbnZpcm9ubWVudCB8fCBwcm9wLmVudmlyb25tZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvbGUsXG4gICAgICAgICAgICBsYXllcnNcblxuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgICAgIHJldHVybiBsYW1iZGFQcm9wO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGFzc2lnbk1hbmFnZWRQb2xpY2llcyhsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uLCBtYW5hZ2VkUG9saWN5TmFtZXM6IHN0cmluZ1tdKSB7XG5cbiAgICAgICAgbWFuYWdlZFBvbGljeU5hbWVzLmZvckVhY2goKG1hbmFnZWRQb2xpY3lOYW1lOiBzdHJpbmcpID0+IHtcblxuICAgICAgICAgICAgbGV0IHBvbGljeSA9IE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKG1hbmFnZWRQb2xpY3lOYW1lKTtcblxuICAgICAgICAgICAgbGFtYmRhLnJvbGU/LmFkZE1hbmFnZWRQb2xpY3kocG9saWN5KTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFsYXJtc0ZvckxhbWJkYXMobGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkgeyAgICAgICAgXG5cbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGEsIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBjb25zdCBlcnJvck1ldHJpYyA9IGxhbWJkYS5tZXRyaWNFcnJvcnMoe1xuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygzKSxcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBkdXJhdGlvbk1ldHJpYyA9IGxhbWJkYS5tZXRyaWNEdXJhdGlvbih7XG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpLCAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uTWV0cmljID0gbGFtYmRhLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMyksICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG5ldyBBbGFybSh0aGlzLnByb3BzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1lcnJvci1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGVycm9yTWV0cmljLCBcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDUsXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fSBlcnJvcnMgb3ZlciAzIG1pbiBwZXJpb2RgLFxuICAgICAgICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0tZXJyb3ItYWxhcm1gXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmV3IEFsYXJtKHRoaXMucHJvcHMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWR1cmF0aW9uLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZHVyYXRpb25NZXRyaWMsIFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9IGR1cmF0aW9uIGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1kdXJhdGlvbi1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uQWxhcm0gPSBuZXcgQWxhcm0odGhpcy5wcm9wcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0taW52b2NhdGlvbi1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGVycm9yTWV0cmljLCBcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDEwMDAsXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fSBlcnJvcnMgb3ZlciAzIG1pbiBwZXJpb2RgLFxuICAgICAgICAgICAgICAgIGFsYXJtTmFtZTogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0taW52b2NhdGlvbi1NZXRyaWMtYWxhcm1gXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gY29uc3QgYWxhcm1BY3Rpb246IElBbGFybUFjdGlvbiA9IHt9O1xuICAgICAgICAgICAgLy8gaW52b2NhdGlvbkFsYXJtLmFkZEFsYXJtQWN0aW9uKGFsYXJtQWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJZEZvckxhbWJkYShsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wLCBhcHBDb25maWc6IEFwcENvbmZpZykgeyAgICAgICBcbiAgICAgICAgcmV0dXJuIGAke2FwcENvbmZpZy5BcHBQcmVmaXh9LSR7bGFtYmRhUHJvcC5uYW1lfWAudG9Mb3dlckNhc2UoKTtcbiAgICB9XG59Il19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylvesterllc/aws-constructs",
3
- "version": "1.0.30",
3
+ "version": "1.0.31",
4
4
  "description": "AWS Constructs",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [
@@ -0,0 +1,18 @@
1
+ import { IRestApi } from "aws-cdk-lib/aws-apigateway";
2
+ import { Construct } from "constructs";
3
+ import { MicroserviceProps } from "../interfaces/MicroserviceProps";
4
+ import { AppConfig } from "./AppConfig";
5
+ import { Table } from "aws-cdk-lib/aws-dynamodb";
6
+ import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
7
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
8
+
9
+ export interface ServiceBundleConfig {
10
+ scope: Construct,
11
+ readonly gatewayApi: IRestApi,
12
+ readonly props: MicroserviceProps,
13
+ readonly appConfig: AppConfig,
14
+ readonly tables?: Table[],
15
+ readonly secretMgr?: ISecret,
16
+ readonly layers?: LayerVersion[]
17
+
18
+ }
@@ -59,8 +59,14 @@ export class MicroService extends Construct {
59
59
 
60
60
  // props.RESOURCES.LAMBDA.forEach((lambdaProp: TsgLambdaProp) => {
61
61
 
62
- const result = new CreateMicroServiceBundle(scope,
63
- gateway[0], props, this.appConfig, tables, null, layers);
62
+ const result = new CreateMicroServiceBundle({
63
+ scope,
64
+ gatewayApi: gateway[0],
65
+ props,
66
+ appConfig: this.appConfig,
67
+ tables,
68
+ secretMgr: undefined,
69
+ layers});
64
70
  // });
65
71
 
66
72
 
@@ -9,30 +9,22 @@ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
9
9
  import { CreateAuthorizer } from "../helpers/createAuthorizer";
10
10
  import { Routes } from "../helpers/createRoutes";
11
11
  import { CreateLambda } from "../lambda/createLambda";
12
- import { Duration, RemovalPolicy, Stack } from "aws-cdk-lib";
12
+ import { RemovalPolicy, Stack } from "aws-cdk-lib";
13
13
  import { CreateDynamoDb } from "../dynamodb/CreateDynamo";
14
14
  import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
15
- import { LayerVersion } from "aws-cdk-lib/aws-lambda";
16
- import { AppConfig } from "../../config/AppConfig";
17
- import { MetricOptions } from "aws-cdk-lib/aws-cloudwatch";
15
+
16
+ import { ServiceBundleConfig } from "../../config/ServiceBundleConfig";
18
17
 
19
18
  export class CreateMicroServiceBundle {
20
19
 
21
20
  protected readonly requireDynamoTableRefs: boolean;
22
21
  protected readonly requireAuthorizer: boolean;
23
22
 
24
- constructor(scope: Construct,
25
- private readonly gatewayApi: IRestApi,
26
- private readonly props: MicroserviceProps,
27
- private readonly appConfig: AppConfig,
28
- private readonly tables?: Table[],
29
- private readonly secretMgr?: ISecret | null,
30
- private readonly layers?: LayerVersion[],
31
- ) {
23
+ constructor(private serviceBundleConfig: ServiceBundleConfig) {
32
24
 
33
- this.requireDynamoTableRefs = (props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
34
- this.requireAuthorizer = (props.RESOURCES.AUTHORIZER) ? true : false;
35
- this.onInit(scope);
25
+ this.requireDynamoTableRefs = (this.serviceBundleConfig.props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
26
+ this.requireAuthorizer = (this.serviceBundleConfig.props.RESOURCES.AUTHORIZER) ? true : false;
27
+ this.onInit(this.serviceBundleConfig.scope);
36
28
  }
37
29
 
38
30
  private onInit(scope: Construct) {
@@ -42,23 +34,23 @@ export class CreateMicroServiceBundle {
42
34
 
43
35
  // Create Authorizer
44
36
  if (this.requireAuthorizer) {
45
- authorizer = new CreateAuthorizer(scope, this.appConfig, this.props.RESOURCES.AUTHORIZER!).JwtAuthorizer;
46
- authorizer._attachToApi(this.gatewayApi);
37
+ authorizer = new CreateAuthorizer(scope, this.serviceBundleConfig.appConfig, this.serviceBundleConfig.props.RESOURCES.AUTHORIZER!).JwtAuthorizer;
38
+ authorizer._attachToApi(this.serviceBundleConfig.gatewayApi);
47
39
  authorizer.applyRemovalPolicy(RemovalPolicy.DESTROY);
48
40
  }
49
41
 
50
42
  // Create Lambdas
51
43
  const lambdaProp: TsgLambdaProps = {
52
44
  scope,
53
- prop: this.props,
54
- layers: this.layers,
55
- appConfig: this.appConfig
45
+ prop: this.serviceBundleConfig.props,
46
+ layers: this.serviceBundleConfig.layers,
47
+ appConfig: this.serviceBundleConfig.appConfig
56
48
  };
57
49
 
58
- const lambdas = new CreateLambda(lambdaProp, this.appConfig);
50
+ const lambdas = new CreateLambda(lambdaProp, this.serviceBundleConfig.appConfig);
59
51
 
60
- if (this.tables) {
61
- this.AssignAccessToTables(this.tables, lambdas.Lambdas);
52
+ if (this.serviceBundleConfig.tables) {
53
+ this.AssignAccessToTables(this.serviceBundleConfig.tables, lambdas.Lambdas);
62
54
  }
63
55
 
64
56
  // Allow access to existing tables
@@ -66,8 +58,8 @@ export class CreateMicroServiceBundle {
66
58
  // this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
67
59
  // }
68
60
 
69
- if (this.secretMgr) {
70
- this.AssignAccessToSecretManager(this.secretMgr, lambdas.Lambdas);
61
+ if (this.serviceBundleConfig.secretMgr) {
62
+ this.AssignAccessToSecretManager(this.serviceBundleConfig.secretMgr, lambdas.Lambdas);
71
63
  }
72
64
 
73
65
  // lambdas.Lambdas.map((lambda) => {
@@ -78,7 +70,7 @@ export class CreateMicroServiceBundle {
78
70
  // })
79
71
  // });
80
72
 
81
- this.AddRoutes(this.props, this.gatewayApi, lambdas.Lambdas, authorizer);
73
+ this.AddRoutes(this.serviceBundleConfig.props, this.serviceBundleConfig.gatewayApi, lambdas.Lambdas, authorizer);
82
74
  }
83
75
 
84
76
  private AssignAccessToTables(tables: Table[], lambdas: NodejsFunction[]) {
@@ -164,7 +156,7 @@ export class CreateMicroServiceBundle {
164
156
 
165
157
  props.RESOURCES.LAMBDA?.forEach((prop: TsgLambdaProp) => {
166
158
 
167
- const lambdaId = CreateLambda.getIdForLambda(prop, this.appConfig);
159
+ const lambdaId = CreateLambda.getIdForLambda(prop, this.serviceBundleConfig.appConfig);
168
160
 
169
161
  if (!lambdaId) {
170
162
  throw new Error(`Can't find lambda`);
@@ -115,7 +115,7 @@ export class CreateLambda extends BaseResource<NodejsFunction> {
115
115
  environment: prop.environment || prop.environment,
116
116
  },
117
117
  role,
118
- //layers
118
+ layers
119
119
 
120
120
  }
121
121