@rio-cloud/cdk-v2-constructs 2.6.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -3976,7 +3976,7 @@
3976
3976
  "stability": "stable"
3977
3977
  },
3978
3978
  "locationInModule": {
3979
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
3979
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
3980
3980
  "line": 70
3981
3981
  },
3982
3982
  "parameters": [
@@ -4002,11 +4002,11 @@
4002
4002
  },
4003
4003
  "kind": "class",
4004
4004
  "locationInModule": {
4005
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4005
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4006
4006
  "line": 69
4007
4007
  },
4008
4008
  "name": "DatadogLogIndexMonitoring",
4009
- "symbolId": "src/datadog/datadogLogIndexMonitoring:DatadogLogIndexMonitoring"
4009
+ "symbolId": "src/datadog/datadog-log-index-monitoring:DatadogLogIndexMonitoring"
4010
4010
  },
4011
4011
  "@rio-cloud/cdk-v2-constructs.DatadogLogIndexMonitoringProps": {
4012
4012
  "assembly": "@rio-cloud/cdk-v2-constructs",
@@ -4017,7 +4017,7 @@
4017
4017
  "fqn": "@rio-cloud/cdk-v2-constructs.DatadogLogIndexMonitoringProps",
4018
4018
  "kind": "interface",
4019
4019
  "locationInModule": {
4020
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4020
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4021
4021
  "line": 4
4022
4022
  },
4023
4023
  "name": "DatadogLogIndexMonitoringProps",
@@ -4031,7 +4031,7 @@
4031
4031
  },
4032
4032
  "immutable": true,
4033
4033
  "locationInModule": {
4034
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4034
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4035
4035
  "line": 20
4036
4036
  },
4037
4037
  "name": "alertType",
@@ -4047,7 +4047,7 @@
4047
4047
  },
4048
4048
  "immutable": true,
4049
4049
  "locationInModule": {
4050
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4050
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4051
4051
  "line": 25
4052
4052
  },
4053
4053
  "name": "dailyLogQuota",
@@ -4063,7 +4063,7 @@
4063
4063
  },
4064
4064
  "immutable": true,
4065
4065
  "locationInModule": {
4066
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4066
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4067
4067
  "line": 14
4068
4068
  },
4069
4069
  "name": "indexName",
@@ -4080,7 +4080,7 @@
4080
4080
  },
4081
4081
  "immutable": true,
4082
4082
  "locationInModule": {
4083
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4083
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4084
4084
  "line": 9
4085
4085
  },
4086
4086
  "name": "serviceName",
@@ -4097,7 +4097,7 @@
4097
4097
  },
4098
4098
  "immutable": true,
4099
4099
  "locationInModule": {
4100
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4100
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4101
4101
  "line": 38
4102
4102
  },
4103
4103
  "name": "organization",
@@ -4116,7 +4116,7 @@
4116
4116
  },
4117
4117
  "immutable": true,
4118
4118
  "locationInModule": {
4119
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4119
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4120
4120
  "line": 32
4121
4121
  },
4122
4122
  "name": "sparseLogging",
@@ -4126,7 +4126,7 @@
4126
4126
  }
4127
4127
  }
4128
4128
  ],
4129
- "symbolId": "src/datadog/datadogLogIndexMonitoring:DatadogLogIndexMonitoringProps"
4129
+ "symbolId": "src/datadog/datadog-log-index-monitoring:DatadogLogIndexMonitoringProps"
4130
4130
  },
4131
4131
  "@rio-cloud/cdk-v2-constructs.DatadogLogQuotaProps": {
4132
4132
  "assembly": "@rio-cloud/cdk-v2-constructs",
@@ -4137,7 +4137,7 @@
4137
4137
  "fqn": "@rio-cloud/cdk-v2-constructs.DatadogLogQuotaProps",
4138
4138
  "kind": "interface",
4139
4139
  "locationInModule": {
4140
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4140
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4141
4141
  "line": 41
4142
4142
  },
4143
4143
  "name": "DatadogLogQuotaProps",
@@ -4151,7 +4151,7 @@
4151
4151
  },
4152
4152
  "immutable": true,
4153
4153
  "locationInModule": {
4154
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4154
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4155
4155
  "line": 56
4156
4156
  },
4157
4157
  "name": "alertThresholdInPercent",
@@ -4167,7 +4167,7 @@
4167
4167
  },
4168
4168
  "immutable": true,
4169
4169
  "locationInModule": {
4170
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4170
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4171
4171
  "line": 45
4172
4172
  },
4173
4173
  "name": "valueInMillionEvents",
@@ -4183,7 +4183,7 @@
4183
4183
  },
4184
4184
  "immutable": true,
4185
4185
  "locationInModule": {
4186
- "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4186
+ "filename": "src/datadog/datadog-log-index-monitoring.ts",
4187
4187
  "line": 50
4188
4188
  },
4189
4189
  "name": "warningThresholdInPercent",
@@ -4192,7 +4192,7 @@
4192
4192
  }
4193
4193
  }
4194
4194
  ],
4195
- "symbolId": "src/datadog/datadogLogIndexMonitoring:DatadogLogQuotaProps"
4195
+ "symbolId": "src/datadog/datadog-log-index-monitoring:DatadogLogQuotaProps"
4196
4196
  },
4197
4197
  "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring": {
4198
4198
  "assembly": "@rio-cloud/cdk-v2-constructs",
@@ -5889,6 +5889,140 @@
5889
5889
  ],
5890
5890
  "symbolId": "src/pipeline/rio-bitbucket-source-action:RioBitBucketSourceActionProps"
5891
5891
  },
5892
+ "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistribution": {
5893
+ "assembly": "@rio-cloud/cdk-v2-constructs",
5894
+ "base": "constructs.Construct",
5895
+ "docs": {
5896
+ "remarks": "Intended for delivery of html documents. It sets some defaults a recommended by AWS and provides basic security header.\nRequires installation of the custom-resource-certificate.",
5897
+ "stability": "stable",
5898
+ "summary": "A Construct which creates a default cloudfront distribution using a s3 bucket as origin."
5899
+ },
5900
+ "fqn": "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistribution",
5901
+ "initializer": {
5902
+ "docs": {
5903
+ "stability": "stable"
5904
+ },
5905
+ "locationInModule": {
5906
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5907
+ "line": 70
5908
+ },
5909
+ "parameters": [
5910
+ {
5911
+ "name": "scope",
5912
+ "type": {
5913
+ "fqn": "constructs.Construct"
5914
+ }
5915
+ },
5916
+ {
5917
+ "name": "id",
5918
+ "type": {
5919
+ "primitive": "string"
5920
+ }
5921
+ },
5922
+ {
5923
+ "name": "props",
5924
+ "type": {
5925
+ "fqn": "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistributionProps"
5926
+ }
5927
+ }
5928
+ ]
5929
+ },
5930
+ "kind": "class",
5931
+ "locationInModule": {
5932
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5933
+ "line": 69
5934
+ },
5935
+ "name": "RioCloudfrontDistribution",
5936
+ "symbolId": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution:RioCloudfrontDistribution"
5937
+ },
5938
+ "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistributionProps": {
5939
+ "assembly": "@rio-cloud/cdk-v2-constructs",
5940
+ "datatype": true,
5941
+ "docs": {
5942
+ "stability": "stable",
5943
+ "summary": "Properties for defining a RioCloudfrontDistribution."
5944
+ },
5945
+ "fqn": "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistributionProps",
5946
+ "kind": "interface",
5947
+ "locationInModule": {
5948
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5949
+ "line": 16
5950
+ },
5951
+ "name": "RioCloudfrontDistributionProps",
5952
+ "properties": [
5953
+ {
5954
+ "abstract": true,
5955
+ "docs": {
5956
+ "stability": "stable",
5957
+ "summary": "The reference to the S3 bucket containing the files to serve."
5958
+ },
5959
+ "immutable": true,
5960
+ "locationInModule": {
5961
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5962
+ "line": 20
5963
+ },
5964
+ "name": "contentBucketName",
5965
+ "type": {
5966
+ "primitive": "string"
5967
+ }
5968
+ },
5969
+ {
5970
+ "abstract": true,
5971
+ "docs": {
5972
+ "remarks": "If not set, a rio Default will be used. The default should cover connections to split.io, sentry and datadog,\nas well as a hash to support google tagManger. The latter might need to be adapted if you change the minification of\nthe index.html, in which case you can provide your csp here.",
5973
+ "stability": "stable",
5974
+ "summary": "The content Security Policy to be sent as a header when delivering the bucket content."
5975
+ },
5976
+ "immutable": true,
5977
+ "locationInModule": {
5978
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5979
+ "line": 40
5980
+ },
5981
+ "name": "contentSecurityPolicy",
5982
+ "optional": true,
5983
+ "type": {
5984
+ "primitive": "string"
5985
+ }
5986
+ },
5987
+ {
5988
+ "abstract": true,
5989
+ "docs": {
5990
+ "remarks": "If not given, the default hosted Zone\nprovided by RIO setup will be used.",
5991
+ "stability": "stable",
5992
+ "summary": "The hosted zone of the domain under which the content will be served."
5993
+ },
5994
+ "immutable": true,
5995
+ "locationInModule": {
5996
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
5997
+ "line": 32
5998
+ },
5999
+ "name": "hostedZone",
6000
+ "optional": true,
6001
+ "type": {
6002
+ "fqn": "aws-cdk-lib.aws_route53.IHostedZone"
6003
+ }
6004
+ },
6005
+ {
6006
+ "abstract": true,
6007
+ "docs": {
6008
+ "remarks": "If not given, an empty string, i.e. no subDomain will be used.\nInstead, the name of the hosted zone will be used directly.",
6009
+ "stability": "stable",
6010
+ "summary": "The subdomain where the content should be served."
6011
+ },
6012
+ "immutable": true,
6013
+ "locationInModule": {
6014
+ "filename": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.ts",
6015
+ "line": 26
6016
+ },
6017
+ "name": "subDomain",
6018
+ "optional": true,
6019
+ "type": {
6020
+ "primitive": "string"
6021
+ }
6022
+ }
6023
+ ],
6024
+ "symbolId": "src/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution:RioCloudfrontDistributionProps"
6025
+ },
5892
6026
  "@rio-cloud/cdk-v2-constructs.RioFargateService": {
5893
6027
  "assembly": "@rio-cloud/cdk-v2-constructs",
5894
6028
  "base": "constructs.Construct",
@@ -8465,5 +8599,5 @@
8465
8599
  }
8466
8600
  },
8467
8601
  "version": "0.0.0",
8468
- "fingerprint": "dc1LbEEhAJZAZkrbkORSSXzh1HnX8Yh9603ZQb+s8VQ="
8602
+ "fingerprint": "XfxoSTqVvoXthMn4w1xNPq3Q2jsqW1fMpEwQGvyDGZg="
8469
8603
  }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.7.0](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.6.2&sourceBranch=refs%2Ftags%2Fv2.7.0) (2022-10-26)
6
+
7
+
8
+ ### Features
9
+
10
+ * **contributions:** Adapt documentation, fix typo ([422fb3c](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/commits/422fb3c139faabc9e0b5acd7b0c017949d51078c))
11
+ * **contributions:** Add a cloudfront construct which can be used to deploy FEs via CDK with very little code if sticking to RIO defaults ([095d6e0](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/commits/095d6e02d2fee71dfbe8f12d63159b3284dedaca))
12
+ * **contributions:** Add an option to easily adjust the script src of the csp without ([86f4543](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/commits/86f4543af955a85f3c15a0074f4f096cb74d7b12))
13
+ * **contributions:** Preparing for a release with the new contirbutions ([04a2d81](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/commits/04a2d81a295fdd3675314fc0ed3da7a7cbfc3db4))
14
+
5
15
  ### [2.6.2](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.6.1&sourceBranch=refs%2Ftags%2Fv2.6.2) (2022-09-29)
6
16
 
7
17
  ### [2.6.1](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.6.0&sourceBranch=refs%2Ftags%2Fv2.6.1) (2022-09-28)
@@ -0,0 +1 @@
1
+ export * from './rio-cloudfront-distribution';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./rio-cloudfront-distribution"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy9jb3AtZnJvbnRlbmQvY2xvdWRmcm9udC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxnRUFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Jpby1jbG91ZGZyb250LWRpc3RyaWJ1dGlvbic7XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import * as route53 from 'aws-cdk-lib/aws-route53';
2
+ import { Construct } from 'constructs';
3
+ /**
4
+ * Properties for defining a RioCloudfrontDistribution
5
+ */
6
+ export interface RioCloudfrontDistributionProps {
7
+ /**
8
+ * The reference to the S3 bucket containing the files to serve
9
+ */
10
+ readonly contentBucketName: string;
11
+ /**
12
+ * The subdomain where the content should be served. If not given, an empty string, i.e. no subDomain will be used.
13
+ * Instead, the name of the hosted zone will be used directly.
14
+ */
15
+ readonly subDomain?: string;
16
+ /**
17
+ * The hosted zone of the domain under which the content will be served. If not given, the default hosted Zone
18
+ * provided by RIO setup will be used.
19
+ */
20
+ readonly hostedZone?: route53.IHostedZone;
21
+ /**
22
+ * The content Security Policy to be sent as a header when delivering the bucket content.
23
+ * If not set, a rio Default will be used. The default should cover connections to split.io, sentry and datadog,
24
+ * as well as a hash to support google tagManger. The latter might need to be adapted if you change the minification of
25
+ * the index.html, in which case you can provide your csp here.
26
+ */
27
+ readonly contentSecurityPolicy?: string;
28
+ }
29
+ export declare const createRioDefaultCSP: (additionalScriptSources?: string | undefined) => string;
30
+ /**
31
+ * A Construct which creates a default cloudfront distribution using a s3 bucket as origin.
32
+ * Intended for delivery of html documents. It sets some defaults a recommended by AWS and provides basic security header.
33
+ * Requires installation of the custom-resource-certificate.
34
+ *
35
+ */
36
+ export declare class RioCloudfrontDistribution extends Construct {
37
+ constructor(scope: Construct, id: string, props: RioCloudfrontDistributionProps);
38
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RioCloudfrontDistribution = exports.createRioDefaultCSP = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const acm = require("aws-cdk-lib/aws-certificatemanager");
8
+ const cloudfront = require("aws-cdk-lib/aws-cloudfront");
9
+ const origins = require("aws-cdk-lib/aws-cloudfront-origins");
10
+ const iam = require("aws-cdk-lib/aws-iam");
11
+ const route53 = require("aws-cdk-lib/aws-route53");
12
+ const targets = require("aws-cdk-lib/aws-route53-targets");
13
+ const s3 = require("aws-cdk-lib/aws-s3");
14
+ const constructs_1 = require("constructs");
15
+ const rio_landing_zone_1 = require("../../../rio-landing-zone");
16
+ const alwaysAllowedCSPSources = "'self' https://*.rio.cloud https://rio.cloud";
17
+ // The hash in script src is for the google tagManager script included in the index.html
18
+ exports.createRioDefaultCSP = (additionalScriptSources) => `
19
+ default-src ${alwaysAllowedCSPSources};
20
+ connect-src ${alwaysAllowedCSPSources} https://*.sentry.io https://sdk.split.io https://*.datadoghq.eu https://*.browser-intake-datadoghq.eu;
21
+ font-src ${alwaysAllowedCSPSources} data:;
22
+ img-src ${alwaysAllowedCSPSources} www.googletagmanager.com data:;
23
+ object-src 'none';
24
+ script-src ${alwaysAllowedCSPSources} https://www.googletagmanager.com
25
+ 'sha256-HDWAgfTeMAguT8wFw7+92Y7i4Eo/6RUQQuA3TW9JxbA='
26
+ ${additionalScriptSources ? ' ' + additionalScriptSources : ''};
27
+ style-src ${alwaysAllowedCSPSources} 'unsafe-inline';
28
+ base-uri 'self';
29
+ form-action ${alwaysAllowedCSPSources};
30
+ frame-ancestors ${alwaysAllowedCSPSources};
31
+ frame-src 'self' ${alwaysAllowedCSPSources};
32
+ `
33
+ .replace(/[\r\n\s]+/g, ' ')
34
+ .trim();
35
+ /**
36
+ * A Construct which creates a default cloudfront distribution using a s3 bucket as origin.
37
+ * Intended for delivery of html documents. It sets some defaults a recommended by AWS and provides basic security header.
38
+ * Requires installation of the custom-resource-certificate.
39
+ *
40
+ */
41
+ class RioCloudfrontDistribution extends constructs_1.Construct {
42
+ constructor(scope, id, props) {
43
+ var _b, _c, _d;
44
+ super(scope, id);
45
+ const hostedZone = (_b = props.hostedZone) !== null && _b !== void 0 ? _b : rio_landing_zone_1.RioLandingZone.getDefaultHostedZone(this);
46
+ const subDomain = (_c = props.subDomain) !== null && _c !== void 0 ? _c : '';
47
+ const domainName = props.subDomain === undefined ? hostedZone.zoneName : subDomain + '.' + hostedZone.zoneName;
48
+ const defaultContentSecurityPolicy = exports.createRioDefaultCSP();
49
+ const contentSecurityPolicy = (_d = props.contentSecurityPolicy) !== null && _d !== void 0 ? _d : defaultContentSecurityPolicy;
50
+ // Certificate created via Custom Resource due to other region
51
+ const certificate = new aws_cdk_lib_1.CustomResource(this, 'Certificate', {
52
+ resourceType: 'Custom::Certificate',
53
+ serviceToken: aws_cdk_lib_1.Fn.importValue('custom-resource-certificate-function-arn'),
54
+ properties: {
55
+ DomainName: domainName,
56
+ HostedZoneId: hostedZone.hostedZoneId,
57
+ Region: 'us-east-1',
58
+ },
59
+ });
60
+ const originAccessIdentity = new cloudfront.OriginAccessIdentity(this, 'OriginAccessIdentity', {
61
+ comment: `AccessIdentity for ${domainName}`,
62
+ });
63
+ const bucket = new s3.Bucket(this, 'FrontEndBucket', {
64
+ bucketName: props.contentBucketName,
65
+ encryption: s3.BucketEncryption.S3_MANAGED,
66
+ versioned: true,
67
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
68
+ autoDeleteObjects: true,
69
+ lifecycleRules: [
70
+ {
71
+ id: 'ExpiresObjects',
72
+ expiration: aws_cdk_lib_1.Duration.days(90),
73
+ noncurrentVersionExpiration: aws_cdk_lib_1.Duration.days(30),
74
+ },
75
+ ],
76
+ enforceSSL: true,
77
+ cors: [
78
+ {
79
+ allowedMethods: [s3.HttpMethods.GET],
80
+ allowedOrigins: ['*'],
81
+ allowedHeaders: ['*'],
82
+ },
83
+ ],
84
+ });
85
+ bucket.grantRead(new iam.CanonicalUserPrincipal(originAccessIdentity.cloudFrontOriginAccessIdentityS3CanonicalUserId), '*');
86
+ const responseHeadersPolicy = new cloudfront.ResponseHeadersPolicy(this, 'ResponseHeadersPolicy', {
87
+ comment: 'Policy for CloudFront responses',
88
+ corsBehavior: {
89
+ accessControlAllowCredentials: false,
90
+ accessControlAllowHeaders: ['*'],
91
+ accessControlAllowMethods: ['GET'],
92
+ accessControlAllowOrigins: [hostedZone.zoneName],
93
+ accessControlMaxAge: aws_cdk_lib_1.Duration.seconds(600),
94
+ originOverride: true,
95
+ },
96
+ securityHeadersBehavior: {
97
+ contentSecurityPolicy: {
98
+ contentSecurityPolicy: contentSecurityPolicy,
99
+ override: true,
100
+ },
101
+ contentTypeOptions: { override: true },
102
+ frameOptions: { frameOption: cloudfront.HeadersFrameOption.DENY, override: true },
103
+ referrerPolicy: {
104
+ referrerPolicy: cloudfront.HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
105
+ override: true,
106
+ },
107
+ strictTransportSecurity: {
108
+ accessControlMaxAge: aws_cdk_lib_1.Duration.days(365),
109
+ includeSubdomains: true,
110
+ override: true,
111
+ },
112
+ xssProtection: {
113
+ protection: true,
114
+ modeBlock: true,
115
+ override: true,
116
+ },
117
+ },
118
+ });
119
+ const distribution = new cloudfront.Distribution(this, 'Distribution', {
120
+ defaultBehavior: {
121
+ origin: new origins.S3Origin(bucket),
122
+ originRequestPolicy: cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
123
+ viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
124
+ cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED,
125
+ responseHeadersPolicy: responseHeadersPolicy,
126
+ compress: true,
127
+ },
128
+ domainNames: [domainName],
129
+ priceClass: cloudfront.PriceClass.PRICE_CLASS_100,
130
+ certificate: acm.Certificate.fromCertificateArn(this, 'AcmCertificate', certificate.ref),
131
+ defaultRootObject: 'index.html',
132
+ minimumProtocolVersion: cloudfront.SecurityPolicyProtocol.TLS_V1_2_2018,
133
+ errorResponses: [
134
+ {
135
+ httpStatus: 404,
136
+ responseHttpStatus: 200,
137
+ responsePagePath: '/index.html',
138
+ ttl: aws_cdk_lib_1.Duration.minutes(5),
139
+ },
140
+ {
141
+ httpStatus: 403,
142
+ responseHttpStatus: 200,
143
+ responsePagePath: '/index.html',
144
+ ttl: aws_cdk_lib_1.Duration.minutes(5),
145
+ },
146
+ ],
147
+ });
148
+ new route53.RecordSet(this, 'RecordSet', {
149
+ recordName: subDomain,
150
+ target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
151
+ zone: hostedZone,
152
+ recordType: route53.RecordType.A,
153
+ });
154
+ }
155
+ }
156
+ exports.RioCloudfrontDistribution = RioCloudfrontDistribution;
157
+ _a = JSII_RTTI_SYMBOL_1;
158
+ RioCloudfrontDistribution[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.RioCloudfrontDistribution", version: "0.0.0" };
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWNsb3VkZnJvbnQtZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvY29wLWZyb250ZW5kL2Nsb3VkZnJvbnQvcmlvLWNsb3VkZnJvbnQtZGlzdHJpYnV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBFO0FBQzFFLDBEQUEwRDtBQUMxRCx5REFBeUQ7QUFDekQsOERBQThEO0FBQzlELDJDQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsMkRBQTJEO0FBQzNELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFDdkMsZ0VBQTJEO0FBaUMzRCxNQUFNLHVCQUF1QixHQUFHLDhDQUE4QyxDQUFDO0FBQy9FLHdGQUF3RjtBQUMzRSxRQUFBLG1CQUFtQixHQUFHLENBQUMsdUJBQWdDLEVBQUUsRUFBRSxDQUFDO3FCQUNwRCx1QkFBdUI7cUJBQ3ZCLHVCQUF1QjtrQkFDMUIsdUJBQXVCO2lCQUN4Qix1QkFBdUI7O29CQUVwQix1QkFBdUI7O1VBRWpDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLEVBQUU7bUJBQ25ELHVCQUF1Qjs7cUJBRXJCLHVCQUF1Qjt5QkFDbkIsdUJBQXVCOzBCQUN0Qix1QkFBdUI7UUFDekM7S0FDTCxPQUFPLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQztLQUMxQixJQUFJLEVBQUUsQ0FBQztBQUVWOzs7OztHQUtHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxzQkFBUztJQUN0RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFDOztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxTQUFHLEtBQUssQ0FBQyxVQUFVLG1DQUFJLGlDQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsTUFBTSxTQUFTLFNBQUcsS0FBSyxDQUFDLFNBQVMsbUNBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFFL0csTUFBTSw0QkFBNEIsR0FBRywyQkFBbUIsRUFBRSxDQUFDO1FBQzNELE1BQU0scUJBQXFCLFNBQUcsS0FBSyxDQUFDLHFCQUFxQixtQ0FBSSw0QkFBNEIsQ0FBQztRQUUxRiw4REFBOEQ7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDMUQsWUFBWSxFQUFFLHFCQUFxQjtZQUNuQyxZQUFZLEVBQUUsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsMENBQTBDLENBQUM7WUFDeEUsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQVk7Z0JBQ3JDLE1BQU0sRUFBRSxXQUFXO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDN0YsT0FBTyxFQUFFLHNCQUFzQixVQUFVLEVBQUU7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNuRCxVQUFVLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUNuQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7WUFDMUMsU0FBUyxFQUFFLElBQUk7WUFDZixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsY0FBYyxFQUFFO2dCQUNkO29CQUNFLEVBQUUsRUFBRSxnQkFBZ0I7b0JBQ3BCLFVBQVUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzdCLDJCQUEyQixFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztpQkFDL0M7YUFDRjtZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRTtnQkFDSjtvQkFDRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDcEMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNyQixjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ3RCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsU0FBUyxDQUNkLElBQUksR0FBRyxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLCtDQUErQyxDQUFDLEVBQ3BHLEdBQUcsQ0FDSixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDaEcsT0FBTyxFQUFFLGlDQUFpQztZQUMxQyxZQUFZLEVBQUU7Z0JBQ1osNkJBQTZCLEVBQUUsS0FBSztnQkFDcEMseUJBQXlCLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hDLHlCQUF5QixFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNsQyx5QkFBeUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hELG1CQUFtQixFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDMUMsY0FBYyxFQUFFLElBQUk7YUFDckI7WUFDRCx1QkFBdUIsRUFBRTtnQkFDdkIscUJBQXFCLEVBQUU7b0JBQ3JCLHFCQUFxQixFQUFFLHFCQUFxQjtvQkFDNUMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNqRixjQUFjLEVBQUU7b0JBQ2QsY0FBYyxFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7b0JBQ2hGLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELHVCQUF1QixFQUFFO29CQUN2QixtQkFBbUIsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQ3ZDLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3JFLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDcEMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWM7Z0JBQ2xFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUI7Z0JBQ3ZFLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtnQkFDckQscUJBQXFCLEVBQUUscUJBQXFCO2dCQUM1QyxRQUFRLEVBQUUsSUFBSTthQUNmO1lBQ0QsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLGVBQWU7WUFDakQsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDeEYsaUJBQWlCLEVBQUUsWUFBWTtZQUMvQixzQkFBc0IsRUFBRSxVQUFVLENBQUMsc0JBQXNCLENBQUMsYUFBYTtZQUN2RSxjQUFjLEVBQUU7Z0JBQ2Q7b0JBQ0UsVUFBVSxFQUFFLEdBQUc7b0JBQ2Ysa0JBQWtCLEVBQUUsR0FBRztvQkFDdkIsZ0JBQWdCLEVBQUUsYUFBYTtvQkFDL0IsR0FBRyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDekI7Z0JBQ0Q7b0JBQ0UsVUFBVSxFQUFFLEdBQUc7b0JBQ2Ysa0JBQWtCLEVBQUUsR0FBRztvQkFDdkIsZ0JBQWdCLEVBQUUsYUFBYTtvQkFDL0IsR0FBRyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDekI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRixJQUFJLEVBQUUsVUFBVTtZQUNoQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBM0hILDhEQTRIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgRm4sIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBhY20gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlcic7XG5pbXBvcnQgKiBhcyBjbG91ZGZyb250IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIG9yaWdpbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2lucyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uLy4uLy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuXG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBSaW9DbG91ZGZyb250RGlzdHJpYnV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvQ2xvdWRmcm9udERpc3RyaWJ1dGlvblByb3BzIHtcbiAgLyoqXG4gICAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgUzMgYnVja2V0IGNvbnRhaW5pbmcgdGhlIGZpbGVzIHRvIHNlcnZlXG4gICAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAgICogVGhlIHN1YmRvbWFpbiB3aGVyZSB0aGUgY29udGVudCBzaG91bGQgYmUgc2VydmVkLiBJZiBub3QgZ2l2ZW4sIGFuIGVtcHR5IHN0cmluZywgaS5lLiBubyBzdWJEb21haW4gd2lsbCBiZSB1c2VkLlxuICAgICAqIEluc3RlYWQsIHRoZSBuYW1lIG9mIHRoZSBob3N0ZWQgem9uZSB3aWxsIGJlIHVzZWQgZGlyZWN0bHkuXG4gICAgICovXG4gIHJlYWRvbmx5IHN1YkRvbWFpbj86IHN0cmluZztcblxuICAvKipcbiAgICAgKiBUaGUgaG9zdGVkIHpvbmUgb2YgdGhlIGRvbWFpbiB1bmRlciB3aGljaCB0aGUgY29udGVudCB3aWxsIGJlIHNlcnZlZC4gSWYgbm90IGdpdmVuLCB0aGUgZGVmYXVsdCBob3N0ZWQgWm9uZVxuICAgICAqIHByb3ZpZGVkIGJ5IFJJTyBzZXR1cCB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmU/OiByb3V0ZTUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgICAqIFRoZSBjb250ZW50IFNlY3VyaXR5IFBvbGljeSB0byBiZSBzZW50IGFzIGEgaGVhZGVyIHdoZW4gZGVsaXZlcmluZyB0aGUgYnVja2V0IGNvbnRlbnQuXG4gICAgICogSWYgbm90IHNldCwgYSByaW8gRGVmYXVsdCB3aWxsIGJlIHVzZWQuIFRoZSBkZWZhdWx0IHNob3VsZCBjb3ZlciBjb25uZWN0aW9ucyB0byBzcGxpdC5pbywgc2VudHJ5IGFuZCBkYXRhZG9nLFxuICAgICAqIGFzIHdlbGwgYXMgYSBoYXNoIHRvIHN1cHBvcnQgZ29vZ2xlIHRhZ01hbmdlci4gVGhlIGxhdHRlciBtaWdodCBuZWVkIHRvIGJlIGFkYXB0ZWQgaWYgeW91IGNoYW5nZSB0aGUgbWluaWZpY2F0aW9uIG9mXG4gICAgICogdGhlIGluZGV4Lmh0bWwsIGluIHdoaWNoIGNhc2UgeW91IGNhbiBwcm92aWRlIHlvdXIgY3NwIGhlcmUuXG4gICAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRTZWN1cml0eVBvbGljeT86IHN0cmluZztcbn1cblxuY29uc3QgYWx3YXlzQWxsb3dlZENTUFNvdXJjZXMgPSBcIidzZWxmJyBodHRwczovLyoucmlvLmNsb3VkIGh0dHBzOi8vcmlvLmNsb3VkXCI7XG4vLyBUaGUgaGFzaCBpbiBzY3JpcHQgc3JjIGlzIGZvciB0aGUgZ29vZ2xlIHRhZ01hbmFnZXIgc2NyaXB0IGluY2x1ZGVkIGluIHRoZSBpbmRleC5odG1sXG5leHBvcnQgY29uc3QgY3JlYXRlUmlvRGVmYXVsdENTUCA9IChhZGRpdGlvbmFsU2NyaXB0U291cmNlcz86IHN0cmluZykgPT4gYFxuICAgICAgIGRlZmF1bHQtc3JjICR7YWx3YXlzQWxsb3dlZENTUFNvdXJjZXN9O1xuICAgICAgIGNvbm5lY3Qtc3JjICR7YWx3YXlzQWxsb3dlZENTUFNvdXJjZXN9IGh0dHBzOi8vKi5zZW50cnkuaW8gaHR0cHM6Ly9zZGsuc3BsaXQuaW8gaHR0cHM6Ly8qLmRhdGFkb2docS5ldSBodHRwczovLyouYnJvd3Nlci1pbnRha2UtZGF0YWRvZ2hxLmV1O1xuICAgICAgIGZvbnQtc3JjICR7YWx3YXlzQWxsb3dlZENTUFNvdXJjZXN9IGRhdGE6O1xuICAgICAgIGltZy1zcmMgJHthbHdheXNBbGxvd2VkQ1NQU291cmNlc30gd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIGRhdGE6O1xuICAgICAgIG9iamVjdC1zcmMgJ25vbmUnO1xuICAgICAgIHNjcmlwdC1zcmMgJHthbHdheXNBbGxvd2VkQ1NQU291cmNlc30gaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb21cbiAgICAgICAgJ3NoYTI1Ni1IRFdBZ2ZUZU1BZ3VUOHdGdzcrOTJZN2k0RW8vNlJVUVF1QTNUVzlKeGJBPSdcbiAgICAgICAgJHthZGRpdGlvbmFsU2NyaXB0U291cmNlcyA/ICcgJyArIGFkZGl0aW9uYWxTY3JpcHRTb3VyY2VzIDogJyd9O1xuICAgICAgIHN0eWxlLXNyYyAke2Fsd2F5c0FsbG93ZWRDU1BTb3VyY2VzfSAndW5zYWZlLWlubGluZSc7XG4gICAgICAgYmFzZS11cmkgJ3NlbGYnO1xuICAgICAgIGZvcm0tYWN0aW9uICR7YWx3YXlzQWxsb3dlZENTUFNvdXJjZXN9O1xuICAgICAgIGZyYW1lLWFuY2VzdG9ycyAke2Fsd2F5c0FsbG93ZWRDU1BTb3VyY2VzfTtcbiAgICAgICBmcmFtZS1zcmMgJ3NlbGYnICR7YWx3YXlzQWxsb3dlZENTUFNvdXJjZXN9O1xuICAgICAgIGBcbiAgLnJlcGxhY2UoL1tcXHJcXG5cXHNdKy9nLCAnICcpXG4gIC50cmltKCk7XG5cbi8qKlxuICogQSBDb25zdHJ1Y3Qgd2hpY2ggY3JlYXRlcyBhIGRlZmF1bHQgY2xvdWRmcm9udCBkaXN0cmlidXRpb24gdXNpbmcgYSBzMyBidWNrZXQgYXMgb3JpZ2luLlxuICogSW50ZW5kZWQgZm9yIGRlbGl2ZXJ5IG9mIGh0bWwgZG9jdW1lbnRzLiBJdCBzZXRzIHNvbWUgZGVmYXVsdHMgYSByZWNvbW1lbmRlZCBieSBBV1MgYW5kIHByb3ZpZGVzIGJhc2ljIHNlY3VyaXR5IGhlYWRlci5cbiAqIFJlcXVpcmVzIGluc3RhbGxhdGlvbiBvZiB0aGUgY3VzdG9tLXJlc291cmNlLWNlcnRpZmljYXRlLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFJpb0Nsb3VkZnJvbnREaXN0cmlidXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvQ2xvdWRmcm9udERpc3RyaWJ1dGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBwcm9wcy5ob3N0ZWRab25lID8/IFJpb0xhbmRpbmdab25lLmdldERlZmF1bHRIb3N0ZWRab25lKHRoaXMpO1xuICAgIGNvbnN0IHN1YkRvbWFpbiA9IHByb3BzLnN1YkRvbWFpbiA/PyAnJztcbiAgICBjb25zdCBkb21haW5OYW1lID0gcHJvcHMuc3ViRG9tYWluID09PSB1bmRlZmluZWQgPyBob3N0ZWRab25lLnpvbmVOYW1lIDogc3ViRG9tYWluICsgJy4nICsgaG9zdGVkWm9uZS56b25lTmFtZTtcblxuICAgIGNvbnN0IGRlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjcmVhdGVSaW9EZWZhdWx0Q1NQKCk7XG4gICAgY29uc3QgY29udGVudFNlY3VyaXR5UG9saWN5ID0gcHJvcHMuY29udGVudFNlY3VyaXR5UG9saWN5ID8/IGRlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3k7XG5cbiAgICAvLyBDZXJ0aWZpY2F0ZSBjcmVhdGVkIHZpYSBDdXN0b20gUmVzb3VyY2UgZHVlIHRvIG90aGVyIHJlZ2lvblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdDZXJ0aWZpY2F0ZScsIHtcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6Q2VydGlmaWNhdGUnLFxuICAgICAgc2VydmljZVRva2VuOiBGbi5pbXBvcnRWYWx1ZSgnY3VzdG9tLXJlc291cmNlLWNlcnRpZmljYXRlLWZ1bmN0aW9uLWFybicpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBEb21haW5OYW1lOiBkb21haW5OYW1lLFxuICAgICAgICBIb3N0ZWRab25lSWQ6IGhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICBSZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG9yaWdpbkFjY2Vzc0lkZW50aXR5ID0gbmV3IGNsb3VkZnJvbnQuT3JpZ2luQWNjZXNzSWRlbnRpdHkodGhpcywgJ09yaWdpbkFjY2Vzc0lkZW50aXR5Jywge1xuICAgICAgY29tbWVudDogYEFjY2Vzc0lkZW50aXR5IGZvciAke2RvbWFpbk5hbWV9YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0Zyb250RW5kQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuY29udGVudEJ1Y2tldE5hbWUsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0V4cGlyZXNPYmplY3RzJyxcbiAgICAgICAgICBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDkwKSxcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBjb3JzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogW3MzLkh0dHBNZXRob2RzLkdFVF0sXG4gICAgICAgICAgYWxsb3dlZE9yaWdpbnM6IFsnKiddLFxuICAgICAgICAgIGFsbG93ZWRIZWFkZXJzOiBbJyonXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYnVja2V0LmdyYW50UmVhZChcbiAgICAgIG5ldyBpYW0uQ2Fub25pY2FsVXNlclByaW5jaXBhbChvcmlnaW5BY2Nlc3NJZGVudGl0eS5jbG91ZEZyb250T3JpZ2luQWNjZXNzSWRlbnRpdHlTM0Nhbm9uaWNhbFVzZXJJZCksXG4gICAgICAnKicsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IG5ldyBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAnUmVzcG9uc2VIZWFkZXJzUG9saWN5Jywge1xuICAgICAgY29tbWVudDogJ1BvbGljeSBmb3IgQ2xvdWRGcm9udCByZXNwb25zZXMnLFxuICAgICAgY29yc0JlaGF2aW9yOiB7XG4gICAgICAgIGFjY2Vzc0NvbnRyb2xBbGxvd0NyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICAgICAgYWNjZXNzQ29udHJvbEFsbG93SGVhZGVyczogWycqJ10sXG4gICAgICAgIGFjY2Vzc0NvbnRyb2xBbGxvd01ldGhvZHM6IFsnR0VUJ10sXG4gICAgICAgIGFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbnM6IFtob3N0ZWRab25lLnpvbmVOYW1lXSxcbiAgICAgICAgYWNjZXNzQ29udHJvbE1heEFnZTogRHVyYXRpb24uc2Vjb25kcyg2MDApLFxuICAgICAgICBvcmlnaW5PdmVycmlkZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBzZWN1cml0eUhlYWRlcnNCZWhhdmlvcjoge1xuICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IGNvbnRlbnRTZWN1cml0eVBvbGljeSxcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudFR5cGVPcHRpb25zOiB7IG92ZXJyaWRlOiB0cnVlIH0sXG4gICAgICAgIGZyYW1lT3B0aW9uczogeyBmcmFtZU9wdGlvbjogY2xvdWRmcm9udC5IZWFkZXJzRnJhbWVPcHRpb24uREVOWSwgb3ZlcnJpZGU6IHRydWUgfSxcbiAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHtcbiAgICAgICAgICByZWZlcnJlclBvbGljeTogY2xvdWRmcm9udC5IZWFkZXJzUmVmZXJyZXJQb2xpY3kuU1RSSUNUX09SSUdJTl9XSEVOX0NST1NTX09SSUdJTixcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgICAgICAgaW5jbHVkZVN1YmRvbWFpbnM6IHRydWUsXG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHhzc1Byb3RlY3Rpb246IHtcbiAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgIG1vZGVCbG9jazogdHJ1ZSxcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBkaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24odGhpcywgJ0Rpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW46IG5ldyBvcmlnaW5zLlMzT3JpZ2luKGJ1Y2tldCksXG4gICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3k6IGNsb3VkZnJvbnQuT3JpZ2luUmVxdWVzdFBvbGljeS5DT1JTX1MzX09SSUdJTixcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgIGNhY2hlUG9saWN5OiBjbG91ZGZyb250LkNhY2hlUG9saWN5LkNBQ0hJTkdfT1BUSU1JWkVELFxuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IHJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICB9LFxuICAgICAgZG9tYWluTmFtZXM6IFtkb21haW5OYW1lXSxcbiAgICAgIHByaWNlQ2xhc3M6IGNsb3VkZnJvbnQuUHJpY2VDbGFzcy5QUklDRV9DTEFTU18xMDAsXG4gICAgICBjZXJ0aWZpY2F0ZTogYWNtLkNlcnRpZmljYXRlLmZyb21DZXJ0aWZpY2F0ZUFybih0aGlzLCAnQWNtQ2VydGlmaWNhdGUnLCBjZXJ0aWZpY2F0ZS5yZWYpLFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6ICdpbmRleC5odG1sJyxcbiAgICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb246IGNsb3VkZnJvbnQuU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDE4LFxuICAgICAgZXJyb3JSZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGh0dHBTdGF0dXM6IDQwNCxcbiAgICAgICAgICByZXNwb25zZUh0dHBTdGF0dXM6IDIwMCxcbiAgICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiAnL2luZGV4Lmh0bWwnLFxuICAgICAgICAgIHR0bDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGh0dHBTdGF0dXM6IDQwMyxcbiAgICAgICAgICByZXNwb25zZUh0dHBTdGF0dXM6IDIwMCxcbiAgICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiAnL2luZGV4Lmh0bWwnLFxuICAgICAgICAgIHR0bDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBuZXcgcm91dGU1My5SZWNvcmRTZXQodGhpcywgJ1JlY29yZFNldCcsIHtcbiAgICAgIHJlY29yZE5hbWU6IHN1YkRvbWFpbixcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKG5ldyB0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICB6b25lOiBob3N0ZWRab25lLFxuICAgICAgcmVjb3JkVHlwZTogcm91dGU1My5SZWNvcmRUeXBlLkEsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import * as constructs from 'constructs';
2
2
  import { DatadogOrganization } from '../../../datadog';
3
- import { DatadogAlertType } from '../../../datadog/datadogMonitor';
3
+ import { DatadogAlertType } from '../../../datadog/datadog-monitor';
4
4
  export interface DatadogUsageMonitoringProps {
5
5
  readonly serviceName: string;
6
6
  readonly alertType: DatadogAlertType;
@@ -7,7 +7,7 @@ const path = require("path");
7
7
  const ssm = require("aws-cdk-lib/aws-ssm");
8
8
  const constructs = require("constructs");
9
9
  const datadog_1 = require("../../../datadog");
10
- const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
10
+ const datadog_monitor_1 = require("../../../datadog/datadog-monitor");
11
11
  const rio_claidometer_1 = require("../../../rio-claidometer");
12
12
  /**
13
13
  * This is a beta construct and is likely to have breaking changes.
@@ -115,7 +115,7 @@ class DatadogUsageMonitoring extends constructs.Construct {
115
115
  }
116
116
  createAnomalyMonitorForSpikes(serviceName, teamName, alertType, usageSpikeMonitor) {
117
117
  var _b;
118
- return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
118
+ return new datadog_monitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
119
119
  serviceName,
120
120
  alertTypes: [alertType],
121
121
  monitor: {
@@ -151,4 +151,4 @@ function addClaidometer(scope) {
151
151
  version: '0.0.7',
152
152
  });
153
153
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsOENBQWlGO0FBQ2pGLG9FQUFtRjtBQUNuRiw4REFBMkU7QUFjM0U7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWhILE1BQU0sZ0NBQWdDLEdBQXdCO1lBQzVEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtZQUNELEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUN6RixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtZQUMxRjtnQkFDRSxpQkFBaUIsRUFBRSxnQkFBZ0I7Z0JBQ25DLEtBQUssRUFBRSwrQ0FBK0M7YUFDdkQ7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw4Q0FBOEM7Z0JBQ2pFLEtBQUssRUFBRSxtRUFBbUU7YUFDM0U7U0FDRixDQUFDO1FBRUYs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YyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRSxXQUFXO1lBQ1gsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsUUFBUTtnQkFDcEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSwyQkFBMkIsaUJBQWlCLENBQUMsS0FBSyx5SkFBeUo7Z0JBQ2xOLE9BQU8sRUFBRSxRQUFRLGlCQUFpQixDQUFDLGlCQUFpQixnQ0FDbEQsTUFBQSxpQkFBaUIsQ0FBQyxpQkFBaUIsbUNBQUksRUFDekMsRUFBRTtnQkFDRixPQUFPLEVBQUU7b0JBQ1AsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLGNBQWMsRUFBRSxLQUFLO29CQUNyQixpQkFBaUIsRUFBRTt3QkFDakIsY0FBYyxFQUFFLFVBQVU7d0JBQzFCLGVBQWUsRUFBRSxVQUFVO3FCQUM1QjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osV0FBVyxXQUFXLEVBQUU7b0JBQ3hCLFFBQVEsUUFBUSxFQUFFO2lCQUNuQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6Skgsd0RBMEpDOzs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUEyQjtJQUNqRCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25FLElBQUksNkJBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1FBQ3BDLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7UUFDNUMsV0FBVztRQUNYLE9BQU87UUFDUCxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhZG9nT3JnYW5pemF0aW9uLCBnZXRPcmdhbml6YXRpb25VcmxQcmVmaXggfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nJztcbmltcG9ydCB7IERhdGFkb2dBbGVydFR5cGUsIERhdGFkb2dNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nTW9uaXRvcic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGJldGEgY29uc3RydWN0IGFuZCBpcyBsaWtlbHkgdG8gaGF2ZSBicmVha2luZyBjaGFuZ2VzLlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIG1vbml0b3JpbmcgKGJhc2VkIG9uIGFub21hbHkgZGV0ZWN0aW9uKSBmb3IgdGhlIHVzYWdlIG9mIHRoZSBtb3N0IHJlbGV2YW50IERhdGFkb2cgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZGF0YWRvZ19pbmRleD17e2RhdGFkb2dfaW5kZXgubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBsb2dNYW5hZ2VtZW50VXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmRleGluZyBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9lbnY9e3tlbnYubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhcG1Vc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnQVBNIGhvc3RzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJBUE0gaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5nZXN0aW9uIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZGV4aW5nIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnU3ludGhldGljIEFQSSB0ZXN0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnN5bnRoZXRpY3MuYXBpX3Rlc3RfcnVuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc2VydmVybGVzcyBmdW5jdGlvbnMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNlcnZlcmxlc3MgZnVuY3Rpb25zIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IHVzYWdlU3Bpa2VNb25pdG9yIG9mIChbXSBhcyBVc2FnZVNwaWtlTW9uaXRvcltdKS5jb25jYXQoXG4gICAgICBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBhcG1Vc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICkpIHtcbiAgICAgIHRoaXMuY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMocHJvcHMuc2VydmljZU5hbWUsIHRlYW1OYW1lLCBwcm9wcy5hbGVydFR5cGUsIHVzYWdlU3Bpa2VNb25pdG9yKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMub3JnYW5pemF0aW9uID09PSAnRVUnKSB7XG4gICAgICBhZGRDbGFpZG9tZXRlcih0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFub21hbHlNb25pdG9yRm9yU3Bpa2VzKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGUsXG4gICAgdXNhZ2VTcGlrZU1vbml0b3I6IFVzYWdlU3Bpa2VNb25pdG9yLFxuICApOiBEYXRhZG9nTW9uaXRvciB7XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCB1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZSwge1xuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbYWxlcnRUeXBlXSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgbmFtZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IHNwaWtlYCxcbiAgICAgICAgdHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgcXVlcnk6IGBhdmcobGFzdF8xMmgpOmFub21hbGllcygke3VzYWdlU3Bpa2VNb25pdG9yLnF1ZXJ5fSwgJ2FnaWxlJywgMywgZGlyZWN0aW9uPSdhYm92ZScsIGludGVydmFsPTEyMCwgYWxlcnRfd2luZG93PSdsYXN0XzMwbScsIHNlYXNvbmFsaXR5PSd3ZWVrbHknLCB0aW1lem9uZT0nZXVyb3BlL2JlcmxpbicsIGNvdW50X2RlZmF1bHRfemVybz0ndHJ1ZScpID49IDFgLFxuICAgICAgICBtZXNzYWdlOiBgW1A0XSAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBhcmUgZ2V0dGluZyBvdXQtb2YtY29udHJvbC4gJHtcbiAgICAgICAgICB1c2FnZVNwaWtlTW9uaXRvci5hZGRpdGlvbmFsTWVzc2FnZSA/PyAnJ1xuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGluY2x1ZGVfdGFnczogZmFsc2UsXG4gICAgICAgICAgbm90aWZ5X25vX2RhdGE6IGZhbHNlLFxuICAgICAgICAgIHRocmVzaG9sZF93aW5kb3dzOiB7XG4gICAgICAgICAgICB0cmlnZ2VyX3dpbmRvdzogJ2xhc3RfMzBtJyxcbiAgICAgICAgICAgIHJlY292ZXJ5X3dpbmRvdzogJ2xhc3RfMTVtJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgYHNlcnZpY2U6JHtzZXJ2aWNlTmFtZX1gLFxuICAgICAgICAgIGB0ZWFtOiR7dGVhbU5hbWV9YCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhaWRvbWV0ZXIoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgbmV3IENsYWlkb21ldGVyKHNjb3BlLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgcGFja2FnZU5hbWUsXG4gICAgZmVhdHVyZSxcbiAgICB2ZXJzaW9uOiAnMC4wLjcnLFxuICB9KTtcbn1cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsOENBQWlGO0FBQ2pGLHNFQUFvRjtBQUNwRiw4REFBMkU7QUFjM0U7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWhILE1BQU0sZ0NBQWdDLEdBQXdCO1lBQzVEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtZQUNELEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUN6RixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtZQUMxRjtnQkFDRSxpQkFBaUIsRUFBRSxnQkFBZ0I7Z0JBQ25DLEtBQUssRUFBRSwrQ0FBK0M7YUFDdkQ7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw4Q0FBOEM7Z0JBQ2pFLEtBQUssRUFBRSxtRUFBbUU7YUFDM0U7U0FDRixDQUFDO1FBRUYs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YyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRSxXQUFXO1lBQ1gsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsUUFBUTtnQkFDcEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSwyQkFBMkIsaUJBQWlCLENBQUMsS0FBSyx5SkFBeUo7Z0JBQ2xOLE9BQU8sRUFBRSxRQUFRLGlCQUFpQixDQUFDLGlCQUFpQixnQ0FDbEQsTUFBQSxpQkFBaUIsQ0FBQyxpQkFBaUIsbUNBQUksRUFDekMsRUFBRTtnQkFDRixPQUFPLEVBQUU7b0JBQ1AsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLGNBQWMsRUFBRSxLQUFLO29CQUNyQixpQkFBaUIsRUFBRTt3QkFDakIsY0FBYyxFQUFFLFVBQVU7d0JBQzFCLGVBQWUsRUFBRSxVQUFVO3FCQUM1QjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osV0FBVyxXQUFXLEVBQUU7b0JBQ3hCLFFBQVEsUUFBUSxFQUFFO2lCQUNuQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6Skgsd0RBMEpDOzs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUEyQjtJQUNqRCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25FLElBQUksNkJBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1FBQ3BDLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7UUFDNUMsV0FBVztRQUNYLE9BQU87UUFDUCxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhZG9nT3JnYW5pemF0aW9uLCBnZXRPcmdhbml6YXRpb25VcmxQcmVmaXggfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nJztcbmltcG9ydCB7IERhdGFkb2dBbGVydFR5cGUsIERhdGFkb2dNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nLW1vbml0b3InO1xuaW1wb3J0IHsgQ2xhaWRvbWV0ZXIsIENsYWlkb21ldGVyUHJvZHVjdCB9IGZyb20gJy4uLy4uLy4uL3Jpby1jbGFpZG9tZXRlcic7XG5cbmludGVyZmFjZSBVc2FnZVNwaWtlTW9uaXRvciB7XG4gIGh1bWFuUmVhZGFibGVOYW1lOiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxNZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dVc2FnZU1vbml0b3JpbmdQcm9wcyB7XG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZTtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9yaW5nIChiYXNlZCBvbiBhbm9tYWx5IGRldGVjdGlvbikgZm9yIHRoZSB1c2FnZSBvZiB0aGUgbW9zdCByZWxldmFudCBEYXRhZG9nIHJlc291cmNlc1xuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZyBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbU5hbWUnLCAnL2NvbmZpZy90ZWFtL25hbWUnKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2luZnJhc3RydWN0dXJlIGhvc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiaW5mcmFzdHJ1Y3R1cmUgaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ0ZhcmdhdGUgdGFza3MnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmFwbS5mYXJnYXRlX3Rhc2tfaW5zdGFuY2V7Kn0nIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAncHJvZmlsZWQgRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cucHJvZmlsaW5nLmZhcmdhdGV7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnY3VzdG9tIG1ldHJpY3MnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJjdXN0b20gbWV0cmljcyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlIGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2RhdGFkb2dfaW5kZXg9e3tkYXRhZG9nX2luZGV4Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5nZXN0aW9uIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5kZXhpbmcgZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDg5L2FwbS10cmFjZXMtZXN0aW1hdGVkLXVzYWdlIGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDg5L2FwbS10cmFjZXMtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZW52PXt7ZW52Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYXBtVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ0FQTSBob3N0cycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbV9ob3N0c3sqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiQVBNIGhvc3RzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbV9ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc3BhbiBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZ2VzdGlvbiBmb3IgJ3t7ZW52Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc3BhbiBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmRleGluZyBmb3IgJ3t7ZW52Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ1N5bnRoZXRpYyBBUEkgdGVzdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zeW50aGV0aWNzLmFwaV90ZXN0X3J1bnN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NlcnZlcmxlc3MgZnVuY3Rpb25zJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzZXJ2ZXJsZXNzIGZ1bmN0aW9ucyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCB1c2FnZVNwaWtlTW9uaXRvciBvZiAoW10gYXMgVXNhZ2VTcGlrZU1vbml0b3JbXSkuY29uY2F0KFxuICAgICAgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBsb2dNYW5hZ2VtZW50VXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgYXBtVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc2VydmVybGVzc1VzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHN5bnRoZXRpY1VzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICApKSB7XG4gICAgICB0aGlzLmNyZWF0ZUFub21hbHlNb25pdG9yRm9yU3Bpa2VzKHByb3BzLnNlcnZpY2VOYW1lLCB0ZWFtTmFtZSwgcHJvcHMuYWxlcnRUeXBlLCB1c2FnZVNwaWtlTW9uaXRvcik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm9yZ2FuaXphdGlvbiA9PT0gJ0VVJykge1xuICAgICAgYWRkQ2xhaWRvbWV0ZXIodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHRlYW1OYW1lOiBzdHJpbmcsXG4gICAgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlLFxuICAgIHVzYWdlU3Bpa2VNb25pdG9yOiBVc2FnZVNwaWtlTW9uaXRvcixcbiAgKTogRGF0YWRvZ01vbml0b3Ige1xuICAgIHJldHVybiBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgdXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWUsIHtcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW2FsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBzcGlrZWAsXG4gICAgICAgIHR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgYXZnKGxhc3RfMTJoKTphbm9tYWxpZXMoJHt1c2FnZVNwaWtlTW9uaXRvci5xdWVyeX0sICdhZ2lsZScsIDMsIGRpcmVjdGlvbj0nYWJvdmUnLCBpbnRlcnZhbD0xMjAsIGFsZXJ0X3dpbmRvdz0nbGFzdF8zMG0nLCBzZWFzb25hbGl0eT0nd2Vla2x5JywgdGltZXpvbmU9J2V1cm9wZS9iZXJsaW4nLCBjb3VudF9kZWZhdWx0X3plcm89J3RydWUnKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYFtQNF0gJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gYXJlIGdldHRpbmcgb3V0LW9mLWNvbnRyb2wuICR7XG4gICAgICAgICAgdXNhZ2VTcGlrZU1vbml0b3IuYWRkaXRpb25hbE1lc3NhZ2UgPz8gJydcbiAgICAgICAgfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiBmYWxzZSxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzMwbScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIGBzZXJ2aWNlOiR7c2VydmljZU5hbWV9YCxcbiAgICAgICAgICBgdGVhbToke3RlYW1OYW1lfWAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsYWlkb21ldGVyKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkge1xuICBjb25zdCBbZmVhdHVyZSwgcGFja2FnZU5hbWVdID0gX19kaXJuYW1lLnNwbGl0KHBhdGguc2VwKS5yZXZlcnNlKCk7XG4gIG5ldyBDbGFpZG9tZXRlcihzY29wZSwgJ0NsYWlkb21ldGVyJywge1xuICAgIHByb2R1Y3Q6IENsYWlkb21ldGVyUHJvZHVjdC5DREtfQ09OVFJJQlVUSU9OLFxuICAgIHBhY2thZ2VOYW1lLFxuICAgIGZlYXR1cmUsXG4gICAgdmVyc2lvbjogJzAuMC43JyxcbiAgfSk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Reference } from 'aws-cdk-lib';
2
2
  import { Construct } from 'constructs';
3
- import { DatadogMonitor } from '../../../datadog/datadogMonitor';
3
+ import { DatadogMonitor } from '../../../datadog/datadog-monitor';
4
4
  interface DatadogPipelineMonitorProps {
5
5
  pipelineName: string | Reference;
6
6
  serviceName: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataDogPipelineErrorAlertForVulnerabilityChecks = exports.DatadogPipelineErrorAlert = void 0;
4
- const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
5
- class DatadogPipelineErrorAlert extends datadogMonitor_1.DatadogMonitor {
4
+ const datadog_monitor_1 = require("../../../datadog/datadog-monitor");
5
+ class DatadogPipelineErrorAlert extends datadog_monitor_1.DatadogMonitor {
6
6
  constructor(scope, id, props) {
7
7
  super(scope, id, {
8
8
  serviceName: props.serviceName,
@@ -20,7 +20,7 @@ class DatadogPipelineErrorAlert extends datadogMonitor_1.DatadogMonitor {
20
20
  }
21
21
  }
22
22
  exports.DatadogPipelineErrorAlert = DatadogPipelineErrorAlert;
23
- class DataDogPipelineErrorAlertForVulnerabilityChecks extends datadogMonitor_1.DatadogMonitor {
23
+ class DataDogPipelineErrorAlertForVulnerabilityChecks extends datadog_monitor_1.DatadogMonitor {
24
24
  constructor(scope, id, props) {
25
25
  super(scope, id, {
26
26
  serviceName: props.serviceName,
@@ -39,4 +39,4 @@ class DataDogPipelineErrorAlertForVulnerabilityChecks extends datadogMonitor_1.D
39
39
  }
40
40
  }
41
41
  exports.DataDogPipelineErrorAlertForVulnerabilityChecks = DataDogPipelineErrorAlertForVulnerabilityChecks;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tb25pdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9kYXRhZG9nLW1vbml0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG9FQUFpRTtBQVFqRSxNQUFhLHlCQUEwQixTQUFRLCtCQUFjO0lBQzNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0M7UUFDMUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLHFFQUFxRSxLQUFLLENBQUMsWUFBWSxlQUFlLEtBQUssQ0FBQyxTQUFTLE9BQU87Z0JBQ25JLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLE9BQU8sRUFBRSwrSUFBK0k7Z0JBQ3hKLE9BQU8sRUFBRTtvQkFDUCxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaEJELDhEQWdCQztBQUVELE1BQWEsK0NBQWdELFNBQVEsK0JBQWM7SUFDakYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDeEIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLHFFQUFxRSxLQUFLLENBQUMsWUFBWSxlQUFlLEtBQUssQ0FBQyxTQUFTLE9BQU87Z0JBQ25JLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLE9BQU8sRUFBRTtvQkFDUCxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakJELDBHQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2dNb25pdG9yJztcblxuaW50ZXJmYWNlIERhdGFkb2dQaXBlbGluZU1vbml0b3JQcm9wcyB7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nIHwgUmVmZXJlbmNlO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFkb2dQaXBlbGluZUVycm9yQWxlcnQgZXh0ZW5kcyBEYXRhZG9nTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nUGlwZWxpbmVNb25pdG9yUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgdHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgdGFnczogWydjaWNkJ10sXG4gICAgICAgIHF1ZXJ5OiBgbWluKGxhc3RfNW0pOm1pbjpkZXBsb3ltZW50LmNvZGVwaXBlbGluZS5leGVjdXRpb25ze3BpcGVsaW5lX25hbWU6JHtwcm9wcy5waXBlbGluZU5hbWV9LGFjY291bnRfaWQ6JHtwcm9wcy5hY2NvdW50SWR9fSA8IDFgLFxuICAgICAgICBuYW1lOiAnQ0kgcGlwZWxpbmUgc3RhdHVzJyxcbiAgICAgICAgbWVzc2FnZTogJ1tQNV0ge3sjaXNfYWxlcnR9fVxcXFxuVGhlIENJIGJ1aWxkIGlzIGJyb2tlblxcXFxue3svaXNfYWxlcnR9fSBcXFxcblxcXFxue3sjaXNfYWxlcnRfcmVjb3Zlcnl9fVxcXFxuVGhlIENJIGJ1aWxkIHdvcmtzIGFnYWluLlxcXFxue3svaXNfYWxlcnRfcmVjb3Zlcnl9fScsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICByZXF1aXJlX2Z1bGxfd2luZG93OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFEb2dQaXBlbGluZUVycm9yQWxlcnRGb3JWdWxuZXJhYmlsaXR5Q2hlY2tzIGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ1BpcGVsaW5lTW9uaXRvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbJ29wc2dlbmllJ10sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIHR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIHRhZ3M6IFsnY2ljZCddLFxuICAgICAgICBxdWVyeTogYG1pbihsYXN0XzVtKTptaW46ZGVwbG95bWVudC5jb2RlcGlwZWxpbmUuZXhlY3V0aW9uc3twaXBlbGluZV9uYW1lOiR7cHJvcHMucGlwZWxpbmVOYW1lfSxhY2NvdW50X2lkOiR7cHJvcHMuYWNjb3VudElkfX0gPCAxYCxcbiAgICAgICAgbmFtZTogJ1Z1bG5lcmFiaWxpdHkgY2hlY2tzJyxcbiAgICAgICAgbWVzc2FnZTogJ1tQM10gVnVsbmVyYWJpbGl0aWVzIGRldGVjdGVkJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHJlcXVpcmVfZnVsbF93aW5kb3c6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tb25pdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9kYXRhZG9nLW1vbml0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNFQUFrRTtBQVFsRSxNQUFhLHlCQUEwQixTQUFRLGdDQUFjO0lBQzNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0M7UUFDMUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLHFFQUFxRSxLQUFLLENBQUMsWUFBWSxlQUFlLEtBQUssQ0FBQyxTQUFTLE9BQU87Z0JBQ25JLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLE9BQU8sRUFBRSwrSUFBK0k7Z0JBQ3hKLE9BQU8sRUFBRTtvQkFDUCxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaEJELDhEQWdCQztBQUVELE1BQWEsK0NBQWdELFNBQVEsZ0NBQWM7SUFDakYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDeEIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsS0FBSyxFQUFFLHFFQUFxRSxLQUFLLENBQUMsWUFBWSxlQUFlLEtBQUssQ0FBQyxTQUFTLE9BQU87Z0JBQ25JLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLE9BQU8sRUFBRTtvQkFDUCxtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakJELDBHQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2ctbW9uaXRvcic7XG5cbmludGVyZmFjZSBEYXRhZG9nUGlwZWxpbmVNb25pdG9yUHJvcHMge1xuICBwaXBlbGluZU5hbWU6IHN0cmluZyB8IFJlZmVyZW5jZTtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhZG9nUGlwZWxpbmVFcnJvckFsZXJ0IGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ1BpcGVsaW5lTW9uaXRvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIHR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIHRhZ3M6IFsnY2ljZCddLFxuICAgICAgICBxdWVyeTogYG1pbihsYXN0XzVtKTptaW46ZGVwbG95bWVudC5jb2RlcGlwZWxpbmUuZXhlY3V0aW9uc3twaXBlbGluZV9uYW1lOiR7cHJvcHMucGlwZWxpbmVOYW1lfSxhY2NvdW50X2lkOiR7cHJvcHMuYWNjb3VudElkfX0gPCAxYCxcbiAgICAgICAgbmFtZTogJ0NJIHBpcGVsaW5lIHN0YXR1cycsXG4gICAgICAgIG1lc3NhZ2U6ICdbUDVdIHt7I2lzX2FsZXJ0fX1cXFxcblRoZSBDSSBidWlsZCBpcyBicm9rZW5cXFxcbnt7L2lzX2FsZXJ0fX0gXFxcXG5cXFxcbnt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1cXFxcblRoZSBDSSBidWlsZCB3b3JrcyBhZ2Fpbi5cXFxcbnt7L2lzX2FsZXJ0X3JlY292ZXJ5fX0nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcmVxdWlyZV9mdWxsX3dpbmRvdzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhRG9nUGlwZWxpbmVFcnJvckFsZXJ0Rm9yVnVsbmVyYWJpbGl0eUNoZWNrcyBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dQaXBlbGluZU1vbml0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogWydvcHNnZW5pZSddLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICB0eXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICB0YWdzOiBbJ2NpY2QnXSxcbiAgICAgICAgcXVlcnk6IGBtaW4obGFzdF81bSk6bWluOmRlcGxveW1lbnQuY29kZXBpcGVsaW5lLmV4ZWN1dGlvbnN7cGlwZWxpbmVfbmFtZToke3Byb3BzLnBpcGVsaW5lTmFtZX0sYWNjb3VudF9pZDoke3Byb3BzLmFjY291bnRJZH19IDwgMWAsXG4gICAgICAgIG5hbWU6ICdWdWxuZXJhYmlsaXR5IGNoZWNrcycsXG4gICAgICAgIG1lc3NhZ2U6ICdbUDNdIFZ1bG5lcmFiaWxpdGllcyBkZXRlY3RlZCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICByZXF1aXJlX2Z1bGxfd2luZG93OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Construct } from 'constructs';
2
- import { DatadogAlertType } from './datadogMonitor';
2
+ import { DatadogAlertType } from './datadog-monitor';
3
3
  export interface DatadogLogIndexMonitoringProps {
4
4
  /**
5
5
  * The name of your service in Datadog. Can be used to query the monitors.
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getOrganizationUrlPrefix = exports.DatadogLogIndexMonitoring = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const constructs_1 = require("constructs");
7
+ const datadog_monitor_1 = require("./datadog-monitor");
8
+ /**
9
+ * Basic monitoring and alerting for a Datadog logs index.
10
+ * It follows the Datadog guide at https://docs.datadoghq.com/logs/guide/logs-monitors-on-volumes/
11
+ * and consists of the following three monitors.
12
+ * 1. A metric alert that fires when you reach a certain threshold of your daily log quota.
13
+ * 2. An anomaly monitor that detects log amount spikes.
14
+ * 3. An event alert that fires when you hit the daily log quota.
15
+ *
16
+ * A datadog log index is team specific and thus the monitor needs to be deployed just once per index/team.
17
+ */
18
+ class DatadogLogIndexMonitoring extends constructs_1.Construct {
19
+ constructor(scope, id, props) {
20
+ super(scope, id);
21
+ new DatadogLogDailyQuotaMonitor(this, 'DatadogLogDailyQuotaMonitor', props);
22
+ new DatadogLogsAnomalyMonitor(this, 'DatadogLogAlertAnomalyMonitor', props);
23
+ new DatadogLogDailyQuotaReachedMonitor(this, 'DatadogLogDailyQuotaReachedV2Monitor', props);
24
+ this.node.addValidation({
25
+ validate: () => {
26
+ const result = [];
27
+ if (props.dailyLogQuota.warningThresholdInPercent < 0 || props.dailyLogQuota.warningThresholdInPercent > 100) {
28
+ result.push('Invalid [warningThresholdInPercent]: expecting a number between 0 and 100');
29
+ }
30
+ if (props.dailyLogQuota.alertThresholdInPercent < 0 || props.dailyLogQuota.alertThresholdInPercent > 100) {
31
+ result.push('Invalid [alertThresholdInPercent]: expecting a number between 0 and 100');
32
+ }
33
+ if (props.dailyLogQuota.alertThresholdInPercent < props.dailyLogQuota.warningThresholdInPercent) {
34
+ result.push('Invalid [alertThresholdInPercent]: must be greater than or equal to [warningThresholdInPercent]');
35
+ }
36
+ return result;
37
+ },
38
+ });
39
+ }
40
+ }
41
+ exports.DatadogLogIndexMonitoring = DatadogLogIndexMonitoring;
42
+ _a = JSII_RTTI_SYMBOL_1;
43
+ DatadogLogIndexMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogLogIndexMonitoring", version: "0.0.0" };
44
+ const commonMonitorNamePrefix = (indexName) => `'${indexName}' index`;
45
+ const commonTags = (indexName) => [`logIndex:${indexName}`];
46
+ class DatadogLogDailyQuotaMonitor extends datadog_monitor_1.DatadogMonitor {
47
+ constructor(scope, id, props) {
48
+ const logQuotaInEvents = Math.floor(props.dailyLogQuota.valueInMillionEvents * 1000000);
49
+ const warningThreshold = Math.floor(logQuotaInEvents * (props.dailyLogQuota.warningThresholdInPercent / 100));
50
+ const alertThreshold = Math.floor(logQuotaInEvents * (props.dailyLogQuota.alertThresholdInPercent / 100));
51
+ super(scope, id, {
52
+ serviceName: props.serviceName,
53
+ alertTypes: [props.alertType],
54
+ monitor: {
55
+ name: `${commonMonitorNamePrefix(props.indexName)}: Log quota almost reached`,
56
+ type: 'metric alert',
57
+ query: `sum(last_1d):sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count() >= ${alertThreshold}`,
58
+ message: `[P3] Inspect your log volume at ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)} or adapt the log quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}`,
59
+ options: {
60
+ thresholds: {
61
+ critical: alertThreshold,
62
+ warning: warningThreshold,
63
+ },
64
+ include_tags: false,
65
+ notify_no_data: !props.sparseLogging,
66
+ no_data_timeframe: 24 * 60,
67
+ },
68
+ tags: [
69
+ ...commonTags(props.indexName),
70
+ ],
71
+ },
72
+ });
73
+ }
74
+ }
75
+ class DatadogLogsAnomalyMonitor extends datadog_monitor_1.DatadogMonitor {
76
+ constructor(scope, id, props) {
77
+ super(scope, id, {
78
+ serviceName: props.serviceName,
79
+ alertTypes: [props.alertType],
80
+ monitor: {
81
+ name: `${commonMonitorNamePrefix(props.indexName)}: Log amount is rising to unexpected levels`,
82
+ type: 'metric alert',
83
+ query: `avg(last_4h):anomalies(sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count(), 'robust', 2, direction='above', alert_window='last_15m', interval=60, count_default_zero='true', seasonality='weekly', timezone='europe/berlin') >= 1`,
84
+ message: `[P4] Logs are getting out of control: ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)}`,
85
+ options: {
86
+ include_tags: false,
87
+ notify_no_data: !props.sparseLogging,
88
+ threshold_windows: {
89
+ trigger_window: 'last_15m',
90
+ recovery_window: 'last_15m',
91
+ },
92
+ },
93
+ tags: [
94
+ ...commonTags(props.indexName),
95
+ ],
96
+ },
97
+ });
98
+ }
99
+ }
100
+ class DatadogLogDailyQuotaReachedMonitor extends datadog_monitor_1.DatadogMonitor {
101
+ constructor(scope, id, props) {
102
+ super(scope, id, {
103
+ serviceName: props.serviceName,
104
+ alertTypes: [props.alertType],
105
+ monitor: {
106
+ name: `${commonMonitorNamePrefix(props.indexName)}: Log quota reached`,
107
+ type: 'event-v2 alert',
108
+ query: `events("source:datadog datadog_index:${props.indexName} Daily quota reached").rollup("count").last("12h") > 0`,
109
+ message: `[P2] The log quote for the index has been reached. If you do not increase the quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}, no new logs will be indexed until the quota is reset at 2:00pm UTC.`,
110
+ options: {
111
+ timeout_h: 24,
112
+ thresholds: {
113
+ critical: 0,
114
+ },
115
+ },
116
+ tags: [
117
+ ...commonTags(props.indexName),
118
+ ],
119
+ },
120
+ });
121
+ }
122
+ }
123
+ function getOrganizationUrlPrefix(organization) {
124
+ switch (organization !== null && organization !== void 0 ? organization : 'EU') {
125
+ case 'EU':
126
+ return 'app';
127
+ case 'LATAM':
128
+ return 'rio-brazil';
129
+ case 'Landing Zone':
130
+ return 'rio-landingzone';
131
+ }
132
+ }
133
+ exports.getOrganizationUrlPrefix = getOrganizationUrlPrefix;
134
+ function datadogLogsSearchWithIndexFilterDeepLink(indexName, organization) {
135
+ return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs?index=${indexName}`;
136
+ }
137
+ function datadogLogsIndexesConfigurationDeepLink(organization) {
138
+ return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs/pipelines/indexes`;
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1sb2ctaW5kZXgtbW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9nL2RhdGFkb2ctbG9nLWluZGV4LW1vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBdUM7QUFDdkMsdURBQXFFO0FBeURyRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDJCQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLGtDQUFrQyxDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRLEVBQUUsR0FBYSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUU7b0JBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztpQkFDMUY7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtvQkFDeEcsTUFBTSxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO2lCQUN4RjtnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsRUFBRTtvQkFDL0YsTUFBTSxDQUFDLElBQUksQ0FBQyxpR0FBaUcsQ0FBQyxDQUFDO2lCQUNoSDtnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2QkgsOERBd0JDOzs7QUFFRCxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLFNBQVMsQ0FBQztBQUM5RSxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sMkJBQTRCLFNBQVEsZ0NBQWM7SUFDdEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsR0FBRyxPQUFTLENBQUMsQ0FBQztRQUMxRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHlCQUF5QixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzdCLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLDRCQUE0QjtnQkFDN0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSx5R0FBeUcsS0FBSyxDQUFDLFNBQVMsbUJBQW1CLGNBQWMsRUFBRTtnQkFDbEssT0FBTyxFQUFFLG1DQUFtQyx3Q0FBd0MsQ0FDbEYsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUNwQyw4QkFBOEIsdUNBQXVDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM1RixPQUFPLEVBQUU7b0JBQ1AsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxjQUFjO3dCQUN4QixPQUFPLEVBQUUsZ0JBQWdCO3FCQUMxQjtvQkFDRCxZQUFZLEVBQUUsS0FBSztvQkFDbkIsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWE7b0JBQ3BDLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxFQUFFO2lCQUMzQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztpQkFDL0I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0seUJBQTBCLFNBQVEsZ0NBQWM7SUFDcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzdCLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLDZDQUE2QztnQkFDOUYsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxtSEFBbUgsS0FBSyxDQUFDLFNBQVMscUtBQXFLO2dCQUM5UyxPQUFPLEVBQUUseUNBQXlDLHdDQUF3QyxDQUN4RixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQ3BDLEVBQUU7Z0JBQ0gsT0FBTyxFQUFFO29CQUNQLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYTtvQkFDcEMsaUJBQWlCLEVBQUU7d0JBQ2pCLGNBQWMsRUFBRSxVQUFVO3dCQUMxQixlQUFlLEVBQUUsVUFBVTtxQkFDNUI7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLGtDQUFtQyxTQUFRLGdDQUFjO0lBQzdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUM3QixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUI7Z0JBQ3RFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLEtBQUssRUFBRSx3Q0FBd0MsS0FBSyxDQUFDLFNBQVMsd0RBQXdEO2dCQUN0SCxPQUFPLEVBQUUsMEZBQTBGLHVDQUF1QyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsdUVBQXVFO2dCQUNyTyxPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxDQUFDO3FCQUNaO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUMvQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBSUQsU0FBZ0Isd0JBQXdCLENBQUMsWUFBNkM7SUFDcEYsUUFBUSxZQUFZLGFBQVosWUFBWSxjQUFaLFlBQVksR0FBSSxJQUFJLEVBQUU7UUFDNUIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksQ0FBQztRQUN0QixLQUFLLGNBQWM7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtBQUNILENBQUM7QUFURCw0REFTQztBQUVELFNBQVMsd0NBQXdDLENBQUMsU0FBaUIsRUFBRSxZQUE2QztJQUNoSCxPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLDRCQUE0QixTQUFTLEVBQUUsQ0FBQztBQUNsRyxDQUFDO0FBRUQsU0FBUyx1Q0FBdUMsQ0FBQyxZQUE2QztJQUM1RixPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLHNDQUFzQyxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dNb25pdG9yLCBEYXRhZG9nQWxlcnRUeXBlIH0gZnJvbSAnLi9kYXRhZG9nLW1vbml0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHlvdXIgc2VydmljZSBpbiBEYXRhZG9nLiBDYW4gYmUgdXNlZCB0byBxdWVyeSB0aGUgbW9uaXRvcnMuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgRGF0YWRvZyBpbmRleC5cbiAgICovXG4gIHJlYWRvbmx5IGluZGV4TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZWdyYXRpb24gdG8gdXNlIGZvciBhbGVydGluZy5cbiAgICogRm9yIE9wc0dlbmllLCB5b3UgbmVlZCB0byBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlICdvcHNnZW5pZS1pbnRlZ3JhdGlvbicgYWNjb3VudCBtb2R1bGUuXG4gICAqL1xuICByZWFkb25seSBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkYWlseSBsb2cgcXVvdGEgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBkYWlseUxvZ1F1b3RhOiBEYXRhZG9nTG9nUXVvdGFQcm9wcztcblxuICAvKipcbiAgICogVGhpcyB2YWx1ZSBzaG91bGQgYmUgdXNlZCBpZiB0aGVyZSBpcyBubyBsb2cgbWVzc2FnZSB3aXRoaW4gMjQgaG91cnMgb3IgbWlzc2luZyBoaXN0b3JpY2FsIGRhdGEuXG4gICAqIFdpdGhvdXQgc2V0dGluZyB0aGlzIHZhbHVlIGl0IHdpbGwgbGVhZCB0byBhbiBlbXB0eSByZXN1bHQgYW5kIHRoZXJlZm9yZSB0cmlnZ2VyIGFuIGFsZXJ0LlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzcGFyc2VMb2dnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIERhdGFkb2cgb3JnYW5pemF0aW9uLCBlLmcuLCAnRVUnIG9yICdMQVRBTSdcbiAgICogQGRlZmF1bHQgLSAnRVUnXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb24/OiBEYXRhZG9nT3JnYW5pemF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dMb2dRdW90YVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkYWlseSBsb2cgcXVvdGEgZm9yIHRoZSB0ZWFtLXNwZWNpZmljIGluZGV4IGluIG1pbGxpb24gZXZlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVJbk1pbGxpb25FdmVudHM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHdhcm5pbmcgdGhyZXNob2xkIGZvciB0aGUgZGFpbHkgbG9nIHF1b3RhIG1vbml0b3IgaW4gcGVyY2VudC5cbiAgICovXG4gIHJlYWRvbmx5IHdhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFsYXJtIHRocmVzaG9sZCBmb3IgdGhlIGRhaWx5IGxvZyBxdW90YSBtb25pdG9yIGluIHBlcmNlbnQuXG4gICAqIFRoZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIGFuZCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHdhcm5pbmcgdGhyZXNob2xkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBCYXNpYyBtb25pdG9yaW5nIGFuZCBhbGVydGluZyBmb3IgYSBEYXRhZG9nIGxvZ3MgaW5kZXguXG4gKiBJdCBmb2xsb3dzIHRoZSBEYXRhZG9nIGd1aWRlIGF0IGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2xvZ3MvZ3VpZGUvbG9ncy1tb25pdG9ycy1vbi12b2x1bWVzL1xuICogYW5kIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgbW9uaXRvcnMuXG4gKiAgIDEuIEEgbWV0cmljIGFsZXJ0IHRoYXQgZmlyZXMgd2hlbiB5b3UgcmVhY2ggYSBjZXJ0YWluIHRocmVzaG9sZCBvZiB5b3VyIGRhaWx5IGxvZyBxdW90YS5cbiAqICAgMi4gQW4gYW5vbWFseSBtb25pdG9yIHRoYXQgZGV0ZWN0cyBsb2cgYW1vdW50IHNwaWtlcy5cbiAqICAgMy4gQW4gZXZlbnQgYWxlcnQgdGhhdCBmaXJlcyB3aGVuIHlvdSBoaXQgdGhlIGRhaWx5IGxvZyBxdW90YS5cbiAqXG4gKiBBIGRhdGFkb2cgbG9nIGluZGV4IGlzIHRlYW0gc3BlY2lmaWMgYW5kIHRodXMgdGhlIG1vbml0b3IgbmVlZHMgdG8gYmUgZGVwbG95ZWQganVzdCBvbmNlIHBlciBpbmRleC90ZWFtLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IERhdGFkb2dMb2dEYWlseVF1b3RhTW9uaXRvcih0aGlzLCAnRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yJywgcHJvcHMpO1xuICAgIG5ldyBEYXRhZG9nTG9nc0Fub21hbHlNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nQWxlcnRBbm9tYWx5TW9uaXRvcicsIHByb3BzKTtcbiAgICBuZXcgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFSZWFjaGVkTW9uaXRvcih0aGlzLCAnRGF0YWRvZ0xvZ0RhaWx5UXVvdGFSZWFjaGVkVjJNb25pdG9yJywgcHJvcHMpO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oe1xuICAgICAgdmFsaWRhdGU6ICgpOiBzdHJpbmdbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAocHJvcHMuZGFpbHlMb2dRdW90YS53YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50IDwgMCB8fCBwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgPiAxMDApIHtcbiAgICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbd2FybmluZ1RocmVzaG9sZEluUGVyY2VudF06IGV4cGVjdGluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEwMCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcy5kYWlseUxvZ1F1b3RhLmFsZXJ0VGhyZXNob2xkSW5QZXJjZW50IDwgMCB8fCBwcm9wcy5kYWlseUxvZ1F1b3RhLmFsZXJ0VGhyZXNob2xkSW5QZXJjZW50ID4gMTAwKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goJ0ludmFsaWQgW2FsZXJ0VGhyZXNob2xkSW5QZXJjZW50XTogZXhwZWN0aW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPCBwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbYWxlcnRUaHJlc2hvbGRJblBlcmNlbnRdOiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbd2FybmluZ1RocmVzaG9sZEluUGVyY2VudF0nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBjb21tb25Nb25pdG9yTmFtZVByZWZpeCA9IChpbmRleE5hbWU6IHN0cmluZykgPT4gYCcke2luZGV4TmFtZX0nIGluZGV4YDtcbmNvbnN0IGNvbW1vblRhZ3MgPSAoaW5kZXhOYW1lOiBzdHJpbmcpID0+IFtgbG9nSW5kZXg6JHtpbmRleE5hbWV9YF07XG5cbmNsYXNzIERhdGFkb2dMb2dEYWlseVF1b3RhTW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIGNvbnN0IGxvZ1F1b3RhSW5FdmVudHMgPSBNYXRoLmZsb29yKHByb3BzLmRhaWx5TG9nUXVvdGEudmFsdWVJbk1pbGxpb25FdmVudHMgKiAxXzAwMF8wMDApO1xuICAgIGNvbnN0IHdhcm5pbmdUaHJlc2hvbGQgPSBNYXRoLmZsb29yKGxvZ1F1b3RhSW5FdmVudHMgKiAocHJvcHMuZGFpbHlMb2dRdW90YS53YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50IC8gMTAwKSk7XG4gICAgY29uc3QgYWxlcnRUaHJlc2hvbGQgPSBNYXRoLmZsb29yKGxvZ1F1b3RhSW5FdmVudHMgKiAocHJvcHMuZGFpbHlMb2dRdW90YS5hbGVydFRocmVzaG9sZEluUGVyY2VudCAvIDEwMCkpO1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbcHJvcHMuYWxlcnRUeXBlXSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgbmFtZTogYCR7Y29tbW9uTW9uaXRvck5hbWVQcmVmaXgocHJvcHMuaW5kZXhOYW1lKX06IExvZyBxdW90YSBhbG1vc3QgcmVhY2hlZGAsXG4gICAgICAgIHR5cGU6ICdtZXRyaWMgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYHN1bShsYXN0XzFkKTpzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZSxkYXRhZG9nX2luZGV4OiR7cHJvcHMuaW5kZXhOYW1lfX0uYXNfY291bnQoKSA+PSAke2FsZXJ0VGhyZXNob2xkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGBbUDNdIEluc3BlY3QgeW91ciBsb2cgdm9sdW1lIGF0ICR7ZGF0YWRvZ0xvZ3NTZWFyY2hXaXRoSW5kZXhGaWx0ZXJEZWVwTGluayhcbiAgICAgICAgICBwcm9wcy5pbmRleE5hbWUsIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICAgICAgKX0gb3IgYWRhcHQgdGhlIGxvZyBxdW90YSBhdCAke2RhdGFkb2dMb2dzSW5kZXhlc0NvbmZpZ3VyYXRpb25EZWVwTGluayhwcm9wcy5vcmdhbml6YXRpb24pfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0aHJlc2hvbGRzOiB7XG4gICAgICAgICAgICBjcml0aWNhbDogYWxlcnRUaHJlc2hvbGQsXG4gICAgICAgICAgICB3YXJuaW5nOiB3YXJuaW5nVGhyZXNob2xkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogIXByb3BzLnNwYXJzZUxvZ2dpbmcsXG4gICAgICAgICAgbm9fZGF0YV90aW1lZnJhbWU6IDI0ICogNjAsIC8vIDEgZGF5XG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAuLi5jb21tb25UYWdzKHByb3BzLmluZGV4TmFtZSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIERhdGFkb2dMb2dzQW5vbWFseU1vbml0b3IgZXh0ZW5kcyBEYXRhZG9nTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFtwcm9wcy5hbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHtjb21tb25Nb25pdG9yTmFtZVByZWZpeChwcm9wcy5pbmRleE5hbWUpfTogTG9nIGFtb3VudCBpcyByaXNpbmcgdG8gdW5leHBlY3RlZCBsZXZlbHNgLFxuICAgICAgICB0eXBlOiAnbWV0cmljIGFsZXJ0JyxcbiAgICAgICAgcXVlcnk6IGBhdmcobGFzdF80aCk6YW5vbWFsaWVzKHN1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlLGRhdGFkb2dfaW5kZXg6JHtwcm9wcy5pbmRleE5hbWV9fS5hc19jb3VudCgpLCAncm9idXN0JywgMiwgZGlyZWN0aW9uPSdhYm92ZScsIGFsZXJ0X3dpbmRvdz0nbGFzdF8xNW0nLCBpbnRlcnZhbD02MCwgY291bnRfZGVmYXVsdF96ZXJvPSd0cnVlJywgc2Vhc29uYWxpdHk9J3dlZWtseScsIHRpbWV6b25lPSdldXJvcGUvYmVybGluJykgPj0gMWAsXG4gICAgICAgIG1lc3NhZ2U6IGBbUDRdIExvZ3MgYXJlIGdldHRpbmcgb3V0IG9mIGNvbnRyb2w6ICR7ZGF0YWRvZ0xvZ3NTZWFyY2hXaXRoSW5kZXhGaWx0ZXJEZWVwTGluayhcbiAgICAgICAgICBwcm9wcy5pbmRleE5hbWUsIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICAgICAgKX1gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogIXByb3BzLnNwYXJzZUxvZ2dpbmcsXG4gICAgICAgICAgdGhyZXNob2xkX3dpbmRvd3M6IHtcbiAgICAgICAgICAgIHRyaWdnZXJfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgICAgcmVjb3Zlcnlfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAuLi5jb21tb25UYWdzKHByb3BzLmluZGV4TmFtZSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIERhdGFkb2dMb2dEYWlseVF1b3RhUmVhY2hlZE1vbml0b3IgZXh0ZW5kcyBEYXRhZG9nTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFtwcm9wcy5hbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHtjb21tb25Nb25pdG9yTmFtZVByZWZpeChwcm9wcy5pbmRleE5hbWUpfTogTG9nIHF1b3RhIHJlYWNoZWRgLFxuICAgICAgICB0eXBlOiAnZXZlbnQtdjIgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGV2ZW50cyhcInNvdXJjZTpkYXRhZG9nIGRhdGFkb2dfaW5kZXg6JHtwcm9wcy5pbmRleE5hbWV9IERhaWx5IHF1b3RhIHJlYWNoZWRcIikucm9sbHVwKFwiY291bnRcIikubGFzdChcIjEyaFwiKSA+IDBgLFxuICAgICAgICBtZXNzYWdlOiBgW1AyXSBUaGUgbG9nIHF1b3RlIGZvciB0aGUgaW5kZXggaGFzIGJlZW4gcmVhY2hlZC4gSWYgeW91IGRvIG5vdCBpbmNyZWFzZSB0aGUgcXVvdGEgYXQgJHtkYXRhZG9nTG9nc0luZGV4ZXNDb25maWd1cmF0aW9uRGVlcExpbmsocHJvcHMub3JnYW5pemF0aW9uKX0sIG5vIG5ldyBsb2dzIHdpbGwgYmUgaW5kZXhlZCB1bnRpbCB0aGUgcXVvdGEgaXMgcmVzZXQgYXQgMjowMHBtIFVUQy5gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdGltZW91dF9oOiAyNCxcbiAgICAgICAgICB0aHJlc2hvbGRzOiB7XG4gICAgICAgICAgICBjcml0aWNhbDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgLi4uY29tbW9uVGFncyhwcm9wcy5pbmRleE5hbWUpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBEYXRhZG9nT3JnYW5pemF0aW9uID0gJ0VVJyB8ICdMQVRBTScgfCAnTGFuZGluZyBab25lJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24gfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9yZ2FuaXphdGlvbiA/PyAnRVUnKSB7XG4gICAgY2FzZSAnRVUnOlxuICAgICAgcmV0dXJuICdhcHAnO1xuICAgIGNhc2UgJ0xBVEFNJzpcbiAgICAgIHJldHVybiAncmlvLWJyYXppbCc7XG4gICAgY2FzZSAnTGFuZGluZyBab25lJzpcbiAgICAgIHJldHVybiAncmlvLWxhbmRpbmd6b25lJztcbiAgfVxufVxuXG5mdW5jdGlvbiBkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKGluZGV4TmFtZTogc3RyaW5nLCBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24gfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIGBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KG9yZ2FuaXphdGlvbil9LmRhdGFkb2docS5ldS9sb2dzP2luZGV4PSR7aW5kZXhOYW1lfWA7XG59XG5cbmZ1bmN0aW9uIGRhdGFkb2dMb2dzSW5kZXhlc0NvbmZpZ3VyYXRpb25EZWVwTGluayhvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24gfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIGBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KG9yZ2FuaXphdGlvbil9LmRhdGFkb2docS5ldS9sb2dzL3BpcGVsaW5lcy9pbmRleGVzYDtcbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatadogMonitor = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ class DatadogMonitor {
6
+ constructor(stack, id, props) {
7
+ const monitor = new aws_cdk_lib_1.aws_cloudformation.CfnCustomResource(stack, id, {
8
+ serviceToken: aws_cdk_lib_1.Fn.importValue('custom-resource-datadog-monitor-function-arn'),
9
+ });
10
+ monitor.addPropertyOverride('ServiceName', props.serviceName);
11
+ monitor.addPropertyOverride('AlertTypes', props.alertTypes);
12
+ if (props.autoCloseOpsGenieAlerts !== undefined) {
13
+ monitor.addPropertyOverride('AutoCloseOpsGenieAlerts', props.autoCloseOpsGenieAlerts);
14
+ }
15
+ monitor.addPropertyOverride('Monitor', props.monitor);
16
+ }
17
+ }
18
+ exports.DatadogMonitor = DatadogMonitor;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFkb2cvZGF0YWRvZy1tb25pdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxRDtBQVlyRCxNQUFhLGNBQWM7SUFDekIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLGdDQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbEUsWUFBWSxFQUFFLGdCQUFFLENBQUMsV0FBVyxDQUFDLDhDQUE4QyxDQUFDO1NBQzdFLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUMvQyxPQUFPLENBQUMsbUJBQW1CLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDdkY7UUFDRCxPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFaRCx3Q0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jbG91ZGZvcm1hdGlvbiwgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IHR5cGUgRGF0YWRvZ0FsZXJ0VHlwZSA9ICdvcHNnZW5pZScgfCAnc2xhY2snO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dNb25pdG9yUHJvcHMge1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBhbGVydFR5cGVzPzogRGF0YWRvZ0FsZXJ0VHlwZVtdO1xuICBhdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0cz86IGJvb2xlYW47XG4gIG1vbml0b3I6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhZG9nTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nTW9uaXRvclByb3BzKSB7XG4gICAgY29uc3QgbW9uaXRvciA9IG5ldyBhd3NfY2xvdWRmb3JtYXRpb24uQ2ZuQ3VzdG9tUmVzb3VyY2Uoc3RhY2ssIGlkLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IEZuLmltcG9ydFZhbHVlKCdjdXN0b20tcmVzb3VyY2UtZGF0YWRvZy1tb25pdG9yLWZ1bmN0aW9uLWFybicpLFxuICAgIH0pO1xuICAgIG1vbml0b3IuYWRkUHJvcGVydHlPdmVycmlkZSgnU2VydmljZU5hbWUnLCBwcm9wcy5zZXJ2aWNlTmFtZSk7XG4gICAgbW9uaXRvci5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdBbGVydFR5cGVzJywgcHJvcHMuYWxlcnRUeXBlcyk7XG4gICAgaWYgKHByb3BzLmF1dG9DbG9zZU9wc0dlbmllQWxlcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vbml0b3IuYWRkUHJvcGVydHlPdmVycmlkZSgnQXV0b0Nsb3NlT3BzR2VuaWVBbGVydHMnLCBwcm9wcy5hdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0cyk7XG4gICAgfVxuICAgIG1vbml0b3IuYWRkUHJvcGVydHlPdmVycmlkZSgnTW9uaXRvcicsIHByb3BzLm1vbml0b3IpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- export * from './datadogLogIndexMonitoring';
1
+ export * from './datadog-log-index-monitoring';
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // We do not want to export anything from `./datadogMonitor` for the following reasons.
2
+ // We do not want to export anything from `./datadog-monitor` for the following reasons.
3
3
  // - There are already similar abstraction available, e.g., in `datadog-log-alarm.ts` and `datadog-metric-alarm.ts`.
4
4
  // - We should discuss a suitable abstraction first before making the API publicly available. At the moment, it is a
5
5
  // simple wrapper around the CloudFormation Custom Resource. We usually strive for higher-level constructs or
@@ -15,5 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- __exportStar(require("./datadogLogIndexMonitoring"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUZBQXVGO0FBQ3ZGLHNIQUFzSDtBQUN0SCxzSEFBc0g7QUFDdEgsaUhBQWlIO0FBQ2pILDRDQUE0Qzs7Ozs7Ozs7Ozs7O0FBRTVDLDhEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFdlIGRvIG5vdCB3YW50IHRvIGV4cG9ydCBhbnl0aGluZyBmcm9tIGAuL2RhdGFkb2dNb25pdG9yYCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zLlxuLy8gICAtIFRoZXJlIGFyZSBhbHJlYWR5IHNpbWlsYXIgYWJzdHJhY3Rpb24gYXZhaWxhYmxlLCBlLmcuLCBpbiBgZGF0YWRvZy1sb2ctYWxhcm0udHNgIGFuZCBgZGF0YWRvZy1tZXRyaWMtYWxhcm0udHNgLlxuLy8gICAtIFdlIHNob3VsZCBkaXNjdXNzIGEgc3VpdGFibGUgYWJzdHJhY3Rpb24gZmlyc3QgYmVmb3JlIG1ha2luZyB0aGUgQVBJIHB1YmxpY2x5IGF2YWlsYWJsZS4gQXQgdGhlIG1vbWVudCwgaXQgaXMgYVxuLy8gICAgIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgQ2xvdWRGb3JtYXRpb24gQ3VzdG9tIFJlc291cmNlLiBXZSB1c3VhbGx5IHN0cml2ZSBmb3IgaGlnaGVyLWxldmVsIGNvbnN0cnVjdHMgb3Jcbi8vICAgICBkaXJlY3RseSB1c2UgdGhlIGxvdy1sZXZlbCBjb25zdHJ1Y3QuXG5cbmV4cG9ydCAqIGZyb20gJy4vZGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZyc7XG4iXX0=
18
+ __exportStar(require("./datadog-log-index-monitoring"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsd0ZBQXdGO0FBQ3hGLHNIQUFzSDtBQUN0SCxzSEFBc0g7QUFDdEgsaUhBQWlIO0FBQ2pILDRDQUE0Qzs7Ozs7Ozs7Ozs7O0FBRTVDLGlFQUErQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFdlIGRvIG5vdCB3YW50IHRvIGV4cG9ydCBhbnl0aGluZyBmcm9tIGAuL2RhdGFkb2ctbW9uaXRvcmAgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29ucy5cbi8vICAgLSBUaGVyZSBhcmUgYWxyZWFkeSBzaW1pbGFyIGFic3RyYWN0aW9uIGF2YWlsYWJsZSwgZS5nLiwgaW4gYGRhdGFkb2ctbG9nLWFsYXJtLnRzYCBhbmQgYGRhdGFkb2ctbWV0cmljLWFsYXJtLnRzYC5cbi8vICAgLSBXZSBzaG91bGQgZGlzY3VzcyBhIHN1aXRhYmxlIGFic3RyYWN0aW9uIGZpcnN0IGJlZm9yZSBtYWtpbmcgdGhlIEFQSSBwdWJsaWNseSBhdmFpbGFibGUuIEF0IHRoZSBtb21lbnQsIGl0IGlzIGFcbi8vICAgICBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIENsb3VkRm9ybWF0aW9uIEN1c3RvbSBSZXNvdXJjZS4gV2UgdXN1YWxseSBzdHJpdmUgZm9yIGhpZ2hlci1sZXZlbCBjb25zdHJ1Y3RzIG9yXG4vLyAgICAgZGlyZWN0bHkgdXNlIHRoZSBsb3ctbGV2ZWwgY29uc3RydWN0LlxuXG5leHBvcnQgKiBmcm9tICcuL2RhdGFkb2ctbG9nLWluZGV4LW1vbml0b3JpbmcnO1xuIl19
package/lib/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export * from './pipeline/rio-bitbucket-source-action';
19
19
  export * from './pipeline/rio-backup-secrets-restore-stage';
20
20
  export * from './kafka';
21
21
  export * from './datadog';
22
+ export * from './contributions/cop-frontend/cloudfront';
22
23
  export * from './contributions/team-transport-two/pipeline';
23
24
  export * from './contributions/team-claid/aws-backup-monitoring';
24
25
  export * from './contributions/team-claid/datadog-usage-monitoring';
package/lib/index.js CHANGED
@@ -31,7 +31,8 @@ __exportStar(require("./pipeline/rio-bitbucket-source-action"), exports);
31
31
  __exportStar(require("./pipeline/rio-backup-secrets-restore-stage"), exports);
32
32
  __exportStar(require("./kafka"), exports);
33
33
  __exportStar(require("./datadog"), exports);
34
+ __exportStar(require("./contributions/cop-frontend/cloudfront"), exports);
34
35
  __exportStar(require("./contributions/team-transport-two/pipeline"), exports);
35
36
  __exportStar(require("./contributions/team-claid/aws-backup-monitoring"), exports);
36
37
  __exportStar(require("./contributions/team-claid/datadog-usage-monitoring"), exports);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsOEVBQTREO0FBRTVELG1GQUFpRTtBQUNqRSxzRkFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FsYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FzcGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Vjcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RvY2RiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZHluYW1vZGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9sYW1iZGEnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC90YXJnZXRncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RhdGFkb2ctbWV0cmljLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZGF0YWRvZy1sb2ctYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC93YXRjaGZ1bCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL21ldHJpYy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3Jkcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Nsb3VkZnJvbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL3Jpby1sYW5kaW5nLXpvbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yaW8tbG9hZC1iYWxhbmNlcic7XG5leHBvcnQgKiBmcm9tICcuL3Jpby1jbGFpZG9tZXRlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZmFyZ2F0ZS9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYml0YnVja2V0LXNvdXJjZS1hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYmFja3VwLXNlY3JldHMtcmVzdG9yZS1zdGFnZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4va2Fma2EnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGFkb2cnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS10cmFuc3BvcnQtdHdvL3BpcGVsaW5lJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvYXdzLWJhY2t1cC1tb25pdG9yaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZyc7XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsMEVBQXdEO0FBRXhELDhFQUE0RDtBQUU1RCxtRkFBaUU7QUFDakUsc0ZBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9hbGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9hc3BlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9lY3MnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kb2NkYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2R5bmFtb2RiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvbGFtYmRhJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvdGFyZ2V0Z3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kYXRhZG9nLW1ldHJpYy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RhdGFkb2ctbG9nLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvd2F0Y2hmdWwnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9tZXRyaWMtYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9yZHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9jbG91ZGZyb250JztcblxuZXhwb3J0ICogZnJvbSAnLi9yaW8tbGFuZGluZy16b25lJztcbmV4cG9ydCAqIGZyb20gJy4vcmlvLWxvYWQtYmFsYW5jZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcmlvLWJpdGJ1Y2tldC1zb3VyY2UtYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcmlvLWJhY2t1cC1zZWNyZXRzLXJlc3RvcmUtc3RhZ2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2thZmthJztcblxuZXhwb3J0ICogZnJvbSAnLi9kYXRhZG9nJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL2NvcC1mcm9udGVuZC9jbG91ZGZyb250JztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2F3cy1iYWNrdXAtbW9uaXRvcmluZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcnO1xuIl19
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "2.6.2",
18
+ "version": "2.7.0",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "jsii": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "2.6.2"
2
+ "version": "2.7.0"
3
3
  }
@@ -1,140 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getOrganizationUrlPrefix = exports.DatadogLogIndexMonitoring = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const constructs_1 = require("constructs");
7
- const datadogMonitor_1 = require("./datadogMonitor");
8
- /**
9
- * Basic monitoring and alerting for a Datadog logs index.
10
- * It follows the Datadog guide at https://docs.datadoghq.com/logs/guide/logs-monitors-on-volumes/
11
- * and consists of the following three monitors.
12
- * 1. A metric alert that fires when you reach a certain threshold of your daily log quota.
13
- * 2. An anomaly monitor that detects log amount spikes.
14
- * 3. An event alert that fires when you hit the daily log quota.
15
- *
16
- * A datadog log index is team specific and thus the monitor needs to be deployed just once per index/team.
17
- */
18
- class DatadogLogIndexMonitoring extends constructs_1.Construct {
19
- constructor(scope, id, props) {
20
- super(scope, id);
21
- new DatadogLogDailyQuotaMonitor(this, 'DatadogLogDailyQuotaMonitor', props);
22
- new DatadogLogsAnomalyMonitor(this, 'DatadogLogAlertAnomalyMonitor', props);
23
- new DatadogLogDailyQuotaReachedMonitor(this, 'DatadogLogDailyQuotaReachedV2Monitor', props);
24
- this.node.addValidation({
25
- validate: () => {
26
- const result = [];
27
- if (props.dailyLogQuota.warningThresholdInPercent < 0 || props.dailyLogQuota.warningThresholdInPercent > 100) {
28
- result.push('Invalid [warningThresholdInPercent]: expecting a number between 0 and 100');
29
- }
30
- if (props.dailyLogQuota.alertThresholdInPercent < 0 || props.dailyLogQuota.alertThresholdInPercent > 100) {
31
- result.push('Invalid [alertThresholdInPercent]: expecting a number between 0 and 100');
32
- }
33
- if (props.dailyLogQuota.alertThresholdInPercent < props.dailyLogQuota.warningThresholdInPercent) {
34
- result.push('Invalid [alertThresholdInPercent]: must be greater than or equal to [warningThresholdInPercent]');
35
- }
36
- return result;
37
- },
38
- });
39
- }
40
- }
41
- exports.DatadogLogIndexMonitoring = DatadogLogIndexMonitoring;
42
- _a = JSII_RTTI_SYMBOL_1;
43
- DatadogLogIndexMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogLogIndexMonitoring", version: "0.0.0" };
44
- const commonMonitorNamePrefix = (indexName) => `'${indexName}' index`;
45
- const commonTags = (indexName) => [`logIndex:${indexName}`];
46
- class DatadogLogDailyQuotaMonitor extends datadogMonitor_1.DatadogMonitor {
47
- constructor(scope, id, props) {
48
- const logQuotaInEvents = Math.floor(props.dailyLogQuota.valueInMillionEvents * 1000000);
49
- const warningThreshold = Math.floor(logQuotaInEvents * (props.dailyLogQuota.warningThresholdInPercent / 100));
50
- const alertThreshold = Math.floor(logQuotaInEvents * (props.dailyLogQuota.alertThresholdInPercent / 100));
51
- super(scope, id, {
52
- serviceName: props.serviceName,
53
- alertTypes: [props.alertType],
54
- monitor: {
55
- name: `${commonMonitorNamePrefix(props.indexName)}: Log quota almost reached`,
56
- type: 'metric alert',
57
- query: `sum(last_1d):sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count() >= ${alertThreshold}`,
58
- message: `[P3] Inspect your log volume at ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)} or adapt the log quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}`,
59
- options: {
60
- thresholds: {
61
- critical: alertThreshold,
62
- warning: warningThreshold,
63
- },
64
- include_tags: false,
65
- notify_no_data: !props.sparseLogging,
66
- no_data_timeframe: 24 * 60,
67
- },
68
- tags: [
69
- ...commonTags(props.indexName),
70
- ],
71
- },
72
- });
73
- }
74
- }
75
- class DatadogLogsAnomalyMonitor extends datadogMonitor_1.DatadogMonitor {
76
- constructor(scope, id, props) {
77
- super(scope, id, {
78
- serviceName: props.serviceName,
79
- alertTypes: [props.alertType],
80
- monitor: {
81
- name: `${commonMonitorNamePrefix(props.indexName)}: Log amount is rising to unexpected levels`,
82
- type: 'metric alert',
83
- query: `avg(last_4h):anomalies(sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count(), 'robust', 2, direction='above', alert_window='last_15m', interval=60, count_default_zero='true', seasonality='weekly', timezone='europe/berlin') >= 1`,
84
- message: `[P4] Logs are getting out of control: ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)}`,
85
- options: {
86
- include_tags: false,
87
- notify_no_data: !props.sparseLogging,
88
- threshold_windows: {
89
- trigger_window: 'last_15m',
90
- recovery_window: 'last_15m',
91
- },
92
- },
93
- tags: [
94
- ...commonTags(props.indexName),
95
- ],
96
- },
97
- });
98
- }
99
- }
100
- class DatadogLogDailyQuotaReachedMonitor extends datadogMonitor_1.DatadogMonitor {
101
- constructor(scope, id, props) {
102
- super(scope, id, {
103
- serviceName: props.serviceName,
104
- alertTypes: [props.alertType],
105
- monitor: {
106
- name: `${commonMonitorNamePrefix(props.indexName)}: Log quota reached`,
107
- type: 'event-v2 alert',
108
- query: `events("source:datadog datadog_index:${props.indexName} Daily quota reached").rollup("count").last("12h") > 0`,
109
- message: `[P2] The log quote for the index has been reached. If you do not increase the quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}, no new logs will be indexed until the quota is reset at 2:00pm UTC.`,
110
- options: {
111
- timeout_h: 24,
112
- thresholds: {
113
- critical: 0,
114
- },
115
- },
116
- tags: [
117
- ...commonTags(props.indexName),
118
- ],
119
- },
120
- });
121
- }
122
- }
123
- function getOrganizationUrlPrefix(organization) {
124
- switch (organization !== null && organization !== void 0 ? organization : 'EU') {
125
- case 'EU':
126
- return 'app';
127
- case 'LATAM':
128
- return 'rio-brazil';
129
- case 'Landing Zone':
130
- return 'rio-landingzone';
131
- }
132
- }
133
- exports.getOrganizationUrlPrefix = getOrganizationUrlPrefix;
134
- function datadogLogsSearchWithIndexFilterDeepLink(indexName, organization) {
135
- return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs?index=${indexName}`;
136
- }
137
- function datadogLogsIndexesConfigurationDeepLink(organization) {
138
- return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs/pipelines/indexes`;
139
- }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9nL2RhdGFkb2dMb2dJbmRleE1vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBdUM7QUFDdkMscURBQW9FO0FBeURwRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDJCQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLGtDQUFrQyxDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRLEVBQUUsR0FBYSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUU7b0JBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztpQkFDMUY7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtvQkFDeEcsTUFBTSxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO2lCQUN4RjtnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFh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ZixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksQ0FBQztRQUN0QixLQUFLLGNBQWM7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtBQUNILENBQUM7QUFURCw0REFTQztBQUVELFNBQVMsd0NBQXdDLENBQUMsU0FBaUIsRUFBRSxZQUE2QztJQUNoSCxPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLDRCQUE0QixTQUFTLEVBQUUsQ0FBQztBQUNsRyxDQUFDO0FBRUQsU0FBUyx1Q0FBdUMsQ0FBQyxZQUE2QztJQUM1RixPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLHNDQUFzQyxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dNb25pdG9yLCBEYXRhZG9nQWxlcnRUeXBlIH0gZnJvbSAnLi9kYXRhZG9nTW9uaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgeW91ciBzZXJ2aWNlIGluIERhdGFkb2cuIENhbiBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBtb25pdG9ycy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBEYXRhZG9nIGluZGV4LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbiB0byB1c2UgZm9yIGFsZXJ0aW5nLlxuICAgKiBGb3IgT3BzR2VuaWUsIHlvdSBuZWVkIHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgJ29wc2dlbmllLWludGVncmF0aW9uJyBhY2NvdW50IG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGRhaWx5IGxvZyBxdW90YSBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGRhaWx5TG9nUXVvdGE6IERhdGFkb2dMb2dRdW90YVByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGlzIHZhbHVlIHNob3VsZCBiZSB1c2VkIGlmIHRoZXJlIGlzIG5vIGxvZyBtZXNzYWdlIHdpdGhpbiAyNCBob3VycyBvciBtaXNzaW5nIGhpc3RvcmljYWwgZGF0YS5cbiAgICogV2l0aG91dCBzZXR0aW5nIHRoaXMgdmFsdWUgaXQgd2lsbCBsZWFkIHRvIGFuIGVtcHR5IHJlc3VsdCBhbmQgdGhlcmVmb3JlIHRyaWdnZXIgYW4gYWxlcnQuXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNwYXJzZUxvZ2dpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YWRvZyBvcmdhbml6YXRpb24sIGUuZy4sICdFVScgb3IgJ0xBVEFNJ1xuICAgKiBAZGVmYXVsdCAtICdFVSdcbiAgICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbj86IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0xvZ1F1b3RhUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRhaWx5IGxvZyBxdW90YSBmb3IgdGhlIHRlYW0tc3BlY2lmaWMgaW5kZXggaW4gbWlsbGlvbiBldmVudHMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZUluTWlsbGlvbkV2ZW50czogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd2FybmluZyB0aHJlc2hvbGQgZm9yIHRoZSBkYWlseSBsb2cgcXVvdGEgbW9uaXRvciBpbiBwZXJjZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgd2FybmluZ1RocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm0gdGhyZXNob2xkIGZvciB0aGUgZGFpbHkgbG9nIHF1b3RhIG1vbml0b3IgaW4gcGVyY2VudC5cbiAgICogVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAgYW5kIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgd2FybmluZyB0aHJlc2hvbGQuXG4gICAqL1xuICByZWFkb25seSBhbGVydFRocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJhc2ljIG1vbml0b3JpbmcgYW5kIGFsZXJ0aW5nIGZvciBhIERhdGFkb2cgbG9ncyBpbmRleC5cbiAqIEl0IGZvbGxvd3MgdGhlIERhdGFkb2cgZ3VpZGUgYXQgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vbG9ncy9ndWlkZS9sb2dzLW1vbml0b3JzLW9uLXZvbHVtZXMvXG4gKiBhbmQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBtb25pdG9ycy5cbiAqICAgMS4gQSBtZXRyaWMgYWxlcnQgdGhhdCBmaXJlcyB3aGVuIHlvdSByZWFjaCBhIGNlcnRhaW4gdGhyZXNob2xkIG9mIHlvdXIgZGFpbHkgbG9nIHF1b3RhLlxuICogICAyLiBBbiBhbm9tYWx5IG1vbml0b3IgdGhhdCBkZXRlY3RzIGxvZyBhbW91bnQgc3Bpa2VzLlxuICogICAzLiBBbiBldmVudCBhbGVydCB0aGF0IGZpcmVzIHdoZW4geW91IGhpdCB0aGUgZGFpbHkgbG9nIHF1b3RhLlxuICpcbiAqIEEgZGF0YWRvZyBsb2cgaW5kZXggaXMgdGVhbSBzcGVjaWZpYyBhbmQgdGh1cyB0aGUgbW9uaXRvciBuZWVkcyB0byBiZSBkZXBsb3llZCBqdXN0IG9uY2UgcGVyIGluZGV4L3RlYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YU1vbml0b3InLCBwcm9wcyk7XG4gICAgbmV3IERhdGFkb2dMb2dzQW5vbWFseU1vbml0b3IodGhpcywgJ0RhdGFkb2dMb2dBbGVydEFub21hbHlNb25pdG9yJywgcHJvcHMpO1xuICAgIG5ldyBEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRWMk1vbml0b3InLCBwcm9wcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCk6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCA+IDEwMCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XTogZXhwZWN0aW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPiAxMDApIHtcbiAgICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbYWxlcnRUaHJlc2hvbGRJblBlcmNlbnRdOiBleHBlY3RpbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuZGFpbHlMb2dRdW90YS5hbGVydFRocmVzaG9sZEluUGVyY2VudCA8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFthbGVydFRocmVzaG9sZEluUGVyY2VudF06IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNvbW1vbk1vbml0b3JOYW1lUHJlZml4ID0gKGluZGV4TmFtZTogc3RyaW5nKSA9PiBgJyR7aW5kZXhOYW1lfScgaW5kZXhgO1xuY29uc3QgY29tbW9uVGFncyA9IChpbmRleE5hbWU6IHN0cmluZykgPT4gW2Bsb2dJbmRleDoke2luZGV4TmFtZX1gXTtcblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yIGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgY29uc3QgbG9nUXVvdGFJbkV2ZW50cyA9IE1hdGguZmxvb3IocHJvcHMuZGFpbHlMb2dRdW90YS52YWx1ZUluTWlsbGlvbkV2ZW50cyAqIDFfMDAwXzAwMCk7XG4gICAgY29uc3Qgd2FybmluZ1RocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgLyAxMDApKTtcbiAgICBjb25zdCBhbGVydFRocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLmFsZXJ0VGhyZXNob2xkSW5QZXJjZW50IC8gMTAwKSk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFtwcm9wcy5hbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHtjb21tb25Nb25pdG9yTmFtZVByZWZpeChwcm9wcy5pbmRleE5hbWUpfTogTG9nIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgICAgdHlwZTogJ21ldHJpYyBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlLGRhdGFkb2dfaW5kZXg6JHtwcm9wcy5pbmRleE5hbWV9fS5hc19jb3VudCgpID49ICR7YWxlcnRUaHJlc2hvbGR9YCxcbiAgICAgICAgbWVzc2FnZTogYFtQM10gSW5zcGVjdCB5b3VyIGxvZyB2b2x1bWUgYXQgJHtkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKFxuICAgICAgICAgIHByb3BzLmluZGV4TmFtZSwgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICAgICApfSBvciBhZGFwdCB0aGUgbG9nIHF1b3RhIGF0ICR7ZGF0YWRvZ0xvZ3NJbmRleGVzQ29uZmlndXJhdGlvbkRlZXBMaW5rKHByb3BzLm9yZ2FuaXphdGlvbil9YCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICAgIGNyaXRpY2FsOiBhbGVydFRocmVzaG9sZCxcbiAgICAgICAgICAgIHdhcm5pbmc6IHdhcm5pbmdUaHJlc2hvbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiAhcHJvcHMuc3BhcnNlTG9nZ2luZyxcbiAgICAgICAgICBub19kYXRhX3RpbWVmcmFtZTogMjQgKiA2MCwgLy8gMSBkYXlcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRGF0YWRvZ0xvZ3NBbm9tYWx5TW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW3Byb3BzLmFsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke2NvbW1vbk1vbml0b3JOYW1lUHJlZml4KHByb3BzLmluZGV4TmFtZSl9OiBMb2cgYW1vdW50IGlzIHJpc2luZyB0byB1bmV4cGVjdGVkIGxldmVsc2AsXG4gICAgICAgIHR5cGU6ICdtZXRyaWMgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGF2ZyhsYXN0XzRoKTphbm9tYWxpZXMoc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2UsZGF0YWRvZ19pbmRleDoke3Byb3BzLmluZGV4TmFtZX19LmFzX2NvdW50KCksICdyb2J1c3QnLCAyLCBkaXJlY3Rpb249J2Fib3ZlJywgYWxlcnRfd2luZG93PSdsYXN0XzE1bScsIGludGVydmFsPTYwLCBjb3VudF9kZWZhdWx0X3plcm89J3RydWUnLCBzZWFzb25hbGl0eT0nd2Vla2x5JywgdGltZXpvbmU9J2V1cm9wZS9iZXJsaW4nKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYFtQNF0gTG9ncyBhcmUgZ2V0dGluZyBvdXQgb2YgY29udHJvbDogJHtkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKFxuICAgICAgICAgIHByb3BzLmluZGV4TmFtZSwgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICAgICApfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiAhcHJvcHMuc3BhcnNlTG9nZ2luZyxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFSZWFjaGVkTW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW3Byb3BzLmFsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke2NvbW1vbk1vbml0b3JOYW1lUHJlZml4KHByb3BzLmluZGV4TmFtZSl9OiBMb2cgcXVvdGEgcmVhY2hlZGAsXG4gICAgICAgIHR5cGU6ICdldmVudC12MiBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgZXZlbnRzKFwic291cmNlOmRhdGFkb2cgZGF0YWRvZ19pbmRleDoke3Byb3BzLmluZGV4TmFtZX0gRGFpbHkgcXVvdGEgcmVhY2hlZFwiKS5yb2xsdXAoXCJjb3VudFwiKS5sYXN0KFwiMTJoXCIpID4gMGAsXG4gICAgICAgIG1lc3NhZ2U6IGBbUDJdIFRoZSBsb2cgcXVvdGUgZm9yIHRoZSBpbmRleCBoYXMgYmVlbiByZWFjaGVkLiBJZiB5b3UgZG8gbm90IGluY3JlYXNlIHRoZSBxdW90YSBhdCAke2RhdGFkb2dMb2dzSW5kZXhlc0NvbmZpZ3VyYXRpb25EZWVwTGluayhwcm9wcy5vcmdhbml6YXRpb24pfSwgbm8gbmV3IGxvZ3Mgd2lsbCBiZSBpbmRleGVkIHVudGlsIHRoZSBxdW90YSBpcyByZXNldCBhdCAyOjAwcG0gVVRDLmAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0aW1lb3V0X2g6IDI0LFxuICAgICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAuLi5jb21tb25UYWdzKHByb3BzLmluZGV4TmFtZSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIERhdGFkb2dPcmdhbml6YXRpb24gPSAnRVUnIHwgJ0xBVEFNJyB8ICdMYW5kaW5nIFpvbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHN3aXRjaCAob3JnYW5pemF0aW9uID8/ICdFVScpIHtcbiAgICBjYXNlICdFVSc6XG4gICAgICByZXR1cm4gJ2FwcCc7XG4gICAgY2FzZSAnTEFUQU0nOlxuICAgICAgcmV0dXJuICdyaW8tYnJhemlsJztcbiAgICBjYXNlICdMYW5kaW5nIFpvbmUnOlxuICAgICAgcmV0dXJuICdyaW8tbGFuZGluZ3pvbmUnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGFkb2dMb2dzU2VhcmNoV2l0aEluZGV4RmlsdGVyRGVlcExpbmsoaW5kZXhOYW1lOiBzdHJpbmcsIG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gYGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgob3JnYW5pemF0aW9uKX0uZGF0YWRvZ2hxLmV1L2xvZ3M/aW5kZXg9JHtpbmRleE5hbWV9YDtcbn1cblxuZnVuY3Rpb24gZGF0YWRvZ0xvZ3NJbmRleGVzQ29uZmlndXJhdGlvbkRlZXBMaW5rKG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbiB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gYGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgob3JnYW5pemF0aW9uKX0uZGF0YWRvZ2hxLmV1L2xvZ3MvcGlwZWxpbmVzL2luZGV4ZXNgO1xufVxuIl19
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatadogMonitor = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- class DatadogMonitor {
6
- constructor(stack, id, props) {
7
- const monitor = new aws_cdk_lib_1.aws_cloudformation.CfnCustomResource(stack, id, {
8
- serviceToken: aws_cdk_lib_1.Fn.importValue('custom-resource-datadog-monitor-function-arn'),
9
- });
10
- monitor.addPropertyOverride('ServiceName', props.serviceName);
11
- monitor.addPropertyOverride('AlertTypes', props.alertTypes);
12
- if (props.autoCloseOpsGenieAlerts !== undefined) {
13
- monitor.addPropertyOverride('AutoCloseOpsGenieAlerts', props.autoCloseOpsGenieAlerts);
14
- }
15
- monitor.addPropertyOverride('Monitor', props.monitor);
16
- }
17
- }
18
- exports.DatadogMonitor = DatadogMonitor;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZ01vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZy9kYXRhZG9nTW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBcUQ7QUFZckQsTUFBYSxjQUFjO0lBQ3pCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQ0FBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLFlBQVksRUFBRSxnQkFBRSxDQUFDLFdBQVcsQ0FBQyw4Q0FBOEMsQ0FBQztTQUM3RSxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUU7WUFDL0MsT0FBTyxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQ3ZGO1FBQ0QsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGO0FBWkQsd0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NfY2xvdWRmb3JtYXRpb24sIEZuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCB0eXBlIERhdGFkb2dBbGVydFR5cGUgPSAnb3BzZ2VuaWUnIHwgJ3NsYWNrJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nTW9uaXRvclByb3BzIHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgYWxlcnRUeXBlcz86IERhdGFkb2dBbGVydFR5cGVbXTtcbiAgYXV0b0Nsb3NlT3BzR2VuaWVBbGVydHM/OiBib29sZWFuO1xuICBtb25pdG9yOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzdGFjazogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ01vbml0b3JQcm9wcykge1xuICAgIGNvbnN0IG1vbml0b3IgPSBuZXcgYXdzX2Nsb3VkZm9ybWF0aW9uLkNmbkN1c3RvbVJlc291cmNlKHN0YWNrLCBpZCwge1xuICAgICAgc2VydmljZVRva2VuOiBGbi5pbXBvcnRWYWx1ZSgnY3VzdG9tLXJlc291cmNlLWRhdGFkb2ctbW9uaXRvci1mdW5jdGlvbi1hcm4nKSxcbiAgICB9KTtcbiAgICBtb25pdG9yLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1NlcnZpY2VOYW1lJywgcHJvcHMuc2VydmljZU5hbWUpO1xuICAgIG1vbml0b3IuYWRkUHJvcGVydHlPdmVycmlkZSgnQWxlcnRUeXBlcycsIHByb3BzLmFsZXJ0VHlwZXMpO1xuICAgIGlmIChwcm9wcy5hdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtb25pdG9yLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ0F1dG9DbG9zZU9wc0dlbmllQWxlcnRzJywgcHJvcHMuYXV0b0Nsb3NlT3BzR2VuaWVBbGVydHMpO1xuICAgIH1cbiAgICBtb25pdG9yLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ01vbml0b3InLCBwcm9wcy5tb25pdG9yKTtcbiAgfVxufVxuIl19