{"_id":"@aws/cloudformation-validate","_rev":"24-ee6c92182c9d7b6f6408fb6cc0054b75","name":"@aws/cloudformation-validate","dist-tags":{"beta":"1.9.0-beta","latest":"1.12.1"},"versions":{"1.0.0-beta":{"name":"@aws/cloudformation-validate","version":"1.0.0-beta","author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.0.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"21c9a6e3592a220f65a843374fcbbe6a43f04eb7","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.0.0-beta.tgz","fileCount":10,"integrity":"sha512-ybxXEKXUVQzGtyqbjyn/du8qJMb598TVU9JD/MpPQCQXj7wcOa3w52gJhqTggnPkwQmJB2Q/k+CwltZzS06Odw==","signatures":[{"sig":"MEQCIE6gBBXIioN5OIQo7t7GaxXv2eT0kchGA86jNhNqLeYpAiBTGyMCkjssoe0P0bH0iIzTHy9dK+UWbD6uqgsPt4m5zQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8775145},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"845f4fa0043b67c9a49d1f046f335b0e818bbd88","_npmUser":{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"10.9.7","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.0.0-beta_1781274569474_0.14965495323783107","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta":{"name":"@aws/cloudformation-validate","version":"1.1.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.1.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"2f42fd1ea84a3fbfeb45db2662136a95a822b353","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.1.0-beta.tgz","fileCount":10,"integrity":"sha512-EZtN8wKiiuRodQ6tApew7sfV/CX7LzX2We8lOAU+4G2yS3ddpIAcAfWbLIZnTct396BdaBDFRlWcIKxoOaGrdg==","signatures":[{"sig":"MEQCIE44yKrMVz46poGto3/1cITXz70MfbMUi+zdi98nShhEAiB//m62Va7TJ240FHewc9VLQAsHsVDdjsROjzfEnpLVjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.1.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8461864},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"26d5ef511f8c3c2a2071abb0961bb32e1012ce54","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.17.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.1.0-beta_1782151385568_0.9734849017872387","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta":{"name":"@aws/cloudformation-validate","version":"1.2.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.2.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"9b6229c7bbe33758257793d82f1688416826e108","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.2.0-beta.tgz","fileCount":10,"integrity":"sha512-JsNmyJ+EO9/Ph/z6UcSry4XlfSuj2b1+PZ6YcgDHWXo00SySjD8KT6hgEB3kbLhhAcZLh2y1jK0FaahJHthRbA==","signatures":[{"sig":"MEYCIQCWhForPvTfg7QUSKC1+1sTkrcQmgxblMCt2F9FayLmmQIhAKyU/B47K6Bdfr1HLbO3qrMMgkWWdH7VcnSCc6EZUvDh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.2.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8462607},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"b7b5785bf9ef94f56f1d28b7d2c893a294696f34","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.17.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.2.0-beta_1782336806895_0.1693992722913309","host":"s3://npm-registry-packages-npm-production"}},"1.3.0-beta":{"name":"@aws/cloudformation-validate","version":"1.3.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.3.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"aead010f0e915993490769ca7a161d3c8063a6ef","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.3.0-beta.tgz","fileCount":10,"integrity":"sha512-y1Qy0If/k7XnVjNVfa9b9FQaPzRi6Zmmaz7AcjRtPzjdgW+HdLXMW/A6YIs3BudSWMo4+oeujcF8G9yeIG3BkA==","signatures":[{"sig":"MEQCIHbLgNfwqgF8JPsnyidERwRKl3Vw3WtUFiDi3AIa6g7TAiAt1UHqvpu9NLc/bi4rqP/ce6GVhNdoAIbuIu8un/aHKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.3.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8735267},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"e5d0da17de55f7819bbbaf5520aa730dd4e4fce2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.18.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.3.0-beta_1783347546966_0.7007328241079924","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-beta":{"name":"@aws/cloudformation-validate","version":"1.4.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.4.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"3596c0f487c9d66bfecea719bbb410aa832cdb56","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.4.0-beta.tgz","fileCount":10,"integrity":"sha512-qsJn7mzdQ+uuPHOYaqzL3gZD9s3JLc0gZqp6wkbPKJ0EGto7CTlkhq9GrblKtBr6n7TGmv3BnKOzDr9+ZDqnbw==","signatures":[{"sig":"MEQCIEvr8jnnfnylmDVgSHnf8k5yUYxcAMoiBAmiQGB7E6l9AiBqc3TEXgMLx/BREZUfy/Yaj1NJ2neK0xsM6ukdMpCSGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.4.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8835597},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"884492d7d60b0fe4b560fba9220343b4a9bd5961","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.18.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.4.0-beta_1783571398037_0.5667652397187461","host":"s3://npm-registry-packages-npm-production"}},"1.5.0-beta":{"name":"@aws/cloudformation-validate","version":"1.5.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.5.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"cb56e14108af1f2ab509f152b5f083cf23fb15f5","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.5.0-beta.tgz","fileCount":10,"integrity":"sha512-XV8rMURH8xJGZD2NfAxtUI1/wbarLylAr0yFwu4P7NYt7XZoWhAPTgORlvuStBQVLdc31oVfpswez0j04O/NHg==","signatures":[{"sig":"MEUCIQCgB5eVguBUHQf3nvm6rrupuKQsyrpb7B+UmsiFu53WzQIgE4zQ8Vsp6yUlJVa+fDWz1Z0EqAb/RDAC2uii+KoTUOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.5.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8874219},"main":"index.js","types":"index.d.ts","engines":{"npm":">=10.5.0","node":"^22.15.0"},"gitHead":"22bcee50d1b7d4b9e5b17b29cf1da81cd5a04952","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.18.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.5.0-beta_1783996335583_0.5748284892854645","host":"s3://npm-registry-packages-npm-production"}},"1.5.1-beta":{"name":"@aws/cloudformation-validate","version":"1.5.1-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.5.1-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"c25166a2e6f22b3a7fd3b6454c2794df44f4cf13","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.5.1-beta.tgz","fileCount":10,"integrity":"sha512-AHua/1/kmVLxkk0qs5bt4vWy64ZV5JUb1MsGKbxttYCF/NykR7WrtQrAGExLi7fdkGa+Ys8U612nG7QIp/z3nQ==","signatures":[{"sig":"MEYCIQCYNRQLVo5WLPd3/JvRjWv8OrB6/Ygv+sDn2tc9XQ/5iwIhANYQylVl1dHpeZGVobLVdQ8z/ZYt7vTBnWXSz2X9eO08","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.5.1-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8874196},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"17ab6653b3737d354bd74577401483a3bf8bef73","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.18.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.5.1-beta_1784779677099_0.8977768915768054","host":"s3://npm-registry-packages-npm-production"}},"1.6.0-beta":{"name":"@aws/cloudformation-validate","version":"1.6.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.6.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"f1760f823462bd04f9810479e287d8bb62b2570a","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.6.0-beta.tgz","fileCount":10,"integrity":"sha512-criDxL/FP0Te5HIH6p+TvENftgUztOMKw7LMLhAIDuq/N/kkMsYfxlG7XeyHlq0lEpQwUUek3tgPdSjhLTK3jQ==","signatures":[{"sig":"MEUCIDbDqEhgmeLSEmX+p8FU2VDleE99J4AI8nGWNpaJXSHYAiEA/HU5KWLUr/d05FKsM7kbAxMz6LEw0XTvvXS0owXBOLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.6.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9105710},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cd4ed17d907d17c67bb1e104c9d44d03e040d430","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.18.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.6.0-beta_1785289542692_0.34609425126885096","host":"s3://npm-registry-packages-npm-production"}},"1.7.0-beta":{"name":"@aws/cloudformation-validate","version":"1.7.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.7.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"37704db3ca54b2e1edf012d78d042b39946e157f","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.7.0-beta.tgz","fileCount":10,"integrity":"sha512-3ucys2VE2plAVijHHJmDpDDdi6gxXc/x0bvU3W8Fdm2dZF7Ewb0oQbBTLfrcPCkeHKFpfJtTtfOUl4w6J6uB6w==","signatures":[{"sig":"MEUCIQDDxiKC6eiR5gwIfdUrFKpHswDyuj0XcryDYnMUti7lEgIgY7h9e29T7Ki9ItGOgAOliKPxkzl3CRcqf2wgAdw3uUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.7.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9491571},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"eec0c5f6f5bc475936b0c6f58af9f7a00251c724","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.0","description":"AWS CloudFormation Validate","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.7.0-beta_1786085714795_0.8381641316319353","host":"s3://npm-registry-packages-npm-production"}},"1.8.0-beta":{"name":"@aws/cloudformation-validate","version":"1.8.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.8.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"edc0708bf5c9672d2bb63c6d24cae6a6410e6af0","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.8.0-beta.tgz","fileCount":11,"integrity":"sha512-E7KrKKz2wzpaaHuSxP2vBkk4AUpTS57/GLAV1soTqViJLGj8qBSNjy5SMhkaBeiFjVOd0oQTwO9cytDugutuVQ==","signatures":[{"sig":"MEUCIEc1WfCPe0gFwfXiAFV3s8EKaOpM9yYFXll9urXUOgUHAiEA9LRoM6+mwiDlGdjbYKHEi6n29hbL/h3DXM0sz+75jGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.8.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10002935},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5344f48323e6f1a2ba305032312e2082819ffc04","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.8.0-beta_1787616056622_0.4137405005936279","host":"s3://npm-registry-packages-npm-production"}},"1.9.0-beta":{"name":"@aws/cloudformation-validate","version":"1.9.0-beta","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.9.0-beta","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"5442b4821cbdf421d372111732a9832116c6da98","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.9.0-beta.tgz","fileCount":11,"integrity":"sha512-y7mFIu3ne6KuygYT8D95+M6dW7P0PeNqqcUZofYB2aAMaz9mIcqHoeQRY8HeM9GOjGCVSwp+MVPPLnuC5bcnyA==","signatures":[{"sig":"MEUCIANGfhGmdwcCp0gN3+qU7PokKtDNNTelNB51F1UIk0jAAiEA0ukDTl3nvvRwKQBzFDKR58g30mgzB7s2spqa6DZOOG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.9.0-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10088265},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ead07959110244df494aadd46ced4bd544ccf4e6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.1","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.9.0-beta_1788901621273_0.6586575069676142","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@aws/cloudformation-validate","version":"1.10.0","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.10.0","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"7d46908ad8c7c766894a40c1ffe20769e2120ce5","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.10.0.tgz","fileCount":11,"integrity":"sha512-R8fCpwBsTBHCUSd6LNKO4h4OKZ7RDTH+9T+gFvDEkYOgEePvseT/RWBE+TsX+XHnFu0kMDYLn8AL1Xrrbcypug==","signatures":[{"sig":"MEYCIQCB2Fd4u08fXTXDESojhXGblM4Sxp74a19EBvZNUOc+7QIhAMKToBAzj3G9JblEDVqqVCPtyu8e27Bz1kxomLD6InyL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9863244},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"47c3764221060c06adb3b6cbb99204fd80cb41d8","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.1","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.10.0_1789602677379_0.1999144816401126","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@aws/cloudformation-validate","version":"1.11.0","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.11.0","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"965c22ec4e444b978853123364656be8fd300b98","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.11.0.tgz","fileCount":11,"integrity":"sha512-kWNZKesoRwFpSTRVHx492svn3MHXVPXX6hBMZ6CN4daWgSOdp9s60q5K/xUc6ZoYWFSQyMS1N5ooV+f1dIWphg==","signatures":[{"sig":"MEQCIFEMYPrjGB9W5CRRJMvQW/z9H3E0wbH6MgjGofPU/JlFAiAZlsDQiHSBgs8YXk5EbRS9rG7OMLa6JyTtHWU1tJEChw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC/hzG6hSsVnnxULAj3S1g90Q1UvxniKJewGTLzO9YUjAIgIV67RZ8tcCwrnmFRUpb9sgz8hRE5rpso6PaVojdl7Q8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9911186},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"33b4c9babd218d05428afa0fb616fd9b502743af","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.1","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.11.0_1790011783740_0.043099584777622324","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@aws/cloudformation-validate","version":"1.12.0","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","_id":"@aws/cloudformation-validate@1.12.0","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"6176490bf5366b8046330da0ba36f1ac8512e32f","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.12.0.tgz","fileCount":11,"integrity":"sha512-ZZ97yD94K8Kno6IDQJK86tBY9/bct0OHjiSx8K/Y6CRaCEKEva1iyteIP6AqXbT0POWYiRxTiXpafbVI6V2GZQ==","signatures":[{"sig":"MEYCIQC4yXBB7gG70lUVLXqaKc2IKymVdRPRtRzBneFWCqkVLgIhAOAloyvYoUtdbnXjSXPEZv+sXSqIkqUSSUewW/qUqkSo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD55rmb73j5s2rweFOJ8SjHZQJxI7NhpdQL9nLfdLxXDAIhAMW8qtltbLW7Vu6rfXdExDmBFtv4YvAq1Yp3nNR/T52g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9938004},"main":"index.js","types":"index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9ca7277c68eb980c0d51b0579f2eb33f364172fd","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.19.1","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudformation-validate_1.12.0_1790058740405_0.018329977385447727","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"_id":"@aws/cloudformation-validate@1.12.1","bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"dist":{"shasum":"3d19861ef68aaa1c8b9d8cf3cc24efd27c20ce13","tarball":"https://registry.npmjs.org/@aws/cloudformation-validate/-/cloudformation-validate-1.12.1.tgz","fileCount":11,"integrity":"sha512-syZyTZQ1JPubKfzkfxQ8AoLEhma+2Upsz/ESLiosVnncdo4cdWDhsLp5Bxol3Wi94j8gJkch8H4rsYZWk4K0OQ==","signatures":[{"sig":"MEQCIGIrKHAg2vRQaNsa7a7QdD9gaq2GmqVotr5g+REDVFCUAiAYh+97tFC+aqGhAHXixN/KwNaHdw7yYigg4tJAY03xsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHIKM6HTgOF1yOUaggG23WLdvMj8W3l4dLNhkCkgSRgbAiAuYKYFDelFekmAM+DvlOS+lngfu6KpWZErlFBeewlbMg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fcloudformation-validate@1.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9949825},"main":"index.js","name":"@aws/cloudformation-validate","types":"index.d.ts","author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"engines":{"node":">=20.0.0"},"gitHead":"2d895cb53f914becaa660e1b71b0f390983997aa","license":"Apache-2.0","version":"1.12.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fba36bc5-afa7-43a4-bf11-edc3c62e8975"}},"homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"_npmVersion":"11.20.0","description":"Fast, offline, embeddable validation for AWS CloudFormation templates","directories":{},"maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cloudformation-validate_1.12.1_1790304357428_0.21476674396259554"}}},"time":{"created":"2026-06-12T14:29:29.292Z","modified":"2026-09-25T02:45:57.927Z","1.0.0-beta":"2026-06-12T14:29:29.754Z","1.1.0-beta":"2026-06-22T18:03:05.859Z","1.2.0-beta":"2026-06-24T21:33:27.176Z","1.3.0-beta":"2026-07-06T14:19:07.264Z","1.4.0-beta":"2026-07-09T04:29:58.259Z","1.5.0-beta":"2026-07-14T02:32:15.801Z","1.5.1-beta":"2026-07-23T04:07:57.355Z","1.6.0-beta":"2026-07-29T01:45:42.915Z","1.7.0-beta":"2026-08-07T06:55:15.003Z","1.8.0-beta":"2026-08-25T00:00:56.953Z","1.9.0-beta":"2026-09-08T21:07:01.509Z","1.10.0":"2026-09-16T23:51:17.606Z","1.11.0":"2026-09-21T17:29:43.943Z","1.12.0":"2026-09-22T06:32:20.583Z","1.12.1":"2026-09-25T02:45:57.582Z"},"bugs":{"url":"https://github.com/aws-cloudformation/cloudformation-validate/issues"},"author":{"url":"https://aws.amazon.com","name":"Amazon Web Services"},"license":"Apache-2.0","homepage":"https://github.com/aws-cloudformation/cloudformation-validate#readme","keywords":["aws","amazon","aws-cloudformation","cloudformation","iac","infrastructure-as-code","lint","template","validate"],"repository":{"url":"git+https://github.com/aws-cloudformation/cloudformation-validate.git","type":"git"},"description":"Fast, offline, embeddable validation for AWS CloudFormation templates","maintainers":[{"name":"aws-cfn-dev-ex-npm","email":"aws-cfn-dev-ex+npm@amazon.com"}],"readme":"# AWS CloudFormation Validate\n\nValidate AWS CloudFormation templates from JavaScript or TypeScript and catch schema violations, semantic errors,\nsecurity risks, and best-practice findings before deployment - in your editor, build, service, or CI.\n\n- **Offline** - all rules and CloudFormation resource schemas are bundled; nothing is fetched at runtime and no AWS\n  credentials are needed.\n- **Fast** - engines and schemas compile once and are reused across validations; typical templates validate in under a\n  second.\n- **Self-contained** - the WebAssembly module is bundled in the package; there are no native dependencies.\n\nAll types are exported from the `@aws/cloudformation-validate` package.\n\n## Installation\n\nAvailable on [npm](https://www.npmjs.com/package/@aws/cloudformation-validate) as `@aws/cloudformation-validate`.\n\n```bash\nnpm install @aws/cloudformation-validate\n```\n\nRequires Node.js 20 or later. The package has no runtime dependencies.\n\n## Quick start\n\nEngines, models, and validators hold off-heap memory - call `.free()` when done with each object:\n\n```typescript\nimport { CompositeEngine, TemplateFile } from \"@aws/cloudformation-validate\";\n\nconst engine = new CompositeEngine();\ntry {\n    const report = engine.validateTemplate(new TemplateFile(\"template.yaml\"));\n    for (const d of report.diagnostics) {\n        console.log(`[${d.severity}] ${d.ruleId}: ${d.message}`);\n    }\n} finally {\n    engine.free();\n}\n```\n\nEach diagnostic identifies the rule, severity, affected entity and property, and source location - see\n[Diagnostic](#diagnostic). A complete, runnable project is in\n[examples](https://github.com/aws-cloudformation/cloudformation-validate/tree/main/src/bindings-wasm/examples).\n\nEngines are expensive to construct (rules compile once) and cheap to reuse - create one engine and validate many\ntemplates. Every fallible call throws on failure - the thrown value is the error message string from the validation\ncore, so handle it with `catch (error) { String(error) }`; internal panics are caught at the WASM boundary and surface\nthe same way, never a process abort. `version()` returns the version of the bundled validation core.\n\nA template is passed as a `Template` - either a `TemplateFile`, which wraps a filesystem path the engine reads, or a\n`TemplateContent`, which carries template text or bytes already in memory so nothing is read from disk. The file path\nor the content `name` labels the report and its diagnostics; an omitted `TemplateContent` name defaults to\n`\"template\"` (`DEFAULT_TEMPLATE_NAME`).\n\n```typescript\ntype Template = TemplateFile | TemplateContent;\n\nclass TemplateFile {\n    constructor(path: string);                                   // template read from disk\n}\n\nclass TemplateContent {\n    constructor(content: string | Uint8Array, name?: string);    // in-memory UTF-8 text or raw bytes\n}\n\nconst fromDisk = engine.validateTemplate(new TemplateFile(\"template.yaml\"));\nconst fromMemory = engine.validateTemplate(new TemplateContent(\"Resources: {}\", \"inline.yaml\"));\n```\n\n`TemplateModel` and `SchemaValidator.validate` accept the same `Template` union.\n\n## Engine\n\n`RegoEngine` and `CelEngine` both implement the `Engine` interface and are interchangeable - they produce identical\ndiagnostics for the same template and config. `CompositeEngine` implements the same interface and layers custom Rego,\nCEL, and Guard rules on top of the built-in rules - see [CompositeEngine](#compositeengine).\n\n### `Engine` interface\n\n```typescript\ninterface Engine {\n    validateTemplate(template: Template, config?: ValidateConfig): ValidationReport;\n    validateAwsCliCommand(request: AwsCliCommand): AwsCliCommandValidation;\n    listRules(): RuleInfo[];\n    engineName(): string;\n    free(): void;\n}\n```\n\n| Method                                | Returns                   | Description                                                                                                                                                                                                                       |\n|---------------------------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `validateTemplate(template, config?)` | `ValidationReport`        | Validates the template and returns a report. `config.detailLevel` (default `DETAILED`) selects how much per-diagnostic context is populated: `DETAILED` adds documentation URLs, rule descriptions, phase tags, and `ViolationContext`; `STANDARD` leaves those enrichment fields absent |\n| `validateAwsCliCommand(request)`      | `AwsCliCommandValidation` | Models an AWS CLI command as CloudFormation resource state and validates it - see [AWS CLI command validation](#aws-cli-command-validation)                                                                                       |\n| `listRules()`                         | `RuleInfo[]`              | Returns metadata for every built-in and loaded custom rule                                                                                                                                                                        |\n| `engineName()`                        | `string`                  | `\"rego\"`, `\"cel\"`, or `\"composite\"`                                                                                                                                                                                               |\n| `free()`                              | `void`                    | Releases the engine's off-heap memory; the engine must not be used afterwards                                                                                                                                                     |\n\n### `EngineConfig`\n\nPassed to the constructor. All fields are optional: the rule lists default to empty and an omitted\n`schemaValidatorConfig` uses only the bundled schemas.\n\n```typescript\ninterface EngineConfig {\n    customRules?: RuleSource[];                      // engine-native rules (Rego for RegoEngine, CEL for CelEngine)\n    guardRules?: RuleSource[];                       // CloudFormation Guard DSL rules - evaluated by the Guard evaluator\n    schemaValidatorConfig?: SchemaValidatorConfig;   // additional resource provider schemas\n}\n\ninterface SchemaValidatorConfig {\n    additionalSchemas?: SchemaSource[];   // resource provider schemas merged over the bundled schemas\n}\n\ntype RuleSource = ExternalRuleSource | RuleFile;\ntype SchemaSource = AdditionalSchemaSource | SchemaFile;\n\ninterface ExternalRuleSource {\n    name: string;     // identifier shown in diagnostics (e.g. file path)\n    content: string;  // full rule source text\n}\n\ninterface AdditionalSchemaSource {\n    typeName?: string; // omit to use the typeName inside the schema JSON\n    schema: string;    // complete resource provider schema JSON\n}\n\nclass RuleFile {\n    constructor(path: string);                    // rule file read from disk; the path becomes the rule source name\n}\n\nclass SchemaFile {\n    constructor(path: string, typeName?: string); // schema file; typeName defaults to the value inside the JSON\n}\n```\n\n| Field                   | Default     | Description                                                                                   |\n|-------------------------|-------------|-----------------------------------------------------------------------------------------------|\n| `customRules`           | `[]`        | Engine-native rules: Rego source for `RegoEngine`, CEL JSON for `CelEngine`                   |\n| `guardRules`            | `[]`        | CloudFormation Guard DSL rules, evaluated by the Guard evaluator identically in every engine                        |\n| `schemaValidatorConfig` | `undefined` | Optional `SchemaValidatorConfig` whose `additionalSchemas` are merged over the bundled schemas |\n\nEach rule is an `ExternalRuleSource` - `name` identifies the rule in diagnostics and `content` is the full rule source\ntext. Pass a `RuleFile` to load one from disk (the same pattern as `TemplateFile` for templates), or an\n`ExternalRuleSource` when you already have the rule text in memory. Each additional schema is an\n`AdditionalSchemaSource` - a complete resource provider schema JSON plus an optional `typeName` that may be omitted when\nthe schema JSON contains its own `typeName`; `SchemaFile` loads one from disk. Additional schemas extend the bundled\nschemas or register resource types CloudFormation has not published yet; a malformed, contradictory, or unsupported\nschema fails engine construction rather than silently weakening validation. Guard rules are evaluated by the\nCloudFormation Guard evaluator itself against the template as written, so every engine reports exactly what `cfn-guard\nvalidate` reports; a Guard file that does not parse also fails engine construction. The two forms can be mixed freely:\n\n```typescript\nimport { CelEngine, RuleFile, SchemaFile } from \"@aws/cloudformation-validate\";\n\nconst engine = new CelEngine({\n    customRules: [new RuleFile(\"rules/s3_encryption.json\")],\n    guardRules: [new RuleFile(\"rules/compliance.guard\")],\n    schemaValidatorConfig: {\n        additionalSchemas: [new SchemaFile(\"schemas/aws-lambda-function.json\")],\n    },\n});\n```\n\nSee [Custom Rules](../CUSTOM_RULES.md) for the Rego, CEL, and Guard rule formats and\n[Additional Resource Provider Schemas](../validation-engine/API.md#additional-resource-provider-schemas) for the schema\nmerge model.\n\n### `CompositeEngine`\n\n`CompositeEngine` implements the same `Engine` interface but takes a `CompositeEngineConfig`. It evaluates every\nbuilt-in rule with a fixed built-in CEL evaluator and layers the caller-supplied custom rules on top: custom CEL and\nGuard rules run alongside that built-in engine, while custom Rego rules run in a separate external engine that is\nconstructed only when Rego rules are supplied. With no custom rules it produces the same built-in diagnostics as\n`RegoEngine` and `CelEngine`, and `engineName()` returns `\"composite\"`. Because the composite fixes which engine owns\nthe built-ins, the config has no `customRules` field - it carries only the custom rules layered on top:\n\n```typescript\ninterface CompositeEngineConfig {\n    regoRules?: RuleSource[];                        // custom Rego rules, run by the external engine\n    celRules?: RuleSource[];                         // custom CEL rules, run by the built-in engine\n    guardRules?: RuleSource[];                       // CloudFormation Guard DSL rules, evaluated alongside the built-in engine\n    schemaValidatorConfig?: SchemaValidatorConfig;   // additional resource provider schemas, observed by both inner engines\n}\n```\n\n| Field                   | Default     | Description                                                                                      |\n|-------------------------|-------------|--------------------------------------------------------------------------------------------------|\n| `regoRules`             | `[]`        | Custom Rego rules layered on top of the built-in rules, run by the external engine               |\n| `celRules`              | `[]`        | Custom CEL rules layered on top of the built-in rules, run by the built-in engine                |\n| `guardRules`            | `[]`        | CloudFormation Guard DSL rules layered on top of the built-in rules, evaluated alongside the built-in engine |\n| `schemaValidatorConfig` | `undefined` | Optional `SchemaValidatorConfig`, observed by both inner engines                                 |\n\n```typescript\nimport { CompositeEngine, RuleFile, TemplateFile } from \"@aws/cloudformation-validate\";\n\nconst engine = new CompositeEngine({\n    regoRules: [new RuleFile(\"rules/s3_naming.rego\")],\n    guardRules: [new RuleFile(\"rules/compliance.guard\")],\n});\ntry {\n    const report = engine.validateTemplate(new TemplateFile(\"template.yaml\"));\n} finally {\n    engine.free();\n}\n```\n\n## ValidateConfig\n\nControls filtering, detail, severity, parameter overrides, and behavior for one validation call. All fields have\ndefaults - omitting the config or passing `{}` uses them.\n\n```typescript\nconst report = engine.validateTemplate(new TemplateFile(\"template.yaml\"), {\n    exclude: { ids: [\"I1002\"] },\n    severityLevel: \"WARN\",\n});\n```\n\n```typescript\ninterface ValidateConfig {\n    include?: RuleFilterConfig;\n    exclude?: RuleFilterConfig;\n    detailLevel?: DetailLevel;\n    severityLevel?: Severity;\n    parameterOverrides?: Record<string, string>;\n    pseudoParameterOverrides?: PseudoParameterOverrides;\n    strict?: boolean;\n    disableBuiltinRules?: boolean;\n}\n```\n\n| Field                      | Default                 | Description                                                                                                                                                                  |\n|----------------------------|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `include`                  | `{}` (all rules)        | When set, only matching rules produce diagnostics. Empty means include everything.                                                                                           |\n| `exclude`                  | `{}` (nothing excluded) | Matching rules are suppressed. Applied after `include`.                                                                                                                      |\n| `detailLevel`              | `\"DETAILED\"`            | Per-diagnostic context. `\"DETAILED\"` populates documentation URLs, rule descriptions, phase tags, and `ViolationContext`; `\"STANDARD\"` leaves those enrichment fields absent. |\n| `severityLevel`            | `\"INFO\"`                | Minimum severity threshold. Diagnostics below this level are dropped. Values: `DEBUG`, `INFO`, `WARN`, `ERROR`, `FATAL`.                                                     |\n| `parameterOverrides`       | `{}`                    | Override template parameter values during resolution. Keys are parameter logical IDs.                                                                                        |\n| `pseudoParameterOverrides` | all `undefined`         | Override CloudFormation pseudo-parameters (`AWS::AccountId`, `AWS::Region`, etc.).                                                                                           |\n| `strict`                   | `false`                 | When `true`, `WARN`-severity diagnostics are upgraded to `ERROR`.                                                                                                            |\n| `disableBuiltinRules`      | `false`                 | When `true`, all built-in rules (schema validation, Step Functions, engine rules) are skipped; only custom and Guard rules are evaluated.                                    |\n\n### RuleFilterConfig\n\nBoth `include` and `exclude` use this structure. All fields are additive - a rule matches if it hits any criterion.\n\n```typescript\ninterface RuleFilterConfig {\n    ids?: string[];                       // exact rule IDs, e.g. [\"E3012\", \"W3010\"]\n    categories?: string[];                // category names, e.g. [\"security\", \"best_practices\"]\n    idRanges?: IdRange[];                 // numeric ranges, e.g. { prefix: \"E\", start: 3000, end: 3099 }\n    idPatterns?: string[];                // regex patterns matched against rule IDs\n    resourceIds?: ResourceIdFilter[];     // a rule (or every rule) on a logical resource ID\n    logicalIds?: LogicalIdFilter[];       // a rule (or every rule) on a named template entity\n    resourceTypes?: ResourceTypeFilter[]; // a rule (or every rule) on a resource type\n    services?: ServiceFilter[];           // a rule (or every rule) on a service, e.g. \"AWS::AutoScaling\"\n}\n\n// resourceIds / logicalIds / resourceTypes / services each carry an optional ruleId:\n// set it to scope the filter to one rule, or omit it for every rule on the target.\ninterface ResourceIdFilter   { ruleId?: string; resourceId: string; }\ninterface LogicalIdFilter    { ruleId?: string; logicalId: string; entityType?: EntityType; }\ninterface ResourceTypeFilter { ruleId?: string; resourceType: string; }\ninterface ServiceFilter      { ruleId?: string; service: string; }\n```\n\nThe `service` is matched verbatim against the `service-provider::service-name` prefix of the resource type - its first\ntwo `::`-delimited segments (e.g. `AWS::AutoScaling` in `AWS::AutoScaling::LaunchConfiguration`).\n\nThe `resourceIds` dimension matches only diagnostics attributed to a resource; `logicalIds` additionally matches\ndiagnostics on parameters, outputs, mappings, conditions, and template rules (for resource diagnostics the two carry\nthe same value). An optional `entityType` scopes a `LogicalIdFilter` to entities of one type, so `MyThing` as a\n`\"Parameter\"` is matched without touching a same-named entity of another type.\n\n### PseudoParameterOverrides\n\nOverride CloudFormation pseudo-parameters used during intrinsic function resolution. All fields are optional - when\n`undefined`, the engine uses built-in defaults (e.g. region defaults to `us-east-1`).\n\n```typescript\ninterface PseudoParameterOverrides {\n    accountId?: string;         // AWS::AccountId\n    notificationArns?: string;  // AWS::NotificationARNs\n    partition?: string;         // AWS::Partition\n    region?: string;            // AWS::Region (default: \"us-east-1\")\n    stackId?: string;           // AWS::StackId\n    stackName?: string;         // AWS::StackName\n    urlSuffix?: string;         // AWS::URLSuffix\n}\n```\n\n## TemplateModel\n\nParses a template into the resolved `SemanticModel` for direct inspection - the same model the engines evaluate rules\nagainst.\n\n```typescript\nconst model = new TemplateModel(new TemplateFile(\"template.yaml\"));\nconst inMemory = new TemplateModel(new TemplateContent(\"Resources: {}\"));\n```\n\n| Method                 | Returns                            | Description                                                                                     |\n|------------------------|------------------------------------|-------------------------------------------------------------------------------------------------|\n| `resources()`          | `Record<string, ResolvedResource>` | All resources with resolved property values                                                     |\n| `parameters()`         | `Record<string, ParameterInfo>`    | Parameter definitions with types, defaults, constraints                                         |\n| `outputs()`            | `Record<string, ResolvedOutput>`   | Outputs with resolved values and export names                                                   |\n| `conditions()`         | `string[]`                         | Condition names defined in the template                                                         |\n| `transforms()`         | `string[]`                         | Transform declarations (e.g. `AWS::Serverless-2016-10-31`)                                      |\n| `formatVersion()`      | `string \\| undefined`              | `AWSTemplateFormatVersion` value                                                                |\n| `description()`        | `string \\| undefined`              | Template description                                                                            |\n| `toDiagnosticModel()`  | `DiagnosticModel`                  | Full diagnostic model including reference graph, condition implications, and resolution sources |\n| `sourceLocation(path)` | `SourceSpan \\| null`               | Source line/column span for a JSON path (e.g. `Resources/MyBucket/Properties/BucketName`)       |\n| `free()`               | `void`                             | Releases the model's off-heap memory; the model must not be used afterwards                     |\n\n## SchemaValidator\n\nRuns schema validation independently from the rule engines. Checks each resource against the compiled CloudFormation\nprovider schemas and produces `FATAL`-severity diagnostics for structural violations. The optional constructor argument\nis the same `SchemaValidatorConfig` accepted by `EngineConfig`; omitting it uses only the bundled schemas.\n\n```typescript\nconst validator = new SchemaValidator();\ntry {\n    const diagnostics = validator.validate(new TemplateFile(\"template.yaml\"), \"us-east-1\");\n} finally {\n    validator.free();\n}\n```\n\n| Method                         | Returns           | Description                                                                                                      |\n|--------------------------------|-------------------|------------------------------------------------------------------------------------------------------------------|\n| `new SchemaValidator(config?)` | `SchemaValidator` | Constructs a validator; an omitted `SchemaValidatorConfig` uses only the bundled schemas                         |\n| `validate(template, region?)`  | `Diagnostic[]`    | Schema diagnostics for a `Template` at `STANDARD` detail - the enrichment fields are absent. `region` defaults to `\"us-east-1\"`. |\n| `listRules()`                  | `RuleInfo[]`      | Schema rule metadata                                                                                             |\n| `schemaCount()`                | `number`          | Number of compiled provider schemas                                                                              |\n| `free()`                       | `void`            | Releases the validator's off-heap memory; the validator must not be used afterwards                              |\n\n## AWS CLI command validation\n\n`validateAwsCliCommand` models an AWS CLI (or SDK) API call as CloudFormation resource state and validates it offline\nbefore it is sent. It classifies the operation, maps it to a CloudFormation resource type through a closed, generated\nadapter catalog, synthesizes a template from the supplied parameters, and runs the normal template pipeline on it. A\n`TemplateBody` parameter of a CloudFormation operation is validated as-is. Any request that cannot be modeled exactly -\nan unregistered operation, a parameter without a lossless property mapping, or a value outside a CloudFormation\nconstraint the API itself does not enforce - is skipped with a reason, never guessed.\n\n```typescript\nimport { AwsCliCommand, CompositeEngine } from \"@aws/cloudformation-validate\";\n\nconst engine = new CompositeEngine();\ntry {\n    const request = new AwsCliCommand(\"s3\", \"CreateBucket\", { Bucket: \"example-bucket\" });\n    const validation = engine.validateAwsCliCommand(request);\n    if (validation.status === \"VALIDATED\") {\n        for (const d of validation.report!.diagnostics) {\n            console.log(`[${d.severity}] ${d.ruleId}: ${d.message}`);\n        }\n    } else {\n        console.log(`skipped (${validation.operationKind}): ${validation.reason}`);\n    }\n} finally {\n    engine.free();\n}\n```\n\n```typescript\nclass AwsCliCommand {\n    constructor(\n        serviceName: string,                 // canonical botocore service name, e.g. \"s3\" or \"cloudformation\"\n        operationName: string,               // API operation name, e.g. \"CreateBucket\"\n        parameters: Record<string, unknown>, // request parameters (a plain object with string keys)\n        options?: AwsCliCommandOptions,\n    );\n}\n\ninterface AwsCliCommandOptions {\n    servicePrefix?: string; // signing prefix; context only\n    httpMethod?: string;    // classification hint (\"GET\"/\"HEAD\"/\"DELETE\") for unrecognized verbs\n    isReadOnly?: boolean;   // true classifies the operation as READ_ONLY\n}\n```\n\n- `serviceName` is matched case-insensitively. Signing names, endpoint aliases, and ARN prefixes are never resolved;\n  translate an SDK's service identity first.\n- `parameters` accepts nested plain objects and arrays, strings, numbers, `bigint`, booleans, `null`, `Uint8Array`,\n  and `Date` (serialized as ISO 8601). Any other value is carried as an explicit unsupported marker, and because\n  synthesis is all-or-nothing the request is then skipped with a reason naming the offending parameter - no parameter\n  is ever silently dropped.\n\nThe result is an `AwsCliCommandValidation`:\n\n| Field            | Description                                                                                                                                                       |\n|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `operationKind`  | `AwsCliOperationKind`: `\"READ_ONLY\"`, `\"CLOUD_FORMATION_CREATE\"`, `\"CLOUD_FORMATION_UPDATE\"`, `\"CLOUD_FORMATION_DELETE\"`, `\"DATA_PLANE_MUTATION\"`, or `\"UNMAPPED_MUTATION\"` |\n| `status`         | `AwsCliCommandValidationStatus`: `\"VALIDATED\"` when the modeled template ran through the pipeline, `\"SKIPPED\"` otherwise                                          |\n| `templateSource` | `AwsCliTemplateSource \\| null`: `\"TEMPLATE_BODY\"`, `\"CLOUD_CONTROL_DESIRED_STATE\"`, `\"SYNTHESIZED_CREATE\"`, or `\"SYNTHESIZED_UPDATE\"`; `null` when skipped        |\n| `resourceTypes`  | `string[]` - CloudFormation resource types the operation maps to                                                                                                  |\n| `reason`         | `string` - why the request was validated or skipped                                                                                                               |\n| `report`         | `ValidationReport \\| null` - present when `\"VALIDATED\"`. The configuration is fixed: `STANDARD` detail level and a `WARN` severity floor                           |\n| `template`       | `Uint8Array \\| null` - the exact template bytes that were validated (the caller's `TemplateBody` unchanged, or the synthesized JSON); `null` when skipped          |\n\nThe full contract - the adapter catalog, all-or-nothing mapping, and which rules are dropped for synthesized state -\nis documented in [validation-engine/API.md](../validation-engine/API.md#validating-an-aws-cli-command).\n\n## Report Types\n\n### ValidationReport\n\n`validateTemplate` always returns a `ValidationReport` - a template syntax failure is returned as a report with\nstatus `\"ERROR\"` and an `F1101` diagnostic; only infrastructure or engine failures throw:\n\n```typescript\ninterface ValidationReport {\n    filePath: string;\n    status: \"OK\" | \"ANALYSIS_INCOMPLETE\" | \"ERROR\"; // ERROR is a pipeline failure; ANALYSIS_INCOMPLETE may omit findings\n    version: string;\n    metadata: ReportMetadata;\n    performance: PerformanceMetrics;\n    diagnostics: Diagnostic[];\n}\n```\n\nEvery finding is a `Diagnostic` (see [Diagnostic](#diagnostic)). Its enrichment fields - `documentationUrl`,\n`ruleDescription`, `phase` (`PARSE` | `SCHEMA` | `LINT`), and `context` (`ViolationContext` with `actualValue`,\n`expectedConstraint`, `resolutionSource`, etc.) - are populated only at `detailLevel` `\"DETAILED\"` (the default);\nvalidating at `\"STANDARD\"` leaves them absent, keeping the base diagnostic fields.\n\n`metadata` carries the summary counts, the number of suppressed diagnostics, the resources scanned and rules\nevaluated, the strict flag and severity threshold used, and optional budget-exhaustion records. Each budget-exhaustion\nrecord retains a stable machine-readable kind and also includes a human-readable description sentence, the numeric\nlimit, and whether that specific exhaustion makes analysis incomplete. `requiredPropertyCombinations` is context-only,\nso its `analysisIncomplete` value is `false` and the report can remain `\"OK\"`.\n\n### Diagnostic\n\n```typescript\ninterface Diagnostic {\n    ruleId: string;                    // e.g. \"E3012\", \"F1001\", \"W3010\"\n    severity: Severity;                // \"FATAL\" | \"ERROR\" | \"WARN\" | \"INFO\" | \"DEBUG\"\n    message: string;\n    source: RuleOrigin;                // \"SCHEMA\" | \"CFN_LINT\" | \"ENGINE\" | \"CUSTOM\" | \"GUARD\"\n    entity?: Entity;                   // the named template entity the finding targets, if any\n    propertyPath?: string;             // e.g. \"Properties.BucketName\", or section-absolute like \"Parameters/MyParam/Type\"\n    suggestedFix?: string;\n    category?: string;\n    startLine?: number;\n    startColumn?: number;\n    endLine?: number;\n    endColumn?: number;\n    relatedResources?: RelatedResource[];\n    conditionScenario?: Record<string, boolean>;  // condition truth assignment that triggers this diagnostic\n    // Enrichment fields: populated at detailLevel \"DETAILED\" (the default), absent at \"STANDARD\".\n    documentationUrl?: string;\n    ruleDescription?: string;\n    phase?: \"PARSE\" | \"SCHEMA\" | \"LINT\";           // pipeline stage that produced the finding\n    context?: ViolationContext;                    // actualValue, expectedConstraint, resolutionSource, etc.\n}\n\n// The named template entity a diagnostic is attributed to. The entity type is the\n// singular form of the top-level template section the entity is declared in.\ninterface Entity {\n    logicalId: string;                 // logical ID as declared in the template\n    entityType: EntityType;\n    resourceType?: string;             // CloudFormation type, when the entity is a resource whose type is known\n}\n\ntype EntityType = \"Resource\" | \"Parameter\" | \"Output\" | \"Mapping\" | \"Metadata\"\n                | \"Rule\" | \"Condition\" | \"Transform\" | \"FormatVersion\" | \"Description\";\n```\n\n`Severity`, `RuleOrigin`, and `DetailLevel` are string-literal union types (`\"WARN\"`, `\"GUARD\"`, `\"STANDARD\"`, ...), as\nis the report `status` (`\"OK\"`, `\"ANALYSIS_INCOMPLETE\"`, `\"ERROR\"`).\n","readmeFilename":"README.md"}