@jitterbit/soql-parser-js
Version:
Salesforce.com SOQL parser and composer
249 lines (248 loc) • 10 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getWhereValue = exports.isArrayOperator = exports.isGroupByFn = exports.isGroupByField = exports.isOrderByFn = exports.isOrderByField = exports.isValueQueryCondition = exports.isNegationCondition = exports.isValueFunctionCondition = exports.isValueWithDateNLiteralCondition = exports.isValueWithDateLiteralCondition = exports.isValueCondition = exports.isWhereOrHavingClauseWithRightCondition = exports.isHavingClauseWithRightCondition = exports.isWhereClauseWithRightCondition = exports.isFieldSubquery = exports.isSubquery = exports.isComposeFieldTypeof = exports.isComposeFieldSubquery = exports.isComposeFieldRelationship = exports.isComposeFieldFunction = exports.isComposeField = exports.hasAlias = exports.isNestedParamAggregateFunction = exports.getParams = exports.generateParens = exports.pad = exports.getAsArrayStr = exports.getLastItem = exports.getIfTrue = exports.get = exports.isNil = exports.isObject = exports.isBoolean = exports.isNumber = exports.isStringArray = exports.isString = exports.isSubqueryFromFlag = exports.isToken = void 0;
function isToken(val) {
val = Array.isArray(val) ? val[0] : val;
return val.image && true;
}
exports.isToken = isToken;
function isSubqueryFromFlag(val, isSubquery) {
return isSubquery;
}
exports.isSubqueryFromFlag = isSubqueryFromFlag;
function isString(val) {
return typeof val === 'string';
}
exports.isString = isString;
function isStringArray(val) {
if (!val) {
return false;
}
return val.every(function (item) { return isString(item); });
}
exports.isStringArray = isStringArray;
function isNumber(val) {
return Number.isFinite(val);
}
exports.isNumber = isNumber;
function isBoolean(val) {
return typeof val === typeof true;
}
exports.isBoolean = isBoolean;
function isObject(val) {
return val instanceof Object;
}
exports.isObject = isObject;
function isNil(val) {
return val === null || val === undefined;
}
exports.isNil = isNil;
function get(val, suffix, prefix) {
return isNil(val) ? '' : "".concat(prefix || '').concat(val).concat(suffix || '');
}
exports.get = get;
function getIfTrue(val, returnStr) {
return isBoolean(val) && val ? returnStr : '';
}
exports.getIfTrue = getIfTrue;
function getLastItem(arr) {
return arr[arr.length - 1];
}
exports.getLastItem = getLastItem;
function getAsArrayStr(val, alwaysParens) {
if (alwaysParens === void 0) { alwaysParens = false; }
if (Array.isArray(val)) {
if (val.length > 0) {
return "(".concat(val.join(', '), ")");
}
else {
return alwaysParens ? '()' : '';
}
}
else {
return alwaysParens ? "(".concat(val || '', ")") : val || '';
}
}
exports.getAsArrayStr = getAsArrayStr;
function pad(val, len, left) {
if (left === void 0) { left = 0; }
var leftPad = left > 0 ? new Array(left).fill(' ').join('') : '';
if (val.length > len) {
return "".concat(leftPad).concat(val);
}
else {
return "".concat(leftPad).concat(val).concat(new Array(len - val.length).fill(' ').join(''));
}
}
exports.pad = pad;
function generateParens(count, character, joinCharacter) {
if (joinCharacter === void 0) { joinCharacter = ''; }
return isNumber(count) && count > 0 ? new Array(count).fill(character).join(joinCharacter) : '';
}
exports.generateParens = generateParens;
function getParams(functionFieldExp) {
if (!functionFieldExp.parameters || functionFieldExp.parameters.length === 0) {
return [];
}
if (isStringArray(functionFieldExp.parameters)) {
return functionFieldExp.parameters;
}
if (isString(functionFieldExp.parameters[0])) {
return [functionFieldExp.parameters[0]];
}
return getParams(functionFieldExp.parameters[0]);
}
exports.getParams = getParams;
function isNestedParamAggregateFunction(functionFieldExp) {
if (!functionFieldExp.parameters || functionFieldExp.parameters.length === 0) {
return false;
}
var parameter = functionFieldExp.parameters[0];
if (isString(parameter)) {
return false;
}
return !!parameter.isAggregateFn;
}
exports.isNestedParamAggregateFunction = isNestedParamAggregateFunction;
function hasAlias(value) {
return value && !isNil(value.alias);
}
exports.hasAlias = hasAlias;
function isComposeField(input) {
return isString(input.field) && !Array.isArray(input.relationships) && !Array.isArray(input.conditions);
}
exports.isComposeField = isComposeField;
function isComposeFieldFunction(input) {
return !isNil(input.functionName || input.fn);
}
exports.isComposeFieldFunction = isComposeFieldFunction;
function isComposeFieldRelationship(input) {
return isString(input.field) && Array.isArray(input.relationships);
}
exports.isComposeFieldRelationship = isComposeFieldRelationship;
function isComposeFieldSubquery(input) {
return !isNil(input.subquery);
}
exports.isComposeFieldSubquery = isComposeFieldSubquery;
function isComposeFieldTypeof(input) {
return isString(input.field) && Array.isArray(input.conditions);
}
exports.isComposeFieldTypeof = isComposeFieldTypeof;
function isSubquery(query) {
return isString(query.relationshipName);
}
exports.isSubquery = isSubquery;
function isFieldSubquery(value) {
return !!value && !!value.type && value.type === 'FieldSubquery';
}
exports.isFieldSubquery = isFieldSubquery;
function isWhereClauseWithRightCondition(value) {
return !!value && !!value.operator && !!value.right;
}
exports.isWhereClauseWithRightCondition = isWhereClauseWithRightCondition;
function isHavingClauseWithRightCondition(value) {
return !!value && !!value.operator && !!value.right;
}
exports.isHavingClauseWithRightCondition = isHavingClauseWithRightCondition;
function isWhereOrHavingClauseWithRightCondition(value) {
return !!value && !!value.operator && !!value.right;
}
exports.isWhereOrHavingClauseWithRightCondition = isWhereOrHavingClauseWithRightCondition;
function isValueCondition(value) {
return value && isString(value.field) && isString(value.operator) && !isNil(value.value);
}
exports.isValueCondition = isValueCondition;
function isValueWithDateLiteralCondition(value) {
return (value &&
isString(value.field) &&
isString(value.operator) &&
!isNil(value.value) &&
(value.literalType === 'DATE_LITERAL' || (Array.isArray(value.literalType) && value.literalType[0] === 'DATE_LITERAL')));
}
exports.isValueWithDateLiteralCondition = isValueWithDateLiteralCondition;
function isValueWithDateNLiteralCondition(value) {
return value && isString(value.field) && isString(value.operator) && !isNil(value.value) && !isNil(value.dateLiteralVariable);
}
exports.isValueWithDateNLiteralCondition = isValueWithDateNLiteralCondition;
function isValueFunctionCondition(value) {
return value && !isNil(value.fn) && isString(value.operator) && !isNil(value.value);
}
exports.isValueFunctionCondition = isValueFunctionCondition;
function isNegationCondition(value) {
return value && isNumber(value.openParen) && isNil(value.operator) && isNil(value.field) && isNil(value.fn) && isNil(value.closeParen);
}
exports.isNegationCondition = isNegationCondition;
function isValueQueryCondition(value) {
return value && isString(value.field) && isString(value.operator) && !isNil(value.valueQuery) && isNil(value.value);
}
exports.isValueQueryCondition = isValueQueryCondition;
function isOrderByField(value) {
return value && !isNil(value.field);
}
exports.isOrderByField = isOrderByField;
function isOrderByFn(value) {
return value && !isNil(value.fn);
}
exports.isOrderByFn = isOrderByFn;
function isGroupByField(value) {
return value && !isNil(value.field);
}
exports.isGroupByField = isGroupByField;
function isGroupByFn(value) {
return value && !isNil(value.fn);
}
exports.isGroupByFn = isGroupByFn;
function isArrayOperator(operator) {
return ['IN', 'NOT IN', 'INCLUDES', 'EXCLUDES'].includes(operator);
}
exports.isArrayOperator = isArrayOperator;
function getWhereValue(value, literalType, operator) {
if (isNil(literalType)) {
return value;
}
if (operator && literalType !== 'APEX_BIND_VARIABLE' && isArrayOperator(operator) && !Array.isArray(value)) {
value = [value];
literalType = Array.isArray(literalType) ? literalType : [literalType];
}
if (Array.isArray(literalType) && Array.isArray(value)) {
return value.map(function (val, i) {
return whereValueHelper(val, literalType === null || literalType === void 0 ? void 0 : literalType[i]);
});
}
else {
if (Array.isArray(literalType)) {
literalType = literalType[0];
}
switch (literalType) {
case 'STRING': {
if (Array.isArray(value)) {
return value.filter(Boolean).map(function (val) { return (isString(val) && val.startsWith("'") ? val : "'".concat(val !== null && val !== void 0 ? val : '', "'")); });
}
else {
value = String(value !== null && value !== void 0 ? value : '');
return isString(value) && value.startsWith("'") ? value : "'".concat(value !== null && value !== void 0 ? value : '', "'");
}
}
case 'APEX_BIND_VARIABLE': {
return ":".concat(value);
}
case 'JITTERBIT_VARIABLE': {
return value.text;
}
default: {
return value;
}
}
}
}
exports.getWhereValue = getWhereValue;
function whereValueHelper(value, literalType) {
switch (literalType) {
case 'STRING': {
return isString(value) && value.startsWith("'") ? value : "'".concat(value !== null && value !== void 0 ? value : '', "'");
}
default: {
return value;
}
}
}