UNPKG

@stoqey/sofa

Version:
56 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeReservedWords = exports.parseStringSelectExpr = void 0; var helpers_1 = require("./helpers"); var replaceList = ['ALL', 'DISTINCT', 'RAW', 'ELEMENT', 'VALUE']; /** * Convert select expression into an Array of selection keys * */ var parseStringSelectExpr = function (expr) { if (expr.indexOf(',') === -1 && expr.indexOf(' as ') === -1) { return [expr]; } var resultExpr = expr.replace(/[()]/g, ''); replaceList.forEach(function (value) { resultExpr = resultExpr.replace(new RegExp("/[" + value + "]/", 'g'), ''); }); return resultExpr.split(',').map(function (v) { return extractAsValue(v); }); }; exports.parseStringSelectExpr = parseStringSelectExpr; /** * @ignore * */ var extractAsValue = function (expr) { var result = expr.toLowerCase().split(' as '); if (result.length === 2) { return result[1].trim(); } return expr.trim(); }; /** * @ignore */ var escapeReservedWords = function (field) { if (helpers_1.n1qlReservedWords.includes(field.toUpperCase())) { return "`" + field + "`"; } if (field.match(/(\-)|(\.)|(\[\d+\])/g)) { var expr = field; expr = expr .split('.') .map(function (value) { if (helpers_1.n1qlReservedWords.includes(value.toUpperCase())) { return "`" + value + "`"; } return value; }) .join('.'); expr = expr.replace(/([a-z0-9]*\-[a-z0-9]*)/g, '`$&`'); return expr; } return field; }; exports.escapeReservedWords = escapeReservedWords; //# sourceMappingURL=utils.js.map