sequelize-log-syntax-colors
Version:
Colors for sequilize console output. Supporting basic MySQL syntax.
42 lines • 2.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var chalk_1 = __importDefault(require("chalk"));
var keywords_1 = require("./keywords");
function highlightSQL(text, _a) {
var _b = _a === void 0 ? {} : _a, _c = _b.capitalizeKeywords, capitalizeKeywords = _c === void 0 ? false : _c;
// just store original
// to compare for
var newText = text;
// first we need to find keywords used in string
var presentKeywords = (0, keywords_1.extractKeywords)(text);
// regex time
// looking for defaults
newText = newText.replace(/Executing \(default\): /g, "");
// strings - text inside single quotes and backticks
newText = newText.replace(/(['`].*?['`])/g, chalk_1.default.green("$1"));
// numbers - same color as strings
newText = newText.replace(/ (\d+)/g, " " + chalk_1.default.green("$1"));
// special chars
newText = newText.replace(/(=|%|\/|\*|-|,|;|:|\+|<|>)/g, chalk_1.default.yellow("$1"));
// functions - any string followed by a '('
newText = newText.replace(/(\w*?)\(/g, chalk_1.default.red("$1") + "(");
// brackets - same as special chars
// eslint-disable-next-line
newText = newText.replace(/([\(\)])/g, chalk_1.default.yellow("$1"));
// reserved mysql keywords present in string
for (var _i = 0, presentKeywords_1 = presentKeywords; _i < presentKeywords_1.length; _i++) {
var keyWord = presentKeywords_1[_i];
var replace = keyWord;
// regex pattern will be formulated based on the array values surrounded by word boundaries. since the replace function does not accept a string as a regex pattern, we will use a regex object this time
if (capitalizeKeywords && keywords_1.keywordsMap[keyWord]) {
replace = keywords_1.keywordsMap[keyWord];
}
newText = newText.replace(keywords_1.regexMap[keyWord], chalk_1.default.magenta(replace));
}
return newText;
}
exports.default = highlightSQL;
//# sourceMappingURL=index.js.map