cdk-nextjs 0.7.5 → 0.7.7

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 (69) hide show
  1. package/.jsii +38 -38
  2. package/.jsii.tabl.json +1 -1
  3. package/README.md +12 -3
  4. package/assets/lambdas/post-deploy/post-deploy.lambda/index.js +31 -13
  5. package/docs/adapter-runtime.md +1 -1
  6. package/docs/caching-guide.md +11 -1
  7. package/docs/harness-coverage.md +11 -9
  8. package/lib/adapter/adapter.mjs +220 -149
  9. package/lib/adapter/aws-cache-store.d.ts +242 -7
  10. package/lib/adapter/aws-cache-store.js +520 -54
  11. package/lib/adapter/aws-cache-store.test.js +710 -3
  12. package/lib/adapter/build-outputs.js +23 -1
  13. package/lib/adapter/build-outputs.test.js +18 -1
  14. package/lib/adapter/cache-handler.d.ts +4 -3
  15. package/lib/adapter/cache-handler.js +1 -1
  16. package/lib/adapter/cache-handler.mjs +552 -91
  17. package/lib/adapter/cache-handler.test.js +31 -1
  18. package/lib/adapter/cache-utils.d.ts +68 -2
  19. package/lib/adapter/cache-utils.js +108 -2
  20. package/lib/adapter/cache-utils.test.js +45 -1
  21. package/lib/adapter/init-cache.d.ts +1 -1
  22. package/lib/adapter/init-cache.js +60 -37
  23. package/lib/adapter/init-cache.test.js +55 -2
  24. package/lib/adapter/local-file-cache-handler.d.ts +2 -2
  25. package/lib/adapter/local-file-cache-handler.js +4 -5
  26. package/lib/adapter/s3-cache-handler.d.ts +23 -7
  27. package/lib/adapter/s3-cache-handler.js +63 -27
  28. package/lib/adapter/s3-cache-handler.test.js +168 -1
  29. package/lib/adapter/use-cache-common.d.ts +53 -1
  30. package/lib/adapter/use-cache-common.js +121 -14
  31. package/lib/adapter/use-cache-common.test.js +138 -1
  32. package/lib/adapter/use-cache-default-handler.js +36 -6
  33. package/lib/adapter/use-cache-default-handler.mjs +557 -51
  34. package/lib/adapter/use-cache-handlers.test.js +247 -7
  35. package/lib/adapter/use-cache-remote-handler.js +10 -9
  36. package/lib/adapter/use-cache-remote-handler.mjs +597 -101
  37. package/lib/lambdas/post-deploy/prune-revalidation-table.d.ts +2 -1
  38. package/lib/lambdas/post-deploy/prune-revalidation-table.js +35 -13
  39. package/lib/lambdas/post-deploy/prune-revalidation-table.test.js +19 -1
  40. package/lib/nextjs-api.js +1 -1
  41. package/lib/nextjs-build/nextjs-build.d.ts +0 -7
  42. package/lib/nextjs-build/nextjs-build.js +4 -11
  43. package/lib/nextjs-build/nextjs-build.test.js +4 -3
  44. package/lib/nextjs-cache.js +1 -1
  45. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  46. package/lib/nextjs-compute/nextjs-functions.js +1 -1
  47. package/lib/nextjs-distribution.js +1 -1
  48. package/lib/nextjs-post-deploy.js +1 -1
  49. package/lib/nextjs-static-assets.js +1 -1
  50. package/lib/root-constructs/nextjs-base-construct.js +1 -1
  51. package/lib/root-constructs/nextjs-global-containers.js +1 -1
  52. package/lib/root-constructs/nextjs-global-functions.js +1 -1
  53. package/lib/root-constructs/nextjs-regional-containers.js +1 -1
  54. package/lib/root-constructs/nextjs-regional-functions.js +1 -1
  55. package/lib/runtime/core.js +18 -4
  56. package/lib/runtime/core.test.js +17 -1
  57. package/lib/runtime/image.d.ts +19 -0
  58. package/lib/runtime/image.js +28 -2
  59. package/lib/runtime/image.test.js +43 -1
  60. package/lib/runtime/lambda.mjs +30 -6
  61. package/lib/runtime/server.mjs +30 -6
  62. package/lib/runtime/tag-manifest.d.ts +15 -0
  63. package/lib/runtime/tag-manifest.js +24 -0
  64. package/lib/runtime/tag-manifest.test.d.ts +1 -0
  65. package/lib/runtime/tag-manifest.test.js +21 -0
  66. package/lib/utils/deployment-build-id.d.ts +11 -0
  67. package/lib/utils/deployment-build-id.js +15 -0
  68. package/package.json +3 -3
  69. package/scripts/e2e-harness/README.md +1 -1
@@ -35889,9 +35889,9 @@ var require_dist_cjs16 = __commonJS({
35889
35889
  }
35890
35890
  });
35891
35891
 
35892
- // node_modules/.pnpm/@next+routing@16.3.6/node_modules/@next/routing/dist/index.js
35892
+ // node_modules/.pnpm/@next+routing@16.3.8/node_modules/@next/routing/dist/index.js
35893
35893
  var require_dist = __commonJS({
35894
- "node_modules/.pnpm/@next+routing@16.3.6/node_modules/@next/routing/dist/index.js"(exports, module) {
35894
+ "node_modules/.pnpm/@next+routing@16.3.8/node_modules/@next/routing/dist/index.js"(exports, module) {
35895
35895
  (() => {
35896
35896
  "use strict";
35897
35897
  var e5 = {};
@@ -38359,7 +38359,7 @@ async function loadImageCache({ deploymentRoot, manifest, importModule }, loaded
38359
38359
  });
38360
38360
  }
38361
38361
  return {
38362
- responses: new modules.responseCache.default(false),
38362
+ responses: newImageResponseCache(modules.responseCache.default),
38363
38363
  images: new next.optimizer.ImageOptimizerCache({
38364
38364
  distDir,
38365
38365
  nextConfig,
@@ -38367,6 +38367,17 @@ async function loadImageCache({ deploymentRoot, manifest, importModule }, loaded
38367
38367
  })
38368
38368
  };
38369
38369
  }
38370
+ function newImageResponseCache(ResponseCache) {
38371
+ const Legacy = ResponseCache;
38372
+ try {
38373
+ return new Legacy(false);
38374
+ } catch (err) {
38375
+ if (!String(err?.message).includes("requires a source route")) {
38376
+ throw err;
38377
+ }
38378
+ return new ResponseCache({ minimalMode: false, route: "image" });
38379
+ }
38380
+ }
38370
38381
  function cacheHandlerUrl(distDir, cacheHandler) {
38371
38382
  const path = cacheHandler.startsWith("file://") ? fileURLToPath(cacheHandler) : cacheHandler;
38372
38383
  return pathToFileURL(
@@ -38636,6 +38647,16 @@ function httpDate(value) {
38636
38647
  return date2 && !Number.isNaN(date2.getTime()) ? date2 : void 0;
38637
38648
  }
38638
38649
 
38650
+ // src/runtime/tag-manifest.ts
38651
+ var TAG_MANIFEST_SYMBOL = /* @__PURE__ */ Symbol.for(
38652
+ "cdk-nextjs.use-cache.tag-manifest"
38653
+ );
38654
+ async function catchUpTags(render) {
38655
+ const global = globalThis;
38656
+ const manifest = global[TAG_MANIFEST_SYMBOL];
38657
+ return manifest ? manifest.catchUp(render) : render();
38658
+ }
38659
+
38639
38660
  // src/runtime/core.ts
38640
38661
  var NextjsRuntime = class {
38641
38662
  constructor(options) {
@@ -38783,7 +38804,7 @@ var NextjsRuntime = class {
38783
38804
  const search = toSearch(invocationQuery);
38784
38805
  req.url = search ? `${pathname}?${search}` : pathname;
38785
38806
  req.headers = toIncomingHttpHeaders(result.requestHeaders);
38786
- await handler(req, asServerResponse(res), {
38807
+ const options = {
38787
38808
  waitUntil,
38788
38809
  requestMeta: {
38789
38810
  // The resolved query, stated rather than left to be re-derived.
@@ -38858,7 +38879,9 @@ var NextjsRuntime = class {
38858
38879
  // mocked `req`/`res`).
38859
38880
  revalidate: (config) => this.revalidate(config, request)
38860
38881
  }
38861
- });
38882
+ };
38883
+ const render = () => handler(req, asServerResponse(res), options);
38884
+ await (result.entrypoint.type === "app-page" ? catchUpTags(render) : render());
38862
38885
  if (!res.writableEnded && result.entrypoint.type !== "page-api") {
38863
38886
  res.end();
38864
38887
  }
@@ -39145,7 +39168,8 @@ var NextjsRuntime = class {
39145
39168
  if (target.kind === "entrypoint") {
39146
39169
  const handler = await this.entrypoints.load(target.entrypoint);
39147
39170
  req.url = requestedUrl ?? req.url;
39148
- await handler(req, asServerResponse(res), { waitUntil });
39171
+ const render = () => handler(req, asServerResponse(res), { waitUntil });
39172
+ await (target.entrypoint.type === "app-page" ? catchUpTags(render) : render());
39149
39173
  if (!res.writableEnded) {
39150
39174
  res.end();
39151
39175
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The key the process's tag manifest (`TrackedTagMarkers`, from the adapter's
3
+ * `sharedTagManifest`) is kept under on `globalThis`, since the runtime and the
4
+ * cache handlers are separate bundles.
5
+ */
6
+ export declare const TAG_MANIFEST_SYMBOL: unique symbol;
7
+ /**
8
+ * Render a page, after waiting for the revalidation log query if the instance
9
+ * has fallen behind on it (sat idle, or thawed): here, before Next.js starts
10
+ * rendering, rather than inside the first `'use cache'` lookup, where the wait
11
+ * cuts a staged render's static stage short. Just `render` until a cache
12
+ * handler first creates the manifest, and then there is nothing to catch up
13
+ * on. Rejects only as `render` does.
14
+ */
15
+ export declare function catchUpTags<T>(render: () => Promise<T>): Promise<T>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TAG_MANIFEST_SYMBOL = void 0;
4
+ exports.catchUpTags = catchUpTags;
5
+ /**
6
+ * The key the process's tag manifest (`TrackedTagMarkers`, from the adapter's
7
+ * `sharedTagManifest`) is kept under on `globalThis`, since the runtime and the
8
+ * cache handlers are separate bundles.
9
+ */
10
+ exports.TAG_MANIFEST_SYMBOL = Symbol.for("cdk-nextjs.use-cache.tag-manifest");
11
+ /**
12
+ * Render a page, after waiting for the revalidation log query if the instance
13
+ * has fallen behind on it (sat idle, or thawed): here, before Next.js starts
14
+ * rendering, rather than inside the first `'use cache'` lookup, where the wait
15
+ * cuts a staged render's static stage short. Just `render` until a cache
16
+ * handler first creates the manifest, and then there is nothing to catch up
17
+ * on. Rejects only as `render` does.
18
+ */
19
+ async function catchUpTags(render) {
20
+ const global = globalThis;
21
+ const manifest = global[exports.TAG_MANIFEST_SYMBOL];
22
+ return manifest ? manifest.catchUp(render) : render();
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLW1hbmlmZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvdGFnLW1hbmlmZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1CQSxrQ0FNQztBQXZCRDs7OztHQUlHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUMzQyxtQ0FBbUMsQ0FDcEMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUFJLE1BQXdCO0lBQzNELE1BQU0sTUFBTSxHQUFHLFVBRWQsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQywyQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUcmFja2VkVGFnTWFya2VycyB9IGZyb20gXCIuLi9hZGFwdGVyL2F3cy1jYWNoZS1zdG9yZVwiO1xuXG4vKipcbiAqIFRoZSBrZXkgdGhlIHByb2Nlc3MncyB0YWcgbWFuaWZlc3QgKGBUcmFja2VkVGFnTWFya2Vyc2AsIGZyb20gdGhlIGFkYXB0ZXInc1xuICogYHNoYXJlZFRhZ01hbmlmZXN0YCkgaXMga2VwdCB1bmRlciBvbiBgZ2xvYmFsVGhpc2AsIHNpbmNlIHRoZSBydW50aW1lIGFuZCB0aGVcbiAqIGNhY2hlIGhhbmRsZXJzIGFyZSBzZXBhcmF0ZSBidW5kbGVzLlxuICovXG5leHBvcnQgY29uc3QgVEFHX01BTklGRVNUX1NZTUJPTCA9IFN5bWJvbC5mb3IoXG4gIFwiY2RrLW5leHRqcy51c2UtY2FjaGUudGFnLW1hbmlmZXN0XCIsXG4pO1xuXG4vKipcbiAqIFJlbmRlciBhIHBhZ2UsIGFmdGVyIHdhaXRpbmcgZm9yIHRoZSByZXZhbGlkYXRpb24gbG9nIHF1ZXJ5IGlmIHRoZSBpbnN0YW5jZVxuICogaGFzIGZhbGxlbiBiZWhpbmQgb24gaXQgKHNhdCBpZGxlLCBvciB0aGF3ZWQpOiBoZXJlLCBiZWZvcmUgTmV4dC5qcyBzdGFydHNcbiAqIHJlbmRlcmluZywgcmF0aGVyIHRoYW4gaW5zaWRlIHRoZSBmaXJzdCBgJ3VzZSBjYWNoZSdgIGxvb2t1cCwgd2hlcmUgdGhlIHdhaXRcbiAqIGN1dHMgYSBzdGFnZWQgcmVuZGVyJ3Mgc3RhdGljIHN0YWdlIHNob3J0LiBKdXN0IGByZW5kZXJgIHVudGlsIGEgY2FjaGVcbiAqIGhhbmRsZXIgZmlyc3QgY3JlYXRlcyB0aGUgbWFuaWZlc3QsIGFuZCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gY2F0Y2ggdXBcbiAqIG9uLiBSZWplY3RzIG9ubHkgYXMgYHJlbmRlcmAgZG9lcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhdGNoVXBUYWdzPFQ+KHJlbmRlcjogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBnbG9iYWwgPSBnbG9iYWxUaGlzIGFzIHtcbiAgICBbVEFHX01BTklGRVNUX1NZTUJPTF0/OiBQaWNrPFRyYWNrZWRUYWdNYXJrZXJzLCBcImNhdGNoVXBcIj47XG4gIH07XG4gIGNvbnN0IG1hbmlmZXN0ID0gZ2xvYmFsW1RBR19NQU5JRkVTVF9TWU1CT0xdO1xuICByZXR1cm4gbWFuaWZlc3QgPyBtYW5pZmVzdC5jYXRjaFVwKHJlbmRlcikgOiByZW5kZXIoKTtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tag_manifest_1 = require("./tag-manifest");
4
+ const global = globalThis;
5
+ afterEach(() => {
6
+ delete global[tag_manifest_1.TAG_MANIFEST_SYMBOL];
7
+ });
8
+ describe("catchUpTags", () => {
9
+ it("just renders before a cache handler creates the manifest", async () => {
10
+ await expect((0, tag_manifest_1.catchUpTags)(async () => "page")).resolves.toBe("page");
11
+ });
12
+ it("renders through the manifest the cache handlers share", async () => {
13
+ const manifest = {
14
+ catchUp: jest.fn(async (render) => render()),
15
+ };
16
+ global[tag_manifest_1.TAG_MANIFEST_SYMBOL] = manifest;
17
+ await expect((0, tag_manifest_1.catchUpTags)(async () => "page")).resolves.toBe("page");
18
+ expect(manifest.catchUp).toHaveBeenCalledTimes(1);
19
+ });
20
+ });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLW1hbmlmZXN0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS90YWctbWFuaWZlc3QudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlEQUFrRTtBQUVsRSxNQUFNLE1BQU0sR0FBRyxVQUFpRCxDQUFDO0FBRWpFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDYixPQUFPLE1BQU0sQ0FBQyxrQ0FBbUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3hFLE1BQU0sTUFBTSxDQUFDLElBQUEsMEJBQVcsRUFBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRSxNQUFNLFFBQVEsR0FBRztZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUE2QixFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNwRSxDQUFDO1FBQ0YsTUFBTSxDQUFDLGtDQUFtQixDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxDQUFDLElBQUEsMEJBQVcsRUFBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXRjaFVwVGFncywgVEFHX01BTklGRVNUX1NZTUJPTCB9IGZyb20gXCIuL3RhZy1tYW5pZmVzdFwiO1xuXG5jb25zdCBnbG9iYWwgPSBnbG9iYWxUaGlzIGFzIHsgW1RBR19NQU5JRkVTVF9TWU1CT0xdPzogdW5rbm93biB9O1xuXG5hZnRlckVhY2goKCkgPT4ge1xuICBkZWxldGUgZ2xvYmFsW1RBR19NQU5JRkVTVF9TWU1CT0xdO1xufSk7XG5cbmRlc2NyaWJlKFwiY2F0Y2hVcFRhZ3NcIiwgKCkgPT4ge1xuICBpdChcImp1c3QgcmVuZGVycyBiZWZvcmUgYSBjYWNoZSBoYW5kbGVyIGNyZWF0ZXMgdGhlIG1hbmlmZXN0XCIsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoY2F0Y2hVcFRhZ3MoYXN5bmMgKCkgPT4gXCJwYWdlXCIpKS5yZXNvbHZlcy50b0JlKFwicGFnZVwiKTtcbiAgfSk7XG5cbiAgaXQoXCJyZW5kZXJzIHRocm91Z2ggdGhlIG1hbmlmZXN0IHRoZSBjYWNoZSBoYW5kbGVycyBzaGFyZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSB7XG4gICAgICBjYXRjaFVwOiBqZXN0LmZuKGFzeW5jIChyZW5kZXI6ICgpID0+IFByb21pc2U8c3RyaW5nPikgPT4gcmVuZGVyKCkpLFxuICAgIH07XG4gICAgZ2xvYmFsW1RBR19NQU5JRkVTVF9TWU1CT0xdID0gbWFuaWZlc3Q7XG4gICAgYXdhaXQgZXhwZWN0KGNhdGNoVXBUYWdzKGFzeW5jICgpID0+IFwicGFnZVwiKSkucmVzb2x2ZXMudG9CZShcInBhZ2VcIik7XG4gICAgZXhwZWN0KG1hbmlmZXN0LmNhdGNoVXApLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The build ID cdk-nextjs stores a deployment under. Pure, so the adapter can
3
+ * check it at build time against the same format the constructs deploy with.
4
+ */
5
+ /** {@link NextjsBuild.buildId}: Next.js's build ID, suffixed with the app's `deploymentId`. */
6
+ export declare function deploymentBuildId(manifest: {
7
+ readonly buildId: string;
8
+ readonly config: {
9
+ readonly deploymentId: string;
10
+ };
11
+ }): string;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * The build ID cdk-nextjs stores a deployment under. Pure, so the adapter can
4
+ * check it at build time against the same format the constructs deploy with.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.deploymentBuildId = deploymentBuildId;
8
+ /** {@link NextjsBuild.buildId}: Next.js's build ID, suffixed with the app's `deploymentId`. */
9
+ function deploymentBuildId(manifest) {
10
+ const { deploymentId } = manifest.config;
11
+ return deploymentId
12
+ ? `${manifest.buildId}-${deploymentId}`
13
+ : manifest.buildId;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudC1idWlsZC1pZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ltZW50LWJ1aWxkLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBR0gsOENBUUM7QUFURCwrRkFBK0Y7QUFDL0YsU0FBZ0IsaUJBQWlCLENBQUMsUUFHakM7SUFDQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxPQUFPLFlBQVk7UUFDakIsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxZQUFZLEVBQUU7UUFDdkMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJ1aWxkIElEIGNkay1uZXh0anMgc3RvcmVzIGEgZGVwbG95bWVudCB1bmRlci4gUHVyZSwgc28gdGhlIGFkYXB0ZXIgY2FuXG4gKiBjaGVjayBpdCBhdCBidWlsZCB0aW1lIGFnYWluc3QgdGhlIHNhbWUgZm9ybWF0IHRoZSBjb25zdHJ1Y3RzIGRlcGxveSB3aXRoLlxuICovXG5cbi8qKiB7QGxpbmsgTmV4dGpzQnVpbGQuYnVpbGRJZH06IE5leHQuanMncyBidWlsZCBJRCwgc3VmZml4ZWQgd2l0aCB0aGUgYXBwJ3MgYGRlcGxveW1lbnRJZGAuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95bWVudEJ1aWxkSWQobWFuaWZlc3Q6IHtcbiAgcmVhZG9ubHkgYnVpbGRJZDogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc6IHsgcmVhZG9ubHkgZGVwbG95bWVudElkOiBzdHJpbmcgfTtcbn0pOiBzdHJpbmcge1xuICBjb25zdCB7IGRlcGxveW1lbnRJZCB9ID0gbWFuaWZlc3QuY29uZmlnO1xuICByZXR1cm4gZGVwbG95bWVudElkXG4gICAgPyBgJHttYW5pZmVzdC5idWlsZElkfS0ke2RlcGxveW1lbnRJZH1gXG4gICAgOiBtYW5pZmVzdC5idWlsZElkO1xufVxuIl19
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "@aws-sdk/client-ssm": "^3.1141.0",
22
22
  "@aws-sdk/lib-storage": "^3.1141.0",
23
23
  "@mrgrain/jsii-struct-builder": "^0.7.64",
24
- "@next/routing": "16.3.6",
24
+ "@next/routing": "16.3.8",
25
25
  "@smithy/signature-v4": "^2.3.0",
26
26
  "@types/aws-lambda": "^8.10.163",
27
27
  "@types/debug": "^4.1.13",
@@ -51,7 +51,7 @@
51
51
  "jsii-pacmak": "^1.140.0",
52
52
  "jsii-rosetta": "~5.9.67",
53
53
  "mime-types": "^2.1.35",
54
- "next": "^16.3.6",
54
+ "next": "^16.3.8",
55
55
  "prettier": "^3.9.9",
56
56
  "projen": "^0.101.6",
57
57
  "ts-jest": "^29.4.14",
@@ -84,7 +84,7 @@
84
84
  "publishConfig": {
85
85
  "access": "public"
86
86
  },
87
- "version": "0.7.5",
87
+ "version": "0.7.7",
88
88
  "jest": {
89
89
  "coverageProvider": "v8",
90
90
  "testPathIgnorePatterns": [
@@ -449,7 +449,7 @@ cdk-nextjs rejects any build output whose runtime is not `nodejs`
449
449
 
450
450
  That is a product limitation and a deliberate one: the edge runtime is deprecated
451
451
  in Next.js, and cdk-nextjs supports Next.js 16's Node-runtime `proxy.ts` instead.
452
- 931 of next.js's 1134 e2e files are edge-free, so it barely constrains widening
452
+ 933 of next.js's 1136 e2e files are edge-free, so it barely constrains widening
453
453
  the list - and `scripts/e2e-harness/screen.mjs` applies this screen and the three
454
454
  below for you, recording the funnel in the manifest's `screening` block:
455
455