terraconstructs 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +4536 -6
- package/lib/aws/arn.js +1 -1
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.js +1 -1
- package/lib/aws/aws-tags.js +2 -2
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +1 -1
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +1 -1
- package/lib/aws/cloudwatch/metric.js +2 -2
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +1 -1
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/activity.js +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +1 -1
- package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
- package/lib/aws/compute/alb/application-listener-rule.js +1 -1
- package/lib/aws/compute/alb/application-listener.js +1 -1
- package/lib/aws/compute/alb/application-load-balancer.js +1 -1
- package/lib/aws/compute/alb/application-target-group.js +1 -1
- package/lib/aws/compute/alb/conditions.js +1 -1
- package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
- package/lib/aws/compute/alb/trust-store.js +1 -1
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
- package/lib/aws/compute/bastion-host.js +1 -1
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +2 -2
- package/lib/aws/compute/client-vpn-route.js +2 -2
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/event-invoke-config.js +1 -1
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +1 -1
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +1 -1
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.js +1 -1
- package/lib/aws/compute/function-base.js +2 -2
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs.js +1 -1
- package/lib/aws/compute/function-url.js +1 -1
- package/lib/aws/compute/function.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.js +1 -1
- package/lib/aws/compute/ip-addresses.js +2 -2
- package/lib/aws/compute/ipam.js +1 -1
- package/lib/aws/compute/key-pair.js +1 -1
- package/lib/aws/compute/launch-template.js +3 -7
- package/lib/aws/compute/lb-shared/base-listener.js +1 -1
- package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
- package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.js +3 -3
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +8 -8
- package/lib/aws/compute/nat.js +5 -5
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.js +3 -3
- package/lib/aws/compute/nlb/network-listener-action.js +1 -1
- package/lib/aws/compute/nlb/network-listener.js +1 -1
- package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
- package/lib/aws/compute/nlb/network-target-group.js +1 -1
- package/lib/aws/compute/peer.js +1 -1
- package/lib/aws/compute/placement-group.js +1 -1
- package/lib/aws/compute/port.js +1 -1
- package/lib/aws/compute/prefix-list.js +1 -1
- package/lib/aws/compute/route.js +8 -8
- package/lib/aws/compute/security-group.js +1 -1
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.js +4 -4
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +1 -1
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +1 -1
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/subnet-v2.js +2 -2
- package/lib/aws/compute/subnet.js +1 -1
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/user-data.js +3 -3
- package/lib/aws/compute/volume.js +2 -2
- package/lib/aws/compute/vpc-endpoint-service.js +1 -1
- package/lib/aws/compute/vpc-endpoint.js +6 -6
- package/lib/aws/compute/vpc-flow-logs.js +4 -4
- package/lib/aws/compute/vpc-v2-base.js +1 -1
- package/lib/aws/compute/vpc-v2.js +2 -2
- package/lib/aws/compute/vpc.js +4 -4
- package/lib/aws/compute/vpn.js +3 -3
- package/lib/aws/edge/certificate.js +1 -1
- package/lib/aws/edge/distribution.js +3 -3
- package/lib/aws/edge/dns-alias-record-targets.js +3 -3
- package/lib/aws/edge/dns-record.js +13 -13
- package/lib/aws/edge/dns-zone.js +1 -1
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +3 -3
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +2 -2
- package/lib/aws/iam/group.js +1 -1
- package/lib/aws/iam/instance-profile.js +1 -1
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +1 -1
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement.js +1 -1
- package/lib/aws/iam/policy.js +1 -1
- package/lib/aws/iam/principals.js +20 -20
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.js +2 -2
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/user.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +1 -1
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.js +4 -4
- package/lib/aws/notify/archive.js +1 -1
- package/lib/aws/notify/connection.js +3 -3
- package/lib/aws/notify/delivery-policy.d.ts +114 -0
- package/lib/aws/notify/delivery-policy.js +27 -0
- package/lib/aws/notify/event-bus.js +3 -3
- package/lib/aws/notify/event-pattern.js +1 -1
- package/lib/aws/notify/index.d.ts +11 -0
- package/lib/aws/notify/index.js +14 -1
- package/lib/aws/notify/input.js +2 -2
- package/lib/aws/notify/kinesis-stream.js +1 -1
- package/lib/aws/notify/notification-rule-source.d.ts +20 -0
- package/lib/aws/notify/notification-rule-source.js +4 -0
- package/lib/aws/notify/notification-rule-target.d.ts +24 -0
- package/lib/aws/notify/notification-rule-target.js +4 -0
- package/lib/aws/notify/notification-rule.d.ts +123 -0
- package/lib/aws/notify/notification-rule.js +129 -0
- package/lib/aws/notify/policy.d.ts +56 -0
- package/lib/aws/notify/policy.js +83 -0
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +1 -1
- package/lib/aws/notify/schedule.js +1 -1
- package/lib/aws/notify/sns-augmentations.generated.d.ts +125 -0
- package/lib/aws/notify/sns-augmentations.generated.js +71 -0
- package/lib/aws/notify/sns-canned-metrics.generated.d.ts +33 -0
- package/lib/aws/notify/sns-canned-metrics.generated.js +47 -0
- package/lib/aws/notify/subscriber.d.ts +44 -0
- package/lib/aws/notify/subscriber.js +4 -0
- package/lib/aws/notify/subscription-filter.d.ts +129 -0
- package/lib/aws/notify/subscription-filter.js +105 -0
- package/lib/aws/notify/subscription.d.ts +219 -0
- package/lib/aws/notify/subscription.js +357 -0
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/topic-base.d.ts +155 -0
- package/lib/aws/notify/topic-base.js +175 -0
- package/lib/aws/notify/topic.d.ts +222 -0
- package/lib/aws/notify/topic.js +219 -0
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.js +1 -1
- package/lib/aws/storage/bucket.js +2 -2
- package/lib/aws/storage/notification-targets/function.js +1 -1
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.js +1 -1
- package/lib/aws/storage/parameter.js +2 -2
- package/lib/construct-base.js +2 -2
- package/lib/duration.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/size.js +1 -1
- package/lib/stack-base.js +1 -1
- package/lib/terra-func.js +1 -1
- package/package.json +1 -1
|
@@ -237,5 +237,5 @@ class Match {
|
|
|
237
237
|
}
|
|
238
238
|
exports.Match = Match;
|
|
239
239
|
_a = JSII_RTTI_SYMBOL_1;
|
|
240
|
-
Match[_a] = { fqn: "terraconstructs.aws.notify.Match", version: "0.0.
|
|
240
|
+
Match[_a] = { fqn: "terraconstructs.aws.notify.Match", version: "0.0.19" };
|
|
241
241
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L2V2ZW50LXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvR0FBb0c7QUFFcEcsaUNBQTREO0FBYzVEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFNBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTTtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFlBQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztP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LDBGQUEwRjtRQUMxRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxhQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7O0FBaFNILHNCQWlTQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1ldmVudHMvbGliL2V2ZW50LXBhdHRlcm4udHNcblxuaW1wb3J0IHsgSVJlc29sdmFibGUsIElSZXNvbHZlQ29udGV4dCwgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcblxudHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiIHwgXCI9XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgaG93IHRvIGNvbnN0cnVjdCBtYXRjaGVyc1xuICovXG5pbnRlcmZhY2UgTWF0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpc3Qgb2YgbWF0Y2hlcnMgc2hvdWxkIGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG1hdGNoZXJcbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlTWF0Y2hlcnM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW4gZXZlbnQgcGF0dGVybiBtYXRjaGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRjaCBpbXBsZW1lbnRzIElSZXNvbHZhYmxlIHtcbiAgLyoqXG4gICAqIE1hdGNoZXMgYSBudWxsIHZhbHVlIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBudWxsVmFsdWUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFtudWxsXSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyB3aGVuIHRoZSBmaWVsZCBpcyBwcmVzZW50IGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBleGlzdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IGV4aXN0czogdHJ1ZSB9XSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyB3aGVuIHRoZSBmaWVsZCBpcyBhYnNlbnQgZnJvbSB0aGUgSlNPTiBvZiB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZG9lc05vdEV4aXN0KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbeyBleGlzdHM6IGZhbHNlIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGEgc3RyaW5nLCBleGFjdGx5LCBpbiB0aGUgSlNPTiBvZiB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXhhY3RTdHJpbmcodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbdmFsdWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGEgc3RyaW5nLCByZWdhcmRsZXNzIG9mIGNhc2UsIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgXCJlcXVhbHMtaWdub3JlLWNhc2VcIjogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHByZWZpeCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHByZWZpeDogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBzdWZmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1ZmZpeCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHN1ZmZpeDogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwcmVmaXhFcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgcHJlZml4OiB7IFwiZXF1YWxzLWlnbm9yZS1jYXNlXCI6IHZhbHVlIH0gfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBzdWZmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdWZmaXhFcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgc3VmZml4OiB7IFwiZXF1YWxzLWlnbm9yZS1jYXNlXCI6IHZhbHVlIH0gfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiB3aWxkY2FyZCBwYXR0ZXJuIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aWxkY2FyZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHdpbGRjYXJkOiB2YWx1ZSB9XSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBJUHY0IGFuZCBJUHY2IG5ldHdvcmsgYWRkcmVzc2VzIHVzaW5nIHRoZSBDbGFzc2xlc3MgSW50ZXItRG9tYWluIFJvdXRpbmcgKENJRFIpIGZvcm1hdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaWRyKHJhbmdlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgaXB2NFJlZ2V4ID1cbiAgICAgIC9eKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfShcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pKT8kL2dpbTtcbiAgICBjb25zdCBpcHY2UmVnZXggPVxuICAgICAgL15zKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpKSglLispP3MqKFxcLyhbMC05XXxbMS05XVswLTldfDFbMC0xXVswLTldfDEyWzAtOF0pKT8kL2dpbTtcblxuICAgIGlmICghaXB2NFJlZ2V4LnRlc3QocmFuZ2UpICYmICFpcHY2UmVnZXgudGVzdChyYW5nZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUCBhZGRyZXNzIHJhbmdlOiAke3JhbmdlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IGNpZHI6IHJhbmdlIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIElQdjQgYW5kIElQdjYgbmV0d29yayBhZGRyZXNzZXMgdXNpbmcgdGhlIENsYXNzbGVzcyBJbnRlci1Eb21haW4gUm91dGluZyAoQ0lEUikgZm9ybWF0LlxuICAgKiBBbGlhcyBvZiBgY2lkcigpYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXBBZGRyZXNzUmFuZ2UocmFuZ2U6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gTWF0Y2guY2lkcihyYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbnl0aGluZyBleGNlcHQgd2hhdCdzIHByb3ZpZGVkIGluIHRoZSBydWxlLiBUaGUgbGlzdCBvZiBwcm92aWRlZCB2YWx1ZXMgbXVzdCBjb250YWluXG4gICAqIG9ubHkgc3RyaW5ncyBvciBvbmx5IG51bWJlcnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFueXRoaW5nQnV0KC4uLnZhbHVlczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImFueXRoaW5nQnV0IG1hdGNoZXJzIG11c3QgYmUgbm9uLWVtcHR5IGxpc3RzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbE51bWJlcnMgPSB2YWx1ZXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKTtcbiAgICBjb25zdCBhbGxTdHJpbmdzID0gdmFsdWVzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIik7XG5cbiAgICBpZiAoIShhbGxOdW1iZXJzIHx8IGFsbFN0cmluZ3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYW55dGhpbmdCdXQgbWF0Y2hlcnMgbXVzdCBiZSBsaXN0cyB0aGF0IGNvbnRhaW4gb25seSBzdHJpbmdzIG9yIG9ubHkgbnVtYmVycy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgXCJhbnl0aGluZy1idXRcIjogdmFsdWVzIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggdGhlIGdpdmVuIHByZWZpeC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55dGhpbmdCdXRQcmVmaXgoLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hbnl0aGluZ0J1dENvbmp1bmN0aW9uKFwicHJlZml4XCIsIHZhbHVlcyk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbnkgc3RyaW5nIHRoYXQgZG9lc24ndCBlbmQgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnl0aGluZ0J1dFN1ZmZpeCguLi52YWx1ZXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmFueXRoaW5nQnV0Q29uanVuY3Rpb24oXCJzdWZmaXhcIiwgdmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IG1hdGNoIHdpdGggdGhlIGdpdmVuIHdpbGRjYXJkIHBhdHRlcm4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFueXRoaW5nQnV0V2lsZGNhcmQoLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hbnl0aGluZ0J1dENvbmp1bmN0aW9uKFwid2lsZGNhcmRcIiwgdmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IG1hdGNoIHdpdGggdGhlIGdpdmVuIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgY2hhcmFjdGVyIGNhc2luZy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55dGhpbmdCdXRFcXVhbHNJZ25vcmVDYXNlKC4uLnZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYW55dGhpbmdCdXRDb25qdW5jdGlvbihcImVxdWFscy1pZ25vcmUtY2FzZVwiLCB2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgbnVtYmVycyBncmVhdGVyIHRoYW4gdGhlIHByb3ZpZGVkIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdyZWF0ZXJUaGFuKHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubnVtZXJpYyhcIj5cIiwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgbnVtYmVycyBncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvLCB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ3JlYXRlclRoYW5PckVxdWFsKHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubnVtZXJpYyhcIj49XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgbGVzcyB0aGFuIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsZXNzVGhhbih2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI8XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgbGVzcyB0aGFuLCBvciBlcXVhbCB0bywgdGhlIHByb3ZpZGVkIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxlc3NUaGFuT3JFcXVhbCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI8PVwiLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBudW1iZXJzIGVxdWFsIHRvIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlcXVhbCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI9XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgaW5zaWRlIGEgY2xvc2VkIG51bWVyaWMgaW50ZXJ2YWwuIEVxdWl2YWxlbnQgdG86XG4gICAqXG4gICAqICAgIE1hdGNoLmFsbE9mKE1hdGNoLmdyZWF0ZXJUaGFuT3JFcXVhbChsb3dlciksIE1hdGNoLmxlc3NUaGFuT3JFcXVhbCh1cHBlcikpXG4gICAqXG4gICAqIEBwYXJhbSBsb3dlciBMb3dlciBib3VuZCAoaW5jbHVzaXZlKVxuICAgKiBAcGFyYW0gdXBwZXIgVXBwZXIgYm91bmQgKGluY2x1c2l2ZSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW50ZXJ2YWwobG93ZXI6IG51bWJlciwgdXBwZXI6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBpZiAobG93ZXIgPiB1cHBlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGludGVydmFsOiBbJHtsb3dlcn0sICR7dXBwZXJ9XWApO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRjaC5hbGxPZihcbiAgICAgIE1hdGNoLmdyZWF0ZXJUaGFuT3JFcXVhbChsb3dlciksXG4gICAgICBNYXRjaC5sZXNzVGhhbk9yRXF1YWwodXBwZXIpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbiBldmVudCBpZiBhbnkgb2YgdGhlIHByb3ZpZGVkIG1hdGNoZXJzIGRvLiBPbmx5IG51bWVyaWMgbWF0Y2hlcnMgYXJlIGFjY2VwdGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbGxPZiguLi5tYXRjaGVyczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG1hdGNoZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBsaXN0IG9mIG1hdGNoZXJzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudC5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZnJvbU1lcmdlZE9iamVjdHMobWF0Y2hlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgYW4gZXZlbnQgaWYgYW55IG9mIHRoZSBwcm92aWRlZCBtYXRjaGVycyBkb2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnlPZiguLi5tYXRjaGVyczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG1hdGNoZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBsaXN0IG9mIG1hdGNoZXJzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudC5cIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKG1hdGNoZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFueXRoaW5nQnV0Q29uanVuY3Rpb24oXG4gICAgZmlsdGVyS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSxcbiAgKTogc3RyaW5nW10ge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhbnl0aGluZ0J1dCBtYXRjaGVycyBtdXN0IGJlIG5vbi1lbXB0eSBsaXN0c1wiKTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIHRoZXJlIGlzIGEgc2luZ2xlIHZhbHVlIHJldHVybiBpdCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgYXJyYXlcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlcy5sZW5ndGggPT09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7XG5cbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbeyBcImFueXRoaW5nLWJ1dFwiOiB7IFtmaWx0ZXJLZXldOiBmaWx0ZXJWYWx1ZSB9IH1dKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG51bWVyaWMoXG4gICAgb3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvcixcbiAgICB2YWx1ZTogbnVtYmVyLFxuICApOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgbnVtZXJpYzogW29wZXJhdG9yLCB2YWx1ZV0gfV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZnJvbU9iamVjdHModmFsdWVzOiBhbnlbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoKHZhbHVlcywgeyBtZXJnZU1hdGNoZXJzOiBmYWxzZSB9KS5hc0xpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZyb21NZXJnZWRPYmplY3RzKHZhbHVlczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaCh2YWx1ZXMsIHsgbWVyZ2VNYXRjaGVyczogdHJ1ZSB9KS5hc0xpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGlvblN0YWNrOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0Y2hlcnM6IGFueVtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTWF0Y2hPcHRpb25zLFxuICApIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgc3RhY2sgdHJhY2VzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi90b2tlbnMvcHJpdmF0ZS9zdGFjay10cmFjZS50cyNMOVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTQzLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvc3RhY2stdHJhY2UudHMjTDIyXG4gICAgdGhpcy5jcmVhdGlvblN0YWNrID0gW1wic3RhY2sgdHJhY2VzIGRpc2FibGVkXCJdO1xuICB9XG5cbiAgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnkge1xuICAgIGNvbnN0IG1hdGNoZXJzID0gdGhpcy5tYXRjaGVycy5mbGF0TWFwKChtYXRjaGVyKSA9PlxuICAgICAgY29udGV4dC5yZXNvbHZlKG1hdGNoZXIpLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tZXJnZU1hdGNoZXJzID8gdGhpcy5tZXJnZShtYXRjaGVycykgOiBtYXRjaGVycztcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2UobWF0Y2hlcnM6IGFueVtdKTogYW55IHtcbiAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBjYXNlIGZvciBtZXJnaW5nIGF0IHRoZSBtb21lbnQuXG4gICAgLy8gV2UgY2FuIGdlbmVyYWxpemUgdGhpcyBsb2dpYyBpZiBFdmVudEJyaWRnZSBzdGFydHMgc3VwcG9ydGluZyBtb3JlIGNhc2VzIGluIHRoZSBmdXR1cmUuXG4gICAgaWYgKCFtYXRjaGVycy5ldmVyeSgobWF0Y2hlcikgPT4gbWF0Y2hlcj8ubnVtZXJpYykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPbmx5IG51bWVyaWMgbWF0Y2hlcnMgY2FuIGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG1hdGNoZXIuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBbeyBudW1lcmljOiBtYXRjaGVycy5mbGF0TWFwKChtYXRjaGVyKSA9PiBtYXRjaGVyLm51bWVyaWMpIH1dO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG1hdGNoZXIgYXMgYSBsaXN0IG9mIHN0cmluZ3NcbiAgICovXG4gIGFzTGlzdCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2ZW50cyBpbiBBbWF6b24gQ2xvdWRXYXRjaCBFdmVudHMgYXJlIHJlcHJlc2VudGVkIGFzIEpTT04gb2JqZWN0cy4gRm9yIG1vcmVcbiAqIGluZm9ybWF0aW9uIGFib3V0IEpTT04gb2JqZWN0cywgc2VlIFJGQyA3MTU5LlxuICpcbiAqICoqSW1wb3J0YW50Kio6IHRoaXMgY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGEgYFJ1bGVgIGNsYXNzLiBJbiBwYXJ0aWN1bGFyLFxuICogZG8gbm90IHVzZSBpdCB3aXRoIGBDZm5SdWxlYCBjbGFzczogeW91ciBwYXR0ZXJuIHdpbGwgbm90IGJlIHJlbmRlcmVkXG4gKiBjb3JyZWN0bHkuIEluIGEgYENmblJ1bGVgIGNsYXNzLCB3cml0ZSB0aGUgcGF0dGVybiBhcyB5b3Ugbm9ybWFsbHkgd291bGQgd2hlblxuICogZGlyZWN0bHkgd3JpdGluZyBDbG91ZEZvcm1hdGlvbi5cbiAqXG4gKiBSdWxlcyB1c2UgZXZlbnQgcGF0dGVybnMgdG8gc2VsZWN0IGV2ZW50cyBhbmQgcm91dGUgdGhlbSB0byB0YXJnZXRzLiBBXG4gKiBwYXR0ZXJuIGVpdGhlciBtYXRjaGVzIGFuIGV2ZW50IG9yIGl0IGRvZXNuJ3QuIEV2ZW50IHBhdHRlcm5zIGFyZSByZXByZXNlbnRlZFxuICogYXMgSlNPTiBvYmplY3RzIHdpdGggYSBzdHJ1Y3R1cmUgdGhhdCBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgZXZlbnRzLlxuICpcbiAqIEl0IGlzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGUgZm9sbG93aW5nIGFib3V0IGV2ZW50IHBhdHRlcm4gbWF0Y2hpbmc6XG4gKlxuICogLSBGb3IgYSBwYXR0ZXJuIHRvIG1hdGNoIGFuIGV2ZW50LCB0aGUgZXZlbnQgbXVzdCBjb250YWluIGFsbCB0aGUgZmllbGQgbmFtZXNcbiAqICAgbGlzdGVkIGluIHRoZSBwYXR0ZXJuLiBUaGUgZmllbGQgbmFtZXMgbXVzdCBhcHBlYXIgaW4gdGhlIGV2ZW50IHdpdGggdGhlXG4gKiAgIHNhbWUgbmVzdGluZyBzdHJ1Y3R1cmUuXG4gKlxuICogLSBPdGhlciBmaWVsZHMgb2YgdGhlIGV2ZW50IG5vdCBtZW50aW9uZWQgaW4gdGhlIHBhdHRlcm4gYXJlIGlnbm9yZWQ7XG4gKiAgIGVmZmVjdGl2ZWx5LCB0aGVyZSBpcyBhIGBgXCIqXCI6IFwiKlwiYGAgd2lsZGNhcmQgZm9yIGZpZWxkcyBub3QgbWVudGlvbmVkLlxuICpcbiAqIC0gVGhlIG1hdGNoaW5nIGlzIGV4YWN0IChjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSwgd2l0aG91dCBjYXNlLWZvbGRpbmcgb3IgYW55XG4gKiAgIG90aGVyIHN0cmluZyBub3JtYWxpemF0aW9uLlxuICpcbiAqIC0gVGhlIHZhbHVlcyBiZWluZyBtYXRjaGVkIGZvbGxvdyBKU09OIHJ1bGVzOiBTdHJpbmdzIGVuY2xvc2VkIGluIHF1b3RlcyxcbiAqICAgbnVtYmVycywgYW5kIHRoZSB1bnF1b3RlZCBrZXl3b3JkcyB0cnVlLCBmYWxzZSwgYW5kIG51bGwuXG4gKlxuICogLSBOdW1iZXIgbWF0Y2hpbmcgaXMgYXQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBsZXZlbC4gRm9yIGV4YW1wbGUsIDMwMCxcbiAqICAgMzAwLjAsIGFuZCAzLjBlMiBhcmUgbm90IGNvbnNpZGVyZWQgZXF1YWwuXG4gKlxuICogRm9yIGN1c3RvbSBldmVudHMsIHNvbWUgb3B0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAqIFtNaW5pbXVtIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYSB2YWxpZCBjdXN0b20gZXZlbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2ViLWV2ZW50cy1zdHJ1Y3R1cmUuaHRtbCNlYi1jdXN0b20tZXZlbnQpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2V2ZW50cy9DbG91ZFdhdGNoRXZlbnRzYW5kRXZlbnRQYXR0ZXJucy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQYXR0ZXJuIHtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIDAgKHplcm8pIGluIGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSB1bmlxdWUgdmFsdWUgaXMgZ2VuZXJhdGVkIGZvciBldmVyeSBldmVudC4gVGhpcyBjYW4gYmUgaGVscGZ1bCBpblxuICAgKiB0cmFjaW5nIGV2ZW50cyBhcyB0aGV5IG1vdmUgdGhyb3VnaCBydWxlcyB0byB0YXJnZXRzLCBhbmQgYXJlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gaWRcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHNvdXJjZSBmaWVsZCwgdGhlIGZpZWxkcyBhbmQgdmFsdWVzXG4gICAqIHRoYXQgYXBwZWFyIGluIHRoZSBkZXRhaWwgZmllbGQuXG4gICAqXG4gICAqIFJlcHJlc2VudHMgdGhlIFwiZGV0YWlsLXR5cGVcIiBldmVudCBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gZGV0YWlsIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbFR5cGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgc2VydmljZSB0aGF0IHNvdXJjZWQgdGhlIGV2ZW50LiBBbGwgZXZlbnRzIHNvdXJjZWQgZnJvbVxuICAgKiB3aXRoaW4gQVdTIGJlZ2luIHdpdGggXCJhd3MuXCIgQ3VzdG9tZXItZ2VuZXJhdGVkIGV2ZW50cyBjYW4gaGF2ZSBhbnkgdmFsdWVcbiAgICogaGVyZSwgYXMgbG9uZyBhcyBpdCBkb2Vzbid0IGJlZ2luIHdpdGggXCJhd3MuXCIgV2UgcmVjb21tZW5kIHRoZSB1c2Ugb2ZcbiAgICogSmF2YSBwYWNrYWdlLW5hbWUgc3R5bGUgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHJpbmdzLlxuICAgKlxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBzb3VyY2UgZm9yIGFuIEFXUyBzZXJ2aWNlLCBzZWUgdGhlIHRhYmxlIGluXG4gICAqIEFXUyBTZXJ2aWNlIE5hbWVzcGFjZXMuIEZvciBleGFtcGxlLCB0aGUgc291cmNlIHZhbHVlIGZvciBBbWF6b25cbiAgICogQ2xvdWRGcm9udCBpcyBhd3MuY2xvdWRmcm9udC5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9hd3MtYXJucy1hbmQtbmFtZXNwYWNlcy5odG1sI2dlbnJlZi1hd3Mtc2VydmljZS1uYW1lc3BhY2VzXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIHNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSAxMi1kaWdpdCBudW1iZXIgaWRlbnRpZnlpbmcgYW4gQVdTIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IHRpbWVzdGFtcCwgd2hpY2ggY2FuIGJlIHNwZWNpZmllZCBieSB0aGUgc2VydmljZSBvcmlnaW5hdGluZ1xuICAgKiB0aGUgZXZlbnQuIElmIHRoZSBldmVudCBzcGFucyBhIHRpbWUgaW50ZXJ2YWwsIHRoZSBzZXJ2aWNlIG1pZ2h0IGNob29zZVxuICAgKiB0byByZXBvcnQgdGhlIHN0YXJ0IHRpbWUsIHNvIHRoaXMgdmFsdWUgY2FuIGJlIG5vdGljZWFibHkgYmVmb3JlIHRoZSB0aW1lXG4gICAqIHRoZSBldmVudCBpcyBhY3R1YWxseSByZWNlaXZlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSBBV1MgcmVnaW9uIHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGlzIEpTT04gYXJyYXkgY29udGFpbnMgQVJOcyB0aGF0IGlkZW50aWZ5IHJlc291cmNlcyB0aGF0IGFyZSBpbnZvbHZlZFxuICAgKiBpbiB0aGUgZXZlbnQuIEluY2x1c2lvbiBvZiB0aGVzZSBBUk5zIGlzIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZVxuICAgKiBzZXJ2aWNlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgQW1hem9uIEVDMiBpbnN0YW5jZSBzdGF0ZS1jaGFuZ2VzIGluY2x1ZGUgQW1hem9uIEVDMlxuICAgKiBpbnN0YW5jZSBBUk5zLCBBdXRvIFNjYWxpbmcgZXZlbnRzIGluY2x1ZGUgQVJOcyBmb3IgYm90aCBpbnN0YW5jZXMgYW5kXG4gICAqIEF1dG8gU2NhbGluZyBncm91cHMsIGJ1dCBBUEkgY2FsbHMgd2l0aCBBV1MgQ2xvdWRUcmFpbCBkbyBub3QgaW5jbHVkZVxuICAgKiByZXNvdXJjZSBBUk5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgSlNPTiBvYmplY3QsIHdob3NlIGNvbnRlbnQgaXMgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHNlcnZpY2VcbiAgICogb3JpZ2luYXRpbmcgdGhlIGV2ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiBkZXRhaWxcbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG4iXX0=
|
|
@@ -11,5 +11,16 @@ export * from "./schedule";
|
|
|
11
11
|
export * from "./target";
|
|
12
12
|
export * from "./kinesis-stream";
|
|
13
13
|
export * from "./resource-policy";
|
|
14
|
+
export * from "./policy";
|
|
15
|
+
export * from "./topic";
|
|
16
|
+
export * from "./topic-base";
|
|
17
|
+
export * from "./subscription";
|
|
18
|
+
export * from "./subscriber";
|
|
19
|
+
export * from "./subscription-filter";
|
|
20
|
+
export * from "./delivery-policy";
|
|
21
|
+
import "./sns-augmentations.generated";
|
|
22
|
+
export * from "./notification-rule";
|
|
23
|
+
export * from "./notification-rule-source";
|
|
24
|
+
export * from "./notification-rule-target";
|
|
14
25
|
export * as targets from "./targets";
|
|
15
26
|
export * from "./queue-config.generated";
|
package/lib/aws/notify/index.js
CHANGED
|
@@ -29,9 +29,22 @@ __exportStar(require("./target"), exports);
|
|
|
29
29
|
// kinesis
|
|
30
30
|
__exportStar(require("./kinesis-stream"), exports);
|
|
31
31
|
__exportStar(require("./resource-policy"), exports);
|
|
32
|
+
// sns
|
|
33
|
+
__exportStar(require("./policy"), exports);
|
|
34
|
+
__exportStar(require("./topic"), exports);
|
|
35
|
+
__exportStar(require("./topic-base"), exports);
|
|
36
|
+
__exportStar(require("./subscription"), exports);
|
|
37
|
+
__exportStar(require("./subscriber"), exports);
|
|
38
|
+
__exportStar(require("./subscription-filter"), exports);
|
|
39
|
+
__exportStar(require("./delivery-policy"), exports);
|
|
40
|
+
require("./sns-augmentations.generated");
|
|
41
|
+
// codestarnotifications
|
|
42
|
+
__exportStar(require("./notification-rule"), exports);
|
|
43
|
+
__exportStar(require("./notification-rule-source"), exports);
|
|
44
|
+
__exportStar(require("./notification-rule-target"), exports);
|
|
32
45
|
exports.targets = require("./targets");
|
|
33
46
|
// generated by JSII Struct builder to please JSII pacman
|
|
34
47
|
__exportStar(require("./queue-config.generated"), exports);
|
|
35
48
|
// TODO: re-add QueueBase and Metrics support
|
|
36
49
|
// import "./sqs-augmentations.generated";
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL25vdGlmeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQiw4Q0FBNEI7QUFDNUIsa0RBQWdDO0FBQ2hDLCtDQUE2QjtBQUM3QiwwQ0FBd0I7QUFDeEIscURBQW1DO0FBQ25DLGlEQUErQjtBQUMvQiwwQ0FBd0I7QUFDeEIseUNBQXVCO0FBQ3ZCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsVUFBVTtBQUNWLG1EQUFpQztBQUNqQyxvREFBa0M7QUFDbEMsTUFBTTtBQUNOLDJDQUF5QjtBQUN6QiwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQiwrQ0FBNkI7QUFDN0Isd0RBQXNDO0FBQ3RDLG9EQUFrQztBQUVsQyx5Q0FBdUM7QUFDdkMsd0JBQXdCO0FBQ3hCLHNEQUFvQztBQUNwQyw2REFBMkM7QUFDM0MsNkRBQTJDO0FBRTNDLHVDQUFxQztBQUVyQyx5REFBeUQ7QUFDekQsMkRBQXlDO0FBRXpDLDZDQUE2QztBQUM3QywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hcmNoaXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudC1idXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50LXBhdHRlcm5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Nvbm5lY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lucHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vbi1ldmVudC1vcHRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9xdWV1ZS1wb2xpY3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3F1ZXVlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFyZ2V0XCI7XG4vLyBraW5lc2lzXG5leHBvcnQgKiBmcm9tIFwiLi9raW5lc2lzLXN0cmVhbVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtcG9saWN5XCI7XG4vLyBzbnNcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9waWNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RvcGljLWJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N1YnNjcmlwdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3Vic2NyaWJlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3Vic2NyaXB0aW9uLWZpbHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVsaXZlcnktcG9saWN5XCI7XG5cbmltcG9ydCBcIi4vc25zLWF1Z21lbnRhdGlvbnMuZ2VuZXJhdGVkXCI7XG4vLyBjb2Rlc3Rhcm5vdGlmaWNhdGlvbnNcbmV4cG9ydCAqIGZyb20gXCIuL25vdGlmaWNhdGlvbi1ydWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ub3RpZmljYXRpb24tcnVsZS1zb3VyY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25vdGlmaWNhdGlvbi1ydWxlLXRhcmdldFwiO1xuXG5leHBvcnQgKiBhcyB0YXJnZXRzIGZyb20gXCIuL3RhcmdldHNcIjtcblxuLy8gZ2VuZXJhdGVkIGJ5IEpTSUkgU3RydWN0IGJ1aWxkZXIgdG8gcGxlYXNlIEpTSUkgcGFjbWFuXG5leHBvcnQgKiBmcm9tIFwiLi9xdWV1ZS1jb25maWcuZ2VuZXJhdGVkXCI7XG5cbi8vIFRPRE86IHJlLWFkZCBRdWV1ZUJhc2UgYW5kIE1ldHJpY3Mgc3VwcG9ydFxuLy8gaW1wb3J0IFwiLi9zcXMtYXVnbWVudGF0aW9ucy5nZW5lcmF0ZWRcIjtcbiJdfQ==
|
package/lib/aws/notify/input.js
CHANGED
|
@@ -54,7 +54,7 @@ class RuleTargetInput {
|
|
|
54
54
|
}
|
|
55
55
|
exports.RuleTargetInput = RuleTargetInput;
|
|
56
56
|
_a = JSII_RTTI_SYMBOL_1;
|
|
57
|
-
RuleTargetInput[_a] = { fqn: "terraconstructs.aws.notify.RuleTargetInput", version: "0.0.
|
|
57
|
+
RuleTargetInput[_a] = { fqn: "terraconstructs.aws.notify.RuleTargetInput", version: "0.0.19" };
|
|
58
58
|
/**
|
|
59
59
|
* Event Input that is directly derived from the construct
|
|
60
60
|
*/
|
|
@@ -269,7 +269,7 @@ class EventField {
|
|
|
269
269
|
}
|
|
270
270
|
exports.EventField = EventField;
|
|
271
271
|
_b = JSII_RTTI_SYMBOL_1;
|
|
272
|
-
EventField[_b] = { fqn: "terraconstructs.aws.notify.EventField", version: "0.0.
|
|
272
|
+
EventField[_b] = { fqn: "terraconstructs.aws.notify.EventField", version: "0.0.19" };
|
|
273
273
|
var InputType;
|
|
274
274
|
(function (InputType) {
|
|
275
275
|
InputType[InputType["Object"] = 0] = "Object";
|
|
@@ -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.
|
|
497
|
+
Stream[_a] = { fqn: "terraconstructs.aws.notify.Stream", version: "0.0.19" };
|
|
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.19" };
|
|
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
|
+
}
|