https://github.com/vitalets/flat-options
One-level options with default values and validation
https://github.com/vitalets/flat-options
assign defaults extend javascript merge nodejs options
Last synced: about 2 months ago
JSON representation
One-level options with default values and validation
- Host: GitHub
- URL: https://github.com/vitalets/flat-options
- Owner: vitalets
- Created: 2017-10-10T10:31:34.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-10-11T08:12:31.000Z (almost 8 years ago)
- Last Synced: 2025-02-28T05:29:03.290Z (7 months ago)
- Topics: assign, defaults, extend, javascript, merge, nodejs, options
- Language: JavaScript
- Size: 111 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# flat-options
[](https://travis-ci.org/vitalets/flat-options)
[](https://www.npmjs.com/package/flat-options)
[](https://www.npmjs.com/package/flat-options)> One-level options with default values and validation
Utility function to merge simple one-level options with default values and perform validation.
## Comparison to `Object.assign`
Benefits over `Object.assign` are:* exclude of `undefined` values (useful for conditional options):
```js
const defaults = {foo: 'bar'};
const options = {foo: undefined};Object.assign({}, defaults, options); // -> {foo: undefined}
// vs
flatOptions(options, defaults); // -> {foo: 'bar'}
```
* validation of options keys:
```js
const defaults = {foo: 'bar'};
const options = {unknown: 'baz'};Object.assign({}, defaults, options); // -> {foo: 'bar', unknown: 'baz'}
// vs
flatOptions(options, defaults); // -> throws error "Unknown option"!
```
## Comparison to other packages
Benefits over existing [defaults](https://www.npmjs.com/package/defaults),
[lodash.defaults](https://www.npmjs.com/package/lodash.defaults) and
[object.defaults](https://www.npmjs.com/package/object.defaults) are:* auto-validation of options keys
* zero dependencies> Note that this package is only for **one-level** options, for nested ones please use alternative packages
## Installation
```bash
npm install --save flat-options
```## Usage
```js
import flatOptions from 'flat-options';const defaults = {
a: 1,
b: false
};class Foo {
constructor(options) {
this._options = flatOptions(options, defaults);
}
}const foo = new Foo({a: 2}); // foo._options will be {a: 2, b: false}
```## License
MIT @ [Vitaliy Potapov](https://github.com/vitalets)