yaml.ts 813 B

12345678910111213141516171819202122232425262728293031
  1. import { read } from 'yaml-import'
  2. import { AnyJson } from '~/types/interfaces'
  3. import BaseDenormalizer from '~/services/serializer/denormalizer/baseDenormalizer'
  4. import { DENORMALIZER_TYPE } from '~/types/enums'
  5. import {dump, load} from 'js-yaml';
  6. /**
  7. * Classe permettant d'assurer la dénormalization d'un fichier JSON en JSON
  8. */
  9. class Yaml extends BaseDenormalizer {
  10. static support (type: DENORMALIZER_TYPE): boolean {
  11. return type === DENORMALIZER_TYPE.YAML
  12. }
  13. /**
  14. * Parse un fichier Yaml pour en retourner son équivalent en Json
  15. *
  16. * @param {AnyJson} data
  17. * @return {AnyJson}
  18. */
  19. public static denormalize (data: AnyJson): AnyJson {
  20. try {
  21. return load(dump(read(data.path))) as AnyJson
  22. } catch (e) {
  23. throw new Error(e.message)
  24. }
  25. }
  26. }
  27. export default Yaml