find-process
Version:
find process info by port/pid/name etc.
145 lines • 3.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const child_process_1 = require("child_process");
const UNIT_MB = 1024 * 1024;
const utils = {
/**
* exec command with maxBuffer size
*/
exec(cmd, callback) {
const options = {
maxBuffer: 2 * UNIT_MB,
windowsHide: true
};
(0, child_process_1.exec)(cmd, options, callback);
},
/**
* spawn command
*/
spawn(cmd, args, options) {
return (0, child_process_1.spawn)(cmd, args, options);
},
/**
* Strip top lines of text
*
* @param {String} text
* @param {Number} num
* @return {String}
*/
stripLine(text, num) {
let idx = 0;
while (num-- > 0) {
const nIdx = text.indexOf('\n', idx);
if (nIdx >= 0) {
idx = nIdx + 1;
}
}
return idx > 0 ? text.substring(idx) : text;
},
/**
* Split string and stop at max parts
*
* @param {Number} line
* @param {Number} max
* @return {Array}
*/
split(line, max) {
const cols = line.trim().split(/\s+/);
if (cols.length > max) {
cols[max - 1] = cols.slice(max - 1).join(' ');
}
return cols;
},
/**
* Extract columns from table text
*
* Example:
*
* ```
* extractColumns(text, [0, 2], 3)
* ```
*
* From:
* ```
* foo bar bar2
* valx valy valz
* ```
*
* To:
* ```
* [ ['foo', 'bar2'], ['valx', 'valz'] ]
* ```
*
* @param {String} text raw table text
* @param {Array} idxes the column index list to extract
* @param {Number} max max column number of table
* @return {Array}
*/
extractColumns(text, idxes, max) {
const lines = text.split(/(\r\n|\n|\r)/);
const columns = [];
if (!max) {
max = Math.max.apply(null, idxes) + 1;
}
lines.forEach(line => {
const cols = utils.split(line, max);
const column = [];
idxes.forEach(idx => {
column.push(cols[idx] || '');
});
columns.push(column);
});
return columns;
},
/**
* parse table text to array
*
* From:
* ```
* Header1 : foo
* Header2 : bar
* Header3 : val
*
* Header1 : foo2
* Header2 : bar2
* Header3 : val2
* ```
*
* To:
* ```
* [{ Header1: 'foo', Header2: 'bar', Header3: 'val' }, ...]
* ```
*
* @param {String} data raw table data
* @return {Array}
*/
parseTable(data) {
const lines = data.split(/(\r\n\r\n|\r\n\n|\n\r\n|\n\n)/).filter(line => {
return line && line.trim().length > 0;
}).map((e) => e.split(/(\r\n|\n|\r)/).filter(line => line.trim().length > 0));
// Join multi-ligne value
lines.forEach((line) => {
for (let index = 0; line[index];) {
const entry = line[index];
if (entry.startsWith(' ')) {
line[index - 1] += entry.trimLeft();
line.splice(index, 1);
}
else {
index += 1;
}
}
});
return lines.map(line => {
const row = {};
line.forEach((string) => {
const splitterIndex = string.indexOf(':');
const key = string.slice(0, splitterIndex).trim();
row[key] = string.slice(splitterIndex + 1).trim();
});
return row;
});
}
};
exports.default = utils;
//# sourceMappingURL=utils.js.map