@raven-crypto/raven-config v0.1.12
raven-config
Dynamic configuration variable storage.
🚨 ALWAYS PULL BEFORE MAKING CHANGES! Pushing to
mainwithout pulling may lead to merge conflicts.🚨 Do not change version in
package.json! The deploy bot automatically does it for you.
Contribution
Steps for contributing: 1. Create a feature branch 2. Push your code to your feature branch 3. Create a Pull Request on GitHub
Please contribute to thie repo with either of the following:
- Reusable functions
- Universally applicable constants
Publishing to NPM
Config is a stable repository and changes only ever need to be made in the data folder.
Underlying code changes will require manual publishing to NPM. To publish:
- Push a commit up to
mainwith a new version number. - Run
yarn buildlocally to build the source. - Run
npm publishlocally to publish the package.
Creating Config Variables
Navigate to your chosen service (i.e.
raven-api) under the environment you're wishing to add your variable to from within the data directory.Create a new file within the service's folder with no extension with the exact name of your variable (i.e.
/data/staging/raven-api/max_retry_count).Repeat for development, staging, and production folders. If you would like to add a fallback value in case no environment is specified, add it to default.
Your variable name will be its relative path from the environment directory, except with
.replacing/. For instance, a variable at/data/staging/raven-api/max_retry_countwill be accessed viaraven-api.max_retry_count.
Using Config Variables
Install:
yarn add @raven-crypto/raven-configImport the
Configclass as follows.import Config from '@raven-crypto/raven-config'`Initialize it with an access token and an environment. Defaults environment to
default.const config = new Config('abcdefghijklmnop', 'production')Retrieve a config variable via the
configobject.// The second parameter is the default value if the config variable cannot be retrieved. // The third parameter is the duration to cache a non-empty result before trying again. const maxRetryCount = await config.getNumber('raven-api.max_retry_count', 3, CACHE_DURATION.LONG)