UNPKG

ottoman

Version:
68 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeReservedWords = exports.parseStringSelectExpr = exports.escapeFromClause = void 0; const helpers_1 = require("./helpers"); const replaceList = ['ALL', 'DISTINCT', 'RAW', 'ELEMENT', 'VALUE']; const escapeFromClause = (str) => { const trimStr = str.trim(); const [collection, ...rest] = trimStr.split(' '); const parts = collection.split('.'); const result = []; for (const part of parts) { const cleanBacksticks = part.replace(/`/g, ''); result.push(`\`${cleanBacksticks}\``); } return `${result.join('.')}${rest.length > 0 ? ` ${rest.map((item) => item.replace(/`/g, '')).join(' ')}` : ''}`; }; exports.escapeFromClause = escapeFromClause; /** * Convert select expression into an Array of selection keys * */ const parseStringSelectExpr = (expr) => { if (expr.indexOf(',') === -1 && expr.indexOf(' as ') === -1) { return [expr]; } let resultExpr = expr.replace(/[()]/g, ''); replaceList.forEach((value) => { resultExpr = resultExpr.replace(new RegExp(`/[${value}]/`, 'g'), ''); }); return resultExpr.split(',').map((v) => { return extractAsValue(v); }); }; exports.parseStringSelectExpr = parseStringSelectExpr; /** * @ignore * */ const extractAsValue = (expr) => { const result = expr.toLowerCase().split(' as '); if (result.length === 2) { return result[1].trim(); } return expr.trim(); }; /** * @ignore */ const escapeReservedWords = (field) => { if (helpers_1.n1qlReservedWords.includes(field.toUpperCase())) { return `\`${field}\``; } if (field.match(/(\-)|(\.)|(\[\d+\])/g)) { let expr = field; expr = expr .split('.') .map((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