truemark-cdk-lib 0.0.37 → 0.0.38-alpha.2
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/aws-centergauge/index.d.ts +1 -0
- package/aws-centergauge/index.js +14 -0
- package/aws-centergauge/lib/alerts-topic.d.ts +31 -0
- package/aws-centergauge/lib/alerts-topic.js +50 -0
- package/aws-centergauge/lib/index.d.ts +1 -0
- package/aws-centergauge/lib/index.js +14 -0
- package/aws-route53/lib/domain-name.d.ts +124 -2
- package/aws-route53/lib/domain-name.js +51 -3
- package/aws-ses/index.d.ts +1 -0
- package/aws-ses/index.js +14 -0
- package/aws-ses/lib/index.d.ts +1 -0
- package/aws-ses/lib/index.js +14 -0
- package/aws-ses/lib/receipt-rule-set-activator.d.ts +8 -0
- package/aws-ses/lib/receipt-rule-set-activator.js +29 -0
- package/index.d.ts +2 -0
- package/index.js +3 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./lib";
|
|
@@ -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("./lib"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9saWJcIlxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { IKey } from "aws-cdk-lib/aws-kms";
|
|
3
|
+
/**
|
|
4
|
+
* Properties for AlertsTopic
|
|
5
|
+
*/
|
|
6
|
+
export interface AlertsTopicProps {
|
|
7
|
+
/**
|
|
8
|
+
* Overrides default topic display name.
|
|
9
|
+
*
|
|
10
|
+
* @default "CenterGaugeAlerts"
|
|
11
|
+
*/
|
|
12
|
+
readonly displayName?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Overrides the use of the default aws/sns KMS key for encryption
|
|
15
|
+
*
|
|
16
|
+
* @default uses AWS managed SNS KMS key
|
|
17
|
+
*/
|
|
18
|
+
readonly masterKey?: IKey;
|
|
19
|
+
/**
|
|
20
|
+
* Overrides the default alerts URL.
|
|
21
|
+
*
|
|
22
|
+
* @default https://alerts.centergauge.com/
|
|
23
|
+
*/
|
|
24
|
+
readonly url?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Sets up an SNS Topic that will send notifications to CenterGauge.
|
|
28
|
+
*/
|
|
29
|
+
export declare class AlertsTopic extends Construct {
|
|
30
|
+
constructor(scope: Construct, id: string, props: AlertsTopicProps);
|
|
31
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlertsTopic = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_sns_1 = require("aws-cdk-lib/aws-sns");
|
|
6
|
+
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
7
|
+
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
8
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
9
|
+
/**
|
|
10
|
+
* Sets up an SNS Topic that will send notifications to CenterGauge.
|
|
11
|
+
*/
|
|
12
|
+
class AlertsTopic extends constructs_1.Construct {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
super(scope, id);
|
|
16
|
+
const masterKey = (_a = props.masterKey) !== null && _a !== void 0 ? _a : aws_kms_1.Alias.fromAliasName(this, "AwsSnsKey", "aws/sns");
|
|
17
|
+
// TODO Change to standard Queue
|
|
18
|
+
const dlq = new aws_sqs_1.Queue(this, "DeadLetterQueue", {
|
|
19
|
+
retentionPeriod: aws_cdk_lib_1.Duration.seconds(1209600)
|
|
20
|
+
});
|
|
21
|
+
const topic = new aws_sns_1.Topic(this, "Default", {
|
|
22
|
+
displayName: (_b = props.displayName) !== null && _b !== void 0 ? _b : "CenterGaugeAlerts",
|
|
23
|
+
fifo: false,
|
|
24
|
+
masterKey
|
|
25
|
+
});
|
|
26
|
+
// TODO Add Grant
|
|
27
|
+
const subscription = new aws_sns_1.CfnSubscription(this, "Subscription", {
|
|
28
|
+
topicArn: topic.topicArn,
|
|
29
|
+
protocol: "https",
|
|
30
|
+
endpoint: (_c = props.url) !== null && _c !== void 0 ? _c : "https://alerts.centergauge.com/",
|
|
31
|
+
rawMessageDelivery: false,
|
|
32
|
+
deliveryPolicy: JSON.stringify({
|
|
33
|
+
"healthyRetryPolicy": {
|
|
34
|
+
"numRetries": 10,
|
|
35
|
+
"numNoDelayRetries": 0,
|
|
36
|
+
"minDelayTarget": 30,
|
|
37
|
+
"maxDelayTarget": 120,
|
|
38
|
+
"numMinDelayRetries": 3,
|
|
39
|
+
"numMaxDelayRetries": 0,
|
|
40
|
+
"backoffFunction": "linear"
|
|
41
|
+
}
|
|
42
|
+
}),
|
|
43
|
+
redrivePolicy: JSON.stringify({
|
|
44
|
+
"deadLetterTargetArn": dlq.queueArn
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.AlertsTopic = AlertsTopic;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLXRvcGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWxlcnRzLXRvcGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxQztBQUNyQyxpREFBMkQ7QUFDM0QsaURBQWdEO0FBQ2hELGlEQUEwQztBQUMxQyw2Q0FBcUM7QUE2QnJDOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFFeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1Qjs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFNBQVMsU0FBRyxLQUFLLENBQUMsU0FBUyxtQ0FBSSxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFdkYsZ0NBQWdDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUM3QyxlQUFlLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzNDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdkMsV0FBVyxRQUFFLEtBQUssQ0FBQyxXQUFXLG1DQUFJLG1CQUFtQjtZQUNyRCxJQUFJLEVBQUUsS0FBSztZQUNYLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxpQkFBaUI7UUFFakIsTUFBTSxZQUFZLEdBQUcsSUFBSSx5QkFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDN0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsUUFBRSxLQUFLLENBQUMsR0FBRyxtQ0FBSSxpQ0FBaUM7WUFDeEQsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDN0Isb0JBQW9CLEVBQUU7b0JBQ3BCLFlBQVksRUFBRSxFQUFFO29CQUNoQixtQkFBbUIsRUFBRSxDQUFDO29CQUN0QixnQkFBZ0IsRUFBRSxFQUFFO29CQUNwQixnQkFBZ0IsRUFBRSxHQUFHO29CQUNyQixvQkFBb0IsRUFBRSxDQUFDO29CQUN2QixvQkFBb0IsRUFBRSxDQUFDO29CQUN2QixpQkFBaUIsRUFBRSxRQUFRO2lCQUM1QjthQUNGLENBQUM7WUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDNUIscUJBQXFCLEVBQUUsR0FBRyxDQUFDLFFBQVE7YUFDcEMsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpDRCxrQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7Q2ZuU3Vic2NyaXB0aW9uLCBUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7QWxpYXMsIElLZXl9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5pbXBvcnQge1F1ZXVlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgQWxlcnRzVG9waWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydHNUb3BpY1Byb3BzIHtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIGRlZmF1bHQgdG9waWMgZGlzcGxheSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkNlbnRlckdhdWdlQWxlcnRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIHVzZSBvZiB0aGUgZGVmYXVsdCBhd3Mvc25zIEtNUyBrZXkgZm9yIGVuY3J5cHRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdXNlcyBBV1MgbWFuYWdlZCBTTlMgS01TIGtleVxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyS2V5PzogSUtleTtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGFsZXJ0cyBVUkwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGh0dHBzOi8vYWxlcnRzLmNlbnRlcmdhdWdlLmNvbS9cbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXRzIHVwIGFuIFNOUyBUb3BpYyB0aGF0IHdpbGwgc2VuZCBub3RpZmljYXRpb25zIHRvIENlbnRlckdhdWdlLlxuICovXG5leHBvcnQgY2xhc3MgQWxlcnRzVG9waWMgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGVydHNUb3BpY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IHByb3BzLm1hc3RlcktleSA/PyBBbGlhcy5mcm9tQWxpYXNOYW1lKHRoaXMsIFwiQXdzU25zS2V5XCIsIFwiYXdzL3Nuc1wiKTtcblxuICAgIC8vIFRPRE8gQ2hhbmdlIHRvIHN0YW5kYXJkIFF1ZXVlXG4gICAgY29uc3QgZGxxID0gbmV3IFF1ZXVlKHRoaXMsIFwiRGVhZExldHRlclF1ZXVlXCIsIHtcbiAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uc2Vjb25kcygxMjA5NjAwKVxuICAgIH0pO1xuXG4gICAgY29uc3QgdG9waWMgPSBuZXcgVG9waWModGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGRpc3BsYXlOYW1lOiBwcm9wcy5kaXNwbGF5TmFtZSA/PyBcIkNlbnRlckdhdWdlQWxlcnRzXCIsXG4gICAgICBmaWZvOiBmYWxzZSxcbiAgICAgIG1hc3RlcktleVxuICAgIH0pO1xuXG4gICAgLy8gVE9ETyBBZGQgR3JhbnRcblxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBDZm5TdWJzY3JpcHRpb24odGhpcywgXCJTdWJzY3JpcHRpb25cIiwge1xuICAgICAgdG9waWNBcm46IHRvcGljLnRvcGljQXJuLFxuICAgICAgcHJvdG9jb2w6IFwiaHR0cHNcIixcbiAgICAgIGVuZHBvaW50OiBwcm9wcy51cmwgPz8gXCJodHRwczovL2FsZXJ0cy5jZW50ZXJnYXVnZS5jb20vXCIsXG4gICAgICByYXdNZXNzYWdlRGVsaXZlcnk6IGZhbHNlLFxuICAgICAgZGVsaXZlcnlQb2xpY3k6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgXCJoZWFsdGh5UmV0cnlQb2xpY3lcIjoge1xuICAgICAgICAgIFwibnVtUmV0cmllc1wiOiAxMCxcbiAgICAgICAgICBcIm51bU5vRGVsYXlSZXRyaWVzXCI6IDAsXG4gICAgICAgICAgXCJtaW5EZWxheVRhcmdldFwiOiAzMCxcbiAgICAgICAgICBcIm1heERlbGF5VGFyZ2V0XCI6IDEyMCxcbiAgICAgICAgICBcIm51bU1pbkRlbGF5UmV0cmllc1wiOiAzLFxuICAgICAgICAgIFwibnVtTWF4RGVsYXlSZXRyaWVzXCI6IDAsXG4gICAgICAgICAgXCJiYWNrb2ZmRnVuY3Rpb25cIjogXCJsaW5lYXJcIlxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHJlZHJpdmVQb2xpY3k6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgXCJkZWFkTGV0dGVyVGFyZ2V0QXJuXCI6IGRscS5xdWV1ZUFyblxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./alerts-topic";
|
|
@@ -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("./alerts-topic"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxpREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hbGVydHMtdG9waWNcIlxuIl19
|
|
@@ -3,6 +3,11 @@ import { Construct } from "constructs";
|
|
|
3
3
|
import { WeightedARecord } from "./weighted-a-record";
|
|
4
4
|
import { LatencyARecord } from "./latency-a-record";
|
|
5
5
|
import { WeightedLatencyARecord } from "./weighted-latency-a-record";
|
|
6
|
+
import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
7
|
+
import * as apigatewayv2 from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
8
|
+
import * as apigateway from "aws-cdk-lib/aws-apigateway";
|
|
9
|
+
import { EndpointType, MTLSConfig, SecurityPolicy } from "@aws-cdk/aws-apigatewayv2-alpha/lib/common/domain-name";
|
|
10
|
+
import { IRestApi } from "aws-cdk-lib/aws-apigateway/lib/restapi";
|
|
6
11
|
/**
|
|
7
12
|
* Properties for DomainName
|
|
8
13
|
*/
|
|
@@ -12,6 +17,99 @@ export interface DomainNameProps {
|
|
|
12
17
|
readonly privateZone?: boolean;
|
|
13
18
|
readonly vpcId?: string;
|
|
14
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* ACM certificate options
|
|
22
|
+
*/
|
|
23
|
+
export interface CertificateOptions {
|
|
24
|
+
/**
|
|
25
|
+
* The identifier to use.
|
|
26
|
+
*
|
|
27
|
+
* @default ${this.toIdentifier()}-cert
|
|
28
|
+
*/
|
|
29
|
+
readonly id?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Alternative domain names on the certificate.
|
|
32
|
+
*/
|
|
33
|
+
readonly subjectAlternativeNames?: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Options for a V2 API gateway domain name.
|
|
37
|
+
*/
|
|
38
|
+
export interface ApiGatewayV2DomainNameOptions {
|
|
39
|
+
/**
|
|
40
|
+
* The identifier to use.
|
|
41
|
+
*
|
|
42
|
+
* @default ${this.toIdentifier()}-apigwv2
|
|
43
|
+
*/
|
|
44
|
+
readonly id?: string;
|
|
45
|
+
/**
|
|
46
|
+
* The type of endpoint for this DomainName.
|
|
47
|
+
*
|
|
48
|
+
* @default EndpointType.REGIONAL
|
|
49
|
+
*/
|
|
50
|
+
readonly endpointType?: EndpointType;
|
|
51
|
+
/**
|
|
52
|
+
* The Transport Layer Security (TLS) version + cipher suite for this domain name.
|
|
53
|
+
*
|
|
54
|
+
* @default SecurityPolicy.TLS_1_2
|
|
55
|
+
*/
|
|
56
|
+
readonly securityPolicy?: SecurityPolicy;
|
|
57
|
+
/**
|
|
58
|
+
* The mutual TLS authentication configuration for a custom domain name.
|
|
59
|
+
*
|
|
60
|
+
* @default - mTLS is not configured.
|
|
61
|
+
*/
|
|
62
|
+
readonly mtls?: MTLSConfig;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options for an API gateway domain name
|
|
66
|
+
*/
|
|
67
|
+
export interface ApiGatewayDomainNameOptions {
|
|
68
|
+
/**
|
|
69
|
+
* The identifier to use.
|
|
70
|
+
*
|
|
71
|
+
* @default ${this.toIdentifier()}-apigw
|
|
72
|
+
*/
|
|
73
|
+
readonly id?: string;
|
|
74
|
+
/**
|
|
75
|
+
* If specified, all requests to this domain will be mapped to the production
|
|
76
|
+
* deployment of this API. If you wish to map this domain to multiple APIs
|
|
77
|
+
* with different base paths, don't specify this option and use
|
|
78
|
+
* `addBasePathMapping`.
|
|
79
|
+
*
|
|
80
|
+
* @default - you will have to call `addBasePathMapping` to map this domain to
|
|
81
|
+
* API endpoints.
|
|
82
|
+
*/
|
|
83
|
+
readonly mapping?: IRestApi;
|
|
84
|
+
/**
|
|
85
|
+
* The type of endpoint for this DomainName.
|
|
86
|
+
*
|
|
87
|
+
* @default REGIONAL
|
|
88
|
+
*/
|
|
89
|
+
readonly endpointType?: EndpointType;
|
|
90
|
+
/**
|
|
91
|
+
* The Transport Layer Security (TLS) version + cipher suite for this domain name.
|
|
92
|
+
*
|
|
93
|
+
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
|
|
94
|
+
* @default SecurityPolicy.TLS_1_0
|
|
95
|
+
*/
|
|
96
|
+
readonly securityPolicy?: SecurityPolicy;
|
|
97
|
+
/**
|
|
98
|
+
* The base path name that callers of the API must provide in the URL after
|
|
99
|
+
* the domain name (e.g. `example.com/base-path`). If you specify this
|
|
100
|
+
* property, it can't be an empty string.
|
|
101
|
+
*
|
|
102
|
+
* @default - map requests from the domain root (e.g. `example.com`). If this
|
|
103
|
+
* is undefined, no additional mappings will be allowed on this domain name.
|
|
104
|
+
*/
|
|
105
|
+
readonly basePath?: string;
|
|
106
|
+
/**
|
|
107
|
+
* The mutual TLS authentication configuration for a custom domain name.
|
|
108
|
+
*
|
|
109
|
+
* @default - mTLS is not configured.
|
|
110
|
+
*/
|
|
111
|
+
readonly mtls?: MTLSConfig;
|
|
112
|
+
}
|
|
15
113
|
/**
|
|
16
114
|
* Utility class for holding domain name information and
|
|
17
115
|
* doing useful things with it.
|
|
@@ -60,6 +158,7 @@ export declare class DomainName {
|
|
|
60
158
|
getZone(): string;
|
|
61
159
|
/**
|
|
62
160
|
* Returns the route53 hosted zone associated with this domain name.
|
|
161
|
+
* This method is safe to call repeatedly, the lookup will only be done once.
|
|
63
162
|
*
|
|
64
163
|
* @param scope the scope to use if a lookup is required
|
|
65
164
|
* @param id an optional ID if a lookup is required; one is generated if not provided
|
|
@@ -88,13 +187,36 @@ export declare class DomainName {
|
|
|
88
187
|
*/
|
|
89
188
|
createLatencyARecord(scope: Construct, target: RecordTarget): LatencyARecord;
|
|
90
189
|
/**
|
|
91
|
-
*
|
|
190
|
+
* Creates a weighted latency Route53 record for this domain name.
|
|
92
191
|
*
|
|
93
192
|
* @param scope the scope to create the record in
|
|
94
193
|
* @param target the target of the record
|
|
95
194
|
* @param weight the initial weight; defaults to 0
|
|
96
195
|
*/
|
|
97
196
|
createWeightedLatencyARecord(scope: Construct, target: RecordTarget, weight?: number): WeightedLatencyARecord;
|
|
197
|
+
/**
|
|
198
|
+
* Creates an ACM certificate for the domain name.
|
|
199
|
+
*
|
|
200
|
+
* @param scope the scope to create the record in
|
|
201
|
+
* @param opts additional options
|
|
202
|
+
*/
|
|
203
|
+
createCertificate(scope: Construct, opts?: CertificateOptions): Certificate;
|
|
204
|
+
/**
|
|
205
|
+
* Creates an API Gateway V2 domain name.
|
|
206
|
+
*
|
|
207
|
+
* @param scope the scope to create the domain name in
|
|
208
|
+
* @param certificate the certificate to use on the domain name
|
|
209
|
+
* @param opts additional options
|
|
210
|
+
*/
|
|
211
|
+
createApiGatewayV2DomainName(scope: Construct, certificate: Certificate, opts?: ApiGatewayV2DomainNameOptions): apigatewayv2.DomainName;
|
|
212
|
+
/**
|
|
213
|
+
* Creates an API Gateway domain name.
|
|
214
|
+
*
|
|
215
|
+
* @param scope the scope to create the domain name in
|
|
216
|
+
* @param certificate the certificate to use on the domain name
|
|
217
|
+
* @param opts additional options
|
|
218
|
+
*/
|
|
219
|
+
createApiGatewayDomainName(scope: Construct, certificate: Certificate, opts?: ApiGatewayDomainNameOptions): apigateway.DomainName;
|
|
98
220
|
/**
|
|
99
221
|
* Converts an array of DomainNameProps to DomainName. This function will return an empty array
|
|
100
222
|
* if domainNameProps is undefined.
|
|
@@ -128,7 +250,7 @@ export declare class DomainName {
|
|
|
128
250
|
[domainName: string]: IHostedZone;
|
|
129
251
|
};
|
|
130
252
|
/**
|
|
131
|
-
* Converts an
|
|
253
|
+
* Converts an array of DomainNameProps objects to a map where the key is the domain name string and the
|
|
132
254
|
* value is an IHostedZone. This method will return an empty map if domainNameProps is undefined. This
|
|
133
255
|
* function is useful when used in conjunction with functions like CertificateValidation.fromDnsMultiZone.
|
|
134
256
|
*
|
|
@@ -5,6 +5,9 @@ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
|
5
5
|
const weighted_a_record_1 = require("./weighted-a-record");
|
|
6
6
|
const latency_a_record_1 = require("./latency-a-record");
|
|
7
7
|
const weighted_latency_a_record_1 = require("./weighted-latency-a-record");
|
|
8
|
+
const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
|
|
9
|
+
const apigatewayv2 = require("@aws-cdk/aws-apigatewayv2-alpha");
|
|
10
|
+
const apigateway = require("aws-cdk-lib/aws-apigateway");
|
|
8
11
|
/**
|
|
9
12
|
* Utility class for holding domain name information and
|
|
10
13
|
* doing useful things with it.
|
|
@@ -79,6 +82,7 @@ class DomainName {
|
|
|
79
82
|
}
|
|
80
83
|
/**
|
|
81
84
|
* Returns the route53 hosted zone associated with this domain name.
|
|
85
|
+
* This method is safe to call repeatedly, the lookup will only be done once.
|
|
82
86
|
*
|
|
83
87
|
* @param scope the scope to use if a lookup is required
|
|
84
88
|
* @param id an optional ID if a lookup is required; one is generated if not provided
|
|
@@ -135,7 +139,7 @@ class DomainName {
|
|
|
135
139
|
});
|
|
136
140
|
}
|
|
137
141
|
/**
|
|
138
|
-
*
|
|
142
|
+
* Creates a weighted latency Route53 record for this domain name.
|
|
139
143
|
*
|
|
140
144
|
* @param scope the scope to create the record in
|
|
141
145
|
* @param target the target of the record
|
|
@@ -149,6 +153,50 @@ class DomainName {
|
|
|
149
153
|
weight
|
|
150
154
|
});
|
|
151
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Creates an ACM certificate for the domain name.
|
|
158
|
+
*
|
|
159
|
+
* @param scope the scope to create the record in
|
|
160
|
+
* @param opts additional options
|
|
161
|
+
*/
|
|
162
|
+
createCertificate(scope, opts) {
|
|
163
|
+
var _a;
|
|
164
|
+
return new aws_certificatemanager_1.Certificate(scope, (_a = opts === null || opts === void 0 ? void 0 : opts.id) !== null && _a !== void 0 ? _a : `${this.toIdentifier()}-cert`, {
|
|
165
|
+
domainName: this.toString(),
|
|
166
|
+
validation: aws_certificatemanager_1.CertificateValidation.fromDns(this.getHostedZone(scope)),
|
|
167
|
+
subjectAlternativeNames: opts === null || opts === void 0 ? void 0 : opts.subjectAlternativeNames
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Creates an API Gateway V2 domain name.
|
|
172
|
+
*
|
|
173
|
+
* @param scope the scope to create the domain name in
|
|
174
|
+
* @param certificate the certificate to use on the domain name
|
|
175
|
+
* @param opts additional options
|
|
176
|
+
*/
|
|
177
|
+
createApiGatewayV2DomainName(scope, certificate, opts) {
|
|
178
|
+
var _a;
|
|
179
|
+
return new apigatewayv2.DomainName(scope, (_a = opts === null || opts === void 0 ? void 0 : opts.id) !== null && _a !== void 0 ? _a : `${this.toIdentifier()}-apigwv2`, {
|
|
180
|
+
domainName: this.toString(),
|
|
181
|
+
certificate,
|
|
182
|
+
...opts
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Creates an API Gateway domain name.
|
|
187
|
+
*
|
|
188
|
+
* @param scope the scope to create the domain name in
|
|
189
|
+
* @param certificate the certificate to use on the domain name
|
|
190
|
+
* @param opts additional options
|
|
191
|
+
*/
|
|
192
|
+
createApiGatewayDomainName(scope, certificate, opts) {
|
|
193
|
+
var _a;
|
|
194
|
+
return new apigateway.DomainName(scope, (_a = opts === null || opts === void 0 ? void 0 : opts.id) !== null && _a !== void 0 ? _a : `${this.toIdentifier()}-apigw`, {
|
|
195
|
+
domainName: this.toString(),
|
|
196
|
+
certificate,
|
|
197
|
+
...opts
|
|
198
|
+
});
|
|
199
|
+
}
|
|
152
200
|
/**
|
|
153
201
|
* Converts an array of DomainNameProps to DomainName. This function will return an empty array
|
|
154
202
|
* if domainNameProps is undefined.
|
|
@@ -194,7 +242,7 @@ class DomainName {
|
|
|
194
242
|
return map;
|
|
195
243
|
}
|
|
196
244
|
/**
|
|
197
|
-
* Converts an
|
|
245
|
+
* Converts an array of DomainNameProps objects to a map where the key is the domain name string and the
|
|
198
246
|
* value is an IHostedZone. This method will return an empty map if domainNameProps is undefined. This
|
|
199
247
|
* function is useful when used in conjunction with functions like CertificateValidation.fromDnsMultiZone.
|
|
200
248
|
*
|
|
@@ -221,4 +269,4 @@ class DomainName {
|
|
|
221
269
|
}
|
|
222
270
|
}
|
|
223
271
|
exports.DomainName = DomainName;
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkb21haW4tbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBdUY7QUFFdkYsMkRBQW9EO0FBQ3BELHlEQUFrRDtBQUNsRCwyRUFBbUU7QUFZbkU7OztHQUdHO0FBQ0gsTUFBYSxVQUFVO0lBUXJCOzs7O09BSUc7SUFDSCxZQUFZLEtBQXNCOztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsV0FBVyxTQUFHLEtBQUssQ0FBQyxXQUFXLG1DQUFJLEtBQUssQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBc0I7O1FBQy9CLElBQUksV0FBVyxHQUFHLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QyxLQUFLLENBQUMsQ0FBQTtZQUM1QyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFnQixFQUFFLGVBQWtDO1FBQzVFLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQXNCLEVBQUUsV0FBMEI7UUFDdEUsS0FBSyxJQUFJLFVBQVUsSUFBSSxXQUFXLGFBQVgsV0FBVyxjQUFYLFdBQVcsR0FBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLFVBQVUsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBeE9ELGdDQXdPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QVJlY29yZCwgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7V2VpZ2h0ZWRBUmVjb3JkfSBmcm9tIFwiLi93ZWlnaHRlZC1hLXJlY29yZFwiO1xuaW1wb3J0IHtMYXRlbmN5QVJlY29yZH0gZnJvbSBcIi4vbGF0ZW5jeS1hLXJlY29yZFwiO1xuaW1wb3J0IHtXZWlnaHRlZExhdGVuY3lBUmVjb3JkfSBmcm9tIFwiLi93ZWlnaHRlZC1sYXRlbmN5LWEtcmVjb3JkXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRG9tYWluTmFtZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk5hbWVQcm9wcyB7XG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuICByZWFkb25seSB6b25lOiBzdHJpbmcgfCBJSG9zdGVkWm9uZTtcbiAgcmVhZG9ubHkgcHJpdmF0ZVpvbmU/OiBib29sZWFuO1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGNsYXNzIGZvciBob2xkaW5nIGRvbWFpbiBuYW1lIGluZm9ybWF0aW9uIGFuZFxuICogZG9pbmcgdXNlZnVsIHRoaW5ncyB3aXRoIGl0LlxuICovXG5leHBvcnQgY2xhc3MgRG9tYWluTmFtZSB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgem9uZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgaG9zdGVkWm9uZT86IElIb3N0ZWRab25lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJpdmF0ZVpvbmU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCByZWFkb25seSB2cGNJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBEb21haW5OYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGRvbWFpbiBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRG9tYWluTmFtZVByb3BzKSB7XG4gICAgdGhpcy5wcmVmaXggPSBwcm9wcy5wcmVmaXg7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy56b25lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLnpvbmUgPSBwcm9wcy56b25lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhvc3RlZFpvbmUgPSBwcm9wcy56b25lO1xuICAgICAgdGhpcy56b25lID0gdGhpcy5ob3N0ZWRab25lLnpvbmVOYW1lO1xuICAgIH1cbiAgICB0aGlzLnByaXZhdGVab25lID0gcHJvcHMucHJpdmF0ZVpvbmUgPz8gZmFsc2U7XG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByZWZpeCBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICovXG4gIGdldFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByZWZpeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHpvbmUgaXMgcHJpdmF0ZS4gRmFsc2UgaWYgb3RoZXJ3aXNlLlxuICAgKi9cbiAgaW5Qcml2YXRlWm9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcml2YXRlWm9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2cGMgSUQgZm9yIHRoaXMgem9uZSBvciB1bmRlZmluZWQgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICBnZXRWcGNJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZwY0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcHMgbWF0Y2ggdGhlIGRvbWFpbiBuYW1lLiBGYWxzZSBpZiBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcHMgdG8gY29tcGFyZVxuICAgKi9cbiAgcHJvcHNNYXRjaChwcm9wczogRG9tYWluTmFtZVByb3BzKTogYm9vbGVhbiB7XG4gICAgbGV0IHByb3Bab25lU3RyID0gdHlwZW9mIHByb3BzLnpvbmUgPT09IFwic3RyaW5nXCIgPyBwcm9wcy56b25lIDogcHJvcHMuem9uZS56b25lTmFtZTtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXggPT09IHByb3BzLnByZWZpeFxuICAgICAgJiYgdGhpcy56b25lID09PSBwcm9wWm9uZVN0clxuICAgICAgJiYgdGhpcy5wcml2YXRlWm9uZSA9PT0gKHByb3BzLnByaXZhdGVab25lID8/IGZhbHNlKVxuICAgICAgJiYgdGhpcy52cGNJZCA9PT0gcHJvcHMudnBjSWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgdmVyc2lvbiBvZiB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMucHJlZml4ID09IFwiXCIgPyBcIlwiIDogdGhpcy5wcmVmaXggKyBcIi5cIikgKyB0aGlzLnpvbmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGZyaWVuZGx5IGlkZW50aWZpZXIgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICB0b0lkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpLnJlcGxhY2UoXCIuXCIsIFwiLVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKi9cbiAgZ2V0Wm9uZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnpvbmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcm91dGU1MyBob3N0ZWQgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0byB1c2UgaWYgYSBsb29rdXAgaXMgcmVxdWlyZWRcbiAgICogQHBhcmFtIGlkIGFuIG9wdGlvbmFsIElEIGlmIGEgbG9va3VwIGlzIHJlcXVpcmVkOyBvbmUgaXMgZ2VuZXJhdGVkIGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgZ2V0SG9zdGVkWm9uZShzY29wZTogQ29uc3RydWN0LCBpZD86IHN0cmluZykgOiBJSG9zdGVkWm9uZSB7XG4gICAgaWYgKHRoaXMuaG9zdGVkWm9uZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmhvc3RlZFpvbmUgPSBIb3N0ZWRab25lLmZyb21Mb29rdXAoc2NvcGUsIGlkID8/IGAke3RoaXMudG9JZGVudGlmaWVyKCl9LXpvbmVgLCB7XG4gICAgICAgIGRvbWFpbk5hbWU6IHRoaXMuem9uZSxcbiAgICAgICAgcHJpdmF0ZVpvbmU6IHRoaXMucHJpdmF0ZVpvbmUsXG4gICAgICAgIHZwY0lkOiB0aGlzLnZwY0lkXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdGVkWm9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUm91dGU1MyBBUmVjb3JkIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgcmVjb3JkIGluXG4gICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBvZiB0aGUgcmVjb3JkXG4gICAqL1xuICBjcmVhdGVBUmVjb3JkKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldDogUmVjb3JkVGFyZ2V0KTogQVJlY29yZCB7XG4gICAgcmV0dXJuIG5ldyBBUmVjb3JkKHNjb3BlLCBgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1hcmVjb3JkYCwge1xuICAgICAgem9uZTogdGhpcy5nZXRIb3N0ZWRab25lKHNjb3BlKSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMudG9TdHJpbmcoKSxcbiAgICAgIHRhcmdldFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB3ZWlnaHRlZCBSb3V0ZTUzIHJlY29yZCBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0byBjcmVhdGUgdGhlIHJlY29yZCBpblxuICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0YXJnZXQgb2YgdGhlIHJlY29yZFxuICAgKiBAcGFyYW0gd2VpZ2h0IHRoZSBpbml0aWFsIHdlaWdodDsgZGVmYXVsdHMgdG8gMFxuICAgKi9cbiAgY3JlYXRlV2VpZ2h0ZWRBUmVjb3JkKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldDogUmVjb3JkVGFyZ2V0LCB3ZWlnaHQ/OiBudW1iZXIpOiBXZWlnaHRlZEFSZWNvcmQge1xuICAgIHJldHVybiBuZXcgV2VpZ2h0ZWRBUmVjb3JkKHNjb3BlLCBgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1hcmVjb3JkYCwge1xuICAgICAgem9uZTogdGhpcy5nZXRIb3N0ZWRab25lKHNjb3BlKSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMudG9TdHJpbmcoKSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHdlaWdodFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBsYXRlbmN5IFJvdXRlNTMgcmVjb3JkIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgcmVjb3JkIGluXG4gICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBvZiB0aGUgcmVjb3JkXG4gICAqL1xuICBjcmVhdGVMYXRlbmN5QVJlY29yZChzY29wZTogQ29uc3RydWN0LCB0YXJnZXQ6IFJlY29yZFRhcmdldCk6IExhdGVuY3lBUmVjb3JkIHtcbiAgICByZXR1cm4gbmV3IExhdGVuY3lBUmVjb3JkKHNjb3BlLCBgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1hcmVjb3JkYCwge1xuICAgICAgem9uZTogdGhpcy5nZXRIb3N0ZWRab25lKHNjb3BlKSxcbiAgICAgIHJlY29yZE5hbWU6IHRoaXMudG9TdHJpbmcoKSxcbiAgICAgIHRhcmdldFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZWQgYSB3ZWlnaHRlZCBsYXRlbmN5IFJvdXRlNTMgcmVjb3JkIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgcmVjb3JkIGluXG4gICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBvZiB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSB3ZWlnaHQgdGhlIGluaXRpYWwgd2VpZ2h0OyBkZWZhdWx0cyB0byAwXG4gICAqL1xuICBjcmVhdGVXZWlnaHRlZExhdGVuY3lBUmVjb3JkKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldDogUmVjb3JkVGFyZ2V0LCB3ZWlnaHQ/OiBudW1iZXIpOiBXZWlnaHRlZExhdGVuY3lBUmVjb3JkIHtcbiAgICByZXR1cm4gbmV3IFdlaWdodGVkTGF0ZW5jeUFSZWNvcmQoc2NvcGUsIGAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFyZWNvcmRgLCB7XG4gICAgICB6b25lOiB0aGlzLmdldEhvc3RlZFpvbmUoc2NvcGUpLFxuICAgICAgcmVjb3JkTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgdGFyZ2V0LFxuICAgICAgd2VpZ2h0XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgRG9tYWluTmFtZVByb3BzIHRvIERvbWFpbk5hbWUuIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgYXJyYXlcbiAgICogaWYgZG9tYWluTmFtZVByb3BzIGlzIHVuZGVmaW5lZC5cbiAgICpcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVQcm9wcyB0aGUgRG9tYWluTmFtZVByb3BzIG9iamVjdHMgdG8gY29udmVydFxuICAgKi9cbiAgc3RhdGljIGZyb21Qcm9wcyhkb21haW5OYW1lUHJvcHM/OiBEb21haW5OYW1lUHJvcHNbXSkgOiBEb21haW5OYW1lW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lUHJvcHMgPT09IHVuZGVmaW5lZCA/IFtdIDogZG9tYWluTmFtZVByb3BzLm1hcChwID0+IG5ldyBEb21haW5OYW1lKHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBEb21haW5OYW1lIG9iamVjdHMgdG8gYW4gYXJyYXkgb2Ygc3RyaW5ncy4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhblxuICAgKiBlbXB0eSBhcnJheSBpZiBkb21haW5OYW1lcyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBkb21haW5OYW1lcyB0aGUgRG9tYWluTmFtZSBvYmplY3RzIHRvIGNvbnZlcnRcbiAgICovXG4gIHN0YXRpYyB0b1N0cmluZ3MoZG9tYWluTmFtZXM/OiBEb21haW5OYW1lW10pIDogc3RyaW5nW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lcyA9PT0gdW5kZWZpbmVkID8gW10gOiBkb21haW5OYW1lcy5tYXAoZCA9PiBkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIERvbWFpbk5hbWVQcm9wcyB0byBhbiBhcnJheSBvZiBzdHJpbmdzLiBUaGlzIGZ1bmN0aW9uIHdpbGxcbiAgICogcmV0dXJuIGFuIGVtcHR5IGFycmF5IGlmIGRvbWFpbk5hbWVQcm9wcyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBkb21haW5OYW1lUHJvcHMgdGhlIERvbWFpbk5hbWVQcm9wcyBvYmplY3RzIHRvIGNvbnZlcnRcbiAgICovXG4gIHN0YXRpYyB0b1N0cmluZ3NGcm9tUHJvcHMoZG9tYWluTmFtZVByb3BzPzogRG9tYWluTmFtZVByb3BzW10pIDogc3RyaW5nW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lUHJvcHMgPT09IHVuZGVmaW5lZCA/IFtdIDogRG9tYWluTmFtZS50b1N0cmluZ3MoRG9tYWluTmFtZS5mcm9tUHJvcHMoZG9tYWluTmFtZVByb3BzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgRG9tYWluTmFtZSBvYmplY3RzIHRvIGEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRvbWFpbiBuYW1lIHN0cmluZyBhbmQgdGhlIHZhbHVlXG4gICAqIGlzIGFuIElIb3N0ZWRab25lLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhbiBlbXB0eSBtYXAgaWYgZG9tYWluTmFtZXMgaXMgdW5kZWZpbmVkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIGlzIHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBmdW5jdGlvbnMgbGlrZSBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURuc011bHRpWm9uZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB1c2VkIGlmIGEgem9uZSBsb29rdXAgaXMgcmVxdWlyZWRcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVzIHRoZSBEb21haW5OYW1lIG9iamVjdHMgdG8gY29udmVydFxuICAgKi9cbiAgc3RhdGljIHRvWm9uZU1hcChzY29wZTogQ29uc3RydWN0LCBkb21haW5OYW1lcz86IERvbWFpbk5hbWVbXSkgOiB7IFtkb21haW5OYW1lOiBzdHJpbmddOiBJSG9zdGVkWm9uZSB9IHtcbiAgICBjb25zdCBtYXA6IHtba2V5OiBzdHJpbmddOiBJSG9zdGVkWm9uZX0gPSB7fVxuICAgIGlmIChkb21haW5OYW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb21haW5OYW1lcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgICBtYXBbZC50b1N0cmluZygpXSA9IGQuZ2V0SG9zdGVkWm9uZShzY29wZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycnkgb2YgRG9tYWluTmFtZVByb3BzIG9iamVjdHMgdG8gYSBtYXAgd2hlcmUgdGhlIGtleSBpcyB0aGUgZG9tYWluIG5hbWUgc3RyaW5nIGFuZCB0aGVcbiAgICogdmFsdWUgaXMgYW4gSUhvc3RlZFpvbmUuIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IG1hcCBpZiBkb21haW5OYW1lUHJvcHMgaXMgdW5kZWZpbmVkLiBUaGlzXG4gICAqIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBmdW5jdGlvbnMgbGlrZSBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURuc011bHRpWm9uZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB1c2VkIGlmIGEgem9uZSBsb29rdXAgaXMgcmVxdWlyZWRcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVQcm9wcyB0aGUgRG9tYWluTmFtZVByb3BzIG9iamVjdHMgdG8gY29udmVydFxuICAgKi9cbiAgc3RhdGljIHRvWm9uZU1hcEZyb21Qcm9wcyhzY29wZTogQ29uc3RydWN0LCBkb21haW5OYW1lUHJvcHM6IERvbWFpbk5hbWVQcm9wc1tdKSA6IHsgW2RvbWFpbk5hbWU6IHN0cmluZ106IElIb3N0ZWRab25lIH0ge1xuICAgIHJldHVybiBEb21haW5OYW1lLnRvWm9uZU1hcChzY29wZSwgRG9tYWluTmFtZS5mcm9tUHJvcHMoZG9tYWluTmFtZVByb3BzKSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIGRvbWFpbiBuYW1lIG1hdGNoaW5nIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIGluIGFuIGFycmF5IG9mIERvbWFpbk5hbWUgb2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIHRoZSBwcm9wZXJ0aWVzIHRvIGNvbXBhcmVcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVzIHRoZSBkb21haW4gbmFtZXMgdG8gc2VhcmNoXG4gICAqIEByZXR1cm4gdGhlIG1hdGNoaW5nIGRvbWFpbiBuYW1lIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgc3RhdGljIGZpbmREb21haW5OYW1lKHByb3BzOiBEb21haW5OYW1lUHJvcHMsIGRvbWFpbk5hbWVzPzogRG9tYWluTmFtZVtdKTogRG9tYWluTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgZG9tYWluTmFtZSBvZiBkb21haW5OYW1lcyA/PyBbXSkge1xuICAgICAgaWYgKGRvbWFpbk5hbWUucHJvcHNNYXRjaChwcm9wcykpIHtcbiAgICAgICAgcmV0dXJuIGRvbWFpbk5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkb21haW4tbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBdUY7QUFFdkYsMkRBQW9EO0FBQ3BELHlEQUFrRDtBQUNsRCwyRUFBbUU7QUFDbkUsK0VBQXNGO0FBQ3RGLGdFQUErRDtBQUMvRCx5REFBd0Q7QUEwSHhEOzs7R0FHRztBQUNILE1BQWEsVUFBVTtJQVFyQjs7OztPQUlHO0lBQ0gsWUFBWSxLQUFzQjs7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDeEI7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsU0FBRyxLQUFLLENBQUMsV0FBVyxtQ0FBSSxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQXNCOztRQUMvQixJQUFJLFdBQVcsR0FBRyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxD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QUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDNUMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxlQUFrQztRQUM1RSxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFzQixFQUFFLFdBQTBCO1FBQ3RFLEtBQUssSUFBSSxVQUFVLElBQUksV0FBVyxhQUFYLFdBQVcsY0FBWCxXQUFXLEdBQUksRUFBRSxFQUFFO1lBQ3hDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxVQUFVLENBQUM7YUFDbkI7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQXJSRCxnQ0FxUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FSZWNvcmQsIEhvc3RlZFpvbmUsIElIb3N0ZWRab25lLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1dlaWdodGVkQVJlY29yZH0gZnJvbSBcIi4vd2VpZ2h0ZWQtYS1yZWNvcmRcIjtcbmltcG9ydCB7TGF0ZW5jeUFSZWNvcmR9IGZyb20gXCIuL2xhdGVuY3ktYS1yZWNvcmRcIjtcbmltcG9ydCB7V2VpZ2h0ZWRMYXRlbmN5QVJlY29yZH0gZnJvbSBcIi4vd2VpZ2h0ZWQtbGF0ZW5jeS1hLXJlY29yZFwiO1xuaW1wb3J0IHtDZXJ0aWZpY2F0ZSwgQ2VydGlmaWNhdGVWYWxpZGF0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgYXBpZ2F0ZXdheXYyIGZyb20gXCJAYXdzLWNkay9hd3MtYXBpZ2F0ZXdheXYyLWFscGhhXCJcbmltcG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCJcbmltcG9ydCB7RW5kcG9pbnRUeXBlLCBNVExTQ29uZmlnLCBTZWN1cml0eVBvbGljeX0gZnJvbSBcIkBhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItYWxwaGEvbGliL2NvbW1vbi9kb21haW4tbmFtZVwiO1xuaW1wb3J0IHtJUmVzdEFwaX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5L2xpYi9yZXN0YXBpXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRG9tYWluTmFtZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk5hbWVQcm9wcyB7XG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuICByZWFkb25seSB6b25lOiBzdHJpbmcgfCBJSG9zdGVkWm9uZTtcbiAgcmVhZG9ubHkgcHJpdmF0ZVpvbmU/OiBib29sZWFuO1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBQ00gY2VydGlmaWNhdGUgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1jZXJ0XG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgZG9tYWluIG5hbWVzIG9uIHRoZSBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBWMiBBUEkgZ2F0ZXdheSBkb21haW4gbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5VjJEb21haW5OYW1lT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1hcGlnd3YyXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgZW5kcG9pbnQgZm9yIHRoaXMgRG9tYWluTmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgRW5kcG9pbnRUeXBlLlJFR0lPTkFMXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFR5cGU/OiBFbmRwb2ludFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUykgdmVyc2lvbiArIGNpcGhlciBzdWl0ZSBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgU2VjdXJpdHlQb2xpY3kuVExTXzFfMlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlQb2xpY3k/OiBTZWN1cml0eVBvbGljeTtcblxuICAvKipcbiAgICogVGhlIG11dHVhbCBUTFMgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBjdXN0b20gZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbVRMUyBpcyBub3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG10bHM/OiBNVExTQ29uZmlnO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFuIEFQSSBnYXRld2F5IGRvbWFpbiBuYW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpR2F0ZXdheURvbWFpbk5hbWVPcHRpb25zIHtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFwaWd3XG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgc3BlY2lmaWVkLCBhbGwgcmVxdWVzdHMgdG8gdGhpcyBkb21haW4gd2lsbCBiZSBtYXBwZWQgdG8gdGhlIHByb2R1Y3Rpb25cbiAgICogZGVwbG95bWVudCBvZiB0aGlzIEFQSS4gSWYgeW91IHdpc2ggdG8gbWFwIHRoaXMgZG9tYWluIHRvIG11bHRpcGxlIEFQSXNcbiAgICogd2l0aCBkaWZmZXJlbnQgYmFzZSBwYXRocywgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiBhbmQgdXNlXG4gICAqIGBhZGRCYXNlUGF0aE1hcHBpbmdgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHlvdSB3aWxsIGhhdmUgdG8gY2FsbCBgYWRkQmFzZVBhdGhNYXBwaW5nYCB0byBtYXAgdGhpcyBkb21haW4gdG9cbiAgICogQVBJIGVuZHBvaW50cy5cbiAgICovXG4gIHJlYWRvbmx5IG1hcHBpbmc/OiBJUmVzdEFwaTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgZW5kcG9pbnQgZm9yIHRoaXMgRG9tYWluTmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgUkVHSU9OQUxcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50VHlwZT86IEVuZHBvaW50VHlwZTtcblxuICAvKipcbiAgICogVGhlIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSB2ZXJzaW9uICsgY2lwaGVyIHN1aXRlIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hcGlnYXRld2F5LWRvbWFpbm5hbWUuaHRtbFxuICAgKiBAZGVmYXVsdCBTZWN1cml0eVBvbGljeS5UTFNfMV8wXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eVBvbGljeT86IFNlY3VyaXR5UG9saWN5O1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBwYXRoIG5hbWUgdGhhdCBjYWxsZXJzIG9mIHRoZSBBUEkgbXVzdCBwcm92aWRlIGluIHRoZSBVUkwgYWZ0ZXJcbiAgICogdGhlIGRvbWFpbiBuYW1lIChlLmcuIGBleGFtcGxlLmNvbS9iYXNlLXBhdGhgKS4gSWYgeW91IHNwZWNpZnkgdGhpc1xuICAgKiBwcm9wZXJ0eSwgaXQgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG1hcCByZXF1ZXN0cyBmcm9tIHRoZSBkb21haW4gcm9vdCAoZS5nLiBgZXhhbXBsZS5jb21gKS4gSWYgdGhpc1xuICAgKiBpcyB1bmRlZmluZWQsIG5vIGFkZGl0aW9uYWwgbWFwcGluZ3Mgd2lsbCBiZSBhbGxvd2VkIG9uIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBiYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG11dHVhbCBUTFMgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBjdXN0b20gZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbVRMUyBpcyBub3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG10bHM/OiBNVExTQ29uZmlnO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGhvbGRpbmcgZG9tYWluIG5hbWUgaW5mb3JtYXRpb24gYW5kXG4gKiBkb2luZyB1c2VmdWwgdGhpbmdzIHdpdGggaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb21haW5OYW1lIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSB6b25lOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBob3N0ZWRab25lPzogSUhvc3RlZFpvbmU7XG4gIHByb3RlY3RlZCByZWFkb25seSBwcml2YXRlWm9uZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERvbWFpbk5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyBvZiB0aGUgZG9tYWluIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBEb21haW5OYW1lUHJvcHMpIHtcbiAgICB0aGlzLnByZWZpeCA9IHByb3BzLnByZWZpeDtcbiAgICBpZiAodHlwZW9mIHByb3BzLnpvbmUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuem9uZSA9IHByb3BzLnpvbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IHByb3BzLnpvbmU7XG4gICAgICB0aGlzLnpvbmUgPSB0aGlzLmhvc3RlZFpvbmUuem9uZU5hbWU7XG4gICAgfVxuICAgIHRoaXMucHJpdmF0ZVpvbmUgPSBwcm9wcy5wcml2YXRlWm9uZSA/PyBmYWxzZTtcbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjSWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJlZml4IGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKi9cbiAgZ2V0UHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJlZml4O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgem9uZSBpcyBwcml2YXRlLiBGYWxzZSBpZiBvdGhlcndpc2UuXG4gICAqL1xuICBpblByaXZhdGVab25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByaXZhdGVab25lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZwYyBJRCBmb3IgdGhpcyB6b25lIG9yIHVuZGVmaW5lZCBpZiBvbmUgZG9lcyBub3QgZXhpc3RcbiAgICovXG4gIGdldFZwY0lkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudnBjSWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wcyBtYXRjaCB0aGUgZG9tYWluIG5hbWUuIEZhbHNlIGlmIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIHRoZSBwcm9wcyB0byBjb21wYXJlXG4gICAqL1xuICBwcm9wc01hdGNoKHByb3BzOiBEb21haW5OYW1lUHJvcHMpOiBib29sZWFuIHtcbiAgICBsZXQgcHJvcFpvbmVTdHIgPSB0eXBlb2YgcHJvcHMuem9uZSA9PT0gXCJzdHJpbmdcIiA/IHByb3BzLnpvbmUgOiBwcm9wcy56b25lLnpvbmVOYW1lO1xuICAgIHJldHVybiB0aGlzLnByZWZpeCA9PT0gcHJvcHMucHJlZml4XG4gICAgICAmJiB0aGlzLnpvbmUgPT09IHByb3Bab25lU3RyXG4gICAgICAmJiB0aGlzLnByaXZhdGVab25lID09PSAocHJvcHMucHJpdmF0ZVpvbmUgPz8gZmFsc2UpXG4gICAgICAmJiB0aGlzLnZwY0lkID09PSBwcm9wcy52cGNJZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5wcmVmaXggPT0gXCJcIiA/IFwiXCIgOiB0aGlzLnByZWZpeCArIFwiLlwiKSArIHRoaXMuem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZnJpZW5kbHkgaWRlbnRpZmllciBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICovXG4gIHRvSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCkucmVwbGFjZShcIi5cIiwgXCItXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICBnZXRab25lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3V0ZTUzIGhvc3RlZCB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKiBUaGlzIG1ldGhvZCBpcyBzYWZlIHRvIGNhbGwgcmVwZWF0ZWRseSwgdGhlIGxvb2t1cCB3aWxsIG9ubHkgYmUgZG9uZSBvbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIHVzZSBpZiBhIGxvb2t1cCBpcyByZXF1aXJlZFxuICAgKiBAcGFyYW0gaWQgYW4gb3B0aW9uYWwgSUQgaWYgYSBsb29rdXAgaXMgcmVxdWlyZWQ7IG9uZSBpcyBnZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICBnZXRIb3N0ZWRab25lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkPzogc3RyaW5nKSA6IElIb3N0ZWRab25lIHtcbiAgICBpZiAodGhpcy5ob3N0ZWRab25lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUxvb2t1cChzY29wZSwgaWQgPz8gYCR7dGhpcy50b0lkZW50aWZpZXIoKX0tem9uZWAsIHtcbiAgICAgICAgZG9tYWluTmFtZTogdGhpcy56b25lLFxuICAgICAgICBwcml2YXRlWm9uZTogdGhpcy5wcml2YXRlWm9uZSxcbiAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ob3N0ZWRab25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBSb3V0ZTUzIEFSZWNvcmQgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gY3JlYXRlIHRoZSByZWNvcmQgaW5cbiAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IG9mIHRoZSByZWNvcmRcbiAgICovXG4gIGNyZWF0ZUFSZWNvcmQoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0OiBSZWNvcmRUYXJnZXQpOiBBUmVjb3JkIHtcbiAgICByZXR1cm4gbmV3IEFSZWNvcmQoc2NvcGUsIGAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFyZWNvcmRgLCB7XG4gICAgICB6b25lOiB0aGlzLmdldEhvc3RlZFpvbmUoc2NvcGUpLFxuICAgICAgcmVjb3JkTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgdGFyZ2V0XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdlaWdodGVkIFJvdXRlNTMgcmVjb3JkIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgcmVjb3JkIGluXG4gICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBvZiB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSB3ZWlnaHQgdGhlIGluaXRpYWwgd2VpZ2h0OyBkZWZhdWx0cyB0byAwXG4gICAqL1xuICBjcmVhdGVXZWlnaHRlZEFSZWNvcmQoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0OiBSZWNvcmRUYXJnZXQsIHdlaWdodD86IG51bWJlcik6IFdlaWdodGVkQVJlY29yZCB7XG4gICAgcmV0dXJuIG5ldyBXZWlnaHRlZEFSZWNvcmQoc2NvcGUsIGAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFyZWNvcmRgLCB7XG4gICAgICB6b25lOiB0aGlzLmdldEhvc3RlZFpvbmUoc2NvcGUpLFxuICAgICAgcmVjb3JkTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgdGFyZ2V0LFxuICAgICAgd2VpZ2h0XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGxhdGVuY3kgUm91dGU1MyByZWNvcmQgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gY3JlYXRlIHRoZSByZWNvcmQgaW5cbiAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IG9mIHRoZSByZWNvcmRcbiAgICovXG4gIGNyZWF0ZUxhdGVuY3lBUmVjb3JkKHNjb3BlOiBDb25zdHJ1Y3QsIHRhcmdldDogUmVjb3JkVGFyZ2V0KTogTGF0ZW5jeUFSZWNvcmQge1xuICAgIHJldHVybiBuZXcgTGF0ZW5jeUFSZWNvcmQoc2NvcGUsIGAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFyZWNvcmRgLCB7XG4gICAgICB6b25lOiB0aGlzLmdldEhvc3RlZFpvbmUoc2NvcGUpLFxuICAgICAgcmVjb3JkTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgdGFyZ2V0XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdlaWdodGVkIGxhdGVuY3kgUm91dGU1MyByZWNvcmQgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gY3JlYXRlIHRoZSByZWNvcmQgaW5cbiAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IG9mIHRoZSByZWNvcmRcbiAgICogQHBhcmFtIHdlaWdodCB0aGUgaW5pdGlhbCB3ZWlnaHQ7IGRlZmF1bHRzIHRvIDBcbiAgICovXG4gIGNyZWF0ZVdlaWdodGVkTGF0ZW5jeUFSZWNvcmQoc2NvcGU6IENvbnN0cnVjdCwgdGFyZ2V0OiBSZWNvcmRUYXJnZXQsIHdlaWdodD86IG51bWJlcik6IFdlaWdodGVkTGF0ZW5jeUFSZWNvcmQge1xuICAgIHJldHVybiBuZXcgV2VpZ2h0ZWRMYXRlbmN5QVJlY29yZChzY29wZSwgYCR7dGhpcy50b0lkZW50aWZpZXIoKX0tYXJlY29yZGAsIHtcbiAgICAgIHpvbmU6IHRoaXMuZ2V0SG9zdGVkWm9uZShzY29wZSksXG4gICAgICByZWNvcmROYW1lOiB0aGlzLnRvU3RyaW5nKCksXG4gICAgICB0YXJnZXQsXG4gICAgICB3ZWlnaHRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEFDTSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgcmVjb3JkIGluXG4gICAqIEBwYXJhbSBvcHRzIGFkZGl0aW9uYWwgb3B0aW9uc1xuICAgKi9cbiAgY3JlYXRlQ2VydGlmaWNhdGUoc2NvcGU6IENvbnN0cnVjdCwgb3B0cz86IENlcnRpZmljYXRlT3B0aW9ucyk6IENlcnRpZmljYXRlIHtcbiAgICByZXR1cm4gbmV3IENlcnRpZmljYXRlKHNjb3BlLCBvcHRzPy5pZCA/PyBgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1jZXJ0YCwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5nZXRIb3N0ZWRab25lKHNjb3BlKSksXG4gICAgICBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogb3B0cz8uc3ViamVjdEFsdGVybmF0aXZlTmFtZXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEFQSSBHYXRld2F5IFYyIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHRvIGNyZWF0ZSB0aGUgZG9tYWluIG5hbWUgaW5cbiAgICogQHBhcmFtIGNlcnRpZmljYXRlIHRoZSBjZXJ0aWZpY2F0ZSB0byB1c2Ugb24gdGhlIGRvbWFpbiBuYW1lXG4gICAqIEBwYXJhbSBvcHRzIGFkZGl0aW9uYWwgb3B0aW9uc1xuICAgKi9cbiAgY3JlYXRlQXBpR2F0ZXdheVYyRG9tYWluTmFtZShzY29wZTogQ29uc3RydWN0LCBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGUsIG9wdHM/OiBBcGlHYXRld2F5VjJEb21haW5OYW1lT3B0aW9ucyk6IGFwaWdhdGV3YXl2Mi5Eb21haW5OYW1lIHtcbiAgICByZXR1cm4gbmV3IGFwaWdhdGV3YXl2Mi5Eb21haW5OYW1lKHNjb3BlLCBvcHRzPy5pZCA/PyBgJHt0aGlzLnRvSWRlbnRpZmllcigpfS1hcGlnd3YyYCwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgY2VydGlmaWNhdGUsXG4gICAgICAuLi5vcHRzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBBUEkgR2F0ZXdheSBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0byBjcmVhdGUgdGhlIGRvbWFpbiBuYW1lIGluXG4gICAqIEBwYXJhbSBjZXJ0aWZpY2F0ZSB0aGUgY2VydGlmaWNhdGUgdG8gdXNlIG9uIHRoZSBkb21haW4gbmFtZVxuICAgKiBAcGFyYW0gb3B0cyBhZGRpdGlvbmFsIG9wdGlvbnNcbiAgICovXG4gIGNyZWF0ZUFwaUdhdGV3YXlEb21haW5OYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSwgb3B0cz86IEFwaUdhdGV3YXlEb21haW5OYW1lT3B0aW9ucyk6IGFwaWdhdGV3YXkuRG9tYWluTmFtZSB7XG4gICAgcmV0dXJuIG5ldyBhcGlnYXRld2F5LkRvbWFpbk5hbWUoc2NvcGUsIG9wdHM/LmlkID8/IGAke3RoaXMudG9JZGVudGlmaWVyKCl9LWFwaWd3YCwge1xuICAgICAgZG9tYWluTmFtZTogdGhpcy50b1N0cmluZygpLFxuICAgICAgY2VydGlmaWNhdGUsXG4gICAgICAuLi5vcHRzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgRG9tYWluTmFtZVByb3BzIHRvIERvbWFpbk5hbWUuIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgYXJyYXlcbiAgICogaWYgZG9tYWluTmFtZVByb3BzIGlzIHVuZGVmaW5lZC5cbiAgICpcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVQcm9wcyB0aGUgRG9tYWluTmFtZVByb3BzIG9iamVjdHMgdG8gY29udmVydFxuICAgKi9cbiAgc3RhdGljIGZyb21Qcm9wcyhkb21haW5OYW1lUHJvcHM/OiBEb21haW5OYW1lUHJvcHNbXSkgOiBEb21haW5OYW1lW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lUHJvcHMgPT09IHVuZGVmaW5lZCA/IFtdIDogZG9tYWluTmFtZVByb3BzLm1hcChwID0+IG5ldyBEb21haW5OYW1lKHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBEb21haW5OYW1lIG9iamVjdHMgdG8gYW4gYXJyYXkgb2Ygc3RyaW5ncy4gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhblxuICAgKiBlbXB0eSBhcnJheSBpZiBkb21haW5OYW1lcyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBkb21haW5OYW1lcyB0aGUgRG9tYWluTmFtZSBvYmplY3RzIHRvIGNvbnZlcnRcbiAgICovXG4gIHN0YXRpYyB0b1N0cmluZ3MoZG9tYWluTmFtZXM/OiBEb21haW5OYW1lW10pIDogc3RyaW5nW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lcyA9PT0gdW5kZWZpbmVkID8gW10gOiBkb21haW5OYW1lcy5tYXAoZCA9PiBkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIERvbWFpbk5hbWVQcm9wcyB0byBhbiBhcnJheSBvZiBzdHJpbmdzLiBUaGlzIGZ1bmN0aW9uIHdpbGxcbiAgICogcmV0dXJuIGFuIGVtcHR5IGFycmF5IGlmIGRvbWFpbk5hbWVQcm9wcyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBkb21haW5OYW1lUHJvcHMgdGhlIERvbWFpbk5hbWVQcm9wcyBvYmplY3RzIHRvIGNvbnZlcnRcbiAgICovXG4gIHN0YXRpYyB0b1N0cmluZ3NGcm9tUHJvcHMoZG9tYWluTmFtZVByb3BzPzogRG9tYWluTmFtZVByb3BzW10pIDogc3RyaW5nW10ge1xuICAgIHJldHVybiBkb21haW5OYW1lUHJvcHMgPT09IHVuZGVmaW5lZCA/IFtdIDogRG9tYWluTmFtZS50b1N0cmluZ3MoRG9tYWluTmFtZS5mcm9tUHJvcHMoZG9tYWluTmFtZVByb3BzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgRG9tYWluTmFtZSBvYmplY3RzIHRvIGEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRvbWFpbiBuYW1lIHN0cmluZyBhbmQgdGhlIHZhbHVlXG4gICAqIGlzIGFuIElIb3N0ZWRab25lLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhbiBlbXB0eSBtYXAgaWYgZG9tYWluTmFtZXMgaXMgdW5kZWZpbmVkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIGlzIHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBmdW5jdGlvbnMgbGlrZSBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURuc011bHRpWm9uZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB1c2VkIGlmIGEgem9uZSBsb29rdXAgaXMgcmVxdWlyZWRcbiAgICogQHBhcmFtIGRvbWFpbk5hbWVzIHRoZSBEb21haW5OYW1lIG9iamVjdHMgdG8gY29udmVydFxuICAgKi9cbiAgc3RhdGljIHRvWm9uZU1hcChzY29wZTogQ29uc3RydWN0LCBkb21haW5OYW1lcz86IERvbWFpbk5hbWVbXSkgOiB7IFtkb21haW5OYW1lOiBzdHJpbmddOiBJSG9zdGVkWm9uZSB9IHtcbiAgICBjb25zdCBtYXA6IHtba2V5OiBzdHJpbmddOiBJSG9zdGVkWm9uZX0gPSB7fVxuICAgIGlmIChkb21haW5OYW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb21haW5OYW1lcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgICBtYXBbZC50b1N0cmluZygpXSA9IGQuZ2V0SG9zdGVkWm9uZShzY29wZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIERvbWFpbk5hbWVQcm9wcyBvYmplY3RzIHRvIGEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRvbWFpbiBuYW1lIHN0cmluZyBhbmQgdGhlXG4gICAqIHZhbHVlIGlzIGFuIElIb3N0ZWRab25lLiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhbiBlbXB0eSBtYXAgaWYgZG9tYWluTmFtZVByb3BzIGlzIHVuZGVmaW5lZC4gVGhpc1xuICAgKiBmdW5jdGlvbiBpcyB1c2VmdWwgd2hlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggZnVuY3Rpb25zIGxpa2UgQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnNNdWx0aVpvbmUuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdXNlZCBpZiBhIHpvbmUgbG9va3VwIGlzIHJlcXVpcmVkXG4gICAqIEBwYXJhbSBkb21haW5OYW1lUHJvcHMgdGhlIERvbWFpbk5hbWVQcm9wcyBvYmplY3RzIHRvIGNvbnZlcnRcbiAgICovXG4gIHN0YXRpYyB0b1pvbmVNYXBGcm9tUHJvcHMoc2NvcGU6IENvbnN0cnVjdCwgZG9tYWluTmFtZVByb3BzOiBEb21haW5OYW1lUHJvcHNbXSkgOiB7IFtkb21haW5OYW1lOiBzdHJpbmddOiBJSG9zdGVkWm9uZSB9IHtcbiAgICByZXR1cm4gRG9tYWluTmFtZS50b1pvbmVNYXAoc2NvcGUsIERvbWFpbk5hbWUuZnJvbVByb3BzKGRvbWFpbk5hbWVQcm9wcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBkb21haW4gbmFtZSBtYXRjaGluZyB0aGUgZ2l2ZW4gcHJvcGVydGllcyBpbiBhbiBhcnJheSBvZiBEb21haW5OYW1lIG9iamVjdHMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyB0byBjb21wYXJlXG4gICAqIEBwYXJhbSBkb21haW5OYW1lcyB0aGUgZG9tYWluIG5hbWVzIHRvIHNlYXJjaFxuICAgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBkb21haW4gbmFtZSBvciB1bmRlZmluZWRcbiAgICovXG4gIHN0YXRpYyBmaW5kRG9tYWluTmFtZShwcm9wczogRG9tYWluTmFtZVByb3BzLCBkb21haW5OYW1lcz86IERvbWFpbk5hbWVbXSk6IERvbWFpbk5hbWUgfCB1bmRlZmluZWQge1xuICAgIGZvciAobGV0IGRvbWFpbk5hbWUgb2YgZG9tYWluTmFtZXMgPz8gW10pIHtcbiAgICAgIGlmIChkb21haW5OYW1lLnByb3BzTWF0Y2gocHJvcHMpKSB7XG4gICAgICAgIHJldHVybiBkb21haW5OYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./lib";
|
package/aws-ses/index.js
ADDED
|
@@ -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("./lib"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9saWJcIlxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./receipt-rule-set-activator";
|
|
@@ -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("./receipt-rule-set-activator"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9yZWNlaXB0LXJ1bGUtc2V0LWFjdGl2YXRvclwiXG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AwsCustomResource } from "aws-cdk-lib/custom-resources";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export interface ReceiptRuleSetActivatorProps {
|
|
4
|
+
readonly ruleSetName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class ReceiptRuleSetActivator extends AwsCustomResource {
|
|
7
|
+
constructor(scope: Construct, id: string, props: ReceiptRuleSetActivatorProps);
|
|
8
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReceiptRuleSetActivator = void 0;
|
|
4
|
+
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
5
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
class ReceiptRuleSetActivator extends custom_resources_1.AwsCustomResource {
|
|
7
|
+
constructor(scope, id, props) {
|
|
8
|
+
const call = {
|
|
9
|
+
service: "SES",
|
|
10
|
+
action: "setActiveReceiptRuleSet",
|
|
11
|
+
physicalResourceId: { id: Date.now().toString() },
|
|
12
|
+
parameters: {
|
|
13
|
+
RuleSetName: props.ruleSetName
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
super(scope, id, {
|
|
17
|
+
onUpdate: call,
|
|
18
|
+
policy: {
|
|
19
|
+
statements: [new aws_iam_1.PolicyStatement({
|
|
20
|
+
resources: ["*"],
|
|
21
|
+
actions: ["ses:SetActiveReceiptRuleSet"],
|
|
22
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
23
|
+
})]
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ReceiptRuleSetActivator = ReceiptRuleSetActivator;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWlwdC1ydWxlLXNldC1hY3RpdmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWNlaXB0LXJ1bGUtc2V0LWFjdGl2YXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBMkU7QUFFM0UsaURBQTREO0FBTTVELE1BQWEsdUJBQXdCLFNBQVEsb0NBQWlCO0lBRTVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUM7UUFDM0UsTUFBTSxJQUFJLEdBQWU7WUFDdkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUseUJBQXlCO1lBQ2pDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqRCxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CO1NBQ0YsQ0FBQTtRQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLENBQUMsSUFBSSx5QkFBZSxDQUFDO3dCQUMvQixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7d0JBQ2hCLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO3dCQUN4QyxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO3FCQUNyQixDQUFDLENBQUM7YUFDSjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FFRjtBQXZCRCwwREF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F3c0N1c3RvbVJlc291cmNlLCBBd3NTZGtDYWxsfSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0VmZmVjdCwgUG9saWN5U3RhdGVtZW50fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHRSdWxlU2V0QWN0aXZhdG9yUHJvcHMge1xuICByZWFkb25seSBydWxlU2V0TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmVjZWlwdFJ1bGVTZXRBY3RpdmF0b3IgZXh0ZW5kcyBBd3NDdXN0b21SZXNvdXJjZSB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlY2VpcHRSdWxlU2V0QWN0aXZhdG9yUHJvcHMpIHtcbiAgICBjb25zdCBjYWxsOiBBd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogXCJTRVNcIixcbiAgICAgIGFjdGlvbjogXCJzZXRBY3RpdmVSZWNlaXB0UnVsZVNldFwiLFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiB7IGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCkgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgUnVsZVNldE5hbWU6IHByb3BzLnJ1bGVTZXROYW1lXG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgb25VcGRhdGU6IGNhbGwsXG4gICAgICBwb2xpY3k6IHtcbiAgICAgICAgc3RhdGVtZW50czogW25ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXCJzZXM6U2V0QWN0aXZlUmVjZWlwdFJ1bGVTZXRcIl0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICAgICAgfSldXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIl19
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * as aws_centergauge from "./aws-centergauge";
|
|
1
2
|
export * as aws_cloudwatch from "./aws-cloudwatch";
|
|
2
3
|
export * as aws_codepipeline from "./aws-codepipeline";
|
|
3
4
|
export * as aws_dynamodb from "./aws-dynamodb";
|
|
@@ -5,6 +6,7 @@ export * as aws_lambda from "./aws-lambda";
|
|
|
5
6
|
export * as aws_monitoring from "./aws-monitoring";
|
|
6
7
|
export * as aws_route53 from "./aws-route53";
|
|
7
8
|
export * as aws_s3 from "./aws-s3";
|
|
9
|
+
export * as aws_ses from "./aws-ses";
|
|
8
10
|
export * as aws_sqs from "./aws-sqs";
|
|
9
11
|
export * as aws_ssm from "./aws-ssm";
|
|
10
12
|
export * as aws_website from "./aws-website";
|
package/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aws_centergauge = require("./aws-centergauge");
|
|
3
4
|
exports.aws_cloudwatch = require("./aws-cloudwatch");
|
|
4
5
|
exports.aws_codepipeline = require("./aws-codepipeline");
|
|
5
6
|
exports.aws_dynamodb = require("./aws-dynamodb");
|
|
@@ -7,8 +8,9 @@ exports.aws_lambda = require("./aws-lambda");
|
|
|
7
8
|
exports.aws_monitoring = require("./aws-monitoring");
|
|
8
9
|
exports.aws_route53 = require("./aws-route53");
|
|
9
10
|
exports.aws_s3 = require("./aws-s3");
|
|
11
|
+
exports.aws_ses = require("./aws-ses");
|
|
10
12
|
exports.aws_sqs = require("./aws-sqs");
|
|
11
13
|
exports.aws_ssm = require("./aws-ssm");
|
|
12
14
|
exports.aws_website = require("./aws-website");
|
|
13
15
|
exports.helpers = require("./helpers");
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVEQUFxRDtBQUNyRCxxREFBbUQ7QUFDbkQseURBQXVEO0FBQ3ZELGlEQUErQztBQUMvQyw2Q0FBMkM7QUFDM0MscURBQW1EO0FBQ25ELCtDQUE2QztBQUM3QyxxQ0FBbUM7QUFDbkMsdUNBQXFDO0FBQ3JDLHVDQUFxQztBQUNyQyx1Q0FBcUM7QUFDckMsK0NBQTZDO0FBQzdDLHVDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGF3c19jZW50ZXJnYXVnZSBmcm9tIFwiLi9hd3MtY2VudGVyZ2F1Z2VcIjtcbmV4cG9ydCAqIGFzIGF3c19jbG91ZHdhdGNoIGZyb20gXCIuL2F3cy1jbG91ZHdhdGNoXCI7XG5leHBvcnQgKiBhcyBhd3NfY29kZXBpcGVsaW5lIGZyb20gXCIuL2F3cy1jb2RlcGlwZWxpbmVcIjtcbmV4cG9ydCAqIGFzIGF3c19keW5hbW9kYiBmcm9tIFwiLi9hd3MtZHluYW1vZGJcIjtcbmV4cG9ydCAqIGFzIGF3c19sYW1iZGEgZnJvbSBcIi4vYXdzLWxhbWJkYVwiO1xuZXhwb3J0ICogYXMgYXdzX21vbml0b3JpbmcgZnJvbSBcIi4vYXdzLW1vbml0b3JpbmdcIjtcbmV4cG9ydCAqIGFzIGF3c19yb3V0ZTUzIGZyb20gXCIuL2F3cy1yb3V0ZTUzXCI7XG5leHBvcnQgKiBhcyBhd3NfczMgZnJvbSBcIi4vYXdzLXMzXCI7XG5leHBvcnQgKiBhcyBhd3Nfc2VzIGZyb20gXCIuL2F3cy1zZXNcIjtcbmV4cG9ydCAqIGFzIGF3c19zcXMgZnJvbSBcIi4vYXdzLXNxc1wiO1xuZXhwb3J0ICogYXMgYXdzX3NzbSBmcm9tIFwiLi9hd3Mtc3NtXCI7XG5leHBvcnQgKiBhcyBhd3Nfd2Vic2l0ZSBmcm9tIFwiLi9hd3Mtd2Vic2l0ZVwiO1xuZXhwb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi9oZWxwZXJzXCI7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "truemark-cdk-lib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.38-alpha.2+b8b4d29",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"exports": {
|
|
25
25
|
".": "./index.js",
|
|
26
26
|
"./package.json": "./package.json",
|
|
27
|
+
"./aws-centergauge": "./aws-centergauge.js",
|
|
27
28
|
"./aws-cloudwatch": "./aws-cloudwatch/index.js",
|
|
28
29
|
"./aws-codepipeline": "./aws-codepipeline/index.js",
|
|
29
30
|
"./aws-dynamodb": "./aws-dynamodb/index.js",
|
|
@@ -31,6 +32,7 @@
|
|
|
31
32
|
"./aws-monitoring": "./aws-monitoring/index.js",
|
|
32
33
|
"./aws-route53": "./aws-route53/index.js",
|
|
33
34
|
"./aws-s3": "./aws-s3/index.js",
|
|
35
|
+
"./aws-ses": "./aws-ses/index.js",
|
|
34
36
|
"./aws-sqs": "./aws-sqs/index.js",
|
|
35
37
|
"./aws-ssm": "./aws-ssm/index.js",
|
|
36
38
|
"./aws-website": "./aws-website/index.js",
|
|
@@ -49,5 +51,5 @@
|
|
|
49
51
|
"@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
|
|
50
52
|
"cdk-monitoring-constructs": "^1.10.0"
|
|
51
53
|
},
|
|
52
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "b8b4d29d6274c5be2b75913c2070829f9f5a2df6"
|
|
53
55
|
}
|