@wix/filter-builder 1.0.241 → 1.0.243

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.
@@ -11,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 212:
14
+ /***/ 212
15
15
  /*!*******************************************************************!*\
16
16
  !*** ../../node_modules/@babel/runtime/helpers/defineProperty.js ***!
17
17
  \*******************************************************************/
18
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18
+ (module, __unused_webpack_exports, __webpack_require__) {
19
19
 
20
20
  var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 347);
21
21
  function _defineProperty(e, r, t) {
@@ -28,32 +28,34 @@ function _defineProperty(e, r, t) {
28
28
  }
29
29
  module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
30
30
 
31
- /***/ }),
31
+ /***/ },
32
32
 
33
- /***/ 319:
34
- /*!***********************************************************!*\
35
- !*** ../../node_modules/@babel/runtime/helpers/typeof.js ***!
36
- \***********************************************************/
37
- /***/ ((module) => {
38
-
39
- function _typeof(o) {
40
- "@babel/helpers - typeof";
33
+ /***/ 878
34
+ /*!****************************************************************!*\
35
+ !*** ../../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
36
+ \****************************************************************/
37
+ (module, __unused_webpack_exports, __webpack_require__) {
41
38
 
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);
39
+ var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
40
+ function toPrimitive(t, r) {
41
+ if ("object" != _typeof(t) || !t) return t;
42
+ var e = t[Symbol.toPrimitive];
43
+ if (void 0 !== e) {
44
+ var i = e.call(t, r || "default");
45
+ if ("object" != _typeof(i)) return i;
46
+ throw new TypeError("@@toPrimitive must return a primitive value.");
47
+ }
48
+ return ("string" === r ? String : Number)(t);
47
49
  }
48
- module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
50
+ module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
49
51
 
50
- /***/ }),
52
+ /***/ },
51
53
 
52
- /***/ 347:
54
+ /***/ 347
53
55
  /*!******************************************************************!*\
54
56
  !*** ../../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
55
57
  \******************************************************************/
56
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
58
+ (module, __unused_webpack_exports, __webpack_require__) {
57
59
 
58
60
  var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
59
61
  var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 878);
@@ -63,28 +65,26 @@ function toPropertyKey(t) {
63
65
  }
64
66
  module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
65
67
 
66
- /***/ }),
68
+ /***/ },
67
69
 
68
- /***/ 878:
69
- /*!****************************************************************!*\
70
- !*** ../../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
71
- \****************************************************************/
72
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
70
+ /***/ 319
71
+ /*!***********************************************************!*\
72
+ !*** ../../node_modules/@babel/runtime/helpers/typeof.js ***!
73
+ \***********************************************************/
74
+ (module) {
73
75
 
74
- var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
75
- function toPrimitive(t, r) {
76
- if ("object" != _typeof(t) || !t) return t;
77
- var e = t[Symbol.toPrimitive];
78
- if (void 0 !== e) {
79
- var i = e.call(t, r || "default");
80
- if ("object" != _typeof(i)) return i;
81
- throw new TypeError("@@toPrimitive must return a primitive value.");
82
- }
83
- return ("string" === r ? String : Number)(t);
76
+ function _typeof(o) {
77
+ "@babel/helpers - typeof";
78
+
79
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
80
+ return typeof o;
81
+ } : function (o) {
82
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
83
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
84
84
  }
85
- module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
85
+ module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
86
86
 
87
- /***/ })
87
+ /***/ }
88
88
 
89
89
  /******/ });
90
90
  /************************************************************************/
@@ -106,6 +106,12 @@ module.exports = toPrimitive, module.exports.__esModule = true, module.exports["
106
106
  /******/ };
107
107
  /******/
108
108
  /******/ // Execute the module function
109
+ /******/ if (!(moduleId in __webpack_modules__)) {
110
+ /******/ delete __webpack_module_cache__[moduleId];
111
+ /******/ var e = new Error("Cannot find module '" + moduleId + "'");
112
+ /******/ e.code = 'MODULE_NOT_FOUND';
113
+ /******/ throw e;
114
+ /******/ }
109
115
  /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
110
116
  /******/
111
117
  /******/ // Return the exports of the module
@@ -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,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,cAAc,wDAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB,SAAS,yBAAyB,kB;;;;;;UCXzF;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,E;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNO,QAAS,CAAAA,QAAQA,CAACC,GAAQ,CAAiC,CAChE,MAAO,CAAAC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,GAAG,CAAC,GAAK,iBAAiB,CAClE,CACO,QAAS,CAAAK,OAAOA,CAACC,GAAQ,CAAgB,CAC9C,MAAO,CAAAL,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACE,GAAG,CAAC,GAAK,gBAAgB,CACjE,CAEO,QAAS,CAAAC,MAAMA,CAACP,GAAQ,CAAE,CAC/B,MAAO,CAAAC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,GAAG,CAAC,GAAK,eAAe,CAChE,CAEO,QAAS,CAAAQ,QAAQA,CAACR,GAAQ,CAAE,CACjC,MAAO,OAAO,CAAAA,GAAG,GAAK,QAAQ,CAChC,CAEO,QAAS,CAAAS,SAASA,CAACT,GAAQ,CAAE,CAClC,MAAO,OAAO,CAAAA,GAAG,GAAK,SAAS,CACjC,CAEO,QAAS,CAAAU,QAAQA,CAACV,GAAQ,CAAE,CACjC,MAAO,OAAO,CAAAA,GAAG,GAAK,QAAQ,CAChC,CAEO,QAAS,CAAAW,UAAUA,CAACX,GAAQ,CAAE,CACnC,MAAO,OAAO,CAAAA,GAAG,GAAK,UAAU,CAClC,CAEO,QAAS,CAAAY,WAAWA,CAACZ,GAAQ,CAAE,CACpC,MAAO,CAAAA,GAAG,GAAK,IAAK,EAAC,CACvB,CAEO,QAAS,CAAAa,MAAMA,CAACb,GAAQ,CAAE,CAC/B,MAAO,CAAAA,GAAG,GAAK,IAAI,CACrB,CAEO,QAAS,CAAAc,cAAcA,CAACd,GAAQ,CAAE,CACvC,GAAI,MAAO,CAAAA,GAAG,GAAK,QAAQ,CAAE,CAC3B,MAAO,QAAQ,CACjB,CACA,GAAI,MAAO,CAAAA,GAAG,GAAK,SAAS,CAAE,CAC5B,MAAO,SAAS,CAClB,CACA,GAAI,MAAO,CAAAA,GAAG,GAAK,QAAQ,CAAE,CAC3B,MAAO,QAAQ,CACjB,CACA,GAAIK,OAAO,CAACL,GAAG,CAAC,CAAE,CAChB,MAAO,OAAO,CAChB,CACA,GAAIO,MAAM,CAACP,GAAG,CAAC,CAAE,CACf,MAAO,MAAM,CACf,CACA,GAAID,QAAQ,CAACC,GAAG,CAAC,CAAE,CACjB,MAAO,QAAQ,CACjB,CACA,GAAIY,WAAW,CAACZ,GAAG,CAAC,CAAE,CACpB,MAAO,WAAW,CACpB,CACA,GAAIa,MAAM,CAACb,GAAG,CAAC,CAAE,CACf,MAAO,MAAM,CACf,CACA,KAAM,CAAAe,IAAI,CAAGd,MAAM,CAACC,SAAS,CAACC,QAAQ,CACnCC,IAAI,CAACJ,GAAG,CAAC,CACTgB,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CACZC,OAAO,CAAC,KAAK,CAAE,EAAE,CAAC,CACrB,MAAO,CAAAC,cAAc,CAACH,IAAI,CAAC,CAC7B,CAEA,QAAS,CAAAG,cAAcA,CAACC,GAAQ,CAAE,CAChC,GAAI,CAACT,QAAQ,CAACS,GAAG,CAAC,CAAE,CAClB,MAAO,CAAAA,GAAG,CACZ,CACA,KAAM,CAAAC,KAAK,CAAGD,GAAG,CAACH,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAACK,WAAW,CAAC,CAAC,CAC3C,KAAM,CAAAC,IAAI,CAAGH,GAAG,CAACH,KAAK,CAAC,CAAC,CAAEG,GAAG,CAACI,MAAM,CAAC,CACrC,MAAO,CAAAH,KAAK,CAAGE,IAAI,CACrB,C;;ACxEe,QAAS,CAAAE,KAAKA,CAACxB,GAAG,CAAE,CACjC,GAAIA,GAAG,EAAI,IAAI,EAAI,MAAO,CAAAA,GAAG,GAAK,QAAQ,CAAE,CAC1C,MAAO,CAAAA,GAAG,CACZ,CAEA,GAAI,CAAAyB,IAAS,CAAG,IAAI,CAEpB,GAAIlB,MAAM,CAACP,GAAG,CAAC,CAAE,CACfyB,IAAI,CAAG,GAAI,CAAAC,IAAI,CAAC1B,GAAG,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAChC,CAAC,IAAM,CACLF,IAAI,CAAGzB,GAAG,CAAC4B,WAAW,CAAC,CAAC,CACxB,IAAK,KAAM,CAAAC,GAAG,GAAI,CAAA7B,GAAG,CAAE,CACrByB,IAAI,CAACI,GAAG,CAAC,CAAGL,KAAK,CAACxB,GAAG,CAAC6B,GAAG,CAAC,CAAC,CAC7B,CACF,CAEA,MAAO,CAAAJ,IAAI,CACb,CACA,E;;ACVO,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,IAAM7B,QAAQ,CAAC4B,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,4BAA4BA,CAACJ,KAAK,CAAE,CAClC,MAAO,KAAI,CAACC,aAAa,CACvB,IAAMI,2BAA2B,CAACL,KAAK,CAAC,CACxC,IACE,WAAW,IAAI,CAACP,YAAY,qBAAqBjB,cAAc,CAC7DwB,KACF,CAAC,YACC,IAAI,CAACP,YAAY,uDAEvB,CAAC,CACH,CAEAa,QAAQA,CAACxB,KAAK,CAAEyB,MAAM,CAAE,CACtB,MAAO,KAAI,CAACN,aAAa,CACvB,IAAMzB,cAAc,CAACM,KAAK,CAAC,GAAKN,cAAc,CAAC+B,MAAM,CAAC,CACtD,IACE,WAAW,IAAI,CAACd,YAAY,sBAAsBjB,cAAc,CAC9DM,KACF,CAAC,UAAUN,cAAc,CACvB+B,MACF,CAAC,8CACL,CAAC,CACH,CAEAC,8BAA8BA,CAACC,MAAM,CAAE,CACrC,MAAO,KAAI,CAACR,aAAa,CACvB,IAAMQ,MAAM,CAACC,KAAK,CAACP,oBAAoB,CAAC,CACxC,IACE,WAAW,IAAI,CAACV,YAAY,WAAW,IAAI,CAACA,YAAY,8CAC5D,CAAC,CACH,CAEAkB,cAAcA,CAACC,KAAK,CAAE,CACpB,MAAO,KAAI,CAACX,aAAa,CACvB,IAAM7B,QAAQ,CAACwC,KAAK,CAAC,CACrB,IACE,WAAW,IAAI,CAACnB,YAAY,iBAAiBjB,cAAc,CAACoC,KAAK,CAAC,MAChE,IAAI,CAACnB,YAAY,0BAEvB,CAAC,CACH,CAEAoB,qBAAqBA,CAACnD,GAAG,CAAE,CACzB,MAAO,KAAI,CAACuC,aAAa,CACvB,IAAMvC,GAAG,WAAY,KAAI,CAACiC,IAAI,CAC9B,IACE,WAAW,IAAI,CAACF,YAAY,eAAejB,cAAc,CAACd,GAAG,CAAC,MAC5D,IAAI,CAAC+B,YAAY,8BAEvB,CAAC,CACH,CAEAqB,UAAUA,CAACC,IAAI,CAAE,CACf,MAAO,KAAI,CAACd,aAAa,CACvB,IAAMc,IAAI,CAAC9B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,0BAC5D,CAAC,CACH,CAEAuB,UAAUA,CAACD,IAAI,CAAE,CACf,MAAO,KAAI,CAACd,aAAa,CACvB,IAAMc,IAAI,CAAC9B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,2BAC5D,CAAC,CACH,CAEAwB,YAAYA,CAACF,IAAI,CAAE,CACjB,MAAO,KAAI,CAACd,aAAa,CACvB,IAAMc,IAAI,CAAC9B,MAAM,GAAK,CAAC,CACvB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,6BAC5D,CAAC,CACH,CAEAyB,iBAAiBA,CAACH,IAAI,CAAE,CACtB,MAAO,KAAI,CAACd,aAAa,CACvB,IAAMc,IAAI,CAAC9B,MAAM,EAAI,CAAC,CACtB,IACE,WAAW,IAAI,CAACQ,YAAY,WAAW,IAAI,CAACA,YAAY,oCAC5D,CAAC,CACH,CAEAQ,aAAaA,CAACkB,WAAW,CAAEC,SAAS,CAAE,CACpC,IAAI,CAACvB,YAAY,CAACwB,IAAI,CAAC,CACrBF,WAAW,CACXC,SACF,CAAC,CAAC,CACF,MAAO,KAAI,CACb,CAEAE,oBAAoBA,CAAA,CAAwB,CAC1C,KAAM,CAAAC,KAAK,CAAG,IAAI,CAAC1B,YAAY,CAACa,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,CAACtB,iBAAiB,CAAEyB,KAAK,CAAC,CACxC,CAEAE,gBAAgBA,CAACF,KAAK,CAAEG,OAAO,CAAE,CAC/B,GAAI,CAACH,KAAK,CAAE,CACV,IAAI,CAACzB,iBAAiB,CAACuB,IAAI,CAACK,OAAO,CAAC,CACpC,MAAO,MAAK,CACd,CACA,MAAO,KAAI,CACb,CACF,CAEA,QAAS,CAAAvB,oBAAoBA,CAACH,KAAK,CAAE,CACnC,MAAO,CAAA5B,QAAQ,CAAC4B,KAAK,CAAC,EAAI9B,QAAQ,CAAC8B,KAAK,CAAC,EAAI/B,MAAM,CAAC+B,KAAK,CAAC,CAC5D,CAEA,QAAS,CAAAK,2BAA2BA,CAACL,KAAK,CAAE,CAC1C,MAAO,CAAA5B,QAAQ,CAAC4B,KAAK,CAAC,EAAI9B,QAAQ,CAAC8B,KAAK,CAAC,EAAI/B,MAAM,CAAC+B,KAAK,CAAC,EAAI7B,SAAS,CAAC6B,KAAK,CAAC,CAChF,C;;AC/JA,KAAM,CAAA2B,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,CAACtE,OAAO,CAACmE,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,CAAC5D,MAAM,CAC7E,KAAM,CAAA6D,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,CAAGhG,MAAM,CAACiG,OAAO,CAAC1B,KAAK,CAAC,CACzCQ,GAAG,CAACmB,iBAAiB,CAAC,CACtBjB,MAAM,CAACkB,KAAA,MAAC,GAAKP,OAAO,CAAC,CAAAO,KAAA,OAAK,CAAAP,OAAO,GAAC,CACrC,KAAM,CAAApB,QAAQ,CAAG,CAAE,GAAGD,KAAK,CAAE,GAAG6B,eAAe,CAACJ,cAAc,CAAE,CAAC,CACjE,KAAM,CAAAJ,OAAO,CAAG,CAAC,CAACI,cAAc,CAAC1E,MAAM,CACvC,MAAO,CAACkD,QAAQ,CAAEoB,OAAO,CAAC,CAC5B,CAEA,QAAS,CAAAM,iBAAiBA,CAAAG,KAAA,CAAe,IAAd,CAACzE,GAAG,CAAES,KAAK,CAAC,CAAAgE,KAAA,CACrC,KAAM,CAACC,QAAQ,CAAEV,OAAO,CAAC,CAAGnB,cAAc,CAACpC,KAAK,CAAC,CACjD,MAAO,CAACT,GAAG,CAAE0E,QAAQ,CAAEV,OAAO,CAAC,CACjC,CAEA,QAAS,CAAAQ,eAAeA,CAACH,OAAO,CAAE,CAChC,MAAO,CAAAA,OAAO,CAACM,MAAM,CAAC,CAACC,GAAG,CAAAC,KAAA,OAAE,CAAC7E,GAAG,CAAES,KAAK,CAAC,CAAAoE,KAAA,OAAM,CAAE,GAAGD,GAAG,CAAE,CAAC5E,GAAG,EAAGS,KAAM,CAAC,EAAC,CAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CAEA,QAAS,CAAAyD,sBAAsBA,CAACY,IAAI,CAAE,CACpC,IAAK,KAAM,CAAAC,YAAY,GAAI,CAAA3C,aAAa,CAAE,CACxC,KAAM,CAAA4C,OAAO,CAAGD,YAAY,CAACD,IAAI,CAAC,CAClC,GAAIE,OAAO,CAAE,CACX,MAAO,CAAAA,OAAO,CAChB,CACF,CACF,CAEA,QAAS,CAAA3C,iBAAiBA,CAACyC,IAAI,CAAE,CAC/B,KAAM,CAAAtD,IAAI,CAAGsD,IAAI,CAACG,IAAI,CACtB,GAAInC,KAAK,CAACtE,OAAO,CAACgD,IAAI,CAAC,EAAIA,IAAI,CAAC9B,MAAM,GAAK,CAAC,CAAE,CAC5C,MAAO,CAAA8B,IAAI,CAAC,CAAC,CAAC,CAChB,CACF,CAEA,QAAS,CAAAc,iBAAiBA,CAACwC,IAAI,CAAE,CAC/B,KAAM,CAAAtD,IAAI,CAAGsD,IAAI,CAACG,IAAI,CACtB,GAAInC,KAAK,CAACtE,OAAO,CAACgD,IAAI,CAAC,EAAIA,IAAI,CAAC9B,MAAM,GAAK,CAAC,CAAE,CAC5C,MAAO,CAAC,CAAC,CACX,CACA,MAAO,KAAI,CACb,CAEA,QAAS,CAAA6C,sBAAsBA,CAACuC,IAAI,CAAE,CACpC,KAAM,CAAAtD,IAAI,CAAGsD,IAAI,CAACG,IAAI,CACtB,GAAI,CAACzD,IAAI,CAAE,CACT,OACF,CAEA,GAAI,CAAA0D,YAAmB,CAAG,EAAE,CAC5B,GAAI,CAAAC,eAAsB,CAAG,EAAE,CAE/B3D,IAAI,CAAC4D,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,CAACxF,MAAM,EAAI,CAAC,EAAI6F,qBAAqB,CAACL,YAAY,CAAC,CAAE,CACnE,OACF,CACA,KAAM,CAAAM,oBAAoB,CAAGpH,MAAM,CAACqH,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,CAAGtH,MAAM,CAACsH,IAAI,CAACZ,IAAI,CAAC,CAC9B,MAAO,CAAAY,IAAI,CAACvE,KAAK,CAAEwE,IAAI,EAAKA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAIF,IAAI,CAAChG,MAAM,CAAG,CAAC,CACtE,CAEA,QAAS,CAAA6F,qBAAqBA,CAACM,OAAO,CAAE,CACtC,KAAM,CAAAC,aAAa,CAAGD,OAAO,CAC1B1C,GAAG,CAAE4C,EAAE,EAAK3H,MAAM,CAACsH,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,CAACxG,MAAM,GAAKoG,aAAa,CAACpG,MAAM,CACnD,CAEA,QAAS,CAAAyG,MAAMA,CAACjF,MAAM,CAAE,CACtB,KAAM,CAAAkF,IAAI,CAAG,CAAC,CAAC,CACflF,MAAM,CAACkE,OAAO,CAAEiB,CAAC,EAAMD,IAAI,CAACC,CAAC,CAAC,CAAG,IAAK,CAAC,CACvC,MAAO,CAAAjI,MAAM,CAACsH,IAAI,CAACU,IAAI,CAAC,CAC1B,CACF,CAEA,QAAS,CAAA5D,mBAAmBA,CAACsC,IAAI,CAAE,CACjC,KAAM,CAAAtD,IAAI,CAAGsD,IAAI,CAACG,IAAI,CACtB,GAAI,CAACzD,IAAI,CAAE,CACT,OACF,CAEA,KAAM,CAAA8E,aAAa,CAAG,CAAC,CAAC9E,IAAI,CAAC+E,IAAI,CAAER,EAAE,EAAKA,EAAE,CAACd,IAAI,CAAC,CAClD,GAAI,CAACqB,aAAa,CAAE,CAClB,OACF,CAEA,KAAM,CAAAE,OAAO,CAAGhF,IAAI,CAACmD,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,CAAA/D,kBAAkBA,CAACqC,IAAI,CAAE,CAChC,KAAM,CAAAtD,IAAI,CAAGsD,IAAI,CAAC8B,GAAG,CACrB,GAAI,CAACpF,IAAI,CAAE,CACT,OACF,CAEA,KAAM,CAAAqF,YAAY,CAAG,CAAC,CAACrF,IAAI,CAAC+E,IAAI,CAAER,EAAE,EAAKA,EAAE,CAACa,GAAG,CAAC,CAChD,GAAI,CAACC,YAAY,CAAE,CACjB,OACF,CAEA,KAAM,CAAAL,OAAO,CAAGhF,IAAI,CAACmD,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,CAAAxD,qBAAqBA,CAAC7E,GAAG,CAAE,CAClC,MAAO,CAAAA,GAAG,WAAY,CAAA0B,IAAI,CAC5B,C;;AClLA,KAAM,CAAAkH,WAAW,CAAG,QAAAA,CAACC,IAAS,KAATA,IAAS,WAATA,IAAS,CAAG,KAAM,EAAE,QACvC,cAAc,CAAAA,IAAK,CAKjBjH,WAAWA,CAAC5B,GAAiD,CAAO,IAAxDA,GAAiD,WAAjDA,GAAiD,CAAG,CAAC,CAAC,EAChE,KAAK,CAACA,GAAG,CAAC,CAAAkC,wBAAA,2BAAAA,wBAAA,iCAAAA,wBAAA,wBACV,IAAI,CAAC4G,UAAU,CAAG9I,GAAG,CAAC8I,UAAU,EAAI,CAAEhC,IAAI,CAAE,EAAG,CAAC,CAChD,IAAI,CAACiC,gBAAgB,CAAG/I,GAAG,CAAC+I,gBAAgB,EAAI,EAAE,CAClD,IAAI,CAACC,OAAO,CAAGhJ,GAAG,CAACgJ,OAAO,EAAI,CAAC,CAAC,CAClC,CAEAC,EAAEA,CAAA,CAAU,SAAAC,IAAA,CAAAC,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAuE,IAAA,EAAAE,IAAA,GAAAA,IAAA,CAAAF,IAAA,CAAAE,IAAA,IAAJ/F,IAAI,CAAA+F,IAAA,EAAAD,SAAA,CAAAC,IAAA,GACR,MAAO,KAAI,CAACC,UAAU,CAAC,KAAK,CAAE,KAAK,CAAEhG,IAAI,CAAC,CAC5C,CAEAiG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAJ,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAA4E,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJnG,IAAI,CAAAmG,KAAA,EAAAL,SAAA,CAAAK,KAAA,GACR,MAAO,KAAI,CAACH,UAAU,CAAC,KAAK,CAAE,KAAK,CAAEhG,IAAI,CAAC,CAC5C,CAEAoG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAP,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAA+E,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJtG,IAAI,CAAAsG,KAAA,EAAAR,SAAA,CAAAQ,KAAA,GACR,MAAO,KAAI,CAACC,sBAAsB,CAAC,MAAM,CAAE,KAAK,CAAEvG,IAAI,CAAC,CACzD,CAEAwG,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAX,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAmF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ1G,IAAI,CAAA0G,KAAA,EAAAZ,SAAA,CAAAY,KAAA,GACR,MAAO,KAAI,CAACH,sBAAsB,CAAC,KAAK,CAAE,KAAK,CAAEvG,IAAI,CAAC,CACxD,CAEA2G,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAd,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAsF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ7G,IAAI,CAAA6G,KAAA,EAAAf,SAAA,CAAAe,KAAA,GACR,MAAO,KAAI,CAACN,sBAAsB,CAAC,MAAM,CAAE,KAAK,CAAEvG,IAAI,CAAC,CACzD,CAEA8G,EAAEA,CAAA,CAAU,SAAAC,KAAA,CAAAjB,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAyF,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJhH,IAAI,CAAAgH,KAAA,EAAAlB,SAAA,CAAAkB,KAAA,GACR,MAAO,KAAI,CAACT,sBAAsB,CAAC,KAAK,CAAE,KAAK,CAAEvG,IAAI,CAAC,CACxD,CAEAiH,UAAUA,CAACpH,KAAK,CAAE,CAChB,KAAM,CAACqH,mBAAmB,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,aAAa,CAAC,CACtEpH,UAAU,CAAC+F,SAAS,CAAC,CACrBlG,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAACyF,EAAE,CAACpG,KAAK,CAAE,IAAI,CAAC,CAC7B,CAEA,MAAO,KAAI,CAACuH,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CAEAG,OAAOA,CAACxH,KAAK,CAAE,CACb,KAAM,CAACqH,mBAAmB,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,UAAU,CAAC,CACnEpH,UAAU,CAAC+F,SAAS,CAAC,CACrBlG,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAACoF,EAAE,CAAC/F,KAAK,CAAE,IAAI,CAAC,CAC7B,CAEA,MAAO,KAAI,CAACuH,KAAK,CAAC,IAAI,CAAC3B,UAAU,CAAEyB,mBAAmB,CAAC,CACzD,CAEA9C,UAAUA,CAAA,CAAU,SAAAkD,KAAA,CAAAxB,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAgG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJvH,IAAI,CAAAuH,KAAA,EAAAzB,SAAA,CAAAyB,KAAA,GAChB,MAAO,KAAI,CAACC,iBAAiB,CAAC,aAAa,CAAE,aAAa,CAAExH,IAAI,CAAC,CACnE,CAEAyH,QAAQA,CAAA,CAAU,SAAAC,KAAA,CAAA5B,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAoG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ3H,IAAI,CAAA2H,KAAA,EAAA7B,SAAA,CAAA6B,KAAA,GACd,MAAO,KAAI,CAACH,iBAAiB,CAAC,WAAW,CAAE,WAAW,CAAExH,IAAI,CAAC,CAC/D,CAEA4H,QAAQA,CAAA,CAAU,SAAAC,KAAA,CAAA/B,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAuG,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJ9H,IAAI,CAAA8H,KAAA,EAAAhC,SAAA,CAAAgC,KAAA,GACd,MAAO,KAAI,CAACN,iBAAiB,CAAC,WAAW,CAAE,WAAW,CAAExH,IAAI,CAAC,CAC/D,CAEA+H,OAAOA,CAAA,CAAU,SAAAC,KAAA,CAAAlC,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAA0G,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJjI,IAAI,CAAAiI,KAAA,EAAAnC,SAAA,CAAAmC,KAAA,GACb,MAAO,KAAI,CAACC,cAAc,CAAC,UAAU,CAAE,UAAU,CAAElI,IAAI,CAAC,CAC1D,CAEAmI,MAAMA,CAAA,CAAU,SAAAC,KAAA,CAAAtC,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAA8G,KAAA,EAAAC,KAAA,GAAAA,KAAA,CAAAD,KAAA,CAAAC,KAAA,IAAJrI,IAAI,CAAAqI,KAAA,EAAAvC,SAAA,CAAAuC,KAAA,GACZ,MAAO,KAAI,CAACH,cAAc,CAAC,SAAS,CAAE,SAAS,CAAElI,IAAI,CAAC,CACxD,CAEAsF,EAAEA,CAACgD,OAAO,CAAE,CACV,KAAM,CAACpB,mBAAmB,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,KAAK,CAAC,CAC9DpH,UAAU,CAAC+F,SAAS,CAAC,CACrBhG,qBAAqB,CAACwI,OAAO,CAAC,CAC9B/H,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAA+H,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,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,MAAM,CAAC,CAC/DpH,UAAU,CAAC+F,SAAS,CAAC,CACrBhG,qBAAqB,CAAC6I,QAAQ,CAAC,CAC/BpI,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAA+H,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,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,MAAM,CAAC,CAC/DpH,UAAU,CAAC+F,SAAS,CAAC,CACrBhG,qBAAqB,CAAC+I,QAAQ,CAAC,CAC/BtI,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,KAAM,CAAAsI,aAAa,CAAG3K,KAAK,CAAC,IAAI,CAACsH,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,CAACtJ,KAAK,CAAEuJ,UAAU,CAAEC,QAAQ,CAAE,CACnC,KAAM,CAACnC,mBAAmB,CAAE1G,KAAK,CAAC,CAAG,IAAI,CAAC2G,gBAAgB,CAAC,UAAU,CAAC,CACnEjH,YAAY,CAAC4F,SAAS,CAAC,CACvBvG,QAAQ,CAAC6J,UAAU,CAAEC,QAAQ,CAAC,CAC9BlK,wBAAwB,CAACiK,UAAU,CAAC,CACpCjK,wBAAwB,CAACkK,QAAQ,CAAC,CAClC9I,oBAAoB,CAAC,CAAC,CAEzB,GAAIC,KAAK,CAAE,CACT,MAAO,KAAI,CAAC4F,EAAE,CAACvG,KAAK,CAAEuJ,UAAU,CAAC,CAACtC,EAAE,CAACjH,KAAK,CAAEwJ,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,CAACxH,MAAM,CAAG,CAAC,CAAE,CACpC,KAAM,IAAI,CAAAqL,KAAK,CAAC,IAAI,CAAC7D,gBAAgB,CAAC8D,IAAI,CAAC,GAAG,CAAC,CAAC,CAClD,CACA,MAAO,CAAAtI,cAAc,CAAC,IAAI,CAACuE,UAAU,CAAC,CACxC,CAEAgE,cAAcA,CAACC,WAAW,CAAE,CAC1B,MAAO,KAAI,CAACtC,KAAK,CAACsC,WAAW,CAAE,EAAE,CAAC,CACpC,CAEA1D,UAAUA,CAAC2D,oBAAoB,CAAEjL,YAAY,CAAEsB,IAAI,CAAE,CACnD,KAAM,CAACH,KAAK,CAAE+J,OAAO,CAAC,CAAGtI,KAAK,CAACzE,SAAS,CAACc,KAAK,CAACZ,IAAI,CAACiD,IAAI,CAAC,CAEzD,KAAM,CAACkH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACzI,YAAY,CAAC,CAC9DuB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBU,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAuI,aAAa,CAAG,IAAI,CAACe,cAAc,CACvChK,KAAK,CACL8J,oBAAoB,CACpBC,OACF,CAAC,CAED,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAX,sBAAsBA,CAACoD,oBAAoB,CAAEjL,YAAY,CAAEsB,IAAI,CAAE,CAC/D,KAAM,CAACH,KAAK,CAAE+J,OAAO,CAAC,CAAGtI,KAAK,CAACzE,SAAS,CAACc,KAAK,CAACZ,IAAI,CAACiD,IAAI,CAAC,CAEzD,KAAM,CAACkH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACzI,YAAY,CAAC,CAC9DuB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBR,4BAA4B,CAACuK,OAAO,CAAC,CACrCrJ,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAuI,aAAa,CAAG,IAAI,CAACe,cAAc,CACvChK,KAAK,CACL8J,oBAAoB,CACpBC,OACF,CAAC,CACD,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAM,iBAAiBA,CAACsC,kBAAkB,CAAEpL,YAAY,CAAEsB,IAAI,CAAE,CACxD,KAAM,CAACH,KAAK,CAAE+J,OAAO,CAAC,CAAGtI,KAAK,CAACzE,SAAS,CAACc,KAAK,CAACZ,IAAI,CAACiD,IAAI,CAAC,CAEzD,KAAM,CAACkH,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACzI,YAAY,CAAC,CAC9DuB,UAAU,CAACD,IAAI,CAAC,CAChBJ,cAAc,CAACC,KAAK,CAAC,CACrBb,YAAY,CAAC4K,OAAO,CAAC,CACrBrJ,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAuI,aAAa,CAAG,IAAI,CAACe,cAAc,CACvChK,KAAK,CACLiK,kBAAkB,CAClBF,OACF,CAAC,CAED,MAAO,KAAI,CAACxC,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEAgB,cAAcA,CAAC4B,kBAAkB,CAAEpL,YAAY,CAAEsB,IAAI,CAAE,CACrD,KAAM,CAACH,KAAK,CAAE,GAAGkK,WAAW,CAAC,CAAGzI,KAAK,CAACzE,SAAS,CAACc,KAAK,CAACZ,IAAI,CAACiD,IAAI,CAAC,CAChE,KAAM,CAAAgK,QAAQ,CAAGhN,OAAO,CAAC+M,WAAW,CAAC,CAAC,CAAC,CAAC,CAAGA,WAAW,CAAC,CAAC,CAAC,CAAGA,WAAW,CAEvE,KAAM,CAAC7C,mBAAmB,CAAC,CAAG,IAAI,CAACC,gBAAgB,CAACzI,YAAY,CAAC,CAC9DyB,iBAAiB,CAACH,IAAI,CAAC,CACvBJ,cAAc,CAACC,KAAK,CAAC,CACrBJ,8BAA8B,CAACuK,QAAQ,CAAC,CACxCzJ,oBAAoB,CAAC,CAAC,CAEzB,KAAM,CAAAuI,aAAa,CAAG,IAAI,CAACe,cAAc,CACvChK,KAAK,CACLiK,kBAAkB,CAClBE,QACF,CAAC,CACD,MAAO,KAAI,CAAC5C,KAAK,CAAC0B,aAAa,CAAE5B,mBAAmB,CAAC,CACvD,CAEA2C,cAAcA,CAAChK,KAAK,CAAEiK,kBAAkB,CAAEF,OAAO,CAAE,CACjD,KAAM,CAAAd,aAAa,CAAG3K,KAAK,CAAC,IAAI,CAACsH,UAAU,CAAC,CAE5C;AACA;AACA;AACA,KAAM,CAAAwE,mBAAmB,CAAGL,OAAO,GAAKM,SAAS,CAAG,IAAI,CAAGN,OAAO,CAClE,KAAM,CAAAO,SAAS,CAAG,IAAI,CAACC,YAAY,CACjCvK,KAAK,CACLiK,kBAAkB,CAClBG,mBACF,CAAC,CAED,GAAIjN,OAAO,CAAC8L,aAAa,CAACrF,IAAI,CAAC,CAAE,CAC/BqF,aAAa,CAACrF,IAAI,CAACnD,IAAI,CAAC6J,SAAS,CAAC,CAClC,MAAO,CAAArB,aAAa,CACtB,CAAC,IAAM,CACL,KAAM,CAAA7D,MAAM,CAAGoF,aAAa,CAACvB,aAAa,CAAC,CACvCL,KAAK,CAAC0B,SAAS,CAAC,CAChB1B,KAAK,CAACK,aAAa,CAAEqB,SAAS,CAAC,CACnC,MAAO,CAAAlF,MAAM,CACf,CACF,CAEAmF,YAAYA,CAACvK,KAAK,CAAEiK,kBAAkB,CAAEF,OAAO,CAAE,CAC/C,GAAIE,kBAAkB,GAAK,KAAK,CAAE,CAChC,KAAM,CAAAK,SAAS,CAAG,CAAC,CAAC,CACpBA,SAAS,CAACtK,KAAK,CAAC,CAAG,CAAC,CAAC,CACrBsK,SAAS,CAACtK,KAAK,CAAC,CAACiK,kBAAkB,CAAC,CAAG,IAAI,CAACQ,OAAO,CAACV,OAAO,CAAC,CAC5D,MAAO,CAAAO,SAAS,CAClB,CAAC,IAAM,CACL,KAAM,CAAAA,SAAS,CAAG,CAAC,CAAC,CACpBA,SAAS,CAACtK,KAAK,CAAC,CAAG,IAAI,CAACyK,OAAO,CAACV,OAAO,CAAC,CACxC,MAAO,CAAAO,SAAS,CAClB,CACF,CAEAG,OAAOA,CAACV,OAAO,CAAE,CACf,GAAItM,UAAU,CAAC,IAAI,CAACqI,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,CAACnH,WAAW,CAAC,CAAE,GAAG,IAAI,CAAEkH,UAAU,CAAEC,gBAAiB,CAAC,CAAC,CACxE,CAEAyB,gBAAgBA,CAAC2C,kBAAkB,CAAa,CAC9C,MAAO,IAAI,CAAArL,eAAe,CACxBqL,kBAAkB,CAClB,IAAI,CAACpE,gBAAgB,CACrB,IAAI,CAACnH,WACP,CAAC,CACH,CACF,CAAC,GAEH,QAAS,CAAAgM,uBAAuBA,CAAC9E,UAAU,CAAE,CAC3C,MAAO,CAAAzI,OAAO,CAACyI,UAAU,CAAChC,IAAI,CAAC,CACjC,CAEA,QAAS,CAAA4G,aAAaA,CAAC1N,GAAG,CAAE,CAC1B,MAAO,CAAAC,MAAM,CAACsH,IAAI,CAACvH,GAAG,CAAC,CAACuB,MAAM,GAAK,CAAC,CACtC,CAEA,QAAS,CAAAuK,KAAKA,CAAA,CAAU,SAAA+B,MAAA,CAAA1E,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAkJ,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJzK,IAAI,CAAAyK,MAAA,EAAA3E,SAAA,CAAA2E,MAAA,GACpB,MAAO,CACLhH,IAAI,CAAEzD,IACR,CAAC,CACH,CAEA,QAAS,CAAAkJ,cAAcA,CAAA,CAAU,SAAAwB,MAAA,CAAA5E,SAAA,CAAA5H,MAAA,CAAN8B,IAAI,KAAAsB,KAAA,CAAAoJ,MAAA,EAAAC,MAAA,GAAAA,MAAA,CAAAD,MAAA,CAAAC,MAAA,IAAJ3K,IAAI,CAAA2K,MAAA,EAAA7E,SAAA,CAAA6E,MAAA,GAC7B,MAAO,CACLlH,IAAI,CAAEzD,IAAI,CAACmD,MAAM,CACf,CAACyH,IAAI,CAAEC,GAAG,GACRN,uBAAuB,CAACM,GAAG,CAAC,CACxBD,IAAI,CAAClC,MAAM,CAACmC,GAAG,CAACpH,IAAI,CAAC,CACrBmH,IAAI,CAAClC,MAAM,CAAC,CAACmC,GAAG,CAAC,CAAC,CACxB,EACF,CACF,CAAC,CACH,CAEA,QAAS,CAAArC,UAAUA,CAAClF,IAAI,CAAE,CACxB,MAAO,CAAAA,IAAI,EAAIA,IAAI,CAACG,IAAI,EAAIH,IAAI,CAACG,IAAI,CAACvF,MAAM,GAAK,CAAC,CACpD,CAEA,mDAAeqH,WAAW,E;;ACtUnB,KAAM,CAAAuF,aAAa,QAAS,CAAAvF,YAAW,CAAC,CAAE,CAC/C,GAAI,CAAAwF,eAAeA,CAAA,CAAG,CACpB,MAAO,eAAe,CACxB,CAEAC,MAAMA,CAAA,CAAG,CACP,MAAO,KAAI,CAAC1B,cAAc,CAAC,CAAC,CAC9B,CACF,CAEO,QAAS,CAAA2B,aAAaA,CAACC,MAAM,CAAO,IAAbA,MAAM,WAANA,MAAM,CAAG,CAAC,CAAC,EACvC,MAAO,IAAI,CAAAJ,aAAa,CAACI,MAAM,CAAC,CAClC,CAEA,qDAAeD,gDAAAA,aAAa,I;;ACdrB,QAAS,CAAAE,cAAcA,CAACvB,OAAO,CAAE,CACtC,GAAI1M,MAAM,CAAC0M,OAAO,CAAC,CAAE,CACnB,MAAO,CAAEwB,KAAK,CAAExB,OAAO,CAACyB,MAAM,CAAC,CAAE,CAAC,CACpC,CAAC,IAAM,CACL,MAAO,CAAAzB,OAAO,CAChB,CACF,C;;ACAA,4CAAeqB,aAAa,E","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/@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 _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};","export function isObject(obj: any): obj is Record<keyof any, any> {\n return Object.prototype.toString.call(obj) === '[object Object]'\n}\nexport function isArray(arr: any): arr is any[] {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexport function isDate(obj: any) {\n return Object.prototype.toString.call(obj) === '[object Date]'\n}\n\nexport function isNumber(obj: any) {\n return typeof obj === 'number'\n}\n\nexport function isBoolean(obj: any) {\n return typeof obj === 'boolean'\n}\n\nexport function isString(obj: any) {\n return typeof obj === 'string'\n}\n\nexport function isFunction(obj: any) {\n return typeof obj === 'function'\n}\n\nexport function isUndefined(obj: any) {\n return obj === void 0\n}\n\nexport function isNull(obj: any) {\n return obj === null\n}\n\nexport function typeForDisplay(obj: any) {\n if (typeof obj === 'number') {\n return 'Number'\n }\n if (typeof obj === 'boolean') {\n return 'Boolean'\n }\n if (typeof obj === 'string') {\n return 'String'\n }\n if (isArray(obj)) {\n return 'Array'\n }\n if (isDate(obj)) {\n return 'Date'\n }\n if (isObject(obj)) {\n return 'Object'\n }\n if (isUndefined(obj)) {\n return 'Undefined'\n }\n if (isNull(obj)) {\n return 'Null'\n }\n const type = Object.prototype.toString\n .call(obj)\n .slice(8, -1)\n .replace(/\\s/g, '')\n return upperCaseFirst(type)\n}\n\nfunction upperCaseFirst(str: any) {\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//\n","import {\n typeForDisplay,\n isDate,\n isString,\n isNumber,\n isBoolean,\n} 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 typeIsStringNumberBoolOrDate(value) {\n return this.addValidation(\n () => isDateStringNumberOrBoolean(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number, Boolean 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\nfunction isDateStringNumberOrBoolean(value) {\n return isString(value) || isNumber(value) || isDate(value) || isBoolean(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 .typeIsStringNumberBoolOrDate(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":["isObject","obj","Object","prototype","toString","call","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","isUndefined","isNull","typeForDisplay","type","slice","replace","upperCaseFirst","str","first","toUpperCase","rest","length","clone","temp","Date","getTime","constructor","key","FilterValidator","operatorName","previousInvalidArguments","ctor","_defineProperty","_validations","_invalidArguments","typeIsString","value","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","typeIsStringNumberBoolOrDate","isDateStringNumberOrBoolean","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","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","_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":""}
1
+ {"version":3,"file":"filter-builder.umd.js","mappings":"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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/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 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\tif (!(moduleId in __webpack_modules__)) {\n\t\tdelete __webpack_module_cache__[moduleId];\n\t\tvar e = new Error(\"Cannot find module '\" + moduleId + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\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};","export function isObject(obj: any): obj is Record<keyof any, any> {\n return Object.prototype.toString.call(obj) === '[object Object]'\n}\nexport function isArray(arr: any): arr is any[] {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexport function isDate(obj: any) {\n return Object.prototype.toString.call(obj) === '[object Date]'\n}\n\nexport function isNumber(obj: any) {\n return typeof obj === 'number'\n}\n\nexport function isBoolean(obj: any) {\n return typeof obj === 'boolean'\n}\n\nexport function isString(obj: any) {\n return typeof obj === 'string'\n}\n\nexport function isFunction(obj: any) {\n return typeof obj === 'function'\n}\n\nexport function isUndefined(obj: any) {\n return obj === void 0\n}\n\nexport function isNull(obj: any) {\n return obj === null\n}\n\nexport function typeForDisplay(obj: any) {\n if (typeof obj === 'number') {\n return 'Number'\n }\n if (typeof obj === 'boolean') {\n return 'Boolean'\n }\n if (typeof obj === 'string') {\n return 'String'\n }\n if (isArray(obj)) {\n return 'Array'\n }\n if (isDate(obj)) {\n return 'Date'\n }\n if (isObject(obj)) {\n return 'Object'\n }\n if (isUndefined(obj)) {\n return 'Undefined'\n }\n if (isNull(obj)) {\n return 'Null'\n }\n const type = Object.prototype.toString\n .call(obj)\n .slice(8, -1)\n .replace(/\\s/g, '')\n return upperCaseFirst(type)\n}\n\nfunction upperCaseFirst(str: any) {\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//\n","import {\n typeForDisplay,\n isDate,\n isString,\n isNumber,\n isBoolean,\n} 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 typeIsStringNumberBoolOrDate(value) {\n return this.addValidation(\n () => isDateStringNumberOrBoolean(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number, Boolean 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\nfunction isDateStringNumberOrBoolean(value) {\n return isString(value) || isNumber(value) || isDate(value) || isBoolean(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 .typeIsStringNumberBoolOrDate(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":["isObject","obj","Object","prototype","toString","call","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","isUndefined","isNull","typeForDisplay","type","slice","replace","upperCaseFirst","str","first","toUpperCase","rest","length","clone","temp","Date","getTime","constructor","key","FilterValidator","operatorName","previousInvalidArguments","ctor","_defineProperty","_validations","_invalidArguments","typeIsString","value","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","typeIsStringNumberBoolOrDate","isDateStringNumberOrBoolean","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","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","_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":""}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("platformized-filter-builder",[],e):"object"==typeof exports?exports["platformized-filter-builder"]=e():t["platformized-filter-builder"]=e()}("undefined"!=typeof self?self:this,()=>(()=>{var t={212:(t,e,r)=>{var n=r(347);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},319:t=>{function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},347:(t,e,r)=>{var n=r(319).default,i=r(878);t.exports=function(t){var e=i(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},878:(t,e,r)=>{var n=r(319).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Validator:()=>d,default:()=>b,filterBuilder:()=>A,filterMixin:()=>m,optimiseQuery:()=>h,wixDataEncoder:()=>_});var t=r(212),e=r.n(t);function i(t){return"[object Array]"===Object.prototype.toString.call(t)}function a(t){return"[object Date]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t}function s(t){return"string"==typeof t}function l(t){if("number"==typeof t)return"Number";if("boolean"==typeof t)return"Boolean";if("string"==typeof t)return"String";if(i(t))return"Array";if(a(t))return"Date";if(function(t){return"[object Object]"===Object.prototype.toString.call(t)}(t))return"Object";if(function(t){return void 0===t}(t))return"Undefined";if(function(t){return null===t}(t))return"Null";return function(t){if(!s(t))return t;const e=t.slice(0,1).toUpperCase(),r=t.slice(1,t.length);return e+r}(Object.prototype.toString.call(t).slice(8,-1).replace(/\s/g,""))}function u(t){if(null==t||"object"!=typeof t)return t;let e=null;if(a(t))e=new Date(t.getTime());else{e=t.constructor();for(const r in t)e[r]=u(t[r])}return e}class d{constructor(t,r,n){e()(this,"ctor",void 0),e()(this,"_invalidArguments",void 0),e()(this,"_validations",void 0),e()(this,"operatorName",void 0),this._validations=[],this.operatorName=t,this.ctor=n,this._invalidArguments=u(r)}typeIsString(t){return this.addValidation(()=>s(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. ${this.operatorName} parameter must be a String.`)}typeIsStringNumberOrDate(t){return this.addValidation(()=>c(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`)}typeIsStringNumberBoolOrDate(t){return this.addValidation(()=>function(t){return s(t)||o(t)||a(t)||(e=t,"boolean"==typeof e);var e}(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. Valid ${this.operatorName} parameter types are String, Number, Boolean or Date.`)}sameType(t,e){return this.addValidation(()=>l(t)===l(e),()=>`Invalid ${this.operatorName} parameter values [${l(t)}] and [${l(e)}]. Both parameters must be of the same type.`)}typeIsStringNumberOrDateForAll(t){return this.addValidation(()=>t.every(c),()=>`Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`)}validFieldName(t){return this.addValidation(()=>s(t),()=>`Invalid ${this.operatorName} field value [${l(t)}]. ${this.operatorName} field must be a String.`)}isInstanceOfSameClass(t){return this.addValidation(()=>t instanceof this.ctor,()=>`Invalid ${this.operatorName} parameter [${l(t)}]. ${this.operatorName} expects FilterBuilder only.`)}arityIsOne(t){return this.addValidation(()=>1===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`)}arityIsTwo(t){return this.addValidation(()=>2===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`)}arityIsThree(t){return this.addValidation(()=>3===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`)}arityIsAtLeastTwo(t){return this.addValidation(()=>t.length>=2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`)}addValidation(t,e){return this._validations.push({predicateFn:t,messageFn:e}),this}validateAndAggregate(){const t=this._validations.every(t=>{let{predicateFn:e,messageFn:r}=t;return this._appendIfInvalid(e(),r())});return[this._invalidArguments,t]}_appendIfInvalid(t,e){return!!t||(this._invalidArguments.push(e),!1)}}function c(t){return s(t)||o(t)||a(t)}const f=[function(t){const e=t.$and;if(Array.isArray(e)&&1===e.length)return e[0]},function(t){const e=t.$and;if(Array.isArray(e)&&0===e.length)return{};return null},function(t){const e=t.$and;if(!e)return;let r=[],n=[];if(e.forEach(t=>{!function(t){const e=Object.keys(t);return e.every(t=>t.startsWith("$"))&&e.length>0}(t)?r=[...r,t]:n=[...n,t]}),r.length<=1||function(t){const e=t.map(t=>Object.keys(t)).reduce((t,e)=>[...t,...e],[]);return function(t){const e={};return t.forEach(t=>e[t]=!0),Object.keys(e)}(e).length!==e.length}(r))return;return{$and:[Object.assign({},...r),...n]}},function(t){const e=t.$and;if(!e)return;if(!e.find(t=>t.$and))return;return{$and:e.reduce((t,e)=>{const r=e.$and;return r?[...t,...r]:[...t,e]},[])}},function(t){const e=t.$or;if(!e)return;if(!e.find(t=>t.$or))return;return{$or:e.reduce((t,e)=>{const r=e.$or;return r?[...t,...r]:[...t,e]},[])}}];function h(t){const[e]=p(t);return e}function p(t){return Array.isArray(t)?function(t){const e=t.map(p),r=0<e.filter(t=>{let[,e]=t;return e}).length;return[e.map(t=>{let[e]=t;return e}),r]}(t):"object"!=typeof t||null===t||t instanceof Date?[t,!1]:function(t){const[e,r]=o(t),[n,i]=a(e);return[n,r||i];function a(t){const e=function(t){for(const e of f){const r=e(t);if(r)return r}}(t);if(!e)return[t,!1];const[r]=p(e);return[r,!0]}function o(t){const e=Object.entries(t).map(s).filter(t=>{let[,,e]=t;return e});return[{...t,...l(e)},!!e.length]}function s(t){let[e,r]=t;const[n,i]=p(r);return[e,n,i]}function l(t){return t.reduce((t,e)=>{let[r,n]=e;return{...t,[r]:n}},{})}}(t)}function g(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return{$and:e}}function y(t){return t&&t.$and&&0===t.$and.length}const m=function(t){return void 0===t&&(t=class{}),class extends t{constructor(t){void 0===t&&(t={}),super(t),e()(this,"filterTree",void 0),e()(this,"invalidArguments",void 0),e()(this,"encoder",void 0),this.filterTree=t.filterTree||{$and:[]},this.invalidArguments=t.invalidArguments||[],this.encoder=t.encoder||{}}eq(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._binaryAnd("$eq",".eq",e)}ne(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._binaryAnd("$ne",".ne",e)}ge(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$gte",".ge",e)}gt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$gt",".gt",e)}le(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$lte",".le",e)}lt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$lt",".lt",e)}isNotEmpty(t){const[e,r]=this._filterValidator(".isNotEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate();return r?this.ne(t,null):this._copy(this.filterTree,e)}isEmpty(t){const[e,r]=this._filterValidator(".isEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate();return r?this.eq(t,null):this._copy(this.filterTree,e)}startsWith(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$startsWith",".startsWith",e)}endsWith(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$endsWith",".endsWith",e)}contains(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$contains",".contains",e)}hasSome(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndSetOperand("$hasSome",".hasSome",e)}hasAll(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndSetOperand("$hasAll",".hasAll",e)}or(t){const[e,r]=this._filterValidator(".or").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=y(this.filterTree)?[]:[this.filterTree];return this._copy(g({$or:[...r,t.filterTree]}),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}and(t){const[e,r]=this._filterValidator(".and").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=y(this.filterTree)?[]:[this.filterTree];return this._copy(g(...r,t.filterTree),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}not(t){const[e,r]=this._filterValidator(".not").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return{$and:e.reduce((t,e)=>i(e.$and)?t.concat(e.$and):t.concat([e]),[])}}(u(this.filterTree),{$not:[t.filterTree]});return this._copy(r,e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}between(t,e,r){const[n,i]=this._filterValidator(".between").arityIsThree(arguments).sameType(e,r).typeIsStringNumberOrDate(e).typeIsStringNumberOrDate(r).validateAndAggregate();return i?this.ge(t,e).lt(t,r):this._copy(this.filterTree,n)}getFilterModel(){if(this.invalidArguments.length>0)throw new Error(this.invalidArguments.join(" "));return h(this.filterTree)}setFilterModel(t){return this._copy(t,[])}_binaryAnd(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndLogicalEquivalence(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).typeIsStringNumberBoolOrDate(i).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndStringOperand(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).typeIsString(i).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndSetOperand(t,e,r){const[n,...a]=Array.prototype.slice.call(r),o=i(a[0])?a[0]:a,[s]=this._filterValidator(e).arityIsAtLeastTwo(r).validFieldName(n).typeIsStringNumberOrDateForAll(o).validateAndAggregate(),l=this._makeNewFilter(n,t,o);return this._copy(l,s)}_makeNewFilter(t,e,r){const n=u(this.filterTree),a=void 0===r?null:r,o=this._buildFilter(t,e,a);if(i(n.$and))return n.$and.push(o),n;return s=n,0===Object.keys(s).length?g(o):g(n,o);var s}_buildFilter(t,e,r){if("$eq"!==e){const n={};return n[t]={},n[t][e]=this._encode(r),n}{const e={};return e[t]=this._encode(r),e}}_encode(t){return"function"==typeof this.encoder?this.encoder(t):t}_copy(t,e){return new this.constructor({...this,filterTree:t,invalidArguments:e})}_filterValidator(t){return new d(t,this.invalidArguments,this.constructor)}}};class v extends(m()){get constructorName(){return"FilterBuilder"}_build(){return this.getFilterModel()}}function A(t){return void 0===t&&(t={}),new v(t)}function _(t){return a(t)?{$date:t.toJSON()}:t}const b=A})(),n})());
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("platformized-filter-builder",[],e):"object"==typeof exports?exports["platformized-filter-builder"]=e():t["platformized-filter-builder"]=e()}("undefined"!=typeof self?self:this,()=>(()=>{var t={212(t,e,r){var n=r(347);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},878(t,e,r){var n=r(319).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},347(t,e,r){var n=r(319).default,i=r(878);t.exports=function(t){var e=i(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},319(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,r),a.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{Validator:()=>d,default:()=>b,filterBuilder:()=>A,filterMixin:()=>m,optimiseQuery:()=>h,wixDataEncoder:()=>_});var t=r(212),e=r.n(t);function i(t){return"[object Array]"===Object.prototype.toString.call(t)}function a(t){return"[object Date]"===Object.prototype.toString.call(t)}function o(t){return"number"==typeof t}function s(t){return"string"==typeof t}function l(t){if("number"==typeof t)return"Number";if("boolean"==typeof t)return"Boolean";if("string"==typeof t)return"String";if(i(t))return"Array";if(a(t))return"Date";if(function(t){return"[object Object]"===Object.prototype.toString.call(t)}(t))return"Object";if(function(t){return void 0===t}(t))return"Undefined";if(function(t){return null===t}(t))return"Null";return function(t){if(!s(t))return t;const e=t.slice(0,1).toUpperCase(),r=t.slice(1,t.length);return e+r}(Object.prototype.toString.call(t).slice(8,-1).replace(/\s/g,""))}function u(t){if(null==t||"object"!=typeof t)return t;let e=null;if(a(t))e=new Date(t.getTime());else{e=t.constructor();for(const r in t)e[r]=u(t[r])}return e}class d{constructor(t,r,n){e()(this,"ctor",void 0),e()(this,"_invalidArguments",void 0),e()(this,"_validations",void 0),e()(this,"operatorName",void 0),this._validations=[],this.operatorName=t,this.ctor=n,this._invalidArguments=u(r)}typeIsString(t){return this.addValidation(()=>s(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. ${this.operatorName} parameter must be a String.`)}typeIsStringNumberOrDate(t){return this.addValidation(()=>c(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. Valid ${this.operatorName} parameter types are String, Number or Date.`)}typeIsStringNumberBoolOrDate(t){return this.addValidation(()=>function(t){return s(t)||o(t)||a(t)||(e=t,"boolean"==typeof e);var e}(t),()=>`Invalid ${this.operatorName} parameter value [${l(t)}]. Valid ${this.operatorName} parameter types are String, Number, Boolean or Date.`)}sameType(t,e){return this.addValidation(()=>l(t)===l(e),()=>`Invalid ${this.operatorName} parameter values [${l(t)}] and [${l(e)}]. Both parameters must be of the same type.`)}typeIsStringNumberOrDateForAll(t){return this.addValidation(()=>t.every(c),()=>`Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`)}validFieldName(t){return this.addValidation(()=>s(t),()=>`Invalid ${this.operatorName} field value [${l(t)}]. ${this.operatorName} field must be a String.`)}isInstanceOfSameClass(t){return this.addValidation(()=>t instanceof this.ctor,()=>`Invalid ${this.operatorName} parameter [${l(t)}]. ${this.operatorName} expects FilterBuilder only.`)}arityIsOne(t){return this.addValidation(()=>1===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`)}arityIsTwo(t){return this.addValidation(()=>2===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`)}arityIsThree(t){return this.addValidation(()=>3===t.length,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`)}arityIsAtLeastTwo(t){return this.addValidation(()=>t.length>=2,()=>`Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`)}addValidation(t,e){return this._validations.push({predicateFn:t,messageFn:e}),this}validateAndAggregate(){const t=this._validations.every(t=>{let{predicateFn:e,messageFn:r}=t;return this._appendIfInvalid(e(),r())});return[this._invalidArguments,t]}_appendIfInvalid(t,e){return!!t||(this._invalidArguments.push(e),!1)}}function c(t){return s(t)||o(t)||a(t)}const f=[function(t){const e=t.$and;if(Array.isArray(e)&&1===e.length)return e[0]},function(t){const e=t.$and;if(Array.isArray(e)&&0===e.length)return{};return null},function(t){const e=t.$and;if(!e)return;let r=[],n=[];if(e.forEach(t=>{!function(t){const e=Object.keys(t);return e.every(t=>t.startsWith("$"))&&e.length>0}(t)?r=[...r,t]:n=[...n,t]}),r.length<=1||function(t){const e=t.map(t=>Object.keys(t)).reduce((t,e)=>[...t,...e],[]);return function(t){const e={};return t.forEach(t=>e[t]=!0),Object.keys(e)}(e).length!==e.length}(r))return;return{$and:[Object.assign({},...r),...n]}},function(t){const e=t.$and;if(!e)return;if(!e.find(t=>t.$and))return;return{$and:e.reduce((t,e)=>{const r=e.$and;return r?[...t,...r]:[...t,e]},[])}},function(t){const e=t.$or;if(!e)return;if(!e.find(t=>t.$or))return;return{$or:e.reduce((t,e)=>{const r=e.$or;return r?[...t,...r]:[...t,e]},[])}}];function h(t){const[e]=p(t);return e}function p(t){return Array.isArray(t)?function(t){const e=t.map(p),r=0<e.filter(t=>{let[,e]=t;return e}).length;return[e.map(t=>{let[e]=t;return e}),r]}(t):"object"!=typeof t||null===t||t instanceof Date?[t,!1]:function(t){const[e,r]=o(t),[n,i]=a(e);return[n,r||i];function a(t){const e=function(t){for(const e of f){const r=e(t);if(r)return r}}(t);if(!e)return[t,!1];const[r]=p(e);return[r,!0]}function o(t){const e=Object.entries(t).map(s).filter(t=>{let[,,e]=t;return e});return[{...t,...l(e)},!!e.length]}function s(t){let[e,r]=t;const[n,i]=p(r);return[e,n,i]}function l(t){return t.reduce((t,e)=>{let[r,n]=e;return{...t,[r]:n}},{})}}(t)}function g(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return{$and:e}}function y(t){return t&&t.$and&&0===t.$and.length}const m=function(t){return void 0===t&&(t=class{}),class extends t{constructor(t){void 0===t&&(t={}),super(t),e()(this,"filterTree",void 0),e()(this,"invalidArguments",void 0),e()(this,"encoder",void 0),this.filterTree=t.filterTree||{$and:[]},this.invalidArguments=t.invalidArguments||[],this.encoder=t.encoder||{}}eq(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._binaryAnd("$eq",".eq",e)}ne(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._binaryAnd("$ne",".ne",e)}ge(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$gte",".ge",e)}gt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$gt",".gt",e)}le(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$lte",".le",e)}lt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndLogicalEquivalence("$lt",".lt",e)}isNotEmpty(t){const[e,r]=this._filterValidator(".isNotEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate();return r?this.ne(t,null):this._copy(this.filterTree,e)}isEmpty(t){const[e,r]=this._filterValidator(".isEmpty").arityIsOne(arguments).validFieldName(t).validateAndAggregate();return r?this.eq(t,null):this._copy(this.filterTree,e)}startsWith(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$startsWith",".startsWith",e)}endsWith(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$endsWith",".endsWith",e)}contains(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndStringOperand("$contains",".contains",e)}hasSome(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndSetOperand("$hasSome",".hasSome",e)}hasAll(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this._AndSetOperand("$hasAll",".hasAll",e)}or(t){const[e,r]=this._filterValidator(".or").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=y(this.filterTree)?[]:[this.filterTree];return this._copy(g({$or:[...r,t.filterTree]}),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}and(t){const[e,r]=this._filterValidator(".and").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=y(this.filterTree)?[]:[this.filterTree];return this._copy(g(...r,t.filterTree),e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}not(t){const[e,r]=this._filterValidator(".not").arityIsOne(arguments).isInstanceOfSameClass(t).validateAndAggregate();if(r){const r=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return{$and:e.reduce((t,e)=>i(e.$and)?t.concat(e.$and):t.concat([e]),[])}}(u(this.filterTree),{$not:[t.filterTree]});return this._copy(r,e.concat(t.invalidArguments))}return this._copy(this.filterTree,e)}between(t,e,r){const[n,i]=this._filterValidator(".between").arityIsThree(arguments).sameType(e,r).typeIsStringNumberOrDate(e).typeIsStringNumberOrDate(r).validateAndAggregate();return i?this.ge(t,e).lt(t,r):this._copy(this.filterTree,n)}getFilterModel(){if(this.invalidArguments.length>0)throw new Error(this.invalidArguments.join(" "));return h(this.filterTree)}setFilterModel(t){return this._copy(t,[])}_binaryAnd(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndLogicalEquivalence(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).typeIsStringNumberBoolOrDate(i).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndStringOperand(t,e,r){const[n,i]=Array.prototype.slice.call(r),[a]=this._filterValidator(e).arityIsTwo(r).validFieldName(n).typeIsString(i).validateAndAggregate(),o=this._makeNewFilter(n,t,i);return this._copy(o,a)}_AndSetOperand(t,e,r){const[n,...a]=Array.prototype.slice.call(r),o=i(a[0])?a[0]:a,[s]=this._filterValidator(e).arityIsAtLeastTwo(r).validFieldName(n).typeIsStringNumberOrDateForAll(o).validateAndAggregate(),l=this._makeNewFilter(n,t,o);return this._copy(l,s)}_makeNewFilter(t,e,r){const n=u(this.filterTree),a=void 0===r?null:r,o=this._buildFilter(t,e,a);if(i(n.$and))return n.$and.push(o),n;return s=n,0===Object.keys(s).length?g(o):g(n,o);var s}_buildFilter(t,e,r){if("$eq"!==e){const n={};return n[t]={},n[t][e]=this._encode(r),n}{const e={};return e[t]=this._encode(r),e}}_encode(t){return"function"==typeof this.encoder?this.encoder(t):t}_copy(t,e){return new this.constructor({...this,filterTree:t,invalidArguments:e})}_filterValidator(t){return new d(t,this.invalidArguments,this.constructor)}}};class v extends(m()){get constructorName(){return"FilterBuilder"}_build(){return this.getFilterModel()}}function A(t){return void 0===t&&(t={}),new v(t)}function _(t){return a(t)?{$date:t.toJSON()}:t}const b=A})(),n})());
2
2
  //# sourceMappingURL=filter-builder.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-builder.umd.min.js","mappings":"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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/@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 _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};","export function isObject(obj: any): obj is Record<keyof any, any> {\n return Object.prototype.toString.call(obj) === '[object Object]'\n}\nexport function isArray(arr: any): arr is any[] {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexport function isDate(obj: any) {\n return Object.prototype.toString.call(obj) === '[object Date]'\n}\n\nexport function isNumber(obj: any) {\n return typeof obj === 'number'\n}\n\nexport function isBoolean(obj: any) {\n return typeof obj === 'boolean'\n}\n\nexport function isString(obj: any) {\n return typeof obj === 'string'\n}\n\nexport function isFunction(obj: any) {\n return typeof obj === 'function'\n}\n\nexport function isUndefined(obj: any) {\n return obj === void 0\n}\n\nexport function isNull(obj: any) {\n return obj === null\n}\n\nexport function typeForDisplay(obj: any) {\n if (typeof obj === 'number') {\n return 'Number'\n }\n if (typeof obj === 'boolean') {\n return 'Boolean'\n }\n if (typeof obj === 'string') {\n return 'String'\n }\n if (isArray(obj)) {\n return 'Array'\n }\n if (isDate(obj)) {\n return 'Date'\n }\n if (isObject(obj)) {\n return 'Object'\n }\n if (isUndefined(obj)) {\n return 'Undefined'\n }\n if (isNull(obj)) {\n return 'Null'\n }\n const type = Object.prototype.toString\n .call(obj)\n .slice(8, -1)\n .replace(/\\s/g, '')\n return upperCaseFirst(type)\n}\n\nfunction upperCaseFirst(str: any) {\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//\n","import {\n typeForDisplay,\n isDate,\n isString,\n isNumber,\n isBoolean,\n} 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 typeIsStringNumberBoolOrDate(value) {\n return this.addValidation(\n () => isDateStringNumberOrBoolean(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number, Boolean 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\nfunction isDateStringNumberOrBoolean(value) {\n return isString(value) || isNumber(value) || isDate(value) || isBoolean(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 .typeIsStringNumberBoolOrDate(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":["root","factory","exports","module","define","amd","self","this","toPropertyKey","e","r","t","Object","defineProperty","value","enumerable","configurable","writable","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","toPrimitive","i","call","TypeError","String","Number","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","d","a","definition","key","get","obj","prop","hasOwnProperty","toStringTag","isArray","arr","toString","isDate","isNumber","isString","typeForDisplay","isObject","isUndefined","isNull","str","first","slice","toUpperCase","rest","length","upperCaseFirst","replace","clone","temp","Date","getTime","FilterValidator","operatorName","previousInvalidArguments","ctor","_defineProperty","_validations","_invalidArguments","typeIsString","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","typeIsStringNumberBoolOrDate","isDateStringNumberOrBoolean","sameType","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","arityIsOne","args","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_ref","_appendIfInvalid","message","optimisations","node","$and","Array","basicObjects","operatorObjects","forEach","arg","keys","name","startsWith","isOperator","objects","nonUniqueKeys","map","it","reduce","b","dict","v","unique","haveOverlappingFields","assign","find","result","current","and","$or","or","optimisedQuery","query","newQuery","fullyOptimised","optimisedElements","somethingChanged","filter","elementChanged","_ref2","element","fullyOptimisedArray","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","updatedQuery","optimisation","newNode","applyFirstOptimisation","finalQuery","changedEntries","entries","entryOptimisation","_ref3","changed","entriesAsObject","_ref4","newValue","acc","_ref5","fullyOptimisedObject","inAnd","_len10","arguments","_key10","isEmptyAnd","Base","super","filterTree","invalidArguments","encoder","eq","_len","_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","concat","andQuery","not","notQuery","resultingFilter","_len11","_key11","aggr","val","inAndOptimized","$not","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","operand","newFilterTree","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","newFilter","_buildFilter","_encode","FilterBuilder","filterMixin","constructorName","_build","filterBuilder","params","wixDataEncoder","$date","toJSON"],"sourceRoot":""}
1
+ {"version":3,"file":"filter-builder.umd.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,8BAA+B,GAAIH,GAChB,iBAAZC,QACdA,QAAQ,+BAAiCD,IAEzCD,EAAK,+BAAiCC,GACvC,CATD,CASoB,oBAATK,KAAuBA,KAAOC,KAAO,I,wBCThD,IAAIC,EAAgB,EAAQ,KAS5BL,EAAOD,QARP,SAAyBO,EAAGC,EAAGC,GAC7B,OAAQD,EAAIF,EAAcE,MAAOD,EAAIG,OAAOC,eAAeJ,EAAGC,EAAG,CAC/DI,MAAOH,EACPI,YAAY,EACZC,cAAc,EACdC,UAAU,IACPR,EAAEC,GAAKC,EAAGF,CACjB,EACkCN,EAAOD,QAAQgB,YAAa,EAAMf,EAAOD,QAAiB,QAAIC,EAAOD,O,aCTvG,IAAIiB,EAAU,eAWdhB,EAAOD,QAVP,SAAqBS,EAAGD,GACtB,GAAI,UAAYS,EAAQR,KAAOA,EAAG,OAAOA,EACzC,IAAIF,EAAIE,EAAES,OAAOC,aACjB,QAAI,IAAWZ,EAAG,CAChB,IAAIa,EAAIb,EAAEc,KAAKZ,EAAGD,GAAK,WACvB,GAAI,UAAYS,EAAQG,GAAI,OAAOA,EACnC,MAAM,IAAIE,UAAU,+CACtB,CACA,OAAQ,WAAad,EAAIe,OAASC,QAAQf,EAC5C,EAC8BR,EAAOD,QAAQgB,YAAa,EAAMf,EAAOD,QAAiB,QAAIC,EAAOD,O,aCXnG,IAAIiB,EAAU,eACVE,EAAc,EAAQ,KAK1BlB,EAAOD,QAJP,SAAuBS,GACrB,IAAIW,EAAID,EAAYV,EAAG,UACvB,MAAO,UAAYQ,EAAQG,GAAKA,EAAIA,EAAI,EAC1C,EACgCnB,EAAOD,QAAQgB,YAAa,EAAMf,EAAOD,QAAiB,QAAIC,EAAOD,O,SCNrG,SAASiB,EAAQQ,GAGf,OAAOxB,EAAOD,QAAUiB,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOQ,SAAW,SAAUD,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBP,QAAUO,EAAEE,cAAgBT,QAAUO,IAAMP,OAAOU,UAAY,gBAAkBH,CACpH,EAAGxB,EAAOD,QAAQgB,YAAa,EAAMf,EAAOD,QAAiB,QAAIC,EAAOD,QAASiB,EAAQQ,EAC3F,CACAxB,EAAOD,QAAUiB,EAAShB,EAAOD,QAAQgB,YAAa,EAAMf,EAAOD,QAAiB,QAAIC,EAAOD,O,GCR3F6B,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAahC,QAGrB,IAAIC,EAAS4B,EAAyBE,GAAY,CAGjD/B,QAAS,CAAC,GAOX,OAHAkC,EAAoBH,GAAU9B,EAAQA,EAAOD,QAAS8B,GAG/C7B,EAAOD,OACf,CCrBA8B,EAAoBK,EAAKlC,IACxB,IAAImC,EAASnC,GAAUA,EAAOe,WAC7B,IAAOf,EAAiB,QACxB,IAAM,EAEP,OADA6B,EAAoBO,EAAED,EAAQ,CAAEE,EAAGF,IAC5BA,GCLRN,EAAoBO,EAAI,CAACrC,EAASuC,KACjC,IAAI,IAAIC,KAAOD,EACXT,EAAoBL,EAAEc,EAAYC,KAASV,EAAoBL,EAAEzB,EAASwC,IAC5E9B,OAAOC,eAAeX,EAASwC,EAAK,CAAE3B,YAAY,EAAM4B,IAAKF,EAAWC,MCJ3EV,EAAoBL,EAAI,CAACiB,EAAKC,IAAUjC,OAAOkB,UAAUgB,eAAevB,KAAKqB,EAAKC,GCClFb,EAAoBtB,EAAKR,IACH,oBAAXkB,QAA0BA,OAAO2B,aAC1CnC,OAAOC,eAAeX,EAASkB,OAAO2B,YAAa,CAAEjC,MAAO,WAE7DF,OAAOC,eAAeX,EAAS,aAAc,CAAEY,OAAO,K,qLCFhD,SAASkC,EAAQC,GACtB,MAA+C,mBAAxCrC,OAAOkB,UAAUoB,SAAS3B,KAAK0B,EACxC,CAEO,SAASE,EAAOP,GACrB,MAA+C,kBAAxChC,OAAOkB,UAAUoB,SAAS3B,KAAKqB,EACxC,CAEO,SAASQ,EAASR,GACvB,MAAsB,iBAARA,CAChB,CAMO,SAASS,EAAST,GACvB,MAAsB,iBAARA,CAChB,CAcO,SAASU,EAAeV,GAC7B,GAAmB,iBAARA,EACT,MAAO,SAET,GAAmB,kBAARA,EACT,MAAO,UAET,GAAmB,iBAARA,EACT,MAAO,SAET,GAAII,EAAQJ,GACV,MAAO,QAET,GAAIO,EAAOP,GACT,MAAO,OAET,GAnDK,SAAkBA,GACvB,MAA+C,oBAAxChC,OAAOkB,UAAUoB,SAAS3B,KAAKqB,EACxC,CAiDMW,CAASX,GACX,MAAO,SAET,GA3BK,SAAqBA,GAC1B,YAAe,IAARA,CACT,CAyBMY,CAAYZ,GACd,MAAO,YAET,GA1BK,SAAgBA,GACrB,OAAe,OAARA,CACT,CAwBMa,CAAOb,GACT,MAAO,OAMT,OAGF,SAAwBc,GACtB,IAAKL,EAASK,GACZ,OAAOA,EAET,MAAMC,EAAQD,EAAIE,MAAM,EAAG,GAAGC,cACxBC,EAAOJ,EAAIE,MAAM,EAAGF,EAAIK,QAC9B,OAAOJ,EAAQG,CACjB,CAVSE,CAJMpD,OAAOkB,UAAUoB,SAC3B3B,KAAKqB,GACLgB,MAAM,GAAI,GACVK,QAAQ,MAAO,IAEpB,CC/De,SAASC,EAAMtB,GAC5B,GAAW,MAAPA,GAA8B,iBAARA,EACxB,OAAOA,EAGT,IAAIuB,EAAY,KAEhB,GAAIhB,EAAOP,GACTuB,EAAO,IAAIC,KAAKxB,EAAIyB,eACf,CACLF,EAAOvB,EAAIf,cACX,IAAK,MAAMa,KAAOE,EAChBuB,EAAKzB,GAAOwB,EAAMtB,EAAIF,GAE1B,CAEA,OAAOyB,CACT,CCTO,MAAMG,EAMXzC,WAAAA,CAAY0C,EAAcC,EAA0BC,GAAMC,IAAA,oBAAAA,IAAA,iCAAAA,IAAA,4BAAAA,IAAA,4BACxDnE,KAAKoE,aAAe,GACpBpE,KAAKgE,aAAeA,EACpBhE,KAAKkE,KAAOA,EACZlE,KAAKqE,kBAAoBV,EAAMM,EACjC,CAEAK,YAAAA,CAAa/D,GACX,OAAOP,KAAKuE,cACV,IAAMzB,EAASvC,GACf,IACE,WAAWP,KAAKgE,iCAAiCjB,EAC/CxC,QACKP,KAAKgE,2CAElB,CAEAQ,wBAAAA,CAAyBjE,GACvB,OAAOP,KAAKuE,cACV,IAAME,EAAqBlE,GAC3B,IACE,WAAWP,KAAKgE,iCAAiCjB,EAC/CxC,cAEAP,KAAKgE,2DAGb,CAEAU,4BAAAA,CAA6BnE,GAC3B,OAAOP,KAAKuE,cACV,IA8GN,SAAqChE,GACnC,OAAOuC,EAASvC,IAAUsC,EAAStC,IAAUqC,EAAOrC,KF/I5B8B,EE+IgD9B,EF9IlD,kBAAR8B,GADT,IAAmBA,CEgJ1B,CAhHYsC,CAA4BpE,GAClC,IACE,WAAWP,KAAKgE,iCAAiCjB,EAC/CxC,cAEAP,KAAKgE,oEAGb,CAEAY,QAAAA,CAASxB,EAAOyB,GACd,OAAO7E,KAAKuE,cACV,IAAMxB,EAAeK,KAAWL,EAAe8B,GAC/C,IACE,WAAW7E,KAAKgE,kCAAkCjB,EAChDK,YACSL,EACT8B,iDAGR,CAEAC,8BAAAA,CAA+BC,GAC7B,OAAO/E,KAAKuE,cACV,IAAMQ,EAAOC,MAAMP,GACnB,IACE,WAAWzE,KAAKgE,uBAAuBhE,KAAKgE,2DAElD,CAEAiB,cAAAA,CAAeC,GACb,OAAOlF,KAAKuE,cACV,IAAMzB,EAASoC,GACf,IACE,WAAWlF,KAAKgE,6BAA6BjB,EAAemC,QAC1DlF,KAAKgE,uCAGb,CAEAmB,qBAAAA,CAAsB9C,GACpB,OAAOrC,KAAKuE,cACV,IAAMlC,aAAerC,KAAKkE,KAC1B,IACE,WAAWlE,KAAKgE,2BAA2BjB,EAAeV,QACxDrC,KAAKgE,2CAGb,CAEAoB,UAAAA,CAAWC,GACT,OAAOrF,KAAKuE,cACV,IAAsB,IAAhBc,EAAK7B,OACX,IACE,WAAWxD,KAAKgE,uBAAuBhE,KAAKgE,uCAElD,CAEAsB,UAAAA,CAAWD,GACT,OAAOrF,KAAKuE,cACV,IAAsB,IAAhBc,EAAK7B,OACX,IACE,WAAWxD,KAAKgE,uBAAuBhE,KAAKgE,wCAElD,CAEAuB,YAAAA,CAAaF,GACX,OAAOrF,KAAKuE,cACV,IAAsB,IAAhBc,EAAK7B,OACX,IACE,WAAWxD,KAAKgE,uBAAuBhE,KAAKgE,0CAElD,CAEAwB,iBAAAA,CAAkBH,GAChB,OAAOrF,KAAKuE,cACV,IAAMc,EAAK7B,QAAU,EACrB,IACE,WAAWxD,KAAKgE,uBAAuBhE,KAAKgE,iDAElD,CAEAO,aAAAA,CAAckB,EAAaC,GAKzB,OAJA1F,KAAKoE,aAAauB,KAAK,CACrBF,cACAC,cAEK1F,IACT,CAEA4F,oBAAAA,GACE,MAAMC,EAAQ7F,KAAKoE,aAAaY,MAAMc,IAAA,IAAC,YAAEL,EAAW,UAAEC,GAAWI,EAAA,OAC/D9F,KAAK+F,iBAAiBN,IAAeC,OAEvC,MAAO,CAAC1F,KAAKqE,kBAAmBwB,EAClC,CAEAE,gBAAAA,CAAiBF,EAAOG,GACtB,QAAKH,IACH7F,KAAKqE,kBAAkBsB,KAAKK,IACrB,EAGX,EAGF,SAASvB,EAAqBlE,GAC5B,OAAOuC,EAASvC,IAAUsC,EAAStC,IAAUqC,EAAOrC,EACtD,CC3JA,MAAM0F,EAAgB,CAiFtB,SAA2BC,GACzB,MAAMb,EAAOa,EAAKC,KAClB,GAAIC,MAAM3D,QAAQ4C,IAAyB,IAAhBA,EAAK7B,OAC9B,OAAO6B,EAAK,EAEhB,EAEA,SAA2Ba,GACzB,MAAMb,EAAOa,EAAKC,KAClB,GAAIC,MAAM3D,QAAQ4C,IAAyB,IAAhBA,EAAK7B,OAC9B,MAAO,CAAC,EAEV,OAAO,IACT,EAEA,SAAgC0C,GAC9B,MAAMb,EAAOa,EAAKC,KAClB,IAAKd,EACH,OAGF,IAAIgB,EAAsB,GACtBC,EAAyB,GAU7B,GARAjB,EAAKkB,QAASC,KAed,SAAoBN,GAClB,MAAMO,EAAOpG,OAAOoG,KAAKP,GACzB,OAAOO,EAAKzB,MAAO0B,GAASA,EAAKC,WAAW,OAASF,EAAKjD,OAAS,CACrE,CAjBMoD,CAAWJ,GAGbH,EAAe,IAAIA,EAAcG,GAFjCF,EAAkB,IAAIA,EAAiBE,KAMvCH,EAAa7C,QAAU,GAY3B,SAA+BqD,GAC7B,MAAMC,EAAgBD,EACnBE,IAAKC,GAAO3G,OAAOoG,KAAKO,IACxBC,OAAO,CAAChF,EAAGiF,IAAM,IAAIjF,KAAMiF,GAAI,IAElC,OAGF,SAAgBnC,GACd,MAAMoC,EAAO,CAAC,EAEd,OADApC,EAAOwB,QAASa,GAAOD,EAAKC,IAAK,GAC1B/G,OAAOoG,KAAKU,EACrB,CARqBE,CAAOP,GACRtD,SAAWsD,EAActD,MAC7C,CAlBgC8D,CAAsBjB,GACpD,OAIF,MAAO,CAAEF,KAAM,CAFc9F,OAAOkH,OAAO,CAAC,KAAMlB,MAETC,GAoB3C,EAEA,SAA6BJ,GAC3B,MAAMb,EAAOa,EAAKC,KAClB,IAAKd,EACH,OAIF,IADwBA,EAAKmC,KAAMR,GAAOA,EAAGb,MAE3C,OAUF,MAAO,CAAEA,KAPOd,EAAK4B,OAAO,CAACQ,EAAQC,KACnC,MAAMC,EAAMD,EAAQvB,KACpB,OAAKwB,EAGE,IAAIF,KAAWE,GAFb,IAAIF,EAAQC,IAGpB,IAEL,EAEA,SAA4BxB,GAC1B,MAAMb,EAAOa,EAAK0B,IAClB,IAAKvC,EACH,OAIF,IADuBA,EAAKmC,KAAMR,GAAOA,EAAGY,KAE1C,OAUF,MAAO,CAAEA,IAPOvC,EAAK4B,OAAO,CAACQ,EAAQC,KACnC,MAAMG,EAAKH,EAAQE,IACnB,OAAKC,EAGE,IAAIJ,KAAWI,GAFb,IAAIJ,EAAQC,IAGpB,IAEL,GA5KO,SAASI,EAAeC,GAC7B,MAAOC,GAAYC,EAAeF,GAClC,OAAOC,CACT,CAEA,SAASC,EAAeF,GACtB,OAAI3B,MAAM3D,QAAQsF,GAapB,SAA6BA,GAC3B,MAAMG,EAAoBH,EAAMhB,IAAIkB,GAC9BE,EACJ,EAAID,EAAkBE,OAAOtC,IAAA,IAAE,CAAEuC,GAAevC,EAAA,OAAKuC,IAAgB7E,OAEvE,MAAO,CADa0E,EAAkBnB,IAAIuB,IAAA,IAAEC,GAAQD,EAAA,OAAKC,IACpCJ,EACvB,CAlBWK,CAAoBT,GAGV,iBAAVA,GACG,OAAVA,GACuBA,aAmKHlE,KA/Jf,CAACkE,GAAO,GAWjB,SAA8BA,GAC5B,MAAOU,EAA6BC,GAClCC,EAAwBZ,IACnBa,EAA4BC,GAAiBC,EAClDL,GAGF,MAAO,CAACG,EADQF,GAAiBG,GAGjC,SAASC,EAAuBf,GAC9B,MAAMgB,EA2BV,SAAgC7C,GAC9B,IAAK,MAAM8C,KAAgB/C,EAAe,CACxC,MAAMgD,EAAUD,EAAa9C,GAC7B,GAAI+C,EACF,OAAOA,CAEX,CACF,CAlCyBC,CAAuBnB,GAC5C,IAAKgB,EACH,MAAO,CAAChB,GAAO,GAEjB,MAAOoB,GAAclB,EAAec,GACpC,MAAO,CAACI,GAAY,EACtB,CAEA,SAASR,EAAwBZ,GAC/B,MAAMqB,EAAiB/I,OAAOgJ,QAAQtB,GACnChB,IAAIuC,GACJlB,OAAOmB,IAAA,IAAE,CAAC,CAAGC,GAAQD,EAAA,OAAKC,IAG7B,MAAO,CAFU,IAAKzB,KAAU0B,EAAgBL,MAC9BA,EAAe5F,OAEnC,CAEA,SAAS8F,EAAiBI,GAAgB,IAAdvH,EAAK5B,GAAMmJ,EACrC,MAAOC,EAAUH,GAAWvB,EAAe1H,GAC3C,MAAO,CAAC4B,EAAKwH,EAAUH,EACzB,CAEA,SAASC,EAAgBJ,GACvB,OAAOA,EAAQpC,OAAO,CAAC2C,EAAGC,KAAA,IAAG1H,EAAK5B,GAAMsJ,EAAA,MAAM,IAAKD,EAAK,CAACzH,GAAM5B,IAAU,CAAC,EAC5E,CACF,CAhDWuJ,CAAqB/B,EAGhC,CCyRA,SAASgC,IAAgB,IAAD,IAAAC,EAAAC,UAAAzG,OAAN6B,EAAI,IAAAe,MAAA4D,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJ7E,EAAI6E,GAAAD,UAAAC,GACpB,MAAO,CACL/D,KAAMd,EAEV,CAcA,SAAS8E,EAAWjE,GAClB,OAAOA,GAAQA,EAAKC,MAA6B,IAArBD,EAAKC,KAAK3C,MACxC,CAEA,QAlUoB,SAAC4G,GAAoB,YAAX,IAATA,IAAAA,EAAY,SAC/B,cAAcA,EAKZ9I,WAAAA,CAAYe,QAAiD,IAAjDA,IAAAA,EAAoD,CAAC,GAC/DgI,MAAMhI,GAAI8B,IAAA,0BAAAA,IAAA,gCAAAA,IAAA,uBACVnE,KAAKsK,WAAajI,EAAIiI,YAAc,CAAEnE,KAAM,IAC5CnG,KAAKuK,iBAAmBlI,EAAIkI,kBAAoB,GAChDvK,KAAKwK,QAAUnI,EAAImI,SAAW,CAAC,CACjC,CAEAC,EAAAA,GAAa,IAAD,IAAAC,EAAAT,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAsE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtF,EAAIsF,GAAAV,UAAAU,GACR,OAAO3K,KAAK4K,WAAW,MAAO,MAAOvF,EACvC,CAEAwF,EAAAA,GAAa,IAAD,IAAAC,EAAAb,UAAAzG,OAAN6B,EAAI,IAAAe,MAAA0E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ1F,EAAI0F,GAAAd,UAAAc,GACR,OAAO/K,KAAK4K,WAAW,MAAO,MAAOvF,EACvC,CAEA2F,EAAAA,GAAa,IAAD,IAAAC,EAAAhB,UAAAzG,OAAN6B,EAAI,IAAAe,MAAA6E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ7F,EAAI6F,GAAAjB,UAAAiB,GACR,OAAOlL,KAAKmL,uBAAuB,OAAQ,MAAO9F,EACpD,CAEA+F,EAAAA,GAAa,IAAD,IAAAC,EAAApB,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAiF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjG,EAAIiG,GAAArB,UAAAqB,GACR,OAAOtL,KAAKmL,uBAAuB,MAAO,MAAO9F,EACnD,CAEAkG,EAAAA,GAAa,IAAD,IAAAC,EAAAvB,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAoF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJpG,EAAIoG,GAAAxB,UAAAwB,GACR,OAAOzL,KAAKmL,uBAAuB,OAAQ,MAAO9F,EACpD,CAEAqG,EAAAA,GAAa,IAAD,IAAAC,EAAA1B,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAuF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvG,EAAIuG,GAAA3B,UAAA2B,GACR,OAAO5L,KAAKmL,uBAAuB,MAAO,MAAO9F,EACnD,CAEAwG,UAAAA,CAAW3G,GACT,MAAO4G,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,eACxD3G,WAAW6E,WACXhF,eAAeC,GACfU,uBAEH,OAAIC,EACK7F,KAAK6K,GAAG3F,EAAO,MAGjBlF,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EACrC,CAEAG,OAAAA,CAAQ/G,GACN,MAAO4G,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,YACxD3G,WAAW6E,WACXhF,eAAeC,GACfU,uBAEH,OAAIC,EACK7F,KAAKyK,GAAGvF,EAAO,MAGjBlF,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EACrC,CAEAnF,UAAAA,GAAqB,IAAD,IAAAuF,EAAAjC,UAAAzG,OAAN6B,EAAI,IAAAe,MAAA8F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9G,EAAI8G,GAAAlC,UAAAkC,GAChB,OAAOnM,KAAKoM,kBAAkB,cAAe,cAAe/G,EAC9D,CAEAgH,QAAAA,GAAmB,IAAD,IAAAC,EAAArC,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAkG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlH,EAAIkH,GAAAtC,UAAAsC,GACd,OAAOvM,KAAKoM,kBAAkB,YAAa,YAAa/G,EAC1D,CAEAmH,QAAAA,GAAmB,IAAD,IAAAC,EAAAxC,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAqG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJrH,EAAIqH,GAAAzC,UAAAyC,GACd,OAAO1M,KAAKoM,kBAAkB,YAAa,YAAa/G,EAC1D,CAEAsH,OAAAA,GAAkB,IAAD,IAAAC,EAAA3C,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAwG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxH,EAAIwH,GAAA5C,UAAA4C,GACb,OAAO7M,KAAK8M,eAAe,WAAY,WAAYzH,EACrD,CAEA0H,MAAAA,GAAiB,IAAD,IAAAC,EAAA/C,UAAAzG,OAAN6B,EAAI,IAAAe,MAAA4G,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5H,EAAI4H,GAAAhD,UAAAgD,GACZ,OAAOjN,KAAK8M,eAAe,UAAW,UAAWzH,EACnD,CAEAwC,EAAAA,CAAGqF,GACD,MAAOpB,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,OACxD3G,WAAW6E,WACX9E,sBAAsB+H,GACtBtH,uBAEH,GAAIC,EAAO,CACT,MAAMsH,EAAShD,EAAWnK,KAAKsK,YAAc,GAAK,CAACtK,KAAKsK,YACxD,OAAOtK,KAAKgM,MACVjC,EAAM,CAAEnC,IAAK,IAAIuF,EAAQD,EAAQ5C,cACjCwB,EAAoBsB,OAAOF,EAAQ3C,kBAEvC,CACE,OAAOvK,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EAEvC,CAEAnE,GAAAA,CAAI0F,GACF,MAAOvB,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,QACxD3G,WAAW6E,WACX9E,sBAAsBkI,GACtBzH,uBAEH,GAAIC,EAAO,CACT,MAAMsH,EAAShD,EAAWnK,KAAKsK,YAAc,GAAK,CAACtK,KAAKsK,YACxD,OAAOtK,KAAKgM,MACVjC,KAASoD,EAAQE,EAAS/C,YAC1BwB,EAAoBsB,OAAOC,EAAS9C,kBAExC,CACE,OAAOvK,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EAEvC,CAEAwB,GAAAA,CAAIC,GACF,MAAOzB,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,QACxD3G,WAAW6E,WACX9E,sBAAsBoI,GACtB3H,uBAEH,GAAIC,EAAO,CACT,MAEM2H,EAoLd,WAAkC,IAAD,IAAAC,EAAAxD,UAAAzG,OAAN6B,EAAI,IAAAe,MAAAqH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJrI,EAAIqI,GAAAzD,UAAAyD,GAC7B,MAAO,CACLvH,KAAMd,EAAK4B,OACT,CAAC0G,EAAMC,IAhBJnL,EAiBuBmL,EAjBJzH,MAkBhBwH,EAAKP,OAAOQ,EAAIzH,MAChBwH,EAAKP,OAAO,CAACQ,IACnB,IAGN,CA9LgCC,CAFFlK,EAAM3D,KAAKsK,YACf,CAAEwD,KAAM,CAACP,EAASjD,cAGpC,OAAOtK,KAAKgM,MACVwB,EACA1B,EAAoBsB,OAAOG,EAAShD,kBAExC,CACE,OAAOvK,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EAEvC,CAEAiC,OAAAA,CAAQ7I,EAAO8I,EAAYC,GACzB,MAAOnC,EAAqBjG,GAAS7F,KAAK+L,iBAAiB,YACxDxG,aAAa0E,WACbrF,SAASoJ,EAAYC,GACrBzJ,yBAAyBwJ,GACzBxJ,yBAAyByJ,GACzBrI,uBAEH,OAAIC,EACK7F,KAAKgL,GAAG9F,EAAO8I,GAAYtC,GAAGxG,EAAO+I,GAGvCjO,KAAKgM,MAAMhM,KAAKsK,WAAYwB,EACrC,CAEAoC,cAAAA,GACE,GAAIlO,KAAKuK,iBAAiB/G,OAAS,EACjC,MAAM,IAAI2K,MAAMnO,KAAKuK,iBAAiB6D,KAAK,MAE7C,OAAOtG,EAAe9H,KAAKsK,WAC7B,CAEA+D,cAAAA,CAAeC,GACb,OAAOtO,KAAKgM,MAAMsC,EAAa,GACjC,CAEA1D,UAAAA,CAAW2D,EAAsBvK,EAAcqB,GAC7C,MAAOH,EAAOsJ,GAAWpI,MAAM7E,UAAU8B,MAAMrC,KAAKqE,IAE7CyG,GAAuB9L,KAAK+L,iBAAiB/H,GACjDsB,WAAWD,GACXJ,eAAeC,GACfU,uBAEG6I,EAAgBzO,KAAK0O,eACzBxJ,EACAqJ,EACAC,GAGF,OAAOxO,KAAKgM,MAAMyC,EAAe3C,EACnC,CAEAX,sBAAAA,CAAuBoD,EAAsBvK,EAAcqB,GACzD,MAAOH,EAAOsJ,GAAWpI,MAAM7E,UAAU8B,MAAMrC,KAAKqE,IAE7CyG,GAAuB9L,KAAK+L,iBAAiB/H,GACjDsB,WAAWD,GACXJ,eAAeC,GACfR,6BAA6B8J,GAC7B5I,uBAEG6I,EAAgBzO,KAAK0O,eACzBxJ,EACAqJ,EACAC,GAEF,OAAOxO,KAAKgM,MAAMyC,EAAe3C,EACnC,CAEAM,iBAAAA,CAAkBuC,EAAoB3K,EAAcqB,GAClD,MAAOH,EAAOsJ,GAAWpI,MAAM7E,UAAU8B,MAAMrC,KAAKqE,IAE7CyG,GAAuB9L,KAAK+L,iBAAiB/H,GACjDsB,WAAWD,GACXJ,eAAeC,GACfZ,aAAakK,GACb5I,uBAEG6I,EAAgBzO,KAAK0O,eACzBxJ,EACAyJ,EACAH,GAGF,OAAOxO,KAAKgM,MAAMyC,EAAe3C,EACnC,CAEAgB,cAAAA,CAAe6B,EAAoB3K,EAAcqB,GAC/C,MAAOH,KAAU0J,GAAexI,MAAM7E,UAAU8B,MAAMrC,KAAKqE,GACrDwJ,EAAWpM,EAAQmM,EAAY,IAAMA,EAAY,GAAKA,GAErD9C,GAAuB9L,KAAK+L,iBAAiB/H,GACjDwB,kBAAkBH,GAClBJ,eAAeC,GACfJ,+BAA+B+J,GAC/BjJ,uBAEG6I,EAAgBzO,KAAK0O,eACzBxJ,EACAyJ,EACAE,GAEF,OAAO7O,KAAKgM,MAAMyC,EAAe3C,EACnC,CAEA4C,cAAAA,CAAexJ,EAAOyJ,EAAoBH,GACxC,MAAMC,EAAgB9K,EAAM3D,KAAKsK,YAK3BwE,OAAkClN,IAAZ4M,EAAwB,KAAOA,EACrDO,EAAY/O,KAAKgP,aACrB9J,EACAyJ,EACAG,GAGF,GAAIrM,EAAQgM,EAActI,MAExB,OADAsI,EAActI,KAAKR,KAAKoJ,GACjBN,EAKP,OA2CepM,EA9CcoM,EA+CA,IAA5BpO,OAAOoG,KAAKpE,GAAKmB,OA9CduG,EAAMgF,GACNhF,EAAM0E,EAAeM,GA4CjC,IAAuB1M,CAzCnB,CAEA2M,YAAAA,CAAa9J,EAAOyJ,EAAoBH,GACtC,GAA2B,QAAvBG,EAA8B,CAChC,MAAMI,EAAY,CAAC,EAGnB,OAFAA,EAAU7J,GAAS,CAAC,EACpB6J,EAAU7J,GAAOyJ,GAAsB3O,KAAKiP,QAAQT,GAC7CO,CACT,CAAO,CACL,MAAMA,EAAY,CAAC,EAEnB,OADAA,EAAU7J,GAASlF,KAAKiP,QAAQT,GACzBO,CACT,CACF,CAEAE,OAAAA,CAAQT,GACN,MJ7PkB,mBI6PHxO,KAAKwK,QACXxK,KAAKwK,QAAQgE,GAEbA,CAEX,CAEAxC,KAAAA,CAAM1B,EAAYC,GAEhB,OAAO,IAAIvK,KAAKsB,YAAY,IAAKtB,KAAMsK,aAAYC,oBACrD,CAEAwB,gBAAAA,CAAiB4C,GACf,OAAO,IAAI5K,EACT4K,EACA3O,KAAKuK,iBACLvK,KAAKsB,YAET,EACD,ECtSI,MAAM4N,UAAsBC,KACjC,mBAAIC,GACF,MAAO,eACT,CAEAC,MAAAA,GACE,OAAOrP,KAAKkO,gBACd,EAGK,SAASoB,EAAcC,GAC5B,YADkC,IAANA,IAAAA,EAAS,CAAC,GAC/B,IAAIL,EAAcK,EAC3B,CCZO,SAASC,EAAehB,GAC7B,OAAI5L,EAAO4L,GACF,CAAEiB,MAAOjB,EAAQkB,UAEjBlB,CAEX,CCAA,S","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/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 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};","export function isObject(obj: any): obj is Record<keyof any, any> {\n return Object.prototype.toString.call(obj) === '[object Object]'\n}\nexport function isArray(arr: any): arr is any[] {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexport function isDate(obj: any) {\n return Object.prototype.toString.call(obj) === '[object Date]'\n}\n\nexport function isNumber(obj: any) {\n return typeof obj === 'number'\n}\n\nexport function isBoolean(obj: any) {\n return typeof obj === 'boolean'\n}\n\nexport function isString(obj: any) {\n return typeof obj === 'string'\n}\n\nexport function isFunction(obj: any) {\n return typeof obj === 'function'\n}\n\nexport function isUndefined(obj: any) {\n return obj === void 0\n}\n\nexport function isNull(obj: any) {\n return obj === null\n}\n\nexport function typeForDisplay(obj: any) {\n if (typeof obj === 'number') {\n return 'Number'\n }\n if (typeof obj === 'boolean') {\n return 'Boolean'\n }\n if (typeof obj === 'string') {\n return 'String'\n }\n if (isArray(obj)) {\n return 'Array'\n }\n if (isDate(obj)) {\n return 'Date'\n }\n if (isObject(obj)) {\n return 'Object'\n }\n if (isUndefined(obj)) {\n return 'Undefined'\n }\n if (isNull(obj)) {\n return 'Null'\n }\n const type = Object.prototype.toString\n .call(obj)\n .slice(8, -1)\n .replace(/\\s/g, '')\n return upperCaseFirst(type)\n}\n\nfunction upperCaseFirst(str: any) {\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//\n","import {\n typeForDisplay,\n isDate,\n isString,\n isNumber,\n isBoolean,\n} 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 typeIsStringNumberBoolOrDate(value) {\n return this.addValidation(\n () => isDateStringNumberOrBoolean(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number, Boolean 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\nfunction isDateStringNumberOrBoolean(value) {\n return isString(value) || isNumber(value) || isDate(value) || isBoolean(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 .typeIsStringNumberBoolOrDate(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":["root","factory","exports","module","define","amd","self","this","toPropertyKey","e","r","t","Object","defineProperty","value","enumerable","configurable","writable","__esModule","_typeof","Symbol","toPrimitive","i","call","TypeError","String","Number","o","iterator","constructor","prototype","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","d","a","definition","key","get","obj","prop","hasOwnProperty","toStringTag","isArray","arr","toString","isDate","isNumber","isString","typeForDisplay","isObject","isUndefined","isNull","str","first","slice","toUpperCase","rest","length","upperCaseFirst","replace","clone","temp","Date","getTime","FilterValidator","operatorName","previousInvalidArguments","ctor","_defineProperty","_validations","_invalidArguments","typeIsString","addValidation","typeIsStringNumberOrDate","isDateStringOrNumber","typeIsStringNumberBoolOrDate","isDateStringNumberOrBoolean","sameType","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","arityIsOne","args","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_ref","_appendIfInvalid","message","optimisations","node","$and","Array","basicObjects","operatorObjects","forEach","arg","keys","name","startsWith","isOperator","objects","nonUniqueKeys","map","it","reduce","b","dict","v","unique","haveOverlappingFields","assign","find","result","current","and","$or","or","optimisedQuery","query","newQuery","fullyOptimised","optimisedElements","somethingChanged","filter","elementChanged","_ref2","element","fullyOptimisedArray","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","updatedQuery","optimisation","newNode","applyFirstOptimisation","finalQuery","changedEntries","entries","entryOptimisation","_ref3","changed","entriesAsObject","_ref4","newValue","acc","_ref5","fullyOptimisedObject","inAnd","_len10","arguments","_key10","isEmptyAnd","Base","super","filterTree","invalidArguments","encoder","eq","_len","_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","concat","andQuery","not","notQuery","resultingFilter","_len11","_key11","aggr","val","inAndOptimized","$not","between","rangeStart","rangeEnd","getFilterModel","Error","join","setFilterModel","filterModel","filterOperatorSymbol","operand","newFilterTree","_makeNewFilter","filterOperatorName","rawOperands","operands","serializableOperand","newFilter","_buildFilter","_encode","FilterBuilder","filterMixin","constructorName","_build","filterBuilder","params","wixDataEncoder","$date","toJSON"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
1
  {
2
- "filter-builder.js": "https://static.parastorage.com/services/filter-builder/4fdba68a4dc8db51e4fcdad9a057d82a9f404a801aa0ee362c173eee/filter-builder.umd.js"
2
+ "filter-builder.js": "https://static.parastorage.com/services/filter-builder/fab6a7fee7fec5ad9d48d1129c37ee41a4fce17635138030c8a400cd/filter-builder.umd.js"
3
3
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "filter-builder.js": "https://static.parastorage.com/services/filter-builder/4fdba68a4dc8db51e4fcdad9a057d82a9f404a801aa0ee362c173eee/filter-builder.umd.min.js"
2
+ "filter-builder.js": "https://static.parastorage.com/services/filter-builder/fab6a7fee7fec5ad9d48d1129c37ee41a4fce17635138030c8a400cd/filter-builder.umd.min.js"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/filter-builder",
3
- "version": "1.0.241",
3
+ "version": "1.0.243",
4
4
  "license": "UNLICENSED",
5
5
  "author": {
6
6
  "name": "Justinas Simanavicius",
@@ -38,9 +38,9 @@
38
38
  "devDependencies": {
39
39
  "@types/jest": "^29.5.14",
40
40
  "@types/node": "^14.18.63",
41
- "@wix/eslint-config-yoshi": "^6.163.0",
42
- "@wix/jest-yoshi-preset": "^6.163.0",
43
- "@wix/yoshi-flow-library": "^6.163.0",
41
+ "@wix/eslint-config-yoshi": "^6.189.0",
42
+ "@wix/jest-yoshi-preset": "^6.189.0",
43
+ "@wix/yoshi-flow-library": "^6.189.0",
44
44
  "chai": "~3.5.0",
45
45
  "express": "^4.21.2",
46
46
  "husky": "~4.3.8",
@@ -88,5 +88,5 @@
88
88
  "wallaby": {
89
89
  "autoDetect": true
90
90
  },
91
- "falconPackageHash": "ff008ea967bb3aaa8a66eca51d48224d478825e07e551c6f845b42f1"
91
+ "falconPackageHash": "57b6a8508a39ef26d10cdb4e0bc38babcd6c28420b68d3f6cc65c5f4"
92
92
  }