All files Options.js

100% Statements 12/12
87.5% Branches 7/8
100% Functions 4/4
100% Lines 12/12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41    45x               360x 360x 1x     359x 1077x         477x       1x             1636x 1401x   1636x 1060x        
import RouterError from './RouterError.js';
 
const baseDefaultOptions = {
    caseSensitive: false,
    trailingSlashSensitive: false,
    dataConsistency: true
};
 
export default class Options {
    constructor (rawOptions, errorData) {
        rawOptions = rawOptions || {};
        if (typeof rawOptions !== 'object') {
            this._handleTypeError(errorData);
        }
 
        for (let b in baseDefaultOptions) {
            Options.setBooleanOption(this, b, rawOptions, this._getDefaultOptions(), true);
        }
    }
 
    _getDefaultOptions () {
        return baseDefaultOptions;
    }
 
    _handleTypeError (errorData) {
        throw new RouterError(RouterError.INVALID_INPUT_TYPE, Object.assign({
            entity: 'options',
            type: 'plain object'
        }, errorData));
    }
 
    static setBooleanOption (object, optionName, rawOptions, fallbackOptions) {
        if (!rawOptions.hasOwnProperty(optionName)) {
            rawOptions = fallbackOptions;
        }
        if (rawOptions.hasOwnProperty(optionName)) {
            object[optionName] = !!rawOptions[optionName];
        }
    }
}