{"_id":"@aws-blocks/hosting","_rev":"13-54e439e44a178b832b5a2566d8ce661b","name":"@aws-blocks/hosting","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@aws-blocks/hosting","version":"0.1.0","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.0","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"2f196045b40bdc15e8b190430a27b99682289480","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.0.tgz","fileCount":241,"integrity":"sha512-/i73iQvdmgqD9FKsM2gVmFbf+XUTstd6qVbf2Q2syRHDdaEfXAqpxC4dnrxpe97Gps34+XdxCsiNljjQtbHYsQ==","signatures":[{"sig":"MEUCIBlPO8o/JcBqBW9RJHZXWloGaLqBoOHK64sbu4G8YhmjAiEAyWykFRA26HpkcUu+IjP3XfGNkECrfXJ5KHDEC2euCnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2061192},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"639f6fad510d473abd72286351b3294a646d9895","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.0_1781566755008_0.2968043312352284","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aws-blocks/hosting","version":"0.1.1","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.1","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"f156ff650683f4d013a9dd1eb33f93e7fd0ee577","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.1.tgz","fileCount":242,"integrity":"sha512-pERe/gak9rHU7fdOFOdE6GqultRZaImiUM2hQKN+ArKQFH1Bz1umeJ89ADykgjnhg7GYK8zRYc1GEjHvTNoNsw==","signatures":[{"sig":"MEUCIF22QHSetSPlSQWrur1SRcSI1Nvx7j+90G8J70CkIsW7AiEAnqYN2S3sGodVOE/X/P/bH9yzTv2LqBNgVkFG6thU/fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2064095},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"ed3e0ad5724d28c2a2fb0ea9207dfc9e941257f9","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.1_1781633760662_0.6658920009429372","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aws-blocks/hosting","version":"0.1.2","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.2","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"c8a3e3a7a74e2024cd388a1dfad5d0bf6c6a9b33","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.2.tgz","fileCount":246,"integrity":"sha512-tNo7KE+CVwudIgG+Dpul4FCYL1DCXyPcbVzmWDpiu9QwU9/fIaoSPl2MsVAtMNrPS3sCfOZrIubAukuz/Dp1Pw==","signatures":[{"sig":"MEUCIQCBzOzPucdII/HfVLdRrRU7D+yUR8AONZL2lEghK3+eewIgFAIWQ8/GUAtaoBNMWtbAm6kbYdKp4vF82GW/52CU4qM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2143671},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"dda9c244684538292fdebd51821ae3c2ebd593e1","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.2_1781803590662_0.5861759426819688","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aws-blocks/hosting","version":"0.1.3","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.3","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"41e4b96d29835fc6a203c92daddaca0b9a7c2775","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.3.tgz","fileCount":246,"integrity":"sha512-rmyoEHemszrK+ZmlB8fM0yZB8nTO/obtETdkoK8L9CvQuL0KzkOHG+/H4BvFR9DE+BNfLbiqJRgl40lI3BXkBw==","signatures":[{"sig":"MEUCICzIlHdAFLx2QO7KJq0DF8aVI4+kN4T1b2dvV3aShqKYAiEAuZ6NvJT6WpMOSwjKUxnSpVVNyV/e9s3JTiY2/xK0Obg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2151933},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"5d2cd0ee74b6687337cef6516b490ff56900aa52","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.3_1782791094705_0.9944218590167813","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aws-blocks/hosting","version":"0.1.4","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.4","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"663c92ff2b008f90756245be0de9c024a2418766","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.4.tgz","fileCount":279,"integrity":"sha512-xkrI4X0bQGH41UyVOlFyu/uL9qmphULNNyi1UAMLhxsJROc90ckNytqwoKOD6eyHxgyuTS+J6yPJtUP2miT8kw==","signatures":[{"sig":"MEUCIQCUuRm/sllst0TKkr8akKnSR60fUYywYmgiv3vlR05M8wIgJlnIls3uMEKRsxlEIDISEI+ZsnC3JnBBrzx/vV22Hgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3187287},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"e8f38546b59a85fb707e0b751887f0cdeebf4fb0","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.4_1783033089787_0.0628207358463464","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aws-blocks/hosting","version":"0.1.5","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.5","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"8967a940444dd788345f01f1d95734315a167640","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.5.tgz","fileCount":283,"integrity":"sha512-dET+NiQdbCPQezAKddQzD/2jEtXpwRJoQgPZtS/KgooVLPa0lK4G/dLjDu40HBE4+JluuCoTqeuDKZjidQ99IA==","signatures":[{"sig":"MEQCIFgctrIuZiDjgQyihVpO3mCLcoRTPwKLsGb16JOa5fvtAiBfXm1hRZODO3hZB+P96HuIeO/9QG1mtw6BNZDyoFN4ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3343942},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"0cc253b02f811b3029e6bc598de7fdaef69151ec","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.5_1784124837622_0.7509081900568144","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aws-blocks/hosting","version":"0.1.6","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.6","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"dist":{"shasum":"bd6d893bfd7700801d703f911082fe0a652259f0","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.6.tgz","fileCount":283,"integrity":"sha512-M1spOaDkNr/QTjo+AGBjlce4waaPjRldm1lW2J7OuCUt2BCEP8SlbYbhixTEEtzIMtcqbB45eAsKU/qbKvr5Zg==","signatures":[{"sig":"MEYCIQCh/kQ1GSlOwJi4B+2Pt1wQTvdeIWAJD8JPHzMK4ZbWrgIhALOOVsFs3d2ZRN+WvF1zQjFlhfEvsvxBmcKzTjnKPyGu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3346965},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"090ce6109a2a78a7f9c5c9d1650a5822b964d3f0","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.6_1784238104855_0.19623892048554348","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@aws-blocks/hosting","version":"0.1.8","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.8","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"dist":{"shasum":"ac3e61f799d229f241f9a9699395480cad129813","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.8.tgz","fileCount":291,"integrity":"sha512-/j6HC2sDmfo+jKWMuDjeL1hnBHeVUi/CCMXMDxrN4ZSM6kduWN7dj4LRRz2YRd4v6hUKD4uMd0B4MEc4xVt4rA==","signatures":[{"sig":"MEUCIQD4RcwkF8iNS4esS2BTuCChB+SiGS+PwEgAaI08z5cFuQIgRAzSQOVu/cQ/yVD5kX38xH7XYR/AhzWK1uYzXIhcQKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3494160},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"f6b9cad7b543663cc9ea73a4476ca5511255d779","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.8_1786135413789_0.47516513287160045","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@aws-blocks/hosting","version":"0.1.9","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.9","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"dist":{"shasum":"ef27d8e0656a622af5d1610ac666f1e59802edea","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.9.tgz","fileCount":295,"integrity":"sha512-xlHPysnjvVKy3Qly6zA0hs38Hx3Jd1Tu+UJCFGB69EWIeIDw7cVpljIQdrkSKjGE2ycvoAcWSuLC9nOUzc28sA==","signatures":[{"sig":"MEUCIDafWf5vlixRjVpPe/i2gXQEWELLUuDUVxuf4dsDYooCAiEA1d/4ymsxlJLQQsuv8ztFohSUAB9n6nfRxCXzz4AQ3v8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3533539},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"d725f3239445ab01314c0aced640ce94a48b580e","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.9_1787214766675_0.6498642046091667","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@aws-blocks/hosting","version":"0.1.10","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.1.10","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"dist":{"shasum":"4d78193be209d93f404d79ef1a728e1e0b8241a4","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.1.10.tgz","fileCount":295,"integrity":"sha512-vTb6uQGWeY6A8vj4r6O74FFjrM+ew0Vv6HMnqXYEDLTD00lqvmQWhvk3YAK49bKIB9SPO6J7+IWA41IntAZXtw==","signatures":[{"sig":"MEYCIQDIHR9CQ3QmPUFjELgCuTJho0kMgw/+YFYO3miFKHLdGAIhAOKqd2y7Q/1yuK06SPz6Hb6yJchKaW4HmP3MJNhEuacI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3533133},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/hosting_construct.d.ts","default":"./dist/constructs/hosting_construct.js"}},"gitHead":"164b106810e2b4f7801426158feae82a4ccbe3d4","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","parse-cache-control":"^1.0.1","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.1.10_1787230461360_0.04135987988193457","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aws-blocks/hosting","version":"0.2.0","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.2.0","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"bin":{"hosting-config":"dist/config-cli-bin.js","hosting-secret":"dist/secret-cli-bin.js","hosting-typegen":"dist/typegen-cli-bin.js"},"dist":{"shasum":"36aa483573c701162d84b4c9dcd92a5aa70aaa5e","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.2.0.tgz","fileCount":355,"integrity":"sha512-kXV6ebOCXhtoVB00bbrM06JxD0/V0BHCaYciTeQsFx5Klqao47ES21rpwz/SJP+fzSuqo+IS+eNqhIb8KH55hw==","signatures":[{"sig":"MEYCIQDSwXl7Ux9q/8dIDgA3xE1j3otsqW8p5S0L268q9KaLmQIhAIknPfVLGhBmXlSJC7PRHicMqvoYXOQpqj1Ze248d+Nj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3828960},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./scripts":{"types":"./dist/scripts.d.ts","default":"./dist/scripts.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/index.d.ts","default":"./dist/constructs/index.js"}},"gitHead":"04d4b21b1cae9600c44a2fc63c0020ca21894316","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","@aws-sdk/client-ssm":"^3.700.0","parse-cache-control":"^1.0.1","@standard-schema/spec":"^1.1.0","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-secrets-manager":"^3.700.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","typescript":">=5.3.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.2.0_1788264327062_0.8034897050486631","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aws-blocks/hosting","version":"0.3.0","author":{"name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws-blocks/hosting@0.3.0","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"bin":{"hosting-config":"dist/config-cli-bin.js","hosting-secret":"dist/secret-cli-bin.js","hosting-typegen":"dist/typegen-cli-bin.js"},"dist":{"shasum":"016c4937dbd847a16a3c5c87085f4bf27cd214ef","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.3.0.tgz","fileCount":359,"integrity":"sha512-pE3+H2EE+SgPiuEqNtnyikZ0U3UD7kytl/fsC5UaY4X6uGwHOnnqFhYeH4bJjjhWBOzc9hTvlFBhlNdtNx8aOQ==","signatures":[{"sig":"MEUCIQCTyXzQSAzknPCakwc7/fVIsk6CUC9+AZlw5p4U+VEZnQIgRH9FdmNtiPVwmxbEER2w5ElbCBZuRLVXH4XcSVaGwGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4136944},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./scripts":{"types":"./dist/scripts.d.ts","default":"./dist/scripts.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/index.d.ts","default":"./dist/constructs/index.js"}},"gitHead":"ce01923c591828486e07d3d3f2b6b9d585e39057","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","@aws-sdk/client-s3":"^3.700.0","@aws-sdk/client-ssm":"^3.700.0","parse-cache-control":"^1.0.1","@standard-schema/spec":"^1.1.0","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-secrets-manager":"^3.700.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","typescript":">=5.3.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hosting_0.3.0_1788867460411_0.23337199016483479","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"_id":"@aws-blocks/hosting@0.3.1","bin":{"hosting-config":"dist/config-cli-bin.js","hosting-secret":"dist/secret-cli-bin.js","hosting-typegen":"dist/typegen-cli-bin.js"},"bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"dist":{"shasum":"c7418b58f3bde838e99914797316a431aa9e940f","tarball":"https://registry.npmjs.org/@aws-blocks/hosting/-/hosting-0.3.1.tgz","fileCount":359,"integrity":"sha512-chrh3ID2OhOlHQf/IOTdeT1taTUoojRs5LM6tjIdz0JXJH/sr1uBgjLblntWx3879ko9CtVkbePzc3u76lJZTg==","signatures":[{"sig":"MEQCIFp7o/qWWoesj78KWzxKr+gnsiAOPxU4VCKdLBB4yGhcAiB/X9u7i6zRit6ROgzDCp7YsGTq8Bs49/RhNlW2Fx+wAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC4NjArCzFnyQMNGVzWiGfbftJFYHaRl/QmFaWxdb3O4wIgVmTwzqlq1FlaAwjLm8pfcLzXWci7ZA6BiTtbWX7fBKg="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws-blocks%2fhosting@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4137996},"main":"dist/index.js","name":"@aws-blocks/hosting","type":"module","types":"dist/index.d.ts","author":{"name":"Amazon Web Services"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./error":{"types":"./dist/hosting_error.d.ts","default":"./dist/hosting_error.js"},"./scripts":{"types":"./dist/scripts.d.ts","default":"./dist/scripts.js"},"./adapters":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"./constructs":{"types":"./dist/constructs/index.d.ts","default":"./dist/constructs/index.js"}},"gitHead":"51eeb265ab5efdbd853e989cf8bd6d30951c29c7","license":"Apache-2.0","scripts":{"dev":"tsc --build --watch","test":"node --test dist/**/*.test.js","build":"tsc --build && npm run bundle:handlers","bundle:handlers":"node scripts/bundle-handlers.mjs"},"version":"0.3.1","_npmUser":{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"},"homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","keywords":["aws-blocks","hosting","cloudfront","s3","static-site","ssr"],"repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"_npmVersion":"10.9.8","description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","directories":{},"maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.0","jiti":"^2.4.0","semver":"^7.6.0","fast-glob":"^3.3.2","local-pkg":"^0.5.0","cross-spawn":"^7.0.6","@aws-sdk/client-s3":"^3.700.0","@aws-sdk/client-ssm":"^3.700.0","parse-cache-control":"^1.0.1","@standard-schema/spec":"^1.1.0","@aws-sdk/signature-v4a":"^3.1069.0","@aws-sdk/client-secrets-manager":"^3.700.0","@aws-sdk/client-cloudfront-keyvaluestore":"^3.1075.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/semver":"^7.5.8","@types/cross-spawn":"^6.0.6","@types/parse-cache-control":"^1.0.4"},"peerDependencies":{"constructs":"^10.6.0","typescript":">=5.3.0","aws-cdk-lib":"^2.257.0","@opennextjs/aws":">=3.10.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@opennextjs/aws":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hosting_0.3.1_1789678800071_0.37091702309222496"}}},"time":{"created":"2026-06-15T23:39:14.878Z","modified":"2026-09-17T21:00:00.614Z","0.1.0":"2026-06-15T23:39:15.184Z","0.1.1":"2026-06-16T18:16:00.848Z","0.1.2":"2026-06-18T17:26:30.863Z","0.1.3":"2026-06-30T03:44:54.897Z","0.1.4":"2026-07-02T22:58:09.982Z","0.1.5":"2026-07-15T14:13:57.765Z","0.1.6":"2026-07-16T21:41:45.112Z","0.1.8":"2026-08-07T20:43:34.003Z","0.1.9":"2026-08-20T08:32:46.830Z","0.1.10":"2026-08-20T12:54:21.578Z","0.2.0":"2026-09-01T12:05:27.262Z","0.3.0":"2026-09-08T11:37:40.598Z","0.3.1":"2026-09-17T21:00:00.234Z"},"bugs":{"url":"https://github.com/aws-devtools-labs/aws-blocks/issues"},"author":{"name":"Amazon Web Services"},"license":"Apache-2.0","homepage":"https://github.com/aws-devtools-labs/aws-blocks/tree/main/packages/hosting#readme","repository":{"url":"git+https://github.com/aws-devtools-labs/aws-blocks.git","type":"git","directory":"packages/hosting"},"description":"Low-level CDK L3 constructs for deploying web applications on AWS (CloudFront, S3, Lambda, WAF, monitoring, DNS).","maintainers":[{"name":"aws-blocks-npm-ops","email":"aws-blocks@amazon.com"}],"readme":"# @aws-blocks/hosting\n\nLow-level CDK L3 constructs for deploying web applications on AWS\n(CloudFront, S3, Lambda, WAF, monitoring, DNS).\n\n## Overview\n\nThis package provides:\n\n1. **`HostingConstruct`** -- a CDK L3 construct that provisions a full hosting\n   stack (CloudFront distribution, S3 origin, Lambda compute, optional WAF,\n   monitoring dashboards, and DNS records).\n\n2. **Framework adapters** (Next.js, Nuxt, Astro, SPA) that run the framework\n   build, produce a `DeployManifest`, and hand off to the construct for\n   provisioning.\n\n3. **Manifest types** (`DeployManifest`, `RouteBehavior`, `ComputeResource`,\n   etc.) that describe the shape of a deployment.\n\n## When to use this package directly\n\nMost users should use `Hosting` from `@aws-blocks/core`, which wraps these\nconstructs with the AWS Blocks integration layer (route registry, config.json\ngeneration, RPC prefix wiring).\n\nUse `HostingConstruct` directly when you need:\n\n- A standalone CDK app without the AWS Blocks layer\n- Fine-grained control over construct props\n- Custom adapters or manifest generation pipelines\n\n## Main exports\n\n```ts\n// Root entry point: the CDK-free value API (safe to import in SSR/runtime code)\nimport { secret, config, getSecret, getConfig } from '@aws-blocks/hosting';\n\n// Sub-path: the construct, manifest types, and the CDK resolution engine\nimport {\n  HostingConstruct,\n  HostingConstructProps,\n  HostingDomainConfig,\n  HostingWafConfig,\n  generateBuildId,\n  DeployManifest,\n  RouteBehavior,\n  ComputeResource,\n  FrameworkAdapterFn,\n  HostingError,\n} from '@aws-blocks/hosting/constructs';\n\n// Sub-path: adapters only\nimport { nextjsAdapter, nuxtAdapter, astroAdapter, spaAdapter } from '@aws-blocks/hosting/adapters';\n\n// Sub-path: typed errors\nimport { HostingError } from '@aws-blocks/hosting/error';\n```\n\n> The value API is on the bare `@aws-blocks/hosting` entry so an SSR/runtime bundle\n> can import `getSecret`/`getConfig` without pulling in CDK. The construct and the\n> resolution engine live on `/constructs`.\n\n## Secrets & config\n\nKeep sensitive and environment-specific values out of source. You declare a value\nby **which function you call** — that choice picks the store, and the framework\nowns everything else (the CLI write, the IAM grant, the runtime read):\n\n| Declare (infra) | Store | Read (runtime) |\n| --- | --- | --- |\n| `secret('KEY')` | AWS **Secrets Manager** (sensitive) | `getSecret('KEY')` |\n| `config('KEY')` | AWS **SSM Parameter Store** (non-sensitive, free tier) | `getConfig('KEY')` |\n\n### Declare — in your hosting infra\n\n```ts\nimport { HostingConstruct } from '@aws-blocks/hosting/constructs';\nimport { secret, config } from '@aws-blocks/hosting';\n\nnew HostingConstruct(stack, 'Web', {\n  manifest, // produced by a framework adapter (see \"Main exports\")\n  environment: {\n    STRIPE_KEY: secret('STRIPE_KEY'), // → Secrets Manager\n    FEATURE_FLAGS: config('FEATURE_FLAGS'), // → SSM Parameter Store\n  },\n  // Optional per-kind namespace / cache config:\n  secretStore: { prefix: '/myapp/secrets' },\n  configStore: { prefix: '/myapp/config', cacheTtlSeconds: 30 },\n});\n```\n\nThe marker is inert (`{ key, kind }`) and safe to commit — only the store\n*locator* is injected (never the value), and the compute role is granted\nleast-privilege read on that one resource (`secretsmanager:GetSecretValue` /\n`ssm:GetParameter`, scoped to the exact ARN) plus `kms:Decrypt`.\n\nMarkers in `environment` are wired for **runtime** resolution (above), so both\n`secret()` and `config()` are allowed there (only the locator is injected, never\nthe value). Resolving a marker to a literal at **synth time** — e.g. for\n`domain.domainName`, which must be a literal before CloudFront/ACM are built —\n**inlines the value into the CloudFormation template**, so those positions accept\nonly `config()` (non-sensitive → SSM) or a plain string, never `secret()`. Synth\nresolution needs an async wrapper that does the SDK read during construction; that\npath is provided by the Blocks `Hosting` block (`await Hosting.create(...)`), not\nthis leaf construct, whose `domain.domainName` is a plain `string | string[]`.\n\n**Bring your own:** `environment` also accepts an existing CDK `ISecret` /\n`IParameter` handle — the construct grants read via the handle and injects its\nlocator, so `getSecret` / `getConfig` resolve it identically (managed\n*provisions*, BYO *references*).\n\n### Read — in your SSR / API / runtime code\n\n```ts\n// The value API is the bare entry (CDK-free), so no CDK is pulled into the runtime bundle:\nimport { getSecret, getConfig } from '@aws-blocks/hosting';\n\nconst key = await getSecret('STRIPE_KEY'); // Secrets Manager\nconst flags = await getConfig('FEATURE_FLAGS'); // SSM\n```\n\nEach getter reads `process.env.KEY` first, so **local dev needs no AWS** — put\nthe value in a `.env` file. On a deployed function it fetches + decrypts from its\nstore and caches per cold start (or per `cacheTtlSeconds`, for rotation without a\nredeploy).\n\n### Type-safe keys — autocomplete + typo errors, zero code\n\nBy default `getSecret` / `getConfig` accept any `string`. Run `hosting-typegen`\n(wire it as `\"typegen\": \"hosting-typegen\"` and, ideally, a `\"predev\"` hook) to make\nthem **type-safe with no call-site change**:\n\n```bash\nnpx hosting-typegen           # scan secret()/config() calls → .blocks/hosting-values.d.ts\nnpx hosting-typegen --watch   # regenerate on every save (run alongside your dev server)\nnpx hosting-typegen --check   # CI: fail if that file is stale\n```\n\n**In a Blocks app you get this for free** — the Blocks dev server (`npm run dev`)\nauto-detects `secret()`/`config()` usage and runs the generate-and-watch step itself,\nso keys update as you type with no second command. (It's a no-op if the app declares\nno secrets, and never blocks the dev server.) For a standalone hosting app, run\n`hosting-typegen --watch` alongside your dev server, or add a `\"predev\"` hook. Either\nway, add `hosting-typegen --check` in CI to catch a stale committed file.\n\nIt statically scans your `secret('...')` / `config('...')` calls (no app execution,\nno AWS credentials) and generates a `.d.ts` that narrows the getters to exactly your\ndeclared keys — so a typo, or reading a `config` key with `getSecret` (the wrong\nstore), is a **compile error**, and your editor autocompletes the valid keys:\n\n```ts\nawait getSecret('STRIPE_KEY'); // ✅ declared with secret()\nawait getSecret('STRIPE_KYE'); // ❌ compile error — not a declared secret key\n```\n\nAdd the generated file to your `tsconfig.json` `include` and let the tool own it\n(it is regenerated, never hand-edited):\n\n```jsonc\n{ \"include\": [\"src\", \"aws-blocks\", \".blocks/**/*.d.ts\"] }\n```\n\nThe keys come straight from your `secret()`/`config()` calls — the single source of\ntruth — so the types can't drift from what you wired. The file is safe to delete\n(the keys just fall back to `string`) and safe to `.gitignore` and regenerate.\nBecause it is derived only from string-literal keys, a `secret(myVar)` with a\nnon-literal key is reported and skipped; and a synth-only `domain` / `connectionArn`\nkey may appear in autocomplete even though it is not readable at runtime.\n\n### Typed, parsed values with a schema\n\nPass a schema (Zod, Valibot, ArkType — any Standard Schema) to get a **typed,\nparsed** value instead of a `string`:\n\n```ts\n// declare\nimport { z } from 'zod';\nenvironment: { FEATURE_FLAGS: config('FEATURE_FLAGS', { schema: z.object({ beta: z.boolean() }) }) }\n\n// read — no JSON.parse, no `any`\nconst { beta } = await getConfig('FEATURE_FLAGS');   // typed as { beta: boolean }\n```\n\n`typegen` infers the schema's output type (via a TypeScript `Program`) and inlines\nit into the generated `.d.ts`, so `getConfig`/`getSecret` **return that type**. At\nruntime the value is JSON-parsed automatically (a per-key flag is set at synth). The\nschema type is typed as `StandardSchemaV1`, so the library is your choice. Note this\nis parse-to-type: the schema object isn't shipped to the runtime (it can't cross the\nsynth→runtime bundle boundary), so it parses to the declared type rather than\ndeep-re-validating on read.\n\n### Transport markers across a JSON / build boundary\n\nA marker is branded with a `Symbol` (and may carry a non-serializable `schema`), so\nit does **not** survive a plain `JSON.stringify` → `JSON.parse`: the brand is dropped\nand `isManagedValue()` returns `false` on the far side. If you carry a config object\ncontaining markers across a JSON boundary — e.g. an orchestrator that serializes\nper-stage config into a build **environment variable** and reads it back in a later\nbuild phase — use the codec for a lossless round-trip:\n\n```ts\nimport {\n  managedValueReplacer,\n  managedValueReviver,\n  encodeManagedValue,\n  decodeManagedValue,\n  isManagedValueJSON,\n  ManagedValueCodecError,\n} from '@aws-blocks/hosting';\n\n// Producer (phase 1): stringify with the replacer, stash in an env var.\nprocess.env.STAGE_CONFIG = JSON.stringify({ domain: config('DOMAIN'), apiKey: secret('API_KEY') }, managedValueReplacer);\n\n// Consumer (phase 2, possibly a different process): parse with the reviver.\nconst cfg = JSON.parse(process.env.STAGE_CONFIG, managedValueReviver);\nisSecret(cfg.apiKey); // true — brand restored\n```\n\n`encodeManagedValue` / `decodeManagedValue` are the single-value primitives; the\n`managedValueReplacer` / `managedValueReviver` are drop-in `JSON.stringify` /\n`JSON.parse` hooks that apply them across a whole (possibly nested) object.\n\nContract of the wire form (it is a **published, cross-build compatibility boundary**):\n\n- **Versioned.** Every encoded value carries a protocol version\n  (`MANAGED_VALUE_JSON_VERSION`). A decoder rejects a version it does not understand\n  instead of guessing, so producer and consumer on different package versions fail\n  predictably rather than silently misreading each other.\n- **Malformed input.** `decodeManagedValue(v: unknown)` validates exhaustively and\n  throws a typed `ManagedValueCodecError` on an unsupported version, unknown kind,\n  invalid key, or any other malformed shape. The `managedValueReviver`, by contrast,\n  **never throws**: anything that is not an exact wire value is left untouched, so a\n  stray or future-versioned tagged object passes through as ordinary data.\n- **No collisions.** Only an object whose *sole* property is the codec tag is revived\n  into a marker. An ordinary object that merely also happens to carry the tag (plus\n  other fields) is **not** treated as a wire value, so no sibling data is silently\n  dropped.\n- **Schema.** A marker's `schema` object is not serializable and is **not**\n  transported; what is transported is its operational bit, so the runtime\n  **JSON-parse behavior is preserved** across the boundary (a schema-bearing value\n  still comes back parsed, not raw). Deep re-validation, however, needs the real\n  schema **re-declared on the far side** — the runtime getter is parse-only either\n  way (see \"Typed, parsed values with a schema\" above).\n\n### Set the values (out of band, never in git)\n\nStandalone hosting apps get two bundled CLIs:\n\n```bash\n# Secrets Manager — a secret value is NEVER taken from argv (it would land in\n# shell history). Omit the value for a hidden prompt, or pipe it via --value-stdin:\nnpx hosting-secret set STRIPE_KEY --prefix /myapp/secrets --region us-east-1   # hidden prompt\ncat key.txt | npx hosting-secret set STRIPE_KEY --value-stdin --prefix /myapp/secrets\nnpx hosting-secret list --prefix /myapp/secrets\nnpx hosting-secret remove STRIPE_KEY --prefix /myapp/secrets\n\n# SSM Parameter Store — a config value is non-sensitive, so a positional value is fine:\nnpx hosting-config set FEATURE_FLAGS '{\"beta\":true}' --prefix /myapp/config\n```\n\n`set` is **create-or-update**: the first call creates the entry, and running it\nagain overwrites the value in place (no error, no prompt) — that is how you\nrotate a value. A **secret** value is never read from `argv` / shell history:\n`hosting-secret set` takes it from a **hidden prompt** or `--value-stdin`, and\npassing it positionally is a hard error. A **config** value is non-sensitive, so\n`hosting-config set KEY value` positionally is allowed (`--value-stdin` / the\nprompt still work). `list` prints names only, never values.\n\n`remove` on a **secret** is recoverable by default — the value enters Secrets\nManager's recovery window and can be restored (guards against a typo'd prod key).\nPass `--force` to delete immediately with no recovery. (`config` removes are always\nimmediate — SSM Parameter Store has no recovery window.)\n\n> **Footguns to know.**\n> 1. **Region.** `--region` (or `AWS_REGION`) must match the region the app deploys\n>    to, or the deploy reports the value as \"not set\".\n> 2. **Account-global prefix.** The default prefixes (`/hosting/secrets`,\n>    `/hosting/config`) are account-global — if more than one app deploys to the\n>    same account, give each its own `secretStore.prefix` / `configStore.prefix`\n>    (and matching CLI `--prefix`), or their same-named values collide.\n> 3. **`stage` is not a security boundary.** An optional `stage` on\n>    `secretStore` / `configStore` resolves `<prefix>/<stage>/<key>` and falls\n>    back to the shared `<prefix>/<key>`. To make that fallback work the IAM grant\n>    is *static*, so a stage's compute has standing read on **both** the stage\n>    value and the shared one. Every stage sharing a prefix can read the shared\n>    value — put production-only secrets in a stage-scoped slot and keep only a\n>    safe cross-stage default (e.g. a sandbox credential) in the shared slot. Two\n>    constructs sharing a prefix are not isolated from each other.\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────┐\n│  Framework Adapter (nextjs / nuxt / astro)   │\n│  - runs build                                │\n│  - emits DeployManifest                      │\n└──────────────────┬───────────────────────────┘\n                   │\n                   ▼\n┌──────────────────────────────────────────────┐\n│  HostingConstruct (CDK L3)                   │\n│  - CloudFront distribution                   │\n│  - S3 origin (static assets)                 │\n│  - Lambda compute (SSR / API / middleware)   │\n│  - Optional: WAF, DNS, monitoring, warmup    │\n└──────────────────────────────────────────────┘\n```\n\n## Build retention & rollback\n\nEach deploy uploads its assets under an immutable `builds/<buildId>/` prefix and\nflips a CloudFront KeyValueStore pointer (`meta.b`) to the new build. Old builds\nare retained for `storage.buildRetentionDays` (default **30**) so you can roll\nback, then expired by an S3 lifecycle rule.\n\n- **The build currently being served is never expired**, no matter how long ago\n  it was deployed. Only *superseded* builds (ones a later deploy replaced) are\n  eligible for cleanup — they are tagged `aws-blocks:build-state=superseded` at\n  the cutover, and the lifecycle rule matches only that tag.\n- Raise `storage.buildRetentionDays` for a longer rollback window. It must be at\n  least `skewProtection.maxAge` (converted to days), or synth throws\n  `InvalidSkewProtectionMaxAgeError` — a skew cookie must not outlive the build\n  it pins to.\n- Optional `storage.deployIntervalDays` is an advisory hint: if you set it and\n  it is ≥ `buildRetentionDays`, synth prints a warning that superseded builds\n  may expire before your next deploy (shrinking the rollback window). It never\n  blocks a deploy and never affects the live build.\n\n> **Cleanup caveat:** a build is tagged superseded only during a normal deploy\n> cutover (an `Update` that flips `meta.b`). Builds that become stale outside\n> that path — every build already present before upgrading to this version, or\n> builds left by an aborted/rolled-back deploy — are never tagged, so the\n> lifecycle rule never expires them and they accumulate until you remove them\n> manually. This is safe (nothing deletes the live build), just not\n> self-cleaning for pre-existing artifacts.\n\n```ts\nnew HostingConstruct(stack, 'Hosting', {\n  manifest,\n  storage: {\n    buildRetentionDays: 90,   // keep 90 days of rollback targets\n    deployIntervalDays: 30,   // advisory only\n  },\n});\n```\n\n## Custom domains\n\nConfigure a custom domain through the `domain` prop on `HostingConstruct`\n(`HostingDomainConfig`). CloudFront only accepts ACM certificates in\n**us-east-1**, so every certificate, whether auto-provisioned or\nbring-your-own, must live in us-east-1. There are two paths, depending on where\nyou manage DNS.\n\n### Route 53 (automatic)\n\nProvide `hostedZone` (the zone domain name) or `hostedZoneId`. The construct\nprovisions a DNS-validated ACM certificate and creates the A and AAAA alias\nrecords for you. Validation is automatic when the hosted zone is in the same\naccount as the deployment, because the construct writes the ACM validation\nrecords into the zone itself.\n\n```ts\nnew HostingConstruct(stack, 'Hosting', {\n  manifest,\n  domain: {\n    domainName: 'app.example.com',\n    hostedZone: 'example.com', // a Route 53 zone you control\n  },\n});\n```\n\nUse `hostedZoneId` to skip `HostedZone.fromLookup()`, which otherwise requires\n`env: { account, region }` on the stack. This is useful in pipeline stages:\n\n```ts\ndomain: {\n  domainName: 'app.example.com',\n  hostedZone: 'example.com',\n  hostedZoneId: 'Z0123456789ABCDEFGHIJ',\n}\n```\n\n### Bring your own DNS (manual)\n\nIf you manage DNS elsewhere (your registrar, Cloudflare, or another provider),\nomit `hostedZone` and `hostedZoneId` and pass a pre-validated `certificate`, an\nACM certificate in us-east-1. The construct creates no DNS records. Instead it\nemits the CloudFront distribution domain as a `DistributionDomainName`\nCloudFormation output, so you can point a CNAME at it from your own DNS\nprovider.\n\n```ts\nnew HostingConstruct(stack, 'Hosting', {\n  manifest,\n  domain: {\n    domainName: 'app.example.com',\n    // no hostedZone: you manage DNS externally\n    certificate: myPreValidatedCert, // ACM cert in us-east-1, pre-validated\n  },\n});\n```\n\n### Error behavior\n\nOmitting both `hostedZone` / `hostedZoneId` and `certificate` throws\n`MissingCertificateError` at synth time. Synthesis fails immediately, so the\ndeploy never starts and there is no 72-hour CloudFormation wait on an\nunvalidated certificate. A bring-your-own certificate outside us-east-1 fails\nsynthesis with `InvalidCertificateRegionError`.\n\n### Two-phase workflow for external DNS\n\nA certificate must be validated before CloudFront will serve the domain, and\nthe CloudFront domain is only known after deploy. Set up external DNS in two\nphases around the deploy:\n\n1. **Before deploy:** request an ACM certificate in **us-east-1** for your\n   domain and validate it (add the ACM validation CNAME to your DNS, or use\n   email validation). Wait until the certificate status is **Issued**.\n2. **Deploy:** deploy the stack with `domain: { domainName, certificate }`. The\n   stack emits the `DistributionDomainName` output (for example\n   `d1234abcd.cloudfront.net`).\n3. **After deploy:** in your DNS provider, create a CNAME from your domain\n   (`app.example.com`) to the `DistributionDomainName` value. For an apex\n   domain, use an ALIAS or ANAME record if your provider supports it.\n\n## Development\n\n```bash\nnpm run build        # compile TypeScript\nnpm test             # run tests (node --test)\n```\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","keywords":["aws-blocks","hosting","cloudfront","s3","static-site","ssr"]}