@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.
- package/dist/cjs/__tests__/filter.spec.js +16 -22
- package/dist/cjs/__tests__/filter.spec.js.map +1 -1
- package/dist/cjs/__tests__/query-optimizer.spec.js +0 -4
- package/dist/cjs/__tests__/query-optimizer.spec.js.map +1 -1
- package/dist/cjs/clone.js +0 -6
- package/dist/cjs/clone.js.map +1 -1
- package/dist/cjs/filter-builder.js +0 -8
- package/dist/cjs/filter-builder.js.map +1 -1
- package/dist/cjs/filter-mixin.js +29 -94
- package/dist/cjs/filter-mixin.js.map +1 -1
- package/dist/cjs/filter-validator.js +0 -25
- package/dist/cjs/filter-validator.js.map +1 -1
- package/dist/cjs/index.js +0 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/query-optimiser.js +12 -57
- package/dist/cjs/query-optimiser.js.map +1 -1
- package/dist/cjs/type-utils.js +0 -14
- package/dist/cjs/type-utils.js.map +1 -1
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/wix-data-encoder.js +0 -2
- package/dist/cjs/wix-data-encoder.js.map +1 -1
- package/dist/statics/filter-builder.umd.js +170 -170
- package/dist/statics/filter-builder.umd.js.map +1 -1
- package/dist/statics/filter-builder.umd.min.js +1 -1
- package/dist/statics/filter-builder.umd.min.js.map +1 -1
- package/dist/statics/manifest.json +1 -1
- package/dist/statics/manifest.min.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
28
|
+
queryAfterOptimisingEntries = _fullEntriesOptimisat[0],
|
|
29
|
+
changedStage1 = _fullEntriesOptimisat[1];
|
|
38
30
|
const _fullObjectOptimisati = fullObjectOptimisation(queryAfterOptimisingEntries),
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
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 = {
|
|
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
|
-
|
|
70
|
-
|
|
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]) => ({
|
|
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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"}
|
package/dist/cjs/type-utils.js
CHANGED
|
@@ -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,"
|
|
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,"
|
|
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":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|