@wener/common 2.0.1 → 2.0.2

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.
Files changed (107) hide show
  1. package/lib/cn/ChineseResidentIdNo.js +41 -0
  2. package/lib/cn/ChineseResidentIdNo.mod.js +1 -0
  3. package/lib/cn/{ResidentIdentityCardNumber.test.js → ChineseResidentIdNo.test.js} +7 -6
  4. package/lib/cn/DivisionCode.js +211 -300
  5. package/lib/cn/DivisionCode.mod.js +1 -0
  6. package/lib/cn/DivisionCode.test.js +9 -15
  7. package/lib/cn/{Mod11Checksum.js → Mod11.js} +1 -0
  8. package/lib/cn/{Mod31Checksum.js → Mod31.js} +1 -0
  9. package/lib/cn/UnifiedSocialCreditCode.js +130 -115
  10. package/lib/cn/UnifiedSocialCreditCode.mod.js +1 -0
  11. package/lib/cn/UnifiedSocialCreditCode.test.js +1 -1
  12. package/lib/cn/index.js +1 -3
  13. package/lib/cn/mod.js +6 -0
  14. package/lib/consola/formatLogObject.js +18 -6
  15. package/lib/dayjs/dayjs.js +38 -0
  16. package/lib/dayjs/formatDuration.js +58 -0
  17. package/lib/dayjs/formatDuration.test.js +90 -0
  18. package/lib/dayjs/index.js +3 -0
  19. package/lib/dayjs/parseDuration.js +32 -0
  20. package/lib/decimal/index.js +1 -0
  21. package/lib/decimal/parseDecimal.js +13 -0
  22. package/lib/{resource → foundation}/schema/SexType.js +5 -1
  23. package/lib/foundation/schema/index.js +1 -0
  24. package/lib/foundation/schema/parseSexType.js +18 -0
  25. package/lib/foundation/schema/types.js +5 -0
  26. package/lib/password/Password.js +10 -7
  27. package/lib/resource/ListQuery.js +119 -0
  28. package/lib/resource/index.js +1 -0
  29. package/lib/resource/schema/AnyResourceSchema.js +1 -1
  30. package/lib/resource/schema/index.js +5 -0
  31. package/lib/{resource/schema → schema}/SchemaRegistry.js +12 -5
  32. package/lib/schema/SchemaRegistry.mod.js +2 -0
  33. package/lib/schema/createSchemaData.js +1 -1
  34. package/lib/schema/getSchemaOptions.js +2 -2
  35. package/lib/schema/index.js +1 -0
  36. package/lib/utils/getEstimateProcessTime.js +20 -0
  37. package/lib/utils/index.js +1 -0
  38. package/package.json +23 -14
  39. package/src/cn/ChineseResidentIdNo.mod.ts +7 -0
  40. package/src/cn/ChineseResidentIdNo.test.ts +18 -0
  41. package/src/cn/ChineseResidentIdNo.ts +66 -0
  42. package/src/cn/DivisionCode.mod.ts +7 -0
  43. package/src/cn/DivisionCode.test.ts +3 -13
  44. package/src/cn/DivisionCode.ts +132 -195
  45. package/src/cn/{Mod11Checksum.ts → Mod11.ts} +3 -1
  46. package/src/cn/{Mod31Checksum.ts → Mod31.ts} +2 -0
  47. package/src/cn/UnifiedSocialCreditCode.mod.ts +7 -0
  48. package/src/cn/UnifiedSocialCreditCode.test.ts +2 -2
  49. package/src/cn/UnifiedSocialCreditCode.ts +105 -125
  50. package/src/cn/__snapshots__/ChineseResidentIdNo.test.ts.snap +14 -0
  51. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +18 -12
  52. package/src/cn/index.ts +1 -3
  53. package/src/cn/mod.ts +3 -0
  54. package/src/consola/formatLogObject.ts +12 -4
  55. package/src/dayjs/dayjs.ts +40 -0
  56. package/src/dayjs/formatDuration.test.ts +14 -0
  57. package/src/dayjs/formatDuration.ts +86 -0
  58. package/src/dayjs/index.ts +3 -0
  59. package/src/dayjs/parseDuration.ts +40 -0
  60. package/src/decimal/index.ts +1 -0
  61. package/src/decimal/parseDecimal.ts +16 -0
  62. package/src/foundation/schema/SexType.ts +21 -0
  63. package/src/foundation/schema/index.ts +1 -0
  64. package/src/foundation/schema/parseSexType.ts +19 -0
  65. package/src/foundation/schema/types.ts +8 -0
  66. package/src/password/Password.ts +2 -2
  67. package/src/resource/ListQuery.ts +53 -0
  68. package/src/resource/index.ts +1 -0
  69. package/src/resource/schema/AnyResourceSchema.ts +1 -1
  70. package/src/resource/schema/index.ts +5 -0
  71. package/src/schema/SchemaRegistry.mod.ts +1 -0
  72. package/src/{resource/schema → schema}/SchemaRegistry.ts +12 -8
  73. package/src/schema/createSchemaData.ts +1 -1
  74. package/src/schema/getSchemaOptions.ts +2 -2
  75. package/src/schema/index.ts +1 -0
  76. package/src/utils/getEstimateProcessTime.ts +36 -0
  77. package/src/utils/index.ts +1 -0
  78. package/lib/cn/ResidentIdentityCardNumber.js +0 -50
  79. package/lib/cn/formatDate.js +0 -13
  80. package/lib/cn/parseSex.js +0 -20
  81. package/lib/search/AdvanceSearch.js +0 -9
  82. package/lib/search/AdvanceSearch.test.js +0 -435
  83. package/lib/search/formatAdvanceSearch.js +0 -78
  84. package/lib/search/index.js +0 -1
  85. package/lib/search/optimizeAdvanceSearch.js +0 -143
  86. package/lib/search/parseAdvanceSearch.js +0 -20
  87. package/lib/search/parser.d.js +0 -1
  88. package/lib/search/parser.js +0 -3088
  89. package/lib/search/types.d.js +0 -1
  90. package/src/cn/ResidentIdentityCardNumber.test.ts +0 -17
  91. package/src/cn/ResidentIdentityCardNumber.ts +0 -96
  92. package/src/cn/__snapshots__/ResidentIdentityCardNumber.test.ts.snap +0 -15
  93. package/src/cn/formatDate.ts +0 -12
  94. package/src/cn/parseSex.ts +0 -13
  95. package/src/resource/schema/SexType.ts +0 -13
  96. package/src/search/AdvanceSearch.test.ts +0 -149
  97. package/src/search/AdvanceSearch.ts +0 -14
  98. package/src/search/Makefile +0 -2
  99. package/src/search/__snapshots__/AdvanceSearch.test.ts.snap +0 -675
  100. package/src/search/formatAdvanceSearch.ts +0 -52
  101. package/src/search/index.ts +0 -1
  102. package/src/search/optimizeAdvanceSearch.ts +0 -77
  103. package/src/search/parseAdvanceSearch.ts +0 -23
  104. package/src/search/parser.d.ts +0 -8
  105. package/src/search/parser.js +0 -2794
  106. package/src/search/parser.peggy +0 -237
  107. package/src/search/types.d.ts +0 -45
@@ -1,9 +0,0 @@
1
- import { formatAdvanceSearch } from "./formatAdvanceSearch.js";
2
- import { optimizeAdvanceSearch } from "./optimizeAdvanceSearch.js";
3
- import { parseAdvanceSearch } from "./parseAdvanceSearch.js";
4
- (function (AdvanceSearch) {
5
- AdvanceSearch.parse = parseAdvanceSearch;
6
- AdvanceSearch.format = formatAdvanceSearch;
7
- AdvanceSearch.optimize = optimizeAdvanceSearch;
8
- })(AdvanceSearch || (AdvanceSearch = {}));
9
- export var AdvanceSearch;
@@ -1,435 +0,0 @@
1
- function _array_like_to_array(arr, len) {
2
- if (len == null || len > arr.length)
3
- len = arr.length;
4
- for (var i = 0, arr2 = new Array(len); i < len; i++)
5
- arr2[i] = arr[i];
6
- return arr2;
7
- }
8
- function _array_with_holes(arr) {
9
- if (Array.isArray(arr))
10
- return arr;
11
- }
12
- function _iterable_to_array_limit(arr, i) {
13
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
14
- if (_i == null)
15
- return;
16
- var _arr = [];
17
- var _n = true;
18
- var _d = false;
19
- var _s, _e;
20
- try {
21
- for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
22
- _arr.push(_s.value);
23
- if (i && _arr.length === i)
24
- break;
25
- }
26
- }
27
- catch (err) {
28
- _d = true;
29
- _e = err;
30
- }
31
- finally {
32
- try {
33
- if (!_n && _i["return"] != null)
34
- _i["return"]();
35
- }
36
- finally {
37
- if (_d)
38
- throw _e;
39
- }
40
- }
41
- return _arr;
42
- }
43
- function _non_iterable_rest() {
44
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
45
- }
46
- function _sliced_to_array(arr, i) {
47
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
48
- }
49
- function _unsupported_iterable_to_array(o, minLen) {
50
- if (!o)
51
- return;
52
- if (typeof o === "string")
53
- return _array_like_to_array(o, minLen);
54
- var n = Object.prototype.toString.call(o).slice(8, -1);
55
- if (n === "Object" && o.constructor)
56
- n = o.constructor.name;
57
- if (n === "Map" || n === "Set")
58
- return Array.from(n);
59
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
60
- return _array_like_to_array(o, minLen);
61
- }
62
- import { describe, expect, it } from "vitest";
63
- import { AdvanceSearch } from "./AdvanceSearch.js";
64
- describe("AdvanceSearch", function () {
65
- it("should parse", function () {
66
- for (var _i = 0, _iter = [
67
- //
68
- "-a",
69
- "a",
70
- "a b",
71
- "a -b",
72
- "a-b",
73
- "a\"b",
74
- "a&b",
75
- "NOT a",
76
- "NOT -a",
77
- "HELLO -WORLD",
78
- "(a)",
79
- "( a OR B )",
80
- "A OR B",
81
- "a:[1,2]",
82
- "a:*..1",
83
- "a:ok a:=1 a:>1 a:<1 a:>=1 a:<=1 a:!=1 a:1..2 a:*..1 a:1..* a:[1,2] a:(1,2) a:[1,2) a:(1,2]",
84
- "NOT (A B) AND (a:ok AND size:>1)",
85
- "NOT -a",
86
- "NOT (NOT -a)",
87
- "owner:@me owner:=@me owner:!=@me",
88
- "@AI:\"Where is my car\"",
89
- "/**/ a",
90
- "/* Hint */ a",
91
- "/* a */ a /* b */"
92
- ]; _i < _iter.length; _i++) {
93
- var input = _iter[_i];
94
- var out = AdvanceSearch.parse(input);
95
- var formated = AdvanceSearch.format(out);
96
- expect(formated, "reformat").toMatchSnapshot();
97
- var optimized = AdvanceSearch.format(AdvanceSearch.optimize(out));
98
- expect(optimized, "optimized").toMatchSnapshot();
99
- expect(out, "parsed").toMatchSnapshot();
100
- expect(AdvanceSearch.parse(formated), "reformat match original").toMatchObject(out);
101
- }
102
- });
103
- it("should parse as expected", function () {
104
- var cases = [
105
- [
106
- null,
107
- []
108
- ],
109
- [
110
- undefined,
111
- []
112
- ],
113
- [
114
- "",
115
- []
116
- ],
117
- // fast path
118
- [
119
- "a",
120
- [
121
- {
122
- type: "keyword",
123
- value: "a"
124
- }
125
- ]
126
- ],
127
- [
128
- "a-b",
129
- [
130
- {
131
- type: "keyword",
132
- value: "a-b"
133
- }
134
- ]
135
- ],
136
- [
137
- "a\"b",
138
- [
139
- {
140
- type: "keyword",
141
- value: "a\"b"
142
- }
143
- ]
144
- ],
145
- [
146
- "hello world",
147
- [
148
- {
149
- type: "keyword",
150
- value: "hello"
151
- },
152
- {
153
- type: "keyword",
154
- value: "world"
155
- }
156
- ]
157
- ],
158
- // advance
159
- [
160
- "-a",
161
- [
162
- {
163
- type: "keyword",
164
- value: "a",
165
- negative: true
166
- }
167
- ]
168
- ],
169
- [
170
- "/*Hi*/ hello -world",
171
- [
172
- {
173
- type: "comment",
174
- value: "Hi"
175
- },
176
- {
177
- type: "keyword",
178
- value: "hello",
179
- negative: false
180
- },
181
- {
182
- type: "keyword",
183
- value: "world",
184
- negative: true
185
- }
186
- ]
187
- ],
188
- [
189
- "\"Hello\"",
190
- [
191
- {
192
- type: "keyword",
193
- value: "Hello",
194
- exact: true
195
- }
196
- ]
197
- ],
198
- [
199
- "-\"Hello\"",
200
- [
201
- {
202
- type: "keyword",
203
- value: "Hello",
204
- exact: true,
205
- negative: true
206
- }
207
- ]
208
- ],
209
- [
210
- "is:ok",
211
- [
212
- {
213
- type: "compare",
214
- field: "is",
215
- operator: "match",
216
- value: {
217
- value: "ok"
218
- }
219
- }
220
- ]
221
- ],
222
- [
223
- "-is:ok",
224
- [
225
- {
226
- type: "compare",
227
- field: "is",
228
- negative: true,
229
- operator: "match",
230
- value: {
231
- value: "ok"
232
- }
233
- }
234
- ]
235
- ]
236
- ];
237
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
238
- try {
239
- for (var _iterator = cases[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
240
- var _step_value = _sliced_to_array(_step.value, 2), input = _step_value[0], expected = _step_value[1];
241
- var out = AdvanceSearch.parse(input);
242
- expect(out).toMatchObject(expected);
243
- expect(AdvanceSearch.parse(AdvanceSearch.format(out)), "reformat should match").toMatchObject(expected);
244
- }
245
- }
246
- catch (err) {
247
- _didIteratorError = true;
248
- _iteratorError = err;
249
- }
250
- finally {
251
- try {
252
- if (!_iteratorNormalCompletion && _iterator.return != null) {
253
- _iterator.return();
254
- }
255
- }
256
- finally {
257
- if (_didIteratorError) {
258
- throw _iteratorError;
259
- }
260
- }
261
- }
262
- });
263
- it("should optimize simple", function () {
264
- var cases = [
265
- // rm empty comment
266
- {
267
- input: [
268
- {
269
- type: "comment",
270
- value: ""
271
- },
272
- {
273
- type: "keyword",
274
- value: "a"
275
- }
276
- ],
277
- expected: [
278
- {
279
- type: "keyword",
280
- value: "a"
281
- }
282
- ]
283
- },
284
- // unwrap parentheses
285
- {
286
- input: [
287
- {
288
- type: "parentheses",
289
- value: [
290
- {
291
- type: "keyword",
292
- value: "a"
293
- }
294
- ]
295
- },
296
- {
297
- type: "keyword",
298
- value: "b"
299
- }
300
- ],
301
- expected: [
302
- {
303
- type: "keyword",
304
- value: "a"
305
- },
306
- {
307
- type: "keyword",
308
- value: "b"
309
- }
310
- ]
311
- },
312
- // not not
313
- {
314
- input: [
315
- {
316
- type: "not",
317
- value: {
318
- type: "not",
319
- value: {
320
- type: "keyword",
321
- value: "a"
322
- }
323
- }
324
- }
325
- ],
326
- expected: [
327
- {
328
- type: "keyword",
329
- value: "a",
330
- negative: false
331
- }
332
- ]
333
- },
334
- // not to negative
335
- {
336
- input: [
337
- {
338
- type: "not",
339
- value: {
340
- type: "keyword",
341
- value: "a"
342
- }
343
- }
344
- ],
345
- expected: [
346
- {
347
- type: "keyword",
348
- value: "a",
349
- negative: true
350
- }
351
- ]
352
- }
353
- ];
354
- for (var i = 0; i < cases.length; i++) {
355
- var _cases_i = cases[i], input = _cases_i.input, expected = _cases_i.expected;
356
- var out = AdvanceSearch.optimize(input);
357
- expect(out, "case #".concat(i)).toEqual(expected);
358
- }
359
- });
360
- it("should optimize by formated", function () {
361
- var cases = [
362
- [
363
- "( a )",
364
- "a"
365
- ],
366
- [
367
- "NOT a",
368
- "-a"
369
- ],
370
- [
371
- "NOT -a",
372
- "a"
373
- ],
374
- [
375
- "NOT is:ok",
376
- "-is:ok"
377
- ],
378
- [
379
- "NOT -is:ok",
380
- "is:ok"
381
- ],
382
- [
383
- "NOT -is:=ok",
384
- "is:=ok"
385
- ],
386
- [
387
- "NOT is:=ok",
388
- "is:!=ok"
389
- ],
390
- [
391
- "NOT (NOT -a)",
392
- "-a"
393
- ]
394
- ];
395
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
396
- try {
397
- for (var _iterator = cases[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
398
- var _step_value = _sliced_to_array(_step.value, 2), input = _step_value[0], expected = _step_value[1];
399
- var out = AdvanceSearch.optimize(AdvanceSearch.parse(input));
400
- expect(AdvanceSearch.format(out), "".concat(input, " -> ").concat(expected, ": ").concat(JSON.stringify(out))).toEqual(expected);
401
- }
402
- }
403
- catch (err) {
404
- _didIteratorError = true;
405
- _iteratorError = err;
406
- }
407
- finally {
408
- try {
409
- if (!_iteratorNormalCompletion && _iterator.return != null) {
410
- _iterator.return();
411
- }
412
- }
413
- finally {
414
- if (_didIteratorError) {
415
- throw _iteratorError;
416
- }
417
- }
418
- }
419
- });
420
- it.fails("should parse parentheses", function () {
421
- var out = AdvanceSearch.parse("(a)");
422
- console.log(out);
423
- expect(out).toEqual([
424
- {
425
- type: "parentheses",
426
- value: [
427
- {
428
- type: "keyword",
429
- value: "a"
430
- }
431
- ]
432
- }
433
- ]);
434
- });
435
- });
@@ -1,78 +0,0 @@
1
- import { match } from 'ts-pattern';
2
- export function formatAdvanceSearch(input) {
3
- var OP = {
4
- match: ':',
5
- eq: ':=',
6
- ne: ':!=',
7
- gt: ':>',
8
- lt: ':<',
9
- gte: ':>=',
10
- lte: ':<=',
11
- range: ':'
12
- };
13
- var _exprs = function(s) {
14
- return s.map(_expr).join(' ');
15
- };
16
- var _expr = function(s) {
17
- return match(s).with({
18
- type: 'keyword'
19
- }, function(param) {
20
- var value = param.value, exact = param.exact, negative = param.negative;
21
- return "".concat(negative ? '-' : '').concat(exact ? '"'.concat(value, '"') : value);
22
- }).with({
23
- type: 'logical'
24
- }, function(param) {
25
- var operator = param.operator, value = param.value;
26
- return value.map(_expr).join(" ".concat(operator.toLocaleUpperCase(), " "));
27
- }).with({
28
- type: 'not'
29
- }, function(param) {
30
- var value = param.value;
31
- return "NOT ".concat(_expr(value));
32
- }).with({
33
- type: 'compare'
34
- }, function(param) {
35
- var field = param.field, operator = param.operator, value = param.value, negative = param.negative, mention = param.mention;
36
- return "".concat(negative ? '-' : '').concat(mention ? '@' : '').concat(field).concat(OP[operator]).concat(_value(value));
37
- }).with({
38
- type: 'comment'
39
- }, function(param) {
40
- var value = param.value;
41
- return "/* ".concat(value, " */");
42
- }).with({
43
- type: 'parentheses'
44
- }, function(param) {
45
- var value = param.value;
46
- return "(".concat(_exprs(value), ")");
47
- }).exhaustive();
48
- };
49
- var _literal = function(s) {
50
- if (typeof s === 'string') {
51
- return s.includes(' ') ? '"'.concat(s, '"') : s;
52
- }
53
- return JSON.stringify(s);
54
- };
55
- var _value = function(v) {
56
- return match(v).with({
57
- type: 'range'
58
- }, function(param) {
59
- var minimum = param.minimum, maximum = param.maximum, minimumExclusive = param.minimumExclusive, maximumExclusive = param.maximumExclusive;
60
- if (minimumExclusive === undefined && maximumExclusive === undefined) {
61
- var min = minimum === undefined ? '*' : _value(minimum);
62
- var max = maximum === undefined ? '*' : _value(maximum);
63
- return "".concat(min, "..").concat(max);
64
- }
65
- var min1 = minimum === undefined ? '' : _value(minimum);
66
- var max1 = maximum === undefined ? '' : _value(maximum);
67
- return "".concat(minimumExclusive ? '(' : '[').concat(min1, ",").concat(max1).concat(maximumExclusive ? ')' : ']');
68
- }).with({
69
- format: 'mention'
70
- }, function(param) {
71
- var value = param.value;
72
- return "@".concat(value);
73
- }).otherwise(function(value) {
74
- return _literal(value.value);
75
- });
76
- };
77
- return _exprs(input);
78
- }
@@ -1 +0,0 @@
1
- export { AdvanceSearch } from "./AdvanceSearch.js";
@@ -1,143 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- function _object_spread(target) {
15
- for(var i = 1; i < arguments.length; i++){
16
- var source = arguments[i] != null ? arguments[i] : {};
17
- var ownKeys = Object.keys(source);
18
- if (typeof Object.getOwnPropertySymbols === "function") {
19
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
- }));
22
- }
23
- ownKeys.forEach(function(key) {
24
- _define_property(target, key, source[key]);
25
- });
26
- }
27
- return target;
28
- }
29
- function ownKeys(object, enumerableOnly) {
30
- var keys = Object.keys(object);
31
- if (Object.getOwnPropertySymbols) {
32
- var symbols = Object.getOwnPropertySymbols(object);
33
- if (enumerableOnly) {
34
- symbols = symbols.filter(function(sym) {
35
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
- });
37
- }
38
- keys.push.apply(keys, symbols);
39
- }
40
- return keys;
41
- }
42
- function _object_spread_props(target, source) {
43
- source = source != null ? source : {};
44
- if (Object.getOwnPropertyDescriptors) {
45
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
- } else {
47
- ownKeys(Object(source)).forEach(function(key) {
48
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
- });
50
- }
51
- return target;
52
- }
53
- import { arrayOfMaybeArray, deepEqual } from '@wener/utils';
54
- import { match } from 'ts-pattern';
55
- export function optimizeAdvanceSearch(expr) {
56
- var NEG = {
57
- eq: 'ne',
58
- ne: 'eq',
59
- gt: 'lte',
60
- lt: 'gte',
61
- gte: 'lt',
62
- lte: 'gt'
63
- };
64
- var _expr = function(e) {
65
- // merge Exprs to AND ?
66
- return match(e)// (EXPR) -> EXPR
67
- // TODO (EXPR EXPR) -> EXPR AND EXPR
68
- .with({
69
- type: 'parentheses'
70
- }, function(expr) {
71
- // unwrap
72
- if (expr.value.length < 2) {
73
- return expr.value[0];
74
- }
75
- expr.value = expr.value.flatMap(_expr);
76
- return expr;
77
- }).with({
78
- type: 'comment'
79
- }, function(expr) {
80
- // remove empty comment
81
- if (!expr.value.length) {
82
- return [];
83
- }
84
- return expr;
85
- })// NOT
86
- .with({
87
- type: 'not'
88
- }, function(expr) {
89
- var out = arrayOfMaybeArray(_expr(expr.value));
90
- if (!out.length) {
91
- return [];
92
- } else if (out.length === 1) {
93
- expr.value = out[0];
94
- } else {
95
- throw new Error('NOT should have only one value');
96
- }
97
- return match(expr.value)// NOT NOT EXPR -> EXPR
98
- .with({
99
- type: 'not'
100
- }, function(expr) {
101
- return expr.value;
102
- })// NOT EXPR -> -EXPR
103
- .with({
104
- type: 'compare'
105
- }, function(expr) {
106
- return _object_spread_props(_object_spread({}, expr), {
107
- negative: !expr.negative
108
- });
109
- }).with({
110
- type: 'keyword'
111
- }, function(expr) {
112
- return _object_spread_props(_object_spread({}, expr), {
113
- negative: !expr.negative
114
- });
115
- }).otherwise(function() {
116
- return expr;
117
- });
118
- }).with({
119
- type: 'compare'
120
- }, function(expr) {
121
- // negative by swap operator
122
- if (expr.negative) {
123
- var ne = NEG[expr.operator];
124
- if (ne) {
125
- expr.operator = ne;
126
- expr.negative = false;
127
- }
128
- }
129
- if (expr.operator === 'range') {}
130
- return expr;
131
- }).otherwise(function(e) {
132
- return e;
133
- });
134
- };
135
- var last = expr;
136
- while(true){
137
- var next = structuredClone(last).flatMap(_expr);
138
- if (deepEqual(last, next)) {
139
- return last;
140
- }
141
- last = next;
142
- }
143
- }
@@ -1,20 +0,0 @@
1
- import { parse } from "./parser.js";
2
- export function parseAdvanceSearch(s) {
3
- s = s === null || s === void 0 ? void 0 : s.trim();
4
- if (!s) {
5
- return [];
6
- }
7
- // no Logical, no Compare, no Quote, no Comment
8
- if (!/AND|OR|NOT|[-"():]|\/\*/.test(s)) {
9
- // fast path
10
- return s.split(/\s+/).map(function (v) {
11
- return v.trim();
12
- }).filter(Boolean).map(function (v) {
13
- return {
14
- type: "keyword",
15
- value: v
16
- };
17
- });
18
- }
19
- return parse(s);
20
- }
@@ -1 +0,0 @@
1
- export { };