@enonic/js-utils
Version:
Enonic XP JavaScript Utils
57 lines (48 loc) • 1.66 kB
JavaScript
// 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
};