yamlEncoder.ts 909 B

123456789101112131415161718192021222324252627282930313233343536
  1. import {dump, load} from 'js-yaml';
  2. import {AnyJson} from "~/types/data";
  3. import {Encoder} from "~/types/interfaces";
  4. /**
  5. * Encodage / décodage de données au format Yaml
  6. */
  7. class YamlEncoder implements Encoder {
  8. // TODO: voir si toujours utile de le garder? ou peut-être en faire un YamlUtils et ajouter la fonction 'readFile'
  9. // utilisée dans le abilityBuilder
  10. /**
  11. * Convertit l'objet suivant au format Yaml
  12. *
  13. * @param {AnyJson} data
  14. * @return {AnyJson}
  15. */
  16. public encode (data: AnyJson): string {
  17. return dump(data)
  18. }
  19. /**
  20. * Parse une chaine de caractères au format Yaml et
  21. * retourne son équivalent sous forme d'objet
  22. *
  23. * @param {AnyJson} data
  24. * @return {AnyJson}
  25. */
  26. public decode (data: string): AnyJson | null {
  27. if (!data) {
  28. return null
  29. }
  30. return load(data) as AnyJson
  31. }
  32. }
  33. export default new YamlEncoder()