cdk-nextjs 0.0.1 → 0.0.3
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 +81 -58
- package/API.md +45 -31
- package/README.md +32 -7
- package/assets/lambdas/assets-deployment/assets-deployment.lambda/index.js +12 -10
- package/assets/lambdas/sign-fn-url/sign-fn-url.lambda/index.js +17 -3
- package/lib/generated-structs/{OptionalS3OriginProps.d.ts → OptionalS3OriginBucketWithOACProps.d.ts} +11 -5
- package/lib/generated-structs/{OptionalS3OriginProps.js → OptionalS3OriginBucketWithOACProps.js} +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/lambdas/assets-deployment/assets-deployment.lambda.js +9 -8
- package/lib/lambdas/assets-deployment/fs-to-s3.js +3 -3
- package/lib/nextjs-assets-deployment.js +1 -1
- package/lib/nextjs-build/builder.Dockerfile +4 -8
- package/lib/nextjs-build/cache-handler.cjs +7249 -6950
- package/lib/nextjs-build/nextjs-build.js +1 -1
- package/lib/nextjs-compute/nextjs-containers.js +1 -1
- package/lib/nextjs-compute/nextjs-functions.js +1 -1
- package/lib/nextjs-distribution.d.ts +2 -15
- package/lib/nextjs-distribution.js +37 -72
- package/lib/nextjs-file-system.js +1 -1
- package/lib/nextjs-invalidation.js +1 -1
- package/lib/nextjs-revalidation.js +1 -1
- package/lib/nextjs-static-assets.js +1 -1
- package/lib/nextjs-vpc.js +1 -1
- package/lib/root-constructs/nextjs-global-containers.js +1 -1
- package/lib/root-constructs/nextjs-global-functions.js +1 -1
- package/lib/root-constructs/nextjs-regional-containers.js +1 -1
- package/package.json +12 -11
package/API.md
CHANGED
|
@@ -2810,7 +2810,7 @@ const nextjsDistributionOverrides: NextjsDistributionOverrides = { ... }
|
|
|
2810
2810
|
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageBehaviorOptions">imageBehaviorOptions</a></code> | <code>aws-cdk-lib.aws_cloudfront.AddBehaviorOptions</code> | *No description.* |
|
|
2811
2811
|
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageCachePolicyProps">imageCachePolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.CachePolicyProps</code> | *No description.* |
|
|
2812
2812
|
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageResponseHeadersPolicyProps">imageResponseHeadersPolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps</code> | *No description.* |
|
|
2813
|
-
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.
|
|
2813
|
+
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.s3BucketOriginProps">s3BucketOriginProps</a></code> | <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps">OptionalS3OriginBucketWithOACProps</a></code> | *No description.* |
|
|
2814
2814
|
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.staticBehaviorOptions">staticBehaviorOptions</a></code> | <code>aws-cdk-lib.aws_cloudfront.AddBehaviorOptions</code> | *No description.* |
|
|
2815
2815
|
| <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.staticResponseHeadersPolicyProps">staticResponseHeadersPolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps</code> | *No description.* |
|
|
2816
2816
|
|
|
@@ -2906,13 +2906,13 @@ public readonly imageResponseHeadersPolicyProps: ResponseHeadersPolicyProps;
|
|
|
2906
2906
|
|
|
2907
2907
|
---
|
|
2908
2908
|
|
|
2909
|
-
##### `
|
|
2909
|
+
##### `s3BucketOriginProps`<sup>Optional</sup> <a name="s3BucketOriginProps" id="cdk-nextjs.NextjsDistributionOverrides.property.s3BucketOriginProps"></a>
|
|
2910
2910
|
|
|
2911
2911
|
```typescript
|
|
2912
|
-
public readonly
|
|
2912
|
+
public readonly s3BucketOriginProps: OptionalS3OriginBucketWithOACProps;
|
|
2913
2913
|
```
|
|
2914
2914
|
|
|
2915
|
-
- *Type:* <a href="#cdk-nextjs.
|
|
2915
|
+
- *Type:* <a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps">OptionalS3OriginBucketWithOACProps</a>
|
|
2916
2916
|
|
|
2917
2917
|
---
|
|
2918
2918
|
|
|
@@ -9046,35 +9046,36 @@ Bring your own VPC.
|
|
|
9046
9046
|
|
|
9047
9047
|
---
|
|
9048
9048
|
|
|
9049
|
-
###
|
|
9049
|
+
### OptionalS3OriginBucketWithOACProps <a name="OptionalS3OriginBucketWithOACProps" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps"></a>
|
|
9050
9050
|
|
|
9051
|
-
|
|
9051
|
+
OptionalS3OriginBucketWithOACProps.
|
|
9052
9052
|
|
|
9053
|
-
#### Initializer <a name="Initializer" id="cdk-nextjs.
|
|
9053
|
+
#### Initializer <a name="Initializer" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.Initializer"></a>
|
|
9054
9054
|
|
|
9055
9055
|
```typescript
|
|
9056
|
-
import {
|
|
9056
|
+
import { OptionalS3OriginBucketWithOACProps } from 'cdk-nextjs'
|
|
9057
9057
|
|
|
9058
|
-
const
|
|
9058
|
+
const optionalS3OriginBucketWithOACProps: OptionalS3OriginBucketWithOACProps = { ... }
|
|
9059
9059
|
```
|
|
9060
9060
|
|
|
9061
9061
|
#### Properties <a name="Properties" id="Properties"></a>
|
|
9062
9062
|
|
|
9063
9063
|
| **Name** | **Type** | **Description** |
|
|
9064
9064
|
| --- | --- | --- |
|
|
9065
|
-
| <code><a href="#cdk-nextjs.
|
|
9066
|
-
| <code><a href="#cdk-nextjs.
|
|
9067
|
-
| <code><a href="#cdk-nextjs.
|
|
9068
|
-
| <code><a href="#cdk-nextjs.
|
|
9069
|
-
| <code><a href="#cdk-nextjs.
|
|
9070
|
-
| <code><a href="#cdk-nextjs.
|
|
9071
|
-
| <code><a href="#cdk-nextjs.
|
|
9072
|
-
| <code><a href="#cdk-nextjs.
|
|
9073
|
-
| <code><a href="#cdk-nextjs.
|
|
9065
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.connectionAttempts">connectionAttempts</a></code> | <code>number</code> | The number of times that CloudFront attempts to connect to the origin; |
|
|
9066
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.connectionTimeout">connectionTimeout</a></code> | <code>aws-cdk-lib.Duration</code> | The number of seconds that CloudFront waits when trying to establish a connection to the origin. |
|
|
9067
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.customHeaders">customHeaders</a></code> | <code>{[ key: string ]: string}</code> | A list of HTTP header names and values that CloudFront adds to requests it sends to the origin. |
|
|
9068
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessControl">originAccessControl</a></code> | <code>aws-cdk-lib.aws_cloudfront.IOriginAccessControl</code> | An optional Origin Access Control. |
|
|
9069
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessControlId">originAccessControlId</a></code> | <code>string</code> | The unique identifier of an origin access control for this origin. |
|
|
9070
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessLevels">originAccessLevels</a></code> | <code>aws-cdk-lib.aws_cloudfront.AccessLevel[]</code> | The level of permissions granted in the bucket policy and key policy (if applicable) to the CloudFront distribution. |
|
|
9071
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originId">originId</a></code> | <code>string</code> | A unique identifier for the origin. |
|
|
9072
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originPath">originPath</a></code> | <code>string</code> | An optional path that CloudFront appends to the origin domain name when CloudFront requests content from the origin. |
|
|
9073
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originShieldEnabled">originShieldEnabled</a></code> | <code>boolean</code> | Origin Shield is enabled by setting originShieldRegion to a valid region, after this to disable Origin Shield again you must set this flag to false. |
|
|
9074
|
+
| <code><a href="#cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originShieldRegion">originShieldRegion</a></code> | <code>string</code> | When you enable Origin Shield in the AWS Region that has the lowest latency to your origin, you can get better network performance. |
|
|
9074
9075
|
|
|
9075
9076
|
---
|
|
9076
9077
|
|
|
9077
|
-
##### `connectionAttempts`<sup>Optional</sup> <a name="connectionAttempts" id="cdk-nextjs.
|
|
9078
|
+
##### `connectionAttempts`<sup>Optional</sup> <a name="connectionAttempts" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.connectionAttempts"></a>
|
|
9078
9079
|
|
|
9079
9080
|
```typescript
|
|
9080
9081
|
public readonly connectionAttempts: number;
|
|
@@ -9089,7 +9090,7 @@ valid values are 1, 2, or 3 attempts.
|
|
|
9089
9090
|
|
|
9090
9091
|
---
|
|
9091
9092
|
|
|
9092
|
-
##### `connectionTimeout`<sup>Optional</sup> <a name="connectionTimeout" id="cdk-nextjs.
|
|
9093
|
+
##### `connectionTimeout`<sup>Optional</sup> <a name="connectionTimeout" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.connectionTimeout"></a>
|
|
9093
9094
|
|
|
9094
9095
|
```typescript
|
|
9095
9096
|
public readonly connectionTimeout: Duration;
|
|
@@ -9104,7 +9105,7 @@ Valid values are 1-10 seconds, inclusive.
|
|
|
9104
9105
|
|
|
9105
9106
|
---
|
|
9106
9107
|
|
|
9107
|
-
##### `customHeaders`<sup>Optional</sup> <a name="customHeaders" id="cdk-nextjs.
|
|
9108
|
+
##### `customHeaders`<sup>Optional</sup> <a name="customHeaders" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.customHeaders"></a>
|
|
9108
9109
|
|
|
9109
9110
|
```typescript
|
|
9110
9111
|
public readonly customHeaders: {[ key: string ]: string};
|
|
@@ -9117,7 +9118,20 @@ A list of HTTP header names and values that CloudFront adds to requests it sends
|
|
|
9117
9118
|
|
|
9118
9119
|
---
|
|
9119
9120
|
|
|
9120
|
-
##### `
|
|
9121
|
+
##### `originAccessControl`<sup>Optional</sup> <a name="originAccessControl" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessControl"></a>
|
|
9122
|
+
|
|
9123
|
+
```typescript
|
|
9124
|
+
public readonly originAccessControl: IOriginAccessControl;
|
|
9125
|
+
```
|
|
9126
|
+
|
|
9127
|
+
- *Type:* aws-cdk-lib.aws_cloudfront.IOriginAccessControl
|
|
9128
|
+
- *Default:* an Origin Access Control will be created.
|
|
9129
|
+
|
|
9130
|
+
An optional Origin Access Control.
|
|
9131
|
+
|
|
9132
|
+
---
|
|
9133
|
+
|
|
9134
|
+
##### `originAccessControlId`<sup>Optional</sup> <a name="originAccessControlId" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessControlId"></a>
|
|
9121
9135
|
|
|
9122
9136
|
```typescript
|
|
9123
9137
|
public readonly originAccessControlId: string;
|
|
@@ -9130,20 +9144,20 @@ The unique identifier of an origin access control for this origin.
|
|
|
9130
9144
|
|
|
9131
9145
|
---
|
|
9132
9146
|
|
|
9133
|
-
##### `
|
|
9147
|
+
##### `originAccessLevels`<sup>Optional</sup> <a name="originAccessLevels" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originAccessLevels"></a>
|
|
9134
9148
|
|
|
9135
9149
|
```typescript
|
|
9136
|
-
public readonly
|
|
9150
|
+
public readonly originAccessLevels: AccessLevel[];
|
|
9137
9151
|
```
|
|
9138
9152
|
|
|
9139
|
-
- *Type:* aws-cdk-lib.aws_cloudfront.
|
|
9140
|
-
- *Default:*
|
|
9153
|
+
- *Type:* aws-cdk-lib.aws_cloudfront.AccessLevel[]
|
|
9154
|
+
- *Default:* [AccessLevel.READ]
|
|
9141
9155
|
|
|
9142
|
-
|
|
9156
|
+
The level of permissions granted in the bucket policy and key policy (if applicable) to the CloudFront distribution.
|
|
9143
9157
|
|
|
9144
9158
|
---
|
|
9145
9159
|
|
|
9146
|
-
##### `originId`<sup>Optional</sup> <a name="originId" id="cdk-nextjs.
|
|
9160
|
+
##### `originId`<sup>Optional</sup> <a name="originId" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originId"></a>
|
|
9147
9161
|
|
|
9148
9162
|
```typescript
|
|
9149
9163
|
public readonly originId: string;
|
|
@@ -9158,7 +9172,7 @@ This value must be unique within the distribution.
|
|
|
9158
9172
|
|
|
9159
9173
|
---
|
|
9160
9174
|
|
|
9161
|
-
##### `originPath`<sup>Optional</sup> <a name="originPath" id="cdk-nextjs.
|
|
9175
|
+
##### `originPath`<sup>Optional</sup> <a name="originPath" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originPath"></a>
|
|
9162
9176
|
|
|
9163
9177
|
```typescript
|
|
9164
9178
|
public readonly originPath: string;
|
|
@@ -9173,7 +9187,7 @@ Must begin, but not end, with '/' (e.g., '/production/images').
|
|
|
9173
9187
|
|
|
9174
9188
|
---
|
|
9175
9189
|
|
|
9176
|
-
##### `originShieldEnabled`<sup>Optional</sup> <a name="originShieldEnabled" id="cdk-nextjs.
|
|
9190
|
+
##### `originShieldEnabled`<sup>Optional</sup> <a name="originShieldEnabled" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originShieldEnabled"></a>
|
|
9177
9191
|
|
|
9178
9192
|
```typescript
|
|
9179
9193
|
public readonly originShieldEnabled: boolean;
|
|
@@ -9186,7 +9200,7 @@ Origin Shield is enabled by setting originShieldRegion to a valid region, after
|
|
|
9186
9200
|
|
|
9187
9201
|
---
|
|
9188
9202
|
|
|
9189
|
-
##### `originShieldRegion`<sup>Optional</sup> <a name="originShieldRegion" id="cdk-nextjs.
|
|
9203
|
+
##### `originShieldRegion`<sup>Optional</sup> <a name="originShieldRegion" id="cdk-nextjs.OptionalS3OriginBucketWithOACProps.property.originShieldRegion"></a>
|
|
9190
9204
|
|
|
9191
9205
|
```typescript
|
|
9192
9206
|
public readonly originShieldRegion: string;
|
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+

|
|
2
|
+
[](https://www.npmjs.org/package/cdk-nextjs)
|
|
3
|
+

|
|
4
|
+
|
|
1
5
|
# CDK Next.js Construct Library
|
|
2
6
|
|
|
3
7
|
<!--BEGIN STABILITY BANNER-->
|
|
@@ -27,13 +31,14 @@ Deploy [Next.js](https://nextjs.org/) apps on [AWS](https://aws.amazon.com/) wit
|
|
|
27
31
|
- Static assets (JS, CSS, public folder) are stored and served from [Amazon Simple Storage Service (S3)](https://aws.amazon.com/s3/) for global constructs to decrease latency and reduce compute costs.
|
|
28
32
|
- [Optimized images](https://nextjs.org/docs/pages/building-your-application/optimizing/images), [data cache](https://nextjs.org/docs/app/building-your-application/caching#data-cache), and [full route cache](https://nextjs.org/docs/app/building-your-application/caching#full-route-cache) are shared across compute with [Amazon Elastic File System (EFS)](https://aws.amazon.com/efs/).
|
|
29
33
|
- Customize every construct via `overrides`.
|
|
30
|
-
- When using AWS Lambda for compute, async revalidation is supported with [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/).
|
|
34
|
+
- WIP: When using AWS Lambda for compute, async revalidation is supported with [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/).
|
|
31
35
|
- AWS security and operational best practices are utilized, guided by [cdk-nag](https://github.com/cdklabs/cdk-nag).
|
|
32
36
|
- First class support for [monorepos](https://monorepo.tools/).
|
|
33
37
|
- [AWS GovCloud (US)](https://aws.amazon.com/govcloud-us) compatible (with `NextjsRegionalContainers`).
|
|
34
38
|
|
|
35
39
|
## Getting Started
|
|
36
40
|
|
|
41
|
+
1. If you don’t have a Next.js project yet, follow [these steps](https://nextjs.org/docs/getting-started) to create one.
|
|
37
42
|
1. Install [Docker](https://www.docker.com/). We recommend [Rancher Desktop](https://rancherdesktop.io/) with dockerd (moby) container engine enabled.
|
|
38
43
|
1. Install [Node.js](https://nodejs.org/en). We recommend the long term support (LTS) version.
|
|
39
44
|
1. Set your [next.config.js](https://nextjs.org/docs/pages/api-reference/next-config-js) [output](https://nextjs.org/docs/pages/api-reference/next-config-js/output) key to `"standalone"`. Learn more here about [Standalone Output](https://nextjs.org/docs/pages/api-reference/next-config-js/output#automatically-copying-traced-files).
|
|
@@ -71,25 +76,31 @@ See [examples/](./examples/) for more usage examples.
|
|
|
71
76
|
|
|
72
77
|
### `NextjsGlobalFunctions`
|
|
73
78
|
|
|
79
|
+
Architecture includes [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) Functions to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this construct when you have unpredictable traffic, can afford occasional latency (i.e. cold starts - [typically 1% of production traffic](https://aws.amazon.com/blogs/compute/operating-lambda-performance-optimization-part-1/)), and/or want the most granular pricing model. ([code](./src/root-constructs/nextjs-global-functions.ts#L81))
|
|
80
|
+
|
|
74
81
|

|
|
75
82
|
|
|
76
83
|
### `NextjsGlobalContainers`
|
|
77
84
|
|
|
85
|
+
Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) containers to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this option when you have predictable traffic, need the lowest latency, and/or can afford a less granular pricing model. ([code](./src/root-constructs/nextjs-global-containers.ts#L76))
|
|
86
|
+
|
|
78
87
|

|
|
79
88
|
|
|
80
89
|
### `NextjsRegionalContainers`
|
|
81
90
|
|
|
91
|
+
Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) containers to respond to dynamic requests and [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/) to regionally serve requests. Use this options when you cannot use Amazon CloudFront (i.e. [AWS GovCloud](https://aws.amazon.com/govcloud-us/?whats-new.sort-by=item.additionalFields.postDateTime&whats-new.sort-order=desc)). ([code](./src/root-constructs/nextjs-regional-containers.ts#L41))
|
|
92
|
+
|
|
82
93
|

|
|
83
94
|
|
|
84
95
|
## Why
|
|
85
96
|
|
|
86
|
-
The simplest path to deploy Next.js is on [Vercel](https://vercel.com/) - the Platform-as-a-Service company behind Next.js. However, deploying to Vercel can be expensive and some developers want all of their workloads running _directly_ on AWS. Developers can deploy Next.js on AWS through [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/ssr-Amplifysupport.html), but Amplify does not support all Next.js features and manages AWS resources for you so they cannot be customized. If Amplify meets your requirements we recommend you use it, but if you want to use all Next.js features or want more visibility into the AWS resources
|
|
97
|
+
The simplest path to deploy Next.js is on [Vercel](https://vercel.com/) - the Platform-as-a-Service company behind Next.js. However, deploying to Vercel can be expensive and some developers want all of their workloads running _directly_ on AWS. Developers can deploy Next.js on AWS through [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/ssr-Amplifysupport.html), but Amplify does not support all Next.js features and manages AWS resources for you so they cannot be customized. If Amplify meets your requirements we recommend you use it, but if you want to use all Next.js features or want more visibility into the AWS resources then this construct is for you.
|
|
87
98
|
|
|
88
99
|
## Design Principles
|
|
89
100
|
|
|
90
101
|
- Treat Next.js as black box. Minimize reliance on Next.js internal APIs to reduce chance of incompatibility between this construct and future versions of Next.js.
|
|
91
102
|
- Security first.
|
|
92
|
-
- One
|
|
103
|
+
- One architecture does not fit all.
|
|
93
104
|
- Enable customization everywhere.
|
|
94
105
|
|
|
95
106
|
## Limitations
|
|
@@ -111,10 +122,6 @@ This construct by default implements all AWS security best practices that a CDK
|
|
|
111
122
|
|
|
112
123
|
WIP
|
|
113
124
|
|
|
114
|
-
## Acknowledgements
|
|
115
|
-
|
|
116
|
-
This construct was built on the shoulders of giants. Thank you to the contributors of [cdk-nextjs-standalone](https://github.com/jetbridge/cdk-nextjs) and [open-next](https://github.com/sst/open-next).
|
|
117
|
-
|
|
118
125
|
## Contributing
|
|
119
126
|
|
|
120
127
|
Steps to build locally:
|
|
@@ -135,3 +142,21 @@ A: API Gateway does not support streaming.
|
|
|
135
142
|
|
|
136
143
|
Q: Why EFS instead of S3?
|
|
137
144
|
A: Next.js has 3 types of server caching that are persisted to disk: [Data Cache](https://nextjs.org/docs/app/building-your-application/caching#data-cache), [Full Route Cache](https://nextjs.org/docs/app/building-your-application/caching#full-route-cache), and [Image Optimization](https://nextjs.org/docs/pages/building-your-application/optimizing/images). Cached data is persisted at .next/cache/fetch-cache, cached full routes are persisted at .next/server/app, and optimized images are persisted at .next/cache/images. Next.js provides a way to customize where cached data or cached full routes are persisted through the [Custom Next.js Cache Handler](https://nextjs.org/docs/app/api-reference/next-config-js/incrementalCacheHandlerPath), but there currently is no way to persist optimized images. Therefore, we need a way to persist cached data at the file system level which is transparent to Next.js. To do this, we use [Amazon Elastic File System (EFS)](https://aws.amazon.com/efs/). Benefits of EFS include being able to cache any Next.js data persisted to disk and therefore being flexible to adapt to Next.js as the framework evolves caching additional types of data. One exception to not using the Custom Next.js Cache Handler is to support [Data Cache Time-based Revalidation](https://nextjs.org/docs/app/building-your-application/caching#time-based-revalidation) when using AWS Lambda functions. Functions only run when they are responding to a request preventing time-based revalidation unlike containers with AWS Fargate which run continually. For functions, an [Amazon SQS Queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) and consuming function that will make a HEAD request with x-prerender-revalidate header needed for Next.js to update cache.
|
|
145
|
+
|
|
146
|
+
Q: How customizable is the `cdk-nextjs` package for different use cases?
|
|
147
|
+
A: The `cdk-nextjs` package offers deep customization through _prop-based_ overrides. These can be accessed in the construct props, allowing you to override settings like VPC configurations, CloudFront distribution, and ECS/Fargate setup. For example, you can modify `nextjsBuildProps` to customize the build process or use `nextjsDistributionProps` to adjust how CloudFront handles caching and routing. This level of control makes it easy to adapt the infrastructure to your application’s specific performance, networking, or deployment needs.
|
|
148
|
+
|
|
149
|
+
Q: How can I use a custom domain with `cdk-nextjs`?
|
|
150
|
+
A: To use a custom domain, you can configure the `distribution` prop within constructs like `NextjsGlobalFunctions` or `NextjsGlobalContainers`. By providing an ACM certificate and overriding relevant properties such as `nextjsDistributionProps`, you can customize the CloudFront distribution to handle your domain. This allows CloudFront to route traffic through your custom domain while managing SSL termination for secure HTTPS connections.
|
|
151
|
+
|
|
152
|
+
## Acknowledgements
|
|
153
|
+
|
|
154
|
+
This construct was built on the shoulders of giants. Thank you to the contributors of [cdk-nextjs-standalone](https://github.com/jetbridge/cdk-nextjs) and [open-next](https://github.com/sst/open-next).
|
|
155
|
+
|
|
156
|
+
## 🥂 Thanks Contributors
|
|
157
|
+
|
|
158
|
+
Thank you for helping other developers deploy Next.js apps on AWS
|
|
159
|
+
|
|
160
|
+
<a href="https://github.com/cdklabs/cdk-nextjs/graphs/contributors">
|
|
161
|
+
<img src="https://contrib.rocks/image?repo=cdklabs/cdk-nextjs" />
|
|
162
|
+
</a>
|
|
@@ -8671,7 +8671,7 @@ function fsToFs(props) {
|
|
|
8671
8671
|
// src/lambdas/assets-deployment/fs-to-s3.ts
|
|
8672
8672
|
var import_node_fs3 = require("node:fs");
|
|
8673
8673
|
var import_node_path2 = require("node:path");
|
|
8674
|
-
var
|
|
8674
|
+
var import_lib_storage = require("@aws-sdk/lib-storage");
|
|
8675
8675
|
var mime = __toESM(require_mime_types());
|
|
8676
8676
|
|
|
8677
8677
|
// src/lambdas/assets-deployment/common.ts
|
|
@@ -8744,7 +8744,9 @@ async function fsToS3(props) {
|
|
|
8744
8744
|
);
|
|
8745
8745
|
debug({ putObjectInputs });
|
|
8746
8746
|
await Promise.all(
|
|
8747
|
-
putObjectInputs.map(
|
|
8747
|
+
putObjectInputs.map(
|
|
8748
|
+
(input) => new import_lib_storage.Upload({ client: s3, params: input }).done()
|
|
8749
|
+
)
|
|
8748
8750
|
);
|
|
8749
8751
|
}
|
|
8750
8752
|
}
|
|
@@ -8756,7 +8758,7 @@ function createS3Key({ keyPrefix, path, basePath }) {
|
|
|
8756
8758
|
}
|
|
8757
8759
|
|
|
8758
8760
|
// src/lambdas/assets-deployment/prune-s3.ts
|
|
8759
|
-
var
|
|
8761
|
+
var import_client_s32 = require("@aws-sdk/client-s3");
|
|
8760
8762
|
async function pruneS3(props) {
|
|
8761
8763
|
props;
|
|
8762
8764
|
}
|
|
@@ -8787,14 +8789,14 @@ var handler = async (event, context) => {
|
|
|
8787
8789
|
}
|
|
8788
8790
|
} catch (err) {
|
|
8789
8791
|
console.error(err);
|
|
8790
|
-
|
|
8792
|
+
} finally {
|
|
8793
|
+
await cfnResponse({
|
|
8794
|
+
event,
|
|
8795
|
+
context,
|
|
8796
|
+
responseStatus,
|
|
8797
|
+
responseData: { previewModeId }
|
|
8798
|
+
});
|
|
8791
8799
|
}
|
|
8792
|
-
await cfnResponse({
|
|
8793
|
-
event,
|
|
8794
|
-
context,
|
|
8795
|
-
responseStatus,
|
|
8796
|
-
responseData: { previewModeId }
|
|
8797
|
-
});
|
|
8798
8800
|
};
|
|
8799
8801
|
function initImageCache(imageCachePath) {
|
|
8800
8802
|
if (imageCachePath && !(0, import_fs.existsSync)(imageCachePath)) {
|
|
@@ -33,7 +33,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
33
33
|
));
|
|
34
34
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
35
|
|
|
36
|
-
// node_modules/.pnpm/tslib@2.
|
|
36
|
+
// node_modules/.pnpm/tslib@2.8.0/node_modules/tslib/tslib.es6.mjs
|
|
37
37
|
var tslib_es6_exports = {};
|
|
38
38
|
__export(tslib_es6_exports, {
|
|
39
39
|
__addDisposableResource: () => __addDisposableResource,
|
|
@@ -61,6 +61,7 @@ __export(tslib_es6_exports, {
|
|
|
61
61
|
__propKey: () => __propKey,
|
|
62
62
|
__read: () => __read,
|
|
63
63
|
__rest: () => __rest,
|
|
64
|
+
__rewriteRelativeImportExtension: () => __rewriteRelativeImportExtension,
|
|
64
65
|
__runInitializers: () => __runInitializers,
|
|
65
66
|
__setFunctionName: () => __setFunctionName,
|
|
66
67
|
__spread: () => __spread,
|
|
@@ -461,9 +462,17 @@ function __disposeResources(env) {
|
|
|
461
462
|
}
|
|
462
463
|
return next();
|
|
463
464
|
}
|
|
465
|
+
function __rewriteRelativeImportExtension(path, preserveJsx) {
|
|
466
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
467
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function(m, tsx, d, ext, cm) {
|
|
468
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : d + ext + "." + cm.toLowerCase() + "js";
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
return path;
|
|
472
|
+
}
|
|
464
473
|
var extendStatics, __assign, __createBinding, __setModuleDefault, _SuppressedError, tslib_es6_default;
|
|
465
474
|
var init_tslib_es6 = __esm({
|
|
466
|
-
"node_modules/.pnpm/tslib@2.
|
|
475
|
+
"node_modules/.pnpm/tslib@2.8.0/node_modules/tslib/tslib.es6.mjs"() {
|
|
467
476
|
"use strict";
|
|
468
477
|
extendStatics = function(d, b) {
|
|
469
478
|
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
@@ -511,6 +520,10 @@ var init_tslib_es6 = __esm({
|
|
|
511
520
|
__rest,
|
|
512
521
|
__decorate,
|
|
513
522
|
__param,
|
|
523
|
+
__esDecorate,
|
|
524
|
+
__runInitializers,
|
|
525
|
+
__propKey,
|
|
526
|
+
__setFunctionName,
|
|
514
527
|
__metadata,
|
|
515
528
|
__awaiter,
|
|
516
529
|
__generator,
|
|
@@ -532,7 +545,8 @@ var init_tslib_es6 = __esm({
|
|
|
532
545
|
__classPrivateFieldSet,
|
|
533
546
|
__classPrivateFieldIn,
|
|
534
547
|
__addDisposableResource,
|
|
535
|
-
__disposeResources
|
|
548
|
+
__disposeResources,
|
|
549
|
+
__rewriteRelativeImportExtension
|
|
536
550
|
};
|
|
537
551
|
}
|
|
538
552
|
});
|
package/lib/generated-structs/{OptionalS3OriginProps.d.ts → OptionalS3OriginBucketWithOACProps.d.ts}
RENAMED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import type { aws_cloudfront, Duration } from 'aws-cdk-lib';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* OptionalS3OriginBucketWithOACProps
|
|
4
4
|
*/
|
|
5
|
-
export interface
|
|
5
|
+
export interface OptionalS3OriginBucketWithOACProps {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
* @default
|
|
7
|
+
* The level of permissions granted in the bucket policy and key policy (if applicable) to the CloudFront distribution.
|
|
8
|
+
* @default [AccessLevel.READ]
|
|
9
9
|
* @stability stable
|
|
10
10
|
*/
|
|
11
|
-
readonly
|
|
11
|
+
readonly originAccessLevels?: Array<aws_cloudfront.AccessLevel>;
|
|
12
|
+
/**
|
|
13
|
+
* An optional Origin Access Control.
|
|
14
|
+
* @default - an Origin Access Control will be created.
|
|
15
|
+
* @stability stable
|
|
16
|
+
*/
|
|
17
|
+
readonly originAccessControl?: aws_cloudfront.IOriginAccessControl;
|
|
12
18
|
/**
|
|
13
19
|
* An optional path that CloudFront appends to the origin domain name when CloudFront requests content from the origin.
|
|
14
20
|
* Must begin, but not end, with '/' (e.g., '/production/images').
|
package/lib/generated-structs/{OptionalS3OriginProps.js → OptionalS3OriginBucketWithOACProps.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxTM09yaWdpbkJ1Y2tldFdpdGhPQUNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2Nsb3VkZnJvbnQsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIE9wdGlvbmFsUzNPcmlnaW5CdWNrZXRXaXRoT0FDUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiBwZXJtaXNzaW9ucyBncmFudGVkIGluIHRoZSBidWNrZXQgcG9saWN5IGFuZCBrZXkgcG9saWN5IChpZiBhcHBsaWNhYmxlKSB0byB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqIEBkZWZhdWx0IFtBY2Nlc3NMZXZlbC5SRUFEXVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luQWNjZXNzTGV2ZWxzPzogQXJyYXk8YXdzX2Nsb3VkZnJvbnQuQWNjZXNzTGV2ZWw+O1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgT3JpZ2luIEFjY2VzcyBDb250cm9sLlxuICAgKiBAZGVmYXVsdCAtIGFuIE9yaWdpbiBBY2Nlc3MgQ29udHJvbCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5BY2Nlc3NDb250cm9sPzogYXdzX2Nsb3VkZnJvbnQuSU9yaWdpbkFjY2Vzc0NvbnRyb2w7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwYXRoIHRoYXQgQ2xvdWRGcm9udCBhcHBlbmRzIHRvIHRoZSBvcmlnaW4gZG9tYWluIG5hbWUgd2hlbiBDbG91ZEZyb250IHJlcXVlc3RzIGNvbnRlbnQgZnJvbSB0aGUgb3JpZ2luLlxuICAgKiBNdXN0IGJlZ2luLCBidXQgbm90IGVuZCwgd2l0aCAnLycgKGUuZy4sICcvcHJvZHVjdGlvbi9pbWFnZXMnKS5cbiAgICogQGRlZmF1bHQgJy8nXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5QYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB5b3UgZW5hYmxlIE9yaWdpbiBTaGllbGQgaW4gdGhlIEFXUyBSZWdpb24gdGhhdCBoYXMgdGhlIGxvd2VzdCBsYXRlbmN5IHRvIHlvdXIgb3JpZ2luLCB5b3UgY2FuIGdldCBiZXR0ZXIgbmV0d29yayBwZXJmb3JtYW5jZS5cbiAgICogQGRlZmF1bHQgLSBvcmlnaW4gc2hpZWxkIG5vdCBlbmFibGVkXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5TaGllbGRSZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcmlnaW4gU2hpZWxkIGlzIGVuYWJsZWQgYnkgc2V0dGluZyBvcmlnaW5TaGllbGRSZWdpb24gdG8gYSB2YWxpZCByZWdpb24sIGFmdGVyIHRoaXMgdG8gZGlzYWJsZSBPcmlnaW4gU2hpZWxkIGFnYWluIHlvdSBtdXN0IHNldCB0aGlzIGZsYWcgdG8gZmFsc2UuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luU2hpZWxkRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgb3JpZ2luLlxuICAgKiBUaGlzIHZhbHVlIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKiBAZGVmYXVsdCAtIGFuIG9yaWdpbmlkIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB5b3VcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIG9yaWdpbiBhY2Nlc3MgY29udHJvbCBmb3IgdGhpcyBvcmlnaW4uXG4gICAqIEBkZWZhdWx0IC0gbm8gb3JpZ2luIGFjY2VzcyBjb250cm9sXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5BY2Nlc3NDb250cm9sSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgSFRUUCBoZWFkZXIgbmFtZXMgYW5kIHZhbHVlcyB0aGF0IENsb3VkRnJvbnQgYWRkcyB0byByZXF1ZXN0cyBpdCBzZW5kcyB0byB0aGUgb3JpZ2luLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tSGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdGhhdCBDbG91ZEZyb250IHdhaXRzIHdoZW4gdHJ5aW5nIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIG9yaWdpbi5cbiAgICogVmFsaWQgdmFsdWVzIGFyZSAxLTEwIHNlY29uZHMsIGluY2x1c2l2ZS5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygxMClcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25UaW1lb3V0PzogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgQ2xvdWRGcm9udCBhdHRlbXB0cyB0byBjb25uZWN0IHRvIHRoZSBvcmlnaW47XG4gICAqIHZhbGlkIHZhbHVlcyBhcmUgMSwgMiwgb3IgMyBhdHRlbXB0cy5cbiAgICogQGRlZmF1bHQgM1xuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGlvbkF0dGVtcHRzPzogbnVtYmVyO1xufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -31,5 +31,5 @@ export { OptionalDockerImageFunctionProps } from "./generated-structs/OptionalDo
|
|
|
31
31
|
export { OptionalEdgeFunctionProps } from "./generated-structs/OptionalEdgeFunctionProps";
|
|
32
32
|
export { OptionalFunctionProps } from "./generated-structs/OptionalFunctionProps";
|
|
33
33
|
export { OptionalFunctionUrlProps } from "./generated-structs/OptionalFunctionUrlProps";
|
|
34
|
-
export {
|
|
34
|
+
export { OptionalS3OriginBucketWithOACProps } from "./generated-structs/OptionalS3OriginBucketWithOACProps";
|
|
35
35
|
export { OptionalVpcProps } from "./generated-structs/OptionalVpcProps";
|
package/lib/index.js
CHANGED
|
@@ -29,4 +29,4 @@ var nextjs_static_assets_1 = require("./nextjs-static-assets");
|
|
|
29
29
|
Object.defineProperty(exports, "NextjsStaticAssets", { enumerable: true, get: function () { return nextjs_static_assets_1.NextjsStaticAssets; } });
|
|
30
30
|
var nextjs_vpc_1 = require("./nextjs-vpc");
|
|
31
31
|
Object.defineProperty(exports, "NextjsVpc", { enumerable: true, get: function () { return nextjs_vpc_1.NextjsVpc; } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBQTdCLG9HQUFBLFVBQVUsT0FBQTtBQUNuQix1RUFLb0M7QUFIbEMsa0lBQUEsc0JBQXNCLE9BQUE7QUFJeEIsNERBTXFDO0FBTG5DLDJHQUFBLFdBQVcsT0FBQTtBQU9iLHdFQUk0QztBQUgxQyxxSEFBQSxnQkFBZ0IsT0FBQTtBQUlsQiw2REFJK0I7QUFIN0IseUhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsc0VBSTJDO0FBSHpDLG1IQUFBLGVBQWUsT0FBQTtBQUlqQiwyREFLOEI7QUFKNUIsc0hBQUEsZ0JBQWdCLE9BQUE7QUFVbEIsdUZBS29EO0FBSmxELGtJQUFBLHNCQUFzQixPQUFBO0FBS3hCLHFGQUttRDtBQUpqRCxnSUFBQSxxQkFBcUIsT0FBQTtBQUt2QiwyRkFLc0Q7QUFKcEQsc0lBQUEsd0JBQXdCLE9BQUE7QUFLMUIsNkRBSStCO0FBSDdCLHlIQUFBLGtCQUFrQixPQUFBO0FBSXBCLDZEQUkrQjtBQUg3Qix5SEFBQSxrQkFBa0IsT0FBQTtBQUlwQiwrREFJZ0M7QUFIOUIsMEhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsMkNBQTZFO0FBQXBFLHVHQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi9jb21tb25cIjtcbmV4cG9ydCB7XG4gIEN1c3RvbVJlc291cmNlUHJvcGVydGllcyxcbiAgTmV4dGpzQXNzZXRzRGVwbG95bWVudCxcbiAgTmV4dGpzQXNzZXREZXBsb3ltZW50T3ZlcnJpZGVzLFxuICBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQnVpbGQsXG4gIE5leHRqc0J1aWxkUHJvcHMsXG4gIE5leHRqc0J1aWxkT3ZlcnJpZGVzLFxuICBCdWlsZGVySW1hZ2VQcm9wcyxcbiAgUHVibGljRGlyRW50cnksXG59IGZyb20gXCIuL25leHRqcy1idWlsZC9uZXh0anMtYnVpbGRcIjtcbmV4cG9ydCB7IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMgfSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29tcHV0ZS1iYXNlLXByb3BzXCI7XG5leHBvcnQge1xuICBOZXh0anNDb250YWluZXJzLFxuICBOZXh0anNDb250YWluZXJzT3ZlcnJpZGVzLFxuICBOZXh0anNDb250YWluZXJzUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbiAgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmV4cG9ydCB7XG4gIE5leHRqc0Z1bmN0aW9ucyxcbiAgTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzRmlsZVN5c3RlbSxcbiAgTmV4dGpzRmlsZVN5c3RlbU92ZXJyaWRlcyxcbiAgTmV4dGpzRmlsZVN5c3RlbVByb3BzLFxuICBBbGxvd0NvbXB1dGVQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWZpbGUtc3lzdGVtXCI7XG5leHBvcnQge1xuICBCYXNlTmV4dGpzQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBCYXNlTmV4dGpzT3ZlcnJpZGVzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWJhc2Utb3ZlcnJpZGVzXCI7XG5leHBvcnQgeyBOZXh0anNCYXNlUHJvcHMgfSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWJhc2UtcHJvcHNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtcmVnaW9uYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzSW52YWxpZGF0aW9uLFxuICBOZXh0anNJbnZhbGlkYXRpb25PdmVycmlkZXMsXG4gIE5leHRqc0ludmFsaWRhdGlvblByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtaW52YWxpZGF0aW9uXCI7XG5leHBvcnQge1xuICBOZXh0anNSZXZhbGlkYXRpb24sXG4gIE5leHRqc1JldmFsaWRhdGlvblByb3BzLFxuICBOZXh0anNSZXZhbGlkYXRpb25PdmVycmlkZXMsXG59IGZyb20gXCIuL25leHRqcy1yZXZhbGlkYXRpb25cIjtcbmV4cG9ydCB7XG4gIE5leHRqc1N0YXRpY0Fzc2V0cyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzT3ZlcnJpZGVzLFxuICBOZXh0anNTdGF0aWNBc3NldHNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLXN0YXRpYy1hc3NldHNcIjtcbmV4cG9ydCB7IE5leHRqc1ZwYywgTmV4dGpzVnBjT3ZlcnJpZGVzLCBOZXh0anNWcGNQcm9wcyB9IGZyb20gXCIuL25leHRqcy12cGNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQnVpbGRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQnVpbGRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzRmlsZVN5c3RlbVByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNGaWxlU3lzdGVtUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzSW52YWxpZGF0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0ludmFsaWRhdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc1ZwY1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNWcGNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlT3B0aW9uc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ2xvdWRGcm9udEZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ2x1c3RlclByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDbHVzdGVyUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERpc3RyaWJ1dGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEVkZ2VGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxFZGdlRnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsUzNPcmlnaW5CdWNrZXRXaXRoT0FDUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbFZwY1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxWcGNQcm9wc1wiO1xuIl19
|
|
@@ -35,14 +35,15 @@ const handler = async (event, context) => {
|
|
|
35
35
|
}
|
|
36
36
|
catch (err) {
|
|
37
37
|
console.error(err);
|
|
38
|
-
throw err;
|
|
39
38
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
finally {
|
|
40
|
+
await (0, utils_1.cfnResponse)({
|
|
41
|
+
event,
|
|
42
|
+
context,
|
|
43
|
+
responseStatus,
|
|
44
|
+
responseData: { previewModeId },
|
|
45
|
+
});
|
|
46
|
+
}
|
|
46
47
|
};
|
|
47
48
|
exports.handler = handler;
|
|
48
49
|
function initImageCache(imageCachePath) {
|
|
@@ -59,4 +60,4 @@ function getPreviewModeId(prerenderManifestPath) {
|
|
|
59
60
|
const prerenderManifest = JSON.parse((0, fs_1.readFileSync)(prerenderManifestPath, { encoding: "utf-8" }));
|
|
60
61
|
return prerenderManifest.preview.previewModeId;
|
|
61
62
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYXNzZXRzLWRlcGxveW1lbnQvYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUF5RDtBQUV6RCx5Q0FBb0M7QUFDcEMseUNBQW9DO0FBQ3BDLHlDQUFxQztBQUNyQyxtQ0FBZ0U7QUFPekQsTUFBTSxPQUFPLEdBQXdDLEtBQUssRUFDL0QsS0FBSyxFQUNMLE9BQU8sRUFDUCxFQUFFO0lBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLElBQUksY0FBYyxHQUFHLHlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUM5QyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFtQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzdCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0IsSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqQixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxJQUFBLGlCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN0QyxNQUFNLElBQUEsa0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7WUFDRCxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RCxjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxHQUFHLHlCQUFpQixDQUFDLE9BQU8sQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxJQUFBLG1CQUFXLEVBQUM7WUFDaEIsS0FBSztZQUNMLE9BQU87WUFDUCxjQUFjO1lBQ2QsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUM7QUFwQ1csUUFBQSxPQUFPLFdBb0NsQjtBQUVGLFNBQVMsY0FBYyxDQUFDLGNBQXNCO0lBQzVDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNsRCx1QkFBdUI7UUFDdkIsSUFBQSxjQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLHFCQUE2QjtJQUNyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQ2xDLElBQUEsaUJBQVksRUFBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUMzRCxDQUFDO0lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBmc1RvRnMgfSBmcm9tIFwiLi9mcy10by1mc1wiO1xuaW1wb3J0IHsgZnNUb1MzIH0gZnJvbSBcIi4vZnMtdG8tczNcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgY2ZuUmVzcG9uc2UsIENmblJlc3BvbnNlU3RhdHVzLCBkZWJ1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzICYge1xuICBTZXJ2aWNlVG9rZW46IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQsXG4gIGNvbnRleHQsXG4pID0+IHtcbiAgZGVidWcoeyBldmVudCB9KTtcbiAgbGV0IHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuRmFpbGVkO1xuICBsZXQgcHJldmlld01vZGVJZCA9IFwiXCI7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVzb3VyY2VQcm9wcztcbiAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiQ3JlYXRlXCIgfHwgZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiVXBkYXRlXCIpIHtcbiAgICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcHJvcHM7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gXCJmcy10by1mc1wiKSB7XG4gICAgICAgICAgZnNUb0ZzKGFjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnR5cGUgPT09IFwiZnMtdG8tczNcIikge1xuICAgICAgICAgIGF3YWl0IGZzVG9TMyhhY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSBcInBydW5lLXMzXCIpIHtcbiAgICAgICAgICBhd2FpdCBwcnVuZVMzKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGluaXRJbWFnZUNhY2hlKHByb3BzLmltYWdlQ2FjaGVQYXRoKTtcbiAgICAgIHByZXZpZXdNb2RlSWQgPSBnZXRQcmV2aWV3TW9kZUlkKHByb3BzLnByZXJlbmRlck1hbmlmZXN0UGF0aCk7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBjZm5SZXNwb25zZSh7XG4gICAgICBldmVudCxcbiAgICAgIGNvbnRleHQsXG4gICAgICByZXNwb25zZVN0YXR1cyxcbiAgICAgIHJlc3BvbnNlRGF0YTogeyBwcmV2aWV3TW9kZUlkIH0sXG4gICAgfSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGluaXRJbWFnZUNhY2hlKGltYWdlQ2FjaGVQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKGltYWdlQ2FjaGVQYXRoICYmICFleGlzdHNTeW5jKGltYWdlQ2FjaGVQYXRoKSkge1xuICAgIC8vIG9ubHkgcnVucyBmaXJzdCB0aW1lXG4gICAgbWtkaXJTeW5jKGltYWdlQ2FjaGVQYXRoKTtcbiAgfVxufVxuXG4vKipcbiAqIE9ubHkgbmVlZCBwcmV2aWV3IG1vZGUgaWQgZm9yIGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgLCBidXQgZWFzeSB0byBnZXRcbiAqIHNvIHdlIGRvIGl0IGVhY2ggdGltZS5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJldmlld01vZGVJZChwcmVyZW5kZXJNYW5pZmVzdFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHByZXJlbmRlck1hbmlmZXN0ID0gSlNPTi5wYXJzZShcbiAgICByZWFkRmlsZVN5bmMocHJlcmVuZGVyTWFuaWZlc3RQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSksXG4gICk7XG4gIHJldHVybiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3LnByZXZpZXdNb2RlSWQ7XG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@ exports.fsToS3 = fsToS3;
|
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
7
|
-
const
|
|
7
|
+
const lib_storage_1 = require("@aws-sdk/lib-storage");
|
|
8
8
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
9
9
|
const mime = require("mime-types");
|
|
10
10
|
const common_1 = require("./common");
|
|
@@ -29,7 +29,7 @@ async function fsToS3(props) {
|
|
|
29
29
|
};
|
|
30
30
|
});
|
|
31
31
|
(0, utils_1.debug)({ putObjectInputs });
|
|
32
|
-
await Promise.all(putObjectInputs.map((input) => s3_1.s3
|
|
32
|
+
await Promise.all(putObjectInputs.map((input) => new lib_storage_1.Upload({ client: s3_1.s3, params: input }).done()));
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
@@ -42,4 +42,4 @@ function createS3Key({ keyPrefix, path, basePath }) {
|
|
|
42
42
|
objectKeyParts.push((0, node_path_1.relative)(basePath, path));
|
|
43
43
|
return (0, node_path_1.join)(...objectKeyParts);
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdG8tczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9mcy10by1zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLHdCQTJCQztBQXhDRCxxQ0FBMkM7QUFDM0MseUNBQTJDO0FBRzNDLDZEQUE2RDtBQUM3RCxzREFBOEM7QUFDOUMsNkRBQTZEO0FBQzdELG1DQUFtQztBQUNuQyxxQ0FBcUQ7QUFDckQsNkJBQTBCO0FBQzFCLG1DQUFnQztBQUd6QixLQUFLLFVBQVUsTUFBTSxDQUFDLEtBQW1CO0lBQzlDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDMUUsTUFBTSxlQUFlLEdBQUcsSUFBQSxzQkFBYSxFQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELElBQUksS0FBSyxFQUFFLE1BQU0sYUFBYSxJQUFJLElBQUEsbUJBQVUsRUFBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLGVBQWUsR0FBNEIsYUFBYSxDQUFDLEdBQUcsQ0FDaEUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO1lBQ25ELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQztnQkFDdEIsU0FBUyxFQUFFLG9CQUFvQjtnQkFDL0IsSUFBSTtnQkFDSixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQUM7WUFDSCxPQUFPO2dCQUNMLElBQUksRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQztnQkFDNUIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLEdBQUcsRUFBRSxHQUFHO2FBQ1QsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxvQkFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDakQsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFPRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW9CO0lBQ2xFLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUNwQyxJQUFJLFNBQVM7UUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBQSxvQkFBUSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sSUFBQSxnQkFBSSxFQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kSW5wdXQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IGNodW5rQXJyYXksIGxpc3RGaWxlUGF0aHMgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHMzIH0gZnJvbSBcIi4vczNcIjtcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgRnNUb1MzQWN0aW9uIH0gZnJvbSBcIi4uLy4uL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZnNUb1MzKHByb3BzOiBGc1RvUzNBY3Rpb24pIHtcbiAgY29uc3QgeyBkZXN0aW5hdGlvbkJ1Y2tldE5hbWUsIGRlc3RpbmF0aW9uS2V5UHJlZml4LCBzb3VyY2VQYXRoIH0gPSBwcm9wcztcbiAgY29uc3Qgc291cmNlRmlsZVBhdGhzID0gbGlzdEZpbGVQYXRocyhzb3VyY2VQYXRoKTtcbiAgZm9yIGF3YWl0IChjb25zdCBmaWxlUGF0aENodW5rIG9mIGNodW5rQXJyYXkoc291cmNlRmlsZVBhdGhzLCAxMDApKSB7XG4gICAgY29uc3QgcHV0T2JqZWN0SW5wdXRzOiBQdXRPYmplY3RDb21tYW5kSW5wdXRbXSA9IGZpbGVQYXRoQ2h1bmsubWFwKFxuICAgICAgKHBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cChwYXRoKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGtleSA9IGNyZWF0ZVMzS2V5KHtcbiAgICAgICAgICBrZXlQcmVmaXg6IGRlc3RpbmF0aW9uS2V5UHJlZml4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgYmFzZVBhdGg6IHNvdXJjZVBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIEJvZHk6IGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCksXG4gICAgICAgICAgQnVja2V0OiBkZXN0aW5hdGlvbkJ1Y2tldE5hbWUsXG4gICAgICAgICAgQ29udGVudFR5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgIEtleToga2V5LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApO1xuICAgIGRlYnVnKHsgcHV0T2JqZWN0SW5wdXRzIH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHV0T2JqZWN0SW5wdXRzLm1hcCgoaW5wdXQpID0+XG4gICAgICAgIG5ldyBVcGxvYWQoeyBjbGllbnQ6IHMzLCBwYXJhbXM6IGlucHV0IH0pLmRvbmUoKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ3JlYXRlUzNLZXlQcm9wcyB7XG4gIGtleVByZWZpeD86IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBiYXNlUGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBDcmVhdGUgUzMgS2V5IGdpdmVuIGxvY2FsIHBhdGhcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUzNLZXkoeyBrZXlQcmVmaXgsIHBhdGgsIGJhc2VQYXRoIH06IENyZWF0ZVMzS2V5UHJvcHMpIHtcbiAgY29uc3Qgb2JqZWN0S2V5UGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmIChrZXlQcmVmaXgpIG9iamVjdEtleVBhcnRzLnB1c2goa2V5UHJlZml4KTtcbiAgb2JqZWN0S2V5UGFydHMucHVzaChyZWxhdGl2ZShiYXNlUGF0aCwgcGF0aCkpO1xuICByZXR1cm4gam9pbiguLi5vYmplY3RLZXlQYXJ0cyk7XG59XG4iXX0=
|
|
@@ -89,5 +89,5 @@ class NextjsAssetsDeployment extends constructs_1.Construct {
|
|
|
89
89
|
}
|
|
90
90
|
exports.NextjsAssetsDeployment = NextjsAssetsDeployment;
|
|
91
91
|
_a = JSII_RTTI_SYMBOL_1;
|
|
92
|
-
NextjsAssetsDeployment[_a] = { fqn: "cdk-nextjs.NextjsAssetsDeployment", version: "0.0.
|
|
92
|
+
NextjsAssetsDeployment[_a] = { fqn: "cdk-nextjs.NextjsAssetsDeployment", version: "0.0.3" };
|
|
93
93
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWFzc2V0cy1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25leHRqcy1hc3NldHMtZGVwbG95bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNDQUFrQztBQUNsQyw2Q0FBdUQ7QUFHdkQsdURBS2dDO0FBRWhDLDJDQUF1QztBQUN2QyxxQ0FJa0I7QUFzR2xCOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQVVuRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQztRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksWUFBWSxHQUE2QixTQUFTLENBQUM7UUFDdkQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLFlBQVksR0FBRyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxnQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdDLFlBQVk7WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO1lBQ2hDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSx1QkFBVSxDQUFDLGtCQUFrQixDQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FDcEM7WUFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ25CLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSx3QkFBd0I7U0FDbEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMvQixFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQXdDLEVBQUUsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDOUMsT0FBTyxDQUFDLElBQUksQ0FDVjtnQkFDRSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsVUFBVSxFQUFFLElBQUEsWUFBSSxFQUFDLElBQUksRUFBRSxRQUFRLENBQUM7Z0JBQ2hDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVTthQUNoRTtZQUNELGVBQWU7WUFDZjtnQkFDRSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsVUFBVSxFQUFFLElBQUEsWUFBSSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO2dCQUN6QyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVU7Z0JBQy9ELG9CQUFvQixFQUFFLGNBQWM7YUFDckMsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJO1FBQ1Ysd0ZBQXdGO1FBQ3hGO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFLElBQUEsWUFBSSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQztZQUN2RCxlQUFlLEVBQUUsSUFBQSxZQUFJLEVBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQ25DLHVCQUFjLENBQ2Y7U0FDRjtRQUNELG9HQUFvRztRQUNwRztZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRSxJQUFBLFlBQUksRUFDZCxJQUFJLEVBQ0osT0FBTyxFQUNQLFlBQVksRUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFDeEMsT0FBTyxFQUNQLFFBQVEsRUFDUixLQUFLLENBQ047WUFDRCxlQUFlLEVBQUUsSUFBQSxZQUFJLEVBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQ25DLDZCQUFvQixDQUNyQjtTQUNGLENBRUYsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUE2QjtZQUMzQyxPQUFPO1lBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7WUFDN0MsY0FBYyxFQUFFLElBQUEsWUFBSSxFQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUNuQyx3QkFBZSxDQUNoQjtZQUNELHFCQUFxQixFQUFFLElBQUEsWUFBSSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUseUJBQXlCLENBQUM7U0FDdEUsQ0FBQztRQUNGLE9BQU8sSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNoRCxVQUFVO1lBQ1YsWUFBWSxFQUFFLGdDQUFnQztZQUM5QyxZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVc7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFoSEgsd0RBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoL3Bvc2l4XCI7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElWcGMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQWNjZXNzUG9pbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBEb2NrZXJJbWFnZUNvZGUsXG4gIERvY2tlckltYWdlRnVuY3Rpb24sXG4gIEZpbGVTeXN0ZW0sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgREFUQV9DQUNIRV9ESVIsXG4gIEZVTExfUk9VVEVfQ0FDSEVfRElSLFxuICBJTUFHRV9DQUNIRV9ESVIsXG59IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wc1wiO1xuaW1wb3J0IHsgTmV4dGpzQnVpbGQgfSBmcm9tIFwiLi9uZXh0anMtYnVpbGQvbmV4dGpzLWJ1aWxkXCI7XG5pbXBvcnQgeyBOZXh0anNCYXNlUHJvcHMgfSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWJhc2UtcHJvcHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNBc3NldERlcGxveW1lbnRPdmVycmlkZXMge1xuICByZWFkb25seSBkb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHM/OiBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMge1xuICByZWFkb25seSBhY2Nlc3NQb2ludDogQWNjZXNzUG9pbnQ7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCdWlsZC5idWlsZEltYWdlRGlnZXN0fVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZURpZ2VzdDogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBkb2NrZXJJbWFnZUNvZGU6IERvY2tlckltYWdlQ29kZTsgLy8gVE9ETzogcmVtb3ZlIGFuZCBidWlsZCBmcm9tIGNvbW1vbiBidWlsZGVyIGJhc2U/XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCdWlsZC5jb250YWluZXJNb3VudFBhdGhGb3JFZnN9XG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJNb3VudFBhdGhGb3JFZnM6IE5leHRqc0J1aWxkW1wiY29udGFpbmVyTW91bnRQYXRoRm9yRWZzXCJdO1xuICByZWFkb25seSBvdmVycmlkZXM/OiBOZXh0anNBc3NldERlcGxveW1lbnRPdmVycmlkZXM7XG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBOZXh0anNCYXNlUHJvcHMucmVsYXRpdmVQYXRoVG9Xb3Jrc3BhY2V9XG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGZvciBgTmV4dGpzVHlwZS5HbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzVHlwZS5HbG9iYWxDb250YWluZXJzYFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzQnVja2V0PzogQnVja2V0O1xuICByZWFkb25seSB2cGM6IElWcGM7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnNUb1MzQWN0aW9uIHtcbiAgdHlwZTogXCJmcy10by1zM1wiO1xuICBkZXN0aW5hdGlvbkJ1Y2tldE5hbWU6IHN0cmluZztcbiAgZGVzdGluYXRpb25LZXlQcmVmaXg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg6IHN0cmluZztcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnNUb0ZzQWN0aW9uIHtcbiAgdHlwZTogXCJmcy10by1mc1wiO1xuICBzb3VyY2VQYXRoOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uUGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcnVuZVMzQWN0aW9uIHtcbiAgdHlwZTogXCJwcnVuZS1zM1wiO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBjb3VudCB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveUNvdW50VG9QcnVuZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBkYXRlIHRvIHBydW5lXG4gICAqIEBkZWZhdWx0IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0TW9udGgobmV3IERhdGUoKS5nZXRNb250aCgpIC0gMSkpXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveURhdGVUb1BydW5lOiBzdHJpbmc7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgYnVja2V0UHJlZml4Pzogc3RyaW5nO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcnVuZUZzQWN0aW9uIHtcbiAgdHlwZTogXCJwcnVuZS1mc1wiO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBjb3VudCB0byBwcnVuZVxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveUNvdW50VG9QcnVuZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gcHJldmlvdXMgZGVwbG95bWVudCBkYXRlIHRvIHBydW5lXG4gICAqIEBkZWZhdWx0IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0TW9udGgobmV3IERhdGUoKS5nZXRNb250aCgpIC0gMSkpXG4gICAqL1xuICBtaW5QcmV2aW91c0RlcGxveURhdGVUb1BydW5lOiBzdHJpbmc7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB7XG4gIGFjdGlvbnM6IChGc1RvUzNBY3Rpb24gfCBGc1RvRnNBY3Rpb24gfCBQcnVuZVMzQWN0aW9uIHwgUHJ1bmVGc0FjdGlvbilbXTtcbiAgLyoqXG4gICAqIHtAbGluayBOZXh0anNBc3NldERlcGxveW1lbnRQcm9wcy5idWlsZGVySW1hZ2VEaWdlc3R9XG4gICAqL1xuICBidWlsZEltYWdlRGlnZXN0OiBzdHJpbmc7XG4gIGltYWdlQ2FjaGVQYXRoOiBzdHJpbmc7XG4gIHByZXJlbmRlck1hbmlmZXN0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlcGxveXMgc3RhdGljIGFzc2V0cyB0byBTMyBhbmQgY2FjaGUgYXNzZXRzIHRvIEVGUyBpbiBMYW1iZGEgQ3VzdG9tIFJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzQXNzZXRzRGVwbG95bWVudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGN1c3RvbVJlc291cmNlOiBDdXN0b21SZXNvdXJjZTtcbiAgZG9ja2VySW1hZ2VGdW5jdGlvbjogRG9ja2VySW1hZ2VGdW5jdGlvbjtcbiAgLyoqXG4gICAqIE9ubHkgdXNlZCBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2BcbiAgICovXG4gIHByZXZpZXdNb2RlSWQ6IHN0cmluZztcblxuICBwcml2YXRlIHByb3BzOiBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuZG9ja2VySW1hZ2VGdW5jdGlvbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb24oKTtcbiAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gdGhpcy5jcmVhdGVDdXN0b21SZXNvdXJjZSgpO1xuICAgIHRoaXMucHJldmlld01vZGVJZCA9IHRoaXMuY3VzdG9tUmVzb3VyY2UuZ2V0QXR0U3RyaW5nKFwicHJldmlld01vZGVJZFwiKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnVuY3Rpb24oKSB7XG4gICAgbGV0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmFyY2ggPT09IFwieDY0XCIpIHtcbiAgICAgIGFyY2hpdGVjdHVyZSA9IEFyY2hpdGVjdHVyZS5YODZfNjQ7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmFyY2ggPT09IFwiYXJtNjRcIikge1xuICAgICAgYXJjaGl0ZWN0dXJlID0gQXJjaGl0ZWN0dXJlLkFSTV82NDtcbiAgICB9XG4gICAgY29uc3QgZm4gPSBuZXcgRG9ja2VySW1hZ2VGdW5jdGlvbih0aGlzLCBcIkZuXCIsIHtcbiAgICAgIGFyY2hpdGVjdHVyZSxcbiAgICAgIGNvZGU6IHRoaXMucHJvcHMuZG9ja2VySW1hZ2VDb2RlLFxuICAgICAgbWVtb3J5U2l6ZTogMjA0OCxcbiAgICAgIGZpbGVzeXN0ZW06IEZpbGVTeXN0ZW0uZnJvbUVmc0FjY2Vzc1BvaW50KFxuICAgICAgICB0aGlzLnByb3BzLmFjY2Vzc1BvaW50LFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICksXG4gICAgICB2cGM6IHRoaXMucHJvcHMudnBjLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5kb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucHJvcHMuZGVidWcgIT09IGZhbHNlKSB7XG4gICAgICBmbi5hZGRFbnZpcm9ubWVudChcIkRFQlVHXCIsIFwiMVwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGljQXNzZXRzQnVja2V0KSB7XG4gICAgICB0aGlzLnByb3BzLnN0YXRpY0Fzc2V0c0J1Y2tldC5ncmFudFJlYWRXcml0ZShmbik7XG4gICAgfVxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ3VzdG9tUmVzb3VyY2UoKSB7XG4gICAgY29uc3Qgcm9vdCA9IFwiL2FwcFwiO1xuICAgIGNvbnN0IGFjdGlvbnM6IEN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcImFjdGlvbnNcIl0gPSBbXTtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQ/LmJ1Y2tldE5hbWUpIHtcbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiZnMtdG8tczNcIixcbiAgICAgICAgICBzb3VyY2VQYXRoOiBqb2luKHJvb3QsIFwicHVibGljXCIpLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0TmFtZTogdGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc3RhdGljIGZpbGVzXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImZzLXRvLXMzXCIsXG4gICAgICAgICAgc291cmNlUGF0aDogam9pbihyb290LCBcIi5uZXh0XCIsIFwic3RhdGljXCIpLFxuICAgICAgICAgIGRlc3RpbmF0aW9uQnVja2V0TmFtZTogdGhpcy5wcm9wcy5zdGF0aWNBc3NldHNCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBkZXN0aW5hdGlvbktleVByZWZpeDogXCJfbmV4dC9zdGF0aWNcIixcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIGFjdGlvbnMucHVzaChcbiAgICAgIC8vIGRhdGEgY2FjaGUgLSBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9jYWNoaW5nI2RhdGEtY2FjaGVcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmcy10by1mc1wiLFxuICAgICAgICBzb3VyY2VQYXRoOiBqb2luKHJvb3QsIFwiLm5leHRcIiwgXCJjYWNoZVwiLCBcImZldGNoLWNhY2hlXCIpLFxuICAgICAgICBkZXN0aW5hdGlvblBhdGg6IGpvaW4oXG4gICAgICAgICAgdGhpcy5wcm9wcy5jb250YWluZXJNb3VudFBhdGhGb3JFZnMsXG4gICAgICAgICAgREFUQV9DQUNIRV9ESVIsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgLy8gZnVsbCByb3V0ZSBjYWNoZSAtIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2NhY2hpbmcjZnVsbC1yb3V0ZS1jYWNoZVxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZzLXRvLWZzXCIsXG4gICAgICAgIHNvdXJjZVBhdGg6IGpvaW4oXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBcIi5uZXh0XCIsXG4gICAgICAgICAgXCJzdGFuZGFsb25lXCIsXG4gICAgICAgICAgdGhpcy5wcm9wcy5yZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZSB8fCBcIlwiLFxuICAgICAgICAgIFwiLm5leHRcIixcbiAgICAgICAgICBcInNlcnZlclwiLFxuICAgICAgICAgIFwiYXBwXCIsXG4gICAgICAgICksXG4gICAgICAgIGRlc3RpbmF0aW9uUGF0aDogam9pbihcbiAgICAgICAgICB0aGlzLnByb3BzLmNvbnRhaW5lck1vdW50UGF0aEZvckVmcyxcbiAgICAgICAgICBGVUxMX1JPVVRFX0NBQ0hFX0RJUixcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICAvLyBpbWFnZXMgYXJlIG9wdGltaXplZCBhdCBydW50aW1lIHNvIG5vdGhpbmcgdG8gZGVwbG95XG4gICAgKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgPSB7XG4gICAgICBhY3Rpb25zLFxuICAgICAgYnVpbGRJbWFnZURpZ2VzdDogdGhpcy5wcm9wcy5idWlsZEltYWdlRGlnZXN0LFxuICAgICAgaW1hZ2VDYWNoZVBhdGg6IGpvaW4oXG4gICAgICAgIHRoaXMucHJvcHMuY29udGFpbmVyTW91bnRQYXRoRm9yRWZzLFxuICAgICAgICBJTUFHRV9DQUNIRV9ESVIsXG4gICAgICApLFxuICAgICAgcHJlcmVuZGVyTWFuaWZlc3RQYXRoOiBqb2luKHJvb3QsIFwiLm5leHRcIiwgXCJwcmVyZW5kZXItbWFuaWZlc3QuanNvblwiKSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJDdXN0b21SZXNvdXJjZVwiLCB7XG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6TmV4dGpzQXNzZXRzRGVwbG95bWVudFwiLFxuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmRvY2tlckltYWdlRnVuY3Rpb24uZnVuY3Rpb25Bcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|