yaml.ts 875 B

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