terraconstructs 0.0.25 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +83939 -55116
- package/.mise.toml +2 -2
- package/.nvmrc +1 -1
- package/LICENSE +202 -674
- package/go.mod +1 -1
- package/go.sum +2 -2
- package/lib/asset-manager.d.ts +23 -0
- package/lib/asset-manager.js +3 -0
- package/lib/asset-staging.d.ts +178 -0
- package/lib/asset-staging.js +589 -0
- package/lib/assets.d.ts +359 -0
- package/lib/assets.js +55 -0
- package/lib/aws/arn.js +16 -15
- package/lib/aws/aws-asset-manager.d.ts +91 -0
- package/lib/aws/aws-asset-manager.js +244 -0
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.d.ts +37 -0
- package/lib/aws/aws-stack.js +30 -9
- package/lib/aws/aws-tags.js +2 -2
- package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
- package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
- package/lib/aws/cloudwatch/actions/index.js +4 -4
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
- package/lib/aws/cloudwatch/actions/sns.js +23 -0
- package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
- package/lib/aws/cloudwatch/actions/ssm.js +104 -0
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +1 -1
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +1 -1
- package/lib/aws/cloudwatch/metric.js +2 -2
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +1 -1
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/access-log.d.ts +478 -0
- package/lib/aws/compute/access-log.js +649 -0
- package/lib/aws/compute/activity.js +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +1 -1
- package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
- package/lib/aws/compute/alb/application-listener-rule.js +1 -1
- package/lib/aws/compute/alb/application-listener.js +1 -1
- package/lib/aws/compute/alb/application-load-balancer.js +1 -1
- package/lib/aws/compute/alb/application-target-group.js +1 -1
- package/lib/aws/compute/alb/conditions.js +1 -1
- package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
- package/lib/aws/compute/alb/trust-store.js +1 -1
- package/lib/aws/compute/api-definition.d.ts +106 -0
- package/lib/aws/compute/api-definition.js +200 -0
- package/lib/aws/compute/api-key.d.ts +184 -0
- package/lib/aws/compute/api-key.js +197 -0
- package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
- package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
- package/lib/aws/compute/apigateway-util.d.ts +31 -0
- package/lib/aws/compute/apigateway-util.js +152 -0
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
- package/lib/aws/compute/authorizer.d.ts +35 -0
- package/lib/aws/compute/authorizer.js +28 -0
- package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
- package/lib/aws/compute/authorizers/identity-source.js +61 -0
- package/lib/aws/compute/authorizers/index.d.ts +2 -0
- package/lib/aws/compute/authorizers/index.js +20 -0
- package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
- package/lib/aws/compute/authorizers/lambda.js +208 -0
- package/lib/aws/compute/base-path-mapping.d.ts +49 -0
- package/lib/aws/compute/base-path-mapping.js +52 -0
- package/lib/aws/compute/base-scalable-attribute.js +3 -3
- package/lib/aws/compute/bastion-host.js +1 -1
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +2 -2
- package/lib/aws/compute/client-vpn-route.js +2 -2
- package/lib/aws/compute/code.d.ts +415 -0
- package/lib/aws/compute/code.js +424 -0
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/cors.d.ts +102 -0
- package/lib/aws/compute/cors.js +33 -0
- package/lib/aws/compute/deployment.d.ts +83 -0
- package/lib/aws/compute/deployment.js +158 -0
- package/lib/aws/compute/domain-name.d.ts +153 -0
- package/lib/aws/compute/domain-name.js +158 -0
- package/lib/aws/compute/event-invoke-config.d.ts +2 -2
- package/lib/aws/compute/event-invoke-config.js +4 -4
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.d.ts +2 -2
- package/lib/aws/compute/event-source-mapping.js +9 -7
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +3 -2
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.d.ts +2 -0
- package/lib/aws/compute/function-alias.js +14 -2
- package/lib/aws/compute/function-base.d.ts +23 -0
- package/lib/aws/compute/function-base.js +4 -4
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
- package/lib/aws/compute/function-nodejs/bundling.js +405 -0
- package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
- package/lib/aws/compute/function-nodejs/function.js +175 -0
- package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
- package/lib/aws/compute/function-nodejs/index.js +19 -0
- package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
- package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
- package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
- package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
- package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
- package/lib/aws/compute/function-nodejs/types.js +81 -0
- package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
- package/lib/aws/compute/function-nodejs/util.js +202 -0
- package/lib/aws/compute/function-url.d.ts +2 -2
- package/lib/aws/compute/function-url.js +4 -4
- package/lib/aws/compute/function.d.ts +43 -5
- package/lib/aws/compute/function.js +106 -18
- package/lib/aws/compute/gateway-response.d.ts +157 -0
- package/lib/aws/compute/gateway-response.js +156 -0
- package/lib/aws/compute/handler.d.ts +10 -0
- package/lib/aws/compute/handler.js +20 -0
- package/lib/aws/compute/index.d.ts +27 -0
- package/lib/aws/compute/index.js +29 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.js +1 -1
- package/lib/aws/compute/integration.d.ts +311 -0
- package/lib/aws/compute/integration.js +165 -0
- package/lib/aws/compute/integrations/aws.d.ts +72 -0
- package/lib/aws/compute/integrations/aws.js +55 -0
- package/lib/aws/compute/integrations/http.d.ts +37 -0
- package/lib/aws/compute/integrations/http.js +35 -0
- package/lib/aws/compute/integrations/index.d.ts +6 -0
- package/lib/aws/compute/integrations/index.js +24 -0
- package/lib/aws/compute/integrations/lambda.d.ts +40 -0
- package/lib/aws/compute/integrations/lambda.js +73 -0
- package/lib/aws/compute/integrations/mock.d.ts +16 -0
- package/lib/aws/compute/integrations/mock.js +30 -0
- package/lib/aws/compute/integrations/request-context.d.ts +144 -0
- package/lib/aws/compute/integrations/request-context.js +3 -0
- package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
- package/lib/aws/compute/integrations/stepfunctions.js +268 -0
- package/lib/aws/compute/ip-addresses.js +2 -2
- package/lib/aws/compute/ipam.js +1 -1
- package/lib/aws/compute/json-schema.d.ts +75 -0
- package/lib/aws/compute/json-schema.js +23 -0
- package/lib/aws/compute/key-pair.js +1 -1
- package/lib/aws/compute/lambda-api.d.ts +46 -0
- package/lib/aws/compute/lambda-api.js +64 -0
- package/lib/aws/compute/launch-template.js +2 -2
- package/lib/aws/compute/lb-shared/base-listener.js +1 -1
- package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
- package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.js +3 -3
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +8 -8
- package/lib/aws/compute/method.d.ts +219 -0
- package/lib/aws/compute/method.js +396 -0
- package/lib/aws/compute/methodresponse.d.ts +28 -0
- package/lib/aws/compute/methodresponse.js +3 -0
- package/lib/aws/compute/model.d.ts +143 -0
- package/lib/aws/compute/model.js +141 -0
- package/lib/aws/compute/nat.js +5 -5
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.js +3 -3
- package/lib/aws/compute/nlb/network-listener-action.js +1 -1
- package/lib/aws/compute/nlb/network-listener.js +1 -1
- package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
- package/lib/aws/compute/nlb/network-target-group.js +1 -1
- package/lib/aws/compute/peer.js +1 -1
- package/lib/aws/compute/placement-group.js +1 -1
- package/lib/aws/compute/port.js +1 -1
- package/lib/aws/compute/prefix-list.js +1 -1
- package/lib/aws/compute/requestvalidator.d.ts +50 -0
- package/lib/aws/compute/requestvalidator.js +59 -0
- package/lib/aws/compute/resource.d.ts +223 -0
- package/lib/aws/compute/resource.js +316 -0
- package/lib/aws/compute/restapi.d.ts +510 -0
- package/lib/aws/compute/restapi.js +626 -0
- package/lib/aws/compute/route.js +8 -8
- package/lib/aws/compute/runtime.d.ts +282 -0
- package/lib/aws/compute/runtime.js +337 -0
- package/lib/aws/compute/scalable-target.js +3 -3
- package/lib/aws/compute/schedule.js +3 -3
- package/lib/aws/compute/security-group.js +1 -1
- package/lib/aws/compute/stage.d.ts +350 -0
- package/lib/aws/compute/stage.js +304 -0
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.js +4 -4
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +1 -1
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +1 -1
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/step-scaling-action.js +3 -3
- package/lib/aws/compute/step-scaling-policy.js +1 -1
- package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
- package/lib/aws/compute/stepfunctions-api.js +39 -0
- package/lib/aws/compute/subnet-v2.js +2 -2
- package/lib/aws/compute/subnet.js +1 -1
- package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/usage-plan.d.ts +194 -0
- package/lib/aws/compute/usage-plan.js +174 -0
- package/lib/aws/compute/user-data.js +3 -3
- package/lib/aws/compute/volume.js +2 -2
- package/lib/aws/compute/vpc-endpoint-service.js +1 -1
- package/lib/aws/compute/vpc-endpoint.js +6 -6
- package/lib/aws/compute/vpc-flow-logs.js +4 -4
- package/lib/aws/compute/vpc-link.d.ts +104 -0
- package/lib/aws/compute/vpc-link.js +137 -0
- package/lib/aws/compute/vpc-v2-base.js +1 -1
- package/lib/aws/compute/vpc-v2.js +2 -2
- package/lib/aws/compute/vpc.js +4 -4
- package/lib/aws/compute/vpn.js +3 -3
- package/lib/aws/edge/certificate.js +1 -1
- package/lib/aws/edge/distribution.js +3 -3
- package/lib/aws/edge/dns-alias-record-targets.js +3 -3
- package/lib/aws/edge/dns-record.js +13 -13
- package/lib/aws/edge/dns-zone.js +1 -1
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +3 -3
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +2 -2
- package/lib/aws/iam/group.js +1 -1
- package/lib/aws/iam/instance-profile.js +1 -1
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +1 -1
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement.js +1 -1
- package/lib/aws/iam/policy.js +1 -1
- package/lib/aws/iam/principals.js +20 -20
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.js +2 -2
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/user.js +5 -5
- package/lib/aws/index.d.ts +1 -0
- package/lib/aws/index.js +4 -1
- package/lib/aws/network/simple-ipv4-vpc.js +1 -1
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.js +4 -4
- package/lib/aws/notify/archive.js +1 -1
- package/lib/aws/notify/connection.js +3 -3
- package/lib/aws/notify/event-bus.js +3 -3
- package/lib/aws/notify/event-pattern.js +1 -1
- package/lib/aws/notify/input.js +2 -2
- package/lib/aws/notify/kinesis-stream.js +1 -1
- package/lib/aws/notify/notification-rule.d.ts +1 -1
- package/lib/aws/notify/notification-rule.js +5 -5
- package/lib/aws/notify/policy.js +1 -1
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +1 -1
- package/lib/aws/notify/schedule.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.js +4 -4
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +1 -1
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +1 -1
- package/lib/aws/notify/subscriptions/url.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/topic-base.js +1 -1
- package/lib/aws/notify/topic.js +6 -5
- package/lib/aws/partition.d.ts +21 -0
- package/lib/aws/partition.js +42 -0
- package/lib/aws/storage/assets/image-asset.d.ts +379 -0
- package/lib/aws/storage/assets/image-asset.js +247 -0
- package/lib/aws/storage/assets/index.d.ts +2 -0
- package/lib/aws/storage/assets/index.js +21 -0
- package/lib/aws/storage/assets/s3.d.ts +125 -0
- package/lib/aws/storage/assets/s3.js +80 -0
- package/lib/aws/storage/auth-token.d.ts +25 -0
- package/lib/aws/storage/auth-token.js +54 -0
- package/lib/aws/storage/billing.js +1 -1
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.d.ts +1 -1
- package/lib/aws/storage/bucket-source.js +4 -4
- package/lib/aws/storage/bucket.d.ts +14 -6
- package/lib/aws/storage/bucket.js +48 -40
- package/lib/aws/storage/capacity.js +1 -1
- package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
- package/lib/aws/storage/ecr-lifecycle.js +23 -0
- package/lib/aws/storage/ecr-repository.d.ts +446 -0
- package/lib/aws/storage/ecr-repository.js +685 -0
- package/lib/aws/storage/encryption.js +1 -1
- package/lib/aws/storage/index.d.ts +5 -0
- package/lib/aws/storage/index.js +10 -3
- package/lib/aws/storage/location.d.ts +17 -0
- package/lib/aws/storage/location.js +4 -0
- package/lib/aws/storage/notification-targets/function.js +1 -1
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.js +1 -1
- package/lib/aws/storage/parameter.js +2 -2
- package/lib/aws/storage/table.js +3 -3
- package/lib/aws/storage/util.d.ts +8 -20
- package/lib/aws/storage/util.js +56 -34
- package/lib/aws/util.d.ts +1 -0
- package/lib/aws/util.js +6 -1
- package/lib/bundling.d.ts +434 -0
- package/lib/bundling.js +368 -0
- package/lib/construct-base.js +2 -2
- package/lib/duration.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/fs/copy.d.ts +2 -0
- package/lib/fs/copy.js +57 -0
- package/lib/fs/fingerprint.d.ts +21 -0
- package/lib/fs/fingerprint.js +165 -0
- package/lib/fs/ignore.d.ts +107 -0
- package/lib/fs/ignore.js +190 -0
- package/lib/fs/index.d.ts +47 -0
- package/lib/fs/index.js +88 -0
- package/lib/fs/options.d.ts +110 -0
- package/lib/fs/options.js +60 -0
- package/lib/fs/utils.d.ts +11 -0
- package/lib/fs/utils.js +34 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +7 -1
- package/lib/private/asset-staging.d.ts +83 -0
- package/lib/private/asset-staging.js +205 -0
- package/lib/private/cache.d.ts +17 -0
- package/lib/private/cache.js +35 -0
- package/lib/private/jsii-deprecated.d.ts +2 -0
- package/lib/private/jsii-deprecated.js +19 -0
- package/lib/private/unique-resource-name.js +3 -2
- package/lib/size.js +1 -1
- package/lib/stack-base.js +1 -1
- package/lib/terra-func.js +2 -2
- package/lib/time-zone.js +1 -1
- package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
- package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
- package/node_modules/@balena/dockerignore/README.md +261 -0
- package/node_modules/@balena/dockerignore/ignore.js +363 -0
- package/node_modules/@balena/dockerignore/index.d.ts +45 -0
- package/node_modules/@balena/dockerignore/package.json +49 -0
- package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/balanced-match/README.md +97 -0
- package/node_modules/balanced-match/index.js +62 -0
- package/node_modules/balanced-match/package.json +48 -0
- package/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/concat-map/index.js +13 -0
- package/node_modules/concat-map/package.json +43 -0
- package/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/ignore/LICENSE-MIT +21 -0
- package/node_modules/ignore/README.md +412 -0
- package/node_modules/ignore/index.d.ts +61 -0
- package/node_modules/ignore/index.js +636 -0
- package/node_modules/ignore/legacy.js +559 -0
- package/node_modules/ignore/package.json +74 -0
- package/node_modules/minimatch/LICENSE +15 -0
- package/node_modules/minimatch/README.md +230 -0
- package/node_modules/minimatch/minimatch.js +947 -0
- package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
- package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
- package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
- package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
- package/node_modules/minimatch/package.json +33 -0
- package/package.json +14 -5
- package/lib/aws/compute/function-nodejs.d.ts +0 -55
- package/lib/aws/compute/function-nodejs.js +0 -70
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { Method } from "./method";
|
|
2
|
+
import { IVpcLink } from "./vpc-link";
|
|
3
|
+
import { Duration } from "../../duration";
|
|
4
|
+
import * as iam from "../iam";
|
|
5
|
+
export interface IntegrationOptions {
|
|
6
|
+
/**
|
|
7
|
+
* A list of request parameters whose values are to be cached. It determines
|
|
8
|
+
* request parameters that will make it into the cache key.
|
|
9
|
+
*/
|
|
10
|
+
readonly cacheKeyParameters?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* An API-specific tag group of related cached parameters.
|
|
13
|
+
*/
|
|
14
|
+
readonly cacheNamespace?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Specifies how to handle request payload content type conversions.
|
|
17
|
+
*
|
|
18
|
+
* @default none if this property isn't defined, the request payload is passed
|
|
19
|
+
* through from the method request to the integration request without
|
|
20
|
+
* modification, provided that the `passthroughBehaviors` property is
|
|
21
|
+
* configured to support payload pass-through.
|
|
22
|
+
*/
|
|
23
|
+
readonly contentHandling?: ContentHandling;
|
|
24
|
+
/**
|
|
25
|
+
* An IAM role that API Gateway assumes.
|
|
26
|
+
*
|
|
27
|
+
* Mutually exclusive with `credentialsPassThrough`.
|
|
28
|
+
*
|
|
29
|
+
* @default A role is not assumed
|
|
30
|
+
*/
|
|
31
|
+
readonly credentialsRole?: iam.IRole;
|
|
32
|
+
/**
|
|
33
|
+
* Requires that the caller's identity be passed through from the request.
|
|
34
|
+
*
|
|
35
|
+
* @default Caller identity is not passed through
|
|
36
|
+
*/
|
|
37
|
+
readonly credentialsPassthrough?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Specifies the pass-through behavior for incoming requests based on the
|
|
40
|
+
* Content-Type header in the request, and the available mapping templates
|
|
41
|
+
* specified as the requestTemplates property on the Integration resource.
|
|
42
|
+
* There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and
|
|
43
|
+
* NEVER.
|
|
44
|
+
*/
|
|
45
|
+
readonly passthroughBehavior?: PassthroughBehavior;
|
|
46
|
+
/**
|
|
47
|
+
* The request parameters that API Gateway sends with the backend request.
|
|
48
|
+
* Specify request parameters as key-value pairs (string-to-string
|
|
49
|
+
* mappings), with a destination as the key and a source as the value.
|
|
50
|
+
*
|
|
51
|
+
* Specify the destination by using the following pattern
|
|
52
|
+
* integration.request.location.name, where location is querystring, path,
|
|
53
|
+
* or header, and name is a valid, unique parameter name.
|
|
54
|
+
*
|
|
55
|
+
* The source must be an existing method request parameter or a static
|
|
56
|
+
* value. You must enclose static values in single quotation marks and
|
|
57
|
+
* pre-encode these values based on their destination in the request.
|
|
58
|
+
*/
|
|
59
|
+
readonly requestParameters?: {
|
|
60
|
+
[dest: string]: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* A map of Apache Velocity templates that are applied on the request
|
|
64
|
+
* payload. The template that API Gateway uses is based on the value of the
|
|
65
|
+
* Content-Type header that's sent by the client. The content type value is
|
|
66
|
+
* the key, and the template is the value (specified as a string), such as
|
|
67
|
+
* the following snippet:
|
|
68
|
+
*
|
|
69
|
+
* ```
|
|
70
|
+
* { "application/json": "{ \"statusCode\": 200 }" }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
|
|
74
|
+
*/
|
|
75
|
+
readonly requestTemplates?: {
|
|
76
|
+
[contentType: string]: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The maximum amount of time an integration will run before it returns without a response.
|
|
80
|
+
*
|
|
81
|
+
* By default, the value must be between 50 milliseconds and 29 seconds.
|
|
82
|
+
* The upper bound can be increased for regional and private Rest APIs only,
|
|
83
|
+
* via a quota increase request for your acccount.
|
|
84
|
+
* This increase might require a reduction in your account-level throttle quota limit.
|
|
85
|
+
*
|
|
86
|
+
* See {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html Amazon API Gateway quotas} for more details.
|
|
87
|
+
*
|
|
88
|
+
* @default Duration.seconds(29)
|
|
89
|
+
*/
|
|
90
|
+
readonly timeout?: Duration;
|
|
91
|
+
/**
|
|
92
|
+
* The response that API Gateway provides after a method's backend completes
|
|
93
|
+
* processing a request. API Gateway intercepts the response from the
|
|
94
|
+
* backend so that you can control how API Gateway surfaces backend
|
|
95
|
+
* responses. For example, you can map the backend status codes to codes
|
|
96
|
+
* that you define.
|
|
97
|
+
*/
|
|
98
|
+
readonly integrationResponses?: IntegrationResponse[];
|
|
99
|
+
/**
|
|
100
|
+
* The type of network connection to the integration endpoint.
|
|
101
|
+
* @default - ConnectionType.VPC_LINK if `vpcLink` property is configured; ConnectionType.Internet otherwise.
|
|
102
|
+
*/
|
|
103
|
+
readonly connectionType?: ConnectionType;
|
|
104
|
+
/**
|
|
105
|
+
* The VpcLink used for the integration.
|
|
106
|
+
* Required if connectionType is VPC_LINK
|
|
107
|
+
*/
|
|
108
|
+
readonly vpcLink?: IVpcLink;
|
|
109
|
+
}
|
|
110
|
+
export interface IntegrationProps {
|
|
111
|
+
/**
|
|
112
|
+
* Specifies an API method integration type.
|
|
113
|
+
*/
|
|
114
|
+
readonly type: IntegrationType;
|
|
115
|
+
/**
|
|
116
|
+
* The Uniform Resource Identifier (URI) for the integration.
|
|
117
|
+
*
|
|
118
|
+
* - If you specify HTTP for the `type` property, specify the API endpoint URL.
|
|
119
|
+
* - If you specify MOCK for the `type` property, don't specify this property.
|
|
120
|
+
* - If you specify AWS for the `type` property, specify an AWS service that
|
|
121
|
+
* follows this form: `arn:partition:apigateway:region:subdomain.service|service:path|action/service_api.`
|
|
122
|
+
* For example, a Lambda function URI follows this form:
|
|
123
|
+
* arn:partition:apigateway:region:lambda:path/path. The path is usually in the
|
|
124
|
+
* form /2015-03-31/functions/LambdaFunctionARN/invocations.
|
|
125
|
+
*
|
|
126
|
+
* @see https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#uri
|
|
127
|
+
*/
|
|
128
|
+
readonly uri?: any;
|
|
129
|
+
/**
|
|
130
|
+
* The integration's HTTP method type.
|
|
131
|
+
* Required unless you use a MOCK integration.
|
|
132
|
+
*/
|
|
133
|
+
readonly integrationHttpMethod?: string;
|
|
134
|
+
/**
|
|
135
|
+
* Integration options.
|
|
136
|
+
*/
|
|
137
|
+
readonly options?: IntegrationOptions;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Result of binding an Integration to a Method.
|
|
141
|
+
*/
|
|
142
|
+
export interface IntegrationConfig {
|
|
143
|
+
/**
|
|
144
|
+
* Integration options.
|
|
145
|
+
* @default - no integration options
|
|
146
|
+
*/
|
|
147
|
+
readonly options?: IntegrationOptions;
|
|
148
|
+
/**
|
|
149
|
+
* Specifies an API method integration type.
|
|
150
|
+
*/
|
|
151
|
+
readonly type: IntegrationType;
|
|
152
|
+
/**
|
|
153
|
+
* The Uniform Resource Identifier (URI) for the integration.
|
|
154
|
+
* @see https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#uri
|
|
155
|
+
* @default - no URI. Usually applies to MOCK integration
|
|
156
|
+
*/
|
|
157
|
+
readonly uri?: string;
|
|
158
|
+
/**
|
|
159
|
+
* The integration's HTTP method type.
|
|
160
|
+
* Required unless you use a MOCK integration.
|
|
161
|
+
*
|
|
162
|
+
* @default - no integration method specified.
|
|
163
|
+
*/
|
|
164
|
+
readonly integrationHttpMethod?: string;
|
|
165
|
+
/**
|
|
166
|
+
* This value is included in computing the Deployment's fingerprint. When the fingerprint
|
|
167
|
+
* changes, a new deployment is triggered.
|
|
168
|
+
* This property should contain values associated with the Integration that upon changing
|
|
169
|
+
* should trigger a fresh the Deployment needs to be refreshed.
|
|
170
|
+
* @default undefined deployments are not triggered for any change to this integration.
|
|
171
|
+
*/
|
|
172
|
+
readonly deploymentToken?: string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Base class for backend integrations for an API Gateway method.
|
|
176
|
+
*
|
|
177
|
+
* Use one of the concrete classes such as `MockIntegration`, `AwsIntegration`, `LambdaIntegration`
|
|
178
|
+
* or implement on your own by specifying the set of props.
|
|
179
|
+
*/
|
|
180
|
+
export declare class Integration {
|
|
181
|
+
private readonly props;
|
|
182
|
+
constructor(props: IntegrationProps);
|
|
183
|
+
/**
|
|
184
|
+
* Can be overridden by subclasses to allow the integration to interact with the method
|
|
185
|
+
* being integrated, access the REST API object, method ARNs, etc.
|
|
186
|
+
*/
|
|
187
|
+
bind(method: Method): IntegrationConfig;
|
|
188
|
+
}
|
|
189
|
+
export declare enum ContentHandling {
|
|
190
|
+
/**
|
|
191
|
+
* Converts a request payload from a base64-encoded string to a binary blob.
|
|
192
|
+
*/
|
|
193
|
+
CONVERT_TO_BINARY = "CONVERT_TO_BINARY",
|
|
194
|
+
/**
|
|
195
|
+
* Converts a request payload from a binary blob to a base64-encoded string.
|
|
196
|
+
*/
|
|
197
|
+
CONVERT_TO_TEXT = "CONVERT_TO_TEXT"
|
|
198
|
+
}
|
|
199
|
+
export declare enum IntegrationType {
|
|
200
|
+
/**
|
|
201
|
+
* For integrating the API method request with an AWS service action,
|
|
202
|
+
* including the Lambda function-invoking action. With the Lambda
|
|
203
|
+
* function-invoking action, this is referred to as the Lambda custom
|
|
204
|
+
* integration. With any other AWS service action, this is known as AWS
|
|
205
|
+
* integration.
|
|
206
|
+
*/
|
|
207
|
+
AWS = "AWS",
|
|
208
|
+
/**
|
|
209
|
+
* For integrating the API method request with the Lambda function-invoking
|
|
210
|
+
* action with the client request passed through as-is. This integration is
|
|
211
|
+
* also referred to as the Lambda proxy integration
|
|
212
|
+
*/
|
|
213
|
+
AWS_PROXY = "AWS_PROXY",
|
|
214
|
+
/**
|
|
215
|
+
* For integrating the API method request with an HTTP endpoint, including a
|
|
216
|
+
* private HTTP endpoint within a VPC. This integration is also referred to
|
|
217
|
+
* as the HTTP custom integration.
|
|
218
|
+
*/
|
|
219
|
+
HTTP = "HTTP",
|
|
220
|
+
/**
|
|
221
|
+
* For integrating the API method request with an HTTP endpoint, including a
|
|
222
|
+
* private HTTP endpoint within a VPC, with the client request passed
|
|
223
|
+
* through as-is. This is also referred to as the HTTP proxy integration
|
|
224
|
+
*/
|
|
225
|
+
HTTP_PROXY = "HTTP_PROXY",
|
|
226
|
+
/**
|
|
227
|
+
* For integrating the API method request with API Gateway as a "loop-back"
|
|
228
|
+
* endpoint without invoking any backend.
|
|
229
|
+
*/
|
|
230
|
+
MOCK = "MOCK"
|
|
231
|
+
}
|
|
232
|
+
export declare enum PassthroughBehavior {
|
|
233
|
+
/**
|
|
234
|
+
* Passes the request body for unmapped content types through to the
|
|
235
|
+
* integration back end without transformation.
|
|
236
|
+
*/
|
|
237
|
+
WHEN_NO_MATCH = "WHEN_NO_MATCH",
|
|
238
|
+
/**
|
|
239
|
+
* Rejects unmapped content types with an HTTP 415 'Unsupported Media Type'
|
|
240
|
+
* response
|
|
241
|
+
*/
|
|
242
|
+
NEVER = "NEVER",
|
|
243
|
+
/**
|
|
244
|
+
* Allows pass-through when the integration has NO content types mapped to
|
|
245
|
+
* templates. However if there is at least one content type defined,
|
|
246
|
+
* unmapped content types will be rejected with the same 415 response.
|
|
247
|
+
*/
|
|
248
|
+
WHEN_NO_TEMPLATES = "WHEN_NO_TEMPLATES"
|
|
249
|
+
}
|
|
250
|
+
export declare enum ConnectionType {
|
|
251
|
+
/**
|
|
252
|
+
* For connections through the public routable internet
|
|
253
|
+
*/
|
|
254
|
+
INTERNET = "INTERNET",
|
|
255
|
+
/**
|
|
256
|
+
* For private connections between API Gateway and a network load balancer in a VPC
|
|
257
|
+
*/
|
|
258
|
+
VPC_LINK = "VPC_LINK"
|
|
259
|
+
}
|
|
260
|
+
export interface IntegrationResponse {
|
|
261
|
+
/**
|
|
262
|
+
* Specifies the regular expression (regex) pattern used to choose an integration response based on the response from
|
|
263
|
+
* the back end. For example, if the success response returns nothing and the error response returns some string, you
|
|
264
|
+
* could use the ``.+`` regex to match error response. However, make sure that the error response does not contain any
|
|
265
|
+
* newline (``\n``) character in such cases. If the back end is an AWS Lambda function, the AWS Lambda function error
|
|
266
|
+
* header is matched. For all other HTTP and AWS back ends, the HTTP status code is matched.
|
|
267
|
+
*
|
|
268
|
+
* @see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-integration-settings-integration-response.html
|
|
269
|
+
*/
|
|
270
|
+
readonly selectionPattern?: string;
|
|
271
|
+
/**
|
|
272
|
+
* The status code that API Gateway uses to map the integration response to
|
|
273
|
+
* a MethodResponse status code.
|
|
274
|
+
*/
|
|
275
|
+
readonly statusCode: string;
|
|
276
|
+
/**
|
|
277
|
+
* Specifies how to handle request payload content type conversions.
|
|
278
|
+
*
|
|
279
|
+
* @default none the request payload is passed through from the method
|
|
280
|
+
* request to the integration request without modification.
|
|
281
|
+
*/
|
|
282
|
+
readonly contentHandling?: ContentHandling;
|
|
283
|
+
/**
|
|
284
|
+
* The response parameters from the backend response that API Gateway sends
|
|
285
|
+
* to the method response.
|
|
286
|
+
*
|
|
287
|
+
* Use the destination as the key and the source as the value:
|
|
288
|
+
*
|
|
289
|
+
* - The destination must be an existing response parameter in the
|
|
290
|
+
* MethodResponse property.
|
|
291
|
+
* - The source must be an existing method request parameter or a static
|
|
292
|
+
* value. You must enclose static values in single quotation marks and
|
|
293
|
+
* pre-encode these values based on the destination specified in the
|
|
294
|
+
* request.
|
|
295
|
+
*
|
|
296
|
+
* @see http://docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html
|
|
297
|
+
*/
|
|
298
|
+
readonly responseParameters?: {
|
|
299
|
+
[destination: string]: string;
|
|
300
|
+
};
|
|
301
|
+
/**
|
|
302
|
+
* The templates that are used to transform the integration response body.
|
|
303
|
+
* Specify templates as key-value pairs, with a content type as the key and
|
|
304
|
+
* a template as the value.
|
|
305
|
+
*
|
|
306
|
+
* @see http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
|
|
307
|
+
*/
|
|
308
|
+
readonly responseTemplates?: {
|
|
309
|
+
[contentType: string]: string;
|
|
310
|
+
};
|
|
311
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ConnectionType = exports.PassthroughBehavior = exports.IntegrationType = exports.ContentHandling = exports.Integration = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const cdktf_1 = require("cdktf");
|
|
7
|
+
const vpc_link_1 = require("./vpc-link");
|
|
8
|
+
/**
|
|
9
|
+
* Base class for backend integrations for an API Gateway method.
|
|
10
|
+
*
|
|
11
|
+
* Use one of the concrete classes such as `MockIntegration`, `AwsIntegration`, `LambdaIntegration`
|
|
12
|
+
* or implement on your own by specifying the set of props.
|
|
13
|
+
*/
|
|
14
|
+
class Integration {
|
|
15
|
+
constructor(props) {
|
|
16
|
+
this.props = props;
|
|
17
|
+
const options = this.props.options || {};
|
|
18
|
+
if (options.credentialsPassthrough !== undefined &&
|
|
19
|
+
options.credentialsRole !== undefined) {
|
|
20
|
+
// throw new UnscopedValidationError(
|
|
21
|
+
throw new Error("'credentialsPassthrough' and 'credentialsRole' are mutually exclusive");
|
|
22
|
+
}
|
|
23
|
+
if (options.connectionType === ConnectionType.VPC_LINK &&
|
|
24
|
+
options.vpcLink === undefined) {
|
|
25
|
+
// throw new UnscopedValidationError(
|
|
26
|
+
throw new Error("'connectionType' of VPC_LINK requires 'vpcLink' prop to be set");
|
|
27
|
+
}
|
|
28
|
+
if (options.connectionType === ConnectionType.INTERNET &&
|
|
29
|
+
options.vpcLink !== undefined) {
|
|
30
|
+
// throw new UnscopedValidationError(
|
|
31
|
+
throw new Error("cannot set 'vpcLink' where 'connectionType' is INTERNET");
|
|
32
|
+
}
|
|
33
|
+
if (options.timeout &&
|
|
34
|
+
!options.timeout.isUnresolved() &&
|
|
35
|
+
options.timeout.toMilliseconds() < 50) {
|
|
36
|
+
// throw new UnscopedValidationError(
|
|
37
|
+
throw new Error("Integration timeout must be greater than 50 milliseconds.");
|
|
38
|
+
}
|
|
39
|
+
if (props.type !== IntegrationType.MOCK && !props.integrationHttpMethod) {
|
|
40
|
+
// throw new UnscopedValidationError(
|
|
41
|
+
throw new Error("integrationHttpMethod is required for non-mock integration types.");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Can be overridden by subclasses to allow the integration to interact with the method
|
|
46
|
+
* being integrated, access the REST API object, method ARNs, etc.
|
|
47
|
+
*/
|
|
48
|
+
bind(method) {
|
|
49
|
+
let uri = this.props.uri;
|
|
50
|
+
const options = this.props.options;
|
|
51
|
+
if (options?.connectionType === ConnectionType.VPC_LINK &&
|
|
52
|
+
uri === undefined) {
|
|
53
|
+
uri = cdktf_1.Lazy.stringValue({
|
|
54
|
+
// needs to be a lazy since the targets can be added to the VpcLink construct after initialization.
|
|
55
|
+
produce: () => {
|
|
56
|
+
const vpcLink = options.vpcLink;
|
|
57
|
+
if (vpcLink instanceof vpc_link_1.VpcLink) {
|
|
58
|
+
const targets = vpcLink._targetDnsNames;
|
|
59
|
+
if (targets.length > 1) {
|
|
60
|
+
// throw new ValidationError(
|
|
61
|
+
throw new Error(`'uri' is required when there are more than one NLBs in the VPC Link (${method.node.path})`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return `http://${targets[0]}`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// throw new ValidationError(
|
|
69
|
+
throw new Error(`'uri' is required when the 'connectionType' is VPC_LINK (${method.node.path})`);
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
options: {
|
|
76
|
+
...options,
|
|
77
|
+
connectionType: options?.vpcLink
|
|
78
|
+
? ConnectionType.VPC_LINK
|
|
79
|
+
: options?.connectionType,
|
|
80
|
+
},
|
|
81
|
+
type: this.props.type,
|
|
82
|
+
uri,
|
|
83
|
+
integrationHttpMethod: this.props.integrationHttpMethod,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.Integration = Integration;
|
|
88
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
89
|
+
Integration[_a] = { fqn: "terraconstructs.aws.compute.Integration", version: "0.1.1" };
|
|
90
|
+
var ContentHandling;
|
|
91
|
+
(function (ContentHandling) {
|
|
92
|
+
/**
|
|
93
|
+
* Converts a request payload from a base64-encoded string to a binary blob.
|
|
94
|
+
*/
|
|
95
|
+
ContentHandling["CONVERT_TO_BINARY"] = "CONVERT_TO_BINARY";
|
|
96
|
+
/**
|
|
97
|
+
* Converts a request payload from a binary blob to a base64-encoded string.
|
|
98
|
+
*/
|
|
99
|
+
ContentHandling["CONVERT_TO_TEXT"] = "CONVERT_TO_TEXT";
|
|
100
|
+
})(ContentHandling || (exports.ContentHandling = ContentHandling = {}));
|
|
101
|
+
var IntegrationType;
|
|
102
|
+
(function (IntegrationType) {
|
|
103
|
+
/**
|
|
104
|
+
* For integrating the API method request with an AWS service action,
|
|
105
|
+
* including the Lambda function-invoking action. With the Lambda
|
|
106
|
+
* function-invoking action, this is referred to as the Lambda custom
|
|
107
|
+
* integration. With any other AWS service action, this is known as AWS
|
|
108
|
+
* integration.
|
|
109
|
+
*/
|
|
110
|
+
IntegrationType["AWS"] = "AWS";
|
|
111
|
+
/**
|
|
112
|
+
* For integrating the API method request with the Lambda function-invoking
|
|
113
|
+
* action with the client request passed through as-is. This integration is
|
|
114
|
+
* also referred to as the Lambda proxy integration
|
|
115
|
+
*/
|
|
116
|
+
IntegrationType["AWS_PROXY"] = "AWS_PROXY";
|
|
117
|
+
/**
|
|
118
|
+
* For integrating the API method request with an HTTP endpoint, including a
|
|
119
|
+
* private HTTP endpoint within a VPC. This integration is also referred to
|
|
120
|
+
* as the HTTP custom integration.
|
|
121
|
+
*/
|
|
122
|
+
IntegrationType["HTTP"] = "HTTP";
|
|
123
|
+
/**
|
|
124
|
+
* For integrating the API method request with an HTTP endpoint, including a
|
|
125
|
+
* private HTTP endpoint within a VPC, with the client request passed
|
|
126
|
+
* through as-is. This is also referred to as the HTTP proxy integration
|
|
127
|
+
*/
|
|
128
|
+
IntegrationType["HTTP_PROXY"] = "HTTP_PROXY";
|
|
129
|
+
/**
|
|
130
|
+
* For integrating the API method request with API Gateway as a "loop-back"
|
|
131
|
+
* endpoint without invoking any backend.
|
|
132
|
+
*/
|
|
133
|
+
IntegrationType["MOCK"] = "MOCK";
|
|
134
|
+
})(IntegrationType || (exports.IntegrationType = IntegrationType = {}));
|
|
135
|
+
var PassthroughBehavior;
|
|
136
|
+
(function (PassthroughBehavior) {
|
|
137
|
+
/**
|
|
138
|
+
* Passes the request body for unmapped content types through to the
|
|
139
|
+
* integration back end without transformation.
|
|
140
|
+
*/
|
|
141
|
+
PassthroughBehavior["WHEN_NO_MATCH"] = "WHEN_NO_MATCH";
|
|
142
|
+
/**
|
|
143
|
+
* Rejects unmapped content types with an HTTP 415 'Unsupported Media Type'
|
|
144
|
+
* response
|
|
145
|
+
*/
|
|
146
|
+
PassthroughBehavior["NEVER"] = "NEVER";
|
|
147
|
+
/**
|
|
148
|
+
* Allows pass-through when the integration has NO content types mapped to
|
|
149
|
+
* templates. However if there is at least one content type defined,
|
|
150
|
+
* unmapped content types will be rejected with the same 415 response.
|
|
151
|
+
*/
|
|
152
|
+
PassthroughBehavior["WHEN_NO_TEMPLATES"] = "WHEN_NO_TEMPLATES";
|
|
153
|
+
})(PassthroughBehavior || (exports.PassthroughBehavior = PassthroughBehavior = {}));
|
|
154
|
+
var ConnectionType;
|
|
155
|
+
(function (ConnectionType) {
|
|
156
|
+
/**
|
|
157
|
+
* For connections through the public routable internet
|
|
158
|
+
*/
|
|
159
|
+
ConnectionType["INTERNET"] = "INTERNET";
|
|
160
|
+
/**
|
|
161
|
+
* For private connections between API Gateway and a network load balancer in a VPC
|
|
162
|
+
*/
|
|
163
|
+
ConnectionType["VPC_LINK"] = "VPC_LINK";
|
|
164
|
+
})(ConnectionType || (exports.ConnectionType = ConnectionType = {}));
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBNkI7QUFFN0IseUNBQStDO0FBcU0vQzs7Ozs7R0FLRztBQUNILE1BQWEsV0FBVztJQUN0QixZQUE2QixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekMsSUFDRSxPQUFPLENBQUMsc0JBQXNCLEtBQUssU0FBUztZQUM1QyxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFDckMsQ0FBQztZQUNELHFDQUFxQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLHVFQUF1RSxDQUN4RSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsT0FBTyxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsUUFBUTtZQUNsRCxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFDN0IsQ0FBQztZQUNELHFDQUFxQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRSxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsT0FBTyxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsUUFBUTtZQUNsRCxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFDN0IsQ0FBQztZQUNELHFDQUFxQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsT0FBTyxDQUFDLE9BQU87WUFDZixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUNyQyxDQUFDO1lBQ0QscUNBQXFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELENBQzVELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4RSxxQ0FBcUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksSUFBSSxDQUFDLE1BQWM7UUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFbkMsSUFDRSxPQUFPLEVBQUUsY0FBYyxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQ25ELEdBQUcsS0FBSyxTQUFTLEVBQ2pCLENBQUM7WUFDRCxHQUFHLEdBQUcsWUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDckIsbUdBQW1HO2dCQUNuRyxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNaLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ2hDLElBQUksT0FBTyxZQUFZLGtCQUFPLEVBQUUsQ0FBQzt3QkFDL0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQzt3QkFDeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUN2Qiw2QkFBNkI7NEJBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBRTVGLENBQUM7d0JBQ0osQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLE9BQU8sVUFBVSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEMsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sNkJBQTZCO3dCQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUVoRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQLEdBQUcsT0FBTztnQkFDVixjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU87b0JBQzlCLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUTtvQkFDekIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjO2FBQzVCO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNyQixHQUFHO1lBQ0gscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUI7U0FDeEQsQ0FBQztJQUNKLENBQUM7O0FBcEdILGtDQXFHQzs7O0FBRUQsSUFBWSxlQVVYO0FBVkQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsMERBQXVDLENBQUE7SUFFdkM7O09BRUc7SUFDSCxzREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBVlcsZUFBZSwrQkFBZixlQUFlLFFBVTFCO0FBRUQsSUFBWSxlQW9DWDtBQXBDRCxXQUFZLGVBQWU7SUFDekI7Ozs7OztPQU1HO0lBQ0gsOEJBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCwwQ0FBdUIsQ0FBQTtJQUV2Qjs7OztPQUlHO0lBQ0gsZ0NBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCw0Q0FBeUIsQ0FBQTtJQUV6Qjs7O09BR0c7SUFDSCxnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQXBDVyxlQUFlLCtCQUFmLGVBQWUsUUFvQzFCO0FBRUQsSUFBWSxtQkFtQlg7QUFuQkQsV0FBWSxtQkFBbUI7SUFDN0I7OztPQUdHO0lBQ0gsc0RBQStCLENBQUE7SUFFL0I7OztPQUdHO0lBQ0gsc0NBQWUsQ0FBQTtJQUVmOzs7O09BSUc7SUFDSCw4REFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBbkJXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBbUI5QjtBQUVELElBQVksY0FVWDtBQVZELFdBQVksY0FBYztJQUN4Qjs7T0FFRztJQUNILHVDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsdUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLGNBQWMsOEJBQWQsY0FBYyxRQVV6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenkgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IE1ldGhvZCB9IGZyb20gXCIuL21ldGhvZFwiO1xuaW1wb3J0IHsgSVZwY0xpbmssIFZwY0xpbmsgfSBmcm9tIFwiLi92cGMtbGlua1wiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiLi4vaWFtXCI7XG4vLyBUT0RPOiBBZG9wdCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvcHVsbC8zMzM4Mi9cbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvMzMwNDVcbi8vIGltcG9ydCB7XG4vLyAgIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuLy8gICBWYWxpZGF0aW9uRXJyb3IsXG4vLyB9IGZyb20gXCIuLi8uLi9jb3JlL2xpYi9lcnJvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHJlcXVlc3QgcGFyYW1ldGVycyB3aG9zZSB2YWx1ZXMgYXJlIHRvIGJlIGNhY2hlZC4gSXQgZGV0ZXJtaW5lc1xuICAgKiByZXF1ZXN0IHBhcmFtZXRlcnMgdGhhdCB3aWxsIG1ha2UgaXQgaW50byB0aGUgY2FjaGUga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVLZXlQYXJhbWV0ZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIEFQSS1zcGVjaWZpYyB0YWcgZ3JvdXAgb2YgcmVsYXRlZCBjYWNoZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlTmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGhhbmRsZSByZXF1ZXN0IHBheWxvYWQgY29udGVudCB0eXBlIGNvbnZlcnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBub25lIGlmIHRoaXMgcHJvcGVydHkgaXNuJ3QgZGVmaW5lZCwgdGhlIHJlcXVlc3QgcGF5bG9hZCBpcyBwYXNzZWRcbiAgICogdGhyb3VnaCBmcm9tIHRoZSBtZXRob2QgcmVxdWVzdCB0byB0aGUgaW50ZWdyYXRpb24gcmVxdWVzdCB3aXRob3V0XG4gICAqIG1vZGlmaWNhdGlvbiwgcHJvdmlkZWQgdGhhdCB0aGUgYHBhc3N0aHJvdWdoQmVoYXZpb3JzYCBwcm9wZXJ0eSBpc1xuICAgKiBjb25maWd1cmVkIHRvIHN1cHBvcnQgcGF5bG9hZCBwYXNzLXRocm91Z2guXG4gICAqL1xuICByZWFkb25seSBjb250ZW50SGFuZGxpbmc/OiBDb250ZW50SGFuZGxpbmc7XG5cbiAgLyoqXG4gICAqIEFuIElBTSByb2xlIHRoYXQgQVBJIEdhdGV3YXkgYXNzdW1lcy5cbiAgICpcbiAgICogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYGNyZWRlbnRpYWxzUGFzc1Rocm91Z2hgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIHJvbGUgaXMgbm90IGFzc3VtZWRcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgY2FsbGVyJ3MgaWRlbnRpdHkgYmUgcGFzc2VkIHRocm91Z2ggZnJvbSB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2FsbGVyIGlkZW50aXR5IGlzIG5vdCBwYXNzZWQgdGhyb3VnaFxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbHNQYXNzdGhyb3VnaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcGFzcy10aHJvdWdoIGJlaGF2aW9yIGZvciBpbmNvbWluZyByZXF1ZXN0cyBiYXNlZCBvbiB0aGVcbiAgICogQ29udGVudC1UeXBlIGhlYWRlciBpbiB0aGUgcmVxdWVzdCwgYW5kIHRoZSBhdmFpbGFibGUgbWFwcGluZyB0ZW1wbGF0ZXNcbiAgICogc3BlY2lmaWVkIGFzIHRoZSByZXF1ZXN0VGVtcGxhdGVzIHByb3BlcnR5IG9uIHRoZSBJbnRlZ3JhdGlvbiByZXNvdXJjZS5cbiAgICogVGhlcmUgYXJlIHRocmVlIHZhbGlkIHZhbHVlczogV0hFTl9OT19NQVRDSCwgV0hFTl9OT19URU1QTEFURVMsIGFuZFxuICAgKiBORVZFUi5cbiAgICovXG4gIHJlYWRvbmx5IHBhc3N0aHJvdWdoQmVoYXZpb3I/OiBQYXNzdGhyb3VnaEJlaGF2aW9yO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBwYXJhbWV0ZXJzIHRoYXQgQVBJIEdhdGV3YXkgc2VuZHMgd2l0aCB0aGUgYmFja2VuZCByZXF1ZXN0LlxuICAgKiBTcGVjaWZ5IHJlcXVlc3QgcGFyYW1ldGVycyBhcyBrZXktdmFsdWUgcGFpcnMgKHN0cmluZy10by1zdHJpbmdcbiAgICogbWFwcGluZ3MpLCB3aXRoIGEgZGVzdGluYXRpb24gYXMgdGhlIGtleSBhbmQgYSBzb3VyY2UgYXMgdGhlIHZhbHVlLlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoZSBkZXN0aW5hdGlvbiBieSB1c2luZyB0aGUgZm9sbG93aW5nIHBhdHRlcm5cbiAgICogaW50ZWdyYXRpb24ucmVxdWVzdC5sb2NhdGlvbi5uYW1lLCB3aGVyZSBsb2NhdGlvbiBpcyBxdWVyeXN0cmluZywgcGF0aCxcbiAgICogb3IgaGVhZGVyLCBhbmQgbmFtZSBpcyBhIHZhbGlkLCB1bmlxdWUgcGFyYW1ldGVyIG5hbWUuXG4gICAqXG4gICAqIFRoZSBzb3VyY2UgbXVzdCBiZSBhbiBleGlzdGluZyBtZXRob2QgcmVxdWVzdCBwYXJhbWV0ZXIgb3IgYSBzdGF0aWNcbiAgICogdmFsdWUuIFlvdSBtdXN0IGVuY2xvc2Ugc3RhdGljIHZhbHVlcyBpbiBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGFuZFxuICAgKiBwcmUtZW5jb2RlIHRoZXNlIHZhbHVlcyBiYXNlZCBvbiB0aGVpciBkZXN0aW5hdGlvbiBpbiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RQYXJhbWV0ZXJzPzogeyBbZGVzdDogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIEFwYWNoZSBWZWxvY2l0eSB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXBwbGllZCBvbiB0aGUgcmVxdWVzdFxuICAgKiBwYXlsb2FkLiBUaGUgdGVtcGxhdGUgdGhhdCBBUEkgR2F0ZXdheSB1c2VzIGlzIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICogQ29udGVudC1UeXBlIGhlYWRlciB0aGF0J3Mgc2VudCBieSB0aGUgY2xpZW50LiBUaGUgY29udGVudCB0eXBlIHZhbHVlIGlzXG4gICAqIHRoZSBrZXksIGFuZCB0aGUgdGVtcGxhdGUgaXMgdGhlIHZhbHVlIChzcGVjaWZpZWQgYXMgYSBzdHJpbmcpLCBzdWNoIGFzXG4gICAqIHRoZSBmb2xsb3dpbmcgc25pcHBldDpcbiAgICpcbiAgICogYGBgXG4gICAqICAgeyBcImFwcGxpY2F0aW9uL2pzb25cIjogXCJ7IFxcXCJzdGF0dXNDb2RlXFxcIjogMjAwIH1cIiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwaWdhdGV3YXkvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FwaS1nYXRld2F5LW1hcHBpbmctdGVtcGxhdGUtcmVmZXJlbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RUZW1wbGF0ZXM/OiB7IFtjb250ZW50VHlwZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIGFuIGludGVncmF0aW9uIHdpbGwgcnVuIGJlZm9yZSBpdCByZXR1cm5zIHdpdGhvdXQgYSByZXNwb25zZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiA1MCBtaWxsaXNlY29uZHMgYW5kIDI5IHNlY29uZHMuXG4gICAqIFRoZSB1cHBlciBib3VuZCBjYW4gYmUgaW5jcmVhc2VkIGZvciByZWdpb25hbCBhbmQgcHJpdmF0ZSBSZXN0IEFQSXMgb25seSxcbiAgICogdmlhIGEgcXVvdGEgaW5jcmVhc2UgcmVxdWVzdCBmb3IgeW91ciBhY2Njb3VudC5cbiAgICogVGhpcyBpbmNyZWFzZSBtaWdodCByZXF1aXJlIGEgcmVkdWN0aW9uIGluIHlvdXIgYWNjb3VudC1sZXZlbCB0aHJvdHRsZSBxdW90YSBsaW1pdC5cbiAgICpcbiAgICogU2VlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbGltaXRzLmh0bWwgQW1hem9uIEFQSSBHYXRld2F5IHF1b3Rhc30gZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygyOSlcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIHRoYXQgQVBJIEdhdGV3YXkgcHJvdmlkZXMgYWZ0ZXIgYSBtZXRob2QncyBiYWNrZW5kIGNvbXBsZXRlc1xuICAgKiBwcm9jZXNzaW5nIGEgcmVxdWVzdC4gQVBJIEdhdGV3YXkgaW50ZXJjZXB0cyB0aGUgcmVzcG9uc2UgZnJvbSB0aGVcbiAgICogYmFja2VuZCBzbyB0aGF0IHlvdSBjYW4gY29udHJvbCBob3cgQVBJIEdhdGV3YXkgc3VyZmFjZXMgYmFja2VuZFxuICAgKiByZXNwb25zZXMuIEZvciBleGFtcGxlLCB5b3UgY2FuIG1hcCB0aGUgYmFja2VuZCBzdGF0dXMgY29kZXMgdG8gY29kZXNcbiAgICogdGhhdCB5b3UgZGVmaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25SZXNwb25zZXM/OiBJbnRlZ3JhdGlvblJlc3BvbnNlW107XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIG5ldHdvcmsgY29ubmVjdGlvbiB0byB0aGUgaW50ZWdyYXRpb24gZW5kcG9pbnQuXG4gICAqIEBkZWZhdWx0IC0gQ29ubmVjdGlvblR5cGUuVlBDX0xJTksgaWYgYHZwY0xpbmtgIHByb3BlcnR5IGlzIGNvbmZpZ3VyZWQ7IENvbm5lY3Rpb25UeXBlLkludGVybmV0IG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25UeXBlPzogQ29ubmVjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBWcGNMaW5rIHVzZWQgZm9yIHRoZSBpbnRlZ3JhdGlvbi5cbiAgICogUmVxdWlyZWQgaWYgY29ubmVjdGlvblR5cGUgaXMgVlBDX0xJTktcbiAgICovXG4gIHJlYWRvbmx5IHZwY0xpbms/OiBJVnBjTGluaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUEkgbWV0aG9kIGludGVncmF0aW9uIHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBJbnRlZ3JhdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIgKFVSSSkgZm9yIHRoZSBpbnRlZ3JhdGlvbi5cbiAgICpcbiAgICogLSBJZiB5b3Ugc3BlY2lmeSBIVFRQIGZvciB0aGUgYHR5cGVgIHByb3BlcnR5LCBzcGVjaWZ5IHRoZSBBUEkgZW5kcG9pbnQgVVJMLlxuICAgKiAtIElmIHlvdSBzcGVjaWZ5IE1PQ0sgZm9yIHRoZSBgdHlwZWAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS5cbiAgICogLSBJZiB5b3Ugc3BlY2lmeSBBV1MgZm9yIHRoZSBgdHlwZWAgcHJvcGVydHksIHNwZWNpZnkgYW4gQVdTIHNlcnZpY2UgdGhhdFxuICAgKiAgIGZvbGxvd3MgdGhpcyBmb3JtOiBgYXJuOnBhcnRpdGlvbjphcGlnYXRld2F5OnJlZ2lvbjpzdWJkb21haW4uc2VydmljZXxzZXJ2aWNlOnBhdGh8YWN0aW9uL3NlcnZpY2VfYXBpLmBcbiAgICogICBGb3IgZXhhbXBsZSwgYSBMYW1iZGEgZnVuY3Rpb24gVVJJIGZvbGxvd3MgdGhpcyBmb3JtOlxuICAgKiAgIGFybjpwYXJ0aXRpb246YXBpZ2F0ZXdheTpyZWdpb246bGFtYmRhOnBhdGgvcGF0aC4gVGhlIHBhdGggaXMgdXN1YWxseSBpbiB0aGVcbiAgICogICBmb3JtIC8yMDE1LTAzLTMxL2Z1bmN0aW9ucy9MYW1iZGFGdW5jdGlvbkFSTi9pbnZvY2F0aW9ucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9hcGktcmVmZXJlbmNlL3Jlc291cmNlL2ludGVncmF0aW9uLyN1cmlcbiAgICovXG4gIHJlYWRvbmx5IHVyaT86IGFueTtcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uJ3MgSFRUUCBtZXRob2QgdHlwZS5cbiAgICogUmVxdWlyZWQgdW5sZXNzIHlvdSB1c2UgYSBNT0NLIGludGVncmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25IdHRwTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnRlZ3JhdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IEludGVncmF0aW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYmluZGluZyBhbiBJbnRlZ3JhdGlvbiB0byBhIE1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBJbnRlZ3JhdGlvbiBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIG5vIGludGVncmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUEkgbWV0aG9kIGludGVncmF0aW9uIHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBJbnRlZ3JhdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIgKFVSSSkgZm9yIHRoZSBpbnRlZ3JhdGlvbi5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9hcGktcmVmZXJlbmNlL3Jlc291cmNlL2ludGVncmF0aW9uLyN1cmlcbiAgICogQGRlZmF1bHQgLSBubyBVUkkuIFVzdWFsbHkgYXBwbGllcyB0byBNT0NLIGludGVncmF0aW9uXG4gICAqL1xuICByZWFkb25seSB1cmk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbidzIEhUVFAgbWV0aG9kIHR5cGUuXG4gICAqIFJlcXVpcmVkIHVubGVzcyB5b3UgdXNlIGEgTU9DSyBpbnRlZ3JhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBpbnRlZ3JhdGlvbiBtZXRob2Qgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25IdHRwTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGlzIHZhbHVlIGlzIGluY2x1ZGVkIGluIGNvbXB1dGluZyB0aGUgRGVwbG95bWVudCdzIGZpbmdlcnByaW50LiBXaGVuIHRoZSBmaW5nZXJwcmludFxuICAgKiBjaGFuZ2VzLCBhIG5ldyBkZXBsb3ltZW50IGlzIHRyaWdnZXJlZC5cbiAgICogVGhpcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBJbnRlZ3JhdGlvbiB0aGF0IHVwb24gY2hhbmdpbmdcbiAgICogc2hvdWxkIHRyaWdnZXIgYSBmcmVzaCB0aGUgRGVwbG95bWVudCBuZWVkcyB0byBiZSByZWZyZXNoZWQuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCBkZXBsb3ltZW50cyBhcmUgbm90IHRyaWdnZXJlZCBmb3IgYW55IGNoYW5nZSB0byB0aGlzIGludGVncmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudFRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGJhY2tlbmQgaW50ZWdyYXRpb25zIGZvciBhbiBBUEkgR2F0ZXdheSBtZXRob2QuXG4gKlxuICogVXNlIG9uZSBvZiB0aGUgY29uY3JldGUgY2xhc3NlcyBzdWNoIGFzIGBNb2NrSW50ZWdyYXRpb25gLCBgQXdzSW50ZWdyYXRpb25gLCBgTGFtYmRhSW50ZWdyYXRpb25gXG4gKiBvciBpbXBsZW1lbnQgb24geW91ciBvd24gYnkgc3BlY2lmeWluZyB0aGUgc2V0IG9mIHByb3BzLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbnRlZ3JhdGlvblByb3BzKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJvcHMub3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmNyZWRlbnRpYWxzUGFzc3Rocm91Z2ggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3B0aW9ucy5jcmVkZW50aWFsc1JvbGUgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIidjcmVkZW50aWFsc1Bhc3N0aHJvdWdoJyBhbmQgJ2NyZWRlbnRpYWxzUm9sZScgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmNvbm5lY3Rpb25UeXBlID09PSBDb25uZWN0aW9uVHlwZS5WUENfTElOSyAmJlxuICAgICAgb3B0aW9ucy52cGNMaW5rID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIC8vIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCInY29ubmVjdGlvblR5cGUnIG9mIFZQQ19MSU5LIHJlcXVpcmVzICd2cGNMaW5rJyBwcm9wIHRvIGJlIHNldFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmNvbm5lY3Rpb25UeXBlID09PSBDb25uZWN0aW9uVHlwZS5JTlRFUk5FVCAmJlxuICAgICAgb3B0aW9ucy52cGNMaW5rICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIC8vIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJjYW5ub3Qgc2V0ICd2cGNMaW5rJyB3aGVyZSAnY29ubmVjdGlvblR5cGUnIGlzIElOVEVSTkVUXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnMudGltZW91dCAmJlxuICAgICAgIW9wdGlvbnMudGltZW91dC5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgb3B0aW9ucy50aW1lb3V0LnRvTWlsbGlzZWNvbmRzKCkgPCA1MFxuICAgICkge1xuICAgICAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkludGVncmF0aW9uIHRpbWVvdXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gNTAgbWlsbGlzZWNvbmRzLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHlwZSAhPT0gSW50ZWdyYXRpb25UeXBlLk1PQ0sgJiYgIXByb3BzLmludGVncmF0aW9uSHR0cE1ldGhvZCkge1xuICAgICAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImludGVncmF0aW9uSHR0cE1ldGhvZCBpcyByZXF1aXJlZCBmb3Igbm9uLW1vY2sgaW50ZWdyYXRpb24gdHlwZXMuXCIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGFsbG93IHRoZSBpbnRlZ3JhdGlvbiB0byBpbnRlcmFjdCB3aXRoIHRoZSBtZXRob2RcbiAgICogYmVpbmcgaW50ZWdyYXRlZCwgYWNjZXNzIHRoZSBSRVNUIEFQSSBvYmplY3QsIG1ldGhvZCBBUk5zLCBldGMuXG4gICAqL1xuICBwdWJsaWMgYmluZChtZXRob2Q6IE1ldGhvZCk6IEludGVncmF0aW9uQ29uZmlnIHtcbiAgICBsZXQgdXJpID0gdGhpcy5wcm9wcy51cmk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJvcHMub3B0aW9ucztcblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnM/LmNvbm5lY3Rpb25UeXBlID09PSBDb25uZWN0aW9uVHlwZS5WUENfTElOSyAmJlxuICAgICAgdXJpID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHVyaSA9IExhenkuc3RyaW5nVmFsdWUoe1xuICAgICAgICAvLyBuZWVkcyB0byBiZSBhIGxhenkgc2luY2UgdGhlIHRhcmdldHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBWcGNMaW5rIGNvbnN0cnVjdCBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZwY0xpbmsgPSBvcHRpb25zLnZwY0xpbms7XG4gICAgICAgICAgaWYgKHZwY0xpbmsgaW5zdGFuY2VvZiBWcGNMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRzID0gdnBjTGluay5fdGFyZ2V0RG5zTmFtZXM7XG4gICAgICAgICAgICBpZiAodGFyZ2V0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIC8vIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgJ3VyaScgaXMgcmVxdWlyZWQgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBOTEJzIGluIHRoZSBWUEMgTGluayAoJHttZXRob2Qubm9kZS5wYXRofSlgLFxuICAgICAgICAgICAgICAgIC8vIG1ldGhvZCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBgaHR0cDovLyR7dGFyZ2V0c1swXX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgJ3VyaScgaXMgcmVxdWlyZWQgd2hlbiB0aGUgJ2Nvbm5lY3Rpb25UeXBlJyBpcyBWUENfTElOSyAoJHttZXRob2Qubm9kZS5wYXRofSlgLFxuICAgICAgICAgICAgICAvLyBtZXRob2QsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBjb25uZWN0aW9uVHlwZTogb3B0aW9ucz8udnBjTGlua1xuICAgICAgICAgID8gQ29ubmVjdGlvblR5cGUuVlBDX0xJTktcbiAgICAgICAgICA6IG9wdGlvbnM/LmNvbm5lY3Rpb25UeXBlLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMucHJvcHMudHlwZSxcbiAgICAgIHVyaSxcbiAgICAgIGludGVncmF0aW9uSHR0cE1ldGhvZDogdGhpcy5wcm9wcy5pbnRlZ3JhdGlvbkh0dHBNZXRob2QsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBDb250ZW50SGFuZGxpbmcge1xuICAvKipcbiAgICogQ29udmVydHMgYSByZXF1ZXN0IHBheWxvYWQgZnJvbSBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZyB0byBhIGJpbmFyeSBibG9iLlxuICAgKi9cbiAgQ09OVkVSVF9UT19CSU5BUlkgPSBcIkNPTlZFUlRfVE9fQklOQVJZXCIsXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcmVxdWVzdCBwYXlsb2FkIGZyb20gYSBiaW5hcnkgYmxvYiB0byBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZy5cbiAgICovXG4gIENPTlZFUlRfVE9fVEVYVCA9IFwiQ09OVkVSVF9UT19URVhUXCIsXG59XG5cbmV4cG9ydCBlbnVtIEludGVncmF0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiBGb3IgaW50ZWdyYXRpbmcgdGhlIEFQSSBtZXRob2QgcmVxdWVzdCB3aXRoIGFuIEFXUyBzZXJ2aWNlIGFjdGlvbixcbiAgICogaW5jbHVkaW5nIHRoZSBMYW1iZGEgZnVuY3Rpb24taW52b2tpbmcgYWN0aW9uLiBXaXRoIHRoZSBMYW1iZGFcbiAgICogZnVuY3Rpb24taW52b2tpbmcgYWN0aW9uLCB0aGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBMYW1iZGEgY3VzdG9tXG4gICAqIGludGVncmF0aW9uLiBXaXRoIGFueSBvdGhlciBBV1Mgc2VydmljZSBhY3Rpb24sIHRoaXMgaXMga25vd24gYXMgQVdTXG4gICAqIGludGVncmF0aW9uLlxuICAgKi9cbiAgQVdTID0gXCJBV1NcIixcblxuICAvKipcbiAgICogRm9yIGludGVncmF0aW5nIHRoZSBBUEkgbWV0aG9kIHJlcXVlc3Qgd2l0aCB0aGUgTGFtYmRhIGZ1bmN0aW9uLWludm9raW5nXG4gICAqIGFjdGlvbiB3aXRoIHRoZSBjbGllbnQgcmVxdWVzdCBwYXNzZWQgdGhyb3VnaCBhcy1pcy4gVGhpcyBpbnRlZ3JhdGlvbiBpc1xuICAgKiBhbHNvIHJlZmVycmVkIHRvIGFzIHRoZSBMYW1iZGEgcHJveHkgaW50ZWdyYXRpb25cbiAgICovXG4gIEFXU19QUk9YWSA9IFwiQVdTX1BST1hZXCIsXG5cbiAgLyoqXG4gICAqIEZvciBpbnRlZ3JhdGluZyB0aGUgQVBJIG1ldGhvZCByZXF1ZXN0IHdpdGggYW4gSFRUUCBlbmRwb2ludCwgaW5jbHVkaW5nIGFcbiAgICogcHJpdmF0ZSBIVFRQIGVuZHBvaW50IHdpdGhpbiBhIFZQQy4gVGhpcyBpbnRlZ3JhdGlvbiBpcyBhbHNvIHJlZmVycmVkIHRvXG4gICAqIGFzIHRoZSBIVFRQIGN1c3RvbSBpbnRlZ3JhdGlvbi5cbiAgICovXG4gIEhUVFAgPSBcIkhUVFBcIixcblxuICAvKipcbiAgICogRm9yIGludGVncmF0aW5nIHRoZSBBUEkgbWV0aG9kIHJlcXVlc3Qgd2l0aCBhbiBIVFRQIGVuZHBvaW50LCBpbmNsdWRpbmcgYVxuICAgKiBwcml2YXRlIEhUVFAgZW5kcG9pbnQgd2l0aGluIGEgVlBDLCB3aXRoIHRoZSBjbGllbnQgcmVxdWVzdCBwYXNzZWRcbiAgICogdGhyb3VnaCBhcy1pcy4gVGhpcyBpcyBhbHNvIHJlZmVycmVkIHRvIGFzIHRoZSBIVFRQIHByb3h5IGludGVncmF0aW9uXG4gICAqL1xuICBIVFRQX1BST1hZID0gXCJIVFRQX1BST1hZXCIsXG5cbiAgLyoqXG4gICAqIEZvciBpbnRlZ3JhdGluZyB0aGUgQVBJIG1ldGhvZCByZXF1ZXN0IHdpdGggQVBJIEdhdGV3YXkgYXMgYSBcImxvb3AtYmFja1wiXG4gICAqIGVuZHBvaW50IHdpdGhvdXQgaW52b2tpbmcgYW55IGJhY2tlbmQuXG4gICAqL1xuICBNT0NLID0gXCJNT0NLXCIsXG59XG5cbmV4cG9ydCBlbnVtIFBhc3N0aHJvdWdoQmVoYXZpb3Ige1xuICAvKipcbiAgICogUGFzc2VzIHRoZSByZXF1ZXN0IGJvZHkgZm9yIHVubWFwcGVkIGNvbnRlbnQgdHlwZXMgdGhyb3VnaCB0byB0aGVcbiAgICogaW50ZWdyYXRpb24gYmFjayBlbmQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi5cbiAgICovXG4gIFdIRU5fTk9fTUFUQ0ggPSBcIldIRU5fTk9fTUFUQ0hcIixcblxuICAvKipcbiAgICogUmVqZWN0cyB1bm1hcHBlZCBjb250ZW50IHR5cGVzIHdpdGggYW4gSFRUUCA0MTUgJ1Vuc3VwcG9ydGVkIE1lZGlhIFR5cGUnXG4gICAqIHJlc3BvbnNlXG4gICAqL1xuICBORVZFUiA9IFwiTkVWRVJcIixcblxuICAvKipcbiAgICogQWxsb3dzIHBhc3MtdGhyb3VnaCB3aGVuIHRoZSBpbnRlZ3JhdGlvbiBoYXMgTk8gY29udGVudCB0eXBlcyBtYXBwZWQgdG9cbiAgICogdGVtcGxhdGVzLiBIb3dldmVyIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb250ZW50IHR5cGUgZGVmaW5lZCxcbiAgICogdW5tYXBwZWQgY29udGVudCB0eXBlcyB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgNDE1IHJlc3BvbnNlLlxuICAgKi9cbiAgV0hFTl9OT19URU1QTEFURVMgPSBcIldIRU5fTk9fVEVNUExBVEVTXCIsXG59XG5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25UeXBlIHtcbiAgLyoqXG4gICAqIEZvciBjb25uZWN0aW9ucyB0aHJvdWdoIHRoZSBwdWJsaWMgcm91dGFibGUgaW50ZXJuZXRcbiAgICovXG4gIElOVEVSTkVUID0gXCJJTlRFUk5FVFwiLFxuXG4gIC8qKlxuICAgKiBGb3IgcHJpdmF0ZSBjb25uZWN0aW9ucyBiZXR3ZWVuIEFQSSBHYXRld2F5IGFuZCBhIG5ldHdvcmsgbG9hZCBiYWxhbmNlciBpbiBhIFZQQ1xuICAgKi9cbiAgVlBDX0xJTksgPSBcIlZQQ19MSU5LXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAocmVnZXgpIHBhdHRlcm4gdXNlZCB0byBjaG9vc2UgYW4gaW50ZWdyYXRpb24gcmVzcG9uc2UgYmFzZWQgb24gdGhlIHJlc3BvbnNlIGZyb21cbiAgICogdGhlIGJhY2sgZW5kLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHN1Y2Nlc3MgcmVzcG9uc2UgcmV0dXJucyBub3RoaW5nIGFuZCB0aGUgZXJyb3IgcmVzcG9uc2UgcmV0dXJucyBzb21lIHN0cmluZywgeW91XG4gICAqIGNvdWxkIHVzZSB0aGUgYGAuK2BgIHJlZ2V4IHRvIG1hdGNoIGVycm9yIHJlc3BvbnNlLiBIb3dldmVyLCBtYWtlIHN1cmUgdGhhdCB0aGUgZXJyb3IgcmVzcG9uc2UgZG9lcyBub3QgY29udGFpbiBhbnlcbiAgICogbmV3bGluZSAoYGBcXG5gYCkgY2hhcmFjdGVyIGluIHN1Y2ggY2FzZXMuIElmIHRoZSBiYWNrIGVuZCBpcyBhbiBBV1MgTGFtYmRhIGZ1bmN0aW9uLCB0aGUgQVdTIExhbWJkYSBmdW5jdGlvbiBlcnJvclxuICAgKiBoZWFkZXIgaXMgbWF0Y2hlZC4gRm9yIGFsbCBvdGhlciBIVFRQIGFuZCBBV1MgYmFjayBlbmRzLCB0aGUgSFRUUCBzdGF0dXMgY29kZSBpcyBtYXRjaGVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcGlnYXRld2F5L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hcGktZ2F0ZXdheS1pbnRlZ3JhdGlvbi1zZXR0aW5ncy1pbnRlZ3JhdGlvbi1yZXNwb25zZS5odG1sXG4gICAqL1xuICByZWFkb25seSBzZWxlY3Rpb25QYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIGNvZGUgdGhhdCBBUEkgR2F0ZXdheSB1c2VzIHRvIG1hcCB0aGUgaW50ZWdyYXRpb24gcmVzcG9uc2UgdG9cbiAgICogYSBNZXRob2RSZXNwb25zZSBzdGF0dXMgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB0byBoYW5kbGUgcmVxdWVzdCBwYXlsb2FkIGNvbnRlbnQgdHlwZSBjb252ZXJzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZSB0aGUgcmVxdWVzdCBwYXlsb2FkIGlzIHBhc3NlZCB0aHJvdWdoIGZyb20gdGhlIG1ldGhvZFxuICAgKiByZXF1ZXN0IHRvIHRoZSBpbnRlZ3JhdGlvbiByZXF1ZXN0IHdpdGhvdXQgbW9kaWZpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudEhhbmRsaW5nPzogQ29udGVudEhhbmRsaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgcGFyYW1ldGVycyBmcm9tIHRoZSBiYWNrZW5kIHJlc3BvbnNlIHRoYXQgQVBJIEdhdGV3YXkgc2VuZHNcbiAgICogdG8gdGhlIG1ldGhvZCByZXNwb25zZS5cbiAgICpcbiAgICogVXNlIHRoZSBkZXN0aW5hdGlvbiBhcyB0aGUga2V5IGFuZCB0aGUgc291cmNlIGFzIHRoZSB2YWx1ZTpcbiAgICpcbiAgICogLSBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhbiBleGlzdGluZyByZXNwb25zZSBwYXJhbWV0ZXIgaW4gdGhlXG4gICAqICAgTWV0aG9kUmVzcG9uc2UgcHJvcGVydHkuXG4gICAqIC0gVGhlIHNvdXJjZSBtdXN0IGJlIGFuIGV4aXN0aW5nIG1ldGhvZCByZXF1ZXN0IHBhcmFtZXRlciBvciBhIHN0YXRpY1xuICAgKiAgIHZhbHVlLiBZb3UgbXVzdCBlbmNsb3NlIHN0YXRpYyB2YWx1ZXMgaW4gc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhbmRcbiAgICogICBwcmUtZW5jb2RlIHRoZXNlIHZhbHVlcyBiYXNlZCBvbiB0aGUgZGVzdGluYXRpb24gc3BlY2lmaWVkIGluIHRoZVxuICAgKiAgIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmVxdWVzdC1yZXNwb25zZS1kYXRhLW1hcHBpbmdzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlUGFyYW1ldGVycz86IHsgW2Rlc3RpbmF0aW9uOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlcyB0aGF0IGFyZSB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgaW50ZWdyYXRpb24gcmVzcG9uc2UgYm9keS5cbiAgICogU3BlY2lmeSB0ZW1wbGF0ZXMgYXMga2V5LXZhbHVlIHBhaXJzLCB3aXRoIGEgY29udGVudCB0eXBlIGFzIHRoZSBrZXkgYW5kXG4gICAqIGEgdGVtcGxhdGUgYXMgdGhlIHZhbHVlLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwaWdhdGV3YXkvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FwaS1nYXRld2F5LW1hcHBpbmctdGVtcGxhdGUtcmVmZXJlbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlVGVtcGxhdGVzPzogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZyB9O1xufVxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Integration, IntegrationConfig, IntegrationOptions } from "../integration";
|
|
2
|
+
import { Method } from "../method";
|
|
3
|
+
export interface AwsIntegrationProps {
|
|
4
|
+
/**
|
|
5
|
+
* Use AWS_PROXY integration.
|
|
6
|
+
*
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
readonly proxy?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* The name of the integrated AWS service (e.g. `s3`)
|
|
12
|
+
*/
|
|
13
|
+
readonly service: string;
|
|
14
|
+
/**
|
|
15
|
+
* A designated subdomain supported by certain AWS service for fast
|
|
16
|
+
* host-name lookup.
|
|
17
|
+
*/
|
|
18
|
+
readonly subdomain?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The path to use for path-base APIs.
|
|
21
|
+
*
|
|
22
|
+
* For example, for S3 GET, you can set path to `bucket/key`.
|
|
23
|
+
* For lambda, you can set path to `2015-03-31/functions/${function-arn}/invocations`
|
|
24
|
+
*
|
|
25
|
+
* Mutually exclusive with the `action` options.
|
|
26
|
+
*/
|
|
27
|
+
readonly path?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The AWS action to perform in the integration.
|
|
30
|
+
*
|
|
31
|
+
* Use `actionParams` to specify key-value params for the action.
|
|
32
|
+
*
|
|
33
|
+
* Mutually exclusive with `path`.
|
|
34
|
+
*/
|
|
35
|
+
readonly action?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Parameters for the action.
|
|
38
|
+
*
|
|
39
|
+
* `action` must be set, and `path` must be undefined.
|
|
40
|
+
* The action params will be URL encoded.
|
|
41
|
+
*/
|
|
42
|
+
readonly actionParameters?: {
|
|
43
|
+
[key: string]: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* The integration's HTTP method type.
|
|
47
|
+
*
|
|
48
|
+
* @default POST
|
|
49
|
+
*/
|
|
50
|
+
readonly integrationHttpMethod?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Integration options, such as content handling, request/response mapping, etc.
|
|
53
|
+
*/
|
|
54
|
+
readonly options?: IntegrationOptions;
|
|
55
|
+
/**
|
|
56
|
+
* The region of the integrated AWS service.
|
|
57
|
+
*
|
|
58
|
+
* @default - same region as the stack
|
|
59
|
+
*/
|
|
60
|
+
readonly region?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* This type of integration lets an API expose AWS service actions. It is
|
|
64
|
+
* intended for calling all AWS service actions, but is not recommended for
|
|
65
|
+
* calling a Lambda function, because the Lambda custom integration is a legacy
|
|
66
|
+
* technology.
|
|
67
|
+
*/
|
|
68
|
+
export declare class AwsIntegration extends Integration {
|
|
69
|
+
private scope?;
|
|
70
|
+
constructor(props: AwsIntegrationProps);
|
|
71
|
+
bind(method: Method): IntegrationConfig;
|
|
72
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AwsIntegration = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const cdk = require("cdktf");
|
|
7
|
+
const arn_1 = require("../../arn");
|
|
8
|
+
const aws_stack_1 = require("../../aws-stack");
|
|
9
|
+
const apigateway_util_1 = require("../apigateway-util");
|
|
10
|
+
const integration_1 = require("../integration");
|
|
11
|
+
/**
|
|
12
|
+
* This type of integration lets an API expose AWS service actions. It is
|
|
13
|
+
* intended for calling all AWS service actions, but is not recommended for
|
|
14
|
+
* calling a Lambda function, because the Lambda custom integration is a legacy
|
|
15
|
+
* technology.
|
|
16
|
+
*/
|
|
17
|
+
class AwsIntegration extends integration_1.Integration {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
const backend = props.subdomain
|
|
20
|
+
? `${props.subdomain}.${props.service}`
|
|
21
|
+
: props.service;
|
|
22
|
+
const type = props.proxy ? integration_1.IntegrationType.AWS_PROXY : integration_1.IntegrationType.AWS;
|
|
23
|
+
const { apiType, apiValue } = (0, apigateway_util_1.parseAwsApiCall)(props.path, props.action, props.actionParameters);
|
|
24
|
+
super({
|
|
25
|
+
type,
|
|
26
|
+
integrationHttpMethod: props.integrationHttpMethod || "POST",
|
|
27
|
+
uri: cdk.Lazy.stringValue({
|
|
28
|
+
produce: () => {
|
|
29
|
+
if (!this.scope) {
|
|
30
|
+
// throw new UnscopedValidationError(
|
|
31
|
+
throw new Error("AwsIntegration must be used in API");
|
|
32
|
+
}
|
|
33
|
+
return aws_stack_1.AwsStack.ofAwsConstruct(this.scope).formatArn({
|
|
34
|
+
service: "apigateway",
|
|
35
|
+
account: backend,
|
|
36
|
+
resource: apiType,
|
|
37
|
+
arnFormat: arn_1.ArnFormat.SLASH_RESOURCE_NAME,
|
|
38
|
+
resourceName: apiValue,
|
|
39
|
+
region: props.region,
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
}),
|
|
43
|
+
options: props.options,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
bind(method) {
|
|
47
|
+
const bindResult = super.bind(method);
|
|
48
|
+
this.scope = method;
|
|
49
|
+
return bindResult;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.AwsIntegration = AwsIntegration;
|
|
53
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
54
|
+
AwsIntegration[_a] = { fqn: "terraconstructs.aws.compute.AwsIntegration", version: "0.1.1" };
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2ludGVncmF0aW9ucy9hd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFFN0IsbUNBQXNDO0FBQ3RDLCtDQUEyQztBQUMzQyx3REFBcUQ7QUFDckQsZ0RBS3dCO0FBeUV4Qjs7Ozs7R0FLRztBQUNILE1BQWEsY0FBZSxTQUFRLHlCQUFXO0lBRzdDLFlBQVksS0FBMEI7UUFDcEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVM7WUFDN0IsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDZCQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBZSxDQUFDLEdBQUcsQ0FBQztRQUMzRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUEsaUNBQWUsRUFDM0MsS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsTUFBTSxFQUNaLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDdkIsQ0FBQztRQUNGLEtBQUssQ0FBQztZQUNKLElBQUk7WUFDSixxQkFBcUIsRUFBRSxLQUFLLENBQUMscUJBQXFCLElBQUksTUFBTTtZQUM1RCxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDaEIscUNBQXFDO3dCQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQ3hELENBQUM7b0JBQ0QsT0FBTyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUNuRCxPQUFPLEVBQUUsWUFBWTt3QkFDckIsT0FBTyxFQUFFLE9BQU87d0JBQ2hCLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixTQUFTLEVBQUUsZUFBUyxDQUFDLG1CQUFtQjt3QkFDeEMsWUFBWSxFQUFFLFFBQVE7d0JBQ3RCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtxQkFDckIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7YUFDRixDQUFDO1lBQ0YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJLENBQUMsTUFBYztRQUN4QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7O0FBeENILHdDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uLy4uL2FyblwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQgeyBwYXJzZUF3c0FwaUNhbGwgfSBmcm9tIFwiLi4vYXBpZ2F0ZXdheS11dGlsXCI7XG5pbXBvcnQge1xuICBJbnRlZ3JhdGlvbixcbiAgSW50ZWdyYXRpb25Db25maWcsXG4gIEludGVncmF0aW9uT3B0aW9ucyxcbiAgSW50ZWdyYXRpb25UeXBlLFxufSBmcm9tIFwiLi4vaW50ZWdyYXRpb25cIjtcbmltcG9ydCB7IE1ldGhvZCB9IGZyb20gXCIuLi9tZXRob2RcIjtcbi8vIFRPRE86IEFkb3B0IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yXG4vLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzMzMzgyL1xuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvcHVsbC8zMzA0NVxuLy8gaW1wb3J0IHsgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9saWIvZXJyb3JzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzSW50ZWdyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBVc2UgQVdTX1BST1hZIGludGVncmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZWdyYXRlZCBBV1Mgc2VydmljZSAoZS5nLiBgczNgKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRlc2lnbmF0ZWQgc3ViZG9tYWluIHN1cHBvcnRlZCBieSBjZXJ0YWluIEFXUyBzZXJ2aWNlIGZvciBmYXN0XG4gICAqIGhvc3QtbmFtZSBsb29rdXAuXG4gICAqL1xuICByZWFkb25seSBzdWJkb21haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHVzZSBmb3IgcGF0aC1iYXNlIEFQSXMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBmb3IgUzMgR0VULCB5b3UgY2FuIHNldCBwYXRoIHRvIGBidWNrZXQva2V5YC5cbiAgICogRm9yIGxhbWJkYSwgeW91IGNhbiBzZXQgcGF0aCB0byBgMjAxNS0wMy0zMS9mdW5jdGlvbnMvJHtmdW5jdGlvbi1hcm59L2ludm9jYXRpb25zYFxuICAgKlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCB0aGUgYGFjdGlvbmAgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIGludGVncmF0aW9uLlxuICAgKlxuICAgKiBVc2UgYGFjdGlvblBhcmFtc2AgdG8gc3BlY2lmeSBrZXktdmFsdWUgcGFyYW1zIGZvciB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgcGF0aGAuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqIGBhY3Rpb25gIG11c3QgYmUgc2V0LCBhbmQgYHBhdGhgIG11c3QgYmUgdW5kZWZpbmVkLlxuICAgKiBUaGUgYWN0aW9uIHBhcmFtcyB3aWxsIGJlIFVSTCBlbmNvZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uUGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbidzIEhUVFAgbWV0aG9kIHR5cGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFBPU1RcbiAgICovXG4gIHJlYWRvbmx5IGludGVncmF0aW9uSHR0cE1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogSW50ZWdyYXRpb24gb3B0aW9ucywgc3VjaCBhcyBjb250ZW50IGhhbmRsaW5nLCByZXF1ZXN0L3Jlc3BvbnNlIG1hcHBpbmcsIGV0Yy5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpb24gb2YgdGhlIGludGVncmF0ZWQgQVdTIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc2FtZSByZWdpb24gYXMgdGhlIHN0YWNrXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhpcyB0eXBlIG9mIGludGVncmF0aW9uIGxldHMgYW4gQVBJIGV4cG9zZSBBV1Mgc2VydmljZSBhY3Rpb25zLiBJdCBpc1xuICogaW50ZW5kZWQgZm9yIGNhbGxpbmcgYWxsIEFXUyBzZXJ2aWNlIGFjdGlvbnMsIGJ1dCBpcyBub3QgcmVjb21tZW5kZWQgZm9yXG4gKiBjYWxsaW5nIGEgTGFtYmRhIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSBMYW1iZGEgY3VzdG9tIGludGVncmF0aW9uIGlzIGEgbGVnYWN5XG4gKiB0ZWNobm9sb2d5LlxuICovXG5leHBvcnQgY2xhc3MgQXdzSW50ZWdyYXRpb24gZXh0ZW5kcyBJbnRlZ3JhdGlvbiB7XG4gIHByaXZhdGUgc2NvcGU/OiBJQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBd3NJbnRlZ3JhdGlvblByb3BzKSB7XG4gICAgY29uc3QgYmFja2VuZCA9IHByb3BzLnN1YmRvbWFpblxuICAgICAgPyBgJHtwcm9wcy5zdWJkb21haW59LiR7cHJvcHMuc2VydmljZX1gXG4gICAgICA6IHByb3BzLnNlcnZpY2U7XG4gICAgY29uc3QgdHlwZSA9IHByb3BzLnByb3h5ID8gSW50ZWdyYXRpb25UeXBlLkFXU19QUk9YWSA6IEludGVncmF0aW9uVHlwZS5BV1M7XG4gICAgY29uc3QgeyBhcGlUeXBlLCBhcGlWYWx1ZSB9ID0gcGFyc2VBd3NBcGlDYWxsKFxuICAgICAgcHJvcHMucGF0aCxcbiAgICAgIHByb3BzLmFjdGlvbixcbiAgICAgIHByb3BzLmFjdGlvblBhcmFtZXRlcnMsXG4gICAgKTtcbiAgICBzdXBlcih7XG4gICAgICB0eXBlLFxuICAgICAgaW50ZWdyYXRpb25IdHRwTWV0aG9kOiBwcm9wcy5pbnRlZ3JhdGlvbkh0dHBNZXRob2QgfHwgXCJQT1NUXCIsXG4gICAgICB1cmk6IGNkay5MYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5zY29wZSkge1xuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXdzSW50ZWdyYXRpb24gbXVzdCBiZSB1c2VkIGluIEFQSVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHRoaXMuc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImFwaWdhdGV3YXlcIixcbiAgICAgICAgICAgIGFjY291bnQ6IGJhY2tlbmQsXG4gICAgICAgICAgICByZXNvdXJjZTogYXBpVHlwZSxcbiAgICAgICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICAgICAgICByZXNvdXJjZU5hbWU6IGFwaVZhbHVlLFxuICAgICAgICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIG9wdGlvbnM6IHByb3BzLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYmluZChtZXRob2Q6IE1ldGhvZCk6IEludGVncmF0aW9uQ29uZmlnIHtcbiAgICBjb25zdCBiaW5kUmVzdWx0ID0gc3VwZXIuYmluZChtZXRob2QpO1xuICAgIHRoaXMuc2NvcGUgPSBtZXRob2Q7XG4gICAgcmV0dXJuIGJpbmRSZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|