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,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DockerImageAsset = exports.Platform = exports.NetworkMode = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
// https://github.com/aws/aws-cdk/blob/v2.168.0/packages/aws-cdk-lib/aws-ecr-assets/lib/image-asset.ts
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const cdktf_1 = require("cdktf");
|
|
10
|
+
const constructs_1 = require("constructs");
|
|
11
|
+
const ecr = require("..");
|
|
12
|
+
const __1 = require("../../..");
|
|
13
|
+
const aws_stack_1 = require("../../aws-stack");
|
|
14
|
+
/**
|
|
15
|
+
* networking mode on build time supported by docker
|
|
16
|
+
*/
|
|
17
|
+
class NetworkMode {
|
|
18
|
+
/**
|
|
19
|
+
* Reuse another container's network stack
|
|
20
|
+
*
|
|
21
|
+
* @param containerId The target container's id or name
|
|
22
|
+
*/
|
|
23
|
+
static fromContainer(containerId) {
|
|
24
|
+
return new NetworkMode(`container:${containerId}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Used to specify a custom networking mode
|
|
28
|
+
* Use this if the networking mode name is not yet supported by the CDK.
|
|
29
|
+
*
|
|
30
|
+
* @param mode The networking mode to use for docker build
|
|
31
|
+
*/
|
|
32
|
+
static custom(mode) {
|
|
33
|
+
return new NetworkMode(mode);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @param mode The networking mode to use for docker build
|
|
37
|
+
*/
|
|
38
|
+
constructor(mode) {
|
|
39
|
+
this.mode = mode;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.NetworkMode = NetworkMode;
|
|
43
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
44
|
+
NetworkMode[_a] = { fqn: "terraconstructs.aws.storage.assets.NetworkMode", version: "0.1.1" };
|
|
45
|
+
/**
|
|
46
|
+
* The default networking mode if omitted, create a network stack on the default Docker bridge
|
|
47
|
+
*/
|
|
48
|
+
NetworkMode.DEFAULT = new NetworkMode("default");
|
|
49
|
+
/**
|
|
50
|
+
* Use the Docker host network stack
|
|
51
|
+
*/
|
|
52
|
+
NetworkMode.HOST = new NetworkMode("host");
|
|
53
|
+
/**
|
|
54
|
+
* Disable the network stack, only the loopback device will be created
|
|
55
|
+
*/
|
|
56
|
+
NetworkMode.NONE = new NetworkMode("none");
|
|
57
|
+
/**
|
|
58
|
+
* platform supported by docker
|
|
59
|
+
*/
|
|
60
|
+
class Platform {
|
|
61
|
+
/**
|
|
62
|
+
* Used to specify a custom platform
|
|
63
|
+
* Use this if the platform name is not yet supported by the CDK.
|
|
64
|
+
*
|
|
65
|
+
* @param platform The platform to use for docker build
|
|
66
|
+
*/
|
|
67
|
+
static custom(platform) {
|
|
68
|
+
return new Platform(platform);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @param platform The platform to use for docker build
|
|
72
|
+
*/
|
|
73
|
+
constructor(platform) {
|
|
74
|
+
this.platform = platform;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.Platform = Platform;
|
|
78
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
79
|
+
Platform[_b] = { fqn: "terraconstructs.aws.storage.assets.Platform", version: "0.1.1" };
|
|
80
|
+
/**
|
|
81
|
+
* Build for linux/amd64
|
|
82
|
+
*/
|
|
83
|
+
Platform.LINUX_AMD64 = new Platform("linux/amd64");
|
|
84
|
+
/**
|
|
85
|
+
* Build for linux/arm64
|
|
86
|
+
*/
|
|
87
|
+
Platform.LINUX_ARM64 = new Platform("linux/arm64");
|
|
88
|
+
/**
|
|
89
|
+
* An asset that represents a Docker image.
|
|
90
|
+
*
|
|
91
|
+
* The image will be created in build time and uploaded to an ECR repository.
|
|
92
|
+
*
|
|
93
|
+
* WARNING: `DockerAsset[0-9]*` and `DockerAsset_Image[0-9]*` identifiers are
|
|
94
|
+
* used internally by the Stack Asset Manager and will cause Id conflicts.
|
|
95
|
+
*/
|
|
96
|
+
class DockerImageAsset extends constructs_1.Construct {
|
|
97
|
+
constructor(scope, id, props) {
|
|
98
|
+
super(scope, id);
|
|
99
|
+
// none of the properties use tokens
|
|
100
|
+
validateProps(props);
|
|
101
|
+
// resolve full path
|
|
102
|
+
const dir = path.resolve(props.directory);
|
|
103
|
+
if (!fs.existsSync(dir)) {
|
|
104
|
+
// throw new ValidationError(`Cannot find image directory at ${dir}`, this);
|
|
105
|
+
throw new Error(`Cannot find image directory at ${dir}`);
|
|
106
|
+
}
|
|
107
|
+
// validate the docker file exists
|
|
108
|
+
this.dockerfilePath = props.file || "Dockerfile";
|
|
109
|
+
const file = path.join(dir, this.dockerfilePath);
|
|
110
|
+
if (!fs.existsSync(file)) {
|
|
111
|
+
// throw new ValidationError(`Cannot find file at ${file}`, this);
|
|
112
|
+
throw new Error(`Cannot find file at ${file}`);
|
|
113
|
+
}
|
|
114
|
+
let ignoreMode = props.ignoreMode ?? __1.IgnoreMode.DOCKER;
|
|
115
|
+
let exclude = props.exclude || [];
|
|
116
|
+
const ignore = path.join(dir, ".dockerignore");
|
|
117
|
+
if (fs.existsSync(ignore)) {
|
|
118
|
+
const dockerIgnorePatterns = fs
|
|
119
|
+
.readFileSync(ignore)
|
|
120
|
+
.toString()
|
|
121
|
+
.split("\n")
|
|
122
|
+
.filter((e) => !!e);
|
|
123
|
+
exclude = [
|
|
124
|
+
...dockerIgnorePatterns,
|
|
125
|
+
...exclude,
|
|
126
|
+
// Ensure .dockerignore is included no matter what.
|
|
127
|
+
"!.dockerignore",
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
// Ensure the Dockerfile is included no matter what.
|
|
131
|
+
exclude.push("!" + path.basename(file));
|
|
132
|
+
// Ensure the cdk.out folder is not included to avoid infinite loops.
|
|
133
|
+
// const cdkout = Stage.of(this)?.outdir ?? "cdk.out";
|
|
134
|
+
// exclude.push(cdkout);
|
|
135
|
+
exclude.push("cdk.out");
|
|
136
|
+
if (props.repositoryName) {
|
|
137
|
+
// "@aws-cdk/aws-ecr-assets:repositoryNameDeprecated",
|
|
138
|
+
cdktf_1.Annotations.of(this).addWarning('DockerImageAsset.repositoryName is deprecated. Override "core.Stack.addDockerImageAsset" to control asset locations');
|
|
139
|
+
}
|
|
140
|
+
// include build context in "extra" so it will impact the hash
|
|
141
|
+
const extraHash = {};
|
|
142
|
+
if (props.invalidation?.extraHash !== false && props.extraHash) {
|
|
143
|
+
extraHash.user = props.extraHash;
|
|
144
|
+
}
|
|
145
|
+
if (props.invalidation?.buildArgs !== false && props.buildArgs) {
|
|
146
|
+
extraHash.buildArgs = props.buildArgs;
|
|
147
|
+
}
|
|
148
|
+
if (props.invalidation?.buildSecrets !== false && props.buildSecrets) {
|
|
149
|
+
extraHash.buildSecrets = props.buildSecrets;
|
|
150
|
+
}
|
|
151
|
+
if (props.invalidation?.buildSsh !== false && props.buildSsh) {
|
|
152
|
+
extraHash.buildSsh = props.buildSsh;
|
|
153
|
+
}
|
|
154
|
+
if (props.invalidation?.target !== false && props.target) {
|
|
155
|
+
extraHash.target = props.target;
|
|
156
|
+
}
|
|
157
|
+
if (props.invalidation?.file !== false && props.file) {
|
|
158
|
+
extraHash.file = props.file;
|
|
159
|
+
}
|
|
160
|
+
if (props.invalidation?.repositoryName !== false && props.repositoryName) {
|
|
161
|
+
extraHash.repositoryName = props.repositoryName;
|
|
162
|
+
}
|
|
163
|
+
if (props.invalidation?.networkMode !== false && props.networkMode) {
|
|
164
|
+
extraHash.networkMode = props.networkMode;
|
|
165
|
+
}
|
|
166
|
+
if (props.invalidation?.platform !== false && props.platform) {
|
|
167
|
+
extraHash.platform = props.platform;
|
|
168
|
+
}
|
|
169
|
+
if (props.invalidation?.outputs !== false && props.outputs) {
|
|
170
|
+
extraHash.outputs = props.outputs;
|
|
171
|
+
}
|
|
172
|
+
// add "salt" to the hash in order to invalidate the image in the upgrade to
|
|
173
|
+
// 1.21.0 which removes the AdoptedRepository resource (and will cause the
|
|
174
|
+
// deletion of the ECR repository the app used).
|
|
175
|
+
extraHash.version = "1.21.0";
|
|
176
|
+
const staging = new __1.AssetStaging(this, "Staging", {
|
|
177
|
+
...props,
|
|
178
|
+
follow: props.followSymlinks,
|
|
179
|
+
exclude,
|
|
180
|
+
ignoreMode,
|
|
181
|
+
sourcePath: dir,
|
|
182
|
+
extraHash: Object.keys(extraHash).length === 0
|
|
183
|
+
? undefined
|
|
184
|
+
: JSON.stringify(extraHash),
|
|
185
|
+
});
|
|
186
|
+
this.assetHash = staging.assetHash;
|
|
187
|
+
this.sourceHash = this.assetHash;
|
|
188
|
+
const stack = aws_stack_1.AwsStack.ofAwsConstruct(this);
|
|
189
|
+
this.assetPath = staging.relativeStagedPath(stack);
|
|
190
|
+
this.assetName = props.assetName;
|
|
191
|
+
this.dockerBuildArgs = props.buildArgs;
|
|
192
|
+
this.dockerBuildSecrets = props.buildSecrets;
|
|
193
|
+
this.dockerBuildSsh = props.buildSsh;
|
|
194
|
+
this.dockerBuildTarget = props.target;
|
|
195
|
+
this.dockerOutputs = props.outputs;
|
|
196
|
+
this.dockerCacheFrom = props.cacheFrom;
|
|
197
|
+
this.dockerCacheTo = props.cacheTo;
|
|
198
|
+
this.dockerCacheDisabled = props.cacheDisabled;
|
|
199
|
+
const location = stack.addDockerImageAsset({
|
|
200
|
+
directoryName: this.assetPath,
|
|
201
|
+
assetName: this.assetName,
|
|
202
|
+
dockerBuildArgs: this.dockerBuildArgs,
|
|
203
|
+
dockerBuildSecrets: this.dockerBuildSecrets,
|
|
204
|
+
dockerBuildSsh: this.dockerBuildSsh,
|
|
205
|
+
dockerBuildTarget: this.dockerBuildTarget,
|
|
206
|
+
dockerFile: props.file,
|
|
207
|
+
sourceHash: staging.assetHash,
|
|
208
|
+
networkMode: props.networkMode?.mode,
|
|
209
|
+
platform: props.platform?.platform,
|
|
210
|
+
dockerOutputs: this.dockerOutputs,
|
|
211
|
+
dockerCacheFrom: this.dockerCacheFrom,
|
|
212
|
+
dockerCacheTo: this.dockerCacheTo,
|
|
213
|
+
dockerCacheDisabled: this.dockerCacheDisabled,
|
|
214
|
+
});
|
|
215
|
+
this.repository = ecr.Repository.fromRepositoryName(this, "Repository", location.repositoryName);
|
|
216
|
+
this.imageUri = location.imageUri;
|
|
217
|
+
this.imageTag = location.imageTag ?? this.assetHash;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.DockerImageAsset = DockerImageAsset;
|
|
221
|
+
_c = JSII_RTTI_SYMBOL_1;
|
|
222
|
+
DockerImageAsset[_c] = { fqn: "terraconstructs.aws.storage.assets.DockerImageAsset", version: "0.1.1" };
|
|
223
|
+
function validateProps(props) {
|
|
224
|
+
for (const [key, value] of Object.entries(props)) {
|
|
225
|
+
if (cdktf_1.Token.isUnresolved(value)) {
|
|
226
|
+
// throw new UnscopedValidationError(
|
|
227
|
+
throw new Error(`Cannot use Token as value of '${key}': this value is used before deployment starts`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
validateBuildArgs(props.buildArgs);
|
|
231
|
+
validateBuildSecrets(props.buildSecrets);
|
|
232
|
+
}
|
|
233
|
+
function validateBuildProps(buildPropName, buildProps) {
|
|
234
|
+
for (const [key, value] of Object.entries(buildProps || {})) {
|
|
235
|
+
if (cdktf_1.Token.isUnresolved(key) || cdktf_1.Token.isUnresolved(value)) {
|
|
236
|
+
// throw new UnscopedValidationError(
|
|
237
|
+
throw new Error(`Cannot use tokens in keys or values of "${buildPropName}" since they are needed before deployment`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function validateBuildArgs(buildArgs) {
|
|
242
|
+
validateBuildProps("buildArgs", buildArgs);
|
|
243
|
+
}
|
|
244
|
+
function validateBuildSecrets(buildSecrets) {
|
|
245
|
+
validateBuildProps("buildSecrets", buildSecrets);
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL3N0b3JhZ2UvYXNzZXRzL2ltYWdlLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0dBQXNHO0FBRXRHLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTJDO0FBQzNDLDJDQUF1QztBQUN2QywwQkFBMEI7QUFDMUIsZ0NBT2tCO0FBQ2xCLCtDQUEyQztBQUUzQzs7R0FFRztBQUNILE1BQWEsV0FBVztJQWdCdEI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBbUI7UUFDN0MsT0FBTyxJQUFJLFdBQVcsQ0FBQyxhQUFhLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBb0MsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDOztBQXRDdEQsa0NBdUNDOzs7QUF0Q0M7O0dBRUc7QUFDb0IsbUJBQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUU1RDs7R0FFRztBQUNvQixnQkFBSSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXREOztHQUVHO0FBQ29CLGdCQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUEyQnhEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBV25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFnQjtRQUNuQyxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQW9DLFFBQWdCO1FBQWhCLGFBQVEs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Q0FBQyxZQUFZLEVBQUUsU0FBUyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0QsU0FBUyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsWUFBWSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckUsU0FBUyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsUUFBUSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0QsU0FBUyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsU0FBUyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsY0FBYyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekUsU0FBUyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsV0FBVyxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FB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Q0gsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsU0FBcUM7SUFDOUQsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLFlBQXdDO0lBQ3BFLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTY4LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHMvbGliL2ltYWdlLWFzc2V0LnRzXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMsIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgZWNyIGZyb20gXCIuLlwiO1xuaW1wb3J0IHtcbiAgQXNzZXRTdGFnaW5nLFxuICBGaWxlRmluZ2VycHJpbnRPcHRpb25zLFxuICBJZ25vcmVNb2RlLFxuICAvLyBWYWxpZGF0aW9uRXJyb3IsXG4gIC8vIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBJQXNzZXQsXG59IGZyb20gXCIuLi8uLi8uLlwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vLi4vYXdzLXN0YWNrXCI7XG5cbi8qKlxuICogbmV0d29ya2luZyBtb2RlIG9uIGJ1aWxkIHRpbWUgc3VwcG9ydGVkIGJ5IGRvY2tlclxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya01vZGUge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgbmV0d29ya2luZyBtb2RlIGlmIG9taXR0ZWQsIGNyZWF0ZSBhIG5ldHdvcmsgc3RhY2sgb24gdGhlIGRlZmF1bHQgRG9ja2VyIGJyaWRnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUID0gbmV3IE5ldHdvcmtNb2RlKFwiZGVmYXVsdFwiKTtcblxuICAvKipcbiAgICogVXNlIHRoZSBEb2NrZXIgaG9zdCBuZXR3b3JrIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhPU1QgPSBuZXcgTmV0d29ya01vZGUoXCJob3N0XCIpO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBuZXR3b3JrIHN0YWNrLCBvbmx5IHRoZSBsb29wYmFjayBkZXZpY2Ugd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgTmV0d29ya01vZGUoXCJub25lXCIpO1xuXG4gIC8qKlxuICAgKiBSZXVzZSBhbm90aGVyIGNvbnRhaW5lcidzIG5ldHdvcmsgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lcklkIFRoZSB0YXJnZXQgY29udGFpbmVyJ3MgaWQgb3IgbmFtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ29udGFpbmVyKGNvbnRhaW5lcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtNb2RlKGBjb250YWluZXI6JHtjb250YWluZXJJZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gbmV0d29ya2luZyBtb2RlXG4gICAqIFVzZSB0aGlzIGlmIHRoZSBuZXR3b3JraW5nIG1vZGUgbmFtZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgQ0RLLlxuICAgKlxuICAgKiBAcGFyYW0gbW9kZSBUaGUgbmV0d29ya2luZyBtb2RlIHRvIHVzZSBmb3IgZG9ja2VyIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShtb2RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtNb2RlKG1vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBtb2RlIFRoZSBuZXR3b3JraW5nIG1vZGUgdG8gdXNlIGZvciBkb2NrZXIgYnVpbGRcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1vZGU6IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBwbGF0Zm9ybSBzdXBwb3J0ZWQgYnkgZG9ja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBCdWlsZCBmb3IgbGludXgvYW1kNjRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElOVVhfQU1ENjQgPSBuZXcgUGxhdGZvcm0oXCJsaW51eC9hbWQ2NFwiKTtcblxuICAvKipcbiAgICogQnVpbGQgZm9yIGxpbnV4L2FybTY0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJTlVYX0FSTTY0ID0gbmV3IFBsYXRmb3JtKFwibGludXgvYXJtNjRcIik7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBhIGN1c3RvbSBwbGF0Zm9ybVxuICAgKiBVc2UgdGhpcyBpZiB0aGUgcGxhdGZvcm0gbmFtZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgQ0RLLlxuICAgKlxuICAgKiBAcGFyYW0gcGxhdGZvcm0gVGhlIHBsYXRmb3JtIHRvIHVzZSBmb3IgZG9ja2VyIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShwbGF0Zm9ybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQbGF0Zm9ybShwbGF0Zm9ybSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBsYXRmb3JtIFRoZSBwbGF0Zm9ybSB0byB1c2UgZm9yIGRvY2tlciBidWlsZFxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm06IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGNvbnRyb2wgaW52YWxpZGF0aW9uIG9mIGBEb2NrZXJJbWFnZUFzc2V0YCBhc3NldCBoYXNoZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJJbWFnZUFzc2V0SW52YWxpZGF0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2UgYGV4dHJhSGFzaGAgd2hpbGUgY2FsY3VsYXRpbmcgdGhlIGFzc2V0IGhhc2hcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFIYXNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIGBidWlsZEFyZ3NgIHdoaWxlIGNhbGN1bGF0aW5nIHRoZSBhc3NldCBoYXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZSBgYnVpbGRTZWNyZXRzYCB3aGlsZSBjYWxjdWxhdGluZyB0aGUgYXNzZXQgaGFzaFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBidWlsZFNlY3JldHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2UgYGJ1aWxkU3NoYCB3aGlsZSBjYWxjdWxhdGluZyB0aGUgYXNzZXQgaGFzaFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZSBgdGFyZ2V0YCB3aGlsZSBjYWxjdWxhdGluZyB0aGUgYXNzZXQgaGFzaFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2UgYGZpbGVgIHdoaWxlIGNhbGN1bGF0aW5nIHRoZSBhc3NldCBoYXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2UgYHJlcG9zaXRvcnlOYW1lYCB3aGlsZSBjYWxjdWxhdGluZyB0aGUgYXNzZXQgaGFzaFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVzZSBgbmV0d29ya01vZGVgIHdoaWxlIGNhbGN1bGF0aW5nIHRoZSBhc3NldCBoYXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtNb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIGBwbGF0Zm9ybWAgd2hpbGUgY2FsY3VsYXRpbmcgdGhlIGFzc2V0IGhhc2hcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2UgYG91dHB1dHNgIHdoaWxlIGNhbGN1bGF0aW5nIHRoZSBhc3NldCBoYXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM/OiBib29sZWFuO1xufVxuXG4vLyBUT0RPOiBEdXBsaWNhdGUgZnJvbSBjb3JlLkRvY2tlckNhY2hlT3B0aW9uP1xuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgRG9ja2VyIGNhY2hlIGJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBEb2NrZXJJbWFnZUFzc2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgZXh0ZW5kcyBGaWxlRmluZ2VycHJpbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEVDUiByZXBvc2l0b3J5IG5hbWVcbiAgICpcbiAgICogU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGUgaW1hZ2UsIGUuZy5cbiAgICogZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSwgd2l0aG91dCB0aGVcbiAgICogcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHQgRUNSIHJlcG9zaXRvcnkgZm9yIENESyBhc3NldHNcbiAgICogQGRlcHJlY2F0ZWQgdG8gY29udHJvbCB0aGUgbG9jYXRpb24gb2YgZG9ja2VyIGltYWdlIGFzc2V0cywgcGxlYXNlIG92ZXJyaWRlXG4gICAqIGBTdGFjay5hZGREb2NrZXJJbWFnZUFzc2V0YC4gdGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmVcbiAgICogcmVsZWFzZXMuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kLlxuICAgKlxuICAgKiBTaW5jZSBEb2NrZXIgYnVpbGQgYXJndW1lbnRzIGFyZSByZXNvbHZlZCBiZWZvcmUgZGVwbG95bWVudCwga2V5cyBhbmRcbiAgICogdmFsdWVzIGNhbm5vdCByZWZlciB0byB1bnJlc29sdmVkIHRva2VucyAoc3VjaCBhcyBgbGFtYmRhLmZ1bmN0aW9uQXJuYCBvclxuICAgKiBgcXVldWUucXVldWVVcmxgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHNlY3JldHMuXG4gICAqXG4gICAqIERvY2tlciBCdWlsZEtpdCBtdXN0IGJlIGVuYWJsZWQgdG8gdXNlIGJ1aWxkIHNlY3JldHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvYnVpbGRraXQvXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYnVpbGQgc2VjcmV0c1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpbXBvcnQgeyBEb2NrZXJCdWlsZFNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliJztcbiAgICpcbiAgICogY29uc3QgYnVpbGRTZWNyZXRzID0ge1xuICAgKiAgICdNWV9TRUNSRVQnOiBEb2NrZXJCdWlsZFNlY3JldC5mcm9tU3JjKCdmaWxlLnR4dCcpXG4gICAqIH07XG4gICAqL1xuICByZWFkb25seSBidWlsZFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTU0ggYWdlbnQgc29ja2V0IG9yIGtleXMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogRG9ja2VyIEJ1aWxkS2l0IG11c3QgYmUgZW5hYmxlZCB0byB1c2UgdGhlIHNzaCBmbGFnXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvYnVpbGRraXQvXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gLS1zc2ggZmxhZ1xuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTc2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY2tlciB0YXJnZXQgdG8gYnVpbGQgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdEb2NrZXJmaWxlJ1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmV0d29ya2luZyBtb2RlIGZvciB0aGUgUlVOIGNvbW1hbmRzIGR1cmluZyBidWlsZC4gU3VwcG9ydCBkb2NrZXIgQVBJIDEuMjUrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5ldHdvcmtpbmcgbW9kZSBzcGVjaWZpZWQgKHRoZSBkZWZhdWx0IG5ldHdvcmtpbmcgbW9kZSBgTmV0d29ya01vZGUuREVGQVVMVGAgd2lsbCBiZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBOZXR3b3JrTW9kZTtcblxuICAvKipcbiAgICogUGxhdGZvcm0gdG8gYnVpbGQgZm9yLiBfUmVxdWlyZXMgRG9ja2VyIEJ1aWxkeF8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcGxhdGZvcm0gc3BlY2lmaWVkICh0aGUgY3VycmVudCBtYWNoaW5lIGFyY2hpdGVjdHVyZSB3aWxsIGJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybT86IFBsYXRmb3JtO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGNvbnRyb2wgd2hpY2ggcGFyYW1ldGVycyBhcmUgdXNlZCB0byBpbnZhbGlkYXRlIHRoZSBhc3NldCBoYXNoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGhhc2ggYWxsIHBhcmFtZXRlcnNcbiAgICovXG4gIHJlYWRvbmx5IGludmFsaWRhdGlvbj86IERvY2tlckltYWdlQXNzZXRJbnZhbGlkYXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPdXRwdXRzIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gb3V0cHV0cyBhcmUgcGFzc2VkIHRvIHRoZSBidWlsZCBjb21tYW5kIChkZWZhdWx0IG91dHB1dHMgYXJlIHVzZWQpXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9idWlsZC8jY3VzdG9tLWJ1aWxkLW91dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY2tlciBpbWFnZSBhc3NldCBhbmQgaXRzIHBvdGVudGlhbCByZXZpc2lvbnMuXG4gICAqIFJlcXVpcmVkIGlmIHVzaW5nIEFwcFNjb3BlZFN0YWdpbmdTeW50aGVzaXplci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldCBuYW1lXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhY2hlIGZyb20gb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNhY2hlIGZyb20gb3B0aW9ucyBhcmUgcGFzc2VkIHRvIHRoZSBidWlsZCBjb21tYW5kXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvXG4gICAqL1xuICByZWFkb25seSBjYWNoZUZyb20/OiBEb2NrZXJDYWNoZU9wdGlvbltdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSB0byBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY2FjaGUgdG8gb3B0aW9ucyBhcmUgcGFzc2VkIHRvIHRoZSBidWlsZCBjb21tYW5kXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvXG4gICAqL1xuICByZWFkb25seSBjYWNoZVRvPzogRG9ja2VyQ2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgRG9ja2VySW1hZ2VBc3NldHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJJbWFnZUFzc2V0UHJvcHMgZXh0ZW5kcyBEb2NrZXJJbWFnZUFzc2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKlxuICAgKiBBbnkgZGlyZWN0b3J5IGluc2lkZSB3aXRoIGEgbmFtZSB0aGF0IG1hdGNoZXMgdGhlIENESyBvdXRwdXQgZm9sZGVyIChjZGsub3V0IGJ5IGRlZmF1bHQpIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSB0aGUgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGFzc2V0IHRoYXQgcmVwcmVzZW50cyBhIERvY2tlciBpbWFnZS5cbiAqXG4gKiBUaGUgaW1hZ2Ugd2lsbCBiZSBjcmVhdGVkIGluIGJ1aWxkIHRpbWUgYW5kIHVwbG9hZGVkIHRvIGFuIEVDUiByZXBvc2l0b3J5LlxuICpcbiAqIFdBUk5JTkc6IGBEb2NrZXJBc3NldFswLTldKmAgYW5kIGBEb2NrZXJBc3NldF9JbWFnZVswLTldKmAgaWRlbnRpZmllcnMgYXJlXG4gKiB1c2VkIGludGVybmFsbHkgYnkgdGhlIFN0YWNrIEFzc2V0IE1hbmFnZXIgYW5kIHdpbGwgY2F1c2UgSWQgY29uZmxpY3RzLlxuICovXG5leHBvcnQgY2xhc3MgRG9ja2VySW1hZ2VBc3NldCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElBc3NldCB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBVUkkgb2YgdGhlIGltYWdlIChpbmNsdWRpbmcgYSB0YWcpLiBVc2UgdGhpcyByZWZlcmVuY2UgdG8gcHVsbFxuICAgKiB0aGUgYXNzZXQuXG4gICAqL1xuICBwdWJsaWMgaW1hZ2VVcmk6IHN0cmluZztcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSB3aGVyZSB0aGUgaW1hZ2UgaXMgc3RvcmVkXG4gICAqL1xuICBwdWJsaWMgcmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBBIGhhc2ggb2YgdGhlIHNvdXJjZSBvZiB0aGlzIGFzc2V0LCB3aGljaCBpcyBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHRpbWUuIEFzIHRoaXMgaXMgYSBwbGFpblxuICAgKiBzdHJpbmcsIGl0IGNhbiBiZSB1c2VkIGluIGNvbnN0cnVjdCBJRHMgaW4gb3JkZXIgdG8gZW5mb3JjZSBjcmVhdGlvbiBvZiBhIG5ldyByZXNvdXJjZSB3aGVuXG4gICAqIHRoZSBjb250ZW50IGhhc2ggaGFzIGNoYW5nZWQuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhc3NldEhhc2hcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VIYXNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgaGFzaCBvZiB0aGlzIGFzc2V0LCB3aGljaCBpcyBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHRpbWUuIEFzIHRoaXMgaXMgYSBwbGFpbiBzdHJpbmcsIGl0XG4gICAqIGNhbiBiZSB1c2VkIGluIGNvbnN0cnVjdCBJRHMgaW4gb3JkZXIgdG8gZW5mb3JjZSBjcmVhdGlvbiBvZiBhIG5ldyByZXNvdXJjZSB3aGVuIHRoZSBjb250ZW50XG4gICAqIGhhc2ggaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXRIYXNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWcgb2YgdGhpcyBhc3NldCB3aGVuIGl0IGlzIHVwbG9hZGVkIHRvIEVDUi4gVGhlIHRhZyBtYXkgZGlmZmVyIGZyb20gdGhlIGFzc2V0SGFzaCBpZiBhIHN0YWNrIHN5bnRoZXNpemVyIGFkZHMgYSBkb2NrZXJUYWdQcmVmaXguXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VUYWc6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGFzc2V0LCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBDbG91ZCBBc3NlbWJseVxuICAgKlxuICAgKiBJZiBhc3NldCBzdGFnaW5nIGlzIGRpc2FibGVkLCB0aGlzIHdpbGwganVzdCBiZSB0aGUgb3JpZ2luYWwgcGF0aC5cbiAgICpcbiAgICogSWYgYXNzZXQgc3RhZ2luZyBpcyBlbmFibGVkIGl0IHdpbGwgYmUgdGhlIHN0YWdlZCBwYXRoLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhc3NldFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIERvY2tlcmZpbGUsIHJlbGF0aXZlIHRvIHRoZSBhc3NldFBhdGhcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyZmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyQnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkb2NrZXJCdWlsZFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTU0ggYWdlbnQgc29ja2V0IG9yIGtleXMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyQnVpbGRTc2g/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdXRwdXRzIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY2tlck91dHB1dHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY2tlciBpbWFnZSBhc3NldCBhbmQgaXRzIHBvdGVudGlhbCByZXZpc2lvbnMuXG4gICAqIFJlcXVpcmVkIGlmIHVzaW5nIEFwcFNjb3BlZFN0YWdpbmdTeW50aGVzaXplci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldCBuYW1lXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2FjaGUgZnJvbSBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY2tlckNhY2hlRnJvbT86IERvY2tlckNhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyQ2FjaGVUbz86IERvY2tlckNhY2hlT3B0aW9uO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBjYWNoZSBhbmQgcGFzcyBgLS1uby1jYWNoZWAgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY2tlckNhY2hlRGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgdGFyZ2V0IHRvIGJ1aWxkIHRvXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY2tlckJ1aWxkVGFyZ2V0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb2NrZXJJbWFnZUFzc2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gbm9uZSBvZiB0aGUgcHJvcGVydGllcyB1c2UgdG9rZW5zXG4gICAgdmFsaWRhdGVQcm9wcyhwcm9wcyk7XG5cbiAgICAvLyByZXNvbHZlIGZ1bGwgcGF0aFxuICAgIGNvbnN0IGRpciA9IHBhdGgucmVzb2x2ZShwcm9wcy5kaXJlY3RvcnkpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICAvLyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBDYW5ub3QgZmluZCBpbWFnZSBkaXJlY3RvcnkgYXQgJHtkaXJ9YCwgdGhpcyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGltYWdlIGRpcmVjdG9yeSBhdCAke2Rpcn1gKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGUgZG9ja2VyIGZpbGUgZXhpc3RzXG4gICAgdGhpcy5kb2NrZXJmaWxlUGF0aCA9IHByb3BzLmZpbGUgfHwgXCJEb2NrZXJmaWxlXCI7XG4gICAgY29uc3QgZmlsZSA9IHBhdGguam9pbihkaXIsIHRoaXMuZG9ja2VyZmlsZVBhdGgpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuICAgICAgLy8gdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgQ2Fubm90IGZpbmQgZmlsZSBhdCAke2ZpbGV9YCwgdGhpcyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGZpbGUgYXQgJHtmaWxlfWApO1xuICAgIH1cblxuICAgIGxldCBpZ25vcmVNb2RlID0gcHJvcHMuaWdub3JlTW9kZSA/PyBJZ25vcmVNb2RlLkRPQ0tFUjtcblxuICAgIGxldCBleGNsdWRlOiBzdHJpbmdbXSA9IHByb3BzLmV4Y2x1ZGUgfHwgW107XG5cbiAgICBjb25zdCBpZ25vcmUgPSBwYXRoLmpvaW4oZGlyLCBcIi5kb2NrZXJpZ25vcmVcIik7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhpZ25vcmUpKSB7XG4gICAgICBjb25zdCBkb2NrZXJJZ25vcmVQYXR0ZXJucyA9IGZzXG4gICAgICAgIC5yZWFkRmlsZVN5bmMoaWdub3JlKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLmZpbHRlcigoZSkgPT4gISFlKTtcblxuICAgICAgZXhjbHVkZSA9IFtcbiAgICAgICAgLi4uZG9ja2VySWdub3JlUGF0dGVybnMsXG4gICAgICAgIC4uLmV4Y2x1ZGUsXG5cbiAgICAgICAgLy8gRW5zdXJlIC5kb2NrZXJpZ25vcmUgaXMgaW5jbHVkZWQgbm8gbWF0dGVyIHdoYXQuXG4gICAgICAgIFwiIS5kb2NrZXJpZ25vcmVcIixcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoZSBEb2NrZXJmaWxlIGlzIGluY2x1ZGVkIG5vIG1hdHRlciB3aGF0LlxuICAgIGV4Y2x1ZGUucHVzaChcIiFcIiArIHBhdGguYmFzZW5hbWUoZmlsZSkpO1xuICAgIC8vIEVuc3VyZSB0aGUgY2RrLm91dCBmb2xkZXIgaXMgbm90IGluY2x1ZGVkIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzLlxuICAgIC8vIGNvbnN0IGNka291dCA9IFN0YWdlLm9mKHRoaXMpPy5vdXRkaXIgPz8gXCJjZGsub3V0XCI7XG4gICAgLy8gZXhjbHVkZS5wdXNoKGNka291dCk7XG4gICAgZXhjbHVkZS5wdXNoKFwiY2RrLm91dFwiKTtcblxuICAgIGlmIChwcm9wcy5yZXBvc2l0b3J5TmFtZSkge1xuICAgICAgLy8gXCJAYXdzLWNkay9hd3MtZWNyLWFzc2V0czpyZXBvc2l0b3J5TmFtZURlcHJlY2F0ZWRcIixcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgICdEb2NrZXJJbWFnZUFzc2V0LnJlcG9zaXRvcnlOYW1lIGlzIGRlcHJlY2F0ZWQuIE92ZXJyaWRlIFwiY29yZS5TdGFjay5hZGREb2NrZXJJbWFnZUFzc2V0XCIgdG8gY29udHJvbCBhc3NldCBsb2NhdGlvbnMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBpbmNsdWRlIGJ1aWxkIGNvbnRleHQgaW4gXCJleHRyYVwiIHNvIGl0IHdpbGwgaW1wYWN0IHRoZSBoYXNoXG4gICAgY29uc3QgZXh0cmFIYXNoOiB7IFtmaWVsZDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBpZiAocHJvcHMuaW52YWxpZGF0aW9uPy5leHRyYUhhc2ggIT09IGZhbHNlICYmIHByb3BzLmV4dHJhSGFzaCkge1xuICAgICAgZXh0cmFIYXNoLnVzZXIgPSBwcm9wcy5leHRyYUhhc2g7XG4gICAgfVxuICAgIGlmIChwcm9wcy5pbnZhbGlkYXRpb24/LmJ1aWxkQXJncyAhPT0gZmFsc2UgJiYgcHJvcHMuYnVpbGRBcmdzKSB7XG4gICAgICBleHRyYUhhc2guYnVpbGRBcmdzID0gcHJvcHMuYnVpbGRBcmdzO1xuICAgIH1cbiAgICBpZiAocHJvcHMuaW52YWxpZGF0aW9uPy5idWlsZFNlY3JldHMgIT09IGZhbHNlICYmIHByb3BzLmJ1aWxkU2VjcmV0cykge1xuICAgICAgZXh0cmFIYXNoLmJ1aWxkU2VjcmV0cyA9IHByb3BzLmJ1aWxkU2VjcmV0cztcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8uYnVpbGRTc2ggIT09IGZhbHNlICYmIHByb3BzLmJ1aWxkU3NoKSB7XG4gICAgICBleHRyYUhhc2guYnVpbGRTc2ggPSBwcm9wcy5idWlsZFNzaDtcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8udGFyZ2V0ICE9PSBmYWxzZSAmJiBwcm9wcy50YXJnZXQpIHtcbiAgICAgIGV4dHJhSGFzaC50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgfVxuICAgIGlmIChwcm9wcy5pbnZhbGlkYXRpb24/LmZpbGUgIT09IGZhbHNlICYmIHByb3BzLmZpbGUpIHtcbiAgICAgIGV4dHJhSGFzaC5maWxlID0gcHJvcHMuZmlsZTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8ucmVwb3NpdG9yeU5hbWUgIT09IGZhbHNlICYmIHByb3BzLnJlcG9zaXRvcnlOYW1lKSB7XG4gICAgICBleHRyYUhhc2gucmVwb3NpdG9yeU5hbWUgPSBwcm9wcy5yZXBvc2l0b3J5TmFtZTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8ubmV0d29ya01vZGUgIT09IGZhbHNlICYmIHByb3BzLm5ldHdvcmtNb2RlKSB7XG4gICAgICBleHRyYUhhc2gubmV0d29ya01vZGUgPSBwcm9wcy5uZXR3b3JrTW9kZTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8ucGxhdGZvcm0gIT09IGZhbHNlICYmIHByb3BzLnBsYXRmb3JtKSB7XG4gICAgICBleHRyYUhhc2gucGxhdGZvcm0gPSBwcm9wcy5wbGF0Zm9ybTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmludmFsaWRhdGlvbj8ub3V0cHV0cyAhPT0gZmFsc2UgJiYgcHJvcHMub3V0cHV0cykge1xuICAgICAgZXh0cmFIYXNoLm91dHB1dHMgPSBwcm9wcy5vdXRwdXRzO1xuICAgIH1cblxuICAgIC8vIGFkZCBcInNhbHRcIiB0byB0aGUgaGFzaCBpbiBvcmRlciB0byBpbnZhbGlkYXRlIHRoZSBpbWFnZSBpbiB0aGUgdXBncmFkZSB0b1xuICAgIC8vIDEuMjEuMCB3aGljaCByZW1vdmVzIHRoZSBBZG9wdGVkUmVwb3NpdG9yeSByZXNvdXJjZSAoYW5kIHdpbGwgY2F1c2UgdGhlXG4gICAgLy8gZGVsZXRpb24gb2YgdGhlIEVDUiByZXBvc2l0b3J5IHRoZSBhcHAgdXNlZCkuXG4gICAgZXh0cmFIYXNoLnZlcnNpb24gPSBcIjEuMjEuMFwiO1xuXG4gICAgY29uc3Qgc3RhZ2luZyA9IG5ldyBBc3NldFN0YWdpbmcodGhpcywgXCJTdGFnaW5nXCIsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZm9sbG93OiBwcm9wcy5mb2xsb3dTeW1saW5rcyxcbiAgICAgIGV4Y2x1ZGUsXG4gICAgICBpZ25vcmVNb2RlLFxuICAgICAgc291cmNlUGF0aDogZGlyLFxuICAgICAgZXh0cmFIYXNoOlxuICAgICAgICBPYmplY3Qua2V5cyhleHRyYUhhc2gpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShleHRyYUhhc2gpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hc3NldEhhc2ggPSBzdGFnaW5nLmFzc2V0SGFzaDtcbiAgICB0aGlzLnNvdXJjZUhhc2ggPSB0aGlzLmFzc2V0SGFzaDtcblxuICAgIGNvbnN0IHN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcyk7XG4gICAgdGhpcy5hc3NldFBhdGggPSBzdGFnaW5nLnJlbGF0aXZlU3RhZ2VkUGF0aChzdGFjayk7XG4gICAgdGhpcy5hc3NldE5hbWUgPSBwcm9wcy5hc3NldE5hbWU7XG4gICAgdGhpcy5kb2NrZXJCdWlsZEFyZ3MgPSBwcm9wcy5idWlsZEFyZ3M7XG4gICAgdGhpcy5kb2NrZXJCdWlsZFNlY3JldHMgPSBwcm9wcy5idWlsZFNlY3JldHM7XG4gICAgdGhpcy5kb2NrZXJCdWlsZFNzaCA9IHByb3BzLmJ1aWxkU3NoO1xuICAgIHRoaXMuZG9ja2VyQnVpbGRUYXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5kb2NrZXJPdXRwdXRzID0gcHJvcHMub3V0cHV0cztcbiAgICB0aGlzLmRvY2tlckNhY2hlRnJvbSA9IHByb3BzLmNhY2hlRnJvbTtcbiAgICB0aGlzLmRvY2tlckNhY2hlVG8gPSBwcm9wcy5jYWNoZVRvO1xuICAgIHRoaXMuZG9ja2VyQ2FjaGVEaXNhYmxlZCA9IHByb3BzLmNhY2hlRGlzYWJsZWQ7XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IHN0YWNrLmFkZERvY2tlckltYWdlQXNzZXQoe1xuICAgICAgZGlyZWN0b3J5TmFtZTogdGhpcy5hc3NldFBhdGgsXG4gICAgICBhc3NldE5hbWU6IHRoaXMuYXNzZXROYW1lLFxuICAgICAgZG9ja2VyQnVpbGRBcmdzOiB0aGlzLmRvY2tlckJ1aWxkQXJncyxcbiAgICAgIGRvY2tlckJ1aWxkU2VjcmV0czogdGhpcy5kb2NrZXJCdWlsZFNlY3JldHMsXG4gICAgICBkb2NrZXJCdWlsZFNzaDogdGhpcy5kb2NrZXJCdWlsZFNzaCxcbiAgICAgIGRvY2tlckJ1aWxkVGFyZ2V0OiB0aGlzLmRvY2tlckJ1aWxkVGFyZ2V0LFxuICAgICAgZG9ja2VyRmlsZTogcHJvcHMuZmlsZSxcbiAgICAgIHNvdXJjZUhhc2g6IHN0YWdpbmcuYXNzZXRIYXNoLFxuICAgICAgbmV0d29ya01vZGU6IHByb3BzLm5ldHdvcmtNb2RlPy5tb2RlLFxuICAgICAgcGxhdGZvcm06IHByb3BzLnBsYXRmb3JtPy5wbGF0Zm9ybSxcbiAgICAgIGRvY2tlck91dHB1dHM6IHRoaXMuZG9ja2VyT3V0cHV0cyxcbiAgICAgIGRvY2tlckNhY2hlRnJvbTogdGhpcy5kb2NrZXJDYWNoZUZyb20sXG4gICAgICBkb2NrZXJDYWNoZVRvOiB0aGlzLmRvY2tlckNhY2hlVG8sXG4gICAgICBkb2NrZXJDYWNoZURpc2FibGVkOiB0aGlzLmRvY2tlckNhY2hlRGlzYWJsZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBlY3IuUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXBvc2l0b3J5XCIsXG4gICAgICBsb2NhdGlvbi5yZXBvc2l0b3J5TmFtZSxcbiAgICApO1xuICAgIHRoaXMuaW1hZ2VVcmkgPSBsb2NhdGlvbi5pbWFnZVVyaTtcbiAgICB0aGlzLmltYWdlVGFnID0gbG9jYXRpb24uaW1hZ2VUYWcgPz8gdGhpcy5hc3NldEhhc2g7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wcyhwcm9wczogRG9ja2VySW1hZ2VBc3NldFByb3BzKSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgICAvLyB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgdXNlIFRva2VuIGFzIHZhbHVlIG9mICcke2tleX0nOiB0aGlzIHZhbHVlIGlzIHVzZWQgYmVmb3JlIGRlcGxveW1lbnQgc3RhcnRzYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVCdWlsZEFyZ3MocHJvcHMuYnVpbGRBcmdzKTtcbiAgdmFsaWRhdGVCdWlsZFNlY3JldHMocHJvcHMuYnVpbGRTZWNyZXRzKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVCdWlsZFByb3BzKFxuICBidWlsZFByb3BOYW1lOiBzdHJpbmcsXG4gIGJ1aWxkUHJvcHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuKSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGJ1aWxkUHJvcHMgfHwge30pKSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChrZXkpIHx8IFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAgIC8vIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCB1c2UgdG9rZW5zIGluIGtleXMgb3IgdmFsdWVzIG9mIFwiJHtidWlsZFByb3BOYW1lfVwiIHNpbmNlIHRoZXkgYXJlIG5lZWRlZCBiZWZvcmUgZGVwbG95bWVudGAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUJ1aWxkQXJncyhidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gIHZhbGlkYXRlQnVpbGRQcm9wcyhcImJ1aWxkQXJnc1wiLCBidWlsZEFyZ3MpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUJ1aWxkU2VjcmV0cyhidWlsZFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gIHZhbGlkYXRlQnVpbGRQcm9wcyhcImJ1aWxkU2VjcmV0c1wiLCBidWlsZFNlY3JldHMpO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./s3"), exports);
|
|
18
|
+
__exportStar(require("./image-asset"), exports);
|
|
19
|
+
// TODO: Requires support for executable assets in the core library
|
|
20
|
+
// export * from "./tarball-asset";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL3N0b3JhZ2UvYXNzZXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBcUI7QUFDckIsZ0RBQThCO0FBQzlCLG1FQUFtRTtBQUNuRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zM1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW1hZ2UtYXNzZXRcIjtcbi8vIFRPRE86IFJlcXVpcmVzIHN1cHBvcnQgZm9yIGV4ZWN1dGFibGUgYXNzZXRzIGluIHRoZSBjb3JlIGxpYnJhcnlcbi8vIGV4cG9ydCAqIGZyb20gXCIuL3RhcmJhbGwtYXNzZXRcIjtcbiJdfQ==
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as s3 from "..";
|
|
3
|
+
import * as cdk from "../../..";
|
|
4
|
+
import * as kms from "../../encryption";
|
|
5
|
+
import * as iam from "../../iam";
|
|
6
|
+
export interface AssetOptions extends cdk.FileCopyOptions, cdk.AssetOptions {
|
|
7
|
+
/**
|
|
8
|
+
* A list of principals that should be able to read this asset from S3.
|
|
9
|
+
* You can use `asset.grantRead(principal)` to grant read permissions later.
|
|
10
|
+
*
|
|
11
|
+
* @default - No principals that can read file asset.
|
|
12
|
+
*/
|
|
13
|
+
readonly readers?: iam.IGrantable[];
|
|
14
|
+
/**
|
|
15
|
+
* Custom hash to use when identifying the specific version of the asset. For consistency,
|
|
16
|
+
* this custom hash will be SHA256 hashed and encoded as hex. The resulting hash will be
|
|
17
|
+
* the asset hash.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: the source hash is used in order to identify a specific revision of the asset,
|
|
20
|
+
* and used for optimizing and caching deployment activities related to this asset such as
|
|
21
|
+
* packaging, uploading to Amazon S3, etc. If you chose to customize the source hash,
|
|
22
|
+
* you will need to make sure it is updated every time the source changes, or otherwise
|
|
23
|
+
* it is possible that some deployments will not be invalidated.
|
|
24
|
+
*
|
|
25
|
+
* @default - automatically calculate source hash based on the contents
|
|
26
|
+
* of the source file or directory.
|
|
27
|
+
*
|
|
28
|
+
* @deprecated see `assetHash` and `assetHashType`
|
|
29
|
+
*/
|
|
30
|
+
readonly sourceHash?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Whether or not the asset needs to exist beyond deployment time; i.e.
|
|
33
|
+
* are copied over to a different location and not needed afterwards.
|
|
34
|
+
* Setting this property to true has an impact on the lifecycle of the asset,
|
|
35
|
+
* because we will assume that it is safe to delete after the CloudFormation
|
|
36
|
+
* deployment succeeds.
|
|
37
|
+
*
|
|
38
|
+
* For example, Lambda Function assets are copied over to Lambda during
|
|
39
|
+
* deployment. Therefore, it is not necessary to store the asset in S3, so
|
|
40
|
+
* we consider those deployTime assets.
|
|
41
|
+
*
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
readonly deployTime?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The ARN of the KMS key used to encrypt the handler code.
|
|
47
|
+
* @default - the default server-side encryption with Amazon S3 managed keys(SSE-S3) key will be used.
|
|
48
|
+
*/
|
|
49
|
+
readonly sourceKMSKey?: kms.IKey;
|
|
50
|
+
}
|
|
51
|
+
export interface AssetProps extends AssetOptions {
|
|
52
|
+
/**
|
|
53
|
+
* The disk location of the asset.
|
|
54
|
+
*
|
|
55
|
+
* The path should refer to one of the following:
|
|
56
|
+
* - A regular file or a .zip file, in which case the file will be uploaded as-is to S3.
|
|
57
|
+
* - A directory, in which case it will be archived into a .zip file and uploaded to S3.
|
|
58
|
+
*/
|
|
59
|
+
readonly path: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* An asset represents a local file or directory, which is automatically uploaded to S3
|
|
63
|
+
* and then can be referenced within a CDK application.
|
|
64
|
+
*
|
|
65
|
+
* WARNING: `FileAsset[0-9]*` and `FileAsset_S3[0-9]*` identifiers are used internally
|
|
66
|
+
* by the Stack Asset Manager and will cause Id conflicts.
|
|
67
|
+
*/
|
|
68
|
+
export declare class Asset extends Construct implements cdk.IAsset {
|
|
69
|
+
/**
|
|
70
|
+
* Attribute that represents the name of the bucket this asset exists in.
|
|
71
|
+
*/
|
|
72
|
+
readonly s3BucketName: string;
|
|
73
|
+
/**
|
|
74
|
+
* Attribute which represents the S3 object key of this asset.
|
|
75
|
+
*/
|
|
76
|
+
readonly s3ObjectKey: string;
|
|
77
|
+
/**
|
|
78
|
+
* Attribute which represents the S3 URL of this asset.
|
|
79
|
+
* @deprecated use `httpUrl`
|
|
80
|
+
*/
|
|
81
|
+
readonly s3Url: string;
|
|
82
|
+
/**
|
|
83
|
+
* Attribute which represents the S3 HTTP URL of this asset.
|
|
84
|
+
* For example, `https://s3.us-west-1.amazonaws.com/bucket/key`
|
|
85
|
+
*/
|
|
86
|
+
readonly httpUrl: string;
|
|
87
|
+
/**
|
|
88
|
+
* Attribute which represents the S3 URL of this asset.
|
|
89
|
+
* For example, `s3://bucket/key`
|
|
90
|
+
*/
|
|
91
|
+
readonly s3ObjectUrl: string;
|
|
92
|
+
/**
|
|
93
|
+
* The path to the asset, relative to the current Cloud Assembly
|
|
94
|
+
*
|
|
95
|
+
* If asset staging is disabled, this will just be the original path.
|
|
96
|
+
* If asset staging is enabled it will be the staged path.
|
|
97
|
+
*/
|
|
98
|
+
readonly assetPath: string;
|
|
99
|
+
/**
|
|
100
|
+
* The S3 bucket in which this asset resides.
|
|
101
|
+
*/
|
|
102
|
+
readonly bucket: s3.IBucket;
|
|
103
|
+
/**
|
|
104
|
+
* Indicates if this asset is a single file. Allows constructs to ensure that the
|
|
105
|
+
* correct file type was used.
|
|
106
|
+
*/
|
|
107
|
+
readonly isFile: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Indicates if this asset is a zip archive. Allows constructs to ensure that the
|
|
110
|
+
* correct file type was used.
|
|
111
|
+
*/
|
|
112
|
+
readonly isZipArchive: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* A cryptographic hash of the asset.
|
|
115
|
+
*
|
|
116
|
+
* @deprecated see `assetHash`
|
|
117
|
+
*/
|
|
118
|
+
readonly sourceHash: string;
|
|
119
|
+
readonly assetHash: string;
|
|
120
|
+
constructor(scope: Construct, id: string, props: AssetProps);
|
|
121
|
+
/**
|
|
122
|
+
* Grants read permissions to the principal on the assets bucket.
|
|
123
|
+
*/
|
|
124
|
+
grantRead(grantee: iam.IGrantable): void;
|
|
125
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Asset = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
// https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/aws-s3-assets/lib/asset.ts
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const constructs_1 = require("constructs");
|
|
9
|
+
const s3 = require("..");
|
|
10
|
+
const cdk = require("../../..");
|
|
11
|
+
const aws_stack_1 = require("../../aws-stack");
|
|
12
|
+
const kms = require("../../encryption");
|
|
13
|
+
/**
|
|
14
|
+
* An asset represents a local file or directory, which is automatically uploaded to S3
|
|
15
|
+
* and then can be referenced within a CDK application.
|
|
16
|
+
*
|
|
17
|
+
* WARNING: `FileAsset[0-9]*` and `FileAsset_S3[0-9]*` identifiers are used internally
|
|
18
|
+
* by the Stack Asset Manager and will cause Id conflicts.
|
|
19
|
+
*/
|
|
20
|
+
class Asset extends constructs_1.Construct {
|
|
21
|
+
// /**
|
|
22
|
+
// * Indicates if this asset got bundled before staged, or not.
|
|
23
|
+
// */
|
|
24
|
+
// private readonly isBundled: boolean; // TODO: only needed for AWS CDK's addResourceMetadata()
|
|
25
|
+
constructor(scope, id, props) {
|
|
26
|
+
super(scope, id);
|
|
27
|
+
if (!props.path) {
|
|
28
|
+
// throw new ValidationError("Asset path cannot be empty", this);
|
|
29
|
+
throw new Error("Asset path cannot be empty");
|
|
30
|
+
}
|
|
31
|
+
// this.isBundled = props.bundling != null;
|
|
32
|
+
// stage the asset source (conditionally).
|
|
33
|
+
const staging = new cdk.AssetStaging(this, "Stage", {
|
|
34
|
+
...props,
|
|
35
|
+
sourcePath: path.resolve(props.path),
|
|
36
|
+
follow: props.followSymlinks,
|
|
37
|
+
assetHash: props.assetHash ?? props.sourceHash,
|
|
38
|
+
});
|
|
39
|
+
this.assetHash = staging.assetHash;
|
|
40
|
+
this.sourceHash = this.assetHash;
|
|
41
|
+
const stack = aws_stack_1.AwsStack.ofAwsConstruct(this);
|
|
42
|
+
this.assetPath = staging.relativeStagedPath(stack);
|
|
43
|
+
this.isFile = staging.packaging === cdk.FileAssetPackaging.FILE;
|
|
44
|
+
this.isZipArchive = staging.isArchive;
|
|
45
|
+
const location = stack.addFileAsset({
|
|
46
|
+
packaging: staging.packaging,
|
|
47
|
+
sourceHash: staging.assetHash,
|
|
48
|
+
fileName: this.assetPath,
|
|
49
|
+
deployTime: props.deployTime,
|
|
50
|
+
});
|
|
51
|
+
this.s3BucketName = location.bucketName;
|
|
52
|
+
this.s3ObjectKey = location.objectKey;
|
|
53
|
+
this.s3ObjectUrl = location.s3ObjectUrl;
|
|
54
|
+
this.httpUrl = location.httpUrl;
|
|
55
|
+
this.s3Url = location.httpUrl; // for backwards compatibility
|
|
56
|
+
const kmsKey = location.kmsKeyArn
|
|
57
|
+
? kms.Key.fromKeyArn(this, "Key", location.kmsKeyArn)
|
|
58
|
+
: undefined;
|
|
59
|
+
this.bucket = s3.Bucket.fromBucketAttributes(this, "AssetBucket", {
|
|
60
|
+
bucketName: this.s3BucketName,
|
|
61
|
+
encryptionKey: kmsKey,
|
|
62
|
+
});
|
|
63
|
+
for (const reader of props.readers ?? []) {
|
|
64
|
+
this.grantRead(reader);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Grants read permissions to the principal on the assets bucket.
|
|
69
|
+
*/
|
|
70
|
+
grantRead(grantee) {
|
|
71
|
+
// we give permissions on all files in the bucket since we don't want to
|
|
72
|
+
// accidentally revoke permission on old versions when deploying a new
|
|
73
|
+
// version (for example, when using Lambda traffic shifting).
|
|
74
|
+
this.bucket.grantRead(grantee);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.Asset = Asset;
|
|
78
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
79
|
+
Asset[_a] = { fqn: "terraconstructs.aws.storage.assets.Asset", version: "0.1.1" };
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL3N0b3JhZ2UvYXNzZXRzL3MzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0ZBQStGO0FBRS9GLDZCQUE2QjtBQUM3QiwyQ0FBdUM7QUFDdkMseUJBQXlCO0FBQ3pCLGdDQUFnQztBQUNoQywrQ0FBMkM7QUFDM0Msd0NBQXdDO0FBZ0V4Qzs7Ozs7O0dBTUc7QUFDSCxNQUFhLEtBQU0sU0FBUSxzQkFBUztJQStEbEMsTUFBTTtJQUNOLGdFQUFnRTtJQUNoRSxNQUFNO0lBQ04sZ0dBQWdHO0lBRWhHLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLGlFQUFpRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELDJDQUEyQztRQUUzQywwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDbEQsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDNUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFVBQVU7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVqQyxNQUFNLEtBQUssR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUVoRSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFdEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNsQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLDhCQUE4QjtRQUU3RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUztZQUMvQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNoRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDN0IsYUFBYSxFQUFFLE1BQU07U0FDdEIsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxPQUF1QjtRQUN0Qyx3RUFBd0U7UUFDeEUsc0VBQXNFO1FBQ3RFLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDOztBQW5JSCxzQkFvSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xODYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzL2xpYi9hc3NldC50c1xuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcIi4uXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcIi4uLy4uLy4uXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCAqIGFzIGttcyBmcm9tIFwiLi4vLi4vZW5jcnlwdGlvblwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCIuLi8uLi9pYW1cIjtcblxuLy8gaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4uLy4uL2NvcmUvbGliL2Vycm9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0T3B0aW9ucyBleHRlbmRzIGNkay5GaWxlQ29weU9wdGlvbnMsIGNkay5Bc3NldE9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHByaW5jaXBhbHMgdGhhdCBzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoaXMgYXNzZXQgZnJvbSBTMy5cbiAgICogWW91IGNhbiB1c2UgYGFzc2V0LmdyYW50UmVhZChwcmluY2lwYWwpYCB0byBncmFudCByZWFkIHBlcm1pc3Npb25zIGxhdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHByaW5jaXBhbHMgdGhhdCBjYW4gcmVhZCBmaWxlIGFzc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGVycz86IGlhbS5JR3JhbnRhYmxlW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBoYXNoIHRvIHVzZSB3aGVuIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBhc3NldC4gRm9yIGNvbnNpc3RlbmN5LFxuICAgKiB0aGlzIGN1c3RvbSBoYXNoIHdpbGwgYmUgU0hBMjU2IGhhc2hlZCBhbmQgZW5jb2RlZCBhcyBoZXguIFRoZSByZXN1bHRpbmcgaGFzaCB3aWxsIGJlXG4gICAqIHRoZSBhc3NldCBoYXNoLlxuICAgKlxuICAgKiBOT1RFOiB0aGUgc291cmNlIGhhc2ggaXMgdXNlZCBpbiBvcmRlciB0byBpZGVudGlmeSBhIHNwZWNpZmljIHJldmlzaW9uIG9mIHRoZSBhc3NldCxcbiAgICogYW5kIHVzZWQgZm9yIG9wdGltaXppbmcgYW5kIGNhY2hpbmcgZGVwbG95bWVudCBhY3Rpdml0aWVzIHJlbGF0ZWQgdG8gdGhpcyBhc3NldCBzdWNoIGFzXG4gICAqIHBhY2thZ2luZywgdXBsb2FkaW5nIHRvIEFtYXpvbiBTMywgZXRjLiBJZiB5b3UgY2hvc2UgdG8gY3VzdG9taXplIHRoZSBzb3VyY2UgaGFzaCxcbiAgICogeW91IHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgaXQgaXMgdXBkYXRlZCBldmVyeSB0aW1lIHRoZSBzb3VyY2UgY2hhbmdlcywgb3Igb3RoZXJ3aXNlXG4gICAqIGl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBkZXBsb3ltZW50cyB3aWxsIG5vdCBiZSBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSBzb3VyY2UgaGFzaCBiYXNlZCBvbiB0aGUgY29udGVudHNcbiAgICogb2YgdGhlIHNvdXJjZSBmaWxlIG9yIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgc2VlIGBhc3NldEhhc2hgIGFuZCBgYXNzZXRIYXNoVHlwZWBcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBhc3NldCBuZWVkcyB0byBleGlzdCBiZXlvbmQgZGVwbG95bWVudCB0aW1lOyBpLmUuXG4gICAqIGFyZSBjb3BpZWQgb3ZlciB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBhbmQgbm90IG5lZWRlZCBhZnRlcndhcmRzLlxuICAgKiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgdG8gdHJ1ZSBoYXMgYW4gaW1wYWN0IG9uIHRoZSBsaWZlY3ljbGUgb2YgdGhlIGFzc2V0LFxuICAgKiBiZWNhdXNlIHdlIHdpbGwgYXNzdW1lIHRoYXQgaXQgaXMgc2FmZSB0byBkZWxldGUgYWZ0ZXIgdGhlIENsb3VkRm9ybWF0aW9uXG4gICAqIGRlcGxveW1lbnQgc3VjY2VlZHMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBMYW1iZGEgRnVuY3Rpb24gYXNzZXRzIGFyZSBjb3BpZWQgb3ZlciB0byBMYW1iZGEgZHVyaW5nXG4gICAqIGRlcGxveW1lbnQuIFRoZXJlZm9yZSwgaXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzdG9yZSB0aGUgYXNzZXQgaW4gUzMsIHNvXG4gICAqIHdlIGNvbnNpZGVyIHRob3NlIGRlcGxveVRpbWUgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95VGltZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgaGFuZGxlciBjb2RlLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMgbWFuYWdlZCBrZXlzKFNTRS1TMykga2V5IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUtNU0tleT86IGttcy5JS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcHMgZXh0ZW5kcyBBc3NldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRpc2sgbG9jYXRpb24gb2YgdGhlIGFzc2V0LlxuICAgKlxuICAgKiBUaGUgcGF0aCBzaG91bGQgcmVmZXIgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqIC0gQSByZWd1bGFyIGZpbGUgb3IgYSAuemlwIGZpbGUsIGluIHdoaWNoIGNhc2UgdGhlIGZpbGUgd2lsbCBiZSB1cGxvYWRlZCBhcy1pcyB0byBTMy5cbiAgICogLSBBIGRpcmVjdG9yeSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGFyY2hpdmVkIGludG8gYSAuemlwIGZpbGUgYW5kIHVwbG9hZGVkIHRvIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGFzc2V0IHJlcHJlc2VudHMgYSBsb2NhbCBmaWxlIG9yIGRpcmVjdG9yeSwgd2hpY2ggaXMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBTM1xuICogYW5kIHRoZW4gY2FuIGJlIHJlZmVyZW5jZWQgd2l0aGluIGEgQ0RLIGFwcGxpY2F0aW9uLlxuICpcbiAqIFdBUk5JTkc6IGBGaWxlQXNzZXRbMC05XSpgIGFuZCBgRmlsZUFzc2V0X1MzWzAtOV0qYCBpZGVudGlmaWVycyBhcmUgdXNlZCBpbnRlcm5hbGx5XG4gKiBieSB0aGUgU3RhY2sgQXNzZXQgTWFuYWdlciBhbmQgd2lsbCBjYXVzZSBJZCBjb25mbGljdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIGNkay5JQXNzZXQge1xuICAvKipcbiAgICogQXR0cmlidXRlIHRoYXQgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgYnVja2V0IHRoaXMgYXNzZXQgZXhpc3RzIGluLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgd2hpY2ggcmVwcmVzZW50cyB0aGUgUzMgb2JqZWN0IGtleSBvZiB0aGlzIGFzc2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzT2JqZWN0S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSB3aGljaCByZXByZXNlbnRzIHRoZSBTMyBVUkwgb2YgdGhpcyBhc3NldC5cbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBodHRwVXJsYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHMzVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSB3aGljaCByZXByZXNlbnRzIHRoZSBTMyBIVFRQIFVSTCBvZiB0aGlzIGFzc2V0LlxuICAgKiBGb3IgZXhhbXBsZSwgYGh0dHBzOi8vczMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20vYnVja2V0L2tleWBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSB3aGljaCByZXByZXNlbnRzIHRoZSBTMyBVUkwgb2YgdGhpcyBhc3NldC5cbiAgICogRm9yIGV4YW1wbGUsIGBzMzovL2J1Y2tldC9rZXlgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgczNPYmplY3RVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGFzc2V0LCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBDbG91ZCBBc3NlbWJseVxuICAgKlxuICAgKiBJZiBhc3NldCBzdGFnaW5nIGlzIGRpc2FibGVkLCB0aGlzIHdpbGwganVzdCBiZSB0aGUgb3JpZ2luYWwgcGF0aC5cbiAgICogSWYgYXNzZXQgc3RhZ2luZyBpcyBlbmFibGVkIGl0IHdpbGwgYmUgdGhlIHN0YWdlZCBwYXRoLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IGluIHdoaWNoIHRoaXMgYXNzZXQgcmVzaWRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGFzc2V0IGlzIGEgc2luZ2xlIGZpbGUuIEFsbG93cyBjb25zdHJ1Y3RzIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgKiBjb3JyZWN0IGZpbGUgdHlwZSB3YXMgdXNlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc0ZpbGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGFzc2V0IGlzIGEgemlwIGFyY2hpdmUuIEFsbG93cyBjb25zdHJ1Y3RzIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgKiBjb3JyZWN0IGZpbGUgdHlwZSB3YXMgdXNlZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1ppcEFyY2hpdmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY3J5cHRvZ3JhcGhpYyBoYXNoIG9mIHRoZSBhc3NldC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgc2VlIGBhc3NldEhhc2hgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlSGFzaDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBhc3NldEhhc2g6IHN0cmluZztcblxuICAvLyAvKipcbiAgLy8gICogSW5kaWNhdGVzIGlmIHRoaXMgYXNzZXQgZ290IGJ1bmRsZWQgYmVmb3JlIHN0YWdlZCwgb3Igbm90LlxuICAvLyAgKi9cbiAgLy8gcHJpdmF0ZSByZWFkb25seSBpc0J1bmRsZWQ6IGJvb2xlYW47IC8vIFRPRE86IG9ubHkgbmVlZGVkIGZvciBBV1MgQ0RLJ3MgYWRkUmVzb3VyY2VNZXRhZGF0YSgpXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFzc2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKCFwcm9wcy5wYXRoKSB7XG4gICAgICAvLyB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFwiQXNzZXQgcGF0aCBjYW5ub3QgYmUgZW1wdHlcIiwgdGhpcyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3NldCBwYXRoIGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLmlzQnVuZGxlZCA9IHByb3BzLmJ1bmRsaW5nICE9IG51bGw7XG5cbiAgICAvLyBzdGFnZSB0aGUgYXNzZXQgc291cmNlIChjb25kaXRpb25hbGx5KS5cbiAgICBjb25zdCBzdGFnaW5nID0gbmV3IGNkay5Bc3NldFN0YWdpbmcodGhpcywgXCJTdGFnZVwiLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHNvdXJjZVBhdGg6IHBhdGgucmVzb2x2ZShwcm9wcy5wYXRoKSxcbiAgICAgIGZvbGxvdzogcHJvcHMuZm9sbG93U3ltbGlua3MsXG4gICAgICBhc3NldEhhc2g6IHByb3BzLmFzc2V0SGFzaCA/PyBwcm9wcy5zb3VyY2VIYXNoLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hc3NldEhhc2ggPSBzdGFnaW5nLmFzc2V0SGFzaDtcbiAgICB0aGlzLnNvdXJjZUhhc2ggPSB0aGlzLmFzc2V0SGFzaDtcblxuICAgIGNvbnN0IHN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcyk7XG5cbiAgICB0aGlzLmFzc2V0UGF0aCA9IHN0YWdpbmcucmVsYXRpdmVTdGFnZWRQYXRoKHN0YWNrKTtcblxuICAgIHRoaXMuaXNGaWxlID0gc3RhZ2luZy5wYWNrYWdpbmcgPT09IGNkay5GaWxlQXNzZXRQYWNrYWdpbmcuRklMRTtcblxuICAgIHRoaXMuaXNaaXBBcmNoaXZlID0gc3RhZ2luZy5pc0FyY2hpdmU7XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IHN0YWNrLmFkZEZpbGVBc3NldCh7XG4gICAgICBwYWNrYWdpbmc6IHN0YWdpbmcucGFja2FnaW5nLFxuICAgICAgc291cmNlSGFzaDogc3RhZ2luZy5hc3NldEhhc2gsXG4gICAgICBmaWxlTmFtZTogdGhpcy5hc3NldFBhdGgsXG4gICAgICBkZXBsb3lUaW1lOiBwcm9wcy5kZXBsb3lUaW1lLFxuICAgIH0pO1xuICAgIHRoaXMuczNCdWNrZXROYW1lID0gbG9jYXRpb24uYnVja2V0TmFtZTtcbiAgICB0aGlzLnMzT2JqZWN0S2V5ID0gbG9jYXRpb24ub2JqZWN0S2V5O1xuICAgIHRoaXMuczNPYmplY3RVcmwgPSBsb2NhdGlvbi5zM09iamVjdFVybDtcbiAgICB0aGlzLmh0dHBVcmwgPSBsb2NhdGlvbi5odHRwVXJsO1xuICAgIHRoaXMuczNVcmwgPSBsb2NhdGlvbi5odHRwVXJsOyAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuICAgIGNvbnN0IGttc0tleSA9IGxvY2F0aW9uLmttc0tleUFyblxuICAgICAgPyBrbXMuS2V5LmZyb21LZXlBcm4odGhpcywgXCJLZXlcIiwgbG9jYXRpb24ua21zS2V5QXJuKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0QXR0cmlidXRlcyh0aGlzLCBcIkFzc2V0QnVja2V0XCIsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHRoaXMuczNCdWNrZXROYW1lLFxuICAgICAgZW5jcnlwdGlvbktleToga21zS2V5LFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCByZWFkZXIgb2YgcHJvcHMucmVhZGVycyA/PyBbXSkge1xuICAgICAgdGhpcy5ncmFudFJlYWQocmVhZGVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIHByaW5jaXBhbCBvbiB0aGUgYXNzZXRzIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpIHtcbiAgICAvLyB3ZSBnaXZlIHBlcm1pc3Npb25zIG9uIGFsbCBmaWxlcyBpbiB0aGUgYnVja2V0IHNpbmNlIHdlIGRvbid0IHdhbnQgdG9cbiAgICAvLyBhY2NpZGVudGFsbHkgcmV2b2tlIHBlcm1pc3Npb24gb24gb2xkIHZlcnNpb25zIHdoZW4gZGVwbG95aW5nIGEgbmV3XG4gICAgLy8gdmVyc2lvbiAoZm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgTGFtYmRhIHRyYWZmaWMgc2hpZnRpbmcpLlxuICAgIHRoaXMuYnVja2V0LmdyYW50UmVhZChncmFudGVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as iam from "../iam";
|
|
2
|
+
/**
|
|
3
|
+
* Authorization token to access private ECR repositories in the current environment via Docker CLI.
|
|
4
|
+
*
|
|
5
|
+
* @see https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html
|
|
6
|
+
*/
|
|
7
|
+
export declare class AuthorizationToken {
|
|
8
|
+
/**
|
|
9
|
+
* Grant access to retrieve an authorization token.
|
|
10
|
+
*/
|
|
11
|
+
static grantRead(grantee: iam.IGrantable): void;
|
|
12
|
+
private constructor();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Authorization token to access the global public ECR Gallery via Docker CLI.
|
|
16
|
+
*
|
|
17
|
+
* @see https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html#public-registry-auth
|
|
18
|
+
*/
|
|
19
|
+
export declare class PublicGalleryAuthorizationToken {
|
|
20
|
+
/**
|
|
21
|
+
* Grant access to retrieve an authorization token.
|
|
22
|
+
*/
|
|
23
|
+
static grantRead(grantee: iam.IGrantable): void;
|
|
24
|
+
private constructor();
|
|
25
|
+
}
|