UNPKG

opennms

Version:

Client API for the OpenNMS network monitoring platform

1 lines 24 kB
{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/cli-table2/src/utils.js","dependencies":[{"path":"/data/node_modules/cli-table2/src/utils.js","mtime":1553611387012},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992}],"contextDependencies":[],"result":["'use strict';\n\nvar _ = require('lodash');\nvar stringWidth = require('string-width');\n\nfunction codeRegex(capture) {\n return capture ? /\\u001b\\[((?:\\d*;){0,5}\\d*)m/g : /\\u001b\\[(?:\\d*;){0,5}\\d*m/g;\n}\n\nfunction strlen(str) {\n var code = codeRegex();\n var stripped = (\"\" + str).replace(code, '');\n var split = stripped.split(\"\\n\");\n return split.reduce(function (memo, s) {\n return stringWidth(s) > memo ? stringWidth(s) : memo;\n }, 0);\n}\n\nfunction repeat(str, times) {\n return Array(times + 1).join(str);\n}\n\nfunction pad(str, len, pad, dir) {\n var length = strlen(str);\n if (len + 1 >= length) {\n var padlen = len - length;\n switch (dir) {\n case 'right':\n str = repeat(pad, padlen) + str;\n break;\n\n case 'center':\n var right = Math.ceil(padlen / 2);\n var left = padlen - right;\n str = repeat(pad, left) + str + repeat(pad, right);\n break;\n\n default:\n str = str + repeat(pad, padlen);\n break;\n }\n }\n return str;\n}\n\nvar codeCache = {};\n\nfunction addToCodeCache(name, on, off) {\n on = '\\x1B[' + on + 'm';\n off = '\\x1B[' + off + 'm';\n codeCache[on] = { set: name, to: true };\n codeCache[off] = { set: name, to: false };\n codeCache[name] = { on: on, off: off };\n}\n\n//https://github.com/Marak/colors.js/blob/master/lib/styles.js\naddToCodeCache('bold', 1, 22);\naddToCodeCache('italics', 3, 23);\naddToCodeCache('underline', 4, 24);\naddToCodeCache('inverse', 7, 27);\naddToCodeCache('strikethrough', 9, 29);\n\nfunction updateState(state, controlChars) {\n var controlCode = controlChars[1] ? parseInt(controlChars[1].split(';')[0]) : 0;\n if (controlCode >= 30 && controlCode <= 39 || controlCode >= 90 && controlCode <= 97) {\n state.lastForegroundAdded = controlChars[0];\n return;\n }\n if (controlCode >= 40 && controlCode <= 49 || controlCode >= 100 && controlCode <= 107) {\n state.lastBackgroundAdded = controlChars[0];\n return;\n }\n if (controlCode === 0) {\n for (var i in state) {\n /* istanbul ignore else */\n if (state.hasOwnProperty(i)) {\n delete state[i];\n }\n }\n return;\n }\n var info = codeCache[controlChars[0]];\n if (info) {\n state[info.set] = info.to;\n }\n}\n\nfunction readState(line) {\n var code = codeRegex(true);\n var controlChars = code.exec(line);\n var state = {};\n while (controlChars !== null) {\n updateState(state, controlChars);\n controlChars = code.exec(line);\n }\n return state;\n}\n\nfunction unwindState(state, ret) {\n var lastBackgroundAdded = state.lastBackgroundAdded;\n var lastForegroundAdded = state.lastForegroundAdded;\n\n delete state.lastBackgroundAdded;\n delete state.lastForegroundAdded;\n\n _.forEach(state, function (value, key) {\n if (value) {\n ret += codeCache[key].off;\n }\n });\n\n if (lastBackgroundAdded && lastBackgroundAdded != '\\x1B[49m') {\n ret += '\\x1B[49m';\n }\n if (lastForegroundAdded && lastForegroundAdded != '\\x1B[39m') {\n ret += '\\x1B[39m';\n }\n\n return ret;\n}\n\nfunction rewindState(state, ret) {\n var lastBackgroundAdded = state.lastBackgroundAdded;\n var lastForegroundAdded = state.lastForegroundAdded;\n\n delete state.lastBackgroundAdded;\n delete state.lastForegroundAdded;\n\n _.forEach(state, function (value, key) {\n if (value) {\n ret = codeCache[key].on + ret;\n }\n });\n\n if (lastBackgroundAdded && lastBackgroundAdded != '\\x1B[49m') {\n ret = lastBackgroundAdded + ret;\n }\n if (lastForegroundAdded && lastForegroundAdded != '\\x1B[39m') {\n ret = lastForegroundAdded + ret;\n }\n\n return ret;\n}\n\nfunction truncateWidth(str, desiredLength) {\n if (str.length === strlen(str)) {\n return str.substr(0, desiredLength);\n }\n\n while (strlen(str) > desiredLength) {\n str = str.slice(0, -1);\n }\n\n return str;\n}\n\nfunction truncateWidthWithAnsi(str, desiredLength) {\n var code = codeRegex(true);\n var split = str.split(codeRegex());\n var splitIndex = 0;\n var retLen = 0;\n var ret = '';\n var myArray;\n var state = {};\n\n while (retLen < desiredLength) {\n myArray = code.exec(str);\n var toAdd = split[splitIndex];\n splitIndex++;\n if (retLen + strlen(toAdd) > desiredLength) {\n toAdd = truncateWidth(toAdd, desiredLength - retLen);\n }\n ret += toAdd;\n retLen += strlen(toAdd);\n\n if (retLen < desiredLength) {\n if (!myArray) {\n break;\n } // full-width chars may cause a whitespace which cannot be filled\n ret += myArray[0];\n updateState(state, myArray);\n }\n }\n\n return unwindState(state, ret);\n}\n\nfunction truncate(str, desiredLength, truncateChar) {\n truncateChar = truncateChar || '…';\n var lengthOfStr = strlen(str);\n if (lengthOfStr <= desiredLength) {\n return str;\n }\n desiredLength -= strlen(truncateChar);\n\n ret = truncateWidthWithAnsi(str, desiredLength);\n\n return ret + truncateChar;\n}\n\nfunction defaultOptions() {\n return {\n chars: {\n 'top': '─',\n 'top-mid': '┬',\n 'top-left': '┌',\n 'top-right': '┐',\n 'bottom': '─',\n 'bottom-mid': '┴',\n 'bottom-left': '└',\n 'bottom-right': '┘',\n 'left': '│',\n 'left-mid': '├',\n 'mid': '─',\n 'mid-mid': '┼',\n 'right': '│',\n 'right-mid': '┤',\n 'middle': '│'\n },\n truncate: '…',\n colWidths: [],\n rowHeights: [],\n colAligns: [],\n rowAligns: [],\n style: {\n 'padding-left': 1,\n 'padding-right': 1,\n head: ['red'],\n border: ['grey'],\n compact: false\n },\n head: []\n };\n}\n\nfunction mergeOptions(options, defaults) {\n options = options || {};\n defaults = defaults || defaultOptions();\n var ret = _.extend({}, defaults, options);\n ret.chars = _.extend({}, defaults.chars, options.chars);\n ret.style = _.extend({}, defaults.style, options.style);\n return ret;\n}\n\nfunction wordWrap(maxLength, input) {\n var lines = [];\n var split = input.split(/(\\s+)/g);\n var line = [];\n var lineLength = 0;\n var whitespace;\n for (var i = 0; i < split.length; i += 2) {\n var word = split[i];\n var newLength = lineLength + strlen(word);\n if (lineLength > 0 && whitespace) {\n newLength += whitespace.length;\n }\n if (newLength > maxLength) {\n if (lineLength !== 0) {\n lines.push(line.join(''));\n }\n line = [word];\n lineLength = strlen(word);\n } else {\n line.push(whitespace || '', word);\n lineLength = newLength;\n }\n whitespace = split[i + 1];\n }\n if (lineLength) {\n lines.push(line.join(''));\n }\n return lines;\n}\n\nfunction multiLineWordWrap(maxLength, input) {\n var output = [];\n input = input.split('\\n');\n for (var i = 0; i < input.length; i++) {\n output.push.apply(output, wordWrap(maxLength, input[i]));\n }\n return output;\n}\n\nfunction colorizeLines(input) {\n var state = {};\n var output = [];\n for (var i = 0; i < input.length; i++) {\n var line = rewindState(state, input[i]);\n state = readState(line);\n var temp = _.extend({}, state);\n output.push(unwindState(temp, line));\n }\n return output;\n}\n\nmodule.exports = {\n strlen: strlen,\n repeat: repeat,\n pad: pad,\n truncate: truncate,\n mergeOptions: mergeOptions,\n wordWrap: multiLineWordWrap,\n colorizeLines: colorizeLines\n};",{"version":3,"sources":["node_modules/cli-table2/src/utils.js"],"names":["_","require","stringWidth","codeRegex","capture","strlen","str","code","stripped","replace","split","reduce","memo","s","repeat","times","Array","join","pad","len","dir","length","padlen","right","Math","ceil","left","codeCache","addToCodeCache","name","on","off","set","to","updateState","state","controlChars","controlCode","parseInt","lastForegroundAdded","lastBackgroundAdded","i","hasOwnProperty","info","readState","line","exec","unwindState","ret","forEach","value","key","rewindState","truncateWidth","desiredLength","substr","slice","truncateWidthWithAnsi","splitIndex","retLen","myArray","toAdd","truncate","truncateChar","lengthOfStr","defaultOptions","chars","colWidths","rowHeights","colAligns","rowAligns","style","head","border","compact","mergeOptions","options","defaults","extend","wordWrap","maxLength","input","lines","lineLength","whitespace","word","newLength","push","multiLineWordWrap","output","apply","colorizeLines","temp","module","exports"],"mappings":"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","file":"utils.js","sourceRoot":"/data","sourcesContent":["var _ = require('lodash');\nvar stringWidth = require('string-width');\n\nfunction codeRegex(capture){\n return capture ? /\\u001b\\[((?:\\d*;){0,5}\\d*)m/g : /\\u001b\\[(?:\\d*;){0,5}\\d*m/g\n}\n\nfunction strlen(str){\n var code = codeRegex();\n var stripped = (\"\" + str).replace(code,'');\n var split = stripped.split(\"\\n\");\n return split.reduce(function (memo, s) { return (stringWidth(s) > memo) ? stringWidth(s) : memo }, 0);\n}\n\nfunction repeat(str,times){\n return Array(times + 1).join(str);\n}\n\nfunction pad(str, len, pad, dir) {\n var length = strlen(str);\n if (len + 1 >= length) {\n var padlen = len - length;\n switch (dir) {\n case 'right':\n str = repeat(pad, padlen) + str;\n break;\n\n case 'center':\n var right = Math.ceil((padlen) / 2);\n var left = padlen - right;\n str = repeat(pad, left) + str + repeat(pad, right);\n break;\n\n default :\n str = str + repeat(pad,padlen);\n break;\n }\n }\n return str;\n}\n\nvar codeCache = {};\n\nfunction addToCodeCache(name,on,off){\n on = '\\u001b[' + on + 'm';\n off = '\\u001b[' + off + 'm';\n codeCache[on] = {set:name,to:true};\n codeCache[off] = {set:name,to:false};\n codeCache[name] = {on:on,off:off};\n}\n\n//https://github.com/Marak/colors.js/blob/master/lib/styles.js\naddToCodeCache('bold', 1, 22);\naddToCodeCache('italics', 3, 23);\naddToCodeCache('underline', 4, 24);\naddToCodeCache('inverse', 7, 27);\naddToCodeCache('strikethrough', 9, 29);\n\n\nfunction updateState(state, controlChars){\n var controlCode = controlChars[1] ? parseInt(controlChars[1].split(';')[0]) : 0;\n if ( (controlCode >= 30 && controlCode <= 39)\n || (controlCode >= 90 && controlCode <= 97)\n ) {\n state.lastForegroundAdded = controlChars[0];\n return;\n }\n if ( (controlCode >= 40 && controlCode <= 49)\n || (controlCode >= 100 && controlCode <= 107)\n ) {\n state.lastBackgroundAdded = controlChars[0];\n return;\n }\n if (controlCode === 0) {\n for (var i in state) {\n /* istanbul ignore else */\n if (state.hasOwnProperty(i)) {\n delete state[i];\n }\n }\n return;\n }\n var info = codeCache[controlChars[0]];\n if (info) {\n state[info.set] = info.to;\n }\n}\n\nfunction readState(line){\n var code = codeRegex(true);\n var controlChars = code.exec(line);\n var state = {};\n while(controlChars !== null){\n updateState(state, controlChars);\n controlChars = code.exec(line);\n }\n return state;\n}\n\nfunction unwindState(state,ret){\n var lastBackgroundAdded = state.lastBackgroundAdded;\n var lastForegroundAdded = state.lastForegroundAdded;\n\n delete state.lastBackgroundAdded;\n delete state.lastForegroundAdded;\n\n _.forEach(state,function(value,key){\n if(value){\n ret += codeCache[key].off;\n }\n });\n\n if(lastBackgroundAdded && (lastBackgroundAdded != '\\u001b[49m')){\n ret += '\\u001b[49m';\n }\n if(lastForegroundAdded && (lastForegroundAdded != '\\u001b[39m')){\n ret += '\\u001b[39m';\n }\n\n return ret;\n}\n\nfunction rewindState(state,ret){\n var lastBackgroundAdded = state.lastBackgroundAdded;\n var lastForegroundAdded = state.lastForegroundAdded;\n\n delete state.lastBackgroundAdded;\n delete state.lastForegroundAdded;\n\n _.forEach(state,function(value,key){\n if(value){\n ret = codeCache[key].on + ret;\n }\n });\n\n if(lastBackgroundAdded && (lastBackgroundAdded != '\\u001b[49m')){\n ret = lastBackgroundAdded + ret;\n }\n if(lastForegroundAdded && (lastForegroundAdded != '\\u001b[39m')){\n ret = lastForegroundAdded + ret;\n }\n\n return ret;\n}\n\nfunction truncateWidth(str, desiredLength){\n if (str.length === strlen(str)) {\n return str.substr(0, desiredLength);\n }\n\n while (strlen(str) > desiredLength){\n str = str.slice(0, -1);\n }\n\n return str;\n}\n\nfunction truncateWidthWithAnsi(str, desiredLength){\n var code = codeRegex(true);\n var split = str.split(codeRegex());\n var splitIndex = 0;\n var retLen = 0;\n var ret = '';\n var myArray;\n var state = {};\n\n while(retLen < desiredLength){\n myArray = code.exec(str);\n var toAdd = split[splitIndex];\n splitIndex++;\n if (retLen + strlen(toAdd) > desiredLength){\n toAdd = truncateWidth(toAdd, desiredLength - retLen);\n }\n ret += toAdd;\n retLen += strlen(toAdd);\n\n if(retLen < desiredLength){\n if (!myArray) { break; } // full-width chars may cause a whitespace which cannot be filled\n ret += myArray[0];\n updateState(state,myArray);\n }\n }\n\n return unwindState(state,ret);\n}\n\nfunction truncate(str, desiredLength, truncateChar){\n truncateChar = truncateChar || '…';\n var lengthOfStr = strlen(str);\n if(lengthOfStr <= desiredLength){\n return str;\n }\n desiredLength -= strlen(truncateChar);\n\n ret = truncateWidthWithAnsi(str, desiredLength);\n\n return ret + truncateChar;\n}\n\n\nfunction defaultOptions(){\n return{\n chars: {\n 'top': '─'\n , 'top-mid': '┬'\n , 'top-left': '┌'\n , 'top-right': '┐'\n , 'bottom': '─'\n , 'bottom-mid': '┴'\n , 'bottom-left': '└'\n , 'bottom-right': '┘'\n , 'left': '│'\n , 'left-mid': '├'\n , 'mid': '─'\n , 'mid-mid': '┼'\n , 'right': '│'\n , 'right-mid': '┤'\n , 'middle': '│'\n }\n , truncate: '…'\n , colWidths: []\n , rowHeights: []\n , colAligns: []\n , rowAligns: []\n , style: {\n 'padding-left': 1\n , 'padding-right': 1\n , head: ['red']\n , border: ['grey']\n , compact : false\n }\n , head: []\n };\n}\n\nfunction mergeOptions(options,defaults){\n options = options || {};\n defaults = defaults || defaultOptions();\n var ret = _.extend({}, defaults, options);\n ret.chars = _.extend({}, defaults.chars, options.chars);\n ret.style = _.extend({}, defaults.style, options.style);\n return ret;\n}\n\nfunction wordWrap(maxLength,input){\n var lines = [];\n var split = input.split(/(\\s+)/g);\n var line = [];\n var lineLength = 0;\n var whitespace;\n for (var i = 0; i < split.length; i += 2) {\n var word = split[i];\n var newLength = lineLength + strlen(word);\n if (lineLength > 0 && whitespace) {\n newLength += whitespace.length;\n }\n if(newLength > maxLength){\n if(lineLength !== 0){\n lines.push(line.join(''));\n }\n line = [word];\n lineLength = strlen(word);\n } else {\n line.push(whitespace || '', word);\n lineLength = newLength;\n }\n whitespace = split[i+1];\n }\n if(lineLength){\n lines.push(line.join(''));\n }\n return lines;\n}\n\nfunction multiLineWordWrap(maxLength, input){\n var output = [];\n input = input.split('\\n');\n for(var i = 0; i < input.length; i++){\n output.push.apply(output,wordWrap(maxLength,input[i]));\n }\n return output;\n}\n\nfunction colorizeLines(input){\n var state = {};\n var output = [];\n for(var i = 0; i < input.length; i++){\n var line = rewindState(state,input[i]) ;\n state = readState(line);\n var temp = _.extend({},state);\n output.push(unwindState(temp,line));\n }\n return output;\n}\n\nmodule.exports = {\n strlen:strlen,\n repeat:repeat,\n pad:pad,\n truncate:truncate,\n mergeOptions:mergeOptions,\n wordWrap:multiLineWordWrap,\n colorizeLines:colorizeLines\n};\n"]}]}