@wix/filter-builder 1.0.165 → 1.0.166

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.
package/dist/cjs/index.js CHANGED
@@ -9,8 +9,8 @@ var _filterMixin = _interopRequireDefault(require("./filter-mixin"));
9
9
  exports.filterMixin = _filterMixin.default;
10
10
  var _queryOptimiser = require("./query-optimiser");
11
11
  exports.optimiseQuery = _queryOptimiser.optimisedQuery;
12
- var _validator = require("./validator");
13
- exports.Validator = _validator.Validator;
12
+ var _filterValidator = require("./filter-validator");
13
+ exports.Validator = _filterValidator.FilterValidator;
14
14
  var _wixDataEncoder = require("./wix-data-encoder");
15
15
  exports.wixDataEncoder = _wixDataEncoder.wixDataEncoder;
16
16
  var _default = exports.default = _filterBuilder.filterBuilder;
@@ -1 +1 @@
1
- {"version":3,"names":["_filterBuilder","require","exports","filterBuilder","_filterMixin","_interopRequireDefault","filterMixin","default","_queryOptimiser","optimiseQuery","optimisedQuery","_validator","Validator","_wixDataEncoder","wixDataEncoder","_default"],"sources":["../../src/index.ts"],"sourcesContent":["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"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAgDC,OAAA,CAAAC,aAAA,GAAAH,cAAA,CAAAG,aAAA;AAChD,IAAAC,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAwCC,OAAA,CAAAI,WAAA,GAAAF,YAAA,CAAAG,OAAA;AACxC,IAAAC,eAAA,GAAAP,OAAA;AAAmEC,OAAA,CAAAO,aAAA,GAAAD,eAAA,CAAAE,cAAA;AACnE,IAAAC,UAAA,GAAAV,OAAA;AAAuCC,OAAA,CAAAU,SAAA,GAAAD,UAAA,CAAAC,SAAA;AACvC,IAAAC,eAAA,GAAAZ,OAAA;AAAmDC,OAAA,CAAAY,cAAA,GAAAD,eAAA,CAAAC,cAAA;AAAA,IAAAC,QAAA,GAAAb,OAAA,CAAAK,OAAA,GAIpCJ,4BAAa","ignoreList":[]}
1
+ {"version":3,"names":["_filterBuilder","require","exports","filterBuilder","_filterMixin","_interopRequireDefault","filterMixin","default","_queryOptimiser","optimiseQuery","optimisedQuery","_filterValidator","Validator","FilterValidator","_wixDataEncoder","wixDataEncoder","_default"],"sources":["../../src/index.ts"],"sourcesContent":["import { filterBuilder } from './filter-builder'\nimport filterMixin from './filter-mixin'\nimport { optimisedQuery as optimiseQuery } from './query-optimiser'\nimport { FilterValidator as Validator } from './filter-validator'\nimport { wixDataEncoder } from './wix-data-encoder'\n\nexport { filterMixin, filterBuilder, optimiseQuery, Validator, wixDataEncoder }\n\nexport default filterBuilder\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAgDC,OAAA,CAAAC,aAAA,GAAAH,cAAA,CAAAG,aAAA;AAChD,IAAAC,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAwCC,OAAA,CAAAI,WAAA,GAAAF,YAAA,CAAAG,OAAA;AACxC,IAAAC,eAAA,GAAAP,OAAA;AAAmEC,OAAA,CAAAO,aAAA,GAAAD,eAAA,CAAAE,cAAA;AACnE,IAAAC,gBAAA,GAAAV,OAAA;AAAiEC,OAAA,CAAAU,SAAA,GAAAD,gBAAA,CAAAE,eAAA;AACjE,IAAAC,eAAA,GAAAb,OAAA;AAAmDC,OAAA,CAAAa,cAAA,GAAAD,eAAA,CAAAC,cAAA;AAAA,IAAAC,QAAA,GAAAd,OAAA,CAAAK,OAAA,GAIpCJ,4BAAa","ignoreList":[]}
@@ -1,2 +1,4 @@
1
+ "use strict";
1
2
 
3
+ exports.__esModule = true;
2
4
  //# sourceMappingURL=validator.js.map
package/dist/esm/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { filterBuilder } from './filter-builder';
2
2
  import filterMixin from './filter-mixin';
3
3
  import { optimisedQuery as optimiseQuery } from './query-optimiser';
4
+ import { FilterValidator as Validator } from './filter-validator';
4
5
  import { wixDataEncoder } from './wix-data-encoder';
5
- export { filterMixin, filterBuilder, optimiseQuery, wixDataEncoder };
6
+ export { filterMixin, filterBuilder, optimiseQuery, Validator, wixDataEncoder };
6
7
  export default filterBuilder;
7
8
  //# 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;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"}
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;AACnE,OAAO,EAAE,eAAe,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AAE/E,eAAe,aAAa,CAAA"}
@@ -11,6 +11,60 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
+ /***/ 212:
15
+ /*!*******************************************************************!*\
16
+ !*** ../../node_modules/@babel/runtime/helpers/defineProperty.js ***!
17
+ \*******************************************************************/
18
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19
+
20
+ var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 347);
21
+ function _defineProperty(e, r, t) {
22
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
23
+ value: t,
24
+ enumerable: !0,
25
+ configurable: !0,
26
+ writable: !0
27
+ }) : e[r] = t, e;
28
+ }
29
+ module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
30
+
31
+ /***/ }),
32
+
33
+ /***/ 319:
34
+ /*!***********************************************************!*\
35
+ !*** ../../node_modules/@babel/runtime/helpers/typeof.js ***!
36
+ \***********************************************************/
37
+ /***/ ((module) => {
38
+
39
+ function _typeof(o) {
40
+ "@babel/helpers - typeof";
41
+
42
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
43
+ return typeof o;
44
+ } : function (o) {
45
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
46
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
47
+ }
48
+ module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
49
+
50
+ /***/ }),
51
+
52
+ /***/ 347:
53
+ /*!******************************************************************!*\
54
+ !*** ../../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
55
+ \******************************************************************/
56
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
57
+
58
+ var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
59
+ var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 878);
60
+ function toPropertyKey(t) {
61
+ var i = toPrimitive(t, "string");
62
+ return "symbol" == _typeof(i) ? i : i + "";
63
+ }
64
+ module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
65
+
66
+ /***/ }),
67
+
14
68
  /***/ 555:
15
69
  /*!****************************************!*\
16
70
  !*** ../node_modules/kind-of/index.js ***!
@@ -166,35 +220,6 @@ function isBuffer(val) {
166
220
  }
167
221
 
168
222
 
169
- /***/ }),
170
-
171
- /***/ 24:
172
- /*!**********************!*\
173
- !*** ./validator.ts ***!
174
- \**********************/
175
- /***/ (() => {
176
-
177
-
178
-
179
- /***/ }),
180
-
181
- /***/ 212:
182
- /*!*******************************************************************!*\
183
- !*** ../../node_modules/@babel/runtime/helpers/defineProperty.js ***!
184
- \*******************************************************************/
185
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
186
-
187
- var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 347);
188
- function _defineProperty(e, r, t) {
189
- return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
190
- value: t,
191
- enumerable: !0,
192
- configurable: !0,
193
- writable: !0
194
- }) : e[r] = t, e;
195
- }
196
- module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
197
-
198
223
  /***/ }),
199
224
 
200
225
  /***/ 878:
@@ -216,41 +241,6 @@ function toPrimitive(t, r) {
216
241
  }
217
242
  module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
218
243
 
219
- /***/ }),
220
-
221
- /***/ 347:
222
- /*!******************************************************************!*\
223
- !*** ../../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
224
- \******************************************************************/
225
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
226
-
227
- var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
228
- var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 878);
229
- function toPropertyKey(t) {
230
- var i = toPrimitive(t, "string");
231
- return "symbol" == _typeof(i) ? i : i + "";
232
- }
233
- module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
234
-
235
- /***/ }),
236
-
237
- /***/ 319:
238
- /*!***********************************************************!*\
239
- !*** ../../node_modules/@babel/runtime/helpers/typeof.js ***!
240
- \***********************************************************/
241
- /***/ ((module) => {
242
-
243
- function _typeof(o) {
244
- "@babel/helpers - typeof";
245
-
246
- return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
247
- return typeof o;
248
- } : function (o) {
249
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
250
- }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
251
- }
252
- module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
253
-
254
244
  /***/ })
255
245
 
256
246
  /******/ });
@@ -322,7 +312,7 @@ module.exports = _typeof, module.exports.__esModule = true, module.exports["defa
322
312
  /******/
323
313
  /************************************************************************/
324
314
  var __webpack_exports__ = {};
325
- // This entry need to be wrapped in an IIFE because it need to be in strict mode.
315
+ // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
326
316
  (() => {
327
317
  "use strict";
328
318
  /*!******************************!*\
@@ -333,7 +323,7 @@ __webpack_require__.r(__webpack_exports__);
333
323
 
334
324
  // EXPORTS
335
325
  __webpack_require__.d(__webpack_exports__, {
336
- Validator: () => (/* reexport */ validator.Validator),
326
+ Validator: () => (/* reexport */ FilterValidator),
337
327
  "default": () => (/* binding */ index),
338
328
  filterBuilder: () => (/* reexport */ filterBuilder),
339
329
  filterMixin: () => (/* reexport */ filter_mixin),
@@ -347,27 +337,25 @@ var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
347
337
  // EXTERNAL MODULE: ../node_modules/kind-of/index.js
348
338
  var kind_of = __webpack_require__(555);
349
339
  var kind_of_default = /*#__PURE__*/__webpack_require__.n(kind_of);
350
- ;// CONCATENATED MODULE: ./type-utils.ts
340
+ ;// ./type-utils.ts
351
341
  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;}const first=str.slice(0,1).toUpperCase();const rest=str.slice(1,str.length);return first+rest;}
352
- ;// CONCATENATED MODULE: ./clone.ts
342
+ ;// ./clone.ts
353
343
  function clone(obj){if(obj==null||typeof obj!=='object'){return obj;}let temp=null;if(isDate(obj)){temp=new Date(obj.getTime());}else{temp=obj.constructor();for(const key in obj){temp[key]=clone(obj[key]);}}return temp;}
354
- ;// CONCATENATED MODULE: ./filter-validator.ts
344
+ ;// ./filter-validator.ts
355
345
  class FilterValidator{constructor(operatorName,previousInvalidArguments,ctor){defineProperty_default()(this,"ctor",void 0);defineProperty_default()(this,"_invalidArguments",void 0);defineProperty_default()(this,"_validations",void 0);defineProperty_default()(this,"operatorName",void 0);this._validations=[];this.operatorName=operatorName;this.ctor=ctor;this._invalidArguments=clone(previousInvalidArguments);}typeIsString(value){return this.addValidation(()=>isString(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. ${this.operatorName} parameter must be a String.`);}typeIsStringNumberOrDate(value){return this.addValidation(()=>isDateStringOrNumber(value),()=>`Invalid ${this.operatorName} parameter value [${typeForDisplay(value)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`);}sameType(first,second){return this.addValidation(()=>typeForDisplay(first)===typeForDisplay(second),()=>`Invalid ${this.operatorName} parameter values [${typeForDisplay(first)}] and [${typeForDisplay(second)}]. Both parameters must be of the same type.`);}typeIsStringNumberOrDateForAll(values){return this.addValidation(()=>values.every(isDateStringOrNumber),()=>`Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`);}validFieldName(field){return this.addValidation(()=>isString(field),()=>`Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${this.operatorName} field must be a String.`);}isInstanceOfSameClass(obj){return this.addValidation(()=>obj instanceof this.ctor,()=>`Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${this.operatorName} expects FilterBuilder only.`);}arityIsOne(args){return this.addValidation(()=>args.length===1,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`);}arityIsTwo(args){return this.addValidation(()=>args.length===2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`);}arityIsThree(args){return this.addValidation(()=>args.length===3,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`);}arityIsAtLeastTwo(args){return this.addValidation(()=>args.length>=2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`);}addValidation(predicateFn,messageFn){this._validations.push({predicateFn,messageFn});return this;}validateAndAggregate(){const valid=this._validations.every(_ref=>{let{predicateFn,messageFn}=_ref;return this._appendIfInvalid(predicateFn(),messageFn());});return[this._invalidArguments,valid];}_appendIfInvalid(valid,message){if(!valid){this._invalidArguments.push(message);return false;}return true;}}function isDateStringOrNumber(value){return isString(value)||isNumber(value)||isDate(value);}
356
- ;// CONCATENATED MODULE: ./query-optimiser.ts
346
+ ;// ./query-optimiser.ts
357
347
  const optimisations=[optimisedUnaryAnd,optimisedEmptyAnd,optimisedAndsAsObjects,optimisedNestedAnds,optimisedNestedOrs];function optimisedQuery(query){const[newQuery]=fullyOptimised(query);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){const optimisedElements=query.map(fullyOptimised);const somethingChanged=0<optimisedElements.filter(_ref=>{let[,elementChanged]=_ref;return elementChanged;}).length;const newElements=optimisedElements.map(_ref2=>{let[element]=_ref2;return element;});return[newElements,somethingChanged];}function fullyOptimisedObject(query){const[queryAfterOptimisingEntries,changedStage1]=fullEntriesOptimisation(query);const[queryAfterFullOptimisation,changedStage2]=fullObjectOptimisation(queryAfterOptimisingEntries);const changed=changedStage1||changedStage2;return[queryAfterFullOptimisation,changed];function fullObjectOptimisation(query){const updatedQuery=applyFirstOptimisation(query);if(!updatedQuery){return[query,false];}const[finalQuery]=fullyOptimised(updatedQuery);return[finalQuery,true];}function fullEntriesOptimisation(query){const changedEntries=Object.entries(query).map(entryOptimisation).filter(_ref3=>{let[,,changed]=_ref3;return changed;});const newQuery={...query,...entriesAsObject(changedEntries)};const changed=!!changedEntries.length;return[newQuery,changed];}function entryOptimisation(_ref4){let[key,value]=_ref4;const[newValue,changed]=fullyOptimised(value);return[key,newValue,changed];}function entriesAsObject(entries){return entries.reduce((acc,_ref5)=>{let[key,value]=_ref5;return{...acc,[key]:value};},{});}}function applyFirstOptimisation(node){for(const optimisation of optimisations){const newNode=optimisation(node);if(newNode){return newNode;}}}function optimisedUnaryAnd(node){const args=node.$and;if(Array.isArray(args)&&args.length===1){return args[0];}}function optimisedEmptyAnd(node){const args=node.$and;if(Array.isArray(args)&&args.length===0){return{};}return null;}function optimisedAndsAsObjects(node){const args=node.$and;if(!args){return;}let basicObjects=[];let operatorObjects=[];args.forEach(arg=>{if(isOperator(arg)){operatorObjects=[...operatorObjects,arg];}else{basicObjects=[...basicObjects,arg];}});if(basicObjects.length<=1||haveOverlappingFields(basicObjects)){return;}const combinedBasicObjects=Object.assign({},...basicObjects);return{$and:[combinedBasicObjects,...operatorObjects]};function isOperator(node){const keys=Object.keys(node);return keys.every(name=>name.startsWith('$'))&&keys.length>0;}function haveOverlappingFields(objects){const nonUniqueKeys=objects.map(it=>Object.keys(it)).reduce((a,b)=>[...a,...b],[]);const uniqueKeys=unique(nonUniqueKeys);return uniqueKeys.length!==nonUniqueKeys.length;}function unique(values){const dict={};values.forEach(v=>dict[v]=true);return Object.keys(dict);}}function optimisedNestedAnds(node){const args=node.$and;if(!args){return;}const hasNestedAnds=!!args.find(it=>it.$and);if(!hasNestedAnds){return;}const newArgs=args.reduce((result,current)=>{const and=current.$and;if(!and){return[...result,current];}return[...result,...and];},[]);return{$and:newArgs};}function optimisedNestedOrs(node){const args=node.$or;if(!args){return;}const hasNestedOrs=!!args.find(it=>it.$or);if(!hasNestedOrs){return;}const newArgs=args.reduce((result,current)=>{const or=current.$or;if(!or){return[...result,current];}return[...result,...or];},[]);return{$or:newArgs};}function instanceOfIgnoredType(obj){return obj instanceof Date;}
358
- ;// CONCATENATED MODULE: ./filter-mixin.ts
359
- const filterMixin=function(Base){if(Base===void 0){Base=class{};}return class extends Base{constructor(obj){if(obj===void 0){obj={};}super(obj);defineProperty_default()(this,"filterTree",void 0);defineProperty_default()(this,"invalidArguments",void 0);defineProperty_default()(this,"encoder",void 0);this.filterTree=obj.filterTree||{$and:[]};this.invalidArguments=obj.invalidArguments||[];this.encoder=obj.encoder||{};}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);}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);}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);}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);}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);}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);}isNotEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);}isEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);}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);}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);}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);}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);}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);}or(orQuery){const[newInvalidArguments,valid]=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[...prefix,orQuery.filterTree]}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}and(andQuery){const[newInvalidArguments,valid]=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd(...prefix,andQuery.filterTree),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}not(notQuery){const[newInvalidArguments,valid]=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate();if(valid){const newFilterTree=clone(this.filterTree);const notClause={$not:[notQuery.filterTree]};const resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}between(field,rangeStart,rangeEnd){const[newInvalidArguments,valid]=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate();if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);}getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);}setFilterModel(filterModel){return this._copy(filterModel,[]);}_binaryAnd(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndStringOperand(filterOperatorName,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndSetOperand(filterOperatorName,operatorName,args){const[field,...rawOperands]=Array.prototype.slice.call(args);const operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;const[newInvalidArguments]=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);}_makeNewFilter(field,filterOperatorName,operand){const newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
348
+ ;// ./filter-mixin.ts
349
+ const filterMixin=function(Base){if(Base===void 0){Base=class{};}return class extends Base{constructor(obj){if(obj===void 0){obj={};}super(obj);defineProperty_default()(this,"filterTree",void 0);defineProperty_default()(this,"invalidArguments",void 0);defineProperty_default()(this,"encoder",void 0);this.filterTree=obj.filterTree||{$and:[]};this.invalidArguments=obj.invalidArguments||[];this.encoder=obj.encoder||{};}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);}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);}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);}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);}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);}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);}isNotEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isNotEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.ne(field,null);}return this._copy(this.filterTree,newInvalidArguments);}isEmpty(field){const[newInvalidArguments,valid]=this._filterValidator('.isEmpty').arityIsOne(arguments).validFieldName(field).validateAndAggregate();if(valid){return this.eq(field,null);}return this._copy(this.filterTree,newInvalidArguments);}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);}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);}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);}hasSome(){for(var _len0=arguments.length,args=new Array(_len0),_key0=0;_key0<_len0;_key0++){args[_key0]=arguments[_key0];}return this._AndSetOperand('$hasSome','.hasSome',args);}hasAll(){for(var _len1=arguments.length,args=new Array(_len1),_key1=0;_key1<_len1;_key1++){args[_key1]=arguments[_key1];}return this._AndSetOperand('$hasAll','.hasAll',args);}or(orQuery){const[newInvalidArguments,valid]=this._filterValidator('.or').arityIsOne(arguments).isInstanceOfSameClass(orQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd({$or:[...prefix,orQuery.filterTree]}),newInvalidArguments.concat(orQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}and(andQuery){const[newInvalidArguments,valid]=this._filterValidator('.and').arityIsOne(arguments).isInstanceOfSameClass(andQuery).validateAndAggregate();if(valid){const prefix=isEmptyAnd(this.filterTree)?[]:[this.filterTree];return this._copy(inAnd(...prefix,andQuery.filterTree),newInvalidArguments.concat(andQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}not(notQuery){const[newInvalidArguments,valid]=this._filterValidator('.not').arityIsOne(arguments).isInstanceOfSameClass(notQuery).validateAndAggregate();if(valid){const newFilterTree=clone(this.filterTree);const notClause={$not:[notQuery.filterTree]};const resultingFilter=inAndOptimized(newFilterTree,notClause);return this._copy(resultingFilter,newInvalidArguments.concat(notQuery.invalidArguments));}else{return this._copy(this.filterTree,newInvalidArguments);}}between(field,rangeStart,rangeEnd){const[newInvalidArguments,valid]=this._filterValidator('.between').arityIsThree(arguments).sameType(rangeStart,rangeEnd).typeIsStringNumberOrDate(rangeStart).typeIsStringNumberOrDate(rangeEnd).validateAndAggregate();if(valid){return this.ge(field,rangeStart).lt(field,rangeEnd);}return this._copy(this.filterTree,newInvalidArguments);}getFilterModel(){if(this.invalidArguments.length>0){throw new Error(this.invalidArguments.join(' '));}return optimisedQuery(this.filterTree);}setFilterModel(filterModel){return this._copy(filterModel,[]);}_binaryAnd(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndLogicalEquivalence(filterOperatorSymbol,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsStringNumberOrDate(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorSymbol,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndStringOperand(filterOperatorName,operatorName,args){const[field,operand]=Array.prototype.slice.call(args);const[newInvalidArguments]=this._filterValidator(operatorName).arityIsTwo(args).validFieldName(field).typeIsString(operand).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operand);return this._copy(newFilterTree,newInvalidArguments);}_AndSetOperand(filterOperatorName,operatorName,args){const[field,...rawOperands]=Array.prototype.slice.call(args);const operands=isArray(rawOperands[0])?rawOperands[0]:rawOperands;const[newInvalidArguments]=this._filterValidator(operatorName).arityIsAtLeastTwo(args).validFieldName(field).typeIsStringNumberOrDateForAll(operands).validateAndAggregate();const newFilterTree=this._makeNewFilter(field,filterOperatorName,operands);return this._copy(newFilterTree,newInvalidArguments);}_makeNewFilter(field,filterOperatorName,operand){const newFilterTree=clone(this.filterTree);// filters with 'undefined' value are lost during serialization,
360
350
  // e.g. { val: { $ne: undefined } | translates to { val: {} }
361
351
  // Replacing 'undefined' with 'null' retains the filter.
362
352
  const serializableOperand=operand===undefined?null:operand;const newFilter=this._buildFilter(field,filterOperatorName,serializableOperand);if(isArray(newFilterTree.$and)){newFilterTree.$and.push(newFilter);return newFilterTree;}else{const result=isEmptyObject(newFilterTree)?inAnd(newFilter):inAnd(newFilterTree,newFilter);return result;}}_buildFilter(field,filterOperatorName,operand){if(filterOperatorName!=='$eq'){const newFilter={};newFilter[field]={};newFilter[field][filterOperatorName]=this._encode(operand);return newFilter;}else{const newFilter={};newFilter[field]=this._encode(operand);return newFilter;}}_encode(operand){if(isFunction(this.encoder)){return this.encoder(operand);}else{return operand;}}_copy(filterTree,invalidArguments){// @ts-ignore-next-line
363
- return new this.constructor({...this,filterTree,invalidArguments});}_filterValidator(filterOperatorName){return new FilterValidator(filterOperatorName,this.invalidArguments,this.constructor);}};};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((aggr,val)=>isConjunctiveFormFilter(val)?aggr.concat(val.$and):aggr.concat([val]),[])};}function isEmptyAnd(node){return node&&node.$and&&node.$and.length===0;}/* harmony default export */ const filter_mixin = (filterMixin);
364
- ;// CONCATENATED MODULE: ./filter-builder.ts
353
+ return new this.constructor({...this,filterTree,invalidArguments});}_filterValidator(filterOperatorName){return new FilterValidator(filterOperatorName,this.invalidArguments,this.constructor);}};};function isConjunctiveFormFilter(filterTree){return isArray(filterTree.$and);}function isEmptyObject(obj){return Object.keys(obj).length===0;}function inAnd(){for(var _len10=arguments.length,args=new Array(_len10),_key10=0;_key10<_len10;_key10++){args[_key10]=arguments[_key10];}return{$and:args};}function inAndOptimized(){for(var _len11=arguments.length,args=new Array(_len11),_key11=0;_key11<_len11;_key11++){args[_key11]=arguments[_key11];}return{$and:args.reduce((aggr,val)=>isConjunctiveFormFilter(val)?aggr.concat(val.$and):aggr.concat([val]),[])};}function isEmptyAnd(node){return node&&node.$and&&node.$and.length===0;}/* harmony default export */ const filter_mixin = (filterMixin);
354
+ ;// ./filter-builder.ts
365
355
  class FilterBuilder extends filter_mixin(){get constructorName(){return'FilterBuilder';}_build(){return this.getFilterModel();}}function filterBuilder(params){if(params===void 0){params={};}return new FilterBuilder(params);}/* harmony default export */ const filter_builder = ((/* unused pure expression or super */ null && (filterBuilder)));
366
- // EXTERNAL MODULE: ./validator.ts
367
- var validator = __webpack_require__(24);
368
- ;// CONCATENATED MODULE: ./wix-data-encoder.ts
356
+ ;// ./wix-data-encoder.ts
369
357
  function wixDataEncoder(operand){if(isDate(operand)){return{$date:operand.toJSON()};}else{return operand;}}
370
- ;// CONCATENATED MODULE: ./index.ts
358
+ ;// ./index.ts
371
359
  /* harmony default export */ const index = (filterBuilder);
372
360
  })();
373
361
 
@@ -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,oBAAoB,mBAAO,CAAC,6BAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACT7F,cAAc,wDAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACXzF,cAAc,wDAAiC;AAC/C,kBAAkB,mBAAO,CAAC,2BAAkB;AAC5C;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACN3F;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,0BAA0B,yBAAyB,SAAS,yBAAyB;;;;;;UCTrF;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJO,QAAS,CAAAC,QAAQA,CAACC,GAAG,CAAE,CAC5B,MAAO,CAAAF,OAAO,CAACE,GAAG,CAAC,GAAK,QAAQ,CAClC,CAEO,QAAS,CAAAC,OAAOA,CAACC,GAAG,CAAE,CAC3B,MAAO,CAAAJ,iBAAO,CAACI,GAAG,CAAC,GAAK,OAAO,CACjC,CAEO,QAAS,CAAAC,MAAMA,CAACH,GAAG,CAAE,CAC1B,MAAO,CAAAF,iBAAO,CAACE,GAAG,CAAC,GAAK,MAAM,CAChC,CAEO,QAAS,CAAAI,QAAQA,CAACJ,GAAG,CAAE,CAC5B,MAAO,CAAAF,iBAAO,CAACE,GAAG,CAAC,GAAK,QAAQ,CAClC,CAEO,QAAS,CAAAK,SAASA,CAACL,GAAG,CAAE,CAC7B,MAAO,CAAAF,OAAO,CAACE,GAAG,CAAC,GAAK,SAAS,CACnC,CAEO,QAAS,CAAAM,QAAQA,CAACN,GAAG,CAAE,CAC5B,MAAO,CAAAF,iBAAO,CAACE,GAAG,CAAC,GAAK,QAAQ,CAClC,CAEO,QAAS,CAAAO,UAAUA,CAACP,GAAG,CAAE,CAC9B,MAAO,CAAAF,iBAAO,CAACE,GAAG,CAAC,GAAK,UAAU,CACpC,CAEO,QAAS,CAAAQ,cAAcA,CAACR,GAAG,CAAE,CAClC,MAAO,CAAAS,cAAc,CAACX,iBAAO,CAACE,GAAG,CAAC,CAAC,CACrC,CAEO,QAAS,CAAAU,WAAWA,CAACV,GAAG,CAAE,CAC/B,MAAO,CAAAF,OAAO,CAACE,GAAG,CAAC,GAAK,WAAW,CACrC,CAEO,QAAS,CAAAW,MAAMA,CAACX,GAAG,CAAE,CAC1B,MAAO,CAAAF,OAAO,CAACE,GAAG,CAAC,GAAK,MAAM,CAChC,CAEA,QAAS,CAAAS,cAAcA,CAACG,GAAG,CAAE,CAC3B,GAAI,CAACN,QAAQ,CAACM,GAAG,CAAC,CAAE,CAClB,MAAO,CAAAA,GAAG,CACZ,CACA,KAAM,CAAAC,KAAK,CAAGD,GAAG,CAACE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAC3C,KAAM,CAAAC,IAAI,CAAGJ,GAAG,CAACE,KAAK,CAAC,CAAC,CAAEF,GAAG,CAACK,MAAM,CAAC,CACrC,MAAO,CAAAJ,KAAK,CAAGG,IAAI,CACrB;;AC/Ce,QAAS,CAAAE,KAAKA,CAAClB,GAAG,CAAE,CACjC,GAAIA,GAAG,EAAI,IAAI,EAAI,MAAO,CAAAA,GAAG,GAAK,QAAQ,CAAE,CAC1C,MAAO,CAAAA,GAAG,CACZ,CAEA,GAAI,CAAAmB,IAAS,CAAG,IAAI,CAEpB,GAAIhB,MAAM,CAACH,GAAG,CAAC,CAAE,CACfmB,IAAI,CAAG,GAAI,CAAAC,IAAI,CAACpB,GAAG,CAACqB,OAAO,CAAC,CAAC,CAAC,CAChC,CAAC,IAAM,CACLF,IAAI,CAAGnB,GAAG,CAACsB,WAAW,CAAC,CAAC,CACxB,IAAK,KAAM,CAAAC,GAAG,GAAI,CAAAvB,GAAG,CAAE,CACrBmB,IAAI,CAACI,GAAG,CAAC,CAAGL,KAAK,CAAClB,GAAG,CAACuB,GAAG,CAAC,CAAC,CAC7B,CACF,CAEA,MAAO,CAAAJ,IAAI,CACb;;ACfO,KAAM,CAAAK,eAAqC,CAMhDF,WAAWA,CAACG,YAAY,CAAEC,wBAAwB,CAAEC,IAAI,CAAE,CAAAC,wBAAA,qBAAAA,wBAAA,kCAAAA,wBAAA,6BAAAA,wBAAA,6BACxD,IAAI,CAACC,YAAY,CAAG,EAAE,CACtB,IAAI,CAACJ,YAAY,CAAGA,YAAY,CAChC,IAAI,CAACE,IAAI,CAAGA,IAAI,CAChB,IAAI,CAACG,iBAAiB,CAAGZ,KAAK,CAACQ,wBAAwB,CAAC,CAC1D,CAEAK,YAAYA,CAACC,KAAK,CAAE,CAClB,MAAO,KAAI,CAACC,aAAa,CACvB,IAAM3B,QAAQ,CAAC0B,KAAK,CAAC,CACrB,IACE,WAAW,IAAI,CAACP,YAAY,qBAAqBjB,cAAc,CAC7DwB,KACF,CAAC,MAAM,IAAI,CAACP,YAAY,8BAC5B,CAAC,CACH,CAEAS,wBAAwBA,CAACF,KAAK,CAAE,CAC9B,MAAO,KAAI,CAACC,aAAa,CACvB,IAAME,oBAAoB,CAACH,KAAK,CAAC,CACjC,IACE,WAAW,IAAI,CAACP,YAAY,qBAAqBjB,cAAc,CAC7DwB,KACF,CAAC,YACC,IAAI,CAACP,YAAY,8CAEvB,CAAC,CACH,CAEAW,QAAQA,CAACvB,KAAK,CAAEwB,MAAM,CAAE,CACtB,MAAO,KAAI,CAACJ,aAAa,CACvB,IAAMzB,cAAc,CAACK,KAAK,CAAC,GAAKL,cAAc,CAAC6B,MAAM,CAAC,CACtD,IACE,WAAW,IAAI,CAACZ,YAAY,sBAAsBjB,cAAc,CAC9DK,KACF,CAAC,UAAUL,cAAc,CACvB6B,MACF,CAAC,8CACL,CAAC,CACH,CAEAC,8BAA8BA,CAACC,MAAM,CAAE,CACrC,MAAO,KAAI,CAACN,aAAa,CACvB,IAAMM,MAAM,CAACC,KAAK,CAACL,oBAAoB,CAAC,CACxC,IACE,WAAW,IAAI,CAACV,YAAY,WAAW,IAAI,CAACA,YAAY,8CAC5D,CAAC,CACH,CAEAgB,cAAcA,CAACC,KAAK,CAAE,CACpB,MAAO,KAAI,CAACT,aAAa,CACvB,IAAM3B,QAAQ,CAACoC,KAAK,CAAC,CACrB,IACE,WAAW,IAAI,CAACjB,YAAY,iBAAiBjB,cAAc,CAACkC,KAAK,CAAC,MAChE,IAAI,CAACjB,YAAY,0BAEvB,CAAC,CACH,CAEAkB,qBAAqBA,CAAC3C,GAAG,CAAE,CACzB,MAAO,KAAI,CAACiC,aAAa,CACvB,IAAMjC,GAAG,WAAY,KAAI,CAAC2B,IAAI,CAC9B,IACE,WAAW,IAAI,CAACF,YAAY,eAAejB,cAAc,CAACR,GAAG,CAAC,MAC5D,IAAI,CAACyB,YAAY,8BAEvB,CAAC,CACH,CAEAmB,UAAUA,CAACC,IAAI,CAAE,CACf,MAAO,KAAI,CAACZ,aAAa,CACvB,IAAMY,IAAI,CAAC5B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,0BAC5D,CAAC,CACH,CAEAqB,UAAUA,CAACD,IAAI,CAAE,CACf,MAAO,KAAI,CAACZ,aAAa,CACvB,IAAMY,IAAI,CAAC5B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,2BAC5D,CAAC,CACH,CAEAsB,YAAYA,CAACF,IAAI,CAAE,CACjB,MAAO,KAAI,CAACZ,aAAa,CACvB,IAAMY,IAAI,CAAC5B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,6BAC5D,CAAC,CACH,CAEAuB,iBAAiBA,CAACH,IAAI,CAAE,CACtB,MAAO,KAAI,CAACZ,aAAa,CACvB,IAAMY,IAAI,CAAC5B,MAAM,EAAI,CAAC,CACtB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,oCAC5D,CAAC,CACH,CAEAQ,aAAaA,CAACgB,WAAW,CAAEC,SAAS,CAAE,CACpC,IAAI,CAACrB,YAAY,CAACsB,IAAI,CAAC,CACrBF,WAAW,CACXC,SACF,CAAC,CAAC,CACF,MAAO,KAAI,CACb,CAEAE,oBAAoBA,CAAA,CAAwB,CAC1C,KAAM,CAAAC,KAAK,CAAG,IAAI,CAACxB,YAAY,CAACW,KAAK,CAACc,IAAA,MAAC,CAAEL,WAAW,CAAEC,SAAU,CAAC,CAAAI,IAAA,OAC/D,KAAI,CAACC,gBAAgB,CAACN,WAAW,CAAC,CAAC,CAAEC,SAAS,CAAC,CAAC,CAAC,EACnD,CAAC,CACD,MAAO,CAAC,IAAI,CAACpB,iBAAiB,CAAEuB,KAAK,CAAC,CACxC,CAEAE,gBAAgBA,CAACF,KAAK,CAAEG,OAAO,CAAE,CAC/B,GAAI,CAACH,KAAK,CAAE,CACV,IAAI,CAACvB,iBAAiB,CAACqB,IAAI,CAACK,OAAO,CAAC,CACpC,MAAO,MAAK,CACd,CACA,MAAO,KAAI,CACb,CACF,CAEA,QAAS,CAAArB,oBAAoBA,CAACH,KAAK,CAAE,CACnC,MAAO,CAAA1B,QAAQ,CAAC0B,KAAK,CAAC,EAAI5B,QAAQ,CAAC4B,KAAK,CAAC,EAAI7B,MAAM,CAAC6B,KAAK,CAAC,CAC5D;;ACzIA,KAAM,CAAAyB,aAAa,CAAG,CACpBC,iBAAiB,CACjBC,iBAAiB,CACjBC,sBAAsB,CACtBC,mBAAmB,CACnBC,kBAAkB,CACnB,CAEM,QAAS,CAAAC,cAAcA,CAACC,KAAK,CAAE,CACpC,KAAM,CAACC,QAAQ,CAAC,CAAGC,cAAc,CAACF,KAAK,CAAC,CACxC,MAAO,CAAAC,QAAQ,CACjB,CAEA,QAAS,CAAAC,cAAcA,CAACF,KAAK,CAAE,CAC7B,GAAIG,KAAK,CAAClE,OAAO,CAAC+D,KAAK,CAAC,CAAE,CACxB,MAAO,CAAAI,mBAAmB,CAACJ,KAAK,CAAC,CACnC,CACA,GACE,MAAO,CAAAA,KAAK,GAAK,QAAQ,EACzBA,KAAK,GAAK,IAAI,EACd,CAACK,qBAAqB,CAACL,KAAK,CAAC,CAC7B,CACA,MAAO,CAAAM,oBAAoB,CAACN,KAAK,CAAC,CACpC,CACA,MAAO,CAACA,KAAK,CAAE,KAAK,CAAC,CACvB,CAEA,QAAS,CAAAI,mBAAmBA,CAACJ,KAAK,CAAE,CAClC,KAAM,CAAAO,iBAAiB,CAAGP,KAAK,CAACQ,GAAG,CAACN,cAAc,CAAC,CACnD,KAAM,CAAAO,gBAAgB,CACpB,CAAC,CAAGF,iBAAiB,CAACG,MAAM,CAACpB,IAAA,MAAC,EAAGqB,cAAc,CAAC,CAAArB,IAAA,OAAK,CAAAqB,cAAc,GAAC,CAAC1D,MAAM,CAC7E,KAAM,CAAA2D,WAAW,CAAGL,iBAAiB,CAACC,GAAG,CAACK,KAAA,MAAC,CAACC,OAAO,CAAC,CAAAD,KAAA,OAAK,CAAAC,OAAO,GAAC,CACjE,MAAO,CAACF,WAAW,CAAEH,gBAAgB,CAAC,CACxC,CAEA,QAAS,CAAAH,oBAAoBA,CAACN,KAAK,CAAE,CACnC,KAAM,CAACe,2BAA2B,CAAEC,aAAa,CAAC,CAChDC,uBAAuB,CAACjB,KAAK,CAAC,CAChC,KAAM,CAACkB,0BAA0B,CAAEC,aAAa,CAAC,CAAGC,sBAAsB,CACxEL,2BACF,CAAC,CACD,KAAM,CAAAM,OAAO,CAAGL,aAAa,EAAIG,aAAa,CAC9C,MAAO,CAACD,0BAA0B,CAAEG,OAAO,CAAC,CAE5C,QAAS,CAAAD,sBAAsBA,CAACpB,KAAK,CAAE,CACrC,KAAM,CAAAsB,YAAY,CAAGC,sBAAsB,CAACvB,KAAK,CAAC,CAClD,GAAI,CAACsB,YAAY,CAAE,CACjB,MAAO,CAACtB,KAAK,CAAE,KAAK,CAAC,CACvB,CACA,KAAM,CAACwB,UAAU,CAAC,CAAGtB,cAAc,CAACoB,YAAY,CAAC,CACjD,MAAO,CAACE,UAAU,CAAE,IAAI,CAAC,CAC3B,CAEA,QAAS,CAAAP,uBAAuBA,CAACjB,KAAK,CAAE,CACtC,KAAM,CAAAyB,cAAc,CAAGC,MAAM,CAACC,OAAO,CAAC3B,KAAK,CAAC,CACzCQ,GAAG,CAACoB,iBAAiB,CAAC,CACtBlB,MAAM,CAACmB,KAAA,MAAC,GAAKR,OAAO,CAAC,CAAAQ,KAAA,OAAK,CAAAR,OAAO,GAAC,CACrC,KAAM,CAAApB,QAAQ,CAAG,CAAE,GAAGD,KAAK,CAAE,GAAG8B,eAAe,CAACL,cAAc,CAAE,CAAC,CACjE,KAAM,CAAAJ,OAAO,CAAG,CAAC,CAACI,cAAc,CAACxE,MAAM,CACvC,MAAO,CAACgD,QAAQ,CAAEoB,OAAO,CAAC,CAC5B,CAEA,QAAS,CAAAO,iBAAiBA,CAAAG,KAAA,CAAe,IAAd,CAACxE,GAAG,CAAES,KAAK,CAAC,CAAA+D,KAAA,CACrC,KAAM,CAACC,QAAQ,CAAEX,OAAO,CAAC,CAAGnB,cAAc,CAAClC,KAAK,CAAC,CACjD,MAAO,CAACT,GAAG,CAAEyE,QAAQ,CAAEX,OAAO,CAAC,CACjC,CAEA,QAAS,CAAAS,eAAeA,CAACH,OAAO,CAAE,CAChC,MAAO,CAAAA,OAAO,CAACM,MAAM,CAAC,CAACC,GAAG,CAAAC,KAAA,OAAE,CAAC5E,GAAG,CAAES,KAAK,CAAC,CAAAmE,KAAA,OAAM,CAAE,GAAGD,GAAG,CAAE,CAAC3E,GAAG,EAAGS,KAAM,CAAC,EAAC,CAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CAEA,QAAS,CAAAuD,sBAAsBA,CAACa,IAAI,CAAE,CACpC,IAAK,KAAM,CAAAC,YAAY,GAAI,CAAA5C,aAAa,CAAE,CACxC,KAAM,CAAA6C,OAAO,CAAGD,YAAY,CAACD,IAAI,CAAC,CAClC,GAAIE,OAAO,CAAE,CACX,MAAO,CAAAA,OAAO,CAChB,CACF,CACF,CAEA,QAAS,CAAA5C,iBAAiBA,CAAC0C,IAAI,CAAE,CAC/B,KAAM,CAAAvD,IAAI,CAAGuD,IAAI,CAACG,IAAI,CACtB,GAAIpC,KAAK,CAAClE,OAAO,CAAC4C,IAAI,CAAC,EAAIA,IAAI,CAAC5B,MAAM,GAAK,CAAC,CAAE,CAC5C,MAAO,CAAA4B,IAAI,CAAC,CAAC,CAAC,CAChB,CACF,CAEA,QAAS,CAAAc,iBAAiBA,CAACyC,IAAI,CAAE,CAC/B,KAAM,CAAAvD,IAAI,CAAGuD,IAAI,CAACG,IAAI,CACtB,GAAIpC,KAAK,CAAClE,OAAO,CAAC4C,IAAI,CAAC,EAAIA,IAAI,CAAC5B,MAAM,GAAK,CAAC,CAAE,CAC5C,MAAO,CAAC,CAAC,CACX,CACA,MAAO,KAAI,CACb,CAEA,QAAS,CAAA2C,sBAAsBA,CAACwC,IAAI,CAAE,CACpC,KAAM,CAAAvD,IAAI,CAAGuD,IAAI,CAACG,IAAI,CACtB,GAAI,CAAC1D,IAAI,CAAE,CACT,OACF,CAEA,GAAI,CAAA2D,YAAmB,CAAG,EAAE,CAC5B,GAAI,CAAAC,eAAsB,CAAG,EAAE,CAE/B5D,IAAI,CAAC6D,OAAO,CAAEC,GAAG,EAAK,CACpB,GAAIC,UAAU,CAACD,GAAG,CAAC,CAAE,CACnBF,eAAe,CAAG,CAAC,GAAGA,eAAe,CAAEE,GAAG,CAAC,CAC7C,CAAC,IAAM,CACLH,YAAY,CAAG,CAAC,GAAGA,YAAY,CAAEG,GAAG,CAAC,CACvC,CACF,CAAC,CAAC,CAEF,GAAIH,YAAY,CAACvF,MAAM,EAAI,CAAC,EAAI4F,qBAAqB,CAACL,YAAY,CAAC,CAAE,CACnE,OACF,CACA,KAAM,CAAAM,oBAAoB,CAAGpB,MAAM,CAACqB,MAAM,CAAC,CAAC,CAAC,CAAE,GAAGP,YAAY,CAAC,CAE/D,MAAO,CAAED,IAAI,CAAE,CAACO,oBAAoB,CAAE,GAAGL,eAAe,CAAE,CAAC,CAE3D,QAAS,CAAAG,UAAUA,CAACR,IAAI,CAAE,CACxB,KAAM,CAAAY,IAAI,CAAGtB,MAAM,CAACsB,IAAI,CAACZ,IAAI,CAAC,CAC9B,MAAO,CAAAY,IAAI,CAACxE,KAAK,CAAEyE,IAAI,EAAKA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAIF,IAAI,CAAC/F,MAAM,CAAG,CAAC,CACtE,CAEA,QAAS,CAAA4F,qBAAqBA,CAACM,OAAO,CAAE,CACtC,KAAM,CAAAC,aAAa,CAAGD,OAAO,CAC1B3C,GAAG,CAAE6C,EAAE,EAAK3B,MAAM,CAACsB,IAAI,CAACK,EAAE,CAAC,CAAC,CAC5BpB,MAAM,CAAC,CAACqB,CAAC,CAAEC,CAAC,GAAK,CAAC,GAAGD,CAAC,CAAE,GAAGC,CAAC,CAAC,CAAE,EAAE,CAAC,CACrC,KAAM,CAAAC,UAAU,CAAGC,MAAM,CAACL,aAAa,CAAC,CACxC,MAAO,CAAAI,UAAU,CAACvG,MAAM,GAAKmG,aAAa,CAACnG,MAAM,CACnD,CAEA,QAAS,CAAAwG,MAAMA,CAAClF,MAAM,CAAE,CACtB,KAAM,CAAAmF,IAAI,CAAG,CAAC,CAAC,CACfnF,MAAM,CAACmE,OAAO,CAAEiB,CAAC,EAAMD,IAAI,CAACC,CAAC,CAAC,CAAG,IAAK,CAAC,CACvC,MAAO,CAAAjC,MAAM,CAACsB,IAAI,CAACU,IAAI,CAAC,CAC1B,CACF,CAEA,QAAS,CAAA7D,mBAAmBA,CAACuC,IAAI,CAAE,CACjC,KAAM,CAAAvD,IAAI,CAAGuD,IAAI,CAACG,IAAI,CACtB,GAAI,CAAC1D,IAAI,CAAE,CACT,OACF,CAEA,KAAM,CAAA+E,aAAa,CAAG,CAAC,CAAC/E,IAAI,CAACgF,IAAI,CAAER,EAAE,EAAKA,EAAE,CAACd,IAAI,CAAC,CAClD,GAAI,CAACqB,aAAa,CAAE,CAClB,OACF,CAEA,KAAM,CAAAE,OAAO,CAAGjF,IAAI,CAACoD,MAAM,CAAC,CAAC8B,MAAM,CAAEC,OAAO,GAAK,CAC/C,KAAM,CAAAC,GAAG,CAAGD,OAAO,CAACzB,IAAI,CACxB,GAAI,CAAC0B,GAAG,CAAE,CACR,MAAO,CAAC,GAAGF,MAAM,CAAEC,OAAO,CAAC,CAC7B,CACA,MAAO,CAAC,GAAGD,MAAM,CAAE,GAAGE,GAAG,CAAC,CAC5B,CAAC,CAAE,EAAE,CAAC,CACN,MAAO,CAAE1B,IAAI,CAAEuB,OAAQ,CAAC,CAC1B,CAEA,QAAS,CAAAhE,kBAAkBA,CAACsC,IAAI,CAAE,CAChC,KAAM,CAAAvD,IAAI,CAAGuD,IAAI,CAAC8B,GAAG,CACrB,GAAI,CAACrF,IAAI,CAAE,CACT,OACF,CAEA,KAAM,CAAAsF,YAAY,CAAG,CAAC,CAACtF,IAAI,CAACgF,IAAI,CAAER,EAAE,EAAKA,EAAE,CAACa,GAAG,CAAC,CAChD,GAAI,CAACC,YAAY,CAAE,CACjB,OACF,CAEA,KAAM,CAAAL,OAAO,CAAGjF,IAAI,CAACoD,MAAM,CAAC,CAAC8B,MAAM,CAAEC,OAAO,GAAK,CAC/C,KAAM,CAAAI,EAAE,CAAGJ,OAAO,CAACE,GAAG,CACtB,GAAI,CAACE,EAAE,CAAE,CACP,MAAO,CAAC,GAAGL,MAAM,CAAEC,OAAO,CAAC,CAC7B,CACA,MAAO,CAAC,GAAGD,MAAM,CAAE,GAAGK,EAAE,CAAC,CAC3B,CAAC,CAAE,EAAE,CAAC,CACN,MAAO,CAAEF,GAAG,CAAEJ,OAAQ,CAAC,CACzB,CAEA,QAAS,CAAAzD,qBAAqBA,CAACrE,GAAG,CAAE,CAClC,MAAO,CAAAA,GAAG,WAAY,CAAAoB,IAAI,CAC5B;;AClLA,KAAM,CAAAiH,WAAW,CAAG,QAAAA,CAACC,IAAS,KAATA,IAAS,WAATA,IAAS,CAAG,KAAM,EAAE,QACvC,cAAc,CAAAA,IAAK,CAKjBhH,WAAWA,CAACtB,GAAiD,CAAO,IAAxDA,GAAiD,WAAjDA,GAAiD,CAAG,CAAC,CAAC,EAChE,KAAK,CAACA,GAAG,CAAC,CAAA4B,wBAAA,2BAAAA,wBAAA,iCAAAA,wBAAA,wBACV,IAAI,CAAC2G,UAAU,CAAGvI,GAAG,CAACuI,UAAU,EAAI,CAAEhC,IAAI,CAAE,EAAG,CAAC,CAChD,IAAI,CAACiC,gBAAgB,CAAGxI,GAAG,CAACwI,gBAAgB,EAAI,EAAE,CAClD,IAAI,CAACC,OAAO,CAAGzI,GAAG,CAACyI,OAAO,EAAI,CAAC,CAAC,CAClC,CAEAC,EAAEA,CAAA,CAAU,SAAAC,IAAA,CAAAC,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAwE,IAAA,EAAAE,IAAA,GAAAA,IAAA,CAAAF,IAAA,CAAAE,IAAA,IAAJhG,IAAI,CAAAgG,IAAA,EAAAD,SAAA,CAAAC,IAAA,GACR,MAAO,KAAI,CAACC,UAAU,CAAC,KAAK,CAAE,KAAK,CAAEjG,IAAI,CAAC,CAC5C,CAEAkG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAJ,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAA6E,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJpG,IAAI,CAAAoG,KAAA,EAAAL,SAAA,CAAAK,KAAA,GACR,MAAO,KAAI,CAACH,UAAU,CAAC,KAAK,CAAE,KAAK,CAAEjG,IAAI,CAAC,CAC5C,CAEAqG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAP,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAgF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJvG,IAAI,CAAAuG,KAAA,EAAAR,SAAA,CAAAQ,KAAA,GACR,MAAO,KAAI,CAACC,sBAAsB,CAAC,MAAM,CAAE,KAAK,CAAExG,IAAI,CAAC,CACzD,CAEAyG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAX,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAoF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ3G,IAAI,CAAA2G,KAAA,EAAAZ,SAAA,CAAAY,KAAA,GACR,MAAO,KAAI,CAACH,sBAAsB,CAAC,KAAK,CAAE,KAAK,CAAExG,IAAI,CAAC,CACxD,CAEA4G,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAd,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAuF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ9G,IAAI,CAAA8G,KAAA,EAAAf,SAAA,CAAAe,KAAA,GACR,MAAO,KAAI,CAACN,sBAAsB,CAAC,MAAM,CAAE,KAAK,CAAExG,IAAI,CAAC,CACzD,CAEA+G,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAjB,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAA0F,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJjH,IAAI,CAAAiH,KAAA,EAAAlB,SAAA,CAAAkB,KAAA,GACR,MAAO,KAAI,CAACT,sBAAsB,CAAC,KAAK,CAAE,KAAK,CAAExG,IAAI,CAAC,CACxD,CAEAkH,UAAUA,CAACrH,KAAK,CAAE,CAChB,KAAM,CAACsH,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,aAAa,CAAC,CACtErH,UAAU,CAACgG,SAAS,CAAC,CACrBnG,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAAC0F,EAAE,CAACrG,KAAK,CAAE,IAAI,CAAC,CAC7B,CAEA,MAAO,KAAI,CAACwH,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CAEAG,OAAOA,CAACzH,KAAK,CAAE,CACb,KAAM,CAACsH,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,UAAU,CAAC,CACnErH,UAAU,CAACgG,SAAS,CAAC,CACrBnG,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAACqF,EAAE,CAAChG,KAAK,CAAE,IAAI,CAAC,CAC7B,CAEA,MAAO,KAAI,CAACwH,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CAEA9C,UAAUA,CAAA,CAAU,SAAAkD,KAAA,CAAAxB,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAiG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJxH,IAAI,CAAAwH,KAAA,EAAAzB,SAAA,CAAAyB,KAAA,GAChB,MAAO,KAAI,CAACC,iBAAiB,CAAC,aAAa,CAAE,aAAa,CAAEzH,IAAI,CAAC,CACnE,CAEA0H,QAAQA,CAAA,CAAU,SAAAC,KAAA,CAAA5B,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAqG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ5H,IAAI,CAAA4H,KAAA,EAAA7B,SAAA,CAAA6B,KAAA,GACd,MAAO,KAAI,CAACH,iBAAiB,CAAC,WAAW,CAAE,WAAW,CAAEzH,IAAI,CAAC,CAC/D,CAEA6H,QAAQA,CAAA,CAAU,SAAAC,KAAA,CAAA/B,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAwG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ/H,IAAI,CAAA+H,KAAA,EAAAhC,SAAA,CAAAgC,KAAA,GACd,MAAO,KAAI,CAACN,iBAAiB,CAAC,WAAW,CAAE,WAAW,CAAEzH,IAAI,CAAC,CAC/D,CAEAgI,OAAOA,CAAA,CAAU,SAAAC,MAAA,CAAAlC,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAA2G,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJlI,IAAI,CAAAkI,MAAA,EAAAnC,SAAA,CAAAmC,MAAA,GACb,MAAO,KAAI,CAACC,cAAc,CAAC,UAAU,CAAE,UAAU,CAAEnI,IAAI,CAAC,CAC1D,CAEAoI,MAAMA,CAAA,CAAU,SAAAC,MAAA,CAAAtC,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAA+G,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJtI,IAAI,CAAAsI,MAAA,EAAAvC,SAAA,CAAAuC,MAAA,GACZ,MAAO,KAAI,CAACH,cAAc,CAAC,SAAS,CAAE,SAAS,CAAEnI,IAAI,CAAC,CACxD,CAEAuF,EAAEA,CAACgD,OAAO,CAAE,CACV,KAAM,CAACpB,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,KAAK,CAAC,CAC9DrH,UAAU,CAACgG,SAAS,CAAC,CACrBjG,qBAAqB,CAACyI,OAAO,CAAC,CAC9BhI,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAAgI,MAAM,CAAGC,UAAU,CAAC,IAAI,CAAC/C,UAAU,CAAC,CAAG,EAAE,CAAG,CAAC,IAAI,CAACA,UAAU,CAAC,CACnE,MAAO,KAAI,CAAC2B,KAAK,CACfqB,KAAK,CAAC,CAAErD,GAAG,CAAE,CAAC,GAAGmD,MAAM,CAAED,OAAO,CAAC7C,UAAU,CAAE,CAAC,CAAC,CAC/CyB,mBAAmB,CAACwB,MAAM,CAACJ,OAAO,CAAC5C,gBAAgB,CACrD,CAAC,CACH,CAAC,IAAM,CACL,MAAO,KAAI,CAAC0B,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CACF,CAEA/B,GAAGA,CAACwD,QAAQ,CAAE,CACZ,KAAM,CAACzB,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,MAAM,CAAC,CAC/DrH,UAAU,CAACgG,SAAS,CAAC,CACrBjG,qBAAqB,CAAC8I,QAAQ,CAAC,CAC/BrI,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAAgI,MAAM,CAAGC,UAAU,CAAC,IAAI,CAAC/C,UAAU,CAAC,CAAG,EAAE,CAAG,CAAC,IAAI,CAACA,UAAU,CAAC,CACnE,MAAO,KAAI,CAAC2B,KAAK,CACfqB,KAAK,CAAC,GAAGF,MAAM,CAAEI,QAAQ,CAAClD,UAAU,CAAC,CACrCyB,mBAAmB,CAACwB,MAAM,CAACC,QAAQ,CAACjD,gBAAgB,CACtD,CAAC,CACH,CAAC,IAAM,CACL,MAAO,KAAI,CAAC0B,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CACF,CAEA0B,GAAGA,CAACC,QAAQ,CAAE,CACZ,KAAM,CAAC3B,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,MAAM,CAAC,CAC/DrH,UAAU,CAACgG,SAAS,CAAC,CACrBjG,qBAAqB,CAACgJ,QAAQ,CAAC,CAC/BvI,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAAuI,aAAa,CAAG1K,KAAK,CAAC,IAAI,CAACqH,UAAU,CAAC,CAC5C,KAAM,CAAAsD,SAAS,CAAG,CAAEC,IAAI,CAAE,CAACH,QAAQ,CAACpD,UAAU,CAAE,CAAC,CACjD,KAAM,CAAAwD,eAAe,CAAGC,cAAc,CAACJ,aAAa,CAAEC,SAAS,CAAC,CAEhE,MAAO,KAAI,CAAC3B,KAAK,CACf6B,eAAe,CACf/B,mBAAmB,CAACwB,MAAM,CAACG,QAAQ,CAACnD,gBAAgB,CACtD,CAAC,CACH,CAAC,IAAM,CACL,MAAO,KAAI,CAAC0B,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CACF,CAEAiC,OAAOA,CAACvJ,KAAK,CAAEwJ,UAAU,CAAEC,QAAQ,CAAE,CACnC,KAAM,CAACnC,mBAAmB,CAAE3G,KAAK,CAAC,CAAG,IAAI,CAAC4G,gBAAgB,CAAC,UAAU,CAAC,CACnElH,YAAY,CAAC6F,SAAS,CAAC,CACvBxG,QAAQ,CAAC8J,UAAU,CAAEC,QAAQ,CAAC,CAC9BjK,wBAAwB,CAACgK,UAAU,CAAC,CACpChK,wBAAwB,CAACiK,QAAQ,CAAC,CAClC/I,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAAC6F,EAAE,CAACxG,KAAK,CAAEwJ,UAAU,CAAC,CAACtC,EAAE,CAAClH,KAAK,CAAEyJ,QAAQ,CAAC,CACvD,CAEA,MAAO,KAAI,CAACjC,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CAEAoC,cAAcA,CAAA,CAAG,CACf,GAAI,IAAI,CAAC5D,gBAAgB,CAACvH,MAAM,CAAG,CAAC,CAAE,CACpC,KAAM,IAAI,CAAAoL,KAAK,CAAC,IAAI,CAAC7D,gBAAgB,CAAC8D,IAAI,CAAC,GAAG,CAAC,CAAC,CAClD,CACA,MAAO,CAAAvI,cAAc,CAAC,IAAI,CAACwE,UAAU,CAAC,CACxC,CAEAgE,cAAcA,CAACC,WAAW,CAAE,CAC1B,MAAO,KAAI,CAACtC,KAAK,CAACsC,WAAW,CAAE,EAAE,CAAC,CACpC,CAEA1D,UAAUA,CAAC2D,oBAAoB,CAAEhL,YAAY,CAAEoB,IAAI,CAAE,CACnD,KAAM,CAACH,KAAK,CAAEgK,OAAO,CAAC,CAAGvI,KAAK,CAACwI,SAAS,CAAC7L,KAAK,CAAC8L,IAAI,CAAC/J,IAAI,CAAC,CAEzD,KAAM,CAACmH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACxI,YAAY,CAAC,CAC9DqB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAwI,aAAa,CAAG,IAAI,CAACiB,cAAc,CACvCnK,KAAK,CACL+J,oBAAoB,CACpBC,OACF,CAAC,CAED,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAX,sBAAsBA,CAACoD,oBAAoB,CAAEhL,YAAY,CAAEoB,IAAI,CAAE,CAC/D,KAAM,CAACH,KAAK,CAAEgK,OAAO,CAAC,CAAGvI,KAAK,CAACwI,SAAS,CAAC7L,KAAK,CAAC8L,IAAI,CAAC/J,IAAI,CAAC,CAEzD,KAAM,CAACmH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACxI,YAAY,CAAC,CAC9DqB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBR,wBAAwB,CAACwK,OAAO,CAAC,CACjCtJ,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAwI,aAAa,CAAG,IAAI,CAACiB,cAAc,CACvCnK,KAAK,CACL+J,oBAAoB,CACpBC,OACF,CAAC,CACD,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAM,iBAAiBA,CAACwC,kBAAkB,CAAErL,YAAY,CAAEoB,IAAI,CAAE,CACxD,KAAM,CAACH,KAAK,CAAEgK,OAAO,CAAC,CAAGvI,KAAK,CAACwI,SAAS,CAAC7L,KAAK,CAAC8L,IAAI,CAAC/J,IAAI,CAAC,CAEzD,KAAM,CAACmH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACxI,YAAY,CAAC,CAC9DqB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBX,YAAY,CAAC2K,OAAO,CAAC,CACrBtJ,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAwI,aAAa,CAAG,IAAI,CAACiB,cAAc,CACvCnK,KAAK,CACLoK,kBAAkB,CAClBJ,OACF,CAAC,CAED,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAgB,cAAcA,CAAC8B,kBAAkB,CAAErL,YAAY,CAAEoB,IAAI,CAAE,CACrD,KAAM,CAACH,KAAK,CAAE,GAAGqK,WAAW,CAAC,CAAG5I,KAAK,CAACwI,SAAS,CAAC7L,KAAK,CAAC8L,IAAI,CAAC/J,IAAI,CAAC,CAChE,KAAM,CAAAmK,QAAQ,CAAG/M,OAAO,CAAC8M,WAAW,CAAC,CAAC,CAAC,CAAC,CAAGA,WAAW,CAAC,CAAC,CAAC,CAAGA,WAAW,CAEvE,KAAM,CAAC/C,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACxI,YAAY,CAAC,CAC9DuB,iBAAiB,CAACH,IAAI,CAAC,CACvBJ,cAAc,CAACC,KAAK,CAAC,CACrBJ,8BAA8B,CAAC0K,QAAQ,CAAC,CACxC5J,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAwI,aAAa,CAAG,IAAI,CAACiB,cAAc,CACvCnK,KAAK,CACLoK,kBAAkB,CAClBE,QACF,CAAC,CACD,MAAO,KAAI,CAAC9C,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEA6C,cAAcA,CAACnK,KAAK,CAAEoK,kBAAkB,CAAEJ,OAAO,CAAE,CACjD,KAAM,CAAAd,aAAa,CAAG1K,KAAK,CAAC,IAAI,CAACqH,UAAU,CAAC,CAE5C;AACA;AACA;AACA,KAAM,CAAA0E,mBAAmB,CAAGP,OAAO,GAAKQ,SAAS,CAAG,IAAI,CAAGR,OAAO,CAClE,KAAM,CAAAS,SAAS,CAAG,IAAI,CAACC,YAAY,CACjC1K,KAAK,CACLoK,kBAAkB,CAClBG,mBACF,CAAC,CAED,GAAIhN,OAAO,CAAC2L,aAAa,CAACrF,IAAI,CAAC,CAAE,CAC/BqF,aAAa,CAACrF,IAAI,CAACpD,IAAI,CAACgK,SAAS,CAAC,CAClC,MAAO,CAAAvB,aAAa,CACtB,CAAC,IAAM,CACL,KAAM,CAAA7D,MAAM,CAAGsF,aAAa,CAACzB,aAAa,CAAC,CACvCL,KAAK,CAAC4B,SAAS,CAAC,CAChB5B,KAAK,CAACK,aAAa,CAAEuB,SAAS,CAAC,CACnC,MAAO,CAAApF,MAAM,CACf,CACF,CAEAqF,YAAYA,CAAC1K,KAAK,CAAEoK,kBAAkB,CAAEJ,OAAO,CAAE,CAC/C,GAAII,kBAAkB,GAAK,KAAK,CAAE,CAChC,KAAM,CAAAK,SAAS,CAAG,CAAC,CAAC,CACpBA,SAAS,CAACzK,KAAK,CAAC,CAAG,CAAC,CAAC,CACrByK,SAAS,CAACzK,KAAK,CAAC,CAACoK,kBAAkB,CAAC,CAAG,IAAI,CAACQ,OAAO,CAACZ,OAAO,CAAC,CAC5D,MAAO,CAAAS,SAAS,CAClB,CAAC,IAAM,CACL,KAAM,CAAAA,SAAS,CAAG,CAAC,CAAC,CACpBA,SAAS,CAACzK,KAAK,CAAC,CAAG,IAAI,CAAC4K,OAAO,CAACZ,OAAO,CAAC,CACxC,MAAO,CAAAS,SAAS,CAClB,CACF,CAEAG,OAAOA,CAACZ,OAAO,CAAE,CACf,GAAInM,UAAU,CAAC,IAAI,CAACkI,OAAO,CAAC,CAAE,CAC5B,MAAO,KAAI,CAACA,OAAO,CAACiE,OAAO,CAAC,CAC9B,CAAC,IAAM,CACL,MAAO,CAAAA,OAAO,CAChB,CACF,CAEAxC,KAAKA,CAAC3B,UAAU,CAAEC,gBAAgB,CAAE,CAClC;AACA,MAAO,IAAI,KAAI,CAAClH,WAAW,CAAC,CAAE,GAAG,IAAI,CAAEiH,UAAU,CAAEC,gBAAiB,CAAC,CAAC,CACxE,CAEAyB,gBAAgBA,CAAC6C,kBAAkB,CAAa,CAC9C,MAAO,IAAI,CAAAtL,eAAe,CACxBsL,kBAAkB,CAClB,IAAI,CAACtE,gBAAgB,CACrB,IAAI,CAAClH,WACP,CAAC,CACH,CACF,CAAC,GAEH,QAAS,CAAAiM,uBAAuBA,CAAChF,UAAU,CAAE,CAC3C,MAAO,CAAAtI,OAAO,CAACsI,UAAU,CAAChC,IAAI,CAAC,CACjC,CAEA,QAAS,CAAA8G,aAAaA,CAACrN,GAAG,CAAE,CAC1B,MAAO,CAAA0F,MAAM,CAACsB,IAAI,CAAChH,GAAG,CAAC,CAACiB,MAAM,GAAK,CAAC,CACtC,CAEA,QAAS,CAAAsK,KAAKA,CAAA,CAAU,SAAAiC,MAAA,CAAA5E,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAqJ,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJ5K,IAAI,CAAA4K,MAAA,EAAA7E,SAAA,CAAA6E,MAAA,GACpB,MAAO,CACLlH,IAAI,CAAE1D,IACR,CAAC,CACH,CAEA,QAAS,CAAAmJ,cAAcA,CAAA,CAAU,SAAA0B,MAAA,CAAA9E,SAAA,CAAA3H,MAAA,CAAN4B,IAAI,KAAAsB,KAAA,CAAAuJ,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJ9K,IAAI,CAAA8K,MAAA,EAAA/E,SAAA,CAAA+E,MAAA,GAC7B,MAAO,CACLpH,IAAI,CAAE1D,IAAI,CAACoD,MAAM,CACf,CAAC2H,IAAI,CAAEC,GAAG,GACRN,uBAAuB,CAACM,GAAG,CAAC,CACxBD,IAAI,CAACpC,MAAM,CAACqC,GAAG,CAACtH,IAAI,CAAC,CACrBqH,IAAI,CAACpC,MAAM,CAAC,CAACqC,GAAG,CAAC,CAAC,CACxB,EACF,CACF,CAAC,CACH,CAEA,QAAS,CAAAvC,UAAUA,CAAClF,IAAI,CAAE,CACxB,MAAO,CAAAA,IAAI,EAAIA,IAAI,CAACG,IAAI,EAAIH,IAAI,CAACG,IAAI,CAACtF,MAAM,GAAK,CAAC,CACpD,CAEA,mDAAeoH,WAAW;;ACtUnB,KAAM,CAAAyF,aAAa,QAAS,CAAAzF,YAAW,CAAC,CAAE,CAC/C,GAAI,CAAA0F,eAAeA,CAAA,CAAG,CACpB,MAAO,eAAe,CACxB,CAEAC,MAAMA,CAAA,CAAG,CACP,MAAO,KAAI,CAAC5B,cAAc,CAAC,CAAC,CAC9B,CACF,CAEO,QAAS,CAAA6B,aAAaA,CAACC,MAAM,CAAO,IAAbA,MAAM,WAANA,MAAM,CAAG,CAAC,CAAC,EACvC,MAAO,IAAI,CAAAJ,aAAa,CAACI,MAAM,CAAC,CAClC,CAEA,qDAAeD,gDAAAA,aAAa;;;;ACdrB,QAAS,CAAAE,cAAcA,CAACzB,OAAO,CAAE,CACtC,GAAIvM,MAAM,CAACuM,OAAO,CAAC,CAAE,CACnB,MAAO,CAAE0B,KAAK,CAAE1B,OAAO,CAAC2B,MAAM,CAAC,CAAE,CAAC,CACpC,CAAC,IAAM,CACL,MAAO,CAAA3B,OAAO,CAChB,CACF;;ACAA,4CAAeuB,aAAa,E","sources":["webpack://_wix_filter_builder/webpack/universalModuleDefinition","webpack://_wix_filter_builder/../node_modules/kind-of/index.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/defineProperty.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/typeof.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), () => {\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","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\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 () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\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 () =>\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 () =>\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 () =>\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","_defineProperty","_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","_ref","_appendIfInvalid","message","optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","newQuery","fullyOptimised","Array","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","newElements","_ref2","element","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","_ref3","entriesAsObject","_ref4","newValue","reduce","acc","_ref5","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","_len","arguments","_key","_binaryAnd","ne","_len2","_key2","ge","_len3","_key3","_AndLogicalEquivalence","gt","_len4","_key4","le","_len5","_key5","lt","_len6","_key6","isNotEmpty","newInvalidArguments","_filterValidator","_copy","isEmpty","_len7","_key7","_AndStringOperand","endsWith","_len8","_key8","contains","_len9","_key9","hasSome","_len10","_key10","_AndSetOperand","hasAll","_len11","_key11","orQuery","prefix","isEmptyAnd","inAnd","concat","andQuery","not","notQuery","newFilterTree","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","operand","prototype","call","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","undefined","newFilter","_buildFilter","isEmptyObject","_encode","isConjunctiveFormFilter","_len12","_key12","_len13","_key13","aggr","val","FilterBuilder","constructorName","_build","filterBuilder","params","wixDataEncoder","$date","toJSON","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,oBAAoB,mBAAO,CAAC,6BAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;;;;ACT7F;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG,EAAE,yBAAyB,SAAS,yBAAyB;AAChE;AACA,0BAA0B,yBAAyB,SAAS,yBAAyB,kB;;;;;;;;;;ACTrF,cAAc,wDAAiC;AAC/C,kBAAkB,mBAAO,CAAC,2BAAkB;AAC5C;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB,SAAS,yBAAyB,kB;;;;;;;;;;ACN3F;;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,cAAc,wDAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","sources":["webpack://_wix_filter_builder/webpack/universalModuleDefinition","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/defineProperty.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/typeof.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://_wix_filter_builder/../node_modules/kind-of/index.js","webpack://_wix_filter_builder/../../node_modules/@babel/runtime/helpers/toPrimitive.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), () => {\nreturn ","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\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 () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\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 () =>\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 () =>\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 () =>\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 { FilterValidator as Validator } from './filter-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","_defineProperty","_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","_ref","_appendIfInvalid","message","optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","newQuery","fullyOptimised","Array","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","newElements","_ref2","element","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","_ref3","entriesAsObject","_ref4","newValue","reduce","acc","_ref5","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","_len","arguments","_key","_binaryAnd","ne","_len2","_key2","ge","_len3","_key3","_AndLogicalEquivalence","gt","_len4","_key4","le","_len5","_key5","lt","_len6","_key6","isNotEmpty","newInvalidArguments","_filterValidator","_copy","isEmpty","_len7","_key7","_AndStringOperand","endsWith","_len8","_key8","contains","_len9","_key9","hasSome","_len0","_key0","_AndSetOperand","hasAll","_len1","_key1","orQuery","prefix","isEmptyAnd","inAnd","concat","andQuery","not","notQuery","newFilterTree","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","operand","prototype","call","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","undefined","newFilter","_buildFilter","isEmptyObject","_encode","isConjunctiveFormFilter","_len10","_key10","_len11","_key11","aggr","val","FilterBuilder","constructorName","_build","filterBuilder","params","wixDataEncoder","$date","toJSON","optimiseQuery","Validator"],"sourceRoot":""}