@aws-solutions-constructs/aws-cloudfront-s3 2.58.1 → 2.60.0
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 +105 -34
- package/README.md +10 -7
- package/lib/index.d.ts +32 -17
- package/lib/index.js +33 -3
- package/package.json +8 -8
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js +16 -2
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js.snapshot/cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.assets.json +15 -2
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js.snapshot/cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.template.json +340 -15
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js.snapshot/manifest.json +37 -19
- package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js.snapshot/tree.json +342 -63
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js +16 -2
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js.snapshot/cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.assets.json +15 -2
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js.snapshot/cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.template.json +340 -15
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js.snapshot/manifest.json +37 -1
- package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js.snapshot/tree.json +318 -39
- package/test/integ.cfts3-bucket-with-http-origin.js.snapshot/cfts3-bucket-with-http-origin.assets.json +2 -2
- package/test/integ.cfts3-bucket-with-http-origin.js.snapshot/cfts3-bucket-with-http-origin.template.json +0 -7
- package/test/integ.cfts3-bucket-with-http-origin.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-bucket-with-http-origin.js.snapshot/tree.json +31 -38
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js +13 -1
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js.snapshot/cfts3-cmk-provided-as-bucket-prop.assets.json +15 -2
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js.snapshot/cfts3-cmk-provided-as-bucket-prop.template.json +274 -13
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js.snapshot/manifest.json +27 -15
- package/test/integ.cfts3-cmk-provided-as-bucket-prop.js.snapshot/tree.json +279 -63
- package/test/integ.cfts3-custom-headers.js +5 -1
- package/test/integ.cfts3-custom-headers.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-custom-headers.js.snapshot/cfts3-custom-headers.assets.json +5 -5
- package/test/integ.cfts3-custom-headers.js.snapshot/cfts3-custom-headers.template.json +1 -8
- package/test/integ.cfts3-custom-headers.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-custom-headers.js.snapshot/tree.json +48 -55
- package/test/integ.cfts3-custom-originPath.js +5 -1
- package/test/integ.cfts3-custom-originPath.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-custom-originPath.js.snapshot/cfts3-custom-originPath.assets.json +5 -5
- package/test/integ.cfts3-custom-originPath.js.snapshot/cfts3-custom-originPath.template.json +1 -8
- package/test/integ.cfts3-custom-originPath.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-custom-originPath.js.snapshot/tree.json +46 -53
- package/test/integ.cfts3-customLoggingBuckets.js +6 -2
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/cfts3-customLoggingBuckets.assets.json +5 -5
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/cfts3-customLoggingBuckets.template.json +1 -21
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/tree.json +46 -66
- package/test/integ.cfts3-existing-bucket.js +5 -1
- package/test/integ.cfts3-existing-bucket.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-existing-bucket.js.snapshot/cfts3-existing-bucket.assets.json +5 -5
- package/test/integ.cfts3-existing-bucket.js.snapshot/cfts3-existing-bucket.template.json +1 -8
- package/test/integ.cfts3-existing-bucket.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-existing-bucket.js.snapshot/tree.json +51 -58
- package/test/integ.cfts3-no-arguments.js +5 -1
- package/test/integ.cfts3-no-arguments.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-no-arguments.js.snapshot/cfts3-no-arguments.assets.json +5 -5
- package/test/integ.cfts3-no-arguments.js.snapshot/cfts3-no-arguments.template.json +1 -8
- package/test/integ.cfts3-no-arguments.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-no-arguments.js.snapshot/tree.json +46 -53
- package/test/integ.cfts3-no-logging.js +56 -0
- package/test/integ.cfts3-no-logging.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-no-logging.js.snapshot/cdk.out +1 -0
- package/test/integ.cfts3-no-logging.js.snapshot/cfts3-no-logging.assets.json +32 -0
- package/test/integ.cfts3-no-logging.js.snapshot/cfts3-no-logging.template.json +434 -0
- package/test/integ.cfts3-no-logging.js.snapshot/cfts3nologgingIntegDefaultTestDeployAssert18393DDB.assets.json +19 -0
- package/test/integ.cfts3-no-logging.js.snapshot/cfts3nologgingIntegDefaultTestDeployAssert18393DDB.template.json +36 -0
- package/test/integ.cfts3-no-logging.js.snapshot/integ.json +12 -0
- package/test/integ.cfts3-no-logging.js.snapshot/manifest.json +155 -0
- package/test/integ.cfts3-no-logging.js.snapshot/tree.json +506 -0
- package/test/integ.cfts3-no-security-headers.js +5 -1
- package/test/integ.cfts3-no-security-headers.js.snapshot/asset.2eb6a831b107939f63cfebf68e6316e1a40f79fc99cae0fee9b333bac8d29bc4/index.js +1 -0
- package/test/integ.cfts3-no-security-headers.js.snapshot/cfts3-no-security-headers.assets.json +5 -5
- package/test/integ.cfts3-no-security-headers.js.snapshot/cfts3-no-security-headers.template.json +1 -8
- package/test/integ.cfts3-no-security-headers.js.snapshot/manifest.json +1 -1
- package/test/integ.cfts3-no-security-headers.js.snapshot/tree.json +44 -51
- package/test/test.cloudfront-s3.test.js +288 -52
- package/test/integ.cfts3-bucket-with-http-origin.js +0 -47
- package/test/integ.cfts3-custom-headers.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- package/test/integ.cfts3-custom-originPath.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- package/test/integ.cfts3-customLoggingBuckets.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- package/test/integ.cfts3-existing-bucket.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- package/test/integ.cfts3-no-arguments.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- package/test/integ.cfts3-no-security-headers.js.snapshot/asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6/index.js +0 -1
- /package/test/{integ.cfts3-bucket-with-http-origin.d.ts → integ.cfts3-no-logging.d.ts} +0 -0
package/.jsii
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
12
|
-
"@aws-solutions-constructs/core": "2.
|
|
13
|
-
"@aws-solutions-constructs/resources": "2.
|
|
14
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"@aws-cdk/integ-tests-alpha": "2.145.0-alpha.0",
|
|
12
|
+
"@aws-solutions-constructs/core": "2.60.0",
|
|
13
|
+
"@aws-solutions-constructs/resources": "2.60.0",
|
|
14
|
+
"aws-cdk-lib": "^2.145.0",
|
|
15
15
|
"constructs": "^10.0.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencyClosure": {
|
|
@@ -304,8 +304,32 @@
|
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
},
|
|
307
|
-
"aws-cdk-lib.aws_apigatewayv2_authorizers": {
|
|
308
|
-
|
|
307
|
+
"aws-cdk-lib.aws_apigatewayv2_authorizers": {
|
|
308
|
+
"targets": {
|
|
309
|
+
"dotnet": {
|
|
310
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Authorizers"
|
|
311
|
+
},
|
|
312
|
+
"java": {
|
|
313
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_authorizers"
|
|
314
|
+
},
|
|
315
|
+
"python": {
|
|
316
|
+
"module": "aws_cdk.aws_apigatewayv2_authorizers"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
"aws-cdk-lib.aws_apigatewayv2_integrations": {
|
|
321
|
+
"targets": {
|
|
322
|
+
"dotnet": {
|
|
323
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Integrations"
|
|
324
|
+
},
|
|
325
|
+
"java": {
|
|
326
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_integrations"
|
|
327
|
+
},
|
|
328
|
+
"python": {
|
|
329
|
+
"module": "aws_cdk.aws_apigatewayv2_integrations"
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
},
|
|
309
333
|
"aws-cdk-lib.aws_appconfig": {
|
|
310
334
|
"targets": {
|
|
311
335
|
"dotnet": {
|
|
@@ -3833,7 +3857,7 @@
|
|
|
3833
3857
|
},
|
|
3834
3858
|
"description": "CDK Constructs for AWS Cloudfront to AWS S3 integration.",
|
|
3835
3859
|
"homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
|
|
3836
|
-
"jsiiVersion": "1.
|
|
3860
|
+
"jsiiVersion": "1.99.0 (build 8f757e4)",
|
|
3837
3861
|
"keywords": [
|
|
3838
3862
|
"aws",
|
|
3839
3863
|
"cdk",
|
|
@@ -3852,7 +3876,7 @@
|
|
|
3852
3876
|
},
|
|
3853
3877
|
"name": "@aws-solutions-constructs/aws-cloudfront-s3",
|
|
3854
3878
|
"readme": {
|
|
3855
|
-
"markdown": "# aws-cloudfront-s3 module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\n| **Language** | **Package** |\n|:-------------|-----------------|\n| Python|`aws_solutions_constructs.aws_cloudfront_s3`|\n| Typescript|`@aws-solutions-constructs/aws-cloudfront-s3`|\n| Java|`software.amazon.awsconstructs.services.cloudfronts3`|\n\n## Overview\nThis AWS Solutions Construct provisions an Amazon CloudFront Distribution that serves objects from an AWS S3 Bucket via an Origin Access Control (OAC).\n\nHere is a minimal deployable pattern definition:\n\nTypescript\n``` typescript\nimport { Construct } from 'constructs';\nimport { Stack, StackProps } from 'aws-cdk-lib';\nimport { CloudFrontToS3 } from '@aws-solutions-constructs/aws-cloudfront-s3';\n\nnew CloudFrontToS3(this, 'test-cloudfront-s3', {});\n```\n\nPython\n``` python\nfrom aws_solutions_constructs.aws_cloudfront_s3 import CloudFrontToS3\nfrom aws_cdk import Stack\nfrom constructs import Construct\n\nCloudFrontToS3(self, 'test-cloudfront-s3')\n```\n\nJava\n``` java\nimport software.constructs.Construct;\n\nimport software.amazon.awscdk.Stack;\nimport software.amazon.awscdk.StackProps;\nimport software.amazon.awsconstructs.services.cloudfronts3.*;\n\nnew CloudFrontToS3(this, \"test-cloudfront-s3\", new CloudFrontToS3Props.Builder()\n .build());\n```\n\n## Pattern Construct Props\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|
|
|
3879
|
+
"markdown": "# aws-cloudfront-s3 module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\n| **Language** | **Package** |\n|:-------------|-----------------|\n| Python|`aws_solutions_constructs.aws_cloudfront_s3`|\n| Typescript|`@aws-solutions-constructs/aws-cloudfront-s3`|\n| Java|`software.amazon.awsconstructs.services.cloudfronts3`|\n\n## Overview\nThis AWS Solutions Construct provisions an Amazon CloudFront Distribution that serves objects from an AWS S3 Bucket via an Origin Access Control (OAC).\n\nHere is a minimal deployable pattern definition:\n\nTypescript\n``` typescript\nimport { Construct } from 'constructs';\nimport { Stack, StackProps } from 'aws-cdk-lib';\nimport { CloudFrontToS3 } from '@aws-solutions-constructs/aws-cloudfront-s3';\n\nnew CloudFrontToS3(this, 'test-cloudfront-s3', {});\n```\n\nPython\n``` python\nfrom aws_solutions_constructs.aws_cloudfront_s3 import CloudFrontToS3\nfrom aws_cdk import Stack\nfrom constructs import Construct\n\nCloudFrontToS3(self, 'test-cloudfront-s3')\n```\n\nJava\n``` java\nimport software.constructs.Construct;\n\nimport software.amazon.awscdk.Stack;\nimport software.amazon.awscdk.StackProps;\nimport software.amazon.awsconstructs.services.cloudfronts3.*;\n\nnew CloudFrontToS3(this, \"test-cloudfront-s3\", new CloudFrontToS3Props.Builder()\n .build());\n```\n\n## Pattern Construct Props\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|cloudFrontDistributionProps?|[`cloudfront.DistributionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.DistributionProps.html)|Optional user provided props to override the default props for CloudFront Distribution|\n|insertHttpSecurityHeaders?|`boolean`|Optional user provided props to turn on/off the automatic injection of best practice HTTP security headers in all responses from CloudFront|\n|responseHeadersPolicyProps? | [`cloudfront.ResponseHeadersPolicyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps.html) | Optional user provided configuration that cloudfront applies to all http responses.|\n|originPath?|`string`|Optional user provided props to provide an[originPath](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront_origins.S3OriginProps.html#originpath) that CloudFront appends to the origin domain name when CloudFront requests content from the origin. The string should start with a `/`, for example: `/production`. Default value is `'/'`|\n|existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Existing instance of S3 content bucket object or interface. If this is provided, then also providing bucketProps will cause an error. |\n|bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 content bucket. Note - to log S3 access for this bucket to an existing S3 bucket, put the existing log bucket in bucketProps: `serverAccessLogsBucket`|\n|logS3AccessLogs?| boolean|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|\n|loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|\n|cloudFrontLoggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the CloudFront Logging Bucket. Note: to use an existing bucketto hold CloudFront logs, pass the existing log bucket in |\n|logCloudFrontAccessLog|`boolean`|Optional - Whether to maintain access logs for the CloudFront Logging bucket. Specifying false for this while providing info about the log bucket will cause an error. Default = true |\n|cloudFrontLoggingBucketAccessLogBucketProps|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the CloudFront Log Bucket Access Log bucket. Providing both this and `existingcloudFrontLoggingBucketAccessLogBucket` will cause an error. To provide an existing bucket to accept these logs, pass the existing bucket in `cloudFrontLoggingBucketProps::serverAccessLogBucket`|\n\n## Pattern Properties\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|cloudFrontWebDistribution|[`cloudfront.Distribution`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Distribution.html)|Returns an instance of cloudfront.Distribution created by the construct.|\n|cloudFrontFunction?|[`cloudfront.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Function.html)|Returns an instance of the Cloudfront function created by the construct.|\n|originAccessControl?|[`cloudfront.CfnOriginAccessControl`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.cloudfront.CfnOriginAccessControl.html)|Returns an instance of cloudfront.CfnOriginAccessControl created by the construct.|\n|s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct.|\n|s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct. IMPORTANT: If `existingBucketObj` was provided in Pattern Construct Props, this property will be `undefined`|\n|s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|\n|cloudFrontLoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|The S3 bucket created by the construct to hold CloudFront logs. Only populated if the construct creates the bucket (not if an existing bucket is passed in via DistributionProps)|\n|cloudFrontLoggingBucketAccessLogBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|The S3 bucket containing the S3 access logs for the CloudFront log bucket. Only populated if the construct creates the bucket (not if the bucket is passed in via `cloudFrontLoggingBucketProps::serverAccessLogBucket`|\n\n## Default settings\n\nOut of the box implementation of the Construct without any override will set the following defaults:\n\n### Amazon CloudFront\n* Configure Access logging for CloudFront Distribution\n* Enable automatic injection of best practice HTTP security headers in all responses from CloudFront Distribution\n* CloudFront originPath set to `'/'`\n\n### Amazon S3 Bucket\n* Configure Access logging for S3 Bucket\n* Enable server-side encryption for S3 Bucket using AWS managed KMS Key\n* Enforce encryption of data in transit\n* Turn on the versioning for S3 Bucket\n* Don't allow public access for S3 Bucket\n* Retain the S3 Bucket when deleting the CloudFormation stack\n* Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days\n\n## Architecture\n\n\n***\n© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n"
|
|
3856
3880
|
},
|
|
3857
3881
|
"repository": {
|
|
3858
3882
|
"directory": "source/patterns/@aws-solutions-constructs/aws-cloudfront-s3",
|
|
@@ -3897,7 +3921,7 @@
|
|
|
3897
3921
|
},
|
|
3898
3922
|
"locationInModule": {
|
|
3899
3923
|
"filename": "lib/index.ts",
|
|
3900
|
-
"line":
|
|
3924
|
+
"line": 142
|
|
3901
3925
|
},
|
|
3902
3926
|
"parameters": [
|
|
3903
3927
|
{
|
|
@@ -3932,7 +3956,7 @@
|
|
|
3932
3956
|
"kind": "class",
|
|
3933
3957
|
"locationInModule": {
|
|
3934
3958
|
"filename": "lib/index.ts",
|
|
3935
|
-
"line":
|
|
3959
|
+
"line": 124
|
|
3936
3960
|
},
|
|
3937
3961
|
"name": "CloudFrontToS3",
|
|
3938
3962
|
"properties": [
|
|
@@ -3940,7 +3964,7 @@
|
|
|
3940
3964
|
"immutable": true,
|
|
3941
3965
|
"locationInModule": {
|
|
3942
3966
|
"filename": "lib/index.ts",
|
|
3943
|
-
"line":
|
|
3967
|
+
"line": 125
|
|
3944
3968
|
},
|
|
3945
3969
|
"name": "cloudFrontWebDistribution",
|
|
3946
3970
|
"type": {
|
|
@@ -3951,7 +3975,7 @@
|
|
|
3951
3975
|
"immutable": true,
|
|
3952
3976
|
"locationInModule": {
|
|
3953
3977
|
"filename": "lib/index.ts",
|
|
3954
|
-
"line":
|
|
3978
|
+
"line": 129
|
|
3955
3979
|
},
|
|
3956
3980
|
"name": "s3BucketInterface",
|
|
3957
3981
|
"type": {
|
|
@@ -3962,7 +3986,7 @@
|
|
|
3962
3986
|
"immutable": true,
|
|
3963
3987
|
"locationInModule": {
|
|
3964
3988
|
"filename": "lib/index.ts",
|
|
3965
|
-
"line":
|
|
3989
|
+
"line": 126
|
|
3966
3990
|
},
|
|
3967
3991
|
"name": "cloudFrontFunction",
|
|
3968
3992
|
"optional": true,
|
|
@@ -3974,7 +3998,7 @@
|
|
|
3974
3998
|
"immutable": true,
|
|
3975
3999
|
"locationInModule": {
|
|
3976
4000
|
"filename": "lib/index.ts",
|
|
3977
|
-
"line":
|
|
4001
|
+
"line": 127
|
|
3978
4002
|
},
|
|
3979
4003
|
"name": "cloudFrontLoggingBucket",
|
|
3980
4004
|
"optional": true,
|
|
@@ -3986,7 +4010,19 @@
|
|
|
3986
4010
|
"immutable": true,
|
|
3987
4011
|
"locationInModule": {
|
|
3988
4012
|
"filename": "lib/index.ts",
|
|
3989
|
-
"line":
|
|
4013
|
+
"line": 128
|
|
4014
|
+
},
|
|
4015
|
+
"name": "cloudFrontLoggingBucketAccessLogBucket",
|
|
4016
|
+
"optional": true,
|
|
4017
|
+
"type": {
|
|
4018
|
+
"fqn": "aws-cdk-lib.aws_s3.Bucket"
|
|
4019
|
+
}
|
|
4020
|
+
},
|
|
4021
|
+
{
|
|
4022
|
+
"immutable": true,
|
|
4023
|
+
"locationInModule": {
|
|
4024
|
+
"filename": "lib/index.ts",
|
|
4025
|
+
"line": 132
|
|
3990
4026
|
},
|
|
3991
4027
|
"name": "originAccessControl",
|
|
3992
4028
|
"optional": true,
|
|
@@ -3998,7 +4034,7 @@
|
|
|
3998
4034
|
"immutable": true,
|
|
3999
4035
|
"locationInModule": {
|
|
4000
4036
|
"filename": "lib/index.ts",
|
|
4001
|
-
"line":
|
|
4037
|
+
"line": 130
|
|
4002
4038
|
},
|
|
4003
4039
|
"name": "s3Bucket",
|
|
4004
4040
|
"optional": true,
|
|
@@ -4010,7 +4046,7 @@
|
|
|
4010
4046
|
"immutable": true,
|
|
4011
4047
|
"locationInModule": {
|
|
4012
4048
|
"filename": "lib/index.ts",
|
|
4013
|
-
"line":
|
|
4049
|
+
"line": 131
|
|
4014
4050
|
},
|
|
4015
4051
|
"name": "s3LoggingBucket",
|
|
4016
4052
|
"optional": true,
|
|
@@ -4041,12 +4077,12 @@
|
|
|
4041
4077
|
"abstract": true,
|
|
4042
4078
|
"docs": {
|
|
4043
4079
|
"default": "- Default props are used",
|
|
4044
|
-
"summary": "Optional user provided props to override the default props for the S3 Bucket."
|
|
4080
|
+
"summary": "Optional user provided props to override the default props for the S3 Content Bucket."
|
|
4045
4081
|
},
|
|
4046
4082
|
"immutable": true,
|
|
4047
4083
|
"locationInModule": {
|
|
4048
4084
|
"filename": "lib/index.ts",
|
|
4049
|
-
"line":
|
|
4085
|
+
"line": 77
|
|
4050
4086
|
},
|
|
4051
4087
|
"name": "bucketProps",
|
|
4052
4088
|
"optional": true,
|
|
@@ -4063,7 +4099,7 @@
|
|
|
4063
4099
|
"immutable": true,
|
|
4064
4100
|
"locationInModule": {
|
|
4065
4101
|
"filename": "lib/index.ts",
|
|
4066
|
-
"line":
|
|
4102
|
+
"line": 33
|
|
4067
4103
|
},
|
|
4068
4104
|
"name": "cloudFrontDistributionProps",
|
|
4069
4105
|
"optional": true,
|
|
@@ -4075,12 +4111,30 @@
|
|
|
4075
4111
|
"abstract": true,
|
|
4076
4112
|
"docs": {
|
|
4077
4113
|
"default": "- Default props are used",
|
|
4078
|
-
"
|
|
4114
|
+
"remarks": "Providing both this and `existingcloudFrontLoggingBucketAccessLogBucket` will cause an error",
|
|
4115
|
+
"summary": "Optional user provided props to override the default props for the CloudFront Log Bucket Access Log bucket."
|
|
4116
|
+
},
|
|
4117
|
+
"immutable": true,
|
|
4118
|
+
"locationInModule": {
|
|
4119
|
+
"filename": "lib/index.ts",
|
|
4120
|
+
"line": 121
|
|
4121
|
+
},
|
|
4122
|
+
"name": "cloudFrontLoggingBucketAccessLogBucketProps",
|
|
4123
|
+
"optional": true,
|
|
4124
|
+
"type": {
|
|
4125
|
+
"fqn": "aws-cdk-lib.aws_s3.BucketProps"
|
|
4126
|
+
}
|
|
4127
|
+
},
|
|
4128
|
+
{
|
|
4129
|
+
"abstract": true,
|
|
4130
|
+
"docs": {
|
|
4131
|
+
"default": "- Default props are used",
|
|
4132
|
+
"summary": "Optional user provided props to override the default props for the CloudFront Log Bucket."
|
|
4079
4133
|
},
|
|
4080
4134
|
"immutable": true,
|
|
4081
4135
|
"locationInModule": {
|
|
4082
4136
|
"filename": "lib/index.ts",
|
|
4083
|
-
"line":
|
|
4137
|
+
"line": 103
|
|
4084
4138
|
},
|
|
4085
4139
|
"name": "cloudFrontLoggingBucketProps",
|
|
4086
4140
|
"optional": true,
|
|
@@ -4092,12 +4146,12 @@
|
|
|
4092
4146
|
"abstract": true,
|
|
4093
4147
|
"docs": {
|
|
4094
4148
|
"default": "- None",
|
|
4095
|
-
"summary": "Existing instance of S3 Bucket object, providing both this and `bucketProps` will cause an error."
|
|
4149
|
+
"summary": "Existing instance of S3 Content Bucket object, providing both this and `bucketProps` will cause an error."
|
|
4096
4150
|
},
|
|
4097
4151
|
"immutable": true,
|
|
4098
4152
|
"locationInModule": {
|
|
4099
4153
|
"filename": "lib/index.ts",
|
|
4100
|
-
"line":
|
|
4154
|
+
"line": 71
|
|
4101
4155
|
},
|
|
4102
4156
|
"name": "existingBucketObj",
|
|
4103
4157
|
"optional": true,
|
|
@@ -4115,7 +4169,7 @@
|
|
|
4115
4169
|
"immutable": true,
|
|
4116
4170
|
"locationInModule": {
|
|
4117
4171
|
"filename": "lib/index.ts",
|
|
4118
|
-
"line":
|
|
4172
|
+
"line": 42
|
|
4119
4173
|
},
|
|
4120
4174
|
"name": "insertHttpSecurityHeaders",
|
|
4121
4175
|
"optional": true,
|
|
@@ -4123,16 +4177,34 @@
|
|
|
4123
4177
|
"primitive": "boolean"
|
|
4124
4178
|
}
|
|
4125
4179
|
},
|
|
4180
|
+
{
|
|
4181
|
+
"abstract": true,
|
|
4182
|
+
"docs": {
|
|
4183
|
+
"default": "- true",
|
|
4184
|
+
"remarks": "Specifying false for this\nwhile providing info about the log bucket will cause an error.",
|
|
4185
|
+
"summary": "Optional - Whether to maintain access logs for the CloudFront Logging bucket."
|
|
4186
|
+
},
|
|
4187
|
+
"immutable": true,
|
|
4188
|
+
"locationInModule": {
|
|
4189
|
+
"filename": "lib/index.ts",
|
|
4190
|
+
"line": 114
|
|
4191
|
+
},
|
|
4192
|
+
"name": "logCloudFrontAccessLog",
|
|
4193
|
+
"optional": true,
|
|
4194
|
+
"type": {
|
|
4195
|
+
"primitive": "boolean"
|
|
4196
|
+
}
|
|
4197
|
+
},
|
|
4126
4198
|
{
|
|
4127
4199
|
"abstract": true,
|
|
4128
4200
|
"docs": {
|
|
4129
4201
|
"default": "- Default props are used",
|
|
4130
|
-
"summary": "Optional user provided props to override the default props for the S3
|
|
4202
|
+
"summary": "Optional user provided props to override the default props for the S3 Content Bucket Access Log Bucket."
|
|
4131
4203
|
},
|
|
4132
4204
|
"immutable": true,
|
|
4133
4205
|
"locationInModule": {
|
|
4134
4206
|
"filename": "lib/index.ts",
|
|
4135
|
-
"line":
|
|
4207
|
+
"line": 93
|
|
4136
4208
|
},
|
|
4137
4209
|
"name": "loggingBucketProps",
|
|
4138
4210
|
"optional": true,
|
|
@@ -4144,13 +4216,12 @@
|
|
|
4144
4216
|
"abstract": true,
|
|
4145
4217
|
"docs": {
|
|
4146
4218
|
"default": "- true",
|
|
4147
|
-
"
|
|
4148
|
-
"summary": "Whether to turn on Access Logs for the S3 bucket with the associated storage costs."
|
|
4219
|
+
"summary": "Optional - Whether to maintain access logs for the S3 Content bucket."
|
|
4149
4220
|
},
|
|
4150
4221
|
"immutable": true,
|
|
4151
4222
|
"locationInModule": {
|
|
4152
4223
|
"filename": "lib/index.ts",
|
|
4153
|
-
"line":
|
|
4224
|
+
"line": 87
|
|
4154
4225
|
},
|
|
4155
4226
|
"name": "logS3AccessLogs",
|
|
4156
4227
|
"optional": true,
|
|
@@ -4168,7 +4239,7 @@
|
|
|
4168
4239
|
"immutable": true,
|
|
4169
4240
|
"locationInModule": {
|
|
4170
4241
|
"filename": "lib/index.ts",
|
|
4171
|
-
"line":
|
|
4242
|
+
"line": 61
|
|
4172
4243
|
},
|
|
4173
4244
|
"name": "originPath",
|
|
4174
4245
|
"optional": true,
|
|
@@ -4186,7 +4257,7 @@
|
|
|
4186
4257
|
"immutable": true,
|
|
4187
4258
|
"locationInModule": {
|
|
4188
4259
|
"filename": "lib/index.ts",
|
|
4189
|
-
"line":
|
|
4260
|
+
"line": 54
|
|
4190
4261
|
},
|
|
4191
4262
|
"name": "responseHeadersPolicyProps",
|
|
4192
4263
|
"optional": true,
|
|
@@ -4198,6 +4269,6 @@
|
|
|
4198
4269
|
"symbolId": "lib/index:CloudFrontToS3Props"
|
|
4199
4270
|
}
|
|
4200
4271
|
},
|
|
4201
|
-
"version": "2.
|
|
4202
|
-
"fingerprint": "
|
|
4272
|
+
"version": "2.60.0",
|
|
4273
|
+
"fingerprint": "SmpelLw9VzithKBdb/Ug6U/D9D1C8uKJbcqotY4Gkwg="
|
|
4203
4274
|
}
|
package/README.md
CHANGED
|
@@ -57,15 +57,17 @@ new CloudFrontToS3(this, "test-cloudfront-s3", new CloudFrontToS3Props.Builder()
|
|
|
57
57
|
|
|
58
58
|
| **Name** | **Type** | **Description** |
|
|
59
59
|
|:-------------|:----------------|-----------------|
|
|
60
|
-
|existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Existing instance of S3 Bucket object or interface. If this is provided, then also providing bucketProps will cause an error. |
|
|
61
|
-
|bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Bucket.|
|
|
62
60
|
|cloudFrontDistributionProps?|[`cloudfront.DistributionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.DistributionProps.html)|Optional user provided props to override the default props for CloudFront Distribution|
|
|
63
61
|
|insertHttpSecurityHeaders?|`boolean`|Optional user provided props to turn on/off the automatic injection of best practice HTTP security headers in all responses from CloudFront|
|
|
64
|
-
|
|
|
62
|
+
|responseHeadersPolicyProps? | [`cloudfront.ResponseHeadersPolicyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps.html) | Optional user provided configuration that cloudfront applies to all http responses.|
|
|
65
63
|
|originPath?|`string`|Optional user provided props to provide an[originPath](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront_origins.S3OriginProps.html#originpath) that CloudFront appends to the origin domain name when CloudFront requests content from the origin. The string should start with a `/`, for example: `/production`. Default value is `'/'`|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
64
|
+
|existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Existing instance of S3 content bucket object or interface. If this is provided, then also providing bucketProps will cause an error. |
|
|
65
|
+
|bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 content bucket. Note - to log S3 access for this bucket to an existing S3 bucket, put the existing log bucket in bucketProps: `serverAccessLogsBucket`|
|
|
68
66
|
|logS3AccessLogs?| boolean|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|
|
|
67
|
+
|loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|
|
|
68
|
+
|cloudFrontLoggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the CloudFront Logging Bucket. Note: to use an existing bucketto hold CloudFront logs, pass the existing log bucket in |
|
|
69
|
+
|logCloudFrontAccessLog|`boolean`|Optional - Whether to maintain access logs for the CloudFront Logging bucket. Specifying false for this while providing info about the log bucket will cause an error. Default = true |
|
|
70
|
+
|cloudFrontLoggingBucketAccessLogBucketProps|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the CloudFront Log Bucket Access Log bucket. Providing both this and `existingcloudFrontLoggingBucketAccessLogBucket` will cause an error. To provide an existing bucket to accept these logs, pass the existing bucket in `cloudFrontLoggingBucketProps::serverAccessLogBucket`|
|
|
69
71
|
|
|
70
72
|
## Pattern Properties
|
|
71
73
|
|
|
@@ -73,11 +75,12 @@ new CloudFrontToS3(this, "test-cloudfront-s3", new CloudFrontToS3Props.Builder()
|
|
|
73
75
|
|:-------------|:----------------|-----------------|
|
|
74
76
|
|cloudFrontWebDistribution|[`cloudfront.Distribution`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Distribution.html)|Returns an instance of cloudfront.Distribution created by the construct.|
|
|
75
77
|
|cloudFrontFunction?|[`cloudfront.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Function.html)|Returns an instance of the Cloudfront function created by the construct.|
|
|
76
|
-
|
|
|
78
|
+
|originAccessControl?|[`cloudfront.CfnOriginAccessControl`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.cloudfront.CfnOriginAccessControl.html)|Returns an instance of cloudfront.CfnOriginAccessControl created by the construct.|
|
|
77
79
|
|s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct.|
|
|
78
80
|
|s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct. IMPORTANT: If `existingBucketObj` was provided in Pattern Construct Props, this property will be `undefined`|
|
|
79
81
|
|s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|
|
|
80
|
-
|
|
|
82
|
+
|cloudFrontLoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|The S3 bucket created by the construct to hold CloudFront logs. Only populated if the construct creates the bucket (not if an existing bucket is passed in via DistributionProps)|
|
|
83
|
+
|cloudFrontLoggingBucketAccessLogBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|The S3 bucket containing the S3 access logs for the CloudFront log bucket. Only populated if the construct creates the bucket (not if the bucket is passed in via `cloudFrontLoggingBucketProps::serverAccessLogBucket`|
|
|
81
84
|
|
|
82
85
|
## Default settings
|
|
83
86
|
|
package/lib/index.d.ts
CHANGED
|
@@ -17,18 +17,6 @@ import { Construct } from 'constructs';
|
|
|
17
17
|
* @summary The properties for the CloudFrontToS3 Construct
|
|
18
18
|
*/
|
|
19
19
|
export interface CloudFrontToS3Props {
|
|
20
|
-
/**
|
|
21
|
-
* Existing instance of S3 Bucket object, providing both this and `bucketProps` will cause an error.
|
|
22
|
-
*
|
|
23
|
-
* @default - None
|
|
24
|
-
*/
|
|
25
|
-
readonly existingBucketObj?: s3.IBucket;
|
|
26
|
-
/**
|
|
27
|
-
* Optional user provided props to override the default props for the S3 Bucket.
|
|
28
|
-
*
|
|
29
|
-
* @default - Default props are used
|
|
30
|
-
*/
|
|
31
|
-
readonly bucketProps?: s3.BucketProps;
|
|
32
20
|
/**
|
|
33
21
|
* Optional user provided props to override the default props
|
|
34
22
|
*
|
|
@@ -64,29 +52,55 @@ export interface CloudFrontToS3Props {
|
|
|
64
52
|
*/
|
|
65
53
|
readonly originPath?: string;
|
|
66
54
|
/**
|
|
67
|
-
*
|
|
55
|
+
* Existing instance of S3 Content Bucket object, providing both this and `bucketProps` will cause an error.
|
|
56
|
+
*
|
|
57
|
+
* @default - None
|
|
58
|
+
*/
|
|
59
|
+
readonly existingBucketObj?: s3.IBucket;
|
|
60
|
+
/**
|
|
61
|
+
* Optional user provided props to override the default props for the S3 Content Bucket.
|
|
62
|
+
*
|
|
63
|
+
* @default - Default props are used
|
|
64
|
+
*/
|
|
65
|
+
readonly bucketProps?: s3.BucketProps;
|
|
66
|
+
/**
|
|
67
|
+
* Optional - Whether to maintain access logs for the S3 Content bucket
|
|
68
|
+
*
|
|
69
|
+
* @default - true
|
|
70
|
+
*/
|
|
71
|
+
readonly logS3AccessLogs?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Optional user provided props to override the default props for the S3 Content Bucket Access Log Bucket.
|
|
68
74
|
*
|
|
69
75
|
* @default - Default props are used
|
|
70
76
|
*/
|
|
71
77
|
readonly loggingBucketProps?: s3.BucketProps;
|
|
72
78
|
/**
|
|
73
|
-
* Optional user provided props to override the default props for the CloudFront
|
|
79
|
+
* Optional user provided props to override the default props for the CloudFront Log Bucket.
|
|
74
80
|
*
|
|
75
81
|
* @default - Default props are used
|
|
76
82
|
*/
|
|
77
83
|
readonly cloudFrontLoggingBucketProps?: s3.BucketProps;
|
|
78
84
|
/**
|
|
79
|
-
* Whether to
|
|
80
|
-
*
|
|
85
|
+
* Optional - Whether to maintain access logs for the CloudFront Logging bucket. Specifying false for this
|
|
86
|
+
* while providing info about the log bucket will cause an error.
|
|
81
87
|
*
|
|
82
88
|
* @default - true
|
|
83
89
|
*/
|
|
84
|
-
readonly
|
|
90
|
+
readonly logCloudFrontAccessLog?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Optional user provided props to override the default props for the CloudFront Log Bucket Access Log bucket.
|
|
93
|
+
* Providing both this and `existingcloudFrontLoggingBucketAccessLogBucket` will cause an error
|
|
94
|
+
*
|
|
95
|
+
* @default - Default props are used
|
|
96
|
+
*/
|
|
97
|
+
readonly cloudFrontLoggingBucketAccessLogBucketProps?: s3.BucketProps;
|
|
85
98
|
}
|
|
86
99
|
export declare class CloudFrontToS3 extends Construct {
|
|
87
100
|
readonly cloudFrontWebDistribution: cloudfront.Distribution;
|
|
88
101
|
readonly cloudFrontFunction?: cloudfront.Function;
|
|
89
102
|
readonly cloudFrontLoggingBucket?: s3.Bucket;
|
|
103
|
+
readonly cloudFrontLoggingBucketAccessLogBucket?: s3.Bucket;
|
|
90
104
|
readonly s3BucketInterface: s3.IBucket;
|
|
91
105
|
readonly s3Bucket?: s3.Bucket;
|
|
92
106
|
readonly s3LoggingBucket?: s3.Bucket;
|
|
@@ -100,4 +114,5 @@ export declare class CloudFrontToS3 extends Construct {
|
|
|
100
114
|
* @access public
|
|
101
115
|
*/
|
|
102
116
|
constructor(scope: Construct, id: string, props: CloudFrontToS3Props);
|
|
117
|
+
private CheckConstructSpecificProps;
|
|
103
118
|
}
|
package/lib/index.js
CHANGED
|
@@ -37,6 +37,7 @@ class CloudFrontToS3 extends constructs_1.Construct {
|
|
|
37
37
|
this.node.setContext("@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy", true);
|
|
38
38
|
defaults.CheckS3Props(props);
|
|
39
39
|
defaults.CheckCloudFrontProps(props);
|
|
40
|
+
this.CheckConstructSpecificProps(props);
|
|
40
41
|
let originBucket;
|
|
41
42
|
if (!props.existingBucketObj) {
|
|
42
43
|
const buildS3BucketResponse = defaults.buildS3Bucket(this, {
|
|
@@ -58,13 +59,15 @@ class CloudFrontToS3 extends constructs_1.Construct {
|
|
|
58
59
|
cloudFrontDistributionProps: props.cloudFrontDistributionProps,
|
|
59
60
|
httpSecurityHeaders: props.insertHttpSecurityHeaders,
|
|
60
61
|
cloudFrontLoggingBucketProps: props.cloudFrontLoggingBucketProps,
|
|
61
|
-
responseHeadersPolicyProps: props.responseHeadersPolicyProps
|
|
62
|
+
responseHeadersPolicyProps: props.responseHeadersPolicyProps,
|
|
63
|
+
cloudFrontLoggingBucketS3AccessLogBucketProps: props.cloudFrontLoggingBucketAccessLogBucketProps
|
|
62
64
|
};
|
|
63
65
|
const cloudFrontDistributionForS3Response = defaults.createCloudFrontDistributionForS3(this, id, cloudFrontDistributionForS3Props);
|
|
64
66
|
this.cloudFrontWebDistribution = cloudFrontDistributionForS3Response.distribution;
|
|
65
67
|
this.cloudFrontFunction = cloudFrontDistributionForS3Response.cloudfrontFunction;
|
|
66
68
|
this.cloudFrontLoggingBucket = cloudFrontDistributionForS3Response.loggingBucket;
|
|
67
69
|
this.originAccessControl = cloudFrontDistributionForS3Response.originAccessControl;
|
|
70
|
+
this.cloudFrontLoggingBucketAccessLogBucket = cloudFrontDistributionForS3Response.loggingBucketS3AccesssLogBucket;
|
|
68
71
|
// Attach the OriginAccessControl to the CloudFront Distribution, and remove the OriginAccessIdentity
|
|
69
72
|
const l1CloudFrontDistribution = this.cloudFrontWebDistribution.node.defaultChild;
|
|
70
73
|
l1CloudFrontDistribution.addPropertyOverride('DistributionConfig.Origins.0.OriginAccessControlId', this.originAccessControl?.attrId);
|
|
@@ -104,8 +107,35 @@ class CloudFrontToS3 extends constructs_1.Construct {
|
|
|
104
107
|
});
|
|
105
108
|
}
|
|
106
109
|
}
|
|
110
|
+
CheckConstructSpecificProps(props) {
|
|
111
|
+
let errorMessages = '';
|
|
112
|
+
let errorFound = false;
|
|
113
|
+
if ((props.logS3AccessLogs === false) && props.bucketProps?.serverAccessLogsBucket) {
|
|
114
|
+
errorMessages += 'Error - logS3AccessLogs is false, but a log bucket was provided in bucketProps.\n';
|
|
115
|
+
errorFound = true;
|
|
116
|
+
}
|
|
117
|
+
if (props.loggingBucketProps && props.bucketProps?.serverAccessLogsBucket) {
|
|
118
|
+
errorMessages += 'Error - bothlog bucket props and an existing log bucket were provided.\n';
|
|
119
|
+
errorFound = true;
|
|
120
|
+
}
|
|
121
|
+
if (props.cloudFrontLoggingBucketAccessLogBucketProps && props.cloudFrontLoggingBucketProps?.serverAccessLogsBucket) {
|
|
122
|
+
errorMessages += 'Error - an existing CloudFront log bucket S3 access log bucket and cloudFrontLoggingBucketAccessLogBucketProps were provided\n';
|
|
123
|
+
errorFound = true;
|
|
124
|
+
}
|
|
125
|
+
if (props.cloudFrontLoggingBucketAccessLogBucketProps && props.logCloudFrontAccessLog === false) {
|
|
126
|
+
errorMessages += 'Error - cloudFrontLoggingBucketAccessLogBucketProps were provided but logCloudFrontAccessLog was false\n';
|
|
127
|
+
errorFound = true;
|
|
128
|
+
}
|
|
129
|
+
if (props.cloudFrontLoggingBucketProps?.serverAccessLogsBucket && props.logCloudFrontAccessLog === false) {
|
|
130
|
+
errorMessages += 'Error - props.cloudFrontLoggingBucketProps.serverAccessLogsBucket was provided but logCloudFrontAccessLog was false\n';
|
|
131
|
+
errorFound = true;
|
|
132
|
+
}
|
|
133
|
+
if (errorFound) {
|
|
134
|
+
throw new Error(errorMessages);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
107
137
|
}
|
|
108
138
|
exports.CloudFrontToS3 = CloudFrontToS3;
|
|
109
139
|
_a = JSII_RTTI_SYMBOL_1;
|
|
110
|
-
CloudFrontToS3[_a] = { fqn: "@aws-solutions-constructs/aws-cloudfront-s3.CloudFrontToS3", version: "2.
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsNkNBQWtDO0FBRWxDLDJDQUEyQztBQUczQywyREFBMkQ7QUFDM0QsaUVBQWlFO0FBQ2pFLHdGQUF3RjtBQUN4RiwyQ0FBdUM7QUF5RXZDLE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBUzNDOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsd0VBQXdFO1FBQ3hFLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpREFBaUQsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5RSxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyxJQUFJLFlBQXdCLENBQUM7UUFFN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtZQUM1QixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO2dCQUN6RCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzVDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTthQUN2QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQztZQUMzRCxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUM5QjthQUFNO1lBQ0wsWUFBWSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztTQUN4QztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUM7UUFFdEMscUNBQXFDO1FBQ3JDLE1BQU0sZ0NBQWdDLEdBQW9EO1lBQ3hGLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3BDLDJCQUEyQixFQUFFLEtBQUssQ0FBQywyQkFBMkI7WUFDOUQsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtZQUNwRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCO1lBQ2hFLDBCQUEwQixFQUFFLEtBQUssQ0FBQywwQkFBMEI7U0FDN0QsQ0FBQztRQUNGLE1BQU0sbUNBQW1DLEdBQUcsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUNuSSxJQUFJLENBQUMseUJBQXlCLEdBQUcsbUNBQW1DLENBQUMsWUFBWSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxtQ0FBbUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRixJQUFJLENBQUMsdUJBQXVCLEdBQUcsbUNBQW1DLENBQUMsYUFBYSxDQUFDO1FBQ2pGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQ0FBbUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUVuRixxR0FBcUc7UUFDckcsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQTBDLENBQUM7UUFDaEgsd0JBQXdCLENBQUMsbUJBQW1CLENBQUMsb0RBQW9ELEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JJLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNwQix3QkFBd0IsQ0FBQyxtQkFBbUIsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0c7UUFFRCwyRUFBMkU7UUFDM0UsWUFBWSxDQUFDLG1CQUFtQixDQUM5QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsVUFBVSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNsRSxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLFVBQVUsRUFBRTtnQkFDVixZQUFZLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixpQkFBRyxDQUFDLFVBQVUsaUJBQWlCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLEVBQUU7aUJBQ3ZIO2FBQ0Y7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLHNGQUFzRjtRQUN0RixvRkFBb0Y7UUFDcEYsd0ZBQXdGO1FBQ3hGLGlFQUFpRTtRQUNqRSwyQ0FBMkM7UUFDM0Msd0RBQXdEO1FBQ3hELHlEQUF5RDtRQUN6RCxJQUFJLGFBQW1DLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQ3hELGFBQWEsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUNqRDthQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7WUFDM0UsYUFBYSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7U0FDdkQ7UUFFRCxJQUFJLGFBQWEsRUFBRTtZQUNqQixTQUFTLENBQUMsb0NBQW9DLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRztnQkFDeEQsWUFBWSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7Z0JBQzVDLGFBQWE7YUFDZCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBcEdILHdDQXFHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEF3cyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgKiBhcyByZXNvdXJjZXMgZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9yZXNvdXJjZXMnO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBDbG91ZEZyb250VG9TMyBDb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250VG9TM1Byb3BzIHtcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIFMzIEJ1Y2tldCBvYmplY3QsIHByb3ZpZGluZyBib3RoIHRoaXMgYW5kIGBidWNrZXRQcm9wc2Agd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ0J1Y2tldE9iaj86IHMzLklCdWNrZXQsXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB8IGFueSxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gdHVybiBvbi9vZmYgdGhlIGF1dG9tYXRpYyBpbmplY3Rpb24gb2YgYmVzdCBwcmFjdGljZSBIVFRQXG4gICAqIHNlY3VyaXR5IGhlYWRlcnMgaW4gYWxsIHJlc3BvbnNlcyBmcm9tIGNsb3VkZnJvbnQuXG4gICAqIFR1cm5pbmcgdGhpcyBvbiB3aWxsIGluamVjdCBkZWZhdWx0IGhlYWRlcnMgYW5kIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHBhc3NpbmcgY3VzdG9tIHNlY3VyaXR5IGhlYWRlcnNcbiAgICogdmlhIHRoZSByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gdGhhdCBjbG91ZGZyb250IGFwcGxpZXMgdG8gYWxsIGh0dHAgcmVzcG9uc2VzLlxuICAgKiBDYW4gYmUgdXNlZCB0byBwYXNzIGEgY3VzdG9tIFJlc3BvbnNlU2VjdXJpdHlIZWFkZXJzQmVoYXZpb3IsIFJlc3BvbnNlQ3VzdG9tSGVhZGVyc0JlaGF2aW9yIG9yXG4gICAqIFJlc3BvbnNlSGVhZGVyc0NvcnNCZWhhdmlvciB0byB0aGUgY2xvdWRmcm9udCBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIFBhc3NpbmcgYSBjdXN0b20gUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCB0dXJuaW5nIG9uIHRoZSBkZWZhdWx0IHNlY3VyaXR5IGhlYWRlcnNcbiAgICogdmlhIGBpbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzYCBwcm9wLiBXaWxsIHRocm93IGFuIGVycm9yIGlmIGJvdGggYGluc2VydEh0dHBTZWN1cml0eUhlYWRlcnNgIGlzIHNldCB0byBgdHJ1ZWBcbiAgICogYW5kIFJlc3BvbnNlU2VjdXJpdHlIZWFkZXJzQmVoYXZpb3IgaXMgcGFzc2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIHByb3ZpZGUgYW4gb3JpZ2luUGF0aCB0aGF0IENsb3VkRnJvbnQgYXBwZW5kcyB0byB0aGVcbiAgICogb3JpZ2luIGRvbWFpbiBuYW1lIHdoZW4gQ2xvdWRGcm9udCByZXF1ZXN0cyBjb250ZW50IGZyb20gdGhlIG9yaWdpbi5cbiAgICogVGhlIHN0cmluZyBzaG91bGQgc3RhcnQgd2l0aCBhIGAvYCwgZm9yIGV4YW1wbGUgYC9wcm9kdWN0aW9uYC5cbiAgICogQGRlZmF1bHQgPSAnLydcbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpblBhdGg/OiBzdHJpbmcsXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgTG9nZ2luZyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHNcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBDbG91ZEZyb250IExvZ2dpbmcgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wc1xuICAvKipcbiAgICogV2hldGhlciB0byB0dXJuIG9uIEFjY2VzcyBMb2dzIGZvciB0aGUgUzMgYnVja2V0IHdpdGggdGhlIGFzc29jaWF0ZWQgc3RvcmFnZSBjb3N0cy5cbiAgICogRW5hYmxpbmcgQWNjZXNzIExvZ2dpbmcgaXMgYSBiZXN0IHByYWN0aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1MzQWNjZXNzTG9ncz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250VG9TMyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbj86IGNsb3VkZnJvbnQuRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IHMzQnVja2V0SW50ZXJmYWNlOiBzMy5JQnVja2V0O1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ/OiBzMy5CdWNrZXQ7XG4gIHB1YmxpYyByZWFkb25seSBzM0xvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXQ7XG4gIHB1YmxpYyByZWFkb25seSBvcmlnaW5BY2Nlc3NDb250cm9sPzogY2xvdWRmcm9udC5DZm5PcmlnaW5BY2Nlc3NDb250cm9sO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBDbG91ZEZyb250VG9TMyBjbGFzcy5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3R9IHNjb3BlIC0gcmVwcmVzZW50cyB0aGUgc2NvcGUgZm9yIGFsbCB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGlzIGlzIGEgYSBzY29wZS11bmlxdWUgaWQuXG4gICAqIEBwYXJhbSB7Q2xvdWRGcm9udFRvUzNQcm9wc30gcHJvcHMgLSB1c2VyIHByb3ZpZGVkIHByb3BzIGZvciB0aGUgY29uc3RydWN0XG4gICAqIEBzaW5jZSAwLjguMFxuICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsb3VkRnJvbnRUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQWxsIG91ciB0ZXN0cyBhcmUgYmFzZWQgdXBvbiB0aGlzIGJlaGF2aW9yIGJlaW5nIG9uLCBzbyB3ZSdyZSBzZXR0aW5nXG4gICAgLy8gY29udGV4dCBoZXJlIHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoZSBjbGllbnQgd2lsbCBzZXQgaXRcbiAgICB0aGlzLm5vZGUuc2V0Q29udGV4dChcIkBhd3MtY2RrL2F3cy1zMzpzZXJ2ZXJBY2Nlc3NMb2dzVXNlQnVja2V0UG9saWN5XCIsIHRydWUpO1xuXG4gICAgZGVmYXVsdHMuQ2hlY2tTM1Byb3BzKHByb3BzKTtcbiAgICBkZWZhdWx0cy5DaGVja0Nsb3VkRnJvbnRQcm9wcyhwcm9wcyk7XG5cbiAgICBsZXQgb3JpZ2luQnVja2V0OiBzMy5JQnVja2V0O1xuXG4gICAgaWYgKCFwcm9wcy5leGlzdGluZ0J1Y2tldE9iaikge1xuICAgICAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldCh0aGlzLCB7XG4gICAgICAgIGJ1Y2tldFByb3BzOiBwcm9wcy5idWNrZXRQcm9wcyxcbiAgICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICAgIGxvZ1MzQWNjZXNzTG9nczogcHJvcHMubG9nUzNBY2Nlc3NMb2dzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuczNCdWNrZXQgPSBidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0O1xuICAgICAgdGhpcy5zM0xvZ2dpbmdCdWNrZXQgPSBidWlsZFMzQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldDtcbiAgICAgIG9yaWdpbkJ1Y2tldCA9IHRoaXMuczNCdWNrZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWdpbkJ1Y2tldCA9IHByb3BzLmV4aXN0aW5nQnVja2V0T2JqO1xuICAgIH1cblxuICAgIHRoaXMuczNCdWNrZXRJbnRlcmZhY2UgPSBvcmlnaW5CdWNrZXQ7XG5cbiAgICAvLyBEZWZpbmUgdGhlIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uXG4gICAgY29uc3QgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUHJvcHM6IGRlZmF1bHRzLkNyZWF0ZUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Byb3BzID0ge1xuICAgICAgc291cmNlQnVja2V0OiB0aGlzLnMzQnVja2V0SW50ZXJmYWNlLFxuICAgICAgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzOiBwcm9wcy5jbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgICBodHRwU2VjdXJpdHlIZWFkZXJzOiBwcm9wcy5pbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzLFxuICAgICAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcyxcbiAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wc1xuICAgIH07XG4gICAgY29uc3QgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2UgPSBkZWZhdWx0cy5jcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzModGhpcywgaWQsIGNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Byb3BzKTtcbiAgICB0aGlzLmNsb3VkRnJvbnRXZWJEaXN0cmlidXRpb24gPSBjbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZS5kaXN0cmlidXRpb247XG4gICAgdGhpcy5jbG91ZEZyb250RnVuY3Rpb24gPSBjbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZS5jbG91ZGZyb250RnVuY3Rpb247XG4gICAgdGhpcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldCA9IGNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Jlc3BvbnNlLmxvZ2dpbmdCdWNrZXQ7XG4gICAgdGhpcy5vcmlnaW5BY2Nlc3NDb250cm9sID0gY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uub3JpZ2luQWNjZXNzQ29udHJvbDtcblxuICAgIC8vIEF0dGFjaCB0aGUgT3JpZ2luQWNjZXNzQ29udHJvbCB0byB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24sIGFuZCByZW1vdmUgdGhlIE9yaWdpbkFjY2Vzc0lkZW50aXR5XG4gICAgY29uc3QgbDFDbG91ZEZyb250RGlzdHJpYnV0aW9uID0gdGhpcy5jbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNsb3VkZnJvbnQuQ2ZuRGlzdHJpYnV0aW9uO1xuICAgIGwxQ2xvdWRGcm9udERpc3RyaWJ1dGlvbi5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdEaXN0cmlidXRpb25Db25maWcuT3JpZ2lucy4wLk9yaWdpbkFjY2Vzc0NvbnRyb2xJZCcsIHRoaXMub3JpZ2luQWNjZXNzQ29udHJvbD8uYXR0cklkKTtcbiAgICBpZiAocHJvcHMub3JpZ2luUGF0aCkge1xuICAgICAgbDFDbG91ZEZyb250RGlzdHJpYnV0aW9uLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ0Rpc3RyaWJ1dGlvbkNvbmZpZy5PcmlnaW5zLjAuT3JpZ2luUGF0aCcsIHByb3BzLm9yaWdpblBhdGgpO1xuICAgIH1cblxuICAgIC8vIEdyYW50IENsb3VkRnJvbnQgcGVybWlzc2lvbiB0byBnZXQgdGhlIG9iamVjdHMgZnJvbSB0aGUgczMgYnVja2V0IG9yaWdpblxuICAgIG9yaWdpbkJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Nsb3VkZnJvbnQuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbb3JpZ2luQnVja2V0LmFybkZvck9iamVjdHMoJyonKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdBV1M6U291cmNlQXJuJzogYGFybjphd3M6Y2xvdWRmcm9udDo6JHtBd3MuQUNDT1VOVF9JRH06ZGlzdHJpYnV0aW9uLyR7dGhpcy5jbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEgY3VzdG9tIHJlc291cmNlIHRvIGludHJvZHVjZSB0aGUgaW5kaXJlY3Rpb24gbmVjZXNzYXJ5IHRvIGF2b2lkXG4gICAgLy8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdoZW4gZ3JhbnRpbmcgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGFjY2VzcyB0byB1c2UgdGhlXG4gICAgLy8gS01TIGtleSB0byBkZWNyeXB0IG9iamVjdHMuIFdpdGhvdXQgdGhpcyBpbmRpcmVjdGlvbiwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlZmVyZW5jZVxuICAgIC8vIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBJRCBpbiB0aGUgS01TIGtleSBwb2xpY3kgYmVjYXVzZSAtXG4gICAgLy8gICAqIFRoZSBTMyBidWNrZXQgcmVmZXJlbmNlcyB0aGUgS01TIGtleVxuICAgIC8vICAgKiBUaGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gcmVmZXJlbmNlcyB0aGUgYnVja2V0XG4gICAgLy8gICAqIFRoZSBLTVMga2V5IHJlZmVyZW5jZXMgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAgbGV0IGVuY3J5cHRpb25LZXk6IGttcy5JS2V5IHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5idWNrZXRQcm9wcyAmJiBwcm9wcy5idWNrZXRQcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBlbmNyeXB0aW9uS2V5ID0gcHJvcHMuYnVja2V0UHJvcHMuZW5jcnlwdGlvbktleTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmV4aXN0aW5nQnVja2V0T2JqICYmIHByb3BzLmV4aXN0aW5nQnVja2V0T2JqLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIGVuY3J5cHRpb25LZXkgPSBwcm9wcy5leGlzdGluZ0J1Y2tldE9iai5lbmNyeXB0aW9uS2V5O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uS2V5KSB7XG4gICAgICByZXNvdXJjZXMuY3JlYXRlS2V5UG9saWN5VXBkYXRlckN1c3RvbVJlc291cmNlKHRoaXMsIGlkLCAge1xuICAgICAgICBkaXN0cmlidXRpb246IHRoaXMuY2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbixcbiAgICAgICAgZW5jcnlwdGlvbktleVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59Il19
|
|
140
|
+
CloudFrontToS3[_a] = { fqn: "@aws-solutions-constructs/aws-cloudfront-s3.CloudFrontToS3", version: "2.60.0" };
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsNkNBQWtDO0FBRWxDLDJDQUEyQztBQUczQywyREFBMkQ7QUFDM0QsaUVBQWlFO0FBQ2pFLHdGQUF3RjtBQUN4RiwyQ0FBdUM7QUFzR3ZDLE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBVTNDOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsd0VBQXdFO1FBQ3hFLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpREFBaUQsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5RSxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxZQUF3QixDQUFDO1FBRTdCLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7WUFDNUIsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtnQkFDekQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO2dCQUM1QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7WUFDM0QsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDOUI7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bi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQXdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIHJlc291cmNlcyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL3Jlc291cmNlcyc7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIENsb3VkRnJvbnRUb1MzIENvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRnJvbnRUb1MzUHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcz86IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMgfCBhbnksXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIHR1cm4gb24vb2ZmIHRoZSBhdXRvbWF0aWMgaW5qZWN0aW9uIG9mIGJlc3QgcHJhY3RpY2UgSFRUUFxuICAgKiBzZWN1cml0eSBoZWFkZXJzIGluIGFsbCByZXNwb25zZXMgZnJvbSBjbG91ZGZyb250LlxuICAgKiBUdXJuaW5nIHRoaXMgb24gd2lsbCBpbmplY3QgZGVmYXVsdCBoZWFkZXJzIGFuZCBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBwYXNzaW5nIGN1c3RvbSBzZWN1cml0eSBoZWFkZXJzXG4gICAqIHZpYSB0aGUgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGluc2VydEh0dHBTZWN1cml0eUhlYWRlcnM/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBjb25maWd1cmF0aW9uIHRoYXQgY2xvdWRmcm9udCBhcHBsaWVzIHRvIGFsbCBodHRwIHJlc3BvbnNlcy5cbiAgICogQ2FuIGJlIHVzZWQgdG8gcGFzcyBhIGN1c3RvbSBSZXNwb25zZVNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yLCBSZXNwb25zZUN1c3RvbUhlYWRlcnNCZWhhdmlvciBvclxuICAgKiBSZXNwb25zZUhlYWRlcnNDb3JzQmVoYXZpb3IgdG8gdGhlIGNsb3VkZnJvbnQgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBQYXNzaW5nIGEgY3VzdG9tIFJlc3BvbnNlU2VjdXJpdHlIZWFkZXJzQmVoYXZpb3IgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggdHVybmluZyBvbiB0aGUgZGVmYXVsdCBzZWN1cml0eSBoZWFkZXJzXG4gICAqIHZpYSBgaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVyc2AgcHJvcC4gV2lsbCB0aHJvdyBhbiBlcnJvciBpZiBib3RoIGBpbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzYCBpcyBzZXQgdG8gYHRydWVgXG4gICAqIGFuZCBSZXNwb25zZVNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yIGlzIHBhc3NlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogY2xvdWRmcm9udC5SZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wc1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBwcm92aWRlIGFuIG9yaWdpblBhdGggdGhhdCBDbG91ZEZyb250IGFwcGVuZHMgdG8gdGhlXG4gICAqIG9yaWdpbiBkb21haW4gbmFtZSB3aGVuIENsb3VkRnJvbnQgcmVxdWVzdHMgY29udGVudCBmcm9tIHRoZSBvcmlnaW4uXG4gICAqIFRoZSBzdHJpbmcgc2hvdWxkIHN0YXJ0IHdpdGggYSBgL2AsIGZvciBleGFtcGxlIGAvcHJvZHVjdGlvbmAuXG4gICAqIEBkZWZhdWx0ID0gJy8nXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5QYXRoPzogc3RyaW5nLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTMyBDb250ZW50IEJ1Y2tldFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIFMzIENvbnRlbnQgQnVja2V0IG9iamVjdCwgcHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYGJ1Y2tldFByb3BzYCB3aWxsIGNhdXNlIGFuIGVycm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nQnVja2V0T2JqPzogczMuSUJ1Y2tldCxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTMyBDb250ZW50IEJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTMyBDb250ZW50IEJ1Y2tldCBBY2Nlc3MgTG9ncyBCdWNrZXRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIC8qKlxuICAgKiBPcHRpb25hbCAtIFdoZXRoZXIgdG8gbWFpbnRhaW4gYWNjZXNzIGxvZ3MgZm9yIHRoZSBTMyBDb250ZW50IGJ1Y2tldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1MzQWNjZXNzTG9ncz86IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgQ29udGVudCBCdWNrZXQgQWNjZXNzIExvZyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENsb3VkRnJvbnQgTG9nIEJ1Y2tldFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT1cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBDbG91ZEZyb250IExvZyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDbG91ZEZyb250IExvZ3MgQnVja2V0IEFjY2VzcyBMb2cgQnVja2V0XG4gIC8vID09PT09PT09PT09PT09PT09PT09PVxuICAvKipcbiAgICogT3B0aW9uYWwgLSBXaGV0aGVyIHRvIG1haW50YWluIGFjY2VzcyBsb2dzIGZvciB0aGUgQ2xvdWRGcm9udCBMb2dnaW5nIGJ1Y2tldC4gU3BlY2lmeWluZyBmYWxzZSBmb3IgdGhpc1xuICAgKiB3aGlsZSBwcm92aWRpbmcgaW5mbyBhYm91dCB0aGUgbG9nIGJ1Y2tldCB3aWxsIGNhdXNlIGFuIGVycm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2c/OiBib29sZWFuLFxuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIENsb3VkRnJvbnQgTG9nIEJ1Y2tldCBBY2Nlc3MgTG9nIGJ1Y2tldC5cbiAgICogUHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYGV4aXN0aW5nY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRgIHdpbGwgY2F1c2UgYW4gZXJyb3JcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldEFjY2Vzc0xvZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250VG9TMyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbj86IGNsb3VkZnJvbnQuRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0QWNjZXNzTG9nQnVja2V0PzogczMuQnVja2V0O1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXRJbnRlcmZhY2U6IHMzLklCdWNrZXQ7XG4gIHB1YmxpYyByZWFkb25seSBzM0J1Y2tldD86IHMzLkJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IHMzTG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IG9yaWdpbkFjY2Vzc0NvbnRyb2w/OiBjbG91ZGZyb250LkNmbk9yaWdpbkFjY2Vzc0NvbnRyb2w7XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIENsb3VkRnJvbnRUb1MzIGNsYXNzLlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdH0gc2NvcGUgLSByZXByZXNlbnRzIHRoZSBzY29wZSBmb3IgYWxsIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIHRoaXMgaXMgYSBhIHNjb3BlLXVuaXF1ZSBpZC5cbiAgICogQHBhcmFtIHtDbG91ZEZyb250VG9TM1Byb3BzfSBwcm9wcyAtIHVzZXIgcHJvdmlkZWQgcHJvcHMgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICogQHNpbmNlIDAuOC4wXG4gICAqIEBhY2Nlc3MgcHVibGljXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRGcm9udFRvUzNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBBbGwgb3VyIHRlc3RzIGFyZSBiYXNlZCB1cG9uIHRoaXMgYmVoYXZpb3IgYmVpbmcgb24sIHNvIHdlJ3JlIHNldHRpbmdcbiAgICAvLyBjb250ZXh0IGhlcmUgcmF0aGVyIHRoYW4gYXNzdW1pbmcgdGhlIGNsaWVudCB3aWxsIHNldCBpdFxuICAgIHRoaXMubm9kZS5zZXRDb250ZXh0KFwiQGF3cy1jZGsvYXdzLXMzOnNlcnZlckFjY2Vzc0xvZ3NVc2VCdWNrZXRQb2xpY3lcIiwgdHJ1ZSk7XG5cbiAgICBkZWZhdWx0cy5DaGVja1MzUHJvcHMocHJvcHMpO1xuICAgIGRlZmF1bHRzLkNoZWNrQ2xvdWRGcm9udFByb3BzKHByb3BzKTtcbiAgICB0aGlzLkNoZWNrQ29uc3RydWN0U3BlY2lmaWNQcm9wcyhwcm9wcyk7XG5cbiAgICBsZXQgb3JpZ2luQnVja2V0OiBzMy5JQnVja2V0O1xuXG4gICAgaWYgKCFwcm9wcy5leGlzdGluZ0J1Y2tldE9iaikge1xuICAgICAgY29uc3QgYnVpbGRTM0J1Y2tldFJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTM0J1Y2tldCh0aGlzLCB7XG4gICAgICAgIGJ1Y2tldFByb3BzOiBwcm9wcy5idWNrZXRQcm9wcyxcbiAgICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzOiBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMsXG4gICAgICAgIGxvZ1MzQWNjZXNzTG9nczogcHJvcHMubG9nUzNBY2Nlc3NMb2dzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuczNCdWNrZXQgPSBidWlsZFMzQnVja2V0UmVzcG9uc2UuYnVja2V0O1xuICAgICAgdGhpcy5zM0xvZ2dpbmdCdWNrZXQgPSBidWlsZFMzQnVja2V0UmVzcG9uc2UubG9nZ2luZ0J1Y2tldDtcbiAgICAgIG9yaWdpbkJ1Y2tldCA9IHRoaXMuczNCdWNrZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWdpbkJ1Y2tldCA9IHByb3BzLmV4aXN0aW5nQnVja2V0T2JqO1xuICAgIH1cblxuICAgIHRoaXMuczNCdWNrZXRJbnRlcmZhY2UgPSBvcmlnaW5CdWNrZXQ7XG5cbiAgICAvLyBEZWZpbmUgdGhlIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uXG4gICAgY29uc3QgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUHJvcHM6IGRlZmF1bHRzLkNyZWF0ZUNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Byb3BzID0ge1xuICAgICAgc291cmNlQnVja2V0OiB0aGlzLnMzQnVja2V0SW50ZXJmYWNlLFxuICAgICAgY2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzOiBwcm9wcy5jbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMsXG4gICAgICBodHRwU2VjdXJpdHlIZWFkZXJzOiBwcm9wcy5pbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzLFxuICAgICAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcyxcbiAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyxcbiAgICAgIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UzNBY2Nlc3NMb2dCdWNrZXRQcm9wczogcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wc1xuICAgIH07XG4gICAgY29uc3QgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2UgPSBkZWZhdWx0cy5jcmVhdGVDbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzModGhpcywgaWQsIGNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Byb3BzKTtcbiAgICB0aGlzLmNsb3VkRnJvbnRXZWJEaXN0cmlidXRpb24gPSBjbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZS5kaXN0cmlidXRpb247XG4gICAgdGhpcy5jbG91ZEZyb250RnVuY3Rpb24gPSBjbG91ZEZyb250RGlzdHJpYnV0aW9uRm9yUzNSZXNwb25zZS5jbG91ZGZyb250RnVuY3Rpb247XG4gICAgdGhpcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldCA9IGNsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JTM1Jlc3BvbnNlLmxvZ2dpbmdCdWNrZXQ7XG4gICAgdGhpcy5vcmlnaW5BY2Nlc3NDb250cm9sID0gY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2Uub3JpZ2luQWNjZXNzQ29udHJvbDtcbiAgICB0aGlzLmNsb3VkRnJvbnRMb2dnaW5nQnVja2V0QWNjZXNzTG9nQnVja2V0ID0gY2xvdWRGcm9udERpc3RyaWJ1dGlvbkZvclMzUmVzcG9uc2UubG9nZ2luZ0J1Y2tldFMzQWNjZXNzc0xvZ0J1Y2tldDtcblxuICAgIC8vIEF0dGFjaCB0aGUgT3JpZ2luQWNjZXNzQ29udHJvbCB0byB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24sIGFuZCByZW1vdmUgdGhlIE9yaWdpbkFjY2Vzc0lkZW50aXR5XG4gICAgY29uc3QgbDFDbG91ZEZyb250RGlzdHJpYnV0aW9uID0gdGhpcy5jbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNsb3VkZnJvbnQuQ2ZuRGlzdHJpYnV0aW9uO1xuICAgIGwxQ2xvdWRGcm9udERpc3RyaWJ1dGlvbi5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdEaXN0cmlidXRpb25Db25maWcuT3JpZ2lucy4wLk9yaWdpbkFjY2Vzc0NvbnRyb2xJZCcsIHRoaXMub3JpZ2luQWNjZXNzQ29udHJvbD8uYXR0cklkKTtcbiAgICBpZiAocHJvcHMub3JpZ2luUGF0aCkge1xuICAgICAgbDFDbG91ZEZyb250RGlzdHJpYnV0aW9uLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ0Rpc3RyaWJ1dGlvbkNvbmZpZy5PcmlnaW5zLjAuT3JpZ2luUGF0aCcsIHByb3BzLm9yaWdpblBhdGgpO1xuICAgIH1cblxuICAgIC8vIEdyYW50IENsb3VkRnJvbnQgcGVybWlzc2lvbiB0byBnZXQgdGhlIG9iamVjdHMgZnJvbSB0aGUgczMgYnVja2V0IG9yaWdpblxuICAgIG9yaWdpbkJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Nsb3VkZnJvbnQuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbb3JpZ2luQnVja2V0LmFybkZvck9iamVjdHMoJyonKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdBV1M6U291cmNlQXJuJzogYGFybjphd3M6Y2xvdWRmcm9udDo6JHtBd3MuQUNDT1VOVF9JRH06ZGlzdHJpYnV0aW9uLyR7dGhpcy5jbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEgY3VzdG9tIHJlc291cmNlIHRvIGludHJvZHVjZSB0aGUgaW5kaXJlY3Rpb24gbmVjZXNzYXJ5IHRvIGF2b2lkXG4gICAgLy8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdoZW4gZ3JhbnRpbmcgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGFjY2VzcyB0byB1c2UgdGhlXG4gICAgLy8gS01TIGtleSB0byBkZWNyeXB0IG9iamVjdHMuIFdpdGhvdXQgdGhpcyBpbmRpcmVjdGlvbiwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlZmVyZW5jZVxuICAgIC8vIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBJRCBpbiB0aGUgS01TIGtleSBwb2xpY3kgYmVjYXVzZSAtXG4gICAgLy8gICAqIFRoZSBTMyBidWNrZXQgcmVmZXJlbmNlcyB0aGUgS01TIGtleVxuICAgIC8vICAgKiBUaGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gcmVmZXJlbmNlcyB0aGUgYnVja2V0XG4gICAgLy8gICAqIFRoZSBLTVMga2V5IHJlZmVyZW5jZXMgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAgbGV0IGVuY3J5cHRpb25LZXk6IGttcy5JS2V5IHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5idWNrZXRQcm9wcyAmJiBwcm9wcy5idWNrZXRQcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBlbmNyeXB0aW9uS2V5ID0gcHJvcHMuYnVja2V0UHJvcHMuZW5jcnlwdGlvbktleTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmV4aXN0aW5nQnVja2V0T2JqICYmIHByb3BzLmV4aXN0aW5nQnVja2V0T2JqLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIGVuY3J5cHRpb25LZXkgPSBwcm9wcy5leGlzdGluZ0J1Y2tldE9iai5lbmNyeXB0aW9uS2V5O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uS2V5KSB7XG4gICAgICByZXNvdXJjZXMuY3JlYXRlS2V5UG9saWN5VXBkYXRlckN1c3RvbVJlc291cmNlKHRoaXMsIGlkLCAge1xuICAgICAgICBkaXN0cmlidXRpb246IHRoaXMuY2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbixcbiAgICAgICAgZW5jcnlwdGlvbktleVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBDaGVja0NvbnN0cnVjdFNwZWNpZmljUHJvcHMocHJvcHM6IENsb3VkRnJvbnRUb1MzUHJvcHMpIHtcbiAgICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICAgIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgICBpZiAoKHByb3BzLmxvZ1MzQWNjZXNzTG9ncyA9PT0gZmFsc2UpICYmIHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIGxvZ1MzQWNjZXNzTG9ncyBpcyBmYWxzZSwgYnV0IGEgbG9nIGJ1Y2tldCB3YXMgcHJvdmlkZWQgaW4gYnVja2V0UHJvcHMuXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMgJiYgcHJvcHMuYnVja2V0UHJvcHM/LnNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gYm90aGxvZyBidWNrZXQgcHJvcHMgYW5kIGFuIGV4aXN0aW5nIGxvZyBidWNrZXQgd2VyZSBwcm92aWRlZC5cXG4nO1xuICAgICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmNsb3VkRnJvbnRMb2dnaW5nQnVja2V0QWNjZXNzTG9nQnVja2V0UHJvcHMgJiYgcHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBhbiBleGlzdGluZyBDbG91ZEZyb250IGxvZyBidWNrZXQgUzMgYWNjZXNzIGxvZyBidWNrZXQgYW5kIGNsb3VkRnJvbnRMb2dnaW5nQnVja2V0QWNjZXNzTG9nQnVja2V0UHJvcHMgd2VyZSBwcm92aWRlZFxcbic7XG4gICAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRBY2Nlc3NMb2dCdWNrZXRQcm9wcyAmJiBwcm9wcy5sb2dDbG91ZEZyb250QWNjZXNzTG9nID09PSBmYWxzZSkge1xuICAgICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldEFjY2Vzc0xvZ0J1Y2tldFByb3BzIHdlcmUgcHJvdmlkZWQgYnV0IGxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2cgd2FzIGZhbHNlXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0ICYmIHByb3BzLmxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2cgPT09IGZhbHNlKSB7XG4gICAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIHByb3BzLmNsb3VkRnJvbnRMb2dnaW5nQnVja2V0UHJvcHMuc2VydmVyQWNjZXNzTG9nc0J1Y2tldCB3YXMgcHJvdmlkZWQgYnV0IGxvZ0Nsb3VkRnJvbnRBY2Nlc3NMb2cgd2FzIGZhbHNlXFxuJztcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChlcnJvckZvdW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gICAgfVxuICB9XG59Il19
|