cdk-nextjs 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.jsii +13834 -0
  2. package/.prettierrc +0 -0
  3. package/API.md +9655 -0
  4. package/LICENSE +202 -0
  5. package/README.md +164 -2
  6. package/THIRD-PARTY-LICENSES.md +31 -0
  7. package/assets/lambdas/assets-deployment/assets-deployment.lambda/assets-deployment.Dockerfile +18 -0
  8. package/assets/lambdas/assets-deployment/assets-deployment.lambda/index.js +8833 -0
  9. package/assets/lambdas/revalidate/revalidate.lambda/index.js +67 -0
  10. package/assets/lambdas/sign-fn-url/sign-fn-url.edge-lambda/index.js +2024 -0
  11. package/docs/breaking-changes.md +8 -0
  12. package/docs/cdk-nextjs-NextjsGlobalContainers.png +0 -0
  13. package/docs/cdk-nextjs-NextjsGlobalFunctions.png +0 -0
  14. package/docs/cdk-nextjs-NextjsRegionalContainers.png +0 -0
  15. package/docs/cdk-nextjs.drawio +163 -0
  16. package/docs/notes.md +26 -0
  17. package/examples/README.md +15 -0
  18. package/lib/common.d.ts +23 -0
  19. package/lib/common.js +28 -0
  20. package/lib/generated-structs/OptionalApplicationLoadBalancedTaskImageOptions.d.ts +106 -0
  21. package/lib/generated-structs/OptionalApplicationLoadBalancedTaskImageOptions.js +3 -0
  22. package/lib/generated-structs/OptionalCloudFrontFunctionProps.d.ts +43 -0
  23. package/lib/generated-structs/OptionalCloudFrontFunctionProps.js +3 -0
  24. package/lib/generated-structs/OptionalClusterProps.d.ts +62 -0
  25. package/lib/generated-structs/OptionalClusterProps.js +3 -0
  26. package/lib/generated-structs/OptionalDistributionProps.d.ts +155 -0
  27. package/lib/generated-structs/OptionalDistributionProps.js +3 -0
  28. package/lib/generated-structs/OptionalDockerImageAssetProps.d.ts +124 -0
  29. package/lib/generated-structs/OptionalDockerImageAssetProps.js +3 -0
  30. package/lib/generated-structs/OptionalDockerImageFunctionProps.d.ts +399 -0
  31. package/lib/generated-structs/OptionalDockerImageFunctionProps.js +3 -0
  32. package/lib/generated-structs/OptionalEdgeFunctionProps.d.ts +428 -0
  33. package/lib/generated-structs/OptionalEdgeFunctionProps.js +3 -0
  34. package/lib/generated-structs/OptionalFunctionProps.d.ts +422 -0
  35. package/lib/generated-structs/OptionalFunctionProps.js +3 -0
  36. package/lib/generated-structs/OptionalFunctionUrlProps.d.ts +30 -0
  37. package/lib/generated-structs/OptionalFunctionUrlProps.js +3 -0
  38. package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.d.ts +40 -0
  39. package/lib/generated-structs/OptionalNextjsAssetsDeploymentProps.js +3 -0
  40. package/lib/generated-structs/OptionalNextjsBuildProps.d.ts +26 -0
  41. package/lib/generated-structs/OptionalNextjsBuildProps.js +3 -0
  42. package/lib/generated-structs/OptionalNextjsContainersProps.d.ts +39 -0
  43. package/lib/generated-structs/OptionalNextjsContainersProps.js +3 -0
  44. package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +45 -0
  45. package/lib/generated-structs/OptionalNextjsDistributionProps.js +3 -0
  46. package/lib/generated-structs/OptionalNextjsFileSystemProps.d.ts +10 -0
  47. package/lib/generated-structs/OptionalNextjsFileSystemProps.js +3 -0
  48. package/lib/generated-structs/OptionalNextjsInvalidationProps.d.ts +11 -0
  49. package/lib/generated-structs/OptionalNextjsInvalidationProps.js +3 -0
  50. package/lib/generated-structs/OptionalNextjsVpcProps.d.ts +16 -0
  51. package/lib/generated-structs/OptionalNextjsVpcProps.js +3 -0
  52. package/lib/generated-structs/OptionalS3OriginBucketWithOACProps.d.ts +70 -0
  53. package/lib/generated-structs/OptionalS3OriginBucketWithOACProps.js +3 -0
  54. package/lib/generated-structs/OptionalVpcProps.d.ts +224 -0
  55. package/lib/generated-structs/OptionalVpcProps.js +3 -0
  56. package/lib/index.d.ts +35 -0
  57. package/lib/index.js +32 -0
  58. package/lib/lambdas/assets-deployment/assets-deployment-function.d.ts +13 -0
  59. package/lib/lambdas/assets-deployment/assets-deployment-function.js +22 -0
  60. package/lib/lambdas/assets-deployment/assets-deployment.lambda.d.ts +2 -0
  61. package/lib/lambdas/assets-deployment/assets-deployment.lambda.js +63 -0
  62. package/lib/lambdas/assets-deployment/common.d.ts +8 -0
  63. package/lib/lambdas/assets-deployment/common.js +32 -0
  64. package/lib/lambdas/assets-deployment/fs-to-fs.d.ts +2 -0
  65. package/lib/lambdas/assets-deployment/fs-to-fs.js +9 -0
  66. package/lib/lambdas/assets-deployment/fs-to-s3.d.ts +2 -0
  67. package/lib/lambdas/assets-deployment/fs-to-s3.js +45 -0
  68. package/lib/lambdas/assets-deployment/prune-s3.d.ts +15 -0
  69. package/lib/lambdas/assets-deployment/prune-s3.js +42 -0
  70. package/lib/lambdas/assets-deployment/s3.d.ts +2 -0
  71. package/lib/lambdas/assets-deployment/s3.js +7 -0
  72. package/lib/lambdas/assets-deployment/utils.d.ts +18 -0
  73. package/lib/lambdas/assets-deployment/utils.js +35 -0
  74. package/lib/lambdas/revalidate/revalidate-function.d.ts +13 -0
  75. package/lib/lambdas/revalidate/revalidate-function.js +22 -0
  76. package/lib/lambdas/revalidate/revalidate.lambda.d.ts +2 -0
  77. package/lib/lambdas/revalidate/revalidate.lambda.js +53 -0
  78. package/lib/lambdas/sign-fn-url/sign-fn-url-function.d.ts +13 -0
  79. package/lib/lambdas/sign-fn-url/sign-fn-url-function.js +23 -0
  80. package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.d.ts +9 -0
  81. package/lib/lambdas/sign-fn-url/sign-fn-url.edge-lambda.js +35 -0
  82. package/lib/lambdas/sign-fn-url/sign-request.d.ts +28 -0
  83. package/lib/lambdas/sign-fn-url/sign-request.js +119 -0
  84. package/lib/lambdas/sign-fn-url/sign-request.test.d.ts +1 -0
  85. package/lib/lambdas/sign-fn-url/sign-request.test.js +129 -0
  86. package/lib/nextjs-assets-deployment.d.ts +116 -0
  87. package/lib/nextjs-assets-deployment.js +93 -0
  88. package/lib/nextjs-build/add-cache-handler.d.ts +1 -0
  89. package/lib/nextjs-build/add-cache-handler.js +23 -0
  90. package/lib/nextjs-build/add-cache-handler.mjs +18 -0
  91. package/lib/nextjs-build/builder.Dockerfile +25 -0
  92. package/lib/nextjs-build/cache-handler.cjs +21080 -0
  93. package/lib/nextjs-build/cache-handler.d.ts +6 -0
  94. package/lib/nextjs-build/cache-handler.js +22 -0
  95. package/lib/nextjs-build/global-containers.Dockerfile +45 -0
  96. package/lib/nextjs-build/global-functions.Dockerfile +46 -0
  97. package/lib/nextjs-build/nextjs-build.d.ts +150 -0
  98. package/lib/nextjs-build/nextjs-build.js +220 -0
  99. package/lib/nextjs-build/regional-containers.Dockerfile +45 -0
  100. package/lib/nextjs-build/symlink-full-route-cache.d.ts +1 -0
  101. package/lib/nextjs-build/symlink-full-route-cache.js +37 -0
  102. package/lib/nextjs-build/symlink-full-route-cache.mjs +23 -0
  103. package/lib/nextjs-compute/nextjs-compute-base-props.d.ts +8 -0
  104. package/lib/nextjs-compute/nextjs-compute-base-props.js +3 -0
  105. package/lib/nextjs-compute/nextjs-containers.d.ts +43 -0
  106. package/lib/nextjs-compute/nextjs-containers.js +149 -0
  107. package/lib/nextjs-compute/nextjs-functions.d.ts +23 -0
  108. package/lib/nextjs-compute/nextjs-functions.js +57 -0
  109. package/lib/nextjs-distribution.d.ts +107 -0
  110. package/lib/nextjs-distribution.js +331 -0
  111. package/lib/nextjs-file-system.d.ts +42 -0
  112. package/lib/nextjs-file-system.js +74 -0
  113. package/lib/nextjs-invalidation.d.ts +19 -0
  114. package/lib/nextjs-invalidation.js +52 -0
  115. package/lib/nextjs-revalidation.d.ts +30 -0
  116. package/lib/nextjs-revalidation.js +65 -0
  117. package/lib/nextjs-static-assets.d.ts +21 -0
  118. package/lib/nextjs-static-assets.js +33 -0
  119. package/lib/nextjs-vpc.d.ts +42 -0
  120. package/lib/nextjs-vpc.js +64 -0
  121. package/lib/root-constructs/nextjs-base-overrides.d.ts +26 -0
  122. package/lib/root-constructs/nextjs-base-overrides.js +3 -0
  123. package/lib/root-constructs/nextjs-base-props.d.ts +56 -0
  124. package/lib/root-constructs/nextjs-base-props.js +3 -0
  125. package/lib/root-constructs/nextjs-global-containers.d.ts +74 -0
  126. package/lib/root-constructs/nextjs-global-containers.js +125 -0
  127. package/lib/root-constructs/nextjs-global-functions.d.ts +76 -0
  128. package/lib/root-constructs/nextjs-global-functions.js +131 -0
  129. package/lib/root-constructs/nextjs-regional-containers.d.ts +43 -0
  130. package/lib/root-constructs/nextjs-regional-containers.js +92 -0
  131. package/package.json +163 -2
  132. package/dist/index.js +0 -1
@@ -0,0 +1,8 @@
1
+ # Breaking Changes
2
+
3
+ ## 0.1.0
4
+
5
+ - 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.
6
+ - Omit `overrides` from following generated structs: `OptionalNextjsAssetsDeploymentProps`, `OptionalNextjsBuildProps`, `OptionalNextjsContainersProps`, `OptionalNextjsDistributionProps`, `OptionalNextjsFileSystemProps`, `OptionalNextjsInvalidationProps`, `OptionalNextjsVpcProps`.
7
+ - `NextjsGlobalFunctionsOverrides.nextjsFunction` -> `NextjsGlobalFunctionsOverrides.nextjsFunctions`
8
+ - `NextjsGlobalFunctionsConstructOverrides.nextjsFunction` -> `NextjsGlobalFunctionsConstructOverrides.nextjsFunctions`
@@ -0,0 +1,163 @@
1
+ <mxfile host="Electron" modified="2024-07-16T17:56:33.419Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.6.4 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="s2FOGw2SrCRZGIgwF30Q" version="24.6.4" type="device" pages="3">
2
+ <diagram name="NextjsGlobalFunctions" id="VdQA3LVE7DweftUdzD3P">
3
+ <mxGraphModel dx="1706" dy="2033" 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
+ <root>
5
+ <mxCell id="0" />
6
+ <mxCell id="1" parent="0" />
7
+ <mxCell id="CHCdaxanAGJLWUuyY2if-20" 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;" parent="1" vertex="1">
8
+ <mxGeometry x="-50" y="-1131" width="648" height="431" as="geometry" />
9
+ </mxCell>
10
+ <mxCell id="CHCdaxanAGJLWUuyY2if-23" 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=1;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="1" vertex="1">
11
+ <mxGeometry x="262" y="-959" width="320" height="240" as="geometry" />
12
+ </mxCell>
13
+ <mxCell id="CHCdaxanAGJLWUuyY2if-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="CHCdaxanAGJLWUuyY2if-23" source="CHCdaxanAGJLWUuyY2if-28" target="CHCdaxanAGJLWUuyY2if-36" edge="1">
14
+ <mxGeometry relative="1" as="geometry" />
15
+ </mxCell>
16
+ <mxCell id="CHCdaxanAGJLWUuyY2if-28" 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;" parent="CHCdaxanAGJLWUuyY2if-23" vertex="1">
17
+ <mxGeometry x="199" y="93" width="78" height="78" as="geometry" />
18
+ </mxCell>
19
+ <mxCell id="CHCdaxanAGJLWUuyY2if-36" 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;" parent="CHCdaxanAGJLWUuyY2if-23" vertex="1">
20
+ <mxGeometry x="52" y="93" width="78" height="78" as="geometry" />
21
+ </mxCell>
22
+ <mxCell id="CHCdaxanAGJLWUuyY2if-29" 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="1" vertex="1">
23
+ <mxGeometry x="-162" y="-866" width="78" height="78" as="geometry" />
24
+ </mxCell>
25
+ <mxCell id="CHCdaxanAGJLWUuyY2if-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="CHCdaxanAGJLWUuyY2if-31" target="CHCdaxanAGJLWUuyY2if-33" edge="1">
26
+ <mxGeometry relative="1" as="geometry" />
27
+ </mxCell>
28
+ <mxCell id="CHCdaxanAGJLWUuyY2if-31" value="Next.js Static&lt;div&gt;Assets&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;" parent="1" vertex="1">
29
+ <mxGeometry x="4" y="-1084" width="78" height="78" as="geometry" />
30
+ </mxCell>
31
+ <mxCell id="CHCdaxanAGJLWUuyY2if-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="CHCdaxanAGJLWUuyY2if-33" target="CHCdaxanAGJLWUuyY2if-29" edge="1">
32
+ <mxGeometry relative="1" as="geometry" />
33
+ </mxCell>
34
+ <mxCell id="CHCdaxanAGJLWUuyY2if-33" value="Amazon&lt;div&gt;CloudFront&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.cloudfront;" parent="1" vertex="1">
35
+ <mxGeometry x="4" y="-866" width="78" height="78" as="geometry" />
36
+ </mxCell>
37
+ <mxCell id="3PakDuy6oaCmuudp73PV-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="3PakDuy6oaCmuudp73PV-1" target="3PakDuy6oaCmuudp73PV-2" edge="1">
38
+ <mxGeometry relative="1" as="geometry" />
39
+ </mxCell>
40
+ <mxCell id="3PakDuy6oaCmuudp73PV-1" value="Revalidation&lt;div&gt;Queue&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=#E7157B;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.sqs;" parent="1" vertex="1">
41
+ <mxGeometry x="314" y="-1084" width="78" height="78" as="geometry" />
42
+ </mxCell>
43
+ <mxCell id="3PakDuy6oaCmuudp73PV-2" value="Revalidation&lt;div&gt;Function&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;" parent="1" vertex="1">
44
+ <mxGeometry x="456" y="-1084" width="78" height="78" as="geometry" />
45
+ </mxCell>
46
+ <mxCell id="3PakDuy6oaCmuudp73PV-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="CHCdaxanAGJLWUuyY2if-36" target="3PakDuy6oaCmuudp73PV-1" edge="1">
47
+ <mxGeometry relative="1" as="geometry" />
48
+ </mxCell>
49
+ <mxCell id="5jFSdina0rUyl2Mg5fbX-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="5jFSdina0rUyl2Mg5fbX-1" target="CHCdaxanAGJLWUuyY2if-33">
50
+ <mxGeometry relative="1" as="geometry" />
51
+ </mxCell>
52
+ <mxCell id="5jFSdina0rUyl2Mg5fbX-1" value="Lambda@Edge&lt;div&gt;Function URL Signer&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="1">
53
+ <mxGeometry x="144" y="-866" width="78" height="78" as="geometry" />
54
+ </mxCell>
55
+ <mxCell id="5jFSdina0rUyl2Mg5fbX-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="CHCdaxanAGJLWUuyY2if-36" target="5jFSdina0rUyl2Mg5fbX-1">
56
+ <mxGeometry relative="1" as="geometry" />
57
+ </mxCell>
58
+ <mxCell id="fRqXjGcpCBI0vAVTTnFA-1" 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="1" source="3PakDuy6oaCmuudp73PV-2" target="CHCdaxanAGJLWUuyY2if-33">
59
+ <mxGeometry relative="1" as="geometry">
60
+ <Array as="points">
61
+ <mxPoint x="495" y="-909" />
62
+ <mxPoint x="43" y="-909" />
63
+ </Array>
64
+ </mxGeometry>
65
+ </mxCell>
66
+ </root>
67
+ </mxGraphModel>
68
+ </diagram>
69
+ <diagram name="NextjsGlobalContainers" id="ILap_0SL7RCKmGOs0Yme">
70
+ <mxGraphModel dx="1706" dy="1633" 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">
71
+ <root>
72
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-0" />
73
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-1" parent="7UdSrgGfk-083ZtRJQ8L-0" />
74
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-15" 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;" parent="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
75
+ <mxGeometry x="-50" y="-591" width="709" height="431" as="geometry" />
76
+ </mxCell>
77
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-16" 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="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
78
+ <mxGeometry x="314" y="-385" width="312" height="186" as="geometry" />
79
+ </mxCell>
80
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-17" 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=1;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="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
81
+ <mxGeometry x="145" y="-385" width="164" height="185" as="geometry" />
82
+ </mxCell>
83
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-18" 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=1;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="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
84
+ <mxGeometry x="132" y="-419" width="503" height="240" as="geometry" />
85
+ </mxCell>
86
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="7UdSrgGfk-083ZtRJQ8L-18" source="7UdSrgGfk-083ZtRJQ8L-20" target="7UdSrgGfk-083ZtRJQ8L-21" edge="1">
87
+ <mxGeometry relative="1" as="geometry" />
88
+ </mxCell>
89
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-20" value="AWS Fargate&lt;br&gt;Next.js Server" 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="7UdSrgGfk-083ZtRJQ8L-18" vertex="1">
90
+ <mxGeometry x="230" y="93" width="78" height="78" as="geometry" />
91
+ </mxCell>
92
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-21" 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="7UdSrgGfk-083ZtRJQ8L-18" vertex="1">
93
+ <mxGeometry x="51" y="93" width="78" height="78" as="geometry" />
94
+ </mxCell>
95
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="7UdSrgGfk-083ZtRJQ8L-18" source="7UdSrgGfk-083ZtRJQ8L-23" target="7UdSrgGfk-083ZtRJQ8L-20" edge="1">
96
+ <mxGeometry relative="1" as="geometry" />
97
+ </mxCell>
98
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-23" 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;" parent="7UdSrgGfk-083ZtRJQ8L-18" vertex="1">
99
+ <mxGeometry x="379" y="93" width="78" height="78" as="geometry" />
100
+ </mxCell>
101
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-24" 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="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
102
+ <mxGeometry x="-162" y="-326" width="78" height="78" as="geometry" />
103
+ </mxCell>
104
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="7UdSrgGfk-083ZtRJQ8L-1" source="7UdSrgGfk-083ZtRJQ8L-26" target="7UdSrgGfk-083ZtRJQ8L-28" edge="1">
105
+ <mxGeometry relative="1" as="geometry" />
106
+ </mxCell>
107
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-26" value="Next.js Static&lt;div&gt;Assets&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;" parent="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
108
+ <mxGeometry x="4" y="-544" width="78" height="78" as="geometry" />
109
+ </mxCell>
110
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="7UdSrgGfk-083ZtRJQ8L-1" source="7UdSrgGfk-083ZtRJQ8L-28" target="7UdSrgGfk-083ZtRJQ8L-24" edge="1">
111
+ <mxGeometry relative="1" as="geometry" />
112
+ </mxCell>
113
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-28" value="Amazon&lt;div&gt;CloudFront&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.cloudfront;" parent="7UdSrgGfk-083ZtRJQ8L-1" vertex="1">
114
+ <mxGeometry x="4" y="-326" width="78" height="78" as="geometry" />
115
+ </mxCell>
116
+ <mxCell id="7UdSrgGfk-083ZtRJQ8L-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="7UdSrgGfk-083ZtRJQ8L-1" source="7UdSrgGfk-083ZtRJQ8L-21" target="7UdSrgGfk-083ZtRJQ8L-28" edge="1">
117
+ <mxGeometry relative="1" as="geometry" />
118
+ </mxCell>
119
+ </root>
120
+ </mxGraphModel>
121
+ </diagram>
122
+ <diagram name="NextjsRegionalContainers" id="qMukrG_LbAf3OZY481iW">
123
+ <mxGraphModel dx="1706" dy="833" 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">
124
+ <root>
125
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-0" />
126
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-1" parent="ZM6Z_FSj9kd4RMqbAZD0-0" />
127
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-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;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
128
+ <mxGeometry x="-43" y="86" width="540" height="294" as="geometry" />
129
+ </mxCell>
130
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-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=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">
131
+ <mxGeometry x="151" y="155" width="312" height="186" as="geometry" />
132
+ </mxCell>
133
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-4" 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=1;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">
134
+ <mxGeometry x="-18" y="155" width="164" height="185" as="geometry" />
135
+ </mxCell>
136
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-5" 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=1;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">
137
+ <mxGeometry x="-31" y="121" width="503" height="240" as="geometry" />
138
+ </mxCell>
139
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-5" source="ZM6Z_FSj9kd4RMqbAZD0-7" target="ZM6Z_FSj9kd4RMqbAZD0-8" edge="1">
140
+ <mxGeometry relative="1" as="geometry" />
141
+ </mxCell>
142
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-7" 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-5" vertex="1">
143
+ <mxGeometry x="230" y="93" width="78" height="78" as="geometry" />
144
+ </mxCell>
145
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-8" 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-5" vertex="1">
146
+ <mxGeometry x="51" y="93" width="78" height="78" as="geometry" />
147
+ </mxCell>
148
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-5" source="ZM6Z_FSj9kd4RMqbAZD0-10" target="ZM6Z_FSj9kd4RMqbAZD0-7" edge="1">
149
+ <mxGeometry relative="1" as="geometry" />
150
+ </mxCell>
151
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-10" 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-5" vertex="1">
152
+ <mxGeometry x="379" y="93" width="78" height="78" as="geometry" />
153
+ </mxCell>
154
+ <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">
155
+ <mxGeometry x="-155" y="214" width="78" height="78" as="geometry" />
156
+ </mxCell>
157
+ <mxCell id="ZM6Z_FSj9kd4RMqbAZD0-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="ZM6Z_FSj9kd4RMqbAZD0-8" target="ZM6Z_FSj9kd4RMqbAZD0-11" edge="1">
158
+ <mxGeometry relative="1" as="geometry" />
159
+ </mxCell>
160
+ </root>
161
+ </mxGraphModel>
162
+ </diagram>
163
+ </mxfile>
package/docs/notes.md ADDED
@@ -0,0 +1,26 @@
1
+ # Development Notes
2
+
3
+ ## Verify EFS FileSystem Cache
4
+
5
+ EFS FileSystem acts as a shared cache between all containers/functions for the data, image, and full route cache. The folder structure should looks like:
6
+
7
+ - /mnt/cdk-nextjs-cache/data-cache
8
+ - /mnt/cdk-nextjs-cache/full-route-cache
9
+ - /mnt/cdk-nextjs-cache/image-cache
10
+
11
+ Directory names are defined in src/common.ts.
12
+
13
+ To verify cache is working, deploy one of the example apps and visit the /run-command page. Then enter the following commands and ensure they create a similar output.
14
+
15
+ ```
16
+ Command: readlink .next/cache/images
17
+ Output: /mnt/cdk-nextjs-cache/image-cache
18
+ Command: readlink .next/cache/fetch-cache
19
+ Output: /mnt/cdk-nextjs-cache/data-cache
20
+ Command: ls /mnt/cdk-nextjs-cache/data-cache
21
+ Output: 1c5e7e075ef14fa7ed6ffe8ddc77bb5ba682a0d32e11acbe88fe0e997141343e 7219caec2df443d9c8453d2d63f9893f701fcc35e6a25a9d227652a1860296a1 7d6a754bbf6a88893a7123d28dc4d99c0813c646abbb712ad85d949bbd528618 8fd064b67046e3d373dd7c2bc22e20d58fd95ef2491850ab77e9799d8b6d7735 de9b0bb0b5134c02dc2ff1dc9b2188f6216d4e811186fd985cd1cbaa6e9d0a1f
22
+ Command: ls /mnt/cdk-nextjs-cache/image-cache
23
+ Output: JYUtmef0DjkFQBxgsZ4K51CyobxYqyXBOvpSFb3ef7A= W6NDSUrhApOUZ4FyFWfd9v9X2cg7z8q0yMXrZJXKukg= cDAs51Uqt+J3vNO04jH5dabjvVQCZTnpDXhoTP33MZ0= e+zuNPfk4gSKu7yTQM9sQdYvumEtD2PdVMrTiufiMZQ= l5tUrCT-iGRZlDIrNy1hz8efSOKpZwGyWBNiRrXaWVk= ylPcKFlKY2WHZ2w4sxKad3Lz8XcBPm2WyaOReb9Nkts= zH4wuKm9DtE-hgBK4G06DUDXNgdbaYeoGwidFJUkYUI=
24
+ Command: ls -l .next/server/app
25
+ Output: total 112 drwxr-xr-x 2 nextjs nodejs 4096 Jun 7 10:37 _not-found lrwxrwxrwx 1 root root 54 Jun 7 12:37 _not-found.html -> /mnt/cdk-nextjs-cache/full-route-cache/_not-found.html lrwxrwxrwx 1 root root 54 Jun 7 12:37 _not-found.meta -> /mnt/cdk-nextjs-cache/full-route-cache/_not-found.meta lrwxrwxrwx 1 root root 53 Jun 7 12:37 _not-found.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/_not-found.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 api drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 context lrwxrwxrwx 1 root root 51 Jun 7 12:37 context.html -> /mnt/cdk-nextjs-cache/full-route-cache/context.html lrwxrwxrwx 1 root root 51 Jun 7 12:37 context.meta -> /mnt/cdk-nextjs-cache/full-route-cache/context.meta lrwxrwxrwx 1 root root 50 Jun 7 12:37 context.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/context.rsc drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 error-handling lrwxrwxrwx 1 root root 58 Jun 7 12:37 error-handling.html -> /mnt/cdk-nextjs-cache/full-route-cache/error-handling.html lrwxrwxrwx 1 root root 58 Jun 7 12:37 error-handling.meta -> /mnt/cdk-nextjs-cache/full-route-cache/error-handling.meta lrwxrwxrwx 1 root root 57 Jun 7 12:37 error-handling.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/error-handling.rsc drwxr-xr-x 2 nextjs nodejs 4096 Jun 7 10:37 favicon.ico -rw-r--r-- 1 nextjs nodejs 15086 Jun 7 10:37 favicon.ico.body lrwxrwxrwx 1 root root 55 Jun 7 12:37 favicon.ico.meta -> /mnt/cdk-nextjs-cache/full-route-cache/favicon.ico.meta drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 hooks lrwxrwxrwx 1 root root 49 Jun 7 12:37 hooks.html -> /mnt/cdk-nextjs-cache/full-route-cache/hooks.html lrwxrwxrwx 1 root root 49 Jun 7 12:37 hooks.meta -> /mnt/cdk-nextjs-cache/full-route-cache/hooks.meta lrwxrwxrwx 1 root root 48 Jun 7 12:37 hooks.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/hooks.rsc lrwxrwxrwx 1 root root 49 Jun 7 12:37 index.html -> /mnt/cdk-nextjs-cache/full-route-cache/index.html lrwxrwxrwx 1 root root 49 Jun 7 12:37 index.meta -> /mnt/cdk-nextjs-cache/full-route-cache/index.meta lrwxrwxrwx 1 root root 48 Jun 7 12:37 index.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/index.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 isr lrwxrwxrwx 1 root root 47 Jun 7 12:37 isr.html -> /mnt/cdk-nextjs-cache/full-route-cache/isr.html lrwxrwxrwx 1 root root 47 Jun 7 12:37 isr.meta -> /mnt/cdk-nextjs-cache/full-route-cache/isr.meta lrwxrwxrwx 1 root root 46 Jun 7 12:37 isr.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/isr.rsc drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 layouts lrwxrwxrwx 1 root root 51 Jun 7 12:37 layouts.html -> /mnt/cdk-nextjs-cache/full-route-cache/layouts.html lrwxrwxrwx 1 root root 51 Jun 7 12:37 layouts.meta -> /mnt/cdk-nextjs-cache/full-route-cache/layouts.meta lrwxrwxrwx 1 root root 50 Jun 7 12:37 layouts.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/layouts.rsc drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 loading lrwxrwxrwx 1 root root 51 Jun 7 12:37 loading.html -> /mnt/cdk-nextjs-cache/full-route-cache/loading.html lrwxrwxrwx 1 root root 51 Jun 7 12:37 loading.meta -> /mnt/cdk-nextjs-cache/full-route-cache/loading.meta lrwxrwxrwx 1 root root 50 Jun 7 12:37 loading.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/loading.rsc drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 not-found lrwxrwxrwx 1 root root 53 Jun 7 12:37 not-found.html -> /mnt/cdk-nextjs-cache/full-route-cache/not-found.html lrwxrwxrwx 1 root root 53 Jun 7 12:37 not-found.meta -> /mnt/cdk-nextjs-cache/full-route-cache/not-found.meta lrwxrwxrwx 1 root root 52 Jun 7 12:37 not-found.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/not-found.rsc -rw-r--r-- 1 nextjs nodejs 5076 Jun 7 10:37 page.js -rw-r--r-- 1 nextjs nodejs 2390 Jun 7 10:37 page.js.nft.json -rw-r--r-- 1 nextjs nodejs 12281 Jun 7 10:37 page_client-reference-manifest.js drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 parallel-routes lrwxrwxrwx 1 root root 59 Jun 7 12:37 parallel-routes.html -> /mnt/cdk-nextjs-cache/full-route-cache/parallel-routes.html lrwxrwxrwx 1 root root 59 Jun 7 12:37 parallel-routes.meta -> /mnt/cdk-nextjs-cache/full-route-cache/parallel-routes.meta lrwxrwxrwx 1 root root 58 Jun 7 12:37 parallel-routes.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/parallel-routes.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 patterns lrwxrwxrwx 1 root root 52 Jun 7 12:37 patterns.html -> /mnt/cdk-nextjs-cache/full-route-cache/patterns.html lrwxrwxrwx 1 root root 52 Jun 7 12:37 patterns.meta -> /mnt/cdk-nextjs-cache/full-route-cache/patterns.meta lrwxrwxrwx 1 root root 51 Jun 7 12:37 patterns.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/patterns.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 route-groups lrwxrwxrwx 1 root root 56 Jun 7 12:37 route-groups.html -> /mnt/cdk-nextjs-cache/full-route-cache/route-groups.html lrwxrwxrwx 1 root root 56 Jun 7 12:37 route-groups.meta -> /mnt/cdk-nextjs-cache/full-route-cache/route-groups.meta lrwxrwxrwx 1 root root 55 Jun 7 12:37 route-groups.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/route-groups.rsc drwxr-xr-x 2 nextjs nodejs 4096 Jun 7 10:37 run-command lrwxrwxrwx 1 root root 55 Jun 7 12:37 run-command.html -> /mnt/cdk-nextjs-cache/full-route-cache/run-command.html lrwxrwxrwx 1 root root 55 Jun 7 12:37 run-command.meta -> /mnt/cdk-nextjs-cache/full-route-cache/run-command.meta lrwxrwxrwx 1 root root 54 Jun 7 12:37 run-command.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/run-command.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 ssg lrwxrwxrwx 1 root root 47 Jun 7 12:37 ssg.html -> /mnt/cdk-nextjs-cache/full-route-cache/ssg.html lrwxrwxrwx 1 root root 47 Jun 7 12:37 ssg.meta -> /mnt/cdk-nextjs-cache/full-route-cache/ssg.meta lrwxrwxrwx 1 root root 46 Jun 7 12:37 ssg.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/ssg.rsc drwxr-xr-x 3 nextjs nodejs 4096 Jun 7 10:37 ssr lrwxrwxrwx 1 root root 47 Jun 7 12:37 ssr.html -> /mnt/cdk-nextjs-cache/full-route-cache/ssr.html lrwxrwxrwx 1 root root 47 Jun 7 12:37 ssr.meta -> /mnt/cdk-nextjs-cache/full-route-cache/ssr.meta lrwxrwxrwx 1 root root 46 Jun 7 12:37 ssr.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/ssr.rsc drwxr-xr-x 4 nextjs nodejs 4096 Jun 7 10:37 streaming lrwxrwxrwx 1 root root 53 Jun 7 12:37 streaming.html -> /mnt/cdk-nextjs-cache/full-route-cache/streaming.html lrwxrwxrwx 1 root root 53 Jun 7 12:37 streaming.meta -> /mnt/cdk-nextjs-cache/full-route-cache/streaming.meta lrwxrwxrwx 1 root root 52 Jun 7 12:37 streaming.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/streaming.rsc drwxr-xr-x 1 nextjs nodejs 4096 Jun 7 12:37 styling lrwxrwxrwx 1 root root 51 Jun 7 12:37 styling.html -> /mnt/cdk-nextjs-cache/full-route-cache/styling.html lrwxrwxrwx 1 root root 51 Jun 7 12:37 styling.meta -> /mnt/cdk-nextjs-cache/full-route-cache/styling.meta lrwxrwxrwx 1 root root 50 Jun 7 12:37 styling.rsc -> /mnt/cdk-nextjs-cache/full-route-cache/styling.rsc
26
+ ```
@@ -0,0 +1,15 @@
1
+ # cdk-nextjs Example App
2
+
3
+ Example Next.js app based on [App Playground](https://app-router.vercel.app/) with various configurations to showcase features of cdk-nextjs.
4
+
5
+ ## Setup
6
+
7
+ 1. Follow setup steps in parent README [Contributing](../README.md#contributing) section
8
+ 1. Install dependencies: `cd examples && pnpm i`
9
+ 1. `cd cloudfront-lambda` for example. Tryout any of the other examples as well.
10
+ 1. Create .env.local with `AWS_PROFILE="your-profile"` in the package you want to deploy. For setting up `AWS_PROFILE`, see: [AWS security credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html). Ensure `CDK_DEFAULT_ACCOUNT` and `CDK_DEFAULT_REGION` env vars are resolved during synthesis. See more at: [How to specify environments with the AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/configure-env.html).
11
+ 1. `pnpm cdk deploy --require-approval never`
12
+
13
+ # Notes on app-playground
14
+
15
+ The app-playground app comes from https://github.com/vercel/app-playground. In order to incorporate upstream changes, follow instructions [here](https://stackoverflow.com/a/24816134/9658768). Don't want to use git submodule because we need to make some modifications to code like add `output: 'standalone'` and including in pnpm monorepo.
@@ -0,0 +1,23 @@
1
+ export declare enum NextjsType {
2
+ GLOBAL_CONTAINERS = "GLOBAL_CONTAINERS",
3
+ GLOBAL_FUNCTIONS = "GLOBAL_FUNCTIONS",
4
+ REGIONAL_CONTAINERS = "REGIONAL_CONTAINERS"
5
+ }
6
+ /**
7
+ * Directory of Next.js Data Cache in EFS
8
+ *
9
+ * /mnt/cdk-nextjs-cache/data-cache
10
+ */
11
+ export declare const DATA_CACHE_DIR = "data-cache";
12
+ /**
13
+ * Directory of Next.js Image Cache in EFS
14
+ *
15
+ * /mnt/cdk-nextjs-cache/image-cache
16
+ */
17
+ export declare const IMAGE_CACHE_DIR = "image-cache";
18
+ /**
19
+ * Directory of Next.js Full Route Cache in EFS
20
+ *
21
+ * /mnt/cdk-nextjs-cache/full-route-cache
22
+ */
23
+ export declare const FULL_ROUTE_CACHE_DIR = "full-route-cache";
package/lib/common.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FULL_ROUTE_CACHE_DIR = exports.IMAGE_CACHE_DIR = exports.DATA_CACHE_DIR = exports.NextjsType = void 0;
4
+ var NextjsType;
5
+ (function (NextjsType) {
6
+ NextjsType["GLOBAL_CONTAINERS"] = "GLOBAL_CONTAINERS";
7
+ NextjsType["GLOBAL_FUNCTIONS"] = "GLOBAL_FUNCTIONS";
8
+ NextjsType["REGIONAL_CONTAINERS"] = "REGIONAL_CONTAINERS";
9
+ })(NextjsType || (exports.NextjsType = NextjsType = {}));
10
+ /**
11
+ * Directory of Next.js Data Cache in EFS
12
+ *
13
+ * /mnt/cdk-nextjs-cache/data-cache
14
+ */
15
+ exports.DATA_CACHE_DIR = "data-cache";
16
+ /**
17
+ * Directory of Next.js Image Cache in EFS
18
+ *
19
+ * /mnt/cdk-nextjs-cache/image-cache
20
+ */
21
+ exports.IMAGE_CACHE_DIR = "image-cache";
22
+ /**
23
+ * Directory of Next.js Full Route Cache in EFS
24
+ *
25
+ * /mnt/cdk-nextjs-cache/full-route-cache
26
+ */
27
+ exports.FULL_ROUTE_CACHE_DIR = "full-route-cache";
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIscURBQXVDLENBQUE7SUFDdkMsbURBQXFDLENBQUE7SUFDckMseURBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVEOzs7O0dBSUc7QUFDVSxRQUFBLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDM0M7Ozs7R0FJRztBQUNVLFFBQUEsZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUM3Qzs7OztHQUlHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5leHRqc1R5cGUge1xuICBHTE9CQUxfQ09OVEFJTkVSUyA9IFwiR0xPQkFMX0NPTlRBSU5FUlNcIixcbiAgR0xPQkFMX0ZVTkNUSU9OUyA9IFwiR0xPQkFMX0ZVTkNUSU9OU1wiLFxuICBSRUdJT05BTF9DT05UQUlORVJTID0gXCJSRUdJT05BTF9DT05UQUlORVJTXCIsXG59XG5cbi8qKlxuICogRGlyZWN0b3J5IG9mIE5leHQuanMgRGF0YSBDYWNoZSBpbiBFRlNcbiAqXG4gKiAvbW50L2Nkay1uZXh0anMtY2FjaGUvZGF0YS1jYWNoZVxuICovXG5leHBvcnQgY29uc3QgREFUQV9DQUNIRV9ESVIgPSBcImRhdGEtY2FjaGVcIjtcbi8qKlxuICogRGlyZWN0b3J5IG9mIE5leHQuanMgSW1hZ2UgQ2FjaGUgaW4gRUZTXG4gKlxuICogL21udC9jZGstbmV4dGpzLWNhY2hlL2ltYWdlLWNhY2hlXG4gKi9cbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9ESVIgPSBcImltYWdlLWNhY2hlXCI7XG4vKipcbiAqIERpcmVjdG9yeSBvZiBOZXh0LmpzIEZ1bGwgUm91dGUgQ2FjaGUgaW4gRUZTXG4gKlxuICogL21udC9jZGstbmV4dGpzLWNhY2hlL2Z1bGwtcm91dGUtY2FjaGVcbiAqL1xuZXhwb3J0IGNvbnN0IEZVTExfUk9VVEVfQ0FDSEVfRElSID0gXCJmdWxsLXJvdXRlLWNhY2hlXCI7XG4iXX0=
@@ -0,0 +1,106 @@
1
+ import type { aws_ecs, aws_iam } from 'aws-cdk-lib';
2
+ /**
3
+ * OptionalApplicationLoadBalancedTaskImageOptions
4
+ */
5
+ export interface OptionalApplicationLoadBalancedTaskImageOptions {
6
+ /**
7
+ * The name of the task IAM role that grants containers in the task permission to call AWS APIs on your behalf.
8
+ * @default - A task role is automatically created for you.
9
+ * @stability stable
10
+ */
11
+ readonly taskRole?: aws_iam.IRole;
12
+ /**
13
+ * The secret to expose to the container as an environment variable.
14
+ * @default - No secret environment variables.
15
+ * @stability stable
16
+ */
17
+ readonly secrets?: Record<string, aws_ecs.Secret>;
18
+ /**
19
+ * The log driver to use.
20
+ * @default - AwsLogDriver if enableLogging is true
21
+ * @stability stable
22
+ */
23
+ readonly logDriver?: aws_ecs.LogDriver;
24
+ /**
25
+ * The name of a family that this task definition is registered to.
26
+ * A family groups multiple versions of a task definition.
27
+ * @default - Automatically generated name.
28
+ * @stability stable
29
+ */
30
+ readonly family?: string;
31
+ /**
32
+ * The name of the task execution IAM role that grants the Amazon ECS container agent permission to call AWS APIs on your behalf.
33
+ * @default - No value
34
+ * @stability stable
35
+ */
36
+ readonly executionRole?: aws_iam.IRole;
37
+ /**
38
+ * The environment variables to pass to the container.
39
+ * @default - No environment variables.
40
+ * @stability stable
41
+ */
42
+ readonly environment?: Record<string, string>;
43
+ /**
44
+ * The entry point that's passed to the container.
45
+ * This parameter maps to `Entrypoint` in the [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) section
46
+ * of the [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) and the `--entrypoint` option to
47
+ * [docker run](https://docs.docker.com/engine/reference/commandline/run/).
48
+ *
49
+ * For more information about the Docker `ENTRYPOINT` parameter, see https://docs.docker.com/engine/reference/builder/#entrypoint.
50
+ * @default none
51
+ * @stability stable
52
+ */
53
+ readonly entryPoint?: Array<string>;
54
+ /**
55
+ * Flag to indicate whether to enable logging.
56
+ * @default true
57
+ * @stability stable
58
+ */
59
+ readonly enableLogging?: boolean;
60
+ /**
61
+ * A key/value map of labels to add to the container.
62
+ * @default - No labels.
63
+ * @stability stable
64
+ */
65
+ readonly dockerLabels?: Record<string, string>;
66
+ /**
67
+ * The port number on the container that is bound to the user-specified or automatically assigned host port.
68
+ * If you are using containers in a task with the awsvpc or host network mode, exposed ports should be specified using containerPort.
69
+ * If you are using containers in a task with the bridge network mode and you specify a container port and not a host port,
70
+ * your container automatically receives a host port in the ephemeral port range.
71
+ *
72
+ * Port mappings that are automatically assigned in this way do not count toward the 100 reserved ports limit of a container instance.
73
+ *
74
+ * For more information, see
75
+ * [hostPort](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PortMapping.html#ECS-Type-PortMapping-hostPort).
76
+ * @default 80
77
+ * @stability stable
78
+ */
79
+ readonly containerPort?: number;
80
+ /**
81
+ * The container name value to be specified in the task definition.
82
+ * @default - none
83
+ * @stability stable
84
+ */
85
+ readonly containerName?: string;
86
+ /**
87
+ * The command that's passed to the container.
88
+ * If there are multiple arguments, make sure that each argument is a separated string in the array.
89
+ *
90
+ * This parameter maps to `Cmd` in the [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) section
91
+ * of the [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) and the `COMMAND` parameter to
92
+ * [docker run](https://docs.docker.com/engine/reference/commandline/run/).
93
+ *
94
+ * For more information about the Docker `CMD` parameter, see https://docs.docker.com/engine/reference/builder/#cmd.
95
+ * @default none
96
+ * @stability stable
97
+ */
98
+ readonly command?: Array<string>;
99
+ /**
100
+ * The image used to start a container.
101
+ * Image or taskDefinition must be specified, not both.
102
+ * @default - none
103
+ * @stability stable
104
+ */
105
+ readonly image?: aws_ecs.ContainerImage;
106
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZWNzLCBhd3NfaWFtIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIE9wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhc2sgSUFNIHJvbGUgdGhhdCBncmFudHMgY29udGFpbmVycyBpbiB0aGUgdGFzayBwZXJtaXNzaW9uIHRvIGNhbGwgQVdTIEFQSXMgb24geW91ciBiZWhhbGYuXG4gICAqIEBkZWZhdWx0IC0gQSB0YXNrIHJvbGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSB0YXNrUm9sZT86IGF3c19pYW0uSVJvbGU7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIGV4cG9zZSB0byB0aGUgY29udGFpbmVyIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogUmVjb3JkPHN0cmluZywgYXdzX2Vjcy5TZWNyZXQ+O1xuICAvKipcbiAgICogVGhlIGxvZyBkcml2ZXIgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAtIEF3c0xvZ0RyaXZlciBpZiBlbmFibGVMb2dnaW5nIGlzIHRydWVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RyaXZlcj86IGF3c19lY3MuTG9nRHJpdmVyO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYSBmYW1pbHkgdGhhdCB0aGlzIHRhc2sgZGVmaW5pdGlvbiBpcyByZWdpc3RlcmVkIHRvLlxuICAgKiBBIGZhbWlseSBncm91cHMgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYSB0YXNrIGRlZmluaXRpb24uXG4gICAqIEBkZWZhdWx0IC0gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGZhbWlseT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXNrIGV4ZWN1dGlvbiBJQU0gcm9sZSB0aGF0IGdyYW50cyB0aGUgQW1hem9uIEVDUyBjb250YWluZXIgYWdlbnQgcGVybWlzc2lvbiB0byBjYWxsIEFXUyBBUElzIG9uIHlvdXIgYmVoYWxmLlxuICAgKiBAZGVmYXVsdCAtIE5vIHZhbHVlXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25Sb2xlPzogYXdzX2lhbS5JUm9sZTtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIE5vIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIFRoZSBlbnRyeSBwb2ludCB0aGF0J3MgcGFzc2VkIHRvIHRoZSBjb250YWluZXIuXG4gICAqIFRoaXMgcGFyYW1ldGVyIG1hcHMgdG8gYEVudHJ5cG9pbnRgIGluIHRoZSBbQ3JlYXRlIGEgY29udGFpbmVyXShodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvYXBpL3YxLjM4LyNvcGVyYXRpb24vQ29udGFpbmVyQ3JlYXRlKSBzZWN0aW9uXG4gICAqIG9mIHRoZSBbRG9ja2VyIFJlbW90ZSBBUEldKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9hcGkvdjEuMzgvKSBhbmQgdGhlIGAtLWVudHJ5cG9pbnRgIG9wdGlvbiB0b1xuICAgKiBbZG9ja2VyIHJ1bl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9ydW4vKS5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERvY2tlciBgRU5UUllQT0lOVGAgcGFyYW1ldGVyLCBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9idWlsZGVyLyNlbnRyeXBvaW50LlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBlbnRyeVBvaW50PzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0byBlbmFibGUgbG9nZ2luZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGtleS92YWx1ZSBtYXAgb2YgbGFiZWxzIHRvIGFkZCB0byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIE5vIGxhYmVscy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckxhYmVscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgcG9ydCBudW1iZXIgb24gdGhlIGNvbnRhaW5lciB0aGF0IGlzIGJvdW5kIHRvIHRoZSB1c2VyLXNwZWNpZmllZCBvciBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIGhvc3QgcG9ydC5cbiAgICogSWYgeW91IGFyZSB1c2luZyBjb250YWluZXJzIGluIGEgdGFzayB3aXRoIHRoZSBhd3N2cGMgb3IgaG9zdCBuZXR3b3JrIG1vZGUsIGV4cG9zZWQgcG9ydHMgc2hvdWxkIGJlIHNwZWNpZmllZCB1c2luZyBjb250YWluZXJQb3J0LlxuICAgKiBJZiB5b3UgYXJlIHVzaW5nIGNvbnRhaW5lcnMgaW4gYSB0YXNrIHdpdGggdGhlIGJyaWRnZSBuZXR3b3JrIG1vZGUgYW5kIHlvdSBzcGVjaWZ5IGEgY29udGFpbmVyIHBvcnQgYW5kIG5vdCBhIGhvc3QgcG9ydCxcbiAgICogeW91ciBjb250YWluZXIgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGhvc3QgcG9ydCBpbiB0aGUgZXBoZW1lcmFsIHBvcnQgcmFuZ2UuXG4gICAqXG4gICAqIFBvcnQgbWFwcGluZ3MgdGhhdCBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCBpbiB0aGlzIHdheSBkbyBub3QgY291bnQgdG93YXJkIHRoZSAxMDAgcmVzZXJ2ZWQgcG9ydHMgbGltaXQgb2YgYSBjb250YWluZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW2hvc3RQb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1BvcnRNYXBwaW5nLmh0bWwjRUNTLVR5cGUtUG9ydE1hcHBpbmctaG9zdFBvcnQpLlxuICAgKiBAZGVmYXVsdCA4MFxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUG9ydD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgbmFtZSB2YWx1ZSB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIHRhc2sgZGVmaW5pdGlvbi5cbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdGhhdCdzIHBhc3NlZCB0byB0aGUgY29udGFpbmVyLlxuICAgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYXJndW1lbnRzLCBtYWtlIHN1cmUgdGhhdCBlYWNoIGFyZ3VtZW50IGlzIGEgc2VwYXJhdGVkIHN0cmluZyBpbiB0aGUgYXJyYXkuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG1hcHMgdG8gYENtZGAgaW4gdGhlIFtDcmVhdGUgYSBjb250YWluZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9hcGkvdjEuMzgvI29wZXJhdGlvbi9Db250YWluZXJDcmVhdGUpIHNlY3Rpb25cbiAgICogb2YgdGhlIFtEb2NrZXIgUmVtb3RlIEFQSV0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL2FwaS92MS4zOC8pIGFuZCB0aGUgYENPTU1BTkRgIHBhcmFtZXRlciB0b1xuICAgKiBbZG9ja2VyIHJ1bl0oaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9ydW4vKS5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERvY2tlciBgQ01EYCBwYXJhbWV0ZXIsIHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2J1aWxkZXIvI2NtZC5cbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgdXNlZCB0byBzdGFydCBhIGNvbnRhaW5lci5cbiAgICogSW1hZ2Ugb3IgdGFza0RlZmluaXRpb24gbXVzdCBiZSBzcGVjaWZpZWQsIG5vdCBib3RoLlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogYXdzX2Vjcy5Db250YWluZXJJbWFnZTtcbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import type { aws_cloudfront } from 'aws-cdk-lib';
2
+ /**
3
+ * OptionalCloudFrontFunctionProps
4
+ */
5
+ export interface OptionalCloudFrontFunctionProps {
6
+ /**
7
+ * The runtime environment for the function.
8
+ * @default FunctionRuntime.JS_1_0 (unless `keyValueStore` is specified, then `FunctionRuntime.JS_2_0`)
9
+ * @stability stable
10
+ */
11
+ readonly runtime?: aws_cloudfront.FunctionRuntime;
12
+ /**
13
+ * The Key Value Store to associate with this function.
14
+ * In order to associate a Key Value Store, the `runtime` must be
15
+ * `cloudfront-js-2.0` or newer.
16
+ * @default - no key value store is associated
17
+ * @stability stable
18
+ */
19
+ readonly keyValueStore?: aws_cloudfront.IKeyValueStore;
20
+ /**
21
+ * A name to identify the function.
22
+ * @default - generated from the `id`
23
+ * @stability stable
24
+ */
25
+ readonly functionName?: string;
26
+ /**
27
+ * A comment to describe the function.
28
+ * @default - same as `functionName`
29
+ * @stability stable
30
+ */
31
+ readonly comment?: string;
32
+ /**
33
+ * A flag that determines whether to automatically publish the function to the LIVE stage when it’s created.
34
+ * @default - true
35
+ * @stability stable
36
+ */
37
+ readonly autoPublish?: boolean;
38
+ /**
39
+ * The source code of the function.
40
+ * @stability stable
41
+ */
42
+ readonly code?: aws_cloudfront.FunctionCode;
43
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsb3VkRnJvbnRGdW5jdGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2Nsb3VkZnJvbnQgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbmFsQ2xvdWRGcm9udEZ1bmN0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIHRoZSBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgRnVuY3Rpb25SdW50aW1lLkpTXzFfMCAodW5sZXNzIGBrZXlWYWx1ZVN0b3JlYCBpcyBzcGVjaWZpZWQsIHRoZW4gYEZ1bmN0aW9uUnVudGltZS5KU18yXzBgKVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IGF3c19jbG91ZGZyb250LkZ1bmN0aW9uUnVudGltZTtcbiAgLyoqXG4gICAqIFRoZSBLZXkgVmFsdWUgU3RvcmUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBmdW5jdGlvbi5cbiAgICogSW4gb3JkZXIgdG8gYXNzb2NpYXRlIGEgS2V5IFZhbHVlIFN0b3JlLCB0aGUgYHJ1bnRpbWVgIG11c3QgYmVcbiAgICogYGNsb3VkZnJvbnQtanMtMi4wYCBvciBuZXdlci5cbiAgICogQGRlZmF1bHQgLSBubyBrZXkgdmFsdWUgc3RvcmUgaXMgYXNzb2NpYXRlZFxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkga2V5VmFsdWVTdG9yZT86IGF3c19jbG91ZGZyb250LklLZXlWYWx1ZVN0b3JlO1xuICAvKipcbiAgICogQSBuYW1lIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgZnJvbSB0aGUgYGlkYFxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBjb21tZW50IHRvIGRlc2NyaWJlIHRoZSBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBmdW5jdGlvbk5hbWVgXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQSBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgcHVibGlzaCB0aGUgZnVuY3Rpb24gdG8gdGhlIExJVkUgc3RhZ2Ugd2hlbiBpdOKAmXMgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhdXRvUHVibGlzaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGNvZGUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZT86IGF3c19jbG91ZGZyb250LkZ1bmN0aW9uQ29kZTtcbn1cbiJdfQ==
@@ -0,0 +1,62 @@
1
+ import type { aws_ec2, aws_ecs } from 'aws-cdk-lib';
2
+ /**
3
+ * OptionalClusterProps
4
+ */
5
+ export interface OptionalClusterProps {
6
+ /**
7
+ * The VPC where your ECS instances will be running or your ENIs will be deployed.
8
+ * @default - creates a new VPC with two AZs
9
+ * @stability stable
10
+ */
11
+ readonly vpc?: aws_ec2.IVpc;
12
+ /**
13
+ * Encryption configuration for ECS Managed storage.
14
+ * @default - no encryption will be applied.
15
+ * @stability stable
16
+ */
17
+ readonly managedStorageConfiguration?: aws_ecs.ManagedStorageConfiguration;
18
+ /**
19
+ * The execute command configuration for the cluster.
20
+ * @default - no configuration will be provided.
21
+ * @stability stable
22
+ */
23
+ readonly executeCommandConfiguration?: aws_ecs.ExecuteCommandConfiguration;
24
+ /**
25
+ * Whether to enable Fargate Capacity Providers.
26
+ * @default false
27
+ * @stability stable
28
+ */
29
+ readonly enableFargateCapacityProviders?: boolean;
30
+ /**
31
+ * The service discovery namespace created in this cluster.
32
+ * @default - no service discovery namespace created, you can use `addDefaultCloudMapNamespace` to add a
33
+ default service discovery namespace later.
34
+ * @stability stable
35
+ */
36
+ readonly defaultCloudMapNamespace?: aws_ecs.CloudMapNamespaceOptions;
37
+ /**
38
+ * The CloudWatch Container Insights configuration for the cluster.
39
+ * @default {@link ContainerInsights.DISABLED } This may be overridden by ECS account level settings.
40
+ * @stability stable
41
+ */
42
+ readonly containerInsightsV2?: aws_ecs.ContainerInsights;
43
+ /**
44
+ * If true CloudWatch Container Insights will be enabled for the cluster.
45
+ * @default - Container Insights will be disabled for this cluster.
46
+ * @deprecated See {@link containerInsightsV2 }
47
+ * @stability deprecated
48
+ */
49
+ readonly containerInsights?: boolean;
50
+ /**
51
+ * The name for the cluster.
52
+ * @default CloudFormation-generated name
53
+ * @stability stable
54
+ */
55
+ readonly clusterName?: string;
56
+ /**
57
+ * The ec2 capacity to add to the cluster.
58
+ * @default - no EC2 capacity will be added, you can use `addCapacity` to add capacity later.
59
+ * @stability stable
60
+ */
61
+ readonly capacity?: aws_ecs.AddCapacityOptions;
62
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxDbHVzdGVyUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDbHVzdGVyUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZWMyLCBhd3NfZWNzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIE9wdGlvbmFsQ2x1c3RlclByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxDbHVzdGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIFZQQyB3aGVyZSB5b3VyIEVDUyBpbnN0YW5jZXMgd2lsbCBiZSBydW5uaW5nIG9yIHlvdXIgRU5JcyB3aWxsIGJlIGRlcGxveWVkLlxuICAgKiBAZGVmYXVsdCAtIGNyZWF0ZXMgYSBuZXcgVlBDIHdpdGggdHdvIEFac1xuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogYXdzX2VjMi5JVnBjO1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBFQ1MgTWFuYWdlZCBzdG9yYWdlLlxuICAgKiBAZGVmYXVsdCAtIG5vIGVuY3J5cHRpb24gd2lsbCBiZSBhcHBsaWVkLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFN0b3JhZ2VDb25maWd1cmF0aW9uPzogYXdzX2Vjcy5NYW5hZ2VkU3RvcmFnZUNvbmZpZ3VyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0ZSBjb21tYW5kIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBwcm92aWRlZC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGVDb21tYW5kQ29uZmlndXJhdGlvbj86IGF3c19lY3MuRXhlY3V0ZUNvbW1hbmRDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgRmFyZ2F0ZSBDYXBhY2l0eSBQcm92aWRlcnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgZGlzY292ZXJ5IG5hbWVzcGFjZSBjcmVhdGVkIGluIHRoaXMgY2x1c3Rlci5cbiAgICogQGRlZmF1bHQgLSBubyBzZXJ2aWNlIGRpc2NvdmVyeSBuYW1lc3BhY2UgY3JlYXRlZCwgeW91IGNhbiB1c2UgYGFkZERlZmF1bHRDbG91ZE1hcE5hbWVzcGFjZWAgdG8gYWRkIGFcbmRlZmF1bHQgc2VydmljZSBkaXNjb3ZlcnkgbmFtZXNwYWNlIGxhdGVyLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENsb3VkTWFwTmFtZXNwYWNlPzogYXdzX2Vjcy5DbG91ZE1hcE5hbWVzcGFjZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBDb250YWluZXIgSW5zaWdodHMgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqIEBkZWZhdWx0IHtAbGluayBDb250YWluZXJJbnNpZ2h0cy5ESVNBQkxFRCB9IFRoaXMgbWF5IGJlIG92ZXJyaWRkZW4gYnkgRUNTIGFjY291bnQgbGV2ZWwgc2V0dGluZ3MuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJJbnNpZ2h0c1YyPzogYXdzX2Vjcy5Db250YWluZXJJbnNpZ2h0cztcbiAgLyoqXG4gICAqIElmIHRydWUgQ2xvdWRXYXRjaCBDb250YWluZXIgSW5zaWdodHMgd2lsbCBiZSBlbmFibGVkIGZvciB0aGUgY2x1c3Rlci5cbiAgICogQGRlZmF1bHQgLSBDb250YWluZXIgSW5zaWdodHMgd2lsbCBiZSBkaXNhYmxlZCBmb3IgdGhpcyBjbHVzdGVyLlxuICAgKiBAZGVwcmVjYXRlZCBTZWUge0BsaW5rIGNvbnRhaW5lckluc2lnaHRzVjIgfVxuICAgKiBAc3RhYmlsaXR5IGRlcHJlY2F0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckluc2lnaHRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgY2x1c3Rlci5cbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24tZ2VuZXJhdGVkIG5hbWVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVjMiBjYXBhY2l0eSB0byBhZGQgdG8gdGhlIGNsdXN0ZXIuXG4gICAqIEBkZWZhdWx0IC0gbm8gRUMyIGNhcGFjaXR5IHdpbGwgYmUgYWRkZWQsIHlvdSBjYW4gdXNlIGBhZGRDYXBhY2l0eWAgdG8gYWRkIGNhcGFjaXR5IGxhdGVyLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHk/OiBhd3NfZWNzLkFkZENhcGFjaXR5T3B0aW9ucztcbn1cbiJdfQ==