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,188 @@
|
|
|
1
|
+
import { TerraformStack, TerraformElement, HttpBackendConfig, HttpBackend } from "cdktf";
|
|
2
|
+
import { Construct, IConstruct, Node } from "constructs";
|
|
3
|
+
/**
|
|
4
|
+
* Options for creating a unique resource name_prefix.
|
|
5
|
+
*/
|
|
6
|
+
export interface UniqueResourceNamePrefixOptions extends UniqueResourceNameOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Length of the random generated suffix added by some Terraform providers.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: https://github.com/hashicorp/terraform-provider-aws/issues/625
|
|
11
|
+
* @default - 26
|
|
12
|
+
*/
|
|
13
|
+
readonly suffixLength?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Options for creating a unique resource name.
|
|
17
|
+
*/
|
|
18
|
+
export interface UniqueResourceNameOptions {
|
|
19
|
+
/**
|
|
20
|
+
* The maximum length of the unique resource name.
|
|
21
|
+
*
|
|
22
|
+
* @default - 256
|
|
23
|
+
*/
|
|
24
|
+
readonly maxLength?: number;
|
|
25
|
+
/**
|
|
26
|
+
* The separator used between the path components.
|
|
27
|
+
*
|
|
28
|
+
* @default - none
|
|
29
|
+
*/
|
|
30
|
+
readonly separator?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Non-alphanumeric characters allowed in the unique resource name.
|
|
33
|
+
*
|
|
34
|
+
* @default - none
|
|
35
|
+
*/
|
|
36
|
+
readonly allowedSpecialCharacters?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Prefix to be added into the stack name
|
|
39
|
+
*
|
|
40
|
+
* @default - none
|
|
41
|
+
*/
|
|
42
|
+
readonly prefix?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Whether to convert the resource name to lowercase.
|
|
45
|
+
*
|
|
46
|
+
* @default - false
|
|
47
|
+
*/
|
|
48
|
+
readonly lowerCase?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface StackBaseProps {
|
|
51
|
+
/**
|
|
52
|
+
* TerraConstruct UUID within the grid.
|
|
53
|
+
*
|
|
54
|
+
* UUID is generated by the CLI and ensures resource Identity
|
|
55
|
+
* is decoupled from resource tagging for consistency.
|
|
56
|
+
*
|
|
57
|
+
* UUID may be user provided for imported resources
|
|
58
|
+
*/
|
|
59
|
+
readonly gridUUID: string;
|
|
60
|
+
/**
|
|
61
|
+
* The environment name passed in from the CLI
|
|
62
|
+
*/
|
|
63
|
+
readonly environmentName: string;
|
|
64
|
+
/**
|
|
65
|
+
* Stores the state using a simple REST client.
|
|
66
|
+
*
|
|
67
|
+
* State will be fetched via GET, updated via POST, and purged with DELETE.
|
|
68
|
+
* The method used for updating is configurable.
|
|
69
|
+
*
|
|
70
|
+
* This backend optionally supports state locking.
|
|
71
|
+
* When locking support is enabled it will use LOCK and UNLOCK requests providing the lock info in the body.
|
|
72
|
+
* The endpoint should return a 423: Locked or 409: Conflict with the holding lock info when
|
|
73
|
+
* it's already taken, 200: OK for success. Any other status will be considered an error.
|
|
74
|
+
* The ID of the holding lock info will be added as a query parameter to state updates requests.
|
|
75
|
+
*
|
|
76
|
+
* Read more about this backend in the Terraform docs:
|
|
77
|
+
* https://developer.hashicorp.com/terraform/language/settings/backends/http
|
|
78
|
+
*/
|
|
79
|
+
readonly gridBackendConfig?: HttpBackendConfig;
|
|
80
|
+
}
|
|
81
|
+
export interface IStack extends IConstruct {
|
|
82
|
+
/**
|
|
83
|
+
* Environment Name passed in from the CLI
|
|
84
|
+
*/
|
|
85
|
+
readonly environmentName: string;
|
|
86
|
+
readonly gridUUID: string;
|
|
87
|
+
readonly gridBackend?: HttpBackend;
|
|
88
|
+
resolve(obj: any, preparing?: boolean): any;
|
|
89
|
+
uniqueResourceName(tfElement: TerraformElement | Node, options: UniqueResourceNameOptions): string;
|
|
90
|
+
uniqueResourceNamePrefix(tfElement: TerraformElement | Node, options: UniqueResourceNamePrefixOptions): string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Base class for all TerraConstructs stacks
|
|
94
|
+
*
|
|
95
|
+
* Provides a reference to the grid UUID and environment name
|
|
96
|
+
*/
|
|
97
|
+
export declare abstract class StackBase extends TerraformStack implements IStack {
|
|
98
|
+
/**
|
|
99
|
+
* Return whether the given object is a Stack.
|
|
100
|
+
*
|
|
101
|
+
* attribute detection since as 'instanceof' potentially fails across Library releases.
|
|
102
|
+
*/
|
|
103
|
+
static isTerraStack(x: any): x is IStack;
|
|
104
|
+
/**
|
|
105
|
+
* Looks up the first stack scope in which `construct` is defined. Fails if there is no stack up the tree or the stack is not an IStack.
|
|
106
|
+
* @param construct The construct to start the search from.
|
|
107
|
+
*/
|
|
108
|
+
static ofTerraConstruct(construct: IConstruct): IStack;
|
|
109
|
+
/**
|
|
110
|
+
* Returns a unique identifier for a construct based on its path within
|
|
111
|
+
* a TerraformStack. see uniqueResourceName, but with no separator, maximum length 255 and allows
|
|
112
|
+
* "_" and "-" on top of alphanumerical characters.
|
|
113
|
+
*
|
|
114
|
+
* @param construct The construct
|
|
115
|
+
* @returns a unique resource name based on the construct path
|
|
116
|
+
*/
|
|
117
|
+
static uniqueId(construct: IConstruct | Node): string;
|
|
118
|
+
/**
|
|
119
|
+
* Returns a unique identifier for a construct based
|
|
120
|
+
* on its path within a TerraformStack.
|
|
121
|
+
*
|
|
122
|
+
* Throws if no TerraformStack is found within it's construct path.
|
|
123
|
+
*
|
|
124
|
+
* This function finds the id of the parent stack (non-nested)
|
|
125
|
+
* to the construct, and the ids of the components in the construct path.
|
|
126
|
+
*
|
|
127
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
128
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
129
|
+
* from the path components, with or without user defined separators, and a hash suffix.
|
|
130
|
+
* If the resource name is longer than the maximum length, it is trimmed in the middle.
|
|
131
|
+
*
|
|
132
|
+
* @param construct The construct
|
|
133
|
+
* @param options Options for defining the unique resource name
|
|
134
|
+
* @returns a unique resource name based on the construct path
|
|
135
|
+
*/
|
|
136
|
+
private static uniqueResourceName;
|
|
137
|
+
/**
|
|
138
|
+
* Stack unique grid identifier
|
|
139
|
+
*/
|
|
140
|
+
readonly gridUUID: string;
|
|
141
|
+
/**
|
|
142
|
+
* Environment Name passed in from the CLI
|
|
143
|
+
*/
|
|
144
|
+
readonly environmentName: string;
|
|
145
|
+
/**
|
|
146
|
+
* The grid provided backend for state storage
|
|
147
|
+
*/
|
|
148
|
+
readonly gridBackend?: HttpBackend;
|
|
149
|
+
constructor(scope: Construct, id: string, props: StackBaseProps);
|
|
150
|
+
/**
|
|
151
|
+
* Returns a Terraform-compatible unique identifier for a Terraform Element based
|
|
152
|
+
* on its path. This function finds the stackName of the parent stack (non-nested)
|
|
153
|
+
* to the construct, and the ids of the components in the construct path.
|
|
154
|
+
*
|
|
155
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
156
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
157
|
+
* from the path components, with or without user defined separators, and a hash suffix.
|
|
158
|
+
* If the resource name is longer than the maximum length, it is trimmed in the middle.
|
|
159
|
+
*
|
|
160
|
+
* @param tfElement The construct
|
|
161
|
+
* @param options Options for defining the unique resource name
|
|
162
|
+
* @returns a unique resource name based on the construct path
|
|
163
|
+
*/
|
|
164
|
+
uniqueResourceName(tfElement: TerraformElement | Node, options: UniqueResourceNameOptions): string;
|
|
165
|
+
/**
|
|
166
|
+
* Returns a Terraform-compatible unique identifier for a Terraform Element based
|
|
167
|
+
* on its path. This function finds the stackName of the parent stack (non-nested)
|
|
168
|
+
* to the construct, and the ids of the components in the construct path.
|
|
169
|
+
*
|
|
170
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
171
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
172
|
+
* from the path components, with or without user defined separators, and depends on the
|
|
173
|
+
* resource provider to generate the random suffix.
|
|
174
|
+
*
|
|
175
|
+
* If the resource name is longer than the maximum length - suffixLength, it is trimmed in the middle.
|
|
176
|
+
*
|
|
177
|
+
* @param tfElement The construct
|
|
178
|
+
* @param options Options for defining the unique resource name
|
|
179
|
+
* @returns a unique resource name based on the construct path
|
|
180
|
+
*/
|
|
181
|
+
uniqueResourceNamePrefix(tfElement: TerraformElement | Node, options: UniqueResourceNamePrefixOptions): string;
|
|
182
|
+
/** Resolve IResolvable in scope of this AwsStack */
|
|
183
|
+
resolve(obj: any, preparing?: boolean): any;
|
|
184
|
+
/**
|
|
185
|
+
* Convert an object, potentially containing tokens, to a JSON string
|
|
186
|
+
*/
|
|
187
|
+
toJsonString(obj: any, space?: number): string;
|
|
188
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.StackBase = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const cdktf_1 = require("cdktf");
|
|
7
|
+
const constructs_1 = require("constructs");
|
|
8
|
+
const private_1 = require("./private");
|
|
9
|
+
const TOKEN_RESOLVER = new cdktf_1.DefaultTokenResolver(new cdktf_1.StringConcat());
|
|
10
|
+
const TERRASTACK_SYMBOL = Symbol.for("terraconstructs/lib.Stack");
|
|
11
|
+
/**
|
|
12
|
+
* Base class for all TerraConstructs stacks
|
|
13
|
+
*
|
|
14
|
+
* Provides a reference to the grid UUID and environment name
|
|
15
|
+
*/
|
|
16
|
+
class StackBase extends cdktf_1.TerraformStack {
|
|
17
|
+
/**
|
|
18
|
+
* Return whether the given object is a Stack.
|
|
19
|
+
*
|
|
20
|
+
* attribute detection since as 'instanceof' potentially fails across Library releases.
|
|
21
|
+
*/
|
|
22
|
+
static isTerraStack(x) {
|
|
23
|
+
return x !== null && typeof x === "object" && TERRASTACK_SYMBOL in x;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Looks up the first stack scope in which `construct` is defined. Fails if there is no stack up the tree or the stack is not an IStack.
|
|
27
|
+
* @param construct The construct to start the search from.
|
|
28
|
+
*/
|
|
29
|
+
static ofTerraConstruct(construct) {
|
|
30
|
+
const s = cdktf_1.TerraformStack.of(construct);
|
|
31
|
+
if (StackBase.isTerraStack(s)) {
|
|
32
|
+
return s;
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Resource '${construct.constructor?.name}' at '${construct.node.path}' should be created in the scope of TerraConstruct IStack, but no IStack found`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns a unique identifier for a construct based on its path within
|
|
38
|
+
* a TerraformStack. see uniqueResourceName, but with no separator, maximum length 255 and allows
|
|
39
|
+
* "_" and "-" on top of alphanumerical characters.
|
|
40
|
+
*
|
|
41
|
+
* @param construct The construct
|
|
42
|
+
* @returns a unique resource name based on the construct path
|
|
43
|
+
*/
|
|
44
|
+
static uniqueId(construct) {
|
|
45
|
+
return StackBase.uniqueResourceName(construct, {
|
|
46
|
+
maxLength: 255,
|
|
47
|
+
// avoid https://github.com/aws/aws-cdk/issues/6421
|
|
48
|
+
allowedSpecialCharacters: "_-",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns a unique identifier for a construct based
|
|
53
|
+
* on its path within a TerraformStack.
|
|
54
|
+
*
|
|
55
|
+
* Throws if no TerraformStack is found within it's construct path.
|
|
56
|
+
*
|
|
57
|
+
* This function finds the id of the parent stack (non-nested)
|
|
58
|
+
* to the construct, and the ids of the components in the construct path.
|
|
59
|
+
*
|
|
60
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
61
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
62
|
+
* from the path components, with or without user defined separators, and a hash suffix.
|
|
63
|
+
* If the resource name is longer than the maximum length, it is trimmed in the middle.
|
|
64
|
+
*
|
|
65
|
+
* @param construct The construct
|
|
66
|
+
* @param options Options for defining the unique resource name
|
|
67
|
+
* @returns a unique resource name based on the construct path
|
|
68
|
+
*/
|
|
69
|
+
static uniqueResourceName(construct, options) {
|
|
70
|
+
const node = constructs_1.Construct.isConstruct(construct) ? construct.node : construct;
|
|
71
|
+
const stack = node.scopes
|
|
72
|
+
.reverse()
|
|
73
|
+
.find((component) => cdktf_1.TerraformStack.isStack(component));
|
|
74
|
+
if (!stack) {
|
|
75
|
+
throw new Error("Unable to calculate a unique id without a stack in the construct path");
|
|
76
|
+
}
|
|
77
|
+
const specIndex = node.scopes.indexOf(stack);
|
|
78
|
+
const componentsPath = node.scopes
|
|
79
|
+
.slice(specIndex)
|
|
80
|
+
.map((component) => component.node.id);
|
|
81
|
+
return (0, private_1.makeUniqueResourceName)(componentsPath, options);
|
|
82
|
+
}
|
|
83
|
+
constructor(scope, id, props) {
|
|
84
|
+
super(scope, id);
|
|
85
|
+
this.gridUUID = props.gridUUID;
|
|
86
|
+
this.environmentName = props.environmentName;
|
|
87
|
+
Object.defineProperty(this, TERRASTACK_SYMBOL, { value: true });
|
|
88
|
+
if (props.gridBackendConfig) {
|
|
89
|
+
this.gridBackend = new cdktf_1.HttpBackend(this, props.gridBackendConfig);
|
|
90
|
+
}
|
|
91
|
+
// Map construct tree dependencies to ITerraformDependables
|
|
92
|
+
// ref: https://github.com/hashicorp/terraform-cdk/issues/2727#issuecomment-1473321075
|
|
93
|
+
cdktf_1.Aspects.of(this).add(new private_1.TerraformDependencyAspect());
|
|
94
|
+
// Aspects are invoked in synth after stack has been prepared
|
|
95
|
+
// this should ensure any resources added during `prepareStack()` are included in the dependency tree
|
|
96
|
+
// ref: https://github.com/hashicorp/terraform-cdk/blob/v0.20.9/packages/cdktf/lib/synthesize/synthesizer.ts#L121
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns a Terraform-compatible unique identifier for a Terraform Element based
|
|
100
|
+
* on its path. This function finds the stackName of the parent stack (non-nested)
|
|
101
|
+
* to the construct, and the ids of the components in the construct path.
|
|
102
|
+
*
|
|
103
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
104
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
105
|
+
* from the path components, with or without user defined separators, and a hash suffix.
|
|
106
|
+
* If the resource name is longer than the maximum length, it is trimmed in the middle.
|
|
107
|
+
*
|
|
108
|
+
* @param tfElement The construct
|
|
109
|
+
* @param options Options for defining the unique resource name
|
|
110
|
+
* @returns a unique resource name based on the construct path
|
|
111
|
+
*/
|
|
112
|
+
uniqueResourceName(tfElement, options) {
|
|
113
|
+
const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
|
|
114
|
+
const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
|
|
115
|
+
? tfElement.cdktfStack
|
|
116
|
+
: this;
|
|
117
|
+
const stackIndex = node.scopes.indexOf(stack);
|
|
118
|
+
const componentsPath = node.scopes
|
|
119
|
+
.slice(stackIndex)
|
|
120
|
+
.map((component) => component.node.id);
|
|
121
|
+
return (0, private_1.makeUniqueResourceName)(componentsPath, options);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Returns a Terraform-compatible unique identifier for a Terraform Element based
|
|
125
|
+
* on its path. This function finds the stackName of the parent stack (non-nested)
|
|
126
|
+
* to the construct, and the ids of the components in the construct path.
|
|
127
|
+
*
|
|
128
|
+
* The user can define allowed special characters, a separator between the elements,
|
|
129
|
+
* and the maximum length of the resource name. The name includes a human readable portion rendered
|
|
130
|
+
* from the path components, with or without user defined separators, and depends on the
|
|
131
|
+
* resource provider to generate the random suffix.
|
|
132
|
+
*
|
|
133
|
+
* If the resource name is longer than the maximum length - suffixLength, it is trimmed in the middle.
|
|
134
|
+
*
|
|
135
|
+
* @param tfElement The construct
|
|
136
|
+
* @param options Options for defining the unique resource name
|
|
137
|
+
* @returns a unique resource name based on the construct path
|
|
138
|
+
*/
|
|
139
|
+
uniqueResourceNamePrefix(tfElement, options) {
|
|
140
|
+
const node = constructs_1.Construct.isConstruct(tfElement) ? tfElement.node : tfElement;
|
|
141
|
+
const stack = cdktf_1.TerraformElement.isTerraformElement(tfElement)
|
|
142
|
+
? tfElement.cdktfStack
|
|
143
|
+
: this;
|
|
144
|
+
const stackIndex = node.scopes.indexOf(stack);
|
|
145
|
+
const componentsPath = node.scopes
|
|
146
|
+
.slice(stackIndex)
|
|
147
|
+
.map((component) => component.node.id);
|
|
148
|
+
return (0, private_1.makeUniqueResourceNamePrefix)(componentsPath, options);
|
|
149
|
+
}
|
|
150
|
+
/** Resolve IResolvable in scope of this AwsStack */
|
|
151
|
+
resolve(obj, preparing = false) {
|
|
152
|
+
return cdktf_1.Tokenization.resolve(obj, {
|
|
153
|
+
scope: this,
|
|
154
|
+
preparing,
|
|
155
|
+
resolver: TOKEN_RESOLVER,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Convert an object, potentially containing tokens, to a JSON string
|
|
160
|
+
*/
|
|
161
|
+
toJsonString(obj, space) {
|
|
162
|
+
return cdktf_1.Lazy.stringValue({
|
|
163
|
+
produce: (ctx) => {
|
|
164
|
+
// First resolve Token objects with string concat... then JSON.stringify the resulting object
|
|
165
|
+
//
|
|
166
|
+
// unlike cloudformation, Terraform does not need an intrinsic wrapper?
|
|
167
|
+
// https://github.com/aws/aws-cdk/blob/8dca5079e1893122057f9e2c54c0da0ba644926e/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L73
|
|
168
|
+
// intrinsic wrapper without cross stack ref
|
|
169
|
+
// https://github.com/aws/aws-cdk/blob/14e4bc91ed5f0f8cb7c8ac9ee8a6de4da54e6585/packages/%40aws-cdk/core/lib/private/cloudformation-lang.ts#L50
|
|
170
|
+
const resolved = cdktf_1.Tokenization.resolve(obj, {
|
|
171
|
+
preparing: ctx.preparing,
|
|
172
|
+
scope: ctx.scope,
|
|
173
|
+
resolver: TOKEN_RESOLVER,
|
|
174
|
+
});
|
|
175
|
+
return JSON.stringify(resolved, undefined, space);
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.StackBase = StackBase;
|
|
181
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
182
|
+
StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.0.8" };
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUNBV2U7QUFDZiwyQ0FBeUQ7QUFDekQsdUNBSW1CO0FBRW5CLE1BQU0sY0FBYyxHQUFHLElBQUksNEJBQW9CLENBQUMsSUFBSSxvQkFBWSxFQUFFLENBQUMsQ0FBQztBQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQStHbEU7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBYztJQUNwRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFNO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksaUJBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBcUI7UUFDbEQsTUFBTSxDQUFDLEdBQUcsc0JBQWMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixhQUFhLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxnRkFBZ0YsQ0FDckosQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUE0QjtRQUNqRCxPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsU0FBUyxFQUFFLEdBQUc7WUFDZCxtREFBbUQ7WUFDbkQsd0JBQXdCLEVBQUUsSUFBSTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0ssTUFBTSxDQUFDLGtCQUFrQixDQUMvQixTQUE0QixFQUM1QixPQUFrQztRQUVsQyxNQUFNLElBQUksR0FBRyxzQkFBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQ3RCLE9BQU8sRUFBRTthQUNULElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUNiLHVFQUF1RSxDQUN4RSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQy9CLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBQSxnQ0FBc0IsRUFBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQWlCRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCwyREFBMkQ7UUFDM0Qsc0ZBQXNGO1FBQ3RGLGVBQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksbUNBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELDZEQUE2RDtRQUM3RCxxR0FBcUc7UUFDckcsaUhBQWlIO0lBQ25ILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ksa0JBQWtCLENBQ3ZCLFNBQWtDLEVBQ2xDLE9BQWtDO1FBRWxDLE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsd0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQzFELENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDL0IsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLGdDQUFzQixFQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ksd0JBQXdCLENBQzdCLFNBQWtDLEVBQ2xDLE9BQXdDO1FBRXhDLE1BQU0sSUFBSSxHQUFHLHNCQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsd0JBQWdCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQzFELENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDL0IsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNqQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLHNDQUE0QixFQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsb0RBQW9EO0lBQzdDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsU0FBUyxHQUFHLEtBQUs7UUFDeEMsT0FBTyxvQkFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDL0IsS0FBSyxFQUFFLElBQUk7WUFDWCxTQUFTO1lBQ1QsUUFBUSxFQUFFLGNBQWM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWSxDQUFDLEdBQVEsRUFBRSxLQUFjO1FBQzFDLE9BQU8sWUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQyxHQUFvQixFQUFFLEVBQUU7Z0JBQ2hDLDZGQUE2RjtnQkFDN0YsRUFBRTtnQkFDRix1RUFBdUU7Z0JBQ3ZFLCtJQUErSTtnQkFDL0ksNENBQTRDO2dCQUM1QywrSUFBK0k7Z0JBQy9JLE1BQU0sUUFBUSxHQUFHLG9CQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDekMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO2lCQUN6QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBNU1ILDhCQTZNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRlcnJhZm9ybVN0YWNrLFxuICBUZXJyYWZvcm1FbGVtZW50LFxuICBIdHRwQmFja2VuZENvbmZpZyxcbiAgSHR0cEJhY2tlbmQsXG4gIFRva2VuaXphdGlvbixcbiAgRGVmYXVsdFRva2VuUmVzb2x2ZXIsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy9yZXNvbHZhYmxlLnRzI0wxNzZcbiAgU3RyaW5nQ29uY2F0LCAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi90b2tlbnMvcmVzb2x2YWJsZS50cyNMMTU2XG4gIEFzcGVjdHMsXG4gIElSZXNvbHZlQ29udGV4dCxcbiAgTGF6eSxcbn0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZSxcbiAgbWFrZVVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCxcbn0gZnJvbSBcIi4vcHJpdmF0ZVwiO1xuXG5jb25zdCBUT0tFTl9SRVNPTFZFUiA9IG5ldyBEZWZhdWx0VG9rZW5SZXNvbHZlcihuZXcgU3RyaW5nQ29uY2F0KCkpO1xuXG5jb25zdCBURVJSQVNUQUNLX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJ0ZXJyYWNvbnN0cnVjdHMvbGliLlN0YWNrXCIpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi9uYW1lcy50c1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdW5pcXVlIHJlc291cmNlIG5hbWVfcHJlZml4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnNcbiAgZXh0ZW5kcyBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIExlbmd0aCBvZiB0aGUgcmFuZG9tIGdlbmVyYXRlZCBzdWZmaXggYWRkZWQgYnkgc29tZSBUZXJyYWZvcm0gcHJvdmlkZXJzLlxuICAgKlxuICAgKiBOT1RFOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzYyNVxuICAgKiBAZGVmYXVsdCAtIDI2XG4gICAqL1xuICByZWFkb25seSBzdWZmaXhMZW5ndGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVSZXNvdXJjZU5hbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMjU2XG4gICAqL1xuICByZWFkb25seSBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXBhcmF0b3IgdXNlZCBiZXR3ZWVuIHRoZSBwYXRoIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VwYXJhdG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdG8gYmUgYWRkZWQgaW50byB0aGUgc3RhY2sgbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb252ZXJ0IHRoZSByZXNvdXJjZSBuYW1lIHRvIGxvd2VyY2FzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbG93ZXJDYXNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUZXJyYUNvbnN0cnVjdCBVVUlEIHdpdGhpbiB0aGUgZ3JpZC5cbiAgICpcbiAgICogVVVJRCBpcyBnZW5lcmF0ZWQgYnkgdGhlIENMSSBhbmQgZW5zdXJlcyByZXNvdXJjZSBJZGVudGl0eVxuICAgKiBpcyBkZWNvdXBsZWQgZnJvbSByZXNvdXJjZSB0YWdnaW5nIGZvciBjb25zaXN0ZW5jeS5cbiAgICpcbiAgICogVVVJRCBtYXkgYmUgdXNlciBwcm92aWRlZCBmb3IgaW1wb3J0ZWQgcmVzb3VyY2VzXG4gICAqL1xuICByZWFkb25seSBncmlkVVVJRDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgbmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU3RvcmVzIHRoZSBzdGF0ZSB1c2luZyBhIHNpbXBsZSBSRVNUIGNsaWVudC5cbiAgICpcbiAgICogU3RhdGUgd2lsbCBiZSBmZXRjaGVkIHZpYSBHRVQsIHVwZGF0ZWQgdmlhIFBPU1QsIGFuZCBwdXJnZWQgd2l0aCBERUxFVEUuXG4gICAqIFRoZSBtZXRob2QgdXNlZCBmb3IgdXBkYXRpbmcgaXMgY29uZmlndXJhYmxlLlxuICAgKlxuICAgKiBUaGlzIGJhY2tlbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nLlxuICAgKiBXaGVuIGxvY2tpbmcgc3VwcG9ydCBpcyBlbmFibGVkIGl0IHdpbGwgdXNlIExPQ0sgYW5kIFVOTE9DSyByZXF1ZXN0cyBwcm92aWRpbmcgdGhlIGxvY2sgaW5mbyBpbiB0aGUgYm9keS5cbiAgICogVGhlIGVuZHBvaW50IHNob3VsZCByZXR1cm4gYSA0MjM6IExvY2tlZCBvciA0MDk6IENvbmZsaWN0IHdpdGggdGhlIGhvbGRpbmcgbG9jayBpbmZvIHdoZW5cbiAgICogaXQncyBhbHJlYWR5IHRha2VuLCAyMDA6IE9LIGZvciBzdWNjZXNzLiBBbnkgb3RoZXIgc3RhdHVzIHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci5cbiAgICogVGhlIElEIG9mIHRoZSBob2xkaW5nIGxvY2sgaW5mbyB3aWxsIGJlIGFkZGVkIGFzIGEgcXVlcnkgcGFyYW1ldGVyIHRvIHN0YXRlIHVwZGF0ZXMgcmVxdWVzdHMuXG4gICAqXG4gICAqIFJlYWQgbW9yZSBhYm91dCB0aGlzIGJhY2tlbmQgaW4gdGhlIFRlcnJhZm9ybSBkb2NzOlxuICAgKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9odHRwXG4gICAqL1xuICByZWFkb25seSBncmlkQmFja2VuZENvbmZpZz86IEh0dHBCYWNrZW5kQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGFjayBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZ3JpZEJhY2tlbmQ/OiBIdHRwQmFja2VuZDtcbiAgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nPzogYm9vbGVhbik6IGFueTtcbiAgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyxcbiAgKTogc3RyaW5nO1xuICB1bmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zLFxuICApOiBzdHJpbmc7XG4gIC8vIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIFRlcnJhQ29uc3RydWN0cyBzdGFja3NcbiAqXG4gKiBQcm92aWRlcyBhIHJlZmVyZW5jZSB0byB0aGUgZ3JpZCBVVUlEIGFuZCBlbnZpcm9ubWVudCBuYW1lXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGFja0Jhc2UgZXh0ZW5kcyBUZXJyYWZvcm1TdGFjayBpbXBsZW1lbnRzIElTdGFjayB7XG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgU3RhY2suXG4gICAqXG4gICAqIGF0dHJpYnV0ZSBkZXRlY3Rpb24gc2luY2UgYXMgJ2luc3RhbmNlb2YnIHBvdGVudGlhbGx5IGZhaWxzIGFjcm9zcyBMaWJyYXJ5IHJlbGVhc2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1RlcnJhU3RhY2soeDogYW55KTogeCBpcyBJU3RhY2sge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFRFUlJBU1RBQ0tfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIGZpcnN0IHN0YWNrIHNjb3BlIGluIHdoaWNoIGBjb25zdHJ1Y3RgIGlzIGRlZmluZWQuIEZhaWxzIGlmIHRoZXJlIGlzIG5vIHN0YWNrIHVwIHRoZSB0cmVlIG9yIHRoZSBzdGFjayBpcyBub3QgYW4gSVN0YWNrLlxuICAgKiBAcGFyYW0gY29uc3RydWN0IFRoZSBjb25zdHJ1Y3QgdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZlRlcnJhQ29uc3RydWN0KGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IElTdGFjayB7XG4gICAgY29uc3QgcyA9IFRlcnJhZm9ybVN0YWNrLm9mKGNvbnN0cnVjdCk7XG4gICAgaWYgKFN0YWNrQmFzZS5pc1RlcnJhU3RhY2socykpIHtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUmVzb3VyY2UgJyR7Y29uc3RydWN0LmNvbnN0cnVjdG9yPy5uYW1lfScgYXQgJyR7Y29uc3RydWN0Lm5vZGUucGF0aH0nIHNob3VsZCBiZSBjcmVhdGVkIGluIHRoZSBzY29wZSBvZiBUZXJyYUNvbnN0cnVjdCBJU3RhY2ssIGJ1dCBubyBJU3RhY2sgZm91bmRgLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNvbnN0cnVjdCBiYXNlZCBvbiBpdHMgcGF0aCB3aXRoaW5cbiAgICogYSBUZXJyYWZvcm1TdGFjay4gc2VlIHVuaXF1ZVJlc291cmNlTmFtZSwgYnV0IHdpdGggbm8gc2VwYXJhdG9yLCBtYXhpbXVtIGxlbmd0aCAyNTUgYW5kIGFsbG93c1xuICAgKiAgXCJfXCIgYW5kIFwiLVwiIG9uIHRvcCBvZiBhbHBoYW51bWVyaWNhbCBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RydWN0IFRoZSBjb25zdHJ1Y3RcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdW5pcXVlSWQoY29uc3RydWN0OiBJQ29uc3RydWN0IHwgTm9kZSkge1xuICAgIHJldHVybiBTdGFja0Jhc2UudW5pcXVlUmVzb3VyY2VOYW1lKGNvbnN0cnVjdCwge1xuICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICAvLyBhdm9pZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzY0MjFcbiAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCJfLVwiLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBjb25zdHJ1Y3QgYmFzZWRcbiAgICogb24gaXRzIHBhdGggd2l0aGluIGEgVGVycmFmb3JtU3RhY2suXG4gICAqXG4gICAqIFRocm93cyBpZiBubyBUZXJyYWZvcm1TdGFjayBpcyBmb3VuZCB3aXRoaW4gaXQncyBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgaWQgb2YgdGhlIHBhcmVudCBzdGFjayAobm9uLW5lc3RlZClcbiAgICogdG8gdGhlIGNvbnN0cnVjdCwgYW5kIHRoZSBpZHMgb2YgdGhlIGNvbXBvbmVudHMgaW4gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKlxuICAgKiBUaGUgdXNlciBjYW4gZGVmaW5lIGFsbG93ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzLCBhIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbGVtZW50cyxcbiAgICogYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgcmVzb3VyY2UgbmFtZS4gVGhlIG5hbWUgaW5jbHVkZXMgYSBodW1hbiByZWFkYWJsZSBwb3J0aW9uIHJlbmRlcmVkXG4gICAqIGZyb20gdGhlIHBhdGggY29tcG9uZW50cywgd2l0aCBvciB3aXRob3V0IHVzZXIgZGVmaW5lZCBzZXBhcmF0b3JzLCBhbmQgYSBoYXNoIHN1ZmZpeC5cbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHVuaXF1ZVJlc291cmNlTmFtZShcbiAgICBjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QgfCBOb2RlLFxuICAgIG9wdGlvbnM6IFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QoY29uc3RydWN0KSA/IGNvbnN0cnVjdC5ub2RlIDogY29uc3RydWN0O1xuICAgIGNvbnN0IHN0YWNrID0gbm9kZS5zY29wZXNcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maW5kKChjb21wb25lbnQpID0+IFRlcnJhZm9ybVN0YWNrLmlzU3RhY2soY29tcG9uZW50KSk7XG5cbiAgICBpZiAoIXN0YWNrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5hYmxlIHRvIGNhbGN1bGF0ZSBhIHVuaXF1ZSBpZCB3aXRob3V0IGEgc3RhY2sgaW4gdGhlIGNvbnN0cnVjdCBwYXRoXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNJbmRleCA9IG5vZGUuc2NvcGVzLmluZGV4T2Yoc3RhY2spO1xuICAgIGNvbnN0IGNvbXBvbmVudHNQYXRoID0gbm9kZS5zY29wZXNcbiAgICAgIC5zbGljZShzcGVjSW5kZXgpXG4gICAgICAubWFwKChjb21wb25lbnQpID0+IGNvbXBvbmVudC5ub2RlLmlkKTtcblxuICAgIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHNQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFjayB1bmlxdWUgZ3JpZCBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52aXJvbm1lbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBncmlkIHByb3ZpZGVkIGJhY2tlbmQgZm9yIHN0YXRlIHN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmlkQmFja2VuZD86IEh0dHBCYWNrZW5kO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja0Jhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5ncmlkVVVJRCA9IHByb3BzLmdyaWRVVUlEO1xuICAgIHRoaXMuZW52aXJvbm1lbnROYW1lID0gcHJvcHMuZW52aXJvbm1lbnROYW1lO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBURVJSQVNUQUNLX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICBpZiAocHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpIHtcbiAgICAgIHRoaXMuZ3JpZEJhY2tlbmQgPSBuZXcgSHR0cEJhY2tlbmQodGhpcywgcHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpO1xuICAgIH1cblxuICAgIC8vIE1hcCBjb25zdHJ1Y3QgdHJlZSBkZXBlbmRlbmNpZXMgdG8gSVRlcnJhZm9ybURlcGVuZGFibGVzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvaXNzdWVzLzI3MjcjaXNzdWVjb21tZW50LTE0NzMzMjEwNzVcbiAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCgpKTtcbiAgICAvLyBBc3BlY3RzIGFyZSBpbnZva2VkIGluIHN5bnRoIGFmdGVyIHN0YWNrIGhhcyBiZWVuIHByZXBhcmVkXG4gICAgLy8gdGhpcyBzaG91bGQgZW5zdXJlIGFueSByZXNvdXJjZXMgYWRkZWQgZHVyaW5nIGBwcmVwYXJlU3RhY2soKWAgYXJlIGluY2x1ZGVkIGluIHRoZSBkZXBlbmRlbmN5IHRyZWVcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3N5bnRoZXNpemUvc3ludGhlc2l6ZXIudHMjTDEyMVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBUZXJyYWZvcm0tY29tcGF0aWJsZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBUZXJyYWZvcm0gRWxlbWVudCBiYXNlZFxuICAgKiBvbiBpdHMgcGF0aC4gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3RhY2tOYW1lIG9mIHRoZSBwYXJlbnQgc3RhY2sgKG5vbi1uZXN0ZWQpXG4gICAqIHRvIHRoZSBjb25zdHJ1Y3QsIGFuZCB0aGUgaWRzIG9mIHRoZSBjb21wb25lbnRzIGluIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhlIHVzZXIgY2FuIGRlZmluZSBhbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycywgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZWxlbWVudHMsXG4gICAqIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHJlc291cmNlIG5hbWUuIFRoZSBuYW1lIGluY2x1ZGVzIGEgaHVtYW4gcmVhZGFibGUgcG9ydGlvbiByZW5kZXJlZFxuICAgKiBmcm9tIHRoZSBwYXRoIGNvbXBvbmVudHMsIHdpdGggb3Igd2l0aG91dCB1c2VyIGRlZmluZWQgc2VwYXJhdG9ycywgYW5kIGEgaGFzaCBzdWZmaXguXG4gICAqIElmIHRoZSByZXNvdXJjZSBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxlbmd0aCwgaXQgaXMgdHJpbW1lZCBpbiB0aGUgbWlkZGxlLlxuICAgKlxuICAgKiBAcGFyYW0gdGZFbGVtZW50IFRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lXG4gICAqIEByZXR1cm5zIGEgdW5pcXVlIHJlc291cmNlIG5hbWUgYmFzZWQgb24gdGhlIGNvbnN0cnVjdCBwYXRoXG4gICAqL1xuICBwdWJsaWMgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlID0gQ29uc3RydWN0LmlzQ29uc3RydWN0KHRmRWxlbWVudCkgPyB0ZkVsZW1lbnQubm9kZSA6IHRmRWxlbWVudDtcbiAgICBjb25zdCBzdGFjayA9IFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KHRmRWxlbWVudClcbiAgICAgID8gdGZFbGVtZW50LmNka3RmU3RhY2tcbiAgICAgIDogdGhpcztcbiAgICBjb25zdCBzdGFja0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHN0YWNrSW5kZXgpXG4gICAgICAubWFwKChjb21wb25lbnQpID0+IGNvbXBvbmVudC5ub2RlLmlkKTtcblxuICAgIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lKGNvbXBvbmVudHNQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgVGVycmFmb3JtLWNvbXBhdGlibGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgVGVycmFmb3JtIEVsZW1lbnQgYmFzZWRcbiAgICogb24gaXRzIHBhdGguIFRoaXMgZnVuY3Rpb24gZmluZHMgdGhlIHN0YWNrTmFtZSBvZiB0aGUgcGFyZW50IHN0YWNrIChub24tbmVzdGVkKVxuICAgKiB0byB0aGUgY29uc3RydWN0LCBhbmQgdGhlIGlkcyBvZiB0aGUgY29tcG9uZW50cyBpbiB0aGUgY29uc3RydWN0IHBhdGguXG4gICAqXG4gICAqIFRoZSB1c2VyIGNhbiBkZWZpbmUgYWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMsIGEgc2VwYXJhdG9yIGJldHdlZW4gdGhlIGVsZW1lbnRzLFxuICAgKiBhbmQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSByZXNvdXJjZSBuYW1lLiBUaGUgbmFtZSBpbmNsdWRlcyBhIGh1bWFuIHJlYWRhYmxlIHBvcnRpb24gcmVuZGVyZWRcbiAgICogZnJvbSB0aGUgcGF0aCBjb21wb25lbnRzLCB3aXRoIG9yIHdpdGhvdXQgdXNlciBkZWZpbmVkIHNlcGFyYXRvcnMsIGFuZCBkZXBlbmRzIG9uIHRoZVxuICAgKiByZXNvdXJjZSBwcm92aWRlciB0byBnZW5lcmF0ZSB0aGUgcmFuZG9tIHN1ZmZpeC5cbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhlIG1heGltdW0gbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBpdCBpcyB0cmltbWVkIGluIHRoZSBtaWRkbGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZkVsZW1lbnQgVGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZWZpbmluZyB0aGUgdW5pcXVlIHJlc291cmNlIG5hbWVcbiAgICogQHJldHVybnMgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZSBiYXNlZCBvbiB0aGUgY29uc3RydWN0IHBhdGhcbiAgICovXG4gIHB1YmxpYyB1bmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoXG4gICAgdGZFbGVtZW50OiBUZXJyYWZvcm1FbGVtZW50IHwgTm9kZSxcbiAgICBvcHRpb25zOiBVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXhPcHRpb25zLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QodGZFbGVtZW50KSA/IHRmRWxlbWVudC5ub2RlIDogdGZFbGVtZW50O1xuICAgIGNvbnN0IHN0YWNrID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQuY2RrdGZTdGFja1xuICAgICAgOiB0aGlzO1xuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcbiAgICBjb25zdCBjb21wb25lbnRzUGF0aCA9IG5vZGUuc2NvcGVzXG4gICAgICAuc2xpY2Uoc3RhY2tJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWVQcmVmaXgoY29tcG9uZW50c1BhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJlc29sdmUgSVJlc29sdmFibGUgaW4gc2NvcGUgb2YgdGhpcyBBd3NTdGFjayAqL1xuICBwdWJsaWMgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nID0gZmFsc2UpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgcHJlcGFyaW5nLFxuICAgICAgcmVzb2x2ZXI6IFRPS0VOX1JFU09MVkVSLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gb2JqZWN0LCBwb3RlbnRpYWxseSBjb250YWluaW5nIHRva2VucywgdG8gYSBKU09OIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHRvSnNvblN0cmluZyhvYmo6IGFueSwgc3BhY2U/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgIHByb2R1Y2U6IChjdHg6IElSZXNvbHZlQ29udGV4dCkgPT4ge1xuICAgICAgICAvLyBGaXJzdCByZXNvbHZlIFRva2VuIG9iamVjdHMgd2l0aCBzdHJpbmcgY29uY2F0Li4uIHRoZW4gSlNPTi5zdHJpbmdpZnkgdGhlIHJlc3VsdGluZyBvYmplY3RcbiAgICAgICAgLy9cbiAgICAgICAgLy8gdW5saWtlIGNsb3VkZm9ybWF0aW9uLCBUZXJyYWZvcm0gZG9lcyBub3QgbmVlZCBhbiBpbnRyaW5zaWMgd3JhcHBlcj9cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvOGRjYTUwNzllMTg5MzEyMjA1N2Y5ZTJjNTRjMGRhMGJhNjQ0OTI2ZS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNzNcbiAgICAgICAgLy8gaW50cmluc2ljIHdyYXBwZXIgd2l0aG91dCBjcm9zcyBzdGFjayByZWZcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMTRlNGJjOTFlZDVmMGY4Y2I3YzhhYzllZThhNmRlNGRhNTRlNjU4NS9wYWNrYWdlcy8lNDBhd3MtY2RrL2NvcmUvbGliL3ByaXZhdGUvY2xvdWRmb3JtYXRpb24tbGFuZy50cyNMNTBcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBUb2tlbml6YXRpb24ucmVzb2x2ZShvYmosIHtcbiAgICAgICAgICBwcmVwYXJpbmc6IGN0eC5wcmVwYXJpbmcsXG4gICAgICAgICAgc2NvcGU6IGN0eC5zY29wZSxcbiAgICAgICAgICByZXNvbHZlcjogVE9LRU5fUkVTT0xWRVIsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWQsIHVuZGVmaW5lZCwgc3BhY2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/lib/token.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An enum-like class that represents the result of comparing two Tokens.
|
|
3
|
+
* The return type of `Token.compareStrings`.
|
|
4
|
+
*/
|
|
5
|
+
export declare class TokenComparison {
|
|
6
|
+
/**
|
|
7
|
+
* This means we're certain the two components are NOT
|
|
8
|
+
* Tokens, and identical.
|
|
9
|
+
*/
|
|
10
|
+
static readonly SAME: TokenComparison;
|
|
11
|
+
/**
|
|
12
|
+
* This means we're certain the two components are NOT
|
|
13
|
+
* Tokens, and different.
|
|
14
|
+
*/
|
|
15
|
+
static readonly DIFFERENT: TokenComparison;
|
|
16
|
+
/** This means exactly one of the components is a Token. */
|
|
17
|
+
static readonly ONE_UNRESOLVED: TokenComparison;
|
|
18
|
+
/** This means both components are Tokens. */
|
|
19
|
+
static readonly BOTH_UNRESOLVED: TokenComparison;
|
|
20
|
+
private constructor();
|
|
21
|
+
}
|
|
22
|
+
/** Compare two strings that might contain Tokens with each other. */
|
|
23
|
+
export declare function tokenCompareStrings(possibleToken1: string, possibleToken2: string): TokenComparison;
|
|
24
|
+
/**
|
|
25
|
+
* Call the given function only if all given values are resolved
|
|
26
|
+
*
|
|
27
|
+
* Exported as a function since it will be used by TypeScript modules, but
|
|
28
|
+
* can't be exposed via JSII because of the generics.
|
|
29
|
+
*/
|
|
30
|
+
export declare function withResolved<A>(a: A, fn: (a: A) => void): void;
|
|
31
|
+
export declare function withResolved<A, B>(a: A, b: B, fn: (a: A, b: B) => void): void;
|
|
32
|
+
export declare function withResolved<A, B, C>(a: A, b: B, c: C, fn: (a: A, b: B, c: C) => void): void;
|
package/lib/token.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withResolved = exports.tokenCompareStrings = exports.TokenComparison = void 0;
|
|
4
|
+
const cdktf_1 = require("cdktf");
|
|
5
|
+
// https://github.com/aws/aws-cdk/blob/v2.150.0/packages/aws-cdk-lib/core/lib/token.ts
|
|
6
|
+
/**
|
|
7
|
+
* An enum-like class that represents the result of comparing two Tokens.
|
|
8
|
+
* The return type of `Token.compareStrings`.
|
|
9
|
+
*/
|
|
10
|
+
class TokenComparison {
|
|
11
|
+
constructor() { }
|
|
12
|
+
}
|
|
13
|
+
exports.TokenComparison = TokenComparison;
|
|
14
|
+
/**
|
|
15
|
+
* This means we're certain the two components are NOT
|
|
16
|
+
* Tokens, and identical.
|
|
17
|
+
*/
|
|
18
|
+
TokenComparison.SAME = new TokenComparison();
|
|
19
|
+
/**
|
|
20
|
+
* This means we're certain the two components are NOT
|
|
21
|
+
* Tokens, and different.
|
|
22
|
+
*/
|
|
23
|
+
TokenComparison.DIFFERENT = new TokenComparison();
|
|
24
|
+
/** This means exactly one of the components is a Token. */
|
|
25
|
+
TokenComparison.ONE_UNRESOLVED = new TokenComparison();
|
|
26
|
+
/** This means both components are Tokens. */
|
|
27
|
+
TokenComparison.BOTH_UNRESOLVED = new TokenComparison();
|
|
28
|
+
/** Compare two strings that might contain Tokens with each other. */
|
|
29
|
+
function tokenCompareStrings(possibleToken1, possibleToken2) {
|
|
30
|
+
const firstIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken1);
|
|
31
|
+
const secondIsUnresolved = cdktf_1.Token.isUnresolved(possibleToken2);
|
|
32
|
+
if (firstIsUnresolved && secondIsUnresolved) {
|
|
33
|
+
return TokenComparison.BOTH_UNRESOLVED;
|
|
34
|
+
}
|
|
35
|
+
if (firstIsUnresolved || secondIsUnresolved) {
|
|
36
|
+
return TokenComparison.ONE_UNRESOLVED;
|
|
37
|
+
}
|
|
38
|
+
return possibleToken1 === possibleToken2
|
|
39
|
+
? TokenComparison.SAME
|
|
40
|
+
: TokenComparison.DIFFERENT;
|
|
41
|
+
}
|
|
42
|
+
exports.tokenCompareStrings = tokenCompareStrings;
|
|
43
|
+
function withResolved(...args) {
|
|
44
|
+
if (args.length < 2) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const argArray = args.slice(0, args.length - 1);
|
|
48
|
+
if (argArray.some(cdktf_1.Token.isUnresolved)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
args[args.length - 1].apply(arguments, argArray);
|
|
52
|
+
}
|
|
53
|
+
exports.withResolved = withResolved;
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQThCO0FBQzlCLHNGQUFzRjtBQUV0Rjs7O0dBR0c7QUFDSCxNQUFhLGVBQWU7SUFtQjFCLGdCQUF1QixDQUFDOztBQW5CMUIsMENBb0JDO0FBbkJDOzs7R0FHRztBQUNvQixvQkFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFcEQ7OztHQUdHO0FBQ29CLHlCQUFTLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUV6RCwyREFBMkQ7QUFDcEMsOEJBQWMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBRTlELDZDQUE2QztBQUN0QiwrQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFLakUscUVBQXFFO0FBQ3JFLFNBQWdCLG1CQUFtQixDQUNqQyxjQUFzQixFQUN0QixjQUFzQjtJQUV0QixNQUFNLGlCQUFpQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxhQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTlELElBQUksaUJBQWlCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksaUJBQWlCLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sY0FBYyxLQUFLLGNBQWM7UUFDdEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0FBQ2hDLENBQUM7QUFqQkQsa0RBaUJDO0FBZ0JELFNBQWdCLFlBQVksQ0FBQyxHQUFHLElBQVc7SUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFURCxvQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi90b2tlbi50c1xuXG4vKipcbiAqIEFuIGVudW0tbGlrZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBjb21wYXJpbmcgdHdvIFRva2Vucy5cbiAqIFRoZSByZXR1cm4gdHlwZSBvZiBgVG9rZW4uY29tcGFyZVN0cmluZ3NgLlxuICovXG5leHBvcnQgY2xhc3MgVG9rZW5Db21wYXJpc29uIHtcbiAgLyoqXG4gICAqIFRoaXMgbWVhbnMgd2UncmUgY2VydGFpbiB0aGUgdHdvIGNvbXBvbmVudHMgYXJlIE5PVFxuICAgKiBUb2tlbnMsIGFuZCBpZGVudGljYWwuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNBTUUgPSBuZXcgVG9rZW5Db21wYXJpc29uKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgbWVhbnMgd2UncmUgY2VydGFpbiB0aGUgdHdvIGNvbXBvbmVudHMgYXJlIE5PVFxuICAgKiBUb2tlbnMsIGFuZCBkaWZmZXJlbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJRkZFUkVOVCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICAvKiogVGhpcyBtZWFucyBleGFjdGx5IG9uZSBvZiB0aGUgY29tcG9uZW50cyBpcyBhIFRva2VuLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9ORV9VTlJFU09MVkVEID0gbmV3IFRva2VuQ29tcGFyaXNvbigpO1xuXG4gIC8qKiBUaGlzIG1lYW5zIGJvdGggY29tcG9uZW50cyBhcmUgVG9rZW5zLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPVEhfVU5SRVNPTFZFRCA9IG5ldyBUb2tlbkNvbXBhcmlzb24oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqIENvbXBhcmUgdHdvIHN0cmluZ3MgdGhhdCBtaWdodCBjb250YWluIFRva2VucyB3aXRoIGVhY2ggb3RoZXIuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5Db21wYXJlU3RyaW5ncyhcbiAgcG9zc2libGVUb2tlbjE6IHN0cmluZyxcbiAgcG9zc2libGVUb2tlbjI6IHN0cmluZyxcbik6IFRva2VuQ29tcGFyaXNvbiB7XG4gIGNvbnN0IGZpcnN0SXNVbnJlc29sdmVkID0gVG9rZW4uaXNVbnJlc29sdmVkKHBvc3NpYmxlVG9rZW4xKTtcbiAgY29uc3Qgc2Vjb25kSXNVbnJlc29sdmVkID0gVG9rZW4uaXNVbnJlc29sdmVkKHBvc3NpYmxlVG9rZW4yKTtcblxuICBpZiAoZmlyc3RJc1VucmVzb2x2ZWQgJiYgc2Vjb25kSXNVbnJlc29sdmVkKSB7XG4gICAgcmV0dXJuIFRva2VuQ29tcGFyaXNvbi5CT1RIX1VOUkVTT0xWRUQ7XG4gIH1cbiAgaWYgKGZpcnN0SXNVbnJlc29sdmVkIHx8IHNlY29uZElzVW5yZXNvbHZlZCkge1xuICAgIHJldHVybiBUb2tlbkNvbXBhcmlzb24uT05FX1VOUkVTT0xWRUQ7XG4gIH1cblxuICByZXR1cm4gcG9zc2libGVUb2tlbjEgPT09IHBvc3NpYmxlVG9rZW4yXG4gICAgPyBUb2tlbkNvbXBhcmlzb24uU0FNRVxuICAgIDogVG9rZW5Db21wYXJpc29uLkRJRkZFUkVOVDtcbn1cblxuLyoqXG4gKiBDYWxsIHRoZSBnaXZlbiBmdW5jdGlvbiBvbmx5IGlmIGFsbCBnaXZlbiB2YWx1ZXMgYXJlIHJlc29sdmVkXG4gKlxuICogRXhwb3J0ZWQgYXMgYSBmdW5jdGlvbiBzaW5jZSBpdCB3aWxsIGJlIHVzZWQgYnkgVHlwZVNjcmlwdCBtb2R1bGVzLCBidXRcbiAqIGNhbid0IGJlIGV4cG9zZWQgdmlhIEpTSUkgYmVjYXVzZSBvZiB0aGUgZ2VuZXJpY3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QT4oYTogQSwgZm46IChhOiBBKSA9PiB2b2lkKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QSwgQj4oYTogQSwgYjogQiwgZm46IChhOiBBLCBiOiBCKSA9PiB2b2lkKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb2x2ZWQ8QSwgQiwgQz4oXG4gIGE6IEEsXG4gIGI6IEIsXG4gIGM6IEMsXG4gIGZuOiAoYTogQSwgYjogQiwgYzogQykgPT4gdm9pZCxcbik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc29sdmVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYXJnQXJyYXkgPSBhcmdzLnNsaWNlKDAsIGFyZ3MubGVuZ3RoIC0gMSk7XG4gIGlmIChhcmdBcnJheS5zb21lKFRva2VuLmlzVW5yZXNvbHZlZCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXJnc1thcmdzLmxlbmd0aCAtIDFdLmFwcGx5KGFyZ3VtZW50cywgYXJnQXJyYXkpO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Camel Case
|
|
2
|
+
|
|
3
|
+
[![NPM version][npm-image]][npm-url]
|
|
4
|
+
[![NPM downloads][downloads-image]][downloads-url]
|
|
5
|
+
[![Bundle size][bundlephobia-image]][bundlephobia-url]
|
|
6
|
+
|
|
7
|
+
> Transform into a string with the separator denoted by the next word capitalized.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
npm install camel-case --save
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import { camelCase } from "camel-case";
|
|
19
|
+
|
|
20
|
+
camelCase("string"); //=> "string"
|
|
21
|
+
camelCase("dot.case"); //=> "dotCase"
|
|
22
|
+
camelCase("PascalCase"); //=> "pascalCase"
|
|
23
|
+
camelCase("version 1.2.10"); //=> "version_1_2_10"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The function also accepts [`options`](https://github.com/blakeembrey/change-case#options).
|
|
27
|
+
|
|
28
|
+
### Merge Numbers
|
|
29
|
+
|
|
30
|
+
If you'd like to remove the behavior prefixing `_` before numbers, you can use `camelCaseTransformMerge`:
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import { camelCaseTransformMerge } from "camel-case";
|
|
34
|
+
|
|
35
|
+
camelCase("version 12", { transform: camelCaseTransformMerge }); //=> "version12"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## License
|
|
39
|
+
|
|
40
|
+
MIT
|
|
41
|
+
|
|
42
|
+
[npm-image]: https://img.shields.io/npm/v/camel-case.svg?style=flat
|
|
43
|
+
[npm-url]: https://npmjs.org/package/camel-case
|
|
44
|
+
[downloads-image]: https://img.shields.io/npm/dm/camel-case.svg?style=flat
|
|
45
|
+
[downloads-url]: https://npmjs.org/package/camel-case
|
|
46
|
+
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/camel-case.svg
|
|
47
|
+
[bundlephobia-url]: https://bundlephobia.com/result?p=camel-case
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Options } from "pascal-case";
|
|
2
|
+
export { Options };
|
|
3
|
+
export declare function camelCaseTransform(input: string, index: number): string;
|
|
4
|
+
export declare function camelCaseTransformMerge(input: string, index: number): string;
|
|
5
|
+
export declare function camelCase(input: string, options?: Options): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.camelCase = exports.camelCaseTransformMerge = exports.camelCaseTransform = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var pascal_case_1 = require("pascal-case");
|
|
6
|
+
function camelCaseTransform(input, index) {
|
|
7
|
+
if (index === 0)
|
|
8
|
+
return input.toLowerCase();
|
|
9
|
+
return pascal_case_1.pascalCaseTransform(input, index);
|
|
10
|
+
}
|
|
11
|
+
exports.camelCaseTransform = camelCaseTransform;
|
|
12
|
+
function camelCaseTransformMerge(input, index) {
|
|
13
|
+
if (index === 0)
|
|
14
|
+
return input.toLowerCase();
|
|
15
|
+
return pascal_case_1.pascalCaseTransformMerge(input);
|
|
16
|
+
}
|
|
17
|
+
exports.camelCaseTransformMerge = camelCaseTransformMerge;
|
|
18
|
+
function camelCase(input, options) {
|
|
19
|
+
if (options === void 0) { options = {}; }
|
|
20
|
+
return pascal_case_1.pascalCase(input, tslib_1.__assign({ transform: camelCaseTransform }, options));
|
|
21
|
+
}
|
|
22
|
+
exports.camelCase = camelCase;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAKqB;AAIrB,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAa;IAC7D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,iCAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAHD,gDAGC;AAED,SAAgB,uBAAuB,CAAC,KAAa,EAAE,KAAa;IAClE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,sCAAwB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAHD,0DAGC;AAED,SAAgB,SAAS,CAAC,KAAa,EAAE,OAAqB;IAArB,wBAAA,EAAA,YAAqB;IAC5D,OAAO,wBAAU,CAAC,KAAK,qBACrB,SAAS,EAAE,kBAAkB,IAC1B,OAAO,EACV,CAAC;AACL,CAAC;AALD,8BAKC","sourcesContent":["import {\n pascalCase,\n pascalCaseTransform,\n pascalCaseTransformMerge,\n Options,\n} from \"pascal-case\";\n\nexport { Options };\n\nexport function camelCaseTransform(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\n\nexport function camelCaseTransformMerge(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\n\nexport function camelCase(input: string, options: Options = {}) {\n return pascalCase(input, {\n transform: camelCaseTransform,\n ...options,\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var _1 = require(".");
|
|
4
|
+
var TEST_CASES = [
|
|
5
|
+
["", ""],
|
|
6
|
+
["test", "test"],
|
|
7
|
+
["test string", "testString"],
|
|
8
|
+
["Test String", "testString"],
|
|
9
|
+
["TestV2", "testV2"],
|
|
10
|
+
["_foo_bar_", "fooBar"],
|
|
11
|
+
["version 1.2.10", "version_1_2_10"],
|
|
12
|
+
["version 1.21.0", "version_1_21_0"],
|
|
13
|
+
["version 1.2.10", "version1210", { transform: _1.camelCaseTransformMerge }],
|
|
14
|
+
];
|
|
15
|
+
describe("camel case", function () {
|
|
16
|
+
var _loop_1 = function (input, result, options) {
|
|
17
|
+
it(input + " -> " + result, function () {
|
|
18
|
+
expect(_1.camelCase(input, options)).toEqual(result);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
for (var _i = 0, TEST_CASES_1 = TEST_CASES; _i < TEST_CASES_1.length; _i++) {
|
|
22
|
+
var _a = TEST_CASES_1[_i], input = _a[0], result = _a[1], options = _a[2];
|
|
23
|
+
_loop_1(input, result, options);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":";;AAAA,sBAAgE;AAEhE,IAAM,UAAU,GAAiC;IAC/C,CAAC,EAAE,EAAE,EAAE,CAAC;IACR,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,0BAAuB,EAAE,CAAC;CAC1E,CAAC;AAEF,QAAQ,CAAC,YAAY,EAAE;4BACT,KAAK,EAAE,MAAM,EAAE,OAAO;QAChC,EAAE,CAAI,KAAK,YAAO,MAAQ,EAAE;YAC1B,MAAM,CAAC,YAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;;IAHL,KAAuC,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;QAAtC,IAAA,qBAAwB,EAAvB,KAAK,QAAA,EAAE,MAAM,QAAA,EAAE,OAAO,QAAA;gBAAtB,KAAK,EAAE,MAAM,EAAE,OAAO;KAIjC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import { camelCase, camelCaseTransformMerge, Options } from \".\";\n\nconst TEST_CASES: [string, string, Options?][] = [\n [\"\", \"\"],\n [\"test\", \"test\"],\n [\"test string\", \"testString\"],\n [\"Test String\", \"testString\"],\n [\"TestV2\", \"testV2\"],\n [\"_foo_bar_\", \"fooBar\"],\n [\"version 1.2.10\", \"version_1_2_10\"],\n [\"version 1.21.0\", \"version_1_21_0\"],\n [\"version 1.2.10\", \"version1210\", { transform: camelCaseTransformMerge }],\n];\n\ndescribe(\"camel case\", () => {\n for (const [input, result, options] of TEST_CASES) {\n it(`${input} -> ${result}`, () => {\n expect(camelCase(input, options)).toEqual(result);\n });\n }\n});\n"]}
|