cdk-nextjs 0.6.2 → 0.7.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 (263) hide show
  1. package/.jsii +2404 -2723
  2. package/.jsii.tabl.json +1 -1
  3. package/API.md +1681 -1930
  4. package/CLAUDE.md +2 -1
  5. package/README.md +429 -130
  6. package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +148 -169
  7. package/assets/lambdas/redeploy-stage/redeploy-stage.lambda/index.js +875 -0
  8. package/docs/adapter-runtime.md +185 -0
  9. package/docs/breaking-changes.md +667 -4
  10. package/docs/caching-guide.md +156 -112
  11. package/docs/cdk-nextjs-cfn-exec-policy.json +2 -1
  12. package/docs/development-guide.md +1 -1
  13. package/docs/harness-coverage.md +598 -0
  14. package/docs/init-cache-deployment.md +32 -1
  15. package/docs/next-build-output-guide.md +30 -20
  16. package/examples/README.md +5 -1
  17. package/lib/adapter/__fixtures__/app-playground-base-path.json +4926 -0
  18. package/lib/adapter/__fixtures__/app-playground.json +4917 -0
  19. package/lib/adapter/__fixtures__/pages-i18n.json +1728 -0
  20. package/lib/adapter/adapter.mjs +1551 -185
  21. package/lib/adapter/adapter.test.js +106 -0
  22. package/lib/adapter/aws-cache-store.d.ts +489 -0
  23. package/lib/adapter/aws-cache-store.js +1004 -0
  24. package/lib/adapter/aws-cache-store.test.d.ts +1 -0
  25. package/lib/adapter/aws-cache-store.test.js +361 -0
  26. package/lib/adapter/build-outputs.d.ts +80 -0
  27. package/lib/adapter/build-outputs.js +857 -0
  28. package/lib/adapter/build-outputs.test.d.ts +1 -0
  29. package/lib/adapter/build-outputs.test.js +863 -0
  30. package/lib/adapter/cache-handler.d.ts +9 -2
  31. package/lib/adapter/cache-handler.js +72 -96
  32. package/lib/adapter/cache-handler.mjs +18956 -17774
  33. package/lib/adapter/cache-handler.test.js +263 -31
  34. package/lib/adapter/cache-kinds.d.ts +32 -0
  35. package/lib/adapter/cache-kinds.js +35 -0
  36. package/lib/adapter/cache-kinds.test.d.ts +1 -0
  37. package/lib/adapter/cache-kinds.test.js +69 -0
  38. package/lib/adapter/cache-utils.d.ts +90 -0
  39. package/lib/adapter/cache-utils.js +199 -4
  40. package/lib/adapter/cache-utils.test.d.ts +1 -0
  41. package/lib/adapter/cache-utils.test.js +179 -0
  42. package/lib/adapter/function-groups.d.ts +215 -0
  43. package/lib/adapter/function-groups.js +1099 -0
  44. package/lib/adapter/function-groups.test.d.ts +1 -0
  45. package/lib/adapter/function-groups.test.js +743 -0
  46. package/lib/adapter/init-cache.d.ts +6 -0
  47. package/lib/adapter/init-cache.js +245 -0
  48. package/lib/adapter/init-cache.test.d.ts +1 -0
  49. package/lib/adapter/init-cache.test.js +137 -0
  50. package/lib/adapter/local-file-cache-handler.d.ts +23 -0
  51. package/lib/adapter/local-file-cache-handler.js +52 -1
  52. package/lib/adapter/memory-cache-handler.d.ts +26 -17
  53. package/lib/adapter/memory-cache-handler.js +32 -50
  54. package/lib/adapter/memory-cache-handler.test.js +105 -85
  55. package/lib/adapter/s3-cache-handler.d.ts +179 -40
  56. package/lib/adapter/s3-cache-handler.js +807 -277
  57. package/lib/adapter/s3-cache-handler.test.js +1186 -31
  58. package/lib/adapter/use-cache-common.d.ts +90 -0
  59. package/lib/adapter/use-cache-common.js +250 -0
  60. package/lib/adapter/use-cache-common.test.d.ts +1 -0
  61. package/lib/adapter/use-cache-common.test.js +646 -0
  62. package/lib/adapter/use-cache-default-handler.d.ts +24 -0
  63. package/lib/adapter/use-cache-default-handler.js +90 -0
  64. package/lib/adapter/use-cache-default-handler.mjs +38645 -0
  65. package/lib/adapter/use-cache-handlers.test.d.ts +1 -0
  66. package/lib/adapter/use-cache-handlers.test.js +349 -0
  67. package/lib/adapter/use-cache-remote-handler.d.ts +26 -0
  68. package/lib/adapter/use-cache-remote-handler.js +186 -0
  69. package/lib/{image-optimization/handler.mjs → adapter/use-cache-remote-handler.mjs} +33572 -38798
  70. package/lib/generated-structs/OptionalNextjsApiProps.d.ts +59 -0
  71. package/lib/generated-structs/OptionalNextjsApiProps.js +3 -0
  72. package/lib/generated-structs/OptionalNextjsCacheProps.d.ts +15 -6
  73. package/lib/generated-structs/OptionalNextjsCacheProps.js +1 -1
  74. package/lib/generated-structs/OptionalNextjsContainersProps.d.ts +25 -11
  75. package/lib/generated-structs/OptionalNextjsContainersProps.js +1 -1
  76. package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +31 -9
  77. package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
  78. package/lib/generated-structs/OptionalNextjsPostDeployProps.d.ts +8 -0
  79. package/lib/generated-structs/OptionalNextjsPostDeployProps.js +1 -1
  80. package/lib/generated-structs/OptionalPostDeployCustomResourceProperties.d.ts +6 -4
  81. package/lib/generated-structs/OptionalPostDeployCustomResourceProperties.js +1 -1
  82. package/lib/index.d.ts +6 -7
  83. package/lib/index.js +2 -4
  84. package/lib/lambdas/post-deploy/prune-cache-bucket.d.ts +7 -3
  85. package/lib/lambdas/post-deploy/prune-cache-bucket.js +57 -71
  86. package/lib/lambdas/post-deploy/prune-cache-bucket.test.d.ts +1 -0
  87. package/lib/lambdas/post-deploy/prune-cache-bucket.test.js +114 -0
  88. package/lib/lambdas/post-deploy/prune-revalidation-table.d.ts +1 -0
  89. package/lib/lambdas/post-deploy/prune-revalidation-table.js +23 -31
  90. package/lib/lambdas/post-deploy/prune-revalidation-table.test.d.ts +1 -0
  91. package/lib/lambdas/post-deploy/prune-revalidation-table.test.js +71 -0
  92. package/lib/lambdas/post-deploy/prune-s3.d.ts +14 -5
  93. package/lib/lambdas/post-deploy/prune-s3.js +41 -12
  94. package/lib/lambdas/post-deploy/prune-s3.test.js +97 -18
  95. package/lib/lambdas/redeploy-stage/redeploy-stage-function.d.ts +13 -0
  96. package/lib/lambdas/redeploy-stage/redeploy-stage-function.js +55 -0
  97. package/lib/lambdas/redeploy-stage/redeploy-stage.d.ts +24 -0
  98. package/lib/lambdas/redeploy-stage/redeploy-stage.js +68 -0
  99. package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.d.ts +20 -0
  100. package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.js +24 -0
  101. package/lib/lambdas/redeploy-stage/redeploy-stage.test.d.ts +1 -0
  102. package/lib/lambdas/redeploy-stage/redeploy-stage.test.js +93 -0
  103. package/lib/nextjs-api.d.ts +102 -18
  104. package/lib/nextjs-api.js +338 -38
  105. package/lib/nextjs-api.test.js +537 -1
  106. package/lib/nextjs-build/global-containers.Dockerfile +15 -10
  107. package/lib/nextjs-build/nextjs-build.d.ts +339 -63
  108. package/lib/nextjs-build/nextjs-build.js +684 -327
  109. package/lib/nextjs-build/nextjs-build.test.d.ts +1 -0
  110. package/lib/nextjs-build/nextjs-build.test.js +412 -0
  111. package/lib/nextjs-build/patch-fetch.js +1 -1
  112. package/lib/nextjs-build/patch-fetch.test.js +166 -11
  113. package/lib/nextjs-build/regional-containers.Dockerfile +17 -10
  114. package/lib/nextjs-cache.d.ts +82 -4
  115. package/lib/nextjs-cache.js +186 -10
  116. package/lib/nextjs-cache.test.js +176 -1
  117. package/lib/nextjs-compute/nextjs-compute-base-props.d.ts +21 -8
  118. package/lib/nextjs-compute/nextjs-compute-base-props.js +41 -1
  119. package/lib/nextjs-compute/nextjs-compute-base-props.test.d.ts +1 -0
  120. package/lib/nextjs-compute/nextjs-compute-base-props.test.js +44 -0
  121. package/lib/nextjs-compute/nextjs-containers.d.ts +19 -0
  122. package/lib/nextjs-compute/nextjs-containers.js +57 -20
  123. package/lib/nextjs-compute/nextjs-functions.d.ts +122 -7
  124. package/lib/nextjs-compute/nextjs-functions.js +113 -67
  125. package/lib/nextjs-compute/nextjs-functions.test.d.ts +1 -0
  126. package/lib/nextjs-compute/nextjs-functions.test.js +99 -0
  127. package/lib/nextjs-distribution.d.ts +194 -23
  128. package/lib/nextjs-distribution.js +535 -62
  129. package/lib/nextjs-distribution.test.d.ts +1 -0
  130. package/lib/nextjs-distribution.test.js +697 -0
  131. package/lib/nextjs-post-deploy.d.ts +13 -5
  132. package/lib/nextjs-post-deploy.js +13 -10
  133. package/lib/nextjs-post-deploy.test.d.ts +1 -0
  134. package/lib/nextjs-post-deploy.test.js +34 -0
  135. package/lib/nextjs-static-assets.d.ts +17 -4
  136. package/lib/nextjs-static-assets.js +22 -5
  137. package/lib/root-constructs/nextjs-base-construct.d.ts +102 -58
  138. package/lib/root-constructs/nextjs-base-construct.js +139 -47
  139. package/lib/root-constructs/nextjs-global-containers.d.ts +18 -20
  140. package/lib/root-constructs/nextjs-global-containers.js +20 -71
  141. package/lib/root-constructs/nextjs-global-functions.d.ts +26 -28
  142. package/lib/root-constructs/nextjs-global-functions.js +52 -70
  143. package/lib/root-constructs/nextjs-regional-containers.d.ts +18 -5
  144. package/lib/root-constructs/nextjs-regional-containers.js +8 -15
  145. package/lib/root-constructs/nextjs-regional-functions.d.ts +22 -18
  146. package/lib/root-constructs/nextjs-regional-functions.js +8 -26
  147. package/lib/runtime/api-gateway-path.d.ts +34 -0
  148. package/lib/runtime/api-gateway-path.js +71 -0
  149. package/lib/runtime/api-gateway-path.test.d.ts +1 -0
  150. package/lib/runtime/api-gateway-path.test.js +65 -0
  151. package/lib/runtime/case-redirect.d.ts +22 -0
  152. package/lib/runtime/case-redirect.js +63 -0
  153. package/lib/runtime/case-redirect.test.d.ts +1 -0
  154. package/lib/runtime/case-redirect.test.js +32 -0
  155. package/lib/runtime/core.d.ts +234 -0
  156. package/lib/runtime/core.js +1216 -0
  157. package/lib/runtime/core.test.d.ts +1 -0
  158. package/lib/runtime/core.test.js +1686 -0
  159. package/lib/runtime/deployment-root.d.ts +13 -0
  160. package/lib/runtime/deployment-root.js +29 -0
  161. package/lib/runtime/dispatch.d.ts +331 -0
  162. package/lib/runtime/dispatch.js +751 -0
  163. package/lib/runtime/dispatch.test.d.ts +1 -0
  164. package/lib/runtime/dispatch.test.js +853 -0
  165. package/lib/runtime/entrypoints.d.ts +57 -0
  166. package/lib/runtime/entrypoints.js +115 -0
  167. package/lib/runtime/http/abort-signal.d.ts +6 -0
  168. package/lib/runtime/http/abort-signal.js +19 -0
  169. package/lib/runtime/http/abort-signal.test.d.ts +1 -0
  170. package/lib/runtime/http/abort-signal.test.js +49 -0
  171. package/lib/runtime/http/node-server.d.ts +38 -0
  172. package/lib/runtime/http/node-server.js +99 -0
  173. package/lib/runtime/http/node-server.test.d.ts +1 -0
  174. package/lib/runtime/http/node-server.test.js +96 -0
  175. package/lib/runtime/http/node-sink.d.ts +16 -0
  176. package/lib/runtime/http/node-sink.js +48 -0
  177. package/lib/runtime/http/node-sink.test.d.ts +1 -0
  178. package/lib/runtime/http/node-sink.test.js +66 -0
  179. package/lib/runtime/http/request.d.ts +62 -0
  180. package/lib/runtime/http/request.js +134 -0
  181. package/lib/runtime/http/request.test.d.ts +1 -0
  182. package/lib/runtime/http/request.test.js +103 -0
  183. package/lib/runtime/http/response.d.ts +77 -0
  184. package/lib/runtime/http/response.js +229 -0
  185. package/lib/runtime/http/response.test.d.ts +1 -0
  186. package/lib/runtime/http/response.test.js +178 -0
  187. package/lib/runtime/http/sink.d.ts +73 -0
  188. package/lib/runtime/http/sink.js +188 -0
  189. package/lib/runtime/http/sink.test.d.ts +1 -0
  190. package/lib/runtime/http/sink.test.js +257 -0
  191. package/lib/runtime/image-utils.d.ts +78 -0
  192. package/lib/runtime/image-utils.js +129 -0
  193. package/lib/runtime/image-utils.test.d.ts +1 -0
  194. package/lib/runtime/image-utils.test.js +237 -0
  195. package/lib/runtime/image.d.ts +76 -0
  196. package/lib/runtime/image.js +296 -0
  197. package/lib/runtime/image.test.d.ts +1 -0
  198. package/lib/runtime/image.test.js +405 -0
  199. package/lib/runtime/lambda-event.d.ts +4 -0
  200. package/lib/runtime/lambda-event.js +113 -0
  201. package/lib/runtime/lambda-event.test.d.ts +1 -0
  202. package/lib/runtime/lambda-event.test.js +119 -0
  203. package/lib/runtime/lambda.mjs +41600 -0
  204. package/lib/runtime/load-module.d.ts +8 -0
  205. package/lib/runtime/load-module.js +35 -0
  206. package/lib/runtime/manifest.d.ts +215 -0
  207. package/lib/runtime/manifest.js +118 -0
  208. package/lib/runtime/middleware.d.ts +43 -0
  209. package/lib/runtime/middleware.js +113 -0
  210. package/lib/runtime/middleware.test.d.ts +1 -0
  211. package/lib/runtime/middleware.test.js +259 -0
  212. package/lib/runtime/next-modules.d.ts +71 -0
  213. package/lib/runtime/next-modules.js +144 -0
  214. package/lib/runtime/next-modules.test.d.ts +1 -0
  215. package/lib/runtime/next-modules.test.js +34 -0
  216. package/lib/runtime/public-files.d.ts +32 -0
  217. package/lib/runtime/public-files.js +117 -0
  218. package/lib/runtime/public-files.test.d.ts +1 -0
  219. package/lib/runtime/public-files.test.js +97 -0
  220. package/lib/runtime/server.mjs +41593 -0
  221. package/lib/runtime/static-files.d.ts +50 -0
  222. package/lib/runtime/static-files.js +266 -0
  223. package/lib/runtime/static-files.test.d.ts +1 -0
  224. package/lib/runtime/static-files.test.js +118 -0
  225. package/lib/runtime/util.d.ts +28 -0
  226. package/lib/runtime/util.js +79 -0
  227. package/lib/utils/base-path.d.ts +106 -13
  228. package/lib/utils/base-path.js +254 -41
  229. package/lib/utils/base-path.test.js +219 -51
  230. package/lib/utils/get-architecture.d.ts +7 -8
  231. package/lib/utils/get-architecture.js +12 -13
  232. package/lib/utils/zip-directory.d.ts +14 -0
  233. package/lib/utils/zip-directory.js +121 -0
  234. package/lib/utils/zip-directory.test.d.ts +1 -0
  235. package/lib/utils/zip-directory.test.js +99 -0
  236. package/package.json +22 -3
  237. package/scripts/capture-adapter-fixture.mjs +325 -0
  238. package/scripts/e2e-deploy.sh +398 -0
  239. package/scripts/e2e-harness/README.md +707 -0
  240. package/scripts/e2e-harness/app.js +370 -0
  241. package/scripts/e2e-harness/common.sh +249 -0
  242. package/scripts/e2e-harness/screen.mjs +302 -0
  243. package/scripts/e2e-harness/stage-proxy.mjs +145 -0
  244. package/scripts/e2e-harness/type-filters.mjs +47 -0
  245. package/scripts/e2e-logs.sh +75 -0
  246. package/scripts/e2e-offline.sh +91 -0
  247. package/scripts/e2e-sweep.sh +370 -0
  248. package/scripts/e2e-warm.sh +114 -0
  249. package/scripts/zero-config-build.mjs +418 -0
  250. package/docs/1k-concurrent-users-executions.png +0 -0
  251. package/docs/plans/adapter-runtime-release.md +0 -362
  252. package/docs/plans/phase-0-image-function-opt-in.md +0 -295
  253. package/lib/generated-structs/OptionalDockerImageFunctionProps.d.ts +0 -425
  254. package/lib/generated-structs/OptionalDockerImageFunctionProps.js +0 -3
  255. package/lib/image-optimization/handler-utils.d.ts +0 -34
  256. package/lib/image-optimization/handler-utils.js +0 -83
  257. package/lib/image-optimization/handler-utils.test.js +0 -178
  258. package/lib/nextjs-build/functions.Dockerfile +0 -31
  259. package/lib/nextjs-compute/nextjs-image-function.d.ts +0 -53
  260. package/lib/nextjs-compute/nextjs-image-function.js +0 -59
  261. package/lib/utils/experimental-flags.d.ts +0 -24
  262. package/lib/utils/experimental-flags.js +0 -30
  263. /package/lib/{image-optimization/handler-utils.test.d.ts → adapter/adapter.test.d.ts} +0 -0
@@ -0,0 +1,59 @@
1
+ import type { aws_ec2, aws_lambda, aws_s3 } from 'aws-cdk-lib';
2
+ import type { PublicDirEntry } from '../';
3
+ /**
4
+ * OptionalNextjsApiProps
5
+ */
6
+ export interface OptionalNextjsApiProps {
7
+ /**
8
+ * [Future] Required if `NextjsRegionalContainers`.
9
+ * VPC to create VPC Link and ECS Service Discovery
10
+ * @stability stable
11
+ */
12
+ readonly vpc?: aws_ec2.IVpc;
13
+ /**
14
+ * S3 key prefix the static assets were uploaded under, i.e. `NextjsStaticAssets.keyPrefix`, which namespaces a shared bucket.
15
+ * Independent of `basePath` above: that one is the URL prefix the REST API
16
+ * serves the app at (commonly the API Gateway stage), while this one is where
17
+ * the objects live in the bucket. `_next/static` and public directory
18
+ * requests are mapped to S3 keys directly, so they 404 unless this prefix is
19
+ * applied.
20
+ * @stability stable
21
+ */
22
+ readonly staticAssetsKeyPrefix?: string;
23
+ /**
24
+ * Required if `NextjsRegionalFunctions`.
25
+ * The Lambda function for server-side rendering
26
+ * @stability stable
27
+ */
28
+ readonly serverFunction?: aws_lambda.IFunction;
29
+ /**
30
+ * Deploy the stage again once each stack update has finished, so it serves the API as it is after the update.
31
+ * CloudFormation snapshots the API into a new deployment while resources
32
+ * removed from the template still exist — it deletes them only during
33
+ * cleanup — so the stage keeps serving them. After removing a function
34
+ * group, its routes then point at a deleted Lambda and answer 500 until the
35
+ * next deployment. An EventBridge rule on this stack's `UPDATE_COMPLETE`
36
+ * (and `UPDATE_ROLLBACK_COMPLETE`) invokes a small function that deploys the
37
+ * stage from the live API and deletes the deployments its earlier runs made.
38
+ *
39
+ * Ignored when `overrides.restApiProps.deploy` is `false`: there is no stage.
40
+ * @default true
41
+ * @stability stable
42
+ */
43
+ readonly redeployAfterUpdate?: boolean;
44
+ /**
45
+ * Optional base path for the application.
46
+ * @stability stable
47
+ */
48
+ readonly basePath?: string;
49
+ /**
50
+ * The S3 bucket containing static assets.
51
+ * @stability stable
52
+ */
53
+ readonly staticAssetsBucket?: aws_s3.IBucket;
54
+ /**
55
+ * Path to directory of Next.js app's public directory. Used to add resources to API Gateway REST API for public directory to go directly to S3.
56
+ * @stability stable
57
+ */
58
+ readonly publicDirEntries?: Array<PublicDirEntry>;
59
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNBcGlQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0FwaVByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2VjMiwgYXdzX2xhbWJkYSwgYXdzX3MzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBQdWJsaWNEaXJFbnRyeSB9IGZyb20gJy4uLyc7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNBcGlQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbmFsTmV4dGpzQXBpUHJvcHMge1xuICAvKipcbiAgICogW0Z1dHVyZV0gUmVxdWlyZWQgaWYgYE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc2AuXG4gICAqIFZQQyB0byBjcmVhdGUgVlBDIExpbmsgYW5kIEVDUyBTZXJ2aWNlIERpc2NvdmVyeVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogYXdzX2VjMi5JVnBjO1xuICAvKipcbiAgICogUzMga2V5IHByZWZpeCB0aGUgc3RhdGljIGFzc2V0cyB3ZXJlIHVwbG9hZGVkIHVuZGVyLCBpLmUuIGBOZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4YCwgd2hpY2ggbmFtZXNwYWNlcyBhIHNoYXJlZCBidWNrZXQuXG4gICAqIEluZGVwZW5kZW50IG9mIGBiYXNlUGF0aGAgYWJvdmU6IHRoYXQgb25lIGlzIHRoZSBVUkwgcHJlZml4IHRoZSBSRVNUIEFQSVxuICAgKiBzZXJ2ZXMgdGhlIGFwcCBhdCAoY29tbW9ubHkgdGhlIEFQSSBHYXRld2F5IHN0YWdlKSwgd2hpbGUgdGhpcyBvbmUgaXMgd2hlcmVcbiAgICogdGhlIG9iamVjdHMgbGl2ZSBpbiB0aGUgYnVja2V0LiBgX25leHQvc3RhdGljYCBhbmQgcHVibGljIGRpcmVjdG9yeVxuICAgKiByZXF1ZXN0cyBhcmUgbWFwcGVkIHRvIFMzIGtleXMgZGlyZWN0bHksIHNvIHRoZXkgNDA0IHVubGVzcyB0aGlzIHByZWZpeCBpc1xuICAgKiBhcHBsaWVkLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzS2V5UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogUmVxdWlyZWQgaWYgYE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zYC5cbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiBmb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJGdW5jdGlvbj86IGF3c19sYW1iZGEuSUZ1bmN0aW9uO1xuICAvKipcbiAgICogRGVwbG95IHRoZSBzdGFnZSBhZ2FpbiBvbmNlIGVhY2ggc3RhY2sgdXBkYXRlIGhhcyBmaW5pc2hlZCwgc28gaXQgc2VydmVzIHRoZSBBUEkgYXMgaXQgaXMgYWZ0ZXIgdGhlIHVwZGF0ZS5cbiAgICogQ2xvdWRGb3JtYXRpb24gc25hcHNob3RzIHRoZSBBUEkgaW50byBhIG5ldyBkZXBsb3ltZW50IHdoaWxlIHJlc291cmNlc1xuICAgKiByZW1vdmVkIGZyb20gdGhlIHRlbXBsYXRlIHN0aWxsIGV4aXN0IOKAlCBpdCBkZWxldGVzIHRoZW0gb25seSBkdXJpbmdcbiAgICogY2xlYW51cCDigJQgc28gdGhlIHN0YWdlIGtlZXBzIHNlcnZpbmcgdGhlbS4gQWZ0ZXIgcmVtb3ZpbmcgYSBmdW5jdGlvblxuICAgKiBncm91cCwgaXRzIHJvdXRlcyB0aGVuIHBvaW50IGF0IGEgZGVsZXRlZCBMYW1iZGEgYW5kIGFuc3dlciA1MDAgdW50aWwgdGhlXG4gICAqIG5leHQgZGVwbG95bWVudC4gQW4gRXZlbnRCcmlkZ2UgcnVsZSBvbiB0aGlzIHN0YWNrJ3MgYFVQREFURV9DT01QTEVURWBcbiAgICogKGFuZCBgVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFYCkgaW52b2tlcyBhIHNtYWxsIGZ1bmN0aW9uIHRoYXQgZGVwbG95cyB0aGVcbiAgICogc3RhZ2UgZnJvbSB0aGUgbGl2ZSBBUEkgYW5kIGRlbGV0ZXMgdGhlIGRlcGxveW1lbnRzIGl0cyBlYXJsaWVyIHJ1bnMgbWFkZS5cbiAgICpcbiAgICogSWdub3JlZCB3aGVuIGBvdmVycmlkZXMucmVzdEFwaVByb3BzLmRlcGxveWAgaXMgYGZhbHNlYDogdGhlcmUgaXMgbm8gc3RhZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJlZGVwbG95QWZ0ZXJVcGRhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgYmFzZSBwYXRoIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBiYXNlUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgY29udGFpbmluZyBzdGF0aWMgYXNzZXRzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBQYXRoIHRvIGRpcmVjdG9yeSBvZiBOZXh0LmpzIGFwcCdzIHB1YmxpYyBkaXJlY3RvcnkuIFVzZWQgdG8gYWRkIHJlc291cmNlcyB0byBBUEkgR2F0ZXdheSBSRVNUIEFQSSBmb3IgcHVibGljIGRpcmVjdG9yeSB0byBnbyBkaXJlY3RseSB0byBTMy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0RpckVudHJpZXM/OiBBcnJheTxQdWJsaWNEaXJFbnRyeT47XG59XG4iXX0=
@@ -7,16 +7,25 @@ export interface OptionalNextjsCacheProps {
7
7
  * Bring your own DynamoDB table for revalidation metadata.
8
8
  * When provided,
9
9
  * cdk-nextjs will skip creating a new table. The table must have `pk` (String)
10
- * as partition key and `sk` (String) as sort key. Entries are partitioned by
11
- * `buildId` so multiple deployments can safely share one table.
10
+ * as partition key and `sk` (String) as sort key.
11
+ * Enabling TTL on its `ttl` attribute is recommended: each tag revalidation
12
+ * writes a revalidation log row that expires through it after 15 minutes.
13
+ * Without TTL those rows are kept until a deploy replaces their build, whose
14
+ * post-deploy step deletes them.
15
+ *
16
+ * The table must be dedicated to this one deployment. Don't share it with
17
+ * another deployment (another branch, stage, or app): every deploy's
18
+ * post-deploy step deletes the entries of the build it last recorded in the
19
+ * table, which with a shared table is another deployment's live build.
12
20
  * @stability stable
13
21
  */
14
22
  readonly revalidationTable?: aws_dynamodb.ITableV2;
15
23
  /**
16
- * Bring your own S3 bucket for cache storage.
17
- * When provided, cdk-nextjs
18
- * will skip creating a new bucket. Cache objects are prefixed with `buildId`
19
- * so multiple deployments can safely share one bucket.
24
+ * Bring your own S3 bucket for cache storage. When provided, cdk-nextjs will skip creating a new bucket.
25
+ * The bucket must be dedicated to this one deployment. Don't share it with
26
+ * another deployment (another branch, stage, or app): every deploy's
27
+ * post-deploy step deletes every object under a top-level prefix other than
28
+ * the current `buildId/`, which includes every other deployment's cache.
20
29
  * @stability stable
21
30
  */
22
31
  readonly cacheBucket?: aws_s3.IBucket;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNDYWNoZVByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwicG5wbSBkbHggcHJvamVuXCIuXG5pbXBvcnQgdHlwZSB7IGF3c19keW5hbW9kYiwgYXdzX3MzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBEeW5hbW9EQiB0YWJsZSBmb3IgcmV2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICAgKiBXaGVuIHByb3ZpZGVkLFxuICAgKiBjZGstbmV4dGpzIHdpbGwgc2tpcCBjcmVhdGluZyBhIG5ldyB0YWJsZS4gVGhlIHRhYmxlIG11c3QgaGF2ZSBgcGtgIChTdHJpbmcpXG4gICAqIGFzIHBhcnRpdGlvbiBrZXkgYW5kIGBza2AgKFN0cmluZykgYXMgc29ydCBrZXkuIEVudHJpZXMgYXJlIHBhcnRpdGlvbmVkIGJ5XG4gICAqIGBidWlsZElkYCBzbyBtdWx0aXBsZSBkZXBsb3ltZW50cyBjYW4gc2FmZWx5IHNoYXJlIG9uZSB0YWJsZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gUzMgYnVja2V0IGZvciBjYWNoZSBzdG9yYWdlLlxuICAgKiBXaGVuIHByb3ZpZGVkLCBjZGstbmV4dGpzXG4gICAqIHdpbGwgc2tpcCBjcmVhdGluZyBhIG5ldyBidWNrZXQuIENhY2hlIG9iamVjdHMgYXJlIHByZWZpeGVkIHdpdGggYGJ1aWxkSWRgXG4gICAqIHNvIG11bHRpcGxlIGRlcGxveW1lbnRzIGNhbiBzYWZlbHkgc2hhcmUgb25lIGJ1Y2tldC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBpbml0IGNhY2hlIGRpcmVjdG9yeS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGluaXRDYWNoZURpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBidWlsZElkPzogc3RyaW5nO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNDYWNoZVByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwicG5wbSBkbHggcHJvamVuXCIuXG5pbXBvcnQgdHlwZSB7IGF3c19keW5hbW9kYiwgYXdzX3MzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcyB7XG4gIC8qKlxuICAgKiBCcmluZyB5b3VyIG93biBEeW5hbW9EQiB0YWJsZSBmb3IgcmV2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICAgKiBXaGVuIHByb3ZpZGVkLFxuICAgKiBjZGstbmV4dGpzIHdpbGwgc2tpcCBjcmVhdGluZyBhIG5ldyB0YWJsZS4gVGhlIHRhYmxlIG11c3QgaGF2ZSBgcGtgIChTdHJpbmcpXG4gICAqIGFzIHBhcnRpdGlvbiBrZXkgYW5kIGBza2AgKFN0cmluZykgYXMgc29ydCBrZXkuXG4gICAqIEVuYWJsaW5nIFRUTCBvbiBpdHMgYHR0bGAgYXR0cmlidXRlIGlzIHJlY29tbWVuZGVkOiBlYWNoIHRhZyByZXZhbGlkYXRpb25cbiAgICogd3JpdGVzIGEgcmV2YWxpZGF0aW9uIGxvZyByb3cgdGhhdCBleHBpcmVzIHRocm91Z2ggaXQgYWZ0ZXIgMTUgbWludXRlcy5cbiAgICogV2l0aG91dCBUVEwgdGhvc2Ugcm93cyBhcmUga2VwdCB1bnRpbCBhIGRlcGxveSByZXBsYWNlcyB0aGVpciBidWlsZCwgd2hvc2VcbiAgICogcG9zdC1kZXBsb3kgc3RlcCBkZWxldGVzIHRoZW0uXG4gICAqXG4gICAqIFRoZSB0YWJsZSBtdXN0IGJlIGRlZGljYXRlZCB0byB0aGlzIG9uZSBkZXBsb3ltZW50LiBEb24ndCBzaGFyZSBpdCB3aXRoXG4gICAqIGFub3RoZXIgZGVwbG95bWVudCAoYW5vdGhlciBicmFuY2gsIHN0YWdlLCBvciBhcHApOiBldmVyeSBkZXBsb3knc1xuICAgKiBwb3N0LWRlcGxveSBzdGVwIGRlbGV0ZXMgdGhlIGVudHJpZXMgb2YgdGhlIGJ1aWxkIGl0IGxhc3QgcmVjb3JkZWQgaW4gdGhlXG4gICAqIHRhYmxlLCB3aGljaCB3aXRoIGEgc2hhcmVkIHRhYmxlIGlzIGFub3RoZXIgZGVwbG95bWVudCdzIGxpdmUgYnVpbGQuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZT86IGF3c19keW5hbW9kYi5JVGFibGVWMjtcbiAgLyoqXG4gICAqIEJyaW5nIHlvdXIgb3duIFMzIGJ1Y2tldCBmb3IgY2FjaGUgc3RvcmFnZS4gV2hlbiBwcm92aWRlZCwgY2RrLW5leHRqcyB3aWxsIHNraXAgY3JlYXRpbmcgYSBuZXcgYnVja2V0LlxuICAgKiBUaGUgYnVja2V0IG11c3QgYmUgZGVkaWNhdGVkIHRvIHRoaXMgb25lIGRlcGxveW1lbnQuIERvbid0IHNoYXJlIGl0IHdpdGhcbiAgICogYW5vdGhlciBkZXBsb3ltZW50IChhbm90aGVyIGJyYW5jaCwgc3RhZ2UsIG9yIGFwcCk6IGV2ZXJ5IGRlcGxveSdzXG4gICAqIHBvc3QtZGVwbG95IHN0ZXAgZGVsZXRlcyBldmVyeSBvYmplY3QgdW5kZXIgYSB0b3AtbGV2ZWwgcHJlZml4IG90aGVyIHRoYW5cbiAgICogdGhlIGN1cnJlbnQgYGJ1aWxkSWQvYCwgd2hpY2ggaW5jbHVkZXMgZXZlcnkgb3RoZXIgZGVwbG95bWVudCdzIGNhY2hlLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbiAgLyoqXG4gICAqIEFic29sdXRlIHBhdGggdG8gdGhlIGluaXQgY2FjaGUgZGlyZWN0b3J5LlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdENhY2hlRGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSWQ/OiBzdHJpbmc7XG59XG4iXX0=
@@ -21,28 +21,47 @@ export interface OptionalNextjsContainersProps {
21
21
  * @stability stable
22
22
  */
23
23
  readonly alb?: aws_elasticloadbalancingv2.IApplicationLoadBalancer;
24
+ /**
25
+ * From the deployment root to the Next.js project dir, POSIX, `""` at the repo root.
26
+ * @stability stable
27
+ */
28
+ readonly relativeProjectDir?: string;
24
29
  /**
25
30
  * @stability stable
26
31
  */
27
32
  readonly relativeEntrypointPath?: string;
28
33
  /**
29
- * Relative path from buildDirectory to the package containing Next.js app.
34
+ * Path to an API Route Handler that returns HTTP 200, used by the ALB target group and the ECS container health check.
35
+ * Both hit the app directly, so this
36
+ * is the path including the app's `basePath` — the root constructs prefix their
37
+ * own `healthCheckPath` prop with it.
30
38
  * @stability stable
31
39
  */
32
- readonly relativePathToPackage?: string;
40
+ readonly healthCheckPath?: string;
33
41
  /**
34
- * DynamoDB table for revalidation metadata.
42
+ * Directory where the Next.js application is located: the Docker build context, holding the `.next` directory and other build artifacts.
35
43
  * @stability stable
36
44
  */
37
- readonly revalidationTable?: aws_dynamodb.ITableV2;
45
+ readonly buildDirectory?: string;
38
46
  /**
47
+ * Key prefix the assets were uploaded under, so the image optimizer can rebuild the same keys.
39
48
  * @stability stable
40
49
  */
41
- readonly nextjsType?: NextjsType;
50
+ readonly staticAssetsKeyPrefix?: string;
42
51
  /**
52
+ * S3 bucket holding `.next/static` and `public`. On every type but `NextjsRegionalContainers` the runtime reads it: its image optimizer fetches the bytes of every non-absolute `<Image>` from S3, since they are deliberately not in the deployment package, and so does a rewrite that lands on a `public/` file. `NextjsRegionalContainers` carries both in its image, so it gets neither the bucket's environment nor read access to it. Read access is scoped to `staticAssetsKeyPrefix`.
43
53
  * @stability stable
44
54
  */
45
- readonly healthCheckPath?: string;
55
+ readonly staticAssetsBucket?: aws_s3.IBucket;
56
+ /**
57
+ * DynamoDB table for revalidation metadata.
58
+ * @stability stable
59
+ */
60
+ readonly revalidationTable?: aws_dynamodb.ITableV2;
61
+ /**
62
+ * @stability stable
63
+ */
64
+ readonly nextjsType?: NextjsType;
46
65
  /**
47
66
  * S3 bucket for cache storage.
48
67
  * @stability stable
@@ -53,9 +72,4 @@ export interface OptionalNextjsContainersProps {
53
72
  * @stability stable
54
73
  */
55
74
  readonly buildId?: string;
56
- /**
57
- * Directory where the Next.js application is located. This should contain the .next directory and other build artifacts. Required for local builds.
58
- * @stability stable
59
- */
60
- readonly buildDirectory?: string;
61
75
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZHluYW1vZGIsIGF3c19lY3MsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUgfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gRUNTIGNsdXN0ZXIuXG4gICAqIFdoZW4gcHJvdmlkZWQsIGNkay1uZXh0anMgd2lsbCBza2lwIGNyZWF0aW5nXG4gICAqIGEgbmV3IGNsdXN0ZXIgYW5kIFZQQyBnYXRld2F5IGVuZHBvaW50cy4gVGhlIGNsdXN0ZXIgaXMgcGFzc2VkIGRpcmVjdGx5XG4gICAqIHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGVjc0NsdXN0ZXI/OiBhd3NfZWNzLklDbHVzdGVyO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlci5cbiAgICogV2hlbiBwcm92aWRlZCwgaXQgaXMgcGFzc2VkXG4gICAqIGRpcmVjdGx5IHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC4gSWYgdGhlIEFMQiBhbHJlYWR5XG4gICAqIGhhcyBhIGxpc3RlbmVyIG9uIHBvcnQgODAsIGNhbGwgYHJlbW92ZUF1dG9DcmVhdGVkTGlzdGVuZXIoKWAgYWZ0ZXJcbiAgICogY29uc3RydWN0aW9uIHRvIGF2b2lkIGRlcGxveW1lbnQgZmFpbHVyZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhbGI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5JQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVFbnRyeXBvaW50UGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggZnJvbSBidWlsZERpcmVjdG9yeSB0byB0aGUgcGFja2FnZSBjb250YWluaW5nIE5leHQuanMgYXBwLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsYXRpdmVQYXRoVG9QYWNrYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIHJldmFsaWRhdGlvbiBtZXRhZGF0YS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCBmb3IgY2FjaGUgc3RvcmFnZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBCdWlsZCBJRCBmb3IgY2FjaGUga2V5IHByZWZpeGluZy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2hlcmUgdGhlIE5leHQuanMgYXBwbGljYXRpb24gaXMgbG9jYXRlZC4gVGhpcyBzaG91bGQgY29udGFpbiB0aGUgLm5leHQgZGlyZWN0b3J5IGFuZCBvdGhlciBidWlsZCBhcnRpZmFjdHMuIFJlcXVpcmVkIGZvciBsb2NhbCBidWlsZHMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBidWlsZERpcmVjdG9yeT86IHN0cmluZztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfZHluYW1vZGIsIGF3c19lY3MsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUgfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gRUNTIGNsdXN0ZXIuXG4gICAqIFdoZW4gcHJvdmlkZWQsIGNkay1uZXh0anMgd2lsbCBza2lwIGNyZWF0aW5nXG4gICAqIGEgbmV3IGNsdXN0ZXIgYW5kIFZQQyBnYXRld2F5IGVuZHBvaW50cy4gVGhlIGNsdXN0ZXIgaXMgcGFzc2VkIGRpcmVjdGx5XG4gICAqIHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGVjc0NsdXN0ZXI/OiBhd3NfZWNzLklDbHVzdGVyO1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlci5cbiAgICogV2hlbiBwcm92aWRlZCwgaXQgaXMgcGFzc2VkXG4gICAqIGRpcmVjdGx5IHRvIGBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlYC4gSWYgdGhlIEFMQiBhbHJlYWR5XG4gICAqIGhhcyBhIGxpc3RlbmVyIG9uIHBvcnQgODAsIGNhbGwgYHJlbW92ZUF1dG9DcmVhdGVkTGlzdGVuZXIoKWAgYWZ0ZXJcbiAgICogY29uc3RydWN0aW9uIHRvIGF2b2lkIGRlcGxveW1lbnQgZmFpbHVyZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhbGI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5JQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIC8qKlxuICAgKiBGcm9tIHRoZSBkZXBsb3ltZW50IHJvb3QgdG8gdGhlIE5leHQuanMgcHJvamVjdCBkaXIsIFBPU0lYLCBgXCJcImAgYXQgdGhlIHJlcG8gcm9vdC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUHJvamVjdERpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZUVudHJ5cG9pbnRQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byBhbiBBUEkgUm91dGUgSGFuZGxlciB0aGF0IHJldHVybnMgSFRUUCAyMDAsIHVzZWQgYnkgdGhlIEFMQiB0YXJnZXQgZ3JvdXAgYW5kIHRoZSBFQ1MgY29udGFpbmVyIGhlYWx0aCBjaGVjay5cbiAgICogQm90aCBoaXQgdGhlIGFwcCBkaXJlY3RseSwgc28gdGhpc1xuICAgKiBpcyB0aGUgcGF0aCBpbmNsdWRpbmcgdGhlIGFwcCdzIGBiYXNlUGF0aGAg4oCUIHRoZSByb290IGNvbnN0cnVjdHMgcHJlZml4IHRoZWlyXG4gICAqIG93biBgaGVhbHRoQ2hlY2tQYXRoYCBwcm9wIHdpdGggaXQuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2hlcmUgdGhlIE5leHQuanMgYXBwbGljYXRpb24gaXMgbG9jYXRlZDogdGhlIERvY2tlciBidWlsZCBjb250ZXh0LCBob2xkaW5nIHRoZSBgLm5leHRgIGRpcmVjdG9yeSBhbmQgb3RoZXIgYnVpbGQgYXJ0aWZhY3RzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGREaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBLZXkgcHJlZml4IHRoZSBhc3NldHMgd2VyZSB1cGxvYWRlZCB1bmRlciwgc28gdGhlIGltYWdlIG9wdGltaXplciBjYW4gcmVidWlsZCB0aGUgc2FtZSBrZXlzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzS2V5UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogUzMgYnVja2V0IGhvbGRpbmcgYC5uZXh0L3N0YXRpY2AgYW5kIGBwdWJsaWNgLiBPbiBldmVyeSB0eXBlIGJ1dCBgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzYCB0aGUgcnVudGltZSByZWFkcyBpdDogaXRzIGltYWdlIG9wdGltaXplciBmZXRjaGVzIHRoZSBieXRlcyBvZiBldmVyeSBub24tYWJzb2x1dGUgYDxJbWFnZT5gIGZyb20gUzMsIHNpbmNlIHRoZXkgYXJlIGRlbGliZXJhdGVseSBub3QgaW4gdGhlIGRlcGxveW1lbnQgcGFja2FnZSwgYW5kIHNvIGRvZXMgYSByZXdyaXRlIHRoYXQgbGFuZHMgb24gYSBgcHVibGljL2AgZmlsZS4gYE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc2AgY2FycmllcyBib3RoIGluIGl0cyBpbWFnZSwgc28gaXQgZ2V0cyBuZWl0aGVyIHRoZSBidWNrZXQncyBlbnZpcm9ubWVudCBub3IgcmVhZCBhY2Nlc3MgdG8gaXQuIFJlYWQgYWNjZXNzIGlzIHNjb3BlZCB0byBgc3RhdGljQXNzZXRzS2V5UHJlZml4YC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IGF3c19zMy5JQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIHJldmFsaWRhdGlvbiBtZXRhZGF0YS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogUzMgYnVja2V0IGZvciBjYWNoZSBzdG9yYWdlLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbiAgLyoqXG4gICAqIEJ1aWxkIElEIGZvciBjYWNoZSBrZXkgcHJlZml4aW5nLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -5,20 +5,22 @@ import type { NextjsType, PublicDirEntry } from '../';
5
5
  */
6
6
  export interface OptionalNextjsDistributionProps {
7
7
  /**
8
- * Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`.
8
+ * The most cache behaviors the distribution may have, the default one included.
9
+ * cdk-nextjs counts what it adds against this at synth, so running
10
+ * out is a synth error naming what used them rather than a failed deploy.
11
+ *
12
+ * Raise it after raising the "Cache behaviors per distribution" quota for
13
+ * your account. Lower it by the behaviors a supplied {@link distribution}
14
+ * (or `overrides.distributionProps`) already has, which are not counted.
15
+ * @default 75 - CloudFront's default quota
9
16
  * @stability stable
10
17
  */
11
- readonly loadBalancer?: aws_elasticloadbalancingv2.IApplicationLoadBalancer;
18
+ readonly maxCacheBehaviors?: number;
12
19
  /**
13
- * Function URL of the dedicated image optimization Lambda.
14
- * Only applicable
15
- * to `NextjsType.GLOBAL_FUNCTIONS`, and only when the dedicated image
16
- * function is enabled. When omitted, the `_next/image*` behavior points at
17
- * the dynamic origin, which serves image optimization from the Next.js
18
- * server itself.
20
+ * Required if `NextjsType.GLOBAL_CONTAINERS` or `NextjsType.REGIONAL_CONTAINERS`.
19
21
  * @stability stable
20
22
  */
21
- readonly imageFunctionUrl?: aws_lambda.IFunctionUrl;
23
+ readonly loadBalancer?: aws_elasticloadbalancingv2.IApplicationLoadBalancer;
22
24
  /**
23
25
  * Required if `NextjsType.GLOBAL_FUNCTIONS`.
24
26
  * @stability stable
@@ -40,6 +42,26 @@ export interface OptionalNextjsDistributionProps {
40
42
  * @stability stable
41
43
  */
42
44
  readonly basePath?: string;
45
+ /**
46
+ * The app's own `assetPrefix`.
47
+ * Next.js emits `<assetPrefix>/_next/static/...`
48
+ * for every bundle while the objects stay at `<basePath>/_next/static/...` in
49
+ * S3, so the prefix's path gets a cache behavior of its own that rewrites it
50
+ * away.
51
+ *
52
+ * Either form is accepted: a path ("/cdn"), or an absolute URL, in which case
53
+ * only its path counts ("https://cdn.example.com/cdn" behaves as "/cdn", and
54
+ * "https://cdn.example.com" needs no behavior at all). An absolute prefix's path
55
+ * matters because `next build` compiles a `/cdn/_next/:path+` rewrite of its
56
+ * own, so `next start` serves every bundle under it — a CDN fronting this
57
+ * distribution there has to be answered too.
58
+ *
59
+ * Applied on top of `basePath`, not under it, because that is how Next.js
60
+ * builds the URL.
61
+ * @default - none; pass `NextjsBuild.nextConfigAssetPrefixPath`
62
+ * @stability stable
63
+ */
64
+ readonly assetPrefix?: string;
43
65
  /**
44
66
  * Entries (files/directories) within Next.js app's public directory. Used to add static behaviors to distribution.
45
67
  * @stability stable
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5JQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiBVUkwgb2YgdGhlIGRlZGljYXRlZCBpbWFnZSBvcHRpbWl6YXRpb24gTGFtYmRhLlxuICAgKiBPbmx5IGFwcGxpY2FibGVcbiAgICogdG8gYE5leHRqc1R5cGUuR0xPQkFMX0ZVTkNUSU9OU2AsIGFuZCBvbmx5IHdoZW4gdGhlIGRlZGljYXRlZCBpbWFnZVxuICAgKiBmdW5jdGlvbiBpcyBlbmFibGVkLiBXaGVuIG9taXR0ZWQsIHRoZSBgX25leHQvaW1hZ2UqYCBiZWhhdmlvciBwb2ludHMgYXRcbiAgICogdGhlIGR5bmFtaWMgb3JpZ2luLCB3aGljaCBzZXJ2ZXMgaW1hZ2Ugb3B0aW1pemF0aW9uIGZyb20gdGhlIE5leHQuanNcbiAgICogc2VydmVyIGl0c2VsZi5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlRnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBPcHRpb25hbCBidXQgb25seSBhcHBsaWNhYmxlIGZvciBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlO1xuICAvKipcbiAgICogVVJJIHBhdGggcHJlZml4IHRoZSBhcHAgaXMgc2VydmVkIGF0LlxuICAgKiBTdXJyb3VuZGluZyBzbGFzaGVzIGFyZSBub3JtYWxpemVkXG4gICAqIGF3YXksIHNvIFwiL2Jhc2VcIiwgXCJiYXNlXCIgYW5kIFwiL2Jhc2UvXCIgYWxsIHByb2R1Y2UgdGhlIHNhbWUgY2FjaGUgYmVoYXZpb3JzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnRyaWVzIChmaWxlcy9kaXJlY3Rvcmllcykgd2l0aGluIE5leHQuanMgYXBwJ3MgcHVibGljIGRpcmVjdG9yeS4gVXNlZCB0byBhZGQgc3RhdGljIGJlaGF2aW9ycyB0byBkaXN0cmlidXRpb24uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNEaXJFbnRyaWVzPzogQXJyYXk8UHVibGljRGlyRW50cnk+O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogQnVja2V0IGNvbnRhaW5pbmcgc3RhdGljIGFzc2V0cy5cbiAgICogTXVzdCBiZSBwcm92aWRlZCBpZiB5b3Ugd2FudCB0byBzZXJ2ZSBzdGF0aWMgZmlsZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhc3NldHNCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbW9zdCBjYWNoZSBiZWhhdmlvcnMgdGhlIGRpc3RyaWJ1dGlvbiBtYXkgaGF2ZSwgdGhlIGRlZmF1bHQgb25lIGluY2x1ZGVkLlxuICAgKiBjZGstbmV4dGpzIGNvdW50cyB3aGF0IGl0IGFkZHMgYWdhaW5zdCB0aGlzIGF0IHN5bnRoLCBzbyBydW5uaW5nXG4gICAqIG91dCBpcyBhIHN5bnRoIGVycm9yIG5hbWluZyB3aGF0IHVzZWQgdGhlbSByYXRoZXIgdGhhbiBhIGZhaWxlZCBkZXBsb3kuXG4gICAqXG4gICAqIFJhaXNlIGl0IGFmdGVyIHJhaXNpbmcgdGhlIFwiQ2FjaGUgYmVoYXZpb3JzIHBlciBkaXN0cmlidXRpb25cIiBxdW90YSBmb3JcbiAgICogeW91ciBhY2NvdW50LiBMb3dlciBpdCBieSB0aGUgYmVoYXZpb3JzIGEgc3VwcGxpZWQge0BsaW5rIGRpc3RyaWJ1dGlvbn1cbiAgICogKG9yIGBvdmVycmlkZXMuZGlzdHJpYnV0aW9uUHJvcHNgKSBhbHJlYWR5IGhhcywgd2hpY2ggYXJlIG5vdCBjb3VudGVkLlxuICAgKiBAZGVmYXVsdCA3NSAtIENsb3VkRnJvbnQncyBkZWZhdWx0IHF1b3RhXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBtYXhDYWNoZUJlaGF2aW9ycz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTYCBvciBgTmV4dGpzVHlwZS5SRUdJT05BTF9DT05UQUlORVJTYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlcj86IGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLklBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBPcHRpb25hbCBidXQgb25seSBhcHBsaWNhYmxlIGZvciBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlO1xuICAvKipcbiAgICogVVJJIHBhdGggcHJlZml4IHRoZSBhcHAgaXMgc2VydmVkIGF0LlxuICAgKiBTdXJyb3VuZGluZyBzbGFzaGVzIGFyZSBub3JtYWxpemVkXG4gICAqIGF3YXksIHNvIFwiL2Jhc2VcIiwgXCJiYXNlXCIgYW5kIFwiL2Jhc2UvXCIgYWxsIHByb2R1Y2UgdGhlIHNhbWUgY2FjaGUgYmVoYXZpb3JzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYXBwJ3Mgb3duIGBhc3NldFByZWZpeGAuXG4gICAqIE5leHQuanMgZW1pdHMgYDxhc3NldFByZWZpeD4vX25leHQvc3RhdGljLy4uLmBcbiAgICogZm9yIGV2ZXJ5IGJ1bmRsZSB3aGlsZSB0aGUgb2JqZWN0cyBzdGF5IGF0IGA8YmFzZVBhdGg+L19uZXh0L3N0YXRpYy8uLi5gIGluXG4gICAqIFMzLCBzbyB0aGUgcHJlZml4J3MgcGF0aCBnZXRzIGEgY2FjaGUgYmVoYXZpb3Igb2YgaXRzIG93biB0aGF0IHJld3JpdGVzIGl0XG4gICAqIGF3YXkuXG4gICAqXG4gICAqIEVpdGhlciBmb3JtIGlzIGFjY2VwdGVkOiBhIHBhdGggKFwiL2NkblwiKSwgb3IgYW4gYWJzb2x1dGUgVVJMLCBpbiB3aGljaCBjYXNlXG4gICAqIG9ubHkgaXRzIHBhdGggY291bnRzIChcImh0dHBzOi8vY2RuLmV4YW1wbGUuY29tL2NkblwiIGJlaGF2ZXMgYXMgXCIvY2RuXCIsIGFuZFxuICAgKiBcImh0dHBzOi8vY2RuLmV4YW1wbGUuY29tXCIgbmVlZHMgbm8gYmVoYXZpb3IgYXQgYWxsKS4gQW4gYWJzb2x1dGUgcHJlZml4J3MgcGF0aFxuICAgKiBtYXR0ZXJzIGJlY2F1c2UgYG5leHQgYnVpbGRgIGNvbXBpbGVzIGEgYC9jZG4vX25leHQvOnBhdGgrYCByZXdyaXRlIG9mIGl0c1xuICAgKiBvd24sIHNvIGBuZXh0IHN0YXJ0YCBzZXJ2ZXMgZXZlcnkgYnVuZGxlIHVuZGVyIGl0IOKAlCBhIENETiBmcm9udGluZyB0aGlzXG4gICAqIGRpc3RyaWJ1dGlvbiB0aGVyZSBoYXMgdG8gYmUgYW5zd2VyZWQgdG9vLlxuICAgKlxuICAgKiBBcHBsaWVkIG9uIHRvcCBvZiBgYmFzZVBhdGhgLCBub3QgdW5kZXIgaXQsIGJlY2F1c2UgdGhhdCBpcyBob3cgTmV4dC5qc1xuICAgKiBidWlsZHMgdGhlIFVSTC5cbiAgICogQGRlZmF1bHQgLSBub25lOyBwYXNzIGBOZXh0anNCdWlsZC5uZXh0Q29uZmlnQXNzZXRQcmVmaXhQYXRoYFxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbnRyaWVzIChmaWxlcy9kaXJlY3Rvcmllcykgd2l0aGluIE5leHQuanMgYXBwJ3MgcHVibGljIGRpcmVjdG9yeS4gVXNlZCB0byBhZGQgc3RhdGljIGJlaGF2aW9ycyB0byBkaXN0cmlidXRpb24uXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNEaXJFbnRyaWVzPzogQXJyYXk8UHVibGljRGlyRW50cnk+O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG5leHRqc1R5cGU/OiBOZXh0anNUeXBlO1xuICAvKipcbiAgICogQnVja2V0IGNvbnRhaW5pbmcgc3RhdGljIGFzc2V0cy5cbiAgICogTXVzdCBiZSBwcm92aWRlZCBpZiB5b3Ugd2FudCB0byBzZXJ2ZSBzdGF0aWMgZmlsZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhc3NldHNCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbn1cbiJdfQ==
@@ -34,6 +34,14 @@ export interface OptionalNextjsPostDeployProps {
34
34
  * @stability stable
35
35
  */
36
36
  readonly cacheBucket?: aws_s3.IBucket;
37
+ /**
38
+ * The app's `basePath`.
39
+ * Scopes the deploy's CloudFront invalidation to the
40
+ * app's URIs, so a deploy doesn't flush other apps on the same distribution.
41
+ * @default - the whole distribution (`/*`)
42
+ * @stability stable
43
+ */
44
+ readonly basePath?: string;
37
45
  /**
38
46
  * @stability stable
39
47
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfY2xvdWRmcm9udCwgYXdzX2R5bmFtb2RiLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB7XG4gIC8qKlxuICAgKiBTMyBrZXkgcHJlZml4IHRoZSBzdGF0aWMgYXNzZXRzIHdlcmUgdXBsb2FkZWQgdW5kZXIgKGBOZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4YCkuIFNjb3BlcyBwcnVuaW5nIHRvIHRoaXMgYXBwJ3Mgb2JqZWN0cywgc28gdGhhdCBhcHBzIG9yIGJyYW5jaGVzIHNoYXJpbmcgb25lIGJ1Y2tldCB1bmRlciBkaWZmZXJlbnQgYGJhc2VQYXRoYHMgZG9uJ3QgcHJ1bmUgZWFjaCBvdGhlcidzIGFzc2V0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0tleVByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGZvciBgTmV4dGpzVHlwZS5HbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzVHlwZS5HbG9iYWxDb250YWluZXJzYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IGF3c19zMy5JQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIGNsZWFuaW5nIHVwIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCByZXZhbGlkYXRpb24gZW50cmllcy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gdG8gaW52YWxpZGF0ZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IGF3c19jbG91ZGZyb250LklEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBsb2dzIGRldGFpbHMgaW4gY3VzdG9tIHJlc291cmNlIGxhbWJkYS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICAvKipcbiAgICogQ2FjaGUgYnVja2V0IGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJZD86IHN0cmluZztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfY2xvdWRmcm9udCwgYXdzX2R5bmFtb2RiLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB7XG4gIC8qKlxuICAgKiBTMyBrZXkgcHJlZml4IHRoZSBzdGF0aWMgYXNzZXRzIHdlcmUgdXBsb2FkZWQgdW5kZXIgKGBOZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4YCkuIFNjb3BlcyBwcnVuaW5nIHRvIHRoaXMgYXBwJ3Mgb2JqZWN0cywgc28gdGhhdCBhcHBzIG9yIGJyYW5jaGVzIHNoYXJpbmcgb25lIGJ1Y2tldCB1bmRlciBkaWZmZXJlbnQgYGJhc2VQYXRoYHMgZG9uJ3QgcHJ1bmUgZWFjaCBvdGhlcidzIGFzc2V0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0tleVByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGZvciBgTmV4dGpzVHlwZS5HbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzVHlwZS5HbG9iYWxDb250YWluZXJzYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IGF3c19zMy5JQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIGNsZWFuaW5nIHVwIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCByZXZhbGlkYXRpb24gZW50cmllcy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gdG8gaW52YWxpZGF0ZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IGF3c19jbG91ZGZyb250LklEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBsb2dzIGRldGFpbHMgaW4gY3VzdG9tIHJlc291cmNlIGxhbWJkYS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICAvKipcbiAgICogQ2FjaGUgYnVja2V0IGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBUaGUgYXBwJ3MgYGJhc2VQYXRoYC5cbiAgICogU2NvcGVzIHRoZSBkZXBsb3kncyBDbG91ZEZyb250IGludmFsaWRhdGlvbiB0byB0aGVcbiAgICogYXBwJ3MgVVJJcywgc28gYSBkZXBsb3kgZG9lc24ndCBmbHVzaCBvdGhlciBhcHBzIG9uIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbi5cbiAgICogQGRlZmF1bHQgLSB0aGUgd2hvbGUgZGlzdHJpYnV0aW9uIChgLypgKVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -4,8 +4,10 @@
4
4
  export interface OptionalPostDeployCustomResourceProperties {
5
5
  /**
6
6
  * S3 key prefix to scope static asset pruning to.
7
- * Empty or absent prunes the
8
- * whole bucket.
7
+ * Only `<prefix>/_next/` is
8
+ * pruned, where every build-hashed asset lives, so `public/` files and other
9
+ * apps' prefixes are never touched. Empty or absent prunes `_next/` at the
10
+ * bucket root.
9
11
  * @stability stable
10
12
  */
11
13
  readonly staticAssetsKeyPrefix?: string;
@@ -24,8 +26,8 @@ export interface OptionalPostDeployCustomResourceProperties {
24
26
  invalidationBatch: {
25
27
  callerReference: new Date().toISOString(),
26
28
  paths: {
27
- quantity: 1,
28
- items: ["/*"], // invalidate all paths
29
+ quantity: paths.length,
30
+ items: paths, // wholeAppInvalidationPaths(basePath)
29
31
  },
30
32
  },
31
33
  }
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  // ~~ Generated by projen. To modify, edit .projenrc.ts and run "pnpm dlx projen".
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0ZBQWtGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwicG5wbSBkbHggcHJvamVuXCIuXG5cbi8qKlxuICogT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFMzIGtleSBwcmVmaXggdG8gc2NvcGUgc3RhdGljIGFzc2V0IHBydW5pbmcgdG8uXG4gICAqIEVtcHR5IG9yIGFic2VudCBwcnVuZXMgdGhlXG4gICAqIHdob2xlIGJ1Y2tldC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0tleVByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNBc3NldHNCdWNrZXROYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRHluYW1vREIgcmV2YWxpZGF0aW9uIHRhYmxlIG5hbWUgZm9yIGNsZWFuaW5nIHVwIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCBlbnRyaWVzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV2YWxpZGF0aW9uVGFibGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQge1xuICAgZGlzdHJpYnV0aW9uSWQ6IHRoaXMucHJvcHMuZGlzdHJpYnV0aW9uPy5kaXN0cmlidXRpb25JZCxcbiAgIGludmFsaWRhdGlvbkJhdGNoOiB7XG4gICAgIGNhbGxlclJlZmVyZW5jZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICBwYXRoczoge1xuICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgIGl0ZW1zOiBbXCIvKlwiXSwgLy8gaW52YWxpZGF0ZSBhbGwgcGF0aHNcbiAgICAgfSxcbiAgIH0sXG4gfVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIENhY2hlIGJ1Y2tldCBuYW1lIGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRpbWUgdG8gbGl2ZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIE11c3QgYmUgc3RyaW5nIGJlY2F1c2Ugb2YgQ2xvdWRGb3JtYXRpb24gQ3VzdG9tIFJlc291cmNlIGxpbWl0YXRpb25cbiAgICogQGRlZmF1bHQgKDEwMDAgKiA2MCAqIDYwICogMjQgKiAzMCkudG9TdHJpbmcoKVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbXNUdGw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCdWlsZCBJRCBvZiBjdXJyZW50IGRlcGxveW1lbnQuXG4gICAqIFVzZWQgdG8gcHJ1bmUgY2FjaGUgYnVja2V0IG9mIG9iamVjdHNcbiAgICogd2l0aCBvbGQgYnVpbGQgaWRzLCBwcnVuZSBEeW5hbW9EQiByZXZhbGlkYXRpb24gZW50cmllcyB3aXRoIG9sZCBidWlsZCBpZHMsXG4gICAqIGFuZCBwcnVuZSBTMyBzdGF0aWMgYXNzZXRzIGJhc2VkIG9uIG1ldGFkYXRhIGFuZCBgbXNUdGxgXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBidWlsZElkPzogc3RyaW5nO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0ZBQWtGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwicG5wbSBkbHggcHJvamVuXCIuXG5cbi8qKlxuICogT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFMzIGtleSBwcmVmaXggdG8gc2NvcGUgc3RhdGljIGFzc2V0IHBydW5pbmcgdG8uXG4gICAqIE9ubHkgYDxwcmVmaXg+L19uZXh0L2AgaXNcbiAgICogcHJ1bmVkLCB3aGVyZSBldmVyeSBidWlsZC1oYXNoZWQgYXNzZXQgbGl2ZXMsIHNvIGBwdWJsaWMvYCBmaWxlcyBhbmQgb3RoZXJcbiAgICogYXBwcycgcHJlZml4ZXMgYXJlIG5ldmVyIHRvdWNoZWQuIEVtcHR5IG9yIGFic2VudCBwcnVuZXMgYF9uZXh0L2AgYXQgdGhlXG4gICAqIGJ1Y2tldCByb290LlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGljQXNzZXRzS2V5UHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEeW5hbW9EQiByZXZhbGlkYXRpb24gdGFibGUgbmFtZSBmb3IgY2xlYW5pbmcgdXAgb2xkIEJVSUxEX0lEIHByZWZpeGVkIGVudHJpZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCB7XG4gICBkaXN0cmlidXRpb25JZDogdGhpcy5wcm9wcy5kaXN0cmlidXRpb24/LmRpc3RyaWJ1dGlvbklkLFxuICAgaW52YWxpZGF0aW9uQmF0Y2g6IHtcbiAgICAgY2FsbGVyUmVmZXJlbmNlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgIHBhdGhzOiB7XG4gICAgICAgcXVhbnRpdHk6IHBhdGhzLmxlbmd0aCxcbiAgICAgICBpdGVtczogcGF0aHMsIC8vIHdob2xlQXBwSW52YWxpZGF0aW9uUGF0aHMoYmFzZVBhdGgpXG4gICAgIH0sXG4gICB9LFxuIH1cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUludmFsaWRhdGlvbkNvbW1hbmRJbnB1dD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBDYWNoZSBidWNrZXQgbmFtZSBmb3IgY2xlYW5pbmcgdXAgb2xkIEJVSUxEX0lEIHByZWZpeGVkIG9iamVjdHMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjYWNoZUJ1Y2tldE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaW1lIHRvIGxpdmUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBNdXN0IGJlIHN0cmluZyBiZWNhdXNlIG9mIENsb3VkRm9ybWF0aW9uIEN1c3RvbSBSZXNvdXJjZSBsaW1pdGF0aW9uXG4gICAqIEBkZWZhdWx0ICgxMDAwICogNjAgKiA2MCAqIDI0ICogMzApLnRvU3RyaW5nKClcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IG1zVHRsPzogc3RyaW5nO1xuICAvKipcbiAgICogQnVpbGQgSUQgb2YgY3VycmVudCBkZXBsb3ltZW50LlxuICAgKiBVc2VkIHRvIHBydW5lIGNhY2hlIGJ1Y2tldCBvZiBvYmplY3RzXG4gICAqIHdpdGggb2xkIGJ1aWxkIGlkcywgcHJ1bmUgRHluYW1vREIgcmV2YWxpZGF0aW9uIGVudHJpZXMgd2l0aCBvbGQgYnVpbGQgaWRzLFxuICAgKiBhbmQgcHJ1bmUgUzMgc3RhdGljIGFzc2V0cyBiYXNlZCBvbiBtZXRhZGF0YSBhbmQgYG1zVHRsYFxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJZD86IHN0cmluZztcbn1cbiJdfQ==
package/lib/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  export { NextjsType } from "./constants";
2
- export { NextjsApi, NextjsApiProps, NextjsApiOverrides } from "./nextjs-api";
3
- export { NextjsBaseConstructOverrides, NextjsFunctionsConstructOverrides, NextjsBaseOverrides, NextjsBaseConstruct, NextjsBaseProps, NextjsBaseConstructProps, } from "./root-constructs/nextjs-base-construct";
4
- export { NextjsBuild, NextjsBuildProps, PublicDirEntry, } from "./nextjs-build/nextjs-build";
2
+ export { NextjsApi, NextjsApiProps, NextjsApiOverrides, NextjsApiFunctionGroup, } from "./nextjs-api";
3
+ export { NextjsBaseConstructOverrides, NextjsBaseOverrides, NextjsBaseConstruct, NextjsBaseProps, NextjsBaseConstructProps, } from "./root-constructs/nextjs-base-construct";
4
+ export { NextjsBuild, NextjsBuildProps, NextjsDeploymentRoot, NextjsFunctionGroupBehavior, NextjsFunctionGroupRoutes, PublicDirEntry, } from "./nextjs-build/nextjs-build";
5
5
  export { NextjsComputeBaseProps } from "./nextjs-compute/nextjs-compute-base-props";
6
6
  export { NextjsContainers, NextjsContainersOverrides, NextjsContainersProps, } from "./nextjs-compute/nextjs-containers";
7
- export { NextjsDistribution, NextjsDistributionOverrides, NextjsDistributionProps, } from "./nextjs-distribution";
8
- export { NextjsFunctions, NextjsFunctionsOverrides, NextjsFunctionsProps, } from "./nextjs-compute/nextjs-functions";
9
- export { NextjsImageFunction, NextjsImageFunctionOverrides, NextjsImageFunctionProps, } from "./nextjs-compute/nextjs-image-function";
7
+ export { NextjsDistribution, NextjsDistributionFunctionGroup, NextjsDistributionOverrides, NextjsDistributionProps, } from "./nextjs-distribution";
8
+ export { NextjsFunctionGroup, NextjsFunctionGroupResources, NextjsFunctions, NextjsFunctionsOverrides, NextjsFunctionsProps, } from "./nextjs-compute/nextjs-functions";
10
9
  export { NextjsCache, NextjsCacheOverrides, NextjsCacheProps, } from "./nextjs-cache";
11
10
  export { NextjsGlobalContainers, NextjsGlobalContainersConstructOverrides, NextjsGlobalContainersOverrides, NextjsGlobalContainersProps, } from "./root-constructs/nextjs-global-containers";
12
11
  export { NextjsGlobalFunctions, NextjsGlobalFunctionsConstructOverrides, NextjsGlobalFunctionsOverrides, NextjsGlobalFunctionsProps, } from "./root-constructs/nextjs-global-functions";
@@ -14,6 +13,7 @@ export { NextjsRegionalContainers, NextjsRegionalContainersConstructOverrides, N
14
13
  export { NextjsRegionalFunctions, NextjsRegionalFunctionsConstructOverrides, NextjsRegionalFunctionsOverrides, NextjsRegionalFunctionsProps, } from "./root-constructs/nextjs-regional-functions";
15
14
  export { NextjsPostDeploy, NextjsPostDeployOverrides, NextjsPostDeployProps, PostDeployCustomResourceProperties, } from "./nextjs-post-deploy";
16
15
  export { NextjsStaticAssets, NextjsStaticAssetsOverrides, NextjsStaticAssetsProps, } from "./nextjs-static-assets";
16
+ export { OptionalNextjsApiProps } from "./generated-structs/OptionalNextjsApiProps";
17
17
  export { OptionalNextjsBuildProps } from "./generated-structs/OptionalNextjsBuildProps";
18
18
  export { OptionalNextjsContainersProps } from "./generated-structs/OptionalNextjsContainersProps";
19
19
  export { OptionalNextjsDistributionProps } from "./generated-structs/OptionalNextjsDistributionProps";
@@ -23,7 +23,6 @@ export { OptionalCloudFrontFunctionProps } from "./generated-structs/OptionalClo
23
23
  export { OptionalClusterProps } from "./generated-structs/OptionalClusterProps";
24
24
  export { OptionalDistributionProps } from "./generated-structs/OptionalDistributionProps";
25
25
  export { OptionalDockerImageAssetProps } from "./generated-structs/OptionalDockerImageAssetProps";
26
- export { OptionalDockerImageFunctionProps } from "./generated-structs/OptionalDockerImageFunctionProps";
27
26
  export { OptionalEdgeFunctionProps } from "./generated-structs/OptionalEdgeFunctionProps";
28
27
  export { OptionalFunctionProps } from "./generated-structs/OptionalFunctionProps";
29
28
  export { OptionalFunctionUrlProps } from "./generated-structs/OptionalFunctionUrlProps";
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalFunctions = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsCache = exports.NextjsImageFunction = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsBaseConstruct = exports.NextjsApi = exports.NextjsType = void 0;
3
+ exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalFunctions = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsCache = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsBaseConstruct = 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
6
  var nextjs_api_1 = require("./nextjs-api");
@@ -15,8 +15,6 @@ var nextjs_distribution_1 = require("./nextjs-distribution");
15
15
  Object.defineProperty(exports, "NextjsDistribution", { enumerable: true, get: function () { return nextjs_distribution_1.NextjsDistribution; } });
16
16
  var nextjs_functions_1 = require("./nextjs-compute/nextjs-functions");
17
17
  Object.defineProperty(exports, "NextjsFunctions", { enumerable: true, get: function () { return nextjs_functions_1.NextjsFunctions; } });
18
- var nextjs_image_function_1 = require("./nextjs-compute/nextjs-image-function");
19
- Object.defineProperty(exports, "NextjsImageFunction", { enumerable: true, get: function () { return nextjs_image_function_1.NextjsImageFunction; } });
20
18
  var nextjs_cache_1 = require("./nextjs-cache");
21
19
  Object.defineProperty(exports, "NextjsCache", { enumerable: true, get: function () { return nextjs_cache_1.NextjsCache; } });
22
20
  var nextjs_global_containers_1 = require("./root-constructs/nextjs-global-containers");
@@ -31,4 +29,4 @@ var nextjs_post_deploy_1 = require("./nextjs-post-deploy");
31
29
  Object.defineProperty(exports, "NextjsPostDeploy", { enumerable: true, get: function () { return nextjs_post_deploy_1.NextjsPostDeploy; } });
32
30
  var nextjs_static_assets_1 = require("./nextjs-static-assets");
33
31
  Object.defineProperty(exports, "NextjsStaticAssets", { enumerable: true, get: function () { return nextjs_static_assets_1.NextjsStaticAssets; } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBQWhDLHVHQUFBLFVBQVUsT0FBQTtBQUNuQiwyQ0FBNkU7QUFBcEUsdUdBQUEsU0FBUyxPQUFBO0FBRWxCLGlGQU9pRDtBQUgvQyw0SEFBQSxtQkFBbUIsT0FBQTtBQUlyQiw0REFJcUM7QUFIbkMsMkdBQUEsV0FBVyxPQUFBO0FBS2Isd0VBSTRDO0FBSDFDLHFIQUFBLGdCQUFnQixPQUFBO0FBSWxCLDZEQUkrQjtBQUg3Qix5SEFBQSxrQkFBa0IsT0FBQTtBQUlwQixzRUFJMkM7QUFIekMsbUhBQUEsZUFBZSxPQUFBO0FBSWpCLGdGQUlnRDtBQUg5Qyw0SEFBQSxtQkFBbUIsT0FBQTtBQUlyQiwrQ0FJd0I7QUFIdEIsMkdBQUEsV0FBVyxPQUFBO0FBSWIsdUZBS29EO0FBSmxELGtJQUFBLHNCQUFzQixPQUFBO0FBS3hCLHFGQUttRDtBQUpqRCxnSUFBQSxxQkFBcUIsT0FBQTtBQUt2QiwyRkFLc0Q7QUFKcEQsc0lBQUEsd0JBQXdCLE9BQUE7QUFLMUIseUZBS3FEO0FBSm5ELG9JQUFBLHVCQUF1QixPQUFBO0FBS3pCLDJEQUs4QjtBQUo1QixzSEFBQSxnQkFBZ0IsT0FBQTtBQUtsQiwrREFJZ0M7QUFIOUIsMEhBQUEsa0JBQWtCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgeyBOZXh0anNBcGksIE5leHRqc0FwaVByb3BzLCBOZXh0anNBcGlPdmVycmlkZXMgfSBmcm9tIFwiLi9uZXh0anMtYXBpXCI7XG5cbmV4cG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0Z1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0J1aWxkLFxuICBOZXh0anNCdWlsZFByb3BzLFxuICBQdWJsaWNEaXJFbnRyeSxcbn0gZnJvbSBcIi4vbmV4dGpzLWJ1aWxkL25leHRqcy1idWlsZFwiO1xuZXhwb3J0IHsgTmV4dGpzQ29tcHV0ZUJhc2VQcm9wcyB9IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1jb21wdXRlLWJhc2UtcHJvcHNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0NvbnRhaW5lcnMsXG4gIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMsXG4gIE5leHRqc0NvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbnRhaW5lcnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgTmV4dGpzRGlzdHJpYnV0aW9uT3ZlcnJpZGVzLFxuICBOZXh0anNEaXN0cmlidXRpb25Qcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWRpc3RyaWJ1dGlvblwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzRnVuY3Rpb25zLFxuICBOZXh0anNGdW5jdGlvbnNPdmVycmlkZXMsXG4gIE5leHRqc0Z1bmN0aW9uc1Byb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtZnVuY3Rpb25zXCI7XG5leHBvcnQge1xuICBOZXh0anNJbWFnZUZ1bmN0aW9uLFxuICBOZXh0anNJbWFnZUZ1bmN0aW9uT3ZlcnJpZGVzLFxuICBOZXh0anNJbWFnZUZ1bmN0aW9uUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1pbWFnZS1mdW5jdGlvblwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQ2FjaGUsXG4gIE5leHRqc0NhY2hlT3ZlcnJpZGVzLFxuICBOZXh0anNDYWNoZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY2FjaGVcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtcmVnaW9uYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnMsXG4gIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1mdW5jdGlvbnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc1Bvc3REZXBsb3ksXG4gIE5leHRqc1Bvc3REZXBsb3lPdmVycmlkZXMsXG4gIE5leHRqc1Bvc3REZXBsb3lQcm9wcyxcbiAgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyxcbn0gZnJvbSBcIi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5leHBvcnQge1xuICBOZXh0anNTdGF0aWNBc3NldHMsXG4gIE5leHRqc1N0YXRpY0Fzc2V0c092ZXJyaWRlcyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1zdGF0aWMtYXNzZXRzXCI7XG5cbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQnVpbGRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQnVpbGRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQ2FjaGVQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlT3B0aW9uc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ2xvdWRGcm9udEZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ2x1c3RlclByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDbHVzdGVyUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERpc3RyaWJ1dGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEVkZ2VGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxFZGdlRnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEZ1bmN0aW9uVXJsUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsUzNPcmlnaW5CdWNrZXRXaXRoT0FDUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbFZwY1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxWcGNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxDdXN0b21SZXNvdXJjZVByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDdXN0b21SZXNvdXJjZVByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbFBvc3REZXBsb3lDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFBvc3REZXBsb3lDdXN0b21SZXNvdXJjZVByb3BlcnRpZXNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHNcIjtcbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBQWhDLHVHQUFBLFVBQVUsT0FBQTtBQUNuQiwyQ0FLc0I7QUFKcEIsdUdBQUEsU0FBUyxPQUFBO0FBTVgsaUZBTWlEO0FBSC9DLDRIQUFBLG1CQUFtQixPQUFBO0FBSXJCLDREQU9xQztBQU5uQywyR0FBQSxXQUFXLE9BQUE7QUFRYix3RUFJNEM7QUFIMUMscUhBQUEsZ0JBQWdCLE9BQUE7QUFJbEIsNkRBSytCO0FBSjdCLHlIQUFBLGtCQUFrQixPQUFBO0FBS3BCLHNFQU0yQztBQUh6QyxtSEFBQSxlQUFlLE9BQUE7QUFJakIsK0NBSXdCO0FBSHRCLDJHQUFBLFdBQVcsT0FBQTtBQUliLHVGQUtvRDtBQUpsRCxrSUFBQSxzQkFBc0IsT0FBQTtBQUt4QixxRkFLbUQ7QUFKakQsZ0lBQUEscUJBQXFCLE9BQUE7QUFLdkIsMkZBS3NEO0FBSnBELHNJQUFBLHdCQUF3QixPQUFBO0FBSzFCLHlGQUtxRDtBQUpuRCxvSUFBQSx1QkFBdUIsT0FBQTtBQUt6QiwyREFLOEI7QUFKNUIsc0hBQUEsZ0JBQWdCLE9BQUE7QUFLbEIsK0RBSWdDO0FBSDlCLDBIQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQXBpLFxuICBOZXh0anNBcGlQcm9wcyxcbiAgTmV4dGpzQXBpT3ZlcnJpZGVzLFxuICBOZXh0anNBcGlGdW5jdGlvbkdyb3VwLFxufSBmcm9tIFwiLi9uZXh0anMtYXBpXCI7XG5cbmV4cG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3QsXG4gIE5leHRqc0Jhc2VQcm9wcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWJhc2UtY29uc3RydWN0XCI7XG5leHBvcnQge1xuICBOZXh0anNCdWlsZCxcbiAgTmV4dGpzQnVpbGRQcm9wcyxcbiAgTmV4dGpzRGVwbG95bWVudFJvb3QsXG4gIE5leHRqc0Z1bmN0aW9uR3JvdXBCZWhhdmlvcixcbiAgTmV4dGpzRnVuY3Rpb25Hcm91cFJvdXRlcyxcbiAgUHVibGljRGlyRW50cnksXG59IGZyb20gXCIuL25leHRqcy1idWlsZC9uZXh0anMtYnVpbGRcIjtcbmV4cG9ydCB7IE5leHRqc0NvbXB1dGVCYXNlUHJvcHMgfSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29tcHV0ZS1iYXNlLXByb3BzXCI7XG5leHBvcnQge1xuICBOZXh0anNDb250YWluZXJzLFxuICBOZXh0anNDb250YWluZXJzT3ZlcnJpZGVzLFxuICBOZXh0anNDb250YWluZXJzUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbkZ1bmN0aW9uR3JvdXAsXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbiAgTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmV4cG9ydCB7XG4gIE5leHRqc0Z1bmN0aW9uR3JvdXAsXG4gIE5leHRqc0Z1bmN0aW9uR3JvdXBSZXNvdXJjZXMsXG4gIE5leHRqc0Z1bmN0aW9ucyxcbiAgTmV4dGpzRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQ2FjaGUsXG4gIE5leHRqc0NhY2hlT3ZlcnJpZGVzLFxuICBOZXh0anNDYWNoZVByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY2FjaGVcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzUHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtcmVnaW9uYWwtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnMsXG4gIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1mdW5jdGlvbnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc1Bvc3REZXBsb3ksXG4gIE5leHRqc1Bvc3REZXBsb3lPdmVycmlkZXMsXG4gIE5leHRqc1Bvc3REZXBsb3lQcm9wcyxcbiAgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyxcbn0gZnJvbSBcIi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5leHBvcnQge1xuICBOZXh0anNTdGF0aWNBc3NldHMsXG4gIE5leHRqc1N0YXRpY0Fzc2V0c092ZXJyaWRlcyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1zdGF0aWMtYXNzZXRzXCI7XG5cbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQXBpUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0FwaVByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc0J1aWxkUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0J1aWxkUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc0NhY2hlUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NhY2hlUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZFRhc2tJbWFnZU9wdGlvbnNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ2xvdWRGcm9udEZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsb3VkRnJvbnRGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbENsdXN0ZXJQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ2x1c3RlclByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbERpc3RyaWJ1dGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEaXN0cmlidXRpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbERvY2tlckltYWdlQXNzZXRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxFZGdlRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRWRnZUZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxGdW5jdGlvblVybFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxGdW5jdGlvblVybFByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbFMzT3JpZ2luQnVja2V0V2l0aE9BQ1Byb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxTM09yaWdpbkJ1Y2tldFdpdGhPQUNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxWcGNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsVnBjUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsQ3VzdG9tUmVzb3VyY2VQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQ3VzdG9tUmVzb3VyY2VQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzXCI7XG5leHBvcnQgeyBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzUG9zdERlcGxveVByb3BzXCI7XG4iXX0=
@@ -3,9 +3,13 @@ interface PruneCacheBucketProps {
3
3
  currentBuildId: string;
4
4
  }
5
5
  /**
6
- * Given `bucketName` and `currentBuildId`, list all objects in the cache bucket
7
- * and delete any that have BUILD_ID prefixes that don't match the current build ID.
8
- * Cache objects are prefixed with {buildId}/ pattern (no leading slash).
6
+ * Given `bucketName` and `currentBuildId`, delete every cache object that isn't
7
+ * under the current build's `{buildId}/` prefix (no leading slash).
8
+ *
9
+ * The top level is listed with a delimiter, so the current build, which can
10
+ * hold any number of `'use cache: remote'` entries, is never walked. Each old
11
+ * build prefix is then listed and deleted page by page. Top-level keys outside
12
+ * any build prefix (legacy objects) are deleted too.
9
13
  */
10
14
  export declare function pruneCacheBucket(props: PruneCacheBucketProps): Promise<void>;
11
15
  export {};