@meteor-it/logger
Advanced tools
Comparing version 2.3.15 to 2.3.16
{ | ||
"name": "@meteor-it/logger", | ||
"version": "2.3.15", | ||
"version": "2.3.16", | ||
"description": "Most powerfull logger for node.js", | ||
@@ -19,3 +19,3 @@ "main": "index.js", | ||
}, | ||
"gitHead": "3d10baec01cd8de8e7af988796764d2fcf4087f7" | ||
"gitHead": "c0af336e7277978a0c0b2e366dcb53dbbcfc65db" | ||
} |
@@ -90,5 +90,5 @@ "use strict"; | ||
const strings = data.string.split('\n'); | ||
let ret = ` \u001B[40m${stringifyName(nameLimit, provider.nameLimit, data.name, escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${strings.shift()}`; | ||
let ret = `\u001B[40m${stringifyName(nameLimit, provider.nameLimit, data.name, escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${strings.shift()}`; | ||
for (let string of strings) { | ||
ret += ` \n\u001B[40m${stringifyName(nameLimit, provider.nameLimit, ' |', escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${string}`; | ||
ret += `\n\u001B[40m${stringifyName(nameLimit, provider.nameLimit, ' |', escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${string}`; | ||
//`${stringifyIdent(data.identationLength)}${stringifyName(provider.nameLimit,'|',escapeCode)} ${string}\n`; | ||
@@ -99,12 +99,12 @@ } | ||
function writeLogData(nameLimit, provider, data) { | ||
terminal_1.writeStdout('\n' + stringifyCommonData(nameLimit, '34m', provider, data)); | ||
terminal_1.writeStdout(stringifyCommonData(nameLimit, '34m', provider, data) + '\n'); | ||
} | ||
function writeErrorData(nameLimit, provider, data) { | ||
terminal_1.writeStdout('\n' + stringifyCommonData(nameLimit, '31m', provider, data)); | ||
terminal_1.writeStdout(stringifyCommonData(nameLimit, '31m', provider, data) + '\n'); | ||
} | ||
function writeWarningData(nameLimit, provider, data) { | ||
terminal_1.writeStdout('\n' + stringifyCommonData(nameLimit, '33m', provider, data)); | ||
terminal_1.writeStdout(stringifyCommonData(nameLimit, '33m', provider, data) + '\n'); | ||
} | ||
function writeDebugData(nameLimit, provider, data) { | ||
terminal_1.writeStdout('\n' + stringifyCommonData(nameLimit, '90m', provider, data)); | ||
terminal_1.writeStdout(stringifyCommonData(nameLimit, '90m', provider, data) + '\n'); | ||
} | ||
@@ -168,6 +168,6 @@ const progresses = {}; | ||
case __1.LOGGER_ACTIONS.IDENT: | ||
terminal_1.writeStdout('\n' + stringifyIdentData(nameLimit, this, data)); | ||
terminal_1.writeStdout(stringifyIdentData(nameLimit, this, data) + '\n'); | ||
break; | ||
case __1.LOGGER_ACTIONS.DEENT: | ||
terminal_1.writeStdout('\n' + stringifyDeentData(nameLimit, this, data)); | ||
terminal_1.writeStdout(stringifyDeentData(nameLimit, this, data) + '\n'); | ||
break; | ||
@@ -187,6 +187,6 @@ case __1.LOGGER_ACTIONS.LOG: | ||
case __1.LOGGER_ACTIONS.TIME_START: | ||
terminal_1.writeStdout('\n' + stringifyTimeStartData(nameLimit, this, data)); | ||
terminal_1.writeStdout(stringifyTimeStartData(nameLimit, this, data) + '\n'); | ||
break; | ||
case __1.LOGGER_ACTIONS.TIME_END: | ||
terminal_1.writeStdout('\n' + stringifyTimeEndData(nameLimit, this, data)); | ||
terminal_1.writeStdout(stringifyTimeEndData(nameLimit, this, data) + '\n'); | ||
break; | ||
@@ -231,2 +231,2 @@ case __1.LOGGER_ACTIONS.PROGRESS_START: | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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O2dCQUNsQyxNQUFNO1lBQ1AsS0FBSyxrQkFBYyxDQUFDLFFBQVE7Z0JBQzNCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1A7Z0JBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtRQUNELHVCQUF1QjtRQUN2QiwwQ0FBMEM7UUFDMUMsSUFBSTtRQUNFLHNDQUFzQztRQUN0QyxJQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxLQUFHLENBQUMsRUFBRTtZQUNyQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUIsc0JBQVcsRUFBRSxDQUFDO1NBQ2pCO0lBQ1IsQ0FBQztDQUNEO0FBbkVELHNDQW1FQztBQUVELElBQUksY0FBYyxHQUFDLElBQUksV0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRTFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDbkMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLG1CQUFtQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLG1CQUFtQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsTUFBTSIsImZpbGUiOiJsb2dnZXIvcmVjZWl2ZXJzL25vZGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zvcm1hdH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgTG9nZ2VyLHtMT0dHRVJfQUNUSU9OUyxCYXNpY1JlY2VpdmVyfSBmcm9tICcuLi8nO1xuaW1wb3J0IHt3cml0ZVN0ZG91dCxcbiAgICBtb3ZlQ3Vyc29yLCBjbGVhckxpbmUsIHNhdmUsIHJlc3RvcmUsIHN0YXJ0QnVmZmVyaW5nLCBmbHVzaEJ1ZmZlcn0gZnJvbSAnQG1ldGVvci1pdC90ZXJtaW5hbCc7XG5cbmNvbnN0IGFuc2lDb2xvcnM6e1trZXk6c3RyaW5nXTpudW1iZXJbXX0gPSB7XG5cdHJlc2V0OiBbMCwgMF0sXG5cblx0Ym9sZDogWzEsIDIyXSxcblx0ZGltOiBbMiwgMjJdLFxuXHRpdGFsaWM6IFszLCAyM10sXG5cdHVuZGVybGluZTogWzQsIDI0XSxcblx0aW52ZXJzZTogWzcsIDI3XSxcblx0aGlkZGVuOiBbOCwgMjhdLFxuXHRzdHJpa2V0aHJvdWdoOiBbOSwgMjldLFxuXG5cdGJsYWNrOiBbMzAsIDM5XSxcblx0cmVkOiBbMzEsIDM5XSxcblx0Z3JlZW46IFszMiwgMzldLFxuXHR5ZWxsb3c6IFszMywgMzldLFxuXHRibHVlOiBbMzQsIDM5XSxcblx0bWFnZW50YTogWzM1LCAzOV0sXG5cdGN5YW46IFszNiwgMzldLFxuXHR3aGl0ZTogWzM3LCAzOV0sXG5cdGdyYXk6IFs5MCwgMzldLFxuXG5cdGJnQmxhY2s6IFs0MCwgNDldLFxuXHRiZ1JlZDogWzQxLCA0OV0sXG5cdGJnR3JlZW46IFs0MiwgNDldLFxuXHRiZ1llbGxvdzogWzQzLCA0OV0sXG5cdGJnQmx1ZTogWzQ0LCA0OV0sXG5cdGJnTWFnZW50YTogWzQ1LCA0OV0sXG5cdGJnQ3lhbjogWzQ2LCA0OV0sXG5cdGJnV2hpdGU6IFs0NywgNDldXG59O1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlJZGVudChuYW1lTGltaXQ6bnVtYmVyLCBjb3VudDpudW1iZXIsIHN5bWJvbE5lZWRlZDpzdHJpbmcgPSB1bmRlZmluZWQpIHtcblx0cmV0dXJuIGAkeycgICcucmVwZWF0KGNvdW50KX0ke3N5bWJvbE5lZWRlZCA/IHN5bWJvbE5lZWRlZCA6ICcgJ31gO1xufVxuLy8gZnVuY3Rpb24gd3JpdGVEYXRlKGRhdGUpIHtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzM2bScpO1xuLy8gXHQvLyB3cml0ZVN0ZG91dCgobmV3IERhdGUoZGF0ZSkpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzBtJyk7XG4vLyB9XG5mdW5jdGlvbiBzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdDpudW1iZXIsIGxpbWl0Om51bWJlciwgbmFtZTpzdHJpbmcsIGVzY2FwZUNvZGUgPSAnNDRtJykge1xuXHRyZXR1cm4gYFxcdTAwMUJbJHtlc2NhcGVDb2RlfVxcdTAwMUJbMW0ke25hbWVMaW1pdD09PTA/Jyc6bmFtZS50b1N0cmluZygpLnBhZFN0YXJ0KG5hbWVMaW1pdCwnICcpfVxcdTAwMUJbMG1gO1xufVxuLy8gZnVuY3Rpb24gd3JpdGVSZXBlYXRzKGNvdW50LCBub25lID0gZmFsc2UpIHtcbi8vIFx0Ly8gaWYocHJvY2Vzcy5lbnYuTk9fQ09MTEFQU0Upbm9uZT10cnVlO1xuLy8gXHQvLyBpZiAobm9uZSkge1xuLy8gXHQvLyBcdHdyaXRlU3Rkb3V0KCcgICAgICAnKTtcbi8vIFx0Ly8gfSBlbHNlIHtcbi8vIFx0Ly8gXHRjb3VudCArPSAxO1xuLy8gXHQvLyBcdGlmIChjb3VudCA+PSAyMCkgd3JpdGVFc2NhcGUoJzMxbScpOyBlbHNlIGlmIChjb3VudCA+PSA1KSB3cml0ZUVzY2FwZSgnMzNtJyk7IGVsc2UgaWYgKGNvdW50ID49IDIpIHdyaXRlRXNjYXBlKCczMm0nKTsgZWxzZVxuLy8gXHQvLyBcdFx0d3JpdGVFc2NhcGUoJzkwbScpO1xuLy8gXHQvLyBcdGlmIChjb3VudCA+PSA5OTkpIHdyaXRlU3Rkb3V0KCd4OTk5KyAnKTsgZWxzZSBpZiAoY291bnQgPT09IDEpIHdyaXRlU3Rkb3V0KCcgICAgICAnKTsgZWxzZVxuLy8gXHQvLyBcdFx0d3JpdGVTdGRvdXQoJ3gnICsgZml4TGVuZ3RoKGNvdW50LnRvU3RyaW5nKDEwKSwgMywgZmFsc2UsICcgJykgKyAnICAnKTtcbi8vIFx0Ly8gXHR3cml0ZUVzY2FwZSgnMG0nKTtcbi8vIFx0Ly8gfVxuLy8gfVxuZnVuY3Rpb24gc3RyaW5naWZ5SWRlbnREYXRhKG5hbWVMaW1pdDpudW1iZXIsIHByb3ZpZGVyOk5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6YW55KSB7XG5cdC8vIHdyaXRlUmVwZWF0cygwLCB0cnVlKTtcblx0Ly8gd3JpdGVEYXRlKGRhdGEudGltZSk7XG5cdHJldHVybiBgICR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCxkYXRhLm5hbWUpfSBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgtMSwnPicpfVxcdTAwMUJbMW0gJHtkYXRhLmlkZW50TmFtZX1cXHUwMDFCWzBtYDtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeURlZW50RGF0YShuYW1lTGltaXQ6bnVtYmVyLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOmFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCAke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsZGF0YS5uYW1lKX0gXFx1MDAxQlszNW0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoLCc8Jyl9XFx1MDAxQlsxbSAke2RhdGEuaWRlbnROYW1lfVxcdTAwMUJbMjJtIChEb25lIGluICR7ZGF0YS5pZGVudFRpbWV9bXMpXFx1MDAxQlswbWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlUaW1lU3RhcnREYXRhKG5hbWVMaW1pdDpudW1iZXIsIHByb3ZpZGVyOk5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6YW55KSB7XG5cdC8vIHdyaXRlUmVwZWF0cygwLCB0cnVlKTtcblx0Ly8gd3JpdGVEYXRlKGRhdGEudGltZSk7XG5cdHJldHVybiBgIFxcdTAwMUJbMzVtJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LGRhdGEubmFtZSwnMW0nKX1cXHUwMDFCWzMzbSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgpfSBUIFN0YXJ0ZWQgJHtkYXRhLnRpbWVOYW1lfWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlUaW1lRW5kRGF0YShuYW1lTGltaXQ6bnVtYmVyLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOmFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCxkYXRhLm5hbWUsJzFtJyl9XFx1MDAxQlszNG0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0gVCBGaW5pc2hlZCAke2RhdGEudGltZU5hbWV9XFx1MDAxQlsxbSBpbiAke2RhdGEudGltZVRpbWV9bXNcXHUwMDFCWzBtYDtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeURhdGEobmFtZUxpbWl0Om51bWJlciwgZGF0YTphbnkpIHtcblx0bGV0IHVuY29sb3JlZCA9IGZvcm1hdChkYXRhLmxpbmUsIC4uLmRhdGEucGFyYW1zIHx8IFtdKTtcblx0cmV0dXJuIHVuY29sb3JlZC5yZXBsYWNlKC97KFxcLz8pKFtefV0rKX0vZywgKC4uLmQ6YW55W10pID0+IHtcblx0XHRpZiAoIWFuc2lDb2xvcnNbZFsyXV0pcmV0dXJuIGRbMF07XG5cdFx0cmV0dXJuICdcXHUwMDFCWycgKyBhbnNpQ29sb3JzW2RbMl1dW2RbMV0gPT09ICcvJyA/IDEgOiAwXSArICdtJztcblx0fSk7XG59XG4vLyBjb25zdCBTVFJJUFBFRF9EQVRFPShuZXcgRGF0ZSgpKS50b0xvY2FsZVRpbWVTdHJpbmcoKS5yZXBsYWNlKC8uL2csICcgJyk7XG5mdW5jdGlvbiBzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdDpudW1iZXIsIGVzY2FwZUNvZGU6c3RyaW5nLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOmFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoZGF0YS5yZXBlYXRzLCBmYWxzZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRjb25zdCBzdHJpbmdzID0gZGF0YS5zdHJpbmcuc3BsaXQoJ1xcbicpO1xuXHRsZXQgcmV0ID0gYCBcXHUwMDFCWzQwbSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCBlc2NhcGVDb2RlKX1cXHUwMDFCWzBtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmdzLnNoaWZ0KCl9YDtcblx0Zm9yKGxldCBzdHJpbmcgb2Ygc3RyaW5ncyl7XG5cdFx0cmV0ICs9IGAgXFxuXFx1MDAxQls0MG0ke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsICcgfCcsIGVzY2FwZUNvZGUpfVxcdTAwMUJbMG0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0ke3N0cmluZ31gO1xuXHRcdC8vYCR7c3RyaW5naWZ5SWRlbnQoZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0ke3N0cmluZ2lmeU5hbWUocHJvdmlkZXIubmFtZUxpbWl0LCd8Jyxlc2NhcGVDb2RlKX0gJHtzdHJpbmd9XFxuYDtcblx0fVxuXHRyZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gd3JpdGVMb2dEYXRhKG5hbWVMaW1pdDpudW1iZXIsIHByb3ZpZGVyOk5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6YW55KSB7XG5cdHdyaXRlU3Rkb3V0KCdcXG4nK3N0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnMzRtJyxwcm92aWRlcixkYXRhKSk7XG59XG5mdW5jdGlvbiB3cml0ZUVycm9yRGF0YShuYW1lTGltaXQ6bnVtYmVyLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOmFueSkge1xuXHR3cml0ZVN0ZG91dCgnXFxuJytzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzMxbScscHJvdmlkZXIsZGF0YSkpO1xufVxuZnVuY3Rpb24gd3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQ6bnVtYmVyLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOmFueSkge1xuXHR3cml0ZVN0ZG91dCgnXFxuJytzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzMzbScscHJvdmlkZXIsZGF0YSkpO1xufVxuZnVuY3Rpb24gd3JpdGVEZWJ1Z0RhdGEobmFtZUxpbWl0Om51bWJlciwgcHJvdmlkZXI6Tm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTphbnkpIHtcblx0d3JpdGVTdGRvdXQoJ1xcbicrc3RyaW5naWZ5Q29tbW9uRGF0YShuYW1lTGltaXQsICc5MG0nLHByb3ZpZGVyLGRhdGEpKTtcbn1cblxuaW50ZXJmYWNlIElQcm9ncmVzc0l0ZW0ge1xuXHRuYW1lOiBzdHJpbmcsXG5cdHByb2dyZXNzOiBudW1iZXIsXG4gICAgdGltZTpudW1iZXJcbn1cbmNvbnN0IHByb2dyZXNzZXM6e1trZXk6c3RyaW5nXTpJUHJvZ3Jlc3NJdGVtfT17fTtcbmZ1bmN0aW9uIHByb2dyZXNzU3RhcnQobmFtZUxpbWl0Om51bWJlciwgcHJvdmlkZXI6Tm9kZUNvbnNvbGVSZWNlaXZlcixkYXRhOmFueSl7XG5cdHByb2dyZXNzZXNbZGF0YS5uYW1lXT17XG5cdFx0bmFtZTpkYXRhLm5hbWUsXG5cdFx0cHJvZ3Jlc3M6MCxcblx0XHR0aW1lOmRhdGEudGltZVxuXHR9O1xufVxuZnVuY3Rpb24gcHJvZ3Jlc3NFbmQobmFtZUxpbWl0Om51bWJlciwgcHJvdmlkZXI6Tm9kZUNvbnNvbGVSZWNlaXZlcixkYXRhOmFueSl7XG5cdGRlbGV0ZSBwcm9ncmVzc2VzW2RhdGEubmFtZV07XG59XG5mdW5jdGlvbiBwcm9ncmVzcyhuYW1lTGltaXQ6bnVtYmVyLCBwcm92aWRlcjpOb2RlQ29uc29sZVJlY2VpdmVyLGRhdGE6YW55KXtcblx0aWYoIXByb2dyZXNzZXNbZGF0YS5uYW1lXSlcblx0XHRyZXR1cm47XG4gICAgcHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdLnRpbWU9ZGF0YS50aW1lO1xuICAgIHByb2dyZXNzZXNbZGF0YS5uYW1lXS5wcm9ncmVzcz1kYXRhLnByb2dyZXNzO1xufVxuZnVuY3Rpb24gcmVuZGVyUHJvZ3Jlc3MobmFtZUxpbWl0Om51bWJlcil7XG5cdHNhdmUoKTtcblx0bGV0IGk9MDtcblx0Zm9yKGxldCBwcm9ncmVzcyBvZiBPYmplY3QudmFsdWVzKHByb2dyZXNzZXMpKSB7XG4gICAgICAgIG1vdmVDdXJzb3IoaSk7XG4gICAgICAgIGNsZWFyTGluZSgpO1xuICAgICAgICBsZXQgcGVyY2VudD1NYXRoLmNlaWwocHJvZ3Jlc3MucHJvZ3Jlc3MpO1xuICAgICAgICB3cml0ZVN0ZG91dChgXFx1MDAxQlszNG0ke3Byb2dyZXNzLm5hbWUucGFkU3RhcnQobmFtZUxpbWl0KX0gJHsocGVyY2VudCArICclJykucGFkU3RhcnQoNCwgJyAnKX0gJHsnfCcucmVwZWF0KE1hdGguY2VpbCgoKHByb2Nlc3Muc3Rkb3V0IGFzIGFueSkuY29sdW1ucyAtIDEgLSAzIC0gMSAtIDEgLSBuYW1lTGltaXQpIC8gMTAwICogcGVyY2VudCkpfWApO1xuICAgICAgICAvLyB3cml0ZUVzY2FwZSgnMzRtJyk7XG4gICAgICAgIC8vIHdyaXRlU3Rkb3V0KCg8SVByb2dyZXNzSXRlbT5wcm9ncmVzcykubmFtZS5wYWRTdGFydCgxOCwnICcpKTtcbiAgICAgICAgLy8gd3JpdGVTdGRvdXQoJyAnKTtcbiAgICAgICAgLy8gd3JpdGVEYXRlKHByb2dyZXNzLnRpbWUpO1xuICAgICAgICAvLyB3cml0ZVN0ZG91dCgnICcpO1xuICAgICAgICAvLyB3cml0ZVN0ZG91dCgocGVyY2VudCsnJScpLnBhZFN0YXJ0KDQsJyAnKSk7XG4gICAgICAgIC8vIHdyaXRlU3Rkb3V0KCcgJyk7XG4gICAgICAgIC8vIHdyaXRlU3Rkb3V0KCd8Jy5yZXBlYXQoTWF0aC5jZWlsKCgoPGFueT5wcm9jZXNzLnN0ZG91dCkuY29sdW1ucy0xLTMtMS04LTEtMTgpLzEwMCpwZXJjZW50KSkpO1xuICAgICAgICBpKys7XG4gICAgfVxuXG5cdHJlc3RvcmUoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZUNvbnNvbGVSZWNlaXZlciBleHRlbmRzIEJhc2ljUmVjZWl2ZXIge1xuXHRuYW1lTGltaXQ6bnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKG5hbWVMaW1pdCA9IDE4KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm5hbWVMaW1pdCA9IG5hbWVMaW1pdDtcblx0fVxuXG5cdHdyaXRlKGRhdGE6YW55KSB7XG5cdFx0bGV0IHtuYW1lTGltaXR9ID0gdGhpcztcbiAgICAgICAgaWYoT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKS5sZW5ndGghPT0wKSB7XG4gICAgICAgICAgICBzdGFydEJ1ZmZlcmluZygpO1xuICAgICAgICB9XG5cdFx0ZGF0YS5zdHJpbmcgPSBzdHJpbmdpZnlEYXRhKG5hbWVMaW1pdCwgZGF0YSk7XG5cdFx0Ly8gaWYgKGRhdGEucmVwZWF0ZWQpIHtcblx0XHQvLyBcdGlmKCFwcm9jZXNzLmVudi5OT19DT0xMQVBTRSl7XG5cdFx0Ly8gXHRcdHNhdmUoKTtcblx0XHQvLyBcdFx0d3JpdGVFc2NhcGUoZGF0YS5zdHJpbmcuc3BsaXQoJ1xcbicpLmxlbmd0aCArICdBJyk7XG5cdFx0Ly8gXHRcdC8vZGF0YS5yZXBlYXRzXG5cdFx0Ly8gXHR9XG5cdFx0Ly8gfVxuXHRcdHN3aXRjaCAoZGF0YS50eXBlKSB7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLklERU5UOlxuXHRcdFx0XHR3cml0ZVN0ZG91dCgnXFxuJytzdHJpbmdpZnlJZGVudERhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5ERUVOVDpcblx0XHRcdFx0d3JpdGVTdGRvdXQoJ1xcbicrc3RyaW5naWZ5RGVlbnREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuTE9HOlxuXHRcdFx0XHR3cml0ZUxvZ0RhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLkVSUk9SOlxuXHRcdFx0XHR3cml0ZUVycm9yRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuV0FSTklORzpcblx0XHRcdFx0d3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuREVCVUc6XG5cdFx0XHRcdHdyaXRlRGVidWdEYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJUOlxuXHRcdFx0XHR3cml0ZVN0ZG91dCgnXFxuJytzdHJpbmdpZnlUaW1lU3RhcnREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuVElNRV9FTkQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KCdcXG4nK3N0cmluZ2lmeVRpbWVFbmREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfU1RBUlQ6XG5cdFx0XHRcdHByb2dyZXNzU3RhcnQobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlBST0dSRVNTX0VORDpcblx0XHRcdFx0cHJvZ3Jlc3NFbmQobmFtZUxpbWl0LCB0aGlzLGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuUFJPR1JFU1M6XG5cdFx0XHRcdHByb2dyZXNzKG5hbWVMaW1pdCwgdGhpcyxkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjb25zb2xlLl9sb2coZGF0YSk7XG5cdFx0fVxuXHRcdC8vIGlmIChkYXRhLnJlcGVhdGVkKSB7XG5cdFx0Ly8gXHRpZighcHJvY2Vzcy5lbnYuTk9fQ09MTEFQU0UpcmVzdG9yZSgpO1xuXHRcdC8vIH1cbiAgICAgICAgLy8gVE9ETzogU3VwcG9ydCBmb3Igbm9uLXR0eSB0ZXJtaW5hbHNcbiAgICAgICAgaWYoT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKS5sZW5ndGghPT0wKSB7XG4gICAgICAgICAgICByZW5kZXJQcm9ncmVzcyhuYW1lTGltaXQpO1xuICAgICAgICAgICAgZmx1c2hCdWZmZXIoKTtcbiAgICAgICAgfVxuXHR9XG59XG5cbmxldCB0ZXJtaW5hbExvZ2dlcj1uZXcgTG9nZ2VyKCd0ZXJtaW5hbCcpO1xuXG5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGUgPT4ge1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoJ1VuY2F1Z2h0RXhjZXB0aW9uOicpO1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoZS5zdGFjayk7XG5cdC8vIHByb2Nlc3MuZXhpdCgwKTtcbn0pO1xuXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlID0+IHtcblx0dGVybWluYWxMb2dnZXIuZXJyKCdVbmhhbmRsZWRSZWplY3Rpb246Jyk7XG5cdHRlcm1pbmFsTG9nZ2VyLmVycihlLnN0YWNrKTtcblx0Ly8gcHJvY2Vzcy5leGl0KDApO1xufSk7XG5cbi8vIHByb2Nlc3Mub24oJ3dhcm5pbmcnLCBlID0+IHtcbi8vIFx0dGVybWluYWxMb2dnZXIud2FybihlLnN0YWNrKTtcbi8vIH0pOyJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QkFDbkMsTUFBTTtZQUNQLEtBQUssa0JBQWMsQ0FBQyxRQUFRO2dCQUMzQixRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtZQUNQO2dCQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7UUFDRCx1QkFBdUI7UUFDdkIsMENBQTBDO1FBQzFDLElBQUk7UUFDSixzQ0FBc0M7UUFDdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0MsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFCLHNCQUFXLEVBQUUsQ0FBQztTQUNkO0lBQ0YsQ0FBQztDQUNEO0FBbkVELHNDQW1FQztBQUVELElBQUksY0FBYyxHQUFHLElBQUksV0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRTVDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDbkMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLG1CQUFtQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLG1CQUFtQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsTUFBTSIsImZpbGUiOiJsb2dnZXIvcmVjZWl2ZXJzL25vZGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCBMb2dnZXIsIHsgTE9HR0VSX0FDVElPTlMsIEJhc2ljUmVjZWl2ZXIgfSBmcm9tICcuLi8nO1xuaW1wb3J0IHtcblx0d3JpdGVTdGRvdXQsXG5cdG1vdmVDdXJzb3IsIGNsZWFyTGluZSwgc2F2ZSwgcmVzdG9yZSwgc3RhcnRCdWZmZXJpbmcsIGZsdXNoQnVmZmVyXG59IGZyb20gJ0BtZXRlb3ItaXQvdGVybWluYWwnO1xuXG5jb25zdCBhbnNpQ29sb3JzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcltdIH0gPSB7XG5cdHJlc2V0OiBbMCwgMF0sXG5cblx0Ym9sZDogWzEsIDIyXSxcblx0ZGltOiBbMiwgMjJdLFxuXHRpdGFsaWM6IFszLCAyM10sXG5cdHVuZGVybGluZTogWzQsIDI0XSxcblx0aW52ZXJzZTogWzcsIDI3XSxcblx0aGlkZGVuOiBbOCwgMjhdLFxuXHRzdHJpa2V0aHJvdWdoOiBbOSwgMjldLFxuXG5cdGJsYWNrOiBbMzAsIDM5XSxcblx0cmVkOiBbMzEsIDM5XSxcblx0Z3JlZW46IFszMiwgMzldLFxuXHR5ZWxsb3c6IFszMywgMzldLFxuXHRibHVlOiBbMzQsIDM5XSxcblx0bWFnZW50YTogWzM1LCAzOV0sXG5cdGN5YW46IFszNiwgMzldLFxuXHR3aGl0ZTogWzM3LCAzOV0sXG5cdGdyYXk6IFs5MCwgMzldLFxuXG5cdGJnQmxhY2s6IFs0MCwgNDldLFxuXHRiZ1JlZDogWzQxLCA0OV0sXG5cdGJnR3JlZW46IFs0MiwgNDldLFxuXHRiZ1llbGxvdzogWzQzLCA0OV0sXG5cdGJnQmx1ZTogWzQ0LCA0OV0sXG5cdGJnTWFnZW50YTogWzQ1LCA0OV0sXG5cdGJnQ3lhbjogWzQ2LCA0OV0sXG5cdGJnV2hpdGU6IFs0NywgNDldXG59O1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlJZGVudChuYW1lTGltaXQ6IG51bWJlciwgY291bnQ6IG51bWJlciwgc3ltYm9sTmVlZGVkOiBzdHJpbmcgPSB1bmRlZmluZWQpIHtcblx0cmV0dXJuIGAkeycgICcucmVwZWF0KGNvdW50KX0ke3N5bWJvbE5lZWRlZCA/IHN5bWJvbE5lZWRlZCA6ICcgJ31gO1xufVxuLy8gZnVuY3Rpb24gd3JpdGVEYXRlKGRhdGUpIHtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzM2bScpO1xuLy8gXHQvLyB3cml0ZVN0ZG91dCgobmV3IERhdGUoZGF0ZSkpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzBtJyk7XG4vLyB9XG5mdW5jdGlvbiBzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdDogbnVtYmVyLCBsaW1pdDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIGVzY2FwZUNvZGUgPSAnNDRtJykge1xuXHRyZXR1cm4gYFxcdTAwMUJbJHtlc2NhcGVDb2RlfVxcdTAwMUJbMW0ke25hbWVMaW1pdCA9PT0gMCA/ICcnIDogbmFtZS50b1N0cmluZygpLnBhZFN0YXJ0KG5hbWVMaW1pdCwgJyAnKX1cXHUwMDFCWzBtYDtcbn1cbi8vIGZ1bmN0aW9uIHdyaXRlUmVwZWF0cyhjb3VudCwgbm9uZSA9IGZhbHNlKSB7XG4vLyBcdC8vIGlmKHByb2Nlc3MuZW52Lk5PX0NPTExBUFNFKW5vbmU9dHJ1ZTtcbi8vIFx0Ly8gaWYgKG5vbmUpIHtcbi8vIFx0Ly8gXHR3cml0ZVN0ZG91dCgnICAgICAgJyk7XG4vLyBcdC8vIH0gZWxzZSB7XG4vLyBcdC8vIFx0Y291bnQgKz0gMTtcbi8vIFx0Ly8gXHRpZiAoY291bnQgPj0gMjApIHdyaXRlRXNjYXBlKCczMW0nKTsgZWxzZSBpZiAoY291bnQgPj0gNSkgd3JpdGVFc2NhcGUoJzMzbScpOyBlbHNlIGlmIChjb3VudCA+PSAyKSB3cml0ZUVzY2FwZSgnMzJtJyk7IGVsc2Vcbi8vIFx0Ly8gXHRcdHdyaXRlRXNjYXBlKCc5MG0nKTtcbi8vIFx0Ly8gXHRpZiAoY291bnQgPj0gOTk5KSB3cml0ZVN0ZG91dCgneDk5OSsgJyk7IGVsc2UgaWYgKGNvdW50ID09PSAxKSB3cml0ZVN0ZG91dCgnICAgICAgJyk7IGVsc2Vcbi8vIFx0Ly8gXHRcdHdyaXRlU3Rkb3V0KCd4JyArIGZpeExlbmd0aChjb3VudC50b1N0cmluZygxMCksIDMsIGZhbHNlLCAnICcpICsgJyAgJyk7XG4vLyBcdC8vIFx0d3JpdGVFc2NhcGUoJzBtJyk7XG4vLyBcdC8vIH1cbi8vIH1cbmZ1bmN0aW9uIHN0cmluZ2lmeUlkZW50RGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCAke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsIGRhdGEubmFtZSl9IFxcdTAwMUJbMzVtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCAtIDEsICc+Jyl9XFx1MDAxQlsxbSAke2RhdGEuaWRlbnROYW1lfVxcdTAwMUJbMG1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5RGVlbnREYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdC8vIHdyaXRlUmVwZWF0cygwLCB0cnVlKTtcblx0Ly8gd3JpdGVEYXRlKGRhdGEudGltZSk7XG5cdHJldHVybiBgICR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lKX0gXFx1MDAxQlszNW0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoLCAnPCcpfVxcdTAwMUJbMW0gJHtkYXRhLmlkZW50TmFtZX1cXHUwMDFCWzIybSAoRG9uZSBpbiAke2RhdGEuaWRlbnRUaW1lfW1zKVxcdTAwMUJbMG1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5VGltZVN0YXJ0RGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCAnMW0nKX1cXHUwMDFCWzMzbSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgpfSBUIFN0YXJ0ZWQgJHtkYXRhLnRpbWVOYW1lfWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlUaW1lRW5kRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCAnMW0nKX1cXHUwMDFCWzM0bSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgpfSBUIEZpbmlzaGVkICR7ZGF0YS50aW1lTmFtZX1cXHUwMDFCWzFtIGluICR7ZGF0YS50aW1lVGltZX1tc1xcdTAwMUJbMG1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5RGF0YShuYW1lTGltaXQ6IG51bWJlciwgZGF0YTogYW55KSB7XG5cdGxldCB1bmNvbG9yZWQgPSBmb3JtYXQoZGF0YS5saW5lLCAuLi5kYXRhLnBhcmFtcyB8fCBbXSk7XG5cdHJldHVybiB1bmNvbG9yZWQucmVwbGFjZSgveyhcXC8/KShbXn1dKyl9L2csICguLi5kOiBhbnlbXSkgPT4ge1xuXHRcdGlmICghYW5zaUNvbG9yc1tkWzJdXSkgcmV0dXJuIGRbMF07XG5cdFx0cmV0dXJuICdcXHUwMDFCWycgKyBhbnNpQ29sb3JzW2RbMl1dW2RbMV0gPT09ICcvJyA/IDEgOiAwXSArICdtJztcblx0fSk7XG59XG4vLyBjb25zdCBTVFJJUFBFRF9EQVRFPShuZXcgRGF0ZSgpKS50b0xvY2FsZVRpbWVTdHJpbmcoKS5yZXBsYWNlKC8uL2csICcgJyk7XG5mdW5jdGlvbiBzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBlc2NhcGVDb2RlOiBzdHJpbmcsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKGRhdGEucmVwZWF0cywgZmFsc2UpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0Y29uc3Qgc3RyaW5ncyA9IGRhdGEuc3RyaW5nLnNwbGl0KCdcXG4nKTtcblx0bGV0IHJldCA9IGBcXHUwMDFCWzQwbSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCBlc2NhcGVDb2RlKX1cXHUwMDFCWzBtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmdzLnNoaWZ0KCl9YDtcblx0Zm9yIChsZXQgc3RyaW5nIG9mIHN0cmluZ3MpIHtcblx0XHRyZXQgKz0gYFxcblxcdTAwMUJbNDBtJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LCAnIHwnLCBlc2NhcGVDb2RlKX1cXHUwMDFCWzBtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmd9YDtcblx0XHQvL2Ake3N0cmluZ2lmeUlkZW50KGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmdpZnlOYW1lKHByb3ZpZGVyLm5hbWVMaW1pdCwnfCcsZXNjYXBlQ29kZSl9ICR7c3RyaW5nfVxcbmA7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIHdyaXRlTG9nRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHR3cml0ZVN0ZG91dChzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzM0bScsIHByb3ZpZGVyLCBkYXRhKSArICdcXG4nKTtcbn1cbmZ1bmN0aW9uIHdyaXRlRXJyb3JEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnMzFtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuZnVuY3Rpb24gd3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHR3cml0ZVN0ZG91dChzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzMzbScsIHByb3ZpZGVyLCBkYXRhKSArICdcXG4nKTtcbn1cbmZ1bmN0aW9uIHdyaXRlRGVidWdEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnOTBtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuXG5pbnRlcmZhY2UgSVByb2dyZXNzSXRlbSB7XG5cdG5hbWU6IHN0cmluZyxcblx0cHJvZ3Jlc3M6IG51bWJlcixcblx0dGltZTogbnVtYmVyXG59XG5jb25zdCBwcm9ncmVzc2VzOiB7IFtrZXk6IHN0cmluZ106IElQcm9ncmVzc0l0ZW0gfSA9IHt9O1xuZnVuY3Rpb24gcHJvZ3Jlc3NTdGFydChuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHRwcm9ncmVzc2VzW2RhdGEubmFtZV0gPSB7XG5cdFx0bmFtZTogZGF0YS5uYW1lLFxuXHRcdHByb2dyZXNzOiAwLFxuXHRcdHRpbWU6IGRhdGEudGltZVxuXHR9O1xufVxuZnVuY3Rpb24gcHJvZ3Jlc3NFbmQobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0ZGVsZXRlIHByb2dyZXNzZXNbZGF0YS5uYW1lXTtcbn1cbmZ1bmN0aW9uIHByb2dyZXNzKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdGlmICghcHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdKVxuXHRcdHJldHVybjtcblx0cHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdLnRpbWUgPSBkYXRhLnRpbWU7XG5cdHByb2dyZXNzZXNbZGF0YS5uYW1lXS5wcm9ncmVzcyA9IGRhdGEucHJvZ3Jlc3M7XG59XG5mdW5jdGlvbiByZW5kZXJQcm9ncmVzcyhuYW1lTGltaXQ6IG51bWJlcikge1xuXHRzYXZlKCk7XG5cdGxldCBpID0gMDtcblx0Zm9yIChsZXQgcHJvZ3Jlc3Mgb2YgT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKSkge1xuXHRcdG1vdmVDdXJzb3IoaSk7XG5cdFx0Y2xlYXJMaW5lKCk7XG5cdFx0bGV0IHBlcmNlbnQgPSBNYXRoLmNlaWwocHJvZ3Jlc3MucHJvZ3Jlc3MpO1xuXHRcdHdyaXRlU3Rkb3V0KGBcXHUwMDFCWzM0bSR7cHJvZ3Jlc3MubmFtZS5wYWRTdGFydChuYW1lTGltaXQpfSAkeyhwZXJjZW50ICsgJyUnKS5wYWRTdGFydCg0LCAnICcpfSAkeyd8Jy5yZXBlYXQoTWF0aC5jZWlsKCgocHJvY2Vzcy5zdGRvdXQgYXMgYW55KS5jb2x1bW5zIC0gMSAtIDMgLSAxIC0gMSAtIG5hbWVMaW1pdCkgLyAxMDAgKiBwZXJjZW50KSl9YCk7XG5cdFx0Ly8gd3JpdGVFc2NhcGUoJzM0bScpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCg8SVByb2dyZXNzSXRlbT5wcm9ncmVzcykubmFtZS5wYWRTdGFydCgxOCwnICcpKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlRGF0ZShwcm9ncmVzcy50aW1lKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KChwZXJjZW50KyclJykucGFkU3RhcnQoNCwnICcpKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCd8Jy5yZXBlYXQoTWF0aC5jZWlsKCgoPGFueT5wcm9jZXNzLnN0ZG91dCkuY29sdW1ucy0xLTMtMS04LTEtMTgpLzEwMCpwZXJjZW50KSkpO1xuXHRcdGkrKztcblx0fVxuXG5cdHJlc3RvcmUoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZUNvbnNvbGVSZWNlaXZlciBleHRlbmRzIEJhc2ljUmVjZWl2ZXIge1xuXHRuYW1lTGltaXQ6IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvcihuYW1lTGltaXQgPSAxOCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5uYW1lTGltaXQgPSBuYW1lTGltaXQ7XG5cdH1cblxuXHR3cml0ZShkYXRhOiBhbnkpIHtcblx0XHRsZXQgeyBuYW1lTGltaXQgfSA9IHRoaXM7XG5cdFx0aWYgKE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NlcykubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRzdGFydEJ1ZmZlcmluZygpO1xuXHRcdH1cblx0XHRkYXRhLnN0cmluZyA9IHN0cmluZ2lmeURhdGEobmFtZUxpbWl0LCBkYXRhKTtcblx0XHQvLyBpZiAoZGF0YS5yZXBlYXRlZCkge1xuXHRcdC8vIFx0aWYoIXByb2Nlc3MuZW52Lk5PX0NPTExBUFNFKXtcblx0XHQvLyBcdFx0c2F2ZSgpO1xuXHRcdC8vIFx0XHR3cml0ZUVzY2FwZShkYXRhLnN0cmluZy5zcGxpdCgnXFxuJykubGVuZ3RoICsgJ0EnKTtcblx0XHQvLyBcdFx0Ly9kYXRhLnJlcGVhdHNcblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cdFx0c3dpdGNoIChkYXRhLnR5cGUpIHtcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuSURFTlQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUlkZW50RGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuREVFTlQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeURlZW50RGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuTE9HOlxuXHRcdFx0XHR3cml0ZUxvZ0RhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLkVSUk9SOlxuXHRcdFx0XHR3cml0ZUVycm9yRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuV0FSTklORzpcblx0XHRcdFx0d3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuREVCVUc6XG5cdFx0XHRcdHdyaXRlRGVidWdEYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJUOlxuXHRcdFx0XHR3cml0ZVN0ZG91dChzdHJpbmdpZnlUaW1lU3RhcnREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkgKyAnXFxuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5USU1FX0VORDpcblx0XHRcdFx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5VGltZUVuZERhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKSArICdcXG4nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlBST0dSRVNTX1NUQVJUOlxuXHRcdFx0XHRwcm9ncmVzc1N0YXJ0KG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19FTkQ6XG5cdFx0XHRcdHByb2dyZXNzRW5kKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTUzpcblx0XHRcdFx0cHJvZ3Jlc3MobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjb25zb2xlLl9sb2coZGF0YSk7XG5cdFx0fVxuXHRcdC8vIGlmIChkYXRhLnJlcGVhdGVkKSB7XG5cdFx0Ly8gXHRpZighcHJvY2Vzcy5lbnYuTk9fQ09MTEFQU0UpcmVzdG9yZSgpO1xuXHRcdC8vIH1cblx0XHQvLyBUT0RPOiBTdXBwb3J0IGZvciBub24tdHR5IHRlcm1pbmFsc1xuXHRcdGlmIChPYmplY3QudmFsdWVzKHByb2dyZXNzZXMpLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0cmVuZGVyUHJvZ3Jlc3MobmFtZUxpbWl0KTtcblx0XHRcdGZsdXNoQnVmZmVyKCk7XG5cdFx0fVxuXHR9XG59XG5cbmxldCB0ZXJtaW5hbExvZ2dlciA9IG5ldyBMb2dnZXIoJ3Rlcm1pbmFsJyk7XG5cbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZSA9PiB7XG5cdHRlcm1pbmFsTG9nZ2VyLmVycignVW5jYXVnaHRFeGNlcHRpb246Jyk7XG5cdHRlcm1pbmFsTG9nZ2VyLmVycihlLnN0YWNrKTtcblx0Ly8gcHJvY2Vzcy5leGl0KDApO1xufSk7XG5cbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIGUgPT4ge1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoJ1VuaGFuZGxlZFJlamVjdGlvbjonKTtcblx0dGVybWluYWxMb2dnZXIuZXJyKGUuc3RhY2spO1xuXHQvLyBwcm9jZXNzLmV4aXQoMCk7XG59KTtcblxuLy8gcHJvY2Vzcy5vbignd2FybmluZycsIGUgPT4ge1xuLy8gXHR0ZXJtaW5hbExvZ2dlci53YXJuKGUuc3RhY2spO1xuLy8gfSk7Il19 |
@@ -1,7 +0,9 @@ | ||
import {format} from 'util'; | ||
import Logger,{LOGGER_ACTIONS,BasicReceiver} from '../'; | ||
import {writeStdout, | ||
moveCursor, clearLine, save, restore, startBuffering, flushBuffer} from '@meteor-it/terminal'; | ||
import { format } from 'util'; | ||
import Logger, { LOGGER_ACTIONS, BasicReceiver } from '../'; | ||
import { | ||
writeStdout, | ||
moveCursor, clearLine, save, restore, startBuffering, flushBuffer | ||
} from '@meteor-it/terminal'; | ||
const ansiColors:{[key:string]:number[]} = { | ||
const ansiColors: { [key: string]: number[] } = { | ||
reset: [0, 0], | ||
@@ -37,3 +39,3 @@ | ||
function stringifyIdent(nameLimit:number, count:number, symbolNeeded:string = undefined) { | ||
function stringifyIdent(nameLimit: number, count: number, symbolNeeded: string = undefined) { | ||
return `${' '.repeat(count)}${symbolNeeded ? symbolNeeded : ' '}`; | ||
@@ -46,4 +48,4 @@ } | ||
// } | ||
function stringifyName(nameLimit:number, limit:number, name:string, escapeCode = '44m') { | ||
return `\u001B[${escapeCode}\u001B[1m${nameLimit===0?'':name.toString().padStart(nameLimit,' ')}\u001B[0m`; | ||
function stringifyName(nameLimit: number, limit: number, name: string, escapeCode = '44m') { | ||
return `\u001B[${escapeCode}\u001B[1m${nameLimit === 0 ? '' : name.toString().padStart(nameLimit, ' ')}\u001B[0m`; | ||
} | ||
@@ -63,26 +65,26 @@ // function writeRepeats(count, none = false) { | ||
// } | ||
function stringifyIdentData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
function stringifyIdentData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
// writeRepeats(0, true); | ||
// writeDate(data.time); | ||
return ` ${stringifyName(nameLimit, provider.nameLimit,data.name)} \u001B[35m${stringifyIdent(nameLimit, data.identationLength-1,'>')}\u001B[1m ${data.identName}\u001B[0m`; | ||
return ` ${stringifyName(nameLimit, provider.nameLimit, data.name)} \u001B[35m${stringifyIdent(nameLimit, data.identationLength - 1, '>')}\u001B[1m ${data.identName}\u001B[0m`; | ||
} | ||
function stringifyDeentData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
function stringifyDeentData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
// writeRepeats(0, true); | ||
// writeDate(data.time); | ||
return ` ${stringifyName(nameLimit, provider.nameLimit,data.name)} \u001B[35m${stringifyIdent(nameLimit, data.identationLength,'<')}\u001B[1m ${data.identName}\u001B[22m (Done in ${data.identTime}ms)\u001B[0m`; | ||
return ` ${stringifyName(nameLimit, provider.nameLimit, data.name)} \u001B[35m${stringifyIdent(nameLimit, data.identationLength, '<')}\u001B[1m ${data.identName}\u001B[22m (Done in ${data.identTime}ms)\u001B[0m`; | ||
} | ||
function stringifyTimeStartData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
function stringifyTimeStartData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
// writeRepeats(0, true); | ||
// writeDate(data.time); | ||
return ` \u001B[35m${stringifyName(nameLimit, provider.nameLimit,data.name,'1m')}\u001B[33m${stringifyIdent(nameLimit, data.identationLength)} T Started ${data.timeName}`; | ||
return ` \u001B[35m${stringifyName(nameLimit, provider.nameLimit, data.name, '1m')}\u001B[33m${stringifyIdent(nameLimit, data.identationLength)} T Started ${data.timeName}`; | ||
} | ||
function stringifyTimeEndData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
function stringifyTimeEndData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
// writeRepeats(0, true); | ||
// writeDate(data.time); | ||
return ` \u001B[35m${stringifyName(nameLimit, provider.nameLimit,data.name,'1m')}\u001B[34m${stringifyIdent(nameLimit, data.identationLength)} T Finished ${data.timeName}\u001B[1m in ${data.timeTime}ms\u001B[0m`; | ||
return ` \u001B[35m${stringifyName(nameLimit, provider.nameLimit, data.name, '1m')}\u001B[34m${stringifyIdent(nameLimit, data.identationLength)} T Finished ${data.timeName}\u001B[1m in ${data.timeTime}ms\u001B[0m`; | ||
} | ||
function stringifyData(nameLimit:number, data:any) { | ||
function stringifyData(nameLimit: number, data: any) { | ||
let uncolored = format(data.line, ...data.params || []); | ||
return uncolored.replace(/{(\/?)([^}]+)}/g, (...d:any[]) => { | ||
if (!ansiColors[d[2]])return d[0]; | ||
return uncolored.replace(/{(\/?)([^}]+)}/g, (...d: any[]) => { | ||
if (!ansiColors[d[2]]) return d[0]; | ||
return '\u001B[' + ansiColors[d[2]][d[1] === '/' ? 1 : 0] + 'm'; | ||
@@ -92,9 +94,9 @@ }); | ||
// const STRIPPED_DATE=(new Date()).toLocaleTimeString().replace(/./g, ' '); | ||
function stringifyCommonData(nameLimit:number, escapeCode:string, provider:NodeConsoleReceiver, data:any) { | ||
function stringifyCommonData(nameLimit: number, escapeCode: string, provider: NodeConsoleReceiver, data: any) { | ||
// writeRepeats(data.repeats, false); | ||
// writeDate(data.time); | ||
const strings = data.string.split('\n'); | ||
let ret = ` \u001B[40m${stringifyName(nameLimit, provider.nameLimit, data.name, escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${strings.shift()}`; | ||
for(let string of strings){ | ||
ret += ` \n\u001B[40m${stringifyName(nameLimit, provider.nameLimit, ' |', escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${string}`; | ||
let ret = `\u001B[40m${stringifyName(nameLimit, provider.nameLimit, data.name, escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${strings.shift()}`; | ||
for (let string of strings) { | ||
ret += `\n\u001B[40m${stringifyName(nameLimit, provider.nameLimit, ' |', escapeCode)}\u001B[0m${stringifyIdent(nameLimit, data.identationLength)}${string}`; | ||
//`${stringifyIdent(data.identationLength)}${stringifyName(provider.nameLimit,'|',escapeCode)} ${string}\n`; | ||
@@ -104,13 +106,13 @@ } | ||
} | ||
function writeLogData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
writeStdout('\n'+stringifyCommonData(nameLimit, '34m',provider,data)); | ||
function writeLogData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
writeStdout(stringifyCommonData(nameLimit, '34m', provider, data) + '\n'); | ||
} | ||
function writeErrorData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
writeStdout('\n'+stringifyCommonData(nameLimit, '31m',provider,data)); | ||
function writeErrorData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
writeStdout(stringifyCommonData(nameLimit, '31m', provider, data) + '\n'); | ||
} | ||
function writeWarningData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
writeStdout('\n'+stringifyCommonData(nameLimit, '33m',provider,data)); | ||
function writeWarningData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
writeStdout(stringifyCommonData(nameLimit, '33m', provider, data) + '\n'); | ||
} | ||
function writeDebugData(nameLimit:number, provider:NodeConsoleReceiver, data:any) { | ||
writeStdout('\n'+stringifyCommonData(nameLimit, '90m',provider,data)); | ||
function writeDebugData(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
writeStdout(stringifyCommonData(nameLimit, '90m', provider, data) + '\n'); | ||
} | ||
@@ -121,39 +123,39 @@ | ||
progress: number, | ||
time:number | ||
time: number | ||
} | ||
const progresses:{[key:string]:IProgressItem}={}; | ||
function progressStart(nameLimit:number, provider:NodeConsoleReceiver,data:any){ | ||
progresses[data.name]={ | ||
name:data.name, | ||
progress:0, | ||
time:data.time | ||
const progresses: { [key: string]: IProgressItem } = {}; | ||
function progressStart(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
progresses[data.name] = { | ||
name: data.name, | ||
progress: 0, | ||
time: data.time | ||
}; | ||
} | ||
function progressEnd(nameLimit:number, provider:NodeConsoleReceiver,data:any){ | ||
function progressEnd(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
delete progresses[data.name]; | ||
} | ||
function progress(nameLimit:number, provider:NodeConsoleReceiver,data:any){ | ||
if(!progresses[data.name]) | ||
function progress(nameLimit: number, provider: NodeConsoleReceiver, data: any) { | ||
if (!progresses[data.name]) | ||
return; | ||
progresses[data.name].time=data.time; | ||
progresses[data.name].progress=data.progress; | ||
progresses[data.name].time = data.time; | ||
progresses[data.name].progress = data.progress; | ||
} | ||
function renderProgress(nameLimit:number){ | ||
function renderProgress(nameLimit: number) { | ||
save(); | ||
let i=0; | ||
for(let progress of Object.values(progresses)) { | ||
moveCursor(i); | ||
clearLine(); | ||
let percent=Math.ceil(progress.progress); | ||
writeStdout(`\u001B[34m${progress.name.padStart(nameLimit)} ${(percent + '%').padStart(4, ' ')} ${'|'.repeat(Math.ceil(((process.stdout as any).columns - 1 - 3 - 1 - 1 - nameLimit) / 100 * percent))}`); | ||
// writeEscape('34m'); | ||
// writeStdout((<IProgressItem>progress).name.padStart(18,' ')); | ||
// writeStdout(' '); | ||
// writeDate(progress.time); | ||
// writeStdout(' '); | ||
// writeStdout((percent+'%').padStart(4,' ')); | ||
// writeStdout(' '); | ||
// writeStdout('|'.repeat(Math.ceil(((<any>process.stdout).columns-1-3-1-8-1-18)/100*percent))); | ||
i++; | ||
} | ||
let i = 0; | ||
for (let progress of Object.values(progresses)) { | ||
moveCursor(i); | ||
clearLine(); | ||
let percent = Math.ceil(progress.progress); | ||
writeStdout(`\u001B[34m${progress.name.padStart(nameLimit)} ${(percent + '%').padStart(4, ' ')} ${'|'.repeat(Math.ceil(((process.stdout as any).columns - 1 - 3 - 1 - 1 - nameLimit) / 100 * percent))}`); | ||
// writeEscape('34m'); | ||
// writeStdout((<IProgressItem>progress).name.padStart(18,' ')); | ||
// writeStdout(' '); | ||
// writeDate(progress.time); | ||
// writeStdout(' '); | ||
// writeStdout((percent+'%').padStart(4,' ')); | ||
// writeStdout(' '); | ||
// writeStdout('|'.repeat(Math.ceil(((<any>process.stdout).columns-1-3-1-8-1-18)/100*percent))); | ||
i++; | ||
} | ||
@@ -164,3 +166,3 @@ restore(); | ||
export default class NodeConsoleReceiver extends BasicReceiver { | ||
nameLimit:number; | ||
nameLimit: number; | ||
@@ -172,7 +174,7 @@ constructor(nameLimit = 18) { | ||
write(data:any) { | ||
let {nameLimit} = this; | ||
if(Object.values(progresses).length!==0) { | ||
startBuffering(); | ||
} | ||
write(data: any) { | ||
let { nameLimit } = this; | ||
if (Object.values(progresses).length !== 0) { | ||
startBuffering(); | ||
} | ||
data.string = stringifyData(nameLimit, data); | ||
@@ -188,6 +190,6 @@ // if (data.repeated) { | ||
case LOGGER_ACTIONS.IDENT: | ||
writeStdout('\n'+stringifyIdentData(nameLimit, this, data)); | ||
writeStdout(stringifyIdentData(nameLimit, this, data) + '\n'); | ||
break; | ||
case LOGGER_ACTIONS.DEENT: | ||
writeStdout('\n'+stringifyDeentData(nameLimit, this, data)); | ||
writeStdout(stringifyDeentData(nameLimit, this, data) + '\n'); | ||
break; | ||
@@ -207,6 +209,6 @@ case LOGGER_ACTIONS.LOG: | ||
case LOGGER_ACTIONS.TIME_START: | ||
writeStdout('\n'+stringifyTimeStartData(nameLimit, this, data)); | ||
writeStdout(stringifyTimeStartData(nameLimit, this, data) + '\n'); | ||
break; | ||
case LOGGER_ACTIONS.TIME_END: | ||
writeStdout('\n'+stringifyTimeEndData(nameLimit, this, data)); | ||
writeStdout(stringifyTimeEndData(nameLimit, this, data) + '\n'); | ||
break; | ||
@@ -217,6 +219,6 @@ case LOGGER_ACTIONS.PROGRESS_START: | ||
case LOGGER_ACTIONS.PROGRESS_END: | ||
progressEnd(nameLimit, this,data); | ||
progressEnd(nameLimit, this, data); | ||
break; | ||
case LOGGER_ACTIONS.PROGRESS: | ||
progress(nameLimit, this,data); | ||
progress(nameLimit, this, data); | ||
break; | ||
@@ -229,11 +231,11 @@ default: | ||
// } | ||
// TODO: Support for non-tty terminals | ||
if(Object.values(progresses).length!==0) { | ||
renderProgress(nameLimit); | ||
flushBuffer(); | ||
} | ||
// TODO: Support for non-tty terminals | ||
if (Object.values(progresses).length !== 0) { | ||
renderProgress(nameLimit); | ||
flushBuffer(); | ||
} | ||
} | ||
} | ||
let terminalLogger=new Logger('terminal'); | ||
let terminalLogger = new Logger('terminal'); | ||
@@ -240,0 +242,0 @@ process.on('uncaughtException', e => { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
98993
1551