cdk-nextjs 0.6.1 → 0.7.0

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 (266) hide show
  1. package/.jsii +2467 -2714
  2. package/.jsii.tabl.json +1 -1
  3. package/API.md +1725 -1909
  4. package/CLAUDE.md +2 -1
  5. package/README.md +429 -130
  6. package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +152 -170
  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 +687 -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 +1548 -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 +852 -0
  28. package/lib/adapter/build-outputs.test.d.ts +1 -0
  29. package/lib/adapter/build-outputs.test.js +861 -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 +13 -0
  79. package/lib/generated-structs/OptionalNextjsPostDeployProps.js +1 -1
  80. package/lib/generated-structs/OptionalPostDeployCustomResourceProperties.d.ts +11 -2
  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/post-deploy.lambda.js +3 -2
  85. package/lib/lambdas/post-deploy/prune-cache-bucket.d.ts +7 -3
  86. package/lib/lambdas/post-deploy/prune-cache-bucket.js +57 -71
  87. package/lib/lambdas/post-deploy/prune-cache-bucket.test.d.ts +1 -0
  88. package/lib/lambdas/post-deploy/prune-cache-bucket.test.js +114 -0
  89. package/lib/lambdas/post-deploy/prune-revalidation-table.d.ts +1 -0
  90. package/lib/lambdas/post-deploy/prune-revalidation-table.js +23 -31
  91. package/lib/lambdas/post-deploy/prune-revalidation-table.test.d.ts +1 -0
  92. package/lib/lambdas/post-deploy/prune-revalidation-table.test.js +71 -0
  93. package/lib/lambdas/post-deploy/prune-s3.d.ts +19 -3
  94. package/lib/lambdas/post-deploy/prune-s3.js +54 -15
  95. package/lib/lambdas/post-deploy/prune-s3.test.d.ts +1 -0
  96. package/lib/lambdas/post-deploy/prune-s3.test.js +255 -0
  97. package/lib/lambdas/redeploy-stage/redeploy-stage-function.d.ts +13 -0
  98. package/lib/lambdas/redeploy-stage/redeploy-stage-function.js +55 -0
  99. package/lib/lambdas/redeploy-stage/redeploy-stage.d.ts +24 -0
  100. package/lib/lambdas/redeploy-stage/redeploy-stage.js +68 -0
  101. package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.d.ts +20 -0
  102. package/lib/lambdas/redeploy-stage/redeploy-stage.lambda.js +24 -0
  103. package/lib/lambdas/redeploy-stage/redeploy-stage.test.d.ts +1 -0
  104. package/lib/lambdas/redeploy-stage/redeploy-stage.test.js +93 -0
  105. package/lib/nextjs-api.d.ts +107 -18
  106. package/lib/nextjs-api.js +349 -39
  107. package/lib/nextjs-api.test.js +582 -1
  108. package/lib/nextjs-build/global-containers.Dockerfile +15 -10
  109. package/lib/nextjs-build/nextjs-build.d.ts +339 -63
  110. package/lib/nextjs-build/nextjs-build.js +684 -327
  111. package/lib/nextjs-build/nextjs-build.test.d.ts +1 -0
  112. package/lib/nextjs-build/nextjs-build.test.js +412 -0
  113. package/lib/nextjs-build/patch-fetch.js +1 -1
  114. package/lib/nextjs-build/patch-fetch.test.js +166 -11
  115. package/lib/nextjs-build/regional-containers.Dockerfile +17 -10
  116. package/lib/nextjs-cache.d.ts +82 -4
  117. package/lib/nextjs-cache.js +186 -10
  118. package/lib/nextjs-cache.test.js +176 -1
  119. package/lib/nextjs-compute/nextjs-compute-base-props.d.ts +21 -8
  120. package/lib/nextjs-compute/nextjs-compute-base-props.js +41 -1
  121. package/lib/nextjs-compute/nextjs-compute-base-props.test.d.ts +1 -0
  122. package/lib/nextjs-compute/nextjs-compute-base-props.test.js +44 -0
  123. package/lib/nextjs-compute/nextjs-containers.d.ts +19 -0
  124. package/lib/nextjs-compute/nextjs-containers.js +57 -20
  125. package/lib/nextjs-compute/nextjs-functions.d.ts +122 -7
  126. package/lib/nextjs-compute/nextjs-functions.js +113 -67
  127. package/lib/nextjs-compute/nextjs-functions.test.d.ts +1 -0
  128. package/lib/nextjs-compute/nextjs-functions.test.js +99 -0
  129. package/lib/nextjs-distribution.d.ts +194 -23
  130. package/lib/nextjs-distribution.js +535 -62
  131. package/lib/nextjs-distribution.test.d.ts +1 -0
  132. package/lib/nextjs-distribution.test.js +697 -0
  133. package/lib/nextjs-post-deploy.d.ts +23 -3
  134. package/lib/nextjs-post-deploy.js +14 -10
  135. package/lib/nextjs-post-deploy.test.d.ts +1 -0
  136. package/lib/nextjs-post-deploy.test.js +34 -0
  137. package/lib/nextjs-static-assets.d.ts +23 -4
  138. package/lib/nextjs-static-assets.js +29 -6
  139. package/lib/nextjs-static-assets.test.js +20 -1
  140. package/lib/root-constructs/nextjs-base-construct.d.ts +105 -45
  141. package/lib/root-constructs/nextjs-base-construct.js +144 -34
  142. package/lib/root-constructs/nextjs-global-containers.d.ts +18 -20
  143. package/lib/root-constructs/nextjs-global-containers.js +20 -70
  144. package/lib/root-constructs/nextjs-global-functions.d.ts +26 -28
  145. package/lib/root-constructs/nextjs-global-functions.js +52 -69
  146. package/lib/root-constructs/nextjs-regional-containers.d.ts +25 -5
  147. package/lib/root-constructs/nextjs-regional-containers.js +17 -15
  148. package/lib/root-constructs/nextjs-regional-functions.d.ts +22 -18
  149. package/lib/root-constructs/nextjs-regional-functions.js +8 -25
  150. package/lib/runtime/api-gateway-path.d.ts +34 -0
  151. package/lib/runtime/api-gateway-path.js +71 -0
  152. package/lib/runtime/api-gateway-path.test.d.ts +1 -0
  153. package/lib/runtime/api-gateway-path.test.js +65 -0
  154. package/lib/runtime/case-redirect.d.ts +22 -0
  155. package/lib/runtime/case-redirect.js +63 -0
  156. package/lib/runtime/case-redirect.test.d.ts +1 -0
  157. package/lib/runtime/case-redirect.test.js +32 -0
  158. package/lib/runtime/core.d.ts +234 -0
  159. package/lib/runtime/core.js +1213 -0
  160. package/lib/runtime/core.test.d.ts +1 -0
  161. package/lib/runtime/core.test.js +1678 -0
  162. package/lib/runtime/deployment-root.d.ts +13 -0
  163. package/lib/runtime/deployment-root.js +29 -0
  164. package/lib/runtime/dispatch.d.ts +331 -0
  165. package/lib/runtime/dispatch.js +751 -0
  166. package/lib/runtime/dispatch.test.d.ts +1 -0
  167. package/lib/runtime/dispatch.test.js +853 -0
  168. package/lib/runtime/entrypoints.d.ts +57 -0
  169. package/lib/runtime/entrypoints.js +115 -0
  170. package/lib/runtime/http/abort-signal.d.ts +6 -0
  171. package/lib/runtime/http/abort-signal.js +19 -0
  172. package/lib/runtime/http/abort-signal.test.d.ts +1 -0
  173. package/lib/runtime/http/abort-signal.test.js +49 -0
  174. package/lib/runtime/http/node-server.d.ts +38 -0
  175. package/lib/runtime/http/node-server.js +99 -0
  176. package/lib/runtime/http/node-server.test.d.ts +1 -0
  177. package/lib/runtime/http/node-server.test.js +96 -0
  178. package/lib/runtime/http/node-sink.d.ts +16 -0
  179. package/lib/runtime/http/node-sink.js +48 -0
  180. package/lib/runtime/http/node-sink.test.d.ts +1 -0
  181. package/lib/runtime/http/node-sink.test.js +66 -0
  182. package/lib/runtime/http/request.d.ts +62 -0
  183. package/lib/runtime/http/request.js +134 -0
  184. package/lib/runtime/http/request.test.d.ts +1 -0
  185. package/lib/runtime/http/request.test.js +103 -0
  186. package/lib/runtime/http/response.d.ts +77 -0
  187. package/lib/runtime/http/response.js +229 -0
  188. package/lib/runtime/http/response.test.d.ts +1 -0
  189. package/lib/runtime/http/response.test.js +178 -0
  190. package/lib/runtime/http/sink.d.ts +73 -0
  191. package/lib/runtime/http/sink.js +188 -0
  192. package/lib/runtime/http/sink.test.d.ts +1 -0
  193. package/lib/runtime/http/sink.test.js +257 -0
  194. package/lib/runtime/image-utils.d.ts +78 -0
  195. package/lib/runtime/image-utils.js +129 -0
  196. package/lib/runtime/image-utils.test.d.ts +1 -0
  197. package/lib/runtime/image-utils.test.js +237 -0
  198. package/lib/runtime/image.d.ts +76 -0
  199. package/lib/runtime/image.js +296 -0
  200. package/lib/runtime/image.test.d.ts +1 -0
  201. package/lib/runtime/image.test.js +405 -0
  202. package/lib/runtime/lambda-event.d.ts +4 -0
  203. package/lib/runtime/lambda-event.js +113 -0
  204. package/lib/runtime/lambda-event.test.d.ts +1 -0
  205. package/lib/runtime/lambda-event.test.js +119 -0
  206. package/lib/runtime/lambda.mjs +41595 -0
  207. package/lib/runtime/load-module.d.ts +8 -0
  208. package/lib/runtime/load-module.js +35 -0
  209. package/lib/runtime/manifest.d.ts +215 -0
  210. package/lib/runtime/manifest.js +118 -0
  211. package/lib/runtime/middleware.d.ts +43 -0
  212. package/lib/runtime/middleware.js +113 -0
  213. package/lib/runtime/middleware.test.d.ts +1 -0
  214. package/lib/runtime/middleware.test.js +259 -0
  215. package/lib/runtime/next-modules.d.ts +55 -0
  216. package/lib/runtime/next-modules.js +124 -0
  217. package/lib/runtime/next-modules.test.d.ts +1 -0
  218. package/lib/runtime/next-modules.test.js +34 -0
  219. package/lib/runtime/public-files.d.ts +32 -0
  220. package/lib/runtime/public-files.js +117 -0
  221. package/lib/runtime/public-files.test.d.ts +1 -0
  222. package/lib/runtime/public-files.test.js +97 -0
  223. package/lib/runtime/server.mjs +41588 -0
  224. package/lib/runtime/static-files.d.ts +50 -0
  225. package/lib/runtime/static-files.js +266 -0
  226. package/lib/runtime/static-files.test.d.ts +1 -0
  227. package/lib/runtime/static-files.test.js +118 -0
  228. package/lib/runtime/util.d.ts +28 -0
  229. package/lib/runtime/util.js +79 -0
  230. package/lib/utils/base-path.d.ts +123 -11
  231. package/lib/utils/base-path.js +276 -39
  232. package/lib/utils/base-path.test.js +275 -50
  233. package/lib/utils/get-architecture.d.ts +7 -8
  234. package/lib/utils/get-architecture.js +12 -13
  235. package/lib/utils/zip-directory.d.ts +14 -0
  236. package/lib/utils/zip-directory.js +121 -0
  237. package/lib/utils/zip-directory.test.d.ts +1 -0
  238. package/lib/utils/zip-directory.test.js +99 -0
  239. package/package.json +22 -3
  240. package/scripts/capture-adapter-fixture.mjs +325 -0
  241. package/scripts/e2e-deploy.sh +398 -0
  242. package/scripts/e2e-harness/README.md +707 -0
  243. package/scripts/e2e-harness/app.js +370 -0
  244. package/scripts/e2e-harness/common.sh +249 -0
  245. package/scripts/e2e-harness/screen.mjs +302 -0
  246. package/scripts/e2e-harness/stage-proxy.mjs +145 -0
  247. package/scripts/e2e-harness/type-filters.mjs +47 -0
  248. package/scripts/e2e-logs.sh +75 -0
  249. package/scripts/e2e-offline.sh +91 -0
  250. package/scripts/e2e-sweep.sh +370 -0
  251. package/scripts/e2e-warm.sh +114 -0
  252. package/scripts/zero-config-build.mjs +418 -0
  253. package/docs/1k-concurrent-users-executions.png +0 -0
  254. package/docs/plans/adapter-runtime-release.md +0 -362
  255. package/docs/plans/phase-0-image-function-opt-in.md +0 -295
  256. package/lib/generated-structs/OptionalDockerImageFunctionProps.d.ts +0 -425
  257. package/lib/generated-structs/OptionalDockerImageFunctionProps.js +0 -3
  258. package/lib/image-optimization/handler-utils.d.ts +0 -34
  259. package/lib/image-optimization/handler-utils.js +0 -83
  260. package/lib/image-optimization/handler-utils.test.js +0 -178
  261. package/lib/nextjs-build/functions.Dockerfile +0 -31
  262. package/lib/nextjs-compute/nextjs-image-function.d.ts +0 -53
  263. package/lib/nextjs-compute/nextjs-image-function.js +0 -59
  264. package/lib/utils/experimental-flags.d.ts +0 -24
  265. package/lib/utils/experimental-flags.js +0 -30
  266. /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==
@@ -3,6 +3,11 @@ import type { aws_cloudfront, aws_dynamodb, aws_s3 } from 'aws-cdk-lib';
3
3
  * OptionalNextjsPostDeployProps
4
4
  */
5
5
  export interface OptionalNextjsPostDeployProps {
6
+ /**
7
+ * S3 key prefix the static assets were uploaded under (`NextjsStaticAssets.keyPrefix`). Scopes pruning to this app's objects, so that apps or branches sharing one bucket under different `basePath`s don't prune each other's assets.
8
+ * @stability stable
9
+ */
10
+ readonly staticAssetsKeyPrefix?: string;
6
11
  /**
7
12
  * Required for `NextjsType.GlobalFunctions` and `NextjsType.GlobalContainers`.
8
13
  * @stability stable
@@ -29,6 +34,14 @@ export interface OptionalNextjsPostDeployProps {
29
34
  * @stability stable
30
35
  */
31
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;
32
45
  /**
33
46
  * @stability stable
34
47
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfY2xvdWRmcm9udCwgYXdzX2R5bmFtb2RiLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBmb3IgYE5leHRqc1R5cGUuR2xvYmFsRnVuY3Rpb25zYCBhbmQgYE5leHRqc1R5cGUuR2xvYmFsQ29udGFpbmVyc2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNBc3NldHNCdWNrZXQ/OiBhd3NfczMuSUJ1Y2tldDtcbiAgLyoqXG4gICAqIER5bmFtb0RCIHRhYmxlIGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgcmV2YWxpZGF0aW9uIGVudHJpZXMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSByZXZhbGlkYXRpb25UYWJsZT86IGF3c19keW5hbW9kYi5JVGFibGVWMjtcbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIHRvIGludmFsaWRhdGUuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5JRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgbG9ncyBkZXRhaWxzIGluIGN1c3RvbSByZXNvdXJjZSBsYW1iZGEuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENhY2hlIGJ1Y2tldCBmb3IgY2xlYW5pbmcgdXAgb2xkIEJVSUxEX0lEIHByZWZpeGVkIG9iamVjdHMuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjYWNoZUJ1Y2tldD86IGF3c19zMy5JQnVja2V0O1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSWQ/OiBzdHJpbmc7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInBucG0gZGx4IHByb2plblwiLlxuaW1wb3J0IHR5cGUgeyBhd3NfY2xvdWRmcm9udCwgYXdzX2R5bmFtb2RiLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wcyB7XG4gIC8qKlxuICAgKiBTMyBrZXkgcHJlZml4IHRoZSBzdGF0aWMgYXNzZXRzIHdlcmUgdXBsb2FkZWQgdW5kZXIgKGBOZXh0anNTdGF0aWNBc3NldHMua2V5UHJlZml4YCkuIFNjb3BlcyBwcnVuaW5nIHRvIHRoaXMgYXBwJ3Mgb2JqZWN0cywgc28gdGhhdCBhcHBzIG9yIGJyYW5jaGVzIHNoYXJpbmcgb25lIGJ1Y2tldCB1bmRlciBkaWZmZXJlbnQgYGJhc2VQYXRoYHMgZG9uJ3QgcHJ1bmUgZWFjaCBvdGhlcidzIGFzc2V0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0tleVByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGZvciBgTmV4dGpzVHlwZS5HbG9iYWxGdW5jdGlvbnNgIGFuZCBgTmV4dGpzVHlwZS5HbG9iYWxDb250YWluZXJzYC5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpY0Fzc2V0c0J1Y2tldD86IGF3c19zMy5JQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIGNsZWFuaW5nIHVwIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCByZXZhbGlkYXRpb24gZW50cmllcy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJldmFsaWRhdGlvblRhYmxlPzogYXdzX2R5bmFtb2RiLklUYWJsZVYyO1xuICAvKipcbiAgICogQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gdG8gaW52YWxpZGF0ZS5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IGF3c19jbG91ZGZyb250LklEaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBsb2dzIGRldGFpbHMgaW4gY3VzdG9tIHJlc291cmNlIGxhbWJkYS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuICAvKipcbiAgICogQ2FjaGUgYnVja2V0IGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBUaGUgYXBwJ3MgYGJhc2VQYXRoYC5cbiAgICogU2NvcGVzIHRoZSBkZXBsb3kncyBDbG91ZEZyb250IGludmFsaWRhdGlvbiB0byB0aGVcbiAgICogYXBwJ3MgVVJJcywgc28gYSBkZXBsb3kgZG9lc24ndCBmbHVzaCBvdGhlciBhcHBzIG9uIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbi5cbiAgICogQGRlZmF1bHQgLSB0aGUgd2hvbGUgZGlzdHJpYnV0aW9uIChgLypgKVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -2,6 +2,15 @@
2
2
  * OptionalPostDeployCustomResourceProperties
3
3
  */
4
4
  export interface OptionalPostDeployCustomResourceProperties {
5
+ /**
6
+ * S3 key prefix to scope static asset pruning to.
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.
11
+ * @stability stable
12
+ */
13
+ readonly staticAssetsKeyPrefix?: string;
5
14
  /**
6
15
  * @stability stable
7
16
  */
@@ -17,8 +26,8 @@ export interface OptionalPostDeployCustomResourceProperties {
17
26
  invalidationBatch: {
18
27
  callerReference: new Date().toISOString(),
19
28
  paths: {
20
- quantity: 1,
21
- items: ["/*"], // invalidate all paths
29
+ quantity: paths.length,
30
+ items: paths, // wholeAppInvalidationPaths(basePath)
22
31
  },
23
32
  },
24
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0ZBQWtGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwicG5wbSBkbHggcHJvamVuXCIuXG5cbi8qKlxuICogT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNBc3NldHNCdWNrZXROYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRHluYW1vREIgcmV2YWxpZGF0aW9uIHRhYmxlIG5hbWUgZm9yIGNsZWFuaW5nIHVwIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCBlbnRyaWVzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmV2YWxpZGF0aW9uVGFibGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQge1xuICAgZGlzdHJpYnV0aW9uSWQ6IHRoaXMucHJvcHMuZGlzdHJpYnV0aW9uPy5kaXN0cmlidXRpb25JZCxcbiAgIGludmFsaWRhdGlvbkJhdGNoOiB7XG4gICAgIGNhbGxlclJlZmVyZW5jZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICBwYXRoczoge1xuICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgIGl0ZW1zOiBbXCIvKlwiXSwgLy8gaW52YWxpZGF0ZSBhbGwgcGF0aHNcbiAgICAgfSxcbiAgIH0sXG4gfVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIENhY2hlIGJ1Y2tldCBuYW1lIGZvciBjbGVhbmluZyB1cCBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0cy5cbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlQnVja2V0TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRpbWUgdG8gbGl2ZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIE11c3QgYmUgc3RyaW5nIGJlY2F1c2Ugb2YgQ2xvdWRGb3JtYXRpb24gQ3VzdG9tIFJlc291cmNlIGxpbWl0YXRpb25cbiAgICogQGRlZmF1bHQgKDEwMDAgKiA2MCAqIDYwICogMjQgKiAzMCkudG9TdHJpbmcoKVxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbXNUdGw/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=
@@ -25,7 +25,7 @@ const handler = async (event, context) => {
25
25
  try {
26
26
  const props = event.ResourceProperties;
27
27
  if (event.RequestType === "Create" || event.RequestType === "Update") {
28
- const { buildId, cacheBucketName, createInvalidationCommandInput, msTtl, revalidationTableName, staticAssetsBucketName, } = props;
28
+ const { buildId, cacheBucketName, createInvalidationCommandInput, msTtl, revalidationTableName, staticAssetsBucketName, staticAssetsKeyPrefix, } = props;
29
29
  const promises = [];
30
30
  if (createInvalidationCommandInput) {
31
31
  promises.push((0, create_invalidation_1.createInvalidation)(createInvalidationCommandInput));
@@ -48,6 +48,7 @@ const handler = async (event, context) => {
48
48
  bucketName: staticAssetsBucketName,
49
49
  currentBuildId: buildId,
50
50
  msTtl: parseInt(msTtl),
51
+ keyPrefix: staticAssetsKeyPrefix,
51
52
  }));
52
53
  }
53
54
  await Promise.all(promises);
@@ -70,4 +71,4 @@ const handler = async (event, context) => {
70
71
  }
71
72
  };
72
73
  exports.handler = handler;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3kubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvcG9zdC1kZXBsb3kvcG9zdC1kZXBsb3kubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUE2QjtBQUM3QiwrREFBMkQ7QUFDM0QsNkRBQXdEO0FBQ3hELHlFQUFvRTtBQUNwRSx5Q0FBcUM7QUFFckMsb0NBQTBEO0FBRTFELE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFNakQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sT0FBTyxHQUF3QyxLQUFLLEVBQy9ELEtBQUssRUFDTCxPQUFPLEVBQ1AsRUFBRTtJQUNGLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakIsSUFBSSxjQUFjLEdBQUcseUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBbUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckUsTUFBTSxFQUNKLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLEdBQUcsS0FBSyxDQUFDO1lBQ1YsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLDhCQUE4QixFQUFFLENBQUM7Z0JBQ25DLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBQSx3Q0FBa0IsRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxxQ0FBZ0IsRUFBQztvQkFDZixVQUFVLEVBQUUsZUFBZTtvQkFDM0IsY0FBYyxFQUFFLE9BQU87aUJBQ3hCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FDWCxJQUFBLGlEQUFzQixFQUFDO29CQUNyQixTQUFTLEVBQUUscUJBQXFCO29CQUNoQyxjQUFjLEVBQUUsT0FBTztpQkFDeEIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxrQkFBTyxFQUFDO29CQUNOLFVBQVUsRUFBRSxzQkFBc0I7b0JBQ2xDLGNBQWMsRUFBRSxPQUFPO29CQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDdkIsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLGNBQWMsR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUEsbUJBQVcsRUFBQztZQUNoQixLQUFLO1lBQ0wsT0FBTztZQUNQLGNBQWM7WUFDZCxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBOURXLFFBQUEsT0FBTyxXQThEbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCBnZXREZWJ1ZyBmcm9tIFwiZGVidWdcIjtcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRhdGlvbiB9IGZyb20gXCIuL2NyZWF0ZS1pbnZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHBydW5lQ2FjaGVCdWNrZXQgfSBmcm9tIFwiLi9wcnVuZS1jYWNoZS1idWNrZXRcIjtcbmltcG9ydCB7IHBydW5lUmV2YWxpZGF0aW9uVGFibGUgfSBmcm9tIFwiLi9wcnVuZS1yZXZhbGlkYXRpb24tdGFibGVcIjtcbmltcG9ydCB7IHBydW5lUzMgfSBmcm9tIFwiLi9wcnVuZS1zM1wiO1xuaW1wb3J0IHsgUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmltcG9ydCB7IGNmblJlc3BvbnNlLCBDZm5SZXNwb25zZVN0YXR1cyB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKFwiY2RrLW5leHRqczpwb3N0LWRlcGxveVwiKTtcblxudHlwZSBSZXNvdXJjZVByb3BzID0gUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyAmIHtcbiAgU2VydmljZVRva2VuOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zOlxuICogMS4gQ2xvdWRGcm9udCBJbnZhbGlkYXRpb25cbiAqIDIuIFBydW5lIGNhY2hlIGJ1Y2tldCBvZiBvbGQgQlVJTERfSUQgcHJlZml4ZWQgb2JqZWN0c1xuICogMy4gUHJ1bmUgRHluYW1vREIgcmV2YWxpZGF0aW9uIHRhYmxlIG9mIG9sZCBCVUlMRF9JRCBwcmVmaXhlZCBlbnRyaWVzXG4gKiA0LiBQcnVuZXMgb2JqZWN0cyBpbiBzdGF0aWMgYXNzZXRzIFMzIHRoYXQgZG8gbm90IGhhdmUgbWV0YWRhdGEgd2l0aCBjdXJyZW50IEJVSUxEX0lEIGFuZFxuICogd2VyZSBtb2RpZmllZCBvdmVyIGBtc1R0bGAgYWdvIChkZWZhdWx0IDMwIGRheXMpLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlcjogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50LFxuICBjb250ZXh0LFxuKSA9PiB7XG4gIGRlYnVnKHsgZXZlbnQgfSk7XG4gIGxldCByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLkZhaWxlZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZXNvdXJjZVByb3BzO1xuICAgIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJDcmVhdGVcIiB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gXCJVcGRhdGVcIikge1xuICAgICAgY29uc3Qge1xuICAgICAgICBidWlsZElkLFxuICAgICAgICBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgIGNyZWF0ZUludmFsaWRhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICAgbXNUdGwsXG4gICAgICAgIHJldmFsaWRhdGlvblRhYmxlTmFtZSxcbiAgICAgICAgc3RhdGljQXNzZXRzQnVja2V0TmFtZSxcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgICAgIGlmIChjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjcmVhdGVJbnZhbGlkYXRpb24oY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0KSk7XG4gICAgICB9XG4gICAgICBpZiAoY2FjaGVCdWNrZXROYW1lKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVDYWNoZUJ1Y2tldCh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBjdXJyZW50QnVpbGRJZDogYnVpbGRJZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXZhbGlkYXRpb25UYWJsZU5hbWUpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBwcnVuZVJldmFsaWRhdGlvblRhYmxlKHtcbiAgICAgICAgICAgIHRhYmxlTmFtZTogcmV2YWxpZGF0aW9uVGFibGVOYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGljQXNzZXRzQnVja2V0TmFtZSkge1xuICAgICAgICAvLyB3aWxsIG5vdCBydW4gZm9yIHJlZ2lvbmFsXG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVTMyh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBzdGF0aWNBc3NldHNCdWNrZXROYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgICBtc1R0bDogcGFyc2VJbnQobXNUdGwpLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5TdWNjZXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgY2ZuUmVzcG9uc2Uoe1xuICAgICAgZXZlbnQsXG4gICAgICBjb250ZXh0LFxuICAgICAgcmVzcG9uc2VTdGF0dXMsXG4gICAgICByZXNwb25zZURhdGE6IHt9LFxuICAgIH0pO1xuICB9XG59O1xuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1kZXBsb3kubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvcG9zdC1kZXBsb3kvcG9zdC1kZXBsb3kubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUE2QjtBQUM3QiwrREFBMkQ7QUFDM0QsNkRBQXdEO0FBQ3hELHlFQUFvRTtBQUNwRSx5Q0FBcUM7QUFFckMsb0NBQTBEO0FBRTFELE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHdCQUF3QixDQUFDLENBQUM7QUFNakQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sT0FBTyxHQUF3QyxLQUFLLEVBQy9ELEtBQUssRUFDTCxPQUFPLEVBQ1AsRUFBRTtJQUNGLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakIsSUFBSSxjQUFjLEdBQUcseUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBQzlDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBbUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckUsTUFBTSxFQUNKLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLEtBQUssRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixHQUN0QixHQUFHLEtBQUssQ0FBQztZQUNWLE1BQU0sUUFBUSxHQUF1QixFQUFFLENBQUM7WUFDeEMsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO2dCQUNuQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsd0NBQWtCLEVBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixRQUFRLENBQUMsSUFBSSxDQUNYLElBQUEscUNBQWdCLEVBQUM7b0JBQ2YsVUFBVSxFQUFFLGVBQWU7b0JBQzNCLGNBQWMsRUFBRSxPQUFPO2lCQUN4QixDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQ1gsSUFBQSxpREFBc0IsRUFBQztvQkFDckIsU0FBUyxFQUFFLHFCQUFxQjtvQkFDaEMsY0FBYyxFQUFFLE9BQU87aUJBQ3hCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksc0JBQXNCLEVBQUUsQ0FBQztnQkFDM0IsNEJBQTRCO2dCQUM1QixRQUFRLENBQUMsSUFBSSxDQUNYLElBQUEsa0JBQU8sRUFBQztvQkFDTixVQUFVLEVBQUUsc0JBQXNCO29CQUNsQyxjQUFjLEVBQUUsT0FBTztvQkFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQ3RCLFNBQVMsRUFBRSxxQkFBcUI7aUJBQ2pDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixjQUFjLEdBQUcseUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxHQUFHLHlCQUFpQixDQUFDLE9BQU8sQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxJQUFBLG1CQUFXLEVBQUM7WUFDaEIsS0FBSztZQUNMLE9BQU87WUFDUCxjQUFjO1lBQ2QsWUFBWSxFQUFFLEVBQUU7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQztBQWhFVyxRQUFBLE9BQU8sV0FnRWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5pbXBvcnQgZ2V0RGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQgeyBjcmVhdGVJbnZhbGlkYXRpb24gfSBmcm9tIFwiLi9jcmVhdGUtaW52YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBwcnVuZUNhY2hlQnVja2V0IH0gZnJvbSBcIi4vcHJ1bmUtY2FjaGUtYnVja2V0XCI7XG5pbXBvcnQgeyBwcnVuZVJldmFsaWRhdGlvblRhYmxlIH0gZnJvbSBcIi4vcHJ1bmUtcmV2YWxpZGF0aW9uLXRhYmxlXCI7XG5pbXBvcnQgeyBwcnVuZVMzIH0gZnJvbSBcIi4vcHJ1bmUtczNcIjtcbmltcG9ydCB7IFBvc3REZXBsb3lDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgfSBmcm9tIFwiLi4vLi4vbmV4dGpzLXBvc3QtZGVwbG95XCI7XG5pbXBvcnQgeyBjZm5SZXNwb25zZSwgQ2ZuUmVzcG9uc2VTdGF0dXMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6cG9zdC1kZXBsb3lcIik7XG5cbnR5cGUgUmVzb3VyY2VQcm9wcyA9IFBvc3REZXBsb3lDdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgJiB7XG4gIFNlcnZpY2VUb2tlbjogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtczpcbiAqIDEuIENsb3VkRnJvbnQgSW52YWxpZGF0aW9uXG4gKiAyLiBQcnVuZSBjYWNoZSBidWNrZXQgb2Ygb2xkIEJVSUxEX0lEIHByZWZpeGVkIG9iamVjdHNcbiAqIDMuIFBydW5lIER5bmFtb0RCIHJldmFsaWRhdGlvbiB0YWJsZSBvZiBvbGQgQlVJTERfSUQgcHJlZml4ZWQgZW50cmllc1xuICogNC4gUHJ1bmVzIG9iamVjdHMgaW4gc3RhdGljIGFzc2V0cyBTMyB0aGF0IGRvIG5vdCBoYXZlIG1ldGFkYXRhIHdpdGggY3VycmVudCBCVUlMRF9JRCBhbmRcbiAqIHdlcmUgbW9kaWZpZWQgb3ZlciBgbXNUdGxgIGFnbyAoZGVmYXVsdCAzMCBkYXlzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VIYW5kbGVyID0gYXN5bmMgKFxuICBldmVudCxcbiAgY29udGV4dCxcbikgPT4ge1xuICBkZWJ1Zyh7IGV2ZW50IH0pO1xuICBsZXQgcmVzcG9uc2VTdGF0dXMgPSBDZm5SZXNwb25zZVN0YXR1cy5GYWlsZWQ7XG4gIHRyeSB7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVzb3VyY2VQcm9wcztcbiAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiQ3JlYXRlXCIgfHwgZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiVXBkYXRlXCIpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYnVpbGRJZCxcbiAgICAgICAgY2FjaGVCdWNrZXROYW1lLFxuICAgICAgICBjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICAgIG1zVHRsLFxuICAgICAgICByZXZhbGlkYXRpb25UYWJsZU5hbWUsXG4gICAgICAgIHN0YXRpY0Fzc2V0c0J1Y2tldE5hbWUsXG4gICAgICAgIHN0YXRpY0Fzc2V0c0tleVByZWZpeCxcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgICAgIGlmIChjcmVhdGVJbnZhbGlkYXRpb25Db21tYW5kSW5wdXQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjcmVhdGVJbnZhbGlkYXRpb24oY3JlYXRlSW52YWxpZGF0aW9uQ29tbWFuZElucHV0KSk7XG4gICAgICB9XG4gICAgICBpZiAoY2FjaGVCdWNrZXROYW1lKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVDYWNoZUJ1Y2tldCh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBjYWNoZUJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBjdXJyZW50QnVpbGRJZDogYnVpbGRJZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXZhbGlkYXRpb25UYWJsZU5hbWUpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICBwcnVuZVJldmFsaWRhdGlvblRhYmxlKHtcbiAgICAgICAgICAgIHRhYmxlTmFtZTogcmV2YWxpZGF0aW9uVGFibGVOYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGljQXNzZXRzQnVja2V0TmFtZSkge1xuICAgICAgICAvLyB3aWxsIG5vdCBydW4gZm9yIHJlZ2lvbmFsXG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcHJ1bmVTMyh7XG4gICAgICAgICAgICBidWNrZXROYW1lOiBzdGF0aWNBc3NldHNCdWNrZXROYW1lLFxuICAgICAgICAgICAgY3VycmVudEJ1aWxkSWQ6IGJ1aWxkSWQsXG4gICAgICAgICAgICBtc1R0bDogcGFyc2VJbnQobXNUdGwpLFxuICAgICAgICAgICAga2V5UHJlZml4OiBzdGF0aWNBc3NldHNLZXlQcmVmaXgsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICByZXNwb25zZVN0YXR1cyA9IENmblJlc3BvbnNlU3RhdHVzLlN1Y2Nlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlU3RhdHVzID0gQ2ZuUmVzcG9uc2VTdGF0dXMuU3VjY2VzcztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBjZm5SZXNwb25zZSh7XG4gICAgICBldmVudCxcbiAgICAgIGNvbnRleHQsXG4gICAgICByZXNwb25zZVN0YXR1cyxcbiAgICAgIHJlc3BvbnNlRGF0YToge30sXG4gICAgfSk7XG4gIH1cbn07XG4iXX0=
@@ -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 {};