'use strict'; const sjs = require('./sjs'); /** * escape json * for output json in script */ function sanitizeKey(obj) { if (typeof obj !== 'object') return obj; if (Array.isArray(obj)) return obj; if (obj === null) return null; if (obj instanceof Boolean) return obj; if (obj instanceof Number) return obj; if (obj instanceof Buffer) return obj.toString(); for (const k in obj) { const escapedK = sjs(k); if (escapedK !== k) { obj[escapedK] = sanitizeKey(obj[k]); obj[k] = undefined; } else { obj[k] = sanitizeKey(obj[k]); } } return obj; } function jsonEscape(obj) { return JSON.stringify(sanitizeKey(obj), function(k, v) { if (typeof v === 'string') { return sjs(v); } return v; }); } module.exports = jsonEscape;