UNPKG

@enonic/js-utils

Version:
55 lines (46 loc) 1.61 kB
// storage/indexing/stemming.ts var STEMMING_LANGUAGE_CODE_ENGLISH = "en"; // 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/constants.ts var QUERY_OPERATOR_AND = "AND"; var QUERY_OPERATOR_OR = "OR"; // storage/query/stemmed.ts function stemmed(fields, searchString, operator = QUERY_OPERATOR_OR, language = STEMMING_LANGUAGE_CODE_ENGLISH) { return `stemmed(${buildFields(fields)},'${searchString}','${operator.toUpperCase() === QUERY_OPERATOR_AND ? QUERY_OPERATOR_AND : QUERY_OPERATOR_OR}','${language}')`; } export { stemmed };