@wix/filter-builder 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/__tests__/filter.spec.js +23 -0
  2. package/dist/cjs/__tests__/filter.spec.js.map +1 -1
  3. package/dist/cjs/filter-builder.js +2 -2
  4. package/dist/cjs/filter-builder.js.map +1 -1
  5. package/dist/cjs/filter-mixin.js +7 -5
  6. package/dist/cjs/filter-mixin.js.map +1 -1
  7. package/dist/cjs/index.js +4 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/wix-data-encoder.js +17 -0
  10. package/dist/cjs/wix-data-encoder.js.map +1 -0
  11. package/dist/esm/__tests__/filter.spec.js +17 -1
  12. package/dist/esm/__tests__/filter.spec.js.map +1 -1
  13. package/dist/esm/filter-builder.js +3 -2
  14. package/dist/esm/filter-builder.js.map +1 -1
  15. package/dist/esm/filter-mixin.js +7 -7
  16. package/dist/esm/filter-mixin.js.map +1 -1
  17. package/dist/esm/index.js +2 -1
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/wix-data-encoder.js +10 -0
  20. package/dist/esm/wix-data-encoder.js.map +1 -0
  21. package/dist/statics/filter-builder.umd.js +9 -6
  22. package/dist/statics/filter-builder.umd.js.map +1 -1
  23. package/dist/statics/filter-builder.umd.min.js +1 -1
  24. package/dist/statics/filter-builder.umd.min.js.map +1 -1
  25. package/dist/statics/manifest.json +1 -1
  26. package/dist/statics/manifest.min.json +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/dist/types/filter-builder.d.ts +4 -2
  29. package/dist/types/filter-builder.d.ts.map +1 -1
  30. package/dist/types/filter-mixin.d.ts +3 -1
  31. package/dist/types/filter-mixin.d.ts.map +1 -1
  32. package/dist/types/index.d.ts +2 -1
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist/types/wix-data-encoder.d.ts +2 -0
  35. package/dist/types/wix-data-encoder.d.ts.map +1 -0
  36. package/package.json +3 -3
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { filterBuilder } from './filter-builder';
2
2
  import filterMixin from './filter-mixin';
3
3
  import { optimisedQuery as optimiseQuery } from './query-optimiser';
4
- export { filterMixin, filterBuilder, optimiseQuery };
4
+ import { wixDataEncoder } from './wix-data-encoder';
5
+ export { filterMixin, filterBuilder, optimiseQuery, wixDataEncoder };
5
6
  export default filterBuilder;
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGnE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAa,CAAA;AAE/D,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAa,cAAc,EAAE,CAAA;AAE/E,eAAe,aAAa,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { isDate } from './type-utils';
2
+ export function wixDataEncoder(operand) {
3
+ if (isDate(operand)) {
4
+ return { $date: operand.toJSON() };
5
+ }
6
+ else {
7
+ return operand;
8
+ }
9
+ }
10
+ //# sourceMappingURL=wix-data-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wix-data-encoder.js","sourceRoot":"","sources":["../../src/wix-data-encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,UAAU,cAAc,CAAC,OAAO;IACpC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;QACnB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAA;KACnC;SAAM;QACL,OAAO,OAAO,CAAA;KACf;AACH,CAAC"}
@@ -393,7 +393,7 @@ var __webpack_exports__ = {};
393
393
  !function() {
394
394
  "use strict";
395
395
  /*!******************************!*\
396
- !*** ./index.ts + 6 modules ***!
396
+ !*** ./index.ts + 7 modules ***!
397
397
  \******************************/
398
398
  // ESM COMPAT FLAG
399
399
  __webpack_require__.r(__webpack_exports__);
@@ -404,7 +404,8 @@ __webpack_require__.d(__webpack_exports__, {
404
404
  "default": function() { return /* binding */ index; },
405
405
  "filterBuilder": function() { return /* reexport */ filterBuilder; },
406
406
  "filterMixin": function() { return /* reexport */ filter_mixin; },
407
- "optimiseQuery": function() { return /* reexport */ optimisedQuery; }
407
+ "optimiseQuery": function() { return /* reexport */ optimisedQuery; },
408
+ "wixDataEncoder": function() { return /* reexport */ wixDataEncoder; }
408
409
  });
409
410
 
410
411
  // EXTERNAL MODULE: ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/createClass.js
@@ -426,7 +427,7 @@ var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
426
427
  var kind_of = __webpack_require__(306);
427
428
  var kind_of_default = /*#__PURE__*/__webpack_require__.n(kind_of);
428
429
  ;// CONCATENATED MODULE: ./type-utils.ts
429
- function isObject(obj){return getKind(obj)==='object';}function isArray(arr){return kind_of_default()(arr)==='array';}function isDate(obj){return kind_of_default()(obj)==='date';}function isNumber(obj){return kind_of_default()(obj)==='number';}function isBoolean(obj){return getKind(obj)==='boolean';}function isString(obj){return kind_of_default()(obj)==='string';}function isFunction(obj){return getKind(obj)==='function';}function typeForDisplay(obj){return upperCaseFirst(kind_of_default()(obj));}function isUndefined(obj){return getKind(obj)==='undefined';}function isNull(obj){return getKind(obj)==='null';}function upperCaseFirst(str){if(!isString(str)){return str;}var first=str.slice(0,1).toUpperCase();var rest=str.slice(1,str.length);return first+rest;}
430
+ function isObject(obj){return getKind(obj)==='object';}function isArray(arr){return kind_of_default()(arr)==='array';}function isDate(obj){return kind_of_default()(obj)==='date';}function isNumber(obj){return kind_of_default()(obj)==='number';}function isBoolean(obj){return getKind(obj)==='boolean';}function isString(obj){return kind_of_default()(obj)==='string';}function isFunction(obj){return kind_of_default()(obj)==='function';}function typeForDisplay(obj){return upperCaseFirst(kind_of_default()(obj));}function isUndefined(obj){return getKind(obj)==='undefined';}function isNull(obj){return getKind(obj)==='null';}function upperCaseFirst(str){if(!isString(str)){return str;}var first=str.slice(0,1).toUpperCase();var rest=str.slice(1,str.length);return first+rest;}
430
431
  ;// CONCATENATED MODULE: ./clone.ts
431
432
  function clone(obj){if(obj==null||typeof obj!=='object'){return obj;}var temp=null;if(isDate(obj)){temp=new Date(obj.getTime());}else{temp=obj.constructor();for(var key in obj){temp[key]=clone(obj[key]);}}return temp;}
432
433
  ;// CONCATENATED MODULE: ./filter-validator.ts
@@ -434,15 +435,17 @@ var FilterValidator=/*#__PURE__*/function(){function FilterValidator(operatorNam
434
435
  ;// CONCATENATED MODULE: ./query-optimiser.ts
435
436
  function _createForOfIteratorHelperLoose(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}var optimisations=[optimisedUnaryAnd,optimisedEmptyAnd,optimisedAndsAsObjects,optimisedNestedAnds,optimisedNestedOrs];function optimisedQuery(query){var _fullyOptimised=fullyOptimised(query),newQuery=_fullyOptimised[0];return newQuery;}function fullyOptimised(query){if(Array.isArray(query)){return fullyOptimisedArray(query);}if(typeof query==='object'&&query!==null&&!instanceOfIgnoredType(query)){return fullyOptimisedObject(query);}return[query,false];}function fullyOptimisedArray(query){var optimisedElements=query.map(fullyOptimised);var somethingChanged=0<optimisedElements.filter(function(_ref){var elementChanged=_ref[1];return elementChanged;}).length;var newElements=optimisedElements.map(function(_ref2){var element=_ref2[0];return element;});return[newElements,somethingChanged];}function fullyOptimisedObject(query){var _fullEntriesOptimisat=fullEntriesOptimisation(query),queryAfterOptimisingEntries=_fullEntriesOptimisat[0],changedStage1=_fullEntriesOptimisat[1];var _fullObjectOptimisati=fullObjectOptimisation(queryAfterOptimisingEntries),queryAfterFullOptimisation=_fullObjectOptimisati[0],changedStage2=_fullObjectOptimisati[1];var changed=changedStage1||changedStage2;return[queryAfterFullOptimisation,changed];function fullObjectOptimisation(query){var updatedQuery=applyFirstOptimisation(query);if(!updatedQuery){return[query,false];}var _fullyOptimised2=fullyOptimised(updatedQuery),finalQuery=_fullyOptimised2[0];return[finalQuery,true];}function fullEntriesOptimisation(query){var changedEntries=Object.entries(query).map(entryOptimisation).filter(function(_ref3){var changed=_ref3[2];return changed;});var newQuery=extends_default()({},query,entriesAsObject(changedEntries));var changed=!!changedEntries.length;return[newQuery,changed];}function entryOptimisation(_ref4){var key=_ref4[0],value=_ref4[1];var _fullyOptimised3=fullyOptimised(value),newValue=_fullyOptimised3[0],changed=_fullyOptimised3[1];return[key,newValue,changed];}function entriesAsObject(entries){return entries.reduce(function(acc,_ref5){var _extends2;var key=_ref5[0],value=_ref5[1];return extends_default()({},acc,(_extends2={},_extends2[key]=value,_extends2));},{});}}function applyFirstOptimisation(node){for(var _iterator=_createForOfIteratorHelperLoose(optimisations),_step;!(_step=_iterator()).done;){var optimisation=_step.value;var newNode=optimisation(node);if(newNode){return newNode;}}}function optimisedUnaryAnd(node){var args=node.$and;if(Array.isArray(args)&&args.length===1){return args[0];}}function optimisedEmptyAnd(node){var args=node.$and;if(Array.isArray(args)&&args.length===0){return{};}return null;}function optimisedAndsAsObjects(node){var args=node.$and;if(!args){return;}var basicObjects=[];var operatorObjects=[];args.forEach(function(arg){if(isOperator(arg)){operatorObjects=[].concat(operatorObjects,[arg]);}else{basicObjects=[].concat(basicObjects,[arg]);}});if(basicObjects.length<=1||haveOverlappingFields(basicObjects)){return;}var combinedBasicObjects=Object.assign.apply(Object,[{}].concat(basicObjects));return{$and:[combinedBasicObjects].concat(operatorObjects)};function isOperator(node){var keys=Object.keys(node);return keys.every(function(name){return name.startsWith('$');})&&keys.length>0;}function haveOverlappingFields(objects){var nonUniqueKeys=objects.map(function(it){return Object.keys(it);}).reduce(function(a,b){return[].concat(a,b);},[]);var uniqueKeys=unique(nonUniqueKeys);return uniqueKeys.length!==nonUniqueKeys.length;}function unique(values){var dict={};values.forEach(function(v){return dict[v]=true;});return Object.keys(dict);}}function optimisedNestedAnds(node){var args=node.$and;if(!args){return;}var hasNestedAnds=!!args.find(function(it){return it.$and;});if(!hasNestedAnds){return;}var newArgs=args.reduce(function(result,current){var and=current.$and;if(!and){return[].concat(result,[current]);}return[].concat(result,and);},[]);return{$and:newArgs};}function optimisedNestedOrs(node){var args=node.$or;if(!args){return;}var hasNestedOrs=!!args.find(function(it){return it.$or;});if(!hasNestedOrs){return;}var newArgs=args.reduce(function(result,current){var or=current.$or;if(!or){return[].concat(result,[current]);}return[].concat(result,or);},[]);return{$or:newArgs};}function instanceOfIgnoredType(obj){return obj instanceof Date;}
436
437
  ;// CONCATENATED MODULE: ./filter-mixin.ts
437
- var filterMixin=function filterMixin(Base){if(Base===void 0){Base=function Base(){};}return/*#__PURE__*/function(_Base){inheritsLoose_default()(_class2,_Base);function _class2(obj){var _this;if(obj===void 0){obj={};}_this=_Base.call(this,obj)||this;defineProperty_default()(assertThisInitialized_default()(_this),"filterTree",void 0);defineProperty_default()(assertThisInitialized_default()(_this),"invalidArguments",void 0);_this.filterTree=obj.filterTree||{$and:[]};_this.invalidArguments=obj.invalidArguments||[];return _this;}var _proto=_class2.prototype;_proto.eq=function eq(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return this._binaryAnd('$eq','.eq',args);};_proto.ne=function ne(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return this._binaryAnd('$ne','.ne',args);};_proto.ge=function ge(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return this._AndLogicalEquivalence('$gte','.ge',args);};_proto.gt=function gt(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return this._AndLogicalEquivalence('$gt','.gt',args);};_proto.le=function le(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}return this._AndLogicalEquivalence('$lte','.le',args);};_proto.lt=function lt(){for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++){args[_key6]=arguments[_key6];}return this._AndLogicalEquivalence('$lt','.lt',args);};_proto.isNotEmpty=function isNotEmpty(field){var _this$_filterValidato=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato[0],valid=_this$_filterValidato[1];if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);};_proto.isEmpty=function isEmpty(field){var _this$_filterValidato2=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato2[0],valid=_this$_filterValidato2[1];if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);};_proto.startsWith=function startsWith(){for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++){args[_key7]=arguments[_key7];}return this._AndStringOperand('$startsWith','.startsWith',args);};_proto.endsWith=function endsWith(){for(var _len8=arguments.length,args=new Array(_len8),_key8=0;_key8<_len8;_key8++){args[_key8]=arguments[_key8];}return this._AndStringOperand('$endsWith','.endsWith',args);};_proto.contains=function contains(){for(var _len9=arguments.length,args=new Array(_len9),_key9=0;_key9<_len9;_key9++){args[_key9]=arguments[_key9];}return this._AndStringOperand('$contains','.contains',args);};_proto.hasSome=function hasSome(){for(var _len10=arguments.length,args=new Array(_len10),_key10=0;_key10<_len10;_key10++){args[_key10]=arguments[_key10];}return this._AndSetOperand('$hasSome','.hasSome',args);};_proto.hasAll=function hasAll(){for(var _len11=arguments.length,args=new Array(_len11),_key11=0;_key11<_len11;_key11++){args[_key11]=arguments[_key11];}return this._AndSetOperand('$hasAll','.hasAll',args);};_proto.or=function or(orQuery){var _this$_filterValidato3=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato3[0],valid=_this$_filterValidato3[1];if(valid){var prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[].concat(prefix,[orQuery.filterTree])}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.and=function and(andQuery){var _this$_filterValidato4=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato4[0],valid=_this$_filterValidato4[1];if(valid){var prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd.apply(void 0,prefix.concat([andQuery.filterTree])),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.not=function not(notQuery){var _this$_filterValidato5=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato5[0],valid=_this$_filterValidato5[1];if(valid){var newFilterTree=clone(this.filterTree);var notClause={$not:[notQuery.filterTree]};var resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.between=function between(field,rangeStart,rangeEnd){var _this$_filterValidato6=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate(),newInvalidArguments=_this$_filterValidato6[0],valid=_this$_filterValidato6[1];if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);};_proto.getFilterModel=function getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);};_proto.setFilterModel=function setFilterModel(filterModel){return this._copy(filterModel,[]);};_proto._binaryAnd=function _binaryAnd(filterOperatorSymbol,operatorName,args){var _Array$prototype$slic=Array.prototype.slice.call(args),field=_Array$prototype$slic[0],operand=_Array$prototype$slic[1];var _this$_filterValidato7=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato7[0];var newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndLogicalEquivalence=function _AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){var _Array$prototype$slic2=Array.prototype.slice.call(args),field=_Array$prototype$slic2[0],operand=_Array$prototype$slic2[1];var _this$_filterValidato8=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate(),newInvalidArguments=_this$_filterValidato8[0];var newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndStringOperand=function _AndStringOperand(filterOperatorName,operatorName,args){var _Array$prototype$slic3=Array.prototype.slice.call(args),field=_Array$prototype$slic3[0],operand=_Array$prototype$slic3[1];var _this$_filterValidato9=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate(),newInvalidArguments=_this$_filterValidato9[0];var newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndSetOperand=function _AndSetOperand(filterOperatorName,operatorName,args){var _Array$prototype$slic4=Array.prototype.slice.call(args),field=_Array$prototype$slic4[0],rawOperands=_Array$prototype$slic4.slice(1);var operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;var _this$_filterValidato10=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate(),newInvalidArguments=_this$_filterValidato10[0];var newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);};_proto._makeNewFilter=function _makeNewFilter(field,filterOperatorName,operand){var newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
438
+ var filterMixin=function filterMixin(Base){if(Base===void 0){Base=function Base(){};}return/*#__PURE__*/function(_Base){inheritsLoose_default()(_class2,_Base);function _class2(obj){var _this;if(obj===void 0){obj={};}_this=_Base.call(this,obj)||this;defineProperty_default()(assertThisInitialized_default()(_this),"filterTree",void 0);defineProperty_default()(assertThisInitialized_default()(_this),"invalidArguments",void 0);defineProperty_default()(assertThisInitialized_default()(_this),"encoder",void 0);_this.filterTree=obj.filterTree||{$and:[]};_this.invalidArguments=obj.invalidArguments||[];_this.encoder=obj.encoder||{};return _this;}var _proto=_class2.prototype;_proto.eq=function eq(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return this._binaryAnd('$eq','.eq',args);};_proto.ne=function ne(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return this._binaryAnd('$ne','.ne',args);};_proto.ge=function ge(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return this._AndLogicalEquivalence('$gte','.ge',args);};_proto.gt=function gt(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return this._AndLogicalEquivalence('$gt','.gt',args);};_proto.le=function le(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}return this._AndLogicalEquivalence('$lte','.le',args);};_proto.lt=function lt(){for(var _len6=arguments.length,args=new Array(_len6),_key6=0;_key6<_len6;_key6++){args[_key6]=arguments[_key6];}return this._AndLogicalEquivalence('$lt','.lt',args);};_proto.isNotEmpty=function isNotEmpty(field){var _this$_filterValidato=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato[0],valid=_this$_filterValidato[1];if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);};_proto.isEmpty=function isEmpty(field){var _this$_filterValidato2=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato2[0],valid=_this$_filterValidato2[1];if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);};_proto.startsWith=function startsWith(){for(var _len7=arguments.length,args=new Array(_len7),_key7=0;_key7<_len7;_key7++){args[_key7]=arguments[_key7];}return this._AndStringOperand('$startsWith','.startsWith',args);};_proto.endsWith=function endsWith(){for(var _len8=arguments.length,args=new Array(_len8),_key8=0;_key8<_len8;_key8++){args[_key8]=arguments[_key8];}return this._AndStringOperand('$endsWith','.endsWith',args);};_proto.contains=function contains(){for(var _len9=arguments.length,args=new Array(_len9),_key9=0;_key9<_len9;_key9++){args[_key9]=arguments[_key9];}return this._AndStringOperand('$contains','.contains',args);};_proto.hasSome=function hasSome(){for(var _len10=arguments.length,args=new Array(_len10),_key10=0;_key10<_len10;_key10++){args[_key10]=arguments[_key10];}return this._AndSetOperand('$hasSome','.hasSome',args);};_proto.hasAll=function hasAll(){for(var _len11=arguments.length,args=new Array(_len11),_key11=0;_key11<_len11;_key11++){args[_key11]=arguments[_key11];}return this._AndSetOperand('$hasAll','.hasAll',args);};_proto.or=function or(orQuery){var _this$_filterValidato3=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato3[0],valid=_this$_filterValidato3[1];if(valid){var prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[].concat(prefix,[orQuery.filterTree])}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.and=function and(andQuery){var _this$_filterValidato4=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato4[0],valid=_this$_filterValidato4[1];if(valid){var prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd.apply(void 0,prefix.concat([andQuery.filterTree])),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.not=function not(notQuery){var _this$_filterValidato5=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate(),newInvalidArguments=_this$_filterValidato5[0],valid=_this$_filterValidato5[1];if(valid){var newFilterTree=clone(this.filterTree);var notClause={$not:[notQuery.filterTree]};var resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}};_proto.between=function between(field,rangeStart,rangeEnd){var _this$_filterValidato6=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate(),newInvalidArguments=_this$_filterValidato6[0],valid=_this$_filterValidato6[1];if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);};_proto.getFilterModel=function getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);};_proto.setFilterModel=function setFilterModel(filterModel){return this._copy(filterModel,[]);};_proto._binaryAnd=function _binaryAnd(filterOperatorSymbol,operatorName,args){var _Array$prototype$slic=Array.prototype.slice.call(args),field=_Array$prototype$slic[0],operand=_Array$prototype$slic[1];var _this$_filterValidato7=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate(),newInvalidArguments=_this$_filterValidato7[0];var newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndLogicalEquivalence=function _AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){var _Array$prototype$slic2=Array.prototype.slice.call(args),field=_Array$prototype$slic2[0],operand=_Array$prototype$slic2[1];var _this$_filterValidato8=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate(),newInvalidArguments=_this$_filterValidato8[0];var newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndStringOperand=function _AndStringOperand(filterOperatorName,operatorName,args){var _Array$prototype$slic3=Array.prototype.slice.call(args),field=_Array$prototype$slic3[0],operand=_Array$prototype$slic3[1];var _this$_filterValidato9=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate(),newInvalidArguments=_this$_filterValidato9[0];var newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);};_proto._AndSetOperand=function _AndSetOperand(filterOperatorName,operatorName,args){var _Array$prototype$slic4=Array.prototype.slice.call(args),field=_Array$prototype$slic4[0],rawOperands=_Array$prototype$slic4.slice(1);var operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;var _this$_filterValidato10=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate(),newInvalidArguments=_this$_filterValidato10[0];var newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);};_proto._makeNewFilter=function _makeNewFilter(field,filterOperatorName,operand){var newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
438
439
  // e.g. { val: { $ne: undefined } | translates to { val: {} }
439
440
  // Replacing 'undefined' with 'null' retains the filter.
440
- var serializableOperand=operand===undefined?null:operand;var newFilter=this._buildFilter(field,filterOperatorName,serializableOperand);if(isArray(newFilterTree.$and)){newFilterTree.$and.push(newFilter);return newFilterTree;}else{var result=isEmptyObject(newFilterTree)?inAnd(newFilter):inAnd(newFilterTree,newFilter);return result;}};_proto._buildFilter=function _buildFilter(field,filterOperatorName,operand){if(filterOperatorName!=='$eq'){var newFilter={};newFilter[field]={};newFilter[field][filterOperatorName]=this._replaceRefs(operand);return newFilter;}else{var _newFilter={};_newFilter[field]=this._replaceRefs(operand);return _newFilter;}};_proto._replaceRefs=function _replaceRefs(operand){var _this2=this;if(isArray(operand)){return operand.map(function(op){return _this2._replaceRefs(op);});}else{return operand;}};_proto._copy=function _copy(filterTree,invalidArguments){// @ts-ignore-next-line
441
+ var serializableOperand=operand===undefined?null:operand;var newFilter=this._buildFilter(field,filterOperatorName,serializableOperand);if(isArray(newFilterTree.$and)){newFilterTree.$and.push(newFilter);return newFilterTree;}else{var result=isEmptyObject(newFilterTree)?inAnd(newFilter):inAnd(newFilterTree,newFilter);return result;}};_proto._buildFilter=function _buildFilter(field,filterOperatorName,operand){if(filterOperatorName!=='$eq'){var newFilter={};newFilter[field]={};newFilter[field][filterOperatorName]=this._encode(operand);return newFilter;}else{var _newFilter={};_newFilter[field]=this._encode(operand);return _newFilter;}};_proto._encode=function _encode(operand){if(isFunction(this.encoder)){return this.encoder(operand);}else{return operand;}};_proto._copy=function _copy(filterTree,invalidArguments){// @ts-ignore-next-line
441
442
  return new this.constructor(extends_default()({},this,{filterTree:filterTree,invalidArguments:invalidArguments}));};_proto._filterValidator=function _filterValidator(filterOperatorName){return new FilterValidator(filterOperatorName,this.invalidArguments,this.constructor);};return _class2;}(Base);};function isConjunctiveFormFilter(filterTree){return isArray(filterTree.$and);}function isEmptyObject(obj){return Object.keys(obj).length===0;}function inAnd(){for(var _len12=arguments.length,args=new Array(_len12),_key12=0;_key12<_len12;_key12++){args[_key12]=arguments[_key12];}return{$and:args};}function inAndOptimized(){for(var _len13=arguments.length,args=new Array(_len13),_key13=0;_key13<_len13;_key13++){args[_key13]=arguments[_key13];}return{$and:args.reduce(function(aggr,val){return isConjunctiveFormFilter(val)?aggr.concat(val.$and):aggr.concat([val]);},[])};}function isEmptyAnd(node){return node&&node.$and&&node.$and.length===0;}/* harmony default export */ var filter_mixin = (filterMixin);
442
443
  ;// CONCATENATED MODULE: ./filter-builder.ts
443
- var FilterBuilder=/*#__PURE__*/function(_filterMixin){inheritsLoose_default()(FilterBuilder,_filterMixin);function FilterBuilder(){return _filterMixin.apply(this,arguments)||this;}var _proto=FilterBuilder.prototype;_proto._build=function _build(){return this.getFilterModel();};createClass_default()(FilterBuilder,[{key:"constructorName",get:function get(){return'FilterBuilder';}}]);return FilterBuilder;}(filter_mixin());function filterBuilder(){return new FilterBuilder({});}/* harmony default export */ var filter_builder = ((/* unused pure expression or super */ null && (filterBuilder)));
444
+ var FilterBuilder=/*#__PURE__*/function(_filterMixin){inheritsLoose_default()(FilterBuilder,_filterMixin);function FilterBuilder(){return _filterMixin.apply(this,arguments)||this;}var _proto=FilterBuilder.prototype;_proto._build=function _build(){return this.getFilterModel();};createClass_default()(FilterBuilder,[{key:"constructorName",get:function get(){return'FilterBuilder';}}]);return FilterBuilder;}(filter_mixin());function filterBuilder(params){if(params===void 0){params={};}return new FilterBuilder(params);}/* harmony default export */ var filter_builder = ((/* unused pure expression or super */ null && (filterBuilder)));
444
445
  // EXTERNAL MODULE: ./validator.ts
445
446
  var validator = __webpack_require__(476);
447
+ ;// CONCATENATED MODULE: ./wix-data-encoder.ts
448
+ function wixDataEncoder(operand){if(isDate(operand)){return{$date:operand.toJSON()};}else{return operand;}}
446
449
  ;// CONCATENATED MODULE: ./index.ts
447
450
  /* harmony default export */ var index = (filterBuilder);
448
451
  }();
@@ -1 +1 @@
1
- {"version":3,"file":"filter-builder.umd.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;;AAEA;AACA;AACA;AACA,YAAY,GAAG;AACf,YAAY,GAAG;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClJA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;ACTrE;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;ACjBrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;AChBrE;AACA;AACA,oBAAoB,sBAAsB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE,yBAAyB,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","sources":["webpack://_wix_filter_builder/webpack/universalModuleDefinition","webpack://_wix_filter_builder/../node_modules/kind-of/index.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/createClass.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/extends.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://_wix_filter_builder/webpack/bootstrap","webpack://_wix_filter_builder/webpack/runtime/compat get default export","webpack://_wix_filter_builder/webpack/runtime/define property getters","webpack://_wix_filter_builder/webpack/runtime/hasOwnProperty shorthand","webpack://_wix_filter_builder/webpack/runtime/make namespace object","webpack://_wix_filter_builder/./type-utils.ts","webpack://_wix_filter_builder/./clone.ts","webpack://_wix_filter_builder/./filter-validator.ts","webpack://_wix_filter_builder/./query-optimiser.ts","webpack://_wix_filter_builder/./filter-mixin.ts","webpack://_wix_filter_builder/./filter-builder.ts","webpack://_wix_filter_builder/./index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"platformized-filter-builder\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"platformized-filter-builder\"] = factory();\n\telse\n\t\troot[\"platformized-filter-builder\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n \n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n \n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor\n && typeof val.constructor.isBuffer === 'function'\n && val.constructor.isBuffer(val);\n}\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n","import { isDate } from './type-utils'\n\nexport default function clone(obj) {\n if (obj == null || typeof obj !== 'object') {\n return obj\n }\n\n let temp: any = null\n\n if (isDate(obj)) {\n temp = new Date(obj.getTime())\n } else {\n temp = obj.constructor()\n for (const key in obj) {\n temp[key] = clone(obj[key])\n }\n }\n\n return temp\n}\n","import { typeForDisplay, isDate, isString, isNumber } from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () => `Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () => `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${this.operatorName} field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () => `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${this.operatorName} expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n","const optimisations = [\n optimisedUnaryAnd,\n optimisedEmptyAnd,\n optimisedAndsAsObjects,\n optimisedNestedAnds,\n optimisedNestedOrs,\n]\n\nexport function optimisedQuery(query) {\n const [newQuery] = fullyOptimised(query)\n return newQuery\n}\n\nfunction fullyOptimised(query) {\n if (Array.isArray(query)) {\n return fullyOptimisedArray(query)\n }\n if (\n typeof query === 'object' &&\n query !== null &&\n !instanceOfIgnoredType(query)\n ) {\n return fullyOptimisedObject(query)\n }\n return [query, false]\n}\n\nfunction fullyOptimisedArray(query) {\n const optimisedElements = query.map(fullyOptimised)\n const somethingChanged =\n 0 < optimisedElements.filter(([, elementChanged]) => elementChanged).length\n const newElements = optimisedElements.map(([element]) => element)\n return [newElements, somethingChanged]\n}\n\nfunction fullyOptimisedObject(query) {\n const [queryAfterOptimisingEntries, changedStage1] =\n fullEntriesOptimisation(query)\n const [queryAfterFullOptimisation, changedStage2] = fullObjectOptimisation(\n queryAfterOptimisingEntries\n )\n const changed = changedStage1 || changedStage2\n return [queryAfterFullOptimisation, changed]\n\n function fullObjectOptimisation(query) {\n const updatedQuery = applyFirstOptimisation(query)\n if (!updatedQuery) {\n return [query, false]\n }\n const [finalQuery] = fullyOptimised(updatedQuery)\n return [finalQuery, true]\n }\n\n function fullEntriesOptimisation(query) {\n const changedEntries = Object.entries(query)\n .map(entryOptimisation)\n .filter(([, , changed]) => changed)\n const newQuery = { ...query, ...entriesAsObject(changedEntries) }\n const changed = !!changedEntries.length\n return [newQuery, changed]\n }\n\n function entryOptimisation([key, value]) {\n const [newValue, changed] = fullyOptimised(value)\n return [key, newValue, changed]\n }\n\n function entriesAsObject(entries) {\n return entries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n}\n\nfunction applyFirstOptimisation(node) {\n for (const optimisation of optimisations) {\n const newNode = optimisation(node)\n if (newNode) {\n return newNode\n }\n }\n}\n\nfunction optimisedUnaryAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 1) {\n return args[0]\n }\n}\n\nfunction optimisedEmptyAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 0) {\n return {}\n }\n return null\n}\n\nfunction optimisedAndsAsObjects(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n let basicObjects: any[] = []\n let operatorObjects: any[] = []\n\n args.forEach((arg) => {\n if (isOperator(arg)) {\n operatorObjects = [...operatorObjects, arg]\n } else {\n basicObjects = [...basicObjects, arg]\n }\n })\n\n if (basicObjects.length <= 1 || haveOverlappingFields(basicObjects)) {\n return\n }\n const combinedBasicObjects = Object.assign({}, ...basicObjects)\n\n return { $and: [combinedBasicObjects, ...operatorObjects] }\n\n function isOperator(node) {\n const keys = Object.keys(node)\n return keys.every((name) => name.startsWith('$')) && keys.length > 0\n }\n\n function haveOverlappingFields(objects) {\n const nonUniqueKeys = objects\n .map((it) => Object.keys(it))\n .reduce((a, b) => [...a, ...b], [])\n const uniqueKeys = unique(nonUniqueKeys)\n return uniqueKeys.length !== nonUniqueKeys.length\n }\n\n function unique(values) {\n const dict = {}\n values.forEach((v) => (dict[v] = true))\n return Object.keys(dict)\n }\n}\n\nfunction optimisedNestedAnds(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n const hasNestedAnds = !!args.find((it) => it.$and)\n if (!hasNestedAnds) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const and = current.$and\n if (!and) {\n return [...result, current]\n }\n return [...result, ...and]\n }, [])\n return { $and: newArgs }\n}\n\nfunction optimisedNestedOrs(node) {\n const args = node.$or\n if (!args) {\n return\n }\n\n const hasNestedOrs = !!args.find((it) => it.$or)\n if (!hasNestedOrs) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const or = current.$or\n if (!or) {\n return [...result, current]\n }\n return [...result, ...or]\n }, [])\n return { $or: newArgs }\n}\n\nfunction instanceOfIgnoredType(obj) {\n return obj instanceof Date\n}\n","import { isArray } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n\n constructor(obj: { filterTree?; invalidArguments? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._replaceRefs(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._replaceRefs(operand)\n return newFilter\n }\n }\n\n _replaceRefs(operand) {\n if (isArray(operand)) {\n return operand.map((op) => this._replaceRefs(op))\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n","import filterMixin from './filter-mixin'\n\nexport class FilterBuilder extends filterMixin() {\n get constructorName() {\n return 'FilterBuilder'\n }\n\n _build() {\n return this.getFilterModel()\n }\n}\n\nexport function filterBuilder() {\n return new FilterBuilder({})\n}\n\nexport default filterBuilder\n","import { filterBuilder } from './filter-builder'\nimport filterMixin from './filter-mixin'\nimport { optimisedQuery as optimiseQuery } from './query-optimiser'\nimport { Validator } from './validator'\n\nexport { filterMixin, filterBuilder, optimiseQuery, Validator }\n\nexport default filterBuilder\n"],"names":["getKind","isObject","obj","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length","clone","temp","Date","getTime","constructor","key","FilterValidator","operatorName","previousInvalidArguments","ctor","_validations","_invalidArguments","typeIsString","value","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","sameType","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","arityIsOne","args","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","fullyOptimised","newQuery","Array","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","newElements","element","fullEntriesOptimisation","queryAfterOptimisingEntries","changedStage1","fullObjectOptimisation","queryAfterFullOptimisation","changedStage2","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","newValue","reduce","acc","node","optimisation","newNode","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","filterMixin","Base","filterTree","invalidArguments","eq","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","_filterValidator","arguments","newInvalidArguments","_copy","isEmpty","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","orQuery","prefix","isEmptyAnd","inAnd","concat","andQuery","not","notQuery","newFilterTree","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","prototype","call","operand","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","undefined","newFilter","_buildFilter","isEmptyObject","_replaceRefs","op","isConjunctiveFormFilter","aggr","val","FilterBuilder","_build","filterBuilder","optimiseQuery","Validator"],"sourceRoot":""}
1
+ {"version":3,"file":"filter-builder.umd.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;;AAEA;AACA;AACA;AACA,YAAY,GAAG;AACf,YAAY,GAAG;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClJA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;ACTrE;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;ACjBrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB,mBAAmB,yBAAyB;;;;;;;;;;AChBrE;AACA;AACA,oBAAoB,sBAAsB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE,yBAAyB,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","sources":["webpack://_wix_filter_builder/webpack/universalModuleDefinition","webpack://_wix_filter_builder/../node_modules/kind-of/index.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/createClass.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/extends.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://_wix_filter_builder/../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://_wix_filter_builder/webpack/bootstrap","webpack://_wix_filter_builder/webpack/runtime/compat get default export","webpack://_wix_filter_builder/webpack/runtime/define property getters","webpack://_wix_filter_builder/webpack/runtime/hasOwnProperty shorthand","webpack://_wix_filter_builder/webpack/runtime/make namespace object","webpack://_wix_filter_builder/./type-utils.ts","webpack://_wix_filter_builder/./clone.ts","webpack://_wix_filter_builder/./filter-validator.ts","webpack://_wix_filter_builder/./query-optimiser.ts","webpack://_wix_filter_builder/./filter-mixin.ts","webpack://_wix_filter_builder/./filter-builder.ts","webpack://_wix_filter_builder/./wix-data-encoder.ts","webpack://_wix_filter_builder/./index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"platformized-filter-builder\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"platformized-filter-builder\"] = factory();\n\telse\n\t\troot[\"platformized-filter-builder\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","var toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n var type = typeof val;\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n \n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n \n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor\n && typeof val.constructor.isBuffer === 'function'\n && val.constructor.isBuffer(val);\n}\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n","import { isDate } from './type-utils'\n\nexport default function clone(obj) {\n if (obj == null || typeof obj !== 'object') {\n return obj\n }\n\n let temp: any = null\n\n if (isDate(obj)) {\n temp = new Date(obj.getTime())\n } else {\n temp = obj.constructor()\n for (const key in obj) {\n temp[key] = clone(obj[key])\n }\n }\n\n return temp\n}\n","import { typeForDisplay, isDate, isString, isNumber } from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () => `Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () => `Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () => `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${this.operatorName} field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () => `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${this.operatorName} expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () => `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n","const optimisations = [\n optimisedUnaryAnd,\n optimisedEmptyAnd,\n optimisedAndsAsObjects,\n optimisedNestedAnds,\n optimisedNestedOrs,\n]\n\nexport function optimisedQuery(query) {\n const [newQuery] = fullyOptimised(query)\n return newQuery\n}\n\nfunction fullyOptimised(query) {\n if (Array.isArray(query)) {\n return fullyOptimisedArray(query)\n }\n if (\n typeof query === 'object' &&\n query !== null &&\n !instanceOfIgnoredType(query)\n ) {\n return fullyOptimisedObject(query)\n }\n return [query, false]\n}\n\nfunction fullyOptimisedArray(query) {\n const optimisedElements = query.map(fullyOptimised)\n const somethingChanged =\n 0 < optimisedElements.filter(([, elementChanged]) => elementChanged).length\n const newElements = optimisedElements.map(([element]) => element)\n return [newElements, somethingChanged]\n}\n\nfunction fullyOptimisedObject(query) {\n const [queryAfterOptimisingEntries, changedStage1] =\n fullEntriesOptimisation(query)\n const [queryAfterFullOptimisation, changedStage2] = fullObjectOptimisation(\n queryAfterOptimisingEntries\n )\n const changed = changedStage1 || changedStage2\n return [queryAfterFullOptimisation, changed]\n\n function fullObjectOptimisation(query) {\n const updatedQuery = applyFirstOptimisation(query)\n if (!updatedQuery) {\n return [query, false]\n }\n const [finalQuery] = fullyOptimised(updatedQuery)\n return [finalQuery, true]\n }\n\n function fullEntriesOptimisation(query) {\n const changedEntries = Object.entries(query)\n .map(entryOptimisation)\n .filter(([, , changed]) => changed)\n const newQuery = { ...query, ...entriesAsObject(changedEntries) }\n const changed = !!changedEntries.length\n return [newQuery, changed]\n }\n\n function entryOptimisation([key, value]) {\n const [newValue, changed] = fullyOptimised(value)\n return [key, newValue, changed]\n }\n\n function entriesAsObject(entries) {\n return entries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n}\n\nfunction applyFirstOptimisation(node) {\n for (const optimisation of optimisations) {\n const newNode = optimisation(node)\n if (newNode) {\n return newNode\n }\n }\n}\n\nfunction optimisedUnaryAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 1) {\n return args[0]\n }\n}\n\nfunction optimisedEmptyAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 0) {\n return {}\n }\n return null\n}\n\nfunction optimisedAndsAsObjects(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n let basicObjects: any[] = []\n let operatorObjects: any[] = []\n\n args.forEach((arg) => {\n if (isOperator(arg)) {\n operatorObjects = [...operatorObjects, arg]\n } else {\n basicObjects = [...basicObjects, arg]\n }\n })\n\n if (basicObjects.length <= 1 || haveOverlappingFields(basicObjects)) {\n return\n }\n const combinedBasicObjects = Object.assign({}, ...basicObjects)\n\n return { $and: [combinedBasicObjects, ...operatorObjects] }\n\n function isOperator(node) {\n const keys = Object.keys(node)\n return keys.every((name) => name.startsWith('$')) && keys.length > 0\n }\n\n function haveOverlappingFields(objects) {\n const nonUniqueKeys = objects\n .map((it) => Object.keys(it))\n .reduce((a, b) => [...a, ...b], [])\n const uniqueKeys = unique(nonUniqueKeys)\n return uniqueKeys.length !== nonUniqueKeys.length\n }\n\n function unique(values) {\n const dict = {}\n values.forEach((v) => (dict[v] = true))\n return Object.keys(dict)\n }\n}\n\nfunction optimisedNestedAnds(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n const hasNestedAnds = !!args.find((it) => it.$and)\n if (!hasNestedAnds) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const and = current.$and\n if (!and) {\n return [...result, current]\n }\n return [...result, ...and]\n }, [])\n return { $and: newArgs }\n}\n\nfunction optimisedNestedOrs(node) {\n const args = node.$or\n if (!args) {\n return\n }\n\n const hasNestedOrs = !!args.find((it) => it.$or)\n if (!hasNestedOrs) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const or = current.$or\n if (!or) {\n return [...result, current]\n }\n return [...result, ...or]\n }, [])\n return { $or: newArgs }\n}\n\nfunction instanceOfIgnoredType(obj) {\n return obj instanceof Date\n}\n","import { isArray, isFunction } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n encoder\n\n constructor(obj: { filterTree?; invalidArguments?; encoder? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n this.encoder = obj.encoder || {}\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._encode(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._encode(operand)\n return newFilter\n }\n }\n\n _encode(operand) {\n if (isFunction(this.encoder)) {\n return this.encoder(operand)\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n","import filterMixin from './filter-mixin'\n\nexport class FilterBuilder extends filterMixin() {\n get constructorName() {\n return 'FilterBuilder'\n }\n\n _build() {\n return this.getFilterModel()\n }\n}\n\nexport function filterBuilder(params = {}) {\n return new FilterBuilder(params)\n}\n\nexport default filterBuilder\n","import { isDate } from './type-utils'\n\nexport function wixDataEncoder(operand) {\n if (isDate(operand)) {\n return { $date: operand.toJSON() }\n } else {\n return operand\n }\n}\n","import { filterBuilder } from './filter-builder'\nimport filterMixin from './filter-mixin'\nimport { optimisedQuery as optimiseQuery } from './query-optimiser'\nimport { Validator } from './validator'\nimport { wixDataEncoder } from './wix-data-encoder'\n\nexport { filterMixin, filterBuilder, optimiseQuery, Validator, wixDataEncoder }\n\nexport default filterBuilder\n"],"names":["getKind","isObject","obj","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length","clone","temp","Date","getTime","constructor","key","FilterValidator","operatorName","previousInvalidArguments","ctor","_validations","_invalidArguments","typeIsString","value","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","sameType","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","arityIsOne","args","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","fullyOptimised","newQuery","Array","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","newElements","element","fullEntriesOptimisation","queryAfterOptimisingEntries","changedStage1","fullObjectOptimisation","queryAfterFullOptimisation","changedStage2","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","newValue","reduce","acc","node","optimisation","newNode","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","filterMixin","Base","filterTree","invalidArguments","encoder","eq","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","_filterValidator","arguments","newInvalidArguments","_copy","isEmpty","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","orQuery","prefix","isEmptyAnd","inAnd","concat","andQuery","not","notQuery","newFilterTree","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","prototype","call","operand","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","undefined","newFilter","_buildFilter","isEmptyObject","_encode","isConjunctiveFormFilter","aggr","val","FilterBuilder","_build","filterBuilder","params","wixDataEncoder","$date","toJSON","optimiseQuery","Validator"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("platformized-filter-builder",[],r):"object"==typeof exports?exports["platformized-filter-builder"]=r():t["platformized-filter-builder"]=r()}("undefined"!=typeof self?self:this,(function(){return function(){var t={306:function(t){var r=Object.prototype.toString;t.exports=function(t){var e=typeof t;return"undefined"===e?"undefined":null===t?"null":!0===t||!1===t||t instanceof Boolean?"boolean":"string"===e||t instanceof String?"string":"number"===e||t instanceof Number?"number":"function"===e||t instanceof Function?void 0!==t.constructor.name&&"Generator"===t.constructor.name.slice(0,9)?"generatorfunction":"function":void 0!==Array.isArray&&Array.isArray(t)?"array":t instanceof RegExp?"regexp":t instanceof Date?"date":"[object RegExp]"===(e=r.call(t))?"regexp":"[object Date]"===e?"date":"[object Arguments]"===e?"arguments":"[object Error]"===e?"error":"[object Promise]"===e?"promise":function(t){return t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}(t)?"buffer":"[object Set]"===e?"set":"[object WeakSet]"===e?"weakset":"[object Map]"===e?"map":"[object WeakMap]"===e?"weakmap":"[object Symbol]"===e?"symbol":"[object Map Iterator]"===e?"mapiterator":"[object Set Iterator]"===e?"setiterator":"[object String Iterator]"===e?"stringiterator":"[object Array Iterator]"===e?"arrayiterator":"[object Int8Array]"===e?"int8array":"[object Uint8Array]"===e?"uint8array":"[object Uint8ClampedArray]"===e?"uint8clampedarray":"[object Int16Array]"===e?"int16array":"[object Uint16Array]"===e?"uint16array":"[object Int32Array]"===e?"int32array":"[object Uint32Array]"===e?"uint32array":"[object Float32Array]"===e?"float32array":"[object Float64Array]"===e?"float64array":"object"}},663:function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},587:function(t){function r(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0},837:function(t){t.exports=function(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t},t.exports.default=t.exports,t.exports.__esModule=!0},921:function(t){function r(){return t.exports=r=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},t.exports.default=t.exports,t.exports.__esModule=!0,r.apply(this,arguments)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},354:function(t,r,e){var n=e(262);t.exports=function(t,r){t.prototype=Object.create(r.prototype),t.prototype.constructor=t,n(t,r)},t.exports.default=t.exports,t.exports.__esModule=!0},262:function(t){function r(e,n){return t.exports=r=Object.setPrototypeOf||function(t,r){return t.__proto__=r,t},t.exports.default=t.exports,t.exports.__esModule=!0,r(e,n)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},476:function(){}},r={};function e(n){var i=r[n];if(void 0!==i)return i.exports;var a=r[n]={exports:{}};return t[n](a,a.exports,e),a.exports}e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},e.d=function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return function(){"use strict";e.r(n),e.d(n,{Validator:function(){return M.Validator},default:function(){return E},filterBuilder:function(){return V},filterMixin:function(){return T},optimiseQuery:function(){return x}});var t=e(587),r=e.n(t),i=e(354),a=e.n(i),o=e(921),u=e.n(o),s=e(663),c=e.n(s),l=e(837),f=e.n(l),d=e(306),p=e.n(d);function h(t){return"array"===p()(t)}function v(t){return"date"===p()(t)}function y(t){return"string"===p()(t)}function g(t){return function(t){if(!y(t))return t;var r=t.slice(0,1).toUpperCase(),e=t.slice(1,t.length);return r+e}(p()(t))}function m(t){if(null==t||"object"!=typeof t)return t;var r=null;if(v(t))r=new Date(t.getTime());else for(var e in r=t.constructor(),t)r[e]=m(t[e]);return r}var A=function(){function t(t,r,e){f()(this,"ctor",void 0),f()(this,"_invalidArguments",void 0),f()(this,"_validations",void 0),f()(this,"operatorName",void 0),this._validations=[],this.operatorName=t,this.ctor=e,this._invalidArguments=m(r)}var r=t.prototype;return r.typeIsString=function(t){var r=this;return this.addValidation((function(){return y(t)}),(function(){return"Invalid "+r.operatorName+" parameter value ["+g(t)+"]. "+r.operatorName+" parameter must be a String."}))},r.typeIsStringNumberOrDate=function(t){var r=this;return this.addValidation((function(){return b(t)}),(function(){return"Invalid "+r.operatorName+" parameter value ["+g(t)+"]. Valid "+r.operatorName+" parameter types are String, Number or Date."}))},r.sameType=function(t,r){var e=this;return this.addValidation((function(){return g(t)===g(r)}),(function(){return"Invalid "+e.operatorName+" parameter values ["+g(t)+"] and ["+g(r)+"]. Both parameters must be of the same type."}))},r.typeIsStringNumberOrDateForAll=function(t){var r=this;return this.addValidation((function(){return t.every(b)}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" supports only Number, String or Date items."}))},r.validFieldName=function(t){var r=this;return this.addValidation((function(){return y(t)}),(function(){return"Invalid "+r.operatorName+" field value ["+g(t)+"]. "+r.operatorName+" field must be a String."}))},r.isInstanceOfSameClass=function(t){var r=this;return this.addValidation((function(){return t instanceof r.ctor}),(function(){return"Invalid "+r.operatorName+" parameter ["+g(t)+"]. "+r.operatorName+" expects FilterBuilder only."}))},r.arityIsOne=function(t){var r=this;return this.addValidation((function(){return 1===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires one parameter."}))},r.arityIsTwo=function(t){var r=this;return this.addValidation((function(){return 2===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires two parameters."}))},r.arityIsThree=function(t){var r=this;return this.addValidation((function(){return 3===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires three parameters."}))},r.arityIsAtLeastTwo=function(t){var r=this;return this.addValidation((function(){return t.length>=2}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires at least two parameters."}))},r.addValidation=function(t,r){return this._validations.push({predicateFn:t,messageFn:r}),this},r.validateAndAggregate=function(){var t=this,r=this._validations.every((function(r){var e=r.predicateFn,n=r.messageFn;return t._appendIfInvalid(e(),n())}));return[this._invalidArguments,r]},r._appendIfInvalid=function(t,r){return!!t||(this._invalidArguments.push(r),!1)},t}();function b(t){return y(t)||(r=t,"number"===p()(r))||v(t);var r}function _(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function(t,r){if(!t)return;if("string"==typeof t)return j(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return j(t,r)}(t))||r&&t&&"number"==typeof t.length){e&&(t=e);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var I=[function(t){var r=t.$and;if(Array.isArray(r)&&1===r.length)return r[0]},function(t){var r=t.$and;if(Array.isArray(r)&&0===r.length)return{};return null},function(t){var r=t.$and;if(!r)return;var e=[],n=[];if(r.forEach((function(t){!function(t){var r=Object.keys(t);return r.every((function(t){return t.startsWith("$")}))&&r.length>0}(t)?e=[].concat(e,[t]):n=[].concat(n,[t])})),e.length<=1||function(t){var r=t.map((function(t){return Object.keys(t)})).reduce((function(t,r){return[].concat(t,r)}),[]);return(e=r,n={},e.forEach((function(t){return n[t]=!0})),Object.keys(n)).length!==r.length;var e,n}(e))return;return{$and:[Object.assign.apply(Object,[{}].concat(e))].concat(n)}},function(t){var r=t.$and;if(!r)return;if(!r.find((function(t){return t.$and})))return;return{$and:r.reduce((function(t,r){var e=r.$and;return[].concat(t,e||[r])}),[])}},function(t){var r=t.$or;if(!r)return;if(!r.find((function(t){return t.$or})))return;return{$or:r.reduce((function(t,r){var e=r.$or;return[].concat(t,e||[r])}),[])}}];function x(t){return O(t)[0]}function O(t){return Array.isArray(t)?function(t){var r=t.map(O),e=0<r.filter((function(t){return t[1]})).length;return[r.map((function(t){return t[0]})),e]}(t):"object"!=typeof t||null===t||t instanceof Date?[t,!1]:function(t){var r=c(t),e=r[0],n=r[1],i=s(e),a=i[0],o=i[1];return[a,n||o];function s(t){var r=function(t){for(var r,e=_(I);!(r=e()).done;){var n=(0,r.value)(t);if(n)return n}}(t);return r?[O(r)[0],!0]:[t,!1]}function c(t){var r=Object.entries(t).map(l).filter((function(t){return t[2]}));return[u()({},t,f(r)),!!r.length]}function l(t){var r=t[0],e=O(t[1]);return[r,e[0],e[1]]}function f(t){return t.reduce((function(t,r){var e,n=r[0],i=r[1];return u()({},t,((e={})[n]=i,e))}),{})}}(t)}function w(t){return h(t.$and)}function N(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return{$and:r}}function S(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return{$and:r.reduce((function(t,r){return w(r)?t.concat(r.$and):t.concat([r])}),[])}}function $(t){return t&&t.$and&&0===t.$and.length}var T=function(t){return void 0===t&&(t=function(){}),function(t){function r(r){var e;return void 0===r&&(r={}),e=t.call(this,r)||this,f()(c()(e),"filterTree",void 0),f()(c()(e),"invalidArguments",void 0),e.filterTree=r.filterTree||{$and:[]},e.invalidArguments=r.invalidArguments||[],e}a()(r,t);var e=r.prototype;return e.eq=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._binaryAnd("$eq",".eq",r)},e.ne=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._binaryAnd("$ne",".ne",r)},e.ge=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$gte",".ge",r)},e.gt=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$gt",".gt",r)},e.le=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$lte",".le",r)},e.lt=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$lt",".lt",r)},e.isNotEmpty=function(t){var r=this._filterValidator(".isNotEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate(),e=r[0],n=r[1];return n?this.ne(t,null):this._copy(this.filterTree,e)},e.isEmpty=function(t){var r=this._filterValidator(".isEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate(),e=r[0],n=r[1];return n?this.eq(t,null):this._copy(this.filterTree,e)},e.startsWith=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$startsWith",".startsWith",r)},e.endsWith=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$endsWith",".endsWith",r)},e.contains=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$contains",".contains",r)},e.hasSome=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndSetOperand("$hasSome",".hasSome",r)},e.hasAll=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndSetOperand("$hasAll",".hasAll",r)},e.or=function(t){var r=this._filterValidator(".or").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=$(this.filterTree)?[]:[this.filterTree];return this._copy(N({$or:[].concat(i,[t.filterTree])}),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.and=function(t){var r=this._filterValidator(".and").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=$(this.filterTree)?[]:[this.filterTree];return this._copy(N.apply(void 0,i.concat([t.filterTree])),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.not=function(t){var r=this._filterValidator(".not").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=m(this.filterTree),a={$not:[t.filterTree]},o=S(i,a);return this._copy(o,e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.between=function(t,r,e){var n=this._filterValidator(".between").arityIsThree(arguments).sameType(r,e).typeIsStringNumberOrDate(r).typeIsStringNumberOrDate(e).validateAndAggregate(),i=n[0],a=n[1];return a?this.ge(t,r).lt(t,e):this._copy(this.filterTree,i)},e.getFilterModel=function(){if(this.invalidArguments.length>0)throw new Error(this.invalidArguments.join(" "));return x(this.filterTree)},e.setFilterModel=function(t){return this._copy(t,[])},e._binaryAnd=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndLogicalEquivalence=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).typeIsStringNumberOrDate(a).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndStringOperand=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).typeIsString(a).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndSetOperand=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n.slice(1),o=h(a[0])?a[0]:a,u=this._filterValidator(r).arityIsAtLeastTwo(e).validFieldName(i).typeIsStringNumberOrDateForAll(o).validateAndAggregate()[0],s=this._makeNewFilter(i,t,o);return this._copy(s,u)},e._makeNewFilter=function(t,r,e){var n,i=m(this.filterTree),a=void 0===e?null:e,o=this._buildFilter(t,r,a);return h(i.$and)?(i.$and.push(o),i):(n=i,0===Object.keys(n).length?N(o):N(i,o))},e._buildFilter=function(t,r,e){if("$eq"!==r){var n={};return n[t]={},n[t][r]=this._replaceRefs(e),n}var i={};return i[t]=this._replaceRefs(e),i},e._replaceRefs=function(t){var r=this;return h(t)?t.map((function(t){return r._replaceRefs(t)})):t},e._copy=function(t,r){return new this.constructor(u()({},this,{filterTree:t,invalidArguments:r}))},e._filterValidator=function(t){return new A(t,this.invalidArguments,this.constructor)},r}(t)},F=function(t){function e(){return t.apply(this,arguments)||this}return a()(e,t),e.prototype._build=function(){return this.getFilterModel()},r()(e,[{key:"constructorName",get:function(){return"FilterBuilder"}}]),e}(T());function V(){return new F({})}var M=e(476),E=V}(),n}()}));
1
+ !function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("platformized-filter-builder",[],r):"object"==typeof exports?exports["platformized-filter-builder"]=r():t["platformized-filter-builder"]=r()}("undefined"!=typeof self?self:this,(function(){return function(){var t={306:function(t){var r=Object.prototype.toString;t.exports=function(t){var e=typeof t;return"undefined"===e?"undefined":null===t?"null":!0===t||!1===t||t instanceof Boolean?"boolean":"string"===e||t instanceof String?"string":"number"===e||t instanceof Number?"number":"function"===e||t instanceof Function?void 0!==t.constructor.name&&"Generator"===t.constructor.name.slice(0,9)?"generatorfunction":"function":void 0!==Array.isArray&&Array.isArray(t)?"array":t instanceof RegExp?"regexp":t instanceof Date?"date":"[object RegExp]"===(e=r.call(t))?"regexp":"[object Date]"===e?"date":"[object Arguments]"===e?"arguments":"[object Error]"===e?"error":"[object Promise]"===e?"promise":function(t){return t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}(t)?"buffer":"[object Set]"===e?"set":"[object WeakSet]"===e?"weakset":"[object Map]"===e?"map":"[object WeakMap]"===e?"weakmap":"[object Symbol]"===e?"symbol":"[object Map Iterator]"===e?"mapiterator":"[object Set Iterator]"===e?"setiterator":"[object String Iterator]"===e?"stringiterator":"[object Array Iterator]"===e?"arrayiterator":"[object Int8Array]"===e?"int8array":"[object Uint8Array]"===e?"uint8array":"[object Uint8ClampedArray]"===e?"uint8clampedarray":"[object Int16Array]"===e?"int16array":"[object Uint16Array]"===e?"uint16array":"[object Int32Array]"===e?"int32array":"[object Uint32Array]"===e?"uint32array":"[object Float32Array]"===e?"float32array":"[object Float64Array]"===e?"float64array":"object"}},663:function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},587:function(t){function r(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0},837:function(t){t.exports=function(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t},t.exports.default=t.exports,t.exports.__esModule=!0},921:function(t){function r(){return t.exports=r=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},t.exports.default=t.exports,t.exports.__esModule=!0,r.apply(this,arguments)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},354:function(t,r,e){var n=e(262);t.exports=function(t,r){t.prototype=Object.create(r.prototype),t.prototype.constructor=t,n(t,r)},t.exports.default=t.exports,t.exports.__esModule=!0},262:function(t){function r(e,n){return t.exports=r=Object.setPrototypeOf||function(t,r){return t.__proto__=r,t},t.exports.default=t.exports,t.exports.__esModule=!0,r(e,n)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},476:function(){}},r={};function e(n){var i=r[n];if(void 0!==i)return i.exports;var a=r[n]={exports:{}};return t[n](a,a.exports,e),a.exports}e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},e.d=function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return function(){"use strict";e.r(n),e.d(n,{Validator:function(){return M.Validator},default:function(){return k},filterBuilder:function(){return V},filterMixin:function(){return T},optimiseQuery:function(){return x},wixDataEncoder:function(){return E}});var t=e(587),r=e.n(t),i=e(354),a=e.n(i),o=e(921),u=e.n(o),c=e(663),s=e.n(c),l=e(837),f=e.n(l),d=e(306),p=e.n(d);function v(t){return"array"===p()(t)}function h(t){return"date"===p()(t)}function y(t){return"string"===p()(t)}function g(t){return function(t){if(!y(t))return t;var r=t.slice(0,1).toUpperCase(),e=t.slice(1,t.length);return r+e}(p()(t))}function m(t){if(null==t||"object"!=typeof t)return t;var r=null;if(h(t))r=new Date(t.getTime());else for(var e in r=t.constructor(),t)r[e]=m(t[e]);return r}var A=function(){function t(t,r,e){f()(this,"ctor",void 0),f()(this,"_invalidArguments",void 0),f()(this,"_validations",void 0),f()(this,"operatorName",void 0),this._validations=[],this.operatorName=t,this.ctor=e,this._invalidArguments=m(r)}var r=t.prototype;return r.typeIsString=function(t){var r=this;return this.addValidation((function(){return y(t)}),(function(){return"Invalid "+r.operatorName+" parameter value ["+g(t)+"]. "+r.operatorName+" parameter must be a String."}))},r.typeIsStringNumberOrDate=function(t){var r=this;return this.addValidation((function(){return b(t)}),(function(){return"Invalid "+r.operatorName+" parameter value ["+g(t)+"]. Valid "+r.operatorName+" parameter types are String, Number or Date."}))},r.sameType=function(t,r){var e=this;return this.addValidation((function(){return g(t)===g(r)}),(function(){return"Invalid "+e.operatorName+" parameter values ["+g(t)+"] and ["+g(r)+"]. Both parameters must be of the same type."}))},r.typeIsStringNumberOrDateForAll=function(t){var r=this;return this.addValidation((function(){return t.every(b)}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" supports only Number, String or Date items."}))},r.validFieldName=function(t){var r=this;return this.addValidation((function(){return y(t)}),(function(){return"Invalid "+r.operatorName+" field value ["+g(t)+"]. "+r.operatorName+" field must be a String."}))},r.isInstanceOfSameClass=function(t){var r=this;return this.addValidation((function(){return t instanceof r.ctor}),(function(){return"Invalid "+r.operatorName+" parameter ["+g(t)+"]. "+r.operatorName+" expects FilterBuilder only."}))},r.arityIsOne=function(t){var r=this;return this.addValidation((function(){return 1===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires one parameter."}))},r.arityIsTwo=function(t){var r=this;return this.addValidation((function(){return 2===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires two parameters."}))},r.arityIsThree=function(t){var r=this;return this.addValidation((function(){return 3===t.length}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires three parameters."}))},r.arityIsAtLeastTwo=function(t){var r=this;return this.addValidation((function(){return t.length>=2}),(function(){return"Invalid "+r.operatorName+" usage. "+r.operatorName+" requires at least two parameters."}))},r.addValidation=function(t,r){return this._validations.push({predicateFn:t,messageFn:r}),this},r.validateAndAggregate=function(){var t=this,r=this._validations.every((function(r){var e=r.predicateFn,n=r.messageFn;return t._appendIfInvalid(e(),n())}));return[this._invalidArguments,r]},r._appendIfInvalid=function(t,r){return!!t||(this._invalidArguments.push(r),!1)},t}();function b(t){return y(t)||(r=t,"number"===p()(r))||h(t);var r}function _(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function(t,r){if(!t)return;if("string"==typeof t)return j(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return j(t,r)}(t))||r&&t&&"number"==typeof t.length){e&&(t=e);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var I=[function(t){var r=t.$and;if(Array.isArray(r)&&1===r.length)return r[0]},function(t){var r=t.$and;if(Array.isArray(r)&&0===r.length)return{};return null},function(t){var r=t.$and;if(!r)return;var e=[],n=[];if(r.forEach((function(t){!function(t){var r=Object.keys(t);return r.every((function(t){return t.startsWith("$")}))&&r.length>0}(t)?e=[].concat(e,[t]):n=[].concat(n,[t])})),e.length<=1||function(t){var r=t.map((function(t){return Object.keys(t)})).reduce((function(t,r){return[].concat(t,r)}),[]);return(e=r,n={},e.forEach((function(t){return n[t]=!0})),Object.keys(n)).length!==r.length;var e,n}(e))return;return{$and:[Object.assign.apply(Object,[{}].concat(e))].concat(n)}},function(t){var r=t.$and;if(!r)return;if(!r.find((function(t){return t.$and})))return;return{$and:r.reduce((function(t,r){var e=r.$and;return[].concat(t,e||[r])}),[])}},function(t){var r=t.$or;if(!r)return;if(!r.find((function(t){return t.$or})))return;return{$or:r.reduce((function(t,r){var e=r.$or;return[].concat(t,e||[r])}),[])}}];function x(t){return O(t)[0]}function O(t){return Array.isArray(t)?function(t){var r=t.map(O),e=0<r.filter((function(t){return t[1]})).length;return[r.map((function(t){return t[0]})),e]}(t):"object"!=typeof t||null===t||t instanceof Date?[t,!1]:function(t){var r=s(t),e=r[0],n=r[1],i=c(e),a=i[0],o=i[1];return[a,n||o];function c(t){var r=function(t){for(var r,e=_(I);!(r=e()).done;){var n=(0,r.value)(t);if(n)return n}}(t);return r?[O(r)[0],!0]:[t,!1]}function s(t){var r=Object.entries(t).map(l).filter((function(t){return t[2]}));return[u()({},t,f(r)),!!r.length]}function l(t){var r=t[0],e=O(t[1]);return[r,e[0],e[1]]}function f(t){return t.reduce((function(t,r){var e,n=r[0],i=r[1];return u()({},t,((e={})[n]=i,e))}),{})}}(t)}function w(t){return v(t.$and)}function N(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return{$and:r}}function S(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return{$and:r.reduce((function(t,r){return w(r)?t.concat(r.$and):t.concat([r])}),[])}}function $(t){return t&&t.$and&&0===t.$and.length}var T=function(t){return void 0===t&&(t=function(){}),function(t){function r(r){var e;return void 0===r&&(r={}),e=t.call(this,r)||this,f()(s()(e),"filterTree",void 0),f()(s()(e),"invalidArguments",void 0),f()(s()(e),"encoder",void 0),e.filterTree=r.filterTree||{$and:[]},e.invalidArguments=r.invalidArguments||[],e.encoder=r.encoder||{},e}a()(r,t);var e=r.prototype;return e.eq=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._binaryAnd("$eq",".eq",r)},e.ne=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._binaryAnd("$ne",".ne",r)},e.ge=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$gte",".ge",r)},e.gt=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$gt",".gt",r)},e.le=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$lte",".le",r)},e.lt=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndLogicalEquivalence("$lt",".lt",r)},e.isNotEmpty=function(t){var r=this._filterValidator(".isNotEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate(),e=r[0],n=r[1];return n?this.ne(t,null):this._copy(this.filterTree,e)},e.isEmpty=function(t){var r=this._filterValidator(".isEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate(),e=r[0],n=r[1];return n?this.eq(t,null):this._copy(this.filterTree,e)},e.startsWith=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$startsWith",".startsWith",r)},e.endsWith=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$endsWith",".endsWith",r)},e.contains=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndStringOperand("$contains",".contains",r)},e.hasSome=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndSetOperand("$hasSome",".hasSome",r)},e.hasAll=function(){for(var t=arguments.length,r=new Array(t),e=0;e<t;e++)r[e]=arguments[e];return this._AndSetOperand("$hasAll",".hasAll",r)},e.or=function(t){var r=this._filterValidator(".or").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=$(this.filterTree)?[]:[this.filterTree];return this._copy(N({$or:[].concat(i,[t.filterTree])}),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.and=function(t){var r=this._filterValidator(".and").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=$(this.filterTree)?[]:[this.filterTree];return this._copy(N.apply(void 0,i.concat([t.filterTree])),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.not=function(t){var r=this._filterValidator(".not").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate(),e=r[0],n=r[1];if(n){var i=m(this.filterTree),a={$not:[t.filterTree]},o=S(i,a);return this._copy(o,e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)},e.between=function(t,r,e){var n=this._filterValidator(".between").arityIsThree(arguments).sameType(r,e).typeIsStringNumberOrDate(r).typeIsStringNumberOrDate(e).validateAndAggregate(),i=n[0],a=n[1];return a?this.ge(t,r).lt(t,e):this._copy(this.filterTree,i)},e.getFilterModel=function(){if(this.invalidArguments.length>0)throw new Error(this.invalidArguments.join(" "));return x(this.filterTree)},e.setFilterModel=function(t){return this._copy(t,[])},e._binaryAnd=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndLogicalEquivalence=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).typeIsStringNumberOrDate(a).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndStringOperand=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n[1],o=this._filterValidator(r).arityIsTwo(e).validFieldName(i).typeIsString(a).validateAndAggregate()[0],u=this._makeNewFilter(i,t,a);return this._copy(u,o)},e._AndSetOperand=function(t,r,e){var n=Array.prototype.slice.call(e),i=n[0],a=n.slice(1),o=v(a[0])?a[0]:a,u=this._filterValidator(r).arityIsAtLeastTwo(e).validFieldName(i).typeIsStringNumberOrDateForAll(o).validateAndAggregate()[0],c=this._makeNewFilter(i,t,o);return this._copy(c,u)},e._makeNewFilter=function(t,r,e){var n,i=m(this.filterTree),a=void 0===e?null:e,o=this._buildFilter(t,r,a);return v(i.$and)?(i.$and.push(o),i):(n=i,0===Object.keys(n).length?N(o):N(i,o))},e._buildFilter=function(t,r,e){if("$eq"!==r){var n={};return n[t]={},n[t][r]=this._encode(e),n}var i={};return i[t]=this._encode(e),i},e._encode=function(t){return r=this.encoder,"function"===p()(r)?this.encoder(t):t;var r},e._copy=function(t,r){return new this.constructor(u()({},this,{filterTree:t,invalidArguments:r}))},e._filterValidator=function(t){return new A(t,this.invalidArguments,this.constructor)},r}(t)},F=function(t){function e(){return t.apply(this,arguments)||this}return a()(e,t),e.prototype._build=function(){return this.getFilterModel()},r()(e,[{key:"constructorName",get:function(){return"FilterBuilder"}}]),e}(T());function V(t){return void 0===t&&(t={}),new F(t)}var M=e(476);function E(t){return h(t)?{$date:t.toJSON()}:t}var k=V}(),n}()}));
2
2
  //# sourceMappingURL=filter-builder.umd.min.js.map