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
@@ -494,7 +494,7 @@ class Stream extends StreamBase {
494
494
  }
495
495
  exports.Stream = Stream;
496
496
  _a = JSII_RTTI_SYMBOL_1;
497
- Stream[_a] = { fqn: "terraconstructs.aws.notify.Stream", version: "0.0.17" };
497
+ Stream[_a] = { fqn: "terraconstructs.aws.notify.Stream", version: "0.0.18" };
498
498
  /**
499
499
  * What kind of server-side encryption to apply to this stream
500
500
  */
@@ -0,0 +1,20 @@
1
+ import * as constructs from "constructs";
2
+ /**
3
+ * Information about the Codebuild or CodePipeline associated with a notification source.
4
+ */
5
+ export interface NotificationRuleSourceConfig {
6
+ /**
7
+ * The Amazon Resource Name (ARN) of the notification source.
8
+ */
9
+ readonly sourceArn: string;
10
+ }
11
+ /**
12
+ * Represents a notification source
13
+ * The source that allows CodeBuild and CodePipeline to associate with this rule.
14
+ */
15
+ export interface INotificationRuleSource {
16
+ /**
17
+ * Returns a source configuration for notification rule.
18
+ */
19
+ bindAsNotificationRuleSource(scope: constructs.Construct): NotificationRuleSourceConfig;
20
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/a2c633f1e698249496f11338312ab42bd7b1e4f0/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule-source.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXJ1bGUtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvbm90aWZpY2F0aW9uLXJ1bGUtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4SkFBOEoiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9hMmM2MzNmMWU2OTgyNDk0OTZmMTEzMzgzMTJhYjQyYmQ3YjFlNGYwL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1jb2Rlc3Rhcm5vdGlmaWNhdGlvbnMvbGliL25vdGlmaWNhdGlvbi1ydWxlLXNvdXJjZS50c1xuXG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIENvZGVidWlsZCBvciBDb2RlUGlwZWxpbmUgYXNzb2NpYXRlZCB3aXRoIGEgbm90aWZpY2F0aW9uIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25SdWxlU291cmNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbm90aWZpY2F0aW9uIHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBub3RpZmljYXRpb24gc291cmNlXG4gKiBUaGUgc291cmNlIHRoYXQgYWxsb3dzIENvZGVCdWlsZCBhbmQgQ29kZVBpcGVsaW5lIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTm90aWZpY2F0aW9uUnVsZVNvdXJjZSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIG5vdGlmaWNhdGlvbiBydWxlLlxuICAgKi9cbiAgYmluZEFzTm90aWZpY2F0aW9uUnVsZVNvdXJjZShcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICk6IE5vdGlmaWNhdGlvblJ1bGVTb3VyY2VDb25maWc7XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import * as constructs from "constructs";
2
+ /**
3
+ * Information about the SNS topic or AWS Chatbot client associated with a notification target.
4
+ */
5
+ export interface NotificationRuleTargetConfig {
6
+ /**
7
+ * The target type. Can be an Amazon SNS topic or AWS Chatbot client.
8
+ */
9
+ readonly targetType: string;
10
+ /**
11
+ * The Amazon Resource Name (ARN) of the Amazon SNS topic or AWS Chatbot client.
12
+ */
13
+ readonly targetAddress: string;
14
+ }
15
+ /**
16
+ * Represents a notification target
17
+ * That allows AWS Chatbot and SNS topic to associate with this rule target.
18
+ */
19
+ export interface INotificationRuleTarget {
20
+ /**
21
+ * Returns a target configuration for notification rule.
22
+ */
23
+ bindAsNotificationRuleTarget(scope: constructs.Construct): NotificationRuleTargetConfig;
24
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/a2c633f1e698249496f11338312ab42bd7b1e4f0/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule-target.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXJ1bGUtdGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvbm90aWZpY2F0aW9uLXJ1bGUtdGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw4SkFBOEoiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9hMmM2MzNmMWU2OTgyNDk0OTZmMTEzMzgzMTJhYjQyYmQ3YjFlNGYwL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1jb2Rlc3Rhcm5vdGlmaWNhdGlvbnMvbGliL25vdGlmaWNhdGlvbi1ydWxlLXRhcmdldC50c1xuXG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIFNOUyB0b3BpYyBvciBBV1MgQ2hhdGJvdCBjbGllbnQgYXNzb2NpYXRlZCB3aXRoIGEgbm90aWZpY2F0aW9uIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25SdWxlVGFyZ2V0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdHlwZS4gQ2FuIGJlIGFuIEFtYXpvbiBTTlMgdG9waWMgb3IgQVdTIENoYXRib3QgY2xpZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTTlMgdG9waWMgb3IgQVdTIENoYXRib3QgY2xpZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0QWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBub3RpZmljYXRpb24gdGFyZ2V0XG4gKiBUaGF0IGFsbG93cyBBV1MgQ2hhdGJvdCBhbmQgU05TIHRvcGljIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgcnVsZSB0YXJnZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5vdGlmaWNhdGlvblJ1bGVUYXJnZXQge1xuICAvKipcbiAgICogUmV0dXJucyBhIHRhcmdldCBjb25maWd1cmF0aW9uIGZvciBub3RpZmljYXRpb24gcnVsZS5cbiAgICovXG4gIGJpbmRBc05vdGlmaWNhdGlvblJ1bGVUYXJnZXQoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICApOiBOb3RpZmljYXRpb25SdWxlVGFyZ2V0Q29uZmlnO1xufVxuIl19
@@ -0,0 +1,123 @@
1
+ import * as constructs from "constructs";
2
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "..";
3
+ import { INotificationRuleSource } from "./notification-rule-source";
4
+ import { INotificationRuleTarget } from "./notification-rule-target";
5
+ /**
6
+ * The level of detail to include in the notifications for this resource.
7
+ */
8
+ export declare enum DetailType {
9
+ /**
10
+ * BASIC will include only the contents of the event as it would appear in AWS CloudWatch
11
+ */
12
+ BASIC = "BASIC",
13
+ /**
14
+ * FULL will include any supplemental information provided by AWS CodeStar Notifications and/or the service for the resource for which the notification is created.
15
+ */
16
+ FULL = "FULL"
17
+ }
18
+ /**
19
+ * Standard set of options for `notifyOnXxx` codestar notification handler on construct
20
+ */
21
+ export interface NotificationRuleOptions {
22
+ /**
23
+ * The name for the notification rule.
24
+ * Notification rule names must be unique in your AWS account.
25
+ *
26
+ * @default - generated from the `id`
27
+ */
28
+ readonly notificationRuleName?: string;
29
+ /**
30
+ * The status of the notification rule.
31
+ * If the enabled is set to DISABLED, notifications aren't sent for the notification rule.
32
+ *
33
+ * @default true
34
+ */
35
+ readonly enabled?: boolean;
36
+ /**
37
+ * The level of detail to include in the notifications for this resource.
38
+ * BASIC will include only the contents of the event as it would appear in AWS CloudWatch.
39
+ * FULL will include any supplemental information provided by AWS CodeStar Notifications and/or the service for the resource for which the notification is created.
40
+ *
41
+ * @default DetailType.FULL
42
+ */
43
+ readonly detailType?: DetailType;
44
+ }
45
+ /**
46
+ * Properties for a new notification rule
47
+ */
48
+ export interface NotificationRuleProps extends AwsConstructProps, NotificationRuleOptions {
49
+ /**
50
+ * A list of event types associated with this notification rule.
51
+ * For a complete list of event types and IDs, see Notification concepts in the Developer Tools Console User Guide.
52
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#concepts-api
53
+ */
54
+ readonly events: string[];
55
+ /**
56
+ * The Amazon Resource Name (ARN) of the resource to associate with the notification rule.
57
+ * Currently, Supported sources include pipelines in AWS CodePipeline, build projects in AWS CodeBuild, and repositories in AWS CodeCommit in this L2 constructor.
58
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html#cfn-codestarnotifications-notificationrule-resource
59
+ */
60
+ readonly source: INotificationRuleSource;
61
+ /**
62
+ * The targets to register for the notification destination.
63
+ *
64
+ * @default - No targets are added to the rule. Use `addTarget()` to add a target.
65
+ */
66
+ readonly targets?: INotificationRuleTarget[];
67
+ /**
68
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.88.0/docs/resources/codestarnotifications_notification_rule#tags CodestarnotificationsNotificationRule#tags}
69
+ */
70
+ readonly tags?: {
71
+ [key: string]: string;
72
+ };
73
+ }
74
+ /**
75
+ * Represents a notification rule
76
+ */
77
+ export interface INotificationRule extends IAwsConstruct {
78
+ /**
79
+ * The ARN of the notification rule (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde)
80
+ *
81
+ * @attribute
82
+ */
83
+ readonly notificationRuleArn: string;
84
+ /**
85
+ * Adds target to notification rule
86
+ *
87
+ * @param target The SNS topic or AWS Chatbot Slack target
88
+ * @returns boolean - return true if it had any effect
89
+ */
90
+ addTarget(target: INotificationRuleTarget): boolean;
91
+ }
92
+ /**
93
+ * A new notification rule
94
+ *
95
+ * @resource AWS::CodeStarNotifications::NotificationRule
96
+ */
97
+ export declare class NotificationRule extends AwsConstructBase implements INotificationRule {
98
+ /**
99
+ * Import an existing notification rule provided an ARN
100
+ * @param scope The parent creating construct
101
+ * @param id The construct's name
102
+ * @param notificationRuleArn Notification rule ARN (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde)
103
+ */
104
+ static fromNotificationRuleArn(scope: constructs.Construct, id: string, notificationRuleArn: string): INotificationRule;
105
+ /**
106
+ * @attribute
107
+ */
108
+ readonly notificationRuleArn: string;
109
+ private readonly targetList;
110
+ private readonly events;
111
+ private readonly resource;
112
+ get outputs(): Record<string, any>;
113
+ constructor(scope: constructs.Construct, id: string, props: NotificationRuleProps);
114
+ addTarget(target: INotificationRuleTarget): boolean;
115
+ /**
116
+ * Adds events to notification rule
117
+ *
118
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-pipeline
119
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-buildproject
120
+ * @param events The list of event types for AWS Codebuild and AWS CodePipeline
121
+ */
122
+ private addEvents;
123
+ }
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NotificationRule = exports.DetailType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/bc96ee17a18c19b98e4ad052bed7c24da2371050/packages/aws-cdk-lib/aws-codestarnotifications/lib/notification-rule.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const __1 = require("..");
10
+ /**
11
+ * The level of detail to include in the notifications for this resource.
12
+ */
13
+ var DetailType;
14
+ (function (DetailType) {
15
+ /**
16
+ * BASIC will include only the contents of the event as it would appear in AWS CloudWatch
17
+ */
18
+ DetailType["BASIC"] = "BASIC";
19
+ /**
20
+ * FULL will include any supplemental information provided by AWS CodeStar Notifications and/or the service for the resource for which the notification is created.
21
+ */
22
+ DetailType["FULL"] = "FULL";
23
+ })(DetailType || (exports.DetailType = DetailType = {}));
24
+ /**
25
+ * A new notification rule
26
+ *
27
+ * @resource AWS::CodeStarNotifications::NotificationRule
28
+ */
29
+ class NotificationRule extends __1.AwsConstructBase {
30
+ /**
31
+ * Import an existing notification rule provided an ARN
32
+ * @param scope The parent creating construct
33
+ * @param id The construct's name
34
+ * @param notificationRuleArn Notification rule ARN (i.e. arn:aws:codestar-notifications:::notificationrule/01234abcde)
35
+ */
36
+ static fromNotificationRuleArn(scope, id, notificationRuleArn) {
37
+ class Import extends __1.AwsConstructBase {
38
+ constructor() {
39
+ super(...arguments);
40
+ this.notificationRuleArn = notificationRuleArn;
41
+ }
42
+ get outputs() {
43
+ return { notificationRuleArn: this.notificationRuleArn };
44
+ }
45
+ addTarget(_target) {
46
+ cdktf_1.Annotations.of(this).addWarning(`Cannot add targets to imported NotificationRule '${this.node.id}'. Define targets directly on the source or manage permissions separately.`);
47
+ return false;
48
+ }
49
+ }
50
+ return new Import(scope, id, {
51
+ environmentFromArn: notificationRuleArn,
52
+ });
53
+ }
54
+ get outputs() {
55
+ return { notificationRuleArn: this.notificationRuleArn };
56
+ }
57
+ constructor(scope, id, props) {
58
+ super(scope, id, props);
59
+ this.targetList = [];
60
+ this.events = [];
61
+ const source = props.source.bindAsNotificationRuleSource(this);
62
+ this.addEvents(props.events);
63
+ // Process initial targets from props
64
+ props.targets?.forEach((target) => {
65
+ this.addTarget(target);
66
+ });
67
+ const ruleName = props.notificationRuleName
68
+ ? props.notificationRuleName.slice(-64) // Ensure 64 char limit
69
+ : this.stack.uniqueResourceName(this, { maxLength: 64 });
70
+ this.resource =
71
+ new provider_aws_1.codestarnotificationsNotificationRule.CodestarnotificationsNotificationRule(this, "Resource", {
72
+ name: ruleName,
73
+ detailType: props.detailType ?? DetailType.FULL,
74
+ eventTypeIds: cdktf_1.Lazy.listValue({
75
+ produce: () => {
76
+ if (cdktf_1.Token.isUnresolved(props.events)) {
77
+ return props.events;
78
+ }
79
+ return this.events;
80
+ },
81
+ }),
82
+ resource: source.sourceArn,
83
+ status: props.enabled === false
84
+ ? "DISABLED"
85
+ : props.enabled === true || props.enabled === undefined
86
+ ? "ENABLED"
87
+ : undefined, // Let Terraform handle default if undefined
88
+ // Use Lazy producer to handle the potentially dynamic list of targets
89
+ target: cdktf_1.Lazy.anyValue({
90
+ produce: () => this.targetList.map((t) => provider_aws_1.codestarnotificationsNotificationRule.codestarnotificationsNotificationRuleTargetToTerraform({
91
+ address: t.targetAddress,
92
+ type: t.targetType,
93
+ })),
94
+ }),
95
+ tags: props.tags,
96
+ });
97
+ this.notificationRuleArn = this.resource.arn;
98
+ }
99
+ addTarget(target) {
100
+ const boundTarget = target.bindAsNotificationRuleTarget(this);
101
+ // Check if target already exists to avoid duplicates if this method were to update the resource
102
+ const exists = this.targetList.some((t) => t.targetAddress === boundTarget.targetAddress &&
103
+ t.targetType === boundTarget.targetType);
104
+ if (!exists) {
105
+ this.targetList.push(boundTarget);
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
+ /**
111
+ * Adds events to notification rule
112
+ *
113
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-pipeline
114
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-buildproject
115
+ * @param events The list of event types for AWS Codebuild and AWS CodePipeline
116
+ */
117
+ addEvents(events) {
118
+ events.forEach((event) => {
119
+ if (this.events.includes(event)) {
120
+ return;
121
+ }
122
+ this.events.push(event);
123
+ });
124
+ }
125
+ }
126
+ exports.NotificationRule = NotificationRule;
127
+ _a = JSII_RTTI_SYMBOL_1;
128
+ NotificationRule[_a] = { fqn: "terraconstructs.aws.notify.NotificationRule", version: "0.0.18" };
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL25vdGlmeS9ub3RpZmljYXRpb24tcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVKQUF1SjtBQUV2SixzREFBNEU7QUFDNUUsaUNBQWlEO0FBRWpELDBCQUF3RTtBQU94RTs7R0FFRztBQUNILElBQVksVUFVWDtBQVZELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILDZCQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDJCQUFhLENBQUE7QUFDZixDQUFDLEVBVlcsVUFBVSwwQkFBVixVQUFVLFFBVXJCO0FBK0ZEOzs7O0dBSUc7QUFDSCxNQUFhLGdCQUNYLFNBQVEsb0JBQWdCO0lBR3hCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHVCQUF1QixDQUNuQyxLQUEyQixFQUMzQixFQUFVLEVBQ1YsbUJBQTJCO1FBRTNCLE1BQU0sTUFBTyxTQUFRLG9CQUFnQjtZQUFyQzs7Z0JBQ1csd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7WUFXckQsQ0FBQztZQVZDLElBQVcsT0FBTztnQkFDaEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNELENBQUM7WUFFTSxTQUFTLENBQUMsT0FBZ0M7Z0JBQy9DLG1CQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FDN0Isb0RBQW9ELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSw0RUFBNEUsQ0FDN0ksQ0FBQztnQkFDRixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUMzQixrQkFBa0IsRUFBRSxtQkFBbUI7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVdELElBQVcsT0FBTztRQUNoQixPQUFPLEVBQUUsbUJBQW1CLEVB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QWE7WUFDN0MsQ0FBQyxDQUFDLFVBQVUsS0FBSyxXQUFXLENBQUMsVUFBVSxDQUMxQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0ssU0FBUyxDQUFDLE1BQWdCO1FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXpJSCw0Q0EwSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9iYzk2ZWUxN2ExOGMxOWI5OGU0YWQwNTJiZWQ3YzI0ZGEyMzcxMDUwL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1jb2Rlc3Rhcm5vdGlmaWNhdGlvbnMvbGliL25vdGlmaWNhdGlvbi1ydWxlLnRzXG5cbmltcG9ydCB7IGNvZGVzdGFybm90aWZpY2F0aW9uc05vdGlmaWNhdGlvblJ1bGUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMsIExhenksIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcywgSUF3c0NvbnN0cnVjdCB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvblJ1bGVTb3VyY2UgfSBmcm9tIFwiLi9ub3RpZmljYXRpb24tcnVsZS1zb3VyY2VcIjtcbmltcG9ydCB7XG4gIElOb3RpZmljYXRpb25SdWxlVGFyZ2V0LFxuICBOb3RpZmljYXRpb25SdWxlVGFyZ2V0Q29uZmlnLFxufSBmcm9tIFwiLi9ub3RpZmljYXRpb24tcnVsZS10YXJnZXRcIjtcblxuLyoqXG4gKiBUaGUgbGV2ZWwgb2YgZGV0YWlsIHRvIGluY2x1ZGUgaW4gdGhlIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBlbnVtIERldGFpbFR5cGUge1xuICAvKipcbiAgICogQkFTSUMgd2lsbCBpbmNsdWRlIG9ubHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBldmVudCBhcyBpdCB3b3VsZCBhcHBlYXIgaW4gQVdTIENsb3VkV2F0Y2hcbiAgICovXG4gIEJBU0lDID0gXCJCQVNJQ1wiLFxuXG4gIC8qKlxuICAgKiBGVUxMIHdpbGwgaW5jbHVkZSBhbnkgc3VwcGxlbWVudGFsIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IEFXUyBDb2RlU3RhciBOb3RpZmljYXRpb25zIGFuZC9vciB0aGUgc2VydmljZSBmb3IgdGhlIHJlc291cmNlIGZvciB3aGljaCB0aGUgbm90aWZpY2F0aW9uIGlzIGNyZWF0ZWQuXG4gICAqL1xuICBGVUxMID0gXCJGVUxMXCIsXG59XG5cbi8qKlxuICogU3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMgZm9yIGBub3RpZnlPblh4eGAgY29kZXN0YXIgbm90aWZpY2F0aW9uIGhhbmRsZXIgb24gY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uUnVsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBub3RpZmljYXRpb24gcnVsZS5cbiAgICogTm90aWZpY2F0aW9uIHJ1bGUgbmFtZXMgbXVzdCBiZSB1bmlxdWUgaW4geW91ciBBV1MgYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgZnJvbSB0aGUgYGlkYFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uUnVsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIG5vdGlmaWNhdGlvbiBydWxlLlxuICAgKiBJZiB0aGUgZW5hYmxlZCBpcyBzZXQgdG8gRElTQUJMRUQsIG5vdGlmaWNhdGlvbnMgYXJlbid0IHNlbnQgZm9yIHRoZSBub3RpZmljYXRpb24gcnVsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiBkZXRhaWwgdG8gaW5jbHVkZSBpbiB0aGUgbm90aWZpY2F0aW9ucyBmb3IgdGhpcyByZXNvdXJjZS5cbiAgICogQkFTSUMgd2lsbCBpbmNsdWRlIG9ubHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBldmVudCBhcyBpdCB3b3VsZCBhcHBlYXIgaW4gQVdTIENsb3VkV2F0Y2guXG4gICAqIEZVTEwgd2lsbCBpbmNsdWRlIGFueSBzdXBwbGVtZW50YWwgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgQVdTIENvZGVTdGFyIE5vdGlmaWNhdGlvbnMgYW5kL29yIHRoZSBzZXJ2aWNlIGZvciB0aGUgcmVzb3VyY2UgZm9yIHdoaWNoIHRoZSBub3RpZmljYXRpb24gaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRGV0YWlsVHlwZS5GVUxMXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxUeXBlPzogRGV0YWlsVHlwZTtcblxuICAvLyBjcmVhdGVkQnkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgVGVycmFmb3JtIHJlc291cmNlXG4gIC8vIC8qKlxuICAvLyAgKiBUaGUgbmFtZSBvciBlbWFpbCBhbGlhcyBvZiB0aGUgcGVyc29uIHdobyBjcmVhdGVkIHRoZSBub3RpZmljYXRpb24gcnVsZS5cbiAgLy8gICogSWYgbm90IHNwZWNpZmllZCwgaXQgbWVhbnMgdGhhdCB0aGUgY3JlYXRvcidzIGFsaWFzIGlzIG5vdCBwcm92aWRlZC5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgLSBObyBhbGlhcyBwcm92aWRlZFxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgY3JlYXRlZEJ5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IG5vdGlmaWNhdGlvbiBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uUnVsZVByb3BzXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMsXG4gICAgTm90aWZpY2F0aW9uUnVsZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGV2ZW50IHR5cGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vdGlmaWNhdGlvbiBydWxlLlxuICAgKiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZW50IHR5cGVzIGFuZCBJRHMsIHNlZSBOb3RpZmljYXRpb24gY29uY2VwdHMgaW4gdGhlIERldmVsb3BlciBUb29scyBDb25zb2xlIFVzZXIgR3VpZGUuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2R0Y29uc29sZS9sYXRlc3QvdXNlcmd1aWRlL2NvbmNlcHRzLmh0bWwjY29uY2VwdHMtYXBpXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHJlc291cmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBub3RpZmljYXRpb24gcnVsZS5cbiAgICogQ3VycmVudGx5LCBTdXBwb3J0ZWQgc291cmNlcyBpbmNsdWRlIHBpcGVsaW5lcyBpbiBBV1MgQ29kZVBpcGVsaW5lLCBidWlsZCBwcm9qZWN0cyBpbiBBV1MgQ29kZUJ1aWxkLCBhbmQgcmVwb3NpdG9yaWVzIGluIEFXUyBDb2RlQ29tbWl0IGluIHRoaXMgTDIgY29uc3RydWN0b3IuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNvZGVzdGFybm90aWZpY2F0aW9ucy1ub3RpZmljYXRpb25ydWxlLmh0bWwjY2ZuLWNvZGVzdGFybm90aWZpY2F0aW9ucy1ub3RpZmljYXRpb25ydWxlLXJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IElOb3RpZmljYXRpb25SdWxlU291cmNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0cyB0byByZWdpc3RlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YXJnZXRzIGFyZSBhZGRlZCB0byB0aGUgcnVsZS4gVXNlIGBhZGRUYXJnZXQoKWAgdG8gYWRkIGEgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0cz86IElOb3RpZmljYXRpb25SdWxlVGFyZ2V0W107XG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODguMC9kb2NzL3Jlc291cmNlcy9jb2Rlc3Rhcm5vdGlmaWNhdGlvbnNfbm90aWZpY2F0aW9uX3J1bGUjdGFncyBDb2Rlc3Rhcm5vdGlmaWNhdGlvbnNOb3RpZmljYXRpb25SdWxlI3RhZ3N9XG4gICAqL1xuICByZWFkb25seSB0YWdzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbm90aWZpY2F0aW9uIHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTm90aWZpY2F0aW9uUnVsZSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbm90aWZpY2F0aW9uIHJ1bGUgKGkuZS4gYXJuOmF3czpjb2Rlc3Rhci1ub3RpZmljYXRpb25zOjo6bm90aWZpY2F0aW9ucnVsZS8wMTIzNGFiY2RlKVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25SdWxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGFyZ2V0IHRvIG5vdGlmaWNhdGlvbiBydWxlXG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIFNOUyB0b3BpYyBvciBBV1MgQ2hhdGJvdCBTbGFjayB0YXJnZXRcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIHJldHVybiB0cnVlIGlmIGl0IGhhZCBhbnkgZWZmZWN0XG4gICAqL1xuICBhZGRUYXJnZXQodGFyZ2V0OiBJTm90aWZpY2F0aW9uUnVsZVRhcmdldCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBuZXcgbm90aWZpY2F0aW9uIHJ1bGVcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpDb2RlU3Rhck5vdGlmaWNhdGlvbnM6Ok5vdGlmaWNhdGlvblJ1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblJ1bGVcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSU5vdGlmaWNhdGlvblJ1bGVcbntcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBub3RpZmljYXRpb24gcnVsZSBwcm92aWRlZCBhbiBBUk5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uUnVsZUFybiBOb3RpZmljYXRpb24gcnVsZSBBUk4gKGkuZS4gYXJuOmF3czpjb2Rlc3Rhci1ub3RpZmljYXRpb25zOjo6bm90aWZpY2F0aW9ucnVsZS8wMTIzNGFiY2RlKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTm90aWZpY2F0aW9uUnVsZUFybihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBub3RpZmljYXRpb25SdWxlQXJuOiBzdHJpbmcsXG4gICk6IElOb3RpZmljYXRpb25SdWxlIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSU5vdGlmaWNhdGlvblJ1bGUge1xuICAgICAgcmVhZG9ubHkgbm90aWZpY2F0aW9uUnVsZUFybiA9IG5vdGlmaWNhdGlvblJ1bGVBcm47XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB7IG5vdGlmaWNhdGlvblJ1bGVBcm46IHRoaXMubm90aWZpY2F0aW9uUnVsZUFybiB9O1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgYWRkVGFyZ2V0KF90YXJnZXQ6IElOb3RpZmljYXRpb25SdWxlVGFyZ2V0KTogYm9vbGVhbiB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgICAgYENhbm5vdCBhZGQgdGFyZ2V0cyB0byBpbXBvcnRlZCBOb3RpZmljYXRpb25SdWxlICcke3RoaXMubm9kZS5pZH0nLiBEZWZpbmUgdGFyZ2V0cyBkaXJlY3RseSBvbiB0aGUgc291cmNlIG9yIG1hbmFnZSBwZXJtaXNzaW9ucyBzZXBhcmF0ZWx5LmAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQsIHtcbiAgICAgIGVudmlyb25tZW50RnJvbUFybjogbm90aWZpY2F0aW9uUnVsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm90aWZpY2F0aW9uUnVsZUFybjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0TGlzdDogTm90aWZpY2F0aW9uUnVsZVRhcmdldENvbmZpZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBjb2Rlc3Rhcm5vdGlmaWNhdGlvbnNOb3RpZmljYXRpb25SdWxlLkNvZGVzdGFybm90aWZpY2F0aW9uc05vdGlmaWNhdGlvblJ1bGU7XG5cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7IG5vdGlmaWNhdGlvblJ1bGVBcm46IHRoaXMubm90aWZpY2F0aW9uUnVsZUFybiB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5vdGlmaWNhdGlvblJ1bGVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCBzb3VyY2UgPSBwcm9wcy5zb3VyY2UuYmluZEFzTm90aWZpY2F0aW9uUnVsZVNvdXJjZSh0aGlzKTtcblxuICAgIHRoaXMuYWRkRXZlbnRzKHByb3BzLmV2ZW50cyk7XG5cbiAgICAvLyBQcm9jZXNzIGluaXRpYWwgdGFyZ2V0cyBmcm9tIHByb3BzXG4gICAgcHJvcHMudGFyZ2V0cz8uZm9yRWFjaCgodGFyZ2V0KSA9PiB7XG4gICAgICB0aGlzLmFkZFRhcmdldCh0YXJnZXQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcnVsZU5hbWUgPSBwcm9wcy5ub3RpZmljYXRpb25SdWxlTmFtZVxuICAgICAgPyBwcm9wcy5ub3RpZmljYXRpb25SdWxlTmFtZS5zbGljZSgtNjQpIC8vIEVuc3VyZSA2NCBjaGFyIGxpbWl0XG4gICAgICA6IHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA2NCB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPVxuICAgICAgbmV3IGNvZGVzdGFybm90aWZpY2F0aW9uc05vdGlmaWNhdGlvblJ1bGUuQ29kZXN0YXJub3RpZmljYXRpb25zTm90aWZpY2F0aW9uUnVsZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogcnVsZU5hbWUsXG4gICAgICAgICAgZGV0YWlsVHlwZTogcHJvcHMuZGV0YWlsVHlwZSA/PyBEZXRhaWxUeXBlLkZVTEwsXG4gICAgICAgICAgZXZlbnRUeXBlSWRzOiBMYXp5Lmxpc3RWYWx1ZSh7XG4gICAgICAgICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZXZlbnRzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5ldmVudHM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZXNvdXJjZTogc291cmNlLnNvdXJjZUFybixcbiAgICAgICAgICBzdGF0dXM6XG4gICAgICAgICAgICBwcm9wcy5lbmFibGVkID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFwiRElTQUJMRURcIlxuICAgICAgICAgICAgICA6IHByb3BzLmVuYWJsZWQgPT09IHRydWUgfHwgcHJvcHMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBcIkVOQUJMRURcIlxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCAvLyBMZXQgVGVycmFmb3JtIGhhbmRsZSBkZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgICAgICAgIC8vIFVzZSBMYXp5IHByb2R1Y2VyIHRvIGhhbmRsZSB0aGUgcG90ZW50aWFsbHkgZHluYW1pYyBsaXN0IG9mIHRhcmdldHNcbiAgICAgICAgICB0YXJnZXQ6IExhenkuYW55VmFsdWUoe1xuICAgICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgICAgdGhpcy50YXJnZXRMaXN0Lm1hcCgodCkgPT5cbiAgICAgICAgICAgICAgICBjb2Rlc3Rhcm5vdGlmaWNhdGlvbnNOb3RpZmljYXRpb25SdWxlLmNvZGVzdGFybm90aWZpY2F0aW9uc05vdGlmaWNhdGlvblJ1bGVUYXJnZXRUb1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogdC50YXJnZXRBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0LnRhcmdldFR5cGUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICB0aGlzLm5vdGlmaWNhdGlvblJ1bGVBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUYXJnZXQodGFyZ2V0OiBJTm90aWZpY2F0aW9uUnVsZVRhcmdldCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJvdW5kVGFyZ2V0ID0gdGFyZ2V0LmJpbmRBc05vdGlmaWNhdGlvblJ1bGVUYXJnZXQodGhpcyk7XG4gICAgLy8gQ2hlY2sgaWYgdGFyZ2V0IGFscmVhZHkgZXhpc3RzIHRvIGF2b2lkIGR1cGxpY2F0ZXMgaWYgdGhpcyBtZXRob2Qgd2VyZSB0byB1cGRhdGUgdGhlIHJlc291cmNlXG4gICAgY29uc3QgZXhpc3RzID0gdGhpcy50YXJnZXRMaXN0LnNvbWUoXG4gICAgICAodCkgPT5cbiAgICAgICAgdC50YXJnZXRBZGRyZXNzID09PSBib3VuZFRhcmdldC50YXJnZXRBZGRyZXNzICYmXG4gICAgICAgIHQudGFyZ2V0VHlwZSA9PT0gYm91bmRUYXJnZXQudGFyZ2V0VHlwZSxcbiAgICApO1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICB0aGlzLnRhcmdldExpc3QucHVzaChib3VuZFRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50cyB0byBub3RpZmljYXRpb24gcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kdGNvbnNvbGUvbGF0ZXN0L3VzZXJndWlkZS9jb25jZXB0cy5odG1sI2V2ZW50cy1yZWYtcGlwZWxpbmVcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZHRjb25zb2xlL2xhdGVzdC91c2VyZ3VpZGUvY29uY2VwdHMuaHRtbCNldmVudHMtcmVmLWJ1aWxkcHJvamVjdFxuICAgKiBAcGFyYW0gZXZlbnRzIFRoZSBsaXN0IG9mIGV2ZW50IHR5cGVzIGZvciBBV1MgQ29kZWJ1aWxkIGFuZCBBV1MgQ29kZVBpcGVsaW5lXG4gICAqL1xuICBwcml2YXRlIGFkZEV2ZW50cyhldmVudHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5ldmVudHMuaW5jbHVkZXMoZXZlbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ldmVudHMucHVzaChldmVudCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,56 @@
1
+ import { Construct } from "constructs";
2
+ import { ITopic } from "./topic-base";
3
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
4
+ import { PolicyDocument, PolicyStatement } from "../iam";
5
+ /**
6
+ * Properties to associate SNS topics with a policy
7
+ */
8
+ export interface TopicPolicyProps extends AwsConstructProps {
9
+ /**
10
+ * The set of topics this policy applies to.
11
+ */
12
+ readonly topics: ITopic[];
13
+ /**
14
+ * IAM policy document to apply to topic(s).
15
+ * @default empty policy document
16
+ */
17
+ readonly policyDocument?: PolicyDocument;
18
+ /**
19
+ * Adds a statement to enforce encryption of data in transit when publishing to the topic.
20
+ *
21
+ * For more information, see https://docs.aws.amazon.com/sns/latest/dg/sns-security-best-practices.html#enforce-encryption-data-in-transit.
22
+ *
23
+ * @default false
24
+ */
25
+ readonly enforceSSL?: boolean;
26
+ }
27
+ /**
28
+ * The policy for an SNS Topic
29
+ *
30
+ * Policies define the operations that are allowed on this resource.
31
+ *
32
+ * You almost never need to define this construct directly.
33
+ *
34
+ * All AWS resources that support resource policies have a method called
35
+ * `addToResourcePolicy()`, which will automatically create a new resource
36
+ * policy if one doesn't exist yet, otherwise it will add to the existing
37
+ * policy.
38
+ *
39
+ * Prefer to use `addToResourcePolicy()` instead.
40
+ *
41
+ * @resource aws_sns_topic_policy
42
+ */
43
+ export declare class TopicPolicy extends AwsConstructBase {
44
+ /**
45
+ * The IAM policy document associated with this policy.
46
+ */
47
+ readonly document: PolicyDocument;
48
+ get outputs(): Record<string, any>;
49
+ constructor(scope: Construct, id: string, props: TopicPolicyProps);
50
+ /**
51
+ * Creates a statement to enforce encryption of data in transit when publishing to the topic.
52
+ *
53
+ * For more information, see https://docs.aws.amazon.com/sns/latest/dg/sns-security-best-practices.html#enforce-encryption-data-in-transit.
54
+ */
55
+ protected createSSLPolicyStatement(topicArns: string[]): PolicyStatement;
56
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TopicPolicy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/6b9e47a1529319561bc1040739fe02bac15895bf/packages/aws-cdk-lib/aws-sns/lib/policy.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const aws_construct_1 = require("../aws-construct");
9
+ const iam_1 = require("../iam");
10
+ /**
11
+ * The policy for an SNS Topic
12
+ *
13
+ * Policies define the operations that are allowed on this resource.
14
+ *
15
+ * You almost never need to define this construct directly.
16
+ *
17
+ * All AWS resources that support resource policies have a method called
18
+ * `addToResourcePolicy()`, which will automatically create a new resource
19
+ * policy if one doesn't exist yet, otherwise it will add to the existing
20
+ * policy.
21
+ *
22
+ * Prefer to use `addToResourcePolicy()` instead.
23
+ *
24
+ * @resource aws_sns_topic_policy
25
+ */
26
+ class TopicPolicy extends aws_construct_1.AwsConstructBase {
27
+ // Outputs are minimal as this construct manages multiple policies
28
+ get outputs() {
29
+ return {
30
+ policyJson: this.document.json,
31
+ };
32
+ }
33
+ constructor(scope, id, props) {
34
+ super(scope, id, props);
35
+ this.document =
36
+ props.policyDocument ??
37
+ new iam_1.PolicyDocument(this, "PolicyDocument", {
38
+ // statements must be unique, so we use the statement index.
39
+ // potentially SIDs can change as a result of order change, but this should
40
+ // not have an impact on the policy evaluation.
41
+ // https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_SpecialInfo.html
42
+ assignSids: true,
43
+ });
44
+ if (props.enforceSSL) {
45
+ // preserving CFN behavior by using a single policy doc for all topics
46
+ this.document.addStatements(this.createSSLPolicyStatement(props.topics.map((topic) => topic.topicArn)));
47
+ }
48
+ // TF Provider AWS effectively sets the Policy attribute on every topic ...
49
+ // https://github.com/hashicorp/terraform-provider-aws/blob/v5.97.0/internal/service/sns/topic_policy.go#L73
50
+ props.topics.forEach((topic, index) => {
51
+ new provider_aws_1.snsTopicPolicy.SnsTopicPolicy(this, `Resource-${index}`, {
52
+ arn: topic.topicArn,
53
+ policy: this.document.json,
54
+ });
55
+ });
56
+ }
57
+ /**
58
+ * Creates a statement to enforce encryption of data in transit when publishing to the topic.
59
+ *
60
+ * For more information, see https://docs.aws.amazon.com/sns/latest/dg/sns-security-best-practices.html#enforce-encryption-data-in-transit.
61
+ */
62
+ createSSLPolicyStatement(topicArns) {
63
+ return new iam_1.PolicyStatement({
64
+ // NOTE: SID needs to be unique within the policy for each topic
65
+ sid: "AllowPublishThroughSSLOnly",
66
+ actions: ["sns:Publish"],
67
+ effect: iam_1.Effect.DENY,
68
+ resources: topicArns,
69
+ condition: [
70
+ {
71
+ test: "Bool",
72
+ variable: "aws:SecureTransport",
73
+ values: ["false"],
74
+ },
75
+ ],
76
+ principals: [new iam_1.StarPrincipal()],
77
+ });
78
+ }
79
+ }
80
+ exports.TopicPolicy = TopicPolicy;
81
+ _a = JSII_RTTI_SYMBOL_1;
82
+ TopicPolicy[_a] = { fqn: "terraconstructs.aws.notify.TopicPolicy", version: "0.0.18" };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMEhBQTBIO0FBRTFILHNEQUFxRDtBQUdyRCxvREFBdUU7QUFDdkUsZ0NBQWdGO0FBMkJoRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFhLFdBQVksU0FBUSxnQ0FBZ0I7SUFNL0Msa0VBQWtFO0lBQ2xFLElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLFFBQVE7WUFDWCxLQUFLLENBQUMsY0FBYztnQkFDcEIsSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDekMsNERBQTREO29CQUM1RCwyRUFBMkU7b0JBQzNFLCtDQUErQztvQkFDL0Msa0ZBQWtGO29CQUNsRixVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFDO1FBRUwsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsc0VBQXNFO1lBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUN6QixJQUFJLENBQUMsd0JBQXdCLENBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQzVDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCwyRUFBMkU7UUFDM0UsNEdBQTRHO1FBQzVHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BDLElBQUksNkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksS0FBSyxFQUFFLEVBQUU7Z0JBQzNELEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sd0JBQXdCLENBQUMsU0FBbUI7UUFDcEQsT0FBTyxJQUFJLHFCQUFlLENBQUM7WUFDekIsZ0VBQWdFO1lBQ2hFLEdBQUcsRUFBRSw0QkFBNEI7WUFDakMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQ3hCLE1BQU0sRUFBRSxZQUFNLENBQUMsSUFBSTtZQUNuQixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQjthQUNGO1lBQ0QsVUFBVSxFQUFFLENBQUMsSUFBSSxtQkFBYSxFQUFFLENBQUM7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsRUgsa0NBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvNmI5ZTQ3YTE1MjkzMTk1NjFiYzEwNDA3MzlmZTAyYmFjMTU4OTViZi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mtc25zL2xpYi9wb2xpY3kudHNcblxuaW1wb3J0IHsgc25zVG9waWNQb2xpY3kgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElUb3BpYyB9IGZyb20gXCIuL3RvcGljLWJhc2VcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UsIEF3c0NvbnN0cnVjdFByb3BzIH0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5RG9jdW1lbnQsIFBvbGljeVN0YXRlbWVudCwgU3RhclByaW5jaXBhbCB9IGZyb20gXCIuLi9pYW1cIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSBTTlMgdG9waWNzIHdpdGggYSBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3BpY1BvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNldCBvZiB0b3BpY3MgdGhpcyBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRvcGljczogSVRvcGljW107XG5cbiAgLyoqXG4gICAqIElBTSBwb2xpY3kgZG9jdW1lbnQgdG8gYXBwbHkgdG8gdG9waWMocykuXG4gICAqIEBkZWZhdWx0IGVtcHR5IHBvbGljeSBkb2N1bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5RG9jdW1lbnQ/OiBQb2xpY3lEb2N1bWVudDtcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byBlbmZvcmNlIGVuY3J5cHRpb24gb2YgZGF0YSBpbiB0cmFuc2l0IHdoZW4gcHVibGlzaGluZyB0byB0aGUgdG9waWMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nucy9sYXRlc3QvZGcvc25zLXNlY3VyaXR5LWJlc3QtcHJhY3RpY2VzLmh0bWwjZW5mb3JjZS1lbmNyeXB0aW9uLWRhdGEtaW4tdHJhbnNpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuZm9yY2VTU0w/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBwb2xpY3kgZm9yIGFuIFNOUyBUb3BpY1xuICpcbiAqIFBvbGljaWVzIGRlZmluZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIG9uIHRoaXMgcmVzb3VyY2UuXG4gKlxuICogWW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCBkaXJlY3RseS5cbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogUHJlZmVyIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBpbnN0ZWFkLlxuICpcbiAqIEByZXNvdXJjZSBhd3Nfc25zX3RvcGljX3BvbGljeVxuICovXG5leHBvcnQgY2xhc3MgVG9waWNQb2xpY3kgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBJQU0gcG9saWN5IGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudDogUG9saWN5RG9jdW1lbnQ7XG5cbiAgLy8gT3V0cHV0cyBhcmUgbWluaW1hbCBhcyB0aGlzIGNvbnN0cnVjdCBtYW5hZ2VzIG11bHRpcGxlIHBvbGljaWVzXG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9saWN5SnNvbjogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG9waWNQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5kb2N1bWVudCA9XG4gICAgICBwcm9wcy5wb2xpY3lEb2N1bWVudCA/P1xuICAgICAgbmV3IFBvbGljeURvY3VtZW50KHRoaXMsIFwiUG9saWN5RG9jdW1lbnRcIiwge1xuICAgICAgICAvLyBzdGF0ZW1lbnRzIG11c3QgYmUgdW5pcXVlLCBzbyB3ZSB1c2UgdGhlIHN0YXRlbWVudCBpbmRleC5cbiAgICAgICAgLy8gcG90ZW50aWFsbHkgU0lEcyBjYW4gY2hhbmdlIGFzIGEgcmVzdWx0IG9mIG9yZGVyIGNoYW5nZSwgYnV0IHRoaXMgc2hvdWxkXG4gICAgICAgIC8vIG5vdCBoYXZlIGFuIGltcGFjdCBvbiB0aGUgcG9saWN5IGV2YWx1YXRpb24uXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbnMvbGF0ZXN0L2RnL0FjY2Vzc1BvbGljeUxhbmd1YWdlX1NwZWNpYWxJbmZvLmh0bWxcbiAgICAgICAgYXNzaWduU2lkczogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmVuZm9yY2VTU0wpIHtcbiAgICAgIC8vIHByZXNlcnZpbmcgQ0ZOIGJlaGF2aW9yIGJ5IHVzaW5nIGEgc2luZ2xlIHBvbGljeSBkb2MgZm9yIGFsbCB0b3BpY3NcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhcbiAgICAgICAgdGhpcy5jcmVhdGVTU0xQb2xpY3lTdGF0ZW1lbnQoXG4gICAgICAgICAgcHJvcHMudG9waWNzLm1hcCgodG9waWMpID0+IHRvcGljLnRvcGljQXJuKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVEYgUHJvdmlkZXIgQVdTIGVmZmVjdGl2ZWx5IHNldHMgdGhlIFBvbGljeSBhdHRyaWJ1dGUgb24gZXZlcnkgdG9waWMgLi4uXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2Jsb2IvdjUuOTcuMC9pbnRlcm5hbC9zZXJ2aWNlL3Nucy90b3BpY19wb2xpY3kuZ28jTDczXG4gICAgcHJvcHMudG9waWNzLmZvckVhY2goKHRvcGljLCBpbmRleCkgPT4ge1xuICAgICAgbmV3IHNuc1RvcGljUG9saWN5LlNuc1RvcGljUG9saWN5KHRoaXMsIGBSZXNvdXJjZS0ke2luZGV4fWAsIHtcbiAgICAgICAgYXJuOiB0b3BpYy50b3BpY0FybixcbiAgICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RhdGVtZW50IHRvIGVuZm9yY2UgZW5jcnlwdGlvbiBvZiBkYXRhIGluIHRyYW5zaXQgd2hlbiBwdWJsaXNoaW5nIHRvIHRoZSB0b3BpYy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25zL2xhdGVzdC9kZy9zbnMtc2VjdXJpdHktYmVzdC1wcmFjdGljZXMuaHRtbCNlbmZvcmNlLWVuY3J5cHRpb24tZGF0YS1pbi10cmFuc2l0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVNTTFBvbGljeVN0YXRlbWVudCh0b3BpY0FybnM6IHN0cmluZ1tdKTogUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyBOT1RFOiBTSUQgbmVlZHMgdG8gYmUgdW5pcXVlIHdpdGhpbiB0aGUgcG9saWN5IGZvciBlYWNoIHRvcGljXG4gICAgICBzaWQ6IFwiQWxsb3dQdWJsaXNoVGhyb3VnaFNTTE9ubHlcIixcbiAgICAgIGFjdGlvbnM6IFtcInNuczpQdWJsaXNoXCJdLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuREVOWSxcbiAgICAgIHJlc291cmNlczogdG9waWNBcm5zLFxuICAgICAgY29uZGl0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0OiBcIkJvb2xcIixcbiAgICAgICAgICB2YXJpYWJsZTogXCJhd3M6U2VjdXJlVHJhbnNwb3J0XCIsXG4gICAgICAgICAgdmFsdWVzOiBbXCJmYWxzZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwcmluY2lwYWxzOiBbbmV3IFN0YXJQcmluY2lwYWwoKV0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -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.0.17" };
38
+ QueuePolicy[_a] = { fqn: "terraconstructs.aws.notify.QueuePolicy", version: "0.0.18" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcXVldWUtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXFEO0FBRXJELG9EQUF1RTtBQUV2RSxnQ0FBd0M7QUFZeEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsV0FBWSxTQUFRLGdDQUFnQjtJQUsvQyxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBQ0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkQsSUFBSSw2QkFBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWhCSCxrQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXNRdWV1ZVBvbGljeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcIi4vXCI7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuLi9pYW1cIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSBTUVMgcXVldWVzIHdpdGggYSBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVBvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNldCBvZiBxdWV1ZXMgdGhpcyBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogVGhlIHBvbGljeSBmb3IgYW4gU1FTIFF1ZXVlXG4gKlxuICogUG9saWNpZXMgZGVmaW5lIHRoZSBvcGVyYXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgb24gdGhpcyByZXNvdXJjZS5cbiAqXG4gKiBZb3UgYWxtb3N0IG5ldmVyIG5lZWQgdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0IGRpcmVjdGx5LlxuICpcbiAqIEFsbCBBV1MgcmVzb3VyY2VzIHRoYXQgc3VwcG9ydCByZXNvdXJjZSBwb2xpY2llcyBoYXZlIGEgbWV0aG9kIGNhbGxlZFxuICogYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBuZXcgcmVzb3VyY2VcbiAqIHBvbGljeSBpZiBvbmUgZG9lc24ndCBleGlzdCB5ZXQsIG90aGVyd2lzZSBpdCB3aWxsIGFkZCB0byB0aGUgZXhpc3RpbmdcbiAqIHBvbGljeS5cbiAqXG4gKiBQcmVmZXIgdG8gdXNlIGBhZGRUb1Jlc291cmNlUG9saWN5KClgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWV1ZVBvbGljeSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICAvKipcbiAgICogVGhlIElBTSBwb2xpY3kgZG9jdW1lbnQgZm9yIHRoaXMgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBQb2xpY3lEb2N1bWVudDtcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50Lm91dHB1dHM7XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFF1ZXVlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFBvbGljeURvY3VtZW50KHRoaXMsIFwiUG9saWN5XCIpO1xuXG4gICAgbmV3IHNxc1F1ZXVlUG9saWN5LlNxc1F1ZXVlUG9saWN5KHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICBxdWV1ZVVybDogcHJvcHMucXVldWUucXVldWVVcmwsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -255,7 +255,7 @@ class Queue extends aws_construct_1.AwsConstructBase {
255
255
  }
256
256
  exports.Queue = Queue;
257
257
  _a = JSII_RTTI_SYMBOL_1;
258
- Queue[_a] = { fqn: "terraconstructs.aws.notify.Queue", version: "0.0.17" };
258
+ Queue[_a] = { fqn: "terraconstructs.aws.notify.Queue", version: "0.0.18" };
259
259
  /**
260
260
  * The permission type that defines which source queues can specify the current queue as the dead-letter queue
261
261
  */
@@ -39,5 +39,5 @@ class ResourcePolicy extends aws_construct_1.AwsConstructBase {
39
39
  }
40
40
  exports.ResourcePolicy = ResourcePolicy;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- ResourcePolicy[_a] = { fqn: "terraconstructs.aws.notify.ResourcePolicy", version: "0.0.17" };
42
+ ResourcePolicy[_a] = { fqn: "terraconstructs.aws.notify.ResourcePolicy", version: "0.0.18" };
43
43
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcmVzb3VyY2UtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUdBQXVHO0FBRXZHLHNEQUE0RDtBQUU1RCxvREFBdUU7QUFFdkUsZ0NBQXdDO0FBbUJ4Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsZ0NBQWdCO0lBS2xELElBQVcsT0FBTztRQUNoQjs7V0FFRztRQUNILE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUzRSxJQUFJLG9DQUFxQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUMxQixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBckJILHdDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1raW5lc2lzL2xpYi9yZXNvdXJjZS1wb2xpY3kudHNcblxuaW1wb3J0IHsga2luZXNpc1Jlc291cmNlUG9saWN5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBJU3RyZWFtIH0gZnJvbSBcIi4va2luZXNpcy1zdHJlYW1cIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50IH0gZnJvbSBcIi4uL2lhbVwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gYXNzb2NpYXRlIGEgZGF0YSBzdHJlYW0gd2l0aCBhIHBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyZWFtIHRoaXMgcG9saWN5IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBzdHJlYW06IElTdHJlYW07XG5cbiAgLyoqXG4gICAqIElBTSBwb2xpY3kgZG9jdW1lbnQgdG8gYXBwbHkgdG8gYSBkYXRhIHN0cmVhbS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbXB0eSBwb2xpY3kgZG9jdW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeURvY3VtZW50PzogUG9saWN5RG9jdW1lbnQ7XG59XG5cbi8qKlxuICogVGhlIHBvbGljeSBmb3IgYSBkYXRhIHN0cmVhbSBvciByZWdpc3RlcmVkIGNvbnN1bWVyLlxuICpcbiAqIFBvbGljaWVzIGRlZmluZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIG9uIHRoaXMgcmVzb3VyY2UuXG4gKlxuICogWW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCBkaXJlY3RseS5cbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogUHJlZmVyIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQb2xpY3kgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBJQU0gcG9saWN5IGRvY3VtZW50IGZvciB0aGlzIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudDogUG9saWN5RG9jdW1lbnQ7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIHJlc291cmNlIGV4cG9ydHMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLlxuICAgICAqL1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZG9jdW1lbnQgPSBwcm9wcy5wb2xpY3lEb2N1bWVudCA/PyBuZXcgUG9saWN5RG9jdW1lbnQodGhpcywgXCJQb2xpY3lcIik7XG5cbiAgICBuZXcga2luZXNpc1Jlc291cmNlUG9saWN5LktpbmVzaXNSZXNvdXJjZVBvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHBvbGljeTogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgICAgcmVzb3VyY2VBcm46IHByb3BzLnN0cmVhbS5zdHJlYW1Bcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -224,5 +224,5 @@ class Rule extends aws_construct_1.AwsConstructBase {
224
224
  }
225
225
  exports.Rule = Rule;
226
226
  _a = JSII_RTTI_SYMBOL_1;
227
- Rule[_a] = { fqn: "terraconstructs.aws.notify.Rule", version: "0.0.17" };
227
+ Rule[_a] = { fqn: "terraconstructs.aws.notify.Rule", version: "0.0.18" };
228
228
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyRkFBMkY7QUFFM0Ysc0RBSTZCO0FBQzdCLGlDQUFvQztBQUVwQyxnQ0FBbUM7QUFDbkMsb0RBSTBCO0FBQzFCLDRDQUF3QztBQVF4QyxpQ0FBK0Q7QUFvRy9ELE1BQWEsSUFBSyxTQUFRLGdDQUFnQjtJQUN4Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQzVCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixZQUFvQjtRQUVwQixNQUFNLEtBQUssR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ25ELFlBQVksRUFDWixlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUM7UUFFRixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQUNTLFlBQU8sR0FBRyxZQUFZLENBQUM7Z0JBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsZ0JBQVcsR0FBRztvQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ2xCLENBQUM7Z0JBQ0ssWUFBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDcEMsQ0FBQztTQUFBO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzNCLGtCQUFrQixFQUFFLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lB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LGFBQWEsS0FBSyxTQUFTO2dCQUNyQyxDQUFDLENBQUM7b0JBQ0UsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhO29CQUN2QyxVQUFVLEVBQUUsVUFBVSxDQUFDLGFBQWE7aUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVztRQUNoQjs7V0FFRztRQUNILEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLDhDQUE4QztZQUM5QyxtR0FBbUc7WUFDbkcsNEdBQTRHO1lBQzVHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVMsQ0FBQztnQkFBRSxTQUFTLENBQUMsOEJBQThCO1lBQ3RGLElBQUksb0NBQXFCLENBQUMscUJBQXFCLENBQzdDLElBQUksRUFDSixNQUFNLENBQUMsUUFBUyxFQUNoQixNQUFNLENBQ1AsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O0FBOVBILG9CQStQQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1ldmVudHMvbGliL3J1bGUudHNcblxuaW1wb3J0IHtcbiAgY2xvdWR3YXRjaEV2ZW50UnVsZSxcbiAgY2xvdWR3YXRjaEV2ZW50VGFyZ2V0LFxuICAvL3NjaGVkdWxlclNjaGVkdWxlR3JvdXAgLy9UT0RPOiBzdXBwb3J0IHNjaGVkdWxlciBncm91cHM/XG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBMYXp5LCBUb2tlbiB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFybkZvcm1hdCB9IGZyb20gXCIuLi9hcm5cIjtcbmltcG9ydCB7XG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQge1xuICBTY2hlZHVsZSxcbiAgRXZlbnRQYXR0ZXJuLFxuICBJUnVsZVRhcmdldCxcbiAgSUV2ZW50QnVzLFxuICBFdmVudENvbW1vbk9wdGlvbnMsXG59IGZyb20gXCIuL1wiO1xuaW1wb3J0IHsgbWVyZ2VFdmVudFBhdHRlcm4sIHJlbmRlckV2ZW50UGF0dGVybiB9IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdWxlUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcywgRXZlbnRDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBydWxlIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSdWxlIE5hbWUgcHJlZml4IHRvIGFwcGVuZCB0byBHcmlkIFVVSURcbiAgICpcbiAgICogUnVsZSBuYW1lcyBtdXN0IGJlIG1hZGUgdXAgb2Ygb25seSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZSBBU0NJSSBsZXR0ZXJzLFxuICAgKiBudW1iZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnMsIGFuZCBEdWUgdG8gdGhlIGxlbmd0aCBvZiB0aGUgdGYgZ2VuZXJhdGVkXG4gICAqIHN1ZmZpeCwgbXVzdCBiZSA2NCBjaGFyYWN0ZXJzIG9yIGxlc3MgbG9uZy5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgLSBHcmlkVVVJRCArIFN0YWNrIFVuaXF1ZSBOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb3IgcmF0ZSAoZnJlcXVlbmN5KSB0aGF0IGRldGVybWluZXMgd2hlbiBFdmVudEJyaWRnZVxuICAgKiBydW5zIHRoZSBydWxlLlxuICAgKlxuICAgKiBZb3UgbXVzdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHRoZSBgZXZlbnRQYXR0ZXJuYCBwcm9wZXJ0eSwgb3IgYm90aC5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTY2hlZHVsZSBFeHByZXNzaW9uIFN5bnRheCBmb3JcbiAgICogUnVsZXMgaW4gdGhlIEFtYXpvbiBFdmVudEJyaWRnZSBVc2VyIEd1aWRlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL3NjaGVkdWxlZC1ldmVudHMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IFNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUYXJnZXRzIHRvIGludm9rZSB3aGVuIHRoaXMgcnVsZSBtYXRjaGVzIGFuIGV2ZW50LlxuICAgKlxuICAgKiBJbnB1dCB3aWxsIGJlIHRoZSBmdWxsIG1hdGNoZWQgZXZlbnQuIElmIHlvdSB3aXNoIHRvIHNwZWNpZnkgY3VzdG9tXG4gICAqIHRhcmdldCBpbnB1dCwgdXNlIGBhZGRUYXJnZXQodGFyZ2V0WywgaW5wdXRPcHRpb25zXSlgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHRhcmdldHMuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRzPzogSVJ1bGVUYXJnZXRbXTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IGJ1cyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHJ1bGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIGRlZmF1bHQgZXZlbnQgYnVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM/OiBJRXZlbnRCdXM7XG5cbiAgLy8gLyoqXG4gIC8vICAqIEFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGZvciB0aGUgZXZlbnQgdG8gcm91dGUgdG8gdGhlIHNwZWNpZmllZCB0YXJnZXRcbiAgLy8gICpcbiAgLy8gICogVGhlIG1ldGhvZCB0aGF0IGdlbmVyYXRlcyB0aGUgcnVsZSBwcm9iYWJseSBpbXBvc2VzIHNvbWUgdHlwZSBvZiBldmVudFxuICAvLyAgKiBmaWx0ZXJpbmcuIFRoZSBmaWx0ZXJpbmcgaW1wbGllZCBieSB3aGF0IHlvdSBwYXNzIGhlcmUgaXMgYWRkZWRcbiAgLy8gICogb24gdG9wIG9mIHRoYXQgZmlsdGVyaW5nLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGJhc2VkIG9uIGFuIGV2ZW50IHBhdHRlcm4uXG4gIC8vICAqXG4gIC8vICAqIEBzZWVcbiAgLy8gICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZXZlbnRicmlkZ2UtYW5kLWV2ZW50LXBhdHRlcm5zLmh0bWxcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGV2ZW50UGF0dGVybj86IEV2ZW50UGF0dGVybjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBSdWxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUnVsZSBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdWxlIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IHJ1bGVPdXRwdXRzOiBSdWxlT3V0cHV0cztcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZXZlbnQgcnVsZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSwgc3VjaCBhc1xuICAgKiBhcm46YXdzOmV2ZW50czp1cy1lYXN0LTI6MTIzNDU2Nzg5MDEyOnJ1bGUvZXhhbXBsZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSdWxlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBFdmVudEJyaWRnZSBSdWxlIHByb3ZpZGVkIGFuIEFSTlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gZXZlbnRSdWxlQXJuIEV2ZW50IFJ1bGUgQVJOIChpLmUuIGFybjphd3M6ZXZlbnRzOjxyZWdpb24+OjxhY2NvdW50LWlkPjpydWxlL015U2NoZWR1bGVkUnVsZSkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudFJ1bGVBcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGV2ZW50UnVsZUFybjogc3RyaW5nLFxuICApOiBJUnVsZSB7XG4gICAgY29uc3QgcGFydHMgPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuc3BsaXRBcm4oXG4gICAgICBldmVudFJ1bGVBcm4sXG4gICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSdWxlIHtcbiAgICAgIHB1YmxpYyBydWxlQXJuID0gZXZlbnRSdWxlQXJuO1xuICAgICAgcHVibGljIHJ1bGVOYW1lID0gcGFydHMucmVzb3VyY2VOYW1lIHx8IFwiXCI7XG4gICAgICBwdWJsaWMgcnVsZU91dHB1dHMgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMucnVsZU5hbWUsXG4gICAgICAgIGFybjogdGhpcy5ydWxlQXJuLFxuICAgICAgfTtcbiAgICAgIHB1YmxpYyBvdXRwdXRzID0gdGhpcy5ydWxlT3V0cHV0cztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGV2ZW50UnVsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWR3YXRjaEV2ZW50UnVsZS5DbG91ZHdhdGNoRXZlbnRSdWxlO1xuICBwdWJsaWMgZ2V0IHJ1bGVBcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXJuO1xuICB9XG4gIHB1YmxpYyBnZXQgcnVsZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UubmFtZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHJ1bGVPdXRwdXRzKCk6IFJ1bGVPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5ydWxlTmFtZSxcbiAgICAgIGFybjogdGhpcy5ydWxlQXJuLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bGVPdXRwdXRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRzID1cbiAgICBuZXcgQXJyYXk8Y2xvdWR3YXRjaEV2ZW50VGFyZ2V0LkNsb3Vkd2F0Y2hFdmVudFRhcmdldENvbmZpZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFBhdHRlcm46IEV2ZW50UGF0dGVybiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBSdWxlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZXZlbnRCdXMgJiYgcHJvcHMuc2NoZWR1bGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgYXNzb2NpYXRlIHJ1bGUgd2l0aCAnZXZlbnRCdXMnIHdoZW4gdXNpbmcgJ3NjaGVkdWxlJ1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZVByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghcHJvcHMucnVsZU5hbWUpIHtcbiAgICAgIG5hbWVQcmVmaXggPSB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogcHJvcHMubmFtZVByZWZpeCA/PyB0aGlzLmdyaWRVVUlEICsgXCItXCIsXG4gICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCIuLV9cIixcbiAgICAgICAgbWF4TGVuZ3RoOiA2NCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24gPSBwcm9wcy5zY2hlZHVsZT8uZXhwcmVzc2lvblN0cmluZztcblxuICAgIC8vIGFkZCBhIHdhcm5pbmcgb24gc3ludGggd2hlbiBtaW51dGUgaXMgbm90IGRlZmluZWQgaW4gYSBjcm9uIHNjaGVkdWxlXG4gICAgcHJvcHMuc2NoZWR1bGU/Ll9iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZHdhdGNoRXZlbnRSdWxlLkNsb3Vkd2F0Y2hFdmVudFJ1bGUoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgICAgbmFtZVByZWZpeCxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHN0YXRlOlxuICAgICAgICAgIHByb3BzLmVuYWJsZWQgPT0gbnVsbFxuICAgICAgICAgICAgPyBcIkVOQUJMRURcIlxuICAgICAgICAgICAgOiBwcm9wcy5lbmFibGVkXG4gICAgICAgICAgICAgID8gXCJFTkFCTEVEXCJcbiAgICAgICAgICAgICAgOiBcIkRJU0FCTEVEXCIsIC8vVE9ETzogc3VwcG9ydCBFTkFCTEVEX1dJVEhfQUxMX0NMT1VEVFJBSUxfTUFOQUdFTUVOVF9FVkVOVFM/XG4gICAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgICAgIGV2ZW50UGF0dGVybjogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5zdGFjay50b0pzb25TdHJpbmcodGhpcy5fcmVuZGVyRXZlbnRQYXR0ZXJuKCkpLFxuICAgICAgICB9KSxcbiAgICAgICAgLy8gdGVycmFmb3JtLXByb3ZpZGVyLWF3cyBzZXBhcmF0ZXMgdGFyZ2V0cyB0byBkaWZmZXJlbnQgcmVzb3VyY2VzLlxuICAgICAgICAvLyB0YXJnZXRzOiBMYXp5LmFueVZhbHVlKHsgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJUYXJnZXRzKCkgfSksXG4gICAgICAgIGV2ZW50QnVzTmFtZTogcHJvcHMuZXZlbnRCdXM/LmV2ZW50QnVzTmFtZSxcbiAgICAgICAgZGVwZW5kc09uOiBwcm9wcy5kZXBlbmRzT24sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmFkZEV2ZW50UGF0dGVybihwcm9wcy5ldmVudFBhdHRlcm4pO1xuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgcHJvcHMudGFyZ2V0cyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGRUYXJnZXQodGFyZ2V0KTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4gdGhpcy52YWxpZGF0ZVJ1bGUocHJvcHMucnVsZU5hbWUpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgcGF0dGVybiBmaWx0ZXIgdG8gdGhpcyBydWxlLiBJZiBhIHBhdHRlcm4gd2FzIGFscmVhZHkgc3BlY2lmaWVkLFxuICAgKiB0aGVzZSB2YWx1ZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBwYXR0ZXJuLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJ1bGUgYWxyZWFkeSBjb250YWlucyB0aGUgcGF0dGVybjpcbiAgICpcbiAgICogICAge1xuICAgKiAgICAgIFwicmVzb3VyY2VzXCI6IFsgXCJyMVwiIF0sXG4gICAqICAgICAgXCJkZXRhaWxcIjoge1xuICAgKiAgICAgICAgXCJoZWxsb1wiOiBbIDEgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKiBBbmQgYGFkZEV2ZW50UGF0dGVybmAgaXMgY2FsbGVkIHdpdGggdGhlIHBhdHRlcm46XG4gICAqXG4gICAqICAgIHtcbiAgICogICAgICBcInJlc291cmNlc1wiOiBbIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiZm9vXCI6IFsgXCJiYXJcIiBdXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqXG4gICAqIFRoZSByZXN1bHRpbmcgZXZlbnQgcGF0dGVybiB3aWxsIGJlOlxuICAgKlxuICAgKiAgICB7XG4gICAqICAgICAgXCJyZXNvdXJjZXNcIjogWyBcInIxXCIsIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiaGVsbG9cIjogWyAxIF0sXG4gICAqICAgICAgICBcImZvb1wiOiBbIFwiYmFyXCIgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKi9cbiAgcHVibGljIGFkZEV2ZW50UGF0dGVybihldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm4pIHtcbiAgICBpZiAoIWV2ZW50UGF0dGVybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZXJnZUV2ZW50UGF0dGVybih0aGlzLmV2ZW50UGF0dGVybiwgZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3QgcHJpdmF0ZSBvbmx5IHRvIGJlIG92ZXJyaWRlZW4gaW4gQ29weVJ1bGUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXJFdmVudFBhdHRlcm4oKTogYW55IHtcbiAgICByZXR1cm4gcmVuZGVyRXZlbnRQYXR0ZXJuKHRoaXMuZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVJ1bGUocnVsZU5hbWU/OiBzdHJpbmcpIHtcbiAgICBpZiAocnVsZU5hbWUgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHJ1bGVOYW1lKSkge1xuICAgICAgaWYgKHJ1bGVOYW1lLmxlbmd0aCA8IDEgfHwgcnVsZU5hbWUubGVuZ3RoID4gNjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBFdmVudCBydWxlIG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDY0IGNoYXJhY3RlcnMuIFJlY2VpdmVkOiAke3J1bGVOYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIS9eW1xcLlxcLV9BLVphLXowLTldKyQvLnRlc3QocnVsZU5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXZlbnQgcnVsZSBuYW1lICR7cnVsZU5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgcGVyaW9kcywgaHlwaGVucywgb3IgdW5kZXJzY29yZXMgd2l0aCBubyBzcGFjZXMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LmtleXModGhpcy5ldmVudFBhdHRlcm4pLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgIXRoaXMuc2NoZWR1bGVFeHByZXNzaW9uXG4gICAgKSB7XG4gICAgICBlcnJvcnMucHVzaChcIkVpdGhlciAnZXZlbnRQYXR0ZXJuJyBvciAnc2NoZWR1bGUnIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXRzLmxlbmd0aCA+IDUpIHtcbiAgICAgIGVycm9ycy5wdXNoKFwiRXZlbnQgcnVsZSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gNSB0YXJnZXRzLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgdG8gdGhlIHJ1bGUuIFRoZSBhYnN0cmFjdCBjbGFzcyBSdWxlVGFyZ2V0IGNhbiBiZSBleHRlbmRlZCB0byBkZWZpbmUgbmV3XG4gICAqIHRhcmdldHMuXG4gICAqXG4gICAqIE5vLW9wIGlmIHRhcmdldCBpcyB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkVGFyZ2V0KHRhcmdldD86IElSdWxlVGFyZ2V0KTogdm9pZCB7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gU2ltcGx5IGluY3JlbWVudCBpZCBmb3IgZWFjaCBgYWRkVGFyZ2V0YCBjYWxsLiBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlLlxuICAgIGNvbnN0IHRhcmdldElkID0gYFRhcmdldCR7dGhpcy50YXJnZXRzLmxlbmd0aH1gO1xuICAgIGNvbnN0IHRhcmdldFByb3BzID0gdGFyZ2V0LmJpbmQodGhpcywgdGFyZ2V0SWQpO1xuICAgIGNvbnN0IGlucHV0UHJvcHMgPSB0YXJnZXRQcm9wcy5pbnB1dCAmJiB0YXJnZXRQcm9wcy5pbnB1dC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgIHRhcmdldElkLFxuICAgICAgcm9sZUFybjogdGFyZ2V0UHJvcHMucm9sZT8ucm9sZUFybixcbiAgICAgIHJ1bGU6IHRoaXMucmVzb3VyY2UubmFtZSxcbiAgICAgIGFybjogdGFyZ2V0UHJvcHMuYXJuLFxuICAgICAgZWNzVGFyZ2V0OiB0YXJnZXRQcm9wcy5lY3NQYXJhbWV0ZXJzLFxuICAgICAgaHR0cFRhcmdldDogdGFyZ2V0UHJvcHMuaHR0cFBhcmFtZXRlcnMsXG4gICAgICBraW5lc2lzVGFyZ2V0OiB0YXJnZXRQcm9wcy5raW5lc2lzUGFyYW1ldGVycyxcbiAgICAgIHJ1bkNvbW1hbmRUYXJnZXRzOiB0YXJnZXRQcm9wcy5ydW5Db21tYW5kUGFyYW1ldGVycyxcbiAgICAgIGJhdGNoVGFyZ2V0OiB0YXJnZXRQcm9wcy5iYXRjaFBhcmFtZXRlcnMsXG4gICAgICBkZWFkTGV0dGVyQ29uZmlnOiB0YXJnZXRQcm9wcy5kZWFkTGV0dGVyQ29uZmlnLFxuICAgICAgcmV0cnlQb2xpY3k6IHRhcmdldFByb3BzLnJldHJ5UG9saWN5LFxuICAgICAgc3FzVGFyZ2V0OiB0YXJnZXRQcm9wcy5zcXNQYXJhbWV0ZXJzLFxuICAgICAgcmVkc2hpZnRUYXJnZXQ6IHRhcmdldFByb3BzLnJlZHNoaWZ0RGF0YVBhcmFtZXRlcnMsXG4gICAgICAvLyBUT0RPOiBub3QgYXZhaWxhYmxlIGluIHRlcnJhZm9ybS1wcm92aWRlci1hd3NcbiAgICAgIC8vIGFwcFN5bmNQYXJhbWV0ZXJzOiB0YXJnZXRQcm9wcy5hcHBTeW5jUGFyYW1ldGVycyxcbiAgICAgIGlucHV0OiBpbnB1dFByb3BzICYmIGlucHV0UHJvcHMuaW5wdXQsXG4gICAgICBpbnB1dFBhdGg6IGlucHV0UHJvcHMgJiYgaW5wdXRQcm9wcy5pbnB1dFBhdGgsXG4gICAgICBpbnB1dFRyYW5zZm9ybWVyOlxuICAgICAgICBpbnB1dFByb3BzPy5pbnB1dFRlbXBsYXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaW5wdXRUZW1wbGF0ZTogaW5wdXRQcm9wcy5pbnB1dFRlbXBsYXRlLFxuICAgICAgICAgICAgICBpbnB1dFBhdGhzOiBpbnB1dFByb3BzLmlucHV0UGF0aHNNYXAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgVGVycmFmb3JtIEpTT04gb3V0cHV0IGF0IFN5bnRoIHRpbWUuXG4gICAqXG4gICAqIGNhbGxlZCBieSBUZXJyYWZvcm1TdGFjay5wcmVwYXJlU3RhY2soKVxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgLyoqXG4gICAgICogQSBwcmVwYXJpbmcgcmVzb2x2ZSBtaWdodCBhZGQgbmV3IHJlc291cmNlcyB0byB0aGUgc3RhY2tcbiAgICAgKi9cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0aGlzLnRhcmdldHMpIHtcbiAgICAgIC8vIG5vdGU6IHRhcmdldElkIGlzIGNhbGN1bGF0ZWQgaW4gYWRkVGFyZ2V0KClcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZCh0YXJnZXQudGFyZ2V0SWQhKSkgY29udGludWU7IC8vIGlnbm9yZSBpZiBhbHJlYWR5IGdlbmVyYXRlZFxuICAgICAgbmV3IGNsb3Vkd2F0Y2hFdmVudFRhcmdldC5DbG91ZHdhdGNoRXZlbnRUYXJnZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRhcmdldC50YXJnZXRJZCEsXG4gICAgICAgIHRhcmdldCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIl19
@@ -85,7 +85,7 @@ class Schedule {
85
85
  }
86
86
  exports.Schedule = Schedule;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- Schedule[_a] = { fqn: "terraconstructs.aws.notify.Schedule", version: "0.0.17" };
88
+ Schedule[_a] = { fqn: "terraconstructs.aws.notify.Schedule", version: "0.0.18" };
89
89
  class LiteralSchedule extends Schedule {
90
90
  constructor(expressionString) {
91
91
  super();