{"_id":"@dwkerwin/ssm-config","_rev":"13-11c31f590069affb053f48fe47f13910","name":"@dwkerwin/ssm-config","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@dwkerwin/ssm-config","version":"1.0.0","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.0","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"4be73eea487cb9a8c33a4e08586dfaab2de1636e","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.0.tgz","fileCount":6,"integrity":"sha512-Uv2R28c+Vg3Wji5yh6Y0kXb6ltvepKu56if4+Pnn2SgbVq4Q3fTGi+RQMgUjUlNpUdQDMHOVNQfUy28c5rPndw==","signatures":[{"sig":"MEYCIQDIQ9224GCIFv2WZSRRRg0qBZuyN1iqVzrFD9e7nI60bwIhAPUzGKmRlEiuc++yyvo8nzmRzP0HzI4TQv2Nl8gjml5q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25398},"main":"index.js","gitHead":"1d45ba654b02a6bdf69c8fb1bf365ead3c282a79","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.0_1729897094095_0.44106584413788763","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@dwkerwin/ssm-config","version":"1.0.1","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.1","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"68268d774b66fea4fe7ca350b220939eaeaaa876","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.1.tgz","fileCount":6,"integrity":"sha512-lO0Ijr/HPw6jQj9JRCBjX8asfuUCLjNISZK1hKh7QYA/y/B5/d4pRSQkwmJTqs9xI5GCyZkxxpotvfghBdaZOQ==","signatures":[{"sig":"MEQCIEH7LTsPoembubPVe9QQygcF5kNA4vBLXsv6qyCxDnkDAiA6Rikt3hNyFBKkvK+6h2KNPZVpKRyFjmkN8vx4YH9mmA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26634},"main":"index.js","gitHead":"518ee1b4acf88aae5171b9af28fd64f53441716d","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.1_1729900086547_0.035418889355770755","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@dwkerwin/ssm-config","version":"1.0.2","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.2","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"490cc9c6709a2be72242e86eeef5dd8e64f89185","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.2.tgz","fileCount":6,"integrity":"sha512-pup+t1hBim9mPXoOYD9mLqlpcZcGvZ6r8TcL3FYI8sA7QsxzA4Y3YGoC5VeKrzwVluBgNl6YKklEPrL6jUXrUw==","signatures":[{"sig":"MEUCIDeLA45M65Bsi/Enga1ZEbNFdHX7AflopkbCQYkkYxkZAiEA3SEXH540qaKIjQPNFGZ5aQ9Tu/foTFraEXfNxOs1Z8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26827},"main":"index.js","gitHead":"d1a9badba14e86a141a29c9072c82a279f6326e9","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.2_1732242358833_0.930934684283468","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@dwkerwin/ssm-config","version":"1.0.3","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.3","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"267dc261f8df6f5d72d130fae30256414e096892","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.3.tgz","fileCount":6,"integrity":"sha512-+7IXIEzitpBSUIpcrVFQTdwO0qdydFgLX9iHOiYL/AZtXlS7HJB5Re9UDQKpURt4VBQ9MI/3udFcdemcBDhibw==","signatures":[{"sig":"MEUCICdh0iA2NCBOT8watbAyyDjhAA9OFRMpeu7iJ4nN7CDeAiEA/wYJ0XJUJbf/plct80rx9CqfrRXHRPshwAsHRCAAsKg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26917},"main":"index.js","gitHead":"70744ca97dbbe92e396e34aa4b46f800dc6e75bd","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.3_1732247794729_0.013956176477208038","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@dwkerwin/ssm-config","version":"1.0.4","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.4","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"727810c366a0dc9011d1e9938c2c9fcbce94bbe4","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.4.tgz","fileCount":6,"integrity":"sha512-QQKgPeRdnrleF1NAjUiRm70gbw4d2DJVHwIo6tjff43HIBTHsJ7z91mVvfpk0OszkyHoG3mcTv3j65GPN6OQ0w==","signatures":[{"sig":"MEUCIDk2ZlJAY+JkeIEXPCl0buau4iZueaxmmLUKi8JDir1pAiEA7GbxWK3sDak62I4gRXcbCWSzbcavAADshC57aPTW7Vk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29413},"main":"index.js","gitHead":"70744ca97dbbe92e396e34aa4b46f800dc6e75bd","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.4_1733702874105_0.8885808136249163","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@dwkerwin/ssm-config","version":"1.0.5","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.5","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"79d7b698be645ecd6a239ce102cb43eb94ceac60","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.5.tgz","fileCount":7,"integrity":"sha512-xGm35P8VKjYRa2qNwL+MOnDZq2pv4XLfI892Ghca2jWl9RdLuBp0SVCUdN7NZ1MZbe0MNDBSBAqd/+kCvlypRw==","signatures":[{"sig":"MEQCIHTkT2GEKVOXSDEMWCfVJFjrFtVs7NNYy2MDuJC0Xh8sAiAjROYnbYnH+lZ1jqtWsyIssVJfGHBefuLTW3RtV1iuRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35263},"main":"index.js","gitHead":"82c90d29d54adfc85b2d4c5ef4217a61b215255d","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.5_1738555634605_0.7714869420674879","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@dwkerwin/ssm-config","version":"1.0.6","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.6","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"bfc6ae983f0f3d9dde2d3d7db27e3d1b2ab5c0d4","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.6.tgz","fileCount":7,"integrity":"sha512-GdznLJRoU2p4AnlIh9a0oPiaXsC2PL7VwWbz8r2JqxqLYcIWHkhAcbifXopc+Sx59UbOpHLsrsxtfL09f5NIKA==","signatures":[{"sig":"MEUCIH60TPN8ctqZpvlyfVz0DfraIn2PouPTMnvzaD6V26FNAiEAyuBMt/glzyDhqd6h5iFpLcJIvkT68UKw3Y8x3VWjSOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39517},"main":"index.js","gitHead":"901d660578a06b2331cdbc65e38853725e47b482","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.6_1742149683237_0.15824083601669248","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@dwkerwin/ssm-config","version":"1.0.7","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.0.7","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"29a721ea7410faf456fbb335855f62642a0c2346","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.0.7.tgz","fileCount":7,"integrity":"sha512-LRkUSSjh71hDTfdOgM5PePpRCrXeTMFAfDpKPhSdj4pw3L2OovanC1kd6Dpo7Hbwh3XNEOF6ENqnvkGvOtPwKw==","signatures":[{"sig":"MEQCIGrg3HZ655yHSF3Hz019n4qUM31ABBMPIFArhBiewFTvAiAXo4ryl9iIsCkGd/KHlGLS2AtUMm2zDEK9exZmzDa7Og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41932},"main":"index.js","gitHead":"901d660578a06b2331cdbc65e38853725e47b482","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.0.7_1742160774774_0.18171364613843433","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dwkerwin/ssm-config","version":"1.1.0","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.1.0","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"e8a79f5322c4e769d174b9a31407b575532bb01e","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.1.0.tgz","fileCount":7,"integrity":"sha512-BFHlJVeFfQK/iybRS2R6GHPHAvEeSC1uKVlmY/ogapn4Qsw0Izc1b3hBBVR7ksJWUzavn+CpuYAHvXdB8lIGpg==","signatures":[{"sig":"MEUCIFtErCb2glIDUYu1ThJz6EvdEuUQ/yi4ZHRTVKw8QI8uAiEAoDIgpLfNbdzl6hnP8fM0M8j7tZryBtIvSFgljAluZeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44377},"main":"index.js","gitHead":"3ddae498e7d7f2d78da6e745d9aa8f68608a3833","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.8.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.1.0_1747781087014_0.4933197792612567","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@dwkerwin/ssm-config","version":"1.1.1","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.1.1","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"aa1479b1a7eb0b9abc9c85837b1d14cd451a70a0","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.1.1.tgz","fileCount":7,"integrity":"sha512-iztFgc9+dQXJUqcCJvgJ0Fbn9n2gD0LYIC5Y0/FuhGcaD2XNE7tlvtjkKismHecA5Y8nxmZ/80MRyNc7DGbl0A==","signatures":[{"sig":"MEQCIB2b866/UQgLUI6Q0Q74QtWZClXS6IZjlc4zeQn0YrWjAiA4ZTtoijLPned9vjdud+LGRXSAFPcWQp1cOfgDqiCWzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44527},"main":"index.js","gitHead":"b354c6f8f50704f61d6a61dc1d01be75afab3655","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","actor":{"name":"dwkerwin","type":"user","email":"dwkerwin@gmail.com"},"email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.9.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.1.1_1750453299856_0.21404093377831224","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@dwkerwin/ssm-config","version":"1.1.2","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.1.2","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"0e54a5fda43e7073db7f47f7da3ecfb3347b973c","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.1.2.tgz","fileCount":7,"integrity":"sha512-Wxr1CeWerBtweMwOOR5Go4uq9kSbe0jZ/Fw85OrDdSuG34ICzHZPgiwBiR5z2PVJlB0m6E9n+2Oqgdu4Rojepg==","signatures":[{"sig":"MEQCIE38D4UPL07sKNILaW5ZINPl5jL1JTIoza0pjd0UCShGAiAxK+NQ3EOTsjLCjvJ7Tb5tC4A9+GzMLVpTBRiYhQ74AA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47515},"main":"index.js","gitHead":"647b8ae9c7ffd870b8447431fde5e2ad822e996e","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","actor":{"name":"dwkerwin","type":"user","email":"dwkerwin@gmail.com"},"email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.9.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.1.2_1750454635585_0.11002415365481122","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@dwkerwin/ssm-config","version":"1.1.3","keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","_id":"@dwkerwin/ssm-config@1.1.3","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"homepage":"https://github.com/dwkerwin/ssm-config#readme","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"dist":{"shasum":"5dd667f69c754ae5da4a86767b94fba1b7679ee6","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.1.3.tgz","fileCount":7,"integrity":"sha512-2bK5oJn84347yICVOAfLBI27BLlBkRGRz4oPZDrJ7tk7aHkj9hJx89jp4oB96kIsVeqtFLzBt7uqbFzNfCK70w==","signatures":[{"sig":"MEUCIGoeGz5pb2+sBxsecnmX1LK8QXHJICs8vaLSqFtaJsmUAiEA/Ijthl03zxkrGHpJ0Ln1L2RIkmnlAzpVVnHP9CTGAgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54867},"main":"index.js","gitHead":"7575b9ceae79d9a2c4969c5908b4f6c0abc2eff6","scripts":{"test":"jest","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"repository":{"url":"git+https://github.com/dwkerwin/ssm-config.git","type":"git"},"_npmVersion":"10.9.2","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.6.0","@aws-sdk/client-ssm":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ssm-config_1.1.3_1755114434475_0.48819392214643087","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@dwkerwin/ssm-config","version":"1.2.0","description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","main":"index.js","scripts":{"test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:ci":"jest --ci --coverage","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand"},"repository":{"type":"git","url":"git+https://github.com/dwkerwin/ssm-config.git"},"keywords":["environment","variables","ssm","parameters"],"author":{"name":"Doug Kerwin"},"license":"MIT","bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"homepage":"https://github.com/dwkerwin/ssm-config#readme","dependencies":{"@aws-sdk/client-ssm":"^3.0.0","axios":"^1.6.0"},"devDependencies":{"jest":"^29.7.0"},"_id":"@dwkerwin/ssm-config@1.2.0","gitHead":"cfe8d4ff3c14b1650e1eae743a7a28c064104d9d","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-0mroAoSDA4+Yl2k+Q6/ie7vC3gJzZ3epEKfprEWFU0T4qAdSGPvBMV8Fey7cbPoGP58aMgrVGmgL7lPcsEOGsA==","shasum":"e3f8d1aa79742fdf9127c1d7383eb6636271b294","tarball":"https://registry.npmjs.org/@dwkerwin/ssm-config/-/ssm-config-1.2.0.tgz","fileCount":7,"unpackedSize":73689,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCTlM99YZZDC9sh2T17Tid7JtK2I5IoOZ57ps3YYi4XtwIgR9CohsDbtHaAIH6alDGOJ4dbM/HinxnHo3+3gafHNbQ="}]},"_npmUser":{"name":"dwkerwin","email":"dwkerwin@gmail.com"},"directories":{},"maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ssm-config_1.2.0_1758485284639_0.9549815126804113"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-25T22:58:13.981Z","modified":"2025-09-21T20:08:05.011Z","1.0.0":"2024-10-25T22:58:14.346Z","1.0.1":"2024-10-25T23:48:06.765Z","1.0.2":"2024-11-22T02:25:59.007Z","1.0.3":"2024-11-22T03:56:34.889Z","1.0.4":"2024-12-09T00:07:54.325Z","1.0.5":"2025-02-03T04:07:14.804Z","1.0.6":"2025-03-16T18:28:03.452Z","1.0.7":"2025-03-16T21:32:54.961Z","1.1.0":"2025-05-20T22:44:47.215Z","1.1.1":"2025-06-20T21:01:40.048Z","1.1.2":"2025-06-20T21:23:55.772Z","1.1.3":"2025-08-13T19:47:14.657Z","1.2.0":"2025-09-21T20:08:04.825Z"},"bugs":{"url":"https://github.com/dwkerwin/ssm-config/issues"},"author":{"name":"Doug Kerwin"},"license":"MIT","homepage":"https://github.com/dwkerwin/ssm-config#readme","keywords":["environment","variables","ssm","parameters"],"repository":{"type":"git","url":"git+https://github.com/dwkerwin/ssm-config.git"},"description":"A config loader for environment variables, AWS SSM parameters, and static fallbacks, optimized for AWS Lambda with Extensions API support.","maintainers":[{"name":"dwkerwin","email":"dwkerwin@gmail.com"}],"readme":"# @dwkerwin/ssm-config\n\nA flexible configuration loader that supports environment variables, AWS SSM parameters, and static fallbacks, with built-in support for the AWS Lambda Extensions API for improved performance when fetching SSM parameters from within Lambda.\n\n## Motivation\n\nThis package was created to address the challenges of managing configuration and secrets in AWS Lambda functions, particularly when using container images. The main goals were:\n\n1. Avoid storing sensitive information directly in environment variables.\n2. Efficiently read secrets from AWS Systems Manager (SSM) Parameter Store within Lambda functions.\n3. Support the AWS Lambda Extensions API for improved performance when fetching SSM parameters.\n4. Support custom KMS keys for encrypted SSM parameters.\n5. Provide a simple, consistent interface for accessing configuration throughout the application.\n\n`@dwkerwin/ssm-config` achieves these goals by:\n\n- Supporting SSM Parameter Store as a source for configuration values\n- Utilizing the AWS Parameters and Secrets Lambda Extension when available, which provides a local HTTP endpoint (localhost:2773) for efficient parameter retrieval without direct AWS API calls\n- Supporting custom KMS keys for decryption of SSM parameters\n- Falling back to batch API calls to SSM Parameter Store when the Extension is not available\n- Caching configuration values after initial load for fast access during function invocations\n\n## Installation\n\n```bash\nnpm install @dwkerwin/ssm-config\n```\n\n## Usage\n\n1. Create a `ssmConfig.js` file in your project:\n\n```javascript\nconst config = require('@dwkerwin/ssm-config');\n\n// Define your configuration schema\nconst configMap = {\n    AWS_REGION: { envVar: 'AWS_REGION', fallbackStatic: 'us-east-1', type: 'string' },\n    LOG_LEVEL: { envVar: 'LOG_LEVEL', type: 'string' },\n    JWT_SECRET: { envVar: 'JWT_SECRET', fallbackSSM: '/my-app/secrets/jwt_secret', type: 'string' },\n    // ... other config items\n};\n\n// Set the configMap and initialize\nconfig.configMap = configMap;\n\n// Initialize with optional KMS key ID or alias\nconst configInitPromise = config.initializeConfig(\n    process.env.SSM_PARAMETER_KMS_KEY || 'alias/my-custom-key'\n);\n\nmodule.exports = config;\n```\n\n2. In your application code, you can safely initialize the config wherever needed:\n\n```javascript\nconst config = require('./ssmConfig');\n\n// The library ensures only one actual initialization occurs\nasync function someFunction() {\n    // Safe to call multiple times - will reuse existing initialization\n    await config.initializeConfig(\n        process.env.SSM_PARAMETER_KMS_KEY || 'alias/my-custom-key'\n    );\n    console.log(config.LOG_LEVEL);\n}\n\nclass SomeService {\n    async init() {\n        // Same here - safe to call in multiple places\n        await config.initializeConfig(\n            process.env.SSM_PARAMETER_KMS_KEY || 'alias/my-custom-key'\n        );\n        this.secret = config.JWT_SECRET;\n    }\n}\n```\n\nThe library handles concurrent initialization safely:\n- If it's the first call, it performs the initialization\n- If initialization is in progress, it returns the existing promise\n- If already initialized, it returns immediately\n- Only one set of SSM calls will ever be made\n\nThis means you don't need to manually coordinate initialization across your application - just call `initializeConfig()` when you need it, making sure to pass the KMS key if you're using encrypted parameters.\n\n### Initialization Patterns\n\nThe library is flexible about where you initialize the config. Here are some common patterns:\n\n#### Constructor Initialization\n```javascript\nclass MyService {\n    constructor() {\n        // Option 1: Initialize in constructor (if your framework supports async constructors)\n        this.initPromise = config.initializeConfig(\n            process.env.SSM_PARAMETER_KMS_KEY || 'alias/my-custom-key'\n        );\n    }\n\n    async someMethod() {\n        // Wait for initialization before using config\n        await this.initPromise;\n        this.secret = config.JWT_SECRET;\n    }\n}\n\n// Option 2: Separate initialization method (recommended for most cases)\nclass AnotherService {\n    constructor() {\n        // Don't access config values here\n    }\n\n    async init() {\n        await config.initializeConfig(\n            process.env.SSM_PARAMETER_KMS_KEY || 'alias/my-custom-key'\n        );\n        // Now safe to access config\n        this.secret = config.JWT_SECRET;\n    }\n}\n```\n\nFor most applications, we recommend:\n1. Using a separate `init()` method instead of initializing in constructors\n2. Always passing the KMS key if you're using encrypted parameters\n3. Awaiting initialization before accessing any config values\n\nNote: If you try to access config values before initialization is complete, the config object will throw an error unless the value has a `fallbackStatic` defined.\n\n### Example: Using with Serverless Koa\n\nHere's how to use the configuration in a serverless Koa application that needs to support both AWS Lambda and local development:\n\n```javascript\nconst serverless = require('serverless-http');\nconst Koa = require('koa');\nconst config = require('./ssmConfig');\n\nconst app = new Koa();\n// ... app middleware setup ...\n\n// Lambda handler\nconst handler = serverless(app);\nexports.handler = async (event, context) => {\n    await config.initializeConfig(\n        process.env.SSM_PARAMETER_KMS_KEY || 'alias/ssm-parameter-key'\n    );\n    return handler(event, context);\n};\n\n// Local development server\nif (!process.env.LAMBDA_TASK_ROOT && require.main === module) {\n    const port = process.env.PORT || 3000;\n    app.listen(port, async () => {\n        await config.initializeConfig();\n        console.log(`Server running on http://localhost:${port}`);\n    });\n}\n```\n\nThis pattern ensures the configuration is initialized before handling any requests, whether running in Lambda or locally.\n\n## API\n\n### Configuration Map\n\nThe `configMap` defines your configuration schema:\n\n```javascript\n{\n    CONFIG_KEY: {\n        envVar: 'ENVIRONMENT_VARIABLE_NAME',     // Required: environment variable name\n        fallbackSSM: '/ssm/parameter/path',      // Optional: SSM parameter path to use if env var not set\n        fallbackStatic: 'default value',         // Optional: static fallback if neither env var nor SSM available\n        type: 'string' | 'int' | 'bool'         // Required: expected type of the value\n    }\n}\n```\n\n### Methods\n\n#### `config.initializeConfig(kmsKeyId, options)`\n\nAsynchronously initializes the configuration. This should be called once at the start of your application.\n\n- `kmsKeyId`: (Optional) KMS key ID or alias for decryption of SSM parameters. Can be specified as either:\n  - A key ID: `\"1234abcd-12ab-34cd-56ef-1234567890ab\"`\n  - A key alias: `\"alias/my-custom-key\"`\n- `options`: (Optional) Configuration options object:\n  - `quiet`: (boolean) When true, suppresses detailed parameter output and only shows a summary. Default: false.\n  - `timeout`: (number) Custom timeout in milliseconds for AWS SSM API calls. Default: 8000 (8 seconds). Note: This applies per retry attempt, with 3 total attempts.\n\n### Controlling Log Verbosity\n\nThere are two ways to control logging verbosity:\n\n#### 1. Quiet Mode (per-initialization)\nUse the `quiet` option to suppress details for a specific initialization:\n\n```javascript\n// Suppress detailed output for this initialization only\nawait config.initializeConfig(null, { quiet: true });\n// Output: Config loaded: 2 from env, 3 from ssm (total initialization time: 456ms)\n\n// Normal verbose output\nawait config.initializeConfig();\n// Output: Full details including each parameter\n```\n\n#### 2. LOG_LEVEL Environment Variable (global)\nUse the standard `LOG_LEVEL` environment variable for application-wide control:\n\n```bash\nexport LOG_LEVEL=error  # Only errors\nexport LOG_LEVEL=warn   # Warnings and errors\nexport LOG_LEVEL=info   # Standard output (default)\nexport LOG_LEVEL=debug  # Detailed output including all parameters\nexport LOG_LEVEL=silent # No output at all\n```\n\nExample outputs:\n\n```javascript\n// With quiet mode (regardless of LOG_LEVEL)\nawait config.initializeConfig(null, { quiet: true });\n// Output: Config loaded: 2 from env, 3 from ssm, 1 from default (total initialization time: 456ms)\n\n// Without quiet mode + LOG_LEVEL=info (default)\nawait config.initializeConfig();\n// Output:\n// Config loaded: 2 from env, 3 from ssm, 1 from default (total initialization time: 456ms)\n// Loaded configuration values:\n//   DB_HOST: (string) (15 characters) (ssm)\n//   DB_PORT: (int) (4 digits) (env)\n//   DEBUG_MODE: (bool) (default)\n\n// Without quiet mode + LOG_LEVEL=debug\nawait config.initializeConfig();\n// Output:\n// Starting configuration initialization...\n// Fetching batch 1/1 (5 parameters)\n// Batch 1/1 completed in 234ms (5 found, 0 not found) \n// Config loaded: 2 from env, 3 from ssm, 1 from default (total initialization time: 456ms)\n// Loaded configuration values:\n//   DB_HOST: (string) (15 characters) (ssm)\n//   DB_PORT: (int) (4 digits) (env)\n//   DEBUG_MODE: (bool) (default)\n// Configuration initialization completed successfully\n```\n\n**When to use each approach:**\n- Use `quiet: true` for **component-level override** - keeps SSM config minimal regardless of application LOG_LEVEL\n- Use `LOG_LEVEL` to control verbosity application-wide\n\n**Component-Level Override Behavior:**\nWhen `quiet: true` is used, it overrides `LOG_LEVEL` for SSM config:\n- ✅ **Always shows**: Summary, warnings, and errors (critical information)  \n- ❌ **Never shows**: Debug logs, info logs, parameter details (noise)\n\nThis allows you to have `LOG_LEVEL=debug` for your application while keeping SSM config initialization clean and minimal.\n\nExample with custom timeout:\n```javascript\nawait config.initializeConfig(null, { timeout: 60000 }); // 60 second timeout\n```\n\n#### `config.SOME_CONFIG_KEY`\n\nAccess configuration values directly as properties of the config object. Will throw an error if accessed before initialization (unless the value has a `fallbackStatic` defined).\n\n### Environment Variable Precedence\n\nThe configuration system always respects the current state of environment variables, even after initialization:\n\n- **Environment variables always take precedence** over SSM parameters and static fallbacks\n- If you modify an environment variable at any time after initialization, the updated value will be used\n- This allows for runtime overrides of configuration values\n- SSM parameters are only fetched once during initialization and then cached\n- This behavior ensures maximum flexibility while maintaining performance\n\nExample of dynamic environment variable update:\n```javascript\nconst config = require('./ssmConfig');\n\n// Initialize with SSM fallback\nconfig.configMap = {\n  API_URL: { envVar: 'API_URL', fallbackSSM: '/my-app/api-url', type: 'string' }\n};\n\nawait config.initializeConfig();\nconsole.log(config.API_URL); // Value from SSM\n\n// Override at runtime\nprocess.env.API_URL = 'https://new-api-endpoint.com';\nconsole.log(config.API_URL); // Will show the new value: 'https://new-api-endpoint.com'\n```\n\n### Value Types\n\nThe configuration supports four types of values:\n- `string`: String values (default)\n- `int`: Integer values (converted using parseInt)\n- `float`: Floating-point values (converted using parseFloat)\n- `bool`: Boolean values (converted from strings):\n  - `true` values: 'true' or '1'\n  - `false` values: 'false' or '0'\n  - Any other values will throw an error\n\nInvalid types (such as 'boolean' instead of 'bool') will cause an error to be thrown during initialization.\n\n### Robustness and Timeout Protection\n\nThe library implements comprehensive timeout and error handling to prevent hanging:\n\n**Default Timeouts (Optimized for API Gateway):**\n- AWS SSM API calls: 8 seconds per attempt (configurable)\n- AWS Lambda Extensions API calls: 3 seconds (fixed)\n- Maximum total time: 24 seconds (3 attempts × 8s)\n- **Why 24 seconds?** AWS API Gateway has a 29-second hard limit. Our timeouts ensure your application can return its own error response rather than being cut off with a 504 Gateway Timeout.\n\n**About Lambda Extensions API:**\nThe \"Lambda Extensions API\" refers to the AWS Parameters and Secrets Lambda Extension - a local caching layer that runs at `localhost:2773` within Lambda environments. This is NOT about general Lambda function timeouts. When running in Lambda, the library will:\n1. First try the Extensions API (3-second timeout) for faster, cached parameter access\n2. If unavailable or times out, automatically fall back to direct SSM API calls\n3. Log the fallback clearly so you know what's happening\n\n**Built-in Protection Features:**\n- All AWS SSM calls have automatic timeout protection (8s per attempt)\n- AWS SDK automatically retries failed requests (3 total attempts with exponential backoff)\n- Total worst-case time: ~24 seconds (stays under API Gateway's 29-second limit)\n- Leaves 5-second buffer for your application to return a proper error response\n- Parallel fetching with concurrency limits (max 3 concurrent requests when using KMS)\n- Graceful degradation when SSM is unavailable\n- Clear logging at each failure point for debugging\n\n**Strategic Logging (Reduced Verbosity):**\nThe library uses smart logging to reduce noise while preserving debugging capability:\n- **Normal operations are quiet** - successful fetches aren't logged individually\n- **Slow operations are flagged** - any fetch taking >1 second is logged\n- **Errors include timing** - all failures show elapsed time for diagnosis\n- **Batch progress shown** - for visibility during multi-parameter fetches\n- **Total time in summary** - always shows overall initialization time\n\nThis approach eliminates duplicate logging while ensuring you have full visibility when things go wrong.\n\n**Large Parameter Sets (40+ parameters):**\nThe library efficiently handles applications with many SSM parameters:\n- Automatically batches requests (10 parameters per API call)\n- For 40 parameters: 4 batch calls, typically completes in ~1 second\n- With KMS encryption: Parallel fetching in groups of 3\n- No artificial delays - optimized for Lambda cold starts\n- Clear progress indicators: \"Batch 3/5 (10 parameters)\" (shown with LOG_LEVEL=debug)\n- Handles throttling reactively if it occurs\n\nExample output with timing information:\n\n**Normal operation:**\n```\nStarting configuration initialization...\nFetching batch 1/2 (10 parameters)\nBatch 1/2 completed in 234ms (10 found, 0 not found)\nConfig loaded: 2 from env, 8 from ssm, 2 from default (total initialization time: 456ms)\n```\n\n**Lambda environment with Extensions API fallback:**\n```\nStarting configuration initialization...\nAttempting to fetch 5 parameters via Lambda Extensions API\nLambda Extensions API timeout for parameter /app/db-host after 3001ms (limit: 3000ms) - falling back to direct SSM API\nLambda Extensions API unavailable or parameter not found - switching to direct SSM API calls\nFetching 5 parameters via direct SSM API calls\nBatch fetch completed: 5 parameters retrieved, 0 failed (total time: 3234ms)\nConfig loaded: 1 from env, 5 from ssm (total initialization time: 3235ms)\n```\n\nIf you experience hanging issues, the timing logs will help identify whether the problem is:\n- Lambda Extensions API unavailable (immediate fallback to SSM)\n- Network connectivity issues (network errors)\n- AWS service issues (timeouts after 8s per attempt)\n- Throttling (explicit throttling errors with immediate identification)\n- Slow but successful responses (long elapsed times but under timeout)\n- API Gateway timeout risk (total time approaching 24s)\n\n### Environment Detection\n\nThe package automatically detects if it's running in a Lambda environment and will:\n1. First attempt to use the Lambda Extensions API (localhost:2773)\n2. Fall back to batch SSM API calls if the Extensions API is not available\n\n### Caching\n\n- SSM parameter values are loaded once at initialization and cached\n- Environment variables are always checked at runtime and take precedence\n- No additional API calls to SSM are made after initialization\n\n## AWS Lambda Support\n\nWhen running in an AWS Lambda environment, the package will automatically detect and use the AWS Parameters and Secrets Lambda Extension if available. This extension provides a local HTTP endpoint that allows Lambda functions to retrieve parameters more efficiently without making direct AWS API calls. If the extension is not available, the package will automatically fall back to using the standard SSM API.\n\n### Optional: Using the Lambda Layer\n\nIf you'd like to take advantage of the improved performance offered by the AWS Parameters and Secrets Lambda Extension, you can add it to your Lambda function in one of two ways:\n\n#### Using the Lambda Layer (for standard Lambda functions)\n\n1. Open the AWS Lambda console and navigate to your function\n2. In the \"Layers\" section, click \"Add a layer\"\n3. Choose \"AWS layers\" and select \"AWS-Parameters-and-Secrets-Lambda-Extension\"\n4. Choose the appropriate version for your region and add the layer\n\n#### Using Container Images\n\nIf you're using container images for your Lambda functions, you can optionally install the AWS Parameters and Secrets Lambda Extension in your Dockerfile:\n\n```dockerfile\nFROM public.ecr.aws/lambda/nodejs:20\n\n# Optional: Install the AWS Parameters and Secrets Lambda Extension\nRUN yum install -y unzip && \\\n    curl -O https://s3.amazonaws.com/aws-paramstore-secrets-lambda-extension/latest/linux-amd64/aws-paramstore-secrets-lambda-extension.zip && \\\n    unzip aws-paramstore-secrets-lambda-extension.zip -d /opt && \\\n    rm aws-paramstore-secrets-lambda-extension.zip\n\n# Copy your application code\nCOPY . ${LAMBDA_TASK_ROOT}\n\n# Install dependencies\nRUN npm install\n\n# Set the CMD to your handler\nCMD [ \"index.handler\" ]\n```\n\nNote: The extension is completely optional. If not present, the package will automatically fall back to using batch SSM API calls, which still provides good performance for most use cases.\n\n## Testing\n\nThis package includes a comprehensive test suite using Jest. The tests interact with real AWS SSM parameters to ensure everything works as expected.\n\n### Test Requirements\n\nTo run the tests, you need:\n\n1. AWS credentials with permissions to:\n   - Create and delete SSM parameters\n   - Create SecureString parameters\n   - Use KMS for encryption/decryption\n\n2. A KMS key alias `alias/ssm-parameter-key` that can be used for parameter encryption\n   ```bash\n   # Create a KMS key and alias if you don't have one\n   aws kms create-key --description \"SSM Parameter Encryption Key\"\n   aws kms create-alias --alias-name alias/ssm-parameter-key --target-key-id <key-id>\n   ```\n\n3. AWS region set via environment variable:\n   ```bash\n   export AWS_REGION=us-east-1\n   ```\n\n### Running Tests\n\n```bash\n# Run tests\n# Tests use live AWS resources, so set your profile\nexport AWS_PROFILE=your-profile-name\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Run tests with coverage report\nnpm run test:coverage\n```\n\nThe test suite:\n- Creates test parameters in SSM\n- Tests environment variable loading\n- Tests SSM parameter fetching (String and SecureString)\n- Tests custom KMS key encryption\n- Tests type conversion\n- Tests error handling\n- Cleans up test parameters on successful completion\n\n## Publishing to NPM\n\n```bash\n# depends on ~/.npmrc\n\n# update version number in package.json and then ...\nnpm publish --access public\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}