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,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.StateGraph = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const iam = require("../iam");
|
|
7
|
+
const distributed_map_1 = require("./states/distributed-map");
|
|
8
|
+
/**
|
|
9
|
+
* A collection of connected states
|
|
10
|
+
*
|
|
11
|
+
* A StateGraph is used to keep track of all states that are connected (have
|
|
12
|
+
* transitions between them). It does not include the substatemachines in
|
|
13
|
+
* a Parallel's branches: those are their own StateGraphs, but the graphs
|
|
14
|
+
* themselves have a hierarchical relationship as well.
|
|
15
|
+
*
|
|
16
|
+
* By assigning states to a definitive StateGraph, we verify that no state
|
|
17
|
+
* machines are constructed. In particular:
|
|
18
|
+
*
|
|
19
|
+
* - Every state object can only ever be in 1 StateGraph, and not inadvertently
|
|
20
|
+
* be used in two graphs.
|
|
21
|
+
* - Every stateId must be unique across all states in the entire state
|
|
22
|
+
* machine.
|
|
23
|
+
*
|
|
24
|
+
* All policy statements in all states in all substatemachines are bubbled so
|
|
25
|
+
* that the top-level StateMachine instantiation can read them all and add
|
|
26
|
+
* them to the IAM Role.
|
|
27
|
+
*
|
|
28
|
+
* You do not need to instantiate this class; it is used internally.
|
|
29
|
+
*/
|
|
30
|
+
class StateGraph {
|
|
31
|
+
/**
|
|
32
|
+
* @param startState state that gets executed when the state machine is launched
|
|
33
|
+
* @param graphDescription description of the state machine
|
|
34
|
+
*/
|
|
35
|
+
constructor(startState, graphDescription) {
|
|
36
|
+
this.startState = startState;
|
|
37
|
+
this.graphDescription = graphDescription;
|
|
38
|
+
/**
|
|
39
|
+
* The accumulated policy statements
|
|
40
|
+
*/
|
|
41
|
+
this.policyStatements = new Array();
|
|
42
|
+
/**
|
|
43
|
+
* All states in this graph
|
|
44
|
+
*/
|
|
45
|
+
this.allStates = new Set();
|
|
46
|
+
/**
|
|
47
|
+
* A mapping of stateId -> Graph for all states in this graph and subgraphs
|
|
48
|
+
*/
|
|
49
|
+
this.allContainedStates = new Map();
|
|
50
|
+
this.allStates.add(startState);
|
|
51
|
+
startState.bindToGraph(this);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Register a state as part of this graph
|
|
55
|
+
*
|
|
56
|
+
* Called by State.bindToGraph().
|
|
57
|
+
*/
|
|
58
|
+
registerState(state) {
|
|
59
|
+
this.registerContainedState(state.stateId, this);
|
|
60
|
+
this.allStates.add(state);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Register a Policy Statement used by states in this graph
|
|
64
|
+
*/
|
|
65
|
+
registerPolicyStatement(statement) {
|
|
66
|
+
if (this.superGraph) {
|
|
67
|
+
this.superGraph.registerPolicyStatement(statement);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.policyStatements.push(statement);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Register this graph as a child of the given graph
|
|
75
|
+
*
|
|
76
|
+
* Resource changes will be bubbled up to the given graph.
|
|
77
|
+
*/
|
|
78
|
+
registerSuperGraph(graph) {
|
|
79
|
+
if (this.superGraph === graph) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (this.superGraph) {
|
|
83
|
+
throw new Error("Every StateGraph can only be registered into one other StateGraph");
|
|
84
|
+
}
|
|
85
|
+
this.superGraph = graph;
|
|
86
|
+
this.pushContainedStatesUp(graph);
|
|
87
|
+
this.pushPolicyStatementsUp(graph);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Return the Amazon States Language JSON for this graph
|
|
91
|
+
*/
|
|
92
|
+
toGraphJson() {
|
|
93
|
+
const states = {};
|
|
94
|
+
for (const state of this.allStates) {
|
|
95
|
+
states[state.stateId] = state.toStateJson();
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
StartAt: this.startState.stateId,
|
|
99
|
+
States: states,
|
|
100
|
+
TimeoutSeconds: this.timeout && this.timeout.toSeconds(),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Return a string description of this graph
|
|
105
|
+
*/
|
|
106
|
+
toString() {
|
|
107
|
+
const someNodes = Array.from(this.allStates)
|
|
108
|
+
.slice(0, 3)
|
|
109
|
+
.map((x) => x.stateId);
|
|
110
|
+
if (this.allStates.size > 3) {
|
|
111
|
+
someNodes.push("...");
|
|
112
|
+
}
|
|
113
|
+
return `${this.graphDescription} (${someNodes.join(", ")})`;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Register a stateId and graph where it was registered
|
|
117
|
+
*/
|
|
118
|
+
registerContainedState(stateId, graph) {
|
|
119
|
+
if (this.superGraph) {
|
|
120
|
+
this.superGraph.registerContainedState(stateId, graph);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const existingGraph = this.allContainedStates.get(stateId);
|
|
124
|
+
if (existingGraph) {
|
|
125
|
+
throw new Error(`State with name '${stateId}' occurs in both ${graph} and ${existingGraph}. All states must have unique names.`);
|
|
126
|
+
}
|
|
127
|
+
this.allContainedStates.set(stateId, graph);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Push all contained state info up to the given super graph
|
|
132
|
+
*/
|
|
133
|
+
pushContainedStatesUp(superGraph) {
|
|
134
|
+
for (const [stateId, graph] of this.allContainedStates) {
|
|
135
|
+
superGraph.registerContainedState(stateId, graph);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Push all policy statements to into the given super graph
|
|
140
|
+
*/
|
|
141
|
+
pushPolicyStatementsUp(superGraph) {
|
|
142
|
+
for (const policyStatement of this.policyStatements) {
|
|
143
|
+
superGraph.registerPolicyStatement(policyStatement);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Binds this StateGraph to the StateMachine it defines and updates state machine permissions
|
|
148
|
+
*/
|
|
149
|
+
bind(stateMachine) {
|
|
150
|
+
for (const state of this.allStates) {
|
|
151
|
+
if (distributed_map_1.DistributedMap.isDistributedMap(state)) {
|
|
152
|
+
stateMachine.role.attachInlinePolicy(new iam.Policy(stateMachine, "DistributedMapPolicy", {
|
|
153
|
+
document: new iam.PolicyDocument(stateMachine, "DistributedMapPolicyDocument", {
|
|
154
|
+
statement: [
|
|
155
|
+
new iam.PolicyStatement({
|
|
156
|
+
actions: ["states:StartExecution"],
|
|
157
|
+
resources: [stateMachine.stateMachineArn],
|
|
158
|
+
}),
|
|
159
|
+
new iam.PolicyStatement({
|
|
160
|
+
actions: [
|
|
161
|
+
"states:DescribeExecution",
|
|
162
|
+
"states:StopExecution",
|
|
163
|
+
],
|
|
164
|
+
resources: [`${stateMachine.stateMachineArn}:*`],
|
|
165
|
+
}),
|
|
166
|
+
],
|
|
167
|
+
}),
|
|
168
|
+
}));
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.StateGraph = StateGraph;
|
|
175
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
176
|
+
StateGraph[_a] = { fqn: "terraconstructs.aws.compute.StateGraph", version: "0.0.8" };
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvc3RhdGUtZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSw4QkFBOEI7QUFDOUIsOERBQTBEO0FBRzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFVBQVU7SUErQnJCOzs7T0FHRztJQUNILFlBQ2tCLFVBQWlCLEVBQ2hCLGdCQUF3QjtRQUR6QixlQUFVLEdBQVYsVUFBVSxDQUFPO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQTFCM0M7O1dBRUc7UUFDYSxxQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBdUIsQ0FBQztRQUVwRTs7V0FFRztRQUNjLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDO1FBRTlDOztXQUVHO1FBQ2MsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFlbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUF1QixDQUFDLFNBQThCO1FBQzNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGtCQUFrQixDQUFDLEtBQWlCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUVBQW1FLENBQ3BFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87WUFDaEMsTUFBTSxFQUFFLE1BQU07WUFDZCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN6QyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNYLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsT0FBZSxFQUFFLEtBQWlCO1FBQy9ELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzRCxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLG9CQUFvQixPQUFPLG9CQUFvQixLQUFLLFFBQVEsYUFBYSxzQ0FBc0MsQ0FDaEgsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCLENBQUMsVUFBc0I7UUFDbEQsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZELFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQixDQUFDLFVBQXNCO1FBQ25ELEtBQUssTUFBTSxlQUFlLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsVUFBVSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsWUFBMEI7UUFDcEMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxnQ0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ25ELFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQzlCLFlBQVksRUFDWiw4QkFBOEIsRUFDOUI7d0JBQ0UsU0FBUyxFQUFFOzRCQUNULElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQ0FDdEIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0NBQ2xDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7NkJBQzFDLENBQUM7NEJBQ0YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO2dDQUN0QixPQUFPLEVBQUU7b0NBQ1AsMEJBQTBCO29DQUMxQixzQkFBc0I7aUNBQ3ZCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLGVBQWUsSUFBSSxDQUFDOzZCQUNqRCxDQUFDO3lCQUNIO3FCQUNGLENBQ0Y7aUJBQ0YsQ0FBQyxDQUNILENBQUM7Z0JBRUYsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7QUFyTEgsZ0NBc0xDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTYwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMvbGliL3N0YXRlLWdyYXBoLnRzXG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiLi9zdGF0ZS1tYWNoaW5lXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IERpc3RyaWJ1dGVkTWFwIH0gZnJvbSBcIi4vc3RhdGVzL2Rpc3RyaWJ1dGVkLW1hcFwiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZXMvc3RhdGVcIjtcblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2YgY29ubmVjdGVkIHN0YXRlc1xuICpcbiAqIEEgU3RhdGVHcmFwaCBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHN0YXRlcyB0aGF0IGFyZSBjb25uZWN0ZWQgKGhhdmVcbiAqIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbSkuIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHN1YnN0YXRlbWFjaGluZXMgaW5cbiAqIGEgUGFyYWxsZWwncyBicmFuY2hlczogdGhvc2UgYXJlIHRoZWlyIG93biBTdGF0ZUdyYXBocywgYnV0IHRoZSBncmFwaHNcbiAqIHRoZW1zZWx2ZXMgaGF2ZSBhIGhpZXJhcmNoaWNhbCByZWxhdGlvbnNoaXAgYXMgd2VsbC5cbiAqXG4gKiBCeSBhc3NpZ25pbmcgc3RhdGVzIHRvIGEgZGVmaW5pdGl2ZSBTdGF0ZUdyYXBoLCB3ZSB2ZXJpZnkgdGhhdCBubyBzdGF0ZVxuICogbWFjaGluZXMgYXJlIGNvbnN0cnVjdGVkLiBJbiBwYXJ0aWN1bGFyOlxuICpcbiAqIC0gRXZlcnkgc3RhdGUgb2JqZWN0IGNhbiBvbmx5IGV2ZXIgYmUgaW4gMSBTdGF0ZUdyYXBoLCBhbmQgbm90IGluYWR2ZXJ0ZW50bHlcbiAqICAgYmUgdXNlZCBpbiB0d28gZ3JhcGhzLlxuICogLSBFdmVyeSBzdGF0ZUlkIG11c3QgYmUgdW5pcXVlIGFjcm9zcyBhbGwgc3RhdGVzIGluIHRoZSBlbnRpcmUgc3RhdGVcbiAqICAgbWFjaGluZS5cbiAqXG4gKiBBbGwgcG9saWN5IHN0YXRlbWVudHMgaW4gYWxsIHN0YXRlcyBpbiBhbGwgc3Vic3RhdGVtYWNoaW5lcyBhcmUgYnViYmxlZCBzb1xuICogdGhhdCB0aGUgdG9wLWxldmVsIFN0YXRlTWFjaGluZSBpbnN0YW50aWF0aW9uIGNhbiByZWFkIHRoZW0gYWxsIGFuZCBhZGRcbiAqIHRoZW0gdG8gdGhlIElBTSBSb2xlLlxuICpcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzOyBpdCBpcyB1c2VkIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGF0ZUdyYXBoIHtcbiAgLyoqXG4gICAqIFNldCBhIHRpbWVvdXQgdG8gcmVuZGVyIGludG8gdGhlIGdyYXBoIEpTT04uXG4gICAqXG4gICAqIFJlYWQvd3JpdGUuIE9ubHkgbWFrZXMgc2Vuc2Ugb24gdGhlIHRvcC1sZXZlbCBncmFwaCwgc3ViZ3JhcGhzXG4gICAqIGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gdGltZW91dFxuICAgKi9cbiAgcHVibGljIHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGFjY3VtdWxhdGVkIHBvbGljeSBzdGF0ZW1lbnRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5U3RhdGVtZW50cyA9IG5ldyBBcnJheTxpYW0uUG9saWN5U3RhdGVtZW50PigpO1xuXG4gIC8qKlxuICAgKiBBbGwgc3RhdGVzIGluIHRoaXMgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsU3RhdGVzID0gbmV3IFNldDxTdGF0ZT4oKTtcblxuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHN0YXRlSWQgLT4gR3JhcGggZm9yIGFsbCBzdGF0ZXMgaW4gdGhpcyBncmFwaCBhbmQgc3ViZ3JhcGhzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbENvbnRhaW5lZFN0YXRlcyA9IG5ldyBNYXA8c3RyaW5nLCBTdGF0ZUdyYXBoPigpO1xuXG4gIC8qKlxuICAgKiBDb250YWluaW5nIGdyYXBoIG9mIHRoaXMgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgc3VwZXJHcmFwaD86IFN0YXRlR3JhcGg7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzdGFydFN0YXRlIHN0YXRlIHRoYXQgZ2V0cyBleGVjdXRlZCB3aGVuIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIGxhdW5jaGVkXG4gICAqIEBwYXJhbSBncmFwaERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uIG9mIHRoZSBzdGF0ZSBtYWNoaW5lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhcnRTdGF0ZTogU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBncmFwaERlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuYWxsU3RhdGVzLmFkZChzdGFydFN0YXRlKTtcbiAgICBzdGFydFN0YXRlLmJpbmRUb0dyYXBoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc3RhdGUgYXMgcGFydCBvZiB0aGlzIGdyYXBoXG4gICAqXG4gICAqIENhbGxlZCBieSBTdGF0ZS5iaW5kVG9HcmFwaCgpLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyU3RhdGUoc3RhdGU6IFN0YXRlKSB7XG4gICAgdGhpcy5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlLnN0YXRlSWQsIHRoaXMpO1xuICAgIHRoaXMuYWxsU3RhdGVzLmFkZChzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBQb2xpY3kgU3RhdGVtZW50IHVzZWQgYnkgc3RhdGVzIGluIHRoaXMgZ3JhcGhcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclBvbGljeVN0YXRlbWVudChzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpIHtcbiAgICBpZiAodGhpcy5zdXBlckdyYXBoKSB7XG4gICAgICB0aGlzLnN1cGVyR3JhcGgucmVnaXN0ZXJQb2xpY3lTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb2xpY3lTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgdGhpcyBncmFwaCBhcyBhIGNoaWxkIG9mIHRoZSBnaXZlbiBncmFwaFxuICAgKlxuICAgKiBSZXNvdXJjZSBjaGFuZ2VzIHdpbGwgYmUgYnViYmxlZCB1cCB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJTdXBlckdyYXBoKGdyYXBoOiBTdGF0ZUdyYXBoKSB7XG4gICAgaWYgKHRoaXMuc3VwZXJHcmFwaCA9PT0gZ3JhcGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VwZXJHcmFwaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkV2ZXJ5IFN0YXRlR3JhcGggY2FuIG9ubHkgYmUgcmVnaXN0ZXJlZCBpbnRvIG9uZSBvdGhlciBTdGF0ZUdyYXBoXCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnN1cGVyR3JhcGggPSBncmFwaDtcbiAgICB0aGlzLnB1c2hDb250YWluZWRTdGF0ZXNVcChncmFwaCk7XG4gICAgdGhpcy5wdXNoUG9saWN5U3RhdGVtZW50c1VwKGdyYXBoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEFtYXpvbiBTdGF0ZXMgTGFuZ3VhZ2UgSlNPTiBmb3IgdGhpcyBncmFwaFxuICAgKi9cbiAgcHVibGljIHRvR3JhcGhKc29uKCk6IG9iamVjdCB7XG4gICAgY29uc3Qgc3RhdGVzOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuYWxsU3RhdGVzKSB7XG4gICAgICBzdGF0ZXNbc3RhdGUuc3RhdGVJZF0gPSBzdGF0ZS50b1N0YXRlSnNvbigpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBTdGFydEF0OiB0aGlzLnN0YXJ0U3RhdGUuc3RhdGVJZCxcbiAgICAgIFN0YXRlczogc3RhdGVzLFxuICAgICAgVGltZW91dFNlY29uZHM6IHRoaXMudGltZW91dCAmJiB0aGlzLnRpbWVvdXQudG9TZWNvbmRzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhpcyBncmFwaFxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIGNvbnN0IHNvbWVOb2RlcyA9IEFycmF5LmZyb20odGhpcy5hbGxTdGF0ZXMpXG4gICAgICAuc2xpY2UoMCwgMylcbiAgICAgIC5tYXAoKHgpID0+IHguc3RhdGVJZCk7XG4gICAgaWYgKHRoaXMuYWxsU3RhdGVzLnNpemUgPiAzKSB7XG4gICAgICBzb21lTm9kZXMucHVzaChcIi4uLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ3JhcGhEZXNjcmlwdGlvbn0gKCR7c29tZU5vZGVzLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHN0YXRlSWQgYW5kIGdyYXBoIHdoZXJlIGl0IHdhcyByZWdpc3RlcmVkXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVkU3RhdGUoc3RhdGVJZDogc3RyaW5nLCBncmFwaDogU3RhdGVHcmFwaCkge1xuICAgIGlmICh0aGlzLnN1cGVyR3JhcGgpIHtcbiAgICAgIHRoaXMuc3VwZXJHcmFwaC5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlSWQsIGdyYXBoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhpc3RpbmdHcmFwaCA9IHRoaXMuYWxsQ29udGFpbmVkU3RhdGVzLmdldChzdGF0ZUlkKTtcbiAgICAgIGlmIChleGlzdGluZ0dyYXBoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgU3RhdGUgd2l0aCBuYW1lICcke3N0YXRlSWR9JyBvY2N1cnMgaW4gYm90aCAke2dyYXBofSBhbmQgJHtleGlzdGluZ0dyYXBofS4gQWxsIHN0YXRlcyBtdXN0IGhhdmUgdW5pcXVlIG5hbWVzLmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxsQ29udGFpbmVkU3RhdGVzLnNldChzdGF0ZUlkLCBncmFwaCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFB1c2ggYWxsIGNvbnRhaW5lZCBzdGF0ZSBpbmZvIHVwIHRvIHRoZSBnaXZlbiBzdXBlciBncmFwaFxuICAgKi9cbiAgcHJpdmF0ZSBwdXNoQ29udGFpbmVkU3RhdGVzVXAoc3VwZXJHcmFwaDogU3RhdGVHcmFwaCkge1xuICAgIGZvciAoY29uc3QgW3N0YXRlSWQsIGdyYXBoXSBvZiB0aGlzLmFsbENvbnRhaW5lZFN0YXRlcykge1xuICAgICAgc3VwZXJHcmFwaC5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlSWQsIGdyYXBoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHVzaCBhbGwgcG9saWN5IHN0YXRlbWVudHMgdG8gaW50byB0aGUgZ2l2ZW4gc3VwZXIgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgcHVzaFBvbGljeVN0YXRlbWVudHNVcChzdXBlckdyYXBoOiBTdGF0ZUdyYXBoKSB7XG4gICAgZm9yIChjb25zdCBwb2xpY3lTdGF0ZW1lbnQgb2YgdGhpcy5wb2xpY3lTdGF0ZW1lbnRzKSB7XG4gICAgICBzdXBlckdyYXBoLnJlZ2lzdGVyUG9saWN5U3RhdGVtZW50KHBvbGljeVN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgU3RhdGVHcmFwaCB0byB0aGUgU3RhdGVNYWNoaW5lIGl0IGRlZmluZXMgYW5kIHVwZGF0ZXMgc3RhdGUgbWFjaGluZSBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGJpbmQoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpIHtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuYWxsU3RhdGVzKSB7XG4gICAgICBpZiAoRGlzdHJpYnV0ZWRNYXAuaXNEaXN0cmlidXRlZE1hcChzdGF0ZSkpIHtcbiAgICAgICAgc3RhdGVNYWNoaW5lLnJvbGUuYXR0YWNoSW5saW5lUG9saWN5KFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5KHN0YXRlTWFjaGluZSwgXCJEaXN0cmlidXRlZE1hcFBvbGljeVwiLCB7XG4gICAgICAgICAgICBkb2N1bWVudDogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudChcbiAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lLFxuICAgICAgICAgICAgICBcIkRpc3RyaWJ1dGVkTWFwUG9saWN5RG9jdW1lbnRcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudDogW1xuICAgICAgICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJzdGF0ZXM6U3RhcnRFeGVjdXRpb25cIl0sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogW3N0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm5dLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICBcInN0YXRlczpEZXNjcmliZUV4ZWN1dGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwic3RhdGVzOlN0b3BFeGVjdXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYCR7c3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybn06KmBdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Chain } from "./chain";
|
|
3
|
+
import { Parallel, ParallelProps } from "./states/parallel";
|
|
4
|
+
import { State } from "./states/state";
|
|
5
|
+
import { IChainable, INextable } from "./types";
|
|
6
|
+
/**
|
|
7
|
+
* Base class for reusable state machine fragments
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class StateMachineFragment extends Construct implements IChainable {
|
|
10
|
+
/**
|
|
11
|
+
* The start state of this state machine fragment
|
|
12
|
+
*/
|
|
13
|
+
abstract readonly startState: State;
|
|
14
|
+
/**
|
|
15
|
+
* The states to chain onto if this fragment is used
|
|
16
|
+
*/
|
|
17
|
+
abstract readonly endStates: INextable[];
|
|
18
|
+
get id(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Prefix the IDs of all states in this state machine fragment
|
|
21
|
+
*
|
|
22
|
+
* Use this to avoid multiple copies of the state machine all having the
|
|
23
|
+
* same state IDs.
|
|
24
|
+
*
|
|
25
|
+
* @param prefix The prefix to add. Will use construct ID by default.
|
|
26
|
+
*/
|
|
27
|
+
prefixStates(prefix?: string): StateMachineFragment;
|
|
28
|
+
/**
|
|
29
|
+
* Wrap all states in this state machine fragment up into a single state.
|
|
30
|
+
*
|
|
31
|
+
* This can be used to add retry or error handling onto this state
|
|
32
|
+
* machine fragment.
|
|
33
|
+
*
|
|
34
|
+
* Be aware that this changes the result of the inner state machine
|
|
35
|
+
* to be an array with the result of the state machine in it. Adjust
|
|
36
|
+
* your paths accordingly. For example, change 'outputPath' to
|
|
37
|
+
* '$[0]'.
|
|
38
|
+
*/
|
|
39
|
+
toSingleState(options?: SingleStateOptions): Parallel;
|
|
40
|
+
/**
|
|
41
|
+
* Continue normal execution with the given state
|
|
42
|
+
*/
|
|
43
|
+
next(next: IChainable): Chain;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Options for creating a single state
|
|
47
|
+
*/
|
|
48
|
+
export interface SingleStateOptions extends ParallelProps {
|
|
49
|
+
/**
|
|
50
|
+
* ID of newly created containing state
|
|
51
|
+
*
|
|
52
|
+
* @default Construct ID of the StateMachineFragment
|
|
53
|
+
*/
|
|
54
|
+
readonly stateId?: string;
|
|
55
|
+
/**
|
|
56
|
+
* String to prefix all stateIds in the state machine with
|
|
57
|
+
*
|
|
58
|
+
* @default stateId
|
|
59
|
+
*/
|
|
60
|
+
readonly prefixStates?: string;
|
|
61
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.StateMachineFragment = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
// https://github.com/aws/aws-cdk/blob/v2.160.0/packages/aws-cdk-lib/aws-stepfunctions/lib/state-machine-fragment.ts
|
|
7
|
+
const constructs_1 = require("constructs");
|
|
8
|
+
const chain_1 = require("./chain");
|
|
9
|
+
const parallel_1 = require("./states/parallel");
|
|
10
|
+
const state_1 = require("./states/state");
|
|
11
|
+
/**
|
|
12
|
+
* Base class for reusable state machine fragments
|
|
13
|
+
*/
|
|
14
|
+
class StateMachineFragment extends constructs_1.Construct {
|
|
15
|
+
get id() {
|
|
16
|
+
return this.node.id;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Prefix the IDs of all states in this state machine fragment
|
|
20
|
+
*
|
|
21
|
+
* Use this to avoid multiple copies of the state machine all having the
|
|
22
|
+
* same state IDs.
|
|
23
|
+
*
|
|
24
|
+
* @param prefix The prefix to add. Will use construct ID by default.
|
|
25
|
+
*/
|
|
26
|
+
prefixStates(prefix) {
|
|
27
|
+
state_1.State.prefixStates(this, prefix || `${this.id}: `);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Wrap all states in this state machine fragment up into a single state.
|
|
32
|
+
*
|
|
33
|
+
* This can be used to add retry or error handling onto this state
|
|
34
|
+
* machine fragment.
|
|
35
|
+
*
|
|
36
|
+
* Be aware that this changes the result of the inner state machine
|
|
37
|
+
* to be an array with the result of the state machine in it. Adjust
|
|
38
|
+
* your paths accordingly. For example, change 'outputPath' to
|
|
39
|
+
* '$[0]'.
|
|
40
|
+
*/
|
|
41
|
+
toSingleState(options = {}) {
|
|
42
|
+
const stateId = options.stateId || this.id;
|
|
43
|
+
this.prefixStates(options.prefixStates || `${stateId}: `);
|
|
44
|
+
return new parallel_1.Parallel(this, stateId, options).branch(this);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Continue normal execution with the given state
|
|
48
|
+
*/
|
|
49
|
+
next(next) {
|
|
50
|
+
return chain_1.Chain.start(this).next(next);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.StateMachineFragment = StateMachineFragment;
|
|
54
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
+
StateMachineFragment[_a] = { fqn: "terraconstructs.aws.compute.StateMachineFragment", version: "0.0.8" };
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtbWFjaGluZS1mcmFnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9zdGF0ZS1tYWNoaW5lLWZyYWdtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0hBQW9IO0FBQ3BILDJDQUF1QztBQUN2QyxtQ0FBZ0M7QUFDaEMsZ0RBQTREO0FBQzVELDBDQUF1QztBQUd2Qzs7R0FFRztBQUNILE1BQXNCLG9CQUNwQixTQUFRLHNCQUFTO0lBYWpCLElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsTUFBZTtRQUNqQyxhQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYSxDQUFDLFVBQThCLEVBQUU7UUFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFMUQsT0FBTyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLElBQWdCO1FBQzFCLE9BQU8sYUFBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7QUF0REgsb0RBdURDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTYwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMvbGliL3N0YXRlLW1hY2hpbmUtZnJhZ21lbnQudHNcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDaGFpbiB9IGZyb20gXCIuL2NoYWluXCI7XG5pbXBvcnQgeyBQYXJhbGxlbCwgUGFyYWxsZWxQcm9wcyB9IGZyb20gXCIuL3N0YXRlcy9wYXJhbGxlbFwiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZXMvc3RhdGVcIjtcbmltcG9ydCB7IElDaGFpbmFibGUsIElOZXh0YWJsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgcmV1c2FibGUgc3RhdGUgbWFjaGluZSBmcmFnbWVudHNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlTWFjaGluZUZyYWdtZW50XG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSUNoYWluYWJsZVxue1xuICAvKipcbiAgICogVGhlIHN0YXJ0IHN0YXRlIG9mIHRoaXMgc3RhdGUgbWFjaGluZSBmcmFnbWVudFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN0YXJ0U3RhdGU6IFN0YXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGVzIHRvIGNoYWluIG9udG8gaWYgdGhpcyBmcmFnbWVudCBpcyB1c2VkXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5kU3RhdGVzOiBJTmV4dGFibGVbXTtcblxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUuaWQ7XG4gIH1cblxuICAvKipcbiAgICogUHJlZml4IHRoZSBJRHMgb2YgYWxsIHN0YXRlcyBpbiB0aGlzIHN0YXRlIG1hY2hpbmUgZnJhZ21lbnRcbiAgICpcbiAgICogVXNlIHRoaXMgdG8gYXZvaWQgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzdGF0ZSBtYWNoaW5lIGFsbCBoYXZpbmcgdGhlXG4gICAqIHNhbWUgc3RhdGUgSURzLlxuICAgKlxuICAgKiBAcGFyYW0gcHJlZml4IFRoZSBwcmVmaXggdG8gYWRkLiBXaWxsIHVzZSBjb25zdHJ1Y3QgSUQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHB1YmxpYyBwcmVmaXhTdGF0ZXMocHJlZml4Pzogc3RyaW5nKTogU3RhdGVNYWNoaW5lRnJhZ21lbnQge1xuICAgIFN0YXRlLnByZWZpeFN0YXRlcyh0aGlzLCBwcmVmaXggfHwgYCR7dGhpcy5pZH06IGApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXAgYWxsIHN0YXRlcyBpbiB0aGlzIHN0YXRlIG1hY2hpbmUgZnJhZ21lbnQgdXAgaW50byBhIHNpbmdsZSBzdGF0ZS5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgcmV0cnkgb3IgZXJyb3IgaGFuZGxpbmcgb250byB0aGlzIHN0YXRlXG4gICAqIG1hY2hpbmUgZnJhZ21lbnQuXG4gICAqXG4gICAqIEJlIGF3YXJlIHRoYXQgdGhpcyBjaGFuZ2VzIHRoZSByZXN1bHQgb2YgdGhlIGlubmVyIHN0YXRlIG1hY2hpbmVcbiAgICogdG8gYmUgYW4gYXJyYXkgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBzdGF0ZSBtYWNoaW5lIGluIGl0LiBBZGp1c3RcbiAgICogeW91ciBwYXRocyBhY2NvcmRpbmdseS4gRm9yIGV4YW1wbGUsIGNoYW5nZSAnb3V0cHV0UGF0aCcgdG9cbiAgICogJyRbMF0nLlxuICAgKi9cbiAgcHVibGljIHRvU2luZ2xlU3RhdGUob3B0aW9uczogU2luZ2xlU3RhdGVPcHRpb25zID0ge30pOiBQYXJhbGxlbCB7XG4gICAgY29uc3Qgc3RhdGVJZCA9IG9wdGlvbnMuc3RhdGVJZCB8fCB0aGlzLmlkO1xuICAgIHRoaXMucHJlZml4U3RhdGVzKG9wdGlvbnMucHJlZml4U3RhdGVzIHx8IGAke3N0YXRlSWR9OiBgKTtcblxuICAgIHJldHVybiBuZXcgUGFyYWxsZWwodGhpcywgc3RhdGVJZCwgb3B0aW9ucykuYnJhbmNoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc3RhdGVcbiAgICovXG4gIHB1YmxpYyBuZXh0KG5leHQ6IElDaGFpbmFibGUpIHtcbiAgICByZXR1cm4gQ2hhaW4uc3RhcnQodGhpcykubmV4dChuZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgc2luZ2xlIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2luZ2xlU3RhdGVPcHRpb25zIGV4dGVuZHMgUGFyYWxsZWxQcm9wcyB7XG4gIC8qKlxuICAgKiBJRCBvZiBuZXdseSBjcmVhdGVkIGNvbnRhaW5pbmcgc3RhdGVcbiAgICpcbiAgICogQGRlZmF1bHQgQ29uc3RydWN0IElEIG9mIHRoZSBTdGF0ZU1hY2hpbmVGcmFnbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3RyaW5nIHRvIHByZWZpeCBhbGwgc3RhdGVJZHMgaW4gdGhlIHN0YXRlIG1hY2hpbmUgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBzdGF0ZUlkXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhTdGF0ZXM/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { sfnStateMachine } from "@cdktf/provider-aws";
|
|
2
|
+
import { IResolvable } from "cdktf";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "..";
|
|
5
|
+
import { StateGraph } from "./state-graph";
|
|
6
|
+
import { IChainable } from "./types";
|
|
7
|
+
import { Duration } from "../../";
|
|
8
|
+
import * as iam from "../iam";
|
|
9
|
+
/**
|
|
10
|
+
* Properties for defining a State Machine
|
|
11
|
+
*/
|
|
12
|
+
export interface StateMachineProps extends AwsConstructProps {
|
|
13
|
+
/**
|
|
14
|
+
* The name of the state machine.
|
|
15
|
+
*
|
|
16
|
+
* To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.
|
|
17
|
+
*
|
|
18
|
+
* Length Constraints: Minimum length of 1. Maximum length of 80.
|
|
19
|
+
*
|
|
20
|
+
* @default - Terraform will assign a random, unique suffix.
|
|
21
|
+
*/
|
|
22
|
+
readonly stateMachineName?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a unique name beginning with the specified prefix. Conflicts with `stateMachineName`
|
|
25
|
+
*
|
|
26
|
+
* The name should only contain 0-9, A-Z, a-z, - and _
|
|
27
|
+
* Terraform Prefixes must reserve 26 characters for the terraform generated suffix.
|
|
28
|
+
*
|
|
29
|
+
* @default - GridUUID + Stack Unique Name
|
|
30
|
+
*/
|
|
31
|
+
readonly namePrefix?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Definition for this state machine
|
|
34
|
+
*/
|
|
35
|
+
readonly definitionBody: DefinitionBody;
|
|
36
|
+
/**
|
|
37
|
+
* The execution role for the state machine service
|
|
38
|
+
*
|
|
39
|
+
* @default A role is automatically created
|
|
40
|
+
*/
|
|
41
|
+
readonly role?: iam.IRole;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum run time for this state machine
|
|
44
|
+
*
|
|
45
|
+
* @default No timeout
|
|
46
|
+
*/
|
|
47
|
+
readonly timeout?: Duration;
|
|
48
|
+
/**
|
|
49
|
+
* Comment that describes this state machine
|
|
50
|
+
*
|
|
51
|
+
* @default - No comment
|
|
52
|
+
*/
|
|
53
|
+
readonly comment?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Type of the state machine
|
|
56
|
+
*
|
|
57
|
+
* @default StateMachineType.STANDARD
|
|
58
|
+
*/
|
|
59
|
+
readonly stateMachineType?: StateMachineType;
|
|
60
|
+
/**
|
|
61
|
+
* Defines what execution history events are logged and where they are logged.
|
|
62
|
+
*
|
|
63
|
+
* @default No logging
|
|
64
|
+
*/
|
|
65
|
+
readonly logs?: LogOptions;
|
|
66
|
+
/**
|
|
67
|
+
* Specifies whether Amazon X-Ray tracing is enabled for this state machine.
|
|
68
|
+
*
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
readonly tracingEnabled?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/sfn_state_machine#tags SfnStateMachine#tags}
|
|
74
|
+
*/
|
|
75
|
+
readonly tags?: {
|
|
76
|
+
[key: string]: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/sfn_state_machine#publish SfnStateMachine#publish}
|
|
80
|
+
*/
|
|
81
|
+
readonly publish?: boolean | IResolvable;
|
|
82
|
+
}
|
|
83
|
+
export interface StateMachineOutputs {
|
|
84
|
+
/**
|
|
85
|
+
* State Machine arn
|
|
86
|
+
*/
|
|
87
|
+
readonly arn: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A State Machine
|
|
91
|
+
*/
|
|
92
|
+
export interface IStateMachine extends IAwsConstruct {
|
|
93
|
+
/** Strongly typed outputs */
|
|
94
|
+
readonly stateMachineOutputs: StateMachineOutputs;
|
|
95
|
+
/**
|
|
96
|
+
* The ARN of the state machine
|
|
97
|
+
* @attribute
|
|
98
|
+
*/
|
|
99
|
+
readonly stateMachineArn: string;
|
|
100
|
+
/**
|
|
101
|
+
* Grant the given identity permissions to start an execution of this state
|
|
102
|
+
* machine.
|
|
103
|
+
*
|
|
104
|
+
* @param identity The principal
|
|
105
|
+
*/
|
|
106
|
+
grantStartExecution(identity: iam.IGrantable): iam.Grant;
|
|
107
|
+
/**
|
|
108
|
+
* Grant the given identity permissions to start a synchronous execution of
|
|
109
|
+
* this state machine.
|
|
110
|
+
*
|
|
111
|
+
* @param identity The principal
|
|
112
|
+
*/
|
|
113
|
+
grantStartSyncExecution(identity: iam.IGrantable): iam.Grant;
|
|
114
|
+
/**
|
|
115
|
+
* Grant the given identity read permissions for this state machine
|
|
116
|
+
*
|
|
117
|
+
* @param identity The principal
|
|
118
|
+
*/
|
|
119
|
+
grantRead(identity: iam.IGrantable): iam.Grant;
|
|
120
|
+
/**
|
|
121
|
+
* Grant the given identity read permissions for this state machine
|
|
122
|
+
*
|
|
123
|
+
* @param identity The principal
|
|
124
|
+
*/
|
|
125
|
+
grantTaskResponse(identity: iam.IGrantable): iam.Grant;
|
|
126
|
+
/**
|
|
127
|
+
* Grant the given identity permissions for all executions of a state machine
|
|
128
|
+
*
|
|
129
|
+
* @param identity The principal
|
|
130
|
+
* @param actions The list of desired actions
|
|
131
|
+
*/
|
|
132
|
+
grantExecution(identity: iam.IGrantable, ...actions: string[]): iam.Grant;
|
|
133
|
+
/**
|
|
134
|
+
* Grant the given identity custom permissions
|
|
135
|
+
*
|
|
136
|
+
* @param identity The principal
|
|
137
|
+
* @param actions The list of desired actions
|
|
138
|
+
*/
|
|
139
|
+
grant(identity: iam.IGrantable, ...actions: string[]): iam.Grant;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A new or imported state machine.
|
|
143
|
+
*/
|
|
144
|
+
declare abstract class StateMachineBase extends AwsConstructBase implements IStateMachine {
|
|
145
|
+
/**
|
|
146
|
+
* Import a state machine
|
|
147
|
+
*/
|
|
148
|
+
static fromStateMachineArn(scope: Construct, id: string, stateMachineArn: string): IStateMachine;
|
|
149
|
+
/**
|
|
150
|
+
* Import a state machine via resource name
|
|
151
|
+
*/
|
|
152
|
+
static fromStateMachineName(scope: Construct, id: string, stateMachineName: string): IStateMachine;
|
|
153
|
+
abstract readonly stateMachineArn: string;
|
|
154
|
+
get stateMachineOutputs(): StateMachineOutputs;
|
|
155
|
+
get outputs(): Record<string, any>;
|
|
156
|
+
/**
|
|
157
|
+
* The principal this state machine is running as
|
|
158
|
+
*/
|
|
159
|
+
abstract readonly grantPrincipal: iam.IPrincipal;
|
|
160
|
+
/**
|
|
161
|
+
* Grant the given identity permissions to start an execution of this state
|
|
162
|
+
* machine.
|
|
163
|
+
*/
|
|
164
|
+
grantStartExecution(identity: iam.IGrantable): iam.Grant;
|
|
165
|
+
/**
|
|
166
|
+
* Grant the given identity permissions to start a synchronous execution of
|
|
167
|
+
* this state machine.
|
|
168
|
+
*/
|
|
169
|
+
grantStartSyncExecution(identity: iam.IGrantable): iam.Grant;
|
|
170
|
+
/**
|
|
171
|
+
* Grant the given identity permissions to read results from state
|
|
172
|
+
* machine.
|
|
173
|
+
*/
|
|
174
|
+
grantRead(identity: iam.IGrantable): iam.Grant;
|
|
175
|
+
/**
|
|
176
|
+
* Grant the given identity task response permissions on a state machine
|
|
177
|
+
*/
|
|
178
|
+
grantTaskResponse(identity: iam.IGrantable): iam.Grant;
|
|
179
|
+
/**
|
|
180
|
+
* Grant the given identity permissions on all executions of the state machine
|
|
181
|
+
*/
|
|
182
|
+
grantExecution(identity: iam.IGrantable, ...actions: string[]): iam.Grant;
|
|
183
|
+
/**
|
|
184
|
+
* Grant the given identity custom permissions
|
|
185
|
+
*/
|
|
186
|
+
grant(identity: iam.IGrantable, ...actions: string[]): iam.Grant;
|
|
187
|
+
/**
|
|
188
|
+
* Returns the pattern for the execution ARN's of the state machine
|
|
189
|
+
*/
|
|
190
|
+
private executionArn;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Define a StepFunctions State Machine
|
|
194
|
+
*/
|
|
195
|
+
export declare class StateMachine extends StateMachineBase {
|
|
196
|
+
/**
|
|
197
|
+
* Execution role of this state machine
|
|
198
|
+
*/
|
|
199
|
+
readonly role: iam.IRole;
|
|
200
|
+
readonly resource: sfnStateMachine.SfnStateMachine;
|
|
201
|
+
/**
|
|
202
|
+
* The name of the state machine
|
|
203
|
+
* @attribute
|
|
204
|
+
*/
|
|
205
|
+
get stateMachineName(): string;
|
|
206
|
+
/**
|
|
207
|
+
* The ARN of the state machine
|
|
208
|
+
*/
|
|
209
|
+
get stateMachineArn(): string;
|
|
210
|
+
/**
|
|
211
|
+
* Type of the state machine
|
|
212
|
+
* @attribute
|
|
213
|
+
*/
|
|
214
|
+
readonly stateMachineType: StateMachineType;
|
|
215
|
+
/**
|
|
216
|
+
* Identifier for the state machine revision, which is an immutable, read-only snapshot of a state machine’s definition and configuration.
|
|
217
|
+
* @attribute
|
|
218
|
+
*/
|
|
219
|
+
readonly stateMachineRevisionId: string;
|
|
220
|
+
constructor(scope: Construct, id: string, props: StateMachineProps);
|
|
221
|
+
/**
|
|
222
|
+
* The principal this state machine is running as
|
|
223
|
+
*/
|
|
224
|
+
get grantPrincipal(): iam.IPrincipal;
|
|
225
|
+
/**
|
|
226
|
+
* Add the given statement to the role's policy
|
|
227
|
+
*/
|
|
228
|
+
addToRolePolicy(statement: iam.PolicyStatement): void;
|
|
229
|
+
private validateStateMachineName;
|
|
230
|
+
private buildLoggingConfiguration;
|
|
231
|
+
private buildTracingConfiguration;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Partial object from the StateMachine L1 construct properties containing definition information
|
|
235
|
+
*/
|
|
236
|
+
export interface DefinitionConfig {
|
|
237
|
+
readonly definition: string;
|
|
238
|
+
}
|
|
239
|
+
export declare abstract class DefinitionBody {
|
|
240
|
+
static fromString(definition: string): DefinitionBody;
|
|
241
|
+
static fromChainable(chainable: IChainable): DefinitionBody;
|
|
242
|
+
abstract bind(scope: Construct, sfnPrincipal: iam.IPrincipal, sfnProps: StateMachineProps, graph?: StateGraph): DefinitionConfig;
|
|
243
|
+
}
|
|
244
|
+
export declare class StringDefinitionBody extends DefinitionBody {
|
|
245
|
+
readonly body: string;
|
|
246
|
+
constructor(body: string);
|
|
247
|
+
bind(_scope: Construct, _sfnPrincipal: iam.IPrincipal, _sfnProps: StateMachineProps, _graph?: StateGraph): DefinitionConfig;
|
|
248
|
+
}
|
|
249
|
+
export declare class ChainDefinitionBody extends DefinitionBody {
|
|
250
|
+
readonly chainable: IChainable;
|
|
251
|
+
constructor(chainable: IChainable);
|
|
252
|
+
bind(scope: Construct, _sfnPrincipal: iam.IPrincipal, sfnProps: StateMachineProps, graph?: StateGraph): DefinitionConfig;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Two types of state machines are available in AWS Step Functions: EXPRESS AND STANDARD.
|
|
256
|
+
*
|
|
257
|
+
* @see https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html
|
|
258
|
+
*
|
|
259
|
+
* @default STANDARD
|
|
260
|
+
*/
|
|
261
|
+
export declare enum StateMachineType {
|
|
262
|
+
/**
|
|
263
|
+
* Express Workflows are ideal for high-volume, event processing workloads.
|
|
264
|
+
*/
|
|
265
|
+
EXPRESS = "EXPRESS",
|
|
266
|
+
/**
|
|
267
|
+
* Standard Workflows are ideal for long-running, durable, and auditable workflows.
|
|
268
|
+
*/
|
|
269
|
+
STANDARD = "STANDARD"
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Defines which category of execution history events are logged.
|
|
273
|
+
*
|
|
274
|
+
* @see https://docs.aws.amazon.com/step-functions/latest/dg/cloudwatch-log-level.html
|
|
275
|
+
*
|
|
276
|
+
* @default ERROR
|
|
277
|
+
*/
|
|
278
|
+
export declare enum LogLevel {
|
|
279
|
+
/**
|
|
280
|
+
* No Logging
|
|
281
|
+
*/
|
|
282
|
+
OFF = "OFF",
|
|
283
|
+
/**
|
|
284
|
+
* Log everything
|
|
285
|
+
*/
|
|
286
|
+
ALL = "ALL",
|
|
287
|
+
/**
|
|
288
|
+
* Log all errors
|
|
289
|
+
*/
|
|
290
|
+
ERROR = "ERROR",
|
|
291
|
+
/**
|
|
292
|
+
* Log fatal errors
|
|
293
|
+
*/
|
|
294
|
+
FATAL = "FATAL"
|
|
295
|
+
}
|
|
296
|
+
export interface LogOptions {
|
|
297
|
+
/**
|
|
298
|
+
* Determines whether execution data is included in your log.
|
|
299
|
+
*
|
|
300
|
+
* When set to false, data is excluded.
|
|
301
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/sfn_state_machine#include_execution_data SfnStateMachine#include_execution_data}
|
|
302
|
+
* @default false
|
|
303
|
+
*/
|
|
304
|
+
readonly includeExecutionData?: boolean | IResolvable;
|
|
305
|
+
/**
|
|
306
|
+
* Defines which category of execution history events are logged.
|
|
307
|
+
*
|
|
308
|
+
* @default ERROR
|
|
309
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/sfn_state_machine#level SfnStateMachine#level}
|
|
310
|
+
*/
|
|
311
|
+
readonly level?: LogLevel;
|
|
312
|
+
/**
|
|
313
|
+
* The log group where the execution history events will be logged.
|
|
314
|
+
*
|
|
315
|
+
* Amazon Resource Name (ARN) of a CloudWatch log group.
|
|
316
|
+
* Make sure the State Machine has the correct IAM policies for logging.
|
|
317
|
+
* The ARN must end with `:*`
|
|
318
|
+
*
|
|
319
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/sfn_state_machine#log_destination SfnStateMachine#log_destination}
|
|
320
|
+
*/
|
|
321
|
+
readonly logDestination?: string;
|
|
322
|
+
}
|
|
323
|
+
export {};
|