@raven-crypto/raven-config v0.1.12
raven-config
Dynamic configuration variable storage.
🚨 ALWAYS PULL BEFORE MAKING CHANGES! Pushing to
main
without 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
main
with a new version number. - Run
yarn build
locally to build the source. - Run
npm publish
locally 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_count
will be accessed viaraven-api.max_retry_count
.
Using Config Variables
Install:
yarn add @raven-crypto/raven-config
Import the
Config
class 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
config
object.// 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)