terraconstructs 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.jsii +1297 -629
  2. package/lib/asset-staging.js +1 -1
  3. package/lib/aws/arn.js +4 -3
  4. package/lib/aws/aws-asset-manager.js +1 -1
  5. package/lib/aws/aws-construct.js +1 -1
  6. package/lib/aws/aws-stack.js +1 -1
  7. package/lib/aws/aws-tags.js +2 -2
  8. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  9. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  10. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  11. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  12. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  13. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  14. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  15. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  16. package/lib/aws/cloudwatch/alarm.js +1 -1
  17. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  18. package/lib/aws/cloudwatch/dashboard.js +1 -1
  19. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  20. package/lib/aws/cloudwatch/graph.js +8 -8
  21. package/lib/aws/cloudwatch/layout.js +3 -3
  22. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  23. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  24. package/lib/aws/cloudwatch/log-group.js +1 -1
  25. package/lib/aws/cloudwatch/log-query.js +1 -1
  26. package/lib/aws/cloudwatch/log-stream.js +1 -1
  27. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  28. package/lib/aws/cloudwatch/metric.js +2 -2
  29. package/lib/aws/cloudwatch/pattern.js +3 -3
  30. package/lib/aws/cloudwatch/policy.js +1 -1
  31. package/lib/aws/cloudwatch/query-definition.js +2 -2
  32. package/lib/aws/cloudwatch/stats.js +1 -1
  33. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  34. package/lib/aws/cloudwatch/text.js +1 -1
  35. package/lib/aws/cloudwatch/variable.js +3 -3
  36. package/lib/aws/cloudwatch/widget.js +1 -1
  37. package/lib/aws/compute/access-log.js +4 -4
  38. package/lib/aws/compute/activity.js +1 -1
  39. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  40. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  42. package/lib/aws/compute/alb/application-listener.js +1 -1
  43. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  44. package/lib/aws/compute/alb/application-target-group.js +1 -1
  45. package/lib/aws/compute/alb/conditions.js +1 -1
  46. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  47. package/lib/aws/compute/alb/trust-store.js +1 -1
  48. package/lib/aws/compute/api-definition.js +3 -3
  49. package/lib/aws/compute/api-key.js +2 -2
  50. package/lib/aws/compute/architecture.js +1 -1
  51. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  52. package/lib/aws/compute/authorizer.js +1 -1
  53. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  54. package/lib/aws/compute/authorizers/lambda.js +2 -2
  55. package/lib/aws/compute/base-path-mapping.js +1 -1
  56. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  57. package/lib/aws/compute/bastion-host.js +1 -1
  58. package/lib/aws/compute/chain.js +1 -1
  59. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  60. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  61. package/lib/aws/compute/client-vpn-route.js +2 -2
  62. package/lib/aws/compute/code.js +8 -8
  63. package/lib/aws/compute/condition.js +1 -1
  64. package/lib/aws/compute/connections.js +1 -1
  65. package/lib/aws/compute/cors.js +1 -1
  66. package/lib/aws/compute/deployment.js +1 -1
  67. package/lib/aws/compute/domain-name.js +1 -1
  68. package/lib/aws/compute/event-invoke-config.js +1 -1
  69. package/lib/aws/compute/event-source-filter.js +2 -2
  70. package/lib/aws/compute/event-source-mapping.d.ts +10 -0
  71. package/lib/aws/compute/event-source-mapping.js +20 -23
  72. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  73. package/lib/aws/compute/event-sources/s3.js +1 -1
  74. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  75. package/lib/aws/compute/event-sources/sqs.d.ts +10 -0
  76. package/lib/aws/compute/event-sources/sqs.js +3 -3
  77. package/lib/aws/compute/fields.js +4 -4
  78. package/lib/aws/compute/function-alias.js +1 -1
  79. package/lib/aws/compute/function-base.js +2 -2
  80. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  81. package/lib/aws/compute/function-destinations/function.js +1 -1
  82. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  83. package/lib/aws/compute/function-nodejs/function.js +1 -1
  84. package/lib/aws/compute/function-url.js +1 -1
  85. package/lib/aws/compute/function.js +3 -3
  86. package/lib/aws/compute/gateway-response.js +2 -2
  87. package/lib/aws/compute/handler.js +1 -1
  88. package/lib/aws/compute/instance-types.js +1 -1
  89. package/lib/aws/compute/instance.js +1 -1
  90. package/lib/aws/compute/integration.js +1 -1
  91. package/lib/aws/compute/integrations/aws.js +1 -1
  92. package/lib/aws/compute/integrations/http.js +1 -1
  93. package/lib/aws/compute/integrations/lambda.js +1 -1
  94. package/lib/aws/compute/integrations/mock.js +1 -1
  95. package/lib/aws/compute/integrations/stepfunctions.js +1 -1
  96. package/lib/aws/compute/ip-addresses.js +2 -2
  97. package/lib/aws/compute/ipam.js +1 -1
  98. package/lib/aws/compute/key-pair.js +1 -1
  99. package/lib/aws/compute/lambda-api.js +1 -1
  100. package/lib/aws/compute/launch-template.js +2 -2
  101. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  102. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  103. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  104. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  105. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  106. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  107. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  108. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  109. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  110. package/lib/aws/compute/load-balancer.js +3 -3
  111. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  112. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  113. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  114. package/lib/aws/compute/machine-image/common.js +1 -1
  115. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  116. package/lib/aws/compute/method.js +1 -1
  117. package/lib/aws/compute/model.js +3 -3
  118. package/lib/aws/compute/nat.js +5 -5
  119. package/lib/aws/compute/network-acl-types.js +2 -2
  120. package/lib/aws/compute/network-acl.js +3 -3
  121. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  122. package/lib/aws/compute/nlb/network-listener.js +1 -1
  123. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  124. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  125. package/lib/aws/compute/peer.js +1 -1
  126. package/lib/aws/compute/placement-group.js +1 -1
  127. package/lib/aws/compute/port.js +1 -1
  128. package/lib/aws/compute/prefix-list.js +1 -1
  129. package/lib/aws/compute/requestvalidator.js +1 -1
  130. package/lib/aws/compute/resource.js +3 -3
  131. package/lib/aws/compute/restapi.js +3 -3
  132. package/lib/aws/compute/route.js +8 -8
  133. package/lib/aws/compute/runtime.js +1 -1
  134. package/lib/aws/compute/scalable-target.js +1 -1
  135. package/lib/aws/compute/schedule.js +1 -1
  136. package/lib/aws/compute/security-group.js +1 -1
  137. package/lib/aws/compute/stage.js +2 -2
  138. package/lib/aws/compute/state-graph.js +1 -1
  139. package/lib/aws/compute/state-machine-fragment.js +1 -1
  140. package/lib/aws/compute/state-machine.js +4 -4
  141. package/lib/aws/compute/states/choice.js +1 -1
  142. package/lib/aws/compute/states/custom-state.js +1 -1
  143. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  144. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  145. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  146. package/lib/aws/compute/states/distributed-map.js +1 -1
  147. package/lib/aws/compute/states/fail.js +1 -1
  148. package/lib/aws/compute/states/map-base.js +1 -1
  149. package/lib/aws/compute/states/map.js +1 -1
  150. package/lib/aws/compute/states/parallel.js +1 -1
  151. package/lib/aws/compute/states/pass.js +2 -2
  152. package/lib/aws/compute/states/state.js +1 -1
  153. package/lib/aws/compute/states/succeed.js +1 -1
  154. package/lib/aws/compute/states/task-base.js +2 -2
  155. package/lib/aws/compute/states/task.js +1 -1
  156. package/lib/aws/compute/states/wait.js +2 -2
  157. package/lib/aws/compute/step-scaling-action.js +1 -1
  158. package/lib/aws/compute/step-scaling-policy.js +1 -1
  159. package/lib/aws/compute/stepfunctions-api.js +1 -1
  160. package/lib/aws/compute/subnet-v2.js +2 -2
  161. package/lib/aws/compute/subnet.js +1 -1
  162. package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
  163. package/lib/aws/compute/task-credentials.js +1 -1
  164. package/lib/aws/compute/task-input.js +1 -1
  165. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  166. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  167. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  168. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  169. package/lib/aws/compute/tasks/sqs/send-message.js +10 -13
  170. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  171. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  172. package/lib/aws/compute/types.js +1 -1
  173. package/lib/aws/compute/usage-plan.js +1 -1
  174. package/lib/aws/compute/user-data.js +3 -3
  175. package/lib/aws/compute/volume.js +2 -2
  176. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  177. package/lib/aws/compute/vpc-endpoint.js +6 -6
  178. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  179. package/lib/aws/compute/vpc-link.js +1 -1
  180. package/lib/aws/compute/vpc-v2-base.js +1 -1
  181. package/lib/aws/compute/vpc-v2.js +2 -2
  182. package/lib/aws/compute/vpc.js +4 -4
  183. package/lib/aws/compute/vpn.js +3 -3
  184. package/lib/aws/edge/certificate.js +1 -1
  185. package/lib/aws/edge/distribution.js +3 -3
  186. package/lib/aws/edge/dns-alias-record-targets.js +6 -6
  187. package/lib/aws/edge/dns-record.js +13 -13
  188. package/lib/aws/edge/dns-zone.js +1 -1
  189. package/lib/aws/edge/function.js +2 -2
  190. package/lib/aws/edge/key-value-store.js +4 -4
  191. package/lib/aws/edge/origin.js +3 -3
  192. package/lib/aws/edge/response-headers-policy.js +1 -1
  193. package/lib/aws/encryption/alias.js +1 -1
  194. package/lib/aws/encryption/key.js +1 -1
  195. package/lib/aws/encryption/via-service-principal.js +1 -1
  196. package/lib/aws/environment-aware.d.ts +41 -0
  197. package/lib/aws/environment-aware.js +3 -0
  198. package/lib/aws/iam/grant.d.ts +34 -0
  199. package/lib/aws/iam/grant.js +27 -6
  200. package/lib/aws/iam/group.js +1 -1
  201. package/lib/aws/iam/instance-profile.js +1 -1
  202. package/lib/aws/iam/managed-policy.js +1 -1
  203. package/lib/aws/iam/oidc-provider.js +1 -1
  204. package/lib/aws/iam/policy-document.js +1 -1
  205. package/lib/aws/iam/policy-statement.js +1 -1
  206. package/lib/aws/iam/policy.js +1 -1
  207. package/lib/aws/iam/principals.js +20 -20
  208. package/lib/aws/iam/role.js +1 -1
  209. package/lib/aws/iam/saml-provider.js +2 -2
  210. package/lib/aws/iam/unknown-principal.js +1 -1
  211. package/lib/aws/iam/user.js +1 -1
  212. package/lib/aws/index.d.ts +1 -0
  213. package/lib/aws/index.js +2 -1
  214. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  215. package/lib/aws/network/subnet-group.js +3 -3
  216. package/lib/aws/network/subnet.js +4 -4
  217. package/lib/aws/notify/archive.js +1 -1
  218. package/lib/aws/notify/connection.js +3 -3
  219. package/lib/aws/notify/event-bus.d.ts +1 -1
  220. package/lib/aws/notify/event-bus.js +4 -4
  221. package/lib/aws/notify/event-pattern.js +1 -1
  222. package/lib/aws/notify/index.d.ts +3 -1
  223. package/lib/aws/notify/index.js +5 -5
  224. package/lib/aws/notify/input.js +2 -2
  225. package/lib/aws/notify/kinesis-stream.js +1 -1
  226. package/lib/aws/notify/notification-rule.js +1 -1
  227. package/lib/aws/notify/policy.js +1 -1
  228. package/lib/aws/notify/queue-base.d.ts +241 -0
  229. package/lib/aws/notify/queue-base.js +161 -0
  230. package/lib/aws/notify/queue-policy.js +1 -1
  231. package/lib/aws/notify/queue.d.ts +157 -190
  232. package/lib/aws/notify/queue.js +239 -186
  233. package/lib/aws/notify/resource-policy.js +1 -1
  234. package/lib/aws/notify/rule.js +1 -1
  235. package/lib/aws/notify/schedule.js +1 -1
  236. package/lib/aws/notify/sqs-augmentations.generated.d.ts +3 -3
  237. package/lib/aws/notify/sqs-augmentations.generated.js +23 -26
  238. package/lib/aws/notify/sqs-grants.generated.d.ts +72 -0
  239. package/lib/aws/notify/sqs-grants.generated.js +139 -0
  240. package/lib/aws/notify/subscription-filter.js +1 -1
  241. package/lib/aws/notify/subscription.js +4 -4
  242. package/lib/aws/notify/subscriptions/email.js +1 -1
  243. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  244. package/lib/aws/notify/subscriptions/sms.js +1 -1
  245. package/lib/aws/notify/subscriptions/sqs.js +30 -27
  246. package/lib/aws/notify/subscriptions/subscription.d.ts +1 -1
  247. package/lib/aws/notify/subscriptions/subscription.js +1 -1
  248. package/lib/aws/notify/subscriptions/url.js +1 -1
  249. package/lib/aws/notify/targets/event-bus.d.ts +1 -1
  250. package/lib/aws/notify/targets/event-bus.js +2 -2
  251. package/lib/aws/notify/targets/function.js +1 -1
  252. package/lib/aws/notify/targets/log-group.js +2 -2
  253. package/lib/aws/notify/targets/sqs.js +12 -14
  254. package/lib/aws/notify/targets/state-machine.js +1 -1
  255. package/lib/aws/notify/topic-base.js +1 -1
  256. package/lib/aws/notify/topic.js +1 -1
  257. package/lib/aws/storage/assets/image-asset.js +3 -3
  258. package/lib/aws/storage/assets/s3.js +1 -1
  259. package/lib/aws/storage/auth-token.js +2 -2
  260. package/lib/aws/storage/billing.js +1 -1
  261. package/lib/aws/storage/bucket-notifications.js +1 -1
  262. package/lib/aws/storage/bucket-policy.js +1 -1
  263. package/lib/aws/storage/bucket-source.js +1 -1
  264. package/lib/aws/storage/bucket.js +2 -2
  265. package/lib/aws/storage/capacity.js +1 -1
  266. package/lib/aws/storage/ecr-repository.js +3 -3
  267. package/lib/aws/storage/encryption.js +1 -1
  268. package/lib/aws/storage/notification-targets/function.js +1 -1
  269. package/lib/aws/storage/notification-targets/queue.js +17 -21
  270. package/lib/aws/storage/origin-access-identity.js +1 -1
  271. package/lib/aws/storage/parameter.js +2 -2
  272. package/lib/aws/storage/table.js +3 -3
  273. package/lib/bundling.js +3 -3
  274. package/lib/construct-base.js +2 -2
  275. package/lib/duration.js +1 -1
  276. package/lib/errors.js +1 -1
  277. package/lib/expiration.js +1 -1
  278. package/lib/fs/ignore.js +4 -4
  279. package/lib/fs/index.js +1 -1
  280. package/lib/helpers-internal/index.d.ts +1 -0
  281. package/lib/helpers-internal/index.js +16 -1
  282. package/lib/helpers-internal/validate-all-props.d.ts +29 -0
  283. package/lib/helpers-internal/validate-all-props.js +23 -0
  284. package/lib/size.js +1 -1
  285. package/lib/stack-base.js +1 -1
  286. package/lib/terra-func.js +1 -1
  287. package/lib/time-zone.js +1 -1
  288. package/package.json +1 -1
  289. package/lib/aws/notify/queue-config.generated.d.ts +0 -98
  290. package/lib/aws/notify/queue-config.generated.js +0 -3
@@ -0,0 +1,241 @@
1
+ import { Construct } from "constructs";
2
+ import { QueueGrants } from "./sqs-grants.generated";
3
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "../aws-construct";
4
+ import * as kms from "../encryption";
5
+ import * as iam from "../iam";
6
+ import { GrantOnKeyResult, IEncryptedResource, IGrantable } from "../iam";
7
+ /**
8
+ * Outputs which may be registered for output via the Grid.
9
+ */
10
+ export interface QueueOutputs {
11
+ /**
12
+ * Queue name
13
+ */
14
+ readonly name: string;
15
+ /**
16
+ * Queue arn
17
+ */
18
+ readonly arn: string;
19
+ /**
20
+ * Queue url
21
+ */
22
+ readonly url: string;
23
+ }
24
+ /**
25
+ * Represents an SQS queue
26
+ */
27
+ export interface IQueue extends iam.IAwsConstructWithPolicy, IAwsConstruct {
28
+ /** Strongly typed outputs */
29
+ readonly queueOutputs: QueueOutputs;
30
+ /**
31
+ * The ARN of this queue
32
+ * @attribute
33
+ */
34
+ readonly queueArn: string;
35
+ /**
36
+ * The URL of this queue
37
+ * @attribute
38
+ */
39
+ readonly queueUrl: string;
40
+ /**
41
+ * The name of this queue
42
+ * @attribute
43
+ */
44
+ readonly queueName: string;
45
+ /**
46
+ * If this queue is server-side encrypted, this is the KMS encryption key.
47
+ */
48
+ readonly encryptionMasterKey?: kms.IKey;
49
+ /**
50
+ * Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
51
+ */
52
+ readonly fifo: boolean;
53
+ /**
54
+ * Whether the contents of the queue are encrypted, and by what type of key.
55
+ */
56
+ readonly encryptionType?: QueueEncryption;
57
+ /**
58
+ * Grant permissions to consume messages from a queue
59
+ *
60
+ * This will grant the following permissions:
61
+ *
62
+ * - sqs:ChangeMessageVisibility
63
+ * - sqs:DeleteMessage
64
+ * - sqs:ReceiveMessage
65
+ * - sqs:GetQueueAttributes
66
+ * - sqs:GetQueueUrl
67
+ *
68
+ * @param grantee Principal to grant consume rights to
69
+ */
70
+ grantConsumeMessages(grantee: iam.IGrantable): iam.Grant;
71
+ /**
72
+ * Grant access to send messages to a queue to the given identity.
73
+ *
74
+ * This will grant the following permissions:
75
+ *
76
+ * - sqs:SendMessage
77
+ * - sqs:GetQueueAttributes
78
+ * - sqs:GetQueueUrl
79
+ *
80
+ * @param grantee Principal to grant send rights to
81
+ */
82
+ grantSendMessages(grantee: iam.IGrantable): iam.Grant;
83
+ /**
84
+ * Grant an IAM principal permissions to purge all messages from the queue.
85
+ *
86
+ * This will grant the following permissions:
87
+ *
88
+ * - sqs:PurgeQueue
89
+ * - sqs:GetQueueAttributes
90
+ * - sqs:GetQueueUrl
91
+ *
92
+ * @param grantee Principal to grant send rights to
93
+ */
94
+ grantPurge(grantee: iam.IGrantable): iam.Grant;
95
+ /**
96
+ * Grant the actions defined in queueActions to the identity Principal given
97
+ * on this SQS queue resource.
98
+ *
99
+ * @param grantee Principal to grant right to
100
+ * @param queueActions The actions to grant
101
+ */
102
+ grant(grantee: iam.IGrantable, ...queueActions: string[]): iam.Grant;
103
+ }
104
+ /**
105
+ * Reference to a new or existing Amazon SQS queue
106
+ */
107
+ export declare abstract class QueueBase extends AwsConstructBase implements IQueue, IEncryptedResource {
108
+ get queueOutputs(): QueueOutputs;
109
+ get outputs(): Record<string, any>;
110
+ /**
111
+ * The ARN of this queue
112
+ */
113
+ abstract readonly queueArn: string;
114
+ /**
115
+ * The URL of this queue
116
+ */
117
+ abstract readonly queueUrl: string;
118
+ /**
119
+ * The name of this queue
120
+ */
121
+ abstract readonly queueName: string;
122
+ /**
123
+ * If this queue is server-side encrypted, this is the KMS encryption key.
124
+ */
125
+ abstract readonly encryptionMasterKey?: kms.IKey;
126
+ /**
127
+ * Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
128
+ */
129
+ abstract readonly fifo: boolean;
130
+ /**
131
+ * Whether the contents of the queue are encrypted, and by what type of key.
132
+ */
133
+ abstract readonly encryptionType?: QueueEncryption;
134
+ /**
135
+ * Collection of grant methods for a Queue
136
+ */
137
+ readonly grants: QueueGrants;
138
+ /**
139
+ * Controls automatic creation of policy objects.
140
+ *
141
+ * Set by subclasses.
142
+ */
143
+ protected abstract readonly autoCreatePolicy: boolean;
144
+ private policy?;
145
+ constructor(scope: Construct, id: string, props?: AwsConstructProps);
146
+ grantOnKey(grantee: IGrantable, ...actions: string[]): GrantOnKeyResult;
147
+ /**
148
+ * Adds a statement to the IAM resource policy associated with this queue.
149
+ *
150
+ * If this queue was created in this stack (`new Queue`), a queue policy
151
+ * will be automatically created upon the first call to `addToPolicy`.
152
+ */
153
+ addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
154
+ /**
155
+ * Grant permissions to consume messages from a queue
156
+ *
157
+ * This will grant the following permissions:
158
+ *
159
+ * - sqs:ChangeMessageVisibility
160
+ * - sqs:DeleteMessage
161
+ * - sqs:ReceiveMessage
162
+ * - sqs:GetQueueAttributes
163
+ * - sqs:GetQueueUrl
164
+ *
165
+ * If encryption is used, permission to use the key to decrypt the contents of the queue will also be granted to the same principal.
166
+ *
167
+ * This will grant the following KMS permissions:
168
+ *
169
+ * - kms:Decrypt
170
+ *
171
+ * @param grantee Principal to grant consume rights to
172
+ */
173
+ grantConsumeMessages(grantee: iam.IGrantable): iam.Grant;
174
+ /**
175
+ * Grant access to send messages to a queue to the given identity.
176
+ *
177
+ * This will grant the following permissions:
178
+ *
179
+ * - sqs:SendMessage
180
+ * - sqs:GetQueueAttributes
181
+ * - sqs:GetQueueUrl
182
+ *
183
+ * If encryption is used, permission to use the key to encrypt/decrypt the contents of the queue will also be granted to the same principal.
184
+ *
185
+ * This will grant the following KMS permissions:
186
+ *
187
+ * - kms:Decrypt
188
+ * - kms:Encrypt
189
+ * - kms:ReEncrypt*
190
+ * - kms:GenerateDataKey*
191
+ *
192
+ * @param grantee Principal to grant send rights to
193
+ */
194
+ grantSendMessages(grantee: iam.IGrantable): iam.Grant;
195
+ /**
196
+ * Grant an IAM principal permissions to purge all messages from the queue.
197
+ *
198
+ * This will grant the following permissions:
199
+ *
200
+ * - sqs:PurgeQueue
201
+ * - sqs:GetQueueAttributes
202
+ * - sqs:GetQueueUrl
203
+ *
204
+ * @param grantee Principal to grant send rights to
205
+ */
206
+ grantPurge(grantee: iam.IGrantable): iam.Grant;
207
+ /**
208
+ * Grant the actions defined in queueActions to the identity Principal given
209
+ * on this SQS queue resource.
210
+ *
211
+ * @param grantee Principal to grant right to
212
+ * @param actions The actions to grant
213
+ */
214
+ grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
215
+ }
216
+ /**
217
+ * What kind of encryption to apply to this queue
218
+ */
219
+ export declare enum QueueEncryption {
220
+ /**
221
+ * Messages in the queue are not encrypted
222
+ */
223
+ UNENCRYPTED = "NONE",
224
+ /**
225
+ * Server-side KMS encryption with a KMS key managed by SQS.
226
+ */
227
+ KMS_MANAGED = "KMS_MANAGED",
228
+ /**
229
+ * Server-side encryption with a KMS key managed by the user.
230
+ *
231
+ * If `encryptionKey` is specified, this key will be used, otherwise, one will be defined.
232
+ */
233
+ KMS = "KMS",
234
+ /**
235
+ * Server-side encryption key managed by SQS (SSE-SQS).
236
+ *
237
+ * To learn more about SSE-SQS on Amazon SQS, please visit the
238
+ * [Amazon SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html).
239
+ */
240
+ SQS_MANAGED = "SQS_MANAGED"
241
+ }
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.QueueEncryption = exports.QueueBase = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const sqs_grants_generated_1 = require("./sqs-grants.generated");
7
+ const aws_construct_1 = require("../aws-construct");
8
+ const iam = require("../iam");
9
+ const queue_policy_1 = require("./queue-policy");
10
+ /**
11
+ * Reference to a new or existing Amazon SQS queue
12
+ */
13
+ class QueueBase extends aws_construct_1.AwsConstructBase {
14
+ get queueOutputs() {
15
+ return {
16
+ name: this.queueName,
17
+ arn: this.queueArn,
18
+ url: this.queueUrl,
19
+ };
20
+ }
21
+ get outputs() {
22
+ return this.queueOutputs;
23
+ }
24
+ constructor(scope, id, props = {}) {
25
+ super(scope, id, props);
26
+ /**
27
+ * Collection of grant methods for a Queue
28
+ */
29
+ this.grants = sqs_grants_generated_1.QueueGrants.fromQueue(this);
30
+ this.node.addValidation({
31
+ validate: () => this.policy?.document.validateForResourcePolicy() ?? [],
32
+ });
33
+ }
34
+ grantOnKey(grantee, ...actions) {
35
+ const grant = this.encryptionMasterKey
36
+ ? this.encryptionMasterKey.grant(grantee, ...actions)
37
+ : undefined;
38
+ return { grant };
39
+ }
40
+ /**
41
+ * Adds a statement to the IAM resource policy associated with this queue.
42
+ *
43
+ * If this queue was created in this stack (`new Queue`), a queue policy
44
+ * will be automatically created upon the first call to `addToPolicy`.
45
+ */
46
+ addToResourcePolicy(statement) {
47
+ if (!this.policy && this.autoCreatePolicy) {
48
+ this.policy = new queue_policy_1.QueuePolicy(this, "Policy", { queue: this });
49
+ }
50
+ if (this.policy) {
51
+ this.policy.document.addStatements(statement);
52
+ return { statementAdded: true, policyDependable: this.policy };
53
+ }
54
+ return { statementAdded: false };
55
+ }
56
+ /**
57
+ * Grant permissions to consume messages from a queue
58
+ *
59
+ * This will grant the following permissions:
60
+ *
61
+ * - sqs:ChangeMessageVisibility
62
+ * - sqs:DeleteMessage
63
+ * - sqs:ReceiveMessage
64
+ * - sqs:GetQueueAttributes
65
+ * - sqs:GetQueueUrl
66
+ *
67
+ * If encryption is used, permission to use the key to decrypt the contents of the queue will also be granted to the same principal.
68
+ *
69
+ * This will grant the following KMS permissions:
70
+ *
71
+ * - kms:Decrypt
72
+ *
73
+ * @param grantee Principal to grant consume rights to
74
+ */
75
+ grantConsumeMessages(grantee) {
76
+ return this.grants.consumeMessages(grantee);
77
+ }
78
+ /**
79
+ * Grant access to send messages to a queue to the given identity.
80
+ *
81
+ * This will grant the following permissions:
82
+ *
83
+ * - sqs:SendMessage
84
+ * - sqs:GetQueueAttributes
85
+ * - sqs:GetQueueUrl
86
+ *
87
+ * If encryption is used, permission to use the key to encrypt/decrypt the contents of the queue will also be granted to the same principal.
88
+ *
89
+ * This will grant the following KMS permissions:
90
+ *
91
+ * - kms:Decrypt
92
+ * - kms:Encrypt
93
+ * - kms:ReEncrypt*
94
+ * - kms:GenerateDataKey*
95
+ *
96
+ * @param grantee Principal to grant send rights to
97
+ */
98
+ grantSendMessages(grantee) {
99
+ return this.grants.sendMessages(grantee);
100
+ }
101
+ /**
102
+ * Grant an IAM principal permissions to purge all messages from the queue.
103
+ *
104
+ * This will grant the following permissions:
105
+ *
106
+ * - sqs:PurgeQueue
107
+ * - sqs:GetQueueAttributes
108
+ * - sqs:GetQueueUrl
109
+ *
110
+ * @param grantee Principal to grant send rights to
111
+ */
112
+ grantPurge(grantee) {
113
+ return this.grants.purge(grantee);
114
+ }
115
+ /**
116
+ * Grant the actions defined in queueActions to the identity Principal given
117
+ * on this SQS queue resource.
118
+ *
119
+ * @param grantee Principal to grant right to
120
+ * @param actions The actions to grant
121
+ */
122
+ grant(grantee, ...actions) {
123
+ return iam.Grant.addToPrincipalOrResource({
124
+ grantee,
125
+ actions,
126
+ resourceArns: [this.queueArn],
127
+ resource: this,
128
+ });
129
+ }
130
+ }
131
+ exports.QueueBase = QueueBase;
132
+ _a = JSII_RTTI_SYMBOL_1;
133
+ QueueBase[_a] = { fqn: "terraconstructs.aws.notify.QueueBase", version: "0.2.0" };
134
+ /**
135
+ * What kind of encryption to apply to this queue
136
+ */
137
+ var QueueEncryption;
138
+ (function (QueueEncryption) {
139
+ /**
140
+ * Messages in the queue are not encrypted
141
+ */
142
+ QueueEncryption["UNENCRYPTED"] = "NONE";
143
+ /**
144
+ * Server-side KMS encryption with a KMS key managed by SQS.
145
+ */
146
+ QueueEncryption["KMS_MANAGED"] = "KMS_MANAGED";
147
+ /**
148
+ * Server-side encryption with a KMS key managed by the user.
149
+ *
150
+ * If `encryptionKey` is specified, this key will be used, otherwise, one will be defined.
151
+ */
152
+ QueueEncryption["KMS"] = "KMS";
153
+ /**
154
+ * Server-side encryption key managed by SQS (SSE-SQS).
155
+ *
156
+ * To learn more about SSE-SQS on Amazon SQS, please visit the
157
+ * [Amazon SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html).
158
+ */
159
+ QueueEncryption["SQS_MANAGED"] = "SQS_MANAGED";
160
+ })(QueueEncryption || (exports.QueueEncryption = QueueEncryption = {}));
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3F1ZXVlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxpRUFBcUQ7QUFDckQsb0RBSTBCO0FBRTFCLDhCQUE4QjtBQUU5QixpREFBNkM7QUFpSDdDOztHQUVHO0FBQ0gsTUFBc0IsU0FDcEIsU0FBUSxnQ0FBZ0I7SUFHeEIsSUFBVyxZQUFZO1FBQ3JCLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ2xCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQThDRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQTJCLEVBQUU7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFmMUI7O1dBRUc7UUFDYSxXQUFNLEdBQUcsa0NBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFjbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixFQUFFLElBQUksRUFBRTtTQUN4RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUNmLE9BQW1CLEVBQ25CLEdBQUcsT0FBaUI7UUFFcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDckQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUIsQ0FDeEIsU0FBOEI7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDBCQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0ksb0JBQW9CLENBQUMsT0FBdUI7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSSxpQkFBaUIsQ0FBQyxPQUF1QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksVUFBVSxDQUFDLE9BQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDO1lBQ3hDLE9BQU87WUFDUCxPQUFPO1lBQ1AsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBL0tILDhCQWdMQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGVBeUJYO0FBekJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILHVDQUFvQixDQUFBO0lBRXBCOztPQUVHO0lBQ0gsOENBQTJCLENBQUE7SUFFM0I7Ozs7T0FJRztJQUNILDhCQUFXLENBQUE7SUFFWDs7Ozs7T0FLRztJQUNILDhDQUEyQixDQUFBO0FBQzdCLENBQUMsRUF6QlcsZUFBZSwrQkFBZixlQUFlLFFBeUIxQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjIzMi4yL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1zcXMvbGliL3F1ZXVlLWJhc2UudHNcblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFF1ZXVlR3JhbnRzIH0gZnJvbSBcIi4vc3FzLWdyYW50cy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxuICBJQXdzQ29uc3RydWN0LFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0ICogYXMga21zIGZyb20gXCIuLi9lbmNyeXB0aW9uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0IHsgR3JhbnRPbktleVJlc3VsdCwgSUVuY3J5cHRlZFJlc291cmNlLCBJR3JhbnRhYmxlIH0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0IHsgUXVldWVQb2xpY3kgfSBmcm9tIFwiLi9xdWV1ZS1wb2xpY3lcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBRdWV1ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXVlIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXVlIHVybFxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBTUVMgcXVldWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUXVldWUgZXh0ZW5kcyBpYW0uSUF3c0NvbnN0cnVjdFdpdGhQb2xpY3ksIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBxdWV1ZU91dHB1dHM6IFF1ZXVlT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIHF1ZXVlXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgb2YgdGhpcyBxdWV1ZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBxdWV1ZVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHF1ZXVlXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIHF1ZXVlIGlzIHNlcnZlci1zaWRlIGVuY3J5cHRlZCwgdGhpcyBpcyB0aGUgS01TIGVuY3J5cHRpb24ga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbk1hc3RlcktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcXVldWUgaXMgYW4gQW1hem9uIFNRUyBGSUZPIHF1ZXVlLiBJZiBmYWxzZSwgdGhpcyBpcyBhIHN0YW5kYXJkIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlmbzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIHF1ZXVlIGFyZSBlbmNyeXB0ZWQsIGFuZCBieSB3aGF0IHR5cGUgb2Yga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvblR5cGU/OiBRdWV1ZUVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIGNvbnN1bWUgbWVzc2FnZXMgZnJvbSBhIHF1ZXVlXG4gICAqXG4gICAqIFRoaXMgd2lsbCBncmFudCB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOlxuICAgKlxuICAgKiAgIC0gc3FzOkNoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5XG4gICAqICAgLSBzcXM6RGVsZXRlTWVzc2FnZVxuICAgKiAgIC0gc3FzOlJlY2VpdmVNZXNzYWdlXG4gICAqICAgLSBzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXG4gICAqICAgLSBzcXM6R2V0UXVldWVVcmxcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgUHJpbmNpcGFsIHRvIGdyYW50IGNvbnN1bWUgcmlnaHRzIHRvXG4gICAqL1xuICBncmFudENvbnN1bWVNZXNzYWdlcyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgYWNjZXNzIHRvIHNlbmQgbWVzc2FnZXMgdG8gYSBxdWV1ZSB0byB0aGUgZ2l2ZW4gaWRlbnRpdHkuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBncmFudCB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOlxuICAgKlxuICAgKiAgLSBzcXM6U2VuZE1lc3NhZ2VcbiAgICogIC0gc3FzOkdldFF1ZXVlQXR0cmlidXRlc1xuICAgKiAgLSBzcXM6R2V0UXVldWVVcmxcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgUHJpbmNpcGFsIHRvIGdyYW50IHNlbmQgcmlnaHRzIHRvXG4gICAqL1xuICBncmFudFNlbmRNZXNzYWdlcyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgYW4gSUFNIHByaW5jaXBhbCBwZXJtaXNzaW9ucyB0byBwdXJnZSBhbGwgbWVzc2FnZXMgZnJvbSB0aGUgcXVldWUuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBncmFudCB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOlxuICAgKlxuICAgKiAgLSBzcXM6UHVyZ2VRdWV1ZVxuICAgKiAgLSBzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXG4gICAqICAtIHNxczpHZXRRdWV1ZVVybFxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBQcmluY2lwYWwgdG8gZ3JhbnQgc2VuZCByaWdodHMgdG9cbiAgICovXG4gIGdyYW50UHVyZ2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBhY3Rpb25zIGRlZmluZWQgaW4gcXVldWVBY3Rpb25zIHRvIHRoZSBpZGVudGl0eSBQcmluY2lwYWwgZ2l2ZW5cbiAgICogb24gdGhpcyBTUVMgcXVldWUgcmVzb3VyY2UuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFByaW5jaXBhbCB0byBncmFudCByaWdodCB0b1xuICAgKiBAcGFyYW0gcXVldWVBY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4ucXVldWVBY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBuZXcgb3IgZXhpc3RpbmcgQW1hem9uIFNRUyBxdWV1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUXVldWVCYXNlXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElRdWV1ZSwgSUVuY3J5cHRlZFJlc291cmNlXG57XG4gIHB1YmxpYyBnZXQgcXVldWVPdXRwdXRzKCk6IFF1ZXVlT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMucXVldWVOYW1lLFxuICAgICAgYXJuOiB0aGlzLnF1ZXVlQXJuLFxuICAgICAgdXJsOiB0aGlzLnF1ZXVlVXJsLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucXVldWVPdXRwdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhpcyBxdWV1ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgb2YgdGhpcyBxdWV1ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHF1ZXVlVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgcXVldWVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBxdWV1ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBxdWV1ZSBpcyBzZXJ2ZXItc2lkZSBlbmNyeXB0ZWQsIHRoaXMgaXMgdGhlIEtNUyBlbmNyeXB0aW9uIGtleS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBlbmNyeXB0aW9uTWFzdGVyS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBxdWV1ZSBpcyBhbiBBbWF6b24gU1FTIEZJRk8gcXVldWUuIElmIGZhbHNlLCB0aGlzIGlzIGEgc3RhbmRhcmQgcXVldWUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZmlmbzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29udGVudHMgb2YgdGhlIHF1ZXVlIGFyZSBlbmNyeXB0ZWQsIGFuZCBieSB3aGF0IHR5cGUgb2Yga2V5LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuY3J5cHRpb25UeXBlPzogUXVldWVFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9mIGdyYW50IG1ldGhvZHMgZm9yIGEgUXVldWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmFudHMgPSBRdWV1ZUdyYW50cy5mcm9tUXVldWUodGhpcyk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiBwb2xpY3kgb2JqZWN0cy5cbiAgICpcbiAgICogU2V0IGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbjtcblxuICBwcml2YXRlIHBvbGljeT86IFF1ZXVlUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBd3NDb25zdHJ1Y3RQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4gdGhpcy5wb2xpY3k/LmRvY3VtZW50LnZhbGlkYXRlRm9yUmVzb3VyY2VQb2xpY3koKSA/PyBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudE9uS2V5KFxuICAgIGdyYW50ZWU6IElHcmFudGFibGUsXG4gICAgLi4uYWN0aW9uczogc3RyaW5nW11cbiAgKTogR3JhbnRPbktleVJlc3VsdCB7XG4gICAgY29uc3QgZ3JhbnQgPSB0aGlzLmVuY3J5cHRpb25NYXN0ZXJLZXlcbiAgICAgID8gdGhpcy5lbmNyeXB0aW9uTWFzdGVyS2V5LmdyYW50KGdyYW50ZWUsIC4uLmFjdGlvbnMpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBncmFudCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIElBTSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcXVldWUuXG4gICAqXG4gICAqIElmIHRoaXMgcXVldWUgd2FzIGNyZWF0ZWQgaW4gdGhpcyBzdGFjayAoYG5ldyBRdWV1ZWApLCBhIHF1ZXVlIHBvbGljeVxuICAgKiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1cG9uIHRoZSBmaXJzdCBjYWxsIHRvIGBhZGRUb1BvbGljeWAuXG4gICAqL1xuICBwdWJsaWMgYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICBpZiAoIXRoaXMucG9saWN5ICYmIHRoaXMuYXV0b0NyZWF0ZVBvbGljeSkge1xuICAgICAgdGhpcy5wb2xpY3kgPSBuZXcgUXVldWVQb2xpY3kodGhpcywgXCJQb2xpY3lcIiwgeyBxdWV1ZTogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb2xpY3kpIHtcbiAgICAgIHRoaXMucG9saWN5LmRvY3VtZW50LmFkZFN0YXRlbWVudHMoc3RhdGVtZW50KTtcbiAgICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiB0cnVlLCBwb2xpY3lEZXBlbmRhYmxlOiB0aGlzLnBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIGNvbnN1bWUgbWVzc2FnZXMgZnJvbSBhIHF1ZXVlXG4gICAqXG4gICAqIFRoaXMgd2lsbCBncmFudCB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOlxuICAgKlxuICAgKiAgIC0gc3FzOkNoYW5nZU1lc3NhZ2VWaXNpYmlsaXR5XG4gICAqICAgLSBzcXM6RGVsZXRlTWVzc2FnZVxuICAgKiAgIC0gc3FzOlJlY2VpdmVNZXNzYWdlXG4gICAqICAgLSBzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXG4gICAqICAgLSBzcXM6R2V0UXVldWVVcmxcbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGRlY3J5cHQgdGhlIGNvbnRlbnRzIG9mIHRoZSBxdWV1ZSB3aWxsIGFsc28gYmUgZ3JhbnRlZCB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBncmFudCB0aGUgZm9sbG93aW5nIEtNUyBwZXJtaXNzaW9uczpcbiAgICpcbiAgICogICAtIGttczpEZWNyeXB0XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFByaW5jaXBhbCB0byBncmFudCBjb25zdW1lIHJpZ2h0cyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50Q29uc3VtZU1lc3NhZ2VzKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnRzLmNvbnN1bWVNZXNzYWdlcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBhY2Nlc3MgdG8gc2VuZCBtZXNzYWdlcyB0byBhIHF1ZXVlIHRvIHRoZSBnaXZlbiBpZGVudGl0eS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGdyYW50IHRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnM6XG4gICAqXG4gICAqICAtIHNxczpTZW5kTWVzc2FnZVxuICAgKiAgLSBzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXG4gICAqICAtIHNxczpHZXRRdWV1ZVVybFxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZW5jcnlwdC9kZWNyeXB0IHRoZSBjb250ZW50cyBvZiB0aGUgcXVldWUgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZ3JhbnQgdGhlIGZvbGxvd2luZyBLTVMgcGVybWlzc2lvbnM6XG4gICAqXG4gICAqICAtIGttczpEZWNyeXB0XG4gICAqICAtIGttczpFbmNyeXB0XG4gICAqICAtIGttczpSZUVuY3J5cHQqXG4gICAqICAtIGttczpHZW5lcmF0ZURhdGFLZXkqXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFByaW5jaXBhbCB0byBncmFudCBzZW5kIHJpZ2h0cyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50U2VuZE1lc3NhZ2VzKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnRzLnNlbmRNZXNzYWdlcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBhbiBJQU0gcHJpbmNpcGFsIHBlcm1pc3Npb25zIHRvIHB1cmdlIGFsbCBtZXNzYWdlcyBmcm9tIHRoZSBxdWV1ZS5cbiAgICpcbiAgICogVGhpcyB3aWxsIGdyYW50IHRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbnM6XG4gICAqXG4gICAqICAtIHNxczpQdXJnZVF1ZXVlXG4gICAqICAtIHNxczpHZXRRdWV1ZUF0dHJpYnV0ZXNcbiAgICogIC0gc3FzOkdldFF1ZXVlVXJsXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFByaW5jaXBhbCB0byBncmFudCBzZW5kIHJpZ2h0cyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50UHVyZ2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudHMucHVyZ2UoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgdGhlIGFjdGlvbnMgZGVmaW5lZCBpbiBxdWV1ZUFjdGlvbnMgdG8gdGhlIGlkZW50aXR5IFByaW5jaXBhbCBnaXZlblxuICAgKiBvbiB0aGlzIFNRUyBxdWV1ZSByZXNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgUHJpbmNpcGFsIHRvIGdyYW50IHJpZ2h0IHRvXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbE9yUmVzb3VyY2Uoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLnF1ZXVlQXJuXSxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogV2hhdCBraW5kIG9mIGVuY3J5cHRpb24gdG8gYXBwbHkgdG8gdGhpcyBxdWV1ZVxuICovXG5leHBvcnQgZW51bSBRdWV1ZUVuY3J5cHRpb24ge1xuICAvKipcbiAgICogTWVzc2FnZXMgaW4gdGhlIHF1ZXVlIGFyZSBub3QgZW5jcnlwdGVkXG4gICAqL1xuICBVTkVOQ1JZUFRFRCA9IFwiTk9ORVwiLFxuXG4gIC8qKlxuICAgKiBTZXJ2ZXItc2lkZSBLTVMgZW5jcnlwdGlvbiB3aXRoIGEgS01TIGtleSBtYW5hZ2VkIGJ5IFNRUy5cbiAgICovXG4gIEtNU19NQU5BR0VEID0gXCJLTVNfTUFOQUdFRFwiLFxuXG4gIC8qKlxuICAgKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggYSBLTVMga2V5IG1hbmFnZWQgYnkgdGhlIHVzZXIuXG4gICAqXG4gICAqIElmIGBlbmNyeXB0aW9uS2V5YCBpcyBzcGVjaWZpZWQsIHRoaXMga2V5IHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlLCBvbmUgd2lsbCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgS01TID0gXCJLTVNcIixcblxuICAvKipcbiAgICogU2VydmVyLXNpZGUgZW5jcnlwdGlvbiBrZXkgbWFuYWdlZCBieSBTUVMgKFNTRS1TUVMpLlxuICAgKlxuICAgKiBUbyBsZWFybiBtb3JlIGFib3V0IFNTRS1TUVMgb24gQW1hem9uIFNRUywgcGxlYXNlIHZpc2l0IHRoZVxuICAgKiBbQW1hem9uIFNRUyBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTU2ltcGxlUXVldWVTZXJ2aWNlL2xhdGVzdC9TUVNEZXZlbG9wZXJHdWlkZS9zcXMtc2VydmVyLXNpZGUtZW5jcnlwdGlvbi5odG1sKS5cbiAgICovXG4gIFNRU19NQU5BR0VEID0gXCJTUVNfTUFOQUdFRFwiLFxufVxuIl19
@@ -35,5 +35,5 @@ class QueuePolicy extends aws_construct_1.AwsConstructBase {
35
35
  }
36
36
  exports.QueuePolicy = QueuePolicy;
37
37
  _a = JSII_RTTI_SYMBOL_1;
38
- QueuePolicy[_a] = { fqn: "terraconstructs.aws.notify.QueuePolicy", version: "0.1.10" };
38
+ QueuePolicy[_a] = { fqn: "terraconstructs.aws.notify.QueuePolicy", version: "0.2.0" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcXVldWUtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXFEO0FBRXJELG9EQUF1RTtBQUV2RSxnQ0FBd0M7QUFZeEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsV0FBWSxTQUFRLGdDQUFnQjtJQUsvQyxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBQ0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkQsSUFBSSw2QkFBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWhCSCxrQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXNRdWV1ZVBvbGljeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcIi4vXCI7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuLi9pYW1cIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSBTUVMgcXVldWVzIHdpdGggYSBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVBvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNldCBvZiBxdWV1ZXMgdGhpcyBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogVGhlIHBvbGljeSBmb3IgYW4gU1FTIFF1ZXVlXG4gKlxuICogUG9saWNpZXMgZGVmaW5lIHRoZSBvcGVyYXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgb24gdGhpcyByZXNvdXJjZS5cbiAqXG4gKiBZb3UgYWxtb3N0IG5ldmVyIG5lZWQgdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0IGRpcmVjdGx5LlxuICpcbiAqIEFsbCBBV1MgcmVzb3VyY2VzIHRoYXQgc3VwcG9ydCByZXNvdXJjZSBwb2xpY2llcyBoYXZlIGEgbWV0aG9kIGNhbGxlZFxuICogYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBuZXcgcmVzb3VyY2VcbiAqIHBvbGljeSBpZiBvbmUgZG9lc24ndCBleGlzdCB5ZXQsIG90aGVyd2lzZSBpdCB3aWxsIGFkZCB0byB0aGUgZXhpc3RpbmdcbiAqIHBvbGljeS5cbiAqXG4gKiBQcmVmZXIgdG8gdXNlIGBhZGRUb1Jlc291cmNlUG9saWN5KClgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWV1ZVBvbGljeSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICAvKipcbiAgICogVGhlIElBTSBwb2xpY3kgZG9jdW1lbnQgZm9yIHRoaXMgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBQb2xpY3lEb2N1bWVudDtcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50Lm91dHB1dHM7XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFF1ZXVlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFBvbGljeURvY3VtZW50KHRoaXMsIFwiUG9saWN5XCIpO1xuXG4gICAgbmV3IHNxc1F1ZXVlUG9saWN5LlNxc1F1ZXVlUG9saWN5KHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICBxdWV1ZVVybDogcHJvcHMucXVldWUucXVldWVVcmwsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==