@liflig/cdk 1.51.1 → 1.54.0-alpha.1
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/README.md +5 -7
- package/assets/cloudtrail-slack-integration-lambda/main.py +267 -0
- package/lib/alarms/service-alarms.js +3 -3
- package/lib/cdk-pipelines/liflig-cdk-pipeline.d.ts +1 -1
- package/lib/cdk-pipelines/liflig-cdk-pipeline.js +20 -16
- package/lib/cloudtrail-slack-integration/cloudtrail-slack-integration.d.ts +46 -0
- package/lib/cloudtrail-slack-integration/cloudtrail-slack-integration.js +210 -0
- package/lib/cloudtrail-slack-integration/index.d.ts +1 -0
- package/lib/cloudtrail-slack-integration/index.js +6 -0
- package/lib/ecs/fargate-service.js +2 -2
- package/lib/ecs/listener-rule.d.ts +7 -0
- package/lib/ecs/listener-rule.js +3 -3
- package/lib/index.d.ts +2 -1
- package/lib/index.js +4 -2
- package/lib/kinesis/kinesis-to-datadog-stream.d.ts +2 -1
- package/lib/kinesis/kinesis-to-datadog-stream.js +2 -1
- package/package.json +39 -37
package/README.md
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
# Liflig CDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is a collection of reusable constructs and patterns for
|
|
4
|
+
CDK setups, for use within Liflig.
|
|
4
5
|
|
|
5
6
|
## State of repository and package
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
and as such will not be following semantic versioning strictly. There will be
|
|
10
|
-
breaking changes across both minor and patch releases, as we will be
|
|
11
|
-
coordinating changes internally.
|
|
8
|
+
We do not expect others to depend on this, and as such will not be following semantic versioning strictly.
|
|
9
|
+
There will be breaking changes across both minor and patch releases, as we will be coordinating changes internally.
|
|
12
10
|
|
|
13
11
|
CDK has some major issues for 3rd party library authors which
|
|
14
12
|
are not yet resolved. Some relevant information:
|
|
@@ -30,7 +28,7 @@ are not yet resolved. Some relevant information:
|
|
|
30
28
|
npm run test -- -u
|
|
31
29
|
```
|
|
32
30
|
|
|
33
|
-
Investigate any changes before
|
|
31
|
+
Investigate any changes before committing.
|
|
34
32
|
|
|
35
33
|
## Testing library changes before releasing
|
|
36
34
|
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Transform CloudTrail events to payloads formatted for Slack's API, and send them
|
|
5
|
+
directly to Slack or through an SQS FIFO queue for deduplication.
|
|
6
|
+
|
|
7
|
+
The code below contains entrypoints for two Lambda functions (prefixed with `handler_`).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import logging
|
|
12
|
+
import json
|
|
13
|
+
import urllib.request
|
|
14
|
+
import re
|
|
15
|
+
import boto3
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger()
|
|
18
|
+
logger.setLevel(logging.INFO)
|
|
19
|
+
|
|
20
|
+
def augment_strings_with_friendly_names(strings, friendly_names):
|
|
21
|
+
"""A helper method for augmenting various values (e.g., AWS account ID) in
|
|
22
|
+
a list of strings with a more friendly name"""
|
|
23
|
+
# We avoid replacing values that are directly prefixed and/or suffixed with ':'
|
|
24
|
+
# as it is most likely an ARN or similiar. We don't want to replace account IDs
|
|
25
|
+
# inside ARNs as this would look messy.This is a quite basic heuristic, but it should allow
|
|
26
|
+
# us to easily replace most relevant values (e.g., principal ID, account ID, etc.) with
|
|
27
|
+
# friendly names without a complicated regex.
|
|
28
|
+
pattern = re.compile("|".join([f"(?<!:)({re.escape(key)})(?!:)" for key in friendly_names]))
|
|
29
|
+
return [pattern.sub(lambda m: m[0] + f" ({friendly_names[m.string[m.start():m.end()]]})", s) for s in strings]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_slack_payload_for_assume_role_event(event, friendly_names):
|
|
33
|
+
"""Parse a CloudTrail event related to the API call sts:AssumeRole,
|
|
34
|
+
and return a Slack-formatted attachment"""
|
|
35
|
+
event_detail = event["detail"]
|
|
36
|
+
recipient_account_id = event_detail["recipientAccountId"]
|
|
37
|
+
request_parameters = event_detail.get("requestParameters", {}) or {}
|
|
38
|
+
|
|
39
|
+
timestamp = event_detail["eventTime"]
|
|
40
|
+
user_identity = event_detail["userIdentity"]
|
|
41
|
+
principal_id = user_identity["principalId"]
|
|
42
|
+
principal_account_id = user_identity["accountId"]
|
|
43
|
+
source_identity = request_parameters.get("sourceIdentity", "")
|
|
44
|
+
source_ip = event_detail.get("sourceIPAddress", "")
|
|
45
|
+
role_arn = request_parameters.get("roleArn", "")
|
|
46
|
+
|
|
47
|
+
fallback = f"Sensitive role accessed in '{recipient_account_id}'"
|
|
48
|
+
pretext_messages = [f":warning: Sensitive role in `{recipient_account_id}` assumed by"]
|
|
49
|
+
if principal_id.startswith("AIDA"):
|
|
50
|
+
pretext_messages.append("IAM user")
|
|
51
|
+
elif principal_id.startswith("AROA"):
|
|
52
|
+
# The other part of the principal ID for a role is the name of the session
|
|
53
|
+
principal_id = principal_id.split(":")[0]
|
|
54
|
+
pretext_messages.append(f"IAM role")
|
|
55
|
+
else:
|
|
56
|
+
pretext_messages.append("principal")
|
|
57
|
+
pretext_messages.append(f"in `{principal_account_id}`")
|
|
58
|
+
pretext = " ".join(pretext_messages)
|
|
59
|
+
|
|
60
|
+
text = [
|
|
61
|
+
f"*Role ARN:* `{role_arn}`",
|
|
62
|
+
f"*Principal Account ID:* `{principal_account_id}`",
|
|
63
|
+
f"*Principal ID:* `{principal_id}`",
|
|
64
|
+
f"*Source IP:* `{source_ip}`",
|
|
65
|
+
f"*Source Identity:* `{source_identity}`" if source_identity else "",
|
|
66
|
+
f"*Timestamp:* `{timestamp}`",
|
|
67
|
+
]
|
|
68
|
+
text = "\n".join(line for line in text if line)
|
|
69
|
+
|
|
70
|
+
try:
|
|
71
|
+
pretext, fallback, text = augment_strings_with_friendly_names([pretext, fallback, text], friendly_names)
|
|
72
|
+
except:
|
|
73
|
+
logger.exception("Failed to augment strings with friendly names")
|
|
74
|
+
return {
|
|
75
|
+
"attachments": [
|
|
76
|
+
{
|
|
77
|
+
"pretext": pretext,
|
|
78
|
+
"color": "warning",
|
|
79
|
+
"text": text,
|
|
80
|
+
"fallback": fallback,
|
|
81
|
+
"mrkdwn_in": ["pretext", "text"],
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def get_fallback_slack_payload_for_event(
|
|
88
|
+
event, friendly_names, fallback_parse_behavior=""
|
|
89
|
+
):
|
|
90
|
+
"""Parse a generic CloudTrail event related to an API call
|
|
91
|
+
and return a Slack-formatted attachment"""
|
|
92
|
+
event_detail = event["detail"]
|
|
93
|
+
event_name = event_detail["eventName"]
|
|
94
|
+
event_type = event_detail["eventType"]
|
|
95
|
+
event_time = event_detail["eventTime"]
|
|
96
|
+
recipient_account_id = event_detail["recipientAccountId"]
|
|
97
|
+
pretext = f":warning: CloudTrail event in account `{recipient_account_id}`"
|
|
98
|
+
fallback = f"CloudTrail event in account '{recipient_account_id}'"
|
|
99
|
+
if fallback_parse_behavior == "DUMP_EVENT":
|
|
100
|
+
text = "\n".join(
|
|
101
|
+
["*Event:*", "```", json.dumps(event, sort_keys=True, indent=2), "```"]
|
|
102
|
+
)
|
|
103
|
+
else:
|
|
104
|
+
error_message = event_detail.get("errorMessage", "")
|
|
105
|
+
# This may be None, in which case we force it to an empty dict instead
|
|
106
|
+
response_element = (event_detail.get("responseElements", {}) or {}).get(
|
|
107
|
+
event_name, ""
|
|
108
|
+
)
|
|
109
|
+
user_identity = event_detail["userIdentity"]
|
|
110
|
+
principal_id = user_identity.get("principalId", "")
|
|
111
|
+
principal_type = user_identity.get("type", "")
|
|
112
|
+
principal_account_id = user_identity.get("accountId", "")
|
|
113
|
+
principal_arn = user_identity.get("arn", "")
|
|
114
|
+
source_ip = event_detail.get("sourceIPAddress", "")
|
|
115
|
+
resources = event_detail.get("resources", []) or []
|
|
116
|
+
text = [
|
|
117
|
+
f"*Event Type:* `{event_type}`",
|
|
118
|
+
f"*Event Name:* `{event_name}`",
|
|
119
|
+
f"*Event Time:* `{event_time}`",
|
|
120
|
+
f"*Error Message:* `{error_message}`" if error_message else "",
|
|
121
|
+
f"*Response Code:* `{response_element}`" if response_element else "",
|
|
122
|
+
f"*Principal Type:* `{principal_type}`" if principal_type else "",
|
|
123
|
+
f"*Principal Account ID:* `{principal_account_id}`"
|
|
124
|
+
if principal_account_id
|
|
125
|
+
else "",
|
|
126
|
+
f"*Principal ARN:* `{principal_arn}`" if principal_arn else "",
|
|
127
|
+
f"*Principal ID:* `{principal_id}`" if principal_id else "",
|
|
128
|
+
f"*Source IP:* `{source_ip}`" if source_ip else "",
|
|
129
|
+
f"*Resources:*\n```{json.dumps(resources, indent=2, sort_keys=True)}\n```"
|
|
130
|
+
if len(resources)
|
|
131
|
+
else "",
|
|
132
|
+
]
|
|
133
|
+
# Filter out empty strings
|
|
134
|
+
text = "\n".join(line for line in text if line)
|
|
135
|
+
|
|
136
|
+
try:
|
|
137
|
+
pretext, fallback, text = augment_strings_with_friendly_names([pretext, fallback, text], friendly_names)
|
|
138
|
+
except:
|
|
139
|
+
logger.exception("Failed to augment strings with friendly names")
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
"attachments": [
|
|
143
|
+
{
|
|
144
|
+
"pretext": pretext,
|
|
145
|
+
"color": "warning",
|
|
146
|
+
"text": text,
|
|
147
|
+
"fallback": fallback,
|
|
148
|
+
"mrkdwn_in": ["pretext", "text"],
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def get_augmented_friendly_names(event, friendly_names):
|
|
155
|
+
"""Return an augmented dictionary containing the alias of the current
|
|
156
|
+
AWS account as a friendly name for the current account ID if relevant"""
|
|
157
|
+
augmented_friendly_names = {**friendly_names}
|
|
158
|
+
try:
|
|
159
|
+
event_account_id = event["account"]
|
|
160
|
+
event_detail = event["detail"]
|
|
161
|
+
recipient_account_id = event_detail["recipientAccountId"]
|
|
162
|
+
if (
|
|
163
|
+
not friendly_names.get(event_account_id, "")
|
|
164
|
+
and event_account_id == recipient_account_id
|
|
165
|
+
):
|
|
166
|
+
logger.info(
|
|
167
|
+
"No friendly name was supplied for current account '%s', so looking up account alias",
|
|
168
|
+
event_account_id,
|
|
169
|
+
)
|
|
170
|
+
iam = boto3.client("iam")
|
|
171
|
+
aliases = iam.list_account_aliases()["AccountAliases"]
|
|
172
|
+
if len(aliases):
|
|
173
|
+
augmented_friendly_names[event_account_id] = aliases[0]
|
|
174
|
+
except:
|
|
175
|
+
logger.exception("Failed to look up alias of current AWS account")
|
|
176
|
+
|
|
177
|
+
return augmented_friendly_names
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def post_to_slack(slack_payload, slack_webhook_url):
|
|
181
|
+
"""Post a payload to Slack's webhook API"""
|
|
182
|
+
encoded_slack_payload = json.dumps(slack_payload).encode("utf-8")
|
|
183
|
+
try:
|
|
184
|
+
slack_request = urllib.request.Request(
|
|
185
|
+
slack_webhook_url,
|
|
186
|
+
data=encoded_slack_payload,
|
|
187
|
+
headers={"Content-Type": "application/json"},
|
|
188
|
+
)
|
|
189
|
+
urllib.request.urlopen(slack_request)
|
|
190
|
+
except:
|
|
191
|
+
logger.exception("Failed to post to Slack")
|
|
192
|
+
raise
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def handler_event_transformer(event, context):
|
|
196
|
+
"""Lambda handler for the event transformer Lambda"""
|
|
197
|
+
logger.info("Triggered with event: %s", json.dumps(event, indent=2))
|
|
198
|
+
|
|
199
|
+
friendly_names = json.loads(os.environ["FRIENDLY_NAMES"])
|
|
200
|
+
slack_webhook_url = os.environ["SLACK_WEBHOOK_URL"]
|
|
201
|
+
slack_channel = os.environ["SLACK_CHANNEL"]
|
|
202
|
+
sqs_queue_url = os.environ.get("SQS_QUEUE_URL", "")
|
|
203
|
+
fallback_parse_behavior = os.environ.get("FALLBACK_PARSE_BEHAVIOR", "")
|
|
204
|
+
deduplicate_events = os.environ.get("DEDUPLICATE_EVENTS", "false") == "true"
|
|
205
|
+
|
|
206
|
+
friendly_names = get_augmented_friendly_names(
|
|
207
|
+
event, friendly_names
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
if not event["detail-type"].endswith("via CloudTrail"):
|
|
211
|
+
logger.warn("Invalid event received")
|
|
212
|
+
return
|
|
213
|
+
|
|
214
|
+
slack_payload = {}
|
|
215
|
+
try:
|
|
216
|
+
if event["detail"]["eventName"] == "AssumeRole":
|
|
217
|
+
slack_payload = get_slack_payload_for_assume_role_event(
|
|
218
|
+
event, friendly_names
|
|
219
|
+
)
|
|
220
|
+
except:
|
|
221
|
+
logger.exception("Failed to parse event using predefined schema")
|
|
222
|
+
if not slack_payload:
|
|
223
|
+
logger.warn("Using a fallback schema to parse event")
|
|
224
|
+
slack_payload = get_fallback_slack_payload_for_event(
|
|
225
|
+
event,
|
|
226
|
+
friendly_names,
|
|
227
|
+
fallback_parse_behavior=fallback_parse_behavior,
|
|
228
|
+
)
|
|
229
|
+
slack_payload = {**slack_payload, "channel": slack_channel}
|
|
230
|
+
|
|
231
|
+
if deduplicate_events and sqs_queue_url:
|
|
232
|
+
logger.info("Sending message to SQS for deduplication")
|
|
233
|
+
deduplication_id = (
|
|
234
|
+
event["detail"].get("requestID", "")
|
|
235
|
+
or event["detail"].get("eventID", "")
|
|
236
|
+
or event["id"]
|
|
237
|
+
)
|
|
238
|
+
body = {
|
|
239
|
+
"slackWebhookUrl": slack_webhook_url,
|
|
240
|
+
"slackPayload": slack_payload,
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
sqs = boto3.client("sqs")
|
|
244
|
+
sqs.send_message(
|
|
245
|
+
QueueUrl=sqs_queue_url,
|
|
246
|
+
MessageBody=json.dumps(body),
|
|
247
|
+
MessageDeduplicationId=deduplication_id,
|
|
248
|
+
MessageGroupId=deduplication_id,
|
|
249
|
+
)
|
|
250
|
+
else:
|
|
251
|
+
logger.info("Sending message directly to Slack")
|
|
252
|
+
post_to_slack(slack_payload, slack_webhook_url)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def handler_slack_forwarder(event, context):
|
|
256
|
+
"""Lambda handler for the Slack forwarder Lambda"""
|
|
257
|
+
logger.info("Triggered with event: %s", json.dumps(event, indent=2))
|
|
258
|
+
records = event["Records"]
|
|
259
|
+
for record in records:
|
|
260
|
+
body = json.loads(record["body"])
|
|
261
|
+
slack_channel = body.get("slackChannel", "")
|
|
262
|
+
slack_webhook_url = body.get("slackWebhookUrl", "")
|
|
263
|
+
slack_payload = {
|
|
264
|
+
**body["slackPayload"],
|
|
265
|
+
**({"channel": slack_channel} if slack_channel else {}),
|
|
266
|
+
}
|
|
267
|
+
post_to_slack(slack_payload, slack_webhook_url)
|
|
@@ -59,7 +59,7 @@ class ServiceAlarms extends cdk.Construct {
|
|
|
59
59
|
namespace: "AWS/ApplicationELB",
|
|
60
60
|
statistic: "Average",
|
|
61
61
|
period: cdk.Duration.seconds(60),
|
|
62
|
-
|
|
62
|
+
dimensionsMap: {
|
|
63
63
|
TargetGroup: props.targetGroupFullName,
|
|
64
64
|
LoadBalancer: props.loadBalancerFullName,
|
|
65
65
|
},
|
|
@@ -77,7 +77,7 @@ class ServiceAlarms extends cdk.Construct {
|
|
|
77
77
|
namespace: "AWS/ApplicationELB",
|
|
78
78
|
statistic: "Sum",
|
|
79
79
|
period: cdk.Duration.seconds(60),
|
|
80
|
-
|
|
80
|
+
dimensionsMap: {
|
|
81
81
|
TargetGroup: props.targetGroupFullName,
|
|
82
82
|
LoadBalancer: props.loadBalancerFullName,
|
|
83
83
|
},
|
|
@@ -93,4 +93,4 @@ class ServiceAlarms extends cdk.Construct {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
exports.ServiceAlarms = ServiceAlarms;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1hbGFybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zL3NlcnZpY2UtYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFxRDtBQUNyRCwwQ0FBeUM7QUFDekMscUNBQW9DO0FBT3BDOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxHQUFHLENBQUMsU0FBUztJQUk5QyxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQTtJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLEtBR2pCOztRQUNDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQ3RELG1CQUFtQixFQUNuQjtZQUNFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUM7WUFDdkQsMkRBQTJEO1lBQzNELGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDNUIsc0JBQXNCO1lBQ3RCLDJCQUEyQixFQUMzQixHQUFHLEVBQ0gsdUJBQXVCLENBQ3hCLENBQ0Y7WUFDRCxVQUFVLEVBQUUsUUFBUTtZQUNwQixlQUFlLEVBQUUsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQ3BELElBQUksQ0FBQyxXQUNQLFNBQVM7U0FDVixDQUNGLENBQUE7UUFFRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUI7YUFDakMsTUFBTSxFQUFFO2FBQ1IsSUFBSSxDQUFDO1lBQ0osU0FBUyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDO2FBQ0QsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDbEMsZ0JBQWdCLEVBQ2QsTUFBQSxLQUFLLENBQUMsZ0JBQWdCLG1DQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsa0JBQWtCO1lBQ2pFLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsU0FBUyxFQUFFLENBQUM7WUFDWixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtTQUM1RCxDQUFDLENBQUE7UUFFSixVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0QyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxLQUduQjtRQUNDLE1BQU0sV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxVQUFVLEVBQUUsa0JBQWtCO1lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsU0FBUyxFQUFFLFNBQVM7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxhQUFhLEVBQUU7Z0JBQ2IsV0FBVyxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7Z0JBQ3RDLFlBQVksRUFBRSxLQUFLLENBQUMsb0JBQW9CO2FBQ3pDO1NBQ0YsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ2xDLGdCQUFnQixFQUNkLHNFQUFzRTtZQUN4RSxrQkFBa0IsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CO1lBQ3JFLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsU0FBUyxFQUFFLENBQUM7WUFDWixnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUztTQUN4RCxDQUFDLENBQUE7UUFFRixXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVwQyxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDNUMsVUFBVSxFQUFFLDRCQUE0QjtZQUN4QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsYUFBYSxFQUFFO2dCQUNiLFdBQVcsRUFBRSxLQUFLLENBQUMsbUJBQW1CO2dCQUN0QyxZQUFZLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjthQUN6QztTQUNGLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGdCQUFnQixFQUFFLDJDQUEyQztZQUM3RCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWE7U0FDNUQsQ0FBQyxDQUFBO1FBRUYsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0MsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztDQUNGO0FBNUdELHNDQTRHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZHdhdGNoXCJcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSBcIkBhd3MtY2RrL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUFsYXJtc1Byb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICBhY3Rpb246IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBWYXJpb3VzIGFsYXJtcyBhbmQgbW9uaXRvcmluZy5cbiAqXG4gKiBCeSBpdHNlbGYgbm8gYWxhcm1zIGlzIGNyZWF0ZWQuIFVzZSB0aGUgbWV0aG9kcyBhdmFpbGFibGVcbiAqIHRvIGFkZCBhbGFybXMuXG4gKlxuICogU2VlIFNsYWNrQWxhcm0gY29uc3RydWN0IGZvciBTTlMgQWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUFsYXJtcyBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbjogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXJ2aWNlQWxhcm1zUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLmFjdGlvbiA9IHByb3BzLmFjdGlvblxuICAgIHRoaXMuc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEZvciBsb2dzIHN0b3JlZCBhcyBKU09OLCBtb25pdG9yIGxvZyBlbnRyaWVzIGxvZ2dlZFxuICAgKiB3aXRoIGxldmVsIEVSUk9SIG9yIGhpZ2hlciwgYXMgd2VsbCBhcyBhbnkgcmVxdWVzdHNcbiAgICogdGhhdCBjYXVzZXMgNTAwIGZvciBsb2dnaW5nIHdpdGggbGlmbGlnLWxvZ2dpbmcuXG4gICAqL1xuICBhZGRKc29uRXJyb3JBbGFybShwcm9wczoge1xuICAgIGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cFxuICAgIGFsYXJtRGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWV0cmljRmlsdGVyID0gcHJvcHMubG9nR3JvdXAuYWRkTWV0cmljRmlsdGVyKFxuICAgICAgXCJFcnJvck1ldHJpY0ZpbHRlclwiLFxuICAgICAge1xuICAgICAgICBmaWx0ZXJQYXR0ZXJuOiBsb2dzLkZpbHRlclBhdHRlcm4uYW55KFxuICAgICAgICAgIGxvZ3MuRmlsdGVyUGF0dGVybi5zdHJpbmdWYWx1ZShcIiQubGV2ZWxcIiwgXCI9XCIsIFwiRVJST1JcIiksXG4gICAgICAgICAgLy8gRkFUQUwgY292ZXJzIHNvbWUgYXBwbGljYXRpb25zIHdlIHJ1biB0aGF0IHVzZXMgbG9nNGogb3JcbiAgICAgICAgICAvLyBvdGhlciBsaWJyYXJpZXMuIEl0IGlzIG5vdCBleGlzdGVudCBpbiBzbGY0ai5cbiAgICAgICAgICBsb2dzLkZpbHRlclBhdHRlcm4uc3RyaW5nVmFsdWUoXCIkLmxldmVsXCIsIFwiPVwiLCBcIkZBVEFMXCIpLFxuICAgICAgICAgIGxvZ3MuRmlsdGVyUGF0dGVybi5zdHJpbmdWYWx1ZShcbiAgICAgICAgICAgIC8vIEZvciBsaWZsaWctbG9nZ2luZy5cbiAgICAgICAgICAgIFwiJC5yZXF1ZXN0SW5mby5zdGF0dXMuY29kZVwiLFxuICAgICAgICAgICAgXCI9XCIsXG4gICAgICAgICAgICBcIklOVEVSTkFMX1NFUlZFUl9FUlJPUlwiLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIG1ldHJpY05hbWU6IFwiRXJyb3JzXCIsXG4gICAgICAgIG1ldHJpY05hbWVzcGFjZTogYHN0YWNrLyR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0vJHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2VOYW1lXG4gICAgICAgIH0vRXJyb3JzYCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgZXJyb3JBbGFybSA9IGVycm9yTWV0cmljRmlsdGVyXG4gICAgICAubWV0cmljKClcbiAgICAgIC53aXRoKHtcbiAgICAgICAgc3RhdGlzdGljOiBcIlN1bVwiLFxuICAgICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0odGhpcywgXCJFcnJvckxvZ0FsYXJtXCIsIHtcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICBwcm9wcy5hbGFybURlc2NyaXB0aW9uID8/IGAke3RoaXMuc2VydmljZU5hbWV9IGxvZ2dlZCBhbiBlcnJvcmAsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSlcblxuICAgIGVycm9yQWxhcm0uYWRkQWxhcm1BY3Rpb24odGhpcy5hY3Rpb24pXG4gICAgZXJyb3JBbGFybS5hZGRPa0FjdGlvbih0aGlzLmFjdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBNb25pdG9yIGhlYWx0aHkgaG9zdCBjb3VudCBhbmQgY29ubmVjdGlvbiBlcnJvcnMgZnJvbSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgYWRkVGFyZ2V0R3JvdXBBbGFybShwcm9wczoge1xuICAgIHRhcmdldEdyb3VwRnVsbE5hbWU6IHN0cmluZ1xuICAgIGxvYWRCYWxhbmNlckZ1bGxOYW1lOiBzdHJpbmdcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGhlYWx0aEFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG1ldHJpY05hbWU6IFwiSGVhbHRoeUhvc3RDb3VudFwiLFxuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9BcHBsaWNhdGlvbkVMQlwiLFxuICAgICAgc3RhdGlzdGljOiBcIkF2ZXJhZ2VcIixcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBUYXJnZXRHcm91cDogcHJvcHMudGFyZ2V0R3JvdXBGdWxsTmFtZSxcbiAgICAgICAgTG9hZEJhbGFuY2VyOiBwcm9wcy5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0odGhpcywgXCJIZWFsdGhBbGFybVwiLCB7XG4gICAgICBhbGFybURlc2NyaXB0aW9uOlxuICAgICAgICBcIlNlcnZpY2UgbWlnaHQgYmUgdW5hdmFpbGFibGUhIEl0IGlzIG5vdCByZXNwb25kaW5nIHRvIGhlYWx0aCBjaGVja3MuXCIsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgfSlcblxuICAgIGhlYWx0aEFsYXJtLmFkZEFsYXJtQWN0aW9uKHRoaXMuYWN0aW9uKVxuICAgIGhlYWx0aEFsYXJtLmFkZE9rQWN0aW9uKHRoaXMuYWN0aW9uKVxuXG4gICAgY29uc3QgY29ubmVjdGlvbkFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG1ldHJpY05hbWU6IFwiVGFyZ2V0Q29ubmVjdGlvbkVycm9yQ291bnRcIixcbiAgICAgIG5hbWVzcGFjZTogXCJBV1MvQXBwbGljYXRpb25FTEJcIixcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBUYXJnZXRHcm91cDogcHJvcHMudGFyZ2V0R3JvdXBGdWxsTmFtZSxcbiAgICAgICAgTG9hZEJhbGFuY2VyOiBwcm9wcy5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0odGhpcywgXCJDb25uZWN0aW9uQWxhcm1cIiwge1xuICAgICAgYWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBcIkxvYWQgYmFsYW5jZXIgY291bGQgbm90IGNvbm5lY3QgdG8gdGFyZ2V0XCIsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pXG5cbiAgICBjb25uZWN0aW9uQWxhcm0uYWRkQWxhcm1BY3Rpb24odGhpcy5hY3Rpb24pXG4gICAgY29ubmVjdGlvbkFsYXJtLmFkZE9rQWN0aW9uKHRoaXMuYWN0aW9uKVxuICB9XG59XG4iXX0=
|
|
@@ -98,7 +98,7 @@ export declare class LifligCdkPipeline extends cdk.Construct {
|
|
|
98
98
|
* This is an empty file within the pipeline path.
|
|
99
99
|
*/
|
|
100
100
|
static pipelineS3TriggerKey(pipelineName: string): string;
|
|
101
|
-
readonly cdkPipeline: pipelines.
|
|
101
|
+
readonly cdkPipeline: pipelines.CodePipeline;
|
|
102
102
|
readonly codePipeline: codepipeline.Pipeline;
|
|
103
103
|
constructor(scope: cdk.Construct, id: string, props: LifligCdkPipelineProps);
|
|
104
104
|
private static getAwsCdkPackageJsonFile;
|
|
@@ -58,13 +58,18 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
58
58
|
super(scope, id);
|
|
59
59
|
const artifactsBucket = (_a = props.artifactsBucket) !== null && _a !== void 0 ? _a : (0, artefact_bucket_1.getGriidArtefactBucket)(this);
|
|
60
60
|
const cloudAssemblyArtifact = new codepipeline.Artifact();
|
|
61
|
+
let synth;
|
|
61
62
|
let stages;
|
|
62
63
|
switch (props.sourceType) {
|
|
63
64
|
case "cloud-assembly":
|
|
64
|
-
|
|
65
|
+
const cloudAssembly = this.cloudAssemblyStage(cloudAssemblyArtifact, artifactsBucket, props.pipelineName);
|
|
66
|
+
synth = cloudAssembly.synth;
|
|
67
|
+
stages = cloudAssembly.stages;
|
|
65
68
|
break;
|
|
66
69
|
case "cdk-source":
|
|
67
|
-
|
|
70
|
+
const cdkSource = this.cdkSourceStage(cloudAssemblyArtifact, artifactsBucket, props.pipelineName, (_b = props.parametersNamespace) !== null && _b !== void 0 ? _b : "default");
|
|
71
|
+
synth = cdkSource.synth;
|
|
72
|
+
stages = cdkSource.stages;
|
|
68
73
|
break;
|
|
69
74
|
}
|
|
70
75
|
const dummyArtifact = new codepipeline.Artifact();
|
|
@@ -86,8 +91,8 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
86
91
|
],
|
|
87
92
|
restartExecutionOnUpdate: true,
|
|
88
93
|
});
|
|
89
|
-
this.cdkPipeline = new pipelines.
|
|
90
|
-
|
|
94
|
+
this.cdkPipeline = new pipelines.CodePipeline(this, "CdkPipeline", {
|
|
95
|
+
synth,
|
|
91
96
|
codePipeline: this.codePipeline,
|
|
92
97
|
});
|
|
93
98
|
}
|
|
@@ -133,7 +138,8 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
133
138
|
bucketName: cdkBucket.bucketName,
|
|
134
139
|
objectKey: `pipelines/${pipelineName}/cloud-assembly.json`,
|
|
135
140
|
};
|
|
136
|
-
|
|
141
|
+
const synth = pipelines.CodePipelineFileSet.fromArtifact(cloudAssemblyArtifact);
|
|
142
|
+
const stages = [
|
|
137
143
|
{
|
|
138
144
|
stageName: "PrepareCloudAssembly",
|
|
139
145
|
actions: [
|
|
@@ -146,6 +152,7 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
146
152
|
],
|
|
147
153
|
},
|
|
148
154
|
];
|
|
155
|
+
return { stages, synth };
|
|
149
156
|
}
|
|
150
157
|
cdkSourceStage(cloudAssemblyArtifact, cdkBucket, pipelineName, parametersNamespace) {
|
|
151
158
|
const prepareCdkSourceFn = new lambda.Function(this, "PrepareCdkSourceFn", {
|
|
@@ -171,7 +178,12 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
171
178
|
prefix: `pipelines/${pipelineName}/`,
|
|
172
179
|
parametersNamespace: parametersNamespace,
|
|
173
180
|
};
|
|
174
|
-
|
|
181
|
+
const synth = new pipelines.ShellStep("GenerateCloudAssembly", {
|
|
182
|
+
input: pipelines.CodePipelineFileSet.fromArtifact(cdkSourceArtifact),
|
|
183
|
+
installCommands: ["npm ci"],
|
|
184
|
+
commands: ["npx cdk synth"],
|
|
185
|
+
});
|
|
186
|
+
const stages = [
|
|
175
187
|
{
|
|
176
188
|
stageName: "PrepareCdkSource",
|
|
177
189
|
actions: [
|
|
@@ -183,16 +195,8 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
183
195
|
}),
|
|
184
196
|
],
|
|
185
197
|
},
|
|
186
|
-
{
|
|
187
|
-
stageName: "GenerateCloudAssembly",
|
|
188
|
-
actions: [
|
|
189
|
-
pipelines.SimpleSynthAction.standardNpmSynth({
|
|
190
|
-
cloudAssemblyArtifact,
|
|
191
|
-
sourceArtifact: cdkSourceArtifact,
|
|
192
|
-
}),
|
|
193
|
-
],
|
|
194
|
-
},
|
|
195
198
|
];
|
|
199
|
+
return { stages, synth };
|
|
196
200
|
}
|
|
197
201
|
addSlackNotification(props) {
|
|
198
202
|
new slack_notification_1.SlackNotification(this, "Slack", {
|
|
@@ -202,4 +206,4 @@ class LifligCdkPipeline extends cdk.Construct {
|
|
|
202
206
|
}
|
|
203
207
|
}
|
|
204
208
|
exports.LifligCdkPipeline = LifligCdkPipeline;
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXlEO0FBQ3pELHlFQUF3RTtBQUN4RSx3Q0FBdUM7QUFDdkMsOENBQTZDO0FBRTdDLHFDQUFvQztBQUNwQyxnREFBK0M7QUFDL0MseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUM1Qiw4REFBaUU7QUFDakUsbUZBR3dDO0FBQ3hDLDZEQUFnRjtBQStDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFvQmxELFlBQVksS0FBb0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7O1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxlQUFlLEdBQ25CLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksSUFBQSx3Q0FBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV2RCxNQUFNLHFCQUFxQixHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXpELElBQUksTUFBaUMsQ0FBQTtRQUVyQyxRQUFRLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDeEIsS0FBSyxnQkFBZ0I7Z0JBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzlCLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsS0FBSyxDQUFDLFlBQVksQ0FDbkIsQ0FBQTtnQkFDRCxNQUFLO1lBQ1AsS0FBSyxZQUFZO2dCQUNmLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUMxQixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLE1BQUEsS0FBSyxDQUFDLG1CQUFtQixtQ0FBSSxTQUFTLENBQ3ZDLENB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Q0FBQTtRQUVELFNBQVMsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUU1QyxNQUFNLGlCQUFpQixHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXJELE1BQU0sY0FBYyxHQUFtQztZQUNyRCxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDaEMsTUFBTSxFQUFFLGFBQWEsWUFBWSxHQUFHO1lBQ3BDLG1CQUFtQixFQUFFLG1CQUFtQjtTQUN6QyxDQUFBO1FBRUQsT0FBTztZQUNMO2dCQUNFLFNBQVMsRUFBRSxrQkFBa0I7Z0JBQzdCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDO3dCQUN6QyxVQUFVLEVBQUUsb0JBQW9CO3dCQUNoQyxNQUFNLEVBQUUsa0JBQWtCO3dCQUMxQixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDNUIsY0FBYztxQkFDZixDQUFDO2lCQUNIO2FBQ0Y7WUFDRDtnQkFDRSxTQUFTLEVBQUUsdUJBQXVCO2dCQUNsQyxPQUFPLEVBQUU7b0JBQ1AsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDO3dCQUMzQyxxQkFBcUI7d0JBQ3JCLGNBQWMsRUFBRSxpQkFBaUI7cUJBQ2xDLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBK0M7UUFDbEUsSUFBSSxzQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMzQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUE3TUQsOENBNk1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lIGZyb20gXCJAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZUFjdGlvbnMgZnJvbSBcIkBhd3MtY2RrL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIkBhd3MtY2RrL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJAYXdzLWNkay9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJAYXdzLWNkay9jb3JlXCJcbmltcG9ydCAqIGFzIHBpcGVsaW5lcyBmcm9tIFwiQGF3cy1jZGsvcGlwZWxpbmVzXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGdldEdyaWlkQXJ0ZWZhY3RCdWNrZXQgfSBmcm9tIFwiLi4vZ3JpaWQvYXJ0ZWZhY3QtYnVja2V0XCJcbmltcG9ydCB7XG4gIGNsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyLFxuICBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMsXG59IGZyb20gXCIuL2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyXCJcbmltcG9ydCB7IFNsYWNrTm90aWZpY2F0aW9uLCBTbGFja05vdGlmaWNhdGlvblByb3BzIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaWZsaWdDZGtQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIEJ1Y2tldCBob2xkaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gYW5kIHRyaWdnZXIgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZXhpc3RpbmcgYnVja2V0IGJhc2VkIG9uIEdyaWlkIGNvbnZlbnRpb25zXG4gICAqL1xuICBhcnRpZmFjdHNCdWNrZXQ/OiBzMy5JQnVja2V0XG4gIC8qKlxuICAgKiBOYW1lIG9mIHBpcGVsaW5lLiBUaGlzIGlzIHVzZWQgZm9yIHRoZSBwYXRoIHdoZXJlIGNvbmZpZ3VyYXRpb25cbiAgICogaXMgc3RvcmVkIGluIFMzLlxuICAgKi9cbiAgcGlwZWxpbmVOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFR5cGUgb2YgdXBsb2FkZWQgYXJ0aWZhY3QuIFRoaXMgY2hhbmdlcyB0aGUgYmVoYXZpb3VyIG9mIHRoZVxuICAgKiBwaXBlbGluZSBhbmQgd2hhdCBraW5kIG9mIHByb2Nlc3MgaXQgcGVyZm9ybXMuXG4gICAqXG4gICAqIFR3byB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgKlxuICAgKiAgIC0gY2RrLXNvdXJjZTogVGhlIHVwbG9hZGVkIGFydGlmYWN0IHJlcHJlc2VudHMgYSBDREsgYXBwbGljYXRpb25cbiAgICogICAgIGFzIHNvdXJjZSBjb2RlLiBBIGJ1aWxkIHN0ZXAgd2lsbCBjb21waWxlIHRoaXMgaW50byBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqICAgICBBcyBwYXJ0IG9mIHN5bnRoZXNpemluZyB0aGlzIGludG8gYSBDREsgQ2xvdWQgQXNzZW1ibHksXG4gICAqICAgICBhIGZpbGUgXCJ2YXJpYWJsZXMuanNvblwiIHdpbGwgYmUgd3JpdHRlbiBmb3IgdGhlXG4gICAqICAgICBDREsgYXBwbGljYXRpb24gdG8gcGFyYW1ldGVyaXplIHRoZSBidWlsZCBpZiBhbnlcbiAgICogICAgIHZhcmlhYmxlcyBhcmUgZm91bmQgaW4gdGhlIHBpcGVsaW5lIHNvdXJjZS5cbiAgICpcbiAgICogICAtIGNsb3VkLWFzc2VtYmx5OiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkgd2hpY2ggaXMgcmVhZHkgZm9yIGRlcGxveW1lbnQuXG4gICAqXG4gICAqICAgICBUaGlzIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyB2YXJpYWJsZXMgYXQgdGhlIGN1cnJlbnQgdGltZVxuICAgKiAgICAgc2luY2UgQ0RLIFBpcGVsaW5lcyBkb24ndCBzdXBwb3J0IHBhcmFtZXRlcml6ZWQgZGVwbG95cy5cbiAgICogICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk1NjBcbiAgICovXG4gIHNvdXJjZVR5cGU6IFwiY2RrLXNvdXJjZVwiIHwgXCJjbG91ZC1hc3NlbWJseVwiXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVzZWQgZm9yIHBhcmFtZXRlcnMgaW4gUGFyYW1ldGVyIFN0b3JlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGZvciBzb3VyY2VUeXBlIG9mIFwiY2RrLXNvcnVjZVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlPzogc3RyaW5nXG59XG5cbi8qKlxuICogQ0RLIFBpcGVsaW5lIGZvciBMaWZsaWcuXG4gKlxuICogQXZvaWQgcHV0dGluZyBtdWx0aXBsZSBwaXBlbGluZXMgaW4gYSBzdGFjaywgc2luY2UgdGhlIHBpcGVsaW5lXG4gKiB3aWxsIGFsc28ga2VlcCB0aGUgaG9zdGluZyBzdGFjayB1cC10by1kYXRlLlxuICpcbiAqIFRoZSBwaXBlbGluZSBpcyBleGVjdXRlZCBieSB3cml0aW5nIGFuIGVtcHR5IGZpbGUgdG9cbiAqIHMzOi8vPGFydGlmYWN0cy1idWNrZXQ+L3BpcGVsaW5lcy88cGlwZWxpbmUtbmFtZT4vdHJpZ2dlclxuICpcbiAqIENvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgZnJvbSBTMyBhdCB0aGUgcGF0aFxuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi9cbiAqXG4gKiBGb3IgdXBsb2FkIHR5cGUgXCJjZGstc291cmNlXCI6XG4gKlxuICogICAtIGNkay1zb3VyY2UuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlIENESyBzb3VyY2VcbiAqICAgICB0aGF0IHNob3VsZCBiZSB1c2VkLiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgYnVja2V0S2V5OiBzdHJpbmdcbiAqICAgICB9XG4gKlxuICogICAtIHZhcmlhYmxlcyouanNvbiB3aGljaCBjYW4gYmUgemVybyBvciBtb3JlIGZpbGVzXG4gKiAgICAgd2l0aCBzdHJpbmctc3RyaW5nIG1hcCBob2xkaW5nIHZhcmlhYmxlcyB0aGF0IHdpbGxcbiAqICAgICBiZSB3cml0dGVuIHRvIHZhcmlhYmxlcy5qc29uIGFuZCBjYW4gYmUgcmVhZCBieSB0aGVcbiAqICAgICB0aGUgQ0RLIGFwcGxpY2F0aW9uIGR1cmluZyBzeW50aGVzaXplLlxuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNsb3VkLWFzc2VtYmx5XCI6XG4gKlxuICogICAtIGNsb3VkLWFzc2VtYmx5Lmpzb24gaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGFjdGl2ZVxuICogICAgIENESyBDbG91ZCBBc3NlbWJseSB0aGF0IHNob3VsZCBiZSB1c2VkOiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXROYW1lOiBzdHJpbmdcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiBWYXJpYWJsZXMgZW5hYmxlcyBzZXBhcmF0aW9uIG9mIElhQyBjb2RlIGFuZCBhcHBsaWNhdGlvbiBjb2RlIGlmXG4gKiB0aGV5IGFyZSBub3QgY29sb2NhdGVkIGluIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaWZsaWdDZGtQaXBlbGluZSBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNka1BpcGVsaW5lXG4gIHB1YmxpYyByZWFkb25seSBjb2RlUGlwZWxpbmU6IGNvZGVwaXBlbGluZS5QaXBlbGluZVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IGFydGlmYWN0c0J1Y2tldCA9XG4gICAgICBwcm9wcy5hcnRpZmFjdHNCdWNrZXQgPz8gZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCh0aGlzKVxuXG4gICAgY29uc3QgY2xvdWRBc3NlbWJseUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBzdGFnZXMgPSB0aGlzLmNsb3VkQXNzZW1ibHlTdGFnZShcbiAgICAgICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgICAgICAgYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImNkay1zb3VyY2VcIjpcbiAgICAgICAgc3RhZ2VzID0gdGhpcy5jZGtTb3VyY2VTdGFnZShcbiAgICAgICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgICAgICAgYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcy5wYXJhbWV0ZXJzTmFtZXNwYWNlID8/IFwiZGVmYXVsdFwiLFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgZHVtbXlBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgdGhpcy5jb2RlUGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsIFwiQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgc3RhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGFnZU5hbWU6IFwiU291cmNlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNTb3VyY2VBY3Rpb24oe1xuICAgICAgICAgICAgICBhY3Rpb25OYW1lOiBcInNvdXJjZVwiLFxuICAgICAgICAgICAgICBidWNrZXQ6IGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICAgICAgYnVja2V0S2V5OiBMaWZsaWdDZGtQaXBlbGluZS5waXBlbGluZVMzVHJpZ2dlcktleShcbiAgICAgICAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIG91dHB1dDogZHVtbXlBcnRpZmFjdCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0YWdlcyxcbiAgICAgIF0sXG4gICAgICByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU6IHRydWUsXG4gICAgfSlcblxuICAgIHRoaXMuY2RrUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNka1BpcGVsaW5lKHRoaXMsIFwiQ2RrUGlwZWxpbmVcIiwge1xuICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRBd3NDZGtQYWNrYWdlSnNvbkZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBbHNvIGxvb2sgdXAgdGhlIHRyZWUgYSBiaXQgdG8gaGFuZGxlIHlhcm4gd29ya3NwYWNlcy5cbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwibm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgIF1cblxuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgY2xvdWRBc3NlbWJseVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgKTogY29kZXBpcGVsaW5lLlN0YWdlUHJvcHNbXSB7XG4gICAgY29uc3QgY2xvdWRBc3NlbWJseUxvb2t1cEZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIkNsb3VkQXNzZW1ibHlMb29rdXBGblwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7Y2xvdWRBc3NlbWJseUxvb2t1cEhhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICAgKSxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjZGtCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoY2xvdWRBc3NlbWJseUxvb2t1cEZuKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgb2JqZWN0S2V5OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9jbG91ZC1hc3NlbWJseS5qc29uYCxcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNsb3VkQXNzZW1ibHlcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLkxhbWJkYUludm9rZUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcImNsb3VkLWFzc2VtYmx5LWxvb2t1cFwiLFxuICAgICAgICAgICAgbGFtYmRhOiBjbG91ZEFzc2VtYmx5TG9va3VwRm4sXG4gICAgICAgICAgICBvdXRwdXRzOiBbY2xvdWRBc3NlbWJseUFydGlmYWN0XSxcbiAgICAgICAgICAgIHVzZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdXG4gIH1cblxuICBwcml2YXRlIGNka1NvdXJjZVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmcsXG4gICk6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW10ge1xuICAgIGNvbnN0IHByZXBhcmVDZGtTb3VyY2VGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJQcmVwYXJlQ2RrU291cmNlRm5cIiwge1xuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2Fzc2V0cy9wcmVwYXJlLWNkay1zb3VyY2UtbGFtYmRhXCIpLFxuICAgICAgKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgLy8gVXNpbmcgcHl0aG9uIGluc3RlYWQgaWYgTm9kZUpTIGR1ZSB0byB6aXAtc3VwcG9ydCBpbiBzdGRsaWIuXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM184LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgfSlcblxuICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudFxuICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb25cblxuICAgIHByZXBhcmVDZGtTb3VyY2VGbi5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlcnNCeVBhdGhcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOnNzbToke3JlZ2lvbn06JHthY2NvdW50fTpwYXJhbWV0ZXIvbGlmbGlnLWNkay8qL3BpcGVsaW5lLXZhcmlhYmxlcy8qYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNka0J1Y2tldC5ncmFudFJlYWRXcml0ZShwcmVwYXJlQ2RrU291cmNlRm4pXG5cbiAgICBjb25zdCBjZGtTb3VyY2VBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9gLFxuICAgICAgcGFyYW1ldGVyc05hbWVzcGFjZTogcGFyYW1ldGVyc05hbWVzcGFjZSxcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0YWdlTmFtZTogXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIHBpcGVsaW5lcy5TaW1wbGVTeW50aEFjdGlvbi5zdGFuZGFyZE5wbVN5bnRoKHtcbiAgICAgICAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICAgICAgICAgIHNvdXJjZUFydGlmYWN0OiBjZGtTb3VyY2VBcnRpZmFjdCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24ocHJvcHM6IE9taXQ8U2xhY2tOb3RpZmljYXRpb25Qcm9wcywgXCJwaXBlbGluZVwiPik6IHZvaWQge1xuICAgIG5ldyBTbGFja05vdGlmaWNhdGlvbih0aGlzLCBcIlNsYWNrXCIsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQXlEO0FBQ3pELHlFQUF3RTtBQUN4RSx3Q0FBdUM7QUFDdkMsOENBQTZDO0FBRTdDLHFDQUFvQztBQUNwQyxnREFBK0M7QUFDL0MseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUM1Qiw4REFBaUU7QUFDakUsbUZBR3dDO0FBQ3hDLDZEQUFnRjtBQStDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFvQmxELFlBQVksS0FBb0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7O1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxlQUFlLEdBQ25CLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksSUFBQSx3Q0FBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV2RCxNQUFNLHFCQUFxQixHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXpELElBQUksS0FBaUMsQ0FBQTtRQUNyQyxJQUFJLE1BQWlDLENBQUE7UUFFckMsUUFBUSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3hCLEtBQUssZ0JBQWdCO2dCQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzNDLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsS0FBSyxDQUFDLFlBQVksQ0FDbkIsQ0FBQTtnQkFDRCxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQTtnQkFDM0IsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUE7Z0JBQzdCLE1BQUs7WUFDUCxLQUFLLFlBQVk7Z0JBQ2YsTUFBTSxTQUFTLEdBQUcs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ZixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFBO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBK0M7UUFDbEUsSUFBSSxzQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMzQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUFwTkQsOENBb05DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lIGZyb20gXCJAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZUFjdGlvbnMgZnJvbSBcIkBhd3MtY2RrL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIkBhd3MtY2RrL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJAYXdzLWNkay9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJAYXdzLWNkay9jb3JlXCJcbmltcG9ydCAqIGFzIHBpcGVsaW5lcyBmcm9tIFwiQGF3cy1jZGsvcGlwZWxpbmVzXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGdldEdyaWlkQXJ0ZWZhY3RCdWNrZXQgfSBmcm9tIFwiLi4vZ3JpaWQvYXJ0ZWZhY3QtYnVja2V0XCJcbmltcG9ydCB7XG4gIGNsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyLFxuICBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMsXG59IGZyb20gXCIuL2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyXCJcbmltcG9ydCB7IFNsYWNrTm90aWZpY2F0aW9uLCBTbGFja05vdGlmaWNhdGlvblByb3BzIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaWZsaWdDZGtQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIEJ1Y2tldCBob2xkaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gYW5kIHRyaWdnZXIgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZXhpc3RpbmcgYnVja2V0IGJhc2VkIG9uIEdyaWlkIGNvbnZlbnRpb25zXG4gICAqL1xuICBhcnRpZmFjdHNCdWNrZXQ/OiBzMy5JQnVja2V0XG4gIC8qKlxuICAgKiBOYW1lIG9mIHBpcGVsaW5lLiBUaGlzIGlzIHVzZWQgZm9yIHRoZSBwYXRoIHdoZXJlIGNvbmZpZ3VyYXRpb25cbiAgICogaXMgc3RvcmVkIGluIFMzLlxuICAgKi9cbiAgcGlwZWxpbmVOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFR5cGUgb2YgdXBsb2FkZWQgYXJ0aWZhY3QuIFRoaXMgY2hhbmdlcyB0aGUgYmVoYXZpb3VyIG9mIHRoZVxuICAgKiBwaXBlbGluZSBhbmQgd2hhdCBraW5kIG9mIHByb2Nlc3MgaXQgcGVyZm9ybXMuXG4gICAqXG4gICAqIFR3byB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgKlxuICAgKiAgIC0gY2RrLXNvdXJjZTogVGhlIHVwbG9hZGVkIGFydGlmYWN0IHJlcHJlc2VudHMgYSBDREsgYXBwbGljYXRpb25cbiAgICogICAgIGFzIHNvdXJjZSBjb2RlLiBBIGJ1aWxkIHN0ZXAgd2lsbCBjb21waWxlIHRoaXMgaW50byBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqICAgICBBcyBwYXJ0IG9mIHN5bnRoZXNpemluZyB0aGlzIGludG8gYSBDREsgQ2xvdWQgQXNzZW1ibHksXG4gICAqICAgICBhIGZpbGUgXCJ2YXJpYWJsZXMuanNvblwiIHdpbGwgYmUgd3JpdHRlbiBmb3IgdGhlXG4gICAqICAgICBDREsgYXBwbGljYXRpb24gdG8gcGFyYW1ldGVyaXplIHRoZSBidWlsZCBpZiBhbnlcbiAgICogICAgIHZhcmlhYmxlcyBhcmUgZm91bmQgaW4gdGhlIHBpcGVsaW5lIHNvdXJjZS5cbiAgICpcbiAgICogICAtIGNsb3VkLWFzc2VtYmx5OiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkgd2hpY2ggaXMgcmVhZHkgZm9yIGRlcGxveW1lbnQuXG4gICAqXG4gICAqICAgICBUaGlzIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyB2YXJpYWJsZXMgYXQgdGhlIGN1cnJlbnQgdGltZVxuICAgKiAgICAgc2luY2UgQ0RLIFBpcGVsaW5lcyBkb24ndCBzdXBwb3J0IHBhcmFtZXRlcml6ZWQgZGVwbG95cy5cbiAgICogICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk1NjBcbiAgICovXG4gIHNvdXJjZVR5cGU6IFwiY2RrLXNvdXJjZVwiIHwgXCJjbG91ZC1hc3NlbWJseVwiXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVzZWQgZm9yIHBhcmFtZXRlcnMgaW4gUGFyYW1ldGVyIFN0b3JlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGZvciBzb3VyY2VUeXBlIG9mIFwiY2RrLXNvcnVjZVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlPzogc3RyaW5nXG59XG5cbi8qKlxuICogQ0RLIFBpcGVsaW5lIGZvciBMaWZsaWcuXG4gKlxuICogQXZvaWQgcHV0dGluZyBtdWx0aXBsZSBwaXBlbGluZXMgaW4gYSBzdGFjaywgc2luY2UgdGhlIHBpcGVsaW5lXG4gKiB3aWxsIGFsc28ga2VlcCB0aGUgaG9zdGluZyBzdGFjayB1cC10by1kYXRlLlxuICpcbiAqIFRoZSBwaXBlbGluZSBpcyBleGVjdXRlZCBieSB3cml0aW5nIGFuIGVtcHR5IGZpbGUgdG9cbiAqIHMzOi8vPGFydGlmYWN0cy1idWNrZXQ+L3BpcGVsaW5lcy88cGlwZWxpbmUtbmFtZT4vdHJpZ2dlclxuICpcbiAqIENvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgZnJvbSBTMyBhdCB0aGUgcGF0aFxuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi9cbiAqXG4gKiBGb3IgdXBsb2FkIHR5cGUgXCJjZGstc291cmNlXCI6XG4gKlxuICogICAtIGNkay1zb3VyY2UuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlIENESyBzb3VyY2VcbiAqICAgICB0aGF0IHNob3VsZCBiZSB1c2VkLiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgYnVja2V0S2V5OiBzdHJpbmdcbiAqICAgICB9XG4gKlxuICogICAtIHZhcmlhYmxlcyouanNvbiB3aGljaCBjYW4gYmUgemVybyBvciBtb3JlIGZpbGVzXG4gKiAgICAgd2l0aCBzdHJpbmctc3RyaW5nIG1hcCBob2xkaW5nIHZhcmlhYmxlcyB0aGF0IHdpbGxcbiAqICAgICBiZSB3cml0dGVuIHRvIHZhcmlhYmxlcy5qc29uIGFuZCBjYW4gYmUgcmVhZCBieSB0aGVcbiAqICAgICB0aGUgQ0RLIGFwcGxpY2F0aW9uIGR1cmluZyBzeW50aGVzaXplLlxuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNsb3VkLWFzc2VtYmx5XCI6XG4gKlxuICogICAtIGNsb3VkLWFzc2VtYmx5Lmpzb24gaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGFjdGl2ZVxuICogICAgIENESyBDbG91ZCBBc3NlbWJseSB0aGF0IHNob3VsZCBiZSB1c2VkOiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXROYW1lOiBzdHJpbmdcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiBWYXJpYWJsZXMgZW5hYmxlcyBzZXBhcmF0aW9uIG9mIElhQyBjb2RlIGFuZCBhcHBsaWNhdGlvbiBjb2RlIGlmXG4gKiB0aGV5IGFyZSBub3QgY29sb2NhdGVkIGluIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaWZsaWdDZGtQaXBlbGluZSBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUGF0aCBvbiBTMyBmb3IgcGlwZWxpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzUHJlZml4KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEtleSBpbiBTMyBidWNrZXQgdXNlZCB0byB0cmlnZ2VyIHBpcGVsaW5lLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGVtcHR5IGZpbGUgd2l0aGluIHRoZSBwaXBlbGluZSBwYXRoLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNUcmlnZ2VyS2V5KHBpcGVsaW5lTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vdHJpZ2dlcmBcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjZGtQaXBlbGluZTogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgY29kZVBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmVcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpZmxpZ0Nka1BpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBhcnRpZmFjdHNCdWNrZXQgPVxuICAgICAgcHJvcHMuYXJ0aWZhY3RzQnVja2V0ID8/IGdldEdyaWlkQXJ0ZWZhY3RCdWNrZXQodGhpcylcblxuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgbGV0IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlclxuICAgIGxldCBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW11cblxuICAgIHN3aXRjaCAocHJvcHMuc291cmNlVHlwZSkge1xuICAgICAgY2FzZSBcImNsb3VkLWFzc2VtYmx5XCI6XG4gICAgICAgIGNvbnN0IGNsb3VkQXNzZW1ibHkgPSB0aGlzLmNsb3VkQXNzZW1ibHlTdGFnZShcbiAgICAgICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgICAgICAgYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNsb3VkQXNzZW1ibHkuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2xvdWRBc3NlbWJseS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJjZGstc291cmNlXCI6XG4gICAgICAgIGNvbnN0IGNka1NvdXJjZSA9IHRoaXMuY2RrU291cmNlU3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgICAgcHJvcHMucGFyYW1ldGVyc05hbWVzcGFjZSA/PyBcImRlZmF1bHRcIixcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNka1NvdXJjZS5zeW50aFxuICAgICAgICBzdGFnZXMgPSBjZGtTb3VyY2Uuc3RhZ2VzXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgZHVtbXlBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgdGhpcy5jb2RlUGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsIFwiQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgc3RhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGFnZU5hbWU6IFwiU291cmNlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNTb3VyY2VBY3Rpb24oe1xuICAgICAgICAgICAgICBhY3Rpb25OYW1lOiBcInNvdXJjZVwiLFxuICAgICAgICAgICAgICBidWNrZXQ6IGFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICAgICAgYnVja2V0S2V5OiBMaWZsaWdDZGtQaXBlbGluZS5waXBlbGluZVMzVHJpZ2dlcktleShcbiAgICAgICAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIG91dHB1dDogZHVtbXlBcnRpZmFjdCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0YWdlcyxcbiAgICAgIF0sXG4gICAgICByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU6IHRydWUsXG4gICAgfSlcblxuICAgIHRoaXMuY2RrUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcIkNka1BpcGVsaW5lXCIsIHtcbiAgICAgIHN5bnRoLFxuICAgICAgY29kZVBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0QXdzQ2RrUGFja2FnZUpzb25GaWxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gQWxzbyBsb29rIHVwIHRoZSB0cmVlIGEgYml0IHRvIGhhbmRsZSB5YXJuIHdvcmtzcGFjZXMuXG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIm5vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uLy4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICBdXG5cbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhjYW5kaWRhdGUpKSB7XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBwcml2YXRlIGNsb3VkQXNzZW1ibHlTdGFnZShcbiAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3Q6IGNvZGVwaXBlbGluZS5BcnRpZmFjdCxcbiAgICBjZGtCdWNrZXQ6IHMzLklCdWNrZXQsXG4gICAgcGlwZWxpbmVOYW1lOiBzdHJpbmcsXG4gICk6IHsgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdOyBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXIgfSB7XG4gICAgY29uc3QgY2xvdWRBc3NlbWJseUxvb2t1cEZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIkNsb3VkQXNzZW1ibHlMb29rdXBGblwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7Y2xvdWRBc3NlbWJseUxvb2t1cEhhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICAgKSxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjZGtCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoY2xvdWRBc3NlbWJseUxvb2t1cEZuKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IENsb3VkQXNzZW1ibHlMb29rdXBVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgb2JqZWN0S2V5OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9jbG91ZC1hc3NlbWJseS5qc29uYCxcbiAgICB9XG5cbiAgICBjb25zdCBzeW50aCA9IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChcbiAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICApXG5cbiAgICBjb25zdCBzdGFnZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHN0YWdlTmFtZTogXCJQcmVwYXJlQ2xvdWRBc3NlbWJseVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwiY2xvdWQtYXNzZW1ibHktbG9va3VwXCIsXG4gICAgICAgICAgICBsYW1iZGE6IGNsb3VkQXNzZW1ibHlMb29rdXBGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjbG91ZEFzc2VtYmx5QXJ0aWZhY3RdLFxuICAgICAgICAgICAgdXNlclBhcmFtZXRlcnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF1cbiAgICByZXR1cm4geyBzdGFnZXMsIHN5bnRoIH1cbiAgfVxuXG4gIHByaXZhdGUgY2RrU291cmNlU3RhZ2UoXG4gICAgY2xvdWRBc3NlbWJseUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QsXG4gICAgY2RrQnVja2V0OiBzMy5JQnVja2V0LFxuICAgIHBpcGVsaW5lTmFtZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnNOYW1lc3BhY2U6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBwcmVwYXJlQ2RrU291cmNlRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiUHJlcGFyZUNka1NvdXJjZUZuXCIsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9hc3NldHMvcHJlcGFyZS1jZGstc291cmNlLWxhbWJkYVwiKSxcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIC8vIFVzaW5nIHB5dGhvbiBpbnN0ZWFkIGlmIE5vZGVKUyBkdWUgdG8gemlwLXN1cHBvcnQgaW4gc3RkbGliLlxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOCxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgIH0pXG5cbiAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uXG5cbiAgICBwcmVwYXJlQ2RrU291cmNlRm4uZ3JhbnRQcmluY2lwYWwuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcInNzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czpzc206JHtyZWdpb259OiR7YWNjb3VudH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvKmAsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjZGtCdWNrZXQuZ3JhbnRSZWFkV3JpdGUocHJlcGFyZUNka1NvdXJjZUZuKVxuXG4gICAgY29uc3QgY2RrU291cmNlQXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzOiBQcmVwYXJlQ2RrU291cmNlVXNlclBhcmFtZXRlcnMgPSB7XG4gICAgICBidWNrZXROYW1lOiBjZGtCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIHByZWZpeDogYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vYCxcbiAgICAgIHBhcmFtZXRlcnNOYW1lc3BhY2U6IHBhcmFtZXRlcnNOYW1lc3BhY2UsXG4gICAgfVxuXG4gICAgY29uc3Qgc3ludGggPSBuZXcgcGlwZWxpbmVzLlNoZWxsU3RlcChcIkdlbmVyYXRlQ2xvdWRBc3NlbWJseVwiLCB7XG4gICAgICBpbnB1dDogcGlwZWxpbmVzLkNvZGVQaXBlbGluZUZpbGVTZXQuZnJvbUFydGlmYWN0KGNka1NvdXJjZUFydGlmYWN0KSxcbiAgICAgIGluc3RhbGxDb21tYW5kczogW1wibnBtIGNpXCJdLFxuICAgICAgY29tbWFuZHM6IFtcIm5weCBjZGsgc3ludGhcIl0sXG4gICAgfSlcbiAgICBjb25zdCBzdGFnZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHN0YWdlTmFtZTogXCJQcmVwYXJlQ2RrU291cmNlXCIsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBuZXcgY29kZXBpcGVsaW5lQWN0aW9ucy5MYW1iZGFJbnZva2VBY3Rpb24oe1xuICAgICAgICAgICAgYWN0aW9uTmFtZTogXCJwcmVwYXJlLWNkay1zb3VyY2VcIixcbiAgICAgICAgICAgIGxhbWJkYTogcHJlcGFyZUNka1NvdXJjZUZuLFxuICAgICAgICAgICAgb3V0cHV0czogW2Nka1NvdXJjZUFydGlmYWN0XSxcbiAgICAgICAgICAgIHVzZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdXG4gICAgcmV0dXJuIHsgc3RhZ2VzLCBzeW50aCB9XG4gIH1cblxuICBhZGRTbGFja05vdGlmaWNhdGlvbihwcm9wczogT21pdDxTbGFja05vdGlmaWNhdGlvblByb3BzLCBcInBpcGVsaW5lXCI+KTogdm9pZCB7XG4gICAgbmV3IFNsYWNrTm90aWZpY2F0aW9uKHRoaXMsIFwiU2xhY2tcIiwge1xuICAgICAgcGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSlcbiAgfVxufVxuXG5pbnRlcmZhY2UgUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzIHtcbiAgYnVja2V0TmFtZTogc3RyaW5nXG4gIHByZWZpeDogc3RyaW5nXG4gIHBhcmFtZXRlcnNOYW1lc3BhY2U6IHN0cmluZ1xufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as cdk from "@aws-cdk/core";
|
|
2
|
+
import * as cloudwatch from "@aws-cdk/aws-cloudwatch";
|
|
3
|
+
export interface CloudTrailSlackIntegrationProps extends cdk.StackProps {
|
|
4
|
+
/**
|
|
5
|
+
* A key-value pair of values to augment (e.g., AWS account IDs, principal IDs) with friendly names
|
|
6
|
+
* to use when sending messages to Slack.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: A simple heuristic is used to avoid replacing values inside of ARNs etc. as this can
|
|
9
|
+
* lead to unpleasant formatting of various fields in the Slack message.
|
|
10
|
+
*/
|
|
11
|
+
friendlyNames?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
slackWebhookUrl: string;
|
|
15
|
+
slackChannel: string;
|
|
16
|
+
/**
|
|
17
|
+
* A list of ARNs of roles in the current account to monitor usage of.
|
|
18
|
+
*/
|
|
19
|
+
rolesToMonitor?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Whether to monitor various IAM API calls associated with the current account's root user (e.g., console login, password reset, etc.)
|
|
22
|
+
*
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
monitorRootUserActions?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether to set up additional AWS infrastructure to deduplicate CloudTrail events in order to avoid duplicate Slack messages. May be used to decrease noise.
|
|
28
|
+
*
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
deduplicateEvents?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* If supplied, CloudWatch alarms will be created for the construct's underlying infrastructure (e.g., Lambda functions) and the action will be used to notify on OK and ALARM actions.
|
|
34
|
+
*/
|
|
35
|
+
infrastructureAlarmAction?: cloudwatch.IAlarmAction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Forward a predefined set of CloudTrail API events to Slack using EventBridge, Lambda
|
|
39
|
+
* and an optional SQS FIFO queue for deduplicating events.
|
|
40
|
+
* The API events are limited to monitoring access to the current account's root user and/or specific IAM roles.
|
|
41
|
+
*
|
|
42
|
+
* NOTE: The construct needs to be provisioned in us-east-1, and requires an existing CloudTrail set up in that region.
|
|
43
|
+
*/
|
|
44
|
+
export declare class CloudTrailSlackIntegration extends cdk.Construct {
|
|
45
|
+
constructor(scope: cdk.Construct, id: string, props: CloudTrailSlackIntegrationProps);
|
|
46
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudTrailSlackIntegration = void 0;
|
|
4
|
+
const cdk = require("@aws-cdk/core");
|
|
5
|
+
const iam = require("@aws-cdk/aws-iam");
|
|
6
|
+
const logs = require("@aws-cdk/aws-logs");
|
|
7
|
+
const cloudwatch = require("@aws-cdk/aws-cloudwatch");
|
|
8
|
+
const lambda = require("@aws-cdk/aws-lambda");
|
|
9
|
+
const events = require("@aws-cdk/aws-events");
|
|
10
|
+
const sources = require("@aws-cdk/aws-lambda-event-sources");
|
|
11
|
+
const sqs = require("@aws-cdk/aws-sqs");
|
|
12
|
+
const targets = require("@aws-cdk/aws-events-targets");
|
|
13
|
+
const path = require("path");
|
|
14
|
+
/**
|
|
15
|
+
* Forward a predefined set of CloudTrail API events to Slack using EventBridge, Lambda
|
|
16
|
+
* and an optional SQS FIFO queue for deduplicating events.
|
|
17
|
+
* The API events are limited to monitoring access to the current account's root user and/or specific IAM roles.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: The construct needs to be provisioned in us-east-1, and requires an existing CloudTrail set up in that region.
|
|
20
|
+
*/
|
|
21
|
+
class CloudTrailSlackIntegration extends cdk.Construct {
|
|
22
|
+
constructor(scope, id, props) {
|
|
23
|
+
super(scope, id);
|
|
24
|
+
const eventTransformer = new lambda.Function(this, "EventTransformerLambda", {
|
|
25
|
+
code: lambda.Code.fromAsset(path.join(__dirname, "../../assets/cloudtrail-slack-integration-lambda")),
|
|
26
|
+
description: "Formats CloudTrail API calls sent through EventBridge, and posts them directly to Slack or first to an SQS FIFO queue for deduplication",
|
|
27
|
+
handler: "main.handler_event_transformer",
|
|
28
|
+
runtime: lambda.Runtime.PYTHON_3_9,
|
|
29
|
+
timeout: cdk.Duration.seconds(15),
|
|
30
|
+
logRetention: logs.RetentionDays.SIX_MONTHS,
|
|
31
|
+
environment: {
|
|
32
|
+
SLACK_CHANNEL: props.slackChannel,
|
|
33
|
+
DEDUPLICATE_EVENTS: JSON.stringify(!!props.deduplicateEvents),
|
|
34
|
+
FRIENDLY_NAMES: JSON.stringify(props.friendlyNames || {}),
|
|
35
|
+
SLACK_WEBHOOK_URL: props.slackWebhookUrl,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
eventTransformer.addToRolePolicy(new iam.PolicyStatement({
|
|
39
|
+
actions: ["iam:ListAccountAliases"],
|
|
40
|
+
resources: ["*"],
|
|
41
|
+
}));
|
|
42
|
+
if (props.infrastructureAlarmAction) {
|
|
43
|
+
const eventTransformerAlarm = eventTransformer
|
|
44
|
+
.metricErrors({
|
|
45
|
+
period: cdk.Duration.minutes(5),
|
|
46
|
+
statistic: cloudwatch.Statistic.SUM,
|
|
47
|
+
})
|
|
48
|
+
.createAlarm(this, "EventTransformerErrorAlarm", {
|
|
49
|
+
threshold: 1,
|
|
50
|
+
evaluationPeriods: 1,
|
|
51
|
+
alarmDescription: "Triggers if the Lambda function that transforms CloudTrail API calls received through EventBridge fails (e.g., it fails to process the event)",
|
|
52
|
+
datapointsToAlarm: 1,
|
|
53
|
+
treatMissingData: cloudwatch.TreatMissingData.IGNORE,
|
|
54
|
+
});
|
|
55
|
+
eventTransformerAlarm.addOkAction(props.infrastructureAlarmAction);
|
|
56
|
+
eventTransformerAlarm.addAlarmAction(props.infrastructureAlarmAction);
|
|
57
|
+
}
|
|
58
|
+
if (props.deduplicateEvents) {
|
|
59
|
+
const deduplicationQueue = new sqs.Queue(this, "Queue", {
|
|
60
|
+
// We explicitly give the queue a name due to bug https://github.com/aws/aws-cdk/issues/5860
|
|
61
|
+
queueName: `${this.node.id.substring(0, 33)}${this.node.addr}`.substring(0, 75) +
|
|
62
|
+
".fifo",
|
|
63
|
+
fifo: true,
|
|
64
|
+
});
|
|
65
|
+
eventTransformer.addEnvironment("SQS_QUEUE_URL", deduplicationQueue.queueUrl);
|
|
66
|
+
deduplicationQueue.grantSendMessages(eventTransformer);
|
|
67
|
+
const slackForwarder = new lambda.Function(this, "SlackForwarderLambda", {
|
|
68
|
+
code: lambda.Code.fromAsset(path.join(__dirname, "../../assets/cloudtrail-slack-integration-lambda")),
|
|
69
|
+
description: "Polls from an SQS FIFO queue containing formatted CloudTrail API calls and sends them to Slack.",
|
|
70
|
+
handler: "main.handler_slack_forwarder",
|
|
71
|
+
runtime: lambda.Runtime.PYTHON_3_9,
|
|
72
|
+
timeout: cdk.Duration.seconds(15),
|
|
73
|
+
logRetention: logs.RetentionDays.TWO_WEEKS,
|
|
74
|
+
});
|
|
75
|
+
if (props.infrastructureAlarmAction) {
|
|
76
|
+
const slackForwarderAlarm = slackForwarder
|
|
77
|
+
.metricErrors({
|
|
78
|
+
period: cdk.Duration.minutes(5),
|
|
79
|
+
statistic: cloudwatch.Statistic.SUM,
|
|
80
|
+
})
|
|
81
|
+
.createAlarm(this, "SlackForwarderErrorAlarm", {
|
|
82
|
+
threshold: 1,
|
|
83
|
+
alarmDescription: "Triggers if the Lambda function that polls from SQS and posts deduplicated CloudTrail API calls received through EventBridge to Slack fails (e.g., invalid Slack webhook URL)",
|
|
84
|
+
evaluationPeriods: 1,
|
|
85
|
+
datapointsToAlarm: 1,
|
|
86
|
+
treatMissingData: cloudwatch.TreatMissingData.IGNORE,
|
|
87
|
+
});
|
|
88
|
+
slackForwarderAlarm.addOkAction(props.infrastructureAlarmAction);
|
|
89
|
+
slackForwarderAlarm.addAlarmAction(props.infrastructureAlarmAction);
|
|
90
|
+
}
|
|
91
|
+
slackForwarder.addEventSource(new sources.SqsEventSource(deduplicationQueue));
|
|
92
|
+
}
|
|
93
|
+
if (props.rolesToMonitor && props.rolesToMonitor.length > 0) {
|
|
94
|
+
new events.Rule(this, "RuleForAssumeRole", {
|
|
95
|
+
enabled: true,
|
|
96
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
97
|
+
eventPattern: {
|
|
98
|
+
detail: {
|
|
99
|
+
eventName: ["AssumeRole"],
|
|
100
|
+
requestParameters: {
|
|
101
|
+
roleArn: props.rolesToMonitor,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (props.monitorRootUserActions !== false) {
|
|
108
|
+
// Triggers when the root password has been changed
|
|
109
|
+
new events.Rule(this, "RuleForRootUserPasswordChange", {
|
|
110
|
+
enabled: true,
|
|
111
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
112
|
+
eventPattern: {
|
|
113
|
+
detail: {
|
|
114
|
+
userIdentity: {
|
|
115
|
+
type: ["Root"],
|
|
116
|
+
},
|
|
117
|
+
eventName: ["PasswordUpdated"],
|
|
118
|
+
eventType: ["AwsConsoleSignIn"],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
// Triggers when MFA for the root user has been set up
|
|
123
|
+
new events.Rule(this, "RuleForRootUserMfaChange", {
|
|
124
|
+
enabled: true,
|
|
125
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
126
|
+
eventPattern: {
|
|
127
|
+
detail: {
|
|
128
|
+
userIdentity: {
|
|
129
|
+
type: ["Root"],
|
|
130
|
+
},
|
|
131
|
+
eventName: ["EnableMFADevice"],
|
|
132
|
+
requestParameters: {
|
|
133
|
+
userName: ["AWS ROOT USER"],
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
// Triggers when a root user succesfully logs in to the console
|
|
139
|
+
new events.Rule(this, "RuleForRootUserSuccessfulLogin", {
|
|
140
|
+
enabled: true,
|
|
141
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
142
|
+
eventPattern: {
|
|
143
|
+
detail: {
|
|
144
|
+
userIdentity: {
|
|
145
|
+
type: ["Root"],
|
|
146
|
+
},
|
|
147
|
+
eventName: ["ConsoleLogin"],
|
|
148
|
+
eventType: ["AwsConsoleSignIn"],
|
|
149
|
+
responseElements: {
|
|
150
|
+
ConsoleLogin: ["Success"],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
// Triggers for bad login attemps for root user (e.g., wrong password)
|
|
156
|
+
new events.Rule(this, "RuleForRootUserUnsuccessfulLogin", {
|
|
157
|
+
enabled: true,
|
|
158
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
159
|
+
eventPattern: {
|
|
160
|
+
detail: {
|
|
161
|
+
userIdentity: {
|
|
162
|
+
type: ["Root"],
|
|
163
|
+
},
|
|
164
|
+
eventName: ["ConsoleLogin"],
|
|
165
|
+
eventType: ["AwsConsoleSignIn"],
|
|
166
|
+
responseElements: {
|
|
167
|
+
ConsoleLogin: ["Failure"],
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
// Triggered when password reset has been requested
|
|
173
|
+
new events.Rule(this, "RuleForRootUserPasswordRecoveryRequest", {
|
|
174
|
+
enabled: true,
|
|
175
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
176
|
+
eventPattern: {
|
|
177
|
+
detail: {
|
|
178
|
+
userIdentity: {
|
|
179
|
+
type: ["Root"],
|
|
180
|
+
},
|
|
181
|
+
eventName: ["PasswordRecoveryRequested"],
|
|
182
|
+
eventType: ["AwsConsoleSignIn"],
|
|
183
|
+
responseElements: {
|
|
184
|
+
PasswordRecoveryRequested: ["Success"],
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
// Triggered when password has been successfully reset
|
|
190
|
+
new events.Rule(this, "RuleForRootUserPasswordRecoveryComplete", {
|
|
191
|
+
enabled: true,
|
|
192
|
+
targets: [new targets.LambdaFunction(eventTransformer)],
|
|
193
|
+
eventPattern: {
|
|
194
|
+
detail: {
|
|
195
|
+
userIdentity: {
|
|
196
|
+
type: ["Root"],
|
|
197
|
+
},
|
|
198
|
+
eventName: ["PasswordRecoveryCompleted"],
|
|
199
|
+
eventType: ["AwsConsoleSignIn"],
|
|
200
|
+
responseElements: {
|
|
201
|
+
PasswordRecoveryCompleted: ["Success"],
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.CloudTrailSlackIntegration = CloudTrailSlackIntegration;
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWR0cmFpbC1zbGFjay1pbnRlZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbG91ZHRyYWlsLXNsYWNrLWludGVncmF0aW9uL2Nsb3VkdHJhaWwtc2xhY2staW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQW9DO0FBQ3BDLHdDQUF1QztBQUN2QywwQ0FBeUM7QUFDekMsc0RBQXFEO0FBQ3JELDhDQUE2QztBQUM3Qyw4Q0FBNkM7QUFDN0MsNkRBQTREO0FBQzVELHdDQUF1QztBQUN2Qyx1REFBc0Q7QUFDdEQsNkJBQTRCO0FBcUM1Qjs7Ozs7O0dBTUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBQzNELFlBQ0UsS0FBb0IsRUFDcEIsRUFBVSxFQUNWLEtBQXNDO1FBRXRDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQzFDLElBQUksRUFDSix3QkFBd0IsRUFDeEI7WUFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQ1AsU0FBUyxFQUNULGtEQUFrRCxDQUNuRCxDQUNGO1lBQ0QsV0FBVyxFQUNULHlJQUF5STtZQUMzSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVO1lBQzNDLFdBQVcsRUFBRTtnQkFDWCxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2pDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxp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QUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZELFlBQVksRUFBRTtvQkFDWixNQUFNLEVBQUU7d0JBQ04sWUFBWSxFQUFFOzRCQUNaLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQzt5QkFDZjt3QkFDRCxTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzt3QkFDeEMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7d0JBQy9CLGdCQUFnQixFQUFFOzRCQUNoQix5QkFBeUIsRUFBRSxDQUFDLFNBQVMsQ0FBQzt5QkFDdkM7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDLENBQUE7U0FDSDtJQUNILENBQUM7Q0FDRjtBQWxPRCxnRUFrT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcIkBhd3MtY2RrL2NvcmVcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJAYXdzLWNkay9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSBcIkBhd3MtY2RrL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZHdhdGNoXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcIkBhd3MtY2RrL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgc291cmNlcyBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzXCJcbmltcG9ydCAqIGFzIHNxcyBmcm9tIFwiQGF3cy1jZGsvYXdzLXNxc1wiXG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gXCJAYXdzLWNkay9hd3MtZXZlbnRzLXRhcmdldHNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRUcmFpbFNsYWNrSW50ZWdyYXRpb25Qcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIEEga2V5LXZhbHVlIHBhaXIgb2YgdmFsdWVzIHRvIGF1Z21lbnQgKGUuZy4sIEFXUyBhY2NvdW50IElEcywgcHJpbmNpcGFsIElEcykgd2l0aCBmcmllbmRseSBuYW1lc1xuICAgKiB0byB1c2Ugd2hlbiBzZW5kaW5nIG1lc3NhZ2VzIHRvIFNsYWNrLlxuICAgKlxuICAgKiBOT1RFOiBBIHNpbXBsZSBoZXVyaXN0aWMgaXMgdXNlZCB0byBhdm9pZCByZXBsYWNpbmcgdmFsdWVzIGluc2lkZSBvZiBBUk5zIGV0Yy4gYXMgdGhpcyBjYW5cbiAgICogbGVhZCB0byB1bnBsZWFzYW50IGZvcm1hdHRpbmcgb2YgdmFyaW91cyBmaWVsZHMgaW4gdGhlIFNsYWNrIG1lc3NhZ2UuXG4gICAqL1xuICBmcmllbmRseU5hbWVzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICB9XG4gIHNsYWNrV2ViaG9va1VybDogc3RyaW5nXG4gIHNsYWNrQ2hhbm5lbDogc3RyaW5nXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQVJOcyBvZiByb2xlcyBpbiB0aGUgY3VycmVudCBhY2NvdW50IHRvIG1vbml0b3IgdXNhZ2Ugb2YuXG4gICAqL1xuICByb2xlc1RvTW9uaXRvcj86IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG1vbml0b3IgdmFyaW91cyBJQU0gQVBJIGNhbGxzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBhY2NvdW50J3Mgcm9vdCB1c2VyIChlLmcuLCBjb25zb2xlIGxvZ2luLCBwYXNzd29yZCByZXNldCwgZXRjLilcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgbW9uaXRvclJvb3RVc2VyQWN0aW9ucz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2V0IHVwIGFkZGl0aW9uYWwgQVdTIGluZnJhc3RydWN0dXJlIHRvIGRlZHVwbGljYXRlIENsb3VkVHJhaWwgZXZlbnRzIGluIG9yZGVyIHRvIGF2b2lkIGR1cGxpY2F0ZSBTbGFjayBtZXNzYWdlcy4gTWF5IGJlIHVzZWQgdG8gZGVjcmVhc2Ugbm9pc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWR1cGxpY2F0ZUV2ZW50cz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIElmIHN1cHBsaWVkLCBDbG91ZFdhdGNoIGFsYXJtcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoZSBjb25zdHJ1Y3QncyB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlIChlLmcuLCBMYW1iZGEgZnVuY3Rpb25zKSBhbmQgdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQgdG8gbm90aWZ5IG9uIE9LIGFuZCBBTEFSTSBhY3Rpb25zLlxuICAgKi9cbiAgaW5mcmFzdHJ1Y3R1cmVBbGFybUFjdGlvbj86IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG59XG5cbi8qKlxuICogRm9yd2FyZCBhIHByZWRlZmluZWQgc2V0IG9mIENsb3VkVHJhaWwgQVBJIGV2ZW50cyB0byBTbGFjayB1c2luZyBFdmVudEJyaWRnZSwgTGFtYmRhXG4gKiBhbmQgYW4gb3B0aW9uYWwgU1FTIEZJRk8gcXVldWUgZm9yIGRlZHVwbGljYXRpbmcgZXZlbnRzLlxuICogVGhlIEFQSSBldmVudHMgYXJlIGxpbWl0ZWQgdG8gbW9uaXRvcmluZyBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgYWNjb3VudCdzIHJvb3QgdXNlciBhbmQvb3Igc3BlY2lmaWMgSUFNIHJvbGVzLlxuICpcbiAqIE5PVEU6IFRoZSBjb25zdHJ1Y3QgbmVlZHMgdG8gYmUgcHJvdmlzaW9uZWQgaW4gdXMtZWFzdC0xLCBhbmQgcmVxdWlyZXMgYW4gZXhpc3RpbmcgQ2xvdWRUcmFpbCBzZXQgdXAgaW4gdGhhdCByZWdpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZFRyYWlsU2xhY2tJbnRlZ3JhdGlvbiBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY2RrLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDbG91ZFRyYWlsU2xhY2tJbnRlZ3JhdGlvblByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBldmVudFRyYW5zZm9ybWVyID0gbmV3IGxhbWJkYS5GdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIkV2ZW50VHJhbnNmb3JtZXJMYW1iZGFcIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgICAgIFwiLi4vLi4vYXNzZXRzL2Nsb3VkdHJhaWwtc2xhY2staW50ZWdyYXRpb24tbGFtYmRhXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgXCJGb3JtYXRzIENsb3VkVHJhaWwgQVBJIGNhbGxzIHNlbnQgdGhyb3VnaCBFdmVudEJyaWRnZSwgYW5kIHBvc3RzIHRoZW0gZGlyZWN0bHkgdG8gU2xhY2sgb3IgZmlyc3QgdG8gYW4gU1FTIEZJRk8gcXVldWUgZm9yIGRlZHVwbGljYXRpb25cIixcbiAgICAgICAgaGFuZGxlcjogXCJtYWluLmhhbmRsZXJfZXZlbnRfdHJhbnNmb3JtZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5TSVhfTU9OVEhTLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFNMQUNLX0NIQU5ORUw6IHByb3BzLnNsYWNrQ2hhbm5lbCxcbiAgICAgICAgICBERURVUExJQ0FURV9FVkVOVFM6IEpTT04uc3RyaW5naWZ5KCEhcHJvcHMuZGVkdXBsaWNhdGVFdmVudHMpLFxuICAgICAgICAgIEZSSUVORExZX05BTUVTOiBKU09OLnN0cmluZ2lmeShwcm9wcy5mcmllbmRseU5hbWVzIHx8IHt9KSxcbiAgICAgICAgICBTTEFDS19XRUJIT09LX1VSTDogcHJvcHMuc2xhY2tXZWJob29rVXJsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gICAgZXZlbnRUcmFuc2Zvcm1lci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImlhbTpMaXN0QWNjb3VudEFsaWFzZXNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgIH0pLFxuICAgIClcbiAgICBpZiAocHJvcHMuaW5mcmFzdHJ1Y3R1cmVBbGFybUFjdGlvbikge1xuICAgICAgY29uc3QgZXZlbnRUcmFuc2Zvcm1lckFsYXJtID0gZXZlbnRUcmFuc2Zvcm1lclxuICAgICAgICAubWV0cmljRXJyb3JzKHtcbiAgICAgICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIHN0YXRpc3RpYzogY2xvdWR3YXRjaC5TdGF0aXN0aWMuU1VNLFxuICAgICAgICB9KVxuICAgICAgICAuY3JlYXRlQWxhcm0odGhpcywgXCJFdmVudFRyYW5zZm9ybWVyRXJyb3JBbGFybVwiLCB7XG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgICBcIlRyaWdnZXJzIGlmIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCB0cmFuc2Zvcm1zIENsb3VkVHJhaWwgQVBJIGNhbGxzIHJlY2VpdmVkIHRocm91Z2ggRXZlbnRCcmlkZ2UgZmFpbHMgKGUuZy4sIGl0IGZhaWxzIHRvIHByb2Nlc3MgdGhlIGV2ZW50KVwiLFxuICAgICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiAxLFxuICAgICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgICAgIH0pXG4gICAgICBldmVudFRyYW5zZm9ybWVyQWxhcm0uYWRkT2tBY3Rpb24ocHJvcHMuaW5mcmFzdHJ1Y3R1cmVBbGFybUFjdGlvbilcbiAgICAgIGV2ZW50VHJhbnNmb3JtZXJBbGFybS5hZGRBbGFybUFjdGlvbihwcm9wcy5pbmZyYXN0cnVjdHVyZUFsYXJtQWN0aW9uKVxuICAgIH1cbiAgICBpZiAocHJvcHMuZGVkdXBsaWNhdGVFdmVudHMpIHtcbiAgICAgIGNvbnN0IGRlZHVwbGljYXRpb25RdWV1ZSA9IG5ldyBzcXMuUXVldWUodGhpcywgXCJRdWV1ZVwiLCB7XG4gICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgZ2l2ZSB0aGUgcXVldWUgYSBuYW1lIGR1ZSB0byBidWcgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy81ODYwXG4gICAgICAgIHF1ZXVlTmFtZTpcbiAgICAgICAgICBgJHt0aGlzLm5vZGUuaWQuc3Vic3RyaW5nKDAsIDMzKX0ke3RoaXMubm9kZS5hZGRyfWAuc3Vic3RyaW5nKDAsIDc1KSArXG4gICAgICAgICAgXCIuZmlmb1wiLFxuICAgICAgICBmaWZvOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIGV2ZW50VHJhbnNmb3JtZXIuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgIFwiU1FTX1FVRVVFX1VSTFwiLFxuICAgICAgICBkZWR1cGxpY2F0aW9uUXVldWUucXVldWVVcmwsXG4gICAgICApXG4gICAgICBkZWR1cGxpY2F0aW9uUXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZXZlbnRUcmFuc2Zvcm1lcilcbiAgICAgIGNvbnN0IHNsYWNrRm9yd2FyZGVyID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlNsYWNrRm9yd2FyZGVyTGFtYmRhXCIsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgICAgIFwiLi4vLi4vYXNzZXRzL2Nsb3VkdHJhaWwtc2xhY2staW50ZWdyYXRpb24tbGFtYmRhXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgXCJQb2xscyBmcm9tIGFuIFNRUyBGSUZPIHF1ZXVlIGNvbnRhaW5pbmcgZm9ybWF0dGVkIENsb3VkVHJhaWwgQVBJIGNhbGxzIGFuZCBzZW5kcyB0aGVtIHRvIFNsYWNrLlwiLFxuICAgICAgICBoYW5kbGVyOiBcIm1haW4uaGFuZGxlcl9zbGFja19mb3J3YXJkZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fV0VFS1MsXG4gICAgICB9KVxuXG4gICAgICBpZiAocHJvcHMuaW5mcmFzdHJ1Y3R1cmVBbGFybUFjdGlvbikge1xuICAgICAgICBjb25zdCBzbGFja0ZvcndhcmRlckFsYXJtID0gc2xhY2tGb3J3YXJkZXJcbiAgICAgICAgICAubWV0cmljRXJyb3JzKHtcbiAgICAgICAgICAgIHBlcmlvZDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgICBzdGF0aXN0aWM6IGNsb3Vkd2F0Y2guU3RhdGlzdGljLlNVTSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jcmVhdGVBbGFybSh0aGlzLCBcIlNsYWNrRm9yd2FyZGVyRXJyb3JBbGFybVwiLCB7XG4gICAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlRyaWdnZXJzIGlmIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBwb2xscyBmcm9tIFNRUyBhbmQgcG9zdHMgZGVkdXBsaWNhdGVkIENsb3VkVHJhaWwgQVBJIGNhbGxzIHJlY2VpdmVkIHRocm91Z2ggRXZlbnRCcmlkZ2UgdG8gU2xhY2sgZmFpbHMgKGUuZy4sIGludmFsaWQgU2xhY2sgd2ViaG9vayBVUkwpXCIsXG4gICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiAxLFxuICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLklHTk9SRSxcbiAgICAgICAgICB9KVxuICAgICAgICBzbGFja0ZvcndhcmRlckFsYXJtLmFkZE9rQWN0aW9uKHByb3BzLmluZnJhc3RydWN0dXJlQWxhcm1BY3Rpb24pXG4gICAgICAgIHNsYWNrRm9yd2FyZGVyQWxhcm0uYWRkQWxhcm1BY3Rpb24ocHJvcHMuaW5mcmFzdHJ1Y3R1cmVBbGFybUFjdGlvbilcbiAgICAgIH1cbiAgICAgIHNsYWNrRm9yd2FyZGVyLmFkZEV2ZW50U291cmNlKFxuICAgICAgICBuZXcgc291cmNlcy5TcXNFdmVudFNvdXJjZShkZWR1cGxpY2F0aW9uUXVldWUpLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5yb2xlc1RvTW9uaXRvciAmJiBwcm9wcy5yb2xlc1RvTW9uaXRvci5sZW5ndGggPiAwKSB7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJSdWxlRm9yQXNzdW1lUm9sZVwiLCB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihldmVudFRyYW5zZm9ybWVyKV0sXG4gICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgZXZlbnROYW1lOiBbXCJBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgICAgcmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgcm9sZUFybjogcHJvcHMucm9sZXNUb01vbml0b3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5tb25pdG9yUm9vdFVzZXJBY3Rpb25zICE9PSBmYWxzZSkge1xuICAgICAgLy8gVHJpZ2dlcnMgd2hlbiB0aGUgcm9vdCBwYXNzd29yZCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJSdWxlRm9yUm9vdFVzZXJQYXNzd29yZENoYW5nZVwiLCB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihldmVudFRyYW5zZm9ybWVyKV0sXG4gICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgdXNlcklkZW50aXR5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFtcIlJvb3RcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXZlbnROYW1lOiBbXCJQYXNzd29yZFVwZGF0ZWRcIl0sXG4gICAgICAgICAgICBldmVudFR5cGU6IFtcIkF3c0NvbnNvbGVTaWduSW5cIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXJzIHdoZW4gTUZBIGZvciB0aGUgcm9vdCB1c2VyIGhhcyBiZWVuIHNldCB1cFxuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsIFwiUnVsZUZvclJvb3RVc2VyTWZhQ2hhbmdlXCIsIHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGV2ZW50VHJhbnNmb3JtZXIpXSxcbiAgICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICB1c2VySWRlbnRpdHk6IHtcbiAgICAgICAgICAgICAgdHlwZTogW1wiUm9vdFwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWU6IFtcIkVuYWJsZU1GQURldmljZVwiXSxcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIHVzZXJOYW1lOiBbXCJBV1MgUk9PVCBVU0VSXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhIHJvb3QgdXNlciBzdWNjZXNmdWxseSBsb2dzIGluIHRvIHRoZSBjb25zb2xlXG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJSdWxlRm9yUm9vdFVzZXJTdWNjZXNzZnVsTG9naW5cIiwge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZXZlbnRUcmFuc2Zvcm1lcildLFxuICAgICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eToge1xuICAgICAgICAgICAgICB0eXBlOiBbXCJSb290XCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV2ZW50TmFtZTogW1wiQ29uc29sZUxvZ2luXCJdLFxuICAgICAgICAgICAgZXZlbnRUeXBlOiBbXCJBd3NDb25zb2xlU2lnbkluXCJdLFxuICAgICAgICAgICAgcmVzcG9uc2VFbGVtZW50czoge1xuICAgICAgICAgICAgICBDb25zb2xlTG9naW46IFtcIlN1Y2Nlc3NcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VycyBmb3IgYmFkIGxvZ2luIGF0dGVtcHMgZm9yIHJvb3QgdXNlciAoZS5nLiwgd3JvbmcgcGFzc3dvcmQpXG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJSdWxlRm9yUm9vdFVzZXJVbnN1Y2Nlc3NmdWxMb2dpblwiLCB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihldmVudFRyYW5zZm9ybWVyKV0sXG4gICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgdXNlcklkZW50aXR5OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFtcIlJvb3RcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXZlbnROYW1lOiBbXCJDb25zb2xlTG9naW5cIl0sXG4gICAgICAgICAgICBldmVudFR5cGU6IFtcIkF3c0NvbnNvbGVTaWduSW5cIl0sXG4gICAgICAgICAgICByZXNwb25zZUVsZW1lbnRzOiB7XG4gICAgICAgICAgICAgIENvbnNvbGVMb2dpbjogW1wiRmFpbHVyZVwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXJlZCB3aGVuIHBhc3N3b3JkIHJlc2V0IGhhcyBiZWVuIHJlcXVlc3RlZFxuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsIFwiUnVsZUZvclJvb3RVc2VyUGFzc3dvcmRSZWNvdmVyeVJlcXVlc3RcIiwge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZXZlbnRUcmFuc2Zvcm1lcildLFxuICAgICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eToge1xuICAgICAgICAgICAgICB0eXBlOiBbXCJSb290XCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV2ZW50TmFtZTogW1wiUGFzc3dvcmRSZWNvdmVyeVJlcXVlc3RlZFwiXSxcbiAgICAgICAgICAgIGV2ZW50VHlwZTogW1wiQXdzQ29uc29sZVNpZ25JblwiXSxcbiAgICAgICAgICAgIHJlc3BvbnNlRWxlbWVudHM6IHtcbiAgICAgICAgICAgICAgUGFzc3dvcmRSZWNvdmVyeVJlcXVlc3RlZDogW1wiU3VjY2Vzc1wiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXJlZCB3aGVuIHBhc3N3b3JkIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZXNldFxuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsIFwiUnVsZUZvclJvb3RVc2VyUGFzc3dvcmRSZWNvdmVyeUNvbXBsZXRlXCIsIHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGV2ZW50VHJhbnNmb3JtZXIpXSxcbiAgICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICB1c2VySWRlbnRpdHk6IHtcbiAgICAgICAgICAgICAgdHlwZTogW1wiUm9vdFwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWU6IFtcIlBhc3N3b3JkUmVjb3ZlcnlDb21wbGV0ZWRcIl0sXG4gICAgICAgICAgICBldmVudFR5cGU6IFtcIkF3c0NvbnNvbGVTaWduSW5cIl0sXG4gICAgICAgICAgICByZXNwb25zZUVsZW1lbnRzOiB7XG4gICAgICAgICAgICAgIFBhc3N3b3JkUmVjb3ZlcnlDb21wbGV0ZWQ6IFtcIlN1Y2Nlc3NcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CloudTrailSlackIntegration, CloudTrailSlackIntegrationProps, } from "./cloudtrail-slack-integration";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudTrailSlackIntegration = void 0;
|
|
4
|
+
var cloudtrail_slack_integration_1 = require("./cloudtrail-slack-integration");
|
|
5
|
+
Object.defineProperty(exports, "CloudTrailSlackIntegration", { enumerable: true, get: function () { return cloudtrail_slack_integration_1.CloudTrailSlackIntegration; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xvdWR0cmFpbC1zbGFjay1pbnRlZ3JhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrRUFHdUM7QUFGckMsMElBQUEsMEJBQTBCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBDbG91ZFRyYWlsU2xhY2tJbnRlZ3JhdGlvbixcbiAgQ2xvdWRUcmFpbFNsYWNrSW50ZWdyYXRpb25Qcm9wcyxcbn0gZnJvbSBcIi4vY2xvdWR0cmFpbC1zbGFjay1pbnRlZ3JhdGlvblwiXG4iXX0=
|
|
@@ -62,7 +62,7 @@ class FargateService extends cdk.Construct {
|
|
|
62
62
|
healthCheckGracePeriod: props.healthCheckGracePeriod,
|
|
63
63
|
desiredCount: props.desiredCount,
|
|
64
64
|
assignPublicIp: true,
|
|
65
|
-
|
|
65
|
+
securityGroups: [this.securityGroup],
|
|
66
66
|
platformVersion: ecs.FargatePlatformVersion.VERSION1_4,
|
|
67
67
|
enableExecuteCommand: true,
|
|
68
68
|
...props.overrideFargateServiceProps,
|
|
@@ -90,4 +90,4 @@ class FargateService extends cdk.Construct {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
exports.FargateService = FargateService;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vjcy9mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXVDO0FBQ3ZDLHdDQUF1QztBQUN2QywyREFBMEQ7QUFDMUQsMENBQXlDO0FBQ3pDLHFDQUFvQztBQUNwQyx3Q0FBd0M7QUFDeEMsa0VBQTZEO0FBOEM3RCxNQUFhLGNBQWUsU0FBUSxHQUFHLENBQUMsU0FBUztJQU0vQyxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQTBCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sVUFBVSxHQUFHLElBQUksMENBQW1CLENBQUMsSUFBSSxFQUFFO1lBQy9DLFNBQVMsRUFBRSxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUNaLGFBQWE7WUFDYixVQUFVLEVBQUUsTUFBQSxLQUFLLENBQUMsVUFBVSxtQ0FBSSxFQUFFO1NBQ25DLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbEQsU0FBUyxFQUFFLE1BQUEsS0FBSyxDQUFDLGFBQWEsbUNBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1NBQy9ELENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDaEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FDakQsSUFBSSxFQUNKLGdCQUFnQixFQUNoQjtZ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RCxHQUFHLEtBQUssQ0FBQyx3QkFBd0I7YUFDbEMsQ0FBQyxDQUFBO1lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDcEMsUUFBUSxFQUFFLGVBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsU0FBUztnQkFDZixxQkFBcUIsRUFBRSxDQUFDO2dCQUN4QixHQUFHLEtBQUssQ0FBQyxtQkFBbUI7YUFDN0IsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0NBQ0Y7QUF2R0Qsd0NBdUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWMyIGZyb20gXCJAYXdzLWNkay9hd3MtZWMyXCJcbmltcG9ydCAqIGFzIGVjcyBmcm9tIFwiQGF3cy1jZGsvYXdzLWVjc1wiXG5pbXBvcnQgKiBhcyBlbGIgZnJvbSBcIkBhd3MtY2RrL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCJcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSBcIkBhd3MtY2RrL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJAYXdzLWNkay9jb3JlXCJcbmltcG9ydCB7IENvbmZpZ3VyZVBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vY29uZmlndXJlLXBhcmFtZXRlcnNcIlxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSBcIi4uL2NvbmZpZ3VyZS1wYXJhbWV0ZXJzL2NvbmZpZ3VyZS1wYXJhbWV0ZXJzXCJcblxuZXhwb3J0IGludGVyZmFjZSBGYXJnYXRlU2VydmljZVByb3BzIHtcbiAgc2VydmljZU5hbWU6IHN0cmluZ1xuICB2cGM6IGVjMi5JVnBjXG4gIGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICBkZXNpcmVkQ291bnQ6IG51bWJlclxuICBlY3NJbWFnZTogZWNzLkNvbnRhaW5lckltYWdlXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAyNTZcbiAgICovXG4gIGNwdT86IG51bWJlclxuICAvKipcbiAgICogQGRlZmF1bHQgNTEyXG4gICAqL1xuICBtZW1vcnlMaW1pdE1pQj86IG51bWJlclxuICAvKipcbiAgICogQGRlZmF1bHQgMiB3ZWVrc1xuICAgKi9cbiAgbG9nc1JldGVudGlvbj86IGxvZ3MuUmV0ZW50aW9uRGF5c1xuICAvKipcbiAgICogQGRlZmF1bHQgMTUgc2Vjb25kc1xuICAgKi9cbiAgZGVyZWdpc3RyYXRpb25EZWxheT86IGNkay5EdXJhdGlvblxuICAvKipcbiAgICogQGRlZmF1bHQgODA4MFxuICAgKi9cbiAgY29udGFpbmVyUG9ydD86IG51bWJlclxuICAvKipcbiAgICogQGRlZmF1bHQgNjAgc2Vjb25kc1xuICAgKi9cbiAgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZD86IGNkay5EdXJhdGlvblxuICBwYXJhbWV0ZXJzPzogUGFyYW1ldGVyW11cbiAgb3ZlcnJpZGVGYXJnYXRlU2VydmljZVByb3BzPzogUGFydGlhbDxlY3MuRmFyZ2F0ZVNlcnZpY2VQcm9wcz5cbiAgb3ZlcnJpZGVIZWFsdGhDaGVjaz86IFBhcnRpYWw8ZWxiLkhlYWx0aENoZWNrPlxuICBvdmVycmlkZVRhcmdldEdyb3VwUHJvcHM/OiBQYXJ0aWFsPGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwUHJvcHM+XG4gIG92ZXJyaWRlQ29udGFpbmVyUHJvcHM/OiBQYXJ0aWFsPGVjcy5Db250YWluZXJEZWZpbml0aW9uT3B0aW9ucz5cbiAgc2VjcmV0cz86IFJlY29yZDxzdHJpbmcsIGVjcy5TZWNyZXQ+XG4gIGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKipcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNraXBUYXJnZXRHcm91cD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIEZhcmdhdGVTZXJ2aWNlIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cFxuICBwdWJsaWMgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvblxuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0R3JvdXA6IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwIHwgdW5kZWZpbmVkXG4gIHB1YmxpYyByZWFkb25seSBsb2dHcm91cDogbG9ncy5Mb2dHcm91cFxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBuZXcgQ29uZmlndXJlUGFyYW1ldGVycyh0aGlzLCB7XG4gICAgICBzc21QcmVmaXg6IGAvbGlmbGlnLWNkay8ke2Nkay5TdGFjay5vZih0aGlzKS5zdGFja05hbWV9LyR7XG4gICAgICAgIHRoaXMubm9kZS5hZGRyXG4gICAgICB9L3BhcmFtZXRlcnNgLFxuICAgICAgcGFyYW1ldGVyczogcHJvcHMucGFyYW1ldGVycyA/PyBbXSxcbiAgICB9KVxuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nR3JvdXBcIiwge1xuICAgICAgcmV0ZW50aW9uOiBwcm9wcy5sb2dzUmV0ZW50aW9uID8/IGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fV0VFS1MsXG4gICAgfSlcblxuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgfSlcblxuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIlRhc2tEZWZpbml0aW9uXCIsXG4gICAgICB7XG4gICAgICAgIGNwdTogcHJvcHMuY3B1ID8/IDI1NixcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHByb3BzLm1lbW9yeUxpbWl0TWlCID8/IDUxMixcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgcGFyYW1ldGVycy5ncmFudFJlYWQodGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSlcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgIGxvZ2dpbmc6IGVjcy5Mb2dEcml2ZXIuYXdzTG9ncyh7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLmxvZ0dyb3VwLFxuICAgICAgICBzdHJlYW1QcmVmaXg6IFwiZWNzXCIsXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiBcIiVZLSVtLSVkVCVIOiVNOiVTXCIsXG4gICAgICB9KSxcbiAgICAgIGltYWdlOiBwcm9wcy5lY3NJbWFnZSxcbiAgICAgIHNlY3JldHM6IHByb3BzLnNlY3JldHMsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTU01fUFJFRklYOiBwYXJhbWV0ZXJzLnNzbVByZWZpeCxcbiAgICAgICAgLy8gTm90IHJlYWQgYnkgdGhlIGFwcGxpY2F0aW9uLCBvbmx5IHVzZWQgdG8gaGVscCB3aXRoIHJlZGVwbG95bWVudHMuXG4gICAgICAgIFBBUkFNU19IQVNIOiBwYXJhbWV0ZXJzLmhhc2hWYWx1ZSxcbiAgICAgICAgLi4uKHByb3BzLmVudmlyb25tZW50ID8/IHt9KSxcbiAgICAgIH0sXG4gICAgICBsaW51eFBhcmFtZXRlcnM6IG5ldyBlY3MuTGludXhQYXJhbWV0ZXJzKHRoaXMsIFwiTGludXhQYXJhbWV0ZXJzXCIsIHtcbiAgICAgICAgaW5pdFByb2Nlc3NFbmFibGVkOiB0cnVlLFxuICAgICAgfSksXG4gICAgICAuLi5wcm9wcy5vdmVycmlkZUNvbnRhaW5lclByb3BzLFxuICAgIH0pXG5cbiAgICBjb25zdCBwb3J0ID0gcHJvcHMuY29udGFpbmVyUG9ydCA/PyA4MDgwXG5cbiAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHBvcnQsXG4gICAgICBob3N0UG9ydDogcG9ydCxcbiAgICB9KVxuXG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgXCJTZXJ2aWNlXCIsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgfSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgY2x1c3RlcjogcHJvcHMuY2x1c3RlcixcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBwcm9wcy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kLFxuICAgICAgZGVzaXJlZENvdW50OiBwcm9wcy5kZXNpcmVkQ291bnQsXG4gICAgICBhc3NpZ25QdWJsaWNJcDogdHJ1ZSxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHRoaXMuc2VjdXJpdHlHcm91cCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogZWNzLkZhcmdhdGVQbGF0Zm9ybVZlcnNpb24uVkVSU0lPTjFfNCxcbiAgICAgIGVuYWJsZUV4ZWN1dGVDb21tYW5kOiB0cnVlLFxuICAgICAgLi4ucHJvcHMub3ZlcnJpZGVGYXJnYXRlU2VydmljZVByb3BzLFxuICAgIH0pXG5cbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtZXRlcnMucGFyYW1ldGVycykge1xuICAgICAgc2VydmljZS5ub2RlLmFkZERlcGVuZGVuY3kocGFyYW0pXG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5za2lwVGFyZ2V0R3JvdXApIHtcbiAgICAgIHRoaXMudGFyZ2V0R3JvdXAgPSBuZXcgZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGhpcywgXCJUYXJnZXRHcm91cFwiLCB7XG4gICAgICAgIHByb3RvY29sOiBlbGIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgdGFyZ2V0VHlwZTogZWxiLlRhcmdldFR5cGUuSVAsXG4gICAgICAgIHRhcmdldHM6IFtzZXJ2aWNlXSxcbiAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICBwcm9wcy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/IGNkay5EdXJhdGlvbi5zZWNvbmRzKDE1KSxcbiAgICAgICAgLi4ucHJvcHMub3ZlcnJpZGVUYXJnZXRHcm91cFByb3BzLFxuICAgICAgfSlcblxuICAgICAgdGhpcy50YXJnZXRHcm91cC5jb25maWd1cmVIZWFsdGhDaGVjayh7XG4gICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGhlYWx0aHlUaHJlc2hvbGRDb3VudDogMixcbiAgICAgICAgLi4ucHJvcHMub3ZlcnJpZGVIZWFsdGhDaGVjayxcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vjcy9mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXVDO0FBQ3ZDLHdDQUF1QztBQUN2QywyREFBMEQ7QUFDMUQsMENBQXlDO0FBQ3pDLHFDQUFvQztBQUNwQyx3Q0FBd0M7QUFDeEMsa0VBQTZEO0FBOEM3RCxNQUFhLGNBQWUsU0FBUSxHQUFHLENBQUMsU0FBUztJQU0vQyxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQTBCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sVUFBVSxHQUFHLElBQUksMENBQW1CLENBQUMsSUFBSSxFQUFFO1lBQy9DLFNBQVMsRUFBRSxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUNaLGFBQWE7WUFDYixVQUFVLEVBQUUsTUFBQSxLQUFLLENBQUMsVUFBVSxtQ0FBSSxFQUFFO1NBQ25DLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbEQsU0FBUyxFQUFFLE1BQUEsS0FBSyxDQUFDLGFBQWEsbUNBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1NBQy9ELENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDaEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FDakQsSUFBSSxFQUNKLGdCQUFnQixFQUNoQjtZQUNFLEdBQUcsRUFBRSxNQUFBLEtBQUssQ0FBQyxHQUFHLG1DQUFJLEdBQUc7WUFDckIsY0FBYyxFQUFFLE1BQUEsS0FBSyxDQUFDLGNBQWMsbUNBQUksR0FBRztTQUM1QyxDQUNGLENBQUE7UUFFRCxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQzlELE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixZQUFZLEVBQUUsS0FBSztnQkFDbkIsY0FBYyxFQUFFLG1CQUFtQjthQUNwQyxDQUFDO1lBQ0YsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3JCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixXQUFXLEVBQUU7Z0JBQ1gsVUFBVSxFQUFFLFVBQVUsQ0FBQyxTQUFTO2dCQUNoQyxxRUFBcUU7Z0JBQ3JFLFdBQVcsRUFBRSxVQUFVLENBQUMsU0FBUztnQkFDakMsR0FBRyxDQUFDLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksRUFBRSxDQUFDO2FBQzdCO1lBQ0QsZUFBZSxFQUFFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ2hFLGtCQUFrQixFQUFFLElBQUk7YUFDekIsQ0FBQztZQUNGLEdBQUcsS0FBSyxDQUFDLHNCQUFzQjtTQUNoQyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxhQUFhLG1DQUFJLElBQUksQ0FBQTtRQUV4QyxTQUFTLENBQUMsZUFBZSxDQUFDO1lBQ3hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2FBQ2xDO1lBQ0QsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixpQkFBaUIsRUFBRSxHQUFHO1lBQ3RCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDcEMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVO1lBQ3RELG9CQUFvQixFQUFFLElBQUk7WUFDMUIsR0FBRyxLQUFLLENBQUMsMkJBQTJCO1NBQ3JDLENBQUMsQ0FBQTtRQUVGLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNsQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDckUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO2dCQUN0QyxJQUFJLEVBQUUsSUFBSTtnQkFDVixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDN0IsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixtQkFBbUIsRUFDakIsTUFBQSxLQUFLLENBQUMsbUJBQW1CLG1DQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdkQsR0FBRyxLQUFLLENBQUMsd0JBQXdCO2FBQ2xDLENBQUMsQ0FBQTtZQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3BDLFFBQVEsRUFBRSxlQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YscUJBQXFCLEVBQUUsQ0FBQztnQkFDeEIsR0FBRyxLQUFLLENBQUMsbUJBQW1CO2FBQzdCLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztDQUNGO0FBdkdELHdDQXVHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVjMiBmcm9tIFwiQGF3cy1jZGsvYXdzLWVjMlwiXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcIkBhd3MtY2RrL2F3cy1lY3NcIlxuaW1wb3J0ICogYXMgZWxiIGZyb20gXCJAYXdzLWNkay9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJAYXdzLWNkay9hd3MtbG9nc1wiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcIkBhd3MtY2RrL2NvcmVcIlxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5pbXBvcnQgeyBDb25maWd1cmVQYXJhbWV0ZXJzIH0gZnJvbSBcIi4uL2NvbmZpZ3VyZS1wYXJhbWV0ZXJzXCJcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gXCIuLi9jb25maWd1cmUtcGFyYW1ldGVycy9jb25maWd1cmUtcGFyYW1ldGVyc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFyZ2F0ZVNlcnZpY2VQcm9wcyB7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmdcbiAgdnBjOiBlYzIuSVZwY1xuICBjbHVzdGVyOiBlY3MuSUNsdXN0ZXJcbiAgZGVzaXJlZENvdW50OiBudW1iZXJcbiAgZWNzSW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZVxuICAvKipcbiAgICogQGRlZmF1bHQgMjU2XG4gICAqL1xuICBjcHU/OiBudW1iZXJcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDUxMlxuICAgKi9cbiAgbWVtb3J5TGltaXRNaUI/OiBudW1iZXJcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDIgd2Vla3NcbiAgICovXG4gIGxvZ3NSZXRlbnRpb24/OiBsb2dzLlJldGVudGlvbkRheXNcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDE1IHNlY29uZHNcbiAgICovXG4gIGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBjZGsuRHVyYXRpb25cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDgwODBcbiAgICovXG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDYwIHNlY29uZHNcbiAgICovXG4gIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q/OiBjZGsuRHVyYXRpb25cbiAgcGFyYW1ldGVycz86IFBhcmFtZXRlcltdXG4gIG92ZXJyaWRlRmFyZ2F0ZVNlcnZpY2VQcm9wcz86IFBhcnRpYWw8ZWNzLkZhcmdhdGVTZXJ2aWNlUHJvcHM+XG4gIG92ZXJyaWRlSGVhbHRoQ2hlY2s/OiBQYXJ0aWFsPGVsYi5IZWFsdGhDaGVjaz5cbiAgb3ZlcnJpZGVUYXJnZXRHcm91cFByb3BzPzogUGFydGlhbDxlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzPlxuICBvdmVycmlkZUNvbnRhaW5lclByb3BzPzogUGFydGlhbDxlY3MuQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnM+XG4gIHNlY3JldHM/OiBSZWNvcmQ8c3RyaW5nLCBlY3MuU2VjcmV0PlxuICBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBza2lwVGFyZ2V0R3JvdXA/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBGYXJnYXRlU2VydmljZSBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogZWMyLlNlY3VyaXR5R3JvdXBcbiAgcHVibGljIHJlYWRvbmx5IHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb25cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldEdyb3VwOiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cCB8IHVuZGVmaW5lZFxuICBwdWJsaWMgcmVhZG9ubHkgbG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXBcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZhcmdhdGVTZXJ2aWNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gbmV3IENvbmZpZ3VyZVBhcmFtZXRlcnModGhpcywge1xuICAgICAgc3NtUHJlZml4OiBgL2xpZmxpZy1jZGsvJHtjZGsuU3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS8ke1xuICAgICAgICB0aGlzLm5vZGUuYWRkclxuICAgICAgfS9wYXJhbWV0ZXJzYCxcbiAgICAgIHBhcmFtZXRlcnM6IHByb3BzLnBhcmFtZXRlcnMgPz8gW10sXG4gICAgfSlcblxuICAgIHRoaXMubG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ0dyb3VwXCIsIHtcbiAgICAgIHJldGVudGlvbjogcHJvcHMubG9nc1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxuICAgIH0pXG5cbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pXG5cbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJUYXNrRGVmaW5pdGlvblwiLFxuICAgICAge1xuICAgICAgICBjcHU6IHByb3BzLmNwdSA/PyAyNTYsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQiA/PyA1MTIsXG4gICAgICB9LFxuICAgIClcblxuICAgIHBhcmFtZXRlcnMuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpXG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICBsb2dnaW5nOiBlY3MuTG9nRHJpdmVyLmF3c0xvZ3Moe1xuICAgICAgICBsb2dHcm91cDogdGhpcy5sb2dHcm91cCxcbiAgICAgICAgc3RyZWFtUHJlZml4OiBcImVjc1wiLFxuICAgICAgICBkYXRldGltZUZvcm1hdDogXCIlWS0lbS0lZFQlSDolTTolU1wiLFxuICAgICAgfSksXG4gICAgICBpbWFnZTogcHJvcHMuZWNzSW1hZ2UsXG4gICAgICBzZWNyZXRzOiBwcm9wcy5zZWNyZXRzLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU1NNX1BSRUZJWDogcGFyYW1ldGVycy5zc21QcmVmaXgsXG4gICAgICAgIC8vIE5vdCByZWFkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgb25seSB1c2VkIHRvIGhlbHAgd2l0aCByZWRlcGxveW1lbnRzLlxuICAgICAgICBQQVJBTVNfSEFTSDogcGFyYW1ldGVycy5oYXNoVmFsdWUsXG4gICAgICAgIC4uLihwcm9wcy5lbnZpcm9ubWVudCA/PyB7fSksXG4gICAgICB9LFxuICAgICAgbGludXhQYXJhbWV0ZXJzOiBuZXcgZWNzLkxpbnV4UGFyYW1ldGVycyh0aGlzLCBcIkxpbnV4UGFyYW1ldGVyc1wiLCB7XG4gICAgICAgIGluaXRQcm9jZXNzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgLi4ucHJvcHMub3ZlcnJpZGVDb250YWluZXJQcm9wcyxcbiAgICB9KVxuXG4gICAgY29uc3QgcG9ydCA9IHByb3BzLmNvbnRhaW5lclBvcnQgPz8gODA4MFxuXG4gICAgY29udGFpbmVyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICBjb250YWluZXJQb3J0OiBwb3J0LFxuICAgICAgaG9zdFBvcnQ6IHBvcnQsXG4gICAgfSlcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgIH0sXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGNsdXN0ZXI6IHByb3BzLmNsdXN0ZXIsXG4gICAgICBtaW5IZWFsdGh5UGVyY2VudDogMTAwLFxuICAgICAgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogcHJvcHMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCxcbiAgICAgIGRlc2lyZWRDb3VudDogcHJvcHMuZGVzaXJlZENvdW50LFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuc2VjdXJpdHlHcm91cF0sXG4gICAgICBwbGF0Zm9ybVZlcnNpb246IGVjcy5GYXJnYXRlUGxhdGZvcm1WZXJzaW9uLlZFUlNJT04xXzQsXG4gICAgICBlbmFibGVFeGVjdXRlQ29tbWFuZDogdHJ1ZSxcbiAgICAgIC4uLnByb3BzLm92ZXJyaWRlRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgICB9KVxuXG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbWV0ZXJzLnBhcmFtZXRlcnMpIHtcbiAgICAgIHNlcnZpY2Uubm9kZS5hZGREZXBlbmRlbmN5KHBhcmFtKVxuICAgIH1cblxuICAgIGlmICghcHJvcHMuc2tpcFRhcmdldEdyb3VwKSB7XG4gICAgICB0aGlzLnRhcmdldEdyb3VwID0gbmV3IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKHRoaXMsIFwiVGFyZ2V0R3JvdXBcIiwge1xuICAgICAgICBwcm90b2NvbDogZWxiLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIHRhcmdldFR5cGU6IGVsYi5UYXJnZXRUeXBlLklQLFxuICAgICAgICB0YXJnZXRzOiBbc2VydmljZV0sXG4gICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgcHJvcHMuZGVyZWdpc3RyYXRpb25EZWxheSA/PyBjZGsuRHVyYXRpb24uc2Vjb25kcygxNSksXG4gICAgICAgIC4uLnByb3BzLm92ZXJyaWRlVGFyZ2V0R3JvdXBQcm9wcyxcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMudGFyZ2V0R3JvdXAuY29uZmlndXJlSGVhbHRoQ2hlY2soe1xuICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgICAgIHBhdGg6IFwiL2hlYWx0aFwiLFxuICAgICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IDIsXG4gICAgICAgIC4uLnByb3BzLm92ZXJyaWRlSGVhbHRoQ2hlY2ssXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -14,5 +14,12 @@ export interface ListenerRuleProps {
|
|
|
14
14
|
hostedZone?: route53.IHostedZone;
|
|
15
15
|
}
|
|
16
16
|
export declare class ListenerRule extends cdk.Construct {
|
|
17
|
+
/**
|
|
18
|
+
* The rule created in the ALB Listener.
|
|
19
|
+
*
|
|
20
|
+
* Use {@link elb.ApplicationListenerRule.addCondition} to add [other conditions](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#rule-condition-types)
|
|
21
|
+
* than Host-header.
|
|
22
|
+
*/
|
|
23
|
+
readonly applicationListenerRule: elb.ApplicationListenerRule;
|
|
17
24
|
constructor(scope: cdk.Construct, id: string, props: ListenerRuleProps);
|
|
18
25
|
}
|
package/lib/ecs/listener-rule.js
CHANGED
|
@@ -8,10 +8,10 @@ const cdk = require("@aws-cdk/core");
|
|
|
8
8
|
class ListenerRule extends cdk.Construct {
|
|
9
9
|
constructor(scope, id, props) {
|
|
10
10
|
super(scope, id);
|
|
11
|
-
new elb.ApplicationListenerRule(this, "ListenerRule", {
|
|
11
|
+
this.applicationListenerRule = new elb.ApplicationListenerRule(this, "ListenerRule", {
|
|
12
12
|
listener: props.httpsListener,
|
|
13
13
|
priority: props.listenerPriority,
|
|
14
|
-
|
|
14
|
+
conditions: [elb.ListenerCondition.hostHeaders([props.domainName])],
|
|
15
15
|
targetGroups: [props.targetGroup],
|
|
16
16
|
});
|
|
17
17
|
if (props.hostedZone != null) {
|
|
@@ -24,4 +24,4 @@ class ListenerRule extends cdk.Construct {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.ListenerRule = ListenerRule;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuZXItcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY3MvbGlzdGVuZXItcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMEQ7QUFDMUQsZ0RBQStDO0FBQy9DLCtEQUE4RDtBQUM5RCxxQ0FBb0M7QUFlcEMsTUFBYSxZQUFhLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFTN0MsWUFBWSxLQUFvQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FDNUQsSUFBSSxFQUNKLGNBQWMsRUFDZDtZQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUM3QixRQUFRLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUNoQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDbkUsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztTQUNsQyxDQUNGLENBQUE7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzVCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUNuQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQ3RCLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLEdBQUc7Z0JBQ2xDLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDcEMsSUFBSSxjQUFjLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUMxRDthQUNGLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztDQUNGO0FBakNELG9DQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVsYiBmcm9tIFwiQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIlxuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tIFwiQGF3cy1jZGsvYXdzLXJvdXRlNTNcIlxuaW1wb3J0ICogYXMgcm91dGU1M1RhcmdldHMgZnJvbSBcIkBhd3MtY2RrL2F3cy1yb3V0ZTUzLXRhcmdldHNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJAYXdzLWNkay9jb3JlXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lclJ1bGVQcm9wcyB7XG4gIGh0dHBzTGlzdGVuZXI6IGVsYi5JQXBwbGljYXRpb25MaXN0ZW5lclxuICBsb2FkQmFsYW5jZXI6IGVsYi5JQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJcbiAgZG9tYWluTmFtZTogc3RyaW5nXG4gIGxpc3RlbmVyUHJpb3JpdHk6IG51bWJlclxuICB0YXJnZXRHcm91cDogZWxiLklBcHBsaWNhdGlvblRhcmdldEdyb3VwXG4gIC8qKlxuICAgKiBJZiAnaG9zdGVkWm9uZScgaXMgYW4gQSByZWNvcmQgZm9yICdkb21haW5OYW1lJyBpcyBjcmVhdGVkIHdpdGhcbiAgICogdGhlICdsb2FkQmFsYW5jZXInIGFzIHRhcmdldFxuICAgKi9cbiAgaG9zdGVkWm9uZT86IHJvdXRlNTMuSUhvc3RlZFpvbmVcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RlbmVyUnVsZSBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIHJ1bGUgY3JlYXRlZCBpbiB0aGUgQUxCIExpc3RlbmVyLlxuICAgKlxuICAgKiBVc2Uge0BsaW5rIGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyUnVsZS5hZGRDb25kaXRpb259IHRvIGFkZCBbb3RoZXIgY29uZGl0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9hcHBsaWNhdGlvbi9sb2FkLWJhbGFuY2VyLWxpc3RlbmVycy5odG1sI3J1bGUtY29uZGl0aW9uLXR5cGVzKVxuICAgKiB0aGFuIEhvc3QtaGVhZGVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwcGxpY2F0aW9uTGlzdGVuZXJSdWxlOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lclJ1bGVcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpc3RlbmVyUnVsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5hcHBsaWNhdGlvbkxpc3RlbmVyUnVsZSA9IG5ldyBlbGIuQXBwbGljYXRpb25MaXN0ZW5lclJ1bGUoXG4gICAgICB0aGlzLFxuICAgICAgXCJMaXN0ZW5lclJ1bGVcIixcbiAgICAgIHtcbiAgICAgICAgbGlzdGVuZXI6IHByb3BzLmh0dHBzTGlzdGVuZXIsXG4gICAgICAgIHByaW9yaXR5OiBwcm9wcy5saXN0ZW5lclByaW9yaXR5LFxuICAgICAgICBjb25kaXRpb25zOiBbZWxiLkxpc3RlbmVyQ29uZGl0aW9uLmhvc3RIZWFkZXJzKFtwcm9wcy5kb21haW5OYW1lXSldLFxuICAgICAgICB0YXJnZXRHcm91cHM6IFtwcm9wcy50YXJnZXRHcm91cF0sXG4gICAgICB9LFxuICAgIClcblxuICAgIGlmIChwcm9wcy5ob3N0ZWRab25lICE9IG51bGwpIHtcbiAgICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQodGhpcywgXCJBUmVjb3JkXCIsIHtcbiAgICAgICAgem9uZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgICAgcmVjb3JkTmFtZTogYCR7cHJvcHMuZG9tYWluTmFtZX0uYCxcbiAgICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgICAgbmV3IHJvdXRlNTNUYXJnZXRzLkxvYWRCYWxhbmNlclRhcmdldChwcm9wcy5sb2FkQmFsYW5jZXIpLFxuICAgICAgICApLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import * as webapp from "./webapp";
|
|
|
7
7
|
import * as configureParameters from "./configure-parameters";
|
|
8
8
|
import * as ecs from "./ecs";
|
|
9
9
|
import * as loadBalancer from "./load-balancer";
|
|
10
|
+
import * as cloudTrailSlackIntegration from "./cloudtrail-slack-integration";
|
|
10
11
|
import * as rds from "./rds";
|
|
11
12
|
import * as platform from "./platform";
|
|
12
13
|
export { BastionHost } from "./bastion-host";
|
|
@@ -20,7 +21,7 @@ export { SsmParameterBackedResource } from "./ssm-parameter-backed-resource";
|
|
|
20
21
|
export { SsmParameterReader } from "./ssm-parameter-reader";
|
|
21
22
|
export { tagResources } from "./tags";
|
|
22
23
|
export { WebappDeployViaRole } from "./webapp-deploy-via-role";
|
|
23
|
-
export { alarms, cdkPipelines, griid, pipelines, ses, webapp, configureParameters, ecs, loadBalancer, rds, platform, };
|
|
24
|
+
export { alarms, cdkPipelines, griid, pipelines, ses, webapp, configureParameters, ecs, loadBalancer, rds, platform, cloudTrailSlackIntegration, };
|
|
24
25
|
/**
|
|
25
26
|
* Check if we are synthesizing a snapshot by setting IS_SNAPSHOT
|
|
26
27
|
* environment variable to true.
|
package/lib/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.isSnapshot = exports.platform = exports.rds = exports.loadBalancer = exports.ecs = exports.configureParameters = exports.webapp = exports.ses = exports.pipelines = exports.griid = exports.cdkPipelines = exports.alarms = exports.WebappDeployViaRole = exports.tagResources = exports.SsmParameterReader = exports.SsmParameterBackedResource = exports.createCloudAssemblySnapshot = exports.HostedZoneWithParam = exports.CrossRegionSsmParameter = exports.BastionHost = void 0;
|
|
13
|
+
exports.isSnapshot = exports.cloudTrailSlackIntegration = exports.platform = exports.rds = exports.loadBalancer = exports.ecs = exports.configureParameters = exports.webapp = exports.ses = exports.pipelines = exports.griid = exports.cdkPipelines = exports.alarms = exports.WebappDeployViaRole = exports.tagResources = exports.SsmParameterReader = exports.SsmParameterBackedResource = exports.createCloudAssemblySnapshot = exports.HostedZoneWithParam = exports.CrossRegionSsmParameter = exports.BastionHost = void 0;
|
|
14
14
|
const alarms = require("./alarms");
|
|
15
15
|
exports.alarms = alarms;
|
|
16
16
|
const cdkPipelines = require("./cdk-pipelines");
|
|
@@ -29,6 +29,8 @@ const ecs = require("./ecs");
|
|
|
29
29
|
exports.ecs = ecs;
|
|
30
30
|
const loadBalancer = require("./load-balancer");
|
|
31
31
|
exports.loadBalancer = loadBalancer;
|
|
32
|
+
const cloudTrailSlackIntegration = require("./cloudtrail-slack-integration");
|
|
33
|
+
exports.cloudTrailSlackIntegration = cloudTrailSlackIntegration;
|
|
32
34
|
const rds = require("./rds");
|
|
33
35
|
exports.rds = rds;
|
|
34
36
|
const platform = require("./platform");
|
|
@@ -62,4 +64,4 @@ Object.defineProperty(exports, "WebappDeployViaRole", { enumerable: true, get: f
|
|
|
62
64
|
* happen during snapshot creation.
|
|
63
65
|
*/
|
|
64
66
|
exports.isSnapshot = process.env.IS_SNAPSHOT === "true";
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFrQztBQTZCaEMsd0JBQU07QUE1QlIsZ0RBQStDO0FBNkI3QyxvQ0FBWTtBQTVCZCxpQ0FBZ0M7QUE2QjlCLHNCQUFLO0FBNUJQLHlDQUF3QztBQTZCdEMsOEJBQVM7QUE1QlgsNkJBQTRCO0FBNkIxQixrQkFBRztBQTVCTCxtQ0FBa0M7QUE2QmhDLHdCQUFNO0FBNUJSLDhEQUE2RDtBQTZCM0Qsa0RBQW1CO0FBNUJyQiw2QkFBNEI7QUE2QjFCLGtCQUFHO0FBNUJMLGdEQUErQztBQTZCN0Msb0NBQVk7QUE1QmQsNkVBQTRFO0FBK0IxRSxnRUFBMEI7QUE5QjVCLDZCQUE0QjtBQTRCMUIsa0JBQUc7QUEzQkwsdUNBQXNDO0FBNEJwQyw0QkFBUTtBQTFCVixnRUFBZ0U7QUFDaEUsdUNBQXVDO0FBRXZDLCtDQUE0QztBQUFuQywyR0FBQSxXQUFXLE9BQUE7QUFDcEIsb0RBQWlDO0FBQ2pDLCtDQUE0QjtBQUM1QiwyRUFBc0U7QUFBN0QscUlBQUEsdUJBQXVCLE9BQUE7QUFDaEMscURBQWtDO0FBQ2xDLG1FQUE4RDtBQUFyRCw2SEFBQSxtQkFBbUIsT0FBQTtBQUM1Qix5Q0FBeUQ7QUFBaEQsd0hBQUEsMkJBQTJCLE9BQUE7QUFDcEMsaUZBQTRFO0FBQW5FLDJJQUFBLDBCQUEwQixPQUFBO0FBQ25DLCtEQUEyRDtBQUFsRCwwSEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwrQkFBcUM7QUFBNUIsb0dBQUEsWUFBWSxPQUFBO0FBQ3JCLG1FQUE4RDtBQUFyRCw2SEFBQSxtQkFBbUIsT0FBQTtBQWlCNUI7Ozs7OztHQU1HO0FBQ1UsUUFBQSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYWxhcm1zIGZyb20gXCIuL2FsYXJtc1wiXG5pbXBvcnQgKiBhcyBjZGtQaXBlbGluZXMgZnJvbSBcIi4vY2RrLXBpcGVsaW5lc1wiXG5pbXBvcnQgKiBhcyBncmlpZCBmcm9tIFwiLi9ncmlpZFwiXG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcIi4vcGlwZWxpbmVzXCJcbmltcG9ydCAqIGFzIHNlcyBmcm9tIFwiLi9zZXNcIlxuaW1wb3J0ICogYXMgd2ViYXBwIGZyb20gXCIuL3dlYmFwcFwiXG5pbXBvcnQgKiBhcyBjb25maWd1cmVQYXJhbWV0ZXJzIGZyb20gXCIuL2NvbmZpZ3VyZS1wYXJhbWV0ZXJzXCJcbmltcG9ydCAqIGFzIGVjcyBmcm9tIFwiLi9lY3NcIlxuaW1wb3J0ICogYXMgbG9hZEJhbGFuY2VyIGZyb20gXCIuL2xvYWQtYmFsYW5jZXJcIlxuaW1wb3J0ICogYXMgY2xvdWRUcmFpbFNsYWNrSW50ZWdyYXRpb24gZnJvbSBcIi4vY2xvdWR0cmFpbC1zbGFjay1pbnRlZ3JhdGlvblwiXG5pbXBvcnQgKiBhcyByZHMgZnJvbSBcIi4vcmRzXCJcbmltcG9ydCAqIGFzIHBsYXRmb3JtIGZyb20gXCIuL3BsYXRmb3JtXCJcblxuLy8gVE9ETzogV2Ugd2FudCB0byBzd2l0Y2ggZXhwb3J0cyBzbyB0aGV5IGV2ZXJ5IGNvbnN0cnVjdCB1bmRlclxuLy8gIGEgbmFtZXNwYWNlIHN1Y2ggYXMgdGhlIHNucyBleHBvcnQuXG5cbmV4cG9ydCB7IEJhc3Rpb25Ib3N0IH0gZnJvbSBcIi4vYmFzdGlvbi1ob3N0XCJcbmV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLWFydGlmYWN0c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9jZGstZGVwbG95XCJcbmV4cG9ydCB7IENyb3NzUmVnaW9uU3NtUGFyYW1ldGVyIH0gZnJvbSBcIi4vY3Jvc3MtcmVnaW9uLXNzbS1wYXJhbWV0ZXJcIlxuZXhwb3J0ICogZnJvbSBcIi4vZWNzLXVwZGF0ZS1pbWFnZVwiXG5leHBvcnQgeyBIb3N0ZWRab25lV2l0aFBhcmFtIH0gZnJvbSBcIi4vaG9zdGVkLXpvbmUtd2l0aC1wYXJhbVwiXG5leHBvcnQgeyBjcmVhdGVDbG91ZEFzc2VtYmx5U25hcHNob3QgfSBmcm9tIFwiLi9zbmFwc2hvdHNcIlxuZXhwb3J0IHsgU3NtUGFyYW1ldGVyQmFja2VkUmVzb3VyY2UgfSBmcm9tIFwiLi9zc20tcGFyYW1ldGVyLWJhY2tlZC1yZXNvdXJjZVwiXG5leHBvcnQgeyBTc21QYXJhbWV0ZXJSZWFkZXIgfSBmcm9tIFwiLi9zc20tcGFyYW1ldGVyLXJlYWRlclwiXG5leHBvcnQgeyB0YWdSZXNvdXJjZXMgfSBmcm9tIFwiLi90YWdzXCJcbmV4cG9ydCB7IFdlYmFwcERlcGxveVZpYVJvbGUgfSBmcm9tIFwiLi93ZWJhcHAtZGVwbG95LXZpYS1yb2xlXCJcblxuZXhwb3J0IHtcbiAgYWxhcm1zLFxuICBjZGtQaXBlbGluZXMsXG4gIGdyaWlkLFxuICBwaXBlbGluZXMsXG4gIHNlcyxcbiAgd2ViYXBwLFxuICBjb25maWd1cmVQYXJhbWV0ZXJzLFxuICBlY3MsXG4gIGxvYWRCYWxhbmNlcixcbiAgcmRzLFxuICBwbGF0Zm9ybSxcbiAgY2xvdWRUcmFpbFNsYWNrSW50ZWdyYXRpb24sXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgd2UgYXJlIHN5bnRoZXNpemluZyBhIHNuYXBzaG90IGJ5IHNldHRpbmcgSVNfU05BUFNIT1RcbiAqIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRydWUuXG4gKlxuICogVGhpcyBhbGxvd3MgZm9yIHNwZWNpYWwgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBzaG91bGQgb25seVxuICogaGFwcGVuIGR1cmluZyBzbmFwc2hvdCBjcmVhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzU25hcHNob3QgPSBwcm9jZXNzLmVudi5JU19TTkFQU0hPVCA9PT0gXCJ0cnVlXCJcbiJdfQ==
|
|
@@ -14,13 +14,14 @@ export interface KinesisToDatadogStreamProps {
|
|
|
14
14
|
* The CloudWatch log groups from you are streaming to Datadog
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
|
-
logGroups: logs.
|
|
17
|
+
logGroups: logs.ILogGroup[];
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
*
|
|
21
21
|
* Forwards logs from log-groups in CloudWatch to a Datadog account.
|
|
22
22
|
* The logs are delivered through a Firehose delivery stream, which is being subscribed to the log-groups in CloudWatch.
|
|
23
23
|
*
|
|
24
|
+
* @author Stein-Aage
|
|
24
25
|
*/
|
|
25
26
|
export declare class KinesisToDatadogStream extends cdk.Construct {
|
|
26
27
|
constructor(scope: cdk.Construct, id: string, props: KinesisToDatadogStreamProps);
|
|
@@ -13,6 +13,7 @@ const cdk = require("@aws-cdk/core");
|
|
|
13
13
|
* Forwards logs from log-groups in CloudWatch to a Datadog account.
|
|
14
14
|
* The logs are delivered through a Firehose delivery stream, which is being subscribed to the log-groups in CloudWatch.
|
|
15
15
|
*
|
|
16
|
+
* @author Stein-Aage
|
|
16
17
|
*/
|
|
17
18
|
class KinesisToDatadogStream extends cdk.Construct {
|
|
18
19
|
constructor(scope, id, props) {
|
|
@@ -121,4 +122,4 @@ class KinesisToDatadogStream extends cdk.Construct {
|
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
exports.KinesisToDatadogStream = KinesisToDatadogStream;
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy10by1kYXRhZG9nLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9raW5lc2lzL2tpbmVzaXMtdG8tZGF0YWRvZy1zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXVDO0FBQ3ZDLHlEQUF3RDtBQUN4RCwwQ0FBeUM7QUFDekMsc0NBQXFDO0FBQ3JDLDRDQUFtRDtBQUNuRCw4REFBNkQ7QUFDN0QscUNBQW9DO0FBbUJwQzs7Ozs7R0FLRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFDdkQsWUFDRSxLQUFvQixFQUNwQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLHNCQUFzQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FDOUMsSUFBSSxFQUNKLHdCQUF3QixDQUN6QixDQUFBO1FBRUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQ2hELElBQUksRUFDSix5QkFBeUIsRUFDekI7WUFDRSxRQUFRLEVBQUUsc0JBQXNCO1NBQ2pDLENBQ0YsQ0FBQTtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUMvRCxpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyxTQUFTO1NBQy9DLENBQUMsQ0FBQTtRQUVGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNsRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQ2pDLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FDbEQ7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDOUQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO1NBQzlELENBQUMsQ0FBQTtRQUVGLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQzFELElBQUksRUFDSixnQkFBZ0IsRUFDaEI7WUFDRSxrQkFBa0IsRUFBRSxXQUFXO1lBQy9CLG9DQUFvQyxFQUFFO2dCQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsT0FBTztnQkFDakMscUJBQXFCLEVBQUU7b0JBQ3JCLEdBQUcsRUFBRSw0REFBNEQ7b0JBQ2pFLFNBQVMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUMvQyxLQUFLLEVBQ0wsZUFBZSxFQUNmLEtBQUssQ0FBQyx1QkFBdUIsQ0FDOUI7eUJBQ0UsbUJBQW1CLENBQUMsT0FBTyxDQUFDO3lCQUM1QixRQUFRLEVBQUU7b0JBQ2IsSUFBSSxFQUFFLHVCQUF1QjtpQkFDOUI7Z0JBQ0Qsb0JBQW9CLEVBQUU7b0JBQ3BCLGVBQWUsRUFBRSxNQUFNO2lCQUN4QjtnQkFDRCx3QkFBd0IsRUFBRTtvQkFDeEIsT0FBTyxFQUFFLElBQUk7b0JBQ2IsWUFBWSxFQUFFLHNCQUFzQixDQUFDLFlBQVk7b0JBQ2pELGFBQWEsRUFBRSx1QkFBdUIsQ0FBQyxhQUFhO2lCQUNyRDtnQkFDRCxjQUFjLEVBQUU7b0JBQ2QsaUJBQWlCLEVBQUUsRUFBRTtvQkFDckIsU0FBUyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLGlCQUFpQixFQUFFLEVBQUU7aUJBQ3RCO2dCQUNELFlBQVksRUFBRSxnQkFBZ0I7Z0JBQzlCLGVBQWUsRUFBRTtvQkFDZixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztvQkFDckMsaUJBQWlCLEVBQUUsY0FBYztvQkFDakMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU87aUJBQ2xDO2FBQ0Y7U0FDRixDQUNGLENBQUE7UUFFRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQzNDLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7Z0JBQy9CLFVBQVUsRUFBRTtvQkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO3dCQUMxRCxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7cUJBQzNDLENBQUM7aUJBQ0g7YUFDRixDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUM7U0FDNUIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUN6QyxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUMvQixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO3dCQUN0QixPQUFPLEVBQUU7NEJBQ1AseUJBQXlCOzRCQUN6QixzQkFBc0I7NEJBQ3RCLGNBQWM7NEJBQ2QsZUFBZTs0QkFDZiwrQkFBK0I7NEJBQy9CLGNBQWM7eUJBQ2Y7d0JBQ0QsU0FBUyxFQUFFOzRCQUNULGdCQUFnQixDQUFDLFNBQVM7NEJBQzFCLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxJQUFJO3lCQUNsQztxQkFDRixDQUFDO29CQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQzlCLFNBQVMsRUFBRTs0QkFDVCxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUN2QyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUNyQixjQUFjLHNCQUFzQixDQUFDLFlBQVksZUFDL0MsdUJBQXVCLENBQUMsYUFDMUIsRUFBRTt5QkFDSDtxQkFDRixDQUFDO29CQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLHdCQUF3Qjs0QkFDeEIsMEJBQTBCOzRCQUMxQixvQkFBb0I7eUJBQ3JCO3dCQUNELFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztxQkFDM0MsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUMxQixDQUFDLENBQUE7UUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEtBQUssRUFBRSxFQUFFO2dCQUNqRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQ25DLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2dCQUM3QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQzlELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO2FBQ3BDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBM0lELHdEQTJJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tIFwiQGF3cy1jZGsvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBmaXJlaG9zZSBmcm9tIFwiQGF3cy1jZGsvYXdzLWtpbmVzaXNmaXJlaG9zZVwiXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJAYXdzLWNkay9hd3MtbG9nc1wiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiQGF3cy1jZGsvYXdzLXMzXCJcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiQGF3cy1jZGsvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2luZXNpc1RvRGF0YWRvZ1N0cmVhbVByb3BzIHtcbiAgLyoqXG4gICAqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgd2hlcmUgeW91ciBEYXRhZG9nIEFQSSBrZXkgaXMgc2F2ZWQuXG4gICAqXG4gICAqIFRoZSBzZWNyZXQgbXVzdCBiZSBhIEpTT04gb2JqZWN0IG9uIHRoZSBmb3JtYXQgeyBcInZhbHVlXCI6IFwiU0VDUkVUXCIgfVxuICAgKlxuICAgKi9cbiAgZGF0YWRvZ0FwaUtleVNlY3JldE5hbWU6IHN0cmluZ1xuICAvKipcbiAgICpcbiAgICogVGhlIENsb3VkV2F0Y2ggbG9nIGdyb3VwcyBmcm9tIHlvdSBhcmUgc3RyZWFtaW5nIHRvIERhdGFkb2dcbiAgICpcbiAgICovXG4gIGxvZ0dyb3VwczogbG9ncy5Mb2dHcm91cFtdXG59XG5cbi8qKlxuICpcbiAqIEZvcndhcmRzIGxvZ3MgZnJvbSBsb2ctZ3JvdXBzIGluIENsb3VkV2F0Y2ggdG8gYSBEYXRhZG9nIGFjY291bnQuXG4gKiBUaGUgbG9ncyBhcmUgZGVsaXZlcmVkIHRocm91Z2ggYSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0sIHdoaWNoIGlzIGJlaW5nIHN1YnNjcmliZWQgdG8gdGhlIGxvZy1ncm91cHMgaW4gQ2xvdWRXYXRjaC5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBLaW5lc2lzVG9EYXRhZG9nU3RyZWFtIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjZGsuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEtpbmVzaXNUb0RhdGFkb2dTdHJlYW1Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgZGVsaXZlcnlTdHJlYW1Mb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRGVsaXZlcnlTdHJlYW1Mb2dHcm91cFwiLFxuICAgIClcblxuICAgIGNvbnN0IGRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtID0gbmV3IGxvZ3MuTG9nU3RyZWFtKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRGVsaXZlcnlTdHJlYW1Mb2dTdHJlYW1cIixcbiAgICAgIHtcbiAgICAgICAgbG9nR3JvdXA6IGRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXAsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNvbnN0IGZhaWxlZERhdGFCdWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIFwiRmFpbGVkRGF0YUJ1Y2tldFwiLCB7XG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgIH0pXG5cbiAgICBjb25zdCBjbG91ZFdhdGNoTG9nc1JvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJDbG91ZFdhdGNoTG9nc1JvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgIGBsb2dzLiR7Y2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICApLFxuICAgIH0pXG5cbiAgICBjb25zdCBmaXJlaG9zZUxvZ3NSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiRmlyZWhvc2VMb2dzUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImZpcmVob3NlLmFtYXpvbmF3cy5jb21cIiksXG4gICAgfSlcblxuICAgIGNvbnN0IGRhdGFkb2dEZWxpdmVyeVN0cmVhbSA9IG5ldyBmaXJlaG9zZS5DZm5EZWxpdmVyeVN0cmVhbShcbiAgICAgIHRoaXMsXG4gICAgICBcIkRlbGl2ZXJ5U3RyZWFtXCIsXG4gICAgICB7XG4gICAgICAgIGRlbGl2ZXJ5U3RyZWFtVHlwZTogXCJEaXJlY3RQdXRcIixcbiAgICAgICAgaHR0cEVuZHBvaW50RGVzdGluYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgcm9sZUFybjogZmlyZWhvc2VMb2dzUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIGVuZHBvaW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgdXJsOiBcImh0dHBzOi8vYXdzLWtpbmVzaXMtaHR0cC1pbnRha2UubG9ncy5kYXRhZG9naHEuZXUvdjEvaW5wdXRcIixcbiAgICAgICAgICAgIGFjY2Vzc0tleTogc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICBcIkRhdGFkb2dBcGlLZXlcIixcbiAgICAgICAgICAgICAgcHJvcHMuZGF0YWRvZ0FwaUtleVNlY3JldE5hbWUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zZWNyZXRWYWx1ZUZyb21Kc29uKFwidmFsdWVcIilcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBuYW1lOiBcImRhdGFkb2ctbG9ncy1lbmRwb2ludFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIGNvbnRlbnRFbmNvZGluZzogXCJHWklQXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbG91ZFdhdGNoTG9nZ2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICBsb2dHcm91cE5hbWU6IGRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXAubG9nR3JvdXBOYW1lLFxuICAgICAgICAgICAgbG9nU3RyZWFtTmFtZTogZGVsaXZlcnlTdHJlYW1Mb2dTdHJlYW0ubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1ZmZlcmluZ0hpbnRzOiB7XG4gICAgICAgICAgICBpbnRlcnZhbEluU2Vjb25kczogNjAsXG4gICAgICAgICAgICBzaXplSW5NQnM6IDQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXRyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uSW5TZWNvbmRzOiA2MCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHMzQmFja3VwTW9kZTogXCJGYWlsZWREYXRhT25seVwiLFxuICAgICAgICAgIHMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgYnVja2V0QXJuOiBmYWlsZWREYXRhQnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgICAgIGNvbXByZXNzaW9uRm9ybWF0OiBcIlVOQ09NUFJFU1NFRFwiLFxuICAgICAgICAgICAgcm9sZUFybjogZmlyZWhvc2VMb2dzUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiQ2xvdWRXYXRjaExvZ3NQb2xpY3lcIiwge1xuICAgICAgZG9jdW1lbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wiZmlyZWhvc2U6UHV0UmVjb3JkXCIsIFwiZmlyZWhvc2U6UHV0UmVjb3JkQmF0Y2hcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtkYXRhZG9nRGVsaXZlcnlTdHJlYW0uYXR0ckFybl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIHJvbGVzOiBbY2xvdWRXYXRjaExvZ3NSb2xlXSxcbiAgICB9KVxuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJGaXJlaG9zZUxvZ3NQb2xpY3lcIiwge1xuICAgICAgZG9jdW1lbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICBcInMzOkFib3J0TXVsdGlwYXJ0VXBsb2FkXCIsXG4gICAgICAgICAgICAgIFwiczM6R2V0QnVja2V0TG9jYXRpb25cIixcbiAgICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICAgICAgXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgICAgIFwiczM6TGlzdEJ1Y2tldE11bHRpcGFydFVwbG9hZHNcIixcbiAgICAgICAgICAgICAgXCJzMzpQdXRPYmplY3RcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgZmFpbGVkRGF0YUJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgICAgIGAke2ZhaWxlZERhdGFCdWNrZXQuYnVja2V0QXJufS8qYCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wibG9nczpQdXRMb2dFdmVudHNcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgYGFybjphd3M6bG9nczoke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259OiR7XG4gICAgICAgICAgICAgICAgY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICAgICAgICAgICAgfTpsb2ctZ3JvdXA6JHtkZWxpdmVyeVN0cmVhbUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZX06bG9nLXN0cmVhbToke1xuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtLmxvZ1N0cmVhbU5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJraW5lc2lzOkRlc2NyaWJlU3RyZWFtXCIsXG4gICAgICAgICAgICAgIFwia2luZXNpczpHZXRTaGFyZEl0ZXJhdG9yXCIsXG4gICAgICAgICAgICAgIFwia2luZXNpczpHZXRSZWNvcmRzXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbZGF0YWRvZ0RlbGl2ZXJ5U3RyZWFtLmF0dHJBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgICByb2xlczogW2ZpcmVob3NlTG9nc1JvbGVdLFxuICAgIH0pXG5cbiAgICBwcm9wcy5sb2dHcm91cHMuZm9yRWFjaCgobG9nR3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICBuZXcgbG9ncy5DZm5TdWJzY3JpcHRpb25GaWx0ZXIodGhpcywgYFN1YnNjcmlwdGlvbkZpbHRlciR7aW5kZXh9YCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgZGVzdGluYXRpb25Bcm46IGRhdGFkb2dEZWxpdmVyeVN0cmVhbS5hdHRyQXJuLFxuICAgICAgICBmaWx0ZXJQYXR0ZXJuOiBsb2dzLkZpbHRlclBhdHRlcm4uYWxsRXZlbnRzKCkubG9nUGF0dGVyblN0cmluZyxcbiAgICAgICAgcm9sZUFybjogY2xvdWRXYXRjaExvZ3NSb2xlLnJvbGVBcm4sXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy10by1kYXRhZG9nLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9raW5lc2lzL2tpbmVzaXMtdG8tZGF0YWRvZy1zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXVDO0FBQ3ZDLHlEQUF3RDtBQUN4RCwwQ0FBeUM7QUFDekMsc0NBQXFDO0FBQ3JDLDRDQUFtRDtBQUNuRCw4REFBNkQ7QUFDN0QscUNBQW9DO0FBbUJwQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBQ3ZELFlBQ0UsS0FBb0IsRUFDcEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQzlDLElBQUksRUFDSix3QkFBd0IsQ0FDekIsQ0FBQTtRQUVELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUNoRCxJQUFJLEVBQ0oseUJBQXlCLEVBQ3pCO1lBQ0UsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxDQUNGLENBQUE7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDL0QsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztTQUMvQyxDQUFDLENBQUE7UUFFRixNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbEUsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUNqQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQ2xEO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxnQkFBZ0IsR0FB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eUJBQ0g7cUJBQ0YsQ0FBQztvQkFDRixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRTs0QkFDUCx3QkFBd0I7NEJBQ3hCLDBCQUEwQjs0QkFDMUIsb0JBQW9CO3lCQUNyQjt3QkFDRCxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7cUJBQzNDLENBQUM7aUJBQ0g7YUFDRixDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDMUIsQ0FBQyxDQUFBO1FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixLQUFLLEVBQUUsRUFBRTtnQkFDakUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO2dCQUNuQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsT0FBTztnQkFDN0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCO2dCQUM5RCxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTzthQUNwQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQTNJRCx3REEySUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpYW0gZnJvbSBcIkBhd3MtY2RrL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgZmlyZWhvc2UgZnJvbSBcIkBhd3MtY2RrL2F3cy1raW5lc2lzZmlyZWhvc2VcIlxuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiQGF3cy1jZGsvYXdzLWxvZ3NcIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcIkBhd3MtY2RrL2F3cy1zM1wiXG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcyB9IGZyb20gXCJAYXdzLWNkay9hd3MtczNcIlxuaW1wb3J0ICogYXMgc2VjcmV0c21hbmFnZXIgZnJvbSBcIkBhd3MtY2RrL2F3cy1zZWNyZXRzbWFuYWdlclwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcIkBhd3MtY2RrL2NvcmVcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEtpbmVzaXNUb0RhdGFkb2dTdHJlYW1Qcm9wcyB7XG4gIC8qKlxuICAgKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoZXJlIHlvdXIgRGF0YWRvZyBBUEkga2V5IGlzIHNhdmVkLlxuICAgKlxuICAgKiBUaGUgc2VjcmV0IG11c3QgYmUgYSBKU09OIG9iamVjdCBvbiB0aGUgZm9ybWF0IHsgXCJ2YWx1ZVwiOiBcIlNFQ1JFVFwiIH1cbiAgICpcbiAgICovXG4gIGRhdGFkb2dBcGlLZXlTZWNyZXROYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqXG4gICAqIFRoZSBDbG91ZFdhdGNoIGxvZyBncm91cHMgZnJvbSB5b3UgYXJlIHN0cmVhbWluZyB0byBEYXRhZG9nXG4gICAqXG4gICAqL1xuICBsb2dHcm91cHM6IGxvZ3MuSUxvZ0dyb3VwW11cbn1cblxuLyoqXG4gKlxuICogRm9yd2FyZHMgbG9ncyBmcm9tIGxvZy1ncm91cHMgaW4gQ2xvdWRXYXRjaCB0byBhIERhdGFkb2cgYWNjb3VudC5cbiAqIFRoZSBsb2dzIGFyZSBkZWxpdmVyZWQgdGhyb3VnaCBhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbSwgd2hpY2ggaXMgYmVpbmcgc3Vic2NyaWJlZCB0byB0aGUgbG9nLWdyb3VwcyBpbiBDbG91ZFdhdGNoLlxuICpcbiAqIEBhdXRob3IgU3RlaW4tQWFnZVxuICovXG5leHBvcnQgY2xhc3MgS2luZXNpc1RvRGF0YWRvZ1N0cmVhbSBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY2RrLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBLaW5lc2lzVG9EYXRhZG9nU3RyZWFtUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IGRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBcIkRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXBcIixcbiAgICApXG5cbiAgICBjb25zdCBkZWxpdmVyeVN0cmVhbUxvZ1N0cmVhbSA9IG5ldyBsb2dzLkxvZ1N0cmVhbShcbiAgICAgIHRoaXMsXG4gICAgICBcIkRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtXCIsXG4gICAgICB7XG4gICAgICAgIGxvZ0dyb3VwOiBkZWxpdmVyeVN0cmVhbUxvZ0dyb3VwLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBmYWlsZWREYXRhQnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCBcIkZhaWxlZERhdGFCdWNrZXRcIiwge1xuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICB9KVxuXG4gICAgY29uc3QgY2xvdWRXYXRjaExvZ3NSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2xvdWRXYXRjaExvZ3NSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFxuICAgICAgICBgbG9ncy4ke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgKSxcbiAgICB9KVxuXG4gICAgY29uc3QgZmlyZWhvc2VMb2dzUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkZpcmVob3NlTG9nc1JvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJmaXJlaG9zZS5hbWF6b25hd3MuY29tXCIpLFxuICAgIH0pXG5cbiAgICBjb25zdCBkYXRhZG9nRGVsaXZlcnlTdHJlYW0gPSBuZXcgZmlyZWhvc2UuQ2ZuRGVsaXZlcnlTdHJlYW0oXG4gICAgICB0aGlzLFxuICAgICAgXCJEZWxpdmVyeVN0cmVhbVwiLFxuICAgICAge1xuICAgICAgICBkZWxpdmVyeVN0cmVhbVR5cGU6IFwiRGlyZWN0UHV0XCIsXG4gICAgICAgIGh0dHBFbmRwb2ludERlc3RpbmF0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIHJvbGVBcm46IGZpcmVob3NlTG9nc1JvbGUucm9sZUFybixcbiAgICAgICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2F3cy1raW5lc2lzLWh0dHAtaW50YWtlLmxvZ3MuZGF0YWRvZ2hxLmV1L3YxL2lucHV0XCIsXG4gICAgICAgICAgICBhY2Nlc3NLZXk6IHNlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKFxuICAgICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgICAgXCJEYXRhZG9nQXBpS2V5XCIsXG4gICAgICAgICAgICAgIHByb3BzLmRhdGFkb2dBcGlLZXlTZWNyZXROYW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc2VjcmV0VmFsdWVGcm9tSnNvbihcInZhbHVlXCIpXG4gICAgICAgICAgICAgIC50b1N0cmluZygpLFxuICAgICAgICAgICAgbmFtZTogXCJkYXRhZG9nLWxvZ3MtZW5kcG9pbnRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVlc3RDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBjb250ZW50RW5jb2Rpbmc6IFwiR1pJUFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ2dpbmdPcHRpb25zOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBkZWxpdmVyeVN0cmVhbUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgICAgIGxvZ1N0cmVhbU5hbWU6IGRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtLmxvZ1N0cmVhbU5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBidWZmZXJpbmdIaW50czoge1xuICAgICAgICAgICAgaW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICAgICAgICAgICAgc2l6ZUluTUJzOiA0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmV0cnlPcHRpb25zOiB7XG4gICAgICAgICAgICBkdXJhdGlvbkluU2Vjb25kczogNjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzM0JhY2t1cE1vZGU6IFwiRmFpbGVkRGF0YU9ubHlcIixcbiAgICAgICAgICBzM0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIGJ1Y2tldEFybjogZmFpbGVkRGF0YUJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgICBjb21wcmVzc2lvbkZvcm1hdDogXCJVTkNPTVBSRVNTRURcIixcbiAgICAgICAgICAgIHJvbGVBcm46IGZpcmVob3NlTG9nc1JvbGUucm9sZUFybixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG5cbiAgICBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkNsb3VkV2F0Y2hMb2dzUG9saWN5XCIsIHtcbiAgICAgIGRvY3VtZW50OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcImZpcmVob3NlOlB1dFJlY29yZFwiLCBcImZpcmVob3NlOlB1dFJlY29yZEJhdGNoXCJdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbZGF0YWRvZ0RlbGl2ZXJ5U3RyZWFtLmF0dHJBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgICByb2xlczogW2Nsb3VkV2F0Y2hMb2dzUm9sZV0sXG4gICAgfSlcblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiRmlyZWhvc2VMb2dzUG9saWN5XCIsIHtcbiAgICAgIGRvY3VtZW50OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJzMzpBYm9ydE11bHRpcGFydFVwbG9hZFwiLFxuICAgICAgICAgICAgICBcInMzOkdldEJ1Y2tldExvY2F0aW9uXCIsXG4gICAgICAgICAgICAgIFwiczM6R2V0T2JqZWN0XCIsXG4gICAgICAgICAgICAgIFwiczM6TGlzdEJ1Y2tldFwiLFxuICAgICAgICAgICAgICBcInMzOkxpc3RCdWNrZXRNdWx0aXBhcnRVcGxvYWRzXCIsXG4gICAgICAgICAgICAgIFwiczM6UHV0T2JqZWN0XCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIGZhaWxlZERhdGFCdWNrZXQuYnVja2V0QXJuLFxuICAgICAgICAgICAgICBgJHtmYWlsZWREYXRhQnVja2V0LmJ1Y2tldEFybn0vKmAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcImxvZ3M6UHV0TG9nRXZlbnRzXCJdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtjZGsuU3RhY2sub2YodGhpcykucmVnaW9ufToke1xuICAgICAgICAgICAgICAgIGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgICAgICAgICAgIH06bG9nLWdyb3VwOiR7ZGVsaXZlcnlTdHJlYW1Mb2dHcm91cC5sb2dHcm91cE5hbWV9OmxvZy1zdHJlYW06JHtcbiAgICAgICAgICAgICAgICBkZWxpdmVyeVN0cmVhbUxvZ1N0cmVhbS5sb2dTdHJlYW1OYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwia2luZXNpczpEZXNjcmliZVN0cmVhbVwiLFxuICAgICAgICAgICAgICBcImtpbmVzaXM6R2V0U2hhcmRJdGVyYXRvclwiLFxuICAgICAgICAgICAgICBcImtpbmVzaXM6R2V0UmVjb3Jkc1wiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW2RhdGFkb2dEZWxpdmVyeVN0cmVhbS5hdHRyQXJuXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICAgcm9sZXM6IFtmaXJlaG9zZUxvZ3NSb2xlXSxcbiAgICB9KVxuXG4gICAgcHJvcHMubG9nR3JvdXBzLmZvckVhY2goKGxvZ0dyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgbmV3IGxvZ3MuQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyKHRoaXMsIGBTdWJzY3JpcHRpb25GaWx0ZXIke2luZGV4fWAsIHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBsb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIGRlc3RpbmF0aW9uQXJuOiBkYXRhZG9nRGVsaXZlcnlTdHJlYW0uYXR0ckFybixcbiAgICAgICAgZmlsdGVyUGF0dGVybjogbG9ncy5GaWx0ZXJQYXR0ZXJuLmFsbEV2ZW50cygpLmxvZ1BhdHRlcm5TdHJpbmcsXG4gICAgICAgIHJvbGVBcm46IGNsb3VkV2F0Y2hMb2dzUm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liflig/cdk",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.54.0-alpha.1",
|
|
4
|
+
"description": "CDK library for Liflig",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/capralifecycle/liflig-cdk"
|
|
@@ -34,48 +34,49 @@
|
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@aws-cdk/assert": "1.
|
|
38
|
-
"@aws-cdk/aws-certificatemanager": "1.
|
|
39
|
-
"@aws-cdk/aws-cloudfront": "1.
|
|
40
|
-
"@aws-cdk/aws-cloudfront-origins": "1.
|
|
41
|
-
"@aws-cdk/aws-cloudwatch": "1.
|
|
42
|
-
"@aws-cdk/aws-cloudwatch-actions": "1.
|
|
43
|
-
"@aws-cdk/aws-codebuild": "1.
|
|
44
|
-
"@aws-cdk/aws-codepipeline": "1.
|
|
45
|
-
"@aws-cdk/aws-codepipeline-actions": "1.
|
|
46
|
-
"@aws-cdk/aws-ecs": "1.
|
|
47
|
-
"@aws-cdk/aws-events-targets": "1.
|
|
48
|
-
"@aws-cdk/aws-iam": "1.
|
|
49
|
-
"@aws-cdk/aws-lambda": "1.
|
|
50
|
-
"@aws-cdk/aws-
|
|
51
|
-
"@aws-cdk/aws-
|
|
52
|
-
"@aws-cdk/aws-
|
|
53
|
-
"@aws-cdk/aws-route53
|
|
54
|
-
"@aws-cdk/aws-
|
|
55
|
-
"@aws-cdk/aws-
|
|
56
|
-
"@aws-cdk/aws-
|
|
57
|
-
"@aws-cdk/aws-
|
|
58
|
-
"@aws-cdk/aws-stepfunctions
|
|
59
|
-
"@aws-cdk/
|
|
60
|
-
"@aws-cdk/
|
|
61
|
-
"@aws-cdk/
|
|
37
|
+
"@aws-cdk/assert": "1.139.0",
|
|
38
|
+
"@aws-cdk/aws-certificatemanager": "1.139.0",
|
|
39
|
+
"@aws-cdk/aws-cloudfront": "1.139.0",
|
|
40
|
+
"@aws-cdk/aws-cloudfront-origins": "1.139.0",
|
|
41
|
+
"@aws-cdk/aws-cloudwatch": "1.139.0",
|
|
42
|
+
"@aws-cdk/aws-cloudwatch-actions": "1.139.0",
|
|
43
|
+
"@aws-cdk/aws-codebuild": "1.139.0",
|
|
44
|
+
"@aws-cdk/aws-codepipeline": "1.139.0",
|
|
45
|
+
"@aws-cdk/aws-codepipeline-actions": "1.139.0",
|
|
46
|
+
"@aws-cdk/aws-ecs": "1.139.0",
|
|
47
|
+
"@aws-cdk/aws-events-targets": "1.139.0",
|
|
48
|
+
"@aws-cdk/aws-iam": "1.139.0",
|
|
49
|
+
"@aws-cdk/aws-lambda": "1.139.0",
|
|
50
|
+
"@aws-cdk/aws-lambda-event-sources": "1.139.0",
|
|
51
|
+
"@aws-cdk/aws-logs": "1.139.0",
|
|
52
|
+
"@aws-cdk/aws-rds": "1.139.0",
|
|
53
|
+
"@aws-cdk/aws-route53": "1.139.0",
|
|
54
|
+
"@aws-cdk/aws-route53-targets": "1.139.0",
|
|
55
|
+
"@aws-cdk/aws-s3": "1.139.0",
|
|
56
|
+
"@aws-cdk/aws-ses": "1.139.0",
|
|
57
|
+
"@aws-cdk/aws-sns": "1.139.0",
|
|
58
|
+
"@aws-cdk/aws-stepfunctions": "1.139.0",
|
|
59
|
+
"@aws-cdk/aws-stepfunctions-tasks": "1.139.0",
|
|
60
|
+
"@aws-cdk/core": "1.139.0",
|
|
61
|
+
"@aws-cdk/custom-resources": "1.139.0",
|
|
62
|
+
"@aws-cdk/pipelines": "1.139.0",
|
|
62
63
|
"@commitlint/cli": "15.0.0",
|
|
63
64
|
"@commitlint/config-conventional": "15.0.0",
|
|
64
|
-
"@types/aws-lambda": "8.10.
|
|
65
|
-
"@types/jest": "27.0
|
|
66
|
-
"@types/node": "16.11.
|
|
67
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
68
|
-
"@typescript-eslint/parser": "5.
|
|
69
|
-
"aws-cdk": "1.
|
|
70
|
-
"eslint": "8.
|
|
65
|
+
"@types/aws-lambda": "8.10.89",
|
|
66
|
+
"@types/jest": "27.4.0",
|
|
67
|
+
"@types/node": "16.11.19",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "5.9.1",
|
|
69
|
+
"@typescript-eslint/parser": "5.9.1",
|
|
70
|
+
"aws-cdk": "1.139.0",
|
|
71
|
+
"eslint": "8.7.0",
|
|
71
72
|
"eslint-config-prettier": "8.3.0",
|
|
72
73
|
"eslint-plugin-prettier": "4.0.0",
|
|
73
74
|
"husky": "7.0.4",
|
|
74
|
-
"jest": "27.4.
|
|
75
|
+
"jest": "27.4.7",
|
|
75
76
|
"jest-cdk-snapshot": "1.4.2",
|
|
76
77
|
"prettier": "2.5.1",
|
|
77
|
-
"semantic-release": "
|
|
78
|
-
"ts-jest": "27.1.
|
|
78
|
+
"semantic-release": "19.0.0",
|
|
79
|
+
"ts-jest": "27.1.3",
|
|
79
80
|
"ts-node": "10.4.0",
|
|
80
81
|
"typescript": "4.5.4"
|
|
81
82
|
},
|
|
@@ -104,6 +105,7 @@
|
|
|
104
105
|
"@aws-cdk/aws-events-targets": "^1.108.1",
|
|
105
106
|
"@aws-cdk/aws-iam": "^1.108.1",
|
|
106
107
|
"@aws-cdk/aws-lambda": "^1.108.1",
|
|
108
|
+
"@aws-cdk/aws-lambda-event-sources": "^1.108.1",
|
|
107
109
|
"@aws-cdk/aws-logs": "^1.108.1",
|
|
108
110
|
"@aws-cdk/aws-rds": "^1.108.1",
|
|
109
111
|
"@aws-cdk/aws-route53": "^1.108.1",
|