{"_id":"@adikari/config-store","_rev":"2-041503881571fa7de5250315b6840106","name":"@adikari/config-store","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.1":{"name":"@adikari/config-store","version":"1.0.1","description":"Read configuration from config stores","main":"index.js","scripts":{"test":"jest --coverage","lint":"eslint ."},"engines":{"node":">=10.x"},"keywords":["aws ssm","aws parameter store","config manager","aws dynamodb","aws secrets manager","secrets manager"],"repository":{"url":"git+https://github.com/adikari/utilities.git","type":"git"},"author":{"name":"Subash Adhikari","email":"me@subash.com.au"},"license":"MIT","dependencies":{"bluebird":"^3.5.3","dataloader":"^1.4.0","lodash.chunk":"^4.2.0","lodash.flatten":"^4.4.0","lodash.get":"^4.4.2"},"devDependencies":{"aws-sdk":"^2.398.0","eslint":"^7.16.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.3.0","eslint-plugin-promise":"^4.2.1","jest":"^22.4.2"},"peerDependencies":{"aws-sdk":"~2.0.0"},"publishConfig":{"access":"public"},"gitHead":"38de1e39fd9a6ac2df5b9e207082069e439b8bfb","bugs":{"url":"https://github.com/adikari/utilities/issues"},"homepage":"https://github.com/adikari/utilities#readme","_id":"@adikari/config-store@1.0.1","_nodeVersion":"12.20.0","_npmVersion":"lerna/3.22.1/node@v12.20.0+x64 (linux)","dist":{"integrity":"sha512-Klh3P58W7KFIwI8LmwMDwlhJ/9ndBsh341EmNeKPxG2s+lRJS/fPGxlVuSm7u4XJDItJhLdv9FwiKmRRTyQMZQ==","shasum":"c8b88bebf1f5e1287f8f51225f11d5b54a28ee48","tarball":"https://registry.npmjs.org/@adikari/config-store/-/config-store-1.0.1.tgz","fileCount":22,"unpackedSize":21738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7I4wCRA9TVsSAnZWagAAf1IQAI+4Xz6+ct1SEZImasOB\nUSwrJ2P7J6AKFcnBEWRT2vPGVopWnam+iiMRQAdVAcvk63px79RjhvTXQX/W\ncw8HXSZMTIyRogazO+JOFdeIRRy77Bmh95zr8rTERAwKvXeYuqJ/NxPHyVyk\nf1/3DhOTLFQc3kyst1IRx8a6lVqn3+KXJBI8TItGg5qvojv2qwP0p88wNGP9\nFYOPor4YEh3UA0lnFJfWPLOd1UwPoVSxIh/9o5OU2exFN9WcANTYPIyFckKm\nmTZw3ykBxjR4rc3LY/KlfzH6NIaj1Ew+YzhOF9gdTaClnmP0KRtzPcC6SoiX\nis1vi+e2RZ05PXZn/vYCs6LmnFslSTFIWGYYVJcY65a0aXy6ts7UObpuz3+v\n4MzzUApQNy8/ELkTJMJI7+K0uOCu+GwUOR2RNPS0Yww6BnDW2K6x+lPgLxjL\nzTXl3kTip86UkcyJ3zptCb+1FFmebBkCSExC/cfBdZuS6zxWxpFASMDVJ64J\nTQhihZHOmye7eY33O3TfHv6sq5CTmNqovOISEtoLVW1EjYewae6FLGc6CGno\nY7YSVEWIk7oDO5l2Ezgl32vCAtRzdYXEPxYKTy5SNAbPD/LqXq1vf1SgimK+\n1hi9B0PLp01jqY2EH2kzPbdHtTdo9RY+uATUtjvfrOePVTanVcOIwKkdO4h6\neJrK\r\n=8Kkt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDas4nJdcsXvEeO98ExOyHLubgUJMVFNSiYpf4sGM6dEAIgU4II+foKhZbMel4O+WyQuQCinrdJKrUKhgflil5mWDY="}]},"_npmUser":{"name":"adikari","email":"subash.adhikari@acloud.guru"},"directories":{},"maintainers":[{"name":"adikari","email":"subash.adhikari@acloud.guru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/config-store_1.0.1_1609338416198_0.9068657980640007"},"_hasShrinkwrap":false},"1.0.2":{"name":"@adikari/config-store","version":"1.0.2","description":"Read configuration from config stores","main":"index.js","types":"./types.d.ts","scripts":{"test":"jest --coverage","lint":"eslint ."},"engines":{"node":">=10.x"},"keywords":["aws ssm","aws parameter store","config manager","aws dynamodb","aws secrets manager","secrets manager"],"repository":{"url":"git+https://github.com/adikari/utilities.git","type":"git"},"author":{"name":"Subash Adhikari","email":"me@subash.com.au"},"license":"MIT","dependencies":{"bluebird":"^3.5.3","dataloader":"^1.4.0","lodash.chunk":"^4.2.0","lodash.flatten":"^4.4.0","lodash.get":"^4.4.2"},"devDependencies":{"aws-sdk":"^2.398.0","eslint":"^7.16.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^3.3.0","eslint-plugin-promise":"^4.2.1","jest":"^22.4.2"},"peerDependencies":{"aws-sdk":"~2.0.0"},"publishConfig":{"access":"public"},"gitHead":"4de5499d64a09937e2049d08fe0771ec9069fada","bugs":{"url":"https://github.com/adikari/utilities/issues"},"homepage":"https://github.com/adikari/utilities#readme","_id":"@adikari/config-store@1.0.2","_nodeVersion":"14.19.0","_npmVersion":"lerna/3.22.1/node@v14.19.0+x64 (linux)","dist":{"integrity":"sha512-9mjHhr0qPoekKdHZF+4UJc9eCO3s96Kksf4pfewhNwcPnwVNbRHuSBkt5HjUm2XzbAZggNDQGzXD5P2bvGVZzQ==","shasum":"47a6b1fb5b612e9d914c845eceab498c1c16d423","tarball":"https://registry.npmjs.org/@adikari/config-store/-/config-store-1.0.2.tgz","fileCount":23,"unpackedSize":22220,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7V5duXcciHrVpA2zwWsUIn5RP4YsF8scuNwPMjGGAQwIgfVUZDTrf+Apg/UBiKman3JUXIEGRPpfxB/HLypwNe8w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRqqHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6yQ//SyVDX5Tfp0gye7CRPpPOxpzSQcVE5mw5YPXW+6o5OJBfBS4I\r\n9w3klemDxKEgtN7kDlNdVfseNG1Eo8bNG0BUv3oLpoAy5jn0zYt0zufHH8Um\r\nyMEAx5QGze5l52QJf9AbznseGBFY7N7f9dp3a5HS7luQm/DJqye79W6BUcyj\r\ndDAzUX//AsFoqH/Ze2OAYp696UPsKcXxMofa3gFZXrOseizQOX4X5/VqyGCB\r\nH/W2ziwPp55vJPwflJPBUjXjbQ6wTWdTmvXWiZHjsGf8u16L9OmTIFCPm/lA\r\nyT5o2DQlCddvaT2Lr7gkwx4ePDb3VnJyR65GltMmjJ9psMfuJFq0VIPRcVMq\r\nqG4JlITvEVTQNpwrHWad/xTToacNLDIFEc/nAy8CEfdRF1mfI9tqRW0LRhBE\r\nfwZukg94ZWdu0APDFCBMRJld7s1o+L+XC++UmGWzrvnJv2kZRQwbdSHwkLL3\r\nI66KV9BoahimtLew7CVo/Q2ed5F4kI+uSEidzX4M3pPG0kX1dtbUt5r8r+Zi\r\nWcr9CUIcb3ook6bFGYUZP0FClsKDUGxZ3WsJj4IlbWynlbfb0magnTwO8ksX\r\nKWR8DSn30nnfyBn2BgYQL+vuaGgmyMTYrFLjxZjXCx85frGifpDEMXdPgDtX\r\nuvHGN6xVmRSVMieDMRAVMvWQRPpCR4EKwwc=\r\n=C6d9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"adikari","email":"subash.adhikari@acloud.guru"},"directories":{},"maintainers":[{"name":"adikari","email":"subash.adhikari@acloud.guru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/config-store_1.0.2_1648798343537_0.5121754711326036"},"_hasShrinkwrap":false}},"time":{"created":"2020-12-30T14:26:56.161Z","1.0.1":"2020-12-30T14:26:56.330Z","modified":"2022-04-04T11:30:08.165Z","1.0.2":"2022-04-01T07:32:23.712Z"},"maintainers":[{"name":"adikari","email":"subash.adhikari@acloud.guru"}],"description":"Read configuration from config stores","homepage":"https://github.com/adikari/utilities#readme","keywords":["aws ssm","aws parameter store","config manager","aws dynamodb","aws secrets manager","secrets manager"],"repository":{"url":"git+https://github.com/adikari/utilities.git","type":"git"},"author":{"name":"Subash Adhikari","email":"me@subash.com.au"},"bugs":{"url":"https://github.com/adikari/utilities/issues"},"license":"MIT","readme":"# Parameter Store Reader\n\nReads parameters from specified provider\n\n## Installation\n\n```\n# Via yarn\n$ yarn add @adikari/config-store\n\n# Via npm\n$ npm install @adikari/config-store\n```\n\n\n## Examples\n\n### SSM Provider\nAdd IAM policy to allow getting parameters from ssm.\n\n```yml\nprovider:\n  name: aws\n  iamRoleStatements:\n    - Effect: Allow\n      Action:\n        - ssm:GetParameters # Allow Parameter Store to be read\n      Resource:\n        - arn:aws:ssm:${env:AWS_REGION}:${env:AWS_ACCOUNT_ID}:parameter/staging/foo-service/*\n```\n```js\nconst { makeConfigStore } = require('@adikari/config-store');\nconst { STAGE } = process.env;\n\nconst configStore = makeConfigStore({\n  configPath: `/${SERVICE_STAGE}/foo-service/config`,\n  secretPath: `/${SERVICE_STAGE}/foo-service/secret`,\n  provider: {\n    name: 'ssm'\n  }\n});\n\nreturn Promise.all([\n  configStore.getConfigs([\n    'THE_CONFIG_1',\n    'THE_CONFIG_2'\n  ]),\n  configStore.getSecrets([\n    'THE_SECRET_1'\n  ])\n])\n.then(([configs, secrets]) => ({ ...configs, ...secrets }))\n.then(console.log);\n\n/* console.log output\n{\n  THE_CONFIG_1: 'the config 1',\n  THE_CONFIG_2: 'the config 2',\n  THE_SECRET_1: 'the secret 1'\n};\n*/\n```\n\n### DynamoDB Provider\nAdd IAM policy to allow getting parameters from dynamodb.\n\n```yml\nprovider:\n  name: aws\n  iamRoleStatements:\n    - Effect: Allow\n      Action:\n        - dynamodb:Query # Allow Parameter Store to be read\n      Resource:\n        - arn:aws:dynamodb:${env:AWS_REGION}:${env:AWS_ACCOUNT_ID}:table/config-service*\n```\n```js\nconst { makeConfigStore } = require('@adikari/config-store');\nconst { STAGE } = process.env;\n\nconst configStore = makeConfigStore({\n  configPath: `/${SERVICE_STAGE}/foo-service/config`,\n  secretPath: `/${SERVICE_STAGE}/foo-service/secret`,\n  provider: {\n    tableName: `config-service-${SERVICE_STAGE}`\n  }\n});\n\nreturn Promise.all([\n  configStore.getConfigs([\n    'THE_CONFIG_1',\n    'THE_CONFIG_2'\n  ]),\n  configStore.getSecrets([\n    'THE_SECRET_1'\n  ])\n])\n.then(([configs, secrets]) => ({ ...configs, ...secrets }))\n.then(console.log);\n\n/* console.log output\n{\n  THE_CONFIG_1: 'the config 1',\n  THE_CONFIG_2: 'the config 2',\n  THE_SECRET_1: 'the secret 1'\n};\n*/\n```\n\n","readmeFilename":"README.md"}