import { read } from 'yaml-import'
import { AnyJson } from '~/types/interfaces'
import BaseDenormalizer from '~/services/serializer/denormalizer/baseDenormalizer'
import { DENORMALIZER_TYPE } from '~/types/enums'
const yaml = require('js-yaml')

/**
 * Classe permettant d'assurer la dénormalization d'un fichier JSON en JSON
 */
class Yaml extends BaseDenormalizer {
  static support (type: DENORMALIZER_TYPE): boolean {
    return type === DENORMALIZER_TYPE.YAML
  }

  /**
   * Parse un fichier Yaml pour en retourner son équivalent en Json
   *
   * @param {AnyJson} data
   * @return {AnyJson}
   */
  public static denormalize (data: AnyJson): AnyJson {
    try {
      return yaml.load(yaml.dump(read(data.path)))
    } catch (e) {
      throw new Error(e.message)
    }
  }
}

export default Yaml
