optioner
Process and validate options for your module.
Specify a deeply-merged set of hapijs joi rules and defaults to
process options provided to your module.
Users of your module can quickly debug issues as they get immediate
feedback on configuration issues, and you can provide a user friendly
set of defaults.
This provides essentially the same behavior as
lodash.defaultsDeep, but also
gives you validation, and more intelligent array handling (per element
control).
You can use joi rules directly, or literal values, which are
translated into rules of the form: Joi.<type>().default(<value>)
where type is the type of the value.
Quick Example
var Optioner = require('optioner')
var check = Optioner({beatles: 4}).check
console.log(check({stones: 5}))
var optioner = Optioner({
color: 'red',
size: Joi.number().integer().max(5).min(1).default(3),
range: [100, 200]
})
var promise = optioner({size: 2})
promise
.then(console.log)
console.log(promise.value)
optioner({}, function (err, out) {
console.log(out)
})
optioner({range: [50]}, function (err, out) {
console.log(out)
})
optioner({size: 6}, function (err, out) {
console.log(err)
})
Options
Optioner({ ... spec ... }, { ... options ... }})
- allow_unknown:
true|false
, default true
; allow unknown properties - must_match_literals:
true|false
, default false
; force exact matches of literal values
Dependencies
Questions?
@rjrodger
License
Copyright (c) 2016, Richard Rodger and other contributors.
Licensed under MIT.