UNPKG

@builder.io/mitosis

Version:

Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io

51 lines (50 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stableJSONserialize = void 0; /** * Same as JSON.stringify, but sorts keys ensuring that the output is stable across runs. * @param obj * @returns JSON serialized string */ function stableJSONserialize(obj) { const output = []; _serialize(output, obj); return output.join(''); } exports.stableJSONserialize = stableJSONserialize; function _serialize(output, obj) { if (obj == null) { output.push('null'); } else if (typeof obj === 'object') { if (Array.isArray(obj)) { output.push('['); let sep = ''; for (let i = 0; i < obj.length; i++) { output.push(sep); _serialize(output, obj[i]); sep = ','; } output.push(']'); } else { const keys = Object.keys(obj).sort(); output.push('{'); let sep = ''; for (const key of keys) { const value = obj[key]; if (value !== undefined) { output.push(sep); output.push(JSON.stringify(key)); output.push(':'); _serialize(output, value); sep = ','; } } output.push('}'); } } else { output.push(JSON.stringify(obj)); } }