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,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./grant"), exports);
|
|
18
|
+
__exportStar(require("./identity-base"), exports);
|
|
19
|
+
__exportStar(require("./managed-policy"), exports);
|
|
20
|
+
__exportStar(require("./oidc-provider"), exports);
|
|
21
|
+
__exportStar(require("./policy-document-config.generated"), exports);
|
|
22
|
+
__exportStar(require("./policy-document"), exports);
|
|
23
|
+
__exportStar(require("./policy-statement-props.generated"), exports);
|
|
24
|
+
__exportStar(require("./policy-statement"), exports);
|
|
25
|
+
__exportStar(require("./policy"), exports);
|
|
26
|
+
__exportStar(require("./principals"), exports);
|
|
27
|
+
__exportStar(require("./role"), exports);
|
|
28
|
+
__exportStar(require("./saml-provider"), exports);
|
|
29
|
+
__exportStar(require("./unknown-principal"), exports);
|
|
30
|
+
__exportStar(require("./utils"), exports);
|
|
31
|
+
// auto generated by struct-builder
|
|
32
|
+
__exportStar(require("./policy-statement-props.generated"), exports);
|
|
33
|
+
__exportStar(require("./policy-document-config.generated"), exports);
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsa0RBQWdDO0FBQ2hDLHFFQUFtRDtBQUNuRCxvREFBa0M7QUFDbEMscUVBQW1EO0FBQ25ELHFEQUFtQztBQUNuQywyQ0FBeUI7QUFDekIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QixrREFBZ0M7QUFDaEMsc0RBQW9DO0FBQ3BDLDBDQUF3QjtBQUV4QixtQ0FBbUM7QUFDbkMscUVBQW1EO0FBQ25ELHFFQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dyYW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eS1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkLXBvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2lkYy1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudC1wcm9wcy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1zdGF0ZW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJpbmNpcGFsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2FtbC1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5rbm93bi1wcmluY2lwYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vIGF1dG8gZ2VuZXJhdGVkIGJ5IHN0cnVjdC1idWlsZGVyXG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50LXByb3BzLmdlbmVyYXRlZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbiJdfQ==
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { iamPolicy, dataAwsIamPolicy } from "@cdktf/provider-aws";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { PolicyDocument } from "./policy-document";
|
|
4
|
+
import { PolicyStatement } from "./policy-statement";
|
|
5
|
+
import { IGrantable, IPrincipal } from "./principals";
|
|
6
|
+
import { IRole } from "./role";
|
|
7
|
+
import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
|
|
8
|
+
/**
|
|
9
|
+
* Outputs which may be registered for output via the Grid.
|
|
10
|
+
*/
|
|
11
|
+
export interface ManagedPolicyOutputs {
|
|
12
|
+
readonly arn: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A managed policy
|
|
16
|
+
*/
|
|
17
|
+
export interface IManagedPolicy extends IAwsConstruct {
|
|
18
|
+
/**
|
|
19
|
+
* Strongly typed managed policy outputs
|
|
20
|
+
*
|
|
21
|
+
* @attribute
|
|
22
|
+
*/
|
|
23
|
+
readonly managedPolicyOutputs: ManagedPolicyOutputs;
|
|
24
|
+
/**
|
|
25
|
+
* The ARN of the managed policy
|
|
26
|
+
* @attribute
|
|
27
|
+
*/
|
|
28
|
+
readonly managedPolicyArn: string;
|
|
29
|
+
/**
|
|
30
|
+
* Attaches this policy to a role.
|
|
31
|
+
*
|
|
32
|
+
* NOTE: Using this method will conflict with a role that has
|
|
33
|
+
* exclusive management of the role's policy attachments.
|
|
34
|
+
*
|
|
35
|
+
* If you attempt to manage a role's policies by multiple means,
|
|
36
|
+
* you will get resource cycling and/or errors.
|
|
37
|
+
*/
|
|
38
|
+
attachToRole(role: IRole): void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Properties for defining an IAM managed policy
|
|
42
|
+
*/
|
|
43
|
+
export interface ManagedPolicyProps extends AwsConstructProps {
|
|
44
|
+
/**
|
|
45
|
+
* The name of the managed policy. If you specify multiple policies for an entity,
|
|
46
|
+
* specify unique names. For example, if you specify a list of policies for
|
|
47
|
+
* an IAM role, each policy must have a unique name.
|
|
48
|
+
*
|
|
49
|
+
* Forces new resource
|
|
50
|
+
*
|
|
51
|
+
* @default - If omitted, Refer to `managedPolicyNamePrefix`.
|
|
52
|
+
*/
|
|
53
|
+
readonly managedPolicyName?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a unique name beginning with the specified prefix.
|
|
56
|
+
* Conflicts with `managedPolicyName`.
|
|
57
|
+
*
|
|
58
|
+
* The name of the managed policy. If you specify multiple policies for an entity,
|
|
59
|
+
* specify unique names. For example, if you specify a list of policies for
|
|
60
|
+
* an IAM role, each policy must have a unique name.
|
|
61
|
+
*
|
|
62
|
+
* Forces new resource
|
|
63
|
+
*
|
|
64
|
+
* @default - If omitted, ET will assign a random, unique name prefixed by GridUUID.
|
|
65
|
+
*/
|
|
66
|
+
readonly managedPolicyNamePrefix?: string;
|
|
67
|
+
/**
|
|
68
|
+
* A description of the managed policy. Typically used to store information about the
|
|
69
|
+
* permissions defined in the policy. For example, "Grants access to production DynamoDB tables."
|
|
70
|
+
* The policy description is immutable. After a value is assigned, it cannot be changed.
|
|
71
|
+
*
|
|
72
|
+
* Forces new resource
|
|
73
|
+
*
|
|
74
|
+
* @default - Terraform will generate a description
|
|
75
|
+
*/
|
|
76
|
+
readonly description?: string;
|
|
77
|
+
/**
|
|
78
|
+
* The path for the policy. This parameter allows (through its regex pattern) a string of characters
|
|
79
|
+
* consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes.
|
|
80
|
+
* In addition, it can contain any ASCII character from the ! (\u0021) through the DEL character (\u007F),
|
|
81
|
+
* including most punctuation characters, digits, and upper and lowercased letters.
|
|
82
|
+
*
|
|
83
|
+
* For more information about paths, see IAM Identifiers in the IAM User Guide.
|
|
84
|
+
*
|
|
85
|
+
* @default - "/"
|
|
86
|
+
*/
|
|
87
|
+
readonly path?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Roles to attach this policy to.
|
|
90
|
+
* You can also use `attachToRole(role)` to attach this policy to a role.
|
|
91
|
+
*
|
|
92
|
+
* @default - No roles.
|
|
93
|
+
*/
|
|
94
|
+
readonly roles?: IRole[];
|
|
95
|
+
/**
|
|
96
|
+
* Initial set of permissions to add to this policy document.
|
|
97
|
+
* You can also use `addPermission(statement)` to add permissions later.
|
|
98
|
+
*
|
|
99
|
+
* @default - No statements.
|
|
100
|
+
*/
|
|
101
|
+
readonly statements?: PolicyStatement[];
|
|
102
|
+
/**
|
|
103
|
+
* Initial PolicyDocument to use for this ManagedPolicy. If omited, any
|
|
104
|
+
* `PolicyStatement` provided in the `statements` property will be applied
|
|
105
|
+
* against the empty default `PolicyDocument`.
|
|
106
|
+
*
|
|
107
|
+
* @default - An empty policy.
|
|
108
|
+
*/
|
|
109
|
+
readonly document?: PolicyDocument;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Attributes to reference ManagedPolicy for plan time failures and strict external dependencies.
|
|
113
|
+
*/
|
|
114
|
+
export interface ManagedPolicyAttributes extends dataAwsIamPolicy.DataAwsIamPolicyConfig {
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Managed policy base
|
|
118
|
+
*/
|
|
119
|
+
declare abstract class ManagedPolicyBase extends AwsConstructBase implements IManagedPolicy {
|
|
120
|
+
/**
|
|
121
|
+
* Returns the ARN of this managed policy.
|
|
122
|
+
*
|
|
123
|
+
* @attribute
|
|
124
|
+
*/
|
|
125
|
+
abstract get managedPolicyArn(): string;
|
|
126
|
+
get managedPolicyOutputs(): ManagedPolicyOutputs;
|
|
127
|
+
get outputs(): Record<string, any>;
|
|
128
|
+
private readonly roles;
|
|
129
|
+
constructor(scope: Construct, id: string, props?: ManagedPolicyProps);
|
|
130
|
+
attachToRole(role: IRole): void;
|
|
131
|
+
/**
|
|
132
|
+
* Adds resource to the terraform JSON output.
|
|
133
|
+
*
|
|
134
|
+
* called by TerraformStack.prepareStack()
|
|
135
|
+
*/
|
|
136
|
+
toTerraform(): any;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Managed policy
|
|
140
|
+
*/
|
|
141
|
+
export declare class ManagedPolicy extends ManagedPolicyBase implements IManagedPolicy, IGrantable {
|
|
142
|
+
/**
|
|
143
|
+
* Import a customer managed policy from the managedPolicyName.
|
|
144
|
+
*
|
|
145
|
+
* For this managed policy, you only need to know the name to be able to use it.
|
|
146
|
+
*
|
|
147
|
+
*/
|
|
148
|
+
static fromManagedPolicyName(scope: Construct, id: string, managedPolicyName: string): IManagedPolicy;
|
|
149
|
+
/**
|
|
150
|
+
* Import an external managed policy by ARN.
|
|
151
|
+
*
|
|
152
|
+
* For this managed policy, you only need to know the ARN to be able to use it.
|
|
153
|
+
* This can be useful if you got the ARN from the Grid.
|
|
154
|
+
*
|
|
155
|
+
* If the imported Managed Policy ARN is a Token (such as a
|
|
156
|
+
* `dataAwsSsmParameter.value` *and* the referenced
|
|
157
|
+
* managed policy has a `path` (like `arn:...:policy/AdminPolicy/AdminAllow`), the
|
|
158
|
+
* `managedPolicyName` property will not resolve to the correct value. Instead it
|
|
159
|
+
* will resolve to the first path component.
|
|
160
|
+
* In this scenario the Managed Policy ARN should be supplied without the
|
|
161
|
+
* `path` in order to resolve the correct managed policy resource.
|
|
162
|
+
*
|
|
163
|
+
* @param scope construct scope
|
|
164
|
+
* @param id construct id
|
|
165
|
+
* @param managedPolicyArn the ARN of the managed policy to import
|
|
166
|
+
*/
|
|
167
|
+
static fromManagedPolicyArn(scope: Construct, id: string, // TODO: remove this, use managedPolicyArn as id?
|
|
168
|
+
managedPolicyArn: string): IManagedPolicy;
|
|
169
|
+
/**
|
|
170
|
+
* Import a managed policy from one of the policies that AWS manages.
|
|
171
|
+
*
|
|
172
|
+
* For this managed policy, you only need to know the name and scope
|
|
173
|
+
* to be able to use it.
|
|
174
|
+
*
|
|
175
|
+
* Some managed policy names start with "service-role/", some start with
|
|
176
|
+
* "job-function/", and some don't start with anything. Include the
|
|
177
|
+
* prefix when constructing this object.
|
|
178
|
+
*/
|
|
179
|
+
static fromAwsManagedPolicyName(scope: Construct, id: string, //TODO: use managedPolicyName as id instead?
|
|
180
|
+
managedPolicyName: string): IManagedPolicy;
|
|
181
|
+
/**
|
|
182
|
+
* Reference a ManagedPolicy for plan time failures and external dependencies.
|
|
183
|
+
*/
|
|
184
|
+
static fromPolicyAttributes(parentScope: Construct, parentId: string, attr: ManagedPolicyAttributes): IManagedPolicy;
|
|
185
|
+
/**
|
|
186
|
+
* Returns the ARN of this managed policy.
|
|
187
|
+
*
|
|
188
|
+
* @attribute
|
|
189
|
+
*/
|
|
190
|
+
get managedPolicyArn(): string;
|
|
191
|
+
/**
|
|
192
|
+
* The policy document.
|
|
193
|
+
*/
|
|
194
|
+
readonly document: PolicyDocument;
|
|
195
|
+
/**
|
|
196
|
+
* The name of this policy.
|
|
197
|
+
*
|
|
198
|
+
* @attribute
|
|
199
|
+
*/
|
|
200
|
+
get managedPolicyName(): string;
|
|
201
|
+
/**
|
|
202
|
+
* The description of this policy.
|
|
203
|
+
*
|
|
204
|
+
* @attribute
|
|
205
|
+
*/
|
|
206
|
+
readonly description?: string;
|
|
207
|
+
/**
|
|
208
|
+
* The path of this policy.
|
|
209
|
+
*
|
|
210
|
+
* @attribute
|
|
211
|
+
*/
|
|
212
|
+
readonly path: string;
|
|
213
|
+
readonly grantPrincipal: IPrincipal;
|
|
214
|
+
/**
|
|
215
|
+
* Direct access to the underlying Terraform resource.
|
|
216
|
+
*
|
|
217
|
+
* Use to define dependencies on this ManagedPolicy.
|
|
218
|
+
*/
|
|
219
|
+
resource: iamPolicy.IamPolicy;
|
|
220
|
+
constructor(scope: Construct, id: string, props?: ManagedPolicyProps);
|
|
221
|
+
/**
|
|
222
|
+
* Adds a statement to the policy document.
|
|
223
|
+
*/
|
|
224
|
+
addStatements(...statement: PolicyStatement[]): void;
|
|
225
|
+
private validateManagedPolicy;
|
|
226
|
+
}
|
|
227
|
+
export {};
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ManagedPolicy = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const provider_aws_1 = require("@cdktf/provider-aws");
|
|
7
|
+
const policy_document_1 = require("./policy-document");
|
|
8
|
+
const arn_1 = require("../arn");
|
|
9
|
+
const aws_construct_1 = require("../aws-construct");
|
|
10
|
+
const aws_stack_1 = require("../aws-stack");
|
|
11
|
+
/**
|
|
12
|
+
* Managed policy base
|
|
13
|
+
*/
|
|
14
|
+
class ManagedPolicyBase extends aws_construct_1.AwsConstructBase {
|
|
15
|
+
get managedPolicyOutputs() {
|
|
16
|
+
return { arn: this.managedPolicyArn };
|
|
17
|
+
}
|
|
18
|
+
get outputs() {
|
|
19
|
+
return this.managedPolicyOutputs;
|
|
20
|
+
}
|
|
21
|
+
constructor(scope, id, props = {}) {
|
|
22
|
+
super(scope, id, props);
|
|
23
|
+
this.roles = new Array();
|
|
24
|
+
}
|
|
25
|
+
attachToRole(role) {
|
|
26
|
+
if (this.roles.find((r) => r.roleArn === role.roleArn)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.roles.push(role);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Adds resource to the terraform JSON output.
|
|
33
|
+
*
|
|
34
|
+
* called by TerraformStack.prepareStack()
|
|
35
|
+
*/
|
|
36
|
+
toTerraform() {
|
|
37
|
+
// add iamRolePolicy resource for each referenced role
|
|
38
|
+
for (let i = 0; i < this.roles.length; i++) {
|
|
39
|
+
const id = `Roles${i}`;
|
|
40
|
+
// TODO: Ideally we should have used IResolvable.resolve and use the IResolveContext.preparing flag
|
|
41
|
+
// ref: https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/aws-iam/lib/policy-document.ts#L48
|
|
42
|
+
if (this.node.tryFindChild(id))
|
|
43
|
+
continue; // ignore if already generated
|
|
44
|
+
new provider_aws_1.iamRolePolicyAttachment.IamRolePolicyAttachment(this, id, {
|
|
45
|
+
policyArn: this.managedPolicyArn,
|
|
46
|
+
role: this.roles[i].roleName,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return {};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Managed policy
|
|
54
|
+
*/
|
|
55
|
+
class ManagedPolicy extends ManagedPolicyBase {
|
|
56
|
+
/**
|
|
57
|
+
* Import a customer managed policy from the managedPolicyName.
|
|
58
|
+
*
|
|
59
|
+
* For this managed policy, you only need to know the name to be able to use it.
|
|
60
|
+
*
|
|
61
|
+
*/
|
|
62
|
+
static fromManagedPolicyName(scope, id, managedPolicyName) {
|
|
63
|
+
class Import extends ManagedPolicyBase {
|
|
64
|
+
constructor() {
|
|
65
|
+
super(...arguments);
|
|
66
|
+
this.managedPolicyArn = aws_stack_1.AwsStack.ofAwsConstruct(scope).formatArn({
|
|
67
|
+
service: "iam",
|
|
68
|
+
region: "", // no region for managed policy
|
|
69
|
+
account: this.env.account,
|
|
70
|
+
resource: "policy",
|
|
71
|
+
resourceName: managedPolicyName,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return new Import(scope, id, {});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Import an external managed policy by ARN.
|
|
79
|
+
*
|
|
80
|
+
* For this managed policy, you only need to know the ARN to be able to use it.
|
|
81
|
+
* This can be useful if you got the ARN from the Grid.
|
|
82
|
+
*
|
|
83
|
+
* If the imported Managed Policy ARN is a Token (such as a
|
|
84
|
+
* `dataAwsSsmParameter.value` *and* the referenced
|
|
85
|
+
* managed policy has a `path` (like `arn:...:policy/AdminPolicy/AdminAllow`), the
|
|
86
|
+
* `managedPolicyName` property will not resolve to the correct value. Instead it
|
|
87
|
+
* will resolve to the first path component.
|
|
88
|
+
* In this scenario the Managed Policy ARN should be supplied without the
|
|
89
|
+
* `path` in order to resolve the correct managed policy resource.
|
|
90
|
+
*
|
|
91
|
+
* @param scope construct scope
|
|
92
|
+
* @param id construct id
|
|
93
|
+
* @param managedPolicyArn the ARN of the managed policy to import
|
|
94
|
+
*/
|
|
95
|
+
static fromManagedPolicyArn(scope, id, // TODO: remove this, use managedPolicyArn as id?
|
|
96
|
+
managedPolicyArn) {
|
|
97
|
+
// TODO: Check scope if child already exist and return that?
|
|
98
|
+
class Import extends ManagedPolicyBase {
|
|
99
|
+
constructor() {
|
|
100
|
+
super(...arguments);
|
|
101
|
+
this.managedPolicyArn = managedPolicyArn;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return new Import(scope, id);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Import a managed policy from one of the policies that AWS manages.
|
|
108
|
+
*
|
|
109
|
+
* For this managed policy, you only need to know the name and scope
|
|
110
|
+
* to be able to use it.
|
|
111
|
+
*
|
|
112
|
+
* Some managed policy names start with "service-role/", some start with
|
|
113
|
+
* "job-function/", and some don't start with anything. Include the
|
|
114
|
+
* prefix when constructing this object.
|
|
115
|
+
*/
|
|
116
|
+
static fromAwsManagedPolicyName(scope, id, //TODO: use managedPolicyName as id instead?
|
|
117
|
+
managedPolicyName) {
|
|
118
|
+
class AwsManagedPolicy extends ManagedPolicyBase {
|
|
119
|
+
constructor() {
|
|
120
|
+
super(...arguments);
|
|
121
|
+
this.managedPolicyArn = arn_1.Arn.format({
|
|
122
|
+
partition: this.env.partition,
|
|
123
|
+
service: "iam",
|
|
124
|
+
region: "", // no region for managed policy
|
|
125
|
+
account: "aws", // the account for a managed policy is 'aws'
|
|
126
|
+
resource: "policy",
|
|
127
|
+
resourceName: managedPolicyName,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return new AwsManagedPolicy(scope, id);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Reference a ManagedPolicy for plan time failures and external dependencies.
|
|
135
|
+
*/
|
|
136
|
+
static fromPolicyAttributes(parentScope, parentId, attr) {
|
|
137
|
+
class Import extends ManagedPolicyBase {
|
|
138
|
+
constructor(scope, id) {
|
|
139
|
+
super(scope, id, attr);
|
|
140
|
+
this.resource = new provider_aws_1.dataAwsIamPolicy.DataAwsIamPolicy(this, "Resource", attr);
|
|
141
|
+
this.managedPolicyArn = this.resource.arn;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return new Import(parentScope, parentId);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns the ARN of this managed policy.
|
|
148
|
+
*
|
|
149
|
+
* @attribute
|
|
150
|
+
*/
|
|
151
|
+
get managedPolicyArn() {
|
|
152
|
+
return this.resource.arn;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The name of this policy.
|
|
156
|
+
*
|
|
157
|
+
* @attribute
|
|
158
|
+
*/
|
|
159
|
+
get managedPolicyName() {
|
|
160
|
+
return this.resource.name;
|
|
161
|
+
}
|
|
162
|
+
// TODO: Add support for pre-created policies?
|
|
163
|
+
// NOTE: in TerraConstruct pre-created policies are passed in through the Grid, so this seems not needed.
|
|
164
|
+
// private readonly _precreatedPolicy?: IManagedPolicy;
|
|
165
|
+
constructor(scope, id, props = {}) {
|
|
166
|
+
super(scope, id, props);
|
|
167
|
+
this.description = props.description;
|
|
168
|
+
this.path = props.path || "/";
|
|
169
|
+
this.document = props.document ?? new policy_document_1.PolicyDocument(this, "Policy");
|
|
170
|
+
if (props.managedPolicyName && props.managedPolicyNamePrefix) {
|
|
171
|
+
throw new Error("Cannot specify both 'managedPolicyName' and 'managedPolicyNamePrefix'. Use only one.");
|
|
172
|
+
}
|
|
173
|
+
const managedPolicyNamePrefix = this.stack.uniqueResourceNamePrefix(this, {
|
|
174
|
+
prefix: props.managedPolicyNamePrefix ?? this.gridUUID + "-",
|
|
175
|
+
allowedSpecialCharacters: "_+=,.@-",
|
|
176
|
+
maxLength: 128,
|
|
177
|
+
});
|
|
178
|
+
this.resource = new provider_aws_1.iamPolicy.IamPolicy(this, "Resource", {
|
|
179
|
+
...props, // copy over Terraform Meta Arguments from ConstructProps
|
|
180
|
+
name: props.managedPolicyName,
|
|
181
|
+
namePrefix: !props.managedPolicyName
|
|
182
|
+
? managedPolicyNamePrefix
|
|
183
|
+
: undefined,
|
|
184
|
+
description: this.description,
|
|
185
|
+
path: this.path,
|
|
186
|
+
policy: this.document.json,
|
|
187
|
+
});
|
|
188
|
+
if (props.roles) {
|
|
189
|
+
props.roles.forEach((r) => this.attachToRole(r));
|
|
190
|
+
}
|
|
191
|
+
if (props.statements) {
|
|
192
|
+
props.statements.forEach((p) => this.addStatements(p));
|
|
193
|
+
}
|
|
194
|
+
this.grantPrincipal = new ManagedPolicyGrantPrincipal(this);
|
|
195
|
+
this.node.addValidation({ validate: () => this.validateManagedPolicy() });
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Adds a statement to the policy document.
|
|
199
|
+
*/
|
|
200
|
+
addStatements(...statement) {
|
|
201
|
+
this.document.addStatements(...statement);
|
|
202
|
+
}
|
|
203
|
+
validateManagedPolicy() {
|
|
204
|
+
const result = new Array();
|
|
205
|
+
// validate that the policy document is not empty
|
|
206
|
+
if (this.document.isEmpty) {
|
|
207
|
+
result.push("Managed Policy is empty. You must add statements to the policy");
|
|
208
|
+
}
|
|
209
|
+
result.push(...this.document.validateForIdentityPolicy());
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
exports.ManagedPolicy = ManagedPolicy;
|
|
214
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
215
|
+
ManagedPolicy[_a] = { fqn: "terraconstructs.aws.iam.ManagedPolicy", version: "0.0.8" };
|
|
216
|
+
class ManagedPolicyGrantPrincipal {
|
|
217
|
+
constructor(_managedPolicy) {
|
|
218
|
+
this._managedPolicy = _managedPolicy;
|
|
219
|
+
this.assumeRoleAction = "sts:AssumeRole";
|
|
220
|
+
this.grantPrincipal = this;
|
|
221
|
+
this.principalAccount = _managedPolicy.env.account;
|
|
222
|
+
}
|
|
223
|
+
get policyFragment() {
|
|
224
|
+
// This property is referenced to add policy statements as a resource-based policy.
|
|
225
|
+
// We should fail because a managed policy cannot be used as a principal of a policy document.
|
|
226
|
+
// cf. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying
|
|
227
|
+
throw new Error(`Cannot use a ManagedPolicy '${this._managedPolicy.node.path}' as the 'Principal' or 'NotPrincipal' in an IAM Policy`);
|
|
228
|
+
}
|
|
229
|
+
addToPolicy(statement) {
|
|
230
|
+
return this.addToPrincipalPolicy(statement).statementAdded;
|
|
231
|
+
}
|
|
232
|
+
addToPrincipalPolicy(statement) {
|
|
233
|
+
this._managedPolicy.addStatements(statement);
|
|
234
|
+
return { statementAdded: true, policyDependable: this._managedPolicy };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9tYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUk2QjtBQUU3Qix1REFBbUQ7QUFTbkQsZ0NBQTZCO0FBQzdCLG9EQUkwQjtBQUMxQiw0Q0FBd0M7QUEwSHhDOztHQUVHO0FBQ0gsTUFBZSxpQkFDYixTQUFRLGdDQUFnQjtJQVN4QixJQUFXLG9CQUFvQjtRQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUZULFVBQUssR0FBRyxJQUFJLEtBQUssRUFBUyxDQUFDO0lBRzVDLENBQUM7SUFDTSxZQUFZLENBQUMsSUFBVztRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2hCLHNEQUFzRDtRQUN0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENB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b2xpY3ksXG4gIGlhbVJvbGVQb2xpY3lBdHRhY2htZW50LFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50IH0gZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50XCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5pbXBvcnQge1xuICBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCxcbiAgSUdyYW50YWJsZSxcbiAgSVByaW5jaXBhbCxcbiAgUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQsXG59IGZyb20gXCIuL3ByaW5jaXBhbHNcIjtcbmltcG9ydCB7IElSb2xlIH0gZnJvbSBcIi4vcm9sZVwiO1xuaW1wb3J0IHsgQXJuIH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRQb2xpY3lPdXRwdXRzIHtcbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBtYW5hZ2VkIHBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNYW5hZ2VkUG9saWN5IGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBTdHJvbmdseSB0eXBlZCBtYW5hZ2VkIHBvbGljeSBvdXRwdXRzXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRQb2xpY3lPdXRwdXRzOiBNYW5hZ2VkUG9saWN5T3V0cHV0cztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIG1hbmFnZWQgcG9saWN5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogTk9URTogVXNpbmcgdGhpcyBtZXRob2Qgd2lsbCBjb25mbGljdCB3aXRoIGEgcm9sZSB0aGF0IGhhc1xuICAgKiBleGNsdXNpdmUgbWFuYWdlbWVudCBvZiB0aGUgcm9sZSdzIHBvbGljeSBhdHRhY2htZW50cy5cbiAgICpcbiAgICogSWYgeW91IGF0dGVtcHQgdG8gbWFuYWdlIGEgcm9sZSdzIHBvbGljaWVzIGJ5IG11bHRpcGxlIG1lYW5zLFxuICAgKiB5b3Ugd2lsbCBnZXQgcmVzb3VyY2UgY3ljbGluZyBhbmQvb3IgZXJyb3JzLlxuICAgKi9cbiAgYXR0YWNoVG9Sb2xlKHJvbGU6IElSb2xlKTogdm9pZDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBJQU0gbWFuYWdlZCBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5hZ2VkUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBwb2xpY3kuIElmIHlvdSBzcGVjaWZ5IG11bHRpcGxlIHBvbGljaWVzIGZvciBhbiBlbnRpdHksXG4gICAqIHNwZWNpZnkgdW5pcXVlIG5hbWVzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYSBsaXN0IG9mIHBvbGljaWVzIGZvclxuICAgKiBhbiBJQU0gcm9sZSwgZWFjaCBwb2xpY3kgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuXG4gICAqXG4gICAqIEZvcmNlcyBuZXcgcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiBvbWl0dGVkLCBSZWZlciB0byBgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXhgLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFBvbGljeU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1bmlxdWUgbmFtZSBiZWdpbm5pbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC5cbiAgICogQ29uZmxpY3RzIHdpdGggYG1hbmFnZWRQb2xpY3lOYW1lYC5cbiAgICpcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1hbmFnZWQgcG9saWN5LiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBwb2xpY2llcyBmb3IgYW4gZW50aXR5LFxuICAgKiBzcGVjaWZ5IHVuaXF1ZSBuYW1lcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGEgbGlzdCBvZiBwb2xpY2llcyBmb3JcbiAgICogYW4gSUFNIHJvbGUsIGVhY2ggcG9saWN5IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLlxuICAgKlxuICAgKiBGb3JjZXMgbmV3IHJlc291cmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgb21pdHRlZCwgRVQgd2lsbCBhc3NpZ24gYSByYW5kb20sIHVuaXF1ZSBuYW1lIHByZWZpeGVkIGJ5IEdyaWRVVUlELlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIG1hbmFnZWQgcG9saWN5LiBUeXBpY2FsbHkgdXNlZCB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogcGVybWlzc2lvbnMgZGVmaW5lZCBpbiB0aGUgcG9saWN5LiBGb3IgZXhhbXBsZSwgXCJHcmFudHMgYWNjZXNzIHRvIHByb2R1Y3Rpb24gRHluYW1vREIgdGFibGVzLlwiXG4gICAqIFRoZSBwb2xpY3kgZGVzY3JpcHRpb24gaXMgaW1tdXRhYmxlLiBBZnRlciBhIHZhbHVlIGlzIGFzc2lnbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC5cbiAgICpcbiAgICogRm9yY2VzIG5ldyByZXNvdXJjZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRlcnJhZm9ybSB3aWxsIGdlbmVyYXRlIGEgZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vVE9ETzogQ29uZmlybSB0ZXJyYWZvcm0gZ2VuZXJhdGVzIGEgZGVzY3JpcHRpb24gZm9yIGlhbV9wb2xpY3k/XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGZvciB0aGUgcG9saWN5LiBUaGlzIHBhcmFtZXRlciBhbGxvd3MgKHRocm91Z2ggaXRzIHJlZ2V4IHBhdHRlcm4pIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyBvZiBlaXRoZXIgYSBmb3J3YXJkIHNsYXNoICgvKSBieSBpdHNlbGYgb3IgYSBzdHJpbmcgdGhhdCBtdXN0IGJlZ2luIGFuZCBlbmQgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gICAqIEluIGFkZGl0aW9uLCBpdCBjYW4gY29udGFpbiBhbnkgQVNDSUkgY2hhcmFjdGVyIGZyb20gdGhlICEgKFxcdTAwMjEpIHRocm91Z2ggdGhlIERFTCBjaGFyYWN0ZXIgKFxcdTAwN0YpLFxuICAgKiBpbmNsdWRpbmcgbW9zdCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBkaWdpdHMsIGFuZCB1cHBlciBhbmQgbG93ZXJjYXNlZCBsZXR0ZXJzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwYXRocywgc2VlIElBTSBJZGVudGlmaWVycyBpbiB0aGUgSUFNIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gXCIvXCJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvbGVzIHRvIGF0dGFjaCB0aGlzIHBvbGljeSB0by5cbiAgICogWW91IGNhbiBhbHNvIHVzZSBgYXR0YWNoVG9Sb2xlKHJvbGUpYCB0byBhdHRhY2ggdGhpcyBwb2xpY3kgdG8gYSByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZXM/OiBJUm9sZVtdO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNldCBvZiBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhpcyBwb2xpY3kgZG9jdW1lbnQuXG4gICAqIFlvdSBjYW4gYWxzbyB1c2UgYGFkZFBlcm1pc3Npb24oc3RhdGVtZW50KWAgdG8gYWRkIHBlcm1pc3Npb25zIGxhdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHN0YXRlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZW1lbnRzPzogUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgUG9saWN5RG9jdW1lbnQgdG8gdXNlIGZvciB0aGlzIE1hbmFnZWRQb2xpY3kuIElmIG9taXRlZCwgYW55XG4gICAqIGBQb2xpY3lTdGF0ZW1lbnRgIHByb3ZpZGVkIGluIHRoZSBgc3RhdGVtZW50c2AgcHJvcGVydHkgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGFnYWluc3QgdGhlIGVtcHR5IGRlZmF1bHQgYFBvbGljeURvY3VtZW50YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbiBlbXB0eSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudD86IFBvbGljeURvY3VtZW50O1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdG8gcmVmZXJlbmNlIE1hbmFnZWRQb2xpY3kgZm9yIHBsYW4gdGltZSBmYWlsdXJlcyBhbmQgc3RyaWN0IGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5hZ2VkUG9saWN5QXR0cmlidXRlc1xuICBleHRlbmRzIGRhdGFBd3NJYW1Qb2xpY3kuRGF0YUF3c0lhbVBvbGljeUNvbmZpZyB7fVxuXG4vKipcbiAqIE1hbmFnZWQgcG9saWN5IGJhc2VcbiAqL1xuYWJzdHJhY3QgY2xhc3MgTWFuYWdlZFBvbGljeUJhc2VcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSU1hbmFnZWRQb2xpY3lcbntcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEFSTiBvZiB0aGlzIG1hbmFnZWQgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IG1hbmFnZWRQb2xpY3lBcm4oKTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IG1hbmFnZWRQb2xpY3lPdXRwdXRzKCk6IE1hbmFnZWRQb2xpY3lPdXRwdXRzIHtcbiAgICByZXR1cm4geyBhcm46IHRoaXMubWFuYWdlZFBvbGljeUFybiB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VkUG9saWN5T3V0cHV0cztcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IHJvbGVzID0gbmV3IEFycmF5PElSb2xlPigpO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWFuYWdlZFBvbGljeVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgfVxuICBwdWJsaWMgYXR0YWNoVG9Sb2xlKHJvbGU6IElSb2xlKSB7XG4gICAgaWYgKHRoaXMucm9sZXMuZmluZCgocikgPT4gci5yb2xlQXJuID09PSByb2xlLnJvbGVBcm4pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm9sZXMucHVzaChyb2xlKTtcbiAgfVxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKlxuICAgKiBjYWxsZWQgYnkgVGVycmFmb3JtU3RhY2sucHJlcGFyZVN0YWNrKClcbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIC8vIGFkZCBpYW1Sb2xlUG9saWN5IHJlc291cmNlIGZvciBlYWNoIHJlZmVyZW5jZWQgcm9sZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaWQgPSBgUm9sZXMke2l9YDtcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIGNvbnRpbnVlOyAvLyBpZ25vcmUgaWYgYWxyZWFkeSBnZW5lcmF0ZWRcblxuICAgICAgbmV3IGlhbVJvbGVQb2xpY3lBdHRhY2htZW50LklhbVJvbGVQb2xpY3lBdHRhY2htZW50KHRoaXMsIGlkLCB7XG4gICAgICAgIHBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgICAgICByb2xlOiB0aGlzLnJvbGVzW2ldLnJvbGVOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKipcbiAqIE1hbmFnZWQgcG9saWN5XG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkUG9saWN5XG4gIGV4dGVuZHMgTWFuYWdlZFBvbGljeUJhc2VcbiAgaW1wbGVtZW50cyBJTWFuYWdlZFBvbGljeSwgSUdyYW50YWJsZVxue1xuICAvKipcbiAgICogSW1wb3J0IGEgY3VzdG9tZXIgbWFuYWdlZCBwb2xpY3kgZnJvbSB0aGUgbWFuYWdlZFBvbGljeU5hbWUuXG4gICAqXG4gICAqIEZvciB0aGlzIG1hbmFnZWQgcG9saWN5LCB5b3Ugb25seSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgdG8gYmUgYWJsZSB0byB1c2UgaXQuXG4gICAqXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYW5hZ2VkUG9saWN5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE1hbmFnZWRQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBtYW5hZ2VkUG9saWN5QXJuID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoXG4gICAgICAgIHNjb3BlLFxuICAgICAgKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiBcImlhbVwiLFxuICAgICAgICByZWdpb246IFwiXCIsIC8vIG5vIHJlZ2lvbiBmb3IgbWFuYWdlZCBwb2xpY3lcbiAgICAgICAgYWNjb3VudDogdGhpcy5lbnYuYWNjb3VudCxcbiAgICAgICAgcmVzb3VyY2U6IFwicG9saWN5XCIsXG4gICAgICAgIHJlc291cmNlTmFtZTogbWFuYWdlZFBvbGljeU5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4dGVybmFsIG1hbmFnZWQgcG9saWN5IGJ5IEFSTi5cbiAgICpcbiAgICogRm9yIHRoaXMgbWFuYWdlZCBwb2xpY3ksIHlvdSBvbmx5IG5lZWQgdG8ga25vdyB0aGUgQVJOIHRvIGJlIGFibGUgdG8gdXNlIGl0LlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IGdvdCB0aGUgQVJOIGZyb20gdGhlIEdyaWQuXG4gICAqXG4gICAqIElmIHRoZSBpbXBvcnRlZCBNYW5hZ2VkIFBvbGljeSBBUk4gaXMgYSBUb2tlbiAoc3VjaCBhcyBhXG4gICAqIGBkYXRhQXdzU3NtUGFyYW1ldGVyLnZhbHVlYCAqYW5kKiB0aGUgcmVmZXJlbmNlZFxuICAgKiBtYW5hZ2VkIHBvbGljeSBoYXMgYSBgcGF0aGAgKGxpa2UgYGFybjouLi46cG9saWN5L0FkbWluUG9saWN5L0FkbWluQWxsb3dgKSwgdGhlXG4gICAqIGBtYW5hZ2VkUG9saWN5TmFtZWAgcHJvcGVydHkgd2lsbCBub3QgcmVzb2x2ZSB0byB0aGUgY29ycmVjdCB2YWx1ZS4gSW5zdGVhZCBpdFxuICAgKiB3aWxsIHJlc29sdmUgdG8gdGhlIGZpcnN0IHBhdGggY29tcG9uZW50LlxuICAgKiBJbiB0aGlzIHNjZW5hcmlvIHRoZSBNYW5hZ2VkIFBvbGljeSBBUk4gc2hvdWxkIGJlIHN1cHBsaWVkIHdpdGhvdXQgdGhlXG4gICAqIGBwYXRoYCBpbiBvcmRlciB0byByZXNvbHZlIHRoZSBjb3JyZWN0IG1hbmFnZWQgcG9saWN5IHJlc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIG1hbmFnZWRQb2xpY3lBcm4gdGhlIEFSTiBvZiB0aGUgbWFuYWdlZCBwb2xpY3kgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYW5hZ2VkUG9saWN5QXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZywgLy8gVE9ETzogcmVtb3ZlIHRoaXMsIHVzZSBtYW5hZ2VkUG9saWN5QXJuIGFzIGlkP1xuICAgIG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIC8vIFRPRE86IENoZWNrIHNjb3BlIGlmIGNoaWxkIGFscmVhZHkgZXhpc3QgYW5kIHJldHVybiB0aGF0P1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE1hbmFnZWRQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBtYW5hZ2VkUG9saWN5QXJuID0gbWFuYWdlZFBvbGljeUFybjtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYSBtYW5hZ2VkIHBvbGljeSBmcm9tIG9uZSBvZiB0aGUgcG9saWNpZXMgdGhhdCBBV1MgbWFuYWdlcy5cbiAgICpcbiAgICogRm9yIHRoaXMgbWFuYWdlZCBwb2xpY3ksIHlvdSBvbmx5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBhbmQgc2NvcGVcbiAgICogdG8gYmUgYWJsZSB0byB1c2UgaXQuXG4gICAqXG4gICAqIFNvbWUgbWFuYWdlZCBwb2xpY3kgbmFtZXMgc3RhcnQgd2l0aCBcInNlcnZpY2Utcm9sZS9cIiwgc29tZSBzdGFydCB3aXRoXG4gICAqIFwiam9iLWZ1bmN0aW9uL1wiLCBhbmQgc29tZSBkb24ndCBzdGFydCB3aXRoIGFueXRoaW5nLiBJbmNsdWRlIHRoZVxuICAgKiBwcmVmaXggd2hlbiBjb25zdHJ1Y3RpbmcgdGhpcyBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsIC8vVE9ETzogdXNlIG1hbmFnZWRQb2xpY3lOYW1lIGFzIGlkIGluc3RlYWQ/XG4gICAgbWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIGNsYXNzIEF3c01hbmFnZWRQb2xpY3kgZXh0ZW5kcyBNYW5hZ2VkUG9saWN5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybiA9IEFybi5mb3JtYXQoe1xuICAgICAgICBwYXJ0aXRpb246IHRoaXMuZW52LnBhcnRpdGlvbixcbiAgICAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAgICAgcmVnaW9uOiBcIlwiLCAvLyBubyByZWdpb24gZm9yIG1hbmFnZWQgcG9saWN5XG4gICAgICAgIGFjY291bnQ6IFwiYXdzXCIsIC8vIHRoZSBhY2NvdW50IGZvciBhIG1hbmFnZWQgcG9saWN5IGlzICdhd3MnXG4gICAgICAgIHJlc291cmNlOiBcInBvbGljeVwiLFxuICAgICAgICByZXNvdXJjZU5hbWU6IG1hbmFnZWRQb2xpY3lOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXdzTWFuYWdlZFBvbGljeShzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhIE1hbmFnZWRQb2xpY3kgZm9yIHBsYW4gdGltZSBmYWlsdXJlcyBhbmQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUG9saWN5QXR0cmlidXRlcyhcbiAgICBwYXJlbnRTY29wZTogQ29uc3RydWN0LFxuICAgIHBhcmVudElkOiBzdHJpbmcsXG4gICAgYXR0cjogTWFuYWdlZFBvbGljeUF0dHJpYnV0ZXMsXG4gICk6IElNYW5hZ2VkUG9saWN5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBNYW5hZ2VkUG9saWN5QmFzZSB7XG4gICAgICAvKipcbiAgICAgICAqIERpcmVjdCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgVGVycmFmb3JtIHJlc291cmNlLlxuICAgICAgICpcbiAgICAgICAqIFVzZSB0byBkZWZpbmUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgTWFuYWdlZFBvbGljeS5cbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBkYXRhQXdzSWFtUG9saWN5LkRhdGFBd3NJYW1Qb2xpY3k7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nO1xuICAgICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGF0dHIpO1xuICAgICAgICB0aGlzLnJlc291cmNlID0gbmV3IGRhdGFBd3NJYW1Qb2xpY3kuRGF0YUF3c0lhbVBvbGljeShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAgICBhdHRyLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY3lBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChwYXJlbnRTY29wZSwgcGFyZW50SWQpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUk4gb2YgdGhpcyBtYW5hZ2VkIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGdldCBtYW5hZ2VkUG9saWN5QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQ6IFBvbGljeURvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGdldCBtYW5hZ2VkUG9saWN5TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoaXMgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogSVByaW5jaXBhbDtcblxuICAvKipcbiAgICogRGlyZWN0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBUZXJyYWZvcm0gcmVzb3VyY2UuXG4gICAqXG4gICAqIFVzZSB0byBkZWZpbmUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgTWFuYWdlZFBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZTogaWFtUG9saWN5LklhbVBvbGljeTtcblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgcHJlLWNyZWF0ZWQgcG9saWNpZXM/XG4gIC8vIE5PVEU6IGluIFRlcnJhQ29uc3RydWN0IHByZS1jcmVhdGVkIHBvbGljaWVzIGFyZSBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgR3JpZCwgc28gdGhpcyBzZWVtcyBub3QgbmVlZGVkLlxuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9wcmVjcmVhdGVkUG9saWN5PzogSU1hbmFnZWRQb2xpY3k7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRQb2xpY3lQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5wYXRoID0gcHJvcHMucGF0aCB8fCBcIi9cIjtcblxuICAgIHRoaXMuZG9jdW1lbnQgPSBwcm9wcy5kb2N1bWVudCA/PyBuZXcgUG9saWN5RG9jdW1lbnQodGhpcywgXCJQb2xpY3lcIik7XG5cbiAgICBpZiAocHJvcHMubWFuYWdlZFBvbGljeU5hbWUgJiYgcHJvcHMubWFuYWdlZFBvbGljeU5hbWVQcmVmaXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3Qgc3BlY2lmeSBib3RoICdtYW5hZ2VkUG9saWN5TmFtZScgYW5kICdtYW5hZ2VkUG9saWN5TmFtZVByZWZpeCcuIFVzZSBvbmx5IG9uZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXggPSB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCh0aGlzLCB7XG4gICAgICBwcmVmaXg6IHByb3BzLm1hbmFnZWRQb2xpY3lOYW1lUHJlZml4ID8/IHRoaXMuZ3JpZFVVSUQgKyBcIi1cIixcbiAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCJfKz0sLkAtXCIsXG4gICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgaWFtUG9saWN5LklhbVBvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC4uLnByb3BzLCAvLyBjb3B5IG92ZXIgVGVycmFmb3JtIE1ldGEgQXJndW1lbnRzIGZyb20gQ29uc3RydWN0UHJvcHNcbiAgICAgIG5hbWU6IHByb3BzLm1hbmFnZWRQb2xpY3lOYW1lLFxuICAgICAgbmFtZVByZWZpeDogIXByb3BzLm1hbmFnZWRQb2xpY3lOYW1lXG4gICAgICAgID8gbWFuYWdlZFBvbGljeU5hbWVQcmVmaXhcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgIHBvbGljeTogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnJvbGVzKSB7XG4gICAgICBwcm9wcy5yb2xlcy5mb3JFYWNoKChyKSA9PiB0aGlzLmF0dGFjaFRvUm9sZShyKSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnN0YXRlbWVudHMpIHtcbiAgICAgIHByb3BzLnN0YXRlbWVudHMuZm9yRWFjaCgocCkgPT4gdGhpcy5hZGRTdGF0ZW1lbnRzKHApKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gbmV3IE1hbmFnZWRQb2xpY3lHcmFudFByaW5jaXBhbCh0aGlzKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKHsgdmFsaWRhdGU6ICgpID0+IHRoaXMudmFsaWRhdGVNYW5hZ2VkUG9saWN5KCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnRbXSkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyguLi5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1hbmFnZWRQb2xpY3koKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSBwb2xpY3kgZG9jdW1lbnQgaXMgbm90IGVtcHR5XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuaXNFbXB0eSkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIFwiTWFuYWdlZCBQb2xpY3kgaXMgZW1wdHkuIFlvdSBtdXN0IGFkZCBzdGF0ZW1lbnRzIHRvIHRoZSBwb2xpY3lcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2goLi4udGhpcy5kb2N1bWVudC52YWxpZGF0ZUZvcklkZW50aXR5UG9saWN5KCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgTWFuYWdlZFBvbGljeUdyYW50UHJpbmNpcGFsIGltcGxlbWVudHMgSVByaW5jaXBhbCB7XG4gIHB1YmxpYyByZWFkb25seSBhc3N1bWVSb2xlQWN0aW9uID0gXCJzdHM6QXNzdW1lUm9sZVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWw7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxBY2NvdW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21hbmFnZWRQb2xpY3k6IE1hbmFnZWRQb2xpY3kpIHtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcztcbiAgICB0aGlzLnByaW5jaXBhbEFjY291bnQgPSBfbWFuYWdlZFBvbGljeS5lbnYuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9saWN5RnJhZ21lbnQoKTogUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQge1xuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgcmVmZXJlbmNlZCB0byBhZGQgcG9saWN5IHN0YXRlbWVudHMgYXMgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kuXG4gICAgLy8gV2Ugc2hvdWxkIGZhaWwgYmVjYXVzZSBhIG1hbmFnZWQgcG9saWN5IGNhbm5vdCBiZSB1c2VkIGFzIGEgcHJpbmNpcGFsIG9mIGEgcG9saWN5IGRvY3VtZW50LlxuICAgIC8vIGNmLiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3ByaW5jaXBhbC5odG1sI1ByaW5jaXBhbF9zcGVjaWZ5aW5nXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCB1c2UgYSBNYW5hZ2VkUG9saWN5ICcke3RoaXMuX21hbmFnZWRQb2xpY3kubm9kZS5wYXRofScgYXMgdGhlICdQcmluY2lwYWwnIG9yICdOb3RQcmluY2lwYWwnIGluIGFuIElBTSBQb2xpY3lgLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Qb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpLnN0YXRlbWVudEFkZGVkO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgIHN0YXRlbWVudDogUG9saWN5U3RhdGVtZW50LFxuICApOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgdGhpcy5fbWFuYWdlZFBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMuX21hbmFnZWRQb2xpY3kgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { iamOpenidConnectProvider } from "@cdktf/provider-aws";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
|
|
4
|
+
export interface OpenIdConnectProviderOutputs {
|
|
5
|
+
/**
|
|
6
|
+
* The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
|
|
7
|
+
* @stability stable
|
|
8
|
+
*/
|
|
9
|
+
readonly arn: string;
|
|
10
|
+
/**
|
|
11
|
+
* The issuer for OIDC Provider
|
|
12
|
+
* @stability stable
|
|
13
|
+
*/
|
|
14
|
+
readonly issuer: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Represents an IAM OpenID Connect provider.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export interface IOpenIdConnectProvider extends IAwsConstruct {
|
|
21
|
+
readonly openIdConnectProviderOutputs: OpenIdConnectProviderOutputs;
|
|
22
|
+
/**
|
|
23
|
+
* The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
|
|
24
|
+
*/
|
|
25
|
+
readonly openIdConnectProviderArn: string;
|
|
26
|
+
/**
|
|
27
|
+
* The issuer for OIDC Provider
|
|
28
|
+
*/
|
|
29
|
+
readonly openIdConnectProviderIssuer: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Initialization properties for `OpenIdConnectProvider`.
|
|
33
|
+
*/
|
|
34
|
+
export interface OpenIdConnectProviderProps extends AwsConstructProps {
|
|
35
|
+
/**
|
|
36
|
+
* The URL of the identity provider. The URL must begin with https:// and
|
|
37
|
+
* should correspond to the iss claim in the provider's OpenID Connect ID
|
|
38
|
+
* tokens. Per the OIDC standard, path components are allowed but query
|
|
39
|
+
* parameters are not. Typically the URL consists of only a hostname, like
|
|
40
|
+
* https://server.example.org or https://example.com.
|
|
41
|
+
*
|
|
42
|
+
* You cannot register the same provider multiple times in a single AWS
|
|
43
|
+
* account. If you try to submit a URL that has already been used for an
|
|
44
|
+
* OpenID Connect provider in the AWS account, you will get an error.
|
|
45
|
+
*/
|
|
46
|
+
readonly url: string;
|
|
47
|
+
/**
|
|
48
|
+
* A list of client IDs (also known as audiences). When a mobile or web app
|
|
49
|
+
* registers with an OpenID Connect provider, they establish a value that
|
|
50
|
+
* identifies the application. (This is the value that's sent as the client_id
|
|
51
|
+
* parameter on OAuth requests.)
|
|
52
|
+
*
|
|
53
|
+
* You can register multiple client IDs with the same provider. For example,
|
|
54
|
+
* you might have multiple applications that use the same OIDC provider. You
|
|
55
|
+
* cannot register more than 100 client IDs with a single IAM OIDC provider.
|
|
56
|
+
*
|
|
57
|
+
* Client IDs are up to 255 characters long.
|
|
58
|
+
*/
|
|
59
|
+
readonly clientIds: string[];
|
|
60
|
+
/**
|
|
61
|
+
* A list of server certificate thumbprints for the OpenID Connect (OIDC)
|
|
62
|
+
* identity provider's server certificates.
|
|
63
|
+
*
|
|
64
|
+
* AWS secures communication with OIDC identity providers (IdPs) using our
|
|
65
|
+
* library of trusted root certificate authorities (CAs) to verify the
|
|
66
|
+
* JSON Web Key Set (JWKS) endpoint's TLS certificate.
|
|
67
|
+
*
|
|
68
|
+
* If your OIDC IdP relies on a certificate that is not signed by one of
|
|
69
|
+
* these trusted CAs, only then we secure communication using the
|
|
70
|
+
* thumbprints set in the IdP's configuration.
|
|
71
|
+
*
|
|
72
|
+
* AWS will fall back to thumbprint verification if we are unable to retrieve
|
|
73
|
+
* the TLS certificate or if TLS v1.3 is required.
|
|
74
|
+
*
|
|
75
|
+
* See [AWS OIDC Docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-console)
|
|
76
|
+
*/
|
|
77
|
+
readonly thumbprints?: string[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* IAM OIDC identity providers are entities in IAM that describe an external
|
|
81
|
+
* identity provider (IdP) service that supports the OpenID Connect (OIDC)
|
|
82
|
+
* standard, such as Google or Salesforce. You use an IAM OIDC identity provider
|
|
83
|
+
* when you want to establish trust between an OIDC-compatible IdP and your AWS
|
|
84
|
+
* account. This is useful when creating a mobile app or web application that
|
|
85
|
+
* requires access to AWS resources, but you don't want to create custom sign-in
|
|
86
|
+
* code or manage your own user identities.
|
|
87
|
+
*
|
|
88
|
+
* @see http://openid.net/connect
|
|
89
|
+
* @see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html
|
|
90
|
+
*
|
|
91
|
+
* @resource AWS::CloudFormation::CustomResource
|
|
92
|
+
*/
|
|
93
|
+
export declare class OpenIdConnectProvider extends AwsConstructBase implements IOpenIdConnectProvider {
|
|
94
|
+
/**
|
|
95
|
+
* Imports an Open ID connect provider from an ARN.
|
|
96
|
+
* @param scope The definition scope
|
|
97
|
+
* @param id ID of the construct
|
|
98
|
+
* @param openIdConnectProviderArn the ARN to import
|
|
99
|
+
*/
|
|
100
|
+
static fromOpenIdConnectProviderArn(scope: Construct, id: string, openIdConnectProviderArn: string): IOpenIdConnectProvider;
|
|
101
|
+
readonly openIdConnectProviderOutputs: OpenIdConnectProviderOutputs;
|
|
102
|
+
get outputs(): Record<string, any>;
|
|
103
|
+
readonly resource: iamOpenidConnectProvider.IamOpenidConnectProvider;
|
|
104
|
+
/**
|
|
105
|
+
* The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
|
|
106
|
+
*/
|
|
107
|
+
readonly openIdConnectProviderArn: string;
|
|
108
|
+
readonly openIdConnectProviderIssuer: string;
|
|
109
|
+
/**
|
|
110
|
+
* The thumbprints configured for this provider.
|
|
111
|
+
*/
|
|
112
|
+
readonly openIdConnectProviderthumbprints: string[];
|
|
113
|
+
/**
|
|
114
|
+
* Defines an OpenID Connect provider.
|
|
115
|
+
* @param scope The definition scope
|
|
116
|
+
* @param id Construct ID
|
|
117
|
+
* @param props Initialization properties
|
|
118
|
+
*/
|
|
119
|
+
constructor(scope: Construct, id: string, props: OpenIdConnectProviderProps);
|
|
120
|
+
}
|