@sylvesterllc/aws-constructs 1.0.106 → 1.0.108

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.
@@ -3,6 +3,7 @@ import { Construct } from "constructs";
3
3
  import { MicroserviceProps } from "../interfaces/MicroserviceProps";
4
4
  import { AppConfig } from "../config/AppConfig";
5
5
  import { LayerVersion } from "aws-cdk-lib/aws-lambda";
6
+ import { IRestApi } from "aws-cdk-lib/aws-apigateway";
6
7
  import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
7
8
  import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
8
9
  import { Environment } from "../config/Environments";
@@ -22,6 +23,7 @@ export declare class MicroService extends Construct {
22
23
  get LambdaLayers(): LayerVersion[] | undefined;
23
24
  get Lambdas(): NodejsFunction[];
24
25
  get LambdaRecords(): Record<string, NodejsFunction>;
26
+ get RestApi(): IRestApi;
25
27
  constructor(scope: Construct, id: string, props: MicroserviceProps, env?: Environment);
26
28
  private onInit;
27
29
  protected createTag(scope: Construct): void;
@@ -36,6 +36,9 @@ class MicroService extends constructs_1.Construct {
36
36
  get LambdaRecords() {
37
37
  return this.lambdaRecords;
38
38
  }
39
+ get RestApi() {
40
+ return this.api;
41
+ }
39
42
  constructor(scope, id, props, env = "prod") {
40
43
  super(scope, id);
41
44
  this.appConfig = new AppConfig_1.AppConfig(props);
@@ -93,4 +96,4 @@ class MicroService extends constructs_1.Construct {
93
96
  }
94
97
  }
95
98
  exports.MicroService = MicroService;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvTWljcm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF1QztBQUV2QyxxRUFBb0U7QUFDcEUsOERBQXFEO0FBQ3JELGtFQUFnRTtBQUNoRSw4RUFBMkU7QUFDM0UsbURBQWdEO0FBQ2hELDZDQUFtQztBQUVuQyw4RkFBMkY7QUFDM0YsbUhBQWdIO0FBS2hILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBRXBCLG1CQUFtQixDQUFVO0lBQ3RDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUM1QixlQUFlLEdBQVksS0FBSyxDQUFDO0lBQzFDLFNBQVMsQ0FBWTtJQUNkLEdBQUcsQ0FBVztJQUNkLFlBQVksQ0FBc0I7SUFDbEMsWUFBWSxDQUE2QjtJQUN6QyxhQUFhLEdBQW1CLElBQUksQ0FBQztJQUNyQyxPQUFPLEdBQXFCLEVBQUUsQ0FBQztJQUN4QyxhQUFhLEdBQW1DLEVBQUUsQ0FBQztJQUUzRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QixFQUM5RCxNQUFtQixNQUFNO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTTtZQUN0RCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU3RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxpQkFBaUI7WUFDakUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXZELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWE7WUFDakQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFRLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFjLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDO1FBRWhDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQixFQUFFLEdBQWdCO1FBRTdDLElBQUksYUFBYSxHQUFtQixJQUFJLENBQUM7UUFDekMsSUFBSSxNQUFNLEdBQXdCLFNBQVMsQ0FBQztRQUM1QyxJQUFJLFlBQVksR0FBK0IsU0FBUyxDQUFDO1FBRXpELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2pDLCtFQUErRTtZQUMvRSx1QkFBdUI7WUFDdkIsYUFBYSxHQUFHLElBQUEsa0NBQWdCLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixZQUFZLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFekQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO1FBRTVCLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksNkJBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXpELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUEsbUVBQWdDLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxxREFBeUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFOUMscURBQXFEO1FBRXJELE9BQU87WUFDSCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEQsWUFBWSxFQUFFLE1BQU0sSUFBSSxJQUFJO1lBQzVCLFlBQVksRUFBRSxNQUFNLElBQUksSUFBSTtZQUM1QixhQUFhLEVBQUUsYUFBYTtZQUM1QixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87U0FFOUIsQ0FBQztJQUVOLENBQUM7SUFFUyxTQUFTLENBQUMsS0FBZ0I7UUFDaEMsa0JBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELGtCQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0o7QUFqSEQsb0NBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHluYW1vRGIgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2R5bmFtb2RiL0NyZWF0ZUR5bmFtb1wiO1xuaW1wb3J0IHsgQXBpIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZUFwaVwiO1xuaW1wb3J0IHsgZ2V0U2VjcmV0TWFuYWdlciB9IGZyb20gXCIuLi9yZXNvdXJjZXMvc2VjdXJpdHlNYW5hZ2VyXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tb25MYXllciB9IGZyb20gXCIuLi9yZXNvdXJjZXMvaGVscGVycy9jcmVhdGVDb21tb25MYXllclwiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDcmVhdGVBcGlBbmRBdHRhY2hMYW1iZGFzIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9nYXRld2F5L0NyZWF0ZUFwaUFuZEF0dGFjaExhbWJkYXNcIjtcbmltcG9ydCB7IGNyZWF0ZVNlZWREYXRhYmFzZUN1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9jdXN0b21SZXNvdXJjZS9jcmVhdGVTZWVkRGF0YWJhc2VDdXN0b21SZXNvdXJjZVwiO1xuaW1wb3J0IHsgSVJlc3RBcGkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vY29uZmlnL0Vudmlyb25tZW50c1wiO1xuZXhwb3J0IGNsYXNzIE1pY3JvU2VydmljZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUR5bmFtb1RhYmxlczogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgcmVxdWlyZVNlZWREYXRhYmFzZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoYXNMYW1iZGFMYXllcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgYXBwQ29uZmlnOiBBcHBDb25maWc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGk6IElSZXN0QXBpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHluYW1vVGFibGVzOiBUYWJsZVtdIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFtYmRhTGF5ZXJzOiBMYXllclZlcnNpb25bXSB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlY3JldE1hbmFnZXI6IElTZWNyZXQgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIGxhbWJkYVJlY29yZHM6IFJlY29yZDxzdHJpbmcsIE5vZGVqc0Z1bmN0aW9uPiA9IHt9O1xuXG4gICAgcHVibGljIGdldCBUYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmR5bmFtb1RhYmxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFNlY3JldE1hbmFnZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3JldE1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBMYW1iZGFMYXllcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbWJkYUxheWVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IExhbWJkYXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbWJkYXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBMYW1iZGFSZWNvcmRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW1iZGFSZWNvcmRzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNaWNyb3NlcnZpY2VQcm9wcyxcbiAgICAgICAgZW52OiBFbnZpcm9ubWVudCA9IFwicHJvZFwiKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAgICAgdGhpcy5hcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKHByb3BzKTtcblxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZXMgPSAocHJvcHMuUkVTT1VSQ0VTLkRZTkFNTz8uVEFCTEVTICYmXG4gICAgICAgICAgICBwcm9wcy5SRVNPVVJDRVMuRFlOQU1PLlRBQkxFUy5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnJlcXVpcmVTZWVkRGF0YWJhc2UgPSAocHJvcHMuUkVTT1VSQ0VTLkRZTkFNTz8uVVNFX1NFRURfREFUQUJBU0UgJiZcbiAgICAgICAgICAgIHByb3BzLlJFU09VUkNFUy5EWU5BTU8uU0VFRF9MQU1CREEpID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuaGFzTGFtYmRhTGF5ZXJzID0gKHByb3BzLlJFU09VUkNFUy5MQU1CREFfTEFZRVJTICYmXG4gICAgICAgICAgICBwcm9wcy5SRVNPVVJDRVMuTEFNQkRBX0xBWUVSUy5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5vbkluaXQoc2NvcGUsIGVudik7XG5cbiAgICAgICAgdGhpcy5hcGkgPSByZXN1bHRzLnJlc3RBcGkhO1xuICAgICAgICB0aGlzLmR5bmFtb1RhYmxlcyA9IHJlc3VsdHMuZHluYW1vVGFibGVzITtcbiAgICAgICAgdGhpcy5sYW1iZGFMYXllcnMgPSByZXN1bHRzLmxhbWJkYUxheWVycyE7XG4gICAgICAgIHRoaXMuc2VjcmV0TWFuYWdlciA9IHJlc3VsdHMuc2VjcmV0TWFuYWdlciE7XG5cbiAgICAgICAgdGhpcy5sYW1iZGFzID0gcmVzdWx0cy5sYW1iZGFzITtcblxuICAgICAgICB0aGlzLmNyZWF0ZVRhZyhzY29wZSlcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0LCBlbnY6IEVudmlyb25tZW50KSB7XG5cbiAgICAgICAgbGV0IHNlY3JldE1hbmFnZXI6IElTZWNyZXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHRhYmxlczogVGFibGVbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGNvbW1vbkxheWVyczogTGF5ZXJWZXJzaW9uW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52LlNFQ1JFVF9NQU5BR0VSX0FSTikge1xuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwcm92aWRlIHRoZSBBUk4gZm9yIHRoZSB5b3VyIENvbmZpZ3VyYXRpb24gU2VjcmV0IFxuICAgICAgICAgICAgLy8gICAgIE1hbmFnZXJgKTsgICAgICBcbiAgICAgICAgICAgIHNlY3JldE1hbmFnZXIgPSBnZXRTZWNyZXRNYW5hZ2VyKHNjb3BlLCB0aGlzLmFwcENvbmZpZywgcHJvY2Vzcy5lbnYuU0VDUkVUX01BTkFHRVJfQVJOKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0xhbWJkYUxheWVycykge1xuICAgICAgICAgICAgY29tbW9uTGF5ZXJzID0gY3JlYXRlQ29tbW9uTGF5ZXIoc2NvcGUsIHRoaXMuYXBwQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdhdGV3YXkgPSBuZXcgQXBpKHNjb3BlLCB0aGlzLmFwcENvbmZpZywgZW52KS5BUElzO1xuXG4gICAgICAgIGNvbnN0IGxheWVycyA9IGNvbW1vbkxheWVycztcblxuICAgICAgICAvLyBDcmVhdGVzIER5bmFtb0RiIFRhYmxlcyBpZiByZXF1aXJlZFxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVzKSB7XG4gICAgICAgICAgICBjb25zdCBkeW5hbW8gPSBuZXcgQ3JlYXRlRHluYW1vRGIoc2NvcGUsIHRoaXMuYXBwQ29uZmlnKTtcblxuICAgICAgICAgICAgdGFibGVzID0gZHluYW1vLkNyZWF0ZWRUYWJsZXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlU2VlZERhdGFiYXNlKSB7XG4gICAgICAgICAgICBjcmVhdGVTZWVkRGF0YWJhc2VDdXN0b21SZXNvdXJjZShzY29wZSwgdGhpcy5hcHBDb25maWcsIHRhYmxlcyFbMF0sIGxheWVycyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDUkVBVEUgQVBJIEdBVEVXQVkgQU5EIExBTUJEQSBIRVJFIFxuICAgICAgICBjb25zdCBhcGlHYXRld2F5ID0gbmV3IENyZWF0ZUFwaUFuZEF0dGFjaExhbWJkYXMoc2NvcGUsIHRoaXMuYXBwQ29uZmlnLCBnYXRld2F5WzBdLCBlbnYsIGxheWVycywgdGFibGVzKTtcblxuICAgICAgICB0aGlzLmxhbWJkYVJlY29yZHMgPSBhcGlHYXRld2F5LkxhbWJkYVJlY29yZHM7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2xhbWJkYSBSZWNvcmRzOicsIHRoaXMubGFtYmRhUmVjb3JkcylcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdEFwaTogKGdhdGV3YXk/Lmxlbmd0aCA+IDApID8gZ2F0ZXdheVswXSA6IG51bGwsXG4gICAgICAgICAgICBsYW1iZGFMYXllcnM6IGxheWVycyB8fCBudWxsLFxuICAgICAgICAgICAgZHluYW1vVGFibGVzOiB0YWJsZXMgfHwgbnVsbCxcbiAgICAgICAgICAgIHNlY3JldE1hbmFnZXI6IHNlY3JldE1hbmFnZXIsXG4gICAgICAgICAgICBsYW1iZGFzOiBhcGlHYXRld2F5LkxhbWJkYXMsXG5cbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWcoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICBUYWdzLm9mKHNjb3BlKS5hZGQoJ0FwcCcsIHRoaXMuYXBwQ29uZmlnLkFwcE5hbWUpO1xuICAgICAgICBUYWdzLm9mKHNjb3BlKS5hZGQoJ1Jlc291Y2VQcmVmaXgnLCB0aGlzLmFwcENvbmZpZy5BcHBQcmVmaXgpO1xuICAgIH1cbn0iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWljcm9TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvTWljcm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF1QztBQUV2QyxxRUFBb0U7QUFDcEUsOERBQXFEO0FBQ3JELGtFQUFnRTtBQUNoRSw4RUFBMkU7QUFDM0UsbURBQWdEO0FBQ2hELDZDQUFtQztBQUVuQyw4RkFBMkY7QUFDM0YsbUhBQWdIO0FBS2hILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBRXBCLG1CQUFtQixDQUFVO0lBQ3RDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUM1QixlQUFlLEdBQVksS0FBSyxDQUFDO0lBQzFDLFNBQVMsQ0FBWTtJQUNkLEdBQUcsQ0FBVztJQUNkLFlBQVksQ0FBc0I7SUFDbEMsWUFBWSxDQUE2QjtJQUN6QyxhQUFhLEdBQW1CLElBQUksQ0FBQztJQUNyQyxPQUFPLEdBQXFCLEVBQUUsQ0FBQztJQUN4QyxhQUFhLEdBQW1DLEVBQUUsQ0FBQztJQUUzRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCLEVBQzlELE1BQW1CLE1BQU07UUFDekIsS0FBSyxDQUFD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QUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLHFEQUF5QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXpHLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUU5QyxxREFBcUQ7UUFFckQsT0FBTztZQUNILE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNsRCxZQUFZLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDNUIsWUFBWSxFQUFFLE1BQU0sSUFBSSxJQUFJO1lBQzVCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztTQUU5QixDQUFDO0lBRU4sQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFnQjtRQUNoQyxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsa0JBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQXJIRCxvQ0FxSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVEeW5hbW9EYiB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZHluYW1vZGIvQ3JlYXRlRHluYW1vXCI7XG5pbXBvcnQgeyBBcGkgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2dhdGV3YXkvY3JlYXRlQXBpXCI7XG5pbXBvcnQgeyBnZXRTZWNyZXRNYW5hZ2VyIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9zZWN1cml0eU1hbmFnZXJcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbW1vbkxheWVyIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9oZWxwZXJzL2NyZWF0ZUNvbW1vbkxheWVyXCI7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTGF5ZXJWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENyZWF0ZUFwaUFuZEF0dGFjaExhbWJkYXMgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2dhdGV3YXkvQ3JlYXRlQXBpQW5kQXR0YWNoTGFtYmRhc1wiO1xuaW1wb3J0IHsgY3JlYXRlU2VlZERhdGFiYXNlQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2N1c3RvbVJlc291cmNlL2NyZWF0ZVNlZWREYXRhYmFzZUN1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyBJUmVzdEFwaSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9jb25maWcvRW52aXJvbm1lbnRzXCI7XG5leHBvcnQgY2xhc3MgTWljcm9TZXJ2aWNlIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlRHluYW1vVGFibGVzOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCByZXF1aXJlU2VlZERhdGFiYXNlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc0xhbWJkYUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogSVJlc3RBcGk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkeW5hbW9UYWJsZXM6IFRhYmxlW10gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYW1iZGFMYXllcnM6IExheWVyVmVyc2lvbltdIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjcmV0TWFuYWdlcjogSVNlY3JldCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgbGFtYmRhUmVjb3JkczogUmVjb3JkPHN0cmluZywgTm9kZWpzRnVuY3Rpb24+ID0ge307XG5cbiAgICBwdWJsaWMgZ2V0IFRhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1vVGFibGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgU2VjcmV0TWFuYWdlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjcmV0TWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IExhbWJkYUxheWVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFtYmRhTGF5ZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgTGFtYmRhcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFtYmRhcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IExhbWJkYVJlY29yZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbWJkYVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBSZXN0QXBpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLFxuICAgICAgICBlbnY6IEVudmlyb25tZW50ID0gXCJwcm9kXCIpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICB0aGlzLmFwcENvbmZpZyA9IG5ldyBBcHBDb25maWcocHJvcHMpO1xuXG4gICAgICAgIHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlcyA9IChwcm9wcy5SRVNPVVJDRVMuRFlOQU1PPy5UQUJMRVMgJiZcbiAgICAgICAgICAgIHByb3BzLlJFU09VUkNFUy5EWU5BTU8uVEFCTEVTLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMucmVxdWlyZVNlZWREYXRhYmFzZSA9IChwcm9wcy5SRVNPVVJDRVMuRFlOQU1PPy5VU0VfU0VFRF9EQVRBQkFTRSAmJlxuICAgICAgICAgICAgcHJvcHMuUkVTT1VSQ0VTLkRZTkFNTy5TRUVEX0xBTUJEQSkgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgdGhpcy5oYXNMYW1iZGFMYXllcnMgPSAocHJvcHMuUkVTT1VSQ0VTLkxBTUJEQV9MQVlFUlMgJiZcbiAgICAgICAgICAgIHByb3BzLlJFU09VUkNFUy5MQU1CREFfTEFZRVJTLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLm9uSW5pdChzY29wZSwgZW52KTtcblxuICAgICAgICB0aGlzLmFwaSA9IHJlc3VsdHMucmVzdEFwaSE7XG4gICAgICAgIHRoaXMuZHluYW1vVGFibGVzID0gcmVzdWx0cy5keW5hbW9UYWJsZXMhO1xuICAgICAgICB0aGlzLmxhbWJkYUxheWVycyA9IHJlc3VsdHMubGFtYmRhTGF5ZXJzITtcbiAgICAgICAgdGhpcy5zZWNyZXRNYW5hZ2VyID0gcmVzdWx0cy5zZWNyZXRNYW5hZ2VyITtcblxuICAgICAgICB0aGlzLmxhbWJkYXMgPSByZXN1bHRzLmxhbWJkYXMhO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlVGFnKHNjb3BlKVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Jbml0KHNjb3BlOiBDb25zdHJ1Y3QsIGVudjogRW52aXJvbm1lbnQpIHtcblxuICAgICAgICBsZXQgc2VjcmV0TWFuYWdlcjogSVNlY3JldCB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgdGFibGVzOiBUYWJsZVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgY29tbW9uTGF5ZXJzOiBMYXllclZlcnNpb25bXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuU0VDUkVUX01BTkFHRVJfQVJOKSB7XG4gICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHByb3ZpZGUgdGhlIEFSTiBmb3IgdGhlIHlvdXIgQ29uZmlndXJhdGlvbiBTZWNyZXQgXG4gICAgICAgICAgICAvLyAgICAgTWFuYWdlcmApOyAgICAgIFxuICAgICAgICAgICAgc2VjcmV0TWFuYWdlciA9IGdldFNlY3JldE1hbmFnZXIoc2NvcGUsIHRoaXMuYXBwQ29uZmlnLCBwcm9jZXNzLmVudi5TRUNSRVRfTUFOQUdFUl9BUk4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzTGFtYmRhTGF5ZXJzKSB7XG4gICAgICAgICAgICBjb21tb25MYXllcnMgPSBjcmVhdGVDb21tb25MYXllcihzY29wZSwgdGhpcy5hcHBDb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ2F0ZXdheSA9IG5ldyBBcGkoc2NvcGUsIHRoaXMuYXBwQ29uZmlnLCBlbnYpLkFQSXM7XG5cbiAgICAgICAgY29uc3QgbGF5ZXJzID0gY29tbW9uTGF5ZXJzO1xuXG4gICAgICAgIC8vIENyZWF0ZXMgRHluYW1vRGIgVGFibGVzIGlmIHJlcXVpcmVkXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtbyA9IG5ldyBDcmVhdGVEeW5hbW9EYihzY29wZSwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgICAgICB0YWJsZXMgPSBkeW5hbW8uQ3JlYXRlZFRhYmxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVTZWVkRGF0YWJhc2UpIHtcbiAgICAgICAgICAgIGNyZWF0ZVNlZWREYXRhYmFzZUN1c3RvbVJlc291cmNlKHNjb3BlLCB0aGlzLmFwcENvbmZpZywgdGFibGVzIVswXSwgbGF5ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENSRUFURSBBUEkgR0FURVdBWSBBTkQgTEFNQkRBIEhFUkUgXG4gICAgICAgIGNvbnN0IGFwaUdhdGV3YXkgPSBuZXcgQ3JlYXRlQXBpQW5kQXR0YWNoTGFtYmRhcyhzY29wZSwgdGhpcy5hcHBDb25maWcsIGdhdGV3YXlbMF0sIGVudiwgbGF5ZXJzLCB0YWJsZXMpO1xuXG4gICAgICAgIHRoaXMubGFtYmRhUmVjb3JkcyA9IGFwaUdhdGV3YXkuTGFtYmRhUmVjb3JkcztcblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnbGFtYmRhIFJlY29yZHM6JywgdGhpcy5sYW1iZGFSZWNvcmRzKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN0QXBpOiAoZ2F0ZXdheT8ubGVuZ3RoID4gMCkgPyBnYXRld2F5WzBdIDogbnVsbCxcbiAgICAgICAgICAgIGxhbWJkYUxheWVyczogbGF5ZXJzIHx8IG51bGwsXG4gICAgICAgICAgICBkeW5hbW9UYWJsZXM6IHRhYmxlcyB8fCBudWxsLFxuICAgICAgICAgICAgc2VjcmV0TWFuYWdlcjogc2VjcmV0TWFuYWdlcixcbiAgICAgICAgICAgIGxhbWJkYXM6IGFwaUdhdGV3YXkuTGFtYmRhcyxcblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhZyhzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIFRhZ3Mub2Yoc2NvcGUpLmFkZCgnQXBwJywgdGhpcy5hcHBDb25maWcuQXBwTmFtZSk7XG4gICAgICAgIFRhZ3Mub2Yoc2NvcGUpLmFkZCgnUmVzb3VjZVByZWZpeCcsIHRoaXMuYXBwQ29uZmlnLkFwcFByZWZpeCk7XG4gICAgfVxufSJdfQ==
@@ -1,3 +1,4 @@
1
1
  import { Environment } from '../config/Environments';
2
2
  export declare const getUUID: () => string;
3
3
  export declare const environmentSuffix: (env?: Environment) => "" | "-qa" | "-dev";
4
+ export declare const environmentSuffixForDomain: (env?: Environment) => "" | "dev" | "qa";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.environmentSuffix = exports.getUUID = void 0;
3
+ exports.environmentSuffixForDomain = exports.environmentSuffix = exports.getUUID = void 0;
4
4
  const uuid_1 = require("uuid");
5
5
  const getUUID = () => {
6
6
  return (0, uuid_1.v4)();
@@ -10,4 +10,8 @@ const environmentSuffix = (env = "prod") => {
10
10
  return env === 'prod' ? '' : env === 'qa' ? '-qa' : '-dev';
11
11
  };
12
12
  exports.environmentSuffix = environmentSuffix;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy91dGlsLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0M7QUFHN0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBRXhCLE9BQU8sSUFBQSxTQUFNLEdBQUUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFIVyxRQUFBLE9BQU8sV0FHbEI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBbUIsTUFBTSxFQUFFLEVBQUU7SUFDM0QsT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQy9ELENBQUMsQ0FBQTtBQUZZLFFBQUEsaUJBQWlCLHFCQUU3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9jb25maWcvRW52aXJvbm1lbnRzJztcblxuZXhwb3J0IGNvbnN0IGdldFVVSUQgPSAoKSA9PiB7XG5cbiAgICByZXR1cm4gdXVpZHY0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRTdWZmaXggPSAoZW52OiBFbnZpcm9ubWVudCA9IFwicHJvZFwiKSA9PiB7XG4gICAgcmV0dXJuIGVudiA9PT0gJ3Byb2QnID8gJycgOiBlbnYgPT09ICdxYScgPyAnLXFhJyA6ICctZGV2Jztcbn0iXX0=
13
+ const environmentSuffixForDomain = (env = "prod") => {
14
+ return env === 'prod' ? '' : env === 'qa' ? 'qa' : 'dev';
15
+ };
16
+ exports.environmentSuffixForDomain = environmentSuffixForDomain;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy91dGlsLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0M7QUFHN0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBRXhCLE9BQU8sSUFBQSxTQUFNLEdBQUUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFIVyxRQUFBLE9BQU8sV0FHbEI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBbUIsTUFBTSxFQUFFLEVBQUU7SUFDM0QsT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQy9ELENBQUMsQ0FBQTtBQUZZLFFBQUEsaUJBQWlCLHFCQUU3QjtBQUVNLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFtQixNQUFNLEVBQUUsRUFBRTtJQUNwRSxPQUFPLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDN0QsQ0FBQyxDQUFBO0FBRlksUUFBQSwwQkFBMEIsOEJBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NvbmZpZy9FbnZpcm9ubWVudHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0VVVJRCA9ICgpID0+IHtcblxuICAgIHJldHVybiB1dWlkdjQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudFN1ZmZpeCA9IChlbnY6IEVudmlyb25tZW50ID0gXCJwcm9kXCIpID0+IHtcbiAgICByZXR1cm4gZW52ID09PSAncHJvZCcgPyAnJyA6IGVudiA9PT0gJ3FhJyA/ICctcWEnIDogJy1kZXYnO1xufVxuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRTdWZmaXhGb3JEb21haW4gPSAoZW52OiBFbnZpcm9ubWVudCA9IFwicHJvZFwiKSA9PiB7XG4gICAgcmV0dXJuIGVudiA9PT0gJ3Byb2QnID8gJycgOiBlbnYgPT09ICdxYScgPyAncWEnIDogJ2Rldic7XG59Il19
@@ -2,8 +2,10 @@ import { Certificate, ICertificate } from "aws-cdk-lib/aws-certificatemanager";
2
2
  import { IHostedZone } from "aws-cdk-lib/aws-route53";
3
3
  import { Construct } from "constructs";
4
4
  import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
+ import { Environment } from "../../config/Environments";
5
6
  export declare class CreateCertificate {
6
7
  certificate: ICertificate;
7
- constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone);
8
+ constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env?: Environment);
8
9
  generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone): Certificate;
10
+ generateApiCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: Environment): Certificate;
9
11
  }
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateCertificate = void 0;
4
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
5
  const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
6
+ const util_helper_1 = require("../../helpers/util-helper");
6
7
  class CreateCertificate {
7
8
  certificate;
8
- constructor(scope, props, hostedZone) {
9
+ constructor(scope, props, hostedZone, env = "prod") {
9
10
  this.certificate = this.generateCertificate(scope, props, hostedZone);
11
+ this.certificate = this.generateApiCertificate(scope, props, hostedZone, env);
10
12
  this.certificate.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
11
13
  }
12
14
  generateCertificate(scope, props, hostedZone) {
@@ -25,6 +27,15 @@ class CreateCertificate {
25
27
  });
26
28
  return cert;
27
29
  }
30
+ generateApiCertificate(scope, props, hostedZone, env) {
31
+ const cert = new aws_certificatemanager_1.Certificate(scope, `${props.API.DomainPrefix}-${(0, util_helper_1.environmentSuffixForDomain)(env)}-certificate`, {
32
+ domainName: `${props.API.DomainPrefix}.${(0, util_helper_1.environmentSuffixForDomain)(env)}.${props.DNS?.ZoneName}`,
33
+ validation: aws_certificatemanager_1.CertificateValidation.fromDnsMultiZone({
34
+ [`${props.API.DomainPrefix}.${(0, util_helper_1.environmentSuffixForDomain)(env)}.${props.DNS?.ZoneName}`]: hostedZone
35
+ })
36
+ });
37
+ return cert;
38
+ }
28
39
  }
29
40
  exports.CreateCertificate = CreateCertificate;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2VydGlmaWNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2NlcnRpZmljYXRlL2NyZWF0ZUNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUM1QywrRUFBK0g7QUFNL0gsTUFBYSxpQkFBaUI7SUFFbkIsV0FBVyxDQUFlO0lBRWpDLFlBQVksS0FBZ0IsRUFBRSxLQUF3QixFQUFFLFVBQXVCO1FBRTNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFnQixFQUFFLEtBQXdCLEVBQUUsVUFBdUI7UUFFbkYsOEdBQThHO1FBQzlHLHFFQUFxRTtRQUNyRSxrQkFBa0I7UUFDbEIsa0RBQWtEO1FBQ2xELFNBQVM7UUFFUCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFFMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxvQ0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUscUJBQXFCLElBQUksT0FBTyxjQUFjLEVBQUU7WUFDaEcsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUU7WUFDOUQsaUZBQWlGO1lBQ2pGLFVBQVUsRUFBRSw4Q0FBcUIsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0MsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRyxVQUFVO2FBQ3hFLENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUFoQ0QsOENBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGUsIENlcnRpZmljYXRlVmFsaWRhdGlvbiwgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUsIElDZXJ0aWZpY2F0ZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyBJSG9zdGVkWm9uZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1pY3Jvc2VydmljZVByb3BzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcblxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ2VydGlmaWNhdGUge1xuXG4gICAgcHVibGljIGNlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGU7XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lKSB7XG5cbiAgICAgICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IHRoaXMuZ2VuZXJhdGVDZXJ0aWZpY2F0ZShzY29wZSwgcHJvcHMsIGhvc3RlZFpvbmUpO1xuXG4gICAgICAgIHRoaXMuY2VydGlmaWNhdGUuYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gICAgICAgIFxuICAgIH1cblxuICAgIGdlbmVyYXRlQ2VydGlmaWNhdGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBob3N0ZWRab25lOiBJSG9zdGVkWm9uZSkge1xuXG4gICAgICAgIC8vIGNvbnN0IGNlcnQgPSBuZXcgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUoc2NvcGUsIGAke3Byb3BzLkROUy5ab25lTmFtZVdpdGhvdXRQZXJpb2R9LXNwYS1hcHAtY2VydGlmaWNhdGVgLCB7XG4gICAgICAgIC8vICAgICBkb21haW5OYW1lOiBgJHtwcm9wcy5BUEkuRG9tYWluUHJlZml4fS4ke3Byb3BzLkROUy5ab25lTmFtZX1gLFxuICAgICAgICAvLyAgICAgaG9zdGVkWm9uZSxcbiAgICAgICAgLy8gICAgIHJlZ2lvbjogcHJvcHMuR0xPQkFMUy5yZWdpb24gfHwgXCJ1cy1lYXN0LTFcIlxuICAgICAgICAvLyAgIH0pOyBcblxuICAgICAgICAgIGNvbnN0IGFwcFR5cGUgPSBcInNwYS1hcHBcIjtcblxuICAgICAgICAgIGNvbnN0IGNlcnQgPSBuZXcgQ2VydGlmaWNhdGUoc2NvcGUsIGAke3Byb3BzLkROUz8uWm9uZU5hbWVXaXRob3V0UGVyaW9kfS0ke2FwcFR5cGV9LWNlcnRpZmljYXRlYCwge1xuICAgICAgICAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlM/LlpvbmVOYW1lfWAsXG4gICAgICAgICAgICAvLyBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogW2Ake3Byb3BzLkFQSS5Eb21haW5QcmVmaXh9LiR7cHJvcHMuRE5TPy5ab25lTmFtZX1gXSxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zTXVsdGlab25lKHsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFtgJHtwcm9wcy5BUEkuRG9tYWluUHJlZml4fS4ke3Byb3BzLkROUz8uWm9uZU5hbWV9YF0gOiBob3N0ZWRab25lICwgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBjZXJ0O1xuICAgIH1cbn0iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2VydGlmaWNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2NlcnRpZmljYXRlL2NyZWF0ZUNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUM1QywrRUFBK0g7QUFJL0gsMkRBQXVFO0FBSXZFLE1BQWEsaUJBQWlCO0lBRXJCLFdBQVcsQ0FBZTtJQUVqQyxZQUFZLEtBQWdCLEVBQUUsS0FBd0IsRUFBRSxVQUF1QixFQUFFLE1BQW1CLE1BQU07UUFFeEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU5RSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLDJCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsS0FBd0IsRUFBRSxVQUF1QjtRQUVyRiw4R0FBOEc7UUFDOUcscUVBQXFFO1FBQ3JFLGtCQUFrQjtRQUNsQixrREFBa0Q7UUFDbEQsU0FBUztRQUVULE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLG9DQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsSUFBSSxPQUFPLGNBQWMsRUFBRTtZQUNoRyxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtZQUM5RCxpRkFBaUY7WUFDakYsVUFBVSxFQUFFLDhDQUFxQixDQUFDLGdCQUFnQixDQUFDO2dCQUNqRCxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVU7YUFDakUsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsS0FBd0IsRUFBRSxVQUF1QixFQUFFLEdBQWdCO1FBRTFHLE1BQU0sSUFBSSxHQUFHLElBQUksb0NBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFBLHdDQUEwQixFQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7WUFDOUcsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBQSx3Q0FBMEIsRUFBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtZQUNqRyxVQUFVLEVBQUUsOENBQXFCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2pELENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFBLHdDQUEwQixFQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVO2FBQ3BHLENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQTlDRCw4Q0E4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZSwgQ2VydGlmaWNhdGVWYWxpZGF0aW9uLCBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSwgSUNlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IElIb3N0ZWRab25lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgZW52aXJvbm1lbnRTdWZmaXhGb3JEb21haW4gfSBmcm9tIFwiLi4vLi4vaGVscGVycy91dGlsLWhlbHBlclwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0Vudmlyb25tZW50c1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVDZXJ0aWZpY2F0ZSB7XG5cbiAgcHVibGljIGNlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBob3N0ZWRab25lOiBJSG9zdGVkWm9uZSwgZW52OiBFbnZpcm9ubWVudCA9IFwicHJvZFwiKSB7XG5cbiAgICB0aGlzLmNlcnRpZmljYXRlID0gdGhpcy5nZW5lcmF0ZUNlcnRpZmljYXRlKHNjb3BlLCBwcm9wcywgaG9zdGVkWm9uZSk7XG5cbiAgICB0aGlzLmNlcnRpZmljYXRlID0gdGhpcy5nZW5lcmF0ZUFwaUNlcnRpZmljYXRlKHNjb3BlLCBwcm9wcywgaG9zdGVkWm9uZSwgZW52KTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGUuYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG5cbiAgfVxuXG4gIGdlbmVyYXRlQ2VydGlmaWNhdGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBob3N0ZWRab25lOiBJSG9zdGVkWm9uZSkge1xuXG4gICAgLy8gY29uc3QgY2VydCA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZShzY29wZSwgYCR7cHJvcHMuRE5TLlpvbmVOYW1lV2l0aG91dFBlcmlvZH0tc3BhLWFwcC1jZXJ0aWZpY2F0ZWAsIHtcbiAgICAvLyAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtwcm9wcy5ETlMuWm9uZU5hbWV9YCxcbiAgICAvLyAgICAgaG9zdGVkWm9uZSxcbiAgICAvLyAgICAgcmVnaW9uOiBwcm9wcy5HTE9CQUxTLnJlZ2lvbiB8fCBcInVzLWVhc3QtMVwiXG4gICAgLy8gICB9KTsgXG5cbiAgICBjb25zdCBhcHBUeXBlID0gXCJzcGEtYXBwXCI7XG5cbiAgICBjb25zdCBjZXJ0ID0gbmV3IENlcnRpZmljYXRlKHNjb3BlLCBgJHtwcm9wcy5ETlM/LlpvbmVOYW1lV2l0aG91dFBlcmlvZH0tJHthcHBUeXBlfS1jZXJ0aWZpY2F0ZWAsIHtcbiAgICAgIGRvbWFpbk5hbWU6IGAke3Byb3BzLkFQSS5Eb21haW5QcmVmaXh9LiR7cHJvcHMuRE5TPy5ab25lTmFtZX1gLFxuICAgICAgLy8gc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IFtgJHtwcm9wcy5BUEkuRG9tYWluUHJlZml4fS4ke3Byb3BzLkROUz8uWm9uZU5hbWV9YF0sXG4gICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURuc011bHRpWm9uZSh7XG4gICAgICAgIFtgJHtwcm9wcy5BUEkuRG9tYWluUHJlZml4fS4ke3Byb3BzLkROUz8uWm9uZU5hbWV9YF06IGhvc3RlZFpvbmUsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHJldHVybiBjZXJ0O1xuICB9XG5cbiAgZ2VuZXJhdGVBcGlDZXJ0aWZpY2F0ZShzY29wZTogQ29uc3RydWN0LCBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lLCBlbnY6IEVudmlyb25tZW50KSB7XG5cbiAgICBjb25zdCBjZXJ0ID0gbmV3IENlcnRpZmljYXRlKHNjb3BlLCBgJHtwcm9wcy5BUEkuRG9tYWluUHJlZml4fS0ke2Vudmlyb25tZW50U3VmZml4Rm9yRG9tYWluKGVudil9LWNlcnRpZmljYXRlYCwge1xuICAgICAgZG9tYWluTmFtZTogYCR7cHJvcHMuQVBJLkRvbWFpblByZWZpeH0uJHtlbnZpcm9ubWVudFN1ZmZpeEZvckRvbWFpbihlbnYpfS4ke3Byb3BzLkROUz8uWm9uZU5hbWV9YCxcbiAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zTXVsdGlab25lKHtcbiAgICAgICAgW2Ake3Byb3BzLkFQSS5Eb21haW5QcmVmaXh9LiR7ZW52aXJvbm1lbnRTdWZmaXhGb3JEb21haW4oZW52KX0uJHtwcm9wcy5ETlM/LlpvbmVOYW1lfWBdOiBob3N0ZWRab25lXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNlcnQ7XG4gIH1cbn0iXX0=
@@ -25,25 +25,25 @@ class Api extends baseResource_1.BaseResource {
25
25
  if (this.config.DNS) {
26
26
  console.log('### DNS is true ###');
27
27
  const zone = this.getZone(this.scope, this.config);
28
- const api = new aws_apigateway_1.RestApi(this.scope, `${this.config.AppPrefix}-rest-api${(0, util_helper_1.environmentSuffix)(this.env)}`, this.createApiProps(zone));
28
+ const api = new aws_apigateway_1.RestApi(this.scope, `${this.config.AppPrefix}-rest-api${(0, util_helper_1.environmentSuffix)(this.env)}`, this.createApiProps(this.env, zone));
29
29
  this.createARecord(scope, zone, api);
30
30
  this.createApiKey(this.config, api);
31
31
  return api;
32
32
  }
33
33
  else {
34
- const api = new aws_apigateway_1.RestApi(this.scope, `${this.config.AppPrefix}-rest-api${(0, util_helper_1.environmentSuffix)(this.env)}`, this.createApiProps());
34
+ const api = new aws_apigateway_1.RestApi(this.scope, `${this.config.AppPrefix}-rest-api${(0, util_helper_1.environmentSuffix)(this.env)}`, this.createApiProps(this.env));
35
35
  this.createApiKey(this.config, api);
36
36
  return api;
37
37
  }
38
38
  }
39
- createApiProps(zone) {
39
+ createApiProps(env, zone) {
40
40
  if (this.config.DNS) {
41
41
  const cert = this.createCertificate(this.scope, zone, this.config);
42
42
  const props = {
43
43
  restApiName: `${this.config.AppPrefix}-${this.config.API.Name}`,
44
44
  description: this.config.API.Description,
45
45
  domainName: {
46
- domainName: `${this.config.API.DomainPrefix}.${this.config.DNS.ZoneName}`,
46
+ domainName: `${this.config.API.DomainPrefix}.${env}.${this.config.DNS.ZoneName}`,
47
47
  certificate: cert.certificate,
48
48
  endpointType: aws_apigateway_1.EndpointType.EDGE,
49
49
  securityPolicy: aws_apigateway_1.SecurityPolicy.TLS_1_2
@@ -109,7 +109,8 @@ class Api extends baseResource_1.BaseResource {
109
109
  });
110
110
  }
111
111
  createCertificate(scope, zone, config) {
112
- const cert = new createCertificate_1.CreateCertificate(scope, config, zone);
112
+ const cert = new createCertificate_1.CreateCertificate(scope, config, zone, this.env);
113
+ cert.certificate.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
113
114
  return cert;
114
115
  }
115
116
  createARecord(scope, zone, api) {
@@ -138,4 +139,4 @@ class Api extends baseResource_1.BaseResource {
138
139
  }
139
140
  }
140
141
  exports.Api = Api;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZUFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEQ7QUFDNUQsK0RBQXVMO0FBQ3ZMLHlEQUF5RjtBQUN6Rix5RUFBK0U7QUFLL0UsdURBQW9EO0FBQ3BELHdFQUFxRTtBQUNyRSxpREFBMkM7QUFFM0MsMkRBQThEO0FBRTlELE1BQWEsR0FBSSxTQUFRLDJCQUFzQjtJQVNjO0lBUGpELFdBQVcsQ0FBYztJQUdqQyxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLE1BQWlCLEVBQVUsTUFBbUIsTUFBTTtRQUM5RSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRGdDLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBRzlFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFnQjtRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSx3QkFBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsWUFBWSxJQUFBLCtCQUFpQixFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVsSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXBDLE9BQU8sR0FBRyxDQUFDO1FBRWYsQ0FBQzthQUFNLENBQUM7WUFFSixNQUFNLEdBQUcsR0FBRyxJQUFJLHdCQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxZQUFZLElBQUEsK0JBQWlCLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFFOUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXBDLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBa0I7UUFFckMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWxCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEUsTUFBTSxLQUFLLEdBQWlCO2dCQUN4QixXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQy9ELFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXO2dCQUN4QyxVQUFVLEVBQUU7b0JBQ1IsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtvQkFDekUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixZQUFZLEVBQUUsNkJBQVksQ0FBQyxJQUFJO29CQUMvQixjQUFjLEVBQUUsK0JBQWMsQ0FBQyxPQUFPO2lCQUN6QztnQkFDRCxnQ0FBZ0M7Z0JBQ2hDLDBCQUEwQjtnQkFDMUIsc0NBQXNDO2dCQUN0QyxPQUFPO2dCQUNQLGtCQUFrQjtnQkFDbEIsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDaEQsQ0FBQztZQUVGLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLEdBQWlCO2dCQUN4QixXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQy9ELFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXO2dCQUN4QywyQkFBMkIsRUFBRSxJQUFJLENBQUMsV0FBVzthQUNoRCxDQUFDO1lBRUYsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0I7UUFFNUIsTUFBTSxXQUFXLEdBQWdCO1lBQzdCLFlBQVksRUFBRTtnQkFDVixHQUFHO2FBQ047WUFDRCxZQUFZLEVBQUUscUJBQUksQ0FBQyxXQUFXO1lBQzlCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsWUFBWSxFQUFFLHFCQUFJLENBQUMsV0FBVztTQUNqQyxDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFpQjtRQUNwQyxxREFBcUQ7UUFDckQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBaUIsRUFBRSxHQUFZO1FBRWhELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzFELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsNEVBQTRFO0lBQzVFLDBHQUEwRztJQUMxRyw0Q0FBNEM7SUFDNUMsMkRBQTJEO0lBQzNELDJEQUEyRDtJQUMzRCxVQUFVO0lBRVYsd0JBQXdCO0lBQ3hCLElBQUk7SUFFSiwrR0FBK0c7SUFDL0csZ0ZBQWdGO0lBQ2hGLDhCQUE4QjtJQUM5Qix3QkFBd0I7SUFDeEIsVUFBVTtJQUNWLElBQUk7SUFFSSxPQUFPLENBQUMsS0FBZ0IsRUFBRSxNQUF5QjtRQUN2RCxPQUFPLHdCQUFVLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLE9BQU8sRUFBRTtZQUM5RSxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFTO1lBQy9CLFlBQVksRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU87U0FDcEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWdCLEVBQUUsSUFBaUIsRUFBRSxNQUF5QjtRQUNwRixNQUFNLElBQUksR0FBRyxJQUFJLHFDQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFnQixFQUFFLElBQWlCLEVBQUUsR0FBWTtRQUNuRSxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUM1QyxJQUFJO1lBQ0osTUFBTSxFQUFFLDBCQUFZLENBQUMsU0FBUyxDQUFDLElBQUksZ0NBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuRCxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWTtTQUMzQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsa0JBQWtCLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQWdCO1FBRXJDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsNENBQTRDO1FBQzVDLDhEQUE4RDtRQUU5RCwyRUFBMkU7UUFJM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxZQUFZLENBQUksS0FBZ0IsRUFBRSxhQUFrQjtRQUMxRCxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBRS9CLElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRTtnQkFDOUIsYUFBYTtnQkFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUc7YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUo7QUF2S0Qsa0JBdUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5LCBUYWcgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEJhc2VQYXRoTWFwcGluZywgQ29ycywgQ29yc09wdGlvbnMsIERvbWFpbk5hbWUsIEVuZHBvaW50VHlwZSwgSURvbWFpbk5hbWUsIElSZXN0QXBpLCBNZXRob2RPcHRpb25zLCBSZXN0QXBpLCBSZXN0QXBpUHJvcHMsIFNlY3VyaXR5UG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBUmVjb3JkLCBIb3N0ZWRab25lLCBJSG9zdGVkWm9uZSwgUmVjb3JkVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBBcGlHYXRld2F5LCBBcGlHYXRld2F5RG9tYWluIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuXG5pbXBvcnQgeyBCYXNlUmVzb3VyY2UgfSBmcm9tIFwiLi4vYmFzZS9iYXNlUmVzb3VyY2VcIjtcbmltcG9ydCB7IENyZWF0ZUNlcnRpZmljYXRlIH0gZnJvbSBcIi4uL2NlcnRpZmljYXRlL2NyZWF0ZUNlcnRpZmljYXRlXCI7XG5pbXBvcnQgeyBUc2dBcGlLZXkgfSBmcm9tIFwiLi9jcmVhdGVBcGlLZXlcIjtcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9FbnZpcm9ubWVudHNcIjtcbmltcG9ydCB7IGVudmlyb25tZW50U3VmZml4IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvdXRpbC1oZWxwZXJcIjtcblxuZXhwb3J0IGNsYXNzIEFwaSBleHRlbmRzIEJhc2VSZXNvdXJjZTxJUmVzdEFwaT4ge1xuXG4gICAgcHJpdmF0ZSBjb3JzT3B0aW9uczogQ29yc09wdGlvbnM7XG5cblxuICAgIGdldCBBUElzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVkUmVzb3VyY2VzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogQXBwQ29uZmlnLCBwcml2YXRlIGVudjogRW52aXJvbm1lbnQgPSBcInByb2RcIikge1xuICAgICAgICBzdXBlcihzY29wZSwgY29uZmlnKTtcblxuICAgICAgICB0aGlzLmNvcnNPcHRpb25zID0gdGhpcy5jcmVhdGVEZWZhdWx0Q29yc09wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZWRSZXNvdXJjZXMgPSB0aGlzLmNyZWF0ZVJlc291cmNlKHNjb3BlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFwaShzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5ETlMpIHtcblxuICAgICAgICAgICAgY29uc29sZS5sb2coJyMjIyBETlMgaXMgdHJ1ZSAjIyMnKTtcblxuICAgICAgICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSh0aGlzLnNjb3BlLCB0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IG5ldyBSZXN0QXBpKHRoaXMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tcmVzdC1hcGkke2Vudmlyb25tZW50U3VmZml4KHRoaXMuZW52KX1gLCB0aGlzLmNyZWF0ZUFwaVByb3BzKHpvbmUpKTtcblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBUmVjb3JkKHNjb3BlLCB6b25lLCBhcGkpO1xuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFwaUtleSh0aGlzLmNvbmZpZywgYXBpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFwaTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBjb25zdCBhcGkgPSBuZXcgUmVzdEFwaSh0aGlzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LXJlc3QtYXBpJHtlbnZpcm9ubWVudFN1ZmZpeCh0aGlzLmVudil9YCwgdGhpcy5jcmVhdGVBcGlQcm9wcygpKTtcblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBcGlLZXkodGhpcy5jb25maWcsIGFwaSk7XG5cbiAgICAgICAgICAgIHJldHVybiBhcGk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFwaVByb3BzKHpvbmU/OiBJSG9zdGVkWm9uZSk6IFJlc3RBcGlQcm9wcyB7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLkROUykge1xuXG4gICAgICAgICAgICBjb25zdCBjZXJ0ID0gdGhpcy5jcmVhdGVDZXJ0aWZpY2F0ZSh0aGlzLnNjb3BlLCB6b25lISwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm9wczogUmVzdEFwaVByb3BzID0ge1xuICAgICAgICAgICAgICAgIHJlc3RBcGlOYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dGhpcy5jb25maWcuQVBJLk5hbWV9YCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb25maWcuQVBJLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluTmFtZTogYCR7dGhpcy5jb25maWcuQVBJLkRvbWFpblByZWZpeH0uJHt0aGlzLmNvbmZpZy5ETlMuWm9uZU5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6IGNlcnQuY2VydGlmaWNhdGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlLkVER0UsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiBTZWN1cml0eVBvbGljeS5UTFNfMV8yXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiAgQUREIENVU1RPTSBET01BSU4gSEVSRVxuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGRvbWFpbk5hbWU6IGRvbWFpbiwgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAgICAgLy8gZG9tYWluTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zOiB0aGlzLmNvcnNPcHRpb25zXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wczogUmVzdEFwaVByb3BzID0ge1xuICAgICAgICAgICAgICAgIHJlc3RBcGlOYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dGhpcy5jb25maWcuQVBJLk5hbWV9YCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb25maWcuQVBJLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRDb3JzUHJlZmxpZ2h0T3B0aW9uczogdGhpcy5jb3JzT3B0aW9uc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0Q29yc09wdGlvbnMoKSB7XG5cbiAgICAgICAgY29uc3QgY29yc09wdGlvbnM6IENvcnNPcHRpb25zID0ge1xuICAgICAgICAgICAgYWxsb3dIZWFkZXJzOiBbXG4gICAgICAgICAgICAgICAgJyonLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFsbG93TWV0aG9kczogQ29ycy5BTExfTUVUSE9EUyxcbiAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBhbGxvd09yaWdpbnM6IENvcnMuQUxMX09SSUdJTlMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNvcnNPcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVxdWlyZXNBcGlLZXkoY29uZmlnOiBBcHBDb25maWcpIHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgbGFtYmRhcyByZXF1aXJlIGFuIEFQSSBLZXlcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5SRVNPVVJDRVMuTEFNQkRBLnNvbWUoKGxhbWJkYSkgPT4gbGFtYmRhLmFwaUdhdGV3YXk/LnJlcXVpcmVBcGlLZXkgPT09IHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQXBpS2V5KGNvbmZpZzogQXBwQ29uZmlnLCBhcGk6IFJlc3RBcGkpIHtcblxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlc0FwaUtleSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwaUtleSA9IG5ldyBUc2dBcGlLZXkodGhpcy5zY29wZSwgdGhpcy5jb25maWcsIGFwaSlcbiAgICAgICAgICAgIHJldHVybiBhcGlLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIHByaXZhdGUgY3JlYXRlQ3VzdG9tRG9tYWluKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAvLyAgICAgY29uc3QgZG9tYWluTmFtZSA9IERvbWFpbk5hbWUuZnJvbURvbWFpbk5hbWVBdHRyaWJ1dGVzKHNjb3BlLCBgJHtjb25maWcuQVBJLk5hbWV9LWN1c3RvbS1kb21haW5gLCB7XG4gICAgLy8gICAgICAgICBkb21haW5OYW1lOiBjb25maWcuRE5TPy5ab25lTmFtZSxcbiAgICAvLyAgICAgICAgIGRvbWFpbk5hbWVBbGlhc0hvc3RlZFpvbmVJZDogY29uZmlnLkROUy5ab25lSWQhLFxuICAgIC8vICAgICAgICAgZG9tYWluTmFtZUFsaWFzVGFyZ2V0OiBjb25maWcuQVBJLkRvbWFpblByZWZpeCEsXG4gICAgLy8gICAgIH0pO1xuXG4gICAgLy8gICAgIHJldHVybiBkb21haW5OYW1lXG4gICAgLy8gfVxuXG4gICAgLy8gcHJpdmF0ZSBhdHRhY2hEb21haW5Ub0FwaShzY29wZTogQ29uc3RydWN0LCBhcGk6IElSZXN0QXBpLCBkb21haW46IElEb21haW5OYW1lLCBjb25maWc6IE1pY3Jvc2VydmljZVByb3BzKSB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgQmFzZVBhdGhNYXBwaW5nKHNjb3BlLCBgJHtjb25maWcuQVBJLk5hbWV9LWJhc2VQYXRoTWFwcGluZ2AsIHtcbiAgICAvLyAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbixcbiAgICAvLyAgICAgICAgIHJlc3RBcGk6IGFwaSxcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgcHJpdmF0ZSBnZXRab25lKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHNjb3BlLCBgJHtjb25maWcuRE5TPy5ab25lTmFtZX0tem9uZWAsIHtcbiAgICAgICAgICAgIHpvbmVOYW1lOiBjb25maWcuRE5TPy5ab25lTmFtZSEsXG4gICAgICAgICAgICBob3N0ZWRab25lSWQ6IGNvbmZpZy5ETlM/LlpvbmVJZCFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDZXJ0aWZpY2F0ZShzY29wZTogQ29uc3RydWN0LCB6b25lOiBJSG9zdGVkWm9uZSwgY29uZmlnOiBNaWNyb3NlcnZpY2VQcm9wcykge1xuICAgICAgICBjb25zdCBjZXJ0ID0gbmV3IENyZWF0ZUNlcnRpZmljYXRlKHNjb3BlLCBjb25maWcsIHpvbmUpO1xuICAgICAgICByZXR1cm4gY2VydDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFSZWNvcmQoc2NvcGU6IENvbnN0cnVjdCwgem9uZTogSUhvc3RlZFpvbmUsIGFwaTogUmVzdEFwaSkge1xuICAgICAgICBjb25zdCBhUmVjb3JkID0gbmV3IEFSZWNvcmQoc2NvcGUsIFwiQXBpUmVjb3JkXCIsIHtcbiAgICAgICAgICAgIHpvbmUsXG4gICAgICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IEFwaUdhdGV3YXkoYXBpKSksXG4gICAgICAgICAgICByZWNvcmROYW1lOiB0aGlzLmNvbmZpZy5BUEkuRG9tYWluUHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFSZWNvcmQuYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gICAgICAgIHJldHVybiBhUmVjb3JkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgY29uc3QgYXBpID0gdGhpcy5jcmVhdGVBcGkoc2NvcGUpO1xuICAgICAgICAvLyBUT0RPOiAgT05MWSBJRiBDVVNUT00gTUFQUElORyBJUyBSRVFVSVJFRFxuICAgICAgICAvLyBjb25zdCBkb21haW4gPSB0aGlzLmNyZWF0ZUN1c3RvbURvbWFpbihzY29wZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIC8vIGNvbnN0IG1hcHBpbmcgPSB0aGlzLmF0dGFjaERvbWFpblRvQXBpKHNjb3BlLCBhcGksIGRvbWFpbiwgdGhpcy5jb25maWcpO1xuXG5cblxuICAgICAgICByZXR1cm4gW2FwaV07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcbiAgICAgICAgY3JlYXRlZEFzc2V0cy5mb3JFYWNoKChhcGksIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgYXBpJHtpZHh9YCwge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpLnVybFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxufSJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZUFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEQ7QUFDNUQsK0RBQXVMO0FBQ3ZMLHlEQUF5RjtBQUN6Rix5RUFBK0U7QUFLL0UsdURBQW9EO0FBQ3BELHdFQUFxRTtBQUNyRSxpREFBMkM7QUFFM0MsMkRBQThEO0FBRTlELE1BQWEsR0FBSSxTQUFRLDJCQUFzQjtJQVNjO0lBUGpELFdBQVcsQ0FBYztJQUdqQyxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLE1BQWlCLEVBQVUsTUFBbUIsTUFBTTtRQUM5RSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRGdDLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBRzlFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFnQjtRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSx3QkFBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsWUFBWSxJQUFBLCtCQUFpQixFQUFDLElBQUksQ0FBQyxH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QU8sQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBZ0IsRUFBRSxJQUFpQixFQUFFLEdBQVk7UUFDbkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBTyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDNUMsSUFBSTtZQUNKLE1BQU0sRUFBRSwwQkFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGdDQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVk7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGtCQUFrQixDQUFDLDJCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQjtRQUVyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLDRDQUE0QztRQUM1Qyw4REFBOEQ7UUFFOUQsMkVBQTJFO1FBSTNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRVMsWUFBWSxDQUFJLEtBQWdCLEVBQUUsYUFBa0I7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUUvQixJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUU7Z0JBQzlCLGFBQWE7Z0JBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUVKO0FBektELGtCQXlLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgUmVtb3ZhbFBvbGljeSwgVGFnIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBCYXNlUGF0aE1hcHBpbmcsIENvcnMsIENvcnNPcHRpb25zLCBEb21haW5OYW1lLCBFbmRwb2ludFR5cGUsIElEb21haW5OYW1lLCBJUmVzdEFwaSwgTWV0aG9kT3B0aW9ucywgUmVzdEFwaSwgUmVzdEFwaVByb3BzLCBTZWN1cml0eVBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgQVJlY29yZCwgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQXBpR2F0ZXdheSwgQXBpR2F0ZXdheURvbWFpbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcbmltcG9ydCB7IE1pY3Jvc2VydmljZVByb3BzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcblxuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5pbXBvcnQgeyBDcmVhdGVDZXJ0aWZpY2F0ZSB9IGZyb20gXCIuLi9jZXJ0aWZpY2F0ZS9jcmVhdGVDZXJ0aWZpY2F0ZVwiO1xuaW1wb3J0IHsgVHNnQXBpS2V5IH0gZnJvbSBcIi4vY3JlYXRlQXBpS2V5XCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi8uLi9jb25maWcvRW52aXJvbm1lbnRzXCI7XG5pbXBvcnQgeyBlbnZpcm9ubWVudFN1ZmZpeCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3V0aWwtaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBBcGkgZXh0ZW5kcyBCYXNlUmVzb3VyY2U8SVJlc3RBcGk+IHtcblxuICAgIHByaXZhdGUgY29yc09wdGlvbnM6IENvcnNPcHRpb25zO1xuXG5cbiAgICBnZXQgQVBJcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlZFJlc291cmNlcztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBjb25maWc6IEFwcENvbmZpZywgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50ID0gXCJwcm9kXCIpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGNvbmZpZyk7XG5cbiAgICAgICAgdGhpcy5jb3JzT3B0aW9ucyA9IHRoaXMuY3JlYXRlRGVmYXVsdENvcnNPcHRpb25zKCk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVkUmVzb3VyY2VzID0gdGhpcy5jcmVhdGVSZXNvdXJjZShzY29wZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBcGkoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuRE5TKSB7XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcjIyMgRE5TIGlzIHRydWUgIyMjJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHpvbmUgPSB0aGlzLmdldFpvbmUodGhpcy5zY29wZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgICAgICBjb25zdCBhcGkgPSBuZXcgUmVzdEFwaSh0aGlzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LXJlc3QtYXBpJHtlbnZpcm9ubWVudFN1ZmZpeCh0aGlzLmVudil9YCwgdGhpcy5jcmVhdGVBcGlQcm9wcyh0aGlzLmVudiwgem9uZSkpO1xuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFSZWNvcmQoc2NvcGUsIHpvbmUsIGFwaSk7XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQXBpS2V5KHRoaXMuY29uZmlnLCBhcGkpO1xuXG4gICAgICAgICAgICByZXR1cm4gYXBpO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IG5ldyBSZXN0QXBpKHRoaXMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tcmVzdC1hcGkke2Vudmlyb25tZW50U3VmZml4KHRoaXMuZW52KX1gLCB0aGlzLmNyZWF0ZUFwaVByb3BzKHRoaXMuZW52KSk7XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQXBpS2V5KHRoaXMuY29uZmlnLCBhcGkpO1xuXG4gICAgICAgICAgICByZXR1cm4gYXBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBcGlQcm9wcyhlbnY6IEVudmlyb25tZW50LCB6b25lPzogSUhvc3RlZFpvbmUsKTogUmVzdEFwaVByb3BzIHtcblxuICAgICAgICBpZiAodGhpcy5jb25maWcuRE5TKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IGNlcnQgPSB0aGlzLmNyZWF0ZUNlcnRpZmljYXRlKHRoaXMuc2NvcGUsIHpvbmUhLCB0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHByb3BzOiBSZXN0QXBpUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgcmVzdEFwaU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHt0aGlzLmNvbmZpZy5BUEkuTmFtZX1gLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNvbmZpZy5BUEkuRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZG9tYWluTmFtZToge1xuICAgICAgICAgICAgICAgICAgICBkb21haW5OYW1lOiBgJHt0aGlzLmNvbmZpZy5BUEkuRG9tYWluUHJlZml4fS4ke2Vudn0uJHt0aGlzLmNvbmZpZy5ETlMuWm9uZU5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6IGNlcnQuY2VydGlmaWNhdGUsXG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlLkVER0UsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiBTZWN1cml0eVBvbGljeS5UTFNfMV8yXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiAgQUREIENVU1RPTSBET01BSU4gSEVSRVxuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGRvbWFpbk5hbWU6IGRvbWFpbiwgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAgICAgLy8gZG9tYWluTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zOiB0aGlzLmNvcnNPcHRpb25zXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wczogUmVzdEFwaVByb3BzID0ge1xuICAgICAgICAgICAgICAgIHJlc3RBcGlOYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dGhpcy5jb25maWcuQVBJLk5hbWV9YCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb25maWcuQVBJLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRDb3JzUHJlZmxpZ2h0T3B0aW9uczogdGhpcy5jb3JzT3B0aW9uc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0Q29yc09wdGlvbnMoKSB7XG5cbiAgICAgICAgY29uc3QgY29yc09wdGlvbnM6IENvcnNPcHRpb25zID0ge1xuICAgICAgICAgICAgYWxsb3dIZWFkZXJzOiBbXG4gICAgICAgICAgICAgICAgJyonLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFsbG93TWV0aG9kczogQ29ycy5BTExfTUVUSE9EUyxcbiAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBhbGxvd09yaWdpbnM6IENvcnMuQUxMX09SSUdJTlMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNvcnNPcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVxdWlyZXNBcGlLZXkoY29uZmlnOiBBcHBDb25maWcpIHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgbGFtYmRhcyByZXF1aXJlIGFuIEFQSSBLZXlcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5SRVNPVVJDRVMuTEFNQkRBLnNvbWUoKGxhbWJkYSkgPT4gbGFtYmRhLmFwaUdhdGV3YXk/LnJlcXVpcmVBcGlLZXkgPT09IHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQXBpS2V5KGNvbmZpZzogQXBwQ29uZmlnLCBhcGk6IFJlc3RBcGkpIHtcblxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlc0FwaUtleSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwaUtleSA9IG5ldyBUc2dBcGlLZXkodGhpcy5zY29wZSwgdGhpcy5jb25maWcsIGFwaSlcbiAgICAgICAgICAgIHJldHVybiBhcGlLZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIHByaXZhdGUgY3JlYXRlQ3VzdG9tRG9tYWluKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAvLyAgICAgY29uc3QgZG9tYWluTmFtZSA9IERvbWFpbk5hbWUuZnJvbURvbWFpbk5hbWVBdHRyaWJ1dGVzKHNjb3BlLCBgJHtjb25maWcuQVBJLk5hbWV9LWN1c3RvbS1kb21haW5gLCB7XG4gICAgLy8gICAgICAgICBkb21haW5OYW1lOiBjb25maWcuRE5TPy5ab25lTmFtZSxcbiAgICAvLyAgICAgICAgIGRvbWFpbk5hbWVBbGlhc0hvc3RlZFpvbmVJZDogY29uZmlnLkROUy5ab25lSWQhLFxuICAgIC8vICAgICAgICAgZG9tYWluTmFtZUFsaWFzVGFyZ2V0OiBjb25maWcuQVBJLkRvbWFpblByZWZpeCEsXG4gICAgLy8gICAgIH0pO1xuXG4gICAgLy8gICAgIHJldHVybiBkb21haW5OYW1lXG4gICAgLy8gfVxuXG4gICAgLy8gcHJpdmF0ZSBhdHRhY2hEb21haW5Ub0FwaShzY29wZTogQ29uc3RydWN0LCBhcGk6IElSZXN0QXBpLCBkb21haW46IElEb21haW5OYW1lLCBjb25maWc6IE1pY3Jvc2VydmljZVByb3BzKSB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgQmFzZVBhdGhNYXBwaW5nKHNjb3BlLCBgJHtjb25maWcuQVBJLk5hbWV9LWJhc2VQYXRoTWFwcGluZ2AsIHtcbiAgICAvLyAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbixcbiAgICAvLyAgICAgICAgIHJlc3RBcGk6IGFwaSxcbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuXG4gICAgcHJpdmF0ZSBnZXRab25lKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHNjb3BlLCBgJHtjb25maWcuRE5TPy5ab25lTmFtZX0tem9uZWAsIHtcbiAgICAgICAgICAgIHpvbmVOYW1lOiBjb25maWcuRE5TPy5ab25lTmFtZSEsXG4gICAgICAgICAgICBob3N0ZWRab25lSWQ6IGNvbmZpZy5ETlM/LlpvbmVJZCFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDZXJ0aWZpY2F0ZShzY29wZTogQ29uc3RydWN0LCB6b25lOiBJSG9zdGVkWm9uZSwgY29uZmlnOiBNaWNyb3NlcnZpY2VQcm9wcykge1xuICAgICAgICBjb25zdCBjZXJ0ID0gbmV3IENyZWF0ZUNlcnRpZmljYXRlKHNjb3BlLCBjb25maWcsIHpvbmUsIHRoaXMuZW52KTtcblxuICAgICAgICBjZXJ0LmNlcnRpZmljYXRlLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICByZXR1cm4gY2VydDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFSZWNvcmQoc2NvcGU6IENvbnN0cnVjdCwgem9uZTogSUhvc3RlZFpvbmUsIGFwaTogUmVzdEFwaSkge1xuICAgICAgICBjb25zdCBhUmVjb3JkID0gbmV3IEFSZWNvcmQoc2NvcGUsIFwiQXBpUmVjb3JkXCIsIHtcbiAgICAgICAgICAgIHpvbmUsXG4gICAgICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IEFwaUdhdGV3YXkoYXBpKSksXG4gICAgICAgICAgICByZWNvcmROYW1lOiB0aGlzLmNvbmZpZy5BUEkuRG9tYWluUHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFSZWNvcmQuYXBwbHlSZW1vdmFsUG9saWN5KFJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gICAgICAgIHJldHVybiBhUmVjb3JkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgY29uc3QgYXBpID0gdGhpcy5jcmVhdGVBcGkoc2NvcGUpO1xuICAgICAgICAvLyBUT0RPOiAgT05MWSBJRiBDVVNUT00gTUFQUElORyBJUyBSRVFVSVJFRFxuICAgICAgICAvLyBjb25zdCBkb21haW4gPSB0aGlzLmNyZWF0ZUN1c3RvbURvbWFpbihzY29wZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIC8vIGNvbnN0IG1hcHBpbmcgPSB0aGlzLmF0dGFjaERvbWFpblRvQXBpKHNjb3BlLCBhcGksIGRvbWFpbiwgdGhpcy5jb25maWcpO1xuXG5cblxuICAgICAgICByZXR1cm4gW2FwaV07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcbiAgICAgICAgY3JlYXRlZEFzc2V0cy5mb3JFYWNoKChhcGksIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgYXBpJHtpZHh9YCwge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpLnVybFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxufSJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylvesterllc/aws-constructs",
3
- "version": "1.0.106",
3
+ "version": "1.0.108",
4
4
  "description": "AWS Constructs",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [
@@ -47,6 +47,10 @@ export class MicroService extends Construct {
47
47
  return this.lambdaRecords;
48
48
  }
49
49
 
50
+ public get RestApi() {
51
+ return this.api;
52
+ }
53
+
50
54
  constructor(scope: Construct, id: string, props: MicroserviceProps,
51
55
  env: Environment = "prod") {
52
56
  super(scope, id);
@@ -8,4 +8,8 @@ export const getUUID = () => {
8
8
 
9
9
  export const environmentSuffix = (env: Environment = "prod") => {
10
10
  return env === 'prod' ? '' : env === 'qa' ? '-qa' : '-dev';
11
+ }
12
+
13
+ export const environmentSuffixForDomain = (env: Environment = "prod") => {
14
+ return env === 'prod' ? '' : env === 'qa' ? 'qa' : 'dev';
11
15
  }
@@ -3,38 +3,54 @@ import { Certificate, CertificateValidation, DnsValidatedCertificate, ICertifica
3
3
  import { IHostedZone } from "aws-cdk-lib/aws-route53";
4
4
  import { Construct } from "constructs";
5
5
  import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
6
+ import { environmentSuffixForDomain } from "../../helpers/util-helper";
7
+ import { Environment } from "../../config/Environments";
6
8
 
7
9
 
8
10
  export class CreateCertificate {
9
11
 
10
- public certificate: ICertificate;
12
+ public certificate: ICertificate;
11
13
 
12
- constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone) {
14
+ constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: Environment = "prod") {
13
15
 
14
- this.certificate = this.generateCertificate(scope, props, hostedZone);
16
+ this.certificate = this.generateCertificate(scope, props, hostedZone);
15
17
 
16
- this.certificate.applyRemovalPolicy(RemovalPolicy.DESTROY);
17
-
18
- }
18
+ this.certificate = this.generateApiCertificate(scope, props, hostedZone, env);
19
19
 
20
- generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone) {
20
+ this.certificate.applyRemovalPolicy(RemovalPolicy.DESTROY);
21
21
 
22
- // const cert = new DnsValidatedCertificate(scope, `${props.DNS.ZoneNameWithoutPeriod}-spa-app-certificate`, {
23
- // domainName: `${props.API.DomainPrefix}.${props.DNS.ZoneName}`,
24
- // hostedZone,
25
- // region: props.GLOBALS.region || "us-east-1"
26
- // });
22
+ }
27
23
 
28
- const appType = "spa-app";
24
+ generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone) {
29
25
 
30
- const cert = new Certificate(scope, `${props.DNS?.ZoneNameWithoutPeriod}-${appType}-certificate`, {
31
- domainName: `${props.API.DomainPrefix}.${props.DNS?.ZoneName}`,
32
- // subjectAlternativeNames: [`${props.API.DomainPrefix}.${props.DNS?.ZoneName}`],
33
- validation: CertificateValidation.fromDnsMultiZone({
34
- [`${props.API.DomainPrefix}.${props.DNS?.ZoneName}`] : hostedZone ,
35
- }),
36
- });
26
+ // const cert = new DnsValidatedCertificate(scope, `${props.DNS.ZoneNameWithoutPeriod}-spa-app-certificate`, {
27
+ // domainName: `${props.API.DomainPrefix}.${props.DNS.ZoneName}`,
28
+ // hostedZone,
29
+ // region: props.GLOBALS.region || "us-east-1"
30
+ // });
37
31
 
38
- return cert;
39
- }
32
+ const appType = "spa-app";
33
+
34
+ const cert = new Certificate(scope, `${props.DNS?.ZoneNameWithoutPeriod}-${appType}-certificate`, {
35
+ domainName: `${props.API.DomainPrefix}.${props.DNS?.ZoneName}`,
36
+ // subjectAlternativeNames: [`${props.API.DomainPrefix}.${props.DNS?.ZoneName}`],
37
+ validation: CertificateValidation.fromDnsMultiZone({
38
+ [`${props.API.DomainPrefix}.${props.DNS?.ZoneName}`]: hostedZone,
39
+ }),
40
+ });
41
+
42
+ return cert;
43
+ }
44
+
45
+ generateApiCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: Environment) {
46
+
47
+ const cert = new Certificate(scope, `${props.API.DomainPrefix}-${environmentSuffixForDomain(env)}-certificate`, {
48
+ domainName: `${props.API.DomainPrefix}.${environmentSuffixForDomain(env)}.${props.DNS?.ZoneName}`,
49
+ validation: CertificateValidation.fromDnsMultiZone({
50
+ [`${props.API.DomainPrefix}.${environmentSuffixForDomain(env)}.${props.DNS?.ZoneName}`]: hostedZone
51
+ })
52
+ });
53
+
54
+ return cert;
55
+ }
40
56
  }
@@ -36,7 +36,7 @@ export class Api extends BaseResource<IRestApi> {
36
36
 
37
37
  const zone = this.getZone(this.scope, this.config);
38
38
 
39
- const api = new RestApi(this.scope, `${this.config.AppPrefix}-rest-api${environmentSuffix(this.env)}`, this.createApiProps(zone));
39
+ const api = new RestApi(this.scope, `${this.config.AppPrefix}-rest-api${environmentSuffix(this.env)}`, this.createApiProps(this.env, zone));
40
40
 
41
41
  this.createARecord(scope, zone, api);
42
42
 
@@ -46,7 +46,7 @@ export class Api extends BaseResource<IRestApi> {
46
46
 
47
47
  } else {
48
48
 
49
- const api = new RestApi(this.scope, `${this.config.AppPrefix}-rest-api${environmentSuffix(this.env)}`, this.createApiProps());
49
+ const api = new RestApi(this.scope, `${this.config.AppPrefix}-rest-api${environmentSuffix(this.env)}`, this.createApiProps(this.env));
50
50
 
51
51
  this.createApiKey(this.config, api);
52
52
 
@@ -54,7 +54,7 @@ export class Api extends BaseResource<IRestApi> {
54
54
  }
55
55
  }
56
56
 
57
- private createApiProps(zone?: IHostedZone): RestApiProps {
57
+ private createApiProps(env: Environment, zone?: IHostedZone,): RestApiProps {
58
58
 
59
59
  if (this.config.DNS) {
60
60
 
@@ -64,7 +64,7 @@ export class Api extends BaseResource<IRestApi> {
64
64
  restApiName: `${this.config.AppPrefix}-${this.config.API.Name}`,
65
65
  description: this.config.API.Description,
66
66
  domainName: {
67
- domainName: `${this.config.API.DomainPrefix}.${this.config.DNS.ZoneName}`,
67
+ domainName: `${this.config.API.DomainPrefix}.${env}.${this.config.DNS.ZoneName}`,
68
68
  certificate: cert.certificate,
69
69
  endpointType: EndpointType.EDGE,
70
70
  securityPolicy: SecurityPolicy.TLS_1_2
@@ -141,7 +141,9 @@ export class Api extends BaseResource<IRestApi> {
141
141
  }
142
142
 
143
143
  private createCertificate(scope: Construct, zone: IHostedZone, config: MicroserviceProps) {
144
- const cert = new CreateCertificate(scope, config, zone);
144
+ const cert = new CreateCertificate(scope, config, zone, this.env);
145
+
146
+ cert.certificate.applyRemovalPolicy(RemovalPolicy.DESTROY);
145
147
  return cert;
146
148
  }
147
149