{"_id":"@c6fc/spellcraft-aws-auth","_rev":"11-677504e35d6003920de5211da4e944c8","name":"@c6fc/spellcraft-aws-auth","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.0","author":"","license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.0","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/spellcraft-aws-auth/issues"},"bin":{"cli":"utils/cli-test.js"},"dist":{"shasum":"02b6dca1dc136b6d76f9c2af895959be3c95eabb","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.0.tgz","fileCount":9,"integrity":"sha512-19pTv/i7X00kirod76xUXE9GqZgJ1LurpHx+ZOvWHjWjbnVz+nD4zXe51nj9Ggaz1NB/1VsL0+YTTk5p3LpOcw==","signatures":[{"sig":"MEYCIQDpq7xjQeZjIVEIsT0D4qZijotBEonVIIxut/Q9kRGXTQIhANFYfUIQOpzPApCHIb07l8NWEosDC9BGQpw51ubF57aV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26605},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"4dee0ff8b046917f66c196e18458071c66532d80","scripts":{"doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to expose Hashicorp Packer via @c6fc/spellcraft","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.0_1750724445043_0.05462047547694926","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.1","author":"","license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.1","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/spellcraft-aws-auth/issues"},"bin":{"cli":"utils/cli-test.js"},"dist":{"shasum":"5de7ecbc499132a0ddae4be7934910922d79538b","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.1.tgz","fileCount":9,"integrity":"sha512-dPZjE96mQD7FwRhIh8EIFojLUARrjqe71x68XhEpVigILCyBcGaDGpurHS++22J7j8aEYAcEs26o/9Jp1XluvA==","signatures":[{"sig":"MEQCIEAe0dFpyGN+cAptFfZnXr7eVRRj4V6sJs+KDD9akMFZAiB8l74ycYcvrXLJXPwloYQ9S2vQhlYauFpRi6ZVm9oM/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26594},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"4dee0ff8b046917f66c196e18458071c66532d80","scripts":{"doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.1_1750725683114_0.7602116898672786","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.2","author":"","license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.2","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/spellcraft-aws-auth/issues"},"bin":{"cli":"utils/cli-test.js"},"dist":{"shasum":"a17aa9d2d6c7ca37c95e779a879be0fd832e925c","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.2.tgz","fileCount":9,"integrity":"sha512-YG4M2IAvN/ryqf9vin4BxjWrVBa07DTHhSm7E2VxHP8dy6wI003H2cSasqvhHNm4Cc8fM04Tt9Ph7kky+/pyQA==","signatures":[{"sig":"MEYCIQCGAzdnqBAr2Y8UDzzv5bWG0QWhgwNzBwaIrVScmvQESwIhANBHgH0XZ7pW1fMYRBLawSdMcsbsPsTwzhaaK/XGqCZV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26612},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"4dee0ff8b046917f66c196e18458071c66532d80","scripts":{"doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.2_1750725774419_0.4128145673026795","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.3","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.3","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"bin":{"cli":"utils/cli-test.js"},"dist":{"shasum":"ea159b522054bcfa91446ff9c4470af1775bfcc9","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.3.tgz","fileCount":9,"integrity":"sha512-WNO9Q6LZ/SCBzfw5w2Fofq1b7g5Tj290pM/E4jTXRTyOByFywCzRXLZaqKUAoBwhdXZ/3BAinc2vwBcPb3L62A==","signatures":[{"sig":"MEUCIQDsmuRt8+obmavqjcHDrXMB5AICIplfJ0fg8b/KEwej9QIgPVKcO4CIACcZ9CgvNRxDoETUeMDk5xIQkZNjOfEc3m4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26663},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"4dee0ff8b046917f66c196e18458071c66532d80","scripts":{"doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.3_1750726045680_0.0876233912115012","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.4","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.4","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"f36f5f9b323aebb0e5438db6b55fd42def16640d","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.4.tgz","fileCount":9,"integrity":"sha512-IbsX4fiQzFeFKUuHpBalSLbIWpHQuMd8MZDBEPw5bdNE6hURuigv3+yzJ/CNxf9heDAZbsX0nOBRxKrvdLwPhg==","signatures":[{"sig":"MEUCIQCKCdKDCfqfU4SU7+zS3yRmAtYQ9LJkQHkXNnI6OScdKgIgEU7u/Ktxgrp8SE06R/9ylH/dWcS4dNybmtb3Q1RvaNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25765},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"4487a500e21f6dae18255b416607564c563e4cf7","scripts":{"cli":"utils/cli-test.js","doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.4_1751058731777_0.7561026049193686","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.5","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.5","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"bc6f58948a90558287a76fed529067610594be06","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.5.tgz","fileCount":9,"integrity":"sha512-C+ZPss01N7VMzAES4HMnay1MOngSERS+TjhXZHk1HqPaarYdrpyHHw5z8BYb0NS6BkCi75D+jCQMSJK7e8hTug==","signatures":[{"sig":"MEYCIQC0MNgTtLtJrQk7VgH7swU8M7kw2+OL9qUzgvsPRs+D0wIhAML1HRdBcidJfJihhkb56KezUci7DUUlJCF1NTSxXW+h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23455},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"1991f924553184473da116c246beb7000aa46232","scripts":{"cli":"utils/cli-test.js","doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.5_1751136244449_0.6446306391217715","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.6","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.6","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"8cf1aec9816547027aa74fd9e65d6a5924a4e8bb","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.6.tgz","fileCount":9,"integrity":"sha512-JUhk6pLXHOveWJY0S4B7FPKtPScFIE6sPuSp9Wg0W4fL0x9L/RRHYoDebLRyNK5t9sRBWOrxEst2q085pakUpA==","signatures":[{"sig":"MEUCIF2nP03smDmw92ZUHWUFPGl7X9F4KjLb60xsk8d+die0AiEAt5wiMe1/sHA8WQe4TWopusWAIEvzepalNGoOqlhaZL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23523},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"9bad020efcb002e57e556998f3506a87049a7926","scripts":{"cli":"utils/cli-test.js","doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.6_1751136811981_0.8594669152081735","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@c6fc/spellcraft-aws-auth","version":"1.0.7","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.0.7","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"d08bc25fc9b12ad643e166f8049a93aae4924d4b","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.0.7.tgz","fileCount":9,"integrity":"sha512-eea3IPOwLkuXtnFg4b4AI0RxqUUfKHtRT7b0GVvrLHxCp8pa2jtbIzPnOcdRWk/1LByHQvdDUIohjxIi/6bGxg==","signatures":[{"sig":"MEYCIQCND/jUbw/xF0XdWRyRCSr5TvGvwBWDL8+HuTeK9b55iQIhAJY6uFC+QvWkaGJAysrttgxEHFwYvNzKh3ut568ZjHvm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23240},"main":"module.js","config":{"spellcraft_module_default_name":"awsauth"},"gitHead":"a9b33684a981c2e18870dcd98708667c6df9a8e2","scripts":{"cli":"utils/cli-test.js","doc":"jsdoc -c utils/jsdoc.json --verbose","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","actor":{"name":"c6fc","type":"user","email":"brad@bradwoodward.io"},"email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0","@c6fc/spellcraft":"0.0.5"},"_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^4.0.4","yargs":"^18.0.0","clean-jsdoc-theme":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.0.7_1751138048088_0.9546398804524012","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@c6fc/spellcraft-aws-auth","version":"1.1.1","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.1.1","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"a2216b9bc59bf20ebb33a93930594e986bc10532","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.1.1.tgz","fileCount":8,"integrity":"sha512-nRMEKmF+ak5vr3sIYVZ4nxv/68xvBFTw3i9Qn2Usv0hMJnP6NMkxraUJivqpEGOsaIN381wW6BaOYQLoRV3juA==","signatures":[{"sig":"MEYCIQC8ToQqR9M7vhC6B8X2M0GfRboW5cIoVMtvUHBEi+8l4gIhALqs1NDOouNQLadzPjhx2jZdvT0aNp9d1nbySbolFJl/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25145},"main":"module.js","gitHead":"a9b33684a981c2e18870dcd98708667c6df9a8e2","scripts":{"cli":"node utils/cli-test.js","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"spellcraft":true,"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^18.0.0","@c6fc/spellcraft":"~0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.1.1_1766095952029_0.8825879889863402","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@c6fc/spellcraft-aws-auth","version":"1.1.2","author":{"url":"brad@bradwoodward.io","name":"Brad Woodward"},"license":"MIT","_id":"@c6fc/spellcraft-aws-auth@1.1.2","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"dist":{"shasum":"ed9920cf58b40ec15cc743a742a4e15146703d56","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-1.1.2.tgz","fileCount":8,"integrity":"sha512-7Zkyf6BUM2BmOhumjI2kcLQWtLfKpXSqZmWeZWwdYABe2sU3EIand5DjIsDFLxeZ25+pDNKpXMkiE1rOxvL4aA==","signatures":[{"sig":"MEYCIQDD+UnnuMzIcGZEdNzbTat48RhVilVV3E8jlxZ3G+YXngIhAMM5ZnaM65pXWmwyIgXhW8qfXV2JRrXGnPF+x5k6i/ME","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25207},"main":"module.js","gitHead":"a9b33684a981c2e18870dcd98708667c6df9a8e2","scripts":{"cli":"node utils/cli-test.js","test":"node utils/test.js"},"_npmUser":{"name":"c6fc","email":"brad@bradwoodward.io"},"repository":{"url":"git+https://github.com/c6fc/spellcraft-aws-auth.git","type":"git"},"spellcraft":true,"_npmVersion":"10.8.2","description":"A plugin to empower @c6fc/spellcraft with AWS","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ini":"^5.0.0","aws-sdk":"^2.1692.0"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^18.0.0","@c6fc/spellcraft":"~0.1.0"},"peerDependencies":{"@c6fc/spellcraft":"~0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/spellcraft-aws-auth_1.1.2_1766096030317_0.31817842722441947","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@c6fc/spellcraft-aws-auth","version":"2.0.0","main":"module.js","scripts":{"cli":"node utils/cli-test.js","test":"node utils/test.js","doc":"spellcraft doc"},"repository":{"type":"git","url":"git+https://github.com/c6fc/spellcraft-aws-auth.git"},"spellcraft":true,"keywords":["spellcraft","aws"],"author":{"name":"Brad Woodward","url":"brad@bradwoodward.io"},"license":"MIT","bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","description":"AWS credentials, role chaining and profile handling, with the AWS SDK reachable directly from Jsonnet.","peerDependencies":{"@c6fc/spellcraft":"^1.0.0"},"devDependencies":{"@c6fc/spellcraft":"^1.0.0","yargs":"^18.0.0"},"dependencies":{"aws-sdk":"^2.1692.0","ini":"^5.0.0"},"engines":{"node":">=18"},"_id":"@c6fc/spellcraft-aws-auth@2.0.0","gitHead":"ec0486d598b0710d9371a073c5c7961ba2b92668","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-amWTJqrKJPh3B2Ceqs1P1uBF4YGqJz+2xEefPvxzfZ8A4J3CIS417UadY+c6Or+ftchq8lA7Sa7lc3ZemjOj3Q==","shasum":"e503a39397be3f87832c5ee9c5b5c340cf11702a","tarball":"https://registry.npmjs.org/@c6fc/spellcraft-aws-auth/-/spellcraft-aws-auth-2.0.0.tgz","fileCount":6,"unpackedSize":27445,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC+2oVPDvSqWfYMBTEcJwvtul1r9BzStPr3y3VaydG4YAIhAOdPVrGElVzcUCDA3NOTaoexcRDn00nkC+Qbm5NoL8mn"}]},"_npmUser":{"name":"c6fc","email":"brad@bradwoodward.io"},"directories":{},"maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spellcraft-aws-auth_2.0.0_1788728944509_0.31643213393942626"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-24T00:20:44.931Z","modified":"2026-09-06T21:09:04.780Z","1.0.0":"2025-06-24T00:20:45.251Z","1.0.1":"2025-06-24T00:41:23.295Z","1.0.2":"2025-06-24T00:42:54.666Z","1.0.3":"2025-06-24T00:47:25.867Z","1.0.4":"2025-06-27T21:12:11.985Z","1.0.5":"2025-06-28T18:44:04.641Z","1.0.6":"2025-06-28T18:53:32.156Z","1.0.7":"2025-06-28T19:14:08.259Z","1.1.1":"2025-12-18T22:12:32.168Z","1.1.2":"2025-12-18T22:13:50.463Z","2.0.0":"2026-09-06T21:09:04.643Z"},"bugs":{"url":"https://github.com/c6fc/spellcraft-aws-auth/issues"},"author":{"name":"Brad Woodward","url":"brad@bradwoodward.io"},"license":"MIT","homepage":"https://github.com/c6fc/spellcraft-aws-auth#readme","repository":{"type":"git","url":"git+https://github.com/c6fc/spellcraft-aws-auth.git"},"description":"AWS credentials, role chaining and profile handling, with the AWS SDK reachable directly from Jsonnet.","maintainers":[{"name":"c6fc","email":"brad@bradwoodward.io"}],"readme":"# @c6fc/spellcraft-aws-auth\n\nAWS credentials, role chaining and profile handling for\n[SpellCraft](https://github.com/c6fc/spellcraft), with the AWS SDK reachable\ndirectly from Jsonnet.\n\n[![NPM version](https://img.shields.io/npm/v/@c6fc/spellcraft-aws-auth.svg?style=flat)](https://www.npmjs.com/package/@c6fc/spellcraft-aws-auth)\n[![License](https://img.shields.io/npm/l/@c6fc/spellcraft-aws-auth.svg?style=flat)](https://opensource.org/licenses/MIT)\n\nThis is what lets a manifest ask AWS a question while it renders — an account\nnumber, the regions you can see, whether a bucket already exists — instead of\nbeing handed an answer someone pasted in.\n\n```bash\nnpm install --save @c6fc/spellcraft-aws-auth\n```\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n{\n\t\"identity.json\": aws.getCallerIdentity(),\n}\n```\n\nSpellCraft finds the plugin through your dependencies, so there is nothing to\nregister.\n\n## Credentials\n\nWhatever the plugin authenticates as becomes the render's identity, and\n`getCallerIdentity()` reports it:\n\n```console\n$ npx spellcraft aws-identity\n{\n    \"UserId\": \"AIDAEXAMPLEAAAAA\",\n    \"Account\": \"123456789012\",\n    \"Arn\": \"arn:aws:iam::123456789012:user/you\"\n}\n```\n\nWith `AWS_PROFILE` set, the named profile is used, including profiles that\nassume a role. You are prompted for an MFA token when the profile needs one, and\nthe resulting session is cached so later renders don't ask again. Without it,\nthe AWS SDK's own credential resolution applies.\n\n### Role chaining\n\nSet `SPELLCRAFT_ASSUMEROLE` to an ARN and the plugin assumes that role with\nwhatever it just authenticated as, then renders as the assumed identity:\n\n```console\n$ export SPELLCRAFT_ASSUMEROLE=\"arn:aws:iam::345678901234:role/deployment\"\n$ npx spellcraft aws-identity\n{\n    \"UserId\": \"AROAEXAMPLEBBBB:spellcraft_assumerole_1756900000000\",\n    \"Account\": \"345678901234\",\n    \"Arn\": \"arn:aws:iam::345678901234:assumed-role/deployment/spellcraft_assumerole_1756900000000\"\n}\n```\n\nThe session name is `spellcraft_assumerole_<epoch-milliseconds>`, which is worth\nknowing when you write the role's trust policy.\n\n### Pinning the account\n\nA spell that must only ever run against one account can say so, and fail the\nrender rather than generating configuration for the wrong place:\n\n```jsonnet\n{\n\tassertions:: aws.assertIdentity('arn:aws:iam::123456789012:user/you'),\n\n\t\"main.tf.json\": { ... },\n}\n```\n\n`assertions::` is a SpellCraft convention, not just a hidden field that\nhappens to be read somewhere: `SpellFrame` forces it to evaluate before\nanything is written, whether or not any other field references it. See\ncore's README for how and why.\n\n## Cost and caching\n\n`getCallerIdentity()` is resolved once during `init()` and cached, so it costs\nnothing to call repeatedly. Everything else is a live API call, memoised per\n`(function, arguments)` for the life of a render — so calling `aws.call('STS',\n'getCallerIdentity')` in forty places is one request, but forty *different*\ncalls are forty requests.\n\n`getAvailabilityZones()` is the expensive one: `describeRegions` plus a\n`describeAvailabilityZones` for every region it returns. Useful, but not\nsomething to reach for casually.\n\n<!-- SPELLCRAFT_DOCS_CLI_START -->\n## CLI Commands\n\n- **`spellcraft aws-identity`**\n  Display the AWS IAM identity of the SpellCraft execution context\n- **`spellcraft aws-exportcredentials`**\n  Export the current credentials as environment variables\n\n<!-- SPELLCRAFT_DOCS_CLI_END -->\n\n## What it contributes to a SpellFrame\n\n- **`init()`** — resolves credentials, performs the optional `AssumeRole`,\n  prompts for MFA if required, and caches the caller identity.\n- **`functionContext.aws`** — the authenticated AWS-SDK v2 module, available as\n  `this.aws` inside any plugin's native functions. This is the seam other\n  plugins use to reuse these credentials rather than authenticating again:\n\n  ```js\n  const { aws } = require('@c6fc/spellcraft-aws-auth')._spellcraft_metadata.functionContext;\n  ```\n\n- **Native functions** — `getCallerIdentity` and `aws`, the latter being the\n  generic SDK passthrough that `api()` and `call()` below are built on.\n\n<!-- SPELLCRAFT_DOCS_API_START -->\n## API Reference\n\n### `client(service, params={})`\n\nDescribes an AWS service client. Pass the result to `aws.api()`.\n\nThis does not instantiate anything on its own — it is a plain object naming\nthe service and the constructor parameters, which `aws.api()` hands to the\nSDK. Reach for it when a call needs non-default client options such as a\nregion; otherwise `aws.call()` is shorter.\n\n- param {string} service - an AWS-SDK v2 client name, e.g. 'STS' or 'EC2'\n- param {object} [params={}] - constructor options, e.g. { region: \"us-west-2\" }\n- returns {object} a client descriptor\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\nlocal ec2 = aws.client('EC2', { region: \"us-west-2\" });\n\n{ \"zones.json\": aws.api(ec2, 'describeAvailabilityZones') }\n```\n\n---\n### `api(clientObj, method, params={})`\n\nCalls an AWS API method and returns its response.\n\nThe client and parameters are serialised on the way out because Jsonnet\ncannot pass objects into a native function, and parsed again on the\nJavaScript side. The response comes back as an ordinary Jsonnet object.\n\n- param {object} clientObj - a descriptor from `aws.client()`\n- param {string} method - the SDK method name, e.g. 'describeRegions'\n- param {object} [params={}] - request parameters\n- returns {object} the API response, with ResponseMetadata left intact\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\nlocal s3 = aws.client('S3', { region: \"us-west-2\" });\n\n{ \"buckets.json\": aws.api(s3, 'listBuckets') }\n```\n\n---\n### `call(name, method, params={})`\n\nShorthand for `aws.api(aws.client(name, { region: \"us-east-1\" }), method, params)`.\n\nNote the pinned region: this is for global endpoints such as STS and IAM.\nFor anything regional, build the client yourself with `aws.client()` so the\ncall reaches the region you mean.\n\n- param {string} name - an AWS-SDK v2 client name\n- param {string} method - the SDK method name\n- param {object} [params={}] - request parameters\n- returns {object} the API response\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n{ \"identity.json\": aws.call('STS', 'getCallerIdentity') }\n```\n\n---\n### `assertIdentity(arn)`\n\nAborts the render unless the current identity's ARN matches exactly.\n\nA guard for spells that must only ever run against one account. The\ncomparison is a string equality against `getCallerIdentity().Arn`, so an\nassumed-role ARN has to be written as the assumed-role form.\n\n- param {string} arn - the ARN the render requires\n- returns {string} the same arn, so it can be bound or discarded\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n// `assertions::` is a SpellCraft convention: SpellFrame forces it to\n// evaluate before anything is written, whether or not anything else\n// in the manifest references it.\n{\n    assertions:: aws.assertIdentity('arn:aws:iam::123456789012:user/you'),\n\n    \"main.tf.json\": { ... },\n}\n```\n\n---\n### `getCallerIdentity()`\n\nThe identity the render is authenticated as.\n\nResolved once during `init()` and cached, so this costs no API call and is\nthe identity *after* any `SPELLCRAFT_ASSUMEROLE` chaining has happened.\n\n- returns {object} `{ UserId, Account, Arn }`\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n{ \"account.json\": { account: aws.getCallerIdentity().Account } }\n```\n\n---\n### `getRegionsList()`\n\nEvery region name the current credentials can see.\n\nOne `describeRegions` call against us-east-1, mapped down to the names.\n\n- returns {string[]} region names, e.g. `[\"us-east-1\", \"us-west-2\", ...]`\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n{ \"regions.json\": aws.getRegionsList() }\n```\n\n---\n### `getAvailabilityZones()`\n\nAvailability zone names, keyed by region.\n\nBe aware of the cost: this is one `describeRegions` call plus one\n`describeAvailabilityZones` per region, so it makes tens of API calls and\ntakes a while. Memoisation makes it once per render, not once per use.\n\n- returns {object} region name to an array of zone names\n\n**Examples:**\n\n```jsonnet\nlocal aws = import \"@c6fc/spellcraft-aws-auth/module.libsonnet\";\n\n{ \"zones.json\": aws.getAvailabilityZones() }\n\n// Returns:\n// { \"us-east-1\": [\"us-east-1a\", \"us-east-1b\", ...], ... }\n```\n\n---\n\n<!-- SPELLCRAFT_DOCS_API_END -->\n\n## The SDK surface\n\nThis plugin wraps the **AWS SDK for JavaScript v2**. Method names are passed\nthrough untouched, so anything in the\n[v2 API reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/) is\ncallable — every service, every method, no per-service wrappers to wait for.\n\n## Development\n\n```bash\nnpm test        # renders test.jsonnet through a real SpellFrame\nnpm run cli     # exercises this plugin's CLI commands\nnpm run doc     # regenerates the two sections above from source comments\n```\n\n`npm test` needs real AWS credentials and is read-only, but it calls\n`getAvailabilityZones()` — expect it to take a while and make a lot of\ndescribes.\n\n## License\n\nMIT © [Brad Woodward](https://github.com/c6fc)\n","readmeFilename":"README.md","keywords":["spellcraft","aws"]}