terraconstructs 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/.jsii +4533 -3
  2. package/lib/aws/arn.js +1 -1
  3. package/lib/aws/aws-construct.js +1 -1
  4. package/lib/aws/aws-stack.js +1 -1
  5. package/lib/aws/aws-tags.js +2 -2
  6. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  7. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  8. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  9. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  10. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  11. package/lib/aws/cloudwatch/alarm.js +1 -1
  12. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  13. package/lib/aws/cloudwatch/dashboard.js +1 -1
  14. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  15. package/lib/aws/cloudwatch/graph.js +8 -8
  16. package/lib/aws/cloudwatch/layout.js +3 -3
  17. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  18. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  19. package/lib/aws/cloudwatch/log-group.js +1 -1
  20. package/lib/aws/cloudwatch/log-query.js +1 -1
  21. package/lib/aws/cloudwatch/log-stream.js +1 -1
  22. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  23. package/lib/aws/cloudwatch/metric.js +2 -2
  24. package/lib/aws/cloudwatch/pattern.js +3 -3
  25. package/lib/aws/cloudwatch/policy.js +1 -1
  26. package/lib/aws/cloudwatch/query-definition.js +2 -2
  27. package/lib/aws/cloudwatch/stats.js +1 -1
  28. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  29. package/lib/aws/cloudwatch/text.js +1 -1
  30. package/lib/aws/cloudwatch/variable.js +3 -3
  31. package/lib/aws/cloudwatch/widget.js +1 -1
  32. package/lib/aws/compute/activity.js +1 -1
  33. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  34. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  35. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  36. package/lib/aws/compute/alb/application-listener.js +1 -1
  37. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  38. package/lib/aws/compute/alb/application-target-group.js +1 -1
  39. package/lib/aws/compute/alb/conditions.js +1 -1
  40. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  41. package/lib/aws/compute/alb/trust-store.js +1 -1
  42. package/lib/aws/compute/architecture.js +1 -1
  43. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  44. package/lib/aws/compute/bastion-host.js +1 -1
  45. package/lib/aws/compute/chain.js +1 -1
  46. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  47. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  48. package/lib/aws/compute/client-vpn-route.js +2 -2
  49. package/lib/aws/compute/condition.js +1 -1
  50. package/lib/aws/compute/connections.js +1 -1
  51. package/lib/aws/compute/event-invoke-config.js +1 -1
  52. package/lib/aws/compute/event-source-filter.js +2 -2
  53. package/lib/aws/compute/event-source-mapping.js +1 -1
  54. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  55. package/lib/aws/compute/event-sources/s3.js +1 -1
  56. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  57. package/lib/aws/compute/event-sources/sqs.js +1 -1
  58. package/lib/aws/compute/fields.js +4 -4
  59. package/lib/aws/compute/function-alias.js +1 -1
  60. package/lib/aws/compute/function-base.js +2 -2
  61. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  62. package/lib/aws/compute/function-destinations/function.js +1 -1
  63. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  64. package/lib/aws/compute/function-nodejs.js +1 -1
  65. package/lib/aws/compute/function-url.js +1 -1
  66. package/lib/aws/compute/function.js +1 -1
  67. package/lib/aws/compute/instance-types.js +1 -1
  68. package/lib/aws/compute/instance.js +1 -1
  69. package/lib/aws/compute/ip-addresses.js +2 -2
  70. package/lib/aws/compute/ipam.js +1 -1
  71. package/lib/aws/compute/key-pair.js +1 -1
  72. package/lib/aws/compute/launch-template.js +2 -2
  73. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  74. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  75. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  76. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  77. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  78. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  79. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  80. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  81. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  82. package/lib/aws/compute/load-balancer.js +3 -3
  83. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  84. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  85. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  86. package/lib/aws/compute/machine-image/common.js +1 -1
  87. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  88. package/lib/aws/compute/nat.js +5 -5
  89. package/lib/aws/compute/network-acl-types.js +2 -2
  90. package/lib/aws/compute/network-acl.js +3 -3
  91. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  92. package/lib/aws/compute/nlb/network-listener.js +1 -1
  93. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  94. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  95. package/lib/aws/compute/peer.js +1 -1
  96. package/lib/aws/compute/placement-group.js +1 -1
  97. package/lib/aws/compute/port.js +1 -1
  98. package/lib/aws/compute/prefix-list.js +1 -1
  99. package/lib/aws/compute/route.js +8 -8
  100. package/lib/aws/compute/security-group.js +1 -1
  101. package/lib/aws/compute/state-graph.js +1 -1
  102. package/lib/aws/compute/state-machine-fragment.js +1 -1
  103. package/lib/aws/compute/state-machine.js +4 -4
  104. package/lib/aws/compute/states/choice.js +1 -1
  105. package/lib/aws/compute/states/custom-state.js +1 -1
  106. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  107. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  108. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  109. package/lib/aws/compute/states/distributed-map.js +1 -1
  110. package/lib/aws/compute/states/fail.js +1 -1
  111. package/lib/aws/compute/states/map-base.js +1 -1
  112. package/lib/aws/compute/states/map.js +1 -1
  113. package/lib/aws/compute/states/parallel.js +1 -1
  114. package/lib/aws/compute/states/pass.js +2 -2
  115. package/lib/aws/compute/states/state.js +1 -1
  116. package/lib/aws/compute/states/succeed.js +1 -1
  117. package/lib/aws/compute/states/task-base.js +2 -2
  118. package/lib/aws/compute/states/task.js +1 -1
  119. package/lib/aws/compute/states/wait.js +2 -2
  120. package/lib/aws/compute/subnet-v2.js +2 -2
  121. package/lib/aws/compute/subnet.js +1 -1
  122. package/lib/aws/compute/task-credentials.js +1 -1
  123. package/lib/aws/compute/task-input.js +1 -1
  124. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  125. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  126. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  127. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  128. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  129. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  130. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  131. package/lib/aws/compute/types.js +1 -1
  132. package/lib/aws/compute/user-data.js +3 -3
  133. package/lib/aws/compute/volume.js +2 -2
  134. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  135. package/lib/aws/compute/vpc-endpoint.js +6 -6
  136. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  137. package/lib/aws/compute/vpc-v2-base.js +1 -1
  138. package/lib/aws/compute/vpc-v2.js +2 -2
  139. package/lib/aws/compute/vpc.js +4 -4
  140. package/lib/aws/compute/vpn.js +3 -3
  141. package/lib/aws/edge/certificate.js +1 -1
  142. package/lib/aws/edge/distribution.js +3 -3
  143. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  144. package/lib/aws/edge/dns-record.js +13 -13
  145. package/lib/aws/edge/dns-zone.js +1 -1
  146. package/lib/aws/edge/function.js +2 -2
  147. package/lib/aws/edge/key-value-store.js +4 -4
  148. package/lib/aws/edge/origin.js +3 -3
  149. package/lib/aws/edge/response-headers-policy.js +1 -1
  150. package/lib/aws/encryption/alias.js +1 -1
  151. package/lib/aws/encryption/key.js +1 -1
  152. package/lib/aws/encryption/via-service-principal.js +1 -1
  153. package/lib/aws/iam/grant.js +2 -2
  154. package/lib/aws/iam/group.js +1 -1
  155. package/lib/aws/iam/instance-profile.js +1 -1
  156. package/lib/aws/iam/managed-policy.js +1 -1
  157. package/lib/aws/iam/oidc-provider.js +1 -1
  158. package/lib/aws/iam/policy-document.js +1 -1
  159. package/lib/aws/iam/policy-statement.js +1 -1
  160. package/lib/aws/iam/policy.js +1 -1
  161. package/lib/aws/iam/principals.js +20 -20
  162. package/lib/aws/iam/role.js +1 -1
  163. package/lib/aws/iam/saml-provider.js +2 -2
  164. package/lib/aws/iam/unknown-principal.js +1 -1
  165. package/lib/aws/iam/user.js +1 -1
  166. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  167. package/lib/aws/network/subnet-group.js +3 -3
  168. package/lib/aws/network/subnet.js +4 -4
  169. package/lib/aws/notify/archive.js +1 -1
  170. package/lib/aws/notify/connection.js +3 -3
  171. package/lib/aws/notify/delivery-policy.d.ts +114 -0
  172. package/lib/aws/notify/delivery-policy.js +27 -0
  173. package/lib/aws/notify/event-bus.js +3 -3
  174. package/lib/aws/notify/event-pattern.js +1 -1
  175. package/lib/aws/notify/index.d.ts +11 -0
  176. package/lib/aws/notify/index.js +14 -1
  177. package/lib/aws/notify/input.js +2 -2
  178. package/lib/aws/notify/kinesis-stream.js +1 -1
  179. package/lib/aws/notify/notification-rule-source.d.ts +20 -0
  180. package/lib/aws/notify/notification-rule-source.js +4 -0
  181. package/lib/aws/notify/notification-rule-target.d.ts +24 -0
  182. package/lib/aws/notify/notification-rule-target.js +4 -0
  183. package/lib/aws/notify/notification-rule.d.ts +123 -0
  184. package/lib/aws/notify/notification-rule.js +129 -0
  185. package/lib/aws/notify/policy.d.ts +56 -0
  186. package/lib/aws/notify/policy.js +83 -0
  187. package/lib/aws/notify/queue-policy.js +1 -1
  188. package/lib/aws/notify/queue.js +1 -1
  189. package/lib/aws/notify/resource-policy.js +1 -1
  190. package/lib/aws/notify/rule.js +1 -1
  191. package/lib/aws/notify/schedule.js +1 -1
  192. package/lib/aws/notify/sns-augmentations.generated.d.ts +125 -0
  193. package/lib/aws/notify/sns-augmentations.generated.js +71 -0
  194. package/lib/aws/notify/sns-canned-metrics.generated.d.ts +33 -0
  195. package/lib/aws/notify/sns-canned-metrics.generated.js +47 -0
  196. package/lib/aws/notify/subscriber.d.ts +44 -0
  197. package/lib/aws/notify/subscriber.js +4 -0
  198. package/lib/aws/notify/subscription-filter.d.ts +129 -0
  199. package/lib/aws/notify/subscription-filter.js +105 -0
  200. package/lib/aws/notify/subscription.d.ts +219 -0
  201. package/lib/aws/notify/subscription.js +357 -0
  202. package/lib/aws/notify/targets/event-bus.js +1 -1
  203. package/lib/aws/notify/targets/function.js +1 -1
  204. package/lib/aws/notify/targets/log-group.js +2 -2
  205. package/lib/aws/notify/targets/sqs.js +1 -1
  206. package/lib/aws/notify/targets/state-machine.js +1 -1
  207. package/lib/aws/notify/topic-base.d.ts +155 -0
  208. package/lib/aws/notify/topic-base.js +175 -0
  209. package/lib/aws/notify/topic.d.ts +222 -0
  210. package/lib/aws/notify/topic.js +219 -0
  211. package/lib/aws/storage/bucket-notifications.js +1 -1
  212. package/lib/aws/storage/bucket-policy.js +1 -1
  213. package/lib/aws/storage/bucket-source.js +1 -1
  214. package/lib/aws/storage/bucket.js +2 -2
  215. package/lib/aws/storage/notification-targets/function.js +1 -1
  216. package/lib/aws/storage/notification-targets/queue.js +1 -1
  217. package/lib/aws/storage/origin-access-identity.js +1 -1
  218. package/lib/aws/storage/parameter.js +2 -2
  219. package/lib/construct-base.js +2 -2
  220. package/lib/duration.js +1 -1
  221. package/lib/expiration.js +1 -1
  222. package/lib/size.js +1 -1
  223. package/lib/stack-base.js +1 -1
  224. package/lib/terra-func.js +1 -1
  225. package/package.json +1 -1
@@ -0,0 +1,125 @@
1
+ import * as cw from "../cloudwatch";
2
+ declare module "./topic-base" {
3
+ interface ITopic {
4
+ /**
5
+ * Return the given named metric for this Topic
6
+ */
7
+ metric(metricName: string, props?: cw.MetricOptions): cw.Metric;
8
+ /**
9
+ * Metric for the size of messages published through this topic
10
+ *
11
+ * Average over 5 minutes
12
+ */
13
+ metricPublishSize(props?: cw.MetricOptions): cw.Metric;
14
+ /**
15
+ * The number of messages published to your Amazon SNS topics.
16
+ *
17
+ * Sum over 5 minutes
18
+ */
19
+ metricNumberOfMessagesPublished(props?: cw.MetricOptions): cw.Metric;
20
+ /**
21
+ * The number of messages successfully delivered from your Amazon SNS topics to subscribing endpoints.
22
+ *
23
+ * Sum over 5 minutes
24
+ */
25
+ metricNumberOfNotificationsDelivered(props?: cw.MetricOptions): cw.Metric;
26
+ /**
27
+ * The number of messages that Amazon SNS failed to deliver.
28
+ *
29
+ * Sum over 5 minutes
30
+ */
31
+ metricNumberOfNotificationsFailed(props?: cw.MetricOptions): cw.Metric;
32
+ /**
33
+ * The number of messages that were rejected by subscription filter policies.
34
+ *
35
+ * Sum over 5 minutes
36
+ */
37
+ metricNumberOfNotificationsFilteredOut(props?: cw.MetricOptions): cw.Metric;
38
+ /**
39
+ * The number of messages that were rejected by subscription filter policies because the messages have no attributes.
40
+ *
41
+ * Sum over 5 minutes
42
+ */
43
+ metricNumberOfNotificationsFilteredOutNoMessageAttributes(props?: cw.MetricOptions): cw.Metric;
44
+ /**
45
+ * The number of messages that were rejected by subscription filter policies because the messages' attributes are invalid
46
+ *
47
+ * Sum over 5 minutes
48
+ */
49
+ metricNumberOfNotificationsFilteredOutInvalidAttributes(props?: cw.MetricOptions): cw.Metric;
50
+ /**
51
+ * The charges you have accrued since the start of the current calendar month for sending SMS messages.
52
+ *
53
+ * Maximum over 5 minutes
54
+ */
55
+ metricSMSMonthToDateSpentUSD(props?: cw.MetricOptions): cw.Metric;
56
+ /**
57
+ * The rate of successful SMS message deliveries.
58
+ *
59
+ * Sum over 5 minutes
60
+ */
61
+ metricSMSSuccessRate(props?: cw.MetricOptions): cw.Metric;
62
+ }
63
+ }
64
+ declare module "./topic-base" {
65
+ interface TopicBase {
66
+ /**
67
+ * Return the given named metric for this Topic
68
+ */
69
+ metric(metricName: string, props?: cw.MetricOptions): cw.Metric;
70
+ /**
71
+ * Metric for the size of messages published through this topic
72
+ *
73
+ * Average over 5 minutes
74
+ */
75
+ metricPublishSize(props?: cw.MetricOptions): cw.Metric;
76
+ /**
77
+ * The number of messages published to your Amazon SNS topics.
78
+ *
79
+ * Sum over 5 minutes
80
+ */
81
+ metricNumberOfMessagesPublished(props?: cw.MetricOptions): cw.Metric;
82
+ /**
83
+ * The number of messages successfully delivered from your Amazon SNS topics to subscribing endpoints.
84
+ *
85
+ * Sum over 5 minutes
86
+ */
87
+ metricNumberOfNotificationsDelivered(props?: cw.MetricOptions): cw.Metric;
88
+ /**
89
+ * The number of messages that Amazon SNS failed to deliver.
90
+ *
91
+ * Sum over 5 minutes
92
+ */
93
+ metricNumberOfNotificationsFailed(props?: cw.MetricOptions): cw.Metric;
94
+ /**
95
+ * The number of messages that were rejected by subscription filter policies.
96
+ *
97
+ * Sum over 5 minutes
98
+ */
99
+ metricNumberOfNotificationsFilteredOut(props?: cw.MetricOptions): cw.Metric;
100
+ /**
101
+ * The number of messages that were rejected by subscription filter policies because the messages have no attributes.
102
+ *
103
+ * Sum over 5 minutes
104
+ */
105
+ metricNumberOfNotificationsFilteredOutNoMessageAttributes(props?: cw.MetricOptions): cw.Metric;
106
+ /**
107
+ * The number of messages that were rejected by subscription filter policies because the messages' attributes are invalid
108
+ *
109
+ * Sum over 5 minutes
110
+ */
111
+ metricNumberOfNotificationsFilteredOutInvalidAttributes(props?: cw.MetricOptions): cw.Metric;
112
+ /**
113
+ * The charges you have accrued since the start of the current calendar month for sending SMS messages.
114
+ *
115
+ * Maximum over 5 minutes
116
+ */
117
+ metricSMSMonthToDateSpentUSD(props?: cw.MetricOptions): cw.Metric;
118
+ /**
119
+ * The rate of successful SMS message deliveries.
120
+ *
121
+ * Sum over 5 minutes
122
+ */
123
+ metricSMSSuccessRate(props?: cw.MetricOptions): cw.Metric;
124
+ }
125
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Copyright 2012-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ /* eslint-disable prettier/prettier,max-len */
5
+ const cw = require("../cloudwatch");
6
+ const topic_base_1 = require("./topic-base");
7
+ topic_base_1.TopicBase.prototype.metric = function (metricName, props) {
8
+ return new cw.Metric({
9
+ "namespace": "AWS/SNS",
10
+ "metricName": metricName,
11
+ "dimensionsMap": {
12
+ "TopicName": this.topicName
13
+ },
14
+ ...props
15
+ }).attachTo(this);
16
+ };
17
+ topic_base_1.TopicBase.prototype.metricPublishSize = function (props) {
18
+ return this.metric("PublishSize", {
19
+ "statistic": "Average",
20
+ ...props
21
+ });
22
+ };
23
+ topic_base_1.TopicBase.prototype.metricNumberOfMessagesPublished = function (props) {
24
+ return this.metric("NumberOfMessagesPublished", {
25
+ "statistic": "Sum",
26
+ ...props
27
+ });
28
+ };
29
+ topic_base_1.TopicBase.prototype.metricNumberOfNotificationsDelivered = function (props) {
30
+ return this.metric("NumberOfNotificationsDelivered", {
31
+ "statistic": "Sum",
32
+ ...props
33
+ });
34
+ };
35
+ topic_base_1.TopicBase.prototype.metricNumberOfNotificationsFailed = function (props) {
36
+ return this.metric("NumberOfNotificationsFailed", {
37
+ "statistic": "Sum",
38
+ ...props
39
+ });
40
+ };
41
+ topic_base_1.TopicBase.prototype.metricNumberOfNotificationsFilteredOut = function (props) {
42
+ return this.metric("NumberOfNotificationsFilteredOut", {
43
+ "statistic": "Sum",
44
+ ...props
45
+ });
46
+ };
47
+ topic_base_1.TopicBase.prototype.metricNumberOfNotificationsFilteredOutNoMessageAttributes = function (props) {
48
+ return this.metric("NumberOfNotificationsFilteredOut-NoMessageAttributes", {
49
+ "statistic": "Sum",
50
+ ...props
51
+ });
52
+ };
53
+ topic_base_1.TopicBase.prototype.metricNumberOfNotificationsFilteredOutInvalidAttributes = function (props) {
54
+ return this.metric("NumberOfNotificationsFilteredOut-InvalidAttributes", {
55
+ "statistic": "Sum",
56
+ ...props
57
+ });
58
+ };
59
+ topic_base_1.TopicBase.prototype.metricSMSMonthToDateSpentUSD = function (props) {
60
+ return this.metric("SMSMonthToDateSpentUSD", {
61
+ "statistic": "Maximum",
62
+ ...props
63
+ });
64
+ };
65
+ topic_base_1.TopicBase.prototype.metricSMSSuccessRate = function (props) {
66
+ return this.metric("SMSSuccessRate", {
67
+ "statistic": "Sum",
68
+ ...props
69
+ });
70
+ };
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLWF1Z21lbnRhdGlvbnMuZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvc25zLWF1Z21lbnRhdGlvbnMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0VBQStFO0FBQy9FLDhDQUE4QztBQUM5QyxvQ0FBb0M7QUFDcEMsNkNBQXlDO0FBb0p6QyxzQkFBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBUyxVQUFrQixFQUFFLEtBQXdCO0lBQ2hGLE9BQU8sSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ25CLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFlBQVksRUFBRSxVQUFVO1FBQ3hCLGVBQWUsRUFBRTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUztTQUM1QjtRQUNELEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0Ysc0JBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBUyxLQUF3QjtJQUN2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1FBQ2hDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLCtCQUErQixHQUFHLFVBQVMsS0FBd0I7SUFDckYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFO1FBQzlDLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLG9DQUFvQyxHQUFHLFVBQVMsS0FBd0I7SUFDMUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdDQUFnQyxFQUFFO1FBQ25ELFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLGlDQUFpQyxHQUFHLFVBQVMsS0FBd0I7SUFDdkYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUE2QixFQUFFO1FBQ2hELFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxHQUFHLFVBQVMsS0FBd0I7SUFDNUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JELFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLHlEQUF5RCxHQUFHLFVBQVMsS0FBd0I7SUFDL0csT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHNEQUFzRCxFQUFFO1FBQ3pFLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLHVEQUF1RCxHQUFHLFVBQVMsS0FBd0I7SUFDN0csT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG9EQUFvRCxFQUFFO1FBQ3ZFLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLDRCQUE0QixHQUFHLFVBQVMsS0FBd0I7SUFDbEYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFO1FBQzNDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGLHNCQUFTLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFVBQVMsS0FBd0I7SUFDMUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1FBQ25DLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLEdBQUcsS0FBSztLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDEyLTIwMjQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8qIGVzbGludC1kaXNhYmxlIHByZXR0aWVyL3ByZXR0aWVyLG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGN3IGZyb20gXCIuLi9jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBUb3BpY0Jhc2UgfSBmcm9tIFwiLi90b3BpYy1iYXNlXCI7XG5cbmRlY2xhcmUgbW9kdWxlIFwiLi90b3BpYy1iYXNlXCIge1xuICBpbnRlcmZhY2UgSVRvcGljIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBUb3BpY1xuICAgICAqL1xuICAgIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIE1ldHJpYyBmb3IgdGhlIHNpemUgb2YgbWVzc2FnZXMgcHVibGlzaGVkIHRocm91Z2ggdGhpcyB0b3BpY1xuICAgICAqXG4gICAgICogQXZlcmFnZSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY1B1Ymxpc2hTaXplKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgcHVibGlzaGVkIHRvIHlvdXIgQW1hem9uIFNOUyB0b3BpY3MuXG4gICAgICpcbiAgICAgKiBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNOdW1iZXJPZk1lc3NhZ2VzUHVibGlzaGVkKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgc3VjY2Vzc2Z1bGx5IGRlbGl2ZXJlZCBmcm9tIHlvdXIgQW1hem9uIFNOUyB0b3BpY3MgdG8gc3Vic2NyaWJpbmcgZW5kcG9pbnRzLlxuICAgICAqXG4gICAgICogU3VtIG92ZXIgNSBtaW51dGVzXG4gICAgICovXG4gICAgbWV0cmljTnVtYmVyT2ZOb3RpZmljYXRpb25zRGVsaXZlcmVkKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCBBbWF6b24gU05TIGZhaWxlZCB0byBkZWxpdmVyLlxuICAgICAqXG4gICAgICogU3VtIG92ZXIgNSBtaW51dGVzXG4gICAgICovXG4gICAgbWV0cmljTnVtYmVyT2ZOb3RpZmljYXRpb25zRmFpbGVkKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCB3ZXJlIHJlamVjdGVkIGJ5IHN1YnNjcmlwdGlvbiBmaWx0ZXIgcG9saWNpZXMuXG4gICAgICpcbiAgICAgKiBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNGaWx0ZXJlZE91dChwcm9wcz86IGN3Lk1ldHJpY09wdGlvbnMpOiBjdy5NZXRyaWM7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgd2VyZSByZWplY3RlZCBieSBzdWJzY3JpcHRpb24gZmlsdGVyIHBvbGljaWVzIGJlY2F1c2UgdGhlIG1lc3NhZ2VzIGhhdmUgbm8gYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIFN1bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY051bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0Tm9NZXNzYWdlQXR0cmlidXRlcyhwcm9wcz86IGN3Lk1ldHJpY09wdGlvbnMpOiBjdy5NZXRyaWM7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgd2VyZSByZWplY3RlZCBieSBzdWJzY3JpcHRpb24gZmlsdGVyIHBvbGljaWVzIGJlY2F1c2UgdGhlIG1lc3NhZ2VzJyBhdHRyaWJ1dGVzIGFyZSBpbnZhbGlkXG4gICAgICpcbiAgICAgKiBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNGaWx0ZXJlZE91dEludmFsaWRBdHRyaWJ1dGVzKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFyZ2VzIHlvdSBoYXZlIGFjY3J1ZWQgc2luY2UgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoIGZvciBzZW5kaW5nIFNNUyBtZXNzYWdlcy5cbiAgICAgKlxuICAgICAqIE1heGltdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNTTVNNb250aFRvRGF0ZVNwZW50VVNEKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSByYXRlIG9mIHN1Y2Nlc3NmdWwgU01TIG1lc3NhZ2UgZGVsaXZlcmllcy5cbiAgICAgKlxuICAgICAqIFN1bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY1NNU1N1Y2Nlc3NSYXRlKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcbiAgfVxufVxuXG5cblxuZGVjbGFyZSBtb2R1bGUgXCIuL3RvcGljLWJhc2VcIiB7XG4gIGludGVyZmFjZSBUb3BpY0Jhc2Uge1xuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgZ2l2ZW4gbmFtZWQgbWV0cmljIGZvciB0aGlzIFRvcGljXG4gICAgICovXG4gICAgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgcHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogTWV0cmljIGZvciB0aGUgc2l6ZSBvZiBtZXNzYWdlcyBwdWJsaXNoZWQgdGhyb3VnaCB0aGlzIHRvcGljXG4gICAgICpcbiAgICAgKiBBdmVyYWdlIG92ZXIgNSBtaW51dGVzXG4gICAgICovXG4gICAgbWV0cmljUHVibGlzaFNpemUocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtZXNzYWdlcyBwdWJsaXNoZWQgdG8geW91ciBBbWF6b24gU05TIHRvcGljcy5cbiAgICAgKlxuICAgICAqIFN1bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY051bWJlck9mTWVzc2FnZXNQdWJsaXNoZWQocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtZXNzYWdlcyBzdWNjZXNzZnVsbHkgZGVsaXZlcmVkIGZyb20geW91ciBBbWF6b24gU05TIHRvcGljcyB0byBzdWJzY3JpYmluZyBlbmRwb2ludHMuXG4gICAgICpcbiAgICAgKiBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNEZWxpdmVyZWQocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtZXNzYWdlcyB0aGF0IEFtYXpvbiBTTlMgZmFpbGVkIHRvIGRlbGl2ZXIuXG4gICAgICpcbiAgICAgKiBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNGYWlsZWQocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBtZXNzYWdlcyB0aGF0IHdlcmUgcmVqZWN0ZWQgYnkgc3Vic2NyaXB0aW9uIGZpbHRlciBwb2xpY2llcy5cbiAgICAgKlxuICAgICAqIFN1bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY051bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0KHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCB3ZXJlIHJlamVjdGVkIGJ5IHN1YnNjcmlwdGlvbiBmaWx0ZXIgcG9saWNpZXMgYmVjYXVzZSB0aGUgbWVzc2FnZXMgaGF2ZSBubyBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogU3VtIG92ZXIgNSBtaW51dGVzXG4gICAgICovXG4gICAgbWV0cmljTnVtYmVyT2ZOb3RpZmljYXRpb25zRmlsdGVyZWRPdXROb01lc3NhZ2VBdHRyaWJ1dGVzKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucyk6IGN3Lk1ldHJpYztcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCB3ZXJlIHJlamVjdGVkIGJ5IHN1YnNjcmlwdGlvbiBmaWx0ZXIgcG9saWNpZXMgYmVjYXVzZSB0aGUgbWVzc2FnZXMnIGF0dHJpYnV0ZXMgYXJlIGludmFsaWRcbiAgICAgKlxuICAgICAqIFN1bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY051bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0SW52YWxpZEF0dHJpYnV0ZXMocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNoYXJnZXMgeW91IGhhdmUgYWNjcnVlZCBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgY2FsZW5kYXIgbW9udGggZm9yIHNlbmRpbmcgU01TIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogTWF4aW11bSBvdmVyIDUgbWludXRlc1xuICAgICAqL1xuICAgIG1ldHJpY1NNU01vbnRoVG9EYXRlU3BlbnRVU0QocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJhdGUgb2Ygc3VjY2Vzc2Z1bCBTTVMgbWVzc2FnZSBkZWxpdmVyaWVzLlxuICAgICAqXG4gICAgICogU3VtIG92ZXIgNSBtaW51dGVzXG4gICAgICovXG4gICAgbWV0cmljU01TU3VjY2Vzc1JhdGUocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKTogY3cuTWV0cmljO1xuICB9XG59XG5cblRvcGljQmFzZS5wcm90b3R5cGUubWV0cmljID0gZnVuY3Rpb24obWV0cmljTmFtZTogc3RyaW5nLCBwcm9wcz86IGN3Lk1ldHJpY09wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBjdy5NZXRyaWMoe1xuICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL1NOU1wiLFxuICAgIFwibWV0cmljTmFtZVwiOiBtZXRyaWNOYW1lLFxuICAgIFwiZGltZW5zaW9uc01hcFwiOiB7XG4gICAgICBcIlRvcGljTmFtZVwiOiB0aGlzLnRvcGljTmFtZVxuICAgIH0sXG4gICAgLi4ucHJvcHNcbiAgfSkuYXR0YWNoVG8odGhpcyk7XG59O1xuVG9waWNCYXNlLnByb3RvdHlwZS5tZXRyaWNQdWJsaXNoU2l6ZSA9IGZ1bmN0aW9uKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5tZXRyaWMoXCJQdWJsaXNoU2l6ZVwiLCB7XG4gICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCIsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59O1xuVG9waWNCYXNlLnByb3RvdHlwZS5tZXRyaWNOdW1iZXJPZk1lc3NhZ2VzUHVibGlzaGVkID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIk51bWJlck9mTWVzc2FnZXNQdWJsaXNoZWRcIiwge1xuICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCIsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59O1xuVG9waWNCYXNlLnByb3RvdHlwZS5tZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNEZWxpdmVyZWQgPSBmdW5jdGlvbihwcm9wcz86IGN3Lk1ldHJpY09wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMubWV0cmljKFwiTnVtYmVyT2ZOb3RpZmljYXRpb25zRGVsaXZlcmVkXCIsIHtcbiAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufTtcblRvcGljQmFzZS5wcm90b3R5cGUubWV0cmljTnVtYmVyT2ZOb3RpZmljYXRpb25zRmFpbGVkID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIk51bWJlck9mTm90aWZpY2F0aW9uc0ZhaWxlZFwiLCB7XG4gICAgXCJzdGF0aXN0aWNcIjogXCJTdW1cIixcbiAgICAuLi5wcm9wc1xuICB9KTtcbn07XG5Ub3BpY0Jhc2UucHJvdG90eXBlLm1ldHJpY051bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0ID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIk51bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0XCIsIHtcbiAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufTtcblRvcGljQmFzZS5wcm90b3R5cGUubWV0cmljTnVtYmVyT2ZOb3RpZmljYXRpb25zRmlsdGVyZWRPdXROb01lc3NhZ2VBdHRyaWJ1dGVzID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIk51bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0LU5vTWVzc2FnZUF0dHJpYnV0ZXNcIiwge1xuICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCIsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59O1xuVG9waWNCYXNlLnByb3RvdHlwZS5tZXRyaWNOdW1iZXJPZk5vdGlmaWNhdGlvbnNGaWx0ZXJlZE91dEludmFsaWRBdHRyaWJ1dGVzID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIk51bWJlck9mTm90aWZpY2F0aW9uc0ZpbHRlcmVkT3V0LUludmFsaWRBdHRyaWJ1dGVzXCIsIHtcbiAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufTtcblRvcGljQmFzZS5wcm90b3R5cGUubWV0cmljU01TTW9udGhUb0RhdGVTcGVudFVTRCA9IGZ1bmN0aW9uKHByb3BzPzogY3cuTWV0cmljT3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5tZXRyaWMoXCJTTVNNb250aFRvRGF0ZVNwZW50VVNEXCIsIHtcbiAgICBcInN0YXRpc3RpY1wiOiBcIk1heGltdW1cIixcbiAgICAuLi5wcm9wc1xuICB9KTtcbn07XG5Ub3BpY0Jhc2UucHJvdG90eXBlLm1ldHJpY1NNU1N1Y2Nlc3NSYXRlID0gZnVuY3Rpb24ocHJvcHM/OiBjdy5NZXRyaWNPcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLm1ldHJpYyhcIlNNU1N1Y2Nlc3NSYXRlXCIsIHtcbiAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufTsiXX0=
@@ -0,0 +1,33 @@
1
+ export interface MetricWithDims<D> {
2
+ readonly namespace: string;
3
+ readonly metricName: string;
4
+ readonly statistic: string;
5
+ readonly dimensionsMap: D;
6
+ }
7
+ export declare class SNSMetrics {
8
+ static numberOfNotificationsDeliveredSum(dimensions: {
9
+ TopicName: string;
10
+ }): MetricWithDims<{
11
+ TopicName: string;
12
+ }>;
13
+ static numberOfNotificationsFailedSum(dimensions: {
14
+ TopicName: string;
15
+ }): MetricWithDims<{
16
+ TopicName: string;
17
+ }>;
18
+ static numberOfMessagesPublishedSum(dimensions: {
19
+ TopicName: string;
20
+ }): MetricWithDims<{
21
+ TopicName: string;
22
+ }>;
23
+ static publishSizeAverage(dimensions: {
24
+ TopicName: string;
25
+ }): MetricWithDims<{
26
+ TopicName: string;
27
+ }>;
28
+ static smsSuccessRateSum(dimensions: {
29
+ TopicName: string;
30
+ }): MetricWithDims<{
31
+ TopicName: string;
32
+ }>;
33
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SNSMetrics = void 0;
4
+ class SNSMetrics {
5
+ static numberOfNotificationsDeliveredSum(dimensions) {
6
+ return {
7
+ "namespace": "AWS/SNS",
8
+ "metricName": "NumberOfNotificationsDelivered",
9
+ "dimensionsMap": dimensions,
10
+ "statistic": "Sum"
11
+ };
12
+ }
13
+ static numberOfNotificationsFailedSum(dimensions) {
14
+ return {
15
+ "namespace": "AWS/SNS",
16
+ "metricName": "NumberOfNotificationsFailed",
17
+ "dimensionsMap": dimensions,
18
+ "statistic": "Sum"
19
+ };
20
+ }
21
+ static numberOfMessagesPublishedSum(dimensions) {
22
+ return {
23
+ "namespace": "AWS/SNS",
24
+ "metricName": "NumberOfMessagesPublished",
25
+ "dimensionsMap": dimensions,
26
+ "statistic": "Sum"
27
+ };
28
+ }
29
+ static publishSizeAverage(dimensions) {
30
+ return {
31
+ "namespace": "AWS/SNS",
32
+ "metricName": "PublishSize",
33
+ "dimensionsMap": dimensions,
34
+ "statistic": "Average"
35
+ };
36
+ }
37
+ static smsSuccessRateSum(dimensions) {
38
+ return {
39
+ "namespace": "AWS/SNS",
40
+ "metricName": "SMSSuccessRate",
41
+ "dimensionsMap": dimensions,
42
+ "statistic": "Sum"
43
+ };
44
+ }
45
+ }
46
+ exports.SNSMetrics = SNSMetrics;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLWNhbm5lZC1tZXRyaWNzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3Nucy1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsTUFBYSxVQUFVO0lBQ2QsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLFVBQWtDO1FBQ2hGLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixZQUFZLEVBQUUsZ0NBQWdDO1lBQzlDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLDhCQUE4QixDQUFDLFVBQWtDO1FBQzdFLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixZQUFZLEVBQUUsNkJBQTZCO1lBQzNDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUFDLFVBQWtDO1FBQzNFLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixZQUFZLEVBQUUsMkJBQTJCO1lBQ3pDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQWtDO1FBQ2pFLE9BQU87WUFDTCxXQUFXLEVBQUUsU0FBUztZQUN0QixZQUFZLEVBQUUsYUFBYTtZQUMzQixlQUFlLEVBQUUsVUFBVTtZQUMzQixXQUFXLEVBQUUsU0FBUztTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFrQztRQUNoRSxPQUFPO1lBQ0wsV0FBVyxFQUFFLFNBQVM7WUFDdEIsWUFBWSxFQUFFLGdCQUFnQjtZQUM5QixlQUFlLEVBQUUsVUFBVTtZQUMzQixXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBN0NELGdDQTZDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZXR0aWVyL3ByZXR0aWVyLG1heC1sZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljV2l0aERpbXM8RD4ge1xuICByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICByZWFkb25seSBtZXRyaWNOYW1lOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgZGltZW5zaW9uc01hcDogRDtcbn1cblxuZXhwb3J0IGNsYXNzIFNOU01ldHJpY3Mge1xuICBwdWJsaWMgc3RhdGljIG51bWJlck9mTm90aWZpY2F0aW9uc0RlbGl2ZXJlZFN1bShkaW1lbnNpb25zOiB7IFRvcGljTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBUb3BpY05hbWU6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9TTlNcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIk51bWJlck9mTm90aWZpY2F0aW9uc0RlbGl2ZXJlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbnVtYmVyT2ZOb3RpZmljYXRpb25zRmFpbGVkU3VtKGRpbWVuc2lvbnM6IHsgVG9waWNOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFRvcGljTmFtZTogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL1NOU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiTnVtYmVyT2ZOb3RpZmljYXRpb25zRmFpbGVkXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBudW1iZXJPZk1lc3NhZ2VzUHVibGlzaGVkU3VtKGRpbWVuc2lvbnM6IHsgVG9waWNOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFRvcGljTmFtZTogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL1NOU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiTnVtYmVyT2ZNZXNzYWdlc1B1Ymxpc2hlZFwiLFxuICAgICAgXCJkaW1lbnNpb25zTWFwXCI6IGRpbWVuc2lvbnMsXG4gICAgICBcInN0YXRpc3RpY1wiOiBcIlN1bVwiXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcHVibGlzaFNpemVBdmVyYWdlKGRpbWVuc2lvbnM6IHsgVG9waWNOYW1lOiBzdHJpbmc7IH0pOiBNZXRyaWNXaXRoRGltczx7IFRvcGljTmFtZTogc3RyaW5nOyB9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwiQVdTL1NOU1wiLFxuICAgICAgXCJtZXRyaWNOYW1lXCI6IFwiUHVibGlzaFNpemVcIixcbiAgICAgIFwiZGltZW5zaW9uc01hcFwiOiBkaW1lbnNpb25zLFxuICAgICAgXCJzdGF0aXN0aWNcIjogXCJBdmVyYWdlXCJcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzbXNTdWNjZXNzUmF0ZVN1bShkaW1lbnNpb25zOiB7IFRvcGljTmFtZTogc3RyaW5nOyB9KTogTWV0cmljV2l0aERpbXM8eyBUb3BpY05hbWU6IHN0cmluZzsgfT4ge1xuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVzcGFjZVwiOiBcIkFXUy9TTlNcIixcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcIlNNU1N1Y2Nlc3NSYXRlXCIsXG4gICAgICBcImRpbWVuc2lvbnNNYXBcIjogZGltZW5zaW9ucyxcbiAgICAgIFwic3RhdGlzdGljXCI6IFwiU3VtXCJcbiAgICB9O1xuICB9XG59Il19
@@ -0,0 +1,44 @@
1
+ import { Construct, IDependable } from "constructs";
2
+ import { SubscriptionOptions } from "./subscription";
3
+ import { ITopic } from "./topic-base";
4
+ /**
5
+ * Subscription configuration
6
+ */
7
+ export interface TopicSubscriptionConfig extends SubscriptionOptions {
8
+ /**
9
+ * The scope in which to create the SNS subscription resource. Normally you'd
10
+ * want the subscription to be created on the consuming stack because the
11
+ * topic is usually referenced by the consumer's resource policy (e.g. SQS
12
+ * queue policy). Otherwise, it will cause a cyclic reference.
13
+ *
14
+ * If this is undefined, the subscription will be created on the topic's stack.
15
+ *
16
+ * @default - use the topic as the scope of the subscription, in which case `subscriberId` must be defined.
17
+ */
18
+ readonly subscriberScope?: Construct;
19
+ /**
20
+ * The id of the SNS subscription resource created under `scope`. In most
21
+ * cases, it is recommended to use the `uniqueId` of the topic you are
22
+ * subscribing to.
23
+ */
24
+ readonly subscriberId: string;
25
+ /**
26
+ * The resources that need to be created before the subscription can be safely created.
27
+ * For example for SQS subscription, the subscription needs to have a dependency on the SQS queue policy
28
+ * in order for the subscription to successfully deliver messages.
29
+ *
30
+ * @default - empty list
31
+ */
32
+ readonly subscriptionDependency?: IDependable;
33
+ }
34
+ /**
35
+ * Topic subscription
36
+ */
37
+ export interface ITopicSubscription {
38
+ /**
39
+ * Returns a configuration used to subscribe to an SNS topic
40
+ *
41
+ * @param topic topic for which subscription will be configured
42
+ */
43
+ bind(topic: ITopic): TopicSubscriptionConfig;
44
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/a2c633f1e698249496f11338312ab42bd7b1e4f0/packages/aws-cdk-lib/aws-sns/lib/subscriber.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3N1YnNjcmliZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhIQUE4SCIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2EyYzYzM2YxZTY5ODI0OTQ5NmYxMTMzODMxMmFiNDJiZDdiMWU0ZjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXNucy9saWIvc3Vic2NyaWJlci50c1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk9wdGlvbnMgfSBmcm9tIFwiLi9zdWJzY3JpcHRpb25cIjtcbmltcG9ydCB7IElUb3BpYyB9IGZyb20gXCIuL3RvcGljLWJhc2VcIjtcblxuLyoqXG4gKiBTdWJzY3JpcHRpb24gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvcGljU3Vic2NyaXB0aW9uQ29uZmlnIGV4dGVuZHMgU3Vic2NyaXB0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBTTlMgc3Vic2NyaXB0aW9uIHJlc291cmNlLiBOb3JtYWxseSB5b3UnZFxuICAgKiB3YW50IHRoZSBzdWJzY3JpcHRpb24gdG8gYmUgY3JlYXRlZCBvbiB0aGUgY29uc3VtaW5nIHN0YWNrIGJlY2F1c2UgdGhlXG4gICAqIHRvcGljIGlzIHVzdWFsbHkgcmVmZXJlbmNlZCBieSB0aGUgY29uc3VtZXIncyByZXNvdXJjZSBwb2xpY3kgKGUuZy4gU1FTXG4gICAqIHF1ZXVlIHBvbGljeSkuIE90aGVyd2lzZSwgaXQgd2lsbCBjYXVzZSBhIGN5Y2xpYyByZWZlcmVuY2UuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgdW5kZWZpbmVkLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYmUgY3JlYXRlZCBvbiB0aGUgdG9waWMncyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgdGhlIHRvcGljIGFzIHRoZSBzY29wZSBvZiB0aGUgc3Vic2NyaXB0aW9uLCBpbiB3aGljaCBjYXNlIGBzdWJzY3JpYmVySWRgIG11c3QgYmUgZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IHN1YnNjcmliZXJTY29wZT86IENvbnN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBTTlMgc3Vic2NyaXB0aW9uIHJlc291cmNlIGNyZWF0ZWQgdW5kZXIgYHNjb3BlYC4gSW4gbW9zdFxuICAgKiBjYXNlcywgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgdW5pcXVlSWRgIG9mIHRoZSB0b3BpYyB5b3UgYXJlXG4gICAqIHN1YnNjcmliaW5nIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgc3Vic2NyaWJlcklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIGNyZWF0ZWQgYmVmb3JlIHRoZSBzdWJzY3JpcHRpb24gY2FuIGJlIHNhZmVseSBjcmVhdGVkLlxuICAgKiBGb3IgZXhhbXBsZSBmb3IgU1FTIHN1YnNjcmlwdGlvbiwgdGhlIHN1YnNjcmlwdGlvbiBuZWVkcyB0byBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUgU1FTIHF1ZXVlIHBvbGljeVxuICAgKiBpbiBvcmRlciBmb3IgdGhlIHN1YnNjcmlwdGlvbiB0byBzdWNjZXNzZnVsbHkgZGVsaXZlciBtZXNzYWdlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbXB0eSBsaXN0XG4gICAqL1xuICByZWFkb25seSBzdWJzY3JpcHRpb25EZXBlbmRlbmN5PzogSURlcGVuZGFibGU7XG59XG5cbi8qKlxuICogVG9waWMgc3Vic2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRvcGljU3Vic2NyaXB0aW9uIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb25maWd1cmF0aW9uIHVzZWQgdG8gc3Vic2NyaWJlIHRvIGFuIFNOUyB0b3BpY1xuICAgKlxuICAgKiBAcGFyYW0gdG9waWMgdG9waWMgZm9yIHdoaWNoIHN1YnNjcmlwdGlvbiB3aWxsIGJlIGNvbmZpZ3VyZWRcbiAgICovXG4gIGJpbmQodG9waWM6IElUb3BpYyk6IFRvcGljU3Vic2NyaXB0aW9uQ29uZmlnO1xufVxuIl19
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Conditions that can be applied to string attributes.
3
+ */
4
+ export interface StringConditions {
5
+ /**
6
+ * Match one or more values.
7
+ *
8
+ * @deprecated use `allowlist`
9
+ * @default - None
10
+ */
11
+ readonly whitelist?: string[];
12
+ /**
13
+ * Match any value that doesn't include any of the specified values.
14
+ * @deprecated use `denylist`
15
+ * @default - None
16
+ */
17
+ readonly blacklist?: string[];
18
+ /**
19
+ * Match one or more values.
20
+ * @default - None
21
+ */
22
+ readonly allowlist?: string[];
23
+ /**
24
+ * Match any value that doesn't include any of the specified values.
25
+ * @default - None
26
+ */
27
+ readonly denylist?: string[];
28
+ /**
29
+ * Matches values that begins with the specified prefixes.
30
+ *
31
+ * @default - None
32
+ */
33
+ readonly matchPrefixes?: string[];
34
+ /**
35
+ * Matches values that end with the specified suffixes.
36
+ *
37
+ * @default - None
38
+ */
39
+ readonly matchSuffixes?: string[];
40
+ }
41
+ /**
42
+ * Between condition for a numeric attribute.
43
+ */
44
+ export interface BetweenCondition {
45
+ /**
46
+ * The start value.
47
+ */
48
+ readonly start: number;
49
+ /**
50
+ * The stop value.
51
+ */
52
+ readonly stop: number;
53
+ }
54
+ /**
55
+ * Conditions that can be applied to numeric attributes.
56
+ */
57
+ export interface NumericConditions {
58
+ /**
59
+ * Match one or more values.
60
+ * @deprecated use `allowlist`
61
+ * @default - None
62
+ */
63
+ readonly whitelist?: number[];
64
+ /**
65
+ * Match one or more values.
66
+ *
67
+ * @default - None
68
+ */
69
+ readonly allowlist?: number[];
70
+ /**
71
+ * Match values that are greater than the specified value.
72
+ *
73
+ * @default - None
74
+ */
75
+ readonly greaterThan?: number;
76
+ /**
77
+ * Match values that are greater than or equal to the specified value.
78
+ *
79
+ * @default - None
80
+ */
81
+ readonly greaterThanOrEqualTo?: number;
82
+ /**
83
+ * Match values that are less than the specified value.
84
+ *
85
+ * @default - None
86
+ */
87
+ readonly lessThan?: number;
88
+ /**
89
+ * Match values that are less than or equal to the specified value.
90
+ *
91
+ * @default - None
92
+ */
93
+ readonly lessThanOrEqualTo?: number;
94
+ /**
95
+ * Match values that are between the specified values.
96
+ *
97
+ * @default - None
98
+ */
99
+ readonly between?: BetweenCondition;
100
+ /**
101
+ * Match values that are strictly between the specified values.
102
+ *
103
+ * @default - None
104
+ */
105
+ readonly betweenStrict?: BetweenCondition;
106
+ }
107
+ /**
108
+ * A subscription filter for an attribute.
109
+ */
110
+ export declare class SubscriptionFilter {
111
+ readonly conditions: any[];
112
+ /**
113
+ * Returns a subscription filter for a string attribute.
114
+ */
115
+ static stringFilter(stringConditions: StringConditions): SubscriptionFilter;
116
+ /**
117
+ * Returns a subscription filter for a numeric attribute.
118
+ */
119
+ static numericFilter(numericConditions: NumericConditions): SubscriptionFilter;
120
+ /**
121
+ * Returns a subscription filter for attribute key matching.
122
+ */
123
+ static existsFilter(): SubscriptionFilter;
124
+ /**
125
+ *
126
+ * @param conditions conditions that specify the message attributes that should be included, excluded, matched, etc.
127
+ */
128
+ constructor(conditions?: any[]);
129
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SubscriptionFilter = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * A subscription filter for an attribute.
8
+ */
9
+ class SubscriptionFilter {
10
+ /**
11
+ * Returns a subscription filter for a string attribute.
12
+ */
13
+ static stringFilter(stringConditions) {
14
+ const conditions = new Array();
15
+ if (stringConditions.whitelist && stringConditions.allowlist) {
16
+ // TODO: Adopt UnscopedValidationError
17
+ throw new Error("`whitelist` is deprecated; please use `allowlist` instead");
18
+ }
19
+ if (stringConditions.blacklist && stringConditions.denylist) {
20
+ // TODO: Adopt UnscopedValidationError
21
+ throw new Error("`blacklist` is deprecated; please use `denylist` instead");
22
+ }
23
+ const allowlist = stringConditions.allowlist ?? stringConditions.whitelist;
24
+ const denylist = stringConditions.denylist ?? stringConditions.blacklist;
25
+ if (allowlist) {
26
+ conditions.push(...allowlist);
27
+ }
28
+ if (denylist) {
29
+ conditions.push({ "anything-but": denylist });
30
+ }
31
+ if (stringConditions.matchPrefixes) {
32
+ conditions.push(...stringConditions.matchPrefixes.map((p) => ({ prefix: p })));
33
+ }
34
+ if (stringConditions.matchSuffixes) {
35
+ conditions.push(...stringConditions.matchSuffixes.map((s) => ({ suffix: s })));
36
+ }
37
+ return new SubscriptionFilter(conditions);
38
+ }
39
+ /**
40
+ * Returns a subscription filter for a numeric attribute.
41
+ */
42
+ static numericFilter(numericConditions) {
43
+ const conditions = new Array();
44
+ if (numericConditions.whitelist && numericConditions.allowlist) {
45
+ // TODO: Adopt UnscopedValidationError
46
+ throw new Error("`whitelist` is deprecated; please use `allowlist` instead");
47
+ }
48
+ const allowlist = numericConditions.allowlist ?? numericConditions.whitelist;
49
+ if (allowlist) {
50
+ conditions.push(...allowlist.map((v) => ({ numeric: ["=", v] })));
51
+ }
52
+ if (numericConditions.greaterThan !== undefined) {
53
+ conditions.push({ numeric: [">", numericConditions.greaterThan] });
54
+ }
55
+ if (numericConditions.greaterThanOrEqualTo !== undefined) {
56
+ conditions.push({
57
+ numeric: [">=", numericConditions.greaterThanOrEqualTo],
58
+ });
59
+ }
60
+ if (numericConditions.lessThan !== undefined) {
61
+ conditions.push({ numeric: ["<", numericConditions.lessThan] });
62
+ }
63
+ if (numericConditions.lessThanOrEqualTo !== undefined) {
64
+ conditions.push({ numeric: ["<=", numericConditions.lessThanOrEqualTo] });
65
+ }
66
+ if (numericConditions.between) {
67
+ conditions.push({
68
+ numeric: [
69
+ ">=",
70
+ numericConditions.between.start,
71
+ "<=",
72
+ numericConditions.between.stop,
73
+ ],
74
+ });
75
+ }
76
+ if (numericConditions.betweenStrict) {
77
+ conditions.push({
78
+ numeric: [
79
+ ">",
80
+ numericConditions.betweenStrict.start,
81
+ "<",
82
+ numericConditions.betweenStrict.stop,
83
+ ],
84
+ });
85
+ }
86
+ return new SubscriptionFilter(conditions);
87
+ }
88
+ /**
89
+ * Returns a subscription filter for attribute key matching.
90
+ */
91
+ static existsFilter() {
92
+ return new SubscriptionFilter([{ exists: true }]);
93
+ }
94
+ /**
95
+ *
96
+ * @param conditions conditions that specify the message attributes that should be included, excluded, matched, etc.
97
+ */
98
+ constructor(conditions = []) {
99
+ this.conditions = conditions;
100
+ }
101
+ }
102
+ exports.SubscriptionFilter = SubscriptionFilter;
103
+ _a = JSII_RTTI_SYMBOL_1;
104
+ SubscriptionFilter[_a] = { fqn: "terraconstructs.aws.notify.SubscriptionFilter", version: "0.0.18" };
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3N1YnNjcmlwdGlvbi1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpSUE7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsZ0JBQWtDO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxFQUFPLENBQUM7UUFFcEMsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0Qsc0NBQXNDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELENBQzVELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUQsc0NBQXNDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBRXpFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsVUFBVSxDQUFDLElBQUksQ0FDYixHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsVUFBVSxDQUFDLElBQUksQ0FDYixHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFvQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBTyxDQUFDO1FBRXBDLElBQUksaUJBQWlCLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9ELHNDQUFzQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sU0FBUyxHQUNiLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7UUFFN0QsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELElBQUksaUJBQWlCLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hELFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pELFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO2FBQ3hELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLGlCQUFpQixDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsSUFBSSxpQkFBaUIsQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUk7b0JBQ0osaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUs7b0JBQy9CLElBQUk7b0JBQ0osaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUk7aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsR0FBRztvQkFDSCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSztvQkFDckMsR0FBRztvQkFDSCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSTtpQkFDckM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZO1FBQ3hCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBNEIsYUFBb0IsRUFBRTtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQzs7QUF0SHhELGdEQXVIQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzc0NTI0NjI1NTBhMTAwZjViZDJkY2FiNmY0OTVjOWY2OGJmMGRiNGEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXNucy9saWIvc3Vic2NyaXB0aW9uLWZpbHRlci50c1xuXG4vLyBUT0RPOiBBZG9wdCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvcHVsbC8zMzM4Mi9cbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvMzMwNDVcbi8vIGltcG9ydCB7IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4uLy4uL2NvcmUvbGliL2Vycm9yc1wiO1xuXG4vKipcbiAqIENvbmRpdGlvbnMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBzdHJpbmcgYXR0cmlidXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdDb25kaXRpb25zIHtcbiAgLyoqXG4gICAqIE1hdGNoIG9uZSBvciBtb3JlIHZhbHVlcy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBhbGxvd2xpc3RgXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgd2hpdGVsaXN0Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hdGNoIGFueSB2YWx1ZSB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZXMuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZGVueWxpc3RgXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYmxhY2tsaXN0Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hdGNoIG9uZSBvciBtb3JlIHZhbHVlcy5cbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBhbGxvd2xpc3Q/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWF0Y2ggYW55IHZhbHVlIHRoYXQgZG9lc24ndCBpbmNsdWRlIGFueSBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBkZW55bGlzdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXRjaGVzIHZhbHVlcyB0aGF0IGJlZ2lucyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF0Y2hQcmVmaXhlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXRjaGVzIHZhbHVlcyB0aGF0IGVuZCB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF0Y2hTdWZmaXhlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEJldHdlZW4gY29uZGl0aW9uIGZvciBhIG51bWVyaWMgYXR0cmlidXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJldHdlZW5Db25kaXRpb24ge1xuICAvKipcbiAgICogVGhlIHN0YXJ0IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0b3AgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSBzdG9wOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZGl0aW9ucyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG51bWVyaWMgYXR0cmlidXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdW1lcmljQ29uZGl0aW9ucyB7XG4gIC8qKlxuICAgKiBNYXRjaCBvbmUgb3IgbW9yZSB2YWx1ZXMuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgYWxsb3dsaXN0YFxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHdoaXRlbGlzdD86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBNYXRjaCBvbmUgb3IgbW9yZSB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dsaXN0PzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIE1hdGNoIHZhbHVlcyB0aGF0IGFyZSBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBncmVhdGVyVGhhbj86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF0Y2ggdmFsdWVzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGdyZWF0ZXJUaGFuT3JFcXVhbFRvPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXRjaCB2YWx1ZXMgdGhhdCBhcmUgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGVzc1RoYW4/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1hdGNoIHZhbHVlcyB0aGF0IGFyZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBsZXNzVGhhbk9yRXF1YWxUbz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF0Y2ggdmFsdWVzIHRoYXQgYXJlIGJldHdlZW4gdGhlIHNwZWNpZmllZCB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0d2Vlbj86IEJldHdlZW5Db25kaXRpb247XG5cbiAgLyoqXG4gICAqIE1hdGNoIHZhbHVlcyB0aGF0IGFyZSBzdHJpY3RseSBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGJldHdlZW5TdHJpY3Q/OiBCZXR3ZWVuQ29uZGl0aW9uO1xufVxuXG4vKipcbiAqIEEgc3Vic2NyaXB0aW9uIGZpbHRlciBmb3IgYW4gYXR0cmlidXRlLlxuICovXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uRmlsdGVyIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdWJzY3JpcHRpb24gZmlsdGVyIGZvciBhIHN0cmluZyBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cmluZ0ZpbHRlcihzdHJpbmdDb25kaXRpb25zOiBTdHJpbmdDb25kaXRpb25zKSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG5ldyBBcnJheTxhbnk+KCk7XG5cbiAgICBpZiAoc3RyaW5nQ29uZGl0aW9ucy53aGl0ZWxpc3QgJiYgc3RyaW5nQ29uZGl0aW9ucy5hbGxvd2xpc3QpIHtcbiAgICAgIC8vIFRPRE86IEFkb3B0IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYHdoaXRlbGlzdGAgaXMgZGVwcmVjYXRlZDsgcGxlYXNlIHVzZSBgYWxsb3dsaXN0YCBpbnN0ZWFkXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nQ29uZGl0aW9ucy5ibGFja2xpc3QgJiYgc3RyaW5nQ29uZGl0aW9ucy5kZW55bGlzdCkge1xuICAgICAgLy8gVE9ETzogQWRvcHQgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3JcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJgYmxhY2tsaXN0YCBpcyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIGBkZW55bGlzdGAgaW5zdGVhZFwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dsaXN0ID0gc3RyaW5nQ29uZGl0aW9ucy5hbGxvd2xpc3QgPz8gc3RyaW5nQ29uZGl0aW9ucy53aGl0ZWxpc3Q7XG4gICAgY29uc3QgZGVueWxpc3QgPSBzdHJpbmdDb25kaXRpb25zLmRlbnlsaXN0ID8/IHN0cmluZ0NvbmRpdGlvbnMuYmxhY2tsaXN0O1xuXG4gICAgaWYgKGFsbG93bGlzdCkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKC4uLmFsbG93bGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKGRlbnlsaXN0KSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goeyBcImFueXRoaW5nLWJ1dFwiOiBkZW55bGlzdCB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3RyaW5nQ29uZGl0aW9ucy5tYXRjaFByZWZpeGVzKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goXG4gICAgICAgIC4uLnN0cmluZ0NvbmRpdGlvbnMubWF0Y2hQcmVmaXhlcy5tYXAoKHApID0+ICh7IHByZWZpeDogcCB9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzdHJpbmdDb25kaXRpb25zLm1hdGNoU3VmZml4ZXMpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaChcbiAgICAgICAgLi4uc3RyaW5nQ29uZGl0aW9ucy5tYXRjaFN1ZmZpeGVzLm1hcCgocykgPT4gKHsgc3VmZml4OiBzIH0pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25GaWx0ZXIoY29uZGl0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgZm9yIGEgbnVtZXJpYyBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWVyaWNGaWx0ZXIobnVtZXJpY0NvbmRpdGlvbnM6IE51bWVyaWNDb25kaXRpb25zKSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG5ldyBBcnJheTxhbnk+KCk7XG5cbiAgICBpZiAobnVtZXJpY0NvbmRpdGlvbnMud2hpdGVsaXN0ICYmIG51bWVyaWNDb25kaXRpb25zLmFsbG93bGlzdCkge1xuICAgICAgLy8gVE9ETzogQWRvcHQgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3JcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJgd2hpdGVsaXN0YCBpcyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIGBhbGxvd2xpc3RgIGluc3RlYWRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93bGlzdCA9XG4gICAgICBudW1lcmljQ29uZGl0aW9ucy5hbGxvd2xpc3QgPz8gbnVtZXJpY0NvbmRpdGlvbnMud2hpdGVsaXN0O1xuXG4gICAgaWYgKGFsbG93bGlzdCkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKC4uLmFsbG93bGlzdC5tYXAoKHYpID0+ICh7IG51bWVyaWM6IFtcIj1cIiwgdl0gfSkpKTtcbiAgICB9XG5cbiAgICBpZiAobnVtZXJpY0NvbmRpdGlvbnMuZ3JlYXRlclRoYW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKHsgbnVtZXJpYzogW1wiPlwiLCBudW1lcmljQ29uZGl0aW9ucy5ncmVhdGVyVGhhbl0gfSk7XG4gICAgfVxuXG4gICAgaWYgKG51bWVyaWNDb25kaXRpb25zLmdyZWF0ZXJUaGFuT3JFcXVhbFRvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgIG51bWVyaWM6IFtcIj49XCIsIG51bWVyaWNDb25kaXRpb25zLmdyZWF0ZXJUaGFuT3JFcXVhbFRvXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChudW1lcmljQ29uZGl0aW9ucy5sZXNzVGhhbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goeyBudW1lcmljOiBbXCI8XCIsIG51bWVyaWNDb25kaXRpb25zLmxlc3NUaGFuXSB9KTtcbiAgICB9XG5cbiAgICBpZiAobnVtZXJpY0NvbmRpdGlvbnMubGVzc1RoYW5PckVxdWFsVG8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKHsgbnVtZXJpYzogW1wiPD1cIiwgbnVtZXJpY0NvbmRpdGlvbnMubGVzc1RoYW5PckVxdWFsVG9dIH0pO1xuICAgIH1cblxuICAgIGlmIChudW1lcmljQ29uZGl0aW9ucy5iZXR3ZWVuKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgICBudW1lcmljOiBbXG4gICAgICAgICAgXCI+PVwiLFxuICAgICAgICAgIG51bWVyaWNDb25kaXRpb25zLmJldHdlZW4uc3RhcnQsXG4gICAgICAgICAgXCI8PVwiLFxuICAgICAgICAgIG51bWVyaWNDb25kaXRpb25zLmJldHdlZW4uc3RvcCxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChudW1lcmljQ29uZGl0aW9ucy5iZXR3ZWVuU3RyaWN0KSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgICBudW1lcmljOiBbXG4gICAgICAgICAgXCI+XCIsXG4gICAgICAgICAgbnVtZXJpY0NvbmRpdGlvbnMuYmV0d2VlblN0cmljdC5zdGFydCxcbiAgICAgICAgICBcIjxcIixcbiAgICAgICAgICBudW1lcmljQ29uZGl0aW9ucy5iZXR3ZWVuU3RyaWN0LnN0b3AsXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkZpbHRlcihjb25kaXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3Vic2NyaXB0aW9uIGZpbHRlciBmb3IgYXR0cmlidXRlIGtleSBtYXRjaGluZy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXhpc3RzRmlsdGVyKCkge1xuICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlsdGVyKFt7IGV4aXN0czogdHJ1ZSB9XSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGNvbmRpdGlvbnMgY29uZGl0aW9ucyB0aGF0IHNwZWNpZnkgdGhlIG1lc3NhZ2UgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG1hdGNoZWQsIGV0Yy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25kaXRpb25zOiBhbnlbXSA9IFtdKSB7fVxufVxuIl19