@enonic/js-utils
Version:
Enonic XP JavaScript Utils
231 lines (230 loc) • 8.03 kB
JavaScript
;
function _instanceof(left, right) {
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
return !!right[Symbol.hasInstance](left);
} else {
return left instanceof right;
}
}
function _type_of(obj) {
"@swc/helpers - typeof";
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = function(target, all) {
for(var name in all)__defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = function(to, from, except, desc) {
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
var _loop = function() {
var key = _step.value;
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: function() {
return from[key];
},
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
};
for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
return to;
};
var __toCommonJS = function(mod) {
return __copyProps(__defProp({}, "__esModule", {
value: true
}), mod);
};
// storage/query/dsl/fulltext.ts
var fulltext_exports = {};
__export(fulltext_exports, {
fulltext: function() {
return fulltext;
}
});
module.exports = __toCommonJS(fulltext_exports);
// storage/query/constants.ts
var QUERY_OPERATOR_OR = "OR";
// string/includes.ts
function includes(string, searchString, position) {
if (_instanceof(searchString, RegExp)) {
throw new TypeError("second argument must not be a RegExp");
}
if (position === void 0) {
position = 0;
}
return string.indexOf(searchString, position) !== -1;
}
// value/isObject.ts
var isObject = function(value) {
return Object.prototype.toString.call(value).slice(8, -1) === "Object";
};
// value/isStringLiteral.ts
var isStringLiteral = function(value) {
return typeof value === "string";
};
// value/isStringObject.ts
var isStringObject = function(value) {
return _instanceof(value, String);
};
// value/isString.ts
var isString = function(value) {
return isStringLiteral(value) || isStringObject(value);
};
// 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;
// storage/query/buildFields.ts
function buildFieldsArray(fields) {
return forceArray(fields).map(function(stringOrObj) {
var boost;
var field;
if (isObject(stringOrObj)) {
boost = stringOrObj.boost || void 0;
field = stringOrObj.field;
} else {
field = stringOrObj;
}
return "".concat(field).concat(boost && boost !== 1 ? "^".concat(boost) : "");
});
}
// storage/query/dsl/bool.ts
function bool(compoundExpression) {
return {
boolean: compoundExpression
};
}
// storage/query/dsl/fieldsContainBoost.ts
function fieldsContainBoost(fields) {
if (Array.isArray(fields)) {
return fields.some(function(field) {
return fieldsContainBoost(field);
});
} else if (isObject(fields)) {
var boost = fields.boost;
if (boost && boost !== 1) {
return true;
}
} else if (isString(fields)) {
if (includes(fields, "^")) {
return true;
}
} else {
throw new Error("fieldsContainBoost: fields is not array, object or string!");
}
return false;
}
// array/flatten.ts
function flatten(arr) {
var d = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
return d > 0 ? arr.reduce(function(acc, val) {
return acc.concat(Array.isArray(val) ? flatten(val, d - 1) : val);
}, []) : arr.slice();
}
// storage/query/dsl/or.ts
function or() {
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
args[_key] = arguments[_key];
}
var flattened = flatten(args);
return {
should: flattened
};
}
// storage/query/dsl/fulltextOrNgram.ts
function fulltextOrNgram(fOrN, fields, query) {
var operator = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : QUERY_OPERATOR_OR, boost = arguments.length > 4 ? arguments[4] : void 0;
if (fieldsContainBoost(fields)) {
if (Array.isArray(fields)) {
return bool(or(fields.map(function(field) {
return fulltextOrNgram(fOrN, field, query, operator, boost);
})));
} else if (isObject(fields)) {
var fieldBoost = fields.boost, field = fields.field;
if (fieldBoost && fieldBoost !== 1) {
if (boost && boost !== 1) {
boost = boost * fieldBoost;
} else {
boost = fieldBoost;
}
}
return fulltextOrNgram(fOrN, field, query, operator, boost);
} else if (isString(fields)) {
if (includes(fields, ",")) {
return fulltextOrNgram(fOrN, fields.split(","), query, operator, boost);
} else if (includes(fields, "^")) {
var caretIndex = fields.indexOf("^");
var field1 = fields.substring(0, caretIndex);
var fieldBoost1 = parseFloat(fields.substring(caretIndex + 1));
if (fieldBoost1 && fieldBoost1 !== 1) {
if (boost && boost !== 1) {
boost = boost * fieldBoost1;
} else {
boost = fieldBoost1;
}
}
return fulltextOrNgram(fOrN, field1, query, operator, boost);
}
} else {
throw new Error("".concat(fOrN, ": fields is not array, object or string!"));
}
}
var innerObj = {
fields: buildFieldsArray(fields),
query: query,
operator: operator.toUpperCase()
};
if (boost && boost !== 1) {
innerObj.boost = boost;
}
if (fOrN === "fulltext") {
return {
fulltext: innerObj
};
} else if (fOrN === "ngram") {
return {
ngram: innerObj
};
}
throw new Error("first parameter must be 'fulltext' or 'ngram'");
}
// storage/query/dsl/fulltext.ts
function fulltext(fields, query) {
var operator = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : QUERY_OPERATOR_OR, boost = arguments.length > 3 ? arguments[3] : void 0;
return fulltextOrNgram("fulltext", fields, query, operator, boost);
}