cdk-nextjs 0.7.4 → 0.7.6

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 (51) hide show
  1. package/.jsii +37 -37
  2. package/docs/adapter-runtime.md +1 -1
  3. package/docs/harness-coverage.md +9 -8
  4. package/lib/adapter/adapter.mjs +220 -149
  5. package/lib/adapter/aws-cache-store.d.ts +28 -4
  6. package/lib/adapter/aws-cache-store.js +52 -21
  7. package/lib/adapter/aws-cache-store.test.js +36 -1
  8. package/lib/adapter/build-outputs.js +23 -1
  9. package/lib/adapter/build-outputs.test.js +18 -1
  10. package/lib/adapter/cache-handler.d.ts +4 -3
  11. package/lib/adapter/cache-handler.js +1 -1
  12. package/lib/adapter/cache-handler.mjs +131 -61
  13. package/lib/adapter/cache-handler.test.js +31 -1
  14. package/lib/adapter/cache-utils.d.ts +68 -2
  15. package/lib/adapter/cache-utils.js +108 -2
  16. package/lib/adapter/cache-utils.test.js +45 -1
  17. package/lib/adapter/init-cache.d.ts +1 -1
  18. package/lib/adapter/init-cache.js +60 -37
  19. package/lib/adapter/init-cache.test.js +55 -2
  20. package/lib/adapter/local-file-cache-handler.d.ts +2 -2
  21. package/lib/adapter/local-file-cache-handler.js +4 -5
  22. package/lib/adapter/s3-cache-handler.d.ts +23 -7
  23. package/lib/adapter/s3-cache-handler.js +63 -27
  24. package/lib/adapter/s3-cache-handler.test.js +168 -1
  25. package/lib/adapter/use-cache-default-handler.mjs +32 -9
  26. package/lib/adapter/use-cache-remote-handler.js +2 -3
  27. package/lib/adapter/use-cache-remote-handler.mjs +81 -61
  28. package/lib/nextjs-api.js +1 -1
  29. package/lib/nextjs-build/nextjs-build.d.ts +0 -7
  30. package/lib/nextjs-build/nextjs-build.js +4 -11
  31. package/lib/nextjs-build/nextjs-build.test.js +4 -3
  32. package/lib/nextjs-cache.js +1 -1
  33. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  34. package/lib/nextjs-compute/nextjs-functions.js +1 -1
  35. package/lib/nextjs-distribution.js +1 -1
  36. package/lib/nextjs-post-deploy.js +1 -1
  37. package/lib/nextjs-static-assets.js +1 -1
  38. package/lib/root-constructs/nextjs-base-construct.js +1 -1
  39. package/lib/root-constructs/nextjs-global-containers.js +1 -1
  40. package/lib/root-constructs/nextjs-global-functions.js +1 -1
  41. package/lib/root-constructs/nextjs-regional-containers.js +1 -1
  42. package/lib/root-constructs/nextjs-regional-functions.js +1 -1
  43. package/lib/runtime/image.d.ts +19 -0
  44. package/lib/runtime/image.js +28 -2
  45. package/lib/runtime/image.test.js +43 -1
  46. package/lib/runtime/lambda.mjs +14 -3
  47. package/lib/runtime/server.mjs +14 -3
  48. package/lib/utils/deployment-build-id.d.ts +11 -0
  49. package/lib/utils/deployment-build-id.js +15 -0
  50. package/package.json +3 -3
  51. package/scripts/e2e-harness/README.md +1 -1
@@ -152,4 +152,4 @@ class CdkNextjsCacheHandler {
152
152
  async resetRequestCache() { }
153
153
  }
154
154
  exports.default = CdkNextjsCacheHandler;
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL2NhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7O0VBTUU7QUFDRixzREFBc0Q7QUFDdEQsa0RBQTZCO0FBYTdCLCtDQUF3QztBQUN4Qyx5RUFBbUU7QUFDbkUsaUVBQTREO0FBQzVELHlEQUFvRDtBQUNwRCx5REFBa0Q7QUFFbEQ7O0dBRUc7QUFDSCxNQUFxQixxQkFBcUI7SUFDeEM7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLG1CQUFtQixHQUE4QixJQUFJLENBQUM7SUFDN0QsTUFBTSxDQUFDLHFCQUFxQixHQUEwQixJQUFJLENBQUM7SUFFbEQsV0FBVyxHQUFHLElBQUEsK0JBQVksR0FBRSxDQUFDO0lBQzdCLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBRTNFLDBCQUEwQjtJQUNsQixnQkFBZ0IsQ0FBeUI7SUFFakQsb0RBQW9EO0lBQzVDLGFBQWEsQ0FBc0I7SUFDbkMsZUFBZSxDQUFrQjtJQUV6QyxZQUFZLE9BQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdEQUFxQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FDUiwrQkFBK0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMscUJBQXFCO2dCQUNoRSxJQUFJLGlDQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLG1CQUFtQjtnQkFDNUQsSUFBSSx5Q0FBa0IsRUFB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S0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQ2pCLEdBQXNCLEVBQ3RCLFNBQStCO1FBRS9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLGtEQUFrRDtRQUNsRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsS0FBbUIsQ0FBQzs7QUFoSzdDLHdDQWlLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIE5leHQuanMgQ3VzdG9tIENhY2hlIEhhbmRsZXIuIFNlZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvbmV4dC1jb25maWctanMvaW5jcmVtZW50YWxDYWNoZUhhbmRsZXJQYXRoXG4gIFxuICBPcmNoZXN0cmF0b3IgY2FjaGUgaGFuZGxlciB0aGF0IGNvbmRpdGlvbmFsbHkgdXNlcyBkaWZmZXJlbnQgY2FjaGluZyBzdHJhdGVnaWVzOlxuICAtIEJ1aWxkIHRpbWU6IExvY2FsRmlsZUNhY2hlSGFuZGxlciBmb3IgcHJlLWNhY2hpbmdcbiAgLSBSdW50aW1lOiBNZW1vcnlDYWNoZUhhbmRsZXIgKGZhc3QpICsgUzNEeW5hbW9DYWNoZUhhbmRsZXIgKHBlcnNpc3RlbnQpXG4qL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgZ2V0RGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQge1xuICBDYWNoZUhhbmRsZXIsXG4gIENhY2hlSGFuZGxlclZhbHVlLFxuICBDYWNoZUhhbmRsZXJDb250ZXh0LFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvaW5jcmVtZW50YWwtY2FjaGVcIjtcbmltcG9ydCB0eXBlIHtcbiAgSW5jcmVtZW50YWxDYWNoZVZhbHVlLFxuICBHZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0LFxuICBHZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuICBTZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0LFxuICBTZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXNwb25zZS1jYWNoZVwiO1xuaW1wb3J0IHsgZ2V0VGFncyB9IGZyb20gXCIuL2NhY2hlLXV0aWxzXCI7XG5pbXBvcnQgeyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgfSBmcm9tIFwiLi9sb2NhbC1maWxlLWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IE1lbW9yeUNhY2hlSGFuZGxlciB9IGZyb20gXCIuL21lbW9yeS1jYWNoZS1oYW5kbGVyXCI7XG5pbXBvcnQgeyBTM0NhY2hlSGFuZGxlciB9IGZyb20gXCIuL3MzLWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IGlzQnVpbGRQaGFzZSB9IGZyb20gXCIuL3VzZS1jYWNoZS1jb21tb25cIjtcblxuLyoqXG4gKiBPcmNoZXN0cmF0b3IgY2FjaGUgaGFuZGxlciB0aGF0IGNvbmRpdGlvbmFsbHkgaW5zdGFudGlhdGVzIGhhbmRsZXJzIGJhc2VkIG9uIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENka05leHRqc0NhY2hlSGFuZGxlciBpbXBsZW1lbnRzIENhY2hlSGFuZGxlciB7XG4gIC8qKlxuICAgKiBTaGFyZWQgc2luZ2xldG9uIGhhbmRsZXJzIGZvciBydW50aW1lLlxuICAgKlxuICAgKiBOZXh0LmpzIGNyZWF0ZXMgbXVsdGlwbGUgY2FjaGUgaGFuZGxlciBpbnN0YW5jZXMgKG9uZSBlYWNoIGZvciBBUFBfUEFHRSwgQVBQX1JPVVRFLCBGRVRDSCwgZXRjKS5cbiAgICogVXNpbmcgc2luZ2xldG9uIHBhdHRlcm4gcHJvdmlkZXM6XG4gICAqIC0gU2luZ2xlIFMzIGNsaWVudCBjb25uZWN0aW9uIHBvb2wgc2hhcmVkIGFjcm9zcyBhbGwgY2FjaGUgdHlwZXNcbiAgICogLSBVbmlmaWVkIG1lbW9yeSBjYWNoZSBhY2Nlc3NpYmxlIGJ5IGFsbCBpbnN0YW5jZXMgKGNhY2hlIGhpdHMgYmVuZWZpdCBhbGwpXG4gICAqIC0gTG93ZXIgbWVtb3J5IGZvb3RwcmludCBhbmQgZmFzdGVyIGluaXRpYWxpemF0aW9uXG4gICAqIC0gU2FtZSBDYWNoZUhhbmRsZXJDb250ZXh0IGZvciBhbGwgaW5zdGFuY2VzLCBzbyBubyBjb25maWd1cmF0aW9uIGxvc3NcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNoYXJlZE1lbW9yeUhhbmRsZXI6IE1lbW9yeUNhY2hlSGFuZGxlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBzaGFyZWRTM0R5bmFtb0hhbmRsZXI6IFMzQ2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0J1aWxkVGltZSA9IGlzQnVpbGRQaGFzZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnID0gZ2V0RGVidWcoXCJjZGstbmV4dGpzOmNhY2hlLWhhbmRsZXI6b3JjaGVzdHJhdG9yXCIpO1xuXG4gIC8vIFNldCBvbmx5IGF0IGJ1aWxkIHRpbWUuXG4gIHByaXZhdGUgbG9jYWxGaWxlSGFuZGxlciE6IExvY2FsRmlsZUNhY2hlSGFuZGxlcjtcblxuICAvLyBTZXQgb25seSBhdCBydW50aW1lLCBzaGFyZWQgYWNyb3NzIGFsbCBpbnN0YW5jZXMuXG4gIHByaXZhdGUgbWVtb3J5SGFuZGxlciE6IE1lbW9yeUNhY2hlSGFuZGxlcjtcbiAgcHJpdmF0ZSBzM0R5bmFtb0hhbmRsZXIhOiBTM0NhY2hlSGFuZGxlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUhhbmRsZXJDb250ZXh0KSB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIHRoaXMubG9jYWxGaWxlSGFuZGxlciA9IG5ldyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIoKTtcbiAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgIGBCdWlsZC10aW1lIGNhY2hlIGRpcmVjdG9yeTogJHt0aGlzLmxvY2FsRmlsZUhhbmRsZXIuZ2V0Q2FjaGVEaXIoKX1gLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zM0R5bmFtb0hhbmRsZXIgPSBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkUzNEeW5hbW9IYW5kbGVyID8/PVxuICAgICAgICBuZXcgUzNDYWNoZUhhbmRsZXIoeyBjb250ZXh0OiBvcHRpb25zIH0pO1xuICAgICAgdGhpcy5tZW1vcnlIYW5kbGVyID0gQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyLnNoYXJlZE1lbW9yeUhhbmRsZXIgPz89XG4gICAgICAgIG5ldyBNZW1vcnlDYWNoZUhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIGVudHJ5XG4gICAqIC0gQnVpbGQgdGltZTogTm90IGltcGxlbWVudGVkIChidWlsZCBkb2Vzbid0IHJlYWQgY2FjaGUpXG4gICAqIC0gUnVudGltZTogVHJ5IG1lbW9yeSBmaXJzdCwgdGhlbiBTMy9EeW5hbW9EQlxuICAgKi9cbiAgYXN5bmMgZ2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgY3R4OiBHZXRJbmNyZW1lbnRhbEZldGNoQ2FjaGVDb250ZXh0IHwgR2V0SW5jcmVtZW50YWxSZXNwb25zZUNhY2hlQ29udGV4dCxcbiAgKTogUHJvbWlzZTxDYWNoZUhhbmRsZXJWYWx1ZSB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgLy8gUmVhZHMgYmFjayB3aGF0IHRoaXMgYnVpbGQgd3JvdGUsIHdoaWNoIGBjYWNoZUNvbXBvbmVudHNgIHByZXJlbmRlcmluZ1xuICAgICAgLy8gcmVxdWlyZXM7IHNlZSB7QGxpbmsgTG9jYWxGaWxlQ2FjaGVIYW5kbGVyLmdldH0uXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbEZpbGVIYW5kbGVyLmdldChjYWNoZUtleSk7XG4gICAgfVxuXG4gICAgLy8gUnVudGltZTogdHJ5IG1lbW9yeSBmaXJzdFxuICAgIGNvbnN0IG1lbW9yeVJlc3VsdCA9IGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5nZXQoY2FjaGVLZXkpO1xuICAgIC8vIEEgbWVtb3J5IGhpdCBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHNhbWUgdGFnIG1hcmtlcnMgYW4gUzMgcmVhZCBpcy5cbiAgICAvLyBgcmV2YWxpZGF0ZVRhZ2AgY2FuIG9ubHkgY2xlYXIgdGhlIG1lbW9yeSBvZiB0aGUgaW5zdGFuY2UgdGhhdCByYW4gaXQsXG4gICAgLy8gc28gc2tpcHBpbmcgdGhlIGNoZWNrIGxlZnQgZXZlcnkgb3RoZXIgaW5zdGFuY2UgYW5zd2VyaW5nIGZyb20gbWVtb3J5XG4gICAgLy8gZm9yIHRoZSB3aG9sZSBtZW1vcnkgVFRMIC0gYW5kIENsb3VkRnJvbnQsIHdob3NlIGNvcHkgdGhhdFxuICAgIC8vIGByZXZhbGlkYXRlVGFnYCBoYWQganVzdCBpbnZhbGlkYXRlZCwgY2FjaGVkIHRoZSBzdGFsZSBwYWdlIGFnYWluLlxuICAgIC8vIFRoZSBjaGVjayBpcyBvbmUgRHluYW1vREIgYEJhdGNoR2V0SXRlbWA7IHdoYXQgdGhlIG1lbW9yeSBsYXllciBzdGlsbFxuICAgIC8vIHNhdmVzIGlzIHRoZSBTMyByZWFkIGFuZCB0aGUgcGFyc2Ugb2YgdGhlIGJvZHkuIEEgcmV2YWxpZGF0ZWQgZW50cnkgaXNcbiAgICAvLyBkcm9wcGVkIGFuZCByZWFkIGZyb20gUzMsIHdoaWNoIGhhbmRzIGl0IGJhY2sgZXhwaXJlZCBvciBhcyBhIG1pc3MuXG4gICAgaWYgKFxuICAgICAgbWVtb3J5UmVzdWx0ICYmXG4gICAgICAoYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIuaXNSZXZhbGlkYXRlZChcbiAgICAgICAge1xuICAgICAgICAgIGxhc3RNb2RpZmllZDogbWVtb3J5UmVzdWx0Lmxhc3RNb2RpZmllZCxcbiAgICAgICAgICB2YWx1ZTogbWVtb3J5UmVzdWx0LnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICAgIGNhY2hlS2V5LFxuICAgICAgKSlcbiAgICApIHtcbiAgICAgIHRoaXMuZGVidWcoYE1lbW9yeSBjYWNoZSBSRVZBTElEQVRFRDogJHtjYWNoZUtleX1gKTtcbiAgICAgIGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5zZXQoY2FjaGVLZXksIG51bGwpO1xuICAgIH0gZWxzZSBpZiAobWVtb3J5UmVzdWx0KSB7XG4gICAgICB0aGlzLmRlYnVnKGBNZW1vcnkgY2FjaGUgSElUOiAke2NhY2hlS2V5fWApO1xuICAgICAgcmV0dXJuIG1lbW9yeVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBNZW1vcnkgbWlzcyAtIHRyeSBTMy9EeW5hbW9EQlxuICAgIGNvbnN0IHMzUmVzdWx0ID0gYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIuZ2V0KGNhY2hlS2V5LCBjdHgpO1xuICAgIGlmIChzM1Jlc3VsdCkge1xuICAgICAgdGhpcy5kZWJ1ZyhgUzMgY2FjaGUgSElUOiAke2NhY2hlS2V5fWApO1xuICAgICAgLy8gUHJvbW90ZWQgd2l0aCB0aGUgUzMgZW50cnkncyBvd24gYGxhc3RNb2RpZmllZGAsIG5vdCB0aGUgdGltZSBvZiB0aGVcbiAgICAgIC8vIGNvcHk6IE5leHQuanMgYWdlcyB0aGUgZW50cnkgZnJvbSBpdCBmb3IgdGltZS1iYXNlZCByZXZhbGlkYXRpb24sIGFuZFxuICAgICAgLy8gdGhlIHRhZyBtYXJrZXJzIGFyZSBjb21wYXJlZCBhZ2FpbnN0IGl0IHRvby4gU3RhbXBpbmcgYERhdGUubm93KClgXG4gICAgICAvLyBtYWRlIGFuIGVudHJ5IHRoYXQgd2FzIGR1ZSBmb3IgcmVnZW5lcmF0aW9uIGxvb2sgZnJlc2hseSByZW5kZXJlZCxcbiAgICAgIC8vIGFuZCBvbmUgYSBzb2Z0IGByZXZhbGlkYXRlVGFnYCBoYWQgbWFkZSBzdGFsZSBsb29rIG5ld2VyIHRoYW4gdGhlXG4gICAgICAvLyBzdGFsZSBtYXJrLCBzbyBtZW1vcnkgaGl0cyBzZXJ2ZWQgaXQgYXMgZnJlc2ggZm9yIHRoZSB3aG9sZSBtZW1vcnlcbiAgICAgIC8vIFRUTC4gQW4gZW50cnkgYSB0YWcgcmV2YWxpZGF0aW9uIGV4cGlyZWQgKGBsYXN0TW9kaWZpZWQ6IC0xYCkgaXMgbm90XG4gICAgICAvLyBjb3BpZWQgYXQgYWxsOiB0aGUgcmUtcmVuZGVyIGl0IGFza3MgZm9yIHdyaXRlcyB0aGUgZnJlc2ggZW50cnkgdG9cbiAgICAgIC8vIGJvdGggbGF5ZXJzLlxuICAgICAgaWYgKHMzUmVzdWx0Lmxhc3RNb2RpZmllZCAhPT0gLTEpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnNldChcbiAgICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgICBzM1Jlc3VsdC52YWx1ZSxcbiAgICAgICAgICBzM1Jlc3VsdC5sYXN0TW9kaWZpZWQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gczNSZXN1bHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJ1ZyhgQ2FjaGUgTUlTUzogJHtjYWNoZUtleX1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2FjaGUgZW50cnlcbiAgICogLSBCdWlsZCB0aW1lOiBXcml0ZSB0byBsb2NhbCBmaWxlIGNhY2hlIG9ubHkgKG9yIGRlbGV0ZSBpZiBkYXRhIGlzIG51bGwpXG4gICAqIC0gUnVudGltZTogV3JpdGUgdG8gYm90aCBtZW1vcnkgYW5kIFMzL0R5bmFtb0RCIChvciBkZWxldGUgaWYgZGF0YSBpcyBudWxsKVxuICAgKi9cbiAgYXN5bmMgc2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgZGF0YTogSW5jcmVtZW50YWxDYWNoZVZhbHVlIHwgbnVsbCxcbiAgICBjdHg6IFNldEluY3JlbWVudGFsRmV0Y2hDYWNoZUNvbnRleHQgfCBTZXRJbmNyZW1lbnRhbFJlc3BvbnNlQ2FjaGVDb250ZXh0LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2NhbEZpbGVIYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSwgZ2V0VGFncyhjdHgpKTtcbiAgICAgICAgdGhpcy5kZWJ1ZyhgQnVpbGQgY2FjaGUgd3JpdGU6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEZWxldGUgbm90IGltcGxlbWVudGVkIGZvciBsb2NhbCBmaWxlIGNhY2hlIChidWlsZC10aW1lIG9ubHkgY3JlYXRlcyBmaWxlcylcbiAgICAgICAgdGhpcy5kZWJ1ZyhgQnVpbGQgY2FjaGUgZGVsZXRlIGlnbm9yZWQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFJ1bnRpbWU6IGJvdGggbGF5ZXJzLCB3aGVyZSBgbnVsbGAgaXMgYSBkZWxldGUuXG4gICAgdGhpcy5kZWJ1ZyhgQ2FjaGUgJHtkYXRhID8gXCJ3cml0ZVwiIDogXCJkZWxldGVcIn06ICR7Y2FjaGVLZXl9YCk7XG4gICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSk7XG4gICAgYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIuc2V0KGNhY2hlS2V5LCBkYXRhLCBjdHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGUgdGFnc1xuICAgKiAtIEJ1aWxkIHRpbWU6IE5vdCBpbXBsZW1lbnRlZFxuICAgKiAtIFJ1bnRpbWU6IERlbGVnYXRlIHRvIFMzL0R5bmFtb0RCIGhhbmRsZXJcbiAgICovXG4gIGFzeW5jIHJldmFsaWRhdGVUYWcoXG4gICAgdGFnOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBkdXJhdGlvbnM/OiB7IGV4cGlyZT86IG51bWJlciB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0J1aWxkVGltZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1lbW9yeSBoaXRzIGFyZSBjaGVja2VkIGFnYWluc3QgdGhlIHNhbWUgbWFya2VycyAoc2VlIGBnZXRgKSwgc28gb25seVxuICAgIC8vIHRoZSBTMy9EeW5hbW9EQiBoYW5kbGVyIGhhcyBhbnl0aGluZyB0byByZWNvcmQuXG4gICAgYXdhaXQgdGhpcy5zM0R5bmFtb0hhbmRsZXIucmV2YWxpZGF0ZVRhZyh0YWcsIGR1cmF0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsaWJlcmF0ZWx5IGEgbm8tb3AuIE5leHQuanMgY2FsbHMgYHJlc2V0UmVxdWVzdENhY2hlYCBhdCB0aGUgc3RhcnQgb2ZcbiAgICogZXZlcnkgcmVxdWVzdCAoYGJhc2Utc2VydmVyYCwgYGFwcC1wYWdlYCwgYGFwcC1yb3V0ZWApLCBhbmQgaXRzIG93blxuICAgKiBgRmlsZVN5c3RlbUNhY2hlYCAtIHdob3NlIExSVSBpcyBzaGFyZWQgYWNyb3NzIHJlcXVlc3RzIHRoZSBzYW1lIHdheSB0aGVcbiAgICogbWVtb3J5IGxheWVyIGlzIC0gbGVhdmVzIGl0IGVtcHR5OiB0aGUgaG9vayBpcyBmb3Igc3RhdGUgc2NvcGVkIHRvIG9uZVxuICAgKiByZXF1ZXN0LCBhbmQgbm90aGluZyBoZXJlIGlzLiBDbGVhcmluZyB0aGUgbWVtb3J5IGxheWVyIGluIGl0IG1lYW50IG5vXG4gICAqIGVudHJ5IGV2ZXIgc3Vydml2ZWQgdG8gYSBzZWNvbmQgcmVxdWVzdCwgc28gZXZlcnkgcmVhZCB3ZW50IHRvIFMzLlxuICAgKi9cbiAgYXN5bmMgcmVzZXRSZXF1ZXN0Q2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7fVxufVxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL2NhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7O0VBTUU7QUFDRixzREFBc0Q7QUFDdEQsa0RBQTZCO0FBTzdCLCtDQUl1QjtBQUN2Qix5RUFBbUU7QUFDbkUsaUVBQTREO0FBQzVELHlEQUFvRDtBQUNwRCx5REFBa0Q7QUFFbEQ7O0dBRUc7QUFDSCxNQUFxQixxQkFBcUI7SUFDeEM7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLG1CQUFtQixHQUE4QixJQUFJLENBQUM7SUFDN0QsTUFBTSxDQUFDLHFCQUFxQixHQUEwQixJQUFJLENBQUM7SUFFbEQsV0FBVyxHQUFHLElBQUEsK0JBQVksR0FBRSxDQUFDO0lBQzdCLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBRTNFLDBCQUEwQjtJQUNsQixnQkFBZ0IsQ0FBeUI7SUFFakQsb0RBQW9EO0lBQzVDLGFBQWEsQ0FBc0I7SUFDbkMsZUFBZSxDQUFrQjtJQUV6QyxZQUFZLE9BQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdEQUFxQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FDUiwrQkFBK0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMscUJBQXFCO2dCQUNoRSxJQUFJLGlDQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLG1CQUFtQjtnQkFDNUQsSUFBSSx5Q0FBa0IsRUFB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S0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQ2pCLEdBQXNCLEVBQ3RCLFNBQStCO1FBRS9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLGtEQUFrRDtRQUNsRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsS0FBbUIsQ0FBQzs7QUFoSzdDLHdDQWlLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gIE5leHQuanMgQ3VzdG9tIENhY2hlIEhhbmRsZXIuIFNlZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvbmV4dC1jb25maWctanMvaW5jcmVtZW50YWxDYWNoZUhhbmRsZXJQYXRoXG4gIFxuICBPcmNoZXN0cmF0b3IgY2FjaGUgaGFuZGxlciB0aGF0IGNvbmRpdGlvbmFsbHkgdXNlcyBkaWZmZXJlbnQgY2FjaGluZyBzdHJhdGVnaWVzOlxuICAtIEJ1aWxkIHRpbWU6IExvY2FsRmlsZUNhY2hlSGFuZGxlciBmb3IgcHJlLWNhY2hpbmdcbiAgLSBSdW50aW1lOiBNZW1vcnlDYWNoZUhhbmRsZXIgKGZhc3QpICsgUzNEeW5hbW9DYWNoZUhhbmRsZXIgKHBlcnNpc3RlbnQpXG4qL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgZ2V0RGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQge1xuICBDYWNoZUhhbmRsZXIsXG4gIENhY2hlSGFuZGxlclZhbHVlLFxuICBDYWNoZUhhbmRsZXJDb250ZXh0LFxufSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvaW5jcmVtZW50YWwtY2FjaGVcIjtcbmltcG9ydCB0eXBlIHsgSW5jcmVtZW50YWxDYWNoZVZhbHVlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcbmltcG9ydCB7XG4gIEdldENhY2hlSGFuZGxlckNvbnRleHQsXG4gIGdldFRhZ3MsXG4gIFNldENhY2hlSGFuZGxlckNvbnRleHQsXG59IGZyb20gXCIuL2NhY2hlLXV0aWxzXCI7XG5pbXBvcnQgeyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIgfSBmcm9tIFwiLi9sb2NhbC1maWxlLWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IE1lbW9yeUNhY2hlSGFuZGxlciB9IGZyb20gXCIuL21lbW9yeS1jYWNoZS1oYW5kbGVyXCI7XG5pbXBvcnQgeyBTM0NhY2hlSGFuZGxlciB9IGZyb20gXCIuL3MzLWNhY2hlLWhhbmRsZXJcIjtcbmltcG9ydCB7IGlzQnVpbGRQaGFzZSB9IGZyb20gXCIuL3VzZS1jYWNoZS1jb21tb25cIjtcblxuLyoqXG4gKiBPcmNoZXN0cmF0b3IgY2FjaGUgaGFuZGxlciB0aGF0IGNvbmRpdGlvbmFsbHkgaW5zdGFudGlhdGVzIGhhbmRsZXJzIGJhc2VkIG9uIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENka05leHRqc0NhY2hlSGFuZGxlciBpbXBsZW1lbnRzIENhY2hlSGFuZGxlciB7XG4gIC8qKlxuICAgKiBTaGFyZWQgc2luZ2xldG9uIGhhbmRsZXJzIGZvciBydW50aW1lLlxuICAgKlxuICAgKiBOZXh0LmpzIGNyZWF0ZXMgbXVsdGlwbGUgY2FjaGUgaGFuZGxlciBpbnN0YW5jZXMgKG9uZSBlYWNoIGZvciBBUFBfUEFHRSwgQVBQX1JPVVRFLCBGRVRDSCwgZXRjKS5cbiAgICogVXNpbmcgc2luZ2xldG9uIHBhdHRlcm4gcHJvdmlkZXM6XG4gICAqIC0gU2luZ2xlIFMzIGNsaWVudCBjb25uZWN0aW9uIHBvb2wgc2hhcmVkIGFjcm9zcyBhbGwgY2FjaGUgdHlwZXNcbiAgICogLSBVbmlmaWVkIG1lbW9yeSBjYWNoZSBhY2Nlc3NpYmxlIGJ5IGFsbCBpbnN0YW5jZXMgKGNhY2hlIGhpdHMgYmVuZWZpdCBhbGwpXG4gICAqIC0gTG93ZXIgbWVtb3J5IGZvb3RwcmludCBhbmQgZmFzdGVyIGluaXRpYWxpemF0aW9uXG4gICAqIC0gU2FtZSBDYWNoZUhhbmRsZXJDb250ZXh0IGZvciBhbGwgaW5zdGFuY2VzLCBzbyBubyBjb25maWd1cmF0aW9uIGxvc3NcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNoYXJlZE1lbW9yeUhhbmRsZXI6IE1lbW9yeUNhY2hlSGFuZGxlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBzaGFyZWRTM0R5bmFtb0hhbmRsZXI6IFMzQ2FjaGVIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0J1aWxkVGltZSA9IGlzQnVpbGRQaGFzZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnID0gZ2V0RGVidWcoXCJjZGstbmV4dGpzOmNhY2hlLWhhbmRsZXI6b3JjaGVzdHJhdG9yXCIpO1xuXG4gIC8vIFNldCBvbmx5IGF0IGJ1aWxkIHRpbWUuXG4gIHByaXZhdGUgbG9jYWxGaWxlSGFuZGxlciE6IExvY2FsRmlsZUNhY2hlSGFuZGxlcjtcblxuICAvLyBTZXQgb25seSBhdCBydW50aW1lLCBzaGFyZWQgYWNyb3NzIGFsbCBpbnN0YW5jZXMuXG4gIHByaXZhdGUgbWVtb3J5SGFuZGxlciE6IE1lbW9yeUNhY2hlSGFuZGxlcjtcbiAgcHJpdmF0ZSBzM0R5bmFtb0hhbmRsZXIhOiBTM0NhY2hlSGFuZGxlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUhhbmRsZXJDb250ZXh0KSB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIHRoaXMubG9jYWxGaWxlSGFuZGxlciA9IG5ldyBMb2NhbEZpbGVDYWNoZUhhbmRsZXIoKTtcbiAgICAgIHRoaXMuZGVidWcoXG4gICAgICAgIGBCdWlsZC10aW1lIGNhY2hlIGRpcmVjdG9yeTogJHt0aGlzLmxvY2FsRmlsZUhhbmRsZXIuZ2V0Q2FjaGVEaXIoKX1gLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zM0R5bmFtb0hhbmRsZXIgPSBDZGtOZXh0anNDYWNoZUhhbmRsZXIuc2hhcmVkUzNEeW5hbW9IYW5kbGVyID8/PVxuICAgICAgICBuZXcgUzNDYWNoZUhhbmRsZXIoeyBjb250ZXh0OiBvcHRpb25zIH0pO1xuICAgICAgdGhpcy5tZW1vcnlIYW5kbGVyID0gQ2RrTmV4dGpzQ2FjaGVIYW5kbGVyLnNoYXJlZE1lbW9yeUhhbmRsZXIgPz89XG4gICAgICAgIG5ldyBNZW1vcnlDYWNoZUhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIGVudHJ5XG4gICAqIC0gQnVpbGQgdGltZTogTm90IGltcGxlbWVudGVkIChidWlsZCBkb2Vzbid0IHJlYWQgY2FjaGUpXG4gICAqIC0gUnVudGltZTogVHJ5IG1lbW9yeSBmaXJzdCwgdGhlbiBTMy9EeW5hbW9EQlxuICAgKi9cbiAgYXN5bmMgZ2V0KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgY3R4OiBHZXRDYWNoZUhhbmRsZXJDb250ZXh0LFxuICApOiBQcm9taXNlPENhY2hlSGFuZGxlclZhbHVlIHwgbnVsbD4ge1xuICAgIGlmICh0aGlzLmlzQnVpbGRUaW1lKSB7XG4gICAgICAvLyBSZWFkcyBiYWNrIHdoYXQgdGhpcyBidWlsZCB3cm90ZSwgd2hpY2ggYGNhY2hlQ29tcG9uZW50c2AgcHJlcmVuZGVyaW5nXG4gICAgICAvLyByZXF1aXJlczsgc2VlIHtAbGluayBMb2NhbEZpbGVDYWNoZUhhbmRsZXIuZ2V0fS5cbiAgICAgIHJldHVybiB0aGlzLmxvY2FsRmlsZUhhbmRsZXIuZ2V0KGNhY2hlS2V5KTtcbiAgICB9XG5cbiAgICAvLyBSdW50aW1lOiB0cnkgbWVtb3J5IGZpcnN0XG4gICAgY29uc3QgbWVtb3J5UmVzdWx0ID0gYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLmdldChjYWNoZUtleSk7XG4gICAgLy8gQSBtZW1vcnkgaGl0IGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgc2FtZSB0YWcgbWFya2VycyBhbiBTMyByZWFkIGlzLlxuICAgIC8vIGByZXZhbGlkYXRlVGFnYCBjYW4gb25seSBjbGVhciB0aGUgbWVtb3J5IG9mIHRoZSBpbnN0YW5jZSB0aGF0IHJhbiBpdCxcbiAgICAvLyBzbyBza2lwcGluZyB0aGUgY2hlY2sgbGVmdCBldmVyeSBvdGhlciBpbnN0YW5jZSBhbnN3ZXJpbmcgZnJvbSBtZW1vcnlcbiAgICAvLyBmb3IgdGhlIHdob2xlIG1lbW9yeSBUVEwgLSBhbmQgQ2xvdWRGcm9udCwgd2hvc2UgY29weSB0aGF0XG4gICAgLy8gYHJldmFsaWRhdGVUYWdgIGhhZCBqdXN0IGludmFsaWRhdGVkLCBjYWNoZWQgdGhlIHN0YWxlIHBhZ2UgYWdhaW4uXG4gICAgLy8gVGhlIGNoZWNrIGlzIG9uZSBEeW5hbW9EQiBgQmF0Y2hHZXRJdGVtYDsgd2hhdCB0aGUgbWVtb3J5IGxheWVyIHN0aWxsXG4gICAgLy8gc2F2ZXMgaXMgdGhlIFMzIHJlYWQgYW5kIHRoZSBwYXJzZSBvZiB0aGUgYm9keS4gQSByZXZhbGlkYXRlZCBlbnRyeSBpc1xuICAgIC8vIGRyb3BwZWQgYW5kIHJlYWQgZnJvbSBTMywgd2hpY2ggaGFuZHMgaXQgYmFjayBleHBpcmVkIG9yIGFzIGEgbWlzcy5cbiAgICBpZiAoXG4gICAgICBtZW1vcnlSZXN1bHQgJiZcbiAgICAgIChhd2FpdCB0aGlzLnMzRHluYW1vSGFuZGxlci5pc1JldmFsaWRhdGVkKFxuICAgICAgICB7XG4gICAgICAgICAgbGFzdE1vZGlmaWVkOiBtZW1vcnlSZXN1bHQubGFzdE1vZGlmaWVkLFxuICAgICAgICAgIHZhbHVlOiBtZW1vcnlSZXN1bHQudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgICAgY2FjaGVLZXksXG4gICAgICApKVxuICAgICkge1xuICAgICAgdGhpcy5kZWJ1ZyhgTWVtb3J5IGNhY2hlIFJFVkFMSURBVEVEOiAke2NhY2hlS2V5fWApO1xuICAgICAgYXdhaXQgdGhpcy5tZW1vcnlIYW5kbGVyLnNldChjYWNoZUtleSwgbnVsbCk7XG4gICAgfSBlbHNlIGlmIChtZW1vcnlSZXN1bHQpIHtcbiAgICAgIHRoaXMuZGVidWcoYE1lbW9yeSBjYWNoZSBISVQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICByZXR1cm4gbWVtb3J5UmVzdWx0O1xuICAgIH1cblxuICAgIC8vIE1lbW9yeSBtaXNzIC0gdHJ5IFMzL0R5bmFtb0RCXG4gICAgY29uc3QgczNSZXN1bHQgPSBhd2FpdCB0aGlzLnMzRHluYW1vSGFuZGxlci5nZXQoY2FjaGVLZXksIGN0eCk7XG4gICAgaWYgKHMzUmVzdWx0KSB7XG4gICAgICB0aGlzLmRlYnVnKGBTMyBjYWNoZSBISVQ6ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAvLyBQcm9tb3RlZCB3aXRoIHRoZSBTMyBlbnRyeSdzIG93biBgbGFzdE1vZGlmaWVkYCwgbm90IHRoZSB0aW1lIG9mIHRoZVxuICAgICAgLy8gY29weTogTmV4dC5qcyBhZ2VzIHRoZSBlbnRyeSBmcm9tIGl0IGZvciB0aW1lLWJhc2VkIHJldmFsaWRhdGlvbiwgYW5kXG4gICAgICAvLyB0aGUgdGFnIG1hcmtlcnMgYXJlIGNvbXBhcmVkIGFnYWluc3QgaXQgdG9vLiBTdGFtcGluZyBgRGF0ZS5ub3coKWBcbiAgICAgIC8vIG1hZGUgYW4gZW50cnkgdGhhdCB3YXMgZHVlIGZvciByZWdlbmVyYXRpb24gbG9vayBmcmVzaGx5IHJlbmRlcmVkLFxuICAgICAgLy8gYW5kIG9uZSBhIHNvZnQgYHJldmFsaWRhdGVUYWdgIGhhZCBtYWRlIHN0YWxlIGxvb2sgbmV3ZXIgdGhhbiB0aGVcbiAgICAgIC8vIHN0YWxlIG1hcmssIHNvIG1lbW9yeSBoaXRzIHNlcnZlZCBpdCBhcyBmcmVzaCBmb3IgdGhlIHdob2xlIG1lbW9yeVxuICAgICAgLy8gVFRMLiBBbiBlbnRyeSBhIHRhZyByZXZhbGlkYXRpb24gZXhwaXJlZCAoYGxhc3RNb2RpZmllZDogLTFgKSBpcyBub3RcbiAgICAgIC8vIGNvcGllZCBhdCBhbGw6IHRoZSByZS1yZW5kZXIgaXQgYXNrcyBmb3Igd3JpdGVzIHRoZSBmcmVzaCBlbnRyeSB0b1xuICAgICAgLy8gYm90aCBsYXllcnMuXG4gICAgICBpZiAoczNSZXN1bHQubGFzdE1vZGlmaWVkICE9PSAtMSkge1xuICAgICAgICBhd2FpdCB0aGlzLm1lbW9yeUhhbmRsZXIuc2V0KFxuICAgICAgICAgIGNhY2hlS2V5LFxuICAgICAgICAgIHMzUmVzdWx0LnZhbHVlLFxuICAgICAgICAgIHMzUmVzdWx0Lmxhc3RNb2RpZmllZCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzM1Jlc3VsdDtcbiAgICB9XG5cbiAgICB0aGlzLmRlYnVnKGBDYWNoZSBNSVNTOiAke2NhY2hlS2V5fWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjYWNoZSBlbnRyeVxuICAgKiAtIEJ1aWxkIHRpbWU6IFdyaXRlIHRvIGxvY2FsIGZpbGUgY2FjaGUgb25seSAob3IgZGVsZXRlIGlmIGRhdGEgaXMgbnVsbClcbiAgICogLSBSdW50aW1lOiBXcml0ZSB0byBib3RoIG1lbW9yeSBhbmQgUzMvRHluYW1vREIgKG9yIGRlbGV0ZSBpZiBkYXRhIGlzIG51bGwpXG4gICAqL1xuICBhc3luYyBzZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBkYXRhOiBJbmNyZW1lbnRhbENhY2hlVmFsdWUgfCBudWxsLFxuICAgIGN0eDogU2V0Q2FjaGVIYW5kbGVyQ29udGV4dCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9jYWxGaWxlSGFuZGxlci5zZXQoY2FjaGVLZXksIGRhdGEsIGdldFRhZ3MoY3R4KSk7XG4gICAgICAgIHRoaXMuZGVidWcoYEJ1aWxkIGNhY2hlIHdyaXRlOiAke2NhY2hlS2V5fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGVsZXRlIG5vdCBpbXBsZW1lbnRlZCBmb3IgbG9jYWwgZmlsZSBjYWNoZSAoYnVpbGQtdGltZSBvbmx5IGNyZWF0ZXMgZmlsZXMpXG4gICAgICAgIHRoaXMuZGVidWcoYEJ1aWxkIGNhY2hlIGRlbGV0ZSBpZ25vcmVkOiAke2NhY2hlS2V5fWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBSdW50aW1lOiBib3RoIGxheWVycywgd2hlcmUgYG51bGxgIGlzIGEgZGVsZXRlLlxuICAgIHRoaXMuZGVidWcoYENhY2hlICR7ZGF0YSA/IFwid3JpdGVcIiA6IFwiZGVsZXRlXCJ9OiAke2NhY2hlS2V5fWApO1xuICAgIGF3YWl0IHRoaXMubWVtb3J5SGFuZGxlci5zZXQoY2FjaGVLZXksIGRhdGEpO1xuICAgIGF3YWl0IHRoaXMuczNEeW5hbW9IYW5kbGVyLnNldChjYWNoZUtleSwgZGF0YSwgY3R4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZhbGlkYXRlIHRhZ3NcbiAgICogLSBCdWlsZCB0aW1lOiBOb3QgaW1wbGVtZW50ZWRcbiAgICogLSBSdW50aW1lOiBEZWxlZ2F0ZSB0byBTMy9EeW5hbW9EQiBoYW5kbGVyXG4gICAqL1xuICBhc3luYyByZXZhbGlkYXRlVGFnKFxuICAgIHRhZzogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgZHVyYXRpb25zPzogeyBleHBpcmU/OiBudW1iZXIgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNCdWlsZFRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBNZW1vcnkgaGl0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzYW1lIG1hcmtlcnMgKHNlZSBgZ2V0YCksIHNvIG9ubHlcbiAgICAvLyB0aGUgUzMvRHluYW1vREIgaGFuZGxlciBoYXMgYW55dGhpbmcgdG8gcmVjb3JkLlxuICAgIGF3YWl0IHRoaXMuczNEeW5hbW9IYW5kbGVyLnJldmFsaWRhdGVUYWcodGFnLCBkdXJhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGliZXJhdGVseSBhIG5vLW9wLiBOZXh0LmpzIGNhbGxzIGByZXNldFJlcXVlc3RDYWNoZWAgYXQgdGhlIHN0YXJ0IG9mXG4gICAqIGV2ZXJ5IHJlcXVlc3QgKGBiYXNlLXNlcnZlcmAsIGBhcHAtcGFnZWAsIGBhcHAtcm91dGVgKSwgYW5kIGl0cyBvd25cbiAgICogYEZpbGVTeXN0ZW1DYWNoZWAgLSB3aG9zZSBMUlUgaXMgc2hhcmVkIGFjcm9zcyByZXF1ZXN0cyB0aGUgc2FtZSB3YXkgdGhlXG4gICAqIG1lbW9yeSBsYXllciBpcyAtIGxlYXZlcyBpdCBlbXB0eTogdGhlIGhvb2sgaXMgZm9yIHN0YXRlIHNjb3BlZCB0byBvbmVcbiAgICogcmVxdWVzdCwgYW5kIG5vdGhpbmcgaGVyZSBpcy4gQ2xlYXJpbmcgdGhlIG1lbW9yeSBsYXllciBpbiBpdCBtZWFudCBub1xuICAgKiBlbnRyeSBldmVyIHN1cnZpdmVkIHRvIGEgc2Vjb25kIHJlcXVlc3QsIHNvIGV2ZXJ5IHJlYWQgd2VudCB0byBTMy5cbiAgICovXG4gIGFzeW5jIHJlc2V0UmVxdWVzdENhY2hlKCk6IFByb21pc2U8dm9pZD4ge31cbn1cbiJdfQ==
@@ -4704,14 +4704,14 @@ var init_getProfileName = __esm({
4704
4704
  });
4705
4705
 
4706
4706
  // node_modules/.pnpm/@smithy+core@3.35.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js
4707
- import { createHash } from "node:crypto";
4707
+ import { createHash as createHash2 } from "node:crypto";
4708
4708
  import { join as join2 } from "node:path";
4709
4709
  var getSSOTokenFilepath;
4710
4710
  var init_getSSOTokenFilepath = __esm({
4711
4711
  "node_modules/.pnpm/@smithy+core@3.35.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js"() {
4712
4712
  init_getHomeDir();
4713
4713
  getSSOTokenFilepath = (id) => {
4714
- const hasher = createHash("sha1");
4714
+ const hasher = createHash2("sha1");
4715
4715
  const cacheName = hasher.update(id).digest("hex");
4716
4716
  return join2(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`);
4717
4717
  };
@@ -6908,7 +6908,7 @@ var init_serdePlugin = __esm({
6908
6908
  });
6909
6909
 
6910
6910
  // node_modules/.pnpm/@smithy+core@3.35.0/node_modules/@smithy/core/dist-es/submodules/serde/hash-node/hash-node.js
6911
- import { createHash as createHash2, createHmac } from "node:crypto";
6911
+ import { createHash as createHash3, createHmac } from "node:crypto";
6912
6912
  function castSourceData(toCast, encoding) {
6913
6913
  if (Buffer.isBuffer(toCast)) {
6914
6914
  return toCast;
@@ -6942,7 +6942,7 @@ var init_hash_node = __esm({
6942
6942
  return Promise.resolve(this.hash.digest());
6943
6943
  }
6944
6944
  reset() {
6945
- this.hash = this.secret ? createHmac(this.algorithmIdentifier, castSourceData(this.secret)) : createHash2(this.algorithmIdentifier);
6945
+ this.hash = this.secret ? createHmac(this.algorithmIdentifier, castSourceData(this.secret)) : createHash3(this.algorithmIdentifier);
6946
6946
  }
6947
6947
  };
6948
6948
  }
@@ -8161,11 +8161,11 @@ var init_Md5Js = __esm({
8161
8161
  });
8162
8162
 
8163
8163
  // node_modules/.pnpm/@smithy+core@3.35.0/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js
8164
- import { createHash as createHash3 } from "node:crypto";
8164
+ import { createHash as createHash4 } from "node:crypto";
8165
8165
  function buildNativeClass() {
8166
8166
  return class Md5Node {
8167
8167
  digestLength = 16;
8168
- hash = createHash3("md5");
8168
+ hash = createHash4("md5");
8169
8169
  update(data) {
8170
8170
  this.hash.update(toUint8Array(data));
8171
8171
  }
@@ -8174,7 +8174,7 @@ function buildNativeClass() {
8174
8174
  return new Uint8Array(buf2.buffer, buf2.byteOffset, buf2.byteLength);
8175
8175
  }
8176
8176
  reset() {
8177
- this.hash = createHash3("md5");
8177
+ this.hash = createHash4("md5");
8178
8178
  }
8179
8179
  };
8180
8180
  }
@@ -8185,7 +8185,7 @@ var init_Md5Node = __esm({
8185
8185
  init_Md5Js();
8186
8186
  hasNativeCrypto = (() => {
8187
8187
  try {
8188
- createHash3("md5");
8188
+ createHash4("md5");
8189
8189
  return true;
8190
8190
  } catch {
8191
8191
  return false;
@@ -8502,7 +8502,7 @@ var init_Sha256Js = __esm({
8502
8502
  });
8503
8503
 
8504
8504
  // node_modules/.pnpm/@smithy+core@3.35.0/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js
8505
- import { createHash as createHash4, createHmac as createHmac2 } from "node:crypto";
8505
+ import { createHash as createHash5, createHmac as createHmac2 } from "node:crypto";
8506
8506
  function buildNativeClass3() {
8507
8507
  return class Sha256Node {
8508
8508
  digestLength = 32;
@@ -8536,7 +8536,7 @@ function buildNativeClass3() {
8536
8536
  this.finished = false;
8537
8537
  }
8538
8538
  createHash() {
8539
- return this.secret ? createHmac2("sha256", toBuffer(this.secret)) : createHash4("sha256");
8539
+ return this.secret ? createHmac2("sha256", toBuffer(this.secret)) : createHash5("sha256");
8540
8540
  }
8541
8541
  };
8542
8542
  }
@@ -8555,7 +8555,7 @@ var init_Sha256Node = __esm({
8555
8555
  init_Sha256Js();
8556
8556
  hasNativeCrypto2 = (() => {
8557
8557
  try {
8558
- createHash4("sha256");
8558
+ createHash5("sha256");
8559
8559
  return true;
8560
8560
  } catch {
8561
8561
  return false;
@@ -26825,7 +26825,7 @@ var require_dist_cjs13 = __commonJS({
26825
26825
  var { setCredentialFeature: setCredentialFeature2 } = (init_client3(), __toCommonJS(client_exports2));
26826
26826
  var { CredentialsProviderError: CredentialsProviderError2, parseKnownFiles: parseKnownFiles2, getProfileName: getProfileName2 } = (init_config2(), __toCommonJS(config_exports));
26827
26827
  var { HttpRequest: HttpRequest2 } = (init_protocols(), __toCommonJS(protocols_exports));
26828
- var { createHash: createHash6, createPrivateKey, createPublicKey, sign: sign3 } = __require("node:crypto");
26828
+ var { createHash: createHash7, createPrivateKey, createPublicKey, sign: sign3 } = __require("node:crypto");
26829
26829
  var { promises } = __require("node:fs");
26830
26830
  var { homedir: homedir2 } = __require("node:os");
26831
26831
  var { dirname: dirname2, join: join8 } = __require("node:path");
@@ -26994,7 +26994,7 @@ var require_dist_cjs13 = __commonJS({
26994
26994
  getTokenFilePath() {
26995
26995
  const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join8(homedir2(), ".aws", "login", "cache");
26996
26996
  const loginSessionBytes = Buffer.from(this.loginSession, "utf8");
26997
- const loginSessionSha256 = createHash6("sha256").update(loginSessionBytes).digest("hex");
26997
+ const loginSessionSha256 = createHash7("sha256").update(loginSessionBytes).digest("hex");
26998
26998
  return join8(directory, `${loginSessionSha256}.json`);
26999
26999
  }
27000
27000
  derToRawSignature(derSignature) {
@@ -36366,7 +36366,7 @@ var init_Sha1Js = __esm({
36366
36366
  });
36367
36367
 
36368
36368
  // node_modules/.pnpm/@aws-sdk+checksums@3.1001.1/node_modules/@aws-sdk/checksums/dist-es/submodules/sha/sha1/Sha1Node.js
36369
- import { createHash as createHash5, createHmac as createHmac3 } from "node:crypto";
36369
+ import { createHash as createHash6, createHmac as createHmac3 } from "node:crypto";
36370
36370
  function buildNativeClass4() {
36371
36371
  return class Sha1Node {
36372
36372
  digestLength = 20;
@@ -36400,7 +36400,7 @@ function buildNativeClass4() {
36400
36400
  this.finished = false;
36401
36401
  }
36402
36402
  createHash() {
36403
- return this.secret ? createHmac3("sha1", toBuffer2(this.secret)) : createHash5("sha1");
36403
+ return this.secret ? createHmac3("sha1", toBuffer2(this.secret)) : createHash6("sha1");
36404
36404
  }
36405
36405
  };
36406
36406
  }
@@ -36419,7 +36419,7 @@ var init_Sha1Node = __esm({
36419
36419
  init_Sha1Js();
36420
36420
  hasNativeCrypto3 = (() => {
36421
36421
  try {
36422
- createHash5("sha1");
36422
+ createHash6("sha1");
36423
36423
  return true;
36424
36424
  } catch {
36425
36425
  return false;
@@ -74013,6 +74013,9 @@ var require_dist_cjs22 = __commonJS({
74013
74013
  // src/adapter/cache-handler.ts
74014
74014
  var import_debug9 = __toESM(require_src());
74015
74015
 
74016
+ // src/adapter/cache-utils.ts
74017
+ import { createHash } from "node:crypto";
74018
+
74016
74019
  // src/utils/base-path.ts
74017
74020
  function normalizeBasePath(basePath) {
74018
74021
  return (basePath || "").replace(/^\/+/, "").replace(/\/+$/, "");
@@ -74077,6 +74080,35 @@ function parseCacheValue(jsonString) {
74077
74080
  return val;
74078
74081
  });
74079
74082
  }
74083
+ function cacheKeyFileName(cacheKey) {
74084
+ let cleanCacheKey = cacheKey;
74085
+ if (cacheKey === "/" || cacheKey === "") {
74086
+ cleanCacheKey = "index";
74087
+ } else if (cacheKey.startsWith("/")) {
74088
+ cleanCacheKey = cacheKey.slice(1);
74089
+ }
74090
+ return `${cleanCacheKey}.json`;
74091
+ }
74092
+ function sha256Hex(value) {
74093
+ return createHash("sha256").update(value).digest("hex");
74094
+ }
74095
+ var MAX_S3_KEY_BYTES = 1024;
74096
+ var MAX_BUILD_ID_BYTES = 127;
74097
+ var LONG_KEY_PREFIX = "_long-key";
74098
+ function cacheObjectName(cacheKey) {
74099
+ const name = cacheKeyFileName(cacheKey);
74100
+ if (Buffer.byteLength(name) <= MAX_S3_KEY_BYTES - (MAX_BUILD_ID_BYTES + 1)) {
74101
+ return name;
74102
+ }
74103
+ return `${LONG_KEY_PREFIX}/${sha256Hex(name)}.long`;
74104
+ }
74105
+ var ROUTE_CACHE_KEY_PREFIX = /^route-cache\/[A-Z_]+\/[0-9a-f]{64}\/\$(?=\/)/;
74106
+ function denormalizePagePath(pagePath) {
74107
+ if (pagePath === "/index") {
74108
+ return "/";
74109
+ }
74110
+ return pagePath.startsWith("/index/") ? pagePath.slice("/index".length) : pagePath;
74111
+ }
74080
74112
  var NEXT_CACHE_TAGS_HEADER = "x-next-cache-tags";
74081
74113
  function headerTags(value) {
74082
74114
  const headers = value?.headers;
@@ -74103,12 +74135,11 @@ var LocalFileCacheHandler = class {
74103
74135
  debug(`Created local cache directory: ${this.cacheDir}`);
74104
74136
  }
74105
74137
  /**
74106
- * Build file path for cache entry
74107
- * Structure: {cacheKey}.json (BucketDeployment will add buildId prefix)
74138
+ * Build file path for cache entry: {@link cacheObjectName}, the name the
74139
+ * runtime reads it back under (BucketDeployment will add buildId prefix)
74108
74140
  */
74109
74141
  buildFilePath(cacheKey) {
74110
- const filePath = join(this.cacheDir, `${cacheKey}.json`);
74111
- return filePath;
74142
+ return join(this.cacheDir, cacheObjectName(cacheKey));
74112
74143
  }
74113
74144
  /**
74114
74145
  * Read back an entry this build already wrote.
@@ -74205,13 +74236,10 @@ function resolveAwsCacheConfig() {
74205
74236
  };
74206
74237
  }
74207
74238
  function buildS3Key(buildId, cacheKey) {
74208
- let cleanCacheKey = cacheKey;
74209
- if (cacheKey === "/" || cacheKey === "") {
74210
- cleanCacheKey = "index";
74211
- } else if (cacheKey.startsWith("/")) {
74212
- cleanCacheKey = cacheKey.slice(1);
74213
- }
74214
- return join6(buildId, `${cleanCacheKey}.json`);
74239
+ return join6(buildId, cacheKeyFileName(cacheKey));
74240
+ }
74241
+ function s3ObjectKey(buildId, cacheKey) {
74242
+ return join6(buildId, cacheObjectName(cacheKey));
74215
74243
  }
74216
74244
  function markerState(marker, createdAt, now) {
74217
74245
  const { revalidatedAt, expiredAt, staleAt } = marker;
@@ -74267,6 +74295,14 @@ function markerOf(item) {
74267
74295
  }
74268
74296
  var BATCH_GET_MAX_KEYS = 100;
74269
74297
  var DEFAULT_TAG_REFRESH_MS = 1e3;
74298
+ var MAX_SORT_KEY_BYTES = 1024;
74299
+ function hashedTag(tag) {
74300
+ return `#${sha256Hex(tag)}`;
74301
+ }
74302
+ var MAX_TAG_BYTES = 768;
74303
+ function sortKeyTag(tag) {
74304
+ return Buffer.byteLength(tag) <= MAX_TAG_BYTES ? tag : hashedTag(tag);
74305
+ }
74270
74306
  var TagMarkerTable = class {
74271
74307
  constructor(client, tableName, buildId) {
74272
74308
  this.client = client;
@@ -74289,7 +74325,7 @@ var TagMarkerTable = class {
74289
74325
  TableName: this.tableName,
74290
74326
  Key: {
74291
74327
  pk: { S: this.buildId },
74292
- sk: { S: tag }
74328
+ sk: { S: sortKeyTag(tag) }
74293
74329
  },
74294
74330
  ...markerUpdate(now, durations),
74295
74331
  ReturnValues: "ALL_NEW"
@@ -74309,7 +74345,13 @@ var TagMarkerTable = class {
74309
74345
  const unique = Array.from(new Set(tags));
74310
74346
  const markers = /* @__PURE__ */ new Map();
74311
74347
  for (let i5 = 0; i5 < unique.length; i5 += BATCH_GET_MAX_KEYS) {
74312
- let keys = unique.slice(i5, i5 + BATCH_GET_MAX_KEYS).map((tag) => ({ pk: { S: buildId }, sk: { S: tag } }));
74348
+ const tagBySk = new Map(
74349
+ unique.slice(i5, i5 + BATCH_GET_MAX_KEYS).map((tag) => [sortKeyTag(tag), tag])
74350
+ );
74351
+ let keys = Array.from(
74352
+ tagBySk.keys(),
74353
+ (sk) => ({ pk: { S: buildId }, sk: { S: sk } })
74354
+ );
74313
74355
  for (let attempt = 0; keys?.length && attempt < 3; attempt++) {
74314
74356
  const response = await this.client.send(
74315
74357
  new import_client_dynamodb.BatchGetItemCommand({
@@ -74322,7 +74364,7 @@ var TagMarkerTable = class {
74322
74364
  })
74323
74365
  );
74324
74366
  for (const item of response.Responses?.[tableName] ?? []) {
74325
- const tag = item.sk?.S;
74367
+ const tag = tagBySk.get(item.sk?.S ?? "");
74326
74368
  if (tag !== void 0) {
74327
74369
  markers.set(tag, markerOf(item));
74328
74370
  }
@@ -74360,11 +74402,13 @@ var RevalidationLog = class {
74360
74402
  * to {@link LOG_PUT_ATTEMPTS} times.
74361
74403
  */
74362
74404
  async put(tag, at, marker) {
74405
+ const skTag = sortKeyTag(tag);
74363
74406
  for (let attempt = 1; ; attempt++) {
74364
74407
  const item = {
74365
74408
  pk: { S: this.pk },
74366
- sk: { S: `${logSkPrefix(at)}#${tag}` },
74367
- ttl: { N: String(Math.ceil((at + REVALIDATION_LOG_TTL_MS) / 1e3)) }
74409
+ sk: { S: `${logSkPrefix(at)}#${skTag}` },
74410
+ ttl: { N: String(Math.ceil((at + REVALIDATION_LOG_TTL_MS) / 1e3)) },
74411
+ ...skTag !== tag && { longTag: { S: tag } }
74368
74412
  };
74369
74413
  for (const field of MARKER_FIELDS) {
74370
74414
  const value = marker[field];
@@ -74409,7 +74453,7 @@ var RevalidationLog = class {
74409
74453
  ":pk": { S: this.pk },
74410
74454
  ":since": { S: logSkPrefix(Math.max(0, since)) }
74411
74455
  },
74412
- ProjectionExpression: "sk, revalidatedAt, staleAt, expiredAt",
74456
+ ProjectionExpression: "sk, longTag, revalidatedAt, staleAt, expiredAt",
74413
74457
  ExclusiveStartKey: startKey
74414
74458
  })
74415
74459
  );
@@ -74421,7 +74465,7 @@ var RevalidationLog = class {
74421
74465
  rows.push({
74422
74466
  sk,
74423
74467
  at: Number(sk.slice(0, LOG_SK_DIGITS)),
74424
- tag: sk.slice(LOG_SK_DIGITS + 1),
74468
+ tag: item.longTag?.S ?? sk.slice(LOG_SK_DIGITS + 1),
74425
74469
  marker: markerOf(item)
74426
74470
  });
74427
74471
  }
@@ -75353,8 +75397,8 @@ var S3CacheHandler = class {
75353
75397
  if (!this.config.bucketName) {
75354
75398
  return null;
75355
75399
  }
75356
- const s3Key = this.buildS3Key(cacheKey);
75357
- const response = await this.bucket.get(s3Key);
75400
+ const objectKey = s3ObjectKey(this.config.buildId, cacheKey);
75401
+ const response = await this.bucket.get(objectKey);
75358
75402
  if (!response) {
75359
75403
  this.debug(`S3 CACHE MISS: ${cacheKey}`);
75360
75404
  return null;
@@ -75364,7 +75408,7 @@ var S3CacheHandler = class {
75364
75408
  this.debug(`S3 CACHE INVALIDATED BY TAG: ${cacheKey}`);
75365
75409
  return isFetchCacheGet(ctx) ? null : { lastModified: EXPIRED_LAST_MODIFIED, value: parsedValue.value };
75366
75410
  }
75367
- this.debug(`S3 CACHE HIT: ${cacheKey} (${s3Key})`);
75411
+ this.debug(`S3 CACHE HIT: ${cacheKey} (${objectKey})`);
75368
75412
  return {
75369
75413
  lastModified: parsedValue.lastModified,
75370
75414
  value: parsedValue.value
@@ -75436,6 +75480,8 @@ var S3CacheHandler = class {
75436
75480
  this.softRevalidatedKeys.add(cacheKey);
75437
75481
  }
75438
75482
  async set(cacheKey, data, ctx) {
75483
+ const s3Key = buildS3Key(this.config.buildId, cacheKey);
75484
+ const objectKey = s3ObjectKey(this.config.buildId, cacheKey);
75439
75485
  try {
75440
75486
  if (!data) {
75441
75487
  this.debug(`S3 CACHE DELETE: ${cacheKey}`);
@@ -75443,16 +75489,15 @@ var S3CacheHandler = class {
75443
75489
  return;
75444
75490
  }
75445
75491
  this.softRevalidatedKeys.delete(cacheKey);
75446
- const s3Key2 = this.buildS3Key(cacheKey);
75447
- const tags2 = await this.storedEntryTags(s3Key2, ctx);
75492
+ const tags2 = await this.storedEntryTags(objectKey, ctx);
75448
75493
  await this.s3Client.send(
75449
75494
  new import_client_s32.DeleteObjectCommand({
75450
75495
  Bucket: this.config.bucketName,
75451
- Key: s3Key2
75496
+ Key: objectKey
75452
75497
  })
75453
75498
  );
75454
- this.debug(`S3 CACHE DELETED: ${s3Key2}`);
75455
- await this.deleteDynamoDBTagMappings(s3Key2, tags2);
75499
+ this.debug(`S3 CACHE DELETED: ${objectKey}`);
75500
+ await this.deleteDynamoDBTagMappings(s3Key, tags2);
75456
75501
  return;
75457
75502
  }
75458
75503
  const tags = entryTags({ tags: getTags(ctx), value: data });
@@ -75462,7 +75507,6 @@ var S3CacheHandler = class {
75462
75507
  if (!this.config.bucketName) {
75463
75508
  return;
75464
75509
  }
75465
- const s3Key = this.buildS3Key(cacheKey);
75466
75510
  const cacheHandlerValue = {
75467
75511
  // On the marker clock, since that is what it is compared with.
75468
75512
  lastModified: markerClock(),
@@ -75473,7 +75517,7 @@ var S3CacheHandler = class {
75473
75517
  tags
75474
75518
  };
75475
75519
  const body = serializeCacheValue(cacheEntryWithTags);
75476
- await this.bucket.putJson(s3Key, body);
75520
+ await this.bucket.putJson(objectKey, body);
75477
75521
  this.debug(`S3 CACHE STORED: ${cacheKey} (${data.kind})`);
75478
75522
  if (this.softRevalidatedKeys.delete(cacheKey)) {
75479
75523
  const route = this.s3KeyToInvalidationPath(s3Key);
@@ -75531,17 +75575,19 @@ var S3CacheHandler = class {
75531
75575
  * {@link MAX_TAG_QUERY_PAGES}, or no build tag manifest to read.
75532
75576
  */
75533
75577
  async tagRoutes(tag) {
75578
+ const skPrefix = this.tagMappingPrefix(tag);
75534
75579
  const [{ items, truncated }, buildTags] = await Promise.all([
75535
- this.queryTagMappings(tag),
75580
+ this.queryTagMappings(tag, skPrefix),
75536
75581
  this.buildTagManifest()
75537
75582
  ]);
75538
- const prefixLength = tag.length + 1;
75583
+ const prefixLength = skPrefix.length;
75539
75584
  const keyPrefix = this.config.buildId ? `${this.config.buildId}/` : "";
75540
- const s3Keys = items.map((item) => item.sk?.S?.slice(prefixLength)).filter(
75541
- (s3Key) => Boolean(s3Key && s3Key.startsWith(keyPrefix))
75542
- );
75585
+ const s3Keys = items.flatMap((item) => {
75586
+ const rest = item.sk?.S?.slice(prefixLength);
75587
+ return rest && rest.startsWith(keyPrefix) ? [item.s3Key?.S ?? rest] : [];
75588
+ });
75543
75589
  for (const cacheKey of buildTags?.get(tag) ?? []) {
75544
- s3Keys.push(this.buildS3Key(cacheKey));
75590
+ s3Keys.push(buildS3Key(this.config.buildId, cacheKey));
75545
75591
  }
75546
75592
  this.debug(
75547
75593
  `TAG ${tag}: Found ${s3Keys.length} cache entries to invalidate`
@@ -75566,7 +75612,8 @@ var S3CacheHandler = class {
75566
75612
  });
75567
75613
  }
75568
75614
  /**
75569
- * Every mapping row for `tag`, following `LastEvaluatedKey`, and whether
75615
+ * Every mapping row for `tag` - those whose sort key starts with
75616
+ * `skPrefix`, its {@link tagMappingPrefix} - following `LastEvaluatedKey`, and whether
75570
75617
  * {@link MAX_TAG_QUERY_PAGES} cut the walk short.
75571
75618
  *
75572
75619
  * DynamoDB caps a Query at 1 MB of items regardless of how many match, and
@@ -75575,7 +75622,7 @@ var S3CacheHandler = class {
75575
75622
  * first page invalidates only that page's entries while still reporting
75576
75623
  * success, which is indistinguishable from revalidation having worked.
75577
75624
  */
75578
- async queryTagMappings(tag) {
75625
+ async queryTagMappings(tag, skPrefix) {
75579
75626
  const items = [];
75580
75627
  let exclusiveStartKey;
75581
75628
  let pages = 0;
@@ -75586,7 +75633,7 @@ var S3CacheHandler = class {
75586
75633
  KeyConditionExpression: "pk = :pk AND begins_with(sk, :skPrefix)",
75587
75634
  ExpressionAttributeValues: {
75588
75635
  ":pk": { S: this.config.buildId },
75589
- ":skPrefix": { S: `${tag}#` }
75636
+ ":skPrefix": { S: skPrefix }
75590
75637
  },
75591
75638
  ExclusiveStartKey: exclusiveStartKey
75592
75639
  })
@@ -75622,6 +75669,10 @@ var S3CacheHandler = class {
75622
75669
  if (withoutSuffix.includes("[") || isFetchCacheKey(withoutSuffix)) {
75623
75670
  return void 0;
75624
75671
  }
75672
+ const routeCacheKey = ROUTE_CACHE_KEY_PREFIX.exec(withoutSuffix);
75673
+ if (routeCacheKey) {
75674
+ return denormalizePagePath(withoutSuffix.slice(routeCacheKey[0].length));
75675
+ }
75625
75676
  return withoutSuffix === "index" ? "/" : `/${withoutSuffix}`;
75626
75677
  }
75627
75678
  /**
@@ -75728,19 +75779,37 @@ var S3CacheHandler = class {
75728
75779
  this.cloudFrontConfig.distributionId || this.cloudFrontConfig.distributionIdParameterName
75729
75780
  );
75730
75781
  }
75731
- /** `{buildId}/{cacheKey}.json`; see {@link buildS3Key}. */
75732
- buildS3Key(cacheKey) {
75733
- return buildS3Key(this.config.buildId, cacheKey);
75782
+ /**
75783
+ * The sort key of `tag`'s mapping row for `s3Key`: `<prefix>s3Key`, or, when
75784
+ * that passes DynamoDB's 1024-byte sort key limit, `<prefix><buildId>/#<sha256>`.
75785
+ * Either way the row carries the key itself in `s3Key`. next 16.3.8's
75786
+ * route-scoped keys are ~88 bytes longer than a pathname, enough to push a
75787
+ * long tag on a long path over - and a rejected `PutItem` left
75788
+ * `revalidateTag` nothing to invalidate, so CloudFront kept the stale page.
75789
+ * The prefix is {@link tagMappingPrefix}'s, which {@link MAX_TAG_BYTES} and
75790
+ * the build ID's cap leave room for the hashed form after.
75791
+ */
75792
+ tagMappingSortKey(tag, s3Key) {
75793
+ const prefix = this.tagMappingPrefix(tag);
75794
+ const sk = `${prefix}${s3Key}`;
75795
+ return Buffer.byteLength(sk) <= MAX_SORT_KEY_BYTES ? sk : `${prefix}${this.config.buildId}/${hashedTag(s3Key)}`;
75796
+ }
75797
+ /**
75798
+ * What every mapping row of `tag` starts with, and so what
75799
+ * {@link queryTagMappings} matches: `<sortKeyTag(tag)>#`.
75800
+ */
75801
+ tagMappingPrefix(tag) {
75802
+ return `${sortKeyTag(tag)}#`;
75734
75803
  }
75735
75804
  async storeDynamoDBTagMappings(s3Key, tags) {
75736
75805
  try {
75737
75806
  const updatePromises = tags.map(async (tag) => {
75738
- const tagCacheKey = `${tag}#${s3Key}`;
75807
+ const sk = this.tagMappingSortKey(tag, s3Key);
75739
75808
  const updateCommand = new import_client_dynamodb3.UpdateItemCommand({
75740
75809
  TableName: this.config.tableName,
75741
75810
  Key: {
75742
75811
  pk: { S: this.config.buildId },
75743
- sk: { S: tagCacheKey }
75812
+ sk: { S: sk }
75744
75813
  },
75745
75814
  // Deliberately no `revalidatedAt`: a mapping row records only that an
75746
75815
  // entry carries the tag. Stamping it at write time made every tagged
@@ -75748,9 +75817,10 @@ var S3CacheHandler = class {
75748
75817
  // row's timestamp is taken after the entry's `lastModified` — so
75749
75818
  // `checkIfRevalidated` deleted healthy entries and the page
75750
75819
  // re-rendered on every request.
75751
- UpdateExpression: "SET createdAt = if_not_exists(createdAt, :now)",
75820
+ UpdateExpression: "SET createdAt = if_not_exists(createdAt, :now), s3Key = :s3Key",
75752
75821
  ExpressionAttributeValues: {
75753
- ":now": { N: Date.now().toString() }
75822
+ ":now": { N: Date.now().toString() },
75823
+ ":s3Key": { S: s3Key }
75754
75824
  }
75755
75825
  });
75756
75826
  await this.dynamoClient.send(updateCommand);
@@ -75799,7 +75869,7 @@ var S3CacheHandler = class {
75799
75869
  TableName: this.config.tableName,
75800
75870
  Key: {
75801
75871
  pk: { S: this.config.buildId },
75802
- sk: { S: `${tag}#${s3Key}` }
75872
+ sk: { S: this.tagMappingSortKey(tag, s3Key) }
75803
75873
  }
75804
75874
  })
75805
75875
  );