Comparing version
@@ -80,3 +80,3 @@ "use strict"; | ||
stringify: function stringify(args, cfg) { | ||
var print = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _stringify.configure(cfg); | ||
var print = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : cfg.print || _stringify.configure(cfg); | ||
return args.map(function (arg) { | ||
@@ -365,2 +365,2 @@ return typeof arg === 'string' ? arg : print(arg); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBWixFQUFrQyxhQUFLO0FBQUUsa0JBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsS0FBaEIsQ0FBc0IsUUFBdEIsQ0FBZ0MsQ0FBaEMsRUFBb0MsUUFBUSxJQUFSLENBQWMsQ0FBZDtBQUFrQixTQUEvRjtBQUNBLGVBQU8sSUFBUDtBQUNIO0FBckNPLENBN0ZBLENBQVo7O0FBcUlBOztBQUVBLEtBQUssS0FBTCxDQUFXLE9BQVgsQ0FBb0IsaUJBQVM7QUFBQTs7QUFFekIsUUFBSSxPQUFKLG1EQUVTLEtBRlQsZ0JBRVMsS0FGVCxxQkFFUyxLQUZULG9CQUVtQjtBQUFFLGVBQU8sS0FBSyxTQUFMLENBQWdCLEVBQUUsV0FBVztBQUFBLHVCQUFTLE1BQU0sR0FBTixDQUFXLEtBQUssS0FBTCxDQUFYLENBQVQ7QUFBQSxhQUFiLEVBQWhCLENBQVA7QUFBeUUsS0FGOUY7QUFJSCxDQU5EOztBQVFBOztBQUVBLE9BQU8sT0FBUCxHQUFpQixHQUFqQjs7QUFFQSIsImZpbGUiOiJvbG9sb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBPICAgICAgICAgICAgICAgICA9IE9iamVjdFxuICAgICwgU3RhY2tUcmFjZXkgICAgICAgPSByZXF1aXJlICgnc3RhY2t0cmFjZXknKVxuICAgICwgYW5zaSAgICAgICAgICAgICAgPSByZXF1aXJlICgnYW5zaWNvbG9yJylcbiAgICAsIGJ1bGxldCAgICAgICAgICAgID0gcmVxdWlyZSAoJ3N0cmluZy5idWxsZXQnKVxuICAgICwgcGlwZXogICAgICAgICAgICAgPSByZXF1aXJlICgncGlwZXonKVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSAoJ3N0cmluZy5pZnknKS5jb25maWd1cmUgKHtcblxuICAgIGZvcm1hdHRlciAoeCwgc3RyaW5naWZ5KSB7XG5cbiAgICAgICAgaWYgKCh4IGluc3RhbmNlb2YgRXJyb3IpICYmICEodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgeFtTeW1ib2wuZm9yICgnU3RyaW5nLmlmeScpXSkpIHtcblxuICAgICAgICAgICAgaWYgKHN0cmluZ2lmeS5zdGF0ZS5kZXB0aCA+IDApIHJldHVybiBgPEVycm9yOiAke3gubWVzc2FnZX0+YCAvLyBwcmV2ZW50cyB1bndhbnRlZCBwcmV0dHkgcHJpbnRpbmcgZm9yIEVycm9ycyB0aGF0IGFyZSBwcm9wZXJ0aWVzIG9mIGNvbXBsZXggb2JqZWN0c1xuXG4gICAgICAgICAgICBjb25zdCBpbmRlbnQgICAgICAgID0gJyAgICAnXG4gICAgICAgICAgICAgICAgLCB3aHkgICAgICAgICAgID0gc3RyaW5naWZ5LmxpbWl0ICgoeC5tZXNzYWdlIHx8ICcnKS5yZXBsYWNlICgvXFxyfFxcbi9nLCAnJykudHJpbSAoKSwgc3RyaW5naWZ5LnN0YXRlLm1heEVycm9yTWVzc2FnZUxlbmd0aCB8fCAxMjApXG4gICAgICAgICAgICAgICAgLCBzdGFjayAgICAgICAgID0gbmV3IFN0YWNrVHJhY2V5ICh4KS5wcmV0dHlcbiAgICAgICAgICAgICAgICAsIHN0YWNrSW5kZW50ZWQgPSBzdGFjay5zcGxpdCAoJ1xcbicpLm1hcCAoeCA9PiBpbmRlbnQgKyB4KS5qb2luICgnXFxuJylcbiAgICAgICAgICAgICAgICAsIGlzQXNzZXJ0aW9uID0gKCdhY3R1YWwnIGluIHgpICYmICgnZXhwZWN0ZWQnIGluIHgpXG4gICAgICAgICAgICAgICAgLCB0eXBlICAgICAgICA9IHguY29uc3RydWN0b3IubmFtZSB8fCAnRXJyb3InXG5cbiAgICAgICAgICAgIGlmIChpc0Fzc2VydGlvbikge1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyID0gc3RyaW5naWZ5LmNvbmZpZ3VyZSAoeyBtYXhTdHJpbmdMZW5ndGg6IE51bWJlci5NQVhfVkFMVUUsIG1heERlcHRoOiA4IH0pXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbCAgID0gYnVsbGV0IChpbmRlbnQgKyAnYWN0dWFsOiAgICcsIHN0ciAoeC5hY3R1YWwpKVxuICAgICAgICAgICAgICAgICAgLCBleHBlY3RlZCA9IGJ1bGxldCAoaW5kZW50ICsgJ2V4cGVjdGVkOiAnLCBzdHIgKHguZXhwZWN0ZWQpKVxuXG4gICAgICAgICAgICAgICAgaWYgKChhY3R1YWwuc3BsaXQgKCdcXG4nKS5sZW5ndGggPiAxKSB8fCAoZXhwZWN0ZWQuc3BsaXQgKCdcXG4nKS5sZW5ndGggPiAxKSkgLy8gaWYgbXVsdGlsaW5lIGFjdHVhbC9leHBlY3RlZCwgbmVlZCBleHRyYSB3aGl0ZXNwYWNlIGluYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICBhY3R1YWwgKz0gJ1xcbidcblxuICAgICAgICAgICAgICAgIHJldHVybiBgWyR7dHlwZX1dICR7d2h5fVxcblxcbiR7YW5zaS5yZWQgKGFjdHVhbCl9XFxuJHthbnNpLmdyZWVuIChleHBlY3RlZCl9XFxuXFxuJHtzdGFja0luZGVudGVkfVxcbmBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBbJHt0eXBlfV0gJHt3aHl9XFxuXFxuJHtzdGFja0luZGVudGVkfVxcbmBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0pXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgeyBpc0JsYW5rLCBibGFuayB9ID0gcmVxdWlyZSAoJ3ByaW50YWJsZS1jaGFyYWN0ZXJzJylcblxuICAgICwgY2hhbmdlTGFzdE5vbmVtcHR5TGluZSA9IChsaW5lcywgZm4pID0+IHtcblxuICAgICAgICBmb3IgKGxldCBpID0gbGluZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKChpID09PSAwKSB8fCAhaXNCbGFuayAobGluZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGluZXNbaV0gPSBmbiAobGluZXNbaV0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmVzXG4gICAgfVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IGxvZyA9IHBpcGV6ICh7XG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHN0cmluZ2lmeTogKGFyZ3MsIGNmZywgcHJpbnQgPSBzdHJpbmdpZnkuY29uZmlndXJlIChjZmcpKSA9PiBhcmdzLm1hcCAoYXJnID0+ICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykgPyBhcmcgOiBwcmludCAoYXJnKSksXG4gICAgXG4gICAgdHJpbTogKHRva2VucywgeyBtYXggPSB1bmRlZmluZWQgfSkgPT4gIW1heCA/IHRva2VucyA6IHRva2Vucy5tYXAgKHQgPT4gc3RyaW5naWZ5LmxpbWl0ICh0LCBtYXgpKSxcblxuICAgIGxpbmVzOiAodG9rZW5zLCB7IGxpbmVicmVhayA9ICdcXG4nIH0pID0+IHtcblxuICAgICAgICBsZXQgbGluZXMgPSBbW11dXG4gICAgICAgIGxldCBsZWZ0UGFkID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdG9rZW5zKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSB0LnNwbGl0IChsaW5lYnJlYWspXG5cbiAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLnB1c2ggKGZpcnN0KVxuICAgICAgICAgICAgbGluZXMgPSBbLi4ubGluZXMsIC4uLnJlc3QubWFwICh0ID0+IHQgPyBbLi4ubGVmdFBhZCwgdF0gOiBbXSldXG5cbiAgICAgICAgICAgIGNvbnN0IHBhZCA9IGJsYW5rICghcmVzdC5sZW5ndGggPyB0IDogcmVzdFtyZXN0Lmxlbmd0aCAtIDFdKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocGFkKSB7IGxlZnRQYWQucHVzaCAocGFkKSB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZXNcbiAgICB9LFxuXG4gICAgY29uY2F0OiAobGluZXMsIHsgc2VwYXJhdG9yID0gJyAnIH0pID0+IGxpbmVzLm1hcCAodG9rZW5zID0+IHRva2Vucy5qb2luIChzZXBhcmF0b3IpKSxcblxuICAgIGluZGVudDogKGxpbmVzLCB7IGxldmVsID0gMCwgcGF0dGVybiA9ICdcXHQnIH0pID0+IGxpbmVzLm1hcCAobGluZSA9PiBwYXR0ZXJuLnJlcGVhdCAobGV2ZWwpICsgbGluZSksXG4gICAgXG4gICAgdGFnOiAobGluZXMsIHsgbGV2ZWwgPSAnJyxcbiAgICAgICAgICAgICAgICAgICBsZXZlbENvbG9yID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAnaW5mbyc6IGFuc2kuY3lhbixcbiAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm4nOiBhbnNpLnllbGxvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnJzogYW5zaS5ibHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InOiBhbnNpLmJyaWdodC5yZWQgfSB9KSA9PiBidWxsZXQgKChsZXZlbENvbG9yW2xldmVsXSB8fCAocyA9PiBzKSkgKGxldmVsLnRvVXBwZXJDYXNlICgpLnBhZFN0YXJ0ICg2KSArICdcXHQnKSwgbGluZXMpLFxuXG4gICAgdGltZTogKGxpbmVzLCB7IHdoZW4gICA9IG5ldyBEYXRlICgpLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgICAgICAgcHJpbnQgID0gd2hlbiA9PiBhbnNpLmRhcmtHcmF5IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdCA9PT0gJ2lzbycpICAgID8gd2hlbi50b0lTT1N0cmluZyAoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmb3JtYXQgPT09ICdsb2NhbGUnKSA/IHdoZW4udG9Mb2NhbGVTdHJpbmcgKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZm9ybWF0ID09PSAndXRjJykgICAgPyB3aGVuLnRvVVRDU3RyaW5nICgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbi50b1N0cmluZyAoKSkpKSkgKyAnXFx0JyB9KSA9PiBidWxsZXQgKHByaW50ICh3aGVuKSwgbGluZXMpLFxuXG4gICAgbG9jYXRlOiAobGluZXMsIHtcblxuICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IDAsXG4gICAgICAgICAgICAgICAgICAgIHdoZXJlID0gKG5ldyBTdGFja1RyYWNleSAoKS5jbGVhbi5hdCAoMSArIHNoaWZ0KSksXG4gICAgICAgICAgICAgICAgICAgIGpvaW4gID0gKChhLCBzZXAsIGIpID0+IChhICYmIGIpID8gKGEgKyBzZXAgKyBiKSA6IChhIHx8IGIpKSxcbiAgICAgICAgICAgICAgICAgICAgcHJpbnQgPSAoeyBjYWxsZWVTaG9ydCwgZmlsZU5hbWUgPSBbXSwgbGluZSA9IFtdIH0pID0+IGFuc2kuZGFya0dyYXkgKCcoJyArIGpvaW4gKGNhbGxlZVNob3J0LCAnIEAgJywgam9pbiAoZmlsZU5hbWUsICc6JywgbGluZSkpICsgJyknKVxuXG4gICAgICAgICAgICAgICAgfSkgPT4gY2hhbmdlTGFzdE5vbmVtcHR5TGluZSAobGluZXMsIGxpbmUgPT4gam9pbiAobGluZSwgJyAnLCBwcmludCAod2hlcmUpKSksXG5cbiAgICBqb2luOiAobGluZXMsIHsgbGluZWJyZWFrID0gJ1xcbicgfSkgPT4gbGluZXMuam9pbiAobGluZWJyZWFrKSxcblxuICAgIHJlbmRlcjogKHRleHQsIHtcblxuICAgICAgICBlbmdpbmUgPSAoKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSAmJiAod2luZG93LndpbmRvdyA9PT0gd2luZG93KSAmJiB3aW5kb3cubmF2aWdhdG9yKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mICgnQ2hyb21lJykgPj0gMClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdjaHJvbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2dlbmVyaWMnXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdhbnNpJyxcblxuICAgICAgICBlbmdpbmVzID0geyAvKiBjb25maWd1cmFibGUgKi8gfSxcblxuICAgICAgICBjb25zb2xlTWV0aG9kID0gJ2xvZycsXG5cbiAgICAgICAgZGVmYXVsdHMgPSB7XG5cbiAgICAgICAgICAgIGFuc2k6ICAgIHMgPT4gY29uc29sZVtjb25zb2xlTWV0aG9kXSAocyksXG4gICAgICAgICAgICBjaHJvbWU6ICBzID0+IGNvbnNvbGVbY29uc29sZU1ldGhvZF0gKC4uLmFuc2kucGFyc2UgKHMpLmFzQ2hyb21lQ29uc29sZUxvZ0FyZ3VtZW50cyksXG4gICAgICAgICAgICBnZW5lcmljOiBzID0+IGNvbnNvbGVbY29uc29sZU1ldGhvZF0gKGFuc2kuc3RyaXAgKHMpKVxuICAgICAgICB9XG5cbiAgICB9KSA9PiAoKHRleHQgJiYgTy5hc3NpZ24gKGRlZmF1bHRzLCBlbmdpbmVzKVtlbmdpbmVdICh0ZXh0KSwgdGV4dCkpLFxuXG4gICAgcmV0dXJuVmFsdWU6IChfXywgeyBpbml0aWFsQXJndW1lbnRzOiBbZmlyc3RBcmd1bWVudF0gfSkgPT4gZmlyc3RBcmd1bWVudFxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbn0pLmNvbmZpZ3VyZSAoe1xuXG4gICAgdGltZTogZmFsc2UsIC8vIGRpc2FibGVzIHNvbWUgc3RlcHMgKHVudGlsIGVuYWJsZWQgYmFjayBleHBsaWNpdGx5KVxuICAgIHRhZzogIGZhbHNlXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxufSkubWV0aG9kcyAoe1xuXG4gICAgZ2V0IG51bGwgKCkgeyByZXR1cm4gcGlwZXogKHsgcmV0dXJuVmFsdWU6IGFyZ3MgPT4gYXJnc1swXSB9KS5tZXRob2RzICh0aGlzLm1ldGhvZHNfKSB9LFxuXG4gICAgaW5kZW50IChsZXZlbCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgaW5kZW50OiB7IGxldmVsOiBsZXZlbCB9fSkgfSxcblxuICAgIGdldCBlcnJvciAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyB0YWc6IHsgbGV2ZWw6ICdlcnJvcicgfSwgcmVuZGVyOiB7IGNvbnNvbGVNZXRob2Q6ICdlcnJvcicgfSB9KSB9LFxuICAgIGdldCB3YXJuICgpICB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyB0YWc6IHsgbGV2ZWw6ICd3YXJuJyB9LCAgcmVuZGVyOiB7IGNvbnNvbGVNZXRob2Q6ICd3YXJuJyB9IH0pIH0sXG4gICAgZ2V0IGluZm8gKCkgIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHRhZzogeyBsZXZlbDogJ2luZm8nIH0sICByZW5kZXI6IHsgY29uc29sZU1ldGhvZDogJ2luZm8nIH0gfSkgfSxcbiAgICBnZXQgZGVidWcgKCkgIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHRhZzogeyBsZXZlbDogJ2RlYnVnJyB9LCAgcmVuZGVyOiB7IGNvbnNvbGVNZXRob2Q6ICdkZWJ1ZycgfSB9KSB9LFxuXG4gICAgbWF4QXJyYXlMZW5ndGggKG4pICB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgbWF4QXJyYXlMZW5ndGg6IG4gfSB9KSB9LFxuICAgIG1heE9iamVjdExlbmd0aCAobikgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IG1heE9iamVjdExlbmd0aDogbiB9IH0pIH0sXG4gICAgbWF4RGVwdGggKG4pICAgICAgICB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgbWF4RGVwdGg6IG4gfSB9KSB9LFxuICAgIG1heExlbmd0aCAobikgICAgICAgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IG1heExlbmd0aDogbiB9IH0pIH0sXG4gICAgXG4gICAgZ2V0IHVubGltaXRlZCAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgbWF4U3RyaW5nTGVuZ3RoOiBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE9iamVjdExlbmd0aDogTnVtYmVyLk1BWF9WQUxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhBcnJheUxlbmd0aDogTnVtYmVyLk1BWF9WQUxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEZXB0aDogTnVtYmVyLk1BWF9WQUxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2VMZW5ndGg6IE51bWJlci5NQVhfVkFMVUUgfSB9KSB9LFxuXG4gICAgZ2V0IG5vUHJldHR5ICgpIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHN0cmluZ2lmeTogeyBwcmV0dHk6IGZhbHNlIH0gfSkgfSxcbiAgICBnZXQgbm9GYW5jeSAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgZmFuY3k6IGZhbHNlIH0gfSkgfSxcbiAgICBnZXQgbm9SaWdodEFsaWduS2V5cyAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgcmlnaHRBbGlnbktleXM6IGZhbHNlIH0gfSkgfSxcbiAgICBnZXQgbm9Mb2NhdGUgKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgbG9jYXRlOiBmYWxzZSB9KSB9LFxuICAgIHByZWNpc2lvbiAobikgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IHByZWNpc2lvbjogbiB9IH0pIH0sXG5cbiAgICBnZXQgc2VyaWFsaXplICgpIHsgcmV0dXJuIHRoaXMuYmVmb3JlICgncmVuZGVyJykgfSxcbiAgICBnZXQgZGVzZXJpYWxpemUgKCkgeyByZXR1cm4gdGhpcy5mcm9tICgncmVuZGVyJykgfSxcblxuICAgIG5ld2xpbmUgKCkgeyByZXR1cm4gdGhpcy5mcm9tICgnam9pbicpKFsnJ10pIH0sXG5cbiAgICBoYW5kbGVOb2RlRXJyb3JzICgpIHtcbiAgICAgICAgcHJvY2Vzcy5vbiAoJ3VuY2F1Z2h0RXhjZXB0aW9uJywgIGUgPT4geyB0aGlzLmJyaWdodC5yZWQuZXJyb3Iubm9Mb2NhdGUgKGUpOyBwcm9jZXNzLmV4aXQgKDEpIH0pXG4gICAgICAgIHByb2Nlc3Mub24gKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlID0+IHsgdGhpcy5icmlnaHQucmVkLmVycm9yLm5vTG9jYXRlIChlKTsgcHJvY2Vzcy5leGl0ICgxKSB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cbn0pXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuYW5zaS5uYW1lcy5mb3JFYWNoIChjb2xvciA9PiB7XG5cbiAgICBsb2cubWV0aG9kcyAoe1xuXG4gICAgICAgIGdldCBbY29sb3JdICgpIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7ICdjb25jYXQrJzogbGluZXMgPT4gbGluZXMubWFwIChhbnNpW2NvbG9yXSkgfSkgfVxuICAgIH0pXG59KVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbm1vZHVsZS5leHBvcnRzID0gbG9nXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFRLEVBQVIsQ0FBWSxvQkFBWixFQUFrQyxhQUFLO0FBQUUsa0JBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsS0FBaEIsQ0FBc0IsUUFBdEIsQ0FBZ0MsQ0FBaEMsRUFBb0MsUUFBUSxJQUFSLENBQWMsQ0FBZDtBQUFrQixTQUEvRjtBQUNBLGVBQU8sSUFBUDtBQUNIO0FBckNPLENBN0ZBLENBQVo7O0FBcUlBOztBQUVBLEtBQUssS0FBTCxDQUFXLE9BQVgsQ0FBb0IsaUJBQVM7QUFBQTs7QUFFekIsUUFBSSxPQUFKLG1EQUVTLEtBRlQsZ0JBRVMsS0FGVCxxQkFFUyxLQUZULG9CQUVtQjtBQUFFLGVBQU8sS0FBSyxTQUFMLENBQWdCLEVBQUUsV0FBVztBQUFBLHVCQUFTLE1BQU0sR0FBTixDQUFXLEtBQUssS0FBTCxDQUFYLENBQVQ7QUFBQSxhQUFiLEVBQWhCLENBQVA7QUFBeUUsS0FGOUY7QUFJSCxDQU5EOztBQVFBOztBQUVBLE9BQU8sT0FBUCxHQUFpQixHQUFqQjs7QUFFQSIsImZpbGUiOiJvbG9sb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBPICAgICAgICAgICAgICAgICA9IE9iamVjdFxuICAgICwgU3RhY2tUcmFjZXkgICAgICAgPSByZXF1aXJlICgnc3RhY2t0cmFjZXknKVxuICAgICwgYW5zaSAgICAgICAgICAgICAgPSByZXF1aXJlICgnYW5zaWNvbG9yJylcbiAgICAsIGJ1bGxldCAgICAgICAgICAgID0gcmVxdWlyZSAoJ3N0cmluZy5idWxsZXQnKVxuICAgICwgcGlwZXogICAgICAgICAgICAgPSByZXF1aXJlICgncGlwZXonKVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSAoJ3N0cmluZy5pZnknKS5jb25maWd1cmUgKHtcblxuICAgIGZvcm1hdHRlciAoeCwgc3RyaW5naWZ5KSB7XG5cbiAgICAgICAgaWYgKCh4IGluc3RhbmNlb2YgRXJyb3IpICYmICEodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgeFtTeW1ib2wuZm9yICgnU3RyaW5nLmlmeScpXSkpIHtcblxuICAgICAgICAgICAgaWYgKHN0cmluZ2lmeS5zdGF0ZS5kZXB0aCA+IDApIHJldHVybiBgPEVycm9yOiAke3gubWVzc2FnZX0+YCAvLyBwcmV2ZW50cyB1bndhbnRlZCBwcmV0dHkgcHJpbnRpbmcgZm9yIEVycm9ycyB0aGF0IGFyZSBwcm9wZXJ0aWVzIG9mIGNvbXBsZXggb2JqZWN0c1xuXG4gICAgICAgICAgICBjb25zdCBpbmRlbnQgICAgICAgID0gJyAgICAnXG4gICAgICAgICAgICAgICAgLCB3aHkgICAgICAgICAgID0gc3RyaW5naWZ5LmxpbWl0ICgoeC5tZXNzYWdlIHx8ICcnKS5yZXBsYWNlICgvXFxyfFxcbi9nLCAnJykudHJpbSAoKSwgc3RyaW5naWZ5LnN0YXRlLm1heEVycm9yTWVzc2FnZUxlbmd0aCB8fCAxMjApXG4gICAgICAgICAgICAgICAgLCBzdGFjayAgICAgICAgID0gbmV3IFN0YWNrVHJhY2V5ICh4KS5wcmV0dHlcbiAgICAgICAgICAgICAgICAsIHN0YWNrSW5kZW50ZWQgPSBzdGFjay5zcGxpdCAoJ1xcbicpLm1hcCAoeCA9PiBpbmRlbnQgKyB4KS5qb2luICgnXFxuJylcbiAgICAgICAgICAgICAgICAsIGlzQXNzZXJ0aW9uID0gKCdhY3R1YWwnIGluIHgpICYmICgnZXhwZWN0ZWQnIGluIHgpXG4gICAgICAgICAgICAgICAgLCB0eXBlICAgICAgICA9IHguY29uc3RydWN0b3IubmFtZSB8fCAnRXJyb3InXG5cbiAgICAgICAgICAgIGlmIChpc0Fzc2VydGlvbikge1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyID0gc3RyaW5naWZ5LmNvbmZpZ3VyZSAoeyBtYXhTdHJpbmdMZW5ndGg6IE51bWJlci5NQVhfVkFMVUUsIG1heERlcHRoOiA4IH0pXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbCAgID0gYnVsbGV0IChpbmRlbnQgKyAnYWN0dWFsOiAgICcsIHN0ciAoeC5hY3R1YWwpKVxuICAgICAgICAgICAgICAgICAgLCBleHBlY3RlZCA9IGJ1bGxldCAoaW5kZW50ICsgJ2V4cGVjdGVkOiAnLCBzdHIgKHguZXhwZWN0ZWQpKVxuXG4gICAgICAgICAgICAgICAgaWYgKChhY3R1YWwuc3BsaXQgKCdcXG4nKS5sZW5ndGggPiAxKSB8fCAoZXhwZWN0ZWQuc3BsaXQgKCdcXG4nKS5sZW5ndGggPiAxKSkgLy8gaWYgbXVsdGlsaW5lIGFjdHVhbC9leHBlY3RlZCwgbmVlZCBleHRyYSB3aGl0ZXNwYWNlIGluYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICBhY3R1YWwgKz0gJ1xcbidcblxuICAgICAgICAgICAgICAgIHJldHVybiBgWyR7dHlwZX1dICR7d2h5fVxcblxcbiR7YW5zaS5yZWQgKGFjdHVhbCl9XFxuJHthbnNpLmdyZWVuIChleHBlY3RlZCl9XFxuXFxuJHtzdGFja0luZGVudGVkfVxcbmBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBbJHt0eXBlfV0gJHt3aHl9XFxuXFxuJHtzdGFja0luZGVudGVkfVxcbmBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0pXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgeyBpc0JsYW5rLCBibGFuayB9ID0gcmVxdWlyZSAoJ3ByaW50YWJsZS1jaGFyYWN0ZXJzJylcblxuICAgICwgY2hhbmdlTGFzdE5vbmVtcHR5TGluZSA9IChsaW5lcywgZm4pID0+IHtcblxuICAgICAgICBmb3IgKGxldCBpID0gbGluZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKChpID09PSAwKSB8fCAhaXNCbGFuayAobGluZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGluZXNbaV0gPSBmbiAobGluZXNbaV0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmVzXG4gICAgfVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IGxvZyA9IHBpcGV6ICh7XG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHN0cmluZ2lmeTogKGFyZ3MsIGNmZywgcHJpbnQgPSBjZmcucHJpbnQgfHwgc3RyaW5naWZ5LmNvbmZpZ3VyZSAoY2ZnKSkgPT4gYXJncy5tYXAgKGFyZyA9PiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpID8gYXJnIDogcHJpbnQgKGFyZykpLFxuICAgIFxuICAgIHRyaW06ICh0b2tlbnMsIHsgbWF4ID0gdW5kZWZpbmVkIH0pID0+ICFtYXggPyB0b2tlbnMgOiB0b2tlbnMubWFwICh0ID0+IHN0cmluZ2lmeS5saW1pdCAodCwgbWF4KSksXG5cbiAgICBsaW5lczogKHRva2VucywgeyBsaW5lYnJlYWsgPSAnXFxuJyB9KSA9PiB7XG5cbiAgICAgICAgbGV0IGxpbmVzID0gW1tdXVxuICAgICAgICBsZXQgbGVmdFBhZCA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCB0IG9mIHRva2Vucykge1xuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3QsIC4uLnJlc3RdID0gdC5zcGxpdCAobGluZWJyZWFrKVxuXG4gICAgICAgICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5wdXNoIChmaXJzdClcbiAgICAgICAgICAgIGxpbmVzID0gWy4uLmxpbmVzLCAuLi5yZXN0Lm1hcCAodCA9PiB0ID8gWy4uLmxlZnRQYWQsIHRdIDogW10pXVxuXG4gICAgICAgICAgICBjb25zdCBwYWQgPSBibGFuayAoIXJlc3QubGVuZ3RoID8gdCA6IHJlc3RbcmVzdC5sZW5ndGggLSAxXSlcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHBhZCkgeyBsZWZ0UGFkLnB1c2ggKHBhZCkgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbmVzXG4gICAgfSxcblxuICAgIGNvbmNhdDogKGxpbmVzLCB7IHNlcGFyYXRvciA9ICcgJyB9KSA9PiBsaW5lcy5tYXAgKHRva2VucyA9PiB0b2tlbnMuam9pbiAoc2VwYXJhdG9yKSksXG5cbiAgICBpbmRlbnQ6IChsaW5lcywgeyBsZXZlbCA9IDAsIHBhdHRlcm4gPSAnXFx0JyB9KSA9PiBsaW5lcy5tYXAgKGxpbmUgPT4gcGF0dGVybi5yZXBlYXQgKGxldmVsKSArIGxpbmUpLFxuICAgIFxuICAgIHRhZzogKGxpbmVzLCB7IGxldmVsID0gJycsXG4gICAgICAgICAgICAgICAgICAgbGV2ZWxDb2xvciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgJ2luZm8nOiBhbnNpLmN5YW4sXG4gICAgICAgICAgICAgICAgICAgICAgICd3YXJuJzogYW5zaS55ZWxsb3csXG4gICAgICAgICAgICAgICAgICAgICAgICdkZWJ1Zyc6IGFuc2kuYmx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJzogYW5zaS5icmlnaHQucmVkIH0gfSkgPT4gYnVsbGV0ICgobGV2ZWxDb2xvcltsZXZlbF0gfHwgKHMgPT4gcykpIChsZXZlbC50b1VwcGVyQ2FzZSAoKS5wYWRTdGFydCAoNikgKyAnXFx0JyksIGxpbmVzKSxcblxuICAgIHRpbWU6IChsaW5lcywgeyB3aGVuICAgPSBuZXcgRGF0ZSAoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gJ2xvY2FsZScsXG4gICAgICAgICAgICAgICAgICAgIHByaW50ICA9IHdoZW4gPT4gYW5zaS5kYXJrR3JheSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmb3JtYXQgPT09ICdpc28nKSAgICA/IHdoZW4udG9JU09TdHJpbmcgKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZm9ybWF0ID09PSAnbG9jYWxlJykgPyB3aGVuLnRvTG9jYWxlU3RyaW5nICgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdCA9PT0gJ3V0YycpICAgID8gd2hlbi50b1VUQ1N0cmluZyAoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4udG9TdHJpbmcgKCkpKSkpICsgJ1xcdCcgfSkgPT4gYnVsbGV0IChwcmludCAod2hlbiksIGxpbmVzKSxcblxuICAgIGxvY2F0ZTogKGxpbmVzLCB7XG5cbiAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwLFxuICAgICAgICAgICAgICAgICAgICB3aGVyZSA9IChuZXcgU3RhY2tUcmFjZXkgKCkuY2xlYW4uYXQgKDEgKyBzaGlmdCkpLFxuICAgICAgICAgICAgICAgICAgICBqb2luICA9ICgoYSwgc2VwLCBiKSA9PiAoYSAmJiBiKSA/IChhICsgc2VwICsgYikgOiAoYSB8fCBiKSksXG4gICAgICAgICAgICAgICAgICAgIHByaW50ID0gKHsgY2FsbGVlU2hvcnQsIGZpbGVOYW1lID0gW10sIGxpbmUgPSBbXSB9KSA9PiBhbnNpLmRhcmtHcmF5ICgnKCcgKyBqb2luIChjYWxsZWVTaG9ydCwgJyBAICcsIGpvaW4gKGZpbGVOYW1lLCAnOicsIGxpbmUpKSArICcpJylcblxuICAgICAgICAgICAgICAgIH0pID0+IGNoYW5nZUxhc3ROb25lbXB0eUxpbmUgKGxpbmVzLCBsaW5lID0+IGpvaW4gKGxpbmUsICcgJywgcHJpbnQgKHdoZXJlKSkpLFxuXG4gICAgam9pbjogKGxpbmVzLCB7IGxpbmVicmVhayA9ICdcXG4nIH0pID0+IGxpbmVzLmpvaW4gKGxpbmVicmVhayksXG5cbiAgICByZW5kZXI6ICh0ZXh0LCB7XG5cbiAgICAgICAgZW5naW5lID0gKCh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgJiYgKHdpbmRvdy53aW5kb3cgPT09IHdpbmRvdykgJiYgd2luZG93Lm5hdmlnYXRvcilcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZiAoJ0Nocm9tZScpID49IDApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnY2hyb21lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdnZW5lcmljJ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYW5zaScsXG5cbiAgICAgICAgZW5naW5lcyA9IHsgLyogY29uZmlndXJhYmxlICovIH0sXG5cbiAgICAgICAgY29uc29sZU1ldGhvZCA9ICdsb2cnLFxuXG4gICAgICAgIGRlZmF1bHRzID0ge1xuXG4gICAgICAgICAgICBhbnNpOiAgICBzID0+IGNvbnNvbGVbY29uc29sZU1ldGhvZF0gKHMpLFxuICAgICAgICAgICAgY2hyb21lOiAgcyA9PiBjb25zb2xlW2NvbnNvbGVNZXRob2RdICguLi5hbnNpLnBhcnNlIChzKS5hc0Nocm9tZUNvbnNvbGVMb2dBcmd1bWVudHMpLFxuICAgICAgICAgICAgZ2VuZXJpYzogcyA9PiBjb25zb2xlW2NvbnNvbGVNZXRob2RdIChhbnNpLnN0cmlwIChzKSlcbiAgICAgICAgfVxuXG4gICAgfSkgPT4gKCh0ZXh0ICYmIE8uYXNzaWduIChkZWZhdWx0cywgZW5naW5lcylbZW5naW5lXSAodGV4dCksIHRleHQpKSxcblxuICAgIHJldHVyblZhbHVlOiAoX18sIHsgaW5pdGlhbEFyZ3VtZW50czogW2ZpcnN0QXJndW1lbnRdIH0pID0+IGZpcnN0QXJndW1lbnRcblxuLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG59KS5jb25maWd1cmUgKHtcblxuICAgIHRpbWU6IGZhbHNlLCAvLyBkaXNhYmxlcyBzb21lIHN0ZXBzICh1bnRpbCBlbmFibGVkIGJhY2sgZXhwbGljaXRseSlcbiAgICB0YWc6ICBmYWxzZVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbn0pLm1ldGhvZHMgKHtcblxuICAgIGdldCBudWxsICgpIHsgcmV0dXJuIHBpcGV6ICh7IHJldHVyblZhbHVlOiBhcmdzID0+IGFyZ3NbMF0gfSkubWV0aG9kcyAodGhpcy5tZXRob2RzXykgfSxcblxuICAgIGluZGVudCAobGV2ZWwpIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IGluZGVudDogeyBsZXZlbDogbGV2ZWwgfX0pIH0sXG5cbiAgICBnZXQgZXJyb3IgKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgdGFnOiB7IGxldmVsOiAnZXJyb3InIH0sIHJlbmRlcjogeyBjb25zb2xlTWV0aG9kOiAnZXJyb3InIH0gfSkgfSxcbiAgICBnZXQgd2FybiAoKSAgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgdGFnOiB7IGxldmVsOiAnd2FybicgfSwgIHJlbmRlcjogeyBjb25zb2xlTWV0aG9kOiAnd2FybicgfSB9KSB9LFxuICAgIGdldCBpbmZvICgpICB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyB0YWc6IHsgbGV2ZWw6ICdpbmZvJyB9LCAgcmVuZGVyOiB7IGNvbnNvbGVNZXRob2Q6ICdpbmZvJyB9IH0pIH0sXG4gICAgZ2V0IGRlYnVnICgpICB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyB0YWc6IHsgbGV2ZWw6ICdkZWJ1ZycgfSwgIHJlbmRlcjogeyBjb25zb2xlTWV0aG9kOiAnZGVidWcnIH0gfSkgfSxcblxuICAgIG1heEFycmF5TGVuZ3RoIChuKSAgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IG1heEFycmF5TGVuZ3RoOiBuIH0gfSkgfSxcbiAgICBtYXhPYmplY3RMZW5ndGggKG4pIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHN0cmluZ2lmeTogeyBtYXhPYmplY3RMZW5ndGg6IG4gfSB9KSB9LFxuICAgIG1heERlcHRoIChuKSAgICAgICAgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IG1heERlcHRoOiBuIH0gfSkgfSxcbiAgICBtYXhMZW5ndGggKG4pICAgICAgIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHN0cmluZ2lmeTogeyBtYXhMZW5ndGg6IG4gfSB9KSB9LFxuICAgIFxuICAgIGdldCB1bmxpbWl0ZWQgKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IG1heFN0cmluZ0xlbmd0aDogTnVtYmVyLk1BWF9WQUxVRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhPYmplY3RMZW5ndGg6IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4QXJyYXlMZW5ndGg6IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGg6IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlTGVuZ3RoOiBOdW1iZXIuTUFYX1ZBTFVFIH0gfSkgfSxcblxuICAgIGdldCBub1ByZXR0eSAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyBzdHJpbmdpZnk6IHsgcHJldHR5OiBmYWxzZSB9IH0pIH0sXG4gICAgZ2V0IG5vRmFuY3kgKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IGZhbmN5OiBmYWxzZSB9IH0pIH0sXG4gICAgZ2V0IG5vUmlnaHRBbGlnbktleXMgKCkgeyByZXR1cm4gdGhpcy5jb25maWd1cmUgKHsgc3RyaW5naWZ5OiB7IHJpZ2h0QWxpZ25LZXlzOiBmYWxzZSB9IH0pIH0sXG4gICAgZ2V0IG5vTG9jYXRlICgpIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IGxvY2F0ZTogZmFsc2UgfSkgfSxcbiAgICBwcmVjaXNpb24gKG4pIHsgcmV0dXJuIHRoaXMuY29uZmlndXJlICh7IHN0cmluZ2lmeTogeyBwcmVjaXNpb246IG4gfSB9KSB9LFxuXG4gICAgZ2V0IHNlcmlhbGl6ZSAoKSB7IHJldHVybiB0aGlzLmJlZm9yZSAoJ3JlbmRlcicpIH0sXG4gICAgZ2V0IGRlc2VyaWFsaXplICgpIHsgcmV0dXJuIHRoaXMuZnJvbSAoJ3JlbmRlcicpIH0sXG5cbiAgICBuZXdsaW5lICgpIHsgcmV0dXJuIHRoaXMuZnJvbSAoJ2pvaW4nKShbJyddKSB9LFxuXG4gICAgaGFuZGxlTm9kZUVycm9ycyAoKSB7XG4gICAgICAgIHByb2Nlc3Mub24gKCd1bmNhdWdodEV4Y2VwdGlvbicsICBlID0+IHsgdGhpcy5icmlnaHQucmVkLmVycm9yLm5vTG9jYXRlIChlKTsgcHJvY2Vzcy5leGl0ICgxKSB9KVxuICAgICAgICBwcm9jZXNzLm9uICgndW5oYW5kbGVkUmVqZWN0aW9uJywgZSA9PiB7IHRoaXMuYnJpZ2h0LnJlZC5lcnJvci5ub0xvY2F0ZSAoZSk7IHByb2Nlc3MuZXhpdCAoMSkgfSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG59KVxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmFuc2kubmFtZXMuZm9yRWFjaCAoY29sb3IgPT4ge1xuXG4gICAgbG9nLm1ldGhvZHMgKHtcblxuICAgICAgICBnZXQgW2NvbG9yXSAoKSB7IHJldHVybiB0aGlzLmNvbmZpZ3VyZSAoeyAnY29uY2F0Kyc6IGxpbmVzID0+IGxpbmVzLm1hcCAoYW5zaVtjb2xvcl0pIH0pIH1cbiAgICB9KVxufSlcblxuLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxvZ1xuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblxuIl19 |
@@ -71,3 +71,3 @@ "use strict"; | ||
stringify: (args, cfg, print = stringify.configure (cfg)) => args.map (arg => (typeof arg === 'string') ? arg : print (arg)), | ||
stringify: (args, cfg, print = cfg.print || stringify.configure (cfg)) => args.map (arg => (typeof arg === 'string') ? arg : print (arg)), | ||
@@ -74,0 +74,0 @@ trim: (tokens, { max = undefined }) => !max ? tokens : tokens.map (t => stringify.limit (t, max)), |
{ | ||
"name": "ololog", | ||
"version": "1.1.153", | ||
"version": "1.1.154", | ||
"description": "Logging. Colors. Terminals & browsers. Show call locations. Pretty prints objects, Errors, anything!", | ||
@@ -5,0 +5,0 @@ "main": "build/ololog.js", |
@@ -402,2 +402,11 @@ # Ololog! | ||
You can also override the arguments stringification stage completely (see more on [overriding default behavior](https://github.com/xpl/ololog#overriding-the-default-behavior)): | ||
```javascript | ||
log = require ('ololog').configure ({ stringify (args, cfg) { return args.map (x => myCustomStringifier (x, cfg)) } }) | ||
// ...providing additional configuration somewhere later... | ||
log = log.configure ({ stringify: { /* this object will be passed down as `cfg` to myCustomStringifier */ }}) | ||
``` | ||
# Pretty Printing `Error` Instances | ||
@@ -404,0 +413,0 @@ |
11
test.js
@@ -221,2 +221,13 @@ "use strict"; | ||
} | ||
it ('custom stringifier works', () => { | ||
// specifying custom printer | ||
let log = ololog.configure ({ locate: false, stringify: { print (x) { return 'foo!' } } }) | ||
assert (() => log (42), ['foo!']) | ||
// overriding stringify stage completely | ||
log = ololog.configure ({ locate: false, stringify (args, cfg) { return args.map (x => 'foo!') } }) | ||
assert (() => log (42, 24), ['foo! foo!']) | ||
}) | ||
}) | ||
@@ -223,0 +234,0 @@ |
Sorry, the diff of this file is too big to display
732345
0.14%8700
0.09%718
1.27%