cdk-nextjs 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.jsii +120 -88
  2. package/API.md +60 -38
  3. package/assets/lambdas/assets-deployment/assets-deployment.lambda/assets-deployment.Dockerfile +1 -1
  4. package/assets/lambdas/assets-deployment/assets-deployment.lambda/index.js +18 -8
  5. package/assets/lambdas/assets-deployment/assets-deployment.lambda/patch-fetch.js +1 -0
  6. package/docs/breaking-changes.md +12 -0
  7. package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.d.ts +5 -0
  8. package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.js +1 -1
  9. package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +7 -7
  10. package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
  11. package/lib/lambdas/assets-deployment/assets-deployment.lambda.js +16 -8
  12. package/lib/lambdas/assets-deployment/fs-to-s3.d.ts +12 -1
  13. package/lib/lambdas/assets-deployment/fs-to-s3.js +16 -3
  14. package/lib/nextjs-assets-deployment.d.ts +7 -4
  15. package/lib/nextjs-assets-deployment.js +3 -2
  16. package/lib/nextjs-build/nextjs-build.js +1 -1
  17. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  18. package/lib/nextjs-compute/nextjs-functions.js +1 -1
  19. package/lib/nextjs-distribution.d.ts +9 -15
  20. package/lib/nextjs-distribution.js +15 -84
  21. package/lib/nextjs-file-system.js +1 -1
  22. package/lib/nextjs-invalidation.js +1 -1
  23. package/lib/nextjs-revalidation.js +1 -1
  24. package/lib/nextjs-static-assets.js +1 -1
  25. package/lib/nextjs-vpc.js +1 -1
  26. package/lib/root-constructs/nextjs-global-containers.js +5 -4
  27. package/lib/root-constructs/nextjs-global-functions.js +5 -5
  28. package/lib/root-constructs/nextjs-regional-containers.js +4 -3
  29. package/package.json +4 -7
  30. package/assets/lambdas/sign-fn-url/sign-fn-url.edge-lambda/index.js +0 -2024
  31. package/lib/lambdas/sign-fn-url/sign-fn-url-function.d.ts +0 -13
  32. package/lib/lambdas/sign-fn-url/sign-fn-url-function.js +0 -23
  33. package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.d.ts +0 -9
  34. package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.js +0 -35
  35. package/lib/lambdas/sign-fn-url/sign-request.d.ts +0 -28
  36. package/lib/lambdas/sign-fn-url/sign-request.js +0 -119
  37. package/lib/lambdas/sign-fn-url/sign-request.test.d.ts +0 -1
  38. package/lib/lambdas/sign-fn-url/sign-request.test.js +0 -129
package/API.md CHANGED
@@ -2198,6 +2198,7 @@ const nextjsAssetsDeploymentProps: NextjsAssetsDeploymentProps = { ... }
2198
2198
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.buildImageDigest">buildImageDigest</a></code> | <code>string</code> | *No description.* |
2199
2199
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.containerMountPathForEfs">containerMountPathForEfs</a></code> | <code>string</code> | *No description.* |
2200
2200
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.dockerImageCode">dockerImageCode</a></code> | <code>aws-cdk-lib.aws_lambda.DockerImageCode</code> | *No description.* |
2201
+ | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.nextjsType">nextjsType</a></code> | <code><a href="#cdk-nextjs.NextjsType">NextjsType</a></code> | *No description.* |
2201
2202
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | *No description.* |
2202
2203
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.debug">debug</a></code> | <code>boolean</code> | *No description.* |
2203
2204
  | <code><a href="#cdk-nextjs.NextjsAssetsDeploymentProps.property.overrides">overrides</a></code> | <code><a href="#cdk-nextjs.NextjsAssetDeploymentOverrides">NextjsAssetDeploymentOverrides</a></code> | *No description.* |
@@ -2250,6 +2251,16 @@ public readonly dockerImageCode: DockerImageCode;
2250
2251
 
2251
2252
  ---
2252
2253
 
2254
+ ##### `nextjsType`<sup>Required</sup> <a name="nextjsType" id="cdk-nextjs.NextjsAssetsDeploymentProps.property.nextjsType"></a>
2255
+
2256
+ ```typescript
2257
+ public readonly nextjsType: NextjsType;
2258
+ ```
2259
+
2260
+ - *Type:* <a href="#cdk-nextjs.NextjsType">NextjsType</a>
2261
+
2262
+ ---
2263
+
2253
2264
  ##### `vpc`<sup>Required</sup> <a name="vpc" id="cdk-nextjs.NextjsAssetsDeploymentProps.property.vpc"></a>
2254
2265
 
2255
2266
  ```typescript
@@ -2806,9 +2817,9 @@ const nextjsDistributionOverrides: NextjsDistributionOverrides = { ... }
2806
2817
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.distributionProps">distributionProps</a></code> | <code><a href="#cdk-nextjs.OptionalDistributionProps">OptionalDistributionProps</a></code> | *No description.* |
2807
2818
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicBehaviorOptions">dynamicBehaviorOptions</a></code> | <code>aws-cdk-lib.aws_cloudfront.AddBehaviorOptions</code> | *No description.* |
2808
2819
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicCachePolicyProps">dynamicCachePolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.CachePolicyProps</code> | *No description.* |
2809
- | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicHttpOriginProps">dynamicHttpOriginProps</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.HttpOriginProps</code> | *No description.* |
2820
+ | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicFunctionUrlOriginWithOACProps">dynamicFunctionUrlOriginWithOACProps</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.FunctionUrlOriginWithOACProps</code> | *No description.* |
2821
+ | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicLoadBalancerV2OriginProps">dynamicLoadBalancerV2OriginProps</a></code> | <code>aws-cdk-lib.aws_cloudfront_origins.LoadBalancerV2OriginProps</code> | *No description.* |
2810
2822
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.dynamicResponseHeadersPolicyProps">dynamicResponseHeadersPolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps</code> | *No description.* |
2811
- | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.edgeFunctionProps">edgeFunctionProps</a></code> | <code><a href="#cdk-nextjs.OptionalFunctionProps">OptionalFunctionProps</a></code> | *No description.* |
2812
2823
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageBehaviorOptions">imageBehaviorOptions</a></code> | <code>aws-cdk-lib.aws_cloudfront.AddBehaviorOptions</code> | *No description.* |
2813
2824
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageCachePolicyProps">imageCachePolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.CachePolicyProps</code> | *No description.* |
2814
2825
  | <code><a href="#cdk-nextjs.NextjsDistributionOverrides.property.imageResponseHeadersPolicyProps">imageResponseHeadersPolicyProps</a></code> | <code>aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps</code> | *No description.* |
@@ -2848,33 +2859,33 @@ public readonly dynamicCachePolicyProps: CachePolicyProps;
2848
2859
 
2849
2860
  ---
2850
2861
 
2851
- ##### `dynamicHttpOriginProps`<sup>Optional</sup> <a name="dynamicHttpOriginProps" id="cdk-nextjs.NextjsDistributionOverrides.property.dynamicHttpOriginProps"></a>
2862
+ ##### `dynamicFunctionUrlOriginWithOACProps`<sup>Optional</sup> <a name="dynamicFunctionUrlOriginWithOACProps" id="cdk-nextjs.NextjsDistributionOverrides.property.dynamicFunctionUrlOriginWithOACProps"></a>
2852
2863
 
2853
2864
  ```typescript
2854
- public readonly dynamicHttpOriginProps: HttpOriginProps;
2865
+ public readonly dynamicFunctionUrlOriginWithOACProps: FunctionUrlOriginWithOACProps;
2855
2866
  ```
2856
2867
 
2857
- - *Type:* aws-cdk-lib.aws_cloudfront_origins.HttpOriginProps
2868
+ - *Type:* aws-cdk-lib.aws_cloudfront_origins.FunctionUrlOriginWithOACProps
2858
2869
 
2859
2870
  ---
2860
2871
 
2861
- ##### `dynamicResponseHeadersPolicyProps`<sup>Optional</sup> <a name="dynamicResponseHeadersPolicyProps" id="cdk-nextjs.NextjsDistributionOverrides.property.dynamicResponseHeadersPolicyProps"></a>
2872
+ ##### `dynamicLoadBalancerV2OriginProps`<sup>Optional</sup> <a name="dynamicLoadBalancerV2OriginProps" id="cdk-nextjs.NextjsDistributionOverrides.property.dynamicLoadBalancerV2OriginProps"></a>
2862
2873
 
2863
2874
  ```typescript
2864
- public readonly dynamicResponseHeadersPolicyProps: ResponseHeadersPolicyProps;
2875
+ public readonly dynamicLoadBalancerV2OriginProps: LoadBalancerV2OriginProps;
2865
2876
  ```
2866
2877
 
2867
- - *Type:* aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps
2878
+ - *Type:* aws-cdk-lib.aws_cloudfront_origins.LoadBalancerV2OriginProps
2868
2879
 
2869
2880
  ---
2870
2881
 
2871
- ##### `edgeFunctionProps`<sup>Optional</sup> <a name="edgeFunctionProps" id="cdk-nextjs.NextjsDistributionOverrides.property.edgeFunctionProps"></a>
2882
+ ##### `dynamicResponseHeadersPolicyProps`<sup>Optional</sup> <a name="dynamicResponseHeadersPolicyProps" id="cdk-nextjs.NextjsDistributionOverrides.property.dynamicResponseHeadersPolicyProps"></a>
2872
2883
 
2873
2884
  ```typescript
2874
- public readonly edgeFunctionProps: OptionalFunctionProps;
2885
+ public readonly dynamicResponseHeadersPolicyProps: ResponseHeadersPolicyProps;
2875
2886
  ```
2876
2887
 
2877
- - *Type:* <a href="#cdk-nextjs.OptionalFunctionProps">OptionalFunctionProps</a>
2888
+ - *Type:* aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicyProps
2878
2889
 
2879
2890
  ---
2880
2891
 
@@ -2953,13 +2964,13 @@ const nextjsDistributionProps: NextjsDistributionProps = { ... }
2953
2964
  | **Name** | **Type** | **Description** |
2954
2965
  | --- | --- | --- |
2955
2966
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.assetsBucket">assetsBucket</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | Bucket containing static assets. |
2956
- | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.dynamicUrl">dynamicUrl</a></code> | <code>string</code> | Dynamic (Next.js server) URL to add behavior to distribution. |
2957
2967
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.nextjsType">nextjsType</a></code> | <code><a href="#cdk-nextjs.NextjsType">NextjsType</a></code> | *No description.* |
2958
2968
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.publicDirEntries">publicDirEntries</a></code> | <code><a href="#cdk-nextjs.PublicDirEntry">PublicDirEntry</a>[]</code> | Path to directory of Next.js app's public directory. Used to add static behaviors to distribution. |
2959
2969
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.basePath">basePath</a></code> | <code>string</code> | *No description.* |
2960
2970
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.certificate">certificate</a></code> | <code>aws-cdk-lib.aws_certificatemanager.ICertificate</code> | Optional but only applicable for `NextjsType.GLOBAL_CONTAINERS`. |
2961
2971
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.distribution">distribution</a></code> | <code>aws-cdk-lib.aws_cloudfront.Distribution</code> | *No description.* |
2962
- | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.functionArn">functionArn</a></code> | <code>string</code> | Required if `NextjsType.GLOBAL_FUNCTIONS`. |
2972
+ | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.functionUrl">functionUrl</a></code> | <code>aws-cdk-lib.aws_lambda.IFunctionUrl</code> | Required if `NextjsType.GLOBAL_FUNCTIONS`. |
2973
+ | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.loadBalancer">loadBalancer</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2</code> | Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`. |
2963
2974
  | <code><a href="#cdk-nextjs.NextjsDistributionProps.property.overrides">overrides</a></code> | <code><a href="#cdk-nextjs.NextjsDistributionOverrides">NextjsDistributionOverrides</a></code> | Override props for every construct. |
2964
2975
 
2965
2976
  ---
@@ -2978,18 +2989,6 @@ Must be provided if you want to serve static files.
2978
2989
 
2979
2990
  ---
2980
2991
 
2981
- ##### `dynamicUrl`<sup>Required</sup> <a name="dynamicUrl" id="cdk-nextjs.NextjsDistributionProps.property.dynamicUrl"></a>
2982
-
2983
- ```typescript
2984
- public readonly dynamicUrl: string;
2985
- ```
2986
-
2987
- - *Type:* string
2988
-
2989
- Dynamic (Next.js server) URL to add behavior to distribution.
2990
-
2991
- ---
2992
-
2993
2992
  ##### `nextjsType`<sup>Required</sup> <a name="nextjsType" id="cdk-nextjs.NextjsDistributionProps.property.nextjsType"></a>
2994
2993
 
2995
2994
  ```typescript
@@ -3044,18 +3043,30 @@ public readonly distribution: Distribution;
3044
3043
 
3045
3044
  ---
3046
3045
 
3047
- ##### `functionArn`<sup>Optional</sup> <a name="functionArn" id="cdk-nextjs.NextjsDistributionProps.property.functionArn"></a>
3046
+ ##### `functionUrl`<sup>Optional</sup> <a name="functionUrl" id="cdk-nextjs.NextjsDistributionProps.property.functionUrl"></a>
3048
3047
 
3049
3048
  ```typescript
3050
- public readonly functionArn: string;
3049
+ public readonly functionUrl: IFunctionUrl;
3051
3050
  ```
3052
3051
 
3053
- - *Type:* string
3052
+ - *Type:* aws-cdk-lib.aws_lambda.IFunctionUrl
3054
3053
 
3055
3054
  Required if `NextjsType.GLOBAL_FUNCTIONS`.
3056
3055
 
3057
3056
  ---
3058
3057
 
3058
+ ##### `loadBalancer`<sup>Optional</sup> <a name="loadBalancer" id="cdk-nextjs.NextjsDistributionProps.property.loadBalancer"></a>
3059
+
3060
+ ```typescript
3061
+ public readonly loadBalancer: ILoadBalancerV2;
3062
+ ```
3063
+
3064
+ - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2
3065
+
3066
+ Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`.
3067
+
3068
+ ---
3069
+
3059
3070
  ##### `overrides`<sup>Optional</sup> <a name="overrides" id="cdk-nextjs.NextjsDistributionProps.property.overrides"></a>
3060
3071
 
3061
3072
  ```typescript
@@ -8501,6 +8512,7 @@ const optionalNextjsAssetsDeploymentProps: OptionalNextjsAssetsDeploymentProps =
8501
8512
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.containerMountPathForEfs">containerMountPathForEfs</a></code> | <code>string</code> | *No description.* |
8502
8513
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.debug">debug</a></code> | <code>boolean</code> | *No description.* |
8503
8514
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.dockerImageCode">dockerImageCode</a></code> | <code>aws-cdk-lib.aws_lambda.DockerImageCode</code> | *No description.* |
8515
+ | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.nextjsType">nextjsType</a></code> | <code><a href="#cdk-nextjs.NextjsType">NextjsType</a></code> | *No description.* |
8504
8516
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.relativePathToWorkspace">relativePathToWorkspace</a></code> | <code>string</code> | *No description.* |
8505
8517
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.staticAssetsBucket">staticAssetsBucket</a></code> | <code>aws-cdk-lib.aws_s3.Bucket</code> | Required for `NextjsType.GlobalFunctions` and `NextjsType.GlobalContainers`. |
8506
8518
  | <code><a href="#cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | *No description.* |
@@ -8558,6 +8570,16 @@ public readonly dockerImageCode: DockerImageCode;
8558
8570
 
8559
8571
  ---
8560
8572
 
8573
+ ##### `nextjsType`<sup>Optional</sup> <a name="nextjsType" id="cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.nextjsType"></a>
8574
+
8575
+ ```typescript
8576
+ public readonly nextjsType: NextjsType;
8577
+ ```
8578
+
8579
+ - *Type:* <a href="#cdk-nextjs.NextjsType">NextjsType</a>
8580
+
8581
+ ---
8582
+
8561
8583
  ##### `relativePathToWorkspace`<sup>Optional</sup> <a name="relativePathToWorkspace" id="cdk-nextjs.OptionalNextjsAssetsDeploymentProps.property.relativePathToWorkspace"></a>
8562
8584
 
8563
8585
  ```typescript
@@ -8791,8 +8813,8 @@ const optionalNextjsDistributionProps: OptionalNextjsDistributionProps = { ... }
8791
8813
  | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.basePath">basePath</a></code> | <code>string</code> | *No description.* |
8792
8814
  | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.certificate">certificate</a></code> | <code>aws-cdk-lib.aws_certificatemanager.ICertificate</code> | Optional but only applicable for `NextjsType.GLOBAL_CONTAINERS`. |
8793
8815
  | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.distribution">distribution</a></code> | <code>aws-cdk-lib.aws_cloudfront.Distribution</code> | *No description.* |
8794
- | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.dynamicUrl">dynamicUrl</a></code> | <code>string</code> | Dynamic (Next.js server) URL to add behavior to distribution. |
8795
- | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.functionArn">functionArn</a></code> | <code>string</code> | Required if `NextjsType.GLOBAL_FUNCTIONS`. |
8816
+ | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.functionUrl">functionUrl</a></code> | <code>aws-cdk-lib.aws_lambda.IFunctionUrl</code> | Required if `NextjsType.GLOBAL_FUNCTIONS`. |
8817
+ | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.loadBalancer">loadBalancer</a></code> | <code>aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2</code> | Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`. |
8796
8818
  | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.nextjsType">nextjsType</a></code> | <code><a href="#cdk-nextjs.NextjsType">NextjsType</a></code> | *No description.* |
8797
8819
  | <code><a href="#cdk-nextjs.OptionalNextjsDistributionProps.property.publicDirEntries">publicDirEntries</a></code> | <code><a href="#cdk-nextjs.PublicDirEntry">PublicDirEntry</a>[]</code> | Path to directory of Next.js app's public directory. Used to add static behaviors to distribution. |
8798
8820
 
@@ -8844,27 +8866,27 @@ public readonly distribution: Distribution;
8844
8866
 
8845
8867
  ---
8846
8868
 
8847
- ##### `dynamicUrl`<sup>Optional</sup> <a name="dynamicUrl" id="cdk-nextjs.OptionalNextjsDistributionProps.property.dynamicUrl"></a>
8869
+ ##### `functionUrl`<sup>Optional</sup> <a name="functionUrl" id="cdk-nextjs.OptionalNextjsDistributionProps.property.functionUrl"></a>
8848
8870
 
8849
8871
  ```typescript
8850
- public readonly dynamicUrl: string;
8872
+ public readonly functionUrl: IFunctionUrl;
8851
8873
  ```
8852
8874
 
8853
- - *Type:* string
8875
+ - *Type:* aws-cdk-lib.aws_lambda.IFunctionUrl
8854
8876
 
8855
- Dynamic (Next.js server) URL to add behavior to distribution.
8877
+ Required if `NextjsType.GLOBAL_FUNCTIONS`.
8856
8878
 
8857
8879
  ---
8858
8880
 
8859
- ##### `functionArn`<sup>Optional</sup> <a name="functionArn" id="cdk-nextjs.OptionalNextjsDistributionProps.property.functionArn"></a>
8881
+ ##### `loadBalancer`<sup>Optional</sup> <a name="loadBalancer" id="cdk-nextjs.OptionalNextjsDistributionProps.property.loadBalancer"></a>
8860
8882
 
8861
8883
  ```typescript
8862
- public readonly functionArn: string;
8884
+ public readonly loadBalancer: ILoadBalancerV2;
8863
8885
  ```
8864
8886
 
8865
- - *Type:* string
8887
+ - *Type:* aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2
8866
8888
 
8867
- Required if `NextjsType.GLOBAL_FUNCTIONS`.
8889
+ Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`.
8868
8890
 
8869
8891
  ---
8870
8892
 
@@ -13,6 +13,6 @@ COPY --from=builder --chown=nextjs:nodejs /app/$RELATIVE_PATH_TO_WORKSPACE/.next
13
13
  # create fetch-cache if not created by next build
14
14
  RUN mkdir -p /app/.next/cache/fetch-cache
15
15
  # copy bundled custom resource handler
16
- COPY --chown=nextjs:nodejs ./index.js ./
16
+ COPY --chown=nextjs:nodejs ./index.js ./patch-fetch.js ./
17
17
 
18
18
  CMD ["index.handler"]
@@ -8659,7 +8659,7 @@ __export(assets_deployment_lambda_exports, {
8659
8659
  handler: () => handler
8660
8660
  });
8661
8661
  module.exports = __toCommonJS(assets_deployment_lambda_exports);
8662
- var import_fs = require("fs");
8662
+ var import_node_fs4 = require("node:fs");
8663
8663
 
8664
8664
  // src/lambdas/assets-deployment/fs-to-fs.ts
8665
8665
  var import_node_fs = require("node:fs");
@@ -8722,7 +8722,7 @@ function debug(value) {
8722
8722
  }
8723
8723
 
8724
8724
  // src/lambdas/assets-deployment/fs-to-s3.ts
8725
- async function fsToS3(props) {
8725
+ async function fsToS3(props, nextjsType) {
8726
8726
  const { destinationBucketName, destinationKeyPrefix, sourcePath } = props;
8727
8727
  const sourceFilePaths = listFilePaths(sourcePath);
8728
8728
  for await (const filePathChunk of chunkArray(sourceFilePaths, 100)) {
@@ -8734,8 +8734,18 @@ async function fsToS3(props) {
8734
8734
  path,
8735
8735
  basePath: sourcePath
8736
8736
  });
8737
+ let body;
8738
+ if (path.includes(".next/static/chunks/main-app-") && nextjsType === "GLOBAL_FUNCTIONS" /* GLOBAL_FUNCTIONS */) {
8739
+ const mainAppFileContent = (0, import_node_fs3.readFileSync)(path);
8740
+ const patchFetchContent = (0, import_node_fs3.readFileSync)(
8741
+ (0, import_node_path2.join)(__dirname, "patch-fetch.js")
8742
+ );
8743
+ body = patchFetchContent + "\n" + mainAppFileContent;
8744
+ } else {
8745
+ body = (0, import_node_fs3.createReadStream)(path);
8746
+ }
8737
8747
  return {
8738
- Body: (0, import_node_fs3.createReadStream)(path),
8748
+ Body: body,
8739
8749
  Bucket: destinationBucketName,
8740
8750
  ContentType: contentType,
8741
8751
  Key: key
@@ -8771,12 +8781,12 @@ var handler = async (event, context) => {
8771
8781
  try {
8772
8782
  const props = event.ResourceProperties;
8773
8783
  if (event.RequestType === "Create" || event.RequestType === "Update") {
8774
- const { actions } = props;
8784
+ const { actions, nextjsType } = props;
8775
8785
  for (const action of actions) {
8776
8786
  if (action.type === "fs-to-fs") {
8777
8787
  fsToFs(action);
8778
8788
  } else if (action.type === "fs-to-s3") {
8779
- await fsToS3(action);
8789
+ await fsToS3(action, nextjsType);
8780
8790
  } else if (action.type === "prune-s3") {
8781
8791
  await pruneS3(action);
8782
8792
  }
@@ -8799,13 +8809,13 @@ var handler = async (event, context) => {
8799
8809
  }
8800
8810
  };
8801
8811
  function initImageCache(imageCachePath) {
8802
- if (imageCachePath && !(0, import_fs.existsSync)(imageCachePath)) {
8803
- (0, import_fs.mkdirSync)(imageCachePath);
8812
+ if (imageCachePath && !(0, import_node_fs4.existsSync)(imageCachePath)) {
8813
+ (0, import_node_fs4.mkdirSync)(imageCachePath);
8804
8814
  }
8805
8815
  }
8806
8816
  function getPreviewModeId(prerenderManifestPath) {
8807
8817
  const prerenderManifest = JSON.parse(
8808
- (0, import_fs.readFileSync)(prerenderManifestPath, { encoding: "utf-8" })
8818
+ (0, import_node_fs4.readFileSync)(prerenderManifestPath, { encoding: "utf-8" })
8809
8819
  );
8810
8820
  return prerenderManifest.preview.previewModeId;
8811
8821
  }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var p=Object.defineProperty;var f=(n,e,t)=>e in n?p(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var c=(n,e,t)=>f(n,typeof e!="symbol"?e+"":e,t);async function d(n){let t=new TextEncoder().encode(n),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")}var a=window.fetch,u=window.XMLHttpRequest;window.fetch=async function(e,t){var h;if(!t)return a(e,t);let s=(h=t.method)==null?void 0:h.toUpperCase();if(s!=="PUT"&&s!=="POST"||(typeof e=="string"?new URL(e,window.location.href):new URL(e.url)).hostname!==window.location.hostname)return a(e,t);let r=t.body;if(r){let w=typeof r=="string"?r:JSON.stringify(r),l=await d(w),i=new Headers(t.headers);i.set("x-amz-content-sha256",l),t.headers=i}return a(e,t)};window.XMLHttpRequest=class extends u{constructor(){super();c(this,"method","");c(this,"url","");this.originalOpen=super.open,this.originalSend=super.send,super.open=(t,s,...o)=>{this.method=t.toUpperCase(),this.url=s,this.originalOpen.apply(this,[t,s,...o])},super.send=async t=>{if((this.method==="PUT"||this.method==="POST")&&new URL(this.url,window.location.href).hostname===window.location.hostname&&t){let s=typeof t=="string"?t:JSON.stringify(t),o=await d(s);this.setRequestHeader("x-amz-content-sha256",o)}this.originalSend.apply(this,[t])}}};})();
@@ -1,5 +1,17 @@
1
1
  # Breaking Changes
2
2
 
3
+ ## 0.2.0
4
+
5
+ - Removed Lambda@Edge Function from `NextjsGlobalFunctions`
6
+ - Updated `NextjsDistribution`'s dynamic origins to use `FunctionUrlOrigin.withOriginAccessControl` or `LoadBalancerV2Origin` removing generic `HttpOrigin`. This sets us up for `VpcOriginOAC` when released for `Nextjs...Containers` to improve security
7
+ - `NextjsDistributionOverrides.edgeFunctionProps` removed
8
+ - `NextjsDistributionOverrides.dynamicHttpOriginProps` removed
9
+ - `NextjsDistributionProps.dynamicUrl` removed
10
+ - `NextjsDistributionProps.functionArn` removed
11
+ - `NextjsDistributionProps.loadBalancer` required if containers
12
+ - `NextjsDistributionProps.functionUrl` required if functions
13
+ - `NextjsAssetsDeployment.nextjsType` required
14
+
3
15
  ## 0.1.0
4
16
 
5
17
  - Use `cloudfront.experimental.EdgeFunction` for SignFnUrl within `NextjsDistribution` resulting in "Error: stacks which use EdgeFunctions must have an explicitly set region" if you haven't explicitly set region.
@@ -1,4 +1,5 @@
1
1
  import type { aws_ec2, aws_efs, aws_lambda, aws_s3 } from 'aws-cdk-lib';
2
+ import type { NextjsType } from '../';
2
3
  /**
3
4
  * OptionalNextjsAssetsDeploymentProps
4
5
  */
@@ -21,6 +22,10 @@ export interface OptionalNextjsAssetsDeploymentProps {
21
22
  * @stability stable
22
23
  */
23
24
  readonly vpc?: aws_ec2.IVpc;
25
+ /**
26
+ * @stability stable
27
+ */
28
+ readonly nextjsType?: NextjsType;
24
29
  /**
25
30
  * @stability stable
26
31
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZWMyLCBhd3NfZWZzLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc0Fzc2V0c0RlcGxveW1lbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBmb3IgYE5leHRqc1R5cGUuR2xvYmFsRnVuY3Rpb25zYCBhbmQgYE5leHRqc1R5cGUuR2xvYmFsQ29udGFpbmVyc2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNBc3NldHNCdWNrZXQ/OiBhd3NfczMuQnVja2V0O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aFRvV29ya3NwYWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGF3c19lYzIuSVZwYztcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJJbWFnZUNvZGU/OiBhd3NfbGFtYmRhLkRvY2tlckltYWdlQ29kZTtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJNb3VudFBhdGhGb3JFZnM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZURpZ2VzdD86IHN0cmluZztcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NQb2ludD86IGF3c19lZnMuQWNjZXNzUG9pbnQ7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZWMyLCBhd3NfZWZzLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUgfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMge1xuICAvKipcbiAgICogUmVxdWlyZWQgZm9yIGBOZXh0anNUeXBlLkdsb2JhbEZ1bmN0aW9uc2AgYW5kIGBOZXh0anNUeXBlLkdsb2JhbENvbnRhaW5lcnNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzQnVja2V0PzogYXdzX3MzLkJ1Y2tldDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGhUb1dvcmtzcGFjZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBhd3NfZWMyLklWcGM7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dGpzVHlwZT86IE5leHRqc1R5cGU7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VySW1hZ2VDb2RlPzogYXdzX2xhbWJkYS5Eb2NrZXJJbWFnZUNvZGU7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyTW91bnRQYXRoRm9yRWZzPzogc3RyaW5nO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2VEaWdlc3Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzUG9pbnQ/OiBhd3NfZWZzLkFjY2Vzc1BvaW50O1xufVxuIl19
@@ -1,14 +1,19 @@
1
- import type { aws_certificatemanager, aws_cloudfront, aws_s3 } from 'aws-cdk-lib';
1
+ import type { aws_certificatemanager, aws_cloudfront, aws_elasticloadbalancingv2, aws_lambda, aws_s3 } from 'aws-cdk-lib';
2
2
  import type { NextjsType, PublicDirEntry } from '../';
3
3
  /**
4
4
  * OptionalNextjsDistributionProps
5
5
  */
6
6
  export interface OptionalNextjsDistributionProps {
7
+ /**
8
+ * Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`.
9
+ * @stability stable
10
+ */
11
+ readonly loadBalancer?: aws_elasticloadbalancingv2.ILoadBalancerV2;
7
12
  /**
8
13
  * Required if `NextjsType.GLOBAL_FUNCTIONS`.
9
14
  * @stability stable
10
15
  */
11
- readonly functionArn?: string;
16
+ readonly functionUrl?: aws_lambda.IFunctionUrl;
12
17
  /**
13
18
  * @stability stable
14
19
  */
@@ -31,11 +36,6 @@ export interface OptionalNextjsDistributionProps {
31
36
  * @stability stable
32
37
  */
33
38
  readonly nextjsType?: NextjsType;
34
- /**
35
- * Dynamic (Next.js server) URL to add behavior to distribution.
36
- * @stability stable
37
- */
38
- readonly dynamicUrl?: string;
39
39
  /**
40
40
  * Bucket containing static assets.
41
41
  * Must be provided if you want to serve static files.
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19zMyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgTmV4dGpzVHlwZSwgUHVibGljRGlyRW50cnkgfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Bcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogYXdzX2Nsb3VkZnJvbnQuRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogT3B0aW9uYWwgYnV0IG9ubHkgYXBwbGljYWJsZSBmb3IgYE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBhd3NfY2VydGlmaWNhdGVtYW5hZ2VyLklDZXJ0aWZpY2F0ZTtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBiYXNlUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZGlyZWN0b3J5IG9mIE5leHQuanMgYXBwJ3MgcHVibGljIGRpcmVjdG9yeS4gVXNlZCB0byBhZGQgc3RhdGljIGJlaGF2aW9ycyB0byBkaXN0cmlidXRpb24uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNEaXJFbnRyaWVzPzogQXJyYXk8UHVibGljRGlyRW50cnk+O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogRHluYW1pYyAoTmV4dC5qcyBzZXJ2ZXIpIFVSTCB0byBhZGQgYmVoYXZpb3IgdG8gZGlzdHJpYnV0aW9uLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZHluYW1pY1VybD86IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1Y2tldCBjb250YWluaW5nIHN0YXRpYyBhc3NldHMuXG4gICAqIE11c3QgYmUgcHJvdmlkZWQgaWYgeW91IHdhbnQgdG8gc2VydmUgc3RhdGljIGZpbGVzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5JTG9hZEJhbGFuY2VyVjI7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uVXJsPzogYXdzX2xhbWJkYS5JRnVuY3Rpb25Vcmw7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogYXdzX2Nsb3VkZnJvbnQuRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogT3B0aW9uYWwgYnV0IG9ubHkgYXBwbGljYWJsZSBmb3IgYE5leHRqc1R5cGUuR0xPQkFMX0NPTlRBSU5FUlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBhd3NfY2VydGlmaWNhdGVtYW5hZ2VyLklDZXJ0aWZpY2F0ZTtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBiYXNlUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gZGlyZWN0b3J5IG9mIE5leHQuanMgYXBwJ3MgcHVibGljIGRpcmVjdG9yeS4gVXNlZCB0byBhZGQgc3RhdGljIGJlaGF2aW9ycyB0byBkaXN0cmlidXRpb24uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNEaXJFbnRyaWVzPzogQXJyYXk8UHVibGljRGlyRW50cnk+O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogQnVja2V0IGNvbnRhaW5pbmcgc3RhdGljIGFzc2V0cy5cbiAgICogTXVzdCBiZSBwcm92aWRlZCBpZiB5b3Ugd2FudCB0byBzZXJ2ZSBzdGF0aWMgZmlsZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhc3NldHNCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handler = void 0;
4
- const fs_1 = require("fs");
4
+ const node_fs_1 = require("node:fs");
5
5
  const fs_to_fs_1 = require("./fs-to-fs");
6
6
  const fs_to_s3_1 = require("./fs-to-s3");
7
7
  const prune_s3_1 = require("./prune-s3");
@@ -9,17 +9,21 @@ const utils_1 = require("./utils");
9
9
  const handler = async (event, context) => {
10
10
  (0, utils_1.debug)({ event });
11
11
  let responseStatus = utils_1.CfnResponseStatus.Failed;
12
+ /**
13
+ * Related to [Draft Mode](https://nextjs.org/docs/app/building-your-application/configuring/draft-mode)
14
+ * and required for `NextjsRevalidation` to do [on-demand revalidation](https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath)
15
+ */
12
16
  let previewModeId = "";
13
17
  try {
14
18
  const props = event.ResourceProperties;
15
19
  if (event.RequestType === "Create" || event.RequestType === "Update") {
16
- const { actions } = props;
20
+ const { actions, nextjsType } = props;
17
21
  for (const action of actions) {
18
22
  if (action.type === "fs-to-fs") {
19
23
  (0, fs_to_fs_1.fsToFs)(action);
20
24
  }
21
25
  else if (action.type === "fs-to-s3") {
22
- await (0, fs_to_s3_1.fsToS3)(action);
26
+ await (0, fs_to_s3_1.fsToS3)(action, nextjsType);
23
27
  }
24
28
  else if (action.type === "prune-s3") {
25
29
  await (0, prune_s3_1.pruneS3)(action);
@@ -46,10 +50,14 @@ const handler = async (event, context) => {
46
50
  }
47
51
  };
48
52
  exports.handler = handler;
53
+ /**
54
+ * On first deployment there is no directory for images to be optimized into by
55
+ * Next.js so this creates directory for those images. Only runs once.
56
+ * This is unlike other cache directories which are created at build time.
57
+ */
49
58
  function initImageCache(imageCachePath) {
50
- if (imageCachePath && !(0, fs_1.existsSync)(imageCachePath)) {
51
- // only runs first time
52
- (0, fs_1.mkdirSync)(imageCachePath);
59
+ if (imageCachePath && !(0, node_fs_1.existsSync)(imageCachePath)) {
60
+ (0, node_fs_1.mkdirSync)(imageCachePath);
53
61
  }
54
62
  }
55
63
  /**
@@ -57,7 +65,7 @@ function initImageCache(imageCachePath) {
57
65
  * so we do it each time.
58
66
  */
59
67
  function getPreviewModeId(prerenderManifestPath) {
60
- const prerenderManifest = JSON.parse((0, fs_1.readFileSync)(prerenderManifestPath, { encoding: "utf-8" }));
68
+ const prerenderManifest = JSON.parse((0, node_fs_1.readFileSync)(prerenderManifestPath, { encoding: "utf-8" }));
61
69
  return prerenderManifest.preview.previewModeId;
62
70
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYXNzZXRzLWRlcGxveW1lbnQvYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUF5RDtBQUV6RCx5Q0FBb0M7QUFDcEMseUNBQW9DO0FBQ3BDLHlDQUFxQztBQUNyQyxtQ0FBZ0U7QUFPekQsTUFBTSxPQUFPLEdBQXdDLEtBQUssRUFDL0QsS0FBSyxFQUNMLE9BQU8sRUFDUCxFQUFFO0lBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLElBQUksY0FBYyxHQUFHLHlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUM5QyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFtQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzdCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0IsSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqQixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxJQUFBLGlCQUFNLEVBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN0QyxNQUFNLElBQUEsa0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7WUFDRCxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM5RCxjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxHQUFHLHlCQUFpQixDQUFDLE9BQU8sQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxJQUFBLG1CQUFXLEVBQUM7WUFDaEIsS0FBSztZQUNMLE9BQU87WUFDUCxjQUFjO1lBQ2QsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUM7QUFwQ1csUUFBQSxPQUFPLFdBb0NsQjtBQUVGLFNBQVMsY0FBYyxDQUFDLGNBQXNCO0lBQzVDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNsRCx1QkFBdUI7UUFDdkIsSUFBQSxjQUFTLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLHFCQUE2QjtJQUNyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQ2xDLElBQUEsaUJBQVksRUFBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUMzRCxDQUFDO0lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBmc1RvRnMgfSBmcm9tIFwiLi9mcy10by1mc1wiO1xuaW1wb3J0IHsgZnNUb1MzIH0gZnJvbSBcIi4vZnMtdG8tczNcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgY2ZuUmVzcG9uc2UsIENmblJlc3BvbnNlU3RhdHVzLCBkZWJ1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzICYge1xuICBTZXJ2aWNlVG9rZW46IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQsXG4gIGNvbnRleHQsXG4pID0+IHtcbiAgZGVidWcoeyBldmVudCB9KTtcbiAgbGV0IHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuRmFpbGVkO1xuICBsZXQgcHJldmlld01vZGVJZCA9IFwiXCI7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVzb3VyY2VQcm9wcztcbiAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiQ3JlYXRlXCIgfHwgZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiVXBkYXRlXCIpIHtcbiAgICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcHJvcHM7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gXCJmcy10by1mc1wiKSB7XG4gICAgICAgICAgZnNUb0ZzKGFjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnR5cGUgPT09IFwiZnMtdG8tczNcIikge1xuICAgICAgICAgIGF3YWl0IGZzVG9TMyhhY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSBcInBydW5lLXMzXCIpIHtcbiAgICAgICAgICBhd2FpdCBwcnVuZVMzKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGluaXRJbWFnZUNhY2hlKHByb3BzLmltYWdlQ2FjaGVQYXRoKTtcbiAgICAgIHByZXZpZXdNb2RlSWQgPSBnZXRQcmV2aWV3TW9kZUlkKHByb3BzLnByZXJlbmRlck1hbmlmZXN0UGF0aCk7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBjZm5SZXNwb25zZSh7XG4gICAgICBldmVudCxcbiAgICAgIGNvbnRleHQsXG4gICAgICByZXNwb25zZVN0YXR1cyxcbiAgICAgIHJlc3BvbnNlRGF0YTogeyBwcmV2aWV3TW9kZUlkIH0sXG4gICAgfSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGluaXRJbWFnZUNhY2hlKGltYWdlQ2FjaGVQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKGltYWdlQ2FjaGVQYXRoICYmICFleGlzdHNTeW5jKGltYWdlQ2FjaGVQYXRoKSkge1xuICAgIC8vIG9ubHkgcnVucyBmaXJzdCB0aW1lXG4gICAgbWtkaXJTeW5jKGltYWdlQ2FjaGVQYXRoKTtcbiAgfVxufVxuXG4vKipcbiAqIE9ubHkgbmVlZCBwcmV2aWV3IG1vZGUgaWQgZm9yIGBOZXh0anNHbG9iYWxGdW5jdGlvbnNgLCBidXQgZWFzeSB0byBnZXRcbiAqIHNvIHdlIGRvIGl0IGVhY2ggdGltZS5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJldmlld01vZGVJZChwcmVyZW5kZXJNYW5pZmVzdFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHByZXJlbmRlck1hbmlmZXN0ID0gSlNPTi5wYXJzZShcbiAgICByZWFkRmlsZVN5bmMocHJlcmVuZGVyTWFuaWZlc3RQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSksXG4gICk7XG4gIHJldHVybiBwcmVyZW5kZXJNYW5pZmVzdC5wcmV2aWV3LnByZXZpZXdNb2RlSWQ7XG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYXNzZXRzLWRlcGxveW1lbnQvYXNzZXRzLWRlcGxveW1lbnQubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUE4RDtBQUU5RCx5Q0FBb0M7QUFDcEMseUNBQW9DO0FBQ3BDLHlDQUFxQztBQUNyQyxtQ0FBZ0U7QUFPekQsTUFBTSxPQUFPLEdBQXdDLEtBQUssRUFDL0QsS0FBSyxFQUNMLE9BQU8sRUFDUCxFQUFFO0lBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLElBQUksY0FBYyxHQUFHLHlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUM5Qzs7O09BR0c7SUFDSCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFtQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUN0QyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9CLElBQUEsaUJBQU0sRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDakIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sSUFBQSxpQkFBTSxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sSUFBQSxrQkFBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUNELGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlELGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUU7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQztBQXhDVyxRQUFBLE9BQU8sV0F3Q2xCO0FBRUY7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLGNBQXNCO0lBQzVDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBQSxvQkFBVSxFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDbEQsSUFBQSxtQkFBUyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxxQkFBNkI7SUFDckQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNsQyxJQUFBLHNCQUFZLEVBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FDM0QsQ0FBQztJQUNGLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBmc1RvRnMgfSBmcm9tIFwiLi9mcy10by1mc1wiO1xuaW1wb3J0IHsgZnNUb1MzIH0gZnJvbSBcIi4vZnMtdG8tczNcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgY2ZuUmVzcG9uc2UsIENmblJlc3BvbnNlU3RhdHVzLCBkZWJ1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzICYge1xuICBTZXJ2aWNlVG9rZW46IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQsXG4gIGNvbnRleHQsXG4pID0+IHtcbiAgZGVidWcoeyBldmVudCB9KTtcbiAgbGV0IHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuRmFpbGVkO1xuICAvKipcbiAgICogUmVsYXRlZCB0byBbRHJhZnQgTW9kZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vY29uZmlndXJpbmcvZHJhZnQtbW9kZSlcbiAgICogYW5kIHJlcXVpcmVkIGZvciBgTmV4dGpzUmV2YWxpZGF0aW9uYCB0byBkbyBbb24tZGVtYW5kIHJldmFsaWRhdGlvbl0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9pbmNyZW1lbnRhbC1zdGF0aWMtcmVnZW5lcmF0aW9uI29uLWRlbWFuZC1yZXZhbGlkYXRpb24td2l0aC1yZXZhbGlkYXRlcGF0aClcbiAgICovXG4gIGxldCBwcmV2aWV3TW9kZUlkID0gXCJcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3QgeyBhY3Rpb25zLCBuZXh0anNUeXBlIH0gPSBwcm9wcztcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBcImZzLXRvLWZzXCIpIHtcbiAgICAgICAgICBmc1RvRnMoYWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gXCJmcy10by1zM1wiKSB7XG4gICAgICAgICAgYXdhaXQgZnNUb1MzKGFjdGlvbiwgbmV4dGpzVHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnR5cGUgPT09IFwicHJ1bmUtczNcIikge1xuICAgICAgICAgIGF3YWl0IHBydW5lUzMoYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5pdEltYWdlQ2FjaGUocHJvcHMuaW1hZ2VDYWNoZVBhdGgpO1xuICAgICAgcHJldmlld01vZGVJZCA9IGdldFByZXZpZXdNb2RlSWQocHJvcHMucHJlcmVuZGVyTWFuaWZlc3RQYXRoKTtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGNmblJlc3BvbnNlKHtcbiAgICAgIGV2ZW50LFxuICAgICAgY29udGV4dCxcbiAgICAgIHJlc3BvbnNlU3RhdHVzLFxuICAgICAgcmVzcG9uc2VEYXRhOiB7IHByZXZpZXdNb2RlSWQgfSxcbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBPbiBmaXJzdCBkZXBsb3ltZW50IHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBmb3IgaW1hZ2VzIHRvIGJlIG9wdGltaXplZCBpbnRvIGJ5XG4gKiBOZXh0LmpzIHNvIHRoaXMgY3JlYXRlcyBkaXJlY3RvcnkgZm9yIHRob3NlIGltYWdlcy4gT25seSBydW5zIG9uY2UuXG4gKiBUaGlzIGlzIHVubGlrZSBvdGhlciBjYWNoZSBkaXJlY3RvcmllcyB3aGljaCBhcmUgY3JlYXRlZCBhdCBidWlsZCB0aW1lLlxuICovXG5mdW5jdGlvbiBpbml0SW1hZ2VDYWNoZShpbWFnZUNhY2hlUGF0aDogc3RyaW5nKSB7XG4gIGlmIChpbWFnZUNhY2hlUGF0aCAmJiAhZXhpc3RzU3luYyhpbWFnZUNhY2hlUGF0aCkpIHtcbiAgICBta2RpclN5bmMoaW1hZ2VDYWNoZVBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogT25seSBuZWVkIHByZXZpZXcgbW9kZSBpZCBmb3IgYE5leHRqc0dsb2JhbEZ1bmN0aW9uc2AsIGJ1dCBlYXN5IHRvIGdldFxuICogc28gd2UgZG8gaXQgZWFjaCB0aW1lLlxuICovXG5mdW5jdGlvbiBnZXRQcmV2aWV3TW9kZUlkKHByZXJlbmRlck1hbmlmZXN0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcHJlcmVuZGVyTWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgIHJlYWRGaWxlU3luYyhwcmVyZW5kZXJNYW5pZmVzdFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgKTtcbiAgcmV0dXJuIHByZXJlbmRlck1hbmlmZXN0LnByZXZpZXcucHJldmlld01vZGVJZDtcbn1cbiJdfQ==
@@ -1,2 +1,13 @@
1
+ import { NextjsType } from "../../common";
1
2
  import type { FsToS3Action } from "../../nextjs-assets-deployment";
2
- export declare function fsToS3(props: FsToS3Action): Promise<void>;
3
+ export declare function fsToS3(props: FsToS3Action, nextjsType?: NextjsType): Promise<void>;
4
+ interface CreateS3KeyProps {
5
+ keyPrefix?: string;
6
+ path: string;
7
+ basePath: string;
8
+ }
9
+ /**
10
+ * Create S3 Key given local path
11
+ */
12
+ export declare function createS3Key({ keyPrefix, path, basePath }: CreateS3KeyProps): string;
13
+ export {};
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fsToS3 = fsToS3;
4
+ exports.createS3Key = createS3Key;
4
5
  const node_fs_1 = require("node:fs");
5
6
  const node_path_1 = require("node:path");
6
7
  // eslint-disable-next-line import/no-extraneous-dependencies
@@ -10,7 +11,8 @@ const mime = require("mime-types");
10
11
  const common_1 = require("./common");
11
12
  const s3_1 = require("./s3");
12
13
  const utils_1 = require("./utils");
13
- async function fsToS3(props) {
14
+ const common_2 = require("../../common");
15
+ async function fsToS3(props, nextjsType) {
14
16
  const { destinationBucketName, destinationKeyPrefix, sourcePath } = props;
15
17
  const sourceFilePaths = (0, common_1.listFilePaths)(sourcePath);
16
18
  for await (const filePathChunk of (0, common_1.chunkArray)(sourceFilePaths, 100)) {
@@ -21,8 +23,19 @@ async function fsToS3(props) {
21
23
  path,
22
24
  basePath: sourcePath,
23
25
  });
26
+ let body;
27
+ if (path.includes(".next/static/chunks/main-app-") &&
28
+ nextjsType === common_2.NextjsType.GLOBAL_FUNCTIONS) {
29
+ // see src/lambdas/asset-deployment/patch-fetch.js for why this is needed
30
+ const mainAppFileContent = (0, node_fs_1.readFileSync)(path);
31
+ const patchFetchContent = (0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "patch-fetch.js"));
32
+ body = patchFetchContent + "\n" + mainAppFileContent;
33
+ }
34
+ else {
35
+ body = (0, node_fs_1.createReadStream)(path);
36
+ }
24
37
  return {
25
- Body: (0, node_fs_1.createReadStream)(path),
38
+ Body: body,
26
39
  Bucket: destinationBucketName,
27
40
  ContentType: contentType,
28
41
  Key: key,
@@ -42,4 +55,4 @@ function createS3Key({ keyPrefix, path, basePath }) {
42
55
  objectKeyParts.push((0, node_path_1.relative)(basePath, path));
43
56
  return (0, node_path_1.join)(...objectKeyParts);
44
57
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdG8tczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9mcy10by1zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLHdCQTJCQztBQXhDRCxxQ0FBMkM7QUFDM0MseUNBQTJDO0FBRzNDLDZEQUE2RDtBQUM3RCxzREFBOEM7QUFDOUMsNkRBQTZEO0FBQzdELG1DQUFtQztBQUNuQyxxQ0FBcUQ7QUFDckQsNkJBQTBCO0FBQzFCLG1DQUFnQztBQUd6QixLQUFLLFVBQVUsTUFBTSxDQUFDLEtBQW1CO0lBQzlDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDMUUsTUFBTSxlQUFlLEdBQUcsSUFBQSxzQkFBYSxFQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELElBQUksS0FBSyxFQUFFLE1BQU0sYUFBYSxJQUFJLElBQUEsbUJBQVUsRUFBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLGVBQWUsR0FBNEIsYUFBYSxDQUFDLEdBQUcsQ0FDaEUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO1lBQ25ELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQztnQkFDdEIsU0FBUyxFQUFFLG9CQUFvQjtnQkFDL0IsSUFBSTtnQkFDSixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQUM7WUFDSCxPQUFPO2dCQUNMLElBQUksRUFBRSxJQUFBLDBCQUFnQixFQUFDLElBQUksQ0FBQztnQkFDNUIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLEdBQUcsRUFBRSxHQUFHO2FBQ1QsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxvQkFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDakQsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFPRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW9CO0lBQ2xFLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUNwQyxJQUFJLFNBQVM7UUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBQSxvQkFBUSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sSUFBQSxnQkFBSSxFQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kSW5wdXQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IGNodW5rQXJyYXksIGxpc3RGaWxlUGF0aHMgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHMzIH0gZnJvbSBcIi4vczNcIjtcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgRnNUb1MzQWN0aW9uIH0gZnJvbSBcIi4uLy4uL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZnNUb1MzKHByb3BzOiBGc1RvUzNBY3Rpb24pIHtcbiAgY29uc3QgeyBkZXN0aW5hdGlvbkJ1Y2tldE5hbWUsIGRlc3RpbmF0aW9uS2V5UHJlZml4LCBzb3VyY2VQYXRoIH0gPSBwcm9wcztcbiAgY29uc3Qgc291cmNlRmlsZVBhdGhzID0gbGlzdEZpbGVQYXRocyhzb3VyY2VQYXRoKTtcbiAgZm9yIGF3YWl0IChjb25zdCBmaWxlUGF0aENodW5rIG9mIGNodW5rQXJyYXkoc291cmNlRmlsZVBhdGhzLCAxMDApKSB7XG4gICAgY29uc3QgcHV0T2JqZWN0SW5wdXRzOiBQdXRPYmplY3RDb21tYW5kSW5wdXRbXSA9IGZpbGVQYXRoQ2h1bmsubWFwKFxuICAgICAgKHBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cChwYXRoKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGtleSA9IGNyZWF0ZVMzS2V5KHtcbiAgICAgICAgICBrZXlQcmVmaXg6IGRlc3RpbmF0aW9uS2V5UHJlZml4LFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgYmFzZVBhdGg6IHNvdXJjZVBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIEJvZHk6IGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCksXG4gICAgICAgICAgQnVja2V0OiBkZXN0aW5hdGlvbkJ1Y2tldE5hbWUsXG4gICAgICAgICAgQ29udGVudFR5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgIEtleToga2V5LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApO1xuICAgIGRlYnVnKHsgcHV0T2JqZWN0SW5wdXRzIH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHV0T2JqZWN0SW5wdXRzLm1hcCgoaW5wdXQpID0+XG4gICAgICAgIG5ldyBVcGxvYWQoeyBjbGllbnQ6IHMzLCBwYXJhbXM6IGlucHV0IH0pLmRvbmUoKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ3JlYXRlUzNLZXlQcm9wcyB7XG4gIGtleVByZWZpeD86IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBiYXNlUGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBDcmVhdGUgUzMgS2V5IGdpdmVuIGxvY2FsIHBhdGhcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUzNLZXkoeyBrZXlQcmVmaXgsIHBhdGgsIGJhc2VQYXRoIH06IENyZWF0ZVMzS2V5UHJvcHMpIHtcbiAgY29uc3Qgb2JqZWN0S2V5UGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmIChrZXlQcmVmaXgpIG9iamVjdEtleVBhcnRzLnB1c2goa2V5UHJlZml4KTtcbiAgb2JqZWN0S2V5UGFydHMucHVzaChyZWxhdGl2ZShiYXNlUGF0aCwgcGF0aCkpO1xuICByZXR1cm4gam9pbiguLi5vYmplY3RLZXlQYXJ0cyk7XG59XG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdG8tczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9mcy10by1zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLHdCQXlDQztBQVVELGtDQUtDO0FBdEVELHFDQUFxRTtBQUNyRSx5Q0FBMkM7QUFHM0MsNkRBQTZEO0FBQzdELHNEQUE4QztBQUM5Qyw2REFBNkQ7QUFDN0QsbUNBQW1DO0FBQ25DLHFDQUFxRDtBQUNyRCw2QkFBMEI7QUFDMUIsbUNBQWdDO0FBQ2hDLHlDQUEwQztBQUduQyxLQUFLLFVBQVUsTUFBTSxDQUFDLEtBQW1CLEVBQUUsVUFBdUI7SUFDdkUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUMxRSxNQUFNLGVBQWUsR0FBRyxJQUFBLHNCQUFhLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsSUFBSSxLQUFLLEVBQUUsTUFBTSxhQUFhLElBQUksSUFBQSxtQkFBVSxFQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sZUFBZSxHQUE0QixhQUFhLENBQUMsR0FBRyxDQUNoRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7WUFDbkQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDO2dCQUN0QixTQUFTLEVBQUUsb0JBQW9CO2dCQUMvQixJQUFJO2dCQUNKLFFBQVEsRUFBRSxVQUFVO2FBQ3JCLENBQUMsQ0FBQztZQUNILElBQUksSUFBeUIsQ0FBQztZQUM5QixJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7Z0JBQzlDLFVBQVUsS0FBSyxtQkFBVSxDQUFDLGdCQUFnQixFQUMxQyxDQUFDO2dCQUNELHlFQUF5RTtnQkFDekUsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHNCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSxzQkFBWSxFQUNwQyxJQUFBLGdCQUFJLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQ2xDLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLGlCQUFpQixHQUFHLElBQUksR0FBRyxrQkFBa0IsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLElBQUEsMEJBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLEdBQUcsRUFBRSxHQUFHO2FBQ1QsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBQSxhQUFLLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxvQkFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDakQsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFPRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFvQjtJQUN6RSxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsSUFBSSxTQUFTO1FBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUEsb0JBQVEsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUEsZ0JBQUksRUFBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCByZWFkRmlsZVN5bmMsIFJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kSW5wdXQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IGNodW5rQXJyYXksIGxpc3RGaWxlUGF0aHMgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHMzIH0gZnJvbSBcIi4vczNcIjtcbmltcG9ydCB7IGRlYnVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZzVG9TM0FjdGlvbiB9IGZyb20gXCIuLi8uLi9uZXh0anMtYXNzZXRzLWRlcGxveW1lbnRcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZzVG9TMyhwcm9wczogRnNUb1MzQWN0aW9uLCBuZXh0anNUeXBlPzogTmV4dGpzVHlwZSkge1xuICBjb25zdCB7IGRlc3RpbmF0aW9uQnVja2V0TmFtZSwgZGVzdGluYXRpb25LZXlQcmVmaXgsIHNvdXJjZVBhdGggfSA9IHByb3BzO1xuICBjb25zdCBzb3VyY2VGaWxlUGF0aHMgPSBsaXN0RmlsZVBhdGhzKHNvdXJjZVBhdGgpO1xuICBmb3IgYXdhaXQgKGNvbnN0IGZpbGVQYXRoQ2h1bmsgb2YgY2h1bmtBcnJheShzb3VyY2VGaWxlUGF0aHMsIDEwMCkpIHtcbiAgICBjb25zdCBwdXRPYmplY3RJbnB1dHM6IFB1dE9iamVjdENvbW1hbmRJbnB1dFtdID0gZmlsZVBhdGhDaHVuay5tYXAoXG4gICAgICAocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUubG9va3VwKHBhdGgpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qga2V5ID0gY3JlYXRlUzNLZXkoe1xuICAgICAgICAgIGtleVByZWZpeDogZGVzdGluYXRpb25LZXlQcmVmaXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBiYXNlUGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBib2R5OiBzdHJpbmcgfCBSZWFkU3RyZWFtO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGF0aC5pbmNsdWRlcyhcIi5uZXh0L3N0YXRpYy9jaHVua3MvbWFpbi1hcHAtXCIpICYmXG4gICAgICAgICAgbmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIHNlZSBzcmMvbGFtYmRhcy9hc3NldC1kZXBsb3ltZW50L3BhdGNoLWZldGNoLmpzIGZvciB3aHkgdGhpcyBpcyBuZWVkZWRcbiAgICAgICAgICBjb25zdCBtYWluQXBwRmlsZUNvbnRlbnQgPSByZWFkRmlsZVN5bmMocGF0aCk7XG4gICAgICAgICAgY29uc3QgcGF0Y2hGZXRjaENvbnRlbnQgPSByZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICBqb2luKF9fZGlybmFtZSwgXCJwYXRjaC1mZXRjaC5qc1wiKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJvZHkgPSBwYXRjaEZldGNoQ29udGVudCArIFwiXFxuXCIgKyBtYWluQXBwRmlsZUNvbnRlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keSA9IGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBCb2R5OiBib2R5LFxuICAgICAgICAgIEJ1Y2tldDogZGVzdGluYXRpb25CdWNrZXROYW1lLFxuICAgICAgICAgIENvbnRlbnRUeXBlOiBjb250ZW50VHlwZSxcbiAgICAgICAgICBLZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKTtcbiAgICBkZWJ1Zyh7IHB1dE9iamVjdElucHV0cyB9KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHB1dE9iamVjdElucHV0cy5tYXAoKGlucHV0KSA9PlxuICAgICAgICBuZXcgVXBsb2FkKHsgY2xpZW50OiBzMywgcGFyYW1zOiBpbnB1dCB9KS5kb25lKCksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENyZWF0ZVMzS2V5UHJvcHMge1xuICBrZXlQcmVmaXg/OiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgYmFzZVBhdGg6IHN0cmluZztcbn1cbi8qKlxuICogQ3JlYXRlIFMzIEtleSBnaXZlbiBsb2NhbCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTM0tleSh7IGtleVByZWZpeCwgcGF0aCwgYmFzZVBhdGggfTogQ3JlYXRlUzNLZXlQcm9wcykge1xuICBjb25zdCBvYmplY3RLZXlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgaWYgKGtleVByZWZpeCkgb2JqZWN0S2V5UGFydHMucHVzaChrZXlQcmVmaXgpO1xuICBvYmplY3RLZXlQYXJ0cy5wdXNoKHJlbGF0aXZlKGJhc2VQYXRoLCBwYXRoKSk7XG4gIHJldHVybiBqb2luKC4uLm9iamVjdEtleVBhcnRzKTtcbn1cbiJdfQ==
@@ -4,6 +4,7 @@ import { AccessPoint } from "aws-cdk-lib/aws-efs";
4
4
  import { DockerImageCode, DockerImageFunction } from "aws-cdk-lib/aws-lambda";
5
5
  import { Bucket } from "aws-cdk-lib/aws-s3";
6
6
  import { Construct } from "constructs";
7
+ import { NextjsType } from "./common";
7
8
  import { OptionalDockerImageFunctionProps } from "./generated-structs/OptionalDockerImageFunctionProps";
8
9
  import { NextjsBuild } from "./nextjs-build/nextjs-build";
9
10
  export interface NextjsAssetDeploymentOverrides {
@@ -15,15 +16,16 @@ export interface NextjsAssetsDeploymentProps {
15
16
  * @see {@link NextjsBuild.buildImageDigest}
16
17
  */
17
18
  readonly buildImageDigest: string;
19
+ /**
20
+ * @see {@link NextjsBuild.containerMountPathForEfs}
21
+ */
22
+ readonly containerMountPathForEfs: NextjsBuild["containerMountPathForEfs"];
18
23
  /**
19
24
  * @default true
20
25
  */
21
26
  readonly debug?: boolean;
22
27
  readonly dockerImageCode: DockerImageCode;
23
- /**
24
- * @see {@link NextjsBuild.containerMountPathForEfs}
25
- */
26
- readonly containerMountPathForEfs: NextjsBuild["containerMountPathForEfs"];
28
+ readonly nextjsType: NextjsType;
27
29
  readonly overrides?: NextjsAssetDeploymentOverrides;
28
30
  /**
29
31
  * @see {@link NextjsBaseProps.relativePathToWorkspace}
@@ -98,6 +100,7 @@ export interface CustomResourceProperties {
98
100
  buildImageDigest: string;
99
101
  imageCachePath: string;
100
102
  prerenderManifestPath: string;
103
+ nextjsType: NextjsType;
101
104
  }
102
105
  /**
103
106
  * Deploys static assets to S3 and cache assets to EFS in Lambda Custom Resource.