UNPKG

@enonic/js-utils

Version:
231 lines (230 loc) 8.03 kB
"use strict"; 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); }