UNPKG

@enonic/js-utils

Version:
57 lines (48 loc) 1.66 kB
// storage/query/constants.ts var QUERY_OPERATOR_AND = "AND"; var QUERY_OPERATOR_OR = "OR"; // array/forceArray.ts function forceArray(data) { return Array.isArray(data) ? data : [data]; } // value/isFunction.ts function isFunction(value) { return Object.prototype.toString.call(value).slice(8, -1) === "Function"; } // value/isInt.ts function isInt(value) { return typeof value === "number" && isFinite(value) && // TODO Is isFinite() available in Enonic XP? Math.floor(value) === value; } // value/isInteger.ts var isInteger = "isInteger" in Number && isFunction(Number.isInteger) ? Number.isInteger : isInt; // value/isObject.ts var isObject = (value) => Object.prototype.toString.call(value).slice(8, -1) === "Object"; // storage/query/buildFields.ts function buildFieldsArray(fields) { return forceArray(fields).map((stringOrObj) => { let boost; let field; if (isObject(stringOrObj)) { boost = stringOrObj.boost || void 0; field = stringOrObj.field; } else { field = stringOrObj; } return `${field}${boost && boost !== 1 ? `^${boost}` : ""}`; }); } function buildFields(fields) { return `'${buildFieldsArray(fields).join(",")}'`; } // storage/query/fulltextOrNgram.ts function fulltextOrNgram(fOrN, fields, searchString, operator = QUERY_OPERATOR_OR) { return `${fOrN}(${buildFields(fields)},'${searchString}'${operator.toUpperCase() === QUERY_OPERATOR_AND ? `,'${QUERY_OPERATOR_AND}'` : ""})`; } // storage/query/fulltext.ts function fulltext(fields, searchString, operator = QUERY_OPERATOR_OR) { return fulltextOrNgram("fulltext", fields, searchString, operator); } export { fulltext };