All files Options.ts

100% Statements 5/5
100% Branches 0/0
100% Functions 2/2
100% Lines 5/5
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      1x   1x   1x                   4x                       37x      
import { IOptions } from "./interfaces/IOptions";
import { IObfuscatorOptions } from "./interfaces/IObfuscatorOptions";
 
import { OptionsNormalizer } from "./OptionsNormalizer";
 
import { DEFAULT_PRESET } from "./preset-options/DefaultPreset";
 
export class Options implements IOptions {
    /**
     * @type {IObfuscatorOptions}
     */
    private options: IObfuscatorOptions;
 
    /**
     * @param options
     */
    constructor (options: IObfuscatorOptions) {
        this.options = Object.freeze(
            OptionsNormalizer.normalizeOptionsPreset(
                Object.assign({}, DEFAULT_PRESET, options)
            )
        );
    }
 
    /**
     * @param optionName
     * @returns {T}
     */
    public get <T> (optionName: string): T {
        return this.options[optionName];
    }
}