@wix/filter-builder 1.0.16 → 1.0.18

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.
@@ -3,117 +3,92 @@
3
3
  exports.__esModule = true;
4
4
  exports.optimisedQuery = optimisedQuery;
5
5
  const optimisations = [optimisedUnaryAnd, optimisedEmptyAnd, optimisedAndsAsObjects, optimisedNestedAnds, optimisedNestedOrs];
6
-
7
6
  function optimisedQuery(query) {
8
7
  const _fullyOptimised = fullyOptimised(query),
9
- newQuery = _fullyOptimised[0];
10
-
8
+ newQuery = _fullyOptimised[0];
11
9
  return newQuery;
12
10
  }
13
-
14
11
  function fullyOptimised(query) {
15
12
  if (Array.isArray(query)) {
16
13
  return fullyOptimisedArray(query);
17
14
  }
18
-
19
15
  if (typeof query === 'object' && query !== null && !instanceOfIgnoredType(query)) {
20
16
  return fullyOptimisedObject(query);
21
17
  }
22
-
23
18
  return [query, false];
24
19
  }
25
-
26
20
  function fullyOptimisedArray(query) {
27
21
  const optimisedElements = query.map(fullyOptimised);
28
22
  const somethingChanged = 0 < optimisedElements.filter(([, elementChanged]) => elementChanged).length;
29
23
  const newElements = optimisedElements.map(([element]) => element);
30
24
  return [newElements, somethingChanged];
31
25
  }
32
-
33
26
  function fullyOptimisedObject(query) {
34
27
  const _fullEntriesOptimisat = fullEntriesOptimisation(query),
35
- queryAfterOptimisingEntries = _fullEntriesOptimisat[0],
36
- changedStage1 = _fullEntriesOptimisat[1];
37
-
28
+ queryAfterOptimisingEntries = _fullEntriesOptimisat[0],
29
+ changedStage1 = _fullEntriesOptimisat[1];
38
30
  const _fullObjectOptimisati = fullObjectOptimisation(queryAfterOptimisingEntries),
39
- queryAfterFullOptimisation = _fullObjectOptimisati[0],
40
- changedStage2 = _fullObjectOptimisati[1];
41
-
31
+ queryAfterFullOptimisation = _fullObjectOptimisati[0],
32
+ changedStage2 = _fullObjectOptimisati[1];
42
33
  const changed = changedStage1 || changedStage2;
43
34
  return [queryAfterFullOptimisation, changed];
44
-
45
35
  function fullObjectOptimisation(query) {
46
36
  const updatedQuery = applyFirstOptimisation(query);
47
-
48
37
  if (!updatedQuery) {
49
38
  return [query, false];
50
39
  }
51
-
52
40
  const _fullyOptimised2 = fullyOptimised(updatedQuery),
53
- finalQuery = _fullyOptimised2[0];
54
-
41
+ finalQuery = _fullyOptimised2[0];
55
42
  return [finalQuery, true];
56
43
  }
57
-
58
44
  function fullEntriesOptimisation(query) {
59
45
  const changedEntries = Object.entries(query).map(entryOptimisation).filter(([,, changed]) => changed);
60
- const newQuery = { ...query,
46
+ const newQuery = {
47
+ ...query,
61
48
  ...entriesAsObject(changedEntries)
62
49
  };
63
50
  const changed = !!changedEntries.length;
64
51
  return [newQuery, changed];
65
52
  }
66
-
67
53
  function entryOptimisation([key, value]) {
68
54
  const _fullyOptimised3 = fullyOptimised(value),
69
- newValue = _fullyOptimised3[0],
70
- changed = _fullyOptimised3[1];
71
-
55
+ newValue = _fullyOptimised3[0],
56
+ changed = _fullyOptimised3[1];
72
57
  return [key, newValue, changed];
73
58
  }
74
-
75
59
  function entriesAsObject(entries) {
76
- return entries.reduce((acc, [key, value]) => ({ ...acc,
60
+ return entries.reduce((acc, [key, value]) => ({
61
+ ...acc,
77
62
  [key]: value
78
63
  }), {});
79
64
  }
80
65
  }
81
-
82
66
  function applyFirstOptimisation(node) {
83
67
  for (const optimisation of optimisations) {
84
68
  const newNode = optimisation(node);
85
-
86
69
  if (newNode) {
87
70
  return newNode;
88
71
  }
89
72
  }
90
73
  }
91
-
92
74
  function optimisedUnaryAnd(node) {
93
75
  const args = node.$and;
94
-
95
76
  if (Array.isArray(args) && args.length === 1) {
96
77
  return args[0];
97
78
  }
98
79
  }
99
-
100
80
  function optimisedEmptyAnd(node) {
101
81
  const args = node.$and;
102
-
103
82
  if (Array.isArray(args) && args.length === 0) {
104
83
  return {};
105
84
  }
106
-
107
85
  return null;
108
86
  }
109
-
110
87
  function optimisedAndsAsObjects(node) {
111
88
  const args = node.$and;
112
-
113
89
  if (!args) {
114
90
  return;
115
91
  }
116
-
117
92
  let basicObjects = [];
118
93
  let operatorObjects = [];
119
94
  args.forEach(arg => {
@@ -123,88 +98,68 @@ function optimisedAndsAsObjects(node) {
123
98
  basicObjects = [...basicObjects, arg];
124
99
  }
125
100
  });
126
-
127
101
  if (basicObjects.length <= 1 || haveOverlappingFields(basicObjects)) {
128
102
  return;
129
103
  }
130
-
131
104
  const combinedBasicObjects = Object.assign({}, ...basicObjects);
132
105
  return {
133
106
  $and: [combinedBasicObjects, ...operatorObjects]
134
107
  };
135
-
136
108
  function isOperator(node) {
137
109
  const keys = Object.keys(node);
138
110
  return keys.every(name => name.startsWith('$')) && keys.length > 0;
139
111
  }
140
-
141
112
  function haveOverlappingFields(objects) {
142
113
  const nonUniqueKeys = objects.map(it => Object.keys(it)).reduce((a, b) => [...a, ...b], []);
143
114
  const uniqueKeys = unique(nonUniqueKeys);
144
115
  return uniqueKeys.length !== nonUniqueKeys.length;
145
116
  }
146
-
147
117
  function unique(values) {
148
118
  const dict = {};
149
119
  values.forEach(v => dict[v] = true);
150
120
  return Object.keys(dict);
151
121
  }
152
122
  }
153
-
154
123
  function optimisedNestedAnds(node) {
155
124
  const args = node.$and;
156
-
157
125
  if (!args) {
158
126
  return;
159
127
  }
160
-
161
128
  const hasNestedAnds = !!args.find(it => it.$and);
162
-
163
129
  if (!hasNestedAnds) {
164
130
  return;
165
131
  }
166
-
167
132
  const newArgs = args.reduce((result, current) => {
168
133
  const and = current.$and;
169
-
170
134
  if (!and) {
171
135
  return [...result, current];
172
136
  }
173
-
174
137
  return [...result, ...and];
175
138
  }, []);
176
139
  return {
177
140
  $and: newArgs
178
141
  };
179
142
  }
180
-
181
143
  function optimisedNestedOrs(node) {
182
144
  const args = node.$or;
183
-
184
145
  if (!args) {
185
146
  return;
186
147
  }
187
-
188
148
  const hasNestedOrs = !!args.find(it => it.$or);
189
-
190
149
  if (!hasNestedOrs) {
191
150
  return;
192
151
  }
193
-
194
152
  const newArgs = args.reduce((result, current) => {
195
153
  const or = current.$or;
196
-
197
154
  if (!or) {
198
155
  return [...result, current];
199
156
  }
200
-
201
157
  return [...result, ...or];
202
158
  }, []);
203
159
  return {
204
160
  $or: newArgs
205
161
  };
206
162
  }
207
-
208
163
  function instanceOfIgnoredType(obj) {
209
164
  return obj instanceof Date;
210
165
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-optimiser.ts"],"names":["optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","fullyOptimised","newQuery","Array","isArray","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","length","newElements","element","fullEntriesOptimisation","queryAfterOptimisingEntries","changedStage1","fullObjectOptimisation","queryAfterFullOptimisation","changedStage2","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","key","value","newValue","reduce","acc","node","optimisation","newNode","args","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","every","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","values","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","obj","Date"],"mappings":"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","sourcesContent":["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"]}
1
+ {"version":3,"names":["optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","_fullyOptimised","fullyOptimised","newQuery","Array","isArray","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","length","newElements","element","_fullEntriesOptimisat","fullEntriesOptimisation","queryAfterOptimisingEntries","changedStage1","_fullObjectOptimisati","fullObjectOptimisation","queryAfterFullOptimisation","changedStage2","changed","updatedQuery","applyFirstOptimisation","_fullyOptimised2","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","key","value","_fullyOptimised3","newValue","reduce","acc","node","optimisation","newNode","args","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","every","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","values","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","obj","Date"],"sources":["../../src/query-optimiser.ts"],"sourcesContent":["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"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  exports.__esModule = true;
6
5
  exports.isArray = isArray;
7
6
  exports.isBoolean = isBoolean;
@@ -13,54 +12,41 @@ exports.isObject = isObject;
13
12
  exports.isString = isString;
14
13
  exports.isUndefined = isUndefined;
15
14
  exports.typeForDisplay = typeForDisplay;
16
-
17
15
  var _kindOf = _interopRequireDefault(require("kind-of"));
18
-
19
16
  function isObject(obj) {
20
17
  return (0, _kindOf.default)(obj) === 'object';
21
18
  }
22
-
23
19
  function isArray(arr) {
24
20
  return (0, _kindOf.default)(arr) === 'array';
25
21
  }
26
-
27
22
  function isDate(obj) {
28
23
  return (0, _kindOf.default)(obj) === 'date';
29
24
  }
30
-
31
25
  function isNumber(obj) {
32
26
  return (0, _kindOf.default)(obj) === 'number';
33
27
  }
34
-
35
28
  function isBoolean(obj) {
36
29
  return (0, _kindOf.default)(obj) === 'boolean';
37
30
  }
38
-
39
31
  function isString(obj) {
40
32
  return (0, _kindOf.default)(obj) === 'string';
41
33
  }
42
-
43
34
  function isFunction(obj) {
44
35
  return (0, _kindOf.default)(obj) === 'function';
45
36
  }
46
-
47
37
  function typeForDisplay(obj) {
48
38
  return upperCaseFirst((0, _kindOf.default)(obj));
49
39
  }
50
-
51
40
  function isUndefined(obj) {
52
41
  return (0, _kindOf.default)(obj) === 'undefined';
53
42
  }
54
-
55
43
  function isNull(obj) {
56
44
  return (0, _kindOf.default)(obj) === 'null';
57
45
  }
58
-
59
46
  function upperCaseFirst(str) {
60
47
  if (!isString(str)) {
61
48
  return str;
62
49
  }
63
-
64
50
  const first = str.slice(0, 1).toUpperCase();
65
51
  const rest = str.slice(1, str.length);
66
52
  return first + rest;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/type-utils.ts"],"names":["isObject","obj","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AAEO,SAASA,QAAT,CAAkBC,GAAlB,EAAuB;AAC5B,SAAO,qBAAQA,GAAR,MAAiB,QAAxB;AACD;;AAEM,SAASC,OAAT,CAAiBC,GAAjB,EAAsB;AAC3B,SAAO,qBAAQA,GAAR,MAAiB,OAAxB;AACD;;AAEM,SAASC,MAAT,CAAgBH,GAAhB,EAAqB;AAC1B,SAAO,qBAAQA,GAAR,MAAiB,MAAxB;AACD;;AAEM,SAASI,QAAT,CAAkBJ,GAAlB,EAAuB;AAC5B,SAAO,qBAAQA,GAAR,MAAiB,QAAxB;AACD;;AAEM,SAASK,SAAT,CAAmBL,GAAnB,EAAwB;AAC7B,SAAO,qBAAQA,GAAR,MAAiB,SAAxB;AACD;;AAEM,SAASM,QAAT,CAAkBN,GAAlB,EAAuB;AAC5B,SAAO,qBAAQA,GAAR,MAAiB,QAAxB;AACD;;AAEM,SAASO,UAAT,CAAoBP,GAApB,EAAyB;AAC9B,SAAO,qBAAQA,GAAR,MAAiB,UAAxB;AACD;;AAEM,SAASQ,cAAT,CAAwBR,GAAxB,EAA6B;AAClC,SAAOS,cAAc,CAAC,qBAAQT,GAAR,CAAD,CAArB;AACD;;AAEM,SAASU,WAAT,CAAqBV,GAArB,EAA0B;AAC/B,SAAO,qBAAQA,GAAR,MAAiB,WAAxB;AACD;;AAEM,SAASW,MAAT,CAAgBX,GAAhB,EAAqB;AAC1B,SAAO,qBAAQA,GAAR,MAAiB,MAAxB;AACD;;AAED,SAASS,cAAT,CAAwBG,GAAxB,EAA6B;AAC3B,MAAI,CAACN,QAAQ,CAACM,GAAD,CAAb,EAAoB;AAClB,WAAOA,GAAP;AACD;;AACD,QAAMC,KAAK,GAAGD,GAAG,CAACE,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgBC,WAAhB,EAAd;AACA,QAAMC,IAAI,GAAGJ,GAAG,CAACE,KAAJ,CAAU,CAAV,EAAaF,GAAG,CAACK,MAAjB,CAAb;AACA,SAAOJ,KAAK,GAAGG,IAAf;AACD","sourcesContent":["import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n"]}
1
+ {"version":3,"names":["_kindOf","_interopRequireDefault","require","isObject","obj","getKind","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length"],"sources":["../../src/type-utils.ts"],"sourcesContent":["import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,SAASC,QAAQA,CAACC,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASE,OAAOA,CAACC,GAAG,EAAE;EAC3B,OAAO,IAAAF,eAAO,EAACE,GAAG,CAAC,KAAK,OAAO;AACjC;AAEO,SAASC,MAAMA,CAACJ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEO,SAASK,QAAQA,CAACL,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASM,SAASA,CAACN,GAAG,EAAE;EAC7B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,SAAS;AACnC;AAEO,SAASO,QAAQA,CAACP,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASQ,UAAUA,CAACR,GAAG,EAAE;EAC9B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,UAAU;AACpC;AAEO,SAASS,cAAcA,CAACT,GAAG,EAAE;EAClC,OAAOU,cAAc,CAAC,IAAAT,eAAO,EAACD,GAAG,CAAC,CAAC;AACrC;AAEO,SAASW,WAAWA,CAACX,GAAG,EAAE;EAC/B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,WAAW;AACrC;AAEO,SAASY,MAAMA,CAACZ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEA,SAASU,cAAcA,CAACG,GAAG,EAAE;EAC3B,IAAI,CAACN,QAAQ,CAACM,GAAG,CAAC,EAAE;IAClB,OAAOA,GAAG;EACZ;EACA,MAAMC,KAAK,GAAGD,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,EAAE;EAC3C,MAAMC,IAAI,GAAGJ,GAAG,CAACE,KAAK,CAAC,CAAC,EAAEF,GAAG,CAACK,MAAM,CAAC;EACrC,OAAOJ,KAAK,GAAGG,IAAI;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
1
+ {"version":3,"names":[],"sources":["../../src/validator.ts"],"sourcesContent":["export interface Validator {\n typeIsString(value): Validator\n typeIsStringNumberOrDate(value): Validator\n sameType(first, second): Validator\n typeIsStringNumberOrDateForAll(values): Validator\n validFieldName(field): Validator\n isInstanceOfSameClass(obj): Validator\n arityIsOne(args): Validator\n arityIsTwo(args): Validator\n arityIsThree(args): Validator\n arityIsAtLeastTwo(args): Validator\n validateAndAggregate(): [string[], boolean]\n}\n"],"mappings":""}
@@ -2,9 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.wixDataEncoder = wixDataEncoder;
5
-
6
5
  var _typeUtils = require("./type-utils");
7
-
8
6
  function wixDataEncoder(operand) {
9
7
  if ((0, _typeUtils.isDate)(operand)) {
10
8
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/wix-data-encoder.ts"],"names":["wixDataEncoder","operand","$date","toJSON"],"mappings":";;;;;AAAA;;AAEO,SAASA,cAAT,CAAwBC,OAAxB,EAAiC;AACtC,MAAI,uBAAOA,OAAP,CAAJ,EAAqB;AACnB,WAAO;AAAEC,MAAAA,KAAK,EAAED,OAAO,CAACE,MAAR;AAAT,KAAP;AACD,GAFD,MAEO;AACL,WAAOF,OAAP;AACD;AACF","sourcesContent":["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"]}
1
+ {"version":3,"names":["_typeUtils","require","wixDataEncoder","operand","isDate","$date","toJSON"],"sources":["../../src/wix-data-encoder.ts"],"sourcesContent":["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"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,cAAcA,CAACC,OAAO,EAAE;EACtC,IAAI,IAAAC,iBAAM,EAACD,OAAO,CAAC,EAAE;IACnB,OAAO;MAAEE,KAAK,EAAEF,OAAO,CAACG,MAAM;IAAG,CAAC;EACpC,CAAC,MAAM;IACL,OAAOH,OAAO;EAChB;AACF"}