import { get, type MaybeRef } from '@vueuse/core'; import JSON5 from 'json5'; export { sortObjectKeys, formatJson }; function sortObjectKeys(obj: T): T { if (typeof obj !== 'object' || obj === null) { return obj; } if (Array.isArray(obj)) { return obj.map(sortObjectKeys) as T; } return Object.keys(obj) .sort() .reduce((sortedObj, key) => { sortedObj[key] = sortObjectKeys((obj as Record)[key]); return sortedObj; }, {} as Record) as T; } function formatJson({ rawJson, sortKeys = true, indentSize = 3, }: { rawJson: MaybeRef; sortKeys?: MaybeRef; indentSize?: MaybeRef; }) { const parsedObject = JSON5.parse(get(rawJson)); return JSON.stringify(get(sortKeys) ? sortObjectKeys(parsedObject) : parsedObject, null, get(indentSize)); }