truemark-cdk-lib 1.2.4-alpha.6 → 1.2.4-alpha.63

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.
Files changed (133) hide show
  1. package/aws-apigatewayv2/lib/index.d.ts +2 -0
  2. package/aws-apigatewayv2/lib/index.js +3 -1
  3. package/aws-apigatewayv2/lib/standard-domain-name.d.ts +17 -14
  4. package/aws-apigatewayv2/lib/standard-domain-name.js +24 -25
  5. package/aws-apigatewayv2/lib/standard-http-api.d.ts +59 -0
  6. package/aws-apigatewayv2/lib/standard-http-api.js +49 -0
  7. package/aws-apigatewayv2/lib/standard-web-socket-api.d.ts +60 -0
  8. package/aws-apigatewayv2/lib/standard-web-socket-api.js +53 -0
  9. package/aws-cdk/lib/extended-app.d.ts +29 -0
  10. package/aws-cdk/lib/extended-app.js +37 -0
  11. package/aws-cdk/lib/extended-construct.d.ts +14 -0
  12. package/aws-cdk/lib/extended-construct.js +14 -0
  13. package/aws-cdk/lib/extended-stack.d.ts +5 -7
  14. package/aws-cdk/lib/extended-stack.js +5 -11
  15. package/{test/aws-codepipeline → aws-cdk/lib}/extended-stack.test.js +4 -4
  16. package/aws-cdk/lib/extended-stage.d.ts +11 -0
  17. package/aws-cdk/lib/extended-stage.js +14 -0
  18. package/aws-cdk/lib/index.d.ts +3 -4
  19. package/aws-cdk/lib/index.js +4 -5
  20. package/aws-cdk/lib/single-env-app.d.ts +4 -4
  21. package/aws-cdk/lib/single-env-app.js +13 -5
  22. package/aws-cdk/lib/standard-tags.d.ts +39 -40
  23. package/aws-cdk/lib/standard-tags.js +101 -15
  24. package/aws-cdk/lib/standard-tags.test.js +114 -0
  25. package/aws-centergauge/lib/alerts-topic.d.ts +3 -2
  26. package/aws-centergauge/lib/alerts-topic.js +4 -11
  27. package/aws-cloudfront/lib/behavior-builder.d.ts +1 -1
  28. package/aws-cloudfront/lib/behavior-builder.js +11 -9
  29. package/aws-cloudfront/lib/website-redirect-function.d.ts +14 -0
  30. package/aws-cloudfront/lib/website-redirect-function.js +30 -5
  31. package/{test/aws-cloudwatch → aws-cloudwatch/lib}/estimated-charges-alarm.test.js +4 -4
  32. package/aws-codepipeline/lib/cdk-pipeline.d.ts +25 -0
  33. package/aws-codepipeline/lib/cdk-pipeline.js +66 -13
  34. package/{test/aws-codepipeline → aws-codepipeline/lib}/cdk-pipeline.test.js +4 -4
  35. package/{test/aws-dynamodb → aws-dynamodb/lib}/batch-write-item.test.js +3 -3
  36. package/aws-dynamodb/lib/extended-table.d.ts +2 -1
  37. package/aws-dynamodb/lib/extended-table.js +3 -1
  38. package/aws-dynamodb/lib/extended-table.test.js +32 -0
  39. package/{test/aws-dynamodb → aws-dynamodb/lib}/put-item.test.js +3 -3
  40. package/aws-dynamodb/lib/standard-table.d.ts +2 -3
  41. package/aws-dynamodb/lib/standard-table.js +4 -10
  42. package/aws-ecs/lib/standard-application-fargate-service.d.ts +5 -1
  43. package/aws-ecs/lib/standard-application-fargate-service.js +6 -6
  44. package/aws-ecs/lib/standard-fargate-cluster.d.ts +3 -2
  45. package/aws-ecs/lib/standard-fargate-cluster.js +4 -11
  46. package/aws-ecs/lib/standard-fargate-service.d.ts +9 -2
  47. package/aws-ecs/lib/standard-fargate-service.js +5 -11
  48. package/aws-lambda/lib/extended-function.test.js +20 -0
  49. package/{test/aws-lambda → aws-lambda/lib}/extended-go-function.test.js +4 -4
  50. package/aws-lambda/lib/extended-nodejs-function.d.ts +1 -1
  51. package/aws-lambda/lib/extended-nodejs-function.js +1 -1
  52. package/aws-lambda/lib/extended-nodejs-function.test.js +20 -0
  53. package/aws-lambda/lib/extended-python-function.test.js +17 -0
  54. package/{test/aws-lambda → aws-lambda/lib}/standard-python-function.test.js +2 -2
  55. package/{test/aws-monitoring → aws-monitoring/lib}/alarm-facade.test.js +9 -9
  56. package/aws-patterns-wordpress/lib/init.sh +4 -4
  57. package/aws-patterns-wordpress/lib/word-press-instance.d.ts +43 -5
  58. package/aws-patterns-wordpress/lib/word-press-instance.js +132 -89
  59. package/aws-route53/lib/domain-name.d.ts +7 -14
  60. package/aws-route53/lib/domain-name.js +27 -28
  61. package/{test/aws-route53 → aws-route53/lib}/domain-name.test.js +8 -8
  62. package/aws-route53/lib/extended-record-target.d.ts +14 -0
  63. package/aws-route53/lib/extended-record-target.js +35 -0
  64. package/aws-route53/lib/extended-record-target.test.js +52 -0
  65. package/aws-route53/lib/index.d.ts +3 -3
  66. package/aws-route53/lib/index.js +2 -2
  67. package/aws-route53/lib/latency-a-record.d.ts +4 -0
  68. package/aws-route53/lib/latency-a-record.js +2 -1
  69. package/aws-route53/lib/weighted-a-record.d.ts +4 -0
  70. package/aws-route53/lib/weighted-a-record.js +2 -1
  71. package/aws-s3/lib/cloud-front-bucket.d.ts +27 -4
  72. package/aws-s3/lib/cloud-front-bucket.js +32 -6
  73. package/aws-s3/lib/index.d.ts +1 -0
  74. package/aws-s3/lib/index.js +2 -1
  75. package/aws-s3/lib/replication-role.d.ts +32 -0
  76. package/aws-s3/lib/replication-role.js +85 -0
  77. package/aws-s3/lib/website-bucket.d.ts +2 -2
  78. package/aws-s3/lib/website-bucket.js +5 -7
  79. package/aws-sqs/lib/standard-queue.d.ts +3 -2
  80. package/aws-sqs/lib/standard-queue.js +4 -11
  81. package/aws-sqs/lib/standard-queue.test.js +16 -0
  82. package/aws-ssm/lib/parameter-reader.js +2 -2
  83. package/{test/aws-ssm → aws-ssm/lib}/parameter-store.test.js +4 -4
  84. package/aws-vpc/lib/network-parameters.d.ts +3 -2
  85. package/aws-vpc/lib/network-parameters.js +4 -11
  86. package/aws-website/lib/website.test.d.ts +1 -0
  87. package/aws-website/lib/website.test.js +60 -0
  88. package/helpers/lib/index.d.ts +0 -1
  89. package/helpers/lib/index.js +1 -2
  90. package/helpers/lib/string-helper.test.d.ts +1 -0
  91. package/{test/helpers → helpers/lib}/string-helper.test.js +2 -2
  92. package/jest.config.js +1 -1
  93. package/package.json +11 -4
  94. package/{test/test-helper.d.ts → test-helper.d.ts} +8 -3
  95. package/test-helper.js +44 -0
  96. package/truemark.d.ts +2 -0
  97. package/truemark.js +9 -0
  98. package/aws-cdk/lib/standard-app.d.ts +0 -19
  99. package/aws-cdk/lib/standard-app.js +0 -19
  100. package/aws-cdk/lib/standard-environment.d.ts +0 -10
  101. package/aws-cdk/lib/standard-environment.js +0 -3
  102. package/aws-cdk/lib/standard-stack.d.ts +0 -19
  103. package/aws-cdk/lib/standard-stack.js +0 -36
  104. package/aws-cdk/lib/standard-stage.d.ts +0 -19
  105. package/aws-cdk/lib/standard-stage.js +0 -24
  106. package/aws-route53/lib/weighted-latency-a-record.d.ts +0 -30
  107. package/aws-route53/lib/weighted-latency-a-record.js +0 -34
  108. package/helpers/lib/constants.d.ts +0 -3
  109. package/helpers/lib/constants.js +0 -7
  110. package/test/aws-dynamodb/extended-table.test.js +0 -32
  111. package/test/aws-lambda/extended-function.test.js +0 -20
  112. package/test/aws-lambda/extended-nodejs-function.test.js +0 -20
  113. package/test/aws-lambda/extended-python-function.test.js +0 -17
  114. package/test/aws-sqs/standard-queue.test.js +0 -16
  115. package/test/aws-website/website.test.js +0 -60
  116. package/test/test-helper.js +0 -34
  117. /package/{test/aws-codepipeline → aws-cdk/lib}/extended-stack.test.d.ts +0 -0
  118. /package/{test/aws-cloudwatch/estimated-charges-alarm.test.d.ts → aws-cdk/lib/standard-tags.test.d.ts} +0 -0
  119. /package/{test/aws-codepipeline/cdk-pipeline.test.d.ts → aws-cloudwatch/lib/estimated-charges-alarm.test.d.ts} +0 -0
  120. /package/{test/aws-dynamodb/batch-write-item.test.d.ts → aws-codepipeline/lib/cdk-pipeline.test.d.ts} +0 -0
  121. /package/{test/aws-dynamodb/extended-table.test.d.ts → aws-dynamodb/lib/batch-write-item.test.d.ts} +0 -0
  122. /package/{test/aws-dynamodb/put-item.test.d.ts → aws-dynamodb/lib/extended-table.test.d.ts} +0 -0
  123. /package/{test/aws-lambda/extended-function.test.d.ts → aws-dynamodb/lib/put-item.test.d.ts} +0 -0
  124. /package/{test/aws-lambda/extended-go-function.test.d.ts → aws-lambda/lib/extended-function.test.d.ts} +0 -0
  125. /package/{test/aws-lambda/extended-nodejs-function.test.d.ts → aws-lambda/lib/extended-go-function.test.d.ts} +0 -0
  126. /package/{test/aws-lambda/extended-python-function.test.d.ts → aws-lambda/lib/extended-nodejs-function.test.d.ts} +0 -0
  127. /package/{test/aws-lambda/standard-python-function.test.d.ts → aws-lambda/lib/extended-python-function.test.d.ts} +0 -0
  128. /package/{test/aws-monitoring/alarm-facade.test.d.ts → aws-lambda/lib/standard-python-function.test.d.ts} +0 -0
  129. /package/{test/aws-route53/domain-name.test.d.ts → aws-monitoring/lib/alarm-facade.test.d.ts} +0 -0
  130. /package/{test/aws-sqs/standard-queue.test.d.ts → aws-route53/lib/domain-name.test.d.ts} +0 -0
  131. /package/{test/aws-ssm/parameter-store.test.d.ts → aws-route53/lib/extended-record-target.test.d.ts} +0 -0
  132. /package/{test/aws-website/website.test.d.ts → aws-sqs/lib/standard-queue.test.d.ts} +0 -0
  133. /package/{test/helpers/string-helper.test.d.ts → aws-ssm/lib/parameter-store.test.d.ts} +0 -0
@@ -1 +1,3 @@
1
1
  export * from "./standard-domain-name";
2
+ export * from "./standard-http-api";
3
+ export * from "./standard-web-socket-api";
@@ -11,4 +11,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./standard-domain-name"), exports);
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5REFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zdGFuZGFyZC1kb21haW4tbmFtZVwiXG4iXX0=
14
+ __exportStar(require("./standard-http-api"), exports);
15
+ __exportStar(require("./standard-web-socket-api"), exports);
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5REFBdUM7QUFDdkMsc0RBQW9DO0FBQ3BDLDREQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3N0YW5kYXJkLWRvbWFpbi1uYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFuZGFyZC1odHRwLWFwaVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RhbmRhcmQtd2ViLXNvY2tldC1hcGlcIjtcbiJdfQ==
@@ -3,18 +3,19 @@ import * as tmroute53 from "../../aws-route53";
3
3
  import { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
4
4
  import { DomainName, SecurityPolicy } from "@aws-cdk/aws-apigatewayv2-alpha";
5
5
  import { ARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
6
- import { WeightedLatencyARecord } from "../../aws-route53";
7
- export interface StandardDomainNameProps extends tmroute53.DomainNameProps {
6
+ import { ARecordOptions } from "../../aws-route53";
7
+ import { ExtendedConstruct, ExtendedConstructProps } from "../../aws-cdk";
8
+ export interface StandardDomainNameProps extends tmroute53.DomainNameProps, ExtendedConstructProps {
8
9
  /**
9
10
  * The optional ACM certificate for this domain name.
10
11
  *
11
- * @default one is generated
12
+ * @default - one is generated
12
13
  */
13
14
  readonly certificate?: ICertificate;
14
15
  /**
15
16
  * The Transport Layer Security (TLS) version + cipher suite for this domain name.
16
17
  *
17
- * @default SecurityPolicy.TLS_1_2
18
+ * @default - SecurityPolicy.TLS_1_2
18
19
  */
19
20
  readonly securityPolicy?: SecurityPolicy;
20
21
  /**
@@ -28,32 +29,34 @@ export interface StandardDomainNameProps extends tmroute53.DomainNameProps {
28
29
  /**
29
30
  * Standard construct used to create an API Gateway V2 Domain Name.
30
31
  */
31
- export declare class StandardDomainName extends Construct {
32
+ export declare class StandardDomainName extends ExtendedConstruct {
32
33
  readonly domainName: tmroute53.DomainName;
33
34
  readonly certificate: ICertificate;
34
- readonly recordTarget: RecordTarget;
35
35
  readonly gatewayDomainName: DomainName;
36
36
  constructor(scope: Construct, id: string, props: StandardDomainNameProps);
37
+ toRecordTarget(evaluateTargetHealth?: boolean): RecordTarget;
37
38
  /**
38
39
  * Creates a route53 ARecord pointing to this domain name.
40
+ *
41
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
42
+ * @param options additional options for creating the record
39
43
  */
40
- createARecord(): ARecord;
44
+ createARecord(evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
41
45
  /**
42
46
  * Creates a route53 weighted record pointing to this domain name.
43
47
  *
44
48
  * @param weight the initial weight; defaults to 0
49
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
50
+ * @param options additional options for creating the record
45
51
  */
46
- createWeightedARecord(weight?: number): ARecord;
52
+ createWeightedARecord(weight: number, evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
47
53
  /**
48
54
  * Creates a route53 latency record pointing to this domain name.
49
- */
50
- createLatencyARecord(): ARecord;
51
- /**
52
- * Creates a route53 weighted latency record pointing to this domain name.
53
55
  *
54
- * @param weight the initial weight; defaults to 0
56
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
57
+ * @param options additional options for creating the record
55
58
  */
56
- createWeightedLatencyARecord(weight?: number): WeightedLatencyARecord;
59
+ createLatencyARecord(evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
57
60
  /**
58
61
  * Returns the FQDN of this domain name.
59
62
  */
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StandardDomainName = void 0;
4
- const constructs_1 = require("constructs");
5
4
  const tmroute53 = require("../../aws-route53");
6
5
  const targets = require("aws-cdk-lib/aws-route53-targets");
7
6
  const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
8
7
  const aws_route53_1 = require("aws-cdk-lib/aws-route53");
9
- const helpers_1 = require("../../helpers");
8
+ const aws_route53_2 = require("../../aws-route53");
10
9
  const aws_cdk_1 = require("../../aws-cdk");
10
+ const truemark_1 = require("../../truemark");
11
11
  /**
12
12
  * Standard construct used to create an API Gateway V2 Domain Name.
13
13
  */
14
- class StandardDomainName extends constructs_1.Construct {
14
+ class StandardDomainName extends aws_cdk_1.ExtendedConstruct {
15
15
  constructor(scope, id, props) {
16
16
  var _a;
17
- super(scope, id);
17
+ super(scope, id, { standardTags: aws_cdk_1.StandardTags.merge(props, truemark_1.LibStandardTags) });
18
18
  this.domainName = new tmroute53.DomainName(props);
19
19
  this.certificate = (_a = props.certificate) !== null && _a !== void 0 ? _a : this.domainName.createCertificate(scope);
20
20
  this.gatewayDomainName = new aws_apigatewayv2_alpha_1.DomainName(this, "Default", {
@@ -22,41 +22,40 @@ class StandardDomainName extends constructs_1.Construct {
22
22
  certificate: this.certificate,
23
23
  securityPolicy: props.securityPolicy
24
24
  });
25
- this.recordTarget = aws_route53_1.RecordTarget.fromAlias(new targets.ApiGatewayv2DomainProperties(this.gatewayDomainName.regionalDomainName, this.gatewayDomainName.regionalHostedZoneId));
26
- new aws_cdk_1.StandardTags(this, {
27
- suppress: props === null || props === void 0 ? void 0 : props.suppressTagging
28
- }).addAutomationComponentTags({
29
- url: helpers_1.CDK_NPMJS_URL,
30
- vendor: helpers_1.CDK_VENDOR
31
- });
25
+ }
26
+ toRecordTarget(evaluateTargetHealth) {
27
+ const domainProperties = new targets.ApiGatewayv2DomainProperties(this.gatewayDomainName.regionalDomainName, this.gatewayDomainName.regionalHostedZoneId);
28
+ return evaluateTargetHealth
29
+ ? aws_route53_2.ExtendedRecordTarget.fromAlias(domainProperties, evaluateTargetHealth)
30
+ : aws_route53_1.RecordTarget.fromAlias(domainProperties);
32
31
  }
33
32
  /**
34
33
  * Creates a route53 ARecord pointing to this domain name.
34
+ *
35
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
36
+ * @param options additional options for creating the record
35
37
  */
36
- createARecord() {
37
- return this.domainName.createARecord(this, this.recordTarget);
38
+ createARecord(evaluateTargetHealth, options) {
39
+ return this.domainName.createARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), options);
38
40
  }
39
41
  /**
40
42
  * Creates a route53 weighted record pointing to this domain name.
41
43
  *
42
44
  * @param weight the initial weight; defaults to 0
45
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
46
+ * @param options additional options for creating the record
43
47
  */
44
- createWeightedARecord(weight) {
45
- return this.domainName.createWeightedARecord(this, this.recordTarget, weight);
48
+ createWeightedARecord(weight, evaluateTargetHealth, options) {
49
+ return this.domainName.createWeightedARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), weight, options);
46
50
  }
47
51
  /**
48
52
  * Creates a route53 latency record pointing to this domain name.
49
- */
50
- createLatencyARecord() {
51
- return this.domainName.createLatencyARecord(this, this.recordTarget);
52
- }
53
- /**
54
- * Creates a route53 weighted latency record pointing to this domain name.
55
53
  *
56
- * @param weight the initial weight; defaults to 0
54
+ * @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
55
+ * @param options additional options for creating the record
57
56
  */
58
- createWeightedLatencyARecord(weight) {
59
- return this.domainName.createWeightedLatencyARecord(this, this.recordTarget, weight);
57
+ createLatencyARecord(evaluateTargetHealth, options) {
58
+ return this.domainName.createLatencyARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), options);
60
59
  }
61
60
  /**
62
61
  * Returns the FQDN of this domain name.
@@ -66,4 +65,4 @@ class StandardDomainName extends constructs_1.Construct {
66
65
  }
67
66
  }
68
67
  exports.StandardDomainName = StandardDomainName;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC1kb21haW4tbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMsK0NBQStDO0FBQy9DLDJEQUEyRDtBQUUzRCw0RUFBMkU7QUFDM0UseURBQThEO0FBRTlELDJDQUF3RDtBQUN4RCwyQ0FBMkM7QUEyQjNDOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQU8vQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLFNBQUcsS0FBSyxDQUFDLFdBQVcsbUNBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxtQ0FBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdkQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRywwQkFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyw0QkFBNEIsQ0FDakYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFFM0YsSUFBSSxzQkFBWSxDQUFDLElBQUksRUFBRTtZQUNyQixRQUFRLEVBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGVBQWU7U0FDakMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1lBQzVCLEdBQUcsRUFBRSx1QkFBYTtZQUNsQixNQUFNLEVBQUUsb0JBQVU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLE1BQWU7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDRCQUE0QixDQUFDLE1BQWU7UUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBakVELGdEQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgdG1yb3V0ZTUzIGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHtJQ2VydGlmaWNhdGV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge0RvbWFpbk5hbWUsIFNlY3VyaXR5UG9saWN5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYVwiO1xuaW1wb3J0IHtBUmVjb3JkLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtXZWlnaHRlZExhdGVuY3lBUmVjb3JkfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7Q0RLX05QTUpTX1VSTCwgQ0RLX1ZFTkRPUn0gZnJvbSBcIi4uLy4uL2hlbHBlcnNcIjtcbmltcG9ydCB7U3RhbmRhcmRUYWdzfSBmcm9tIFwiLi4vLi4vYXdzLWNka1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRG9tYWluTmFtZVByb3BzIGV4dGVuZHMgdG1yb3V0ZTUzLkRvbWFpbk5hbWVQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBBQ00gY2VydGlmaWNhdGUgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG9uZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIHZlcnNpb24gKyBjaXBoZXIgc3VpdGUgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFNlY3VyaXR5UG9saWN5LlRMU18xXzJcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5UG9saWN5PzogU2VjdXJpdHlQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NUYWdnaW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBjb25zdHJ1Y3QgdXNlZCB0byBjcmVhdGUgYW4gQVBJIEdhdGV3YXkgVjIgRG9tYWluIE5hbWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZERvbWFpbk5hbWUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHRtcm91dGU1My5Eb21haW5OYW1lO1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlO1xuICByZWFkb25seSByZWNvcmRUYXJnZXQ6IFJlY29yZFRhcmdldDtcbiAgcmVhZG9ubHkgZ2F0ZXdheURvbWFpbk5hbWU6IERvbWFpbk5hbWU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YW5kYXJkRG9tYWluTmFtZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmRvbWFpbk5hbWUgPSBuZXcgdG1yb3V0ZTUzLkRvbWFpbk5hbWUocHJvcHMpO1xuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBwcm9wcy5jZXJ0aWZpY2F0ZSA/PyB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlQ2VydGlmaWNhdGUoc2NvcGUpO1xuICAgIHRoaXMuZ2F0ZXdheURvbWFpbk5hbWUgPSBuZXcgRG9tYWluTmFtZSh0aGlzLCBcIkRlZmF1bHRcIiwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy5kb21haW5OYW1lLnRvU3RyaW5nKCksXG4gICAgICBjZXJ0aWZpY2F0ZTogdGhpcy5jZXJ0aWZpY2F0ZSxcbiAgICAgIHNlY3VyaXR5UG9saWN5OiBwcm9wcy5zZWN1cml0eVBvbGljeVxuICAgIH0pO1xuICAgIHRoaXMucmVjb3JkVGFyZ2V0ID0gUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgdGFyZ2V0cy5BcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzKFxuICAgICAgdGhpcy5nYXRld2F5RG9tYWluTmFtZS5yZWdpb25hbERvbWFpbk5hbWUsIHRoaXMuZ2F0ZXdheURvbWFpbk5hbWUucmVnaW9uYWxIb3N0ZWRab25lSWQpKTtcblxuICAgIG5ldyBTdGFuZGFyZFRhZ3ModGhpcywge1xuICAgICAgc3VwcHJlc3M6IHByb3BzPy5zdXBwcmVzc1RhZ2dpbmdcbiAgICB9KS5hZGRBdXRvbWF0aW9uQ29tcG9uZW50VGFncyh7XG4gICAgICB1cmw6IENES19OUE1KU19VUkwsXG4gICAgICB2ZW5kb3I6IENES19WRU5ET1JcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm91dGU1MyBBUmVjb3JkIHBvaW50aW5nIHRvIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICBjcmVhdGVBUmVjb3JkKCk6IEFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlQVJlY29yZCh0aGlzLCB0aGlzLnJlY29yZFRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlNTMgd2VpZ2h0ZWQgcmVjb3JkIHBvaW50aW5nIHRvIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWlnaHQgdGhlIGluaXRpYWwgd2VpZ2h0OyBkZWZhdWx0cyB0byAwXG4gICAqL1xuICBjcmVhdGVXZWlnaHRlZEFSZWNvcmQod2VpZ2h0PzogbnVtYmVyKTogQVJlY29yZCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tYWluTmFtZS5jcmVhdGVXZWlnaHRlZEFSZWNvcmQodGhpcywgdGhpcy5yZWNvcmRUYXJnZXQsIHdlaWdodCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlNTMgbGF0ZW5jeSByZWNvcmQgcG9pbnRpbmcgdG8gdGhpcyBkb21haW4gbmFtZS5cbiAgICovXG4gIGNyZWF0ZUxhdGVuY3lBUmVjb3JkKCk6IEFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlTGF0ZW5jeUFSZWNvcmQodGhpcywgdGhpcy5yZWNvcmRUYXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb3V0ZTUzIHdlaWdodGVkIGxhdGVuY3kgcmVjb3JkIHBvaW50aW5nIHRvIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWlnaHQgdGhlIGluaXRpYWwgd2VpZ2h0OyBkZWZhdWx0cyB0byAwXG4gICAqL1xuICBjcmVhdGVXZWlnaHRlZExhdGVuY3lBUmVjb3JkKHdlaWdodD86IG51bWJlcik6IFdlaWdodGVkTGF0ZW5jeUFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlV2VpZ2h0ZWRMYXRlbmN5QVJlY29yZCh0aGlzLCB0aGlzLnJlY29yZFRhcmdldCwgd2VpZ2h0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBGUUROIG9mIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC1kb21haW4tbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQ0FBK0M7QUFDL0MsMkRBQTJEO0FBRTNELDRFQUEyRTtBQUMzRSx5REFBOEQ7QUFDOUQsbURBQXVFO0FBQ3ZFLDJDQUFzRjtBQUN0Riw2Q0FBK0M7QUEyQi9DOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSwyQkFBaUI7SUFNdkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4Qjs7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBQyxZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLDBCQUFlLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsU0FBRyxLQUFLLENBQUMsV0FBVyxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLG1DQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN2RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE4QjtRQUMzQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLDRCQUE0QixDQUMvRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDMUYsT0FBTyxvQkFBb0I7WUFDekIsQ0FBQyxDQUFDLGtDQUFvQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQztZQUN4RSxDQUFDLENBQUMsMEJBQVksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsb0JBQThCLEVBQUUsT0FBd0I7UUFDcEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsYUFBcEIsb0JBQW9CLGNBQXBCLG9CQUFvQixHQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsb0JBQThCLEVBQUUsT0FBd0I7UUFDNUYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixhQUFwQixvQkFBb0IsY0FBcEIsb0JBQW9CLEdBQUksSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFDLG9CQUE4QixFQUFFLE9BQXdCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsYUFBcEIsb0JBQW9CLGNBQXBCLG9CQUFvQixHQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBOURELGdEQThEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgdG1yb3V0ZTUzIGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHtJQ2VydGlmaWNhdGV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge0RvbWFpbk5hbWUsIFNlY3VyaXR5UG9saWN5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYVwiO1xuaW1wb3J0IHtBUmVjb3JkLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtBUmVjb3JkT3B0aW9ucywgRXh0ZW5kZWRSZWNvcmRUYXJnZXR9IGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcywgU3RhbmRhcmRUYWdzfSBmcm9tIFwiLi4vLi4vYXdzLWNka1wiO1xuaW1wb3J0IHtMaWJTdGFuZGFyZFRhZ3N9IGZyb20gXCIuLi8uLi90cnVlbWFya1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRG9tYWluTmFtZVByb3BzIGV4dGVuZHMgdG1yb3V0ZTUzLkRvbWFpbk5hbWVQcm9wcywgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBBQ00gY2VydGlmaWNhdGUgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gb25lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUykgdmVyc2lvbiArIGNpcGhlciBzdWl0ZSBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTZWN1cml0eVBvbGljeS5UTFNfMV8yXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eVBvbGljeT86IFNlY3VyaXR5UG9saWN5O1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSB3aWxsIHN1cHByZXNzIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IHRhZ3Mgb24gcmVzb3VyY2VzXG4gICAqIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHByZXNzVGFnZ2luZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3RhbmRhcmQgY29uc3RydWN0IHVzZWQgdG8gY3JlYXRlIGFuIEFQSSBHYXRld2F5IFYyIERvbWFpbiBOYW1lLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmREb21haW5OYW1lIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHRtcm91dGU1My5Eb21haW5OYW1lO1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlO1xuICByZWFkb25seSBnYXRld2F5RG9tYWluTmFtZTogRG9tYWluTmFtZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhbmRhcmREb21haW5OYW1lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShwcm9wcywgTGliU3RhbmRhcmRUYWdzKX0pO1xuICAgIHRoaXMuZG9tYWluTmFtZSA9IG5ldyB0bXJvdXRlNTMuRG9tYWluTmFtZShwcm9wcyk7XG4gICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IHByb3BzLmNlcnRpZmljYXRlID8/IHRoaXMuZG9tYWluTmFtZS5jcmVhdGVDZXJ0aWZpY2F0ZShzY29wZSk7XG4gICAgdGhpcy5nYXRld2F5RG9tYWluTmFtZSA9IG5ldyBEb21haW5OYW1lKHRoaXMsIFwiRGVmYXVsdFwiLCB7XG4gICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUudG9TdHJpbmcoKSxcbiAgICAgIGNlcnRpZmljYXRlOiB0aGlzLmNlcnRpZmljYXRlLFxuICAgICAgc2VjdXJpdHlQb2xpY3k6IHByb3BzLnNlY3VyaXR5UG9saWN5XG4gICAgfSk7XG4gIH1cblxuICB0b1JlY29yZFRhcmdldChldmFsdWF0ZVRhcmdldEhlYWx0aD86IGJvb2xlYW4pOiBSZWNvcmRUYXJnZXQge1xuICAgIGNvbnN0IGRvbWFpblByb3BlcnRpZXMgPSBuZXcgdGFyZ2V0cy5BcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzKFxuICAgICAgdGhpcy5nYXRld2F5RG9tYWluTmFtZS5yZWdpb25hbERvbWFpbk5hbWUsIHRoaXMuZ2F0ZXdheURvbWFpbk5hbWUucmVnaW9uYWxIb3N0ZWRab25lSWQpO1xuICAgIHJldHVybiBldmFsdWF0ZVRhcmdldEhlYWx0aFxuICAgICAgPyBFeHRlbmRlZFJlY29yZFRhcmdldC5mcm9tQWxpYXMoZG9tYWluUHJvcGVydGllcywgZXZhbHVhdGVUYXJnZXRIZWFsdGgpXG4gICAgICA6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMoZG9tYWluUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlNTMgQVJlY29yZCBwb2ludGluZyB0byB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gZXZhbHVhdGVUYXJnZXRIZWFsdGggRGV0ZXJtaW5lcyBpZiByb3V0ZTUzIGV2YWx1YXRlcyB0aGUgdGFyZ2V0J3MgaGVhbHRoLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoZSByZWNvcmRcbiAgICovXG4gIGNyZWF0ZUFSZWNvcmQoZXZhbHVhdGVUYXJnZXRIZWFsdGg/OiBib29sZWFuLCBvcHRpb25zPzogQVJlY29yZE9wdGlvbnMpOiBBUmVjb3JkIHtcbiAgICByZXR1cm4gdGhpcy5kb21haW5OYW1lLmNyZWF0ZUFSZWNvcmQodGhpcywgdGhpcy50b1JlY29yZFRhcmdldChldmFsdWF0ZVRhcmdldEhlYWx0aCA/PyB0cnVlKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlNTMgd2VpZ2h0ZWQgcmVjb3JkIHBvaW50aW5nIHRvIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWlnaHQgdGhlIGluaXRpYWwgd2VpZ2h0OyBkZWZhdWx0cyB0byAwXG4gICAqIEBwYXJhbSBldmFsdWF0ZVRhcmdldEhlYWx0aCBEZXRlcm1pbmVzIGlmIHJvdXRlNTMgZXZhbHVhdGVzIHRoZSB0YXJnZXQncyBoZWFsdGguIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhlIHJlY29yZFxuICAgKi9cbiAgY3JlYXRlV2VpZ2h0ZWRBUmVjb3JkKHdlaWdodDogbnVtYmVyLCBldmFsdWF0ZVRhcmdldEhlYWx0aD86IGJvb2xlYW4sIG9wdGlvbnM/OiBBUmVjb3JkT3B0aW9ucyk6IEFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlV2VpZ2h0ZWRBUmVjb3JkKHRoaXMsIHRoaXMudG9SZWNvcmRUYXJnZXQoZXZhbHVhdGVUYXJnZXRIZWFsdGggPz8gdHJ1ZSksIHdlaWdodCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlNTMgbGF0ZW5jeSByZWNvcmQgcG9pbnRpbmcgdG8gdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIGV2YWx1YXRlVGFyZ2V0SGVhbHRoIERldGVybWluZXMgaWYgcm91dGU1MyBldmFsdWF0ZXMgdGhlIHRhcmdldCdzIGhlYWx0aC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIGZvciBjcmVhdGluZyB0aGUgcmVjb3JkXG4gICAqL1xuICBjcmVhdGVMYXRlbmN5QVJlY29yZChldmFsdWF0ZVRhcmdldEhlYWx0aD86IGJvb2xlYW4sIG9wdGlvbnM/OiBBUmVjb3JkT3B0aW9ucyk6IEFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlTGF0ZW5jeUFSZWNvcmQodGhpcywgdGhpcy50b1JlY29yZFRhcmdldChldmFsdWF0ZVRhcmdldEhlYWx0aCA/PyB0cnVlKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgRlFETiBvZiB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb21haW5OYW1lLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { Construct } from "constructs";
2
+ import { LatencyARecord, WeightedARecord } from "../../aws-route53";
3
+ import { StandardDomainName } from "./standard-domain-name";
4
+ import { HttpApi } from "@aws-cdk/aws-apigatewayv2-alpha";
5
+ import { ARecord } from "aws-cdk-lib/aws-route53";
6
+ import { ExtendedConstruct, ExtendedConstructProps } from "../../aws-cdk";
7
+ /**
8
+ * Properties for StandardHttpApi.
9
+ */
10
+ export interface StandardHttpApiProps extends ExtendedConstructProps {
11
+ /**
12
+ * The prefix of the domain to create the certificate and DNS record for.
13
+ */
14
+ readonly domainPrefix: string;
15
+ /**
16
+ * The zone of the domain to create the certificate and DNS record for.
17
+ */
18
+ readonly domainZone: string;
19
+ /**
20
+ * Name of the API Gateway. One will be generated if not provided.
21
+ */
22
+ readonly apiName?: string;
23
+ /**
24
+ * Determines if a route53 record is created for the API gateway. Defaults to true.
25
+ *
26
+ * @default - true
27
+ */
28
+ readonly createRecord?: boolean;
29
+ /**
30
+ * Creates a weighted route53 record. May not be used with recordLatency.
31
+ */
32
+ readonly recordWeight?: number;
33
+ /**
34
+ * Creates a latency route53 record. May not be used with recordWeight.
35
+ */
36
+ readonly recordLatency?: boolean;
37
+ /**
38
+ * Evaluates target health on the created route53 record if it's a latency or weighted record. Defaults to true.
39
+ *
40
+ * @default - true
41
+ */
42
+ readonly evaluateTargetHealth?: boolean;
43
+ /**
44
+ * Setting this to true will suppress the creation of default tags on resources
45
+ * created by this construct. Default is false.
46
+ *
47
+ * @default - false
48
+ */
49
+ readonly suppressTagging?: boolean;
50
+ }
51
+ /**
52
+ * Abstraction that creates an HttpApi with support infrastructure.
53
+ */
54
+ export declare class StandardHttpApi extends ExtendedConstruct {
55
+ readonly domainName: StandardDomainName;
56
+ readonly record: ARecord | LatencyARecord | WeightedARecord | undefined;
57
+ readonly httpApi: HttpApi;
58
+ constructor(scope: Construct, id: string, props: StandardHttpApiProps);
59
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardHttpApi = void 0;
4
+ const standard_domain_name_1 = require("./standard-domain-name");
5
+ const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const aws_cdk_1 = require("../../aws-cdk");
8
+ const truemark_1 = require("../../truemark");
9
+ /**
10
+ * Abstraction that creates an HttpApi with support infrastructure.
11
+ */
12
+ class StandardHttpApi extends aws_cdk_1.ExtendedConstruct {
13
+ constructor(scope, id, props) {
14
+ var _a, _b, _c;
15
+ super(scope, id, { standardTags: aws_cdk_1.StandardTags.merge(props, truemark_1.LibStandardTags) });
16
+ const domainName = new standard_domain_name_1.StandardDomainName(this, "DomainName", {
17
+ prefix: props.domainPrefix,
18
+ zone: props.domainZone,
19
+ securityPolicy: aws_apigatewayv2_alpha_1.SecurityPolicy.TLS_1_2 // TODO Should be an option
20
+ });
21
+ // TODO Need to add RecordOptions
22
+ if ((_a = props.createRecord) !== null && _a !== void 0 ? _a : true) {
23
+ if (props.recordWeight) {
24
+ domainName.createWeightedARecord(props.recordWeight, (_b = props.evaluateTargetHealth) !== null && _b !== void 0 ? _b : true);
25
+ }
26
+ else if (props.recordLatency) {
27
+ domainName.createLatencyARecord(true);
28
+ }
29
+ else {
30
+ domainName.createARecord();
31
+ }
32
+ }
33
+ else {
34
+ this.record = undefined;
35
+ }
36
+ const stage = aws_cdk_lib_1.Stage.of(this);
37
+ const stack = aws_cdk_lib_1.Stack.of(this);
38
+ const httpApi = new aws_apigatewayv2_alpha_1.HttpApi(this, "Default", {
39
+ apiName: (_c = props.apiName) !== null && _c !== void 0 ? _c : `${stage === null || stage === void 0 ? void 0 : stage.stageName}${stack === null || stack === void 0 ? void 0 : stack.stackName}Gateway`,
40
+ defaultDomainMapping: {
41
+ domainName: domainName.gatewayDomainName
42
+ }
43
+ });
44
+ this.domainName = domainName;
45
+ this.httpApi = httpApi;
46
+ }
47
+ }
48
+ exports.StandardHttpApi = StandardHttpApi;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtaHR0cC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpRUFBMEQ7QUFDMUQsNEVBQXdFO0FBQ3hFLDZDQUF5QztBQUV6QywyQ0FBc0Y7QUFDdEYsNkNBQStDO0FBdUQvQzs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSwyQkFBaUI7SUFNcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjs7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBQyxZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLDBCQUFlLENBQUMsRUFBQyxDQUFDLENBQUM7UUFFN0UsTUFBTSxVQUFVLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzVELE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWTtZQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDdEIsY0FBYyxFQUFFLHVDQUFjLENBQUMsT0FBTyxDQUFDLDJCQUEyQjtTQUNuRSxDQUFDLENBQUM7UUFFSCxpQ0FBaUM7UUFDakMsVUFBSSxLQUFLLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUN0QixVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLFlBQVksUUFBRSxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLElBQUksQ0FBQyxDQUFBO2FBQ3pGO2lCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDOUIsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFBO2FBQ3RDO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTthQUMzQjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUN6QjtRQUVELE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLE1BQU0sT0FBTyxHQUFHLElBQUksZ0NBQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzNDLE9BQU8sUUFBRSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsU0FBUztZQUN6RSxvQkFBb0IsRUFBRTtnQkFDcEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7YUFDekM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUF6Q0QsMENBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0RvbWFpbk5hbWUsIExhdGVuY3lBUmVjb3JkLCBXZWlnaHRlZEFSZWNvcmR9IGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtTdGFuZGFyZERvbWFpbk5hbWV9IGZyb20gXCIuL3N0YW5kYXJkLWRvbWFpbi1uYW1lXCI7XG5pbXBvcnQge0h0dHBBcGksIFNlY3VyaXR5UG9saWN5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYVwiO1xuaW1wb3J0IHtTdGFjaywgU3RhZ2V9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtBUmVjb3JkfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7RXh0ZW5kZWRDb25zdHJ1Y3QsIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMsIFN0YW5kYXJkVGFnc30gZnJvbSBcIi4uLy4uL2F3cy1jZGtcIjtcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tIFwiLi4vLi4vdHJ1ZW1hcmtcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBTdGFuZGFyZEh0dHBBcGkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRIdHRwQXBpUHJvcHMgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdFByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHByZWZpeCBvZiB0aGUgZG9tYWluIHRvIGNyZWF0ZSB0aGUgY2VydGlmaWNhdGUgYW5kIEROUyByZWNvcmQgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB6b25lIG9mIHRoZSBkb21haW4gdG8gY3JlYXRlIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgRE5TIHJlY29yZCBmb3IuXG4gICAqL1xuICByZWFkb25seSBkb21haW5ab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSSBHYXRld2F5LiBPbmUgd2lsbCBiZSBnZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIHJvdXRlNTMgcmVjb3JkIGlzIGNyZWF0ZWQgZm9yIHRoZSBBUEkgZ2F0ZXdheS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVSZWNvcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2VpZ2h0ZWQgcm91dGU1MyByZWNvcmQuIE1heSBub3QgYmUgdXNlZCB3aXRoIHJlY29yZExhdGVuY3kuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRXZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBsYXRlbmN5IHJvdXRlNTMgcmVjb3JkLiBNYXkgbm90IGJlIHVzZWQgd2l0aCByZWNvcmRXZWlnaHQuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRMYXRlbmN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXZhbHVhdGVzIHRhcmdldCBoZWFsdGggb24gdGhlIGNyZWF0ZWQgcm91dGU1MyByZWNvcmQgaWYgaXQncyBhIGxhdGVuY3kgb3Igd2VpZ2h0ZWQgcmVjb3JkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBzdXBwcmVzcyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCB0YWdzIG9uIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1RhZ2dpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFic3RyYWN0aW9uIHRoYXQgY3JlYXRlcyBhbiBIdHRwQXBpIHdpdGggc3VwcG9ydCBpbmZyYXN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkSHR0cEFwaSBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0IHtcblxuICByZWFkb25seSBkb21haW5OYW1lOiBTdGFuZGFyZERvbWFpbk5hbWU7XG4gIHJlYWRvbmx5IHJlY29yZDogQVJlY29yZCB8IExhdGVuY3lBUmVjb3JkIHwgV2VpZ2h0ZWRBUmVjb3JkIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBodHRwQXBpOiBIdHRwQXBpO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFyZEh0dHBBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge3N0YW5kYXJkVGFnczogU3RhbmRhcmRUYWdzLm1lcmdlKHByb3BzLCBMaWJTdGFuZGFyZFRhZ3MpfSk7XG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gbmV3IFN0YW5kYXJkRG9tYWluTmFtZSh0aGlzLCBcIkRvbWFpbk5hbWVcIiwge1xuICAgICAgcHJlZml4OiBwcm9wcy5kb21haW5QcmVmaXgsXG4gICAgICB6b25lOiBwcm9wcy5kb21haW5ab25lLFxuICAgICAgc2VjdXJpdHlQb2xpY3k6IFNlY3VyaXR5UG9saWN5LlRMU18xXzIgLy8gVE9ETyBTaG91bGQgYmUgYW4gb3B0aW9uXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPIE5lZWQgdG8gYWRkIFJlY29yZE9wdGlvbnNcbiAgICBpZiAocHJvcHMuY3JlYXRlUmVjb3JkID8/IHRydWUpIHtcbiAgICAgIGlmIChwcm9wcy5yZWNvcmRXZWlnaHQpIHtcbiAgICAgICAgZG9tYWluTmFtZS5jcmVhdGVXZWlnaHRlZEFSZWNvcmQocHJvcHMucmVjb3JkV2VpZ2h0LCBwcm9wcy5ldmFsdWF0ZVRhcmdldEhlYWx0aCA/PyB0cnVlKVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWNvcmRMYXRlbmN5KSB7XG4gICAgICAgIGRvbWFpbk5hbWUuY3JlYXRlTGF0ZW5jeUFSZWNvcmQodHJ1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbWFpbk5hbWUuY3JlYXRlQVJlY29yZCgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVjb3JkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWdlID0gU3RhZ2Uub2YodGhpcyk7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IGh0dHBBcGkgPSBuZXcgSHR0cEFwaSh0aGlzLCBcIkRlZmF1bHRcIiwge1xuICAgICAgYXBpTmFtZTogcHJvcHMuYXBpTmFtZSA/PyBgJHtzdGFnZT8uc3RhZ2VOYW1lfSR7c3RhY2s/LnN0YWNrTmFtZX1HYXRld2F5YCxcbiAgICAgIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbk5hbWUuZ2F0ZXdheURvbWFpbk5hbWVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZG9tYWluTmFtZSA9IGRvbWFpbk5hbWU7XG4gICAgdGhpcy5odHRwQXBpID0gaHR0cEFwaTtcbiAgfVxufVxuIl19
@@ -0,0 +1,60 @@
1
+ import { Construct } from "constructs";
2
+ import { StandardDomainName } from "./standard-domain-name";
3
+ import { WebSocketApi, WebSocketStage } from "@aws-cdk/aws-apigatewayv2-alpha";
4
+ import { ARecord } from "aws-cdk-lib/aws-route53";
5
+ import { LatencyARecord, WeightedARecord } from "../../aws-route53";
6
+ import { ExtendedConstruct, ExtendedConstructProps } from "../../aws-cdk";
7
+ /**
8
+ * Properties for StandardWebSocketApi.
9
+ */
10
+ export interface StandardWebSocketApiProps extends ExtendedConstructProps {
11
+ /**
12
+ * The prefix of the domain to create the certificate and DNS record for.
13
+ */
14
+ readonly domainPrefix: string;
15
+ /**
16
+ * The zone of the domain to create the certificate and DNS record for.
17
+ */
18
+ readonly domainZone: string;
19
+ /**
20
+ * Name of the API Gateway. One will be generated if not provided.
21
+ */
22
+ readonly apiName?: string;
23
+ /**
24
+ * Determines if a route53 record is created for the API gateway. Defaults to true.
25
+ *
26
+ * @default - true
27
+ */
28
+ readonly createRecord?: boolean;
29
+ /**
30
+ * Creates a weighted route53 record. May not be used with recordLatency.
31
+ */
32
+ readonly recordWeight?: number;
33
+ /**
34
+ * Creates a latency route53 record. May not be used with recordWeight.
35
+ */
36
+ readonly recordLatency?: boolean;
37
+ /**
38
+ * Evaluates target health on the created route53 record if it's a latency or weighted record. Defaults to true.
39
+ *
40
+ * @default - true
41
+ */
42
+ readonly evaluateTargetHealth?: boolean;
43
+ /**
44
+ * Setting this to true will suppress the creation of default tags on resources
45
+ * created by this construct. Default is false.
46
+ *
47
+ * @default - false
48
+ */
49
+ readonly suppressTagging?: boolean;
50
+ }
51
+ /**
52
+ * Abstraction that creates an WebSocketApi with support infrastructure.
53
+ */
54
+ export declare class StandardWebSocketApi extends ExtendedConstruct {
55
+ readonly domainName: StandardDomainName;
56
+ readonly record: ARecord | LatencyARecord | WeightedARecord | undefined;
57
+ readonly webSocketApi: WebSocketApi;
58
+ readonly webSocketStage: WebSocketStage;
59
+ constructor(scope: Construct, id: string, props: StandardWebSocketApiProps);
60
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardWebSocketApi = void 0;
4
+ const standard_domain_name_1 = require("./standard-domain-name");
5
+ const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const aws_cdk_1 = require("../../aws-cdk");
8
+ /**
9
+ * Abstraction that creates an WebSocketApi with support infrastructure.
10
+ */
11
+ class StandardWebSocketApi extends aws_cdk_1.ExtendedConstruct {
12
+ constructor(scope, id, props) {
13
+ var _a, _b, _c;
14
+ super(scope, id);
15
+ const domainName = new standard_domain_name_1.StandardDomainName(this, "DomainName", {
16
+ prefix: props.domainPrefix,
17
+ zone: props.domainZone,
18
+ securityPolicy: aws_apigatewayv2_alpha_1.SecurityPolicy.TLS_1_2 // TODO Should be an option
19
+ });
20
+ // TODO Need to add RecordOptions
21
+ if ((_a = props.createRecord) !== null && _a !== void 0 ? _a : true) {
22
+ if (props.recordWeight) {
23
+ domainName.createWeightedARecord(props.recordWeight, (_b = props.evaluateTargetHealth) !== null && _b !== void 0 ? _b : true);
24
+ }
25
+ else if (props.recordLatency) {
26
+ domainName.createLatencyARecord(true);
27
+ }
28
+ else {
29
+ domainName.createARecord();
30
+ }
31
+ }
32
+ else {
33
+ this.record = undefined;
34
+ }
35
+ const stage = aws_cdk_lib_1.Stage.of(this);
36
+ const stack = aws_cdk_lib_1.Stack.of(this);
37
+ const webSocketApi = new aws_apigatewayv2_alpha_1.WebSocketApi(this, "Default", {
38
+ apiName: (_c = props.apiName) !== null && _c !== void 0 ? _c : `${stage === null || stage === void 0 ? void 0 : stage.stageName}${stack === null || stack === void 0 ? void 0 : stack.stackName}Gateway`,
39
+ });
40
+ const webSocketStage = new aws_apigatewayv2_alpha_1.WebSocketStage(this, "DefaultStage", {
41
+ webSocketApi,
42
+ stageName: "default",
43
+ autoDeploy: true,
44
+ domainMapping: {
45
+ domainName: domainName.gatewayDomainName
46
+ }
47
+ });
48
+ this.webSocketApi = webSocketApi;
49
+ this.webSocketStage = webSocketStage;
50
+ }
51
+ }
52
+ exports.StandardWebSocketApi = StandardWebSocketApi;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtd2ViLXNvY2tldC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC13ZWItc29ja2V0LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpRUFBMEQ7QUFDMUQsNEVBQTZGO0FBRzdGLDZDQUF5QztBQUN6QywyQ0FBd0U7QUFzRHhFOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSwyQkFBaUI7SUFPekQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQzs7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLHlDQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDNUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtZQUN0QixjQUFjLEVBQUUsdUNBQWMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCO1NBQ25FLENBQUMsQ0FBQztRQUVILGlDQUFpQztRQUNqQyxVQUFJLEtBQUssQ0FBQyxZQUFZLG1DQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsWUFBWSxRQUFFLEtBQUssQ0FBQyxvQkFBb0IsbUNBQUksSUFBSSxDQUFDLENBQUE7YUFDekY7aUJBQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUM5QixVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUE7YUFDdEM7aUJBQU07Z0JBQ0wsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFBO2FBQzNCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQ0FBWSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDckQsT0FBTyxRQUFFLEtBQUssQ0FBQyxPQUFPLG1DQUFJLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUyxTQUFTO1NBQzFFLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLElBQUksdUNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQzlELFlBQVk7WUFDWixTQUFTLEVBQUUsU0FBUztZQUNwQixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7YUFDekM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFoREQsb0RBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1N0YW5kYXJkRG9tYWluTmFtZX0gZnJvbSBcIi4vc3RhbmRhcmQtZG9tYWluLW5hbWVcIjtcbmltcG9ydCB7U2VjdXJpdHlQb2xpY3ksIFdlYlNvY2tldEFwaSwgV2ViU29ja2V0U3RhZ2V9IGZyb20gXCJAYXdzLWNkay9hd3MtYXBpZ2F0ZXdheXYyLWFscGhhXCI7XG5pbXBvcnQge0FSZWNvcmR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtMYXRlbmN5QVJlY29yZCwgV2VpZ2h0ZWRBUmVjb3JkfSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7U3RhY2ssIFN0YWdlfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7RXh0ZW5kZWRDb25zdHJ1Y3QsIEV4dGVuZGVkQ29uc3RydWN0UHJvcHN9IGZyb20gXCIuLi8uLi9hd3MtY2RrXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgU3RhbmRhcmRXZWJTb2NrZXRBcGkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRXZWJTb2NrZXRBcGlQcm9wcyBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHByZWZpeCBvZiB0aGUgZG9tYWluIHRvIGNyZWF0ZSB0aGUgY2VydGlmaWNhdGUgYW5kIEROUyByZWNvcmQgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB6b25lIG9mIHRoZSBkb21haW4gdG8gY3JlYXRlIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgRE5TIHJlY29yZCBmb3IuXG4gICAqL1xuICByZWFkb25seSBkb21haW5ab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSSBHYXRld2F5LiBPbmUgd2lsbCBiZSBnZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIHJvdXRlNTMgcmVjb3JkIGlzIGNyZWF0ZWQgZm9yIHRoZSBBUEkgZ2F0ZXdheS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVSZWNvcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2VpZ2h0ZWQgcm91dGU1MyByZWNvcmQuIE1heSBub3QgYmUgdXNlZCB3aXRoIHJlY29yZExhdGVuY3kuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRXZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBsYXRlbmN5IHJvdXRlNTMgcmVjb3JkLiBNYXkgbm90IGJlIHVzZWQgd2l0aCByZWNvcmRXZWlnaHQuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRMYXRlbmN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXZhbHVhdGVzIHRhcmdldCBoZWFsdGggb24gdGhlIGNyZWF0ZWQgcm91dGU1MyByZWNvcmQgaWYgaXQncyBhIGxhdGVuY3kgb3Igd2VpZ2h0ZWQgcmVjb3JkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBzdXBwcmVzcyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCB0YWdzIG9uIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1RhZ2dpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFic3RyYWN0aW9uIHRoYXQgY3JlYXRlcyBhbiBXZWJTb2NrZXRBcGkgd2l0aCBzdXBwb3J0IGluZnJhc3RydWN0dXJlLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRXZWJTb2NrZXRBcGkgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdCB7XG5cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogU3RhbmRhcmREb21haW5OYW1lO1xuICByZWFkb25seSByZWNvcmQ6IEFSZWNvcmQgfCBMYXRlbmN5QVJlY29yZCB8IFdlaWdodGVkQVJlY29yZCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgd2ViU29ja2V0QXBpOiBXZWJTb2NrZXRBcGk7XG4gIHJlYWRvbmx5IHdlYlNvY2tldFN0YWdlOiBXZWJTb2NrZXRTdGFnZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhbmRhcmRXZWJTb2NrZXRBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gbmV3IFN0YW5kYXJkRG9tYWluTmFtZSh0aGlzLCBcIkRvbWFpbk5hbWVcIiwge1xuICAgICAgcHJlZml4OiBwcm9wcy5kb21haW5QcmVmaXgsXG4gICAgICB6b25lOiBwcm9wcy5kb21haW5ab25lLFxuICAgICAgc2VjdXJpdHlQb2xpY3k6IFNlY3VyaXR5UG9saWN5LlRMU18xXzIgLy8gVE9ETyBTaG91bGQgYmUgYW4gb3B0aW9uXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPIE5lZWQgdG8gYWRkIFJlY29yZE9wdGlvbnNcbiAgICBpZiAocHJvcHMuY3JlYXRlUmVjb3JkID8/IHRydWUpIHtcbiAgICAgIGlmIChwcm9wcy5yZWNvcmRXZWlnaHQpIHtcbiAgICAgICAgZG9tYWluTmFtZS5jcmVhdGVXZWlnaHRlZEFSZWNvcmQocHJvcHMucmVjb3JkV2VpZ2h0LCBwcm9wcy5ldmFsdWF0ZVRhcmdldEhlYWx0aCA/PyB0cnVlKVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWNvcmRMYXRlbmN5KSB7XG4gICAgICAgIGRvbWFpbk5hbWUuY3JlYXRlTGF0ZW5jeUFSZWNvcmQodHJ1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvbWFpbk5hbWUuY3JlYXRlQVJlY29yZCgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVjb3JkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWdlID0gU3RhZ2Uub2YodGhpcyk7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IHdlYlNvY2tldEFwaSA9IG5ldyBXZWJTb2NrZXRBcGkodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGFwaU5hbWU6IHByb3BzLmFwaU5hbWUgPz8gYCR7c3RhZ2U/LnN0YWdlTmFtZX0ke3N0YWNrPy5zdGFja05hbWV9R2F0ZXdheWAsXG4gICAgfSk7XG5cbiAgICBjb25zdCB3ZWJTb2NrZXRTdGFnZSA9IG5ldyBXZWJTb2NrZXRTdGFnZSh0aGlzLCBcIkRlZmF1bHRTdGFnZVwiLCB7XG4gICAgICB3ZWJTb2NrZXRBcGksXG4gICAgICBzdGFnZU5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgYXV0b0RlcGxveTogdHJ1ZSxcbiAgICAgIGRvbWFpbk1hcHBpbmc6IHtcbiAgICAgICAgZG9tYWluTmFtZTogZG9tYWluTmFtZS5nYXRld2F5RG9tYWluTmFtZVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy53ZWJTb2NrZXRBcGkgPSB3ZWJTb2NrZXRBcGk7XG4gICAgdGhpcy53ZWJTb2NrZXRTdGFnZSA9IHdlYlNvY2tldFN0YWdlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { App, AppProps } from "aws-cdk-lib";
2
+ import { StandardTagsProps } from "./standard-tags";
3
+ /**
4
+ * Properties for ExtendedApp.
5
+ */
6
+ export interface ExtendedAppProps extends AppProps {
7
+ /**
8
+ * Standard tags to apply to all stacks.
9
+ */
10
+ readonly standardTags?: StandardTagsProps;
11
+ /**
12
+ * Skips account lookup and uses this account.
13
+ */
14
+ readonly account?: string;
15
+ /**
16
+ * Skips region lookup and uses this region.
17
+ */
18
+ readonly region?: string;
19
+ }
20
+ /**
21
+ * Adds functionality to the base App class to support standard tags
22
+ * and access to the account and region being used to execute the
23
+ * CDK process.
24
+ */
25
+ export declare class ExtendedApp extends App {
26
+ readonly account: string;
27
+ readonly region: string;
28
+ constructor(props?: ExtendedAppProps);
29
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtendedApp = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ /**
6
+ * Adds functionality to the base App class to support standard tags
7
+ * and access to the account and region being used to execute the
8
+ * CDK process.
9
+ */
10
+ class ExtendedApp extends aws_cdk_lib_1.App {
11
+ constructor(props) {
12
+ super({
13
+ ...props,
14
+ context: {
15
+ ...props === null || props === void 0 ? void 0 : props.context,
16
+ // Add standardTags to the context to be used by ExtendedStack
17
+ standardTags: props === null || props === void 0 ? void 0 : props.standardTags
18
+ }
19
+ });
20
+ // Use the provided account or do a lookup
21
+ const account = (props === null || props === void 0 ? void 0 : props.account) || process.env.CDK_DEFAULT_ACCOUNT || process.env.AWS_ACCOUNT_ID;
22
+ if (account === undefined) {
23
+ throw new Error("Unable to identify default account");
24
+ }
25
+ this.account = account;
26
+ // Use the provided region or do a lookup
27
+ const region = (props === null || props === void 0 ? void 0 : props.region) || process.env.CDK_DEFAULT_REGION || process.env.AWS_DEFAULT_REGION;
28
+ if (region === undefined) {
29
+ throw new Error("Unable to identify default region");
30
+ }
31
+ this.region = region;
32
+ // Add automation component tags to AutomationComponent children
33
+ // Aspects.of(this).add(new AutomationComponentAspect(props?.standardTags?.suppressTagging));
34
+ }
35
+ }
36
+ exports.ExtendedApp = ExtendedApp;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUEwQztBQXdCMUM7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLGlCQUFHO0lBS2xDLFlBQVksS0FBd0I7UUFDbEMsS0FBSyxDQUFDO1lBQ0osR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU87Z0JBQ2pCLDhEQUE4RDtnQkFDOUQsWUFBWSxFQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxZQUFZO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU8sS0FBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ2hHLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2Qix5Q0FBeUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBTSxLQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsZ0VBQWdFO1FBQ2hFLDZGQUE2RjtJQUMvRixDQUFDO0NBQ0Y7QUFoQ0Qsa0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHAsIEFwcFByb3BzfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7U3RhbmRhcmRUYWdzUHJvcHN9IGZyb20gXCIuL3N0YW5kYXJkLXRhZ3NcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBFeHRlbmRlZEFwcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZEFwcFByb3BzIGV4dGVuZHMgQXBwUHJvcHMge1xuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCB0YWdzIHRvIGFwcGx5IHRvIGFsbCBzdGFja3MuXG4gICAqL1xuICByZWFkb25seSBzdGFuZGFyZFRhZ3M/OiBTdGFuZGFyZFRhZ3NQcm9wcztcblxuICAvKipcbiAgICogU2tpcHMgYWNjb3VudCBsb29rdXAgYW5kIHVzZXMgdGhpcyBhY2NvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2tpcHMgcmVnaW9uIGxvb2t1cCBhbmQgdXNlcyB0aGlzIHJlZ2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBZGRzIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIGJhc2UgQXBwIGNsYXNzIHRvIHN1cHBvcnQgc3RhbmRhcmQgdGFnc1xuICogYW5kIGFjY2VzcyB0byB0aGUgYWNjb3VudCBhbmQgcmVnaW9uIGJlaW5nIHVzZWQgdG8gZXhlY3V0ZSB0aGVcbiAqIENESyBwcm9jZXNzLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5kZWRBcHAgZXh0ZW5kcyBBcHAge1xuXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvcHM/OiBFeHRlbmRlZEFwcFByb3BzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIC4uLnByb3BzPy5jb250ZXh0LFxuICAgICAgICAvLyBBZGQgc3RhbmRhcmRUYWdzIHRvIHRoZSBjb250ZXh0IHRvIGJlIHVzZWQgYnkgRXh0ZW5kZWRTdGFja1xuICAgICAgICBzdGFuZGFyZFRhZ3M6ICBwcm9wcz8uc3RhbmRhcmRUYWdzXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGFjY291bnQgb3IgZG8gYSBsb29rdXBcbiAgICBjb25zdCBhY2NvdW50ID0gcHJvcHM/LmFjY291bnQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCB8fCBwcm9jZXNzLmVudi5BV1NfQUNDT1VOVF9JRDtcbiAgICBpZiAoYWNjb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gaWRlbnRpZnkgZGVmYXVsdCBhY2NvdW50XCIpO1xuICAgIH1cbiAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuXG4gICAgLy8gVXNlIHRoZSBwcm92aWRlZCByZWdpb24gb3IgZG8gYSBsb29rdXBcbiAgICBjb25zdCByZWdpb24gPSBwcm9wcz8ucmVnaW9uIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047XG4gICAgaWYgKHJlZ2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gaWRlbnRpZnkgZGVmYXVsdCByZWdpb25cIik7XG4gICAgfVxuICAgIHRoaXMucmVnaW9uID0gcmVnaW9uO1xuXG4gICAgLy8gQWRkIGF1dG9tYXRpb24gY29tcG9uZW50IHRhZ3MgdG8gQXV0b21hdGlvbkNvbXBvbmVudCBjaGlsZHJlblxuICAgIC8vIEFzcGVjdHMub2YodGhpcykuYWRkKG5ldyBBdXRvbWF0aW9uQ29tcG9uZW50QXNwZWN0KHByb3BzPy5zdGFuZGFyZFRhZ3M/LnN1cHByZXNzVGFnZ2luZykpO1xuICB9XG59XG5cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Construct } from "constructs";
2
+ import { StandardTagsProps } from "./standard-tags";
3
+ /**
4
+ * Props for ExtendedConstruct.
5
+ */
6
+ export interface ExtendedConstructProps {
7
+ /**
8
+ * Sets standard tags for this Construct. Values set here will override those set on the parent scope.
9
+ */
10
+ readonly standardTags?: StandardTagsProps;
11
+ }
12
+ export declare class ExtendedConstruct extends Construct {
13
+ constructor(scope: Construct, id: string, props?: ExtendedConstructProps);
14
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtendedConstruct = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const standard_tags_1 = require("./standard-tags");
6
+ class ExtendedConstruct extends constructs_1.Construct {
7
+ constructor(scope, id, props) {
8
+ super(scope, id);
9
+ // Setup standard tags
10
+ new standard_tags_1.StandardTags(this, props === null || props === void 0 ? void 0 : props.standardTags);
11
+ }
12
+ }
13
+ exports.ExtendedConstruct = ExtendedConstruct;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxQztBQUNyQyxtREFBZ0U7QUFZaEUsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUM5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsc0JBQXNCO1FBQ3RCLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQVBELDhDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1N0YW5kYXJkVGFncywgU3RhbmRhcmRUYWdzUHJvcHN9IGZyb20gXCIuL3N0YW5kYXJkLXRhZ3NcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgRXh0ZW5kZWRDb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBTZXRzIHN0YW5kYXJkIHRhZ3MgZm9yIHRoaXMgQ29uc3RydWN0LiBWYWx1ZXMgc2V0IGhlcmUgd2lsbCBvdmVycmlkZSB0aG9zZSBzZXQgb24gdGhlIHBhcmVudCBzY29wZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkVGFncz86IFN0YW5kYXJkVGFnc1Byb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgRXh0ZW5kZWRDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEV4dGVuZGVkQ29uc3RydWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gU2V0dXAgc3RhbmRhcmQgdGFnc1xuICAgIG5ldyBTdGFuZGFyZFRhZ3ModGhpcywgcHJvcHM/LnN0YW5kYXJkVGFncyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { CfnOutput, Duration, Stack, StackProps } from "aws-cdk-lib";
2
- import { ParameterStore, ParameterStoreOptions } from "../../aws-ssm/index";
2
+ import { ParameterStore, ParameterStoreOptions } from "../../aws-ssm";
3
3
  import { Construct } from "constructs";
4
4
  import { StringParameter } from "aws-cdk-lib/aws-ssm";
5
5
  import { DashboardRenderingPreference, MonitoringFacade } from "cdk-monitoring-constructs";
6
+ import { StandardTagsProps } from "./standard-tags";
6
7
  /**
7
8
  * Options for ExtStack.
8
9
  */
@@ -40,7 +41,7 @@ export interface ExtendedStackOptions {
40
41
  */
41
42
  readonly createSummaryDashboard?: boolean;
42
43
  /**
43
- * Flag to determine if the alarm dashboard should be creted.
44
+ * Flag to determine if the alarm dashboard should be created.
44
45
  *
45
46
  * @default false
46
47
  */
@@ -72,12 +73,9 @@ export interface ExtendedStackOptions {
72
73
  */
73
74
  readonly alarmActionsEnabled?: boolean;
74
75
  /**
75
- * Setting this to true will suppress the creation of default tags on resources
76
- * created by this construct. Default is false.
77
- *
78
- * @default - false
76
+ * Sets standard tags for this Stack.
79
77
  */
80
- readonly suppressTagging?: boolean;
78
+ readonly standardTags?: StandardTagsProps;
81
79
  }
82
80
  /**
83
81
  * Properties for ExtStack.