UNPKG

noon

Version:
225 lines (218 loc) 22.5 kB
// koffee 1.19.0 /* 0000000 000000000 00000000 000 000 000 0000000 000 00000000 000 000 000 000 000 000 000 0000 000 000 000 000 000 000 0000000 000 0000000 000 000 0 000 000 0000 000 000000 00000 000 000 000 000 000 000 0000 000 000 000 000 000 0000000 000 000 000 000 000 000 0000000 000 000 000 */ var defaults, pad, regs, stringify, hasProp = Object.hasOwn, indexOf = [].indexOf; defaults = { ext: '.noon', indent: 4, align: true, maxalign: 32, sort: false, circular: false, "null": false, colors: false }; regs = { url: new RegExp('^(https?|git|file)(://)(\\S+)$'), path: new RegExp('^([\\.\\/\\S]+)(\\/\\S+)$'), semver: new RegExp('\\d+\\.\\d+\\.\\d+') }; pad = function(s, l) { while (s.length < l) { s += ' '; } return s; }; stringify = function(obj, options) { var cs, def, escape, indstr, opt, pretty, s, toStr; if (options == null) { options = {}; } def = function(o, d) { var k, r, v; r = {}; for (k in o) { v = o[k]; r[k] = v; } for (k in d) { v = d[k]; if (r[k] == null) { r[k] = v; } } return r; }; opt = def(options, defaults); if (opt.ext === '.json') { cs = JSON.stringify(obj, null, opt.indent); if (opt.colors) { return require('klor').syntax({ text: cs, ext: opt.ext }); } else { return cs; } } if (typeof opt.indent === 'string') { opt.indent = opt.indent.length; } indstr = pad('', opt.indent); escape = function(k, arry) { var es, ref, ref1, sp; if (0 <= k.indexOf('\n')) { sp = k.split('\n'); es = sp.map(function(s) { return escape(s, arry); }); es.unshift('...'); es.push('...'); return es.join('\n'); } if (k === '' || k === '...' || ((ref = k[0]) === ' ' || ref === '#' || ref === '|') || ((ref1 = k[k.length - 1]) === ' ' || ref1 === '#' || ref1 === '|')) { k = '|' + k + '|'; } else if (arry && /\ \ /.test(k)) { k = '|' + k + '|'; } return k; }; pretty = function(o, ind, visited) { var j, k, keyValue, kl, l, len, maxKey, ref, v; if (opt.align) { maxKey = opt.indent; if (Object.keys(o).length > 1) { for (k in o) { if (!hasProp(o, k)) continue; v = o[k]; kl = parseInt(Math.ceil((k.length + 2) / opt.indent) * opt.indent); maxKey = Math.max(maxKey, kl); if (opt.maxalign && (maxKey > opt.maxalign)) { maxKey = opt.maxalign; break; } } } } l = []; keyValue = function(k, v) { var i, ks, s, vs; s = ind; k = escape(k, true); if (k.indexOf(' ') > 0 && k[0] !== '|') { k = "|" + k + "|"; } else if (k[0] !== '|' && k[k.length - 1] === '|') { k = '|' + k; } else if (k[0] === '|' && k[k.length - 1] !== '|') { k += '|'; } if (opt.align) { ks = pad(k, Math.max(maxKey, k.length + 2)); i = pad(ind + indstr, maxKey); } else { ks = pad(k, k.length + 2); i = ind + indstr; } s += ks; vs = toStr(v, i, false, visited); if (vs[0] === '\n') { while (s[s.length - 1] === ' ') { s = s.substr(0, s.length - 1); } } s += vs; while (s[s.length - 1] === ' ') { s = s.substr(0, s.length - 1); } return s; }; if (opt.sort) { ref = Object.keys(o).sort(); for (j = 0, len = ref.length; j < len; j++) { k = ref[j]; l.push(keyValue(k, o[k])); } } else { for (k in o) { if (!hasProp(o, k)) continue; v = o[k]; l.push(keyValue(k, v)); } } return l.join('\n'); }; toStr = function(o, ind, arry, visited) { var ref, ref1, s, t, v; if (ind == null) { ind = ''; } if (arry == null) { arry = false; } if (visited == null) { visited = []; } if (o == null) { if (o === null) { return opt["null"] || arry && "null" || ''; } if (o === void 0) { return "undefined"; } return '<?>'; } switch (t = typeof o) { case 'string': return escape(o, arry); case 'object': if (opt.circular) { if (indexOf.call(visited, o) >= 0) { return '<v>'; } visited.push(o); } if (((ref = o.constructor) != null ? ref.name : void 0) === 'Array') { s = ind !== '' && arry && '.' || ''; if (o.length && ind !== '') { s += '\n'; } s += ((function() { var j, len, results; results = []; for (j = 0, len = o.length; j < len; j++) { v = o[j]; results.push(ind + toStr(v, ind + indstr, true, visited)); } return results; })()).join('\n'); } else if (((ref1 = o.constructor) != null ? ref1.name : void 0) === 'RegExp') { return o.source; } else { s = (arry && '.\n') || ((ind !== '') && '\n' || ''); s += pretty(o, ind, visited); } return s; default: return String(o); } return '<???>'; }; s = toStr(obj); if (opt.colors) { s = require('klor').syntax({ text: s, ext: 'noon' }); } return s; }; module.exports = stringify; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6Ii4uL2NvZmZlZSIsInNvdXJjZXMiOlsic3RyaW5naWZ5LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7O0FBQUEsSUFBQSw4QkFBQTtJQUFBOzs7QUFRQSxRQUFBLEdBQ0k7SUFBQSxHQUFBLEVBQVUsT0FBVjtJQUNBLE1BQUEsRUFBVSxDQURWO0lBRUEsS0FBQSxFQUFVLElBRlY7SUFHQSxRQUFBLEVBQVUsRUFIVjtJQUlBLElBQUEsRUFBVSxLQUpWO0lBS0EsUUFBQSxFQUFVLEtBTFY7SUFNQSxDQUFBLElBQUEsQ0FBQSxFQUFVLEtBTlY7SUFPQSxNQUFBLEVBQVUsS0FQVjs7O0FBVUosSUFBQSxHQUNJO0lBQUEsR0FBQSxFQUFRLElBQUksTUFBSixDQUFXLGdDQUFYLENBQVI7SUFDQSxJQUFBLEVBQVEsSUFBSSxNQUFKLENBQVcsMkJBQVgsQ0FEUjtJQUVBLE1BQUEsRUFBUSxJQUFJLE1BQUosQ0FBVyxvQkFBWCxDQUZSOzs7QUFJSixHQUFBLEdBQU0sU0FBQyxDQUFELEVBQUksQ0FBSjtBQUNGLFdBQU0sQ0FBQyxDQUFDLE1BQUYsR0FBVyxDQUFqQjtRQUNJLENBQUEsSUFBSztJQURUO1dBRUE7QUFIRTs7QUFLTixTQUFBLEdBQVksU0FBQyxHQUFELEVBQU0sT0FBTjtBQUVSLFFBQUE7O1FBRmMsVUFBUTs7SUFFdEIsR0FBQSxHQUFNLFNBQUMsQ0FBRCxFQUFHLENBQUg7QUFDRixZQUFBO1FBQUEsQ0FBQSxHQUFJO0FBQ0osYUFBQSxNQUFBOztZQUNJLENBQUUsQ0FBQSxDQUFBLENBQUYsR0FBTztBQURYO0FBRUEsYUFBQSxNQUFBOztZQUNJLElBQWdCLFlBQWhCO2dCQUFBLENBQUUsQ0FBQSxDQUFBLENBQUYsR0FBTyxFQUFQOztBQURKO2VBRUE7SUFORTtJQVFOLEdBQUEsR0FBTSxHQUFBLENBQUksT0FBSixFQUFhLFFBQWI7SUFRTixJQUFHLEdBQUcsQ0FBQyxHQUFKLEtB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T0FBMUI7b0JBQ0ksQ0FBQSxHQUFJLEdBQUEsS0FBSyxFQUFMLElBQVksSUFBWixJQUFxQixHQUFyQixJQUE0QjtvQkFDaEMsSUFBYSxDQUFDLENBQUMsTUFBRixJQUFhLEdBQUEsS0FBSyxFQUEvQjt3QkFBQSxDQUFBLElBQUssS0FBTDs7b0JBQ0EsQ0FBQSxJQUFLOztBQUFDOzZCQUFBLG1DQUFBOzt5Q0FBQSxHQUFBLEdBQUksS0FBQSxDQUFNLENBQU4sRUFBUSxHQUFBLEdBQUksTUFBWixFQUFtQixJQUFuQixFQUF3QixPQUF4QjtBQUFKOzt3QkFBRCxDQUFpRCxDQUFDLElBQWxELENBQXVELElBQXZELEVBSFQ7aUJBQUEsTUFJSywwQ0FBZ0IsQ0FBRSxjQUFmLEtBQXVCLFFBQTFCO0FBQ0QsMkJBQU8sQ0FBQyxDQUFDLE9BRFI7aUJBQUEsTUFBQTtvQkFHRCxDQUFBLEdBQUksQ0FBQyxJQUFBLElBQVMsS0FBVixDQUFBLElBQW9CLENBQUMsQ0FBQyxHQUFBLEtBQU8sRUFBUixDQUFBLElBQWdCLElBQWhCLElBQXdCLEVBQXpCO29CQUN4QixDQUFBLElBQUssTUFBQSxDQUFPLENBQVAsRUFBVSxHQUFWLEVBQWUsT0FBZixFQUpKOztBQUtMLHVCQUFPO0FBcEJmO0FBc0JRLHVCQUFPLE1BQUEsQ0FBTyxDQUFQO0FBdEJmO0FBdUJBLGVBQU87SUFoQ0g7SUFrQ1IsQ0FBQSxHQUFJLEtBQUEsQ0FBTSxHQUFOO0lBQ0osSUFBRyxHQUFHLENBQUMsTUFBUDtRQUNJLENBQUEsR0FBSSxPQUFBLENBQVEsTUFBUixDQUFlLENBQUMsTUFBaEIsQ0FBdUI7WUFBQSxJQUFBLEVBQUssQ0FBTDtZQUFRLEdBQUEsRUFBSSxNQUFaO1NBQXZCLEVBRFI7O1dBRUE7QUFsSlE7O0FBb0paLE1BQU0sQ0FBQyxPQUFQLEdBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiIyMjXG4gMDAwMDAwMCAgMDAwMDAwMDAwICAwMDAwMDAwMCAgIDAwMCAgMDAwICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgMDAwMDAwMDAgIDAwMCAgIDAwMFxuMDAwICAgICAgICAgIDAwMCAgICAgMDAwICAgMDAwICAwMDAgIDAwMDAgIDAwMCAgMDAwICAgICAgICAwMDAgIDAwMCAgICAgICAgMDAwIDAwMCBcbjAwMDAwMDAgICAgICAwMDAgICAgIDAwMDAwMDAgICAgMDAwICAwMDAgMCAwMDAgIDAwMCAgMDAwMCAgMDAwICAwMDAwMDAgICAgICAwMDAwMCAgXG4gICAgIDAwMCAgICAgMDAwICAgICAwMDAgICAwMDAgIDAwMCAgMDAwICAwMDAwICAwMDAgICAwMDAgIDAwMCAgMDAwICAgICAgICAgIDAwMCAgIFxuMDAwMDAwMCAgICAgIDAwMCAgICAgMDAwICAgMDAwICAwMDAgIDAwMCAgIDAwMCAgIDAwMDAwMDAgICAwMDAgIDAwMCAgICAgICAgICAwMDAgICBcbiMjI1xuXG5kZWZhdWx0cyA9XG4gICAgZXh0OiAgICAgICcubm9vbicgIyBvdXRwdXQgZm9ybWF0XG4gICAgaW5kZW50OiAgIDQgICAgICAgIyBudW1iZXIgb2Ygc3BhY2VzIHBlciBpbmRlbnQgbGV2ZWxcbiAgICBhbGlnbjogICAgdHJ1ZSAgICAjIHZlcnRpY2FsbHkgYWxpZ24gb2JqZWN0IHZhbHVlc1xuICAgIG1heGFsaWduOiAzMiAgICAgICMgbWF4aW1hbCBudW1iZXIgb2Ygc3BhY2VzIHdoZW4gYWxpZ25pbmdcbiAgICBzb3J0OiAgICAgZmFsc2UgICAjIHNvcnQgb2JqZWN0IGtleXMgYWxwaGFiZXRpY2FsbHlcbiAgICBjaXJjdWxhcjogZmFsc2UgICAjIGNoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIChleHBlbnNpdmUhKVxuICAgIG51bGw6ICAgICBmYWxzZSAgICMgb3V0cHV0IG51bGwgZGljdGlvbmFyeSB2YWx1ZXNcbiAgICBjb2xvcnM6ICAgZmFsc2UgICAjIGNvbG9yaXplIG91dHB1dCB3aXRoIGFuc2kgY29sb3JzXG4gICAgICAgICAgICAgICAgICAgICAgIyB0cnVlIGZvciBkZWZhdWx0IGNvbG9ycyBvciBjdXN0b20gZGljdGlvbmFyeVxuICAgIFxucmVncyA9IFxuICAgIHVybDogICAgbmV3IFJlZ0V4cCAnXihodHRwcz98Z2l0fGZpbGUpKDovLykoXFxcXFMrKSQnXG4gICAgcGF0aDogICBuZXcgUmVnRXhwICdeKFtcXFxcLlxcXFwvXFxcXFNdKykoXFxcXC9cXFxcUyspJCdcbiAgICBzZW12ZXI6IG5ldyBSZWdFeHAgJ1xcXFxkK1xcXFwuXFxcXGQrXFxcXC5cXFxcZCsnXG5cbnBhZCA9IChzLCBsKSAtPiBcbiAgICB3aGlsZSBzLmxlbmd0aCA8IGxcbiAgICAgICAgcyArPSAnICdcbiAgICBzXG4gICAgXG5zdHJpbmdpZnkgPSAob2JqLCBvcHRpb25zPXt9KSAtPlxuXG4gICAgZGVmID0gKG8sZCkgLT5cbiAgICAgICAgciA9IHt9XG4gICAgICAgIGZvciBrLHYgb2Ygb1xuICAgICAgICAgICAgcltrXSA9IHZcbiAgICAgICAgZm9yIGssdiBvZiBkXG4gICAgICAgICAgICByW2tdID0gdiBpZiBub3QgcltrXT9cbiAgICAgICAgclxuXG4gICAgb3B0ID0gZGVmIG9wdGlvbnMsIGRlZmF1bHRzXG4gICAgXG4gICAgIyAgICAgICAwMDAgICAwMDAwMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMFxuICAgICMgICAgICAgMDAwICAwMDAgICAgICAgMDAwICAgMDAwICAwMDAwICAwMDBcbiAgICAjICAgICAgIDAwMCAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwIDAgMDAwXG4gICAgIyAwMDAgICAwMDAgICAgICAgMDAwICAwMDAgICAwMDAgIDAwMCAgMDAwMFxuICAgICMgIDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgICAwMDAgICAwMDBcbiAgICAgICAgXG4gICAgaWYgb3B0LmV4dCA9PSAnLmpzb24nXG4gICAgICAgIGNzID0gSlNPTi5zdHJpbmdpZnkgb2JqLCBudWxsLCBvcHQuaW5kZW50XG4gICAgICAgIGlmIG9wdC5jb2xvcnNcbiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKCdrbG9yJykuc3ludGF4IHRleHQ6Y3MsIGV4dDpvcHQuZXh0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBjc1xuICAgIFxuICAgIGlmIHR5cGVvZiBvcHQuaW5kZW50ID09ICdzdHJpbmcnIFxuICAgICAgICBvcHQuaW5kZW50ID0gb3B0LmluZGVudC5sZW5ndGhcbiAgICAgICAgXG4gICAgaW5kc3RyID0gcGFkICcnIG9wdC5pbmRlbnRcbiAgICAgICAgICAgIFxuICAgICMgMDAwMDAwMDAgICAwMDAwMDAwICAgMDAwMDAwMCAgIDAwMDAwMDAgICAwMDAwMDAwMCAgIDAwMDAwMDAwXG4gICAgIyAwMDAgICAgICAgMDAwICAgICAgIDAwMCAgICAgICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgICBcbiAgICAjIDAwMDAwMDAgICAwMDAwMDAwICAgMDAwICAgICAgIDAwMDAwMDAwMCAgMDAwMDAwMDAgICAwMDAwMDAwIFxuICAgICMgMDAwICAgICAgICAgICAgMDAwICAwMDAgICAgICAgMDAwICAgMDAwICAwMDAgICAgICAgIDAwMCAgICAgXG4gICAgIyAwMDAwMDAwMCAgMDAwMDAwMCAgICAwMDAwMDAwICAwMDAgICAwMDAgIDAwMCAgICAgICAgMDAwMDAwMDBcblxuICAgIGVzY2FwZSA9IChrLCBhcnJ5KSAtPlxuICAgICAgICBpZiAwIDw9IGsuaW5kZXhPZiAnXFxuJ1xuICAgICAgICAgICAgc3AgPSBrLnNwbGl0ICdcXG4nXG4gICAgICAgICAgICBlcyA9IHNwLm1hcCAocykgLT4gZXNjYXBlKHMsIGFycnkpXG4gICAgICAgICAgICBlcy51bnNoaWZ0ICcuLi4nXG4gICAgICAgICAgICBlcy5wdXNoICcuLi4nXG4gICAgICAgICAgICByZXR1cm4gZXMuam9pbiAnXFxuJ1xuICAgICAgICBpZiBrID09ICcnIG9yIGsgPT0gJy4uLicgb3Iga1swXSBpbiBbJyAnICcjJyAnfCddIG9yIGtbay5sZW5ndGgtMV0gaW4gWycgJyAnIycgJ3wnXSBcbiAgICAgICAgICAgIGsgPSAnfCcgKyBrICsgJ3wnXG4gICAgICAgIGVsc2UgaWYgYXJyeSBhbmQgL1xcIFxcIC8udGVzdCBrXG4gICAgICAgICAgICBrID0gJ3wnICsgayArICd8J1xuICAgICAgICBrXG4gICAgXG4gICAgIyAwMDAwMDAwMCAgIDAwMDAwMDAwICAgMDAwMDAwMDAgIDAwMDAwMDAwMCAgMDAwMDAwMDAwICAwMDAgICAwMDBcbiAgICAjIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAgICAgICAgMDAwICAgICAgICAwMDAgICAgICAwMDAgMDAwIFxuICAgICMgMDAwMDAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgICAgICAwMDAgICAgICAgIDAwMCAgICAgICAwMDAwMCAgXG4gICAgIyAwMDAgICAgICAgIDAwMCAgIDAwMCAgMDAwICAgICAgICAgIDAwMCAgICAgICAgMDAwICAgICAgICAwMDAgICBcbiAgICAjIDAwMCAgICAgICAgMDAwICAgMDAwICAwMDAwMDAwMCAgICAgMDAwICAgICAgICAwMDAgICAgICAgIDAwMCAgIFxuICAgIFxuICAgIHByZXR0eSA9IChvLCBpbmQsIHZpc2l0ZWQpIC0+XG4gICAgICAgIFxuICAgICAgICBpZiBvcHQuYWxpZ24gICAgICAgIFxuICAgICAgICAgICAgbWF4S2V5ID0gb3B0LmluZGVudFxuICAgICAgICAgICAgaWYgT2JqZWN0LmtleXMobykubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIGZvciBvd24gayx2IG9mIG9cbiAgICAgICAgICAgICAgICAgICAga2wgPSBwYXJzZUludChNYXRoLmNlaWwoKGsubGVuZ3RoKzIpL29wdC5pbmRlbnQpKm9wdC5pbmRlbnQpXG4gICAgICAgICAgICAgICAgICAgIG1heEtleSA9IE1hdGgubWF4IG1heEtleSwga2xcbiAgICAgICAgICAgICAgICAgICAgaWYgb3B0Lm1heGFsaWduIGFuZCAobWF4S2V5ID4gb3B0Lm1heGFsaWduKVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4S2V5ID0gb3B0Lm1heGFsaWduXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICBsID0gW11cbiAgICAgICAgXG4gICAgICAgIGtleVZhbHVlID0gKGssdikgLT5cbiAgICAgICAgICAgIHMgPSBpbmRcbiAgICAgICAgICAgIGsgPSBlc2NhcGUgaywgdHJ1ZVxuICAgICAgICAgICAgaWYgay5pbmRleE9mKCcgICcpID4gMCBhbmQga1swXSAhPSAnfCdcbiAgICAgICAgICAgICAgICBrID0gXCJ8I3trfXxcIlxuICAgICAgICAgICAgZWxzZSBpZiBrWzBdICE9ICd8JyBhbmQga1trLmxlbmd0aC0xXSA9PSAnfCdcbiAgICAgICAgICAgICAgICBrID0gJ3wnICsga1xuICAgICAgICAgICAgZWxzZSBpZiBrWzBdID09ICd8JyBhbmQga1trLmxlbmd0aC0xXSAhPSAnfCdcbiAgICAgICAgICAgICAgICBrICs9ICd8J1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiBvcHQuYWxpZ25cbiAgICAgICAgICAgICAgICBrcyA9IHBhZCBrLCBNYXRoLm1heCBtYXhLZXksIGsubGVuZ3RoKzJcbiAgICAgICAgICAgICAgICBpICA9IHBhZCBpbmQraW5kc3RyLCBtYXhLZXlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBrcyA9IHBhZCBrLCBrLmxlbmd0aCsyXG4gICAgICAgICAgICAgICAgaSAgPSBpbmQraW5kc3RyXG4gICAgICAgICAgICBzICs9IGtzXG4gICAgICAgICAgICB2cyA9IHRvU3RyIHYsIGksIGZhbHNlLCB2aXNpdGVkXG4gICAgICAgICAgICBpZiB2c1swXSA9PSAnXFxuJ1xuICAgICAgICAgICAgICAgIHdoaWxlIHNbcy5sZW5ndGgtMV0gPT0gJyAnXG4gICAgICAgICAgICAgICAgICAgIHMgPSBzLnN1YnN0ciAwLCBzLmxlbmd0aC0xICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgcyArPSB2c1xuICAgICAgICAgICAgd2hpbGUgc1tzLmxlbmd0aC0xXSA9PSAnICdcbiAgICAgICAgICAgICAgICBzID0gcy5zdWJzdHIgMCwgcy5sZW5ndGgtMVxuICAgICAgICAgICAgc1xuXG4gICAgICAgIGlmIG9wdC5zb3J0XG4gICAgICAgICAgICBmb3IgayBpbiBPYmplY3Qua2V5cyhvKS5zb3J0KClcbiAgICAgICAgICAgICAgICBsLnB1c2gga2V5VmFsdWUgaywgb1trXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBmb3Igb3duIGssdiBvZiBvXG4gICAgICAgICAgICAgICAgbC5wdXNoIGtleVZhbHVlIGssIHZcbiAgICAgICAgICAgIFxuICAgICAgICBsLmpvaW4gJ1xcbidcblxuICAgICMgMDAwMDAwMDAwICAgMDAwMDAwMCAgICAwMDAwMDAwICAwMDAwMDAwMDAgIDAwMDAwMDAwIFxuICAgICMgICAgMDAwICAgICAwMDAgICAwMDAgIDAwMCAgICAgICAgICAwMDAgICAgIDAwMCAgIDAwMFxuICAgICMgICAgMDAwICAgICAwMDAgICAwMDAgIDAwMDAwMDAgICAgICAwMDAgICAgIDAwMDAwMDAgIFxuICAgICMgICAgMDAwICAgICAwMDAgICAwMDAgICAgICAgMDAwICAgICAwMDAgICAgIDAwMCAgIDAwMFxuICAgICMgICAgMDAwICAgICAgMDAwMDAwMCAgIDAwMDAwMDAgICAgICAwMDAgICAgIDAwMCAgIDAwMFxuICAgIFxuICAgIHRvU3RyID0gKG8sIGluZD0nJywgYXJyeT1mYWxzZSwgdmlzaXRlZD1bXSkgLT5cbiAgICAgICAgXG4gICAgICAgIGlmIG5vdCBvPyBcbiAgICAgICAgICAgIGlmIG8gPT0gbnVsbFxuICAgICAgICAgICAgICAgIHJldHVybiBvcHQubnVsbCBvciBhcnJ5IGFuZCBcIm51bGxcIiBvciAnJ1xuICAgICAgICAgICAgaWYgbyA9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgcmV0dXJuICc8Pz4nXG4gICAgICAgICAgICBcbiAgICAgICAgc3dpdGNoIHQgPSB0eXBlb2Ygb1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB3aGVuICdzdHJpbmcnIFxuICAgICAgICAgICAgICAgIHJldHVybiBlc2NhcGUgbywgYXJyeVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgd2hlbiAnb2JqZWN0J1xuICAgICAgICAgICAgICAgIGlmIG9wdC5jaXJjdWxhclxuICAgICAgICAgICAgICAgICAgICBpZiBvIGluIHZpc2l0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHY+J1xuICAgICAgICAgICAgICAgICAgICB2aXNpdGVkLnB1c2ggb1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiBvLmNvbnN0cnVjdG9yPy5uYW1lID09ICdBcnJheSdcbiAgICAgICAgICAgICAgICAgICAgcyA9IGluZCE9JycgYW5kIGFycnkgYW5kICcuJyBvciAnJ1xuICAgICAgICAgICAgICAgICAgICBzICs9ICdcXG4nIGlmIG8ubGVuZ3RoIGFuZCBpbmQhPScnXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gKGluZCt0b1N0cih2LGluZCtpbmRzdHIsdHJ1ZSx2aXNpdGVkKSBmb3IgdiBpbiBvKS5qb2luICdcXG4nXG4gICAgICAgICAgICAgICAgZWxzZSBpZiBvLmNvbnN0cnVjdG9yPy5uYW1lID09ICdSZWdFeHAnXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNvdXJjZVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcyA9IChhcnJ5IGFuZCAnLlxcbicpIG9yICgoaW5kICE9ICcnKSBhbmQgJ1xcbicgb3IgJycpXG4gICAgICAgICAgICAgICAgICAgIHMgKz0gcHJldHR5IG8sIGluZCwgdmlzaXRlZFxuICAgICAgICAgICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyBvXG4gICAgICAgIHJldHVybiAnPD8/Pz4nXG5cbiAgICBzID0gdG9TdHIgb2JqXG4gICAgaWYgb3B0LmNvbG9yc1xuICAgICAgICBzID0gcmVxdWlyZSgna2xvcicpLnN5bnRheCB0ZXh0OnMsIGV4dDonbm9vbidcbiAgICBzXG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5naWZ5XG4iXX0= //# sourceURL=../coffee/stringify.coffee