Options.ts 788 B

1234567891011121314151617181920212223242526272829303132
  1. import { IOptions } from "./interfaces/IOptions";
  2. import { IOptionsPreset } from "./interfaces/IOptionsPreset";
  3. import { OptionsNormalizer } from "./OptionsNormalizer";
  4. import { DEFAULT_PRESET } from "./preset-options/DefaultPreset";
  5. export class Options implements IOptions {
  6. /**
  7. * @type {IOptionsPreset}
  8. */
  9. private options: IOptionsPreset;
  10. /**
  11. * @param options
  12. */
  13. constructor (options: IOptionsPreset) {
  14. this.options = Object.freeze(
  15. OptionsNormalizer.normalizeOptionsPreset(
  16. Object.assign({}, DEFAULT_PRESET, options)
  17. )
  18. );
  19. }
  20. /**
  21. * @param optionName
  22. * @returns {T}
  23. */
  24. public get <T> (optionName: string): T {
  25. return <T> this.options[optionName];
  26. }
  27. }