{"version":3,"sources":["jsdelivr-header.js","/npm/odata-filter-builder@1.0.0/lib/ODataFilterBuilder.js"],"names":[],"mappings":"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","file":"/npm/odata-filter-builder@1.0.0/lib/ODataFilterBuilder.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/odata-filter-builder@1.0.0/lib/ODataFilterBuilder.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar canonicalFunctions = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  get canonicalFunction () { return canonicalFunction; },\n  get contains () { return contains; },\n  get startsWith () { return startsWith; },\n  get endsWith () { return endsWith; },\n  get toLower () { return toLower; },\n  get toUpper () { return toUpper; },\n  get trim () { return trim; },\n  get substring () { return substring; },\n  get concat () { return concat; },\n  get length () { return length; },\n  get indexOf () { return indexOf; }\n});\n\n/**\n * Reduce source with new rule and/or condition\n * @param {Object} source - Source rule\n * @param {Object|string} rule - Rule to add\n * @param {string} [condition] - Condition for rule to add(and/or)\n * @returns {Object} updated rule\n * @private\n */\nfunction reduceSourceWithRule(source, rule, condition) {\n  if (rule) {\n    if (condition && source.condition !== condition) {\n      // if source rules condition different from rule condition\n      // update source condition\n      source = {\n        condition: condition,\n        // if has more then one rules\n        // regroup source rules tree\n        rules: source.rules.length > 1 ? [source] : source.rules\n      };\n    } // add new rule\n\n\n    source.rules.push(rule);\n  }\n\n  return source;\n}\n\nfunction inputRuleToString(rule) {\n  if (typeof rule === 'function') {\n    rule = rule(new ODataFilterBuilder());\n  }\n\n  return rule && rule.toString();\n}\n\nfunction joinRulesWithCondition(rules, condition) {\n  return rules.map(function (r) {\n    return sourceRuleToString(r, true);\n  }).join(\" \" + condition + \" \");\n}\n\nfunction sourceRuleToString(rule, wrapInParenthesis) {\n  if (wrapInParenthesis === void 0) {\n    wrapInParenthesis = false;\n  }\n\n  if (typeof rule !== 'string') {\n    // if child rules more then one join child rules by condition\n    // and wrap in brackets every child rule\n    rule = rule.rules.length === 1 ? sourceRuleToString(rule.rules[0]) : joinRulesWithCondition(rule.rules, rule.condition);\n  }\n\n  return wrapInParenthesis ? \"(\" + rule + \")\" : rule;\n}\n\nfunction inputFieldToString(field) {\n  return typeof field === 'function' ? field(canonicalFunctions) : field;\n}\n\nfunction isString(value) {\n  return typeof value === 'string';\n}\n\nfunction isDate(value) {\n  return typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\n\nfunction normaliseValue(value) {\n  if (isString(value)) {\n    return \"'\" + value + \"'\";\n  }\n\n  if (isDate(value)) {\n    return value.toISOString();\n  }\n\n  return value;\n}\n\nfunction canonicalFunction(functionName, field, values, normaliseValues, reverse) {\n  if (normaliseValues === void 0) {\n    normaliseValues = true;\n  }\n\n  if (reverse === void 0) {\n    reverse = false;\n  }\n\n  // make sure that field is string\n  field = inputFieldToString(field);\n\n  if (typeof values === 'undefined') {\n    values = [];\n  } else if (!Array.isArray(values)) {\n    values = [values];\n  }\n\n  if (values.length === 0) {\n    return functionName + \"(\" + field + \")\";\n  }\n\n  if (normaliseValues) {\n    values = values.map(normaliseValue);\n  }\n\n  var functionArgs = !reverse ? [field].concat(values) : [].concat(values, [field]);\n  return functionName + \"(\" + functionArgs.join(', ') + \")\";\n}\n\nfunction contains(field, value) {\n  return canonicalFunction('contains', field, value);\n}\n\nfunction startsWith(field, value) {\n  return canonicalFunction('startswith', field, value);\n}\n\nfunction endsWith(field, value) {\n  return canonicalFunction('endswith', field, value);\n}\n/**\n * The tolower function returns the input parameter string value with all uppercase characters converted to lowercase.\n * @example\n * f().eq(x => x.toLower('CompanyName'), 'alfreds futterkiste')\n * // tolower(CompanyName) eq 'alfreds futterkiste'\n * @param {string|InputFieldExpression} field - Field\n * @returns {string} A function string\n */\n\n\nfunction toLower(field) {\n  return canonicalFunction('tolower', field);\n}\n/**\n * The toupper function returns the input parameter string value with all lowercase characters converted to uppercase.\n * @example\n * f().eq(x => x.toUpper('CompanyName'), 'ALFREDS FUTTERKISTE')\n * // toupper(CompanyName) eq 'ALFREDS FUTTERKISTE'\n * @param {string|InputFieldExpression} field - Field\n * @returns {string} A function string\n */\n\n\nfunction toUpper(field) {\n  return canonicalFunction('toupper', field);\n}\n/**\n * The trim function returns the input parameter string value with all leading and trailing whitespace characters, removed.\n * @example\n * f().eq(x => x.trim('CompanyName'), 'CompanyName')\n * // trim(CompanyName) eq CompanyName\n * @param {string|InputFieldExpression} field - Field\n * @returns {string} A function string\n */\n\n\nfunction trim(field) {\n  return canonicalFunction('trim', field);\n}\n/**\n * @example\n * f().eq(f.functions.substring('CompanyName', 1), 'lfreds Futterkiste');\n * f().eq(x => x.substring('CompanyName', 1), 'lfreds Futterkiste');\n * // substring(CompanyName, 1) eq 'lfreds Futterkiste'\n *\n * @example\n * f().eq(x => x.substring('CompanyName', 1, 2), 'lf').toString();\n * f().eq(f.functions.substring('CompanyName', 1, 2), 'lf')\n * // substring(CompanyName, 1, 2) eq 'lf'\n *\n * @param {string|InputFieldExpression} field - The first function parameter\n * @param {...number} values - Second or second and third function parameters\n *\n * @returns {string} A function string\n */\n\n\nfunction substring(field) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  return canonicalFunction('substring', field, values);\n}\n/**\n * @param {string|InputFieldExpression} field - The first function parameter\n * @param {string} value - The second function parameter\n * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n * @example\n * f().eq(x => x.concat(y => y.concat('City',', '), 'Country', false), 'Berlin, Germany');\n * // concat(concat(City, ', '), 'Country') eq 'Berlin, Germany'\n * @returns {string} A function string\n */\n\n\nfunction concat(field, value, normaliseValue) {\n  return canonicalFunction('concat', field, [value], normaliseValue);\n}\n/**\n * The length function returns the number of characters in the parameter value.\n * @example\n * f().eq(x => x.length('CompanyName'), 19)\n * // length(CompanyName) eq 19\n * @param {string|InputFieldExpression} field - Field\n * @returns {string} A function string\n */\n\n\nfunction length(field) {\n  return canonicalFunction('length', field);\n}\n/**\n * The indexof function returns the zero-based character position of the first occurrence of the second parameter value in the first parameter value.\n * @example\n * f().eq(f.functions.indexOf('CompanyName', 'lfreds'), 1)\n * f().eq(x => x.indexOf('CompanyName', 'lfreds'), 1)\n * // indexof(CompanyName,'lfreds') eq 1\n *\n * @param {string|InputFieldExpression} field - The first function parameter\n * @param {string} value - The second function parameter\n *\n * @returns {string} A function string\n */\n\n\nfunction indexOf(field, value) {\n  return canonicalFunction('indexof', field, [value]);\n}\n\nfunction not(rule) {\n  var ruleString = inputRuleToString(rule);\n\n  if (ruleString) {\n    return \"not (\" + ruleString + \")\";\n  }\n}\n\nfunction compare(field, operator, value, normaliseValue$1) {\n  if (normaliseValue$1 === void 0) {\n    normaliseValue$1 = true;\n  }\n\n  // make sure that field is string\n  field = inputFieldToString(field);\n\n  if (normaliseValue$1) {\n    value = normaliseValue(value);\n  }\n\n  return field + \" \" + operator + \" \" + value;\n}\n\nfunction compareMap(field, operator, values, normaliseValues) {\n  if (normaliseValues === void 0) {\n    normaliseValues = true;\n  }\n\n  if (!values) {\n    return [];\n  } // make sure that field is string\n\n\n  field = inputFieldToString(field);\n\n  if (!Array.isArray(values)) {\n    return [compare(field, operator, values, normaliseValues)];\n  }\n\n  return values.map(function (value) {\n    return compare(field, operator, value, normaliseValues);\n  });\n}\n\nfunction eq(field, value, normaliseValue) {\n  return compare(field, 'eq', value, normaliseValue);\n}\n\nfunction ne(field, value, normaliseValue) {\n  return compare(field, 'ne', value, normaliseValue);\n}\n\nfunction gt(field, value, normaliseValue) {\n  return compare(field, 'gt', value, normaliseValue);\n}\n\nfunction ge(field, value, normaliseValue) {\n  return compare(field, 'ge', value, normaliseValue);\n}\n\nfunction lt(field, value, normaliseValue) {\n  return compare(field, 'lt', value, normaliseValue);\n}\n\nfunction le(field, value, normaliseValue) {\n  return compare(field, 'le', value, normaliseValue);\n}\n\nfunction joinRules(rules, condition) {\n  return rules.join(\" \" + condition + \" \");\n}\n\nfunction compareIn(field, values, normaliseValues) {\n  return joinRules(compareMap(field, 'eq', values, normaliseValues), 'or');\n}\n\nfunction compareAll(objectValue, normaliseValues) {\n  var keys = Object.keys(objectValue);\n  var rules = keys.filter(function (k) {\n    return typeof objectValue[k] !== 'undefined';\n  }).map(function (field) {\n    var value = objectValue[field];\n\n    if (Array.isArray(value)) {\n      return \"(\" + compareIn(field, value, normaliseValues) + \")\";\n    } else {\n      return eq(field, value, normaliseValues);\n    }\n  });\n  return joinRules(rules, 'and');\n}\n\nfunction compareNotIn(field, values, normaliseValues) {\n  // return joinRules(compareMap(field, 'ne', values, normaliseValues), 'and')\n  return not(compareIn(field, values, normaliseValues));\n}\n\nvar ODataFilterBuilder =\n/*#__PURE__*/\nfunction () {\n  function ODataFilterBuilder(condition) {\n    if (condition === void 0) {\n      condition = 'and';\n    }\n\n    if (!(this instanceof ODataFilterBuilder)) {\n      return new ODataFilterBuilder(condition);\n    }\n\n    this._condition = condition;\n    this._source = {\n      condition: condition,\n      rules: []\n    };\n  }\n  /**\n   * The 'add' method adds new filter rule with AND or OR condition\n   * if condition not provided. Source condition is used (AND by default)\n   * @this {ODataFilterBuilder}\n   * @param {string|ODataFilterBuilder|InputRuleExpression} rule - Rule to add\n   * @param {string} [condition] - Condition for rule to add(and/or)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   * @private\n   */\n\n\n  var _proto = ODataFilterBuilder.prototype;\n\n  _proto._add = function _add(rule, condition) {\n    if (condition === void 0) {\n      condition = this._condition;\n    }\n\n    // NOTE: if condition not provider, source condition uses\n    this._source = reduceSourceWithRule(this._source, inputRuleToString(rule), condition);\n    return this;\n  }\n  /*\n   * Logical Operators\n   */\n\n  /**\n   * Logical And\n   * @param {string|ODataFilterBuilder|InputRuleExpression} rule - Rule to add\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.and = function and(rule) {\n    return this._add(rule, 'and');\n  }\n  /**\n   * Logical Or\n   * @param {string|ODataFilterBuilder|InputRuleExpression} rule - Rule to add\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.or = function or(rule) {\n    return this._add(rule, 'or');\n  }\n  /**\n   * Logical Negation\n   * @param {string|ODataFilterBuilder|InputRuleExpression} rule - Rule to add\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.not = function not$1(rule) {\n    return this._add(not(rule));\n  }\n  /**\n   * Equal\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.eq = function eq$1(field, value, normaliseValue) {\n    return this._add(eq(field, value, normaliseValue));\n  }\n  /**\n   * Not Equal\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.ne = function ne$1(field, value, normaliseValue) {\n    return this._add(ne(field, value, normaliseValue));\n  }\n  /**\n   * Greater Than\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.gt = function gt$1(field, value, normaliseValue) {\n    return this._add(gt(field, value, normaliseValue));\n  }\n  /**\n   * Greater than or Equal\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.ge = function ge$1(field, value, normaliseValue) {\n    return this._add(ge(field, value, normaliseValue));\n  }\n  /**\n   * Less Than\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.lt = function lt$1(field, value, normaliseValue) {\n    return this._add(lt(field, value, normaliseValue));\n  }\n  /**\n   * Less than or Equal\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string|number|*} value - A value to compare with\n   * @param {boolean} [normaliseValue=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.le = function le$1(field, value, normaliseValue) {\n    return this._add(le(field, value, normaliseValue));\n  }\n  /**\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string[]|string} values - Values to compare with\n   * @param {boolean} [normaliseValues=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto[\"in\"] = function _in(field, values, normaliseValues) {\n    return this._add(compareIn(field, values, normaliseValues));\n  }\n  /**\n   * @param {any} objectValue - Object with property and value to compare all in \"and\" - Loops through property keys\n   * @param {boolean} [normaliseValues=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.compareAll = function compareAll$1(objectValue, normaliseValues) {\n    return this._add(compareAll(objectValue, normaliseValues));\n  }\n  /**\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {Array} values - Values to compare with\n   * @param {boolean} [normaliseValues=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.notIn = function notIn(field, values, normaliseValues) {\n    return this._add(compareNotIn(field, values, normaliseValues));\n  } // Canonical Functions\n\n  /**\n   * The contains function returns true if the second parameter string value is a substring of the first parameter string value.\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string} value - Value to compare\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.contains = function contains$1(field, value) {\n    return this._add(contains(field, value));\n  }\n  /**\n   * The startswith function returns true if the first parameter string value starts with the second parameter string value.\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string} value - Value to compare\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.startsWith = function startsWith$1(field, value) {\n    return this._add(startsWith(field, value));\n  }\n  /**\n   * The endswith function returns true if the first parameter string value ends with the second parameter string value.\n   * @param {string|InputFieldExpression} field - Field to compare\n   * @param {string} value - Value to compare\n   * @returns {ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.endsWith = function endsWith$1(field, value) {\n    return this._add(endsWith(field, value));\n  }\n  /**\n   * Custom function\n   * @param {string} functionName - Name of generated function\n   * @param {string|InputFieldExpression} field - The first function parameter\n   * @param {string|number|Array} values - The second function parameter\n   * @param {boolean} [normaliseValues=true] - Convert string \"value\" to \"'value'\" or not. (Convert by default)\n   * @param {boolean} [reverse=false] - Swap field and value params in output. (Don't swap by default)\n   * @returns {*|ODataFilterBuilder} The {@link ODataFilterBuilder} instance\n   */\n  ;\n\n  _proto.fn = function fn(functionName, field, values, normaliseValues, reverse) {\n    return this._add(canonicalFunction(functionName, field, values, normaliseValues, reverse));\n  };\n\n  _proto.isEmpty = function isEmpty() {\n    return this._source.rules.length === 0;\n  }\n  /**\n   * Convert filter builder instance to string\n   * @this {ODataFilterBuilder}\n   * @returns {string} A source string representation\n   */\n  ;\n\n  _proto.toString = function toString() {\n    return sourceRuleToString(this._source);\n  };\n\n  return ODataFilterBuilder;\n}();\n\nODataFilterBuilder.and = function () {\n  return new ODataFilterBuilder('and');\n};\n\nODataFilterBuilder.or = function () {\n  return new ODataFilterBuilder('or');\n};\n\nODataFilterBuilder.functions = canonicalFunctions;\n\nexports.ODataFilterBuilder = ODataFilterBuilder;\nexports.canonicalFunctions = canonicalFunctions;\nexports.default = ODataFilterBuilder;\n"]}