terraconstructs 0.0.8
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/.envrc +5 -0
- package/.jsii +79780 -0
- package/.mise.toml +8 -0
- package/.nvmrc +1 -0
- package/.terraform-version +1 -0
- package/.terraform.d/plugin-cache/.gitignore +5 -0
- package/LICENSE +674 -0
- package/NOTICE.txt +12 -0
- package/README.md +42 -0
- package/bun.lockb +0 -0
- package/go.mod +158 -0
- package/go.sum +1206 -0
- package/lib/aws/arn.d.ts +187 -0
- package/lib/aws/arn.js +383 -0
- package/lib/aws/aws-construct.d.ts +76 -0
- package/lib/aws/aws-construct.js +38 -0
- package/lib/aws/aws-stack.d.ts +201 -0
- package/lib/aws/aws-stack.js +303 -0
- package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
- package/lib/aws/cloudwatch/actions/ec2.js +48 -0
- package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
- package/lib/aws/cloudwatch/actions/index.js +24 -0
- package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
- package/lib/aws/cloudwatch/actions/lambda.js +48 -0
- package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
- package/lib/aws/cloudwatch/alarm-action.js +4 -0
- package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
- package/lib/aws/cloudwatch/alarm-base.js +64 -0
- package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
- package/lib/aws/cloudwatch/alarm-rule.js +116 -0
- package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
- package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
- package/lib/aws/cloudwatch/alarm.d.ts +158 -0
- package/lib/aws/cloudwatch/alarm.js +410 -0
- package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
- package/lib/aws/cloudwatch/composite-alarm.js +98 -0
- package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
- package/lib/aws/cloudwatch/dashboard.js +141 -0
- package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
- package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
- package/lib/aws/cloudwatch/graph.d.ts +792 -0
- package/lib/aws/cloudwatch/graph.js +537 -0
- package/lib/aws/cloudwatch/index.d.ts +26 -0
- package/lib/aws/cloudwatch/index.js +49 -0
- package/lib/aws/cloudwatch/layout.d.ts +89 -0
- package/lib/aws/cloudwatch/layout.js +147 -0
- package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
- package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
- package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
- package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
- package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
- package/lib/aws/cloudwatch/log-group.d.ts +453 -0
- package/lib/aws/cloudwatch/log-group.js +350 -0
- package/lib/aws/cloudwatch/log-query.d.ts +91 -0
- package/lib/aws/cloudwatch/log-query.js +85 -0
- package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
- package/lib/aws/cloudwatch/log-stream.js +57 -0
- package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
- package/lib/aws/cloudwatch/metric-filter.js +69 -0
- package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
- package/lib/aws/cloudwatch/metric-types.js +151 -0
- package/lib/aws/cloudwatch/metric.d.ts +492 -0
- package/lib/aws/cloudwatch/metric.js +493 -0
- package/lib/aws/cloudwatch/pattern.d.ts +195 -0
- package/lib/aws/cloudwatch/pattern.js +412 -0
- package/lib/aws/cloudwatch/policy.d.ts +43 -0
- package/lib/aws/cloudwatch/policy.js +50 -0
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
- package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
- package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
- package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
- package/lib/aws/cloudwatch/private/metric-util.js +132 -0
- package/lib/aws/cloudwatch/private/object.d.ts +1 -0
- package/lib/aws/cloudwatch/private/object.js +18 -0
- package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
- package/lib/aws/cloudwatch/private/rendering.js +181 -0
- package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
- package/lib/aws/cloudwatch/private/statistic.js +176 -0
- package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
- package/lib/aws/cloudwatch/query-definition.js +114 -0
- package/lib/aws/cloudwatch/stats.d.ts +150 -0
- package/lib/aws/cloudwatch/stats.js +207 -0
- package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
- package/lib/aws/cloudwatch/subscription-filter.js +51 -0
- package/lib/aws/cloudwatch/text.d.ts +52 -0
- package/lib/aws/cloudwatch/text.js +53 -0
- package/lib/aws/cloudwatch/variable.d.ts +156 -0
- package/lib/aws/cloudwatch/variable.js +156 -0
- package/lib/aws/cloudwatch/widget.d.ts +62 -0
- package/lib/aws/cloudwatch/widget.js +45 -0
- package/lib/aws/compute/activity.d.ts +81 -0
- package/lib/aws/compute/activity.js +132 -0
- package/lib/aws/compute/architecture.d.ts +33 -0
- package/lib/aws/compute/architecture.js +42 -0
- package/lib/aws/compute/chain.d.ts +52 -0
- package/lib/aws/compute/chain.js +68 -0
- package/lib/aws/compute/condition.d.ts +202 -0
- package/lib/aws/compute/condition.js +409 -0
- package/lib/aws/compute/event-invoke-config.d.ts +74 -0
- package/lib/aws/compute/event-invoke-config.js +63 -0
- package/lib/aws/compute/event-source-filter.d.ts +64 -0
- package/lib/aws/compute/event-source-filter.js +86 -0
- package/lib/aws/compute/event-source-mapping.d.ts +310 -0
- package/lib/aws/compute/event-source-mapping.js +267 -0
- package/lib/aws/compute/event-sources/index.d.ts +4 -0
- package/lib/aws/compute/event-sources/index.js +28 -0
- package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
- package/lib/aws/compute/event-sources/s3.d.ts +24 -0
- package/lib/aws/compute/event-sources/s3.js +25 -0
- package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
- package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
- package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
- package/lib/aws/compute/event-sources/sqs.js +84 -0
- package/lib/aws/compute/fields.d.ts +367 -0
- package/lib/aws/compute/fields.js +546 -0
- package/lib/aws/compute/function-alias.d.ts +148 -0
- package/lib/aws/compute/function-alias.js +176 -0
- package/lib/aws/compute/function-base.d.ts +314 -0
- package/lib/aws/compute/function-base.js +421 -0
- package/lib/aws/compute/function-destination.d.ts +42 -0
- package/lib/aws/compute/function-destination.js +18 -0
- package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
- package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
- package/lib/aws/compute/function-destinations/function.d.ts +34 -0
- package/lib/aws/compute/function-destinations/function.js +55 -0
- package/lib/aws/compute/function-destinations/index.d.ts +3 -0
- package/lib/aws/compute/function-destinations/index.js +22 -0
- package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
- package/lib/aws/compute/function-destinations/sqs.js +27 -0
- package/lib/aws/compute/function-nodejs.d.ts +55 -0
- package/lib/aws/compute/function-nodejs.js +70 -0
- package/lib/aws/compute/function-permission.d.ts +83 -0
- package/lib/aws/compute/function-permission.js +3 -0
- package/lib/aws/compute/function-url.d.ts +210 -0
- package/lib/aws/compute/function-url.js +148 -0
- package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
- package/lib/aws/compute/function-vpc-config.generated.js +3 -0
- package/lib/aws/compute/function.d.ts +492 -0
- package/lib/aws/compute/function.js +692 -0
- package/lib/aws/compute/index.d.ts +42 -0
- package/lib/aws/compute/index.js +64 -0
- package/lib/aws/compute/private/intrinstics.d.ts +86 -0
- package/lib/aws/compute/private/intrinstics.js +220 -0
- package/lib/aws/compute/private/json-path.d.ts +57 -0
- package/lib/aws/compute/private/json-path.js +351 -0
- package/lib/aws/compute/private/util.d.ts +1 -0
- package/lib/aws/compute/private/util.js +38 -0
- package/lib/aws/compute/state-graph.d.ts +100 -0
- package/lib/aws/compute/state-graph.js +177 -0
- package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
- package/lib/aws/compute/state-machine-fragment.js +56 -0
- package/lib/aws/compute/state-machine.d.ts +323 -0
- package/lib/aws/compute/state-machine.js +392 -0
- package/lib/aws/compute/states/choice.d.ts +94 -0
- package/lib/aws/compute/states/choice.js +81 -0
- package/lib/aws/compute/states/custom-state.d.ts +55 -0
- package/lib/aws/compute/states/custom-state.js +114 -0
- package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
- package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
- package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
- package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
- package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
- package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
- package/lib/aws/compute/states/distributed-map.d.ts +153 -0
- package/lib/aws/compute/states/distributed-map.js +207 -0
- package/lib/aws/compute/states/fail.d.ts +74 -0
- package/lib/aws/compute/states/fail.js +83 -0
- package/lib/aws/compute/states/map-base.d.ts +145 -0
- package/lib/aws/compute/states/map-base.js +109 -0
- package/lib/aws/compute/states/map.d.ts +76 -0
- package/lib/aws/compute/states/map.js +110 -0
- package/lib/aws/compute/states/parallel.d.ts +113 -0
- package/lib/aws/compute/states/parallel.js +100 -0
- package/lib/aws/compute/states/pass.d.ts +122 -0
- package/lib/aws/compute/states/pass.js +99 -0
- package/lib/aws/compute/states/private/state-type.d.ts +13 -0
- package/lib/aws/compute/states/private/state-type.js +19 -0
- package/lib/aws/compute/states/state.d.ts +276 -0
- package/lib/aws/compute/states/state.js +482 -0
- package/lib/aws/compute/states/succeed.d.ts +51 -0
- package/lib/aws/compute/states/succeed.js +32 -0
- package/lib/aws/compute/states/task-base.d.ts +225 -0
- package/lib/aws/compute/states/task-base.js +160 -0
- package/lib/aws/compute/states/task.d.ts +127 -0
- package/lib/aws/compute/states/task.js +92 -0
- package/lib/aws/compute/states/wait.d.ts +78 -0
- package/lib/aws/compute/states/wait.js +90 -0
- package/lib/aws/compute/step-functions-task.d.ts +78 -0
- package/lib/aws/compute/step-functions-task.js +27 -0
- package/lib/aws/compute/task-credentials.d.ts +45 -0
- package/lib/aws/compute/task-credentials.js +52 -0
- package/lib/aws/compute/task-input.d.ts +86 -0
- package/lib/aws/compute/task-input.js +107 -0
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
- package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
- package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
- package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
- package/lib/aws/compute/tasks/http/invoke.js +117 -0
- package/lib/aws/compute/tasks/index.d.ts +7 -0
- package/lib/aws/compute/tasks/index.js +42 -0
- package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
- package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
- package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
- package/lib/aws/compute/tasks/private/task-utils.js +36 -0
- package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
- package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
- package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
- package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
- package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
- package/lib/aws/compute/types.d.ts +214 -0
- package/lib/aws/compute/types.js +103 -0
- package/lib/aws/compute/util.d.ts +12 -0
- package/lib/aws/compute/util.js +29 -0
- package/lib/aws/edge/certificate.d.ts +144 -0
- package/lib/aws/edge/certificate.js +191 -0
- package/lib/aws/edge/distribution.d.ts +505 -0
- package/lib/aws/edge/distribution.js +444 -0
- package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
- package/lib/aws/edge/dns-alias-record-targets.js +46 -0
- package/lib/aws/edge/dns-record.d.ts +536 -0
- package/lib/aws/edge/dns-record.js +532 -0
- package/lib/aws/edge/dns-zone.d.ts +169 -0
- package/lib/aws/edge/dns-zone.js +149 -0
- package/lib/aws/edge/function.d.ts +185 -0
- package/lib/aws/edge/function.js +141 -0
- package/lib/aws/edge/index.d.ts +8 -0
- package/lib/aws/edge/index.js +25 -0
- package/lib/aws/edge/key-value-store.d.ts +162 -0
- package/lib/aws/edge/key-value-store.js +163 -0
- package/lib/aws/edge/origin.d.ts +160 -0
- package/lib/aws/edge/origin.js +245 -0
- package/lib/aws/encryption/alias.d.ts +137 -0
- package/lib/aws/encryption/alias.js +216 -0
- package/lib/aws/encryption/index.d.ts +4 -0
- package/lib/aws/encryption/index.js +21 -0
- package/lib/aws/encryption/key-lookup.d.ts +11 -0
- package/lib/aws/encryption/key-lookup.js +4 -0
- package/lib/aws/encryption/key.d.ts +461 -0
- package/lib/aws/encryption/key.js +586 -0
- package/lib/aws/encryption/private/perms.d.ts +5 -0
- package/lib/aws/encryption/private/perms.js +30 -0
- package/lib/aws/encryption/via-service-principal.d.ts +11 -0
- package/lib/aws/encryption/via-service-principal.js +39 -0
- package/lib/aws/iam/grant.d.ts +221 -0
- package/lib/aws/iam/grant.js +239 -0
- package/lib/aws/iam/identity-base.d.ts +20 -0
- package/lib/aws/iam/identity-base.js +3 -0
- package/lib/aws/iam/index.d.ts +16 -0
- package/lib/aws/iam/index.js +34 -0
- package/lib/aws/iam/managed-policy.d.ts +227 -0
- package/lib/aws/iam/managed-policy.js +237 -0
- package/lib/aws/iam/oidc-provider.d.ts +120 -0
- package/lib/aws/iam/oidc-provider.js +82 -0
- package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
- package/lib/aws/iam/policy-document-config.generated.js +3 -0
- package/lib/aws/iam/policy-document.d.ts +150 -0
- package/lib/aws/iam/policy-document.js +172 -0
- package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
- package/lib/aws/iam/policy-statement-props.generated.js +3 -0
- package/lib/aws/iam/policy-statement.d.ts +451 -0
- package/lib/aws/iam/policy-statement.js +947 -0
- package/lib/aws/iam/policy.d.ts +122 -0
- package/lib/aws/iam/policy.js +192 -0
- package/lib/aws/iam/principals.d.ts +668 -0
- package/lib/aws/iam/principals.js +1032 -0
- package/lib/aws/iam/private/adapter.d.ts +21 -0
- package/lib/aws/iam/private/adapter.js +51 -0
- package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
- package/lib/aws/iam/private/assume-role-policy.js +27 -0
- package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
- package/lib/aws/iam/private/comparable-principal.js +20 -0
- package/lib/aws/iam/private/immutable-role.d.ts +43 -0
- package/lib/aws/iam/private/immutable-role.js +76 -0
- package/lib/aws/iam/private/imported-role.d.ts +49 -0
- package/lib/aws/iam/private/imported-role.js +103 -0
- package/lib/aws/iam/private/merge-statements.d.ts +44 -0
- package/lib/aws/iam/private/merge-statements.js +214 -0
- package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
- package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
- package/lib/aws/iam/private/util.d.ts +37 -0
- package/lib/aws/iam/private/util.js +87 -0
- package/lib/aws/iam/role.d.ts +425 -0
- package/lib/aws/iam/role.js +407 -0
- package/lib/aws/iam/saml-provider.d.ts +79 -0
- package/lib/aws/iam/saml-provider.js +79 -0
- package/lib/aws/iam/unknown-principal.d.ts +32 -0
- package/lib/aws/iam/unknown-principal.js +45 -0
- package/lib/aws/iam/utils.d.ts +12 -0
- package/lib/aws/iam/utils.js +41 -0
- package/lib/aws/index.d.ts +13 -0
- package/lib/aws/index.js +34 -0
- package/lib/aws/log-retention.d.ts +97 -0
- package/lib/aws/log-retention.js +103 -0
- package/lib/aws/network/index.d.ts +4 -0
- package/lib/aws/network/index.js +21 -0
- package/lib/aws/network/network.d.ts +77 -0
- package/lib/aws/network/network.js +3 -0
- package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
- package/lib/aws/network/simple-ipv4-vpc.js +236 -0
- package/lib/aws/network/subnet-group.d.ts +42 -0
- package/lib/aws/network/subnet-group.js +72 -0
- package/lib/aws/network/subnet.d.ts +95 -0
- package/lib/aws/network/subnet.js +123 -0
- package/lib/aws/notify/archive.d.ts +77 -0
- package/lib/aws/notify/archive.js +62 -0
- package/lib/aws/notify/connection.d.ts +276 -0
- package/lib/aws/notify/connection.js +261 -0
- package/lib/aws/notify/event-bus.d.ts +298 -0
- package/lib/aws/notify/event-bus.js +326 -0
- package/lib/aws/notify/event-pattern.d.ts +220 -0
- package/lib/aws/notify/event-pattern.js +197 -0
- package/lib/aws/notify/index.d.ts +15 -0
- package/lib/aws/notify/index.js +35 -0
- package/lib/aws/notify/input.d.ts +126 -0
- package/lib/aws/notify/input.js +282 -0
- package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
- package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
- package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
- package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
- package/lib/aws/notify/kinesis-stream.d.ts +705 -0
- package/lib/aws/notify/kinesis-stream.js +541 -0
- package/lib/aws/notify/on-event-options.d.ts +54 -0
- package/lib/aws/notify/on-event-options.js +3 -0
- package/lib/aws/notify/queue-config.generated.d.ts +85 -0
- package/lib/aws/notify/queue-config.generated.js +3 -0
- package/lib/aws/notify/queue-policy.d.ts +35 -0
- package/lib/aws/notify/queue-policy.js +39 -0
- package/lib/aws/notify/queue.d.ts +355 -0
- package/lib/aws/notify/queue.js +305 -0
- package/lib/aws/notify/resource-policy.d.ts +41 -0
- package/lib/aws/notify/resource-policy.js +43 -0
- package/lib/aws/notify/rule.d.ts +153 -0
- package/lib/aws/notify/rule.js +227 -0
- package/lib/aws/notify/schedule.d.ts +83 -0
- package/lib/aws/notify/schedule.js +116 -0
- package/lib/aws/notify/target.d.ts +102 -0
- package/lib/aws/notify/target.js +3 -0
- package/lib/aws/notify/targets/event-bus.d.ts +39 -0
- package/lib/aws/notify/targets/event-bus.js +40 -0
- package/lib/aws/notify/targets/function.d.ts +31 -0
- package/lib/aws/notify/targets/function.js +36 -0
- package/lib/aws/notify/targets/index.d.ts +6 -0
- package/lib/aws/notify/targets/index.js +37 -0
- package/lib/aws/notify/targets/log-group.d.ts +89 -0
- package/lib/aws/notify/targets/log-group.js +110 -0
- package/lib/aws/notify/targets/sqs.d.ts +45 -0
- package/lib/aws/notify/targets/sqs.js +73 -0
- package/lib/aws/notify/targets/state-machine.d.ts +36 -0
- package/lib/aws/notify/targets/state-machine.js +39 -0
- package/lib/aws/notify/targets/util.d.ts +71 -0
- package/lib/aws/notify/targets/util.js +130 -0
- package/lib/aws/notify/util.d.ts +13 -0
- package/lib/aws/notify/util.js +69 -0
- package/lib/aws/provider-config.generated.d.ts +220 -0
- package/lib/aws/provider-config.generated.js +3 -0
- package/lib/aws/storage/bucket-destination.d.ts +41 -0
- package/lib/aws/storage/bucket-destination.js +13 -0
- package/lib/aws/storage/bucket-notifications.d.ts +58 -0
- package/lib/aws/storage/bucket-notifications.js +169 -0
- package/lib/aws/storage/bucket-perms.d.ts +9 -0
- package/lib/aws/storage/bucket-perms.js +33 -0
- package/lib/aws/storage/bucket-policy.d.ts +51 -0
- package/lib/aws/storage/bucket-policy.js +53 -0
- package/lib/aws/storage/bucket-source.d.ts +41 -0
- package/lib/aws/storage/bucket-source.js +79 -0
- package/lib/aws/storage/bucket.d.ts +941 -0
- package/lib/aws/storage/bucket.js +869 -0
- package/lib/aws/storage/cors-config.generated.d.ts +57 -0
- package/lib/aws/storage/cors-config.generated.js +3 -0
- package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
- package/lib/aws/storage/cors-rule-config.generated.js +3 -0
- package/lib/aws/storage/index.d.ts +12 -0
- package/lib/aws/storage/index.js +31 -0
- package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
- package/lib/aws/storage/lifecycle-config.generated.js +3 -0
- package/lib/aws/storage/notification-targets/function.d.ts +11 -0
- package/lib/aws/storage/notification-targets/function.js +48 -0
- package/lib/aws/storage/notification-targets/index.d.ts +2 -0
- package/lib/aws/storage/notification-targets/index.js +21 -0
- package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
- package/lib/aws/storage/notification-targets/queue.js +58 -0
- package/lib/aws/storage/origin-access-identity.d.ts +91 -0
- package/lib/aws/storage/origin-access-identity.js +76 -0
- package/lib/aws/storage/util.d.ts +40 -0
- package/lib/aws/storage/util.js +85 -0
- package/lib/aws/storage/website-config.generated.d.ts +73 -0
- package/lib/aws/storage/website-config.generated.js +3 -0
- package/lib/aws/util.d.ts +4 -0
- package/lib/aws/util.js +25 -0
- package/lib/construct-base.d.ts +69 -0
- package/lib/construct-base.js +89 -0
- package/lib/duration.d.ts +160 -0
- package/lib/duration.js +327 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +24 -0
- package/lib/private/index.d.ts +2 -0
- package/lib/private/index.js +19 -0
- package/lib/private/terraform-dependables-aspect.d.ts +20 -0
- package/lib/private/terraform-dependables-aspect.js +95 -0
- package/lib/private/unique-resource-name.d.ts +9 -0
- package/lib/private/unique-resource-name.js +145 -0
- package/lib/size.d.ts +146 -0
- package/lib/size.js +220 -0
- package/lib/stack-base.d.ts +188 -0
- package/lib/stack-base.js +183 -0
- package/lib/token.d.ts +32 -0
- package/lib/token.js +54 -0
- package/node_modules/camel-case/LICENSE +21 -0
- package/node_modules/camel-case/README.md +47 -0
- package/node_modules/camel-case/dist/index.d.ts +5 -0
- package/node_modules/camel-case/dist/index.js +23 -0
- package/node_modules/camel-case/dist/index.js.map +1 -0
- package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
- package/node_modules/camel-case/dist/index.spec.js +26 -0
- package/node_modules/camel-case/dist/index.spec.js.map +1 -0
- package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
- package/node_modules/camel-case/dist.es2015/index.js +17 -0
- package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
- package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/camel-case/package.json +89 -0
- package/node_modules/capital-case/LICENSE +21 -0
- package/node_modules/capital-case/README.md +37 -0
- package/node_modules/capital-case/dist/index.d.ts +4 -0
- package/node_modules/capital-case/dist/index.js +16 -0
- package/node_modules/capital-case/dist/index.js.map +1 -0
- package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
- package/node_modules/capital-case/dist/index.spec.js +24 -0
- package/node_modules/capital-case/dist/index.spec.js.map +1 -0
- package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
- package/node_modules/capital-case/dist.es2015/index.js +11 -0
- package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
- package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/capital-case/package.json +90 -0
- package/node_modules/change-case/LICENSE +21 -0
- package/node_modules/change-case/README.md +44 -0
- package/node_modules/change-case/dist/index.d.ts +11 -0
- package/node_modules/change-case/dist/index.js +15 -0
- package/node_modules/change-case/dist/index.js.map +1 -0
- package/node_modules/change-case/dist/index.spec.d.ts +1 -0
- package/node_modules/change-case/dist/index.spec.js +9 -0
- package/node_modules/change-case/dist/index.spec.js.map +1 -0
- package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
- package/node_modules/change-case/dist.es2015/index.js +12 -0
- package/node_modules/change-case/dist.es2015/index.js.map +1 -0
- package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
- package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/change-case/package.json +101 -0
- package/node_modules/constant-case/LICENSE +21 -0
- package/node_modules/constant-case/README.md +37 -0
- package/node_modules/constant-case/dist/index.d.ts +3 -0
- package/node_modules/constant-case/dist/index.js +12 -0
- package/node_modules/constant-case/dist/index.js.map +1 -0
- package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
- package/node_modules/constant-case/dist/index.spec.js +26 -0
- package/node_modules/constant-case/dist/index.spec.js.map +1 -0
- package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/constant-case/dist.es2015/index.js +8 -0
- package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
- package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/constant-case/package.json +90 -0
- package/node_modules/dot-case/LICENSE +21 -0
- package/node_modules/dot-case/README.md +37 -0
- package/node_modules/dot-case/dist/index.d.ts +3 -0
- package/node_modules/dot-case/dist/index.js +11 -0
- package/node_modules/dot-case/dist/index.js.map +1 -0
- package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
- package/node_modules/dot-case/dist/index.spec.js +26 -0
- package/node_modules/dot-case/dist/index.spec.js.map +1 -0
- package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/dot-case/dist.es2015/index.js +7 -0
- package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
- package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
- package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/dot-case/package.json +89 -0
- package/node_modules/esbuild-wasm/LICENSE.md +21 -0
- package/node_modules/esbuild-wasm/README.md +3 -0
- package/node_modules/esbuild-wasm/bin/esbuild +91 -0
- package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
- package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
- package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
- package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
- package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
- package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
- package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
- package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
- package/node_modules/esbuild-wasm/lib/main.js +2051 -0
- package/node_modules/esbuild-wasm/package.json +19 -0
- package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
- package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
- package/node_modules/header-case/LICENSE +21 -0
- package/node_modules/header-case/README.md +37 -0
- package/node_modules/header-case/dist/index.d.ts +3 -0
- package/node_modules/header-case/dist/index.js +11 -0
- package/node_modules/header-case/dist/index.js.map +1 -0
- package/node_modules/header-case/dist/index.spec.d.ts +1 -0
- package/node_modules/header-case/dist/index.spec.js +24 -0
- package/node_modules/header-case/dist/index.spec.js.map +1 -0
- package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/header-case/dist.es2015/index.js +7 -0
- package/node_modules/header-case/dist.es2015/index.js.map +1 -0
- package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/header-case/package.json +89 -0
- package/node_modules/lower-case/LICENSE +21 -0
- package/node_modules/lower-case/README.md +35 -0
- package/node_modules/lower-case/dist/index.d.ts +8 -0
- package/node_modules/lower-case/dist/index.js +53 -0
- package/node_modules/lower-case/dist/index.js.map +1 -0
- package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
- package/node_modules/lower-case/dist/index.spec.js +36 -0
- package/node_modules/lower-case/dist/index.spec.js.map +1 -0
- package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
- package/node_modules/lower-case/dist.es2015/index.js +48 -0
- package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
- package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
- package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/lower-case/package.json +87 -0
- package/node_modules/mime-db/HISTORY.md +507 -0
- package/node_modules/mime-db/LICENSE +23 -0
- package/node_modules/mime-db/README.md +100 -0
- package/node_modules/mime-db/db.json +8519 -0
- package/node_modules/mime-db/index.js +12 -0
- package/node_modules/mime-db/package.json +60 -0
- package/node_modules/mime-types/HISTORY.md +397 -0
- package/node_modules/mime-types/LICENSE +23 -0
- package/node_modules/mime-types/README.md +113 -0
- package/node_modules/mime-types/index.js +188 -0
- package/node_modules/mime-types/package.json +44 -0
- package/node_modules/no-case/LICENSE +21 -0
- package/node_modules/no-case/README.md +37 -0
- package/node_modules/no-case/dist/index.d.ts +10 -0
- package/node_modules/no-case/dist/index.js +35 -0
- package/node_modules/no-case/dist/index.js.map +1 -0
- package/node_modules/no-case/dist/index.spec.d.ts +1 -0
- package/node_modules/no-case/dist/index.spec.js +59 -0
- package/node_modules/no-case/dist/index.spec.js.map +1 -0
- package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
- package/node_modules/no-case/dist.es2015/index.js +31 -0
- package/node_modules/no-case/dist.es2015/index.js.map +1 -0
- package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
- package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/no-case/package.json +85 -0
- package/node_modules/param-case/LICENSE +21 -0
- package/node_modules/param-case/README.md +37 -0
- package/node_modules/param-case/dist/index.d.ts +3 -0
- package/node_modules/param-case/dist/index.js +11 -0
- package/node_modules/param-case/dist/index.js.map +1 -0
- package/node_modules/param-case/dist/index.spec.d.ts +1 -0
- package/node_modules/param-case/dist/index.spec.js +24 -0
- package/node_modules/param-case/dist/index.spec.js.map +1 -0
- package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/param-case/dist.es2015/index.js +7 -0
- package/node_modules/param-case/dist.es2015/index.js.map +1 -0
- package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/param-case/package.json +91 -0
- package/node_modules/pascal-case/LICENSE +21 -0
- package/node_modules/pascal-case/README.md +47 -0
- package/node_modules/pascal-case/dist/index.d.ts +5 -0
- package/node_modules/pascal-case/dist/index.js +24 -0
- package/node_modules/pascal-case/dist/index.js.map +1 -0
- package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
- package/node_modules/pascal-case/dist/index.spec.js +25 -0
- package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
- package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
- package/node_modules/pascal-case/dist.es2015/index.js +18 -0
- package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
- package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/pascal-case/package.json +90 -0
- package/node_modules/path-case/LICENSE +21 -0
- package/node_modules/path-case/README.md +37 -0
- package/node_modules/path-case/dist/index.d.ts +3 -0
- package/node_modules/path-case/dist/index.js +11 -0
- package/node_modules/path-case/dist/index.js.map +1 -0
- package/node_modules/path-case/dist/index.spec.d.ts +1 -0
- package/node_modules/path-case/dist/index.spec.js +24 -0
- package/node_modules/path-case/dist/index.spec.js.map +1 -0
- package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/path-case/dist.es2015/index.js +7 -0
- package/node_modules/path-case/dist.es2015/index.js.map +1 -0
- package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/path-case/package.json +88 -0
- package/node_modules/sentence-case/LICENSE +21 -0
- package/node_modules/sentence-case/README.md +37 -0
- package/node_modules/sentence-case/dist/index.d.ts +4 -0
- package/node_modules/sentence-case/dist/index.js +19 -0
- package/node_modules/sentence-case/dist/index.js.map +1 -0
- package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
- package/node_modules/sentence-case/dist/index.spec.js +24 -0
- package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
- package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
- package/node_modules/sentence-case/dist.es2015/index.js +14 -0
- package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
- package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/sentence-case/package.json +89 -0
- package/node_modules/snake-case/LICENSE +21 -0
- package/node_modules/snake-case/README.md +37 -0
- package/node_modules/snake-case/dist/index.d.ts +3 -0
- package/node_modules/snake-case/dist/index.js +11 -0
- package/node_modules/snake-case/dist/index.js.map +1 -0
- package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
- package/node_modules/snake-case/dist/index.spec.js +25 -0
- package/node_modules/snake-case/dist/index.spec.js.map +1 -0
- package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
- package/node_modules/snake-case/dist.es2015/index.js +7 -0
- package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
- package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
- package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/snake-case/package.json +90 -0
- package/node_modules/tslib/CopyrightNotice.txt +15 -0
- package/node_modules/tslib/LICENSE.txt +12 -0
- package/node_modules/tslib/README.md +164 -0
- package/node_modules/tslib/SECURITY.md +41 -0
- package/node_modules/tslib/modules/index.d.ts +37 -0
- package/node_modules/tslib/modules/index.js +68 -0
- package/node_modules/tslib/modules/package.json +3 -0
- package/node_modules/tslib/package.json +47 -0
- package/node_modules/tslib/tslib.d.ts +453 -0
- package/node_modules/tslib/tslib.es6.html +1 -0
- package/node_modules/tslib/tslib.es6.js +374 -0
- package/node_modules/tslib/tslib.es6.mjs +373 -0
- package/node_modules/tslib/tslib.html +1 -0
- package/node_modules/tslib/tslib.js +424 -0
- package/node_modules/upper-case/README.md +34 -0
- package/node_modules/upper-case/dist/index.d.ts +8 -0
- package/node_modules/upper-case/dist/index.js +49 -0
- package/node_modules/upper-case/dist/index.js.map +1 -0
- package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
- package/node_modules/upper-case/dist/index.spec.js +34 -0
- package/node_modules/upper-case/dist/index.spec.js.map +1 -0
- package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
- package/node_modules/upper-case/dist.es2015/index.js +44 -0
- package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
- package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
- package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/upper-case/package.json +86 -0
- package/node_modules/upper-case-first/LICENSE +21 -0
- package/node_modules/upper-case-first/README.md +32 -0
- package/node_modules/upper-case-first/dist/index.d.ts +4 -0
- package/node_modules/upper-case-first/dist/index.js +11 -0
- package/node_modules/upper-case-first/dist/index.js.map +1 -0
- package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
- package/node_modules/upper-case-first/dist/index.spec.js +20 -0
- package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
- package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
- package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
- package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
- package/node_modules/upper-case-first/package.json +87 -0
- package/package.json +152 -0
- package/setup.js +2 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AwsStack = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const provider_aws_1 = require("@cdktf/provider-aws");
|
|
7
|
+
const cdktf_1 = require("cdktf");
|
|
8
|
+
const change_case_1 = require("change-case");
|
|
9
|
+
const arn_1 = require("./arn");
|
|
10
|
+
const terraform_dependables_aspect_1 = require("../private/terraform-dependables-aspect");
|
|
11
|
+
const stack_base_1 = require("../stack-base");
|
|
12
|
+
const AWS_STACK_SYMBOL = Symbol.for("terraconstructs/lib/aws.AwsStack");
|
|
13
|
+
/**
|
|
14
|
+
* A Terraform stack constrained to a single AWS Account/Region to simulate CFN behavior.
|
|
15
|
+
*/
|
|
16
|
+
class AwsStack extends stack_base_1.StackBase {
|
|
17
|
+
// ref: https://github.com/aws/aws-cdk/blob/v2.150.0/packages/aws-cdk-lib/core/lib/stack.ts#L204
|
|
18
|
+
/**
|
|
19
|
+
* Return whether the given object is a Stack.
|
|
20
|
+
*
|
|
21
|
+
* attribute detection since as 'instanceof' potentially fails across Library releases.
|
|
22
|
+
*/
|
|
23
|
+
static isAwsStack(x) {
|
|
24
|
+
return x !== null && typeof x === "object" && AWS_STACK_SYMBOL in x;
|
|
25
|
+
}
|
|
26
|
+
// ref: https://github.com/aws/aws-cdk/blob/v2.150.0/packages/aws-cdk-lib/core/lib/stack.ts#L212
|
|
27
|
+
/**
|
|
28
|
+
* Looks up the first stack scope in which `construct` is defined. Fails if there is no stack up the tree or the stack is not an AwsStack.
|
|
29
|
+
* @param construct The construct to start the search from.
|
|
30
|
+
*/
|
|
31
|
+
static ofAwsConstruct(construct) {
|
|
32
|
+
const s = cdktf_1.TerraformStack.of(construct);
|
|
33
|
+
if (AwsStack.isAwsStack(s)) {
|
|
34
|
+
return s;
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Resource '${construct.constructor?.name}' at '${construct.node.path}' should be created in the scope of an AwsStack, but no AwsStack found`);
|
|
37
|
+
}
|
|
38
|
+
constructor(scope, id, props) {
|
|
39
|
+
super(scope, id, props);
|
|
40
|
+
this.regionalAwsProviders = {};
|
|
41
|
+
this.lookup = {
|
|
42
|
+
awsProvider: new provider_aws_1.provider.AwsProvider(this, "defaultAwsProvider", props.providerConfig),
|
|
43
|
+
dataAwsServicePrincipals: {},
|
|
44
|
+
};
|
|
45
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
46
|
+
Object.defineProperty(this, AWS_STACK_SYMBOL, { value: true });
|
|
47
|
+
}
|
|
48
|
+
get provider() {
|
|
49
|
+
return this.lookup.awsProvider;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the Region of the AWS Stack
|
|
53
|
+
*/
|
|
54
|
+
get region() {
|
|
55
|
+
if (this.lookup.awsProvider.region) {
|
|
56
|
+
return this.lookup.awsProvider.region;
|
|
57
|
+
}
|
|
58
|
+
if (!this.lookup.dataAwsRegion) {
|
|
59
|
+
const region = new provider_aws_1.dataAwsRegion.DataAwsRegion(this, "Region", {
|
|
60
|
+
provider: this.lookup.awsProvider,
|
|
61
|
+
});
|
|
62
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
63
|
+
Object.defineProperty(region, terraform_dependables_aspect_1.SKIP_DEPENDENCY_PROPAGATION, {
|
|
64
|
+
value: true,
|
|
65
|
+
});
|
|
66
|
+
this.lookup.dataAwsRegion = region;
|
|
67
|
+
}
|
|
68
|
+
return this.lookup.dataAwsRegion.name;
|
|
69
|
+
}
|
|
70
|
+
get dataAwsCallerIdentity() {
|
|
71
|
+
if (!this.lookup.dataAwsCallerIdentity) {
|
|
72
|
+
const identity = new provider_aws_1.dataAwsCallerIdentity.DataAwsCallerIdentity(this, "CallerIdentity", {
|
|
73
|
+
provider: this.lookup.awsProvider,
|
|
74
|
+
});
|
|
75
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
76
|
+
Object.defineProperty(identity, terraform_dependables_aspect_1.SKIP_DEPENDENCY_PROPAGATION, {
|
|
77
|
+
value: true,
|
|
78
|
+
});
|
|
79
|
+
this.lookup.dataAwsCallerIdentity = identity;
|
|
80
|
+
}
|
|
81
|
+
return this.lookup.dataAwsCallerIdentity;
|
|
82
|
+
}
|
|
83
|
+
get dataAwsAvailabilityZones() {
|
|
84
|
+
if (!this.lookup.dataAwsAvailabilityZones) {
|
|
85
|
+
const azs = new provider_aws_1.dataAwsAvailabilityZones.DataAwsAvailabilityZones(this, "AvailabilityZones", {
|
|
86
|
+
provider: this.lookup.awsProvider,
|
|
87
|
+
});
|
|
88
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
89
|
+
Object.defineProperty(azs, terraform_dependables_aspect_1.SKIP_DEPENDENCY_PROPAGATION, { value: true });
|
|
90
|
+
this.lookup.dataAwsAvailabilityZones = azs;
|
|
91
|
+
}
|
|
92
|
+
return this.lookup.dataAwsAvailabilityZones;
|
|
93
|
+
}
|
|
94
|
+
get dataAwsPartition() {
|
|
95
|
+
if (!this.lookup.dataAwsPartition) {
|
|
96
|
+
const partition = new provider_aws_1.dataAwsPartition.DataAwsPartition(this, "Partitition", {
|
|
97
|
+
provider: this.lookup.awsProvider,
|
|
98
|
+
});
|
|
99
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
100
|
+
Object.defineProperty(partition, terraform_dependables_aspect_1.SKIP_DEPENDENCY_PROPAGATION, {
|
|
101
|
+
value: true,
|
|
102
|
+
});
|
|
103
|
+
this.lookup.dataAwsPartition = partition;
|
|
104
|
+
}
|
|
105
|
+
return this.lookup.dataAwsPartition;
|
|
106
|
+
}
|
|
107
|
+
getRegionalAwsProvider(region) {
|
|
108
|
+
if (!this.regionalAwsProviders[region]) {
|
|
109
|
+
this.regionalAwsProviders[region] = new provider_aws_1.provider.AwsProvider(this, `aws_${toTerraformIdentifier(region)}`, {
|
|
110
|
+
region,
|
|
111
|
+
alias: toTerraformIdentifier(region),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return this.regionalAwsProviders[region];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the Account of the AWS Stack
|
|
118
|
+
*/
|
|
119
|
+
get account() {
|
|
120
|
+
if (!this._accountIdToken) {
|
|
121
|
+
this._accountIdToken = this.dataAwsCallerIdentity.accountId;
|
|
122
|
+
}
|
|
123
|
+
return this._accountIdToken;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the Partition of the AWS Stack
|
|
127
|
+
*/
|
|
128
|
+
get partition() {
|
|
129
|
+
if (!this._paritionToken) {
|
|
130
|
+
this._paritionToken = this.dataAwsPartition.partition;
|
|
131
|
+
}
|
|
132
|
+
return this._paritionToken;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Base DNS domain name for the current partition (e.g., amazonaws.com in AWS Commercial, amazonaws.com.cn in AWS China).
|
|
136
|
+
*/
|
|
137
|
+
get urlSuffix() {
|
|
138
|
+
if (!this._urlSuffixToken) {
|
|
139
|
+
this._urlSuffixToken = this.dataAwsPartition.dnsSuffix;
|
|
140
|
+
}
|
|
141
|
+
return this._urlSuffixToken;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Return the service principal name based on the region it's used in.
|
|
145
|
+
*
|
|
146
|
+
* Some service principal names used to be different for different partitions,
|
|
147
|
+
* and some were not.
|
|
148
|
+
*
|
|
149
|
+
* These days all service principal names are standardized, and they are all
|
|
150
|
+
* of the form `<servicename>.amazonaws.com`.
|
|
151
|
+
*
|
|
152
|
+
* To avoid breaking changes, handling is provided for services added with the formats below,
|
|
153
|
+
* however, no additional handling will be added for new regions or partitions.
|
|
154
|
+
* - s3
|
|
155
|
+
* - s3.amazonaws.com
|
|
156
|
+
* - s3.amazonaws.com.cn
|
|
157
|
+
* - s3.c2s.ic.gov
|
|
158
|
+
* - s3.sc2s.sgov.gov
|
|
159
|
+
*
|
|
160
|
+
* @param service The service name to get the service principal ID for
|
|
161
|
+
* @param region The region to get the service principal ID for
|
|
162
|
+
*/
|
|
163
|
+
servicePrincipalName(service, region) {
|
|
164
|
+
const DEFAULT_REGION_KEY = "default_region";
|
|
165
|
+
if (!region) {
|
|
166
|
+
region = DEFAULT_REGION_KEY;
|
|
167
|
+
}
|
|
168
|
+
if (cdktf_1.Token.isUnresolved(region)) {
|
|
169
|
+
throw new Error("Cannot determine the service principal ID because the region is a token. " +
|
|
170
|
+
"You must specify the region explicitly.");
|
|
171
|
+
}
|
|
172
|
+
// if full service name is provided, extract just the service name
|
|
173
|
+
// for supported cases (as required by Terraform aws_service_principal Data Source)
|
|
174
|
+
const match = service.match(/^([^.]+)(?:(?:\.amazonaws\.com(?:\.cn)?)|(?:\.c2s\.ic\.gov)|(?:\.sc2s\.sgov\.gov))?$/);
|
|
175
|
+
const serviceName = match ? match[1] : service;
|
|
176
|
+
if (!this.lookup.dataAwsServicePrincipals[region]) {
|
|
177
|
+
this.lookup.dataAwsServicePrincipals[region] = {};
|
|
178
|
+
}
|
|
179
|
+
if (!this.lookup.dataAwsServicePrincipals[region][serviceName]) {
|
|
180
|
+
const svcp = new provider_aws_1.dataAwsServicePrincipal.DataAwsServicePrincipal(this, `aws_svcp_${toTerraformIdentifier(region)}_${serviceName}}`, {
|
|
181
|
+
serviceName,
|
|
182
|
+
provider: region === DEFAULT_REGION_KEY
|
|
183
|
+
? undefined
|
|
184
|
+
: this.getRegionalAwsProvider(region),
|
|
185
|
+
});
|
|
186
|
+
// these should never depend on anything (HACK to avoid cycles)
|
|
187
|
+
Object.defineProperty(svcp, terraform_dependables_aspect_1.SKIP_DEPENDENCY_PROPAGATION, { value: true });
|
|
188
|
+
this.lookup.dataAwsServicePrincipals[region][serviceName] = svcp;
|
|
189
|
+
}
|
|
190
|
+
return this.lookup.dataAwsServicePrincipals[region][serviceName].name;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Creates an ARN from components.
|
|
194
|
+
*
|
|
195
|
+
* If `partition`, `region` or `account` are not specified, the stack's
|
|
196
|
+
* partition, region and account will be used.
|
|
197
|
+
*
|
|
198
|
+
* If any component is the empty string, an empty string will be inserted
|
|
199
|
+
* into the generated ARN at the location that component corresponds to.
|
|
200
|
+
*
|
|
201
|
+
* The ARN will be formatted as follows:
|
|
202
|
+
*
|
|
203
|
+
* arn:{partition}:{service}:{region}:{account}:{resource}{sep}{resource-name}
|
|
204
|
+
*
|
|
205
|
+
* The required ARN pieces that are omitted will be taken from the stack that
|
|
206
|
+
* the 'scope' is attached to. If all ARN pieces are supplied, the supplied scope
|
|
207
|
+
* can be 'undefined'.
|
|
208
|
+
*/
|
|
209
|
+
formatArn(components) {
|
|
210
|
+
return arn_1.Arn.format(components, this);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Given an ARN, parses it and returns components.
|
|
214
|
+
*
|
|
215
|
+
* IF THE ARN IS A CONCRETE STRING...
|
|
216
|
+
*
|
|
217
|
+
* ...it will be parsed and validated. The separator (`sep`) will be set to '/'
|
|
218
|
+
* if the 6th component includes a '/', in which case, `resource` will be set
|
|
219
|
+
* to the value before the '/' and `resourceName` will be the rest. In case
|
|
220
|
+
* there is no '/', `resource` will be set to the 6th components and
|
|
221
|
+
* `resourceName` will be set to the rest of the string.
|
|
222
|
+
*
|
|
223
|
+
* IF THE ARN IS A TOKEN...
|
|
224
|
+
*
|
|
225
|
+
* ...it cannot be validated, since we don't have the actual value yet at the
|
|
226
|
+
* time of this function call. You will have to supply `sepIfToken` and
|
|
227
|
+
* whether or not ARNs of the expected format usually have resource names
|
|
228
|
+
* in order to parse it properly. The resulting `ArnComponents` object will
|
|
229
|
+
* contain tokens for the subexpressions of the ARN, not string literals.
|
|
230
|
+
*
|
|
231
|
+
* If the resource name could possibly contain the separator char, the actual
|
|
232
|
+
* resource name cannot be properly parsed. This only occurs if the separator
|
|
233
|
+
* char is '/', and happens for example for S3 object ARNs, IAM Role ARNs,
|
|
234
|
+
* IAM OIDC Provider ARNs, etc. To properly extract the resource name from a
|
|
235
|
+
* Tokenized ARN, you must know the resource type and call
|
|
236
|
+
* `Arn.extractResourceName`.
|
|
237
|
+
*
|
|
238
|
+
* @param arn The ARN string to parse
|
|
239
|
+
* @param sepIfToken The separator used to separate resource from resourceName
|
|
240
|
+
* @param hasName Whether there is a name component in the ARN at all. For
|
|
241
|
+
* example, SNS Topics ARNs have the 'resource' component contain the topic
|
|
242
|
+
* name, and no 'resourceName' component.
|
|
243
|
+
*
|
|
244
|
+
* @returns an ArnComponents object which allows access to the various
|
|
245
|
+
* components of the ARN.
|
|
246
|
+
*
|
|
247
|
+
* @returns an ArnComponents object which allows access to the various
|
|
248
|
+
* components of the ARN.
|
|
249
|
+
*
|
|
250
|
+
* @deprecated use splitArn instead
|
|
251
|
+
*/
|
|
252
|
+
parseArn(arn, sepIfToken = "/", hasName = true) {
|
|
253
|
+
return arn_1.Arn.parse(arn, sepIfToken, hasName);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Splits the provided ARN into its components.
|
|
257
|
+
* Works both if 'arn' is a string like 'arn:aws:s3:::bucket',
|
|
258
|
+
* and a Token representing a dynamic CloudFormation expression
|
|
259
|
+
* (in which case the returned components will also be dynamic CloudFormation expressions,
|
|
260
|
+
* encoded as Tokens).
|
|
261
|
+
*
|
|
262
|
+
* @param arn the ARN to split into its components
|
|
263
|
+
* @param arnFormat the expected format of 'arn' - depends on what format the service 'arn' represents uses
|
|
264
|
+
*/
|
|
265
|
+
splitArn(arn, arnFormat) {
|
|
266
|
+
return arn_1.Arn.split(arn, arnFormat);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Returns iterator for all AZs that are available in the AWS environment
|
|
270
|
+
* (account/region) associated with this stack (default or aliased provider).
|
|
271
|
+
*
|
|
272
|
+
* this will return a cdktf iterator
|
|
273
|
+
*
|
|
274
|
+
* https://developer.hashicorp.com/terraform/cdktf/concepts/iterators#define-iterators
|
|
275
|
+
*
|
|
276
|
+
* To specify a different strategy for selecting availability zones override this method.
|
|
277
|
+
*/
|
|
278
|
+
get availabilityZoneIterator() {
|
|
279
|
+
const azs = this.dataAwsAvailabilityZones;
|
|
280
|
+
return cdktf_1.TerraformIterator.fromDataSources(azs);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Returns a Token as List of AZ names that are available in the stack's
|
|
284
|
+
* AWS environment (account/region).
|
|
285
|
+
*
|
|
286
|
+
* The list is slized by `maxCount` which defaults to 2.
|
|
287
|
+
*
|
|
288
|
+
* Note: Must use `Fn.element` to access the AZ names.
|
|
289
|
+
*
|
|
290
|
+
* @param maxCount the maximum number of AZs to return
|
|
291
|
+
*/
|
|
292
|
+
availabilityZones(maxCount = 2) {
|
|
293
|
+
const azs = this.dataAwsAvailabilityZones;
|
|
294
|
+
return cdktf_1.Token.asList(cdktf_1.Fn.slice(azs.names, 0, maxCount));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.AwsStack = AwsStack;
|
|
298
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
299
|
+
AwsStack[_a] = { fqn: "terraconstructs.aws.AwsStack", version: "0.0.8" };
|
|
300
|
+
function toTerraformIdentifier(identifier) {
|
|
301
|
+
return (0, change_case_1.snakeCase)(identifier).replace(/-/g, "_");
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3cy9hd3Mtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFPNkI7QUFDN0IsaUNBTWU7QUFDZiw2Q0FBd0M7QUFFeEMsK0JBQXNEO0FBRXRELDBGQUFzRjtBQUN0Riw4Q0FBa0U7QUFFbEUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFpRHhFOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFDckMsZ0dBQWdHO0lBRWhHOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQU07UUFDN0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGdHQUFnRztJQUVoRzs7O09BR0c7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQXFCO1FBQ2hELE1BQU0sQ0FBQyxHQUFHLHNCQUFjLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsYUFBYSxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksd0VBQXdFLENBQzdJLENBQUM7SUFDSixDQUFDO0lBcUJELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFuQmxCLHlCQUFvQixHQUErQyxFQUFFLENBQUM7UUFvQjVFLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixX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Q0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQVcsd0JBQXdCO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUMxQyxPQUFPLHlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksaUJBQWlCLENBQUMsV0FBbUIsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDMUMsT0FBTyxhQUFLLENBQUMsTUFBTSxDQUFDLFVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDOztBQWpXSCw0QkEyV0M7OztBQUVELFNBQVMscUJBQXFCLENBQUMsVUFBa0I7SUFDL0MsT0FBTyxJQUFBLHVCQUFTLEVBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzLFxuICBkYXRhQXdzQ2FsbGVySWRlbnRpdHksXG4gIGRhdGFBd3NQYXJ0aXRpb24sXG4gIGRhdGFBd3NSZWdpb24sXG4gIGRhdGFBd3NTZXJ2aWNlUHJpbmNpcGFsLFxuICBwcm92aWRlcixcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybVN0YWNrLFxuICBUZXJyYWZvcm1JdGVyYXRvcixcbiAgVG9rZW4sXG4gIEZuLFxuICBSZXNvdXJjZVRlcnJhZm9ybUl0ZXJhdG9yLFxufSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IHNuYWtlQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFybiwgQXJuQ29tcG9uZW50cywgQXJuRm9ybWF0IH0gZnJvbSBcIi4vYXJuXCI7XG5pbXBvcnQgeyBBd3NQcm92aWRlckNvbmZpZyB9IGZyb20gXCIuL3Byb3ZpZGVyLWNvbmZpZy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFNLSVBfREVQRU5ERU5DWV9QUk9QQUdBVElPTiB9IGZyb20gXCIuLi9wcml2YXRlL3RlcnJhZm9ybS1kZXBlbmRhYmxlcy1hc3BlY3RcIjtcbmltcG9ydCB7IFN0YWNrQmFzZVByb3BzLCBTdGFja0Jhc2UsIElTdGFjayB9IGZyb20gXCIuLi9zdGFjay1iYXNlXCI7XG5cbmNvbnN0IEFXU19TVEFDS19TWU1CT0wgPSBTeW1ib2wuZm9yKFwidGVycmFjb25zdHJ1Y3RzL2xpYi9hd3MuQXdzU3RhY2tcIik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgUHJvdmlkZXIgY29uZmlndXJhdGlvbiAod2l0aG91dCB0aGUgYWxpYXMgZmllbGQpXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlckNvbmZpZzogQXdzUHJvdmlkZXJDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF3c1N0YWNrIGV4dGVuZHMgSVN0YWNrIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgUmVnaW9uIGZvciB0aGUgVGVycmFDb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFXUyBBY2NvdW50IGZvciB0aGUgVGVycmFDb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBV1MgUGFydGl0aW9uIGZvciB0aGUgVGVycmFDb25zdHJ1Y3RcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBQcmluY2lwYWwgSWQgZm9yIGEgc3BlY2lmaWMgc2VydmljZVxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgVGhlIHNlcnZpY2UgbmFtZSB0byBnZXQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIElEIGZvclxuICAgKiBAcGFyYW0gcmVnaW9uIFRoZSByZWdpb24gdG8gZ2V0IHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBJRCBmb3JcbiAgICovXG4gIHNlcnZpY2VQcmluY2lwYWxOYW1lKHNlcnZpY2VOYW1lOiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZyk6IHN0cmluZztcbiAgLy8gLyoqXG4gIC8vICAqIFByb2R1Y2UgdGhlIFRva2VuJ3MgdmFsdWUgYXQgcmVzb2x1dGlvbiB0aW1lXG4gIC8vICAqL1xuICAvLyByZXNvbHZlPFQ+KG9iajogVCk6IFQ7XG59XG5cbmludGVyZmFjZSBBd3NMb29rdXAge1xuICBhd3NQcm92aWRlcjogcHJvdmlkZXIuQXdzUHJvdmlkZXI7XG4gIGRhdGFBd3NSZWdpb24/OiBkYXRhQXdzUmVnaW9uLkRhdGFBd3NSZWdpb247XG4gIGRhdGFBd3NDYWxsZXJJZGVudGl0eT86IGRhdGFBd3NDYWxsZXJJZGVudGl0eS5EYXRhQXdzQ2FsbGVySWRlbnRpdHk7XG4gIGRhdGFBd3NQYXJ0aXRpb24/OiBkYXRhQXdzUGFydGl0aW9uLkRhdGFBd3NQYXJ0aXRpb247XG4gIGRhdGFBd3NBdmFpbGFiaWxpdHlab25lcz86IGRhdGFBd3NBdmFpbGFiaWxpdHlab25lcy5EYXRhQXdzQXZhaWxhYmlsaXR5Wm9uZXM7XG4gIC8vIEFXUyBTZXJ2aWNlIFByaW5jaXBhbHMgYnkgcmVnaW9uIGFuZCBieSBzZXJ2aWNlXG4gIGRhdGFBd3NTZXJ2aWNlUHJpbmNpcGFsczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBSZWNvcmQ8c3RyaW5nLCBkYXRhQXdzU2VydmljZVByaW5jaXBhbC5EYXRhQXdzU2VydmljZVByaW5jaXBhbD5cbiAgPjtcbn1cblxuLyoqXG4gKiBBIFRlcnJhZm9ybSBzdGFjayBjb25zdHJhaW5lZCB0byBhIHNpbmdsZSBBV1MgQWNjb3VudC9SZWdpb24gdG8gc2ltdWxhdGUgQ0ZOIGJlaGF2aW9yLlxuICovXG5leHBvcnQgY2xhc3MgQXdzU3RhY2sgZXh0ZW5kcyBTdGFja0Jhc2UgaW1wbGVtZW50cyBJQXdzU3RhY2sge1xuICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3N0YWNrLnRzI0wyMDRcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIFN0YWNrLlxuICAgKlxuICAgKiBhdHRyaWJ1dGUgZGV0ZWN0aW9uIHNpbmNlIGFzICdpbnN0YW5jZW9mJyBwb3RlbnRpYWxseSBmYWlscyBhY3Jvc3MgTGlicmFyeSByZWxlYXNlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBd3NTdGFjayh4OiBhbnkpOiB4IGlzIEF3c1N0YWNrIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBBV1NfU1RBQ0tfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3N0YWNrLnRzI0wyMTJcblxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIGZpcnN0IHN0YWNrIHNjb3BlIGluIHdoaWNoIGBjb25zdHJ1Y3RgIGlzIGRlZmluZWQuIEZhaWxzIGlmIHRoZXJlIGlzIG5vIHN0YWNrIHVwIHRoZSB0cmVlIG9yIHRoZSBzdGFjayBpcyBub3QgYW4gQXdzU3RhY2suXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mQXdzQ29uc3RydWN0KGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCBzID0gVGVycmFmb3JtU3RhY2sub2YoY29uc3RydWN0KTtcbiAgICBpZiAoQXdzU3RhY2suaXNBd3NTdGFjayhzKSkge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZXNvdXJjZSAnJHtjb25zdHJ1Y3QuY29uc3RydWN0b3I/Lm5hbWV9JyBhdCAnJHtjb25zdHJ1Y3Qubm9kZS5wYXRofScgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIHNjb3BlIG9mIGFuIEF3c1N0YWNrLCBidXQgbm8gQXdzU3RhY2sgZm91bmRgLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cDogQXdzTG9va3VwO1xuICBwcml2YXRlIHJlZ2lvbmFsQXdzUHJvdmlkZXJzOiB7IFtyZWdpb246IHN0cmluZ106IHByb3ZpZGVyLkF3c1Byb3ZpZGVyIH0gPSB7fTtcblxuICAvKipcbiAgICogQ2FjaGUgdGhlc2UgdG9rZW5zIGZvciByZWxpYWJsZSBjb21wYXJpc29ucy5cbiAgICpcbiAgICogRXZlcnkgY2FsbCBmb3IgdGhlIHNhbWUgVG9rZW4gd2lsbCBwcm9kdWNlIGEgbmV3IHVuaXF1ZSBzdHJpbmcsIG5vXG4gICAqIGF0dGVtcHQgaXMgbWFkZSB0byBkZWR1cGxpY2F0ZS4gVG9rZW4gb2JqZWN0cyBzaG91bGQgY2FjaGUgdGhlXG4gICAqIHZhbHVlIHRoZW1zZWx2ZXMsIGlmIHJlcXVpcmVkLlxuICAgKlxuICAgKiBkYXRhU291cmNlLmdldFNUcmluZ2F0dHJpYnV0ZSAtPiBUb2tlbi5hc1N0cmluZyAtPiB0b2tlbk1hcC5yZWdpc3RlclN0cmluZ1xuICAgKiByZWY6XG4gICAqIC0gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuMTAvcGFja2FnZXMvY2RrdGYvbGliL3RlcnJhZm9ybS1kYXRhLXNvdXJjZS50cyNMNjhcbiAgICogLSBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC4xMC9wYWNrYWdlcy9jZGt0Zi9saWIvdG9rZW5zL3ByaXZhdGUvdG9rZW4tbWFwLnRzI0w1MC1MNjZcbiAgICovXG4gIHByaXZhdGUgX2FjY291bnRJZFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3Bhcml0aW9uVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdXJsU3VmZml4VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXdzU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMubG9va3VwID0ge1xuICAgICAgYXdzUHJvdmlkZXI6IG5ldyBwcm92aWRlci5Bd3NQcm92aWRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJkZWZhdWx0QXdzUHJvdmlkZXJcIixcbiAgICAgICAgcHJvcHMucHJvdmlkZXJDb25maWcsXG4gICAgICApLFxuICAgICAgZGF0YUF3c1NlcnZpY2VQcmluY2lwYWxzOiB7fSxcbiAgICB9O1xuICAgIC8vIHRoZXNlIHNob3VsZCBuZXZlciBkZXBlbmQgb24gYW55dGhpbmcgKEhBQ0sgdG8gYXZvaWQgY3ljbGVzKVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBV1NfU1RBQ0tfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm92aWRlcigpOiBwcm92aWRlci5Bd3NQcm92aWRlciB7XG4gICAgcmV0dXJuIHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgUmVnaW9uIG9mIHRoZSBBV1MgU3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVnaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLnJlZ2lvbikge1xuICAgICAgcmV0dXJuIHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLnJlZ2lvbjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmxvb2t1cC5kYXRhQXdzUmVnaW9uKSB7XG4gICAgICBjb25zdCByZWdpb24gPSBuZXcgZGF0YUF3c1JlZ2lvbi5EYXRhQXdzUmVnaW9uKHRoaXMsIFwiUmVnaW9uXCIsIHtcbiAgICAgICAgcHJvdmlkZXI6IHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGVzZSBzaG91bGQgbmV2ZXIgZGVwZW5kIG9uIGFueXRoaW5nIChIQUNLIHRvIGF2b2lkIGN5Y2xlcylcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWdpb24sIFNLSVBfREVQRU5ERU5DWV9QUk9QQUdBVElPTiwge1xuICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sb29rdXAuZGF0YUF3c1JlZ2lvbiA9IHJlZ2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubG9va3VwLmRhdGFBd3NSZWdpb24ubmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRhdGFBd3NDYWxsZXJJZGVudGl0eSgpOiBkYXRhQXdzQ2FsbGVySWRlbnRpdHkuRGF0YUF3c0NhbGxlcklkZW50aXR5IHtcbiAgICBpZiAoIXRoaXMubG9va3VwLmRhdGFBd3NDYWxsZXJJZGVudGl0eSkge1xuICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgZGF0YUF3c0NhbGxlcklkZW50aXR5LkRhdGFBd3NDYWxsZXJJZGVudGl0eShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDYWxsZXJJZGVudGl0eVwiLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZXI6IHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIC8vIHRoZXNlIHNob3VsZCBuZXZlciBkZXBlbmQgb24gYW55dGhpbmcgKEhBQ0sgdG8gYXZvaWQgY3ljbGVzKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGlkZW50aXR5LCBTS0lQX0RFUEVOREVOQ1lfUFJPUEFHQVRJT04sIHtcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubG9va3VwLmRhdGFBd3NDYWxsZXJJZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb29rdXAuZGF0YUF3c0NhbGxlcklkZW50aXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzKCk6IGRhdGFBd3NBdmFpbGFiaWxpdHlab25lcy5EYXRhQXdzQXZhaWxhYmlsaXR5Wm9uZXMge1xuICAgIGlmICghdGhpcy5sb29rdXAuZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzKSB7XG4gICAgICBjb25zdCBhenMgPSBuZXcgZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzLkRhdGFBd3NBdmFpbGFiaWxpdHlab25lcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJBdmFpbGFiaWxpdHlab25lc1wiLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZXI6IHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIC8vIHRoZXNlIHNob3VsZCBuZXZlciBkZXBlbmQgb24gYW55dGhpbmcgKEhBQ0sgdG8gYXZvaWQgY3ljbGVzKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGF6cywgU0tJUF9ERVBFTkRFTkNZX1BST1BBR0FUSU9OLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgICAgdGhpcy5sb29rdXAuZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzID0gYXpzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb29rdXAuZGF0YUF3c0F2YWlsYWJpbGl0eVpvbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGF0YUF3c1BhcnRpdGlvbigpOiBkYXRhQXdzUGFydGl0aW9uLkRhdGFBd3NQYXJ0aXRpb24ge1xuICAgIGlmICghdGhpcy5sb29rdXAuZGF0YUF3c1BhcnRpdGlvbikge1xuICAgICAgY29uc3QgcGFydGl0aW9uID0gbmV3IGRhdGFBd3NQYXJ0aXRpb24uRGF0YUF3c1BhcnRpdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJQYXJ0aXRpdGlvblwiLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZXI6IHRoaXMubG9va3VwLmF3c1Byb3ZpZGVyLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIC8vIHRoZXNlIHNob3VsZCBuZXZlciBkZXBlbmQgb24gYW55dGhpbmcgKEhBQ0sgdG8gYXZvaWQgY3ljbGVzKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBhcnRpdGlvbiwgU0tJUF9ERVBFTkRFTkNZX1BST1BBR0FUSU9OLCB7XG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvb2t1cC5kYXRhQXdzUGFydGl0aW9uID0gcGFydGl0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb29rdXAuZGF0YUF3c1BhcnRpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVnaW9uYWxBd3NQcm92aWRlcihyZWdpb246IHN0cmluZyk6IHByb3ZpZGVyLkF3c1Byb3ZpZGVyIHtcbiAgICBpZiAoIXRoaXMucmVnaW9uYWxBd3NQcm92aWRlcnNbcmVnaW9uXSkge1xuICAgICAgdGhpcy5yZWdpb25hbEF3c1Byb3ZpZGVyc1tyZWdpb25dID0gbmV3IHByb3ZpZGVyLkF3c1Byb3ZpZGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgYXdzXyR7dG9UZXJyYWZvcm1JZGVudGlmaWVyKHJlZ2lvbil9YCxcbiAgICAgICAge1xuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBhbGlhczogdG9UZXJyYWZvcm1JZGVudGlmaWVyKHJlZ2lvbiksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZWdpb25hbEF3c1Byb3ZpZGVyc1tyZWdpb25dO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQWNjb3VudCBvZiB0aGUgQVdTIFN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFjY291bnQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2FjY291bnRJZFRva2VuKSB7XG4gICAgICB0aGlzLl9hY2NvdW50SWRUb2tlbiA9IHRoaXMuZGF0YUF3c0NhbGxlcklkZW50aXR5LmFjY291bnRJZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FjY291bnRJZFRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgUGFydGl0aW9uIG9mIHRoZSBBV1MgU3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgcGFydGl0aW9uKCkge1xuICAgIGlmICghdGhpcy5fcGFyaXRpb25Ub2tlbikge1xuICAgICAgdGhpcy5fcGFyaXRpb25Ub2tlbiA9IHRoaXMuZGF0YUF3c1BhcnRpdGlvbi5wYXJ0aXRpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wYXJpdGlvblRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhc2UgRE5TIGRvbWFpbiBuYW1lIGZvciB0aGUgY3VycmVudCBwYXJ0aXRpb24gKGUuZy4sIGFtYXpvbmF3cy5jb20gaW4gQVdTIENvbW1lcmNpYWwsIGFtYXpvbmF3cy5jb20uY24gaW4gQVdTIENoaW5hKS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdXJsU3VmZml4KCkge1xuICAgIGlmICghdGhpcy5fdXJsU3VmZml4VG9rZW4pIHtcbiAgICAgIHRoaXMuX3VybFN1ZmZpeFRva2VuID0gdGhpcy5kYXRhQXdzUGFydGl0aW9uLmRuc1N1ZmZpeDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3VybFN1ZmZpeFRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2VydmljZSBwcmluY2lwYWwgbmFtZSBiYXNlZCBvbiB0aGUgcmVnaW9uIGl0J3MgdXNlZCBpbi5cbiAgICpcbiAgICogU29tZSBzZXJ2aWNlIHByaW5jaXBhbCBuYW1lcyB1c2VkIHRvIGJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhcnRpdGlvbnMsXG4gICAqIGFuZCBzb21lIHdlcmUgbm90LlxuICAgKlxuICAgKiBUaGVzZSBkYXlzIGFsbCBzZXJ2aWNlIHByaW5jaXBhbCBuYW1lcyBhcmUgc3RhbmRhcmRpemVkLCBhbmQgdGhleSBhcmUgYWxsXG4gICAqIG9mIHRoZSBmb3JtIGA8c2VydmljZW5hbWU+LmFtYXpvbmF3cy5jb21gLlxuICAgKlxuICAgKiBUbyBhdm9pZCBicmVha2luZyBjaGFuZ2VzLCBoYW5kbGluZyBpcyBwcm92aWRlZCBmb3Igc2VydmljZXMgYWRkZWQgd2l0aCB0aGUgZm9ybWF0cyBiZWxvdyxcbiAgICogaG93ZXZlciwgbm8gYWRkaXRpb25hbCBoYW5kbGluZyB3aWxsIGJlIGFkZGVkIGZvciBuZXcgcmVnaW9ucyBvciBwYXJ0aXRpb25zLlxuICAgKiAgIC0gczNcbiAgICogICAtIHMzLmFtYXpvbmF3cy5jb21cbiAgICogICAtIHMzLmFtYXpvbmF3cy5jb20uY25cbiAgICogICAtIHMzLmMycy5pYy5nb3ZcbiAgICogICAtIHMzLnNjMnMuc2dvdi5nb3ZcbiAgICpcbiAgICogQHBhcmFtIHNlcnZpY2UgVGhlIHNlcnZpY2UgbmFtZSB0byBnZXQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIElEIGZvclxuICAgKiBAcGFyYW0gcmVnaW9uIFRoZSByZWdpb24gdG8gZ2V0IHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBJRCBmb3JcbiAgICovXG4gIHB1YmxpYyBzZXJ2aWNlUHJpbmNpcGFsTmFtZShzZXJ2aWNlOiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgREVGQVVMVF9SRUdJT05fS0VZID0gXCJkZWZhdWx0X3JlZ2lvblwiO1xuICAgIGlmICghcmVnaW9uKSB7XG4gICAgICByZWdpb24gPSBERUZBVUxUX1JFR0lPTl9LRVk7XG4gICAgfVxuXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChyZWdpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGRldGVybWluZSB0aGUgc2VydmljZSBwcmluY2lwYWwgSUQgYmVjYXVzZSB0aGUgcmVnaW9uIGlzIGEgdG9rZW4uIFwiICtcbiAgICAgICAgICBcIllvdSBtdXN0IHNwZWNpZnkgdGhlIHJlZ2lvbiBleHBsaWNpdGx5LlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBpZiBmdWxsIHNlcnZpY2UgbmFtZSBpcyBwcm92aWRlZCwgZXh0cmFjdCBqdXN0IHRoZSBzZXJ2aWNlIG5hbWVcbiAgICAvLyBmb3Igc3VwcG9ydGVkIGNhc2VzIChhcyByZXF1aXJlZCBieSBUZXJyYWZvcm0gYXdzX3NlcnZpY2VfcHJpbmNpcGFsIERhdGEgU291cmNlKVxuICAgIGNvbnN0IG1hdGNoID0gc2VydmljZS5tYXRjaChcbiAgICAgIC9eKFteLl0rKSg/Oig/OlxcLmFtYXpvbmF3c1xcLmNvbSg/OlxcLmNuKT8pfCg/OlxcLmMyc1xcLmljXFwuZ292KXwoPzpcXC5zYzJzXFwuc2dvdlxcLmdvdikpPyQvLFxuICAgICk7XG4gICAgY29uc3Qgc2VydmljZU5hbWUgPSBtYXRjaCA/IG1hdGNoWzFdIDogc2VydmljZTtcbiAgICBpZiAoIXRoaXMubG9va3VwLmRhdGFBd3NTZXJ2aWNlUHJpbmNpcGFsc1tyZWdpb25dKSB7XG4gICAgICB0aGlzLmxvb2t1cC5kYXRhQXdzU2VydmljZVByaW5jaXBhbHNbcmVnaW9uXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIXRoaXMubG9va3VwLmRhdGFBd3NTZXJ2aWNlUHJpbmNpcGFsc1tyZWdpb25dW3NlcnZpY2VOYW1lXSkge1xuICAgICAgY29uc3Qgc3ZjcCA9IG5ldyBkYXRhQXdzU2VydmljZVByaW5jaXBhbC5EYXRhQXdzU2VydmljZVByaW5jaXBhbChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGF3c19zdmNwXyR7dG9UZXJyYWZvcm1JZGVudGlmaWVyKHJlZ2lvbil9XyR7c2VydmljZU5hbWV9fWAsXG4gICAgICAgIHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICBwcm92aWRlcjpcbiAgICAgICAgICAgIHJlZ2lvbiA9PT0gREVGQVVMVF9SRUdJT05fS0VZXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogdGhpcy5nZXRSZWdpb25hbEF3c1Byb3ZpZGVyKHJlZ2lvbiksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgLy8gdGhlc2Ugc2hvdWxkIG5ldmVyIGRlcGVuZCBvbiBhbnl0aGluZyAoSEFDSyB0byBhdm9pZCBjeWNsZXMpXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ZjcCwgU0tJUF9ERVBFTkRFTkNZX1BST1BBR0FUSU9OLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgICAgdGhpcy5sb29rdXAuZGF0YUF3c1NlcnZpY2VQcmluY2lwYWxzW3JlZ2lvbl1bc2VydmljZU5hbWVdID0gc3ZjcDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubG9va3VwLmRhdGFBd3NTZXJ2aWNlUHJpbmNpcGFsc1tyZWdpb25dW3NlcnZpY2VOYW1lXS5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gQVJOIGZyb20gY29tcG9uZW50cy5cbiAgICpcbiAgICogSWYgYHBhcnRpdGlvbmAsIGByZWdpb25gIG9yIGBhY2NvdW50YCBhcmUgbm90IHNwZWNpZmllZCwgdGhlIHN0YWNrJ3NcbiAgICogcGFydGl0aW9uLCByZWdpb24gYW5kIGFjY291bnQgd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBJZiBhbnkgY29tcG9uZW50IGlzIHRoZSBlbXB0eSBzdHJpbmcsIGFuIGVtcHR5IHN0cmluZyB3aWxsIGJlIGluc2VydGVkXG4gICAqIGludG8gdGhlIGdlbmVyYXRlZCBBUk4gYXQgdGhlIGxvY2F0aW9uIHRoYXQgY29tcG9uZW50IGNvcnJlc3BvbmRzIHRvLlxuICAgKlxuICAgKiBUaGUgQVJOIHdpbGwgYmUgZm9ybWF0dGVkIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqICAgYXJuOntwYXJ0aXRpb259OntzZXJ2aWNlfTp7cmVnaW9ufTp7YWNjb3VudH06e3Jlc291cmNlfXtzZXB9e3Jlc291cmNlLW5hbWV9XG4gICAqXG4gICAqIFRoZSByZXF1aXJlZCBBUk4gcGllY2VzIHRoYXQgYXJlIG9taXR0ZWQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzdGFjayB0aGF0XG4gICAqIHRoZSAnc2NvcGUnIGlzIGF0dGFjaGVkIHRvLiBJZiBhbGwgQVJOIHBpZWNlcyBhcmUgc3VwcGxpZWQsIHRoZSBzdXBwbGllZCBzY29wZVxuICAgKiBjYW4gYmUgJ3VuZGVmaW5lZCcuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0QXJuKGNvbXBvbmVudHM6IEFybkNvbXBvbmVudHMpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcm4uZm9ybWF0KGNvbXBvbmVudHMsIHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIEFSTiwgcGFyc2VzIGl0IGFuZCByZXR1cm5zIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIElGIFRIRSBBUk4gSVMgQSBDT05DUkVURSBTVFJJTkcuLi5cbiAgICpcbiAgICogLi4uaXQgd2lsbCBiZSBwYXJzZWQgYW5kIHZhbGlkYXRlZC4gVGhlIHNlcGFyYXRvciAoYHNlcGApIHdpbGwgYmUgc2V0IHRvICcvJ1xuICAgKiBpZiB0aGUgNnRoIGNvbXBvbmVudCBpbmNsdWRlcyBhICcvJywgaW4gd2hpY2ggY2FzZSwgYHJlc291cmNlYCB3aWxsIGJlIHNldFxuICAgKiB0byB0aGUgdmFsdWUgYmVmb3JlIHRoZSAnLycgYW5kIGByZXNvdXJjZU5hbWVgIHdpbGwgYmUgdGhlIHJlc3QuIEluIGNhc2VcbiAgICogdGhlcmUgaXMgbm8gJy8nLCBgcmVzb3VyY2VgIHdpbGwgYmUgc2V0IHRvIHRoZSA2dGggY29tcG9uZW50cyBhbmRcbiAgICogYHJlc291cmNlTmFtZWAgd2lsbCBiZSBzZXQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy5cbiAgICpcbiAgICogSUYgVEhFIEFSTiBJUyBBIFRPS0VOLi4uXG4gICAqXG4gICAqIC4uLml0IGNhbm5vdCBiZSB2YWxpZGF0ZWQsIHNpbmNlIHdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCB2YWx1ZSB5ZXQgYXQgdGhlXG4gICAqIHRpbWUgb2YgdGhpcyBmdW5jdGlvbiBjYWxsLiBZb3Ugd2lsbCBoYXZlIHRvIHN1cHBseSBgc2VwSWZUb2tlbmAgYW5kXG4gICAqIHdoZXRoZXIgb3Igbm90IEFSTnMgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCB1c3VhbGx5IGhhdmUgcmVzb3VyY2UgbmFtZXNcbiAgICogaW4gb3JkZXIgdG8gcGFyc2UgaXQgcHJvcGVybHkuIFRoZSByZXN1bHRpbmcgYEFybkNvbXBvbmVudHNgIG9iamVjdCB3aWxsXG4gICAqIGNvbnRhaW4gdG9rZW5zIGZvciB0aGUgc3ViZXhwcmVzc2lvbnMgb2YgdGhlIEFSTiwgbm90IHN0cmluZyBsaXRlcmFscy5cbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgY291bGQgcG9zc2libHkgY29udGFpbiB0aGUgc2VwYXJhdG9yIGNoYXIsIHRoZSBhY3R1YWxcbiAgICogcmVzb3VyY2UgbmFtZSBjYW5ub3QgYmUgcHJvcGVybHkgcGFyc2VkLiBUaGlzIG9ubHkgb2NjdXJzIGlmIHRoZSBzZXBhcmF0b3JcbiAgICogY2hhciBpcyAnLycsIGFuZCBoYXBwZW5zIGZvciBleGFtcGxlIGZvciBTMyBvYmplY3QgQVJOcywgSUFNIFJvbGUgQVJOcyxcbiAgICogSUFNIE9JREMgUHJvdmlkZXIgQVJOcywgZXRjLiBUbyBwcm9wZXJseSBleHRyYWN0IHRoZSByZXNvdXJjZSBuYW1lIGZyb20gYVxuICAgKiBUb2tlbml6ZWQgQVJOLCB5b3UgbXVzdCBrbm93IHRoZSByZXNvdXJjZSB0eXBlIGFuZCBjYWxsXG4gICAqIGBBcm4uZXh0cmFjdFJlc291cmNlTmFtZWAuXG4gICAqXG4gICAqIEBwYXJhbSBhcm4gVGhlIEFSTiBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHNlcElmVG9rZW4gVGhlIHNlcGFyYXRvciB1c2VkIHRvIHNlcGFyYXRlIHJlc291cmNlIGZyb20gcmVzb3VyY2VOYW1lXG4gICAqIEBwYXJhbSBoYXNOYW1lIFdoZXRoZXIgdGhlcmUgaXMgYSBuYW1lIGNvbXBvbmVudCBpbiB0aGUgQVJOIGF0IGFsbC4gRm9yXG4gICAqIGV4YW1wbGUsIFNOUyBUb3BpY3MgQVJOcyBoYXZlIHRoZSAncmVzb3VyY2UnIGNvbXBvbmVudCBjb250YWluIHRoZSB0b3BpY1xuICAgKiBuYW1lLCBhbmQgbm8gJ3Jlc291cmNlTmFtZScgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBhbiBBcm5Db21wb25lbnRzIG9iamVjdCB3aGljaCBhbGxvd3MgYWNjZXNzIHRvIHRoZSB2YXJpb3VzXG4gICAqIGNvbXBvbmVudHMgb2YgdGhlIEFSTi5cbiAgICpcbiAgICogQHJldHVybnMgYW4gQXJuQ29tcG9uZW50cyBvYmplY3Qgd2hpY2ggYWxsb3dzIGFjY2VzcyB0byB0aGUgdmFyaW91c1xuICAgKiAgICAgIGNvbXBvbmVudHMgb2YgdGhlIEFSTi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHNwbGl0QXJuIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBwYXJzZUFybihcbiAgICBhcm46IHN0cmluZyxcbiAgICBzZXBJZlRva2VuOiBzdHJpbmcgPSBcIi9cIixcbiAgICBoYXNOYW1lOiBib29sZWFuID0gdHJ1ZSxcbiAgKTogQXJuQ29tcG9uZW50cyB7XG4gICAgcmV0dXJuIEFybi5wYXJzZShhcm4sIHNlcElmVG9rZW4sIGhhc05hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyB0aGUgcHJvdmlkZWQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG4gICAqIFdvcmtzIGJvdGggaWYgJ2FybicgaXMgYSBzdHJpbmcgbGlrZSAnYXJuOmF3czpzMzo6OmJ1Y2tldCcsXG4gICAqIGFuZCBhIFRva2VuIHJlcHJlc2VudGluZyBhIGR5bmFtaWMgQ2xvdWRGb3JtYXRpb24gZXhwcmVzc2lvblxuICAgKiAoaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuZWQgY29tcG9uZW50cyB3aWxsIGFsc28gYmUgZHluYW1pYyBDbG91ZEZvcm1hdGlvbiBleHByZXNzaW9ucyxcbiAgICogZW5jb2RlZCBhcyBUb2tlbnMpLlxuICAgKlxuICAgKiBAcGFyYW0gYXJuIHRoZSBBUk4gdG8gc3BsaXQgaW50byBpdHMgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gYXJuRm9ybWF0IHRoZSBleHBlY3RlZCBmb3JtYXQgb2YgJ2FybicgLSBkZXBlbmRzIG9uIHdoYXQgZm9ybWF0IHRoZSBzZXJ2aWNlICdhcm4nIHJlcHJlc2VudHMgdXNlc1xuICAgKi9cbiAgcHVibGljIHNwbGl0QXJuKGFybjogc3RyaW5nLCBhcm5Gb3JtYXQ6IEFybkZvcm1hdCk6IEFybkNvbXBvbmVudHMge1xuICAgIHJldHVybiBBcm4uc3BsaXQoYXJuLCBhcm5Gb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgaXRlcmF0b3IgZm9yIGFsbCBBWnMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBBV1MgZW52aXJvbm1lbnRcbiAgICogKGFjY291bnQvcmVnaW9uKSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdGFjayAoZGVmYXVsdCBvciBhbGlhc2VkIHByb3ZpZGVyKS5cbiAgICpcbiAgICogdGhpcyB3aWxsIHJldHVybiBhIGNka3RmIGl0ZXJhdG9yXG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2Nka3RmL2NvbmNlcHRzL2l0ZXJhdG9ycyNkZWZpbmUtaXRlcmF0b3JzXG4gICAqXG4gICAqIFRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgc3RyYXRlZ3kgZm9yIHNlbGVjdGluZyBhdmFpbGFiaWxpdHkgem9uZXMgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF2YWlsYWJpbGl0eVpvbmVJdGVyYXRvcigpOiBSZXNvdXJjZVRlcnJhZm9ybUl0ZXJhdG9yIHtcbiAgICBjb25zdCBhenMgPSB0aGlzLmRhdGFBd3NBdmFpbGFiaWxpdHlab25lcztcbiAgICByZXR1cm4gVGVycmFmb3JtSXRlcmF0b3IuZnJvbURhdGFTb3VyY2VzKGF6cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFRva2VuIGFzIExpc3Qgb2YgQVogbmFtZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSBzdGFjaydzXG4gICAqIEFXUyBlbnZpcm9ubWVudCAoYWNjb3VudC9yZWdpb24pLlxuICAgKlxuICAgKiBUaGUgbGlzdCBpcyBzbGl6ZWQgYnkgYG1heENvdW50YCB3aGljaCBkZWZhdWx0cyB0byAyLlxuICAgKlxuICAgKiBOb3RlOiBNdXN0IHVzZSBgRm4uZWxlbWVudGAgdG8gYWNjZXNzIHRoZSBBWiBuYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIG1heENvdW50IHRoZSBtYXhpbXVtIG51bWJlciBvZiBBWnMgdG8gcmV0dXJuXG4gICAqL1xuICBwdWJsaWMgYXZhaWxhYmlsaXR5Wm9uZXMobWF4Q291bnQ6IG51bWJlciA9IDIpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYXpzID0gdGhpcy5kYXRhQXdzQXZhaWxhYmlsaXR5Wm9uZXM7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdChGbi5zbGljZShhenMubmFtZXMsIDAsIG1heENvdW50KSk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogUmVzb2x2ZSBhIHRva2VuaXplZCB2YWx1ZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBzdGFjay5cbiAgLy8gICovXG4gIC8vIHB1YmxpYyByZXNvbHZlPFQ+KG9iajogVCk6IFQge1xuICAvLyAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuNy9wYWNrYWdlcy9jZGt0Zi9saWIvdGVycmFmb3JtLXN0YWNrLnRzI0wxNTFcbiAgLy8gICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3N0YWNrLnRzI0w1NzJcbiAgLy8gICByZXR1cm4gcmVzb2x2ZSh0aGlzLCBvYmopO1xuICAvLyB9XG59XG5cbmZ1bmN0aW9uIHRvVGVycmFmb3JtSWRlbnRpZmllcihpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHNuYWtlQ2FzZShpZGVudGlmaWVyKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { IAlarmAction, AlarmActionConfig } from "../alarm-action";
|
|
3
|
+
import { IAlarm } from "../alarm-base";
|
|
4
|
+
/**
|
|
5
|
+
* Types of EC2 actions available
|
|
6
|
+
*/
|
|
7
|
+
export declare enum Ec2InstanceAction {
|
|
8
|
+
/**
|
|
9
|
+
* Stop the instance
|
|
10
|
+
*/
|
|
11
|
+
STOP = "stop",
|
|
12
|
+
/**
|
|
13
|
+
* Terminatethe instance
|
|
14
|
+
*/
|
|
15
|
+
TERMINATE = "terminate",
|
|
16
|
+
/**
|
|
17
|
+
* Recover the instance
|
|
18
|
+
*/
|
|
19
|
+
RECOVER = "recover",
|
|
20
|
+
/**
|
|
21
|
+
* Reboot the instance
|
|
22
|
+
*/
|
|
23
|
+
REBOOT = "reboot"
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Use an EC2 action as an Alarm action
|
|
27
|
+
*/
|
|
28
|
+
export declare class Ec2Action implements IAlarmAction {
|
|
29
|
+
private ec2Action;
|
|
30
|
+
constructor(instanceAction: Ec2InstanceAction);
|
|
31
|
+
/**
|
|
32
|
+
* Returns an alarm action configuration to use an EC2 action as an alarm action
|
|
33
|
+
*/
|
|
34
|
+
bind(_scope: Construct, _alarm: IAlarm): AlarmActionConfig;
|
|
35
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Ec2Action = exports.Ec2InstanceAction = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_stack_1 = require("../../aws-stack");
|
|
7
|
+
/**
|
|
8
|
+
* Types of EC2 actions available
|
|
9
|
+
*/
|
|
10
|
+
var Ec2InstanceAction;
|
|
11
|
+
(function (Ec2InstanceAction) {
|
|
12
|
+
/**
|
|
13
|
+
* Stop the instance
|
|
14
|
+
*/
|
|
15
|
+
Ec2InstanceAction["STOP"] = "stop";
|
|
16
|
+
/**
|
|
17
|
+
* Terminatethe instance
|
|
18
|
+
*/
|
|
19
|
+
Ec2InstanceAction["TERMINATE"] = "terminate";
|
|
20
|
+
/**
|
|
21
|
+
* Recover the instance
|
|
22
|
+
*/
|
|
23
|
+
Ec2InstanceAction["RECOVER"] = "recover";
|
|
24
|
+
/**
|
|
25
|
+
* Reboot the instance
|
|
26
|
+
*/
|
|
27
|
+
Ec2InstanceAction["REBOOT"] = "reboot";
|
|
28
|
+
})(Ec2InstanceAction || (exports.Ec2InstanceAction = Ec2InstanceAction = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Use an EC2 action as an Alarm action
|
|
31
|
+
*/
|
|
32
|
+
class Ec2Action {
|
|
33
|
+
constructor(instanceAction) {
|
|
34
|
+
this.ec2Action = instanceAction;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns an alarm action configuration to use an EC2 action as an alarm action
|
|
38
|
+
*/
|
|
39
|
+
bind(_scope, _alarm) {
|
|
40
|
+
return {
|
|
41
|
+
alarmActionArn: `arn:${aws_stack_1.AwsStack.ofAwsConstruct(_scope).partition}:automate:${aws_stack_1.AwsStack.ofAwsConstruct(_scope).region}:ec2:${this.ec2Action}`,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.Ec2Action = Ec2Action;
|
|
46
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
47
|
+
Ec2Action[_a] = { fqn: "terraconstructs.aws.cloudwatch.actions.Ec2Action", version: "0.0.8" };
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jbG91ZHdhdGNoL2FjdGlvbnMvZWMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsK0NBQTJDO0FBSTNDOztHQUVHO0FBQ0gsSUFBWSxpQkFpQlg7QUFqQkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxrQ0FBYSxDQUFBO0lBQ2I7O09BRUc7SUFDSCw0Q0FBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsc0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWpCVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQWlCNUI7QUFFRDs7R0FFRztBQUNILE1BQWEsU0FBUztJQUdwQixZQUFZLGNBQWlDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksQ0FBQyxNQUFpQixFQUFFLE1BQWM7UUFDcEMsT0FBTztZQUNMLGNBQWMsRUFBRSxPQUFPLG9CQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsYUFBYSxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtTQUM1SSxDQUFDO0lBQ0osQ0FBQzs7QUFkSCw4QkFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IElBbGFybUFjdGlvbiwgQWxhcm1BY3Rpb25Db25maWcgfSBmcm9tIFwiLi4vYWxhcm0tYWN0aW9uXCI7XG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tIFwiLi4vYWxhcm0tYmFzZVwiO1xuXG4vKipcbiAqIFR5cGVzIG9mIEVDMiBhY3Rpb25zIGF2YWlsYWJsZVxuICovXG5leHBvcnQgZW51bSBFYzJJbnN0YW5jZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBTdG9wIHRoZSBpbnN0YW5jZVxuICAgKi9cbiAgU1RPUCA9IFwic3RvcFwiLFxuICAvKipcbiAgICogVGVybWluYXRldGhlIGluc3RhbmNlXG4gICAqL1xuICBURVJNSU5BVEUgPSBcInRlcm1pbmF0ZVwiLFxuICAvKipcbiAgICogUmVjb3ZlciB0aGUgaW5zdGFuY2VcbiAgICovXG4gIFJFQ09WRVIgPSBcInJlY292ZXJcIixcbiAgLyoqXG4gICAqIFJlYm9vdCB0aGUgaW5zdGFuY2VcbiAgICovXG4gIFJFQk9PVCA9IFwicmVib290XCIsXG59XG5cbi8qKlxuICogVXNlIGFuIEVDMiBhY3Rpb24gYXMgYW4gQWxhcm0gYWN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBFYzJBY3Rpb24gaW1wbGVtZW50cyBJQWxhcm1BY3Rpb24ge1xuICBwcml2YXRlIGVjMkFjdGlvbjogRWMySW5zdGFuY2VBY3Rpb247XG5cbiAgY29uc3RydWN0b3IoaW5zdGFuY2VBY3Rpb246IEVjMkluc3RhbmNlQWN0aW9uKSB7XG4gICAgdGhpcy5lYzJBY3Rpb24gPSBpbnN0YW5jZUFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFsYXJtIGFjdGlvbiBjb25maWd1cmF0aW9uIHRvIHVzZSBhbiBFQzIgYWN0aW9uIGFzIGFuIGFsYXJtIGFjdGlvblxuICAgKi9cbiAgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgX2FsYXJtOiBJQWxhcm0pOiBBbGFybUFjdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFsYXJtQWN0aW9uQXJuOiBgYXJuOiR7QXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoX3Njb3BlKS5wYXJ0aXRpb259OmF1dG9tYXRlOiR7QXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoX3Njb3BlKS5yZWdpb259OmVjMjoke3RoaXMuZWMyQWN0aW9ufWAsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/aws-cloudwatch-actions/lib/index.ts
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
// export * from './appscaling';
|
|
19
|
+
// export * from './autoscaling';
|
|
20
|
+
// export * from './sns';
|
|
21
|
+
__exportStar(require("./ec2"), exports);
|
|
22
|
+
// export * from './ssm';
|
|
23
|
+
__exportStar(require("./lambda"), exports);
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2Nsb3Vkd2F0Y2gvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsd0dBQXdHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXhHLGdDQUFnQztBQUNoQyxpQ0FBaUM7QUFDakMseUJBQXlCO0FBQ3pCLHdDQUFzQjtBQUN0Qix5QkFBeUI7QUFDekIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTcwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9ucy9saWIvaW5kZXgudHNcblxuLy8gZXhwb3J0ICogZnJvbSAnLi9hcHBzY2FsaW5nJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vYXV0b3NjYWxpbmcnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9zbnMnO1xuZXhwb3J0ICogZnJvbSBcIi4vZWMyXCI7XG4vLyBleHBvcnQgKiBmcm9tICcuL3NzbSc7XG5leHBvcnQgKiBmcm9tIFwiLi9sYW1iZGFcIjtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as cloudwatch from "..";
|
|
3
|
+
import * as lambda from "../../compute";
|
|
4
|
+
/**
|
|
5
|
+
* Use a Lambda action as an Alarm action
|
|
6
|
+
*/
|
|
7
|
+
export declare class LambdaAction implements cloudwatch.IAlarmAction {
|
|
8
|
+
private lambdaFunction;
|
|
9
|
+
constructor(lambdaFunction: lambda.IAlias | lambda.IFunction);
|
|
10
|
+
/**
|
|
11
|
+
* Returns an alarm action configuration to use a Lambda action as an alarm action.
|
|
12
|
+
*
|
|
13
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html
|
|
14
|
+
*/
|
|
15
|
+
bind(scope: Construct, alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig;
|
|
16
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.LambdaAction = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_stack_1 = require("../../aws-stack");
|
|
7
|
+
const iam = require("../../iam");
|
|
8
|
+
/**
|
|
9
|
+
* Use a Lambda action as an Alarm action
|
|
10
|
+
*/
|
|
11
|
+
class LambdaAction {
|
|
12
|
+
constructor(lambdaFunction) {
|
|
13
|
+
this.lambdaFunction = lambdaFunction;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns an alarm action configuration to use a Lambda action as an alarm action.
|
|
17
|
+
*
|
|
18
|
+
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html
|
|
19
|
+
*/
|
|
20
|
+
bind(scope, alarm) {
|
|
21
|
+
// https://github.com/aws/aws-cdk/pull/28712
|
|
22
|
+
// const idPrefix = FeatureFlags.of(scope).isEnabled(
|
|
23
|
+
// LAMBDA_PERMISSION_LOGICAL_ID_FOR_LAMBDA_ACTION,
|
|
24
|
+
// )
|
|
25
|
+
// ? alarm.node.id
|
|
26
|
+
// : "";
|
|
27
|
+
const permissionId = `${alarm.node.id}AlarmPermission`;
|
|
28
|
+
const permissionNode = this.lambdaFunction.permissionsNode.tryFindChild(permissionId);
|
|
29
|
+
// If the Lambda permission has already been added to this function
|
|
30
|
+
// we skip adding it to avoid an exception being thrown
|
|
31
|
+
// see https://github.com/aws/aws-cdk/issues/29514
|
|
32
|
+
if (permissionNode?.sourceArnInput !== alarm.alarmArn) {
|
|
33
|
+
this.lambdaFunction.addPermission(permissionId, {
|
|
34
|
+
sourceAccount: aws_stack_1.AwsStack.ofAwsConstruct(scope).account,
|
|
35
|
+
action: "lambda:InvokeFunction",
|
|
36
|
+
sourceArn: alarm.alarmArn,
|
|
37
|
+
principal: new iam.ServicePrincipal("lambda.alarms.cloudwatch.amazonaws.com"),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
alarmActionArn: this.lambdaFunction.functionArn,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.LambdaAction = LambdaAction;
|
|
46
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
47
|
+
LambdaAction[_a] = { fqn: "terraconstructs.aws.cloudwatch.actions.LambdaAction", version: "0.0.8" };
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jbG91ZHdhdGNoL2FjdGlvbnMvbGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0EsK0NBQTJDO0FBRTNDLGlDQUFpQztBQUVqQzs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUd2QixZQUFZLGNBQWdEO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUNGLEtBQWdCLEVBQ2hCLEtBQXdCO1FBRXhCLDRDQUE0QztRQUM1QyxxREFBcUQ7UUFDckQsb0RBQW9EO1FBQ3BELElBQUk7UUFDSixvQkFBb0I7UUFDcEIsVUFBVTtRQUNWLE1BQU0sWUFBWSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixDQUFDO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FDckUsWUFBWSxDQUNvQyxDQUFDO1FBRW5ELG1FQUFtRTtRQUNuRSx1REFBdUQ7UUFDdkQsa0RBQWtEO1FBQ2xELElBQUksY0FBYyxFQUFFLGNBQWMsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFO2dCQUM5QyxhQUFhLEVBQUUsb0JBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTztnQkFDckQsTUFBTSxFQUFFLHVCQUF1QjtnQkFDL0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQ2pDLHdDQUF3QyxDQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztTQUNoRCxDQUFDO0lBQ0osQ0FBQzs7QUE1Q0gsb0NBNkNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvYTEyODg3YjU5M2VmNjc5NmY2M2JmNzU0YTNkMzgxNjc2ZDJlNTE1NS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zL2xpYi9sYW1iZGEudHNcblxuaW1wb3J0IHsgbGFtYmRhUGVybWlzc2lvbiB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IEF3c1N0YWNrIH0gZnJvbSBcIi4uLy4uL2F3cy1zdGFja1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuLi8uLi9jb21wdXRlXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uLy4uL2lhbVwiO1xuXG4vKipcbiAqIFVzZSBhIExhbWJkYSBhY3Rpb24gYXMgYW4gQWxhcm0gYWN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFBY3Rpb24gaW1wbGVtZW50cyBjbG91ZHdhdGNoLklBbGFybUFjdGlvbiB7XG4gIC8vIGxhbWJkYS5JVmVyc2lvblxuICBwcml2YXRlIGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuSUFsaWFzIHwgbGFtYmRhLklGdW5jdGlvbjtcbiAgY29uc3RydWN0b3IobGFtYmRhRnVuY3Rpb246IGxhbWJkYS5JQWxpYXMgfCBsYW1iZGEuSUZ1bmN0aW9uKSB7XG4gICAgdGhpcy5sYW1iZGFGdW5jdGlvbiA9IGxhbWJkYUZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYWxhcm0gYWN0aW9uIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGEgTGFtYmRhIGFjdGlvbiBhcyBhbiBhbGFybSBhY3Rpb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0TWV0cmljQWxhcm0uaHRtbFxuICAgKi9cbiAgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGFsYXJtOiBjbG91ZHdhdGNoLklBbGFybSxcbiAgKTogY2xvdWR3YXRjaC5BbGFybUFjdGlvbkNvbmZpZyB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvMjg3MTJcbiAgICAvLyBjb25zdCBpZFByZWZpeCA9IEZlYXR1cmVGbGFncy5vZihzY29wZSkuaXNFbmFibGVkKFxuICAgIC8vICAgTEFNQkRBX1BFUk1JU1NJT05fTE9HSUNBTF9JRF9GT1JfTEFNQkRBX0FDVElPTixcbiAgICAvLyApXG4gICAgLy8gICA/IGFsYXJtLm5vZGUuaWRcbiAgICAvLyAgIDogXCJcIjtcbiAgICBjb25zdCBwZXJtaXNzaW9uSWQgPSBgJHthbGFybS5ub2RlLmlkfUFsYXJtUGVybWlzc2lvbmA7XG4gICAgY29uc3QgcGVybWlzc2lvbk5vZGUgPSB0aGlzLmxhbWJkYUZ1bmN0aW9uLnBlcm1pc3Npb25zTm9kZS50cnlGaW5kQ2hpbGQoXG4gICAgICBwZXJtaXNzaW9uSWQsXG4gICAgKSBhcyBsYW1iZGFQZXJtaXNzaW9uLkxhbWJkYVBlcm1pc3Npb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBJZiB0aGUgTGFtYmRhIHBlcm1pc3Npb24gaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGlzIGZ1bmN0aW9uXG4gICAgLy8gd2Ugc2tpcCBhZGRpbmcgaXQgdG8gYXZvaWQgYW4gZXhjZXB0aW9uIGJlaW5nIHRocm93blxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzI5NTE0XG4gICAgaWYgKHBlcm1pc3Npb25Ob2RlPy5zb3VyY2VBcm5JbnB1dCAhPT0gYWxhcm0uYWxhcm1Bcm4pIHtcbiAgICAgIHRoaXMubGFtYmRhRnVuY3Rpb24uYWRkUGVybWlzc2lvbihwZXJtaXNzaW9uSWQsIHtcbiAgICAgICAgc291cmNlQWNjb3VudDogQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLmFjY291bnQsXG4gICAgICAgIGFjdGlvbjogXCJsYW1iZGE6SW52b2tlRnVuY3Rpb25cIixcbiAgICAgICAgc291cmNlQXJuOiBhbGFybS5hbGFybUFybixcbiAgICAgICAgcHJpbmNpcGFsOiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgICAgXCJsYW1iZGEuYWxhcm1zLmNsb3Vkd2F0Y2guYW1hem9uYXdzLmNvbVwiLFxuICAgICAgICApLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsYXJtQWN0aW9uQXJuOiB0aGlzLmxhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { IAlarm } from "./alarm-base";
|
|
3
|
+
/**
|
|
4
|
+
* Interface for objects that can be the targets of CloudWatch alarm actions
|
|
5
|
+
*/
|
|
6
|
+
export interface IAlarmAction {
|
|
7
|
+
/**
|
|
8
|
+
* Return the properties required to send alarm actions to this CloudWatch alarm.
|
|
9
|
+
*
|
|
10
|
+
* @param scope root Construct that allows creating new Constructs
|
|
11
|
+
* @param alarm CloudWatch alarm that the action will target
|
|
12
|
+
*/
|
|
13
|
+
bind(scope: Construct, alarm: IAlarm): AlarmActionConfig;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Properties for an alarm action
|
|
17
|
+
*/
|
|
18
|
+
export interface AlarmActionConfig {
|
|
19
|
+
/**
|
|
20
|
+
* Return the ARN that should be used for a CloudWatch Alarm action
|
|
21
|
+
*/
|
|
22
|
+
readonly alarmActionArn: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/aws-cloudwatch/lib/alarm-action.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jbG91ZHdhdGNoL2FsYXJtLWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUdBQXVHIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTcwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gvbGliL2FsYXJtLWFjdGlvbi50c1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSBcIi4vYWxhcm0tYmFzZVwiO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSB0aGUgdGFyZ2V0cyBvZiBDbG91ZFdhdGNoIGFsYXJtIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWxhcm1BY3Rpb24ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIHNlbmQgYWxhcm0gYWN0aW9ucyB0byB0aGlzIENsb3VkV2F0Y2ggYWxhcm0uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSByb290IENvbnN0cnVjdCB0aGF0IGFsbG93cyBjcmVhdGluZyBuZXcgQ29uc3RydWN0c1xuICAgKiBAcGFyYW0gYWxhcm0gQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHRoZSBhY3Rpb24gd2lsbCB0YXJnZXRcbiAgICovXG4gIGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgYWxhcm06IElBbGFybSk6IEFsYXJtQWN0aW9uQ29uZmlnO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIGFsYXJtIGFjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtQWN0aW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgQVJOIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIGEgQ2xvdWRXYXRjaCBBbGFybSBhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtQWN0aW9uQXJuOiBzdHJpbmc7XG59XG4iXX0=
|