config manager based on Joi schema with subscription capabilities
npm install @logzio-node-toolbox/configjavascript
import { Config } from '@logzio-node-toolbox/config';const schema = {}; // Joi schema or array of Joi schemas (in case or array will merge the schemas)
const defaults = {}; // defaults to override the schema defaults (use to pass defaults per region or environment)
const overrides = {}; // configs that could never be override even when try to set (usually environment variables)
const config = new Config({ schema, defaults, overrides });
`$3
use path to fetch nested value, if empty will fetch the all config
`javascript
const value = config.get('path.to.value');
`$3
use path in key property to set nested values, if empty will mergeDeep from rootonError - callback for when validation error with the schema, if onError return true will continue with the merge config even if not valid
`javascript
config.set({ value: {}, key = 'path.to.set', onError: (err) => {
console.log(err)
return true;
} })
`$3
onChange - callback to invoke when value changed
if key is empty will watch all configreturn unSubscribe method
`javascript
const unSubscribe = config.subscribe({ key: 'path.to.value.to.watch', onChange: (value) => {
console.log("new value:", value);
}})unSubscribe(); // stop watching value
``