diff --git a/src/tools/yaml-viewer/yaml-models.ts b/src/tools/yaml-viewer/yaml-models.ts index 9ab30431..9160255e 100644 --- a/src/tools/yaml-viewer/yaml-models.ts +++ b/src/tools/yaml-viewer/yaml-models.ts @@ -1,37 +1,24 @@ import { type MaybeRef, get } from '@vueuse/core'; -import JSON5 from 'json5'; +import yaml from "js-yaml"; -export { sortObjectKeys, formatYaml }; - -function sortObjectKeys(obj: T): T { - if (typeof obj !== 'object' || obj === null) { - return obj; - } - - if (Array.isArray(obj)) { - return obj.map(sortObjectKeys) as unknown as T; - } - - return Object.keys(obj) - .sort((a, b) => a.localeCompare(b)) - .reduce((sortedObj, key) => { - sortedObj[key] = sortObjectKeys((obj as Record)[key]); - return sortedObj; - }, {} as Record) as T; -} +export { formatYaml }; function formatYaml({ rawYaml, sortKeys = false, - stripComments = false, - indentSize = 3, + indentSize = 2, }: { rawYaml: MaybeRef sortKeys?: MaybeRef stripComments?: MaybeRef indentSize?: MaybeRef }) { - const parsedObject = JSON5.parse(get(rawYaml)); + const parsedYaml = yaml.load(get(rawYaml)); - return JSON.stringify(get(sortKeys) ? sortObjectKeys(parsedObject) : parsedObject, null, get(indentSize)); + const formattedYAML = yaml.dump(parsedYaml, { + indent: get(indentSize), + sortKeys: get(sortKeys) + }); + + return formattedYAML } diff --git a/src/tools/yaml-viewer/yaml-viewer.vue b/src/tools/yaml-viewer/yaml-viewer.vue index d2c216b1..4541030f 100644 --- a/src/tools/yaml-viewer/yaml-viewer.vue +++ b/src/tools/yaml-viewer/yaml-viewer.vue @@ -11,9 +11,8 @@ const inputElement = ref(); const rawYaml = useStorage('yaml-prettify:raw-yaml', ''); const indentSize = useStorage('yaml-prettify:indent-size', 2); const sortKeys = useStorage('yaml-prettify:sort-keys', false); -const stripComments = useStorage('yaml-prettify:strip-comments', false); -const cleanYaml = computed(() => withDefaultOnError(() => formatYaml({ rawYaml: rawYaml, indentSize, sortKeys, stripComments }), '')); +const cleanYaml = computed(() => withDefaultOnError(() => formatYaml({ rawYaml: rawYaml, indentSize, sortKeys }), '')); const rawYamlValidation = useValidation({ source: rawYaml, @@ -32,11 +31,8 @@ const rawYamlValidation = useValidation({ - - - - + @@ -60,7 +56,7 @@ const rawYamlValidation = useValidation({ /> - +