| 1234567891011121314151617181920212223242526272829303132333435363738 | const {inspect} = require('util');/////////////////////////////////////////////////////////////// Returns {line, column} of an index within multi-line text.function getIndexPos(text, index) {    let lineIdx = 0, colIdx = index, pos = 0;    do {        pos = text.indexOf('\n', pos);        if (pos === -1 || index < pos + 1) {            break;        }        lineIdx++;        pos++;        colIdx = index - pos;    } while (pos < index);    return {        line: lineIdx + 1,        column: colIdx + 1    };}///////////////////////////////////////////// Returns a space gap for console output.function messageGap(level) {    return ' '.repeat(level * 4);}////////////////////////////////////////////////////// Type inspectionfunction addInspection(type, cb) {    type[inspect.custom] = cb;}module.exports = {    getIndexPos,    messageGap,    addInspection};
 |