Home Reference Source Repository

src/config/yaml-config.js

'use strict';

const AbstractConfig = require('./abstract-config');
const yamlReader = require('yaml-js');
const yamlWriter = require('yamljs');

/**
 * YAML configuration manager
 */
class YamlConfig extends AbstractConfig {
  /**
   * @param {string} rawConfig
   *
   * @returns {Promise}
   */
  decode(rawConfig) {
    try {
      return Promise.resolve(yamlReader.load(rawConfig));
    } catch (error) {
      return Promise.reject(error);
    }
  }
  
  /**
   * @param {*} config
   *
   * @returns {Promise}
   */
  encode(config) {
    try {
      return Promise.resolve(yamlWriter.stringify(
        config, 
        YamlConfig.INLINE_DEPTH, 
        YamlConfig.INDENTATION
      ));
    } catch (error) {
      return Promise.reject(error);
    }
  }
  
  /**
   * @returns {number}
   */
  static get INLINE_DEPTH() {
    return 8;
  }
  
  /**
   * @returns {number}
   */
  static get INDENTATION() {
    return 2;
  }
}

module.exports = YamlConfig;