@steedos/filters 2.3.1 → 2.3.2-beta.3
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/lib/date.formatter.js +15 -36
- package/lib/default_date_names.js +3 -9
- package/lib/filter.js +14 -56
- package/lib/format.js +13 -65
- package/lib/formula.js +2 -5
- package/lib/graphql.js +4 -18
- package/lib/index.js +0 -13
- package/lib/utils.js +28 -90
- package/package.json +2 -2
package/lib/format.js
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.formatFiltersToODataQuery = exports.formatFiltersToDev = void 0;
|
|
9
|
-
|
|
10
8
|
var _filter = _interopRequireDefault(require("./filter"));
|
|
11
|
-
|
|
12
9
|
var _lodash = require("lodash");
|
|
13
|
-
|
|
14
10
|
var _utils = require("./utils");
|
|
15
|
-
|
|
16
11
|
var _formula = require("./formula");
|
|
17
|
-
|
|
18
12
|
// 正则包括encodeURIComponent函数编码的11个特殊符号;/?:@&=+$,#
|
|
19
13
|
// 还包括convertSpecialCharacter函数中转义的特殊符号^$()*+?.\|[]{}
|
|
20
14
|
// 注意encodeURIComponent("\\(")的结果是%5C(,需要特别处理
|
|
21
15
|
// 注意encodeURIComponent("\\.")的结果是%5C.,需要特别处理
|
|
22
16
|
// 注意encodeURIComponent("\\*")的结果是%5C*,因为不需要encodeURIComponent函数编码,所以不用加入REG_FOR_ENCORD变量
|
|
23
17
|
var REG_FOR_ENCORD = /\;|\/|\?|\:|\@|\&|\=|\+|\$|\,|\#|\^|(\\\()|(\\\))|(\\\.)|\\|\||\[|\]|\{|\}/;
|
|
18
|
+
|
|
24
19
|
/**
|
|
25
20
|
^$()*+?.\|[]{}等特殊符号需要转义,否则有可能会报错且无法正确识别
|
|
26
21
|
encodeURIComponent函数并不能完全编码上述所有特殊符号
|
|
27
22
|
这里保持跟版本1.23一样的处理逻辑,只是额外判断了下避免重复转义或重复执行encodeURIComponent编码的可能
|
|
28
23
|
*/
|
|
29
|
-
|
|
30
24
|
var convertSpecialCharacter = function convertSpecialCharacter(str) {
|
|
31
25
|
// if(str.indexOf("\\") > -1){
|
|
32
26
|
// // 如果有转义符号就按已经执行过转义处理,否则重复转义会有问题
|
|
@@ -38,31 +32,25 @@ var convertSpecialCharacter = function convertSpecialCharacter(str) {
|
|
|
38
32
|
if (str.indexOf("%5C(") > -1 || str.indexOf("%5C)") > -1) {
|
|
39
33
|
return str;
|
|
40
34
|
}
|
|
41
|
-
|
|
42
35
|
if (str.indexOf("%5C.") > -1) {
|
|
43
36
|
return str;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
38
|
if (str.indexOf("%5C*") > -1) {
|
|
47
39
|
return str;
|
|
48
40
|
}
|
|
49
|
-
|
|
50
41
|
return str.replace(/([\^\$\(\)\*\+\?\.\\\|\[\]\{\}])/g, "\\$1");
|
|
51
42
|
};
|
|
52
|
-
|
|
53
43
|
var extendUserContext = function extendUserContext(userContext, utcOffset) {
|
|
54
44
|
if (!userContext.now) {
|
|
55
45
|
userContext.now = new Date();
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
if (utcOffset) {
|
|
47
|
+
// 注意这里取的值是moment().utcOffset() / 60得到的,不是new Date().getTimezoneOffset() / 60
|
|
58
48
|
// 它们的值正好为正负关系,北京时间前者为 +8,后者为 -8
|
|
59
49
|
// userContext.now.setHours(userContext.now.getHours() - utcOffset);
|
|
60
50
|
}
|
|
61
51
|
}
|
|
62
|
-
|
|
63
52
|
return userContext;
|
|
64
53
|
};
|
|
65
|
-
|
|
66
54
|
var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
67
55
|
var userContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
68
56
|
userId: null,
|
|
@@ -71,37 +59,28 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
71
59
|
utcOffset: 0
|
|
72
60
|
}
|
|
73
61
|
};
|
|
74
|
-
|
|
75
62
|
if ((0, _lodash.isNull)(filters) || (0, _lodash.isUndefined)(filters)) {
|
|
76
63
|
return;
|
|
77
64
|
}
|
|
78
|
-
|
|
79
65
|
var utcOffset = userContext.user ? userContext.user.utcOffset : 0;
|
|
80
|
-
userContext = extendUserContext(userContext, utcOffset);
|
|
81
|
-
|
|
66
|
+
userContext = extendUserContext(userContext, utcOffset);
|
|
67
|
+
// 2019-03-23T01:00:33.524Z、2019-03-23T01:00:33Z、2022-06-11T00:00:00.444+08:00这种格式
|
|
82
68
|
var regDate = /^\d{4}-\d{1,2}-\d{1,2}(T|\s)\d{1,2}\:\d{1,2}(\:\d{1,2}(\.\d{1,3})?)?(Z|((\+|\-)\d{1,2}\:\d{1,2}))?$/;
|
|
83
|
-
|
|
84
69
|
var _filtersLooper, selector;
|
|
85
|
-
|
|
86
70
|
if (!(0, _lodash.isFunction)(filters) && !filters.length) {
|
|
87
71
|
return;
|
|
88
72
|
}
|
|
89
|
-
|
|
90
73
|
selector = [];
|
|
91
|
-
|
|
92
74
|
_filtersLooper = function filtersLooper(filters_loop) {
|
|
93
75
|
var builtinValue, field, i, isBetweenOperation, option, ref, sub_selector, tempFilters, tempLooperResult, value;
|
|
94
76
|
tempFilters = [];
|
|
95
77
|
tempLooperResult = null;
|
|
96
|
-
|
|
97
78
|
if (filters_loop === "!") {
|
|
98
79
|
return filters_loop;
|
|
99
80
|
}
|
|
100
|
-
|
|
101
81
|
if ((0, _lodash.isFunction)(filters_loop)) {
|
|
102
82
|
filters_loop = filters_loop();
|
|
103
83
|
}
|
|
104
|
-
|
|
105
84
|
if (!(0, _lodash.isArray)(filters_loop)) {
|
|
106
85
|
if ((0, _lodash.isObject)(filters_loop)) {
|
|
107
86
|
// 当filters不是[Array]类型而是[Object]类型时,进行格式转换
|
|
@@ -114,11 +93,9 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
114
93
|
return null;
|
|
115
94
|
}
|
|
116
95
|
}
|
|
117
|
-
|
|
118
96
|
if (filters_loop.length === 1) {
|
|
119
97
|
// 只有一个元素,进一步解析其内容
|
|
120
98
|
tempLooperResult = _filtersLooper(filters_loop[0]);
|
|
121
|
-
|
|
122
99
|
if (tempLooperResult) {
|
|
123
100
|
tempFilters.push(tempLooperResult);
|
|
124
101
|
}
|
|
@@ -126,7 +103,6 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
126
103
|
// 只有两个元素,进一步解析其内容,省略"and"连接符,但是有"and"效果
|
|
127
104
|
filters_loop.forEach(function (n, i) {
|
|
128
105
|
tempLooperResult = _filtersLooper(n);
|
|
129
|
-
|
|
130
106
|
if (tempLooperResult) {
|
|
131
107
|
return tempFilters.push(tempLooperResult);
|
|
132
108
|
}
|
|
@@ -140,28 +116,22 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
140
116
|
// 所以不能直接写:tempFilters = [filtersLooper(filters_loop[0]), filters_loop[1], filtersLooper(filters_loop[2])]
|
|
141
117
|
tempFilters = [];
|
|
142
118
|
i = 0;
|
|
143
|
-
|
|
144
119
|
while (i < filters_loop.length) {
|
|
145
120
|
if ((0, _lodash.includes)(["or", "and"], filters_loop[i])) {
|
|
146
121
|
i++;
|
|
147
122
|
continue;
|
|
148
123
|
}
|
|
149
|
-
|
|
150
124
|
tempLooperResult = _filtersLooper(filters_loop[i]);
|
|
151
|
-
|
|
152
125
|
if (!tempLooperResult) {
|
|
153
126
|
i++;
|
|
154
127
|
continue;
|
|
155
128
|
}
|
|
156
|
-
|
|
157
129
|
if (i > 0) {
|
|
158
130
|
tempFilters.push(filters_loop[i - 1]);
|
|
159
131
|
}
|
|
160
|
-
|
|
161
132
|
tempFilters.push(tempLooperResult);
|
|
162
133
|
i++;
|
|
163
134
|
}
|
|
164
|
-
|
|
165
135
|
if ((0, _lodash.includes)(["or", "and"], tempFilters[0])) {
|
|
166
136
|
tempFilters.shift();
|
|
167
137
|
}
|
|
@@ -171,30 +141,24 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
171
141
|
field = filters_loop[0];
|
|
172
142
|
option = filters_loop[1];
|
|
173
143
|
value = filters_loop[2];
|
|
174
|
-
|
|
175
144
|
if ((0, _lodash.isFunction)(value)) {
|
|
176
145
|
value = value();
|
|
177
146
|
}
|
|
178
|
-
|
|
179
147
|
if (option === "!=") {
|
|
180
148
|
// 支持!=为不等于操作
|
|
181
149
|
option = "<>";
|
|
182
150
|
}
|
|
183
|
-
|
|
184
151
|
value = (0, _formula.evaluateFormula)(value, userContext);
|
|
185
152
|
sub_selector = [];
|
|
186
153
|
isBetweenOperation = (0, _utils.isBetweenFilterOperation)(option);
|
|
187
|
-
|
|
188
154
|
if (isBetweenOperation && (0, _lodash.isString)(value)) {
|
|
189
155
|
// 如果是between运算符内置值,则取出对应values作为过滤值
|
|
190
156
|
// 比如value为last_year,返回对应的时间值
|
|
191
157
|
builtinValue = (0, _utils.getBetweenBuiltinValueItem)(value, utcOffset);
|
|
192
|
-
|
|
193
158
|
if (builtinValue) {
|
|
194
159
|
value = builtinValue.values;
|
|
195
160
|
}
|
|
196
161
|
}
|
|
197
|
-
|
|
198
162
|
if ((0, _lodash.isArray)(value)) {
|
|
199
163
|
value = value.map(function (item) {
|
|
200
164
|
if (typeof item === "string") {
|
|
@@ -202,7 +166,6 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
202
166
|
if (["contains", "startswith", "endswith", "notcontains", "notstartswith", "notendswith"].indexOf(option) > -1) {
|
|
203
167
|
item = convertSpecialCharacter(item);
|
|
204
168
|
}
|
|
205
|
-
|
|
206
169
|
if (regDate.test(item)) {
|
|
207
170
|
// 如果item正好是regDate格式,则转换为Date类型
|
|
208
171
|
item = new Date(item);
|
|
@@ -210,13 +173,12 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
210
173
|
item = encodeURIComponent(item);
|
|
211
174
|
}
|
|
212
175
|
}
|
|
213
|
-
|
|
214
176
|
return item;
|
|
215
177
|
});
|
|
216
|
-
|
|
217
178
|
if (["=", "in"].indexOf(option) > -1) {
|
|
218
179
|
if (value.length) {
|
|
219
|
-
sub_selector.push([field, "in", "(".concat(JSON.stringify(value).replace(/\"/g, "'").slice(1).slice(0, -1), ")")], "and");
|
|
180
|
+
sub_selector.push([field, "in", "(".concat(JSON.stringify(value).replace(/\"/g, "'").slice(1).slice(0, -1), ")")], "and");
|
|
181
|
+
// _.each(value, function (v) {
|
|
220
182
|
// return sub_selector.push([field, "=", v], "or");
|
|
221
183
|
// });
|
|
222
184
|
} else {
|
|
@@ -224,7 +186,8 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
224
186
|
sub_selector.push([field, "=", "__badQueryForEmptyArray"], "and");
|
|
225
187
|
}
|
|
226
188
|
} else if (["<>", "notin"].indexOf(option) > -1) {
|
|
227
|
-
sub_selector.push([field, "notin", "(".concat(JSON.stringify(value).replace(/\"/g, "'").slice(1).slice(0, -1), ")")], "and");
|
|
189
|
+
sub_selector.push([field, "notin", "(".concat(JSON.stringify(value).replace(/\"/g, "'").slice(1).slice(0, -1), ")")], "and");
|
|
190
|
+
// _.each(value, function (v) {
|
|
228
191
|
// return sub_selector.push([field, "<>", v], "and");
|
|
229
192
|
// });
|
|
230
193
|
} else if (["notcontains", "notstartswith", "notendswith"].indexOf(option) > -1) {
|
|
@@ -237,12 +200,12 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
237
200
|
if ([null, undefined, ''].indexOf(value[0]) < 0) {
|
|
238
201
|
sub_selector.push([field, ">=", value[0]], "and");
|
|
239
202
|
}
|
|
240
|
-
|
|
241
203
|
if ([null, undefined, ''].indexOf(value[1]) < 0) {
|
|
242
204
|
sub_selector.push([field, "<=", value[1]], "and");
|
|
243
205
|
}
|
|
244
206
|
}
|
|
245
|
-
} else {
|
|
207
|
+
} else {
|
|
208
|
+
// 如果是between连的空数组,不加任何条件,即查找所有数据
|
|
246
209
|
}
|
|
247
210
|
} else {
|
|
248
211
|
// contains、startswith、endswith等,如果value为空数组,不加任何条件,即查找所有数据
|
|
@@ -250,11 +213,9 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
250
213
|
return sub_selector.push([field, option, v], "or");
|
|
251
214
|
});
|
|
252
215
|
}
|
|
253
|
-
|
|
254
216
|
if (sub_selector[sub_selector.length - 1] === "and" || sub_selector[sub_selector.length - 1] === "or") {
|
|
255
217
|
sub_selector.pop();
|
|
256
218
|
}
|
|
257
|
-
|
|
258
219
|
if (sub_selector.length) {
|
|
259
220
|
tempFilters = sub_selector;
|
|
260
221
|
}
|
|
@@ -268,7 +229,8 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
268
229
|
tempFilters = [field, "=", true];
|
|
269
230
|
}
|
|
270
231
|
} else {
|
|
271
|
-
if (isBetweenOperation && !(0, _lodash.isArray)(value)) {
|
|
232
|
+
if (isBetweenOperation && !(0, _lodash.isArray)(value)) {
|
|
233
|
+
// between操作符时,value必须是数组,不能是undefined等其他值
|
|
272
234
|
} else {
|
|
273
235
|
if (typeof value === "string") {
|
|
274
236
|
if (["contains", "startswith", "endswith", "notcontains", "notstartswith", "notendswith"].indexOf(option) > -1) {
|
|
@@ -278,7 +240,6 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
278
240
|
// 过滤器包部分特殊字符在ag-grid组件右侧过滤面板会报错 https://github.com/steedos/steedos-frontend/issues/126
|
|
279
241
|
value = convertSpecialCharacter(value);
|
|
280
242
|
}
|
|
281
|
-
|
|
282
243
|
if (regDate.test(value)) {
|
|
283
244
|
// 如果value正好是regDate格式,则转换为Date类型
|
|
284
245
|
value = new Date(value);
|
|
@@ -292,7 +253,6 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
292
253
|
}
|
|
293
254
|
}
|
|
294
255
|
}
|
|
295
|
-
|
|
296
256
|
tempFilters = [field, option, value];
|
|
297
257
|
}
|
|
298
258
|
}
|
|
@@ -300,7 +260,6 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
300
260
|
// 普通数组,当成完整过虑条件进一步循环解析每个条件
|
|
301
261
|
filters_loop.forEach(function (n, i) {
|
|
302
262
|
tempLooperResult = _filtersLooper(n);
|
|
303
|
-
|
|
304
263
|
if (tempLooperResult) {
|
|
305
264
|
return tempFilters.push(tempLooperResult);
|
|
306
265
|
}
|
|
@@ -316,28 +275,22 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
316
275
|
// 所以不能直接写:tempFilters = [filtersLooper(filters_loop[0]), filters_loop[1], filtersLooper(filters_loop[2])]
|
|
317
276
|
tempFilters = [];
|
|
318
277
|
i = 0;
|
|
319
|
-
|
|
320
278
|
while (i < filters_loop.length) {
|
|
321
279
|
if ((0, _lodash.includes)(["or", "and"], filters_loop[i])) {
|
|
322
280
|
i++;
|
|
323
281
|
continue;
|
|
324
282
|
}
|
|
325
|
-
|
|
326
283
|
tempLooperResult = _filtersLooper(filters_loop[i]);
|
|
327
|
-
|
|
328
284
|
if (!tempLooperResult) {
|
|
329
285
|
i++;
|
|
330
286
|
continue;
|
|
331
287
|
}
|
|
332
|
-
|
|
333
288
|
if (i > 0) {
|
|
334
289
|
tempFilters.push(filters_loop[i - 1]);
|
|
335
290
|
}
|
|
336
|
-
|
|
337
291
|
tempFilters.push(tempLooperResult);
|
|
338
292
|
i++;
|
|
339
293
|
}
|
|
340
|
-
|
|
341
294
|
if ((0, _lodash.includes)(["or", "and"], tempFilters[0])) {
|
|
342
295
|
tempFilters.shift();
|
|
343
296
|
}
|
|
@@ -345,30 +298,25 @@ var formatFiltersToDev = function formatFiltersToDev(filters) {
|
|
|
345
298
|
// 普通过虑条件,当成完整过虑条件进一步循环解析每个条件
|
|
346
299
|
filters_loop.forEach(function (n, i) {
|
|
347
300
|
tempLooperResult = _filtersLooper(n);
|
|
348
|
-
|
|
349
301
|
if (tempLooperResult) {
|
|
350
302
|
return tempFilters.push(tempLooperResult);
|
|
351
303
|
}
|
|
352
304
|
});
|
|
353
305
|
}
|
|
354
306
|
}
|
|
355
|
-
|
|
356
307
|
if (tempFilters.length) {
|
|
357
308
|
return tempFilters;
|
|
358
309
|
} else {
|
|
359
310
|
return null;
|
|
360
311
|
}
|
|
361
312
|
};
|
|
362
|
-
|
|
363
313
|
selector = _filtersLooper(filters);
|
|
364
314
|
return selector;
|
|
365
315
|
};
|
|
366
|
-
|
|
367
316
|
var formatFiltersToODataQuery = function formatFiltersToODataQuery(filters, userContext, odataProtocolVersion, forceLowerCase) {
|
|
368
317
|
var devFilters = formatFiltersToDev(filters, userContext);
|
|
369
318
|
return new _filter["default"](devFilters, odataProtocolVersion, forceLowerCase).formatFiltersToODataQuery();
|
|
370
319
|
};
|
|
371
|
-
|
|
372
320
|
var _formatFiltersToDev = formatFiltersToDev;
|
|
373
321
|
exports.formatFiltersToDev = _formatFiltersToDev;
|
|
374
322
|
var _formatFiltersToODataQuery = formatFiltersToODataQuery;
|
package/lib/formula.js
CHANGED
|
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.evaluateFormula = void 0;
|
|
7
|
-
|
|
8
7
|
// "{userId}"或"{user.name}"格式
|
|
9
8
|
var checkFormula = function checkFormula(formula) {
|
|
10
9
|
return typeof formula === "string" && /\{\w+(\.\w+)?\}/.test(formula);
|
|
11
|
-
};
|
|
12
|
-
|
|
10
|
+
};
|
|
13
11
|
|
|
12
|
+
// "{userId}"转换为"this['userId']","{user.name}"转换为"this['user'].['name']"
|
|
14
13
|
var prepareFormula = function prepareFormula(formula) {
|
|
15
14
|
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "this";
|
|
16
15
|
var reg, rev;
|
|
@@ -20,7 +19,6 @@ var prepareFormula = function prepareFormula(formula) {
|
|
|
20
19
|
});
|
|
21
20
|
return rev;
|
|
22
21
|
};
|
|
23
|
-
|
|
24
22
|
var evaluateFormula = function evaluateFormula(formula, context) {
|
|
25
23
|
if (checkFormula(formula)) {
|
|
26
24
|
formula = prepareFormula(formula);
|
|
@@ -31,6 +29,5 @@ var evaluateFormula = function evaluateFormula(formula, context) {
|
|
|
31
29
|
return formula;
|
|
32
30
|
}
|
|
33
31
|
};
|
|
34
|
-
|
|
35
32
|
var _evaluateFormula = evaluateFormula;
|
|
36
33
|
exports.evaluateFormula = _evaluateFormula;
|
package/lib/graphql.js
CHANGED
|
@@ -4,24 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.formatFiltersToGraphqlQuery = void 0;
|
|
7
|
-
|
|
8
7
|
var _lodash = require("lodash");
|
|
9
|
-
|
|
10
8
|
var _format = require("./format");
|
|
11
|
-
|
|
12
9
|
// 把"a.b.c"这种字符fieldName转换为{"a":{"b":{"c":{}}}}这种json
|
|
13
10
|
var expandFieldName = function expandFieldName(initial, fieldName) {
|
|
14
11
|
(0, _lodash.reduce)(fieldName.split("."), function (m, k) {
|
|
15
12
|
if (!m[k]) {
|
|
16
13
|
m[k] = {};
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
return m[k];
|
|
20
16
|
}, initial);
|
|
21
17
|
return initial;
|
|
22
|
-
};
|
|
23
|
-
|
|
18
|
+
};
|
|
24
19
|
|
|
20
|
+
// 把["a.b.c","x.y","x.z","m"]这种字符fieldName转换为{"a":{"b":{"c":{}}},"x":{"y":{},"z":{}},"m":{}}这种json对象格式
|
|
25
21
|
var expandFieldNames = function expandFieldNames(fieldNames) {
|
|
26
22
|
var initial = {};
|
|
27
23
|
fieldNames.forEach(function (n) {
|
|
@@ -29,10 +25,10 @@ var expandFieldNames = function expandFieldNames(fieldNames) {
|
|
|
29
25
|
});
|
|
30
26
|
return initial;
|
|
31
27
|
};
|
|
32
|
-
|
|
33
28
|
var generateIndents = function generateIndents(count) {
|
|
34
29
|
return Array(count).fill(" ").join("");
|
|
35
30
|
};
|
|
31
|
+
|
|
36
32
|
/**
|
|
37
33
|
把{"a":{"b":{"c":{}}}}这种json转换为字符格式:
|
|
38
34
|
{
|
|
@@ -43,17 +39,13 @@ var generateIndents = function generateIndents(count) {
|
|
|
43
39
|
}
|
|
44
40
|
}
|
|
45
41
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
42
|
var reduceGraphqlFieldsQuery = function reduceGraphqlFieldsQuery(fields, indentsCount) {
|
|
49
43
|
if (!indentsCount) {
|
|
50
44
|
indentsCount = 0;
|
|
51
45
|
}
|
|
52
|
-
|
|
53
46
|
var itemQuery;
|
|
54
47
|
return " {\n".concat((0, _lodash.map)(fields, function (fieldValue, fieldKey) {
|
|
55
48
|
itemQuery = generateIndents(indentsCount) + generateIndents(1) + fieldKey;
|
|
56
|
-
|
|
57
49
|
if ((0, _lodash.isEmpty)(fieldValue)) {
|
|
58
50
|
itemQuery += "\n";
|
|
59
51
|
} else {
|
|
@@ -61,19 +53,17 @@ var reduceGraphqlFieldsQuery = function reduceGraphqlFieldsQuery(fields, indents
|
|
|
61
53
|
itemQuery += reduceGraphqlFieldsQuery(fieldValue, indentsCount);
|
|
62
54
|
indentsCount -= 1;
|
|
63
55
|
}
|
|
64
|
-
|
|
65
56
|
return itemQuery;
|
|
66
57
|
}).join("")).concat(generateIndents(indentsCount), "}\n");
|
|
67
58
|
};
|
|
68
|
-
|
|
69
59
|
var formatFieldsToGraphqlQuery = function formatFieldsToGraphqlQuery(fields) {
|
|
70
60
|
if ((0, _lodash.isString)(fields)) {
|
|
71
61
|
fields = fields.split(",");
|
|
72
62
|
}
|
|
73
|
-
|
|
74
63
|
var expandedFields = expandFieldNames(fields);
|
|
75
64
|
return reduceGraphqlFieldsQuery(expandedFields, 3);
|
|
76
65
|
};
|
|
66
|
+
|
|
77
67
|
/**
|
|
78
68
|
*
|
|
79
69
|
*
|
|
@@ -96,18 +86,14 @@ var formatFieldsToGraphqlQuery = function formatFieldsToGraphqlQuery(fields) {
|
|
|
96
86
|
* @param {*} filters ,请求的过滤条件
|
|
97
87
|
* @param {*} fields ,请求的字段,支持["a.b.c","m","n"]或"a.b.c,m,n"这种语法
|
|
98
88
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
89
|
var formatFiltersToGraphqlQuery = function formatFiltersToGraphqlQuery(objectName, filters, fields, userContext, odataProtocolVersion, forceLowerCase) {
|
|
102
90
|
if (!(0, _lodash.isString)(filters)) {
|
|
103
91
|
filters = (0, _format.formatFiltersToODataQuery)(filters, userContext, odataProtocolVersion, forceLowerCase);
|
|
104
92
|
}
|
|
105
|
-
|
|
106
93
|
var filtersWrap = filters ? "(filters:\"".concat(filters, "\")") : "";
|
|
107
94
|
var graphqlFields = formatFieldsToGraphqlQuery(fields);
|
|
108
95
|
var graphqlQuery = "\n query {\n ".concat(objectName).concat(filtersWrap).concat(graphqlFields, "\n }\n ");
|
|
109
96
|
return graphqlQuery;
|
|
110
97
|
};
|
|
111
|
-
|
|
112
98
|
var _formatFiltersToGraphqlQuery = formatFiltersToGraphqlQuery;
|
|
113
99
|
exports.formatFiltersToGraphqlQuery = _formatFiltersToGraphqlQuery;
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -9,13 +8,9 @@ var _exportNames = {
|
|
|
9
8
|
SteedosFilter: true
|
|
10
9
|
};
|
|
11
10
|
exports.SteedosFilter = void 0;
|
|
12
|
-
|
|
13
11
|
var _SteedosFilter = _interopRequireWildcard(require("./filter"));
|
|
14
|
-
|
|
15
12
|
exports.SteedosFilter = _SteedosFilter;
|
|
16
|
-
|
|
17
13
|
var _format = require("./format");
|
|
18
|
-
|
|
19
14
|
Object.keys(_format).forEach(function (key) {
|
|
20
15
|
if (key === "default" || key === "__esModule") return;
|
|
21
16
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -27,9 +22,7 @@ Object.keys(_format).forEach(function (key) {
|
|
|
27
22
|
}
|
|
28
23
|
});
|
|
29
24
|
});
|
|
30
|
-
|
|
31
25
|
var _utils = require("./utils");
|
|
32
|
-
|
|
33
26
|
Object.keys(_utils).forEach(function (key) {
|
|
34
27
|
if (key === "default" || key === "__esModule") return;
|
|
35
28
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -41,9 +34,7 @@ Object.keys(_utils).forEach(function (key) {
|
|
|
41
34
|
}
|
|
42
35
|
});
|
|
43
36
|
});
|
|
44
|
-
|
|
45
37
|
var _formula = require("./formula");
|
|
46
|
-
|
|
47
38
|
Object.keys(_formula).forEach(function (key) {
|
|
48
39
|
if (key === "default" || key === "__esModule") return;
|
|
49
40
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -55,9 +46,7 @@ Object.keys(_formula).forEach(function (key) {
|
|
|
55
46
|
}
|
|
56
47
|
});
|
|
57
48
|
});
|
|
58
|
-
|
|
59
49
|
var _graphql = require("./graphql");
|
|
60
|
-
|
|
61
50
|
Object.keys(_graphql).forEach(function (key) {
|
|
62
51
|
if (key === "default" || key === "__esModule") return;
|
|
63
52
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
@@ -69,7 +58,5 @@ Object.keys(_graphql).forEach(function (key) {
|
|
|
69
58
|
}
|
|
70
59
|
});
|
|
71
60
|
});
|
|
72
|
-
|
|
73
61
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
74
|
-
|
|
75
62
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|