-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Description
I noticed that $env can be modeled equally well using $param if the user passes process.env in their criteria. I propose that in v6 we remove $env and encourage users to explicitly pass the environment as criteria if that is their intention. I am in favor of this change because it simplifies the API, and encourages the store to not rely on any implicit/global state.
I just made a small alteration to allow $coerce to work with $param to generate this example:
Before (with $env)
const store = new Confidence.Store({
server: {
host: 'localhost',
port: {
$env: 'PORT',
$coerce: 'number',
$default: 3000
},
debug: {
$filter: { $env: 'NODE_ENV' },
$default: {
log: ['error'],
request: ['error']
},
production: {
request: ['implementation']
}
}
}
});
const config = store.get('/');After (with $param)
const store = new Confidence.Store({
server: {
host: 'localhost',
port: {
$param: 'PORT',
$coerce: 'number',
$default: 3000
},
debug: {
$filter: 'NODE_ENV',
$default: {
log: ['error'],
request: ['error']
},
production: {
request: ['implementation']
}
}
}
});
const config = store.get('/', process.env);