import { type MaybeRef, get } 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 unknown 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)); }