cdk-nextjs 0.4.2 → 0.4.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.
Files changed (42) hide show
  1. package/.jsii +1253 -732
  2. package/API.md +2458 -1108
  3. package/README.md +37 -5
  4. package/docs/cdk-nextjs-NextjsRegionalFunctions.png +0 -0
  5. package/docs/cdk-nextjs-cfn-exec-policy.json +27 -0
  6. package/docs/cdk-nextjs.drawio +71 -11
  7. package/lib/constants.d.ts +2 -1
  8. package/lib/constants.js +2 -1
  9. package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +1 -1
  10. package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
  11. package/lib/index.d.ts +3 -2
  12. package/lib/index.js +8 -2
  13. package/lib/nextjs-api.d.ts +71 -0
  14. package/lib/nextjs-api.js +173 -0
  15. package/lib/nextjs-assets-deployment.js +2 -2
  16. package/lib/nextjs-build/nextjs-build.d.ts +1 -1
  17. package/lib/nextjs-build/nextjs-build.js +2 -2
  18. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  19. package/lib/nextjs-compute/nextjs-functions.d.ts +3 -1
  20. package/lib/nextjs-compute/nextjs-functions.js +11 -10
  21. package/lib/nextjs-distribution.d.ts +2 -2
  22. package/lib/nextjs-distribution.js +2 -2
  23. package/lib/nextjs-file-system.js +1 -1
  24. package/lib/nextjs-post-deploy.js +1 -1
  25. package/lib/nextjs-static-assets.d.ts +0 -4
  26. package/lib/nextjs-static-assets.js +2 -2
  27. package/lib/nextjs-vpc.js +1 -1
  28. package/lib/root-constructs/nextjs-base-construct.d.ts +137 -0
  29. package/lib/root-constructs/nextjs-base-construct.js +112 -0
  30. package/lib/root-constructs/nextjs-global-containers.d.ts +5 -32
  31. package/lib/root-constructs/nextjs-global-containers.js +10 -83
  32. package/lib/root-constructs/nextjs-global-functions.d.ts +5 -32
  33. package/lib/root-constructs/nextjs-global-functions.js +12 -84
  34. package/lib/root-constructs/nextjs-regional-containers.d.ts +5 -21
  35. package/lib/root-constructs/nextjs-regional-containers.js +10 -71
  36. package/lib/root-constructs/nextjs-regional-functions.d.ts +37 -0
  37. package/lib/root-constructs/nextjs-regional-functions.js +58 -0
  38. package/package.json +1 -1
  39. package/lib/root-constructs/nextjs-base-overrides.d.ts +0 -30
  40. package/lib/root-constructs/nextjs-base-overrides.js +0 -3
  41. package/lib/root-constructs/nextjs-base-props.d.ts +0 -64
  42. package/lib/root-constructs/nextjs-base-props.js +0 -3
package/README.md CHANGED
@@ -75,13 +75,13 @@ See [examples/](./examples/) for more usage examples.
75
75
 
76
76
  ### `NextjsGlobalFunctions`
77
77
 
78
- 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))
78
+ 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))
79
79
 
80
80
  ![NextjsGlobalFunctions](./docs/cdk-nextjs-NextjsGlobalFunctions.png)
81
81
 
82
82
  ### `NextjsGlobalContainers`
83
83
 
84
- 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))
84
+ 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))
85
85
 
86
86
  ![NextjsGlobalContainers](./docs/cdk-nextjs-NextjsGlobalContainers.png)
87
87
 
@@ -91,6 +91,12 @@ Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest
91
91
 
92
92
  ![NextjsRegionalContainers](./docs/cdk-nextjs-NextjsRegionalContainers.png)
93
93
 
94
+ ### `NextjsRegionalFunctions`
95
+
96
+ Architecture includes [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) Functions to respond to dynamic requests and [API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.html) to regionally serve requests and distribute static assets. 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-functions.ts))
97
+
98
+ ![NextjsRegionalFunctions](./docs/cdk-nextjs-NextjsRegionalFunctions.png)
99
+
94
100
  ## Why
95
101
 
96
102
  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.
@@ -104,9 +110,11 @@ The simplest path to deploy Next.js is on [Vercel](https://vercel.com/) - the Pl
104
110
 
105
111
  ## Limitations
106
112
 
107
- - If using `NextjsGlobalFunctions` or `NextjsGlobalContainers` (which use CloudFront), the number of top level files/directories cannot exceed 25, the max number of behaviors a CloudFront Distrubtion supports. We recommend you put all of your public assets into one top level directory (i.e. public/static) so you don't reach this limit. See [CloudFront Quotas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html) for more information.
113
+ - If using `NextjsGlobalFunctions` or `NextjsGlobalContainers` (which use CloudFront), the number of top level files/directories cannot exceed 25, the max number of behaviors a CloudFront Distribution supports. We recommend you put all of your public assets into one top level directory (i.e. public/static) so you don't reach this limit. See [CloudFront Quotas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html) for more information.
108
114
  - If using `NextjsGlobalFunctions`, when [revalidating data in Next.js](https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#on-demand-revalidation) (i.e. [revalidatePath](https://nextjs.org/docs/app/api-reference/functions/revalidatePath)), the CloudFront Cache will still hold stale data. You'll need to use AWS SDK JS V3 [CreateInvalidationCommand](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cloudfront/Class/CreateInvalidationCommand/) to manually invalidate the path in CloudFront. See more [here](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html).
109
115
  - If using `NextjsGlobalFunctions`, setting an Authorization header won't work by default because of Lambda Function URL with IAM Auth is already using the Authorization header. You can use the `AWS_LWA_AUTHORIZATION_SOURCE` environment variable of [AWS Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter) to set an alternative Authorization header in the client which will then be set to the Authorization header when it reaches your app.
116
+ - `NextjsRegionalFunctions` doesn't support streaming because API Gateway doesn't support streaming yet.
117
+ - If using `NextjsRegionalFunctions` without a custom domain, API Gateway REST APIs require a [stage name](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-stages.html) (default: `/prod`) to be specified. This causes links to pages and static assets to break because they're not prefixed with the stage name. You can work around this issue by specifying [basePath](https://nextjs.org/docs/app/api-reference/config/next-config-js/basePath) in next.config.js as your stage name. Additionally, you'll need to add middleware logic to rewrite requests to include the stage name because API Gateway does not include the stage name in the path passed to Lambda. See [examples/app-playground/middleware.ts](./examples/app-playground/middleware.ts).
110
118
 
111
119
  ## Additional Security Recommendations
112
120
 
@@ -115,8 +123,8 @@ This construct by default implements all AWS security best practices that a CDK
115
123
  - [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html). See [examples/](./examples) for sample implementation.
116
124
  - [Scan ECR Images For Vulnerabilities](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html).
117
125
  - For `NextjsGlobalFunctions` and `NextjsGlobalContainers`, [CloudFront Access Logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html). See [examples/](./examples) for sample implementation.
118
- - For `NextjsGlobalContainers` and `NextjsRegionalContainers`, [ALB HTTPS Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
119
- - If using `NextjsGlobalContainers`, enable `ReadonlyRootFilesystem`. This will remove ability to use Static On-Demand feature of Next.js so it's not enabled by default, but is recommended for security.
126
+ - For `NextjsGlobalContainers` and `NextjsRegionalContainers`, use [ALB HTTPS Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
127
+ - If using `NextjsGlobalContainers` and `NextjsRegionalContainers`, enable `ReadonlyRootFilesystem`. This will remove ability to use Static On-Demand feature of Next.js so it's not enabled by default, but is recommended for security.
120
128
 
121
129
  ## Estimated Costs
122
130
 
@@ -191,6 +199,18 @@ More Details:
191
199
  | VPC | NAT Gateway, 2 AZs | $64.80 |
192
200
  | Total | | $138.07 |
193
201
 
202
+ ### NextjsRegionalFunctions
203
+
204
+ [AWS Pricing Calculator](https://calculator.aws/#/estimate?id=a6d21afbb983c7efa53da096aa608739da113247)
205
+
206
+ | Service | Monthly Usage | Estimated Monthly Cost (USD) |
207
+ | ----------- | ---------------------------------------------- | ---------------------------- |
208
+ | Lambda | 500K requests, 2 GB memory, 150ms avg duration | $0.00 (Always Free Tier) |
209
+ | API Gateway | 2M requests | $7.00 |
210
+ | EFS | 10 GB storage, 25/2.5 GB Read/Write Throughput | $4.05 |
211
+ | VPC | NAT Gateway, 2 AZs | $64.80 |
212
+ | Total | | $75.85 |
213
+
194
214
  ## Performance
195
215
 
196
216
  [Artillery Playwright](https://www.artillery.io/docs/reference/engines/playwright#overview) app playground example load tests results with 1K concurrent users. Reproduce with `pnpm test-fargate:lg` within `examples/load-tests`.
@@ -290,6 +310,15 @@ TODO
290
310
  TODO
291
311
  ```
292
312
 
313
+ ### NextjsRegionalFunctions
314
+
315
+ <details>
316
+ <summary>`NextjsRegionalFunctions` Performance Details</summary>
317
+
318
+ ```bash
319
+ TODO
320
+ ```
321
+
293
322
  </details>
294
323
 
295
324
  ## Contributing
@@ -336,6 +365,9 @@ A: `NextjsGlobalFunctionsProps.overrides.nextjsDistribution` allows you to custo
336
365
  Q: Why use container image for `NextjsGlobalFunctions`?<br />
337
366
  A: Read [The case for containers on Lambda (with benchmarks)](https://aaronstuyvenberg.com/posts/containers-on-lambda).
338
367
 
368
+ Q: How can I `cdk bootstrap --cloudformation-execution-policies ...` my AWS Account with limited permissions for cdk-nextjs to deploy?<br />
369
+ A: See [docs/cdk-nextjs-cfn-exec-policy.json](./docs/cdk-nextjs-cfn-exec-policy.json). Note, this IAM Policy is scoped to all cdk-nextjs constructs so you can remove services if you know the construct you're using doesn't use that service.
370
+
339
371
  ## Acknowledgements
340
372
 
341
373
  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).
@@ -0,0 +1,27 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "CfnExecCdkNextjs",
6
+ "Effect": "Allow",
7
+ "Action": [
8
+ "apigateway:*",
9
+ "application-autoscaling:*",
10
+ "cloudformation:*",
11
+ "cloudfront:*",
12
+ "cloudwatch:*",
13
+ "ecs:*",
14
+ "ec2:*",
15
+ "elasticfilesystem:*",
16
+ "elasticloadbalancing:*",
17
+ "iam:*",
18
+ "lambda:*",
19
+ "logs:*",
20
+ "s3:*",
21
+ "servicediscovery:*",
22
+ "ssm:*"
23
+ ],
24
+ "Resource": ["*"]
25
+ }
26
+ ]
27
+ }
@@ -1,4 +1,4 @@
1
- <mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.9 Chrome/134.0.6998.205 Electron/35.4.0 Safari/537.36" version="27.0.9" pages="3">
1
+ <mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.9 Chrome/134.0.6998.205 Electron/35.4.0 Safari/537.36" version="27.0.9" pages="4">
2
2
  <diagram name="NextjsGlobalFunctions" id="VdQA3LVE7DweftUdzD3P">
3
3
  <mxGraphModel dx="1634" dy="1998" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
4
4
  <root>
@@ -132,37 +132,97 @@
132
132
  <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-11" value="User" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.user;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
133
133
  <mxGeometry x="-155" y="214" width="78" height="78" as="geometry" />
134
134
  </mxCell>
135
- <mxCell id="BQkD81zyo4f87xUlEk-l-0" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
135
+ <mxCell id="BQkD81zyo4f87xUlEk-l-0" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
136
136
  <mxGeometry x="-24.5" y="138" width="503" height="318" as="geometry" />
137
137
  </mxCell>
138
- <mxCell id="BQkD81zyo4f87xUlEk-l-1" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
138
+ <mxCell id="BQkD81zyo4f87xUlEk-l-1" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
139
139
  <mxGeometry x="156.5" y="168" width="312" height="281" as="geometry" />
140
140
  </mxCell>
141
- <mxCell id="BQkD81zyo4f87xUlEk-l-2" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
141
+ <mxCell id="BQkD81zyo4f87xUlEk-l-2" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
142
142
  <mxGeometry x="-19.5" y="168" width="164" height="281" as="geometry" />
143
143
  </mxCell>
144
- <mxCell id="BQkD81zyo4f87xUlEk-l-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-4" target="BQkD81zyo4f87xUlEk-l-5">
144
+ <mxCell id="BQkD81zyo4f87xUlEk-l-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-4" target="BQkD81zyo4f87xUlEk-l-5" edge="1">
145
145
  <mxGeometry relative="1" as="geometry" />
146
146
  </mxCell>
147
- <mxCell id="BQkD81zyo4f87xUlEk-l-4" value="AWS Fargate&lt;div&gt;Next.js Server&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
147
+ <mxCell id="BQkD81zyo4f87xUlEk-l-4" value="AWS Fargate&lt;div&gt;Next.js Server&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
148
148
  <mxGeometry x="205.5" y="263" width="78" height="78" as="geometry" />
149
149
  </mxCell>
150
- <mxCell id="BQkD81zyo4f87xUlEk-l-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-5" target="ZM6Z_FSj9kd4RMqbAZD0-11">
150
+ <mxCell id="BQkD81zyo4f87xUlEk-l-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-5" target="ZM6Z_FSj9kd4RMqbAZD0-11" edge="1">
151
151
  <mxGeometry relative="1" as="geometry" />
152
152
  </mxCell>
153
- <mxCell id="BQkD81zyo4f87xUlEk-l-5" value="Application Load&lt;div&gt;Balancer&lt;/div&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
153
+ <mxCell id="BQkD81zyo4f87xUlEk-l-5" value="Application Load&lt;div&gt;Balancer&lt;/div&gt;" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
154
154
  <mxGeometry x="26.5" y="214" width="78" height="78" as="geometry" />
155
155
  </mxCell>
156
- <mxCell id="BQkD81zyo4f87xUlEk-l-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-6" target="BQkD81zyo4f87xUlEk-l-4">
156
+ <mxCell id="BQkD81zyo4f87xUlEk-l-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-6" target="BQkD81zyo4f87xUlEk-l-4" edge="1">
157
157
  <mxGeometry relative="1" as="geometry" />
158
158
  </mxCell>
159
- <mxCell id="BQkD81zyo4f87xUlEk-l-6" value="Amazon EFS&lt;div&gt;Next.js Cache&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
159
+ <mxCell id="BQkD81zyo4f87xUlEk-l-6" value="Amazon EFS&lt;div&gt;Next.js Cache&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
160
160
  <mxGeometry x="354.5" y="263" width="78" height="78" as="geometry" />
161
161
  </mxCell>
162
- <mxCell id="BQkD81zyo4f87xUlEk-l-3" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" vertex="1" parent="ZM6Z_FSj9kd4RMqbAZD0-1">
162
+ <mxCell id="BQkD81zyo4f87xUlEk-l-3" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
163
163
  <mxGeometry x="26.5" y="341" width="78" height="78" as="geometry" />
164
164
  </mxCell>
165
165
  </root>
166
166
  </mxGraphModel>
167
167
  </diagram>
168
+ <diagram name="NextjsRegionalFunctions" id="9k_BY9TFF7wC6czyA1JQ">
169
+ <mxGraphModel dx="1634" dy="1998" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
170
+ <root>
171
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-0" />
172
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-1" parent="dAvX3k6xTMvLQ2_Hd7h_-0" />
173
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-2" value="AWS Account" style="sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;strokeColor=#AAB7B8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
174
+ <mxGeometry x="-50" y="-1131" width="742" height="464" as="geometry" />
175
+ </mxCell>
176
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-3" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
177
+ <mxGeometry x="378" y="-953" width="270" height="260" as="geometry" />
178
+ </mxCell>
179
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-4" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
180
+ <mxGeometry x="198" y="-983" width="459" height="295" as="geometry" />
181
+ </mxCell>
182
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-5" value="User" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.user;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
183
+ <mxGeometry x="-184" y="-972" width="78" height="78" as="geometry" />
184
+ </mxCell>
185
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-6" value="Static&lt;div&gt;Requests&lt;/div&gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-7" target="Iu0hWbrv-bcQxfW1xtsR-0">
186
+ <mxGeometry relative="1" as="geometry">
187
+ <mxPoint x="25" y="-972" as="targetPoint" />
188
+ </mxGeometry>
189
+ </mxCell>
190
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-7" value="Next.js Static&lt;div&gt;Assets Bucket&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
191
+ <mxGeometry x="97" y="-1081" width="78" height="78" as="geometry" />
192
+ </mxCell>
193
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-10" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
194
+ <mxGeometry x="209" y="-953" width="164" height="255" as="geometry" />
195
+ </mxCell>
196
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-12" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
197
+ <mxGeometry x="249" y="-864.5" width="78" height="78" as="geometry" />
198
+ </mxCell>
199
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-16" target="dAvX3k6xTMvLQ2_Hd7h_-15">
200
+ <mxGeometry relative="1" as="geometry" />
201
+ </mxCell>
202
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-15" value="AWS Lambda&lt;div&gt;Next.js Server&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
203
+ <mxGeometry x="392" y="-870" width="80" height="78" as="geometry" />
204
+ </mxCell>
205
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-16" value="Amazon EFS&lt;br&gt;Next.js Cache" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
206
+ <mxGeometry x="547" y="-870" width="80" height="78" as="geometry" />
207
+ </mxCell>
208
+ <mxCell id="dAvX3k6xTMvLQ2_Hd7h_-17" value="Dynamic&lt;div&gt;Requests&lt;/div&gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-15" target="Iu0hWbrv-bcQxfW1xtsR-0">
209
+ <mxGeometry relative="1" as="geometry">
210
+ <Array as="points">
211
+ <mxPoint x="432" y="-899" />
212
+ <mxPoint x="127" y="-899" />
213
+ <mxPoint x="127" y="-933" />
214
+ </Array>
215
+ <mxPoint x="128" y="-866" as="sourcePoint" />
216
+ <mxPoint x="64" y="-933" as="targetPoint" />
217
+ </mxGeometry>
218
+ </mxCell>
219
+ <mxCell id="Iu0hWbrv-bcQxfW1xtsR-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="Iu0hWbrv-bcQxfW1xtsR-0" target="dAvX3k6xTMvLQ2_Hd7h_-5">
220
+ <mxGeometry relative="1" as="geometry" />
221
+ </mxCell>
222
+ <mxCell id="Iu0hWbrv-bcQxfW1xtsR-0" value="API Gateway&lt;div&gt;REST API&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.api_gateway;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
223
+ <mxGeometry x="-14" y="-972" width="78" height="78" as="geometry" />
224
+ </mxCell>
225
+ </root>
226
+ </mxGraphModel>
227
+ </diagram>
168
228
  </mxfile>
@@ -1,7 +1,8 @@
1
1
  export declare enum NextjsType {
2
2
  GLOBAL_CONTAINERS = "GLOBAL_CONTAINERS",
3
3
  GLOBAL_FUNCTIONS = "GLOBAL_FUNCTIONS",
4
- REGIONAL_CONTAINERS = "REGIONAL_CONTAINERS"
4
+ REGIONAL_CONTAINERS = "REGIONAL_CONTAINERS",
5
+ REGIONAL_FUNCTIONS = "REGIONAL_FUNCTIONS"
5
6
  }
6
7
  /**
7
8
  * Mount path in container for EFS. Next.js image optimization, data, and full
package/lib/constants.js CHANGED
@@ -6,6 +6,7 @@ var NextjsType;
6
6
  NextjsType["GLOBAL_CONTAINERS"] = "GLOBAL_CONTAINERS";
7
7
  NextjsType["GLOBAL_FUNCTIONS"] = "GLOBAL_FUNCTIONS";
8
8
  NextjsType["REGIONAL_CONTAINERS"] = "REGIONAL_CONTAINERS";
9
+ NextjsType["REGIONAL_FUNCTIONS"] = "REGIONAL_FUNCTIONS";
9
10
  })(NextjsType || (exports.NextjsType = NextjsType = {}));
10
11
  /**
11
12
  * Mount path in container for EFS. Next.js image optimization, data, and full
@@ -35,4 +36,4 @@ exports.FULL_ROUTE_CACHE_PATH = `${exports.SERVER_DIST_PATH}/app`;
35
36
  exports.STATIC_PATH = ".next/static";
36
37
  exports.CDK_NEXTJS_SERVER_DIST_DIR_ENV_VAR_NAME = "CDK_NEXTJS_SERVER_DIST_DIR";
37
38
  exports.INJECT_CDK_NEXTJS_BUILD_ENV_VARS = "{{INJECT_CDK_NEXTJS_BUILD_ENV_VARS}}";
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIscURBQXVDLENBQUE7SUFDdkMsbURBQXFDLENBQUE7SUFDckMseURBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7QUFFNUMsaUZBQWlGO0FBQ3BFLFFBQUEsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQy9CLFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7QUFDbkMsUUFBQSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUM3QyxRQUFBLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLFFBQUEsbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBQ25DLFFBQUEsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0FBQ3JDLFFBQUEsaUNBQWlDLEdBQUcsMEJBQTBCLENBQUM7QUFFL0QsUUFBQSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQzNCLFFBQUEsZUFBZSxHQUFHLEdBQUcsa0JBQVUsY0FBYyxDQUFDO0FBQzlDLFFBQUEsZ0JBQWdCLEdBQUcsR0FBRyxrQkFBVSxTQUFTLENBQUM7QUFDMUMsUUFBQSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCLFFBQUEsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBQ2xDLFFBQUEscUJBQXFCLEdBQUcsR0FBRyx3QkFBZ0IsTUFBTSxDQUFDO0FBQ2xELFFBQUEsV0FBVyxHQUFHLGNBQWMsQ0FBQztBQUU3QixRQUFBLHVDQUF1QyxHQUNsRCw0QkFBNEIsQ0FBQztBQUVsQixRQUFBLGdDQUFnQyxHQUMzQyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5leHRqc1R5cGUge1xuICBHTE9CQUxfQ09OVEFJTkVSUyA9IFwiR0xPQkFMX0NPTlRBSU5FUlNcIixcbiAgR0xPQkFMX0ZVTkNUSU9OUyA9IFwiR0xPQkFMX0ZVTkNUSU9OU1wiLFxuICBSRUdJT05BTF9DT05UQUlORVJTID0gXCJSRUdJT05BTF9DT05UQUlORVJTXCIsXG59XG5cbi8qKlxuICogTW91bnQgcGF0aCBpbiBjb250YWluZXIgZm9yIEVGUy4gTmV4dC5qcyBpbWFnZSBvcHRpbWl6YXRpb24sIGRhdGEsIGFuZCBmdWxsXG4gKiByb3V0ZSBjYWNoZSB3aWxsIGJlIHN5bWxpbmtlZCB0byB0aGlzIGxvY2F0aW9uLlxuICpcbiAqIE11c3QgY29tcGx5IHdpdGggcGF0dGVybjogXi9tbnQvW2EtekEtWjAtOS1fLl0rJCBkdWUgdG8gbGFtYmRhIHJlcXVpcmVtZW50LlxuICogRmFyZ2F0ZSBkb2Vzbid0IGhhdmUgdGhpcyBzYW1lIHJlcXVpcmVtZW50IGJ1dCB3ZSBzaGFyZSBjb2RlIGZvciBsYW1iZGEgYW5kXG4gKiBmYXJnYXRlLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9hcGkvQVBJX0ZpbGVTeXN0ZW1Db25maWcuaHRtbFxuICovXG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSCA9IFwiL21udC9jZGstbmV4dGpzXCI7XG5cbi8vIE5PVEU6ICpfQVJHX05BTUUgY29uc3RhbnRzIGFyZSByZWZlcmVuY2VkIGluIERvY2tlcmZpbGVzIHNvIHRoZXkgY2FuIGJlIHJldXNlZFxuZXhwb3J0IGNvbnN0IEJVSUxEX0lEX0FSR19OQU1FID0gXCJCVUlMRF9JRFwiO1xuZXhwb3J0IGNvbnN0IEJVSUxERVJfSU1BR0VfQUxJQVNfQVJHX05BTUUgPSBcIkJVSUxERVJfSU1BR0VfQUxJQVNcIjtcbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIX0FSR19OQU1FID0gXCJDQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgREFUQV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJEQVRBX0NBQ0hFX1BBVEhcIjtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJJTUFHRV9DQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSF9BUkdfTkFNRSA9IFwiTU9VTlRfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19QQVRIX0FSR19OQU1FID0gXCJQVUJMSUNfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFJFTEFUSVZFX1BBVEhfVE9fUEFDS0FHRV9BUkdfTkFNRSA9IFwiUkVMQVRJVkVfUEFUSF9UT19QQUNLQUdFXCI7XG5cbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIID0gXCIubmV4dC9jYWNoZVwiO1xuZXhwb3J0IGNvbnN0IERBVEFfQ0FDSEVfUEFUSCA9IGAke0NBQ0hFX1BBVEh9L2ZldGNoLWNhY2hlYDtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIID0gYCR7Q0FDSEVfUEFUSH0vaW1hZ2VzYDtcbmV4cG9ydCBjb25zdCBQVUJMSUNfUEFUSCA9IFwicHVibGljXCI7XG5leHBvcnQgY29uc3QgU0VSVkVSX0RJU1RfUEFUSCA9IFwiLm5leHQvc2VydmVyXCI7XG5leHBvcnQgY29uc3QgRlVMTF9ST1VURV9DQUNIRV9QQVRIID0gYCR7U0VSVkVSX0RJU1RfUEFUSH0vYXBwYDtcbmV4cG9ydCBjb25zdCBTVEFUSUNfUEFUSCA9IFwiLm5leHQvc3RhdGljXCI7XG5cbmV4cG9ydCBjb25zdCBDREtfTkVYVEpTX1NFUlZFUl9ESVNUX0RJUl9FTlZfVkFSX05BTUUgPVxuICBcIkNES19ORVhUSlNfU0VSVkVSX0RJU1RfRElSXCI7XG5cbmV4cG9ydCBjb25zdCBJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSUyA9XG4gIFwie3tJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSU319XCI7XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIscURBQXVDLENBQUE7SUFDdkMsbURBQXFDLENBQUE7SUFDckMseURBQTJDLENBQUE7SUFDM0MsdURBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUxXLFVBQVUsMEJBQVYsVUFBVSxRQUtyQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7QUFFNUMsaUZBQWlGO0FBQ3BFLFFBQUEsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQy9CLFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7QUFDbkMsUUFBQSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUM3QyxRQUFBLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLFFBQUEsbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBQ25DLFFBQUEsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0FBQ3JDLFFBQUEsaUNBQWlDLEdBQUcsMEJBQTBCLENBQUM7QUFFL0QsUUFBQSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQzNCLFFBQUEsZUFBZSxHQUFHLEdBQUcsa0JBQVUsY0FBYyxDQUFDO0FBQzlDLFFBQUEsZ0JBQWdCLEdBQUcsR0FBRyxrQkFBVSxTQUFTLENBQUM7QUFDMUMsUUFBQSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCLFFBQUEsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBQ2xDLFFBQUEscUJBQXFCLEdBQUcsR0FBRyx3QkFBZ0IsTUFBTSxDQUFDO0FBQ2xELFFBQUEsV0FBVyxHQUFHLGNBQWMsQ0FBQztBQUU3QixRQUFBLHVDQUF1QyxHQUNsRCw0QkFBNEIsQ0FBQztBQUVsQixRQUFBLGdDQUFnQyxHQUMzQyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5leHRqc1R5cGUge1xuICBHTE9CQUxfQ09OVEFJTkVSUyA9IFwiR0xPQkFMX0NPTlRBSU5FUlNcIixcbiAgR0xPQkFMX0ZVTkNUSU9OUyA9IFwiR0xPQkFMX0ZVTkNUSU9OU1wiLFxuICBSRUdJT05BTF9DT05UQUlORVJTID0gXCJSRUdJT05BTF9DT05UQUlORVJTXCIsXG4gIFJFR0lPTkFMX0ZVTkNUSU9OUyA9IFwiUkVHSU9OQUxfRlVOQ1RJT05TXCIsXG59XG5cbi8qKlxuICogTW91bnQgcGF0aCBpbiBjb250YWluZXIgZm9yIEVGUy4gTmV4dC5qcyBpbWFnZSBvcHRpbWl6YXRpb24sIGRhdGEsIGFuZCBmdWxsXG4gKiByb3V0ZSBjYWNoZSB3aWxsIGJlIHN5bWxpbmtlZCB0byB0aGlzIGxvY2F0aW9uLlxuICpcbiAqIE11c3QgY29tcGx5IHdpdGggcGF0dGVybjogXi9tbnQvW2EtekEtWjAtOS1fLl0rJCBkdWUgdG8gbGFtYmRhIHJlcXVpcmVtZW50LlxuICogRmFyZ2F0ZSBkb2Vzbid0IGhhdmUgdGhpcyBzYW1lIHJlcXVpcmVtZW50IGJ1dCB3ZSBzaGFyZSBjb2RlIGZvciBsYW1iZGEgYW5kXG4gKiBmYXJnYXRlLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9hcGkvQVBJX0ZpbGVTeXN0ZW1Db25maWcuaHRtbFxuICovXG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSCA9IFwiL21udC9jZGstbmV4dGpzXCI7XG5cbi8vIE5PVEU6ICpfQVJHX05BTUUgY29uc3RhbnRzIGFyZSByZWZlcmVuY2VkIGluIERvY2tlcmZpbGVzIHNvIHRoZXkgY2FuIGJlIHJldXNlZFxuZXhwb3J0IGNvbnN0IEJVSUxEX0lEX0FSR19OQU1FID0gXCJCVUlMRF9JRFwiO1xuZXhwb3J0IGNvbnN0IEJVSUxERVJfSU1BR0VfQUxJQVNfQVJHX05BTUUgPSBcIkJVSUxERVJfSU1BR0VfQUxJQVNcIjtcbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIX0FSR19OQU1FID0gXCJDQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgREFUQV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJEQVRBX0NBQ0hFX1BBVEhcIjtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJJTUFHRV9DQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSF9BUkdfTkFNRSA9IFwiTU9VTlRfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19QQVRIX0FSR19OQU1FID0gXCJQVUJMSUNfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFJFTEFUSVZFX1BBVEhfVE9fUEFDS0FHRV9BUkdfTkFNRSA9IFwiUkVMQVRJVkVfUEFUSF9UT19QQUNLQUdFXCI7XG5cbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIID0gXCIubmV4dC9jYWNoZVwiO1xuZXhwb3J0IGNvbnN0IERBVEFfQ0FDSEVfUEFUSCA9IGAke0NBQ0hFX1BBVEh9L2ZldGNoLWNhY2hlYDtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIID0gYCR7Q0FDSEVfUEFUSH0vaW1hZ2VzYDtcbmV4cG9ydCBjb25zdCBQVUJMSUNfUEFUSCA9IFwicHVibGljXCI7XG5leHBvcnQgY29uc3QgU0VSVkVSX0RJU1RfUEFUSCA9IFwiLm5leHQvc2VydmVyXCI7XG5leHBvcnQgY29uc3QgRlVMTF9ST1VURV9DQUNIRV9QQVRIID0gYCR7U0VSVkVSX0RJU1RfUEFUSH0vYXBwYDtcbmV4cG9ydCBjb25zdCBTVEFUSUNfUEFUSCA9IFwiLm5leHQvc3RhdGljXCI7XG5cbmV4cG9ydCBjb25zdCBDREtfTkVYVEpTX1NFUlZFUl9ESVNUX0RJUl9FTlZfVkFSX05BTUUgPVxuICBcIkNES19ORVhUSlNfU0VSVkVSX0RJU1RfRElSXCI7XG5cbmV4cG9ydCBjb25zdCBJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSUyA9XG4gIFwie3tJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSU319XCI7XG4iXX0=
@@ -28,7 +28,7 @@ export interface OptionalNextjsDistributionProps {
28
28
  */
29
29
  readonly basePath?: string;
30
30
  /**
31
- * Path to directory of Next.js app's public directory. Used to add static behaviors to distribution.
31
+ * Entries (files/directories) within Next.js app's public directory. Used to add static behaviors to distribution.
32
32
  * @stability stable
33
33
  */
34
34
  readonly publicDirEntries?: Array<PublicDirEntry>;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBPcHRpb25hbCBidXQgb25seSBhcHBsaWNhYmxlIGZvciBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byBkaXJlY3Rvcnkgb2YgTmV4dC5qcyBhcHAncyBwdWJsaWMgZGlyZWN0b3J5LiBVc2VkIHRvIGFkZCBzdGF0aWMgYmVoYXZpb3JzIHRvIGRpc3RyaWJ1dGlvbi5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0RpckVudHJpZXM/OiBBcnJheTxQdWJsaWNEaXJFbnRyeT47XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dGpzVHlwZT86IE5leHRqc1R5cGU7XG4gIC8qKlxuICAgKiBCdWNrZXQgY29udGFpbmluZyBzdGF0aWMgYXNzZXRzLlxuICAgKiBNdXN0IGJlIHByb3ZpZGVkIGlmIHlvdSB3YW50IHRvIHNlcnZlIHN0YXRpYyBmaWxlcy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0c0J1Y2tldD86IGF3c19zMy5JQnVja2V0O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBPcHRpb25hbCBidXQgb25seSBhcHBsaWNhYmxlIGZvciBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogRW50cmllcyAoZmlsZXMvZGlyZWN0b3JpZXMpIHdpdGhpbiBOZXh0LmpzIGFwcCdzIHB1YmxpYyBkaXJlY3RvcnkuIFVzZWQgdG8gYWRkIHN0YXRpYyBiZWhhdmlvcnMgdG8gZGlzdHJpYnV0aW9uLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljRGlyRW50cmllcz86IEFycmF5PFB1YmxpY0RpckVudHJ5PjtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBuZXh0anNUeXBlPzogTmV4dGpzVHlwZTtcbiAgLyoqXG4gICAqIEJ1Y2tldCBjb250YWluaW5nIHN0YXRpYyBhc3NldHMuXG4gICAqIE11c3QgYmUgcHJvdmlkZWQgaWYgeW91IHdhbnQgdG8gc2VydmUgc3RhdGljIGZpbGVzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -1,16 +1,17 @@
1
1
  export { NextjsType } from "./constants";
2
+ export { NextjsApi, NextjsApiProps, NextjsApiOverrides } from "./nextjs-api";
2
3
  export { StaticAssetsCustomResourceProperties, NextjsAssetsDeployment, NextjsAssetDeploymentOverrides, NextjsAssetsDeploymentProps, } from "./nextjs-assets-deployment";
4
+ export { NextjsBaseConstructOverrides, NextjsBaseOverrides, NextjsBaseConstruct, NextjsBaseProps, NextjsBaseConstructProps, } from "./root-constructs/nextjs-base-construct";
3
5
  export { NextjsBuild, NextjsBuildProps, NextjsBuildOverrides, BuilderImageProps, PublicDirEntry, } from "./nextjs-build/nextjs-build";
4
6
  export { NextjsComputeBaseProps } from "./nextjs-compute/nextjs-compute-base-props";
5
7
  export { NextjsContainers, NextjsContainersOverrides, NextjsContainersProps, } from "./nextjs-compute/nextjs-containers";
6
8
  export { NextjsDistribution, NextjsDistributionOverrides, NextjsDistributionProps, } from "./nextjs-distribution";
7
9
  export { NextjsFunctions, NextjsFunctionsOverrides, NextjsFunctionsProps, } from "./nextjs-compute/nextjs-functions";
8
10
  export { NextjsFileSystem, NextjsFileSystemOverrides, NextjsFileSystemProps, AllowComputeProps, } from "./nextjs-file-system";
9
- export { BaseNextjsConstructOverrides, BaseNextjsOverrides, } from "./root-constructs/nextjs-base-overrides";
10
- export { NextjsBaseProps } from "./root-constructs/nextjs-base-props";
11
11
  export { NextjsGlobalContainers, NextjsGlobalContainersConstructOverrides, NextjsGlobalContainersOverrides, NextjsGlobalContainersProps, } from "./root-constructs/nextjs-global-containers";
12
12
  export { NextjsGlobalFunctions, NextjsGlobalFunctionsConstructOverrides, NextjsGlobalFunctionsOverrides, NextjsGlobalFunctionsProps, } from "./root-constructs/nextjs-global-functions";
13
13
  export { NextjsRegionalContainers, NextjsRegionalContainersConstructOverrides, NextjsRegionalContainersOverrides, NextjsRegionalContainersProps, } from "./root-constructs/nextjs-regional-containers";
14
+ export { NextjsRegionalFunctions, NextjsRegionalFunctionsConstructOverrides, NextjsRegionalFunctionsOverrides, NextjsRegionalFunctionsProps, } from "./root-constructs/nextjs-regional-functions";
14
15
  export { NextjsPostDeploy, NextjsPostDeployOverrides, NextjsPostDeployProps, PostDeployCustomResourceProperties, } from "./nextjs-post-deploy";
15
16
  export { NextjsStaticAssets, NextjsStaticAssetsOverrides, NextjsStaticAssetsProps, } from "./nextjs-static-assets";
16
17
  export { NextjsVpc, NextjsVpcOverrides, NextjsVpcProps } from "./nextjs-vpc";
package/lib/index.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NextjsVpc = exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsFileSystem = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsAssetsDeployment = exports.NextjsType = void 0;
3
+ exports.NextjsVpc = exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalFunctions = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsFileSystem = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsBaseConstruct = exports.NextjsAssetsDeployment = exports.NextjsApi = exports.NextjsType = void 0;
4
4
  var constants_1 = require("./constants");
5
5
  Object.defineProperty(exports, "NextjsType", { enumerable: true, get: function () { return constants_1.NextjsType; } });
6
+ var nextjs_api_1 = require("./nextjs-api");
7
+ Object.defineProperty(exports, "NextjsApi", { enumerable: true, get: function () { return nextjs_api_1.NextjsApi; } });
6
8
  var nextjs_assets_deployment_1 = require("./nextjs-assets-deployment");
7
9
  Object.defineProperty(exports, "NextjsAssetsDeployment", { enumerable: true, get: function () { return nextjs_assets_deployment_1.NextjsAssetsDeployment; } });
10
+ var nextjs_base_construct_1 = require("./root-constructs/nextjs-base-construct");
11
+ Object.defineProperty(exports, "NextjsBaseConstruct", { enumerable: true, get: function () { return nextjs_base_construct_1.NextjsBaseConstruct; } });
8
12
  var nextjs_build_1 = require("./nextjs-build/nextjs-build");
9
13
  Object.defineProperty(exports, "NextjsBuild", { enumerable: true, get: function () { return nextjs_build_1.NextjsBuild; } });
10
14
  var nextjs_containers_1 = require("./nextjs-compute/nextjs-containers");
@@ -21,10 +25,12 @@ var nextjs_global_functions_1 = require("./root-constructs/nextjs-global-functio
21
25
  Object.defineProperty(exports, "NextjsGlobalFunctions", { enumerable: true, get: function () { return nextjs_global_functions_1.NextjsGlobalFunctions; } });
22
26
  var nextjs_regional_containers_1 = require("./root-constructs/nextjs-regional-containers");
23
27
  Object.defineProperty(exports, "NextjsRegionalContainers", { enumerable: true, get: function () { return nextjs_regional_containers_1.NextjsRegionalContainers; } });
28
+ var nextjs_regional_functions_1 = require("./root-constructs/nextjs-regional-functions");
29
+ Object.defineProperty(exports, "NextjsRegionalFunctions", { enumerable: true, get: function () { return nextjs_regional_functions_1.NextjsRegionalFunctions; } });
24
30
  var nextjs_post_deploy_1 = require("./nextjs-post-deploy");
25
31
  Object.defineProperty(exports, "NextjsPostDeploy", { enumerable: true, get: function () { return nextjs_post_deploy_1.NextjsPostDeploy; } });
26
32
  var nextjs_static_assets_1 = require("./nextjs-static-assets");
27
33
  Object.defineProperty(exports, "NextjsStaticAssets", { enumerable: true, get: function () { return nextjs_static_assets_1.NextjsStaticAssets; } });
28
34
  var nextjs_vpc_1 = require("./nextjs-vpc");
29
35
  Object.defineProperty(exports, "NextjsVpc", { enumerable: true, get: function () { return nextjs_vpc_1.NextjsVpc; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBQWhDLHVHQUFBLFVBQVUsT0FBQTtBQUNuQix1RUFLb0M7QUFIbEMsa0lBQUEsc0JBQXNCLE9BQUE7QUFJeEIsNERBTXFDO0FBTG5DLDJHQUFBLFdBQVcsT0FBQTtBQU9iLHdFQUk0QztBQUgxQyxxSEFBQSxnQkFBZ0IsT0FBQTtBQUlsQiw2REFJK0I7QUFIN0IseUhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsc0VBSTJDO0FBSHpDLG1IQUFBLGVBQWUsT0FBQTtBQUlqQiwyREFLOEI7QUFKNUIsc0hBQUEsZ0JBQWdCLE9BQUE7QUFVbEIsdUZBS29EO0FBSmxELGtJQUFBLHNCQUFzQixPQUFBO0FBS3hCLHFGQUttRDtBQUpqRCxnSUFBQSxxQkFBcUIsT0FBQTtBQUt2QiwyRkFLc0Q7QUFKcEQsc0lBQUEsd0JBQXdCLE9BQUE7QUFLMUIsMkRBSzhCO0FBSjVCLHNIQUFBLGdCQUFnQixPQUFBO0FBS2xCLCtEQUlnQztBQUg5QiwwSEFBQSxrQkFBa0IsT0FBQTtBQUlwQiwyQ0FBNkU7QUFBcEUsdUdBQUEsU0FBUyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0IHtcbiAgU3RhdGljQXNzZXRzQ3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICBOZXh0anNBc3NldHNEZXBsb3ltZW50LFxuICBOZXh0anNBc3NldERlcGxveW1lbnRPdmVycmlkZXMsXG4gIE5leHRqc0Fzc2V0c0RlcGxveW1lbnRQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWFzc2V0cy1kZXBsb3ltZW50XCI7XG5leHBvcnQge1xuICBOZXh0anNCdWlsZCxcbiAgTmV4dGpzQnVpbGRQcm9wcyxcbiAgTmV4dGpzQnVpbGRPdmVycmlkZXMsXG4gIEJ1aWxkZXJJbWFnZVByb3BzLFxuICBQdWJsaWNEaXJFbnRyeSxcbn0gZnJvbSBcIi4vbmV4dGpzLWJ1aWxkL25leHRqcy1idWlsZFwiO1xuZXhwb3J0IHsgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB9IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1jb21wdXRlLWJhc2UtcHJvcHNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0NvbnRhaW5lcnMsXG4gIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMsXG4gIE5leHRqc0NvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbnRhaW5lcnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzLFxuICBOZXh0anNEaXN0cmlidXRpb25Qcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWRpc3RyaWJ1dGlvblwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG4gIE5leHRqc0Z1bmN0aW9uc1Byb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5leHBvcnQge1xuICBOZXh0anNGaWxlU3lzdGVtLFxuICBOZXh0anNGaWxlU3lzdGVtT3ZlcnJpZGVzLFxuICBOZXh0anNGaWxlU3lzdGVtUHJvcHMsXG4gIEFsbG93Q29tcHV0ZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtZmlsZS1zeXN0ZW1cIjtcbmV4cG9ydCB7XG4gIEJhc2VOZXh0anNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIEJhc2VOZXh0anNPdmVycmlkZXMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1vdmVycmlkZXNcIjtcbmV4cG9ydCB7IE5leHRqc0Jhc2VQcm9wcyB9IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1wcm9wc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVycyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWdsb2JhbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNHbG9iYWxGdW5jdGlvbnMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zXCI7XG5leHBvcnQge1xuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzT3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNQb3N0RGVwbG95LFxuICBOZXh0anNQb3N0RGVwbG95T3ZlcnJpZGVzLFxuICBOZXh0anNQb3N0RGVwbG95UHJvcHMsXG4gIFBvc3REZXBsb3lDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMsXG59IGZyb20gXCIuL25leHRqcy1wb3N0LWRlcGxveVwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzU3RhdGljQXNzZXRzLFxuICBOZXh0anNTdGF0aWNBc3NldHNPdmVycmlkZXMsXG4gIE5leHRqc1N0YXRpY0Fzc2V0c1Byb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtc3RhdGljLWFzc2V0c1wiO1xuZXhwb3J0IHsgTmV4dGpzVnBjLCBOZXh0anNWcGNPdmVycmlkZXMsIE5leHRqc1ZwY1Byb3BzIH0gZnJvbSBcIi4vbmV4dGpzLXZwY1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Fzc2V0c0RlcGxveW1lbnRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNCdWlsZFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNCdWlsZFByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNGaWxlU3lzdGVtUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0ZpbGVTeXN0ZW1Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNWcGNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzVnBjUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ2xvdWRGcm9udEZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsb3VkRnJvbnRGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbENsdXN0ZXJQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ2x1c3RlclByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEaXN0cmlidXRpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxFZGdlRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRWRnZUZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxGdW5jdGlvblVybFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxGdW5jdGlvblVybFByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxTM09yaWdpbkJ1Y2tldFdpdGhPQUNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxWcGNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsVnBjUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ3VzdG9tUmVzb3VyY2VQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ3VzdG9tUmVzb3VyY2VQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzXCI7XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBQWhDLHVHQUFBLFVBQVUsT0FBQTtBQUNuQiwyQ0FBNkU7QUFBcEUsdUdBQUEsU0FBUyxPQUFBO0FBQ2xCLHVFQUtvQztBQUhsQyxrSUFBQSxzQkFBc0IsT0FBQTtBQUl4QixpRkFNaUQ7QUFIL0MsNEhBQUEsbUJBQW1CLE9BQUE7QUFJckIsNERBTXFDO0FBTG5DLDJHQUFBLFdBQVcsT0FBQTtBQU9iLHdFQUk0QztBQUgxQyxxSEFBQSxnQkFBZ0IsT0FBQTtBQUlsQiw2REFJK0I7QUFIN0IseUhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsc0VBSTJDO0FBSHpDLG1IQUFBLGVBQWUsT0FBQTtBQUlqQiwyREFLOEI7QUFKNUIsc0hBQUEsZ0JBQWdCLE9BQUE7QUFLbEIsdUZBS29EO0FBSmxELGtJQUFBLHNCQUFzQixPQUFBO0FBS3hCLHFGQUttRDtBQUpqRCxnSUFBQSxxQkFBcUIsT0FBQTtBQUt2QiwyRkFLc0Q7QUFKcEQsc0lBQUEsd0JBQXdCLE9BQUE7QUFLMUIseUZBS3FEO0FBSm5ELG9JQUFBLHVCQUF1QixPQUFBO0FBS3pCLDJEQUs4QjtBQUo1QixzSEFBQSxnQkFBZ0IsT0FBQTtBQUtsQiwrREFJZ0M7QUFIOUIsMEhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsMkNBQTZFO0FBQXBFLHVHQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCB7IE5leHRqc0FwaSwgTmV4dGpzQXBpUHJvcHMsIE5leHRqc0FwaU92ZXJyaWRlcyB9IGZyb20gXCIuL25leHRqcy1hcGlcIjtcbmV4cG9ydCB7XG4gIFN0YXRpY0Fzc2V0c0N1c3RvbVJlc291cmNlUHJvcGVydGllcyxcbiAgTmV4dGpzQXNzZXRzRGVwbG95bWVudCxcbiAgTmV4dGpzQXNzZXREZXBsb3ltZW50T3ZlcnJpZGVzLFxuICBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0J1aWxkLFxuICBOZXh0anNCdWlsZFByb3BzLFxuICBOZXh0anNCdWlsZE92ZXJyaWRlcyxcbiAgQnVpbGRlckltYWdlUHJvcHMsXG4gIFB1YmxpY0RpckVudHJ5LFxufSBmcm9tIFwiLi9uZXh0anMtYnVpbGQvbmV4dGpzLWJ1aWxkXCI7XG5leHBvcnQgeyBOZXh0anNDb21wdXRlQmFzZVByb3BzIH0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbXB1dGUtYmFzZS1wcm9wc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQ29udGFpbmVycyxcbiAgTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzQ29udGFpbmVyc1Byb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzRGlzdHJpYnV0aW9uLFxuICBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXMsXG4gIE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtZGlzdHJpYnV0aW9uXCI7XG5leHBvcnQge1xuICBOZXh0anNGdW5jdGlvbnMsXG4gIE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzRnVuY3Rpb25zUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1mdW5jdGlvbnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0ZpbGVTeXN0ZW0sXG4gIE5leHRqc0ZpbGVTeXN0ZW1PdmVycmlkZXMsXG4gIE5leHRqc0ZpbGVTeXN0ZW1Qcm9wcyxcbiAgQWxsb3dDb21wdXRlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1maWxlLXN5c3RlbVwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVycyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWdsb2JhbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNHbG9iYWxGdW5jdGlvbnMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zXCI7XG5leHBvcnQge1xuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzT3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9ucyxcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc1Byb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUG9zdERlcGxveSxcbiAgTmV4dGpzUG9zdERlcGxveU92ZXJyaWRlcyxcbiAgTmV4dGpzUG9zdERlcGxveVByb3BzLFxuICBQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxufSBmcm9tIFwiLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmV4cG9ydCB7XG4gIE5leHRqc1N0YXRpY0Fzc2V0cyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzT3ZlcnJpZGVzLFxuICBOZXh0anNTdGF0aWNBc3NldHNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLXN0YXRpYy1hc3NldHNcIjtcbmV4cG9ydCB7IE5leHRqc1ZwYywgTmV4dGpzVnBjT3ZlcnJpZGVzLCBOZXh0anNWcGNQcm9wcyB9IGZyb20gXCIuL25leHRqcy12cGNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQnVpbGRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQnVpbGRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzRmlsZVN5c3RlbVByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNGaWxlU3lzdGVtUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzVnBjUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc1ZwY1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlT3B0aW9ucyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zXCI7XG5leHBvcnQgeyBPcHRpb25hbENsb3VkRnJvbnRGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxDbHVzdGVyUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsdXN0ZXJQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRWRnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEVkZ2VGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRnVuY3Rpb25VcmxQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRnVuY3Rpb25VcmxQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxTM09yaWdpbkJ1Y2tldFdpdGhPQUNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUzNPcmlnaW5CdWNrZXRXaXRoT0FDUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsVnBjUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFZwY1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEN1c3RvbVJlc291cmNlUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEN1c3RvbVJlc291cmNlUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wc1wiO1xuIl19
@@ -0,0 +1,71 @@
1
+ import { RestApi, MethodOptions, RestApiProps, AwsIntegrationProps, LambdaIntegrationOptions } from "aws-cdk-lib/aws-apigateway";
2
+ import { IVpc } from "aws-cdk-lib/aws-ec2";
3
+ import { IFunction } from "aws-cdk-lib/aws-lambda";
4
+ import { IBucket } from "aws-cdk-lib/aws-s3";
5
+ import { Construct } from "constructs";
6
+ import { PublicDirEntry } from "./nextjs-build/nextjs-build";
7
+ export interface NextjsApiOverrides {
8
+ readonly restApiProps?: RestApiProps;
9
+ readonly staticIntegrationProps?: AwsIntegrationProps;
10
+ readonly s3MethodOptions?: MethodOptions;
11
+ readonly dynamicIntegrationProps?: LambdaIntegrationOptions;
12
+ }
13
+ export interface NextjsApiProps {
14
+ /**
15
+ * Optional base path for the application
16
+ */
17
+ readonly basePath?: string;
18
+ /**
19
+ * Override props for every construct.
20
+ */
21
+ readonly overrides?: NextjsApiOverrides;
22
+ /**
23
+ * Path to directory of Next.js app's public directory. Used to add resources
24
+ * to API Gateway REST API for public directory to go directly to S3.
25
+ */
26
+ readonly publicDirEntries: PublicDirEntry[];
27
+ /**
28
+ * Required if `NextjsRegionalFunctions`. The Lambda function for server-side rendering
29
+ */
30
+ readonly serverFunction?: IFunction;
31
+ /**
32
+ * The S3 bucket containing static assets
33
+ */
34
+ readonly staticAssetsBucket: IBucket;
35
+ /**
36
+ * [Future] Required if `NextjsRegionalContainers`. VPC to create VPC Link and ECS Service Discovery
37
+ */
38
+ readonly vpc?: IVpc;
39
+ }
40
+ /**
41
+ * Creates an API Gateway REST API for Next.js applications
42
+ */
43
+ export declare class NextjsApi extends Construct {
44
+ /**
45
+ * The API Gateway REST API
46
+ */
47
+ readonly api: RestApi;
48
+ private readonly baseResource;
49
+ private readonly props;
50
+ private staticIntegrationRole;
51
+ constructor(scope: Construct, id: string, props: NextjsApiProps);
52
+ private validateProps;
53
+ private createRestApi;
54
+ /**
55
+ * Create base resource path if needed. Important if `basePath` is set.
56
+ */
57
+ private createBaseResource;
58
+ private createStaticIntegrationRole;
59
+ private createStaticIntegrations;
60
+ /**
61
+ * Maps API request to S3 request.
62
+ * @see https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-parameter-mapping-sources.html
63
+ * @see https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html#api-items-in-folder-as-s3-objects-in-bucket
64
+ */
65
+ private createS3Integration;
66
+ private getStaticMethodOptions;
67
+ /**
68
+ * Create Lambda Proxy integration for all other routes
69
+ */
70
+ private createDynamicIntegration;
71
+ }